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
« prev ^ index » next coverage.py v6.4.4, created at 2023-07-17 14:22 -0600
1# Copyright (c) 2010-2022 openpyxl
3from .base import *
4from .sequence import Sequence
7class MetaStrict(type):
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)
16class MetaSerialisable(type):
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)
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)
52Strict = MetaStrict('Strict', (object,), {})
54_Serialiasable = MetaSerialisable('_Serialisable', (object,), {})
56#del MetaStrict
57#del MetaSerialisable