Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/pasta/base/formatting.py: 83%

23 statements  

« prev     ^ index     » next       coverage.py v7.2.7, created at 2023-06-07 06:12 +0000

1# coding=utf-8 

2"""Operations for storing and retrieving formatting info on ast nodes.""" 

3# Copyright 2021 Google LLC 

4# 

5# Licensed under the Apache License, Version 2.0 (the "License"); 

6# you may not use this file except in compliance with the License. 

7# You may obtain a copy of the License at 

8# 

9# https://www.apache.org/licenses/LICENSE-2.0 

10# 

11# Unless required by applicable law or agreed to in writing, software 

12# distributed under the License is distributed on an "AS IS" BASIS, 

13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 

14# See the License for the specific language governing permissions and 

15# limitations under the License. 

16 

17from __future__ import absolute_import 

18from __future__ import division 

19from __future__ import print_function 

20 

21PASTA_DICT = '__pasta__' 

22 

23 

24def get(node, name, default=None): 

25 try: 

26 return _formatting_dict(node).get(name, default) 

27 except AttributeError: 

28 return default 

29 

30 

31def set(node, name, value): 

32 if not hasattr(node, PASTA_DICT): 

33 try: 

34 setattr(node, PASTA_DICT, {}) 

35 except AttributeError: 

36 pass 

37 _formatting_dict(node)[name] = value 

38 

39 

40def append(node, name, value): 

41 set(node, name, get(node, name, '') + value) 

42 

43 

44def prepend(node, name, value): 

45 set(node, name, value + get(node, name, '')) 

46 

47 

48def _formatting_dict(node): 

49 return getattr(node, PASTA_DICT)