Coverage for /var/srv/projects/api.amasfac.comuna18.com/tmp/venv/lib/python3.9/site-packages/openpyxl/descriptors/__init__.py: 99%

40 statements  

« prev     ^ index     » next       coverage.py v6.4.4, created at 2023-07-17 14:22 -0600

1# Copyright (c) 2010-2022 openpyxl 

2 

3from .base import * 

4from .sequence import Sequence 

5 

6 

7class MetaStrict(type): 

8 

9 def __new__(cls, clsname, bases, methods): 

10 for k, v in methods.items(): 

11 if isinstance(v, Descriptor): 

12 v.name = k 

13 return type.__new__(cls, clsname, bases, methods) 

14 

15 

16class MetaSerialisable(type): 

17 

18 def __new__(cls, clsname, bases, methods): 

19 attrs = [] 

20 nested = [] 

21 elements = [] 

22 namespaced = [] 

23 for k, v in methods.items(): 

24 if isinstance(v, Descriptor): 

25 ns= getattr(v, 'namespace', None) 

26 if ns: 

27 namespaced.append((k, "{%s}%s" % (ns, k))) 

28 if getattr(v, 'nested', False): 

29 nested.append(k) 

30 elements.append(k) 

31 elif isinstance(v, Sequence): 

32 elements.append(k) 

33 elif isinstance(v, Typed): 

34 if hasattr(v.expected_type, 'to_tree'): 

35 elements.append(k) 

36 else: 

37 attrs.append(k) 

38 else: 

39 if not isinstance(v, Alias): 

40 attrs.append(k) 

41 

42 if methods.get('__attrs__') is None: 

43 methods['__attrs__'] = tuple(attrs) 

44 methods['__namespaced__'] = tuple(namespaced) 

45 if methods.get('__nested__') is None: 45 ↛ 47line 45 didn't jump to line 47, because the condition on line 45 was never false

46 methods['__nested__'] = tuple(sorted(nested)) 

47 if methods.get('__elements__') is None: 

48 methods['__elements__'] = tuple(sorted(elements)) 

49 return MetaStrict.__new__(cls, clsname, bases, methods) 

50 

51 

52Strict = MetaStrict('Strict', (object,), {}) 

53 

54_Serialiasable = MetaSerialisable('_Serialisable', (object,), {}) 

55 

56#del MetaStrict 

57#del MetaSerialisable