omlish 0.0.0.dev394__py3-none-any.whl → 0.0.0.dev396__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. omlish/__about__.py +3 -3
  2. omlish/collections/__init__.py +4 -0
  3. omlish/collections/trie.py +156 -0
  4. omlish/dataclasses/__init__.py +6 -6
  5. omlish/dataclasses/{api → impl/api}/classes/conversion.py +4 -4
  6. omlish/dataclasses/{api → impl/api}/classes/decorator.py +5 -5
  7. omlish/dataclasses/{api → impl/api}/classes/metadata.py +4 -4
  8. omlish/dataclasses/{api → impl/api}/classes/params.py +4 -4
  9. omlish/dataclasses/{api → impl/api}/fields/building.py +7 -7
  10. omlish/dataclasses/{api → impl/api}/fields/constructor.py +4 -4
  11. omlish/dataclasses/{api → impl/api}/fields/conversion.py +8 -8
  12. omlish/dataclasses/{api → impl/api}/fields/metadata.py +5 -5
  13. omlish/dataclasses/{concerns → impl/concerns}/copy.py +1 -1
  14. omlish/dataclasses/{concerns → impl/concerns}/fields.py +6 -6
  15. omlish/dataclasses/{concerns → impl/concerns}/frozen.py +3 -3
  16. omlish/dataclasses/{concerns → impl/concerns}/hash.py +1 -1
  17. omlish/dataclasses/{concerns → impl/concerns}/init.py +9 -9
  18. omlish/dataclasses/{concerns → impl/concerns}/matchargs.py +1 -1
  19. omlish/dataclasses/{concerns → impl/concerns}/mro.py +1 -1
  20. omlish/dataclasses/{concerns → impl/concerns}/params.py +2 -2
  21. omlish/dataclasses/{concerns → impl/concerns}/replace.py +4 -4
  22. omlish/dataclasses/{concerns → impl/concerns}/repr.py +3 -3
  23. omlish/dataclasses/impl/configs.py +12 -0
  24. omlish/dataclasses/{generation → impl/generation}/compilation.py +1 -1
  25. omlish/dataclasses/{generation → impl/generation}/execution.py +1 -1
  26. omlish/dataclasses/{generation → impl/generation}/globals.py +3 -3
  27. omlish/dataclasses/{generation → impl/generation}/mangling.py +1 -1
  28. omlish/dataclasses/{generation → impl/generation}/plans.py +1 -1
  29. omlish/dataclasses/{generation → impl/generation}/processor.py +41 -14
  30. omlish/dataclasses/{generation → impl/generation}/registry.py +2 -2
  31. omlish/dataclasses/impl/processing/__init__.py +0 -0
  32. omlish/dataclasses/{processing → impl/processing}/base.py +3 -3
  33. omlish/dataclasses/{processing → impl/processing}/driving.py +24 -2
  34. omlish/dataclasses/{processing → impl/processing}/registry.py +2 -2
  35. omlish/dataclasses/{utils.py → impl/utils.py} +1 -1
  36. omlish/dataclasses/inspect.py +4 -4
  37. omlish/dataclasses/metaclass/bases.py +2 -2
  38. omlish/dataclasses/metaclass/confer.py +1 -1
  39. omlish/dataclasses/metaclass/meta.py +1 -1
  40. omlish/dataclasses/metaclass/specs.py +1 -1
  41. omlish/dataclasses/reflection.py +9 -9
  42. omlish/dataclasses/tools/as_.py +2 -2
  43. omlish/dataclasses/tools/static.py +2 -2
  44. omlish/diag/pydevd.py +2 -2
  45. omlish/diag/timers.py +184 -0
  46. omlish/inject/impl/injector.py +1 -1
  47. omlish/inject/listeners.py +1 -1
  48. omlish/lang/__init__.py +1 -0
  49. omlish/lang/cached/function.py +10 -0
  50. omlish/lang/contextmanagers.py +27 -0
  51. omlish/reflect/subst.py +43 -2
  52. {omlish-0.0.0.dev394.dist-info → omlish-0.0.0.dev396.dist-info}/METADATA +3 -3
  53. {omlish-0.0.0.dev394.dist-info → omlish-0.0.0.dev396.dist-info}/RECORD +77 -73
  54. /omlish/dataclasses/{internals.py → _internals.py} +0 -0
  55. /omlish/dataclasses/{api/classes → impl}/__init__.py +0 -0
  56. /omlish/dataclasses/{api → impl/api}/__init__.py +0 -0
  57. /omlish/dataclasses/{api/fields → impl/api/classes}/__init__.py +0 -0
  58. /omlish/dataclasses/{api → impl/api}/classes/make.py +0 -0
  59. /omlish/dataclasses/{generation → impl/api/fields}/__init__.py +0 -0
  60. /omlish/dataclasses/{concerns → impl/concerns}/__init__.py +0 -0
  61. /omlish/dataclasses/{concerns → impl/concerns}/abc.py +0 -0
  62. /omlish/dataclasses/{concerns → impl/concerns}/doc.py +0 -0
  63. /omlish/dataclasses/{concerns → impl/concerns}/eq.py +0 -0
  64. /omlish/dataclasses/{concerns → impl/concerns}/order.py +0 -0
  65. /omlish/dataclasses/{concerns → impl/concerns}/override.py +0 -0
  66. /omlish/dataclasses/{concerns → impl/concerns}/slots.py +0 -0
  67. /omlish/dataclasses/{processing → impl/generation}/__init__.py +0 -0
  68. /omlish/dataclasses/{generation → impl/generation}/base.py +0 -0
  69. /omlish/dataclasses/{generation → impl/generation}/idents.py +0 -0
  70. /omlish/dataclasses/{generation → impl/generation}/manifests.py +0 -0
  71. /omlish/dataclasses/{generation → impl/generation}/ops.py +0 -0
  72. /omlish/dataclasses/{generation → impl/generation}/utils.py +0 -0
  73. /omlish/dataclasses/{processing → impl/processing}/priority.py +0 -0
  74. {omlish-0.0.0.dev394.dist-info → omlish-0.0.0.dev396.dist-info}/WHEEL +0 -0
  75. {omlish-0.0.0.dev394.dist-info → omlish-0.0.0.dev396.dist-info}/entry_points.txt +0 -0
  76. {omlish-0.0.0.dev394.dist-info → omlish-0.0.0.dev396.dist-info}/licenses/LICENSE +0 -0
  77. {omlish-0.0.0.dev394.dist-info → omlish-0.0.0.dev396.dist-info}/top_level.txt +0 -0
omlish/__about__.py CHANGED
@@ -1,5 +1,5 @@
1
- __version__ = '0.0.0.dev394'
2
- __revision__ = 'b3c8aa9fb0aa4cb4683cea8843b22615547cbf03'
1
+ __version__ = '0.0.0.dev396'
2
+ __revision__ = '00b57bae472acf724c5154303eaea5f0f847f129'
3
3
 
4
4
 
5
5
  #
@@ -69,7 +69,7 @@ class Project(ProjectBase):
69
69
 
70
70
  'pyyaml ~= 6.0',
71
71
 
72
- 'cbor2 ~= 5.6',
72
+ 'cbor2 ~= 5.7',
73
73
 
74
74
  'cloudpickle ~= 3.1',
75
75
  ],
@@ -139,6 +139,10 @@ from .sorted.sorted import ( # noqa
139
139
  SortedMutableMapping,
140
140
  )
141
141
 
142
+ from .trie import ( # noqa
143
+ Trie,
144
+ )
145
+
142
146
  from .unmodifiable import ( # noqa
143
147
  Unmodifiable,
144
148
  UnmodifiableMapping,
@@ -0,0 +1,156 @@
1
+ import typing as ta
2
+
3
+
4
+ K = ta.TypeVar('K')
5
+ V = ta.TypeVar('V')
6
+ K2 = ta.TypeVar('K2')
7
+ V2 = ta.TypeVar('V2')
8
+
9
+
10
+ ##
11
+
12
+
13
+ class Trie(ta.MutableMapping[ta.Sequence[K], V], ta.Generic[K, V]):
14
+ class Node(ta.Generic[K2, V2]):
15
+ def __init__(self) -> None:
16
+ self._children: dict[K2, Trie.Node[K2, V2]] = {}
17
+
18
+ _value: V2
19
+
20
+ def __init_subclass__(cls, **kwargs):
21
+ raise TypeError
22
+
23
+ @property
24
+ def has_value(self) -> bool:
25
+ try:
26
+ self._value # noqa
27
+ except AttributeError:
28
+ return False
29
+ else:
30
+ return True
31
+
32
+ @property
33
+ def value(self) -> V2:
34
+ return self._value
35
+
36
+ @property
37
+ def children(self) -> ta.Mapping[K2, 'Trie.Node[K2, V2]']:
38
+ return self._children
39
+
40
+ def __init__(self) -> None:
41
+ super().__init__()
42
+
43
+ self._len = 0
44
+ self._root: Trie.Node[K, V] = Trie.Node()
45
+
46
+ @property
47
+ def root(self) -> Node[K, V]:
48
+ return self._root
49
+
50
+ def __len__(self) -> int:
51
+ return self._len
52
+
53
+ def get_node(self, k: ta.Iterable[K]) -> Node[K, V]:
54
+ cur = self._root
55
+ for x in k:
56
+ cur = cur._children[x] # noqa
57
+ return cur
58
+
59
+ def __getitem__(self, k: ta.Iterable[K]) -> V:
60
+ try:
61
+ node = self.get_node(k)
62
+ except KeyError:
63
+ raise KeyError(k) from None
64
+
65
+ try:
66
+ return node.value
67
+ except AttributeError:
68
+ raise KeyError(k) from None
69
+
70
+ def __setitem__(self, k: ta.Iterable[K], v: V) -> None:
71
+ cur = self._root
72
+ for x in k:
73
+ try:
74
+ cur = cur._children[x] # noqa
75
+ except KeyError:
76
+ nxt: Trie.Node[K, V] = Trie.Node()
77
+ cur._children[x] = nxt # noqa
78
+ cur = nxt
79
+
80
+ try:
81
+ cur._value # noqa
82
+ except AttributeError:
83
+ self._len += 1
84
+ cur._value = v # noqa
85
+
86
+ def __delitem__(self, k: ta.Iterable[K]) -> None:
87
+ stack: list[tuple[K, Trie.Node[K, V]]] = []
88
+ cur = self._root
89
+ for x in k:
90
+ stack.append((x, cur))
91
+ cur = cur._children[x] # noqa
92
+
93
+ try:
94
+ del cur._value # noqa
95
+ except AttributeError:
96
+ raise KeyError(k) from None
97
+
98
+ self._len -= 1
99
+ for x, parent in reversed(stack):
100
+ if cur.has_value or cur._children: # noqa
101
+ break
102
+ del parent._children[x] # noqa
103
+ cur = parent
104
+
105
+ def iter_nodes(
106
+ self,
107
+ *,
108
+ share_key: bool = False,
109
+ root: ta.Optional['Trie.Node[K, V]'] = None,
110
+ sort_children: bool | ta.Callable[[list[tuple[K, Node[K, V]]]], None] = False,
111
+ ) -> ta.Iterator[tuple[ta.Sequence[K], Node[K, V]]]:
112
+ if root is None:
113
+ root = self._root
114
+
115
+ ic: ta.Callable[[ta.Mapping[K, Trie.Node[K, V]]], ta.Iterator[tuple[K, Trie.Node[K, V]]]]
116
+ if sort_children is True:
117
+ ic = lambda cd: iter(sorted(cd.items(), key=lambda t: t[0])) # type: ignore
118
+ elif sort_children is False:
119
+ ic = lambda cd: iter(cd.items())
120
+ else:
121
+ def ic(cd):
122
+ il = list(cd.items())
123
+ sort_children(il)
124
+ return iter(il)
125
+
126
+ key: list[K] = []
127
+ stack: list[tuple[Trie.Node[K, V], ta.Iterator[tuple[K, Trie.Node[K, V]]]]] = []
128
+
129
+ stack.append((root, ic(root._children))) # noqa
130
+ yield (key if share_key else tuple(key), root)
131
+
132
+ while stack:
133
+ node, it = stack[-1]
134
+
135
+ try:
136
+ k, c = next(it)
137
+ except StopIteration:
138
+ stack.pop()
139
+ if stack:
140
+ key.pop()
141
+ continue
142
+ key.append(k)
143
+
144
+ stack.append((c, ic(c._children))) # noqa
145
+ yield (key if share_key else tuple(key), c)
146
+
147
+ def iter_items(self, **kwargs: ta.Any) -> ta.Iterator[tuple[ta.Sequence[K], V]]:
148
+ for k, node in self.iter_nodes(**kwargs):
149
+ try:
150
+ yield (k, node._value) # noqa
151
+ except AttributeError:
152
+ pass
153
+
154
+ def __iter__(self) -> ta.Iterator[ta.Sequence[K]]:
155
+ for k, _ in self.iter_items():
156
+ yield k
@@ -22,7 +22,7 @@ from dataclasses import ( # noqa
22
22
  replace,
23
23
  )
24
24
 
25
- from .api import ( # noqa
25
+ from .impl.api import ( # noqa
26
26
  dataclass as xdataclass,
27
27
 
28
28
  make_dataclass as xmake_dataclass,
@@ -30,15 +30,15 @@ from .api import ( # noqa
30
30
  field as xfield,
31
31
  )
32
32
 
33
+ from .impl.concerns.replace import ( # noqa
34
+ replace as xreplace,
35
+ )
36
+
33
37
  from .tools.as_ import ( # noqa
34
38
  asdict,
35
39
  astuple,
36
40
  )
37
41
 
38
- from .concerns.replace import ( # noqa
39
- replace as xreplace,
40
- )
41
-
42
42
 
43
43
  ##
44
44
  # globals hack
@@ -54,7 +54,7 @@ globals()['replace'] = xreplace
54
54
  ##
55
55
  # additional interface
56
56
 
57
- from .api import ( # noqa
57
+ from .impl.api import ( # noqa
58
58
  append_class_metadata,
59
59
  extra_class_params,
60
60
  init,
@@ -1,9 +1,9 @@
1
1
  import typing as ta
2
2
 
3
- from .... import check
4
- from ...internals import StdParams
5
- from ...specs import ClassSpec
6
- from ...specs import FieldSpec
3
+ from ..... import check
4
+ from ...._internals import StdParams
5
+ from ....specs import ClassSpec
6
+ from ....specs import FieldSpec
7
7
 
8
8
 
9
9
  ##
@@ -5,12 +5,12 @@ TODO:
5
5
  import inspect
6
6
  import typing as ta
7
7
 
8
- from .... import check
9
- from .... import lang
10
- from ...internals import STD_FIELDS_ATTR
11
- from ...internals import STD_PARAMS_ATTR
8
+ from ..... import check
9
+ from ..... import lang
10
+ from ...._internals import STD_FIELDS_ATTR
11
+ from ...._internals import STD_PARAMS_ATTR
12
+ from ....specs import ClassSpec
12
13
  from ...processing.driving import drive_cls_processing
13
- from ...specs import ClassSpec
14
14
  from ...utils import class_decorator
15
15
  from ..fields.building import build_cls_std_fields
16
16
  from ..fields.conversion import std_field_to_field_spec
@@ -1,10 +1,10 @@
1
1
  import dataclasses as dc
2
2
  import typing as ta
3
3
 
4
- from .... import check
5
- from .... import lang
6
- from ....lite.dataclasses import is_immediate_dataclass
7
- from ...specs import InitFn
4
+ from ..... import check
5
+ from ..... import lang
6
+ from .....lite.dataclasses import is_immediate_dataclass
7
+ from ....specs import InitFn
8
8
 
9
9
 
10
10
  T = ta.TypeVar('T')
@@ -1,9 +1,9 @@
1
1
  import typing as ta
2
2
 
3
- from .... import check
4
- from ...internals import STD_PARAMS_ATTR
5
- from ...internals import StdParams
6
- from ...specs import ClassSpec
3
+ from ..... import check
4
+ from ...._internals import STD_PARAMS_ATTR
5
+ from ...._internals import StdParams
6
+ from ....specs import ClassSpec
7
7
 
8
8
 
9
9
  ##
@@ -2,13 +2,13 @@ import dataclasses as dc
2
2
  import types
3
3
  import typing as ta
4
4
 
5
- from .... import check
6
- from ...inspect import get_cls_annotations
7
- from ...internals import STD_FIELDS_ATTR
8
- from ...internals import StdFieldType
9
- from ...internals import std_is_classvar
10
- from ...internals import std_is_initvar
11
- from ...internals import std_is_kw_only
5
+ from ..... import check
6
+ from ...._internals import STD_FIELDS_ATTR
7
+ from ...._internals import StdFieldType
8
+ from ...._internals import std_is_classvar
9
+ from ...._internals import std_is_initvar
10
+ from ...._internals import std_is_kw_only
11
+ from ....inspect import get_cls_annotations
12
12
 
13
13
 
14
14
  ##
@@ -2,10 +2,10 @@ import collections
2
2
  import dataclasses as dc
3
3
  import typing as ta
4
4
 
5
- from .... import lang
6
- from ...specs import CoerceFn
7
- from ...specs import ReprFn
8
- from ...specs import ValidateFn
5
+ from ..... import lang
6
+ from ....specs import CoerceFn
7
+ from ....specs import ReprFn
8
+ from ....specs import ValidateFn
9
9
  from .metadata import _ExtraFieldParamsMetadata
10
10
  from .metadata import extra_field_params
11
11
 
@@ -1,14 +1,14 @@
1
1
  import dataclasses as dc
2
2
  import typing as ta
3
3
 
4
- from .... import check
5
- from .... import lang
6
- from ...debug import DEBUG
7
- from ...internals import StdFieldType
8
- from ...internals import std_field_type
9
- from ...specs import DefaultFactory
10
- from ...specs import FieldSpec
11
- from ...specs import FieldType
4
+ from ..... import check
5
+ from ..... import lang
6
+ from ...._internals import StdFieldType
7
+ from ...._internals import std_field_type
8
+ from ....debug import DEBUG
9
+ from ....specs import DefaultFactory
10
+ from ....specs import FieldSpec
11
+ from ....specs import FieldType
12
12
  from .metadata import _ExtraFieldParamsMetadata
13
13
  from .metadata import set_field_spec_metadata
14
14
 
@@ -1,11 +1,11 @@
1
1
  import dataclasses as dc
2
2
  import typing as ta
3
3
 
4
- from .... import check
5
- from .... import lang
6
- from ...debug import DEBUG
7
- from ...specs import FieldSpec
8
- from ...tools.modifiers import field_modifier
4
+ from ..... import check
5
+ from ..... import lang
6
+ from ....debug import DEBUG
7
+ from ....specs import FieldSpec
8
+ from ....tools.modifiers import field_modifier
9
9
  from ...utils import chain_mapping_proxy
10
10
 
11
11
 
@@ -1,6 +1,7 @@
1
1
  import dataclasses as dc
2
2
  import typing as ta
3
3
 
4
+ from ...specs import FieldType
4
5
  from ..generation.base import Generator
5
6
  from ..generation.base import Plan
6
7
  from ..generation.base import PlanResult
@@ -10,7 +11,6 @@ from ..generation.ops import Op
10
11
  from ..generation.registry import register_generator_type
11
12
  from ..generation.utils import build_attr_kwargs_body_src_lines
12
13
  from ..processing.base import ProcessingContext
13
- from ..specs import FieldType
14
14
 
15
15
 
16
16
  ##
@@ -1,18 +1,18 @@
1
1
  import dataclasses as dc
2
2
  import typing as ta
3
3
 
4
- from ... import check
5
- from ..debug import DEBUG
4
+ from .... import check
5
+ from ..._internals import STD_FIELDS_ATTR
6
+ from ...debug import DEBUG
7
+ from ...inspect import FieldsInspection
8
+ from ...specs import FieldSpec
9
+ from ...specs import FieldType
6
10
  from ..generation.idents import IDENT_PREFIX
7
- from ..inspect import FieldsInspection
8
- from ..internals import STD_FIELDS_ATTR
9
11
  from ..processing.base import ProcessingContext
10
12
  from ..processing.base import Processor
11
13
  from ..processing.priority import ProcessorPriority
12
14
  from ..processing.registry import register_processing_context_item_factory
13
15
  from ..processing.registry import register_processor_type
14
- from ..specs import FieldSpec
15
- from ..specs import FieldType
16
16
 
17
17
 
18
18
  ##
@@ -7,7 +7,9 @@ import dataclasses as dc
7
7
  import typing as ta
8
8
  import weakref
9
9
 
10
- from ... import check
10
+ from .... import check
11
+ from ..._internals import STD_FIELDS_ATTR
12
+ from ..._internals import STD_PARAMS_ATTR
11
13
  from ..generation.base import Generator
12
14
  from ..generation.base import Plan
13
15
  from ..generation.base import PlanResult
@@ -17,8 +19,6 @@ from ..generation.idents import IDENT_PREFIX
17
19
  from ..generation.ops import AddMethodOp
18
20
  from ..generation.ops import Op
19
21
  from ..generation.registry import register_generator_type
20
- from ..internals import STD_FIELDS_ATTR
21
- from ..internals import STD_PARAMS_ATTR
22
22
  from ..processing.base import ProcessingContext
23
23
 
24
24
 
@@ -1,7 +1,7 @@
1
1
  import dataclasses as dc
2
2
  import typing as ta
3
3
 
4
- from ... import check
4
+ from .... import check
5
5
  from ..generation.base import Generator
6
6
  from ..generation.base import Plan
7
7
  from ..generation.base import PlanResult
@@ -7,7 +7,15 @@ import dataclasses as dc
7
7
  import itertools
8
8
  import typing as ta
9
9
 
10
- from ... import check
10
+ from .... import check
11
+ from ..._internals import STD_POST_INIT_NAME
12
+ from ...inspect import FieldsInspection
13
+ from ...specs import CoerceFn
14
+ from ...specs import DefaultFactory
15
+ from ...specs import FieldSpec
16
+ from ...specs import FieldType
17
+ from ...specs import InitFn
18
+ from ...specs import ValidateFn
11
19
  from ..generation.base import Generator
12
20
  from ..generation.base import Plan
13
21
  from ..generation.base import PlanResult
@@ -24,15 +32,7 @@ from ..generation.ops import OpRef
24
32
  from ..generation.ops import Ref
25
33
  from ..generation.registry import register_generator_type
26
34
  from ..generation.utils import SetattrSrcBuilder
27
- from ..inspect import FieldsInspection
28
- from ..internals import STD_POST_INIT_NAME
29
35
  from ..processing.base import ProcessingContext
30
- from ..specs import CoerceFn
31
- from ..specs import DefaultFactory
32
- from ..specs import FieldSpec
33
- from ..specs import FieldType
34
- from ..specs import InitFn
35
- from ..specs import ValidateFn
36
36
  from .fields import InitFields
37
37
  from .mro import MroDict
38
38
 
@@ -1,4 +1,4 @@
1
- from ... import check
1
+ from .... import check
2
2
  from ..processing.base import Processor
3
3
  from ..processing.priority import ProcessorPriority
4
4
  from ..processing.registry import register_processor_type
@@ -1,6 +1,6 @@
1
1
  import typing as ta
2
2
 
3
- from ... import lang
3
+ from .... import lang
4
4
  from ..processing.base import ProcessingContext
5
5
  from ..processing.registry import register_processing_context_item_factory
6
6
 
@@ -1,5 +1,5 @@
1
- from ... import check
2
- from ..internals import STD_PARAMS_ATTR
1
+ from .... import check
2
+ from ..._internals import STD_PARAMS_ATTR
3
3
  from ..processing.base import Processor
4
4
  from ..processing.priority import ProcessorPriority
5
5
  from ..processing.registry import register_processor_type
@@ -1,10 +1,10 @@
1
1
  import dataclasses as dc
2
2
  import typing as ta
3
3
 
4
- from ..internals import STD_FIELDS_ATTR
5
- from ..internals import StdFieldType
6
- from ..internals import std_field_type
7
- from ..internals import std_is_dataclass_instance
4
+ from ..._internals import STD_FIELDS_ATTR
5
+ from ..._internals import StdFieldType
6
+ from ..._internals import std_field_type
7
+ from ..._internals import std_is_dataclass_instance
8
8
  from ..processing.base import Processor
9
9
  from ..processing.priority import ProcessorPriority
10
10
  from ..processing.registry import register_processor_type
@@ -1,6 +1,9 @@
1
1
  import dataclasses as dc
2
2
  import typing as ta
3
3
 
4
+ from ...specs import FieldSpec
5
+ from ...specs import FieldType
6
+ from ...specs import ReprFn
4
7
  from ..generation.base import Generator
5
8
  from ..generation.base import Plan
6
9
  from ..generation.base import PlanResult
@@ -11,9 +14,6 @@ from ..generation.ops import OpRef
11
14
  from ..generation.ops import Ref
12
15
  from ..generation.registry import register_generator_type
13
16
  from ..processing.base import ProcessingContext
14
- from ..specs import FieldSpec
15
- from ..specs import FieldType
16
- from ..specs import ReprFn
17
17
  from .fields import InitFields
18
18
 
19
19
 
@@ -0,0 +1,12 @@
1
+ import dataclasses as dc
2
+
3
+
4
+ ##
5
+
6
+
7
+ PACKAGE_CONFIG_FILE_NAME = '.dataclasses.json'
8
+
9
+
10
+ @dc.dataclass(frozen=True, kw_only=True)
11
+ class PackageConfig:
12
+ codegen: bool = False
@@ -6,7 +6,7 @@ import abc
6
6
  import dataclasses as dc
7
7
  import typing as ta
8
8
 
9
- from ... import check
9
+ from .... import check
10
10
  from ..utils import repr_round_trip_value
11
11
  from .globals import FN_GLOBAL_IMPORTS
12
12
  from .globals import FN_GLOBALS
@@ -7,7 +7,7 @@ import sys
7
7
  import types
8
8
  import typing as ta
9
9
 
10
- from ... import lang
10
+ from .... import lang
11
11
  from ..utils import repr_round_trip_value
12
12
  from .globals import FN_GLOBAL_VALUES
13
13
  from .globals import FnGlobal
@@ -3,9 +3,9 @@ import reprlib
3
3
  import types
4
4
  import typing as ta
5
5
 
6
- from ..errors import FieldFnValidationError
7
- from ..errors import FieldTypeValidationError
8
- from ..errors import FnValidationError
6
+ from ...errors import FieldFnValidationError
7
+ from ...errors import FieldTypeValidationError
8
+ from ...errors import FnValidationError
9
9
  from .idents import IDENT_PREFIX
10
10
 
11
11
 
@@ -1,4 +1,4 @@
1
- from ...text.mangle import StringMangler
1
+ from ....text.mangle import StringMangler
2
2
 
3
3
 
4
4
  ##
@@ -6,7 +6,7 @@ import dataclasses as dc
6
6
  import re
7
7
  import typing as ta
8
8
 
9
- from ... import lang
9
+ from .... import lang
10
10
  from .base import Plan
11
11
 
12
12