omlish 0.0.0.dev484__py3-none-any.whl → 0.0.0.dev493__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.

Potentially problematic release.


This version of omlish might be problematic. Click here for more details.

Files changed (62) hide show
  1. omlish/README.md +199 -0
  2. omlish/__about__.py +8 -3
  3. omlish/dataclasses/impl/generation/plans.py +2 -17
  4. omlish/dataclasses/impl/generation/processor.py +2 -2
  5. omlish/dataclasses/impl/processing/driving.py +13 -1
  6. omlish/diag/_pycharm/runhack.py +1 -1
  7. omlish/inject/__init__.py +19 -11
  8. omlish/inject/_dataclasses.py +1485 -1323
  9. omlish/inject/binder.py +7 -4
  10. omlish/inject/eagers.py +2 -0
  11. omlish/inject/helpers/late.py +76 -0
  12. omlish/inject/{managed.py → helpers/managed.py} +10 -10
  13. omlish/inject/impl/elements.py +7 -4
  14. omlish/inject/impl/injector.py +10 -7
  15. omlish/inject/inspect.py +1 -1
  16. omlish/lang/__init__.py +2 -0
  17. omlish/lifecycles/README.md +30 -0
  18. omlish/lifecycles/__init__.py +87 -13
  19. omlish/lifecycles/_dataclasses.py +1388 -0
  20. omlish/lifecycles/base.py +178 -64
  21. omlish/lifecycles/contextmanagers.py +113 -4
  22. omlish/lifecycles/controller.py +150 -87
  23. omlish/lifecycles/injection.py +143 -0
  24. omlish/lifecycles/listeners.py +56 -0
  25. omlish/lifecycles/managed.py +142 -0
  26. omlish/lifecycles/manager.py +218 -93
  27. omlish/lifecycles/states.py +2 -0
  28. omlish/lifecycles/transitions.py +3 -0
  29. omlish/lifecycles/unwrap.py +57 -0
  30. omlish/lite/typing.py +18 -0
  31. omlish/logs/_amalg.py +1 -1
  32. omlish/logs/all.py +25 -11
  33. omlish/logs/asyncs.py +73 -0
  34. omlish/logs/base.py +101 -12
  35. omlish/logs/contexts.py +4 -1
  36. omlish/logs/lists.py +125 -0
  37. omlish/logs/modules.py +19 -1
  38. omlish/logs/std/loggers.py +6 -1
  39. omlish/logs/std/noisy.py +11 -9
  40. omlish/logs/{standard.py → std/standard.py} +3 -4
  41. omlish/logs/utils.py +16 -1
  42. omlish/marshal/_dataclasses.py +781 -781
  43. omlish/reflect/__init__.py +43 -26
  44. omlish/reflect/ops.py +10 -1
  45. omlish/specs/jmespath/_dataclasses.py +559 -559
  46. omlish/specs/jsonschema/keywords/_dataclasses.py +220 -220
  47. omlish/sql/__init__.py +24 -5
  48. omlish/sql/api/dbapi.py +1 -1
  49. omlish/sql/dbapi/__init__.py +15 -0
  50. omlish/sql/{dbapi.py → dbapi/drivers.py} +2 -2
  51. omlish/sql/queries/__init__.py +3 -0
  52. omlish/testing/pytest/plugins/asyncs/plugin.py +2 -0
  53. omlish/text/docwrap/cli.py +5 -0
  54. {omlish-0.0.0.dev484.dist-info → omlish-0.0.0.dev493.dist-info}/METADATA +8 -5
  55. {omlish-0.0.0.dev484.dist-info → omlish-0.0.0.dev493.dist-info}/RECORD +61 -51
  56. omlish/lifecycles/abstract.py +0 -86
  57. /omlish/inject/{impl → helpers}/proxy.py +0 -0
  58. /omlish/sql/{abc.py → dbapi/abc.py} +0 -0
  59. {omlish-0.0.0.dev484.dist-info → omlish-0.0.0.dev493.dist-info}/WHEEL +0 -0
  60. {omlish-0.0.0.dev484.dist-info → omlish-0.0.0.dev493.dist-info}/entry_points.txt +0 -0
  61. {omlish-0.0.0.dev484.dist-info → omlish-0.0.0.dev493.dist-info}/licenses/LICENSE +0 -0
  62. {omlish-0.0.0.dev484.dist-info → omlish-0.0.0.dev493.dist-info}/top_level.txt +0 -0
@@ -25,27 +25,35 @@ def _register(**kwargs):
25
25
 
26
26
  @_register(
27
27
  plan_repr=(
28
- "Plans(tup=(CopyPlan(fields=('node',)), EqPlan(fields=('node',)), FrozenPlan(fields=('node',), allow_dynamic_du"
29
- "nder_attrs=False), HashPlan(action='add', fields=('node',), cache=False), InitPlan(fields=(InitPlan.Field(name"
30
- "='node', annotation=OpRef(name='init.fields.0.annotation'), default=None, default_factory=None, init=True, ove"
31
- "rride=False, field_type=FieldType.INSTANCE, coerce=None, validate=None, check_type=None),), self_param='self',"
32
- " std_params=('node',), kw_only_params=(), frozen=True, slots=False, post_init_params=None, init_fns=(), valida"
33
- "te_fns=()), ReprPlan(fields=(ReprPlan.Field(name='node', kw_only=False, fn=None),), id=False, terse=False, def"
34
- "ault_fn=None)))"
28
+ "Plans(tup=(CopyPlan(fields=('left', 'right')), EqPlan(fields=('left', 'right')), FrozenPlan(fields=('left', 'r"
29
+ "ight'), allow_dynamic_dunder_attrs=False), HashPlan(action='add', fields=('left', 'right'), cache=False), Init"
30
+ "Plan(fields=(InitPlan.Field(name='left', annotation=OpRef(name='init.fields.0.annotation'), default=None, defa"
31
+ "ult_factory=None, init=True, override=False, field_type=FieldType.INSTANCE, coerce=None, validate=None, check_"
32
+ "type=None), InitPlan.Field(name='right', annotation=OpRef(name='init.fields.1.annotation'), default=None, defa"
33
+ "ult_factory=None, init=True, override=False, field_type=FieldType.INSTANCE, coerce=None, validate=None, check_"
34
+ "type=None)), self_param='self', std_params=('left', 'right'), kw_only_params=(), frozen=True, slots=False, pos"
35
+ "t_init_params=None, init_fns=(), validate_fns=()), ReprPlan(fields=(ReprPlan.Field(name='left', kw_only=False,"
36
+ " fn=None), ReprPlan.Field(name='right', kw_only=False, fn=None)), id=False, terse=False, default_fn=None)))"
35
37
  ),
36
- plan_repr_sha1='04121723da73369a153101f1c1cd7d127fdcfad7',
38
+ plan_repr_sha1='683a8fba51ac0aaee8d49314879ce436e8ee2d3b',
37
39
  op_ref_idents=(
38
40
  '__dataclass__init__fields__0__annotation',
41
+ '__dataclass__init__fields__1__annotation',
39
42
  ),
40
43
  cls_names=(
41
- ('omlish.specs.jmespath', 'Flatten'),
44
+ ('omlish.specs.jmespath', 'AndExpression'),
45
+ ('omlish.specs.jmespath', 'OrExpression'),
46
+ ('omlish.specs.jmespath', 'Pipe'),
47
+ ('omlish.specs.jmespath', 'Projection'),
48
+ ('omlish.specs.jmespath', 'ValueProjection'),
42
49
  ),
43
50
  )
44
- def _process_dataclass__04121723da73369a153101f1c1cd7d127fdcfad7():
51
+ def _process_dataclass__683a8fba51ac0aaee8d49314879ce436e8ee2d3b():
45
52
  def _process_dataclass(
46
53
  *,
47
54
  __dataclass__cls,
48
55
  __dataclass__init__fields__0__annotation,
56
+ __dataclass__init__fields__1__annotation,
49
57
  __dataclass__FieldFnValidationError, # noqa
50
58
  __dataclass__FieldTypeValidationError, # noqa
51
59
  __dataclass__FnValidationError, # noqa
@@ -64,7 +72,8 @@ def _process_dataclass__04121723da73369a153101f1c1cd7d127fdcfad7():
64
72
  if self.__class__ is not __dataclass__cls:
65
73
  raise TypeError(self)
66
74
  return __dataclass__cls( # noqa
67
- node=self.node,
75
+ left=self.left,
76
+ right=self.right,
68
77
  )
69
78
 
70
79
  __copy__.__qualname__ = f"{__dataclass__cls.__qualname__}.__copy__"
@@ -78,7 +87,8 @@ def _process_dataclass__04121723da73369a153101f1c1cd7d127fdcfad7():
78
87
  if self.__class__ is not other.__class__:
79
88
  return NotImplemented
80
89
  return (
81
- self.node == other.node
90
+ self.left == other.left and
91
+ self.right == other.right
82
92
  )
83
93
 
84
94
  __eq__.__qualname__ = f"{__dataclass__cls.__qualname__}.__eq__"
@@ -87,7 +97,8 @@ def _process_dataclass__04121723da73369a153101f1c1cd7d127fdcfad7():
87
97
  setattr(__dataclass__cls, '__eq__', __eq__)
88
98
 
89
99
  __dataclass___setattr_frozen_fields = {
90
- 'node',
100
+ 'left',
101
+ 'right',
91
102
  }
92
103
 
93
104
  def __setattr__(self, name, value):
@@ -104,7 +115,8 @@ def _process_dataclass__04121723da73369a153101f1c1cd7d127fdcfad7():
104
115
  setattr(__dataclass__cls, '__setattr__', __setattr__)
105
116
 
106
117
  __dataclass___delattr_frozen_fields = {
107
- 'node',
118
+ 'left',
119
+ 'right',
108
120
  }
109
121
 
110
122
  def __delattr__(self, name):
@@ -122,7 +134,8 @@ def _process_dataclass__04121723da73369a153101f1c1cd7d127fdcfad7():
122
134
 
123
135
  def __hash__(self):
124
136
  return hash((
125
- self.node,
137
+ self.left,
138
+ self.right,
126
139
  ))
127
140
 
128
141
  __hash__.__qualname__ = f"{__dataclass__cls.__qualname__}.__hash__"
@@ -130,9 +143,11 @@ def _process_dataclass__04121723da73369a153101f1c1cd7d127fdcfad7():
130
143
 
131
144
  def __init__(
132
145
  self,
133
- node: __dataclass__init__fields__0__annotation,
146
+ left: __dataclass__init__fields__0__annotation,
147
+ right: __dataclass__init__fields__1__annotation,
134
148
  ) -> __dataclass__None:
135
- __dataclass__object_setattr(self, 'node', node)
149
+ __dataclass__object_setattr(self, 'left', left)
150
+ __dataclass__object_setattr(self, 'right', right)
136
151
 
137
152
  __init__.__qualname__ = f"{__dataclass__cls.__qualname__}.__init__"
138
153
  if '__init__' in __dataclass__cls.__dict__:
@@ -142,7 +157,8 @@ def _process_dataclass__04121723da73369a153101f1c1cd7d127fdcfad7():
142
157
  @__dataclass___recursive_repr()
143
158
  def __repr__(self):
144
159
  parts = []
145
- parts.append(f"node={self.node!r}")
160
+ parts.append(f"left={self.left!r}")
161
+ parts.append(f"right={self.right!r}")
146
162
  return (
147
163
  f"{self.__class__.__qualname__}("
148
164
  f"{', '.join(parts)}"
@@ -159,30 +175,31 @@ def _process_dataclass__04121723da73369a153101f1c1cd7d127fdcfad7():
159
175
 
160
176
  @_register(
161
177
  plan_repr=(
162
- "Plans(tup=(CopyPlan(fields=('name', 'first', 'second')), EqPlan(fields=('name', 'first', 'second')), FrozenPla"
163
- "n(fields=('name', 'first', 'second'), allow_dynamic_dunder_attrs=False), HashPlan(action='add', fields=('name'"
164
- ", 'first', 'second'), cache=False), InitPlan(fields=(InitPlan.Field(name='name', annotation=OpRef(name='init.f"
165
- "ields.0.annotation'), default=None, default_factory=None, init=True, override=False, field_type=FieldType.INST"
166
- "ANCE, coerce=None, validate=None, check_type=None), InitPlan.Field(name='first', annotation=OpRef(name='init.f"
167
- "ields.1.annotation'), default=None, default_factory=None, init=True, override=False, field_type=FieldType.INST"
168
- "ANCE, coerce=None, validate=None, check_type=None), InitPlan.Field(name='second', annotation=OpRef(name='init."
169
- "fields.2.annotation'), default=None, default_factory=None, init=True, override=False, field_type=FieldType.INS"
170
- "TANCE, coerce=None, validate=None, check_type=None)), self_param='self', std_params=('name', 'first', 'second'"
171
- "), kw_only_params=(), frozen=True, slots=False, post_init_params=None, init_fns=(), validate_fns=()), ReprPlan"
172
- "(fields=(ReprPlan.Field(name='name', kw_only=False, fn=None), ReprPlan.Field(name='first', kw_only=False, fn=N"
173
- "one), ReprPlan.Field(name='second', kw_only=False, fn=None)), id=False, terse=False, default_fn=None)))"
178
+ "Plans(tup=(CopyPlan(fields=('operator', 'left', 'right')), EqPlan(fields=('operator', 'left', 'right')), Froze"
179
+ "nPlan(fields=('operator', 'left', 'right'), allow_dynamic_dunder_attrs=False), HashPlan(action='add', fields=("
180
+ "'operator', 'left', 'right'), cache=False), InitPlan(fields=(InitPlan.Field(name='operator', annotation=OpRef("
181
+ "name='init.fields.0.annotation'), default=None, default_factory=None, init=True, override=False, field_type=Fi"
182
+ "eldType.INSTANCE, coerce=None, validate=None, check_type=None), InitPlan.Field(name='left', annotation=OpRef(n"
183
+ "ame='init.fields.1.annotation'), default=None, default_factory=None, init=True, override=False, field_type=Fie"
184
+ "ldType.INSTANCE, coerce=None, validate=None, check_type=None), InitPlan.Field(name='right', annotation=OpRef(n"
185
+ "ame='init.fields.2.annotation'), default=None, default_factory=None, init=True, override=False, field_type=Fie"
186
+ "ldType.INSTANCE, coerce=None, validate=None, check_type=None)), self_param='self', std_params=('operator', 'le"
187
+ "ft', 'right'), kw_only_params=(), frozen=True, slots=False, post_init_params=None, init_fns=(), validate_fns=("
188
+ ")), ReprPlan(fields=(ReprPlan.Field(name='operator', kw_only=False, fn=None), ReprPlan.Field(name='left', kw_o"
189
+ "nly=False, fn=None), ReprPlan.Field(name='right', kw_only=False, fn=None)), id=False, terse=False, default_fn="
190
+ "None)))"
174
191
  ),
175
- plan_repr_sha1='17f73a891c5ca759d782b4a50d841d4e19830e44',
192
+ plan_repr_sha1='9ad32a9de77661d138040ae8b9ef479f313da67b',
176
193
  op_ref_idents=(
177
194
  '__dataclass__init__fields__0__annotation',
178
195
  '__dataclass__init__fields__1__annotation',
179
196
  '__dataclass__init__fields__2__annotation',
180
197
  ),
181
198
  cls_names=(
182
- ('omlish.specs.jmespath', 'Comparator'),
199
+ ('omlish.specs.jmespath', 'Arithmetic'),
183
200
  ),
184
201
  )
185
- def _process_dataclass__17f73a891c5ca759d782b4a50d841d4e19830e44():
202
+ def _process_dataclass__9ad32a9de77661d138040ae8b9ef479f313da67b():
186
203
  def _process_dataclass(
187
204
  *,
188
205
  __dataclass__cls,
@@ -207,9 +224,9 @@ def _process_dataclass__17f73a891c5ca759d782b4a50d841d4e19830e44():
207
224
  if self.__class__ is not __dataclass__cls:
208
225
  raise TypeError(self)
209
226
  return __dataclass__cls( # noqa
210
- name=self.name,
211
- first=self.first,
212
- second=self.second,
227
+ operator=self.operator,
228
+ left=self.left,
229
+ right=self.right,
213
230
  )
214
231
 
215
232
  __copy__.__qualname__ = f"{__dataclass__cls.__qualname__}.__copy__"
@@ -223,9 +240,9 @@ def _process_dataclass__17f73a891c5ca759d782b4a50d841d4e19830e44():
223
240
  if self.__class__ is not other.__class__:
224
241
  return NotImplemented
225
242
  return (
226
- self.name == other.name and
227
- self.first == other.first and
228
- self.second == other.second
243
+ self.operator == other.operator and
244
+ self.left == other.left and
245
+ self.right == other.right
229
246
  )
230
247
 
231
248
  __eq__.__qualname__ = f"{__dataclass__cls.__qualname__}.__eq__"
@@ -234,9 +251,9 @@ def _process_dataclass__17f73a891c5ca759d782b4a50d841d4e19830e44():
234
251
  setattr(__dataclass__cls, '__eq__', __eq__)
235
252
 
236
253
  __dataclass___setattr_frozen_fields = {
237
- 'name',
238
- 'first',
239
- 'second',
254
+ 'operator',
255
+ 'left',
256
+ 'right',
240
257
  }
241
258
 
242
259
  def __setattr__(self, name, value):
@@ -253,9 +270,9 @@ def _process_dataclass__17f73a891c5ca759d782b4a50d841d4e19830e44():
253
270
  setattr(__dataclass__cls, '__setattr__', __setattr__)
254
271
 
255
272
  __dataclass___delattr_frozen_fields = {
256
- 'name',
257
- 'first',
258
- 'second',
273
+ 'operator',
274
+ 'left',
275
+ 'right',
259
276
  }
260
277
 
261
278
  def __delattr__(self, name):
@@ -273,9 +290,9 @@ def _process_dataclass__17f73a891c5ca759d782b4a50d841d4e19830e44():
273
290
 
274
291
  def __hash__(self):
275
292
  return hash((
276
- self.name,
277
- self.first,
278
- self.second,
293
+ self.operator,
294
+ self.left,
295
+ self.right,
279
296
  ))
280
297
 
281
298
  __hash__.__qualname__ = f"{__dataclass__cls.__qualname__}.__hash__"
@@ -283,13 +300,13 @@ def _process_dataclass__17f73a891c5ca759d782b4a50d841d4e19830e44():
283
300
 
284
301
  def __init__(
285
302
  self,
286
- name: __dataclass__init__fields__0__annotation,
287
- first: __dataclass__init__fields__1__annotation,
288
- second: __dataclass__init__fields__2__annotation,
303
+ operator: __dataclass__init__fields__0__annotation,
304
+ left: __dataclass__init__fields__1__annotation,
305
+ right: __dataclass__init__fields__2__annotation,
289
306
  ) -> __dataclass__None:
290
- __dataclass__object_setattr(self, 'name', name)
291
- __dataclass__object_setattr(self, 'first', first)
292
- __dataclass__object_setattr(self, 'second', second)
307
+ __dataclass__object_setattr(self, 'operator', operator)
308
+ __dataclass__object_setattr(self, 'left', left)
309
+ __dataclass__object_setattr(self, 'right', right)
293
310
 
294
311
  __init__.__qualname__ = f"{__dataclass__cls.__qualname__}.__init__"
295
312
  if '__init__' in __dataclass__cls.__dict__:
@@ -299,9 +316,9 @@ def _process_dataclass__17f73a891c5ca759d782b4a50d841d4e19830e44():
299
316
  @__dataclass___recursive_repr()
300
317
  def __repr__(self):
301
318
  parts = []
302
- parts.append(f"name={self.name!r}")
303
- parts.append(f"first={self.first!r}")
304
- parts.append(f"second={self.second!r}")
319
+ parts.append(f"operator={self.operator!r}")
320
+ parts.append(f"left={self.left!r}")
321
+ parts.append(f"right={self.right!r}")
305
322
  return (
306
323
  f"{self.__class__.__qualname__}("
307
324
  f"{', '.join(parts)}"
@@ -318,27 +335,32 @@ def _process_dataclass__17f73a891c5ca759d782b4a50d841d4e19830e44():
318
335
 
319
336
  @_register(
320
337
  plan_repr=(
321
- "Plans(tup=(CopyPlan(fields=('expr',)), EqPlan(fields=('expr',)), FrozenPlan(fields=('expr',), allow_dynamic_du"
322
- "nder_attrs=False), HashPlan(action='add', fields=('expr',), cache=False), InitPlan(fields=(InitPlan.Field(name"
323
- "='expr', annotation=OpRef(name='init.fields.0.annotation'), default=None, default_factory=None, init=True, ove"
324
- "rride=False, field_type=FieldType.INSTANCE, coerce=None, validate=None, check_type=None),), self_param='self',"
325
- " std_params=('expr',), kw_only_params=(), frozen=True, slots=False, post_init_params=None, init_fns=(), valida"
326
- "te_fns=()), ReprPlan(fields=(ReprPlan.Field(name='expr', kw_only=False, fn=None),), id=False, terse=False, def"
327
- "ault_fn=None)))"
338
+ "Plans(tup=(CopyPlan(fields=('operator', 'expression')), EqPlan(fields=('operator', 'expression')), FrozenPlan("
339
+ "fields=('operator', 'expression'), allow_dynamic_dunder_attrs=False), HashPlan(action='add', fields=('operator"
340
+ "', 'expression'), cache=False), InitPlan(fields=(InitPlan.Field(name='operator', annotation=OpRef(name='init.f"
341
+ "ields.0.annotation'), default=None, default_factory=None, init=True, override=False, field_type=FieldType.INST"
342
+ "ANCE, coerce=None, validate=None, check_type=None), InitPlan.Field(name='expression', annotation=OpRef(name='i"
343
+ "nit.fields.1.annotation'), default=None, default_factory=None, init=True, override=False, field_type=FieldType"
344
+ ".INSTANCE, coerce=None, validate=None, check_type=None)), self_param='self', std_params=('operator', 'expressi"
345
+ "on'), kw_only_params=(), frozen=True, slots=False, post_init_params=None, init_fns=(), validate_fns=()), ReprP"
346
+ "lan(fields=(ReprPlan.Field(name='operator', kw_only=False, fn=None), ReprPlan.Field(name='expression', kw_only"
347
+ "=False, fn=None)), id=False, terse=False, default_fn=None)))"
328
348
  ),
329
- plan_repr_sha1='40ccd63db7a447b608d0875571d487f96ef3af93',
349
+ plan_repr_sha1='cdb3249bff15c580f8a8beab3e47937e31fe71a0',
330
350
  op_ref_idents=(
331
351
  '__dataclass__init__fields__0__annotation',
352
+ '__dataclass__init__fields__1__annotation',
332
353
  ),
333
354
  cls_names=(
334
- ('omlish.specs.jmespath', 'NotExpression'),
355
+ ('omlish.specs.jmespath', 'ArithmeticUnary'),
335
356
  ),
336
357
  )
337
- def _process_dataclass__40ccd63db7a447b608d0875571d487f96ef3af93():
358
+ def _process_dataclass__cdb3249bff15c580f8a8beab3e47937e31fe71a0():
338
359
  def _process_dataclass(
339
360
  *,
340
361
  __dataclass__cls,
341
362
  __dataclass__init__fields__0__annotation,
363
+ __dataclass__init__fields__1__annotation,
342
364
  __dataclass__FieldFnValidationError, # noqa
343
365
  __dataclass__FieldTypeValidationError, # noqa
344
366
  __dataclass__FnValidationError, # noqa
@@ -357,7 +379,8 @@ def _process_dataclass__40ccd63db7a447b608d0875571d487f96ef3af93():
357
379
  if self.__class__ is not __dataclass__cls:
358
380
  raise TypeError(self)
359
381
  return __dataclass__cls( # noqa
360
- expr=self.expr,
382
+ operator=self.operator,
383
+ expression=self.expression,
361
384
  )
362
385
 
363
386
  __copy__.__qualname__ = f"{__dataclass__cls.__qualname__}.__copy__"
@@ -371,7 +394,8 @@ def _process_dataclass__40ccd63db7a447b608d0875571d487f96ef3af93():
371
394
  if self.__class__ is not other.__class__:
372
395
  return NotImplemented
373
396
  return (
374
- self.expr == other.expr
397
+ self.operator == other.operator and
398
+ self.expression == other.expression
375
399
  )
376
400
 
377
401
  __eq__.__qualname__ = f"{__dataclass__cls.__qualname__}.__eq__"
@@ -380,7 +404,8 @@ def _process_dataclass__40ccd63db7a447b608d0875571d487f96ef3af93():
380
404
  setattr(__dataclass__cls, '__eq__', __eq__)
381
405
 
382
406
  __dataclass___setattr_frozen_fields = {
383
- 'expr',
407
+ 'operator',
408
+ 'expression',
384
409
  }
385
410
 
386
411
  def __setattr__(self, name, value):
@@ -397,7 +422,8 @@ def _process_dataclass__40ccd63db7a447b608d0875571d487f96ef3af93():
397
422
  setattr(__dataclass__cls, '__setattr__', __setattr__)
398
423
 
399
424
  __dataclass___delattr_frozen_fields = {
400
- 'expr',
425
+ 'operator',
426
+ 'expression',
401
427
  }
402
428
 
403
429
  def __delattr__(self, name):
@@ -415,7 +441,8 @@ def _process_dataclass__40ccd63db7a447b608d0875571d487f96ef3af93():
415
441
 
416
442
  def __hash__(self):
417
443
  return hash((
418
- self.expr,
444
+ self.operator,
445
+ self.expression,
419
446
  ))
420
447
 
421
448
  __hash__.__qualname__ = f"{__dataclass__cls.__qualname__}.__hash__"
@@ -423,9 +450,11 @@ def _process_dataclass__40ccd63db7a447b608d0875571d487f96ef3af93():
423
450
 
424
451
  def __init__(
425
452
  self,
426
- expr: __dataclass__init__fields__0__annotation,
453
+ operator: __dataclass__init__fields__0__annotation,
454
+ expression: __dataclass__init__fields__1__annotation,
427
455
  ) -> __dataclass__None:
428
- __dataclass__object_setattr(self, 'expr', expr)
456
+ __dataclass__object_setattr(self, 'operator', operator)
457
+ __dataclass__object_setattr(self, 'expression', expression)
429
458
 
430
459
  __init__.__qualname__ = f"{__dataclass__cls.__qualname__}.__init__"
431
460
  if '__init__' in __dataclass__cls.__dict__:
@@ -435,7 +464,8 @@ def _process_dataclass__40ccd63db7a447b608d0875571d487f96ef3af93():
435
464
  @__dataclass___recursive_repr()
436
465
  def __repr__(self):
437
466
  parts = []
438
- parts.append(f"expr={self.expr!r}")
467
+ parts.append(f"operator={self.operator!r}")
468
+ parts.append(f"expression={self.expression!r}")
439
469
  return (
440
470
  f"{self.__class__.__qualname__}("
441
471
  f"{', '.join(parts)}"
@@ -452,26 +482,26 @@ def _process_dataclass__40ccd63db7a447b608d0875571d487f96ef3af93():
452
482
 
453
483
  @_register(
454
484
  plan_repr=(
455
- "Plans(tup=(CopyPlan(fields=('name', 'args')), EqPlan(fields=('name', 'args')), FrozenPlan(fields=('name', 'arg"
456
- "s'), allow_dynamic_dunder_attrs=False), HashPlan(action='add', fields=('name', 'args'), cache=False), InitPlan"
485
+ "Plans(tup=(CopyPlan(fields=('name', 'expr')), EqPlan(fields=('name', 'expr')), FrozenPlan(fields=('name', 'exp"
486
+ "r'), allow_dynamic_dunder_attrs=False), HashPlan(action='add', fields=('name', 'expr'), cache=False), InitPlan"
457
487
  "(fields=(InitPlan.Field(name='name', annotation=OpRef(name='init.fields.0.annotation'), default=None, default_"
458
488
  "factory=None, init=True, override=False, field_type=FieldType.INSTANCE, coerce=None, validate=None, check_type"
459
- "=None), InitPlan.Field(name='args', annotation=OpRef(name='init.fields.1.annotation'), default=None, default_f"
489
+ "=None), InitPlan.Field(name='expr', annotation=OpRef(name='init.fields.1.annotation'), default=None, default_f"
460
490
  "actory=None, init=True, override=False, field_type=FieldType.INSTANCE, coerce=None, validate=None, check_type="
461
- "None)), self_param='self', std_params=('name', 'args'), kw_only_params=(), frozen=True, slots=False, post_init"
491
+ "None)), self_param='self', std_params=('name', 'expr'), kw_only_params=(), frozen=True, slots=False, post_init"
462
492
  "_params=None, init_fns=(), validate_fns=()), ReprPlan(fields=(ReprPlan.Field(name='name', kw_only=False, fn=No"
463
- "ne), ReprPlan.Field(name='args', kw_only=False, fn=None)), id=False, terse=False, default_fn=None)))"
493
+ "ne), ReprPlan.Field(name='expr', kw_only=False, fn=None)), id=False, terse=False, default_fn=None)))"
464
494
  ),
465
- plan_repr_sha1='46b21a57c7f935afb031452a3d30815129505ec6',
495
+ plan_repr_sha1='fb46b9fb75089de970d1b8ccffb404d02368804a',
466
496
  op_ref_idents=(
467
497
  '__dataclass__init__fields__0__annotation',
468
498
  '__dataclass__init__fields__1__annotation',
469
499
  ),
470
500
  cls_names=(
471
- ('omlish.specs.jmespath', 'FunctionExpression'),
501
+ ('omlish.specs.jmespath', 'Assign'),
472
502
  ),
473
503
  )
474
- def _process_dataclass__46b21a57c7f935afb031452a3d30815129505ec6():
504
+ def _process_dataclass__fb46b9fb75089de970d1b8ccffb404d02368804a():
475
505
  def _process_dataclass(
476
506
  *,
477
507
  __dataclass__cls,
@@ -496,7 +526,7 @@ def _process_dataclass__46b21a57c7f935afb031452a3d30815129505ec6():
496
526
  raise TypeError(self)
497
527
  return __dataclass__cls( # noqa
498
528
  name=self.name,
499
- args=self.args,
529
+ expr=self.expr,
500
530
  )
501
531
 
502
532
  __copy__.__qualname__ = f"{__dataclass__cls.__qualname__}.__copy__"
@@ -511,7 +541,7 @@ def _process_dataclass__46b21a57c7f935afb031452a3d30815129505ec6():
511
541
  return NotImplemented
512
542
  return (
513
543
  self.name == other.name and
514
- self.args == other.args
544
+ self.expr == other.expr
515
545
  )
516
546
 
517
547
  __eq__.__qualname__ = f"{__dataclass__cls.__qualname__}.__eq__"
@@ -521,7 +551,7 @@ def _process_dataclass__46b21a57c7f935afb031452a3d30815129505ec6():
521
551
 
522
552
  __dataclass___setattr_frozen_fields = {
523
553
  'name',
524
- 'args',
554
+ 'expr',
525
555
  }
526
556
 
527
557
  def __setattr__(self, name, value):
@@ -539,7 +569,7 @@ def _process_dataclass__46b21a57c7f935afb031452a3d30815129505ec6():
539
569
 
540
570
  __dataclass___delattr_frozen_fields = {
541
571
  'name',
542
- 'args',
572
+ 'expr',
543
573
  }
544
574
 
545
575
  def __delattr__(self, name):
@@ -558,7 +588,7 @@ def _process_dataclass__46b21a57c7f935afb031452a3d30815129505ec6():
558
588
  def __hash__(self):
559
589
  return hash((
560
590
  self.name,
561
- self.args,
591
+ self.expr,
562
592
  ))
563
593
 
564
594
  __hash__.__qualname__ = f"{__dataclass__cls.__qualname__}.__hash__"
@@ -567,10 +597,10 @@ def _process_dataclass__46b21a57c7f935afb031452a3d30815129505ec6():
567
597
  def __init__(
568
598
  self,
569
599
  name: __dataclass__init__fields__0__annotation,
570
- args: __dataclass__init__fields__1__annotation,
600
+ expr: __dataclass__init__fields__1__annotation,
571
601
  ) -> __dataclass__None:
572
602
  __dataclass__object_setattr(self, 'name', name)
573
- __dataclass__object_setattr(self, 'args', args)
603
+ __dataclass__object_setattr(self, 'expr', expr)
574
604
 
575
605
  __init__.__qualname__ = f"{__dataclass__cls.__qualname__}.__init__"
576
606
  if '__init__' in __dataclass__cls.__dict__:
@@ -581,7 +611,7 @@ def _process_dataclass__46b21a57c7f935afb031452a3d30815129505ec6():
581
611
  def __repr__(self):
582
612
  parts = []
583
613
  parts.append(f"name={self.name!r}")
584
- parts.append(f"args={self.args!r}")
614
+ parts.append(f"expr={self.expr!r}")
585
615
  return (
586
616
  f"{self.__class__.__qualname__}("
587
617
  f"{', '.join(parts)}"
@@ -598,27 +628,36 @@ def _process_dataclass__46b21a57c7f935afb031452a3d30815129505ec6():
598
628
 
599
629
  @_register(
600
630
  plan_repr=(
601
- "Plans(tup=(CopyPlan(fields=('index',)), EqPlan(fields=('index',)), FrozenPlan(fields=('index',), allow_dynamic"
602
- "_dunder_attrs=False), HashPlan(action='add', fields=('index',), cache=False), InitPlan(fields=(InitPlan.Field("
603
- "name='index', annotation=OpRef(name='init.fields.0.annotation'), default=None, default_factory=None, init=True"
604
- ", override=False, field_type=FieldType.INSTANCE, coerce=None, validate=None, check_type=None),), self_param='s"
605
- "elf', std_params=('index',), kw_only_params=(), frozen=True, slots=False, post_init_params=None, init_fns=(), "
606
- "validate_fns=()), ReprPlan(fields=(ReprPlan.Field(name='index', kw_only=False, fn=None),), id=False, terse=Fal"
607
- "se, default_fn=None)))"
631
+ "Plans(tup=(CopyPlan(fields=('name', 'first', 'second')), EqPlan(fields=('name', 'first', 'second')), FrozenPla"
632
+ "n(fields=('name', 'first', 'second'), allow_dynamic_dunder_attrs=False), HashPlan(action='add', fields=('name'"
633
+ ", 'first', 'second'), cache=False), InitPlan(fields=(InitPlan.Field(name='name', annotation=OpRef(name='init.f"
634
+ "ields.0.annotation'), default=None, default_factory=None, init=True, override=False, field_type=FieldType.INST"
635
+ "ANCE, coerce=None, validate=None, check_type=None), InitPlan.Field(name='first', annotation=OpRef(name='init.f"
636
+ "ields.1.annotation'), default=None, default_factory=None, init=True, override=False, field_type=FieldType.INST"
637
+ "ANCE, coerce=None, validate=None, check_type=None), InitPlan.Field(name='second', annotation=OpRef(name='init."
638
+ "fields.2.annotation'), default=None, default_factory=None, init=True, override=False, field_type=FieldType.INS"
639
+ "TANCE, coerce=None, validate=None, check_type=None)), self_param='self', std_params=('name', 'first', 'second'"
640
+ "), kw_only_params=(), frozen=True, slots=False, post_init_params=None, init_fns=(), validate_fns=()), ReprPlan"
641
+ "(fields=(ReprPlan.Field(name='name', kw_only=False, fn=None), ReprPlan.Field(name='first', kw_only=False, fn=N"
642
+ "one), ReprPlan.Field(name='second', kw_only=False, fn=None)), id=False, terse=False, default_fn=None)))"
608
643
  ),
609
- plan_repr_sha1='58d0143ed6bbec74538c3af1d493d5b4f36423f2',
644
+ plan_repr_sha1='17f73a891c5ca759d782b4a50d841d4e19830e44',
610
645
  op_ref_idents=(
611
646
  '__dataclass__init__fields__0__annotation',
647
+ '__dataclass__init__fields__1__annotation',
648
+ '__dataclass__init__fields__2__annotation',
612
649
  ),
613
650
  cls_names=(
614
- ('omlish.specs.jmespath', 'Index'),
651
+ ('omlish.specs.jmespath', 'Comparator'),
615
652
  ),
616
653
  )
617
- def _process_dataclass__58d0143ed6bbec74538c3af1d493d5b4f36423f2():
654
+ def _process_dataclass__17f73a891c5ca759d782b4a50d841d4e19830e44():
618
655
  def _process_dataclass(
619
656
  *,
620
657
  __dataclass__cls,
621
658
  __dataclass__init__fields__0__annotation,
659
+ __dataclass__init__fields__1__annotation,
660
+ __dataclass__init__fields__2__annotation,
622
661
  __dataclass__FieldFnValidationError, # noqa
623
662
  __dataclass__FieldTypeValidationError, # noqa
624
663
  __dataclass__FnValidationError, # noqa
@@ -637,7 +676,9 @@ def _process_dataclass__58d0143ed6bbec74538c3af1d493d5b4f36423f2():
637
676
  if self.__class__ is not __dataclass__cls:
638
677
  raise TypeError(self)
639
678
  return __dataclass__cls( # noqa
640
- index=self.index,
679
+ name=self.name,
680
+ first=self.first,
681
+ second=self.second,
641
682
  )
642
683
 
643
684
  __copy__.__qualname__ = f"{__dataclass__cls.__qualname__}.__copy__"
@@ -651,7 +692,9 @@ def _process_dataclass__58d0143ed6bbec74538c3af1d493d5b4f36423f2():
651
692
  if self.__class__ is not other.__class__:
652
693
  return NotImplemented
653
694
  return (
654
- self.index == other.index
695
+ self.name == other.name and
696
+ self.first == other.first and
697
+ self.second == other.second
655
698
  )
656
699
 
657
700
  __eq__.__qualname__ = f"{__dataclass__cls.__qualname__}.__eq__"
@@ -660,7 +703,9 @@ def _process_dataclass__58d0143ed6bbec74538c3af1d493d5b4f36423f2():
660
703
  setattr(__dataclass__cls, '__eq__', __eq__)
661
704
 
662
705
  __dataclass___setattr_frozen_fields = {
663
- 'index',
706
+ 'name',
707
+ 'first',
708
+ 'second',
664
709
  }
665
710
 
666
711
  def __setattr__(self, name, value):
@@ -677,9 +722,11 @@ def _process_dataclass__58d0143ed6bbec74538c3af1d493d5b4f36423f2():
677
722
  setattr(__dataclass__cls, '__setattr__', __setattr__)
678
723
 
679
724
  __dataclass___delattr_frozen_fields = {
680
- 'index',
681
- }
682
-
725
+ 'name',
726
+ 'first',
727
+ 'second',
728
+ }
729
+
683
730
  def __delattr__(self, name):
684
731
  if (
685
732
  type(self) is __dataclass__cls
@@ -695,7 +742,9 @@ def _process_dataclass__58d0143ed6bbec74538c3af1d493d5b4f36423f2():
695
742
 
696
743
  def __hash__(self):
697
744
  return hash((
698
- self.index,
745
+ self.name,
746
+ self.first,
747
+ self.second,
699
748
  ))
700
749
 
701
750
  __hash__.__qualname__ = f"{__dataclass__cls.__qualname__}.__hash__"
@@ -703,9 +752,13 @@ def _process_dataclass__58d0143ed6bbec74538c3af1d493d5b4f36423f2():
703
752
 
704
753
  def __init__(
705
754
  self,
706
- index: __dataclass__init__fields__0__annotation,
755
+ name: __dataclass__init__fields__0__annotation,
756
+ first: __dataclass__init__fields__1__annotation,
757
+ second: __dataclass__init__fields__2__annotation,
707
758
  ) -> __dataclass__None:
708
- __dataclass__object_setattr(self, 'index', index)
759
+ __dataclass__object_setattr(self, 'name', name)
760
+ __dataclass__object_setattr(self, 'first', first)
761
+ __dataclass__object_setattr(self, 'second', second)
709
762
 
710
763
  __init__.__qualname__ = f"{__dataclass__cls.__qualname__}.__init__"
711
764
  if '__init__' in __dataclass__cls.__dict__:
@@ -715,7 +768,9 @@ def _process_dataclass__58d0143ed6bbec74538c3af1d493d5b4f36423f2():
715
768
  @__dataclass___recursive_repr()
716
769
  def __repr__(self):
717
770
  parts = []
718
- parts.append(f"index={self.index!r}")
771
+ parts.append(f"name={self.name!r}")
772
+ parts.append(f"first={self.first!r}")
773
+ parts.append(f"second={self.second!r}")
719
774
  return (
720
775
  f"{self.__class__.__qualname__}("
721
776
  f"{', '.join(parts)}"
@@ -732,32 +787,25 @@ def _process_dataclass__58d0143ed6bbec74538c3af1d493d5b4f36423f2():
732
787
 
733
788
  @_register(
734
789
  plan_repr=(
735
- "Plans(tup=(CopyPlan(fields=('key_name', 'node')), EqPlan(fields=('key_name', 'node')), FrozenPlan(fields=('key"
736
- "_name', 'node'), allow_dynamic_dunder_attrs=False), HashPlan(action='add', fields=('key_name', 'node'), cache="
737
- "False), InitPlan(fields=(InitPlan.Field(name='key_name', annotation=OpRef(name='init.fields.0.annotation'), de"
738
- "fault=None, default_factory=None, init=True, override=False, field_type=FieldType.INSTANCE, coerce=None, valid"
739
- "ate=None, check_type=None), InitPlan.Field(name='node', annotation=OpRef(name='init.fields.1.annotation'), def"
740
- "ault=None, default_factory=None, init=True, override=False, field_type=FieldType.INSTANCE, coerce=None, valida"
741
- "te=None, check_type=None)), self_param='self', std_params=('key_name', 'node'), kw_only_params=(), frozen=True"
742
- ", slots=False, post_init_params=None, init_fns=(), validate_fns=()), ReprPlan(fields=(ReprPlan.Field(name='key"
743
- "_name', kw_only=False, fn=None), ReprPlan.Field(name='node', kw_only=False, fn=None)), id=False, terse=False, "
744
- "default_fn=None)))"
745
- ),
746
- plan_repr_sha1='5c98f4baa29dbd0603b7dae82100421eaccc16c1',
747
- op_ref_idents=(
748
- '__dataclass__init__fields__0__annotation',
749
- '__dataclass__init__fields__1__annotation',
790
+ "Plans(tup=(CopyPlan(fields=()), EqPlan(fields=()), FrozenPlan(fields=(), allow_dynamic_dunder_attrs=False), Ha"
791
+ "shPlan(action='add', fields=(), cache=False), InitPlan(fields=(), self_param='self', std_params=(), kw_only_pa"
792
+ "rams=(), frozen=True, slots=False, post_init_params=None, init_fns=(), validate_fns=()), ReprPlan(fields=(), i"
793
+ "d=False, terse=False, default_fn=None)))"
750
794
  ),
795
+ plan_repr_sha1='e1f7edfe11f2b721d6a656c46e698fedc95461bb',
796
+ op_ref_idents=(),
751
797
  cls_names=(
752
- ('omlish.specs.jmespath', 'KeyValPair'),
798
+ ('omlish.specs.jmespath', 'CurrentNode'),
799
+ ('omlish.specs.jmespath', 'Identity'),
800
+ ('omlish.specs.jmespath', 'LeafNode'),
801
+ ('omlish.specs.jmespath', 'Node'),
802
+ ('omlish.specs.jmespath', 'RootNode'),
753
803
  ),
754
804
  )
755
- def _process_dataclass__5c98f4baa29dbd0603b7dae82100421eaccc16c1():
805
+ def _process_dataclass__e1f7edfe11f2b721d6a656c46e698fedc95461bb():
756
806
  def _process_dataclass(
757
807
  *,
758
808
  __dataclass__cls,
759
- __dataclass__init__fields__0__annotation,
760
- __dataclass__init__fields__1__annotation,
761
809
  __dataclass__FieldFnValidationError, # noqa
762
810
  __dataclass__FieldTypeValidationError, # noqa
763
811
  __dataclass__FnValidationError, # noqa
@@ -775,10 +823,7 @@ def _process_dataclass__5c98f4baa29dbd0603b7dae82100421eaccc16c1():
775
823
  def __copy__(self):
776
824
  if self.__class__ is not __dataclass__cls:
777
825
  raise TypeError(self)
778
- return __dataclass__cls( # noqa
779
- key_name=self.key_name,
780
- node=self.node,
781
- )
826
+ return __dataclass__cls() # noqa
782
827
 
783
828
  __copy__.__qualname__ = f"{__dataclass__cls.__qualname__}.__copy__"
784
829
  if '__copy__' in __dataclass__cls.__dict__:
@@ -790,25 +835,16 @@ def _process_dataclass__5c98f4baa29dbd0603b7dae82100421eaccc16c1():
790
835
  return True
791
836
  if self.__class__ is not other.__class__:
792
837
  return NotImplemented
793
- return (
794
- self.key_name == other.key_name and
795
- self.node == other.node
796
- )
838
+ return True
797
839
 
798
840
  __eq__.__qualname__ = f"{__dataclass__cls.__qualname__}.__eq__"
799
841
  if '__eq__' in __dataclass__cls.__dict__:
800
842
  raise __dataclass__TypeError(f"Cannot overwrite attribute __eq__ in class {__dataclass__cls.__name__}")
801
843
  setattr(__dataclass__cls, '__eq__', __eq__)
802
844
 
803
- __dataclass___setattr_frozen_fields = {
804
- 'key_name',
805
- 'node',
806
- }
807
-
808
845
  def __setattr__(self, name, value):
809
846
  if (
810
847
  type(self) is __dataclass__cls
811
- or name in __dataclass___setattr_frozen_fields
812
848
  ):
813
849
  raise __dataclass__FrozenInstanceError(f"cannot assign to field {name!r}")
814
850
  super(__dataclass__cls, self).__setattr__(name, value)
@@ -818,15 +854,9 @@ def _process_dataclass__5c98f4baa29dbd0603b7dae82100421eaccc16c1():
818
854
  raise __dataclass__TypeError(f"Cannot overwrite attribute __setattr__ in class {__dataclass__cls.__name__}")
819
855
  setattr(__dataclass__cls, '__setattr__', __setattr__)
820
856
 
821
- __dataclass___delattr_frozen_fields = {
822
- 'key_name',
823
- 'node',
824
- }
825
-
826
857
  def __delattr__(self, name):
827
858
  if (
828
859
  type(self) is __dataclass__cls
829
- or name in __dataclass___delattr_frozen_fields
830
860
  ):
831
861
  raise __dataclass__FrozenInstanceError(f"cannot delete field {name!r}")
832
862
  super(__dataclass__cls, self).__delattr__(name)
@@ -837,21 +867,15 @@ def _process_dataclass__5c98f4baa29dbd0603b7dae82100421eaccc16c1():
837
867
  setattr(__dataclass__cls, '__delattr__', __delattr__)
838
868
 
839
869
  def __hash__(self):
840
- return hash((
841
- self.key_name,
842
- self.node,
843
- ))
870
+ return hash(())
844
871
 
845
872
  __hash__.__qualname__ = f"{__dataclass__cls.__qualname__}.__hash__"
846
873
  setattr(__dataclass__cls, '__hash__', __hash__)
847
874
 
848
875
  def __init__(
849
876
  self,
850
- key_name: __dataclass__init__fields__0__annotation,
851
- node: __dataclass__init__fields__1__annotation,
852
877
  ) -> __dataclass__None:
853
- __dataclass__object_setattr(self, 'key_name', key_name)
854
- __dataclass__object_setattr(self, 'node', node)
878
+ pass
855
879
 
856
880
  __init__.__qualname__ = f"{__dataclass__cls.__qualname__}.__init__"
857
881
  if '__init__' in __dataclass__cls.__dict__:
@@ -861,8 +885,6 @@ def _process_dataclass__5c98f4baa29dbd0603b7dae82100421eaccc16c1():
861
885
  @__dataclass___recursive_repr()
862
886
  def __repr__(self):
863
887
  parts = []
864
- parts.append(f"key_name={self.key_name!r}")
865
- parts.append(f"node={self.node!r}")
866
888
  return (
867
889
  f"{self.__class__.__qualname__}("
868
890
  f"{', '.join(parts)}"
@@ -879,35 +901,27 @@ def _process_dataclass__5c98f4baa29dbd0603b7dae82100421eaccc16c1():
879
901
 
880
902
  @_register(
881
903
  plan_repr=(
882
- "Plans(tup=(CopyPlan(fields=('left', 'right')), EqPlan(fields=('left', 'right')), FrozenPlan(fields=('left', 'r"
883
- "ight'), allow_dynamic_dunder_attrs=False), HashPlan(action='add', fields=('left', 'right'), cache=False), Init"
884
- "Plan(fields=(InitPlan.Field(name='left', annotation=OpRef(name='init.fields.0.annotation'), default=None, defa"
885
- "ult_factory=None, init=True, override=False, field_type=FieldType.INSTANCE, coerce=None, validate=None, check_"
886
- "type=None), InitPlan.Field(name='right', annotation=OpRef(name='init.fields.1.annotation'), default=None, defa"
887
- "ult_factory=None, init=True, override=False, field_type=FieldType.INSTANCE, coerce=None, validate=None, check_"
888
- "type=None)), self_param='self', std_params=('left', 'right'), kw_only_params=(), frozen=True, slots=False, pos"
889
- "t_init_params=None, init_fns=(), validate_fns=()), ReprPlan(fields=(ReprPlan.Field(name='left', kw_only=False,"
890
- " fn=None), ReprPlan.Field(name='right', kw_only=False, fn=None)), id=False, terse=False, default_fn=None)))"
904
+ "Plans(tup=(CopyPlan(fields=('expression',)), EqPlan(fields=('expression',)), FrozenPlan(fields=('expression',)"
905
+ ", allow_dynamic_dunder_attrs=False), HashPlan(action='add', fields=('expression',), cache=False), InitPlan(fie"
906
+ "lds=(InitPlan.Field(name='expression', annotation=OpRef(name='init.fields.0.annotation'), default=None, defaul"
907
+ "t_factory=None, init=True, override=False, field_type=FieldType.INSTANCE, coerce=None, validate=None, check_ty"
908
+ "pe=None),), self_param='self', std_params=('expression',), kw_only_params=(), frozen=True, slots=False, post_i"
909
+ "nit_params=None, init_fns=(), validate_fns=()), ReprPlan(fields=(ReprPlan.Field(name='expression', kw_only=Fal"
910
+ "se, fn=None),), id=False, terse=False, default_fn=None)))"
891
911
  ),
892
- plan_repr_sha1='683a8fba51ac0aaee8d49314879ce436e8ee2d3b',
912
+ plan_repr_sha1='88b2bcfae28e19661d346bbf4c87a846e786b0ea',
893
913
  op_ref_idents=(
894
914
  '__dataclass__init__fields__0__annotation',
895
- '__dataclass__init__fields__1__annotation',
896
915
  ),
897
916
  cls_names=(
898
- ('omlish.specs.jmespath', 'AndExpression'),
899
- ('omlish.specs.jmespath', 'OrExpression'),
900
- ('omlish.specs.jmespath', 'Pipe'),
901
- ('omlish.specs.jmespath', 'Projection'),
902
- ('omlish.specs.jmespath', 'ValueProjection'),
917
+ ('omlish.specs.jmespath', 'Expref'),
903
918
  ),
904
919
  )
905
- def _process_dataclass__683a8fba51ac0aaee8d49314879ce436e8ee2d3b():
920
+ def _process_dataclass__88b2bcfae28e19661d346bbf4c87a846e786b0ea():
906
921
  def _process_dataclass(
907
922
  *,
908
923
  __dataclass__cls,
909
924
  __dataclass__init__fields__0__annotation,
910
- __dataclass__init__fields__1__annotation,
911
925
  __dataclass__FieldFnValidationError, # noqa
912
926
  __dataclass__FieldTypeValidationError, # noqa
913
927
  __dataclass__FnValidationError, # noqa
@@ -926,8 +940,7 @@ def _process_dataclass__683a8fba51ac0aaee8d49314879ce436e8ee2d3b():
926
940
  if self.__class__ is not __dataclass__cls:
927
941
  raise TypeError(self)
928
942
  return __dataclass__cls( # noqa
929
- left=self.left,
930
- right=self.right,
943
+ expression=self.expression,
931
944
  )
932
945
 
933
946
  __copy__.__qualname__ = f"{__dataclass__cls.__qualname__}.__copy__"
@@ -941,8 +954,7 @@ def _process_dataclass__683a8fba51ac0aaee8d49314879ce436e8ee2d3b():
941
954
  if self.__class__ is not other.__class__:
942
955
  return NotImplemented
943
956
  return (
944
- self.left == other.left and
945
- self.right == other.right
957
+ self.expression == other.expression
946
958
  )
947
959
 
948
960
  __eq__.__qualname__ = f"{__dataclass__cls.__qualname__}.__eq__"
@@ -951,8 +963,7 @@ def _process_dataclass__683a8fba51ac0aaee8d49314879ce436e8ee2d3b():
951
963
  setattr(__dataclass__cls, '__eq__', __eq__)
952
964
 
953
965
  __dataclass___setattr_frozen_fields = {
954
- 'left',
955
- 'right',
966
+ 'expression',
956
967
  }
957
968
 
958
969
  def __setattr__(self, name, value):
@@ -969,8 +980,7 @@ def _process_dataclass__683a8fba51ac0aaee8d49314879ce436e8ee2d3b():
969
980
  setattr(__dataclass__cls, '__setattr__', __setattr__)
970
981
 
971
982
  __dataclass___delattr_frozen_fields = {
972
- 'left',
973
- 'right',
983
+ 'expression',
974
984
  }
975
985
 
976
986
  def __delattr__(self, name):
@@ -988,8 +998,7 @@ def _process_dataclass__683a8fba51ac0aaee8d49314879ce436e8ee2d3b():
988
998
 
989
999
  def __hash__(self):
990
1000
  return hash((
991
- self.left,
992
- self.right,
1001
+ self.expression,
993
1002
  ))
994
1003
 
995
1004
  __hash__.__qualname__ = f"{__dataclass__cls.__qualname__}.__hash__"
@@ -997,11 +1006,9 @@ def _process_dataclass__683a8fba51ac0aaee8d49314879ce436e8ee2d3b():
997
1006
 
998
1007
  def __init__(
999
1008
  self,
1000
- left: __dataclass__init__fields__0__annotation,
1001
- right: __dataclass__init__fields__1__annotation,
1009
+ expression: __dataclass__init__fields__0__annotation,
1002
1010
  ) -> __dataclass__None:
1003
- __dataclass__object_setattr(self, 'left', left)
1004
- __dataclass__object_setattr(self, 'right', right)
1011
+ __dataclass__object_setattr(self, 'expression', expression)
1005
1012
 
1006
1013
  __init__.__qualname__ = f"{__dataclass__cls.__qualname__}.__init__"
1007
1014
  if '__init__' in __dataclass__cls.__dict__:
@@ -1011,8 +1018,7 @@ def _process_dataclass__683a8fba51ac0aaee8d49314879ce436e8ee2d3b():
1011
1018
  @__dataclass___recursive_repr()
1012
1019
  def __repr__(self):
1013
1020
  parts = []
1014
- parts.append(f"left={self.left!r}")
1015
- parts.append(f"right={self.right!r}")
1021
+ parts.append(f"expression={self.expression!r}")
1016
1022
  return (
1017
1023
  f"{self.__class__.__qualname__}("
1018
1024
  f"{', '.join(parts)}"
@@ -1029,23 +1035,24 @@ def _process_dataclass__683a8fba51ac0aaee8d49314879ce436e8ee2d3b():
1029
1035
 
1030
1036
  @_register(
1031
1037
  plan_repr=(
1032
- "Plans(tup=(CopyPlan(fields=('literal_value',)), EqPlan(fields=('literal_value',)), FrozenPlan(fields=('literal"
1033
- "_value',), allow_dynamic_dunder_attrs=False), HashPlan(action='add', fields=('literal_value',), cache=False), "
1034
- "InitPlan(fields=(InitPlan.Field(name='literal_value', annotation=OpRef(name='init.fields.0.annotation'), defau"
1035
- "lt=None, default_factory=None, init=True, override=False, field_type=FieldType.INSTANCE, coerce=None, validate"
1036
- "=None, check_type=None),), self_param='self', std_params=('literal_value',), kw_only_params=(), frozen=True, s"
1037
- "lots=False, post_init_params=None, init_fns=(), validate_fns=()), ReprPlan(fields=(ReprPlan.Field(name='litera"
1038
- "l_value', kw_only=False, fn=None),), id=False, terse=False, default_fn=None)))"
1038
+ "Plans(tup=(CopyPlan(fields=('name',)), EqPlan(fields=('name',)), FrozenPlan(fields=('name',), allow_dynamic_du"
1039
+ "nder_attrs=False), HashPlan(action='add', fields=('name',), cache=False), InitPlan(fields=(InitPlan.Field(name"
1040
+ "='name', annotation=OpRef(name='init.fields.0.annotation'), default=None, default_factory=None, init=True, ove"
1041
+ "rride=False, field_type=FieldType.INSTANCE, coerce=None, validate=None, check_type=None),), self_param='self',"
1042
+ " std_params=('name',), kw_only_params=(), frozen=True, slots=False, post_init_params=None, init_fns=(), valida"
1043
+ "te_fns=()), ReprPlan(fields=(ReprPlan.Field(name='name', kw_only=False, fn=None),), id=False, terse=False, def"
1044
+ "ault_fn=None)))"
1039
1045
  ),
1040
- plan_repr_sha1='84f3ffbf073b3ca8957fd80ce73aa63d4e81555d',
1046
+ plan_repr_sha1='a8c678a92ec79b6aa505feedefe70ee7fef92ccd',
1041
1047
  op_ref_idents=(
1042
1048
  '__dataclass__init__fields__0__annotation',
1043
1049
  ),
1044
1050
  cls_names=(
1045
- ('omlish.specs.jmespath', 'Literal'),
1051
+ ('omlish.specs.jmespath', 'Field'),
1052
+ ('omlish.specs.jmespath', 'VariableRef'),
1046
1053
  ),
1047
1054
  )
1048
- def _process_dataclass__84f3ffbf073b3ca8957fd80ce73aa63d4e81555d():
1055
+ def _process_dataclass__a8c678a92ec79b6aa505feedefe70ee7fef92ccd():
1049
1056
  def _process_dataclass(
1050
1057
  *,
1051
1058
  __dataclass__cls,
@@ -1068,7 +1075,7 @@ def _process_dataclass__84f3ffbf073b3ca8957fd80ce73aa63d4e81555d():
1068
1075
  if self.__class__ is not __dataclass__cls:
1069
1076
  raise TypeError(self)
1070
1077
  return __dataclass__cls( # noqa
1071
- literal_value=self.literal_value,
1078
+ name=self.name,
1072
1079
  )
1073
1080
 
1074
1081
  __copy__.__qualname__ = f"{__dataclass__cls.__qualname__}.__copy__"
@@ -1082,7 +1089,7 @@ def _process_dataclass__84f3ffbf073b3ca8957fd80ce73aa63d4e81555d():
1082
1089
  if self.__class__ is not other.__class__:
1083
1090
  return NotImplemented
1084
1091
  return (
1085
- self.literal_value == other.literal_value
1092
+ self.name == other.name
1086
1093
  )
1087
1094
 
1088
1095
  __eq__.__qualname__ = f"{__dataclass__cls.__qualname__}.__eq__"
@@ -1091,7 +1098,7 @@ def _process_dataclass__84f3ffbf073b3ca8957fd80ce73aa63d4e81555d():
1091
1098
  setattr(__dataclass__cls, '__eq__', __eq__)
1092
1099
 
1093
1100
  __dataclass___setattr_frozen_fields = {
1094
- 'literal_value',
1101
+ 'name',
1095
1102
  }
1096
1103
 
1097
1104
  def __setattr__(self, name, value):
@@ -1108,7 +1115,7 @@ def _process_dataclass__84f3ffbf073b3ca8957fd80ce73aa63d4e81555d():
1108
1115
  setattr(__dataclass__cls, '__setattr__', __setattr__)
1109
1116
 
1110
1117
  __dataclass___delattr_frozen_fields = {
1111
- 'literal_value',
1118
+ 'name',
1112
1119
  }
1113
1120
 
1114
1121
  def __delattr__(self, name):
@@ -1126,7 +1133,7 @@ def _process_dataclass__84f3ffbf073b3ca8957fd80ce73aa63d4e81555d():
1126
1133
 
1127
1134
  def __hash__(self):
1128
1135
  return hash((
1129
- self.literal_value,
1136
+ self.name,
1130
1137
  ))
1131
1138
 
1132
1139
  __hash__.__qualname__ = f"{__dataclass__cls.__qualname__}.__hash__"
@@ -1134,9 +1141,9 @@ def _process_dataclass__84f3ffbf073b3ca8957fd80ce73aa63d4e81555d():
1134
1141
 
1135
1142
  def __init__(
1136
1143
  self,
1137
- literal_value: __dataclass__init__fields__0__annotation,
1144
+ name: __dataclass__init__fields__0__annotation,
1138
1145
  ) -> __dataclass__None:
1139
- __dataclass__object_setattr(self, 'literal_value', literal_value)
1146
+ __dataclass__object_setattr(self, 'name', name)
1140
1147
 
1141
1148
  __init__.__qualname__ = f"{__dataclass__cls.__qualname__}.__init__"
1142
1149
  if '__init__' in __dataclass__cls.__dict__:
@@ -1146,7 +1153,7 @@ def _process_dataclass__84f3ffbf073b3ca8957fd80ce73aa63d4e81555d():
1146
1153
  @__dataclass___recursive_repr()
1147
1154
  def __repr__(self):
1148
1155
  parts = []
1149
- parts.append(f"literal_value={self.literal_value!r}")
1156
+ parts.append(f"name={self.name!r}")
1150
1157
  return (
1151
1158
  f"{self.__class__.__qualname__}("
1152
1159
  f"{', '.join(parts)}"
@@ -1163,27 +1170,37 @@ def _process_dataclass__84f3ffbf073b3ca8957fd80ce73aa63d4e81555d():
1163
1170
 
1164
1171
  @_register(
1165
1172
  plan_repr=(
1166
- "Plans(tup=(CopyPlan(fields=('expression',)), EqPlan(fields=('expression',)), FrozenPlan(fields=('expression',)"
1167
- ", allow_dynamic_dunder_attrs=False), HashPlan(action='add', fields=('expression',), cache=False), InitPlan(fie"
1168
- "lds=(InitPlan.Field(name='expression', annotation=OpRef(name='init.fields.0.annotation'), default=None, defaul"
1169
- "t_factory=None, init=True, override=False, field_type=FieldType.INSTANCE, coerce=None, validate=None, check_ty"
1170
- "pe=None),), self_param='self', std_params=('expression',), kw_only_params=(), frozen=True, slots=False, post_i"
1171
- "nit_params=None, init_fns=(), validate_fns=()), ReprPlan(fields=(ReprPlan.Field(name='expression', kw_only=Fal"
1172
- "se, fn=None),), id=False, terse=False, default_fn=None)))"
1173
+ "Plans(tup=(CopyPlan(fields=('left', 'right', 'comparator')), EqPlan(fields=('left', 'right', 'comparator')), F"
1174
+ "rozenPlan(fields=('left', 'right', 'comparator'), allow_dynamic_dunder_attrs=False), HashPlan(action='add', fi"
1175
+ "elds=('left', 'right', 'comparator'), cache=False), InitPlan(fields=(InitPlan.Field(name='left', annotation=Op"
1176
+ "Ref(name='init.fields.0.annotation'), default=None, default_factory=None, init=True, override=False, field_typ"
1177
+ "e=FieldType.INSTANCE, coerce=None, validate=None, check_type=None), InitPlan.Field(name='right', annotation=Op"
1178
+ "Ref(name='init.fields.1.annotation'), default=None, default_factory=None, init=True, override=False, field_typ"
1179
+ "e=FieldType.INSTANCE, coerce=None, validate=None, check_type=None), InitPlan.Field(name='comparator', annotati"
1180
+ "on=OpRef(name='init.fields.2.annotation'), default=None, default_factory=None, init=True, override=False, fiel"
1181
+ "d_type=FieldType.INSTANCE, coerce=None, validate=None, check_type=None)), self_param='self', std_params=('left"
1182
+ "', 'right', 'comparator'), kw_only_params=(), frozen=True, slots=False, post_init_params=None, init_fns=(), va"
1183
+ "lidate_fns=()), ReprPlan(fields=(ReprPlan.Field(name='left', kw_only=False, fn=None), ReprPlan.Field(name='rig"
1184
+ "ht', kw_only=False, fn=None), ReprPlan.Field(name='comparator', kw_only=False, fn=None)), id=False, terse=Fals"
1185
+ "e, default_fn=None)))"
1173
1186
  ),
1174
- plan_repr_sha1='88b2bcfae28e19661d346bbf4c87a846e786b0ea',
1187
+ plan_repr_sha1='ee40fd21fce658ecb8d6c4a236c24880e69abc90',
1175
1188
  op_ref_idents=(
1176
1189
  '__dataclass__init__fields__0__annotation',
1190
+ '__dataclass__init__fields__1__annotation',
1191
+ '__dataclass__init__fields__2__annotation',
1177
1192
  ),
1178
1193
  cls_names=(
1179
- ('omlish.specs.jmespath', 'Expref'),
1194
+ ('omlish.specs.jmespath', 'FilterProjection'),
1180
1195
  ),
1181
1196
  )
1182
- def _process_dataclass__88b2bcfae28e19661d346bbf4c87a846e786b0ea():
1197
+ def _process_dataclass__ee40fd21fce658ecb8d6c4a236c24880e69abc90():
1183
1198
  def _process_dataclass(
1184
1199
  *,
1185
1200
  __dataclass__cls,
1186
1201
  __dataclass__init__fields__0__annotation,
1202
+ __dataclass__init__fields__1__annotation,
1203
+ __dataclass__init__fields__2__annotation,
1187
1204
  __dataclass__FieldFnValidationError, # noqa
1188
1205
  __dataclass__FieldTypeValidationError, # noqa
1189
1206
  __dataclass__FnValidationError, # noqa
@@ -1202,7 +1219,9 @@ def _process_dataclass__88b2bcfae28e19661d346bbf4c87a846e786b0ea():
1202
1219
  if self.__class__ is not __dataclass__cls:
1203
1220
  raise TypeError(self)
1204
1221
  return __dataclass__cls( # noqa
1205
- expression=self.expression,
1222
+ left=self.left,
1223
+ right=self.right,
1224
+ comparator=self.comparator,
1206
1225
  )
1207
1226
 
1208
1227
  __copy__.__qualname__ = f"{__dataclass__cls.__qualname__}.__copy__"
@@ -1216,7 +1235,9 @@ def _process_dataclass__88b2bcfae28e19661d346bbf4c87a846e786b0ea():
1216
1235
  if self.__class__ is not other.__class__:
1217
1236
  return NotImplemented
1218
1237
  return (
1219
- self.expression == other.expression
1238
+ self.left == other.left and
1239
+ self.right == other.right and
1240
+ self.comparator == other.comparator
1220
1241
  )
1221
1242
 
1222
1243
  __eq__.__qualname__ = f"{__dataclass__cls.__qualname__}.__eq__"
@@ -1225,7 +1246,9 @@ def _process_dataclass__88b2bcfae28e19661d346bbf4c87a846e786b0ea():
1225
1246
  setattr(__dataclass__cls, '__eq__', __eq__)
1226
1247
 
1227
1248
  __dataclass___setattr_frozen_fields = {
1228
- 'expression',
1249
+ 'left',
1250
+ 'right',
1251
+ 'comparator',
1229
1252
  }
1230
1253
 
1231
1254
  def __setattr__(self, name, value):
@@ -1242,7 +1265,9 @@ def _process_dataclass__88b2bcfae28e19661d346bbf4c87a846e786b0ea():
1242
1265
  setattr(__dataclass__cls, '__setattr__', __setattr__)
1243
1266
 
1244
1267
  __dataclass___delattr_frozen_fields = {
1245
- 'expression',
1268
+ 'left',
1269
+ 'right',
1270
+ 'comparator',
1246
1271
  }
1247
1272
 
1248
1273
  def __delattr__(self, name):
@@ -1260,7 +1285,9 @@ def _process_dataclass__88b2bcfae28e19661d346bbf4c87a846e786b0ea():
1260
1285
 
1261
1286
  def __hash__(self):
1262
1287
  return hash((
1263
- self.expression,
1288
+ self.left,
1289
+ self.right,
1290
+ self.comparator,
1264
1291
  ))
1265
1292
 
1266
1293
  __hash__.__qualname__ = f"{__dataclass__cls.__qualname__}.__hash__"
@@ -1268,9 +1295,13 @@ def _process_dataclass__88b2bcfae28e19661d346bbf4c87a846e786b0ea():
1268
1295
 
1269
1296
  def __init__(
1270
1297
  self,
1271
- expression: __dataclass__init__fields__0__annotation,
1298
+ left: __dataclass__init__fields__0__annotation,
1299
+ right: __dataclass__init__fields__1__annotation,
1300
+ comparator: __dataclass__init__fields__2__annotation,
1272
1301
  ) -> __dataclass__None:
1273
- __dataclass__object_setattr(self, 'expression', expression)
1302
+ __dataclass__object_setattr(self, 'left', left)
1303
+ __dataclass__object_setattr(self, 'right', right)
1304
+ __dataclass__object_setattr(self, 'comparator', comparator)
1274
1305
 
1275
1306
  __init__.__qualname__ = f"{__dataclass__cls.__qualname__}.__init__"
1276
1307
  if '__init__' in __dataclass__cls.__dict__:
@@ -1280,7 +1311,9 @@ def _process_dataclass__88b2bcfae28e19661d346bbf4c87a846e786b0ea():
1280
1311
  @__dataclass___recursive_repr()
1281
1312
  def __repr__(self):
1282
1313
  parts = []
1283
- parts.append(f"expression={self.expression!r}")
1314
+ parts.append(f"left={self.left!r}")
1315
+ parts.append(f"right={self.right!r}")
1316
+ parts.append(f"comparator={self.comparator!r}")
1284
1317
  return (
1285
1318
  f"{self.__class__.__qualname__}("
1286
1319
  f"{', '.join(parts)}"
@@ -1297,25 +1330,23 @@ def _process_dataclass__88b2bcfae28e19661d346bbf4c87a846e786b0ea():
1297
1330
 
1298
1331
  @_register(
1299
1332
  plan_repr=(
1300
- "Plans(tup=(CopyPlan(fields=('nodes',)), EqPlan(fields=('nodes',)), FrozenPlan(fields=('nodes',), allow_dynamic"
1301
- "_dunder_attrs=False), HashPlan(action='add', fields=('nodes',), cache=False), InitPlan(fields=(InitPlan.Field("
1302
- "name='nodes', annotation=OpRef(name='init.fields.0.annotation'), default=None, default_factory=None, init=True"
1303
- ", override=False, field_type=FieldType.INSTANCE, coerce=None, validate=None, check_type=None),), self_param='s"
1304
- "elf', std_params=('nodes',), kw_only_params=(), frozen=True, slots=False, post_init_params=None, init_fns=(), "
1305
- "validate_fns=()), ReprPlan(fields=(ReprPlan.Field(name='nodes', kw_only=False, fn=None),), id=False, terse=Fal"
1306
- "se, default_fn=None)))"
1333
+ "Plans(tup=(CopyPlan(fields=('node',)), EqPlan(fields=('node',)), FrozenPlan(fields=('node',), allow_dynamic_du"
1334
+ "nder_attrs=False), HashPlan(action='add', fields=('node',), cache=False), InitPlan(fields=(InitPlan.Field(name"
1335
+ "='node', annotation=OpRef(name='init.fields.0.annotation'), default=None, default_factory=None, init=True, ove"
1336
+ "rride=False, field_type=FieldType.INSTANCE, coerce=None, validate=None, check_type=None),), self_param='self',"
1337
+ " std_params=('node',), kw_only_params=(), frozen=True, slots=False, post_init_params=None, init_fns=(), valida"
1338
+ "te_fns=()), ReprPlan(fields=(ReprPlan.Field(name='node', kw_only=False, fn=None),), id=False, terse=False, def"
1339
+ "ault_fn=None)))"
1307
1340
  ),
1308
- plan_repr_sha1='95a04b516e507c6ca7803679cc697feffd03c2fe',
1341
+ plan_repr_sha1='04121723da73369a153101f1c1cd7d127fdcfad7',
1309
1342
  op_ref_idents=(
1310
1343
  '__dataclass__init__fields__0__annotation',
1311
1344
  ),
1312
1345
  cls_names=(
1313
- ('omlish.specs.jmespath', 'IndexExpression'),
1314
- ('omlish.specs.jmespath', 'MultiSelectDict'),
1315
- ('omlish.specs.jmespath', 'MultiSelectList'),
1346
+ ('omlish.specs.jmespath', 'Flatten'),
1316
1347
  ),
1317
1348
  )
1318
- def _process_dataclass__95a04b516e507c6ca7803679cc697feffd03c2fe():
1349
+ def _process_dataclass__04121723da73369a153101f1c1cd7d127fdcfad7():
1319
1350
  def _process_dataclass(
1320
1351
  *,
1321
1352
  __dataclass__cls,
@@ -1338,7 +1369,7 @@ def _process_dataclass__95a04b516e507c6ca7803679cc697feffd03c2fe():
1338
1369
  if self.__class__ is not __dataclass__cls:
1339
1370
  raise TypeError(self)
1340
1371
  return __dataclass__cls( # noqa
1341
- nodes=self.nodes,
1372
+ node=self.node,
1342
1373
  )
1343
1374
 
1344
1375
  __copy__.__qualname__ = f"{__dataclass__cls.__qualname__}.__copy__"
@@ -1352,7 +1383,7 @@ def _process_dataclass__95a04b516e507c6ca7803679cc697feffd03c2fe():
1352
1383
  if self.__class__ is not other.__class__:
1353
1384
  return NotImplemented
1354
1385
  return (
1355
- self.nodes == other.nodes
1386
+ self.node == other.node
1356
1387
  )
1357
1388
 
1358
1389
  __eq__.__qualname__ = f"{__dataclass__cls.__qualname__}.__eq__"
@@ -1361,7 +1392,7 @@ def _process_dataclass__95a04b516e507c6ca7803679cc697feffd03c2fe():
1361
1392
  setattr(__dataclass__cls, '__eq__', __eq__)
1362
1393
 
1363
1394
  __dataclass___setattr_frozen_fields = {
1364
- 'nodes',
1395
+ 'node',
1365
1396
  }
1366
1397
 
1367
1398
  def __setattr__(self, name, value):
@@ -1378,7 +1409,7 @@ def _process_dataclass__95a04b516e507c6ca7803679cc697feffd03c2fe():
1378
1409
  setattr(__dataclass__cls, '__setattr__', __setattr__)
1379
1410
 
1380
1411
  __dataclass___delattr_frozen_fields = {
1381
- 'nodes',
1412
+ 'node',
1382
1413
  }
1383
1414
 
1384
1415
  def __delattr__(self, name):
@@ -1396,7 +1427,7 @@ def _process_dataclass__95a04b516e507c6ca7803679cc697feffd03c2fe():
1396
1427
 
1397
1428
  def __hash__(self):
1398
1429
  return hash((
1399
- self.nodes,
1430
+ self.node,
1400
1431
  ))
1401
1432
 
1402
1433
  __hash__.__qualname__ = f"{__dataclass__cls.__qualname__}.__hash__"
@@ -1404,9 +1435,9 @@ def _process_dataclass__95a04b516e507c6ca7803679cc697feffd03c2fe():
1404
1435
 
1405
1436
  def __init__(
1406
1437
  self,
1407
- nodes: __dataclass__init__fields__0__annotation,
1438
+ node: __dataclass__init__fields__0__annotation,
1408
1439
  ) -> __dataclass__None:
1409
- __dataclass__object_setattr(self, 'nodes', nodes)
1440
+ __dataclass__object_setattr(self, 'node', node)
1410
1441
 
1411
1442
  __init__.__qualname__ = f"{__dataclass__cls.__qualname__}.__init__"
1412
1443
  if '__init__' in __dataclass__cls.__dict__:
@@ -1416,7 +1447,7 @@ def _process_dataclass__95a04b516e507c6ca7803679cc697feffd03c2fe():
1416
1447
  @__dataclass___recursive_repr()
1417
1448
  def __repr__(self):
1418
1449
  parts = []
1419
- parts.append(f"nodes={self.nodes!r}")
1450
+ parts.append(f"node={self.node!r}")
1420
1451
  return (
1421
1452
  f"{self.__class__.__qualname__}("
1422
1453
  f"{', '.join(parts)}"
@@ -1433,37 +1464,31 @@ def _process_dataclass__95a04b516e507c6ca7803679cc697feffd03c2fe():
1433
1464
 
1434
1465
  @_register(
1435
1466
  plan_repr=(
1436
- "Plans(tup=(CopyPlan(fields=('operator', 'left', 'right')), EqPlan(fields=('operator', 'left', 'right')), Froze"
1437
- "nPlan(fields=('operator', 'left', 'right'), allow_dynamic_dunder_attrs=False), HashPlan(action='add', fields=("
1438
- "'operator', 'left', 'right'), cache=False), InitPlan(fields=(InitPlan.Field(name='operator', annotation=OpRef("
1439
- "name='init.fields.0.annotation'), default=None, default_factory=None, init=True, override=False, field_type=Fi"
1440
- "eldType.INSTANCE, coerce=None, validate=None, check_type=None), InitPlan.Field(name='left', annotation=OpRef(n"
1441
- "ame='init.fields.1.annotation'), default=None, default_factory=None, init=True, override=False, field_type=Fie"
1442
- "ldType.INSTANCE, coerce=None, validate=None, check_type=None), InitPlan.Field(name='right', annotation=OpRef(n"
1443
- "ame='init.fields.2.annotation'), default=None, default_factory=None, init=True, override=False, field_type=Fie"
1444
- "ldType.INSTANCE, coerce=None, validate=None, check_type=None)), self_param='self', std_params=('operator', 'le"
1445
- "ft', 'right'), kw_only_params=(), frozen=True, slots=False, post_init_params=None, init_fns=(), validate_fns=("
1446
- ")), ReprPlan(fields=(ReprPlan.Field(name='operator', kw_only=False, fn=None), ReprPlan.Field(name='left', kw_o"
1447
- "nly=False, fn=None), ReprPlan.Field(name='right', kw_only=False, fn=None)), id=False, terse=False, default_fn="
1448
- "None)))"
1467
+ "Plans(tup=(CopyPlan(fields=('name', 'args')), EqPlan(fields=('name', 'args')), FrozenPlan(fields=('name', 'arg"
1468
+ "s'), allow_dynamic_dunder_attrs=False), HashPlan(action='add', fields=('name', 'args'), cache=False), InitPlan"
1469
+ "(fields=(InitPlan.Field(name='name', annotation=OpRef(name='init.fields.0.annotation'), default=None, default_"
1470
+ "factory=None, init=True, override=False, field_type=FieldType.INSTANCE, coerce=None, validate=None, check_type"
1471
+ "=None), InitPlan.Field(name='args', annotation=OpRef(name='init.fields.1.annotation'), default=None, default_f"
1472
+ "actory=None, init=True, override=False, field_type=FieldType.INSTANCE, coerce=None, validate=None, check_type="
1473
+ "None)), self_param='self', std_params=('name', 'args'), kw_only_params=(), frozen=True, slots=False, post_init"
1474
+ "_params=None, init_fns=(), validate_fns=()), ReprPlan(fields=(ReprPlan.Field(name='name', kw_only=False, fn=No"
1475
+ "ne), ReprPlan.Field(name='args', kw_only=False, fn=None)), id=False, terse=False, default_fn=None)))"
1449
1476
  ),
1450
- plan_repr_sha1='9ad32a9de77661d138040ae8b9ef479f313da67b',
1477
+ plan_repr_sha1='46b21a57c7f935afb031452a3d30815129505ec6',
1451
1478
  op_ref_idents=(
1452
1479
  '__dataclass__init__fields__0__annotation',
1453
1480
  '__dataclass__init__fields__1__annotation',
1454
- '__dataclass__init__fields__2__annotation',
1455
1481
  ),
1456
1482
  cls_names=(
1457
- ('omlish.specs.jmespath', 'Arithmetic'),
1483
+ ('omlish.specs.jmespath', 'FunctionExpression'),
1458
1484
  ),
1459
1485
  )
1460
- def _process_dataclass__9ad32a9de77661d138040ae8b9ef479f313da67b():
1486
+ def _process_dataclass__46b21a57c7f935afb031452a3d30815129505ec6():
1461
1487
  def _process_dataclass(
1462
1488
  *,
1463
1489
  __dataclass__cls,
1464
1490
  __dataclass__init__fields__0__annotation,
1465
1491
  __dataclass__init__fields__1__annotation,
1466
- __dataclass__init__fields__2__annotation,
1467
1492
  __dataclass__FieldFnValidationError, # noqa
1468
1493
  __dataclass__FieldTypeValidationError, # noqa
1469
1494
  __dataclass__FnValidationError, # noqa
@@ -1482,9 +1507,8 @@ def _process_dataclass__9ad32a9de77661d138040ae8b9ef479f313da67b():
1482
1507
  if self.__class__ is not __dataclass__cls:
1483
1508
  raise TypeError(self)
1484
1509
  return __dataclass__cls( # noqa
1485
- operator=self.operator,
1486
- left=self.left,
1487
- right=self.right,
1510
+ name=self.name,
1511
+ args=self.args,
1488
1512
  )
1489
1513
 
1490
1514
  __copy__.__qualname__ = f"{__dataclass__cls.__qualname__}.__copy__"
@@ -1498,9 +1522,8 @@ def _process_dataclass__9ad32a9de77661d138040ae8b9ef479f313da67b():
1498
1522
  if self.__class__ is not other.__class__:
1499
1523
  return NotImplemented
1500
1524
  return (
1501
- self.operator == other.operator and
1502
- self.left == other.left and
1503
- self.right == other.right
1525
+ self.name == other.name and
1526
+ self.args == other.args
1504
1527
  )
1505
1528
 
1506
1529
  __eq__.__qualname__ = f"{__dataclass__cls.__qualname__}.__eq__"
@@ -1509,9 +1532,8 @@ def _process_dataclass__9ad32a9de77661d138040ae8b9ef479f313da67b():
1509
1532
  setattr(__dataclass__cls, '__eq__', __eq__)
1510
1533
 
1511
1534
  __dataclass___setattr_frozen_fields = {
1512
- 'operator',
1513
- 'left',
1514
- 'right',
1535
+ 'name',
1536
+ 'args',
1515
1537
  }
1516
1538
 
1517
1539
  def __setattr__(self, name, value):
@@ -1528,9 +1550,8 @@ def _process_dataclass__9ad32a9de77661d138040ae8b9ef479f313da67b():
1528
1550
  setattr(__dataclass__cls, '__setattr__', __setattr__)
1529
1551
 
1530
1552
  __dataclass___delattr_frozen_fields = {
1531
- 'operator',
1532
- 'left',
1533
- 'right',
1553
+ 'name',
1554
+ 'args',
1534
1555
  }
1535
1556
 
1536
1557
  def __delattr__(self, name):
@@ -1548,9 +1569,8 @@ def _process_dataclass__9ad32a9de77661d138040ae8b9ef479f313da67b():
1548
1569
 
1549
1570
  def __hash__(self):
1550
1571
  return hash((
1551
- self.operator,
1552
- self.left,
1553
- self.right,
1572
+ self.name,
1573
+ self.args,
1554
1574
  ))
1555
1575
 
1556
1576
  __hash__.__qualname__ = f"{__dataclass__cls.__qualname__}.__hash__"
@@ -1558,13 +1578,11 @@ def _process_dataclass__9ad32a9de77661d138040ae8b9ef479f313da67b():
1558
1578
 
1559
1579
  def __init__(
1560
1580
  self,
1561
- operator: __dataclass__init__fields__0__annotation,
1562
- left: __dataclass__init__fields__1__annotation,
1563
- right: __dataclass__init__fields__2__annotation,
1581
+ name: __dataclass__init__fields__0__annotation,
1582
+ args: __dataclass__init__fields__1__annotation,
1564
1583
  ) -> __dataclass__None:
1565
- __dataclass__object_setattr(self, 'operator', operator)
1566
- __dataclass__object_setattr(self, 'left', left)
1567
- __dataclass__object_setattr(self, 'right', right)
1584
+ __dataclass__object_setattr(self, 'name', name)
1585
+ __dataclass__object_setattr(self, 'args', args)
1568
1586
 
1569
1587
  __init__.__qualname__ = f"{__dataclass__cls.__qualname__}.__init__"
1570
1588
  if '__init__' in __dataclass__cls.__dict__:
@@ -1574,9 +1592,8 @@ def _process_dataclass__9ad32a9de77661d138040ae8b9ef479f313da67b():
1574
1592
  @__dataclass___recursive_repr()
1575
1593
  def __repr__(self):
1576
1594
  parts = []
1577
- parts.append(f"operator={self.operator!r}")
1578
- parts.append(f"left={self.left!r}")
1579
- parts.append(f"right={self.right!r}")
1595
+ parts.append(f"name={self.name!r}")
1596
+ parts.append(f"args={self.args!r}")
1580
1597
  return (
1581
1598
  f"{self.__class__.__qualname__}("
1582
1599
  f"{', '.join(parts)}"
@@ -1593,24 +1610,23 @@ def _process_dataclass__9ad32a9de77661d138040ae8b9ef479f313da67b():
1593
1610
 
1594
1611
  @_register(
1595
1612
  plan_repr=(
1596
- "Plans(tup=(CopyPlan(fields=('name',)), EqPlan(fields=('name',)), FrozenPlan(fields=('name',), allow_dynamic_du"
1597
- "nder_attrs=False), HashPlan(action='add', fields=('name',), cache=False), InitPlan(fields=(InitPlan.Field(name"
1598
- "='name', annotation=OpRef(name='init.fields.0.annotation'), default=None, default_factory=None, init=True, ove"
1599
- "rride=False, field_type=FieldType.INSTANCE, coerce=None, validate=None, check_type=None),), self_param='self',"
1600
- " std_params=('name',), kw_only_params=(), frozen=True, slots=False, post_init_params=None, init_fns=(), valida"
1601
- "te_fns=()), ReprPlan(fields=(ReprPlan.Field(name='name', kw_only=False, fn=None),), id=False, terse=False, def"
1602
- "ault_fn=None)))"
1613
+ "Plans(tup=(CopyPlan(fields=('index',)), EqPlan(fields=('index',)), FrozenPlan(fields=('index',), allow_dynamic"
1614
+ "_dunder_attrs=False), HashPlan(action='add', fields=('index',), cache=False), InitPlan(fields=(InitPlan.Field("
1615
+ "name='index', annotation=OpRef(name='init.fields.0.annotation'), default=None, default_factory=None, init=True"
1616
+ ", override=False, field_type=FieldType.INSTANCE, coerce=None, validate=None, check_type=None),), self_param='s"
1617
+ "elf', std_params=('index',), kw_only_params=(), frozen=True, slots=False, post_init_params=None, init_fns=(), "
1618
+ "validate_fns=()), ReprPlan(fields=(ReprPlan.Field(name='index', kw_only=False, fn=None),), id=False, terse=Fal"
1619
+ "se, default_fn=None)))"
1603
1620
  ),
1604
- plan_repr_sha1='a8c678a92ec79b6aa505feedefe70ee7fef92ccd',
1621
+ plan_repr_sha1='58d0143ed6bbec74538c3af1d493d5b4f36423f2',
1605
1622
  op_ref_idents=(
1606
1623
  '__dataclass__init__fields__0__annotation',
1607
1624
  ),
1608
1625
  cls_names=(
1609
- ('omlish.specs.jmespath', 'Field'),
1610
- ('omlish.specs.jmespath', 'VariableRef'),
1626
+ ('omlish.specs.jmespath', 'Index'),
1611
1627
  ),
1612
1628
  )
1613
- def _process_dataclass__a8c678a92ec79b6aa505feedefe70ee7fef92ccd():
1629
+ def _process_dataclass__58d0143ed6bbec74538c3af1d493d5b4f36423f2():
1614
1630
  def _process_dataclass(
1615
1631
  *,
1616
1632
  __dataclass__cls,
@@ -1633,7 +1649,7 @@ def _process_dataclass__a8c678a92ec79b6aa505feedefe70ee7fef92ccd():
1633
1649
  if self.__class__ is not __dataclass__cls:
1634
1650
  raise TypeError(self)
1635
1651
  return __dataclass__cls( # noqa
1636
- name=self.name,
1652
+ index=self.index,
1637
1653
  )
1638
1654
 
1639
1655
  __copy__.__qualname__ = f"{__dataclass__cls.__qualname__}.__copy__"
@@ -1647,7 +1663,7 @@ def _process_dataclass__a8c678a92ec79b6aa505feedefe70ee7fef92ccd():
1647
1663
  if self.__class__ is not other.__class__:
1648
1664
  return NotImplemented
1649
1665
  return (
1650
- self.name == other.name
1666
+ self.index == other.index
1651
1667
  )
1652
1668
 
1653
1669
  __eq__.__qualname__ = f"{__dataclass__cls.__qualname__}.__eq__"
@@ -1656,7 +1672,7 @@ def _process_dataclass__a8c678a92ec79b6aa505feedefe70ee7fef92ccd():
1656
1672
  setattr(__dataclass__cls, '__eq__', __eq__)
1657
1673
 
1658
1674
  __dataclass___setattr_frozen_fields = {
1659
- 'name',
1675
+ 'index',
1660
1676
  }
1661
1677
 
1662
1678
  def __setattr__(self, name, value):
@@ -1673,7 +1689,7 @@ def _process_dataclass__a8c678a92ec79b6aa505feedefe70ee7fef92ccd():
1673
1689
  setattr(__dataclass__cls, '__setattr__', __setattr__)
1674
1690
 
1675
1691
  __dataclass___delattr_frozen_fields = {
1676
- 'name',
1692
+ 'index',
1677
1693
  }
1678
1694
 
1679
1695
  def __delattr__(self, name):
@@ -1691,7 +1707,7 @@ def _process_dataclass__a8c678a92ec79b6aa505feedefe70ee7fef92ccd():
1691
1707
 
1692
1708
  def __hash__(self):
1693
1709
  return hash((
1694
- self.name,
1710
+ self.index,
1695
1711
  ))
1696
1712
 
1697
1713
  __hash__.__qualname__ = f"{__dataclass__cls.__qualname__}.__hash__"
@@ -1699,9 +1715,9 @@ def _process_dataclass__a8c678a92ec79b6aa505feedefe70ee7fef92ccd():
1699
1715
 
1700
1716
  def __init__(
1701
1717
  self,
1702
- name: __dataclass__init__fields__0__annotation,
1718
+ index: __dataclass__init__fields__0__annotation,
1703
1719
  ) -> __dataclass__None:
1704
- __dataclass__object_setattr(self, 'name', name)
1720
+ __dataclass__object_setattr(self, 'index', index)
1705
1721
 
1706
1722
  __init__.__qualname__ = f"{__dataclass__cls.__qualname__}.__init__"
1707
1723
  if '__init__' in __dataclass__cls.__dict__:
@@ -1711,7 +1727,7 @@ def _process_dataclass__a8c678a92ec79b6aa505feedefe70ee7fef92ccd():
1711
1727
  @__dataclass___recursive_repr()
1712
1728
  def __repr__(self):
1713
1729
  parts = []
1714
- parts.append(f"name={self.name!r}")
1730
+ parts.append(f"index={self.index!r}")
1715
1731
  return (
1716
1732
  f"{self.__class__.__qualname__}("
1717
1733
  f"{', '.join(parts)}"
@@ -1728,36 +1744,29 @@ def _process_dataclass__a8c678a92ec79b6aa505feedefe70ee7fef92ccd():
1728
1744
 
1729
1745
  @_register(
1730
1746
  plan_repr=(
1731
- "Plans(tup=(CopyPlan(fields=('start', 'end', 'step')), EqPlan(fields=('start', 'end', 'step')), FrozenPlan(fiel"
1732
- "ds=('start', 'end', 'step'), allow_dynamic_dunder_attrs=False), HashPlan(action='add', fields=('start', 'end',"
1733
- " 'step'), cache=False), InitPlan(fields=(InitPlan.Field(name='start', annotation=OpRef(name='init.fields.0.ann"
1734
- "otation'), default=None, default_factory=None, init=True, override=False, field_type=FieldType.INSTANCE, coerc"
1735
- "e=None, validate=None, check_type=None), InitPlan.Field(name='end', annotation=OpRef(name='init.fields.1.annot"
1736
- "ation'), default=None, default_factory=None, init=True, override=False, field_type=FieldType.INSTANCE, coerce="
1737
- "None, validate=None, check_type=None), InitPlan.Field(name='step', annotation=OpRef(name='init.fields.2.annota"
1738
- "tion'), default=None, default_factory=None, init=True, override=False, field_type=FieldType.INSTANCE, coerce=N"
1739
- "one, validate=None, check_type=None)), self_param='self', std_params=('start', 'end', 'step'), kw_only_params="
1740
- "(), frozen=True, slots=False, post_init_params=None, init_fns=(), validate_fns=()), ReprPlan(fields=(ReprPlan."
1741
- "Field(name='start', kw_only=False, fn=None), ReprPlan.Field(name='end', kw_only=False, fn=None), ReprPlan.Fiel"
1742
- "d(name='step', kw_only=False, fn=None)), id=False, terse=False, default_fn=None)))"
1747
+ "Plans(tup=(CopyPlan(fields=('nodes',)), EqPlan(fields=('nodes',)), FrozenPlan(fields=('nodes',), allow_dynamic"
1748
+ "_dunder_attrs=False), HashPlan(action='add', fields=('nodes',), cache=False), InitPlan(fields=(InitPlan.Field("
1749
+ "name='nodes', annotation=OpRef(name='init.fields.0.annotation'), default=None, default_factory=None, init=True"
1750
+ ", override=False, field_type=FieldType.INSTANCE, coerce=None, validate=None, check_type=None),), self_param='s"
1751
+ "elf', std_params=('nodes',), kw_only_params=(), frozen=True, slots=False, post_init_params=None, init_fns=(), "
1752
+ "validate_fns=()), ReprPlan(fields=(ReprPlan.Field(name='nodes', kw_only=False, fn=None),), id=False, terse=Fal"
1753
+ "se, default_fn=None)))"
1743
1754
  ),
1744
- plan_repr_sha1='b32606cc73be16bf4f754945264efc4ebda65099',
1755
+ plan_repr_sha1='95a04b516e507c6ca7803679cc697feffd03c2fe',
1745
1756
  op_ref_idents=(
1746
1757
  '__dataclass__init__fields__0__annotation',
1747
- '__dataclass__init__fields__1__annotation',
1748
- '__dataclass__init__fields__2__annotation',
1749
1758
  ),
1750
1759
  cls_names=(
1751
- ('omlish.specs.jmespath', 'Slice'),
1760
+ ('omlish.specs.jmespath', 'IndexExpression'),
1761
+ ('omlish.specs.jmespath', 'MultiSelectDict'),
1762
+ ('omlish.specs.jmespath', 'MultiSelectList'),
1752
1763
  ),
1753
1764
  )
1754
- def _process_dataclass__b32606cc73be16bf4f754945264efc4ebda65099():
1765
+ def _process_dataclass__95a04b516e507c6ca7803679cc697feffd03c2fe():
1755
1766
  def _process_dataclass(
1756
1767
  *,
1757
1768
  __dataclass__cls,
1758
1769
  __dataclass__init__fields__0__annotation,
1759
- __dataclass__init__fields__1__annotation,
1760
- __dataclass__init__fields__2__annotation,
1761
1770
  __dataclass__FieldFnValidationError, # noqa
1762
1771
  __dataclass__FieldTypeValidationError, # noqa
1763
1772
  __dataclass__FnValidationError, # noqa
@@ -1776,9 +1785,7 @@ def _process_dataclass__b32606cc73be16bf4f754945264efc4ebda65099():
1776
1785
  if self.__class__ is not __dataclass__cls:
1777
1786
  raise TypeError(self)
1778
1787
  return __dataclass__cls( # noqa
1779
- start=self.start,
1780
- end=self.end,
1781
- step=self.step,
1788
+ nodes=self.nodes,
1782
1789
  )
1783
1790
 
1784
1791
  __copy__.__qualname__ = f"{__dataclass__cls.__qualname__}.__copy__"
@@ -1792,9 +1799,7 @@ def _process_dataclass__b32606cc73be16bf4f754945264efc4ebda65099():
1792
1799
  if self.__class__ is not other.__class__:
1793
1800
  return NotImplemented
1794
1801
  return (
1795
- self.start == other.start and
1796
- self.end == other.end and
1797
- self.step == other.step
1802
+ self.nodes == other.nodes
1798
1803
  )
1799
1804
 
1800
1805
  __eq__.__qualname__ = f"{__dataclass__cls.__qualname__}.__eq__"
@@ -1803,9 +1808,7 @@ def _process_dataclass__b32606cc73be16bf4f754945264efc4ebda65099():
1803
1808
  setattr(__dataclass__cls, '__eq__', __eq__)
1804
1809
 
1805
1810
  __dataclass___setattr_frozen_fields = {
1806
- 'start',
1807
- 'end',
1808
- 'step',
1811
+ 'nodes',
1809
1812
  }
1810
1813
 
1811
1814
  def __setattr__(self, name, value):
@@ -1822,9 +1825,7 @@ def _process_dataclass__b32606cc73be16bf4f754945264efc4ebda65099():
1822
1825
  setattr(__dataclass__cls, '__setattr__', __setattr__)
1823
1826
 
1824
1827
  __dataclass___delattr_frozen_fields = {
1825
- 'start',
1826
- 'end',
1827
- 'step',
1828
+ 'nodes',
1828
1829
  }
1829
1830
 
1830
1831
  def __delattr__(self, name):
@@ -1842,9 +1843,7 @@ def _process_dataclass__b32606cc73be16bf4f754945264efc4ebda65099():
1842
1843
 
1843
1844
  def __hash__(self):
1844
1845
  return hash((
1845
- self.start,
1846
- self.end,
1847
- self.step,
1846
+ self.nodes,
1848
1847
  ))
1849
1848
 
1850
1849
  __hash__.__qualname__ = f"{__dataclass__cls.__qualname__}.__hash__"
@@ -1852,13 +1851,9 @@ def _process_dataclass__b32606cc73be16bf4f754945264efc4ebda65099():
1852
1851
 
1853
1852
  def __init__(
1854
1853
  self,
1855
- start: __dataclass__init__fields__0__annotation,
1856
- end: __dataclass__init__fields__1__annotation,
1857
- step: __dataclass__init__fields__2__annotation,
1854
+ nodes: __dataclass__init__fields__0__annotation,
1858
1855
  ) -> __dataclass__None:
1859
- __dataclass__object_setattr(self, 'start', start)
1860
- __dataclass__object_setattr(self, 'end', end)
1861
- __dataclass__object_setattr(self, 'step', step)
1856
+ __dataclass__object_setattr(self, 'nodes', nodes)
1862
1857
 
1863
1858
  __init__.__qualname__ = f"{__dataclass__cls.__qualname__}.__init__"
1864
1859
  if '__init__' in __dataclass__cls.__dict__:
@@ -1868,9 +1863,7 @@ def _process_dataclass__b32606cc73be16bf4f754945264efc4ebda65099():
1868
1863
  @__dataclass___recursive_repr()
1869
1864
  def __repr__(self):
1870
1865
  parts = []
1871
- parts.append(f"start={self.start!r}")
1872
- parts.append(f"end={self.end!r}")
1873
- parts.append(f"step={self.step!r}")
1866
+ parts.append(f"nodes={self.nodes!r}")
1874
1867
  return (
1875
1868
  f"{self.__class__.__qualname__}("
1876
1869
  f"{', '.join(parts)}"
@@ -1887,27 +1880,27 @@ def _process_dataclass__b32606cc73be16bf4f754945264efc4ebda65099():
1887
1880
 
1888
1881
  @_register(
1889
1882
  plan_repr=(
1890
- "Plans(tup=(CopyPlan(fields=('bindings', 'expr')), EqPlan(fields=('bindings', 'expr')), FrozenPlan(fields=('bin"
1891
- "dings', 'expr'), allow_dynamic_dunder_attrs=False), HashPlan(action='add', fields=('bindings', 'expr'), cache="
1892
- "False), InitPlan(fields=(InitPlan.Field(name='bindings', annotation=OpRef(name='init.fields.0.annotation'), de"
1883
+ "Plans(tup=(CopyPlan(fields=('key_name', 'node')), EqPlan(fields=('key_name', 'node')), FrozenPlan(fields=('key"
1884
+ "_name', 'node'), allow_dynamic_dunder_attrs=False), HashPlan(action='add', fields=('key_name', 'node'), cache="
1885
+ "False), InitPlan(fields=(InitPlan.Field(name='key_name', annotation=OpRef(name='init.fields.0.annotation'), de"
1893
1886
  "fault=None, default_factory=None, init=True, override=False, field_type=FieldType.INSTANCE, coerce=None, valid"
1894
- "ate=None, check_type=None), InitPlan.Field(name='expr', annotation=OpRef(name='init.fields.1.annotation'), def"
1887
+ "ate=None, check_type=None), InitPlan.Field(name='node', annotation=OpRef(name='init.fields.1.annotation'), def"
1895
1888
  "ault=None, default_factory=None, init=True, override=False, field_type=FieldType.INSTANCE, coerce=None, valida"
1896
- "te=None, check_type=None)), self_param='self', std_params=('bindings', 'expr'), kw_only_params=(), frozen=True"
1897
- ", slots=False, post_init_params=None, init_fns=(), validate_fns=()), ReprPlan(fields=(ReprPlan.Field(name='bin"
1898
- "dings', kw_only=False, fn=None), ReprPlan.Field(name='expr', kw_only=False, fn=None)), id=False, terse=False, "
1889
+ "te=None, check_type=None)), self_param='self', std_params=('key_name', 'node'), kw_only_params=(), frozen=True"
1890
+ ", slots=False, post_init_params=None, init_fns=(), validate_fns=()), ReprPlan(fields=(ReprPlan.Field(name='key"
1891
+ "_name', kw_only=False, fn=None), ReprPlan.Field(name='node', kw_only=False, fn=None)), id=False, terse=False, "
1899
1892
  "default_fn=None)))"
1900
1893
  ),
1901
- plan_repr_sha1='c8a250c76298910f7bf4f1d857d2754886ebd5c1',
1894
+ plan_repr_sha1='5c98f4baa29dbd0603b7dae82100421eaccc16c1',
1902
1895
  op_ref_idents=(
1903
1896
  '__dataclass__init__fields__0__annotation',
1904
1897
  '__dataclass__init__fields__1__annotation',
1905
1898
  ),
1906
1899
  cls_names=(
1907
- ('omlish.specs.jmespath', 'LetExpression'),
1900
+ ('omlish.specs.jmespath', 'KeyValPair'),
1908
1901
  ),
1909
1902
  )
1910
- def _process_dataclass__c8a250c76298910f7bf4f1d857d2754886ebd5c1():
1903
+ def _process_dataclass__5c98f4baa29dbd0603b7dae82100421eaccc16c1():
1911
1904
  def _process_dataclass(
1912
1905
  *,
1913
1906
  __dataclass__cls,
@@ -1931,8 +1924,8 @@ def _process_dataclass__c8a250c76298910f7bf4f1d857d2754886ebd5c1():
1931
1924
  if self.__class__ is not __dataclass__cls:
1932
1925
  raise TypeError(self)
1933
1926
  return __dataclass__cls( # noqa
1934
- bindings=self.bindings,
1935
- expr=self.expr,
1927
+ key_name=self.key_name,
1928
+ node=self.node,
1936
1929
  )
1937
1930
 
1938
1931
  __copy__.__qualname__ = f"{__dataclass__cls.__qualname__}.__copy__"
@@ -1946,8 +1939,8 @@ def _process_dataclass__c8a250c76298910f7bf4f1d857d2754886ebd5c1():
1946
1939
  if self.__class__ is not other.__class__:
1947
1940
  return NotImplemented
1948
1941
  return (
1949
- self.bindings == other.bindings and
1950
- self.expr == other.expr
1942
+ self.key_name == other.key_name and
1943
+ self.node == other.node
1951
1944
  )
1952
1945
 
1953
1946
  __eq__.__qualname__ = f"{__dataclass__cls.__qualname__}.__eq__"
@@ -1956,8 +1949,8 @@ def _process_dataclass__c8a250c76298910f7bf4f1d857d2754886ebd5c1():
1956
1949
  setattr(__dataclass__cls, '__eq__', __eq__)
1957
1950
 
1958
1951
  __dataclass___setattr_frozen_fields = {
1959
- 'bindings',
1960
- 'expr',
1952
+ 'key_name',
1953
+ 'node',
1961
1954
  }
1962
1955
 
1963
1956
  def __setattr__(self, name, value):
@@ -1974,8 +1967,8 @@ def _process_dataclass__c8a250c76298910f7bf4f1d857d2754886ebd5c1():
1974
1967
  setattr(__dataclass__cls, '__setattr__', __setattr__)
1975
1968
 
1976
1969
  __dataclass___delattr_frozen_fields = {
1977
- 'bindings',
1978
- 'expr',
1970
+ 'key_name',
1971
+ 'node',
1979
1972
  }
1980
1973
 
1981
1974
  def __delattr__(self, name):
@@ -1993,8 +1986,8 @@ def _process_dataclass__c8a250c76298910f7bf4f1d857d2754886ebd5c1():
1993
1986
 
1994
1987
  def __hash__(self):
1995
1988
  return hash((
1996
- self.bindings,
1997
- self.expr,
1989
+ self.key_name,
1990
+ self.node,
1998
1991
  ))
1999
1992
 
2000
1993
  __hash__.__qualname__ = f"{__dataclass__cls.__qualname__}.__hash__"
@@ -2002,11 +1995,11 @@ def _process_dataclass__c8a250c76298910f7bf4f1d857d2754886ebd5c1():
2002
1995
 
2003
1996
  def __init__(
2004
1997
  self,
2005
- bindings: __dataclass__init__fields__0__annotation,
2006
- expr: __dataclass__init__fields__1__annotation,
1998
+ key_name: __dataclass__init__fields__0__annotation,
1999
+ node: __dataclass__init__fields__1__annotation,
2007
2000
  ) -> __dataclass__None:
2008
- __dataclass__object_setattr(self, 'bindings', bindings)
2009
- __dataclass__object_setattr(self, 'expr', expr)
2001
+ __dataclass__object_setattr(self, 'key_name', key_name)
2002
+ __dataclass__object_setattr(self, 'node', node)
2010
2003
 
2011
2004
  __init__.__qualname__ = f"{__dataclass__cls.__qualname__}.__init__"
2012
2005
  if '__init__' in __dataclass__cls.__dict__:
@@ -2016,8 +2009,8 @@ def _process_dataclass__c8a250c76298910f7bf4f1d857d2754886ebd5c1():
2016
2009
  @__dataclass___recursive_repr()
2017
2010
  def __repr__(self):
2018
2011
  parts = []
2019
- parts.append(f"bindings={self.bindings!r}")
2020
- parts.append(f"expr={self.expr!r}")
2012
+ parts.append(f"key_name={self.key_name!r}")
2013
+ parts.append(f"node={self.node!r}")
2021
2014
  return (
2022
2015
  f"{self.__class__.__qualname__}("
2023
2016
  f"{', '.join(parts)}"
@@ -2034,27 +2027,27 @@ def _process_dataclass__c8a250c76298910f7bf4f1d857d2754886ebd5c1():
2034
2027
 
2035
2028
  @_register(
2036
2029
  plan_repr=(
2037
- "Plans(tup=(CopyPlan(fields=('operator', 'expression')), EqPlan(fields=('operator', 'expression')), FrozenPlan("
2038
- "fields=('operator', 'expression'), allow_dynamic_dunder_attrs=False), HashPlan(action='add', fields=('operator"
2039
- "', 'expression'), cache=False), InitPlan(fields=(InitPlan.Field(name='operator', annotation=OpRef(name='init.f"
2040
- "ields.0.annotation'), default=None, default_factory=None, init=True, override=False, field_type=FieldType.INST"
2041
- "ANCE, coerce=None, validate=None, check_type=None), InitPlan.Field(name='expression', annotation=OpRef(name='i"
2042
- "nit.fields.1.annotation'), default=None, default_factory=None, init=True, override=False, field_type=FieldType"
2043
- ".INSTANCE, coerce=None, validate=None, check_type=None)), self_param='self', std_params=('operator', 'expressi"
2044
- "on'), kw_only_params=(), frozen=True, slots=False, post_init_params=None, init_fns=(), validate_fns=()), ReprP"
2045
- "lan(fields=(ReprPlan.Field(name='operator', kw_only=False, fn=None), ReprPlan.Field(name='expression', kw_only"
2046
- "=False, fn=None)), id=False, terse=False, default_fn=None)))"
2047
- ),
2048
- plan_repr_sha1='cdb3249bff15c580f8a8beab3e47937e31fe71a0',
2049
- op_ref_idents=(
2050
- '__dataclass__init__fields__0__annotation',
2051
- '__dataclass__init__fields__1__annotation',
2030
+ "Plans(tup=(CopyPlan(fields=('bindings', 'expr')), EqPlan(fields=('bindings', 'expr')), FrozenPlan(fields=('bin"
2031
+ "dings', 'expr'), allow_dynamic_dunder_attrs=False), HashPlan(action='add', fields=('bindings', 'expr'), cache="
2032
+ "False), InitPlan(fields=(InitPlan.Field(name='bindings', annotation=OpRef(name='init.fields.0.annotation'), de"
2033
+ "fault=None, default_factory=None, init=True, override=False, field_type=FieldType.INSTANCE, coerce=None, valid"
2034
+ "ate=None, check_type=None), InitPlan.Field(name='expr', annotation=OpRef(name='init.fields.1.annotation'), def"
2035
+ "ault=None, default_factory=None, init=True, override=False, field_type=FieldType.INSTANCE, coerce=None, valida"
2036
+ "te=None, check_type=None)), self_param='self', std_params=('bindings', 'expr'), kw_only_params=(), frozen=True"
2037
+ ", slots=False, post_init_params=None, init_fns=(), validate_fns=()), ReprPlan(fields=(ReprPlan.Field(name='bin"
2038
+ "dings', kw_only=False, fn=None), ReprPlan.Field(name='expr', kw_only=False, fn=None)), id=False, terse=False, "
2039
+ "default_fn=None)))"
2040
+ ),
2041
+ plan_repr_sha1='c8a250c76298910f7bf4f1d857d2754886ebd5c1',
2042
+ op_ref_idents=(
2043
+ '__dataclass__init__fields__0__annotation',
2044
+ '__dataclass__init__fields__1__annotation',
2052
2045
  ),
2053
2046
  cls_names=(
2054
- ('omlish.specs.jmespath', 'ArithmeticUnary'),
2047
+ ('omlish.specs.jmespath', 'LetExpression'),
2055
2048
  ),
2056
2049
  )
2057
- def _process_dataclass__cdb3249bff15c580f8a8beab3e47937e31fe71a0():
2050
+ def _process_dataclass__c8a250c76298910f7bf4f1d857d2754886ebd5c1():
2058
2051
  def _process_dataclass(
2059
2052
  *,
2060
2053
  __dataclass__cls,
@@ -2078,8 +2071,8 @@ def _process_dataclass__cdb3249bff15c580f8a8beab3e47937e31fe71a0():
2078
2071
  if self.__class__ is not __dataclass__cls:
2079
2072
  raise TypeError(self)
2080
2073
  return __dataclass__cls( # noqa
2081
- operator=self.operator,
2082
- expression=self.expression,
2074
+ bindings=self.bindings,
2075
+ expr=self.expr,
2083
2076
  )
2084
2077
 
2085
2078
  __copy__.__qualname__ = f"{__dataclass__cls.__qualname__}.__copy__"
@@ -2093,8 +2086,8 @@ def _process_dataclass__cdb3249bff15c580f8a8beab3e47937e31fe71a0():
2093
2086
  if self.__class__ is not other.__class__:
2094
2087
  return NotImplemented
2095
2088
  return (
2096
- self.operator == other.operator and
2097
- self.expression == other.expression
2089
+ self.bindings == other.bindings and
2090
+ self.expr == other.expr
2098
2091
  )
2099
2092
 
2100
2093
  __eq__.__qualname__ = f"{__dataclass__cls.__qualname__}.__eq__"
@@ -2103,8 +2096,8 @@ def _process_dataclass__cdb3249bff15c580f8a8beab3e47937e31fe71a0():
2103
2096
  setattr(__dataclass__cls, '__eq__', __eq__)
2104
2097
 
2105
2098
  __dataclass___setattr_frozen_fields = {
2106
- 'operator',
2107
- 'expression',
2099
+ 'bindings',
2100
+ 'expr',
2108
2101
  }
2109
2102
 
2110
2103
  def __setattr__(self, name, value):
@@ -2121,8 +2114,8 @@ def _process_dataclass__cdb3249bff15c580f8a8beab3e47937e31fe71a0():
2121
2114
  setattr(__dataclass__cls, '__setattr__', __setattr__)
2122
2115
 
2123
2116
  __dataclass___delattr_frozen_fields = {
2124
- 'operator',
2125
- 'expression',
2117
+ 'bindings',
2118
+ 'expr',
2126
2119
  }
2127
2120
 
2128
2121
  def __delattr__(self, name):
@@ -2140,8 +2133,8 @@ def _process_dataclass__cdb3249bff15c580f8a8beab3e47937e31fe71a0():
2140
2133
 
2141
2134
  def __hash__(self):
2142
2135
  return hash((
2143
- self.operator,
2144
- self.expression,
2136
+ self.bindings,
2137
+ self.expr,
2145
2138
  ))
2146
2139
 
2147
2140
  __hash__.__qualname__ = f"{__dataclass__cls.__qualname__}.__hash__"
@@ -2149,11 +2142,11 @@ def _process_dataclass__cdb3249bff15c580f8a8beab3e47937e31fe71a0():
2149
2142
 
2150
2143
  def __init__(
2151
2144
  self,
2152
- operator: __dataclass__init__fields__0__annotation,
2153
- expression: __dataclass__init__fields__1__annotation,
2145
+ bindings: __dataclass__init__fields__0__annotation,
2146
+ expr: __dataclass__init__fields__1__annotation,
2154
2147
  ) -> __dataclass__None:
2155
- __dataclass__object_setattr(self, 'operator', operator)
2156
- __dataclass__object_setattr(self, 'expression', expression)
2148
+ __dataclass__object_setattr(self, 'bindings', bindings)
2149
+ __dataclass__object_setattr(self, 'expr', expr)
2157
2150
 
2158
2151
  __init__.__qualname__ = f"{__dataclass__cls.__qualname__}.__init__"
2159
2152
  if '__init__' in __dataclass__cls.__dict__:
@@ -2163,8 +2156,8 @@ def _process_dataclass__cdb3249bff15c580f8a8beab3e47937e31fe71a0():
2163
2156
  @__dataclass___recursive_repr()
2164
2157
  def __repr__(self):
2165
2158
  parts = []
2166
- parts.append(f"operator={self.operator!r}")
2167
- parts.append(f"expression={self.expression!r}")
2159
+ parts.append(f"bindings={self.bindings!r}")
2160
+ parts.append(f"expr={self.expr!r}")
2168
2161
  return (
2169
2162
  f"{self.__class__.__qualname__}("
2170
2163
  f"{', '.join(parts)}"
@@ -2181,23 +2174,23 @@ def _process_dataclass__cdb3249bff15c580f8a8beab3e47937e31fe71a0():
2181
2174
 
2182
2175
  @_register(
2183
2176
  plan_repr=(
2184
- "Plans(tup=(CopyPlan(fields=('children_nodes',)), EqPlan(fields=('children_nodes',)), FrozenPlan(fields=('child"
2185
- "ren_nodes',), allow_dynamic_dunder_attrs=False), HashPlan(action='add', fields=('children_nodes',), cache=Fals"
2186
- "e), InitPlan(fields=(InitPlan.Field(name='children_nodes', annotation=OpRef(name='init.fields.0.annotation'), "
2187
- "default=None, default_factory=None, init=True, override=False, field_type=FieldType.INSTANCE, coerce=None, val"
2188
- "idate=None, check_type=None),), self_param='self', std_params=('children_nodes',), kw_only_params=(), frozen=T"
2189
- "rue, slots=False, post_init_params=None, init_fns=(), validate_fns=()), ReprPlan(fields=(ReprPlan.Field(name='"
2190
- "children_nodes', kw_only=False, fn=None),), id=False, terse=False, default_fn=None)))"
2177
+ "Plans(tup=(CopyPlan(fields=('literal_value',)), EqPlan(fields=('literal_value',)), FrozenPlan(fields=('literal"
2178
+ "_value',), allow_dynamic_dunder_attrs=False), HashPlan(action='add', fields=('literal_value',), cache=False), "
2179
+ "InitPlan(fields=(InitPlan.Field(name='literal_value', annotation=OpRef(name='init.fields.0.annotation'), defau"
2180
+ "lt=None, default_factory=None, init=True, override=False, field_type=FieldType.INSTANCE, coerce=None, validate"
2181
+ "=None, check_type=None),), self_param='self', std_params=('literal_value',), kw_only_params=(), frozen=True, s"
2182
+ "lots=False, post_init_params=None, init_fns=(), validate_fns=()), ReprPlan(fields=(ReprPlan.Field(name='litera"
2183
+ "l_value', kw_only=False, fn=None),), id=False, terse=False, default_fn=None)))"
2191
2184
  ),
2192
- plan_repr_sha1='d958b10b4f15409b30504a103e6c94dfe8c47b9d',
2185
+ plan_repr_sha1='84f3ffbf073b3ca8957fd80ce73aa63d4e81555d',
2193
2186
  op_ref_idents=(
2194
2187
  '__dataclass__init__fields__0__annotation',
2195
2188
  ),
2196
2189
  cls_names=(
2197
- ('omlish.specs.jmespath', 'Subexpression'),
2190
+ ('omlish.specs.jmespath', 'Literal'),
2198
2191
  ),
2199
2192
  )
2200
- def _process_dataclass__d958b10b4f15409b30504a103e6c94dfe8c47b9d():
2193
+ def _process_dataclass__84f3ffbf073b3ca8957fd80ce73aa63d4e81555d():
2201
2194
  def _process_dataclass(
2202
2195
  *,
2203
2196
  __dataclass__cls,
@@ -2220,7 +2213,7 @@ def _process_dataclass__d958b10b4f15409b30504a103e6c94dfe8c47b9d():
2220
2213
  if self.__class__ is not __dataclass__cls:
2221
2214
  raise TypeError(self)
2222
2215
  return __dataclass__cls( # noqa
2223
- children_nodes=self.children_nodes,
2216
+ literal_value=self.literal_value,
2224
2217
  )
2225
2218
 
2226
2219
  __copy__.__qualname__ = f"{__dataclass__cls.__qualname__}.__copy__"
@@ -2234,7 +2227,7 @@ def _process_dataclass__d958b10b4f15409b30504a103e6c94dfe8c47b9d():
2234
2227
  if self.__class__ is not other.__class__:
2235
2228
  return NotImplemented
2236
2229
  return (
2237
- self.children_nodes == other.children_nodes
2230
+ self.literal_value == other.literal_value
2238
2231
  )
2239
2232
 
2240
2233
  __eq__.__qualname__ = f"{__dataclass__cls.__qualname__}.__eq__"
@@ -2243,7 +2236,7 @@ def _process_dataclass__d958b10b4f15409b30504a103e6c94dfe8c47b9d():
2243
2236
  setattr(__dataclass__cls, '__eq__', __eq__)
2244
2237
 
2245
2238
  __dataclass___setattr_frozen_fields = {
2246
- 'children_nodes',
2239
+ 'literal_value',
2247
2240
  }
2248
2241
 
2249
2242
  def __setattr__(self, name, value):
@@ -2260,7 +2253,7 @@ def _process_dataclass__d958b10b4f15409b30504a103e6c94dfe8c47b9d():
2260
2253
  setattr(__dataclass__cls, '__setattr__', __setattr__)
2261
2254
 
2262
2255
  __dataclass___delattr_frozen_fields = {
2263
- 'children_nodes',
2256
+ 'literal_value',
2264
2257
  }
2265
2258
 
2266
2259
  def __delattr__(self, name):
@@ -2278,7 +2271,7 @@ def _process_dataclass__d958b10b4f15409b30504a103e6c94dfe8c47b9d():
2278
2271
 
2279
2272
  def __hash__(self):
2280
2273
  return hash((
2281
- self.children_nodes,
2274
+ self.literal_value,
2282
2275
  ))
2283
2276
 
2284
2277
  __hash__.__qualname__ = f"{__dataclass__cls.__qualname__}.__hash__"
@@ -2286,9 +2279,9 @@ def _process_dataclass__d958b10b4f15409b30504a103e6c94dfe8c47b9d():
2286
2279
 
2287
2280
  def __init__(
2288
2281
  self,
2289
- children_nodes: __dataclass__init__fields__0__annotation,
2282
+ literal_value: __dataclass__init__fields__0__annotation,
2290
2283
  ) -> __dataclass__None:
2291
- __dataclass__object_setattr(self, 'children_nodes', children_nodes)
2284
+ __dataclass__object_setattr(self, 'literal_value', literal_value)
2292
2285
 
2293
2286
  __init__.__qualname__ = f"{__dataclass__cls.__qualname__}.__init__"
2294
2287
  if '__init__' in __dataclass__cls.__dict__:
@@ -2298,7 +2291,7 @@ def _process_dataclass__d958b10b4f15409b30504a103e6c94dfe8c47b9d():
2298
2291
  @__dataclass___recursive_repr()
2299
2292
  def __repr__(self):
2300
2293
  parts = []
2301
- parts.append(f"children_nodes={self.children_nodes!r}")
2294
+ parts.append(f"literal_value={self.literal_value!r}")
2302
2295
  return (
2303
2296
  f"{self.__class__.__qualname__}("
2304
2297
  f"{', '.join(parts)}"
@@ -2315,25 +2308,27 @@ def _process_dataclass__d958b10b4f15409b30504a103e6c94dfe8c47b9d():
2315
2308
 
2316
2309
  @_register(
2317
2310
  plan_repr=(
2318
- "Plans(tup=(CopyPlan(fields=()), EqPlan(fields=()), FrozenPlan(fields=(), allow_dynamic_dunder_attrs=False), Ha"
2319
- "shPlan(action='add', fields=(), cache=False), InitPlan(fields=(), self_param='self', std_params=(), kw_only_pa"
2320
- "rams=(), frozen=True, slots=False, post_init_params=None, init_fns=(), validate_fns=()), ReprPlan(fields=(), i"
2321
- "d=False, terse=False, default_fn=None)))"
2311
+ "Plans(tup=(CopyPlan(fields=('expr',)), EqPlan(fields=('expr',)), FrozenPlan(fields=('expr',), allow_dynamic_du"
2312
+ "nder_attrs=False), HashPlan(action='add', fields=('expr',), cache=False), InitPlan(fields=(InitPlan.Field(name"
2313
+ "='expr', annotation=OpRef(name='init.fields.0.annotation'), default=None, default_factory=None, init=True, ove"
2314
+ "rride=False, field_type=FieldType.INSTANCE, coerce=None, validate=None, check_type=None),), self_param='self',"
2315
+ " std_params=('expr',), kw_only_params=(), frozen=True, slots=False, post_init_params=None, init_fns=(), valida"
2316
+ "te_fns=()), ReprPlan(fields=(ReprPlan.Field(name='expr', kw_only=False, fn=None),), id=False, terse=False, def"
2317
+ "ault_fn=None)))"
2318
+ ),
2319
+ plan_repr_sha1='40ccd63db7a447b608d0875571d487f96ef3af93',
2320
+ op_ref_idents=(
2321
+ '__dataclass__init__fields__0__annotation',
2322
2322
  ),
2323
- plan_repr_sha1='e1f7edfe11f2b721d6a656c46e698fedc95461bb',
2324
- op_ref_idents=(),
2325
2323
  cls_names=(
2326
- ('omlish.specs.jmespath', 'CurrentNode'),
2327
- ('omlish.specs.jmespath', 'Identity'),
2328
- ('omlish.specs.jmespath', 'LeafNode'),
2329
- ('omlish.specs.jmespath', 'Node'),
2330
- ('omlish.specs.jmespath', 'RootNode'),
2324
+ ('omlish.specs.jmespath', 'NotExpression'),
2331
2325
  ),
2332
2326
  )
2333
- def _process_dataclass__e1f7edfe11f2b721d6a656c46e698fedc95461bb():
2327
+ def _process_dataclass__40ccd63db7a447b608d0875571d487f96ef3af93():
2334
2328
  def _process_dataclass(
2335
2329
  *,
2336
2330
  __dataclass__cls,
2331
+ __dataclass__init__fields__0__annotation,
2337
2332
  __dataclass__FieldFnValidationError, # noqa
2338
2333
  __dataclass__FieldTypeValidationError, # noqa
2339
2334
  __dataclass__FnValidationError, # noqa
@@ -2351,7 +2346,9 @@ def _process_dataclass__e1f7edfe11f2b721d6a656c46e698fedc95461bb():
2351
2346
  def __copy__(self):
2352
2347
  if self.__class__ is not __dataclass__cls:
2353
2348
  raise TypeError(self)
2354
- return __dataclass__cls() # noqa
2349
+ return __dataclass__cls( # noqa
2350
+ expr=self.expr,
2351
+ )
2355
2352
 
2356
2353
  __copy__.__qualname__ = f"{__dataclass__cls.__qualname__}.__copy__"
2357
2354
  if '__copy__' in __dataclass__cls.__dict__:
@@ -2363,16 +2360,23 @@ def _process_dataclass__e1f7edfe11f2b721d6a656c46e698fedc95461bb():
2363
2360
  return True
2364
2361
  if self.__class__ is not other.__class__:
2365
2362
  return NotImplemented
2366
- return True
2363
+ return (
2364
+ self.expr == other.expr
2365
+ )
2367
2366
 
2368
2367
  __eq__.__qualname__ = f"{__dataclass__cls.__qualname__}.__eq__"
2369
2368
  if '__eq__' in __dataclass__cls.__dict__:
2370
2369
  raise __dataclass__TypeError(f"Cannot overwrite attribute __eq__ in class {__dataclass__cls.__name__}")
2371
2370
  setattr(__dataclass__cls, '__eq__', __eq__)
2372
2371
 
2372
+ __dataclass___setattr_frozen_fields = {
2373
+ 'expr',
2374
+ }
2375
+
2373
2376
  def __setattr__(self, name, value):
2374
2377
  if (
2375
2378
  type(self) is __dataclass__cls
2379
+ or name in __dataclass___setattr_frozen_fields
2376
2380
  ):
2377
2381
  raise __dataclass__FrozenInstanceError(f"cannot assign to field {name!r}")
2378
2382
  super(__dataclass__cls, self).__setattr__(name, value)
@@ -2382,9 +2386,14 @@ def _process_dataclass__e1f7edfe11f2b721d6a656c46e698fedc95461bb():
2382
2386
  raise __dataclass__TypeError(f"Cannot overwrite attribute __setattr__ in class {__dataclass__cls.__name__}")
2383
2387
  setattr(__dataclass__cls, '__setattr__', __setattr__)
2384
2388
 
2389
+ __dataclass___delattr_frozen_fields = {
2390
+ 'expr',
2391
+ }
2392
+
2385
2393
  def __delattr__(self, name):
2386
2394
  if (
2387
2395
  type(self) is __dataclass__cls
2396
+ or name in __dataclass___delattr_frozen_fields
2388
2397
  ):
2389
2398
  raise __dataclass__FrozenInstanceError(f"cannot delete field {name!r}")
2390
2399
  super(__dataclass__cls, self).__delattr__(name)
@@ -2395,15 +2404,18 @@ def _process_dataclass__e1f7edfe11f2b721d6a656c46e698fedc95461bb():
2395
2404
  setattr(__dataclass__cls, '__delattr__', __delattr__)
2396
2405
 
2397
2406
  def __hash__(self):
2398
- return hash(())
2407
+ return hash((
2408
+ self.expr,
2409
+ ))
2399
2410
 
2400
2411
  __hash__.__qualname__ = f"{__dataclass__cls.__qualname__}.__hash__"
2401
2412
  setattr(__dataclass__cls, '__hash__', __hash__)
2402
2413
 
2403
2414
  def __init__(
2404
2415
  self,
2416
+ expr: __dataclass__init__fields__0__annotation,
2405
2417
  ) -> __dataclass__None:
2406
- pass
2418
+ __dataclass__object_setattr(self, 'expr', expr)
2407
2419
 
2408
2420
  __init__.__qualname__ = f"{__dataclass__cls.__qualname__}.__init__"
2409
2421
  if '__init__' in __dataclass__cls.__dict__:
@@ -2413,6 +2425,7 @@ def _process_dataclass__e1f7edfe11f2b721d6a656c46e698fedc95461bb():
2413
2425
  @__dataclass___recursive_repr()
2414
2426
  def __repr__(self):
2415
2427
  parts = []
2428
+ parts.append(f"expr={self.expr!r}")
2416
2429
  return (
2417
2430
  f"{self.__class__.__qualname__}("
2418
2431
  f"{', '.join(parts)}"
@@ -2429,31 +2442,30 @@ def _process_dataclass__e1f7edfe11f2b721d6a656c46e698fedc95461bb():
2429
2442
 
2430
2443
  @_register(
2431
2444
  plan_repr=(
2432
- "Plans(tup=(CopyPlan(fields=('left', 'right', 'comparator')), EqPlan(fields=('left', 'right', 'comparator')), F"
2433
- "rozenPlan(fields=('left', 'right', 'comparator'), allow_dynamic_dunder_attrs=False), HashPlan(action='add', fi"
2434
- "elds=('left', 'right', 'comparator'), cache=False), InitPlan(fields=(InitPlan.Field(name='left', annotation=Op"
2435
- "Ref(name='init.fields.0.annotation'), default=None, default_factory=None, init=True, override=False, field_typ"
2436
- "e=FieldType.INSTANCE, coerce=None, validate=None, check_type=None), InitPlan.Field(name='right', annotation=Op"
2437
- "Ref(name='init.fields.1.annotation'), default=None, default_factory=None, init=True, override=False, field_typ"
2438
- "e=FieldType.INSTANCE, coerce=None, validate=None, check_type=None), InitPlan.Field(name='comparator', annotati"
2439
- "on=OpRef(name='init.fields.2.annotation'), default=None, default_factory=None, init=True, override=False, fiel"
2440
- "d_type=FieldType.INSTANCE, coerce=None, validate=None, check_type=None)), self_param='self', std_params=('left"
2441
- "', 'right', 'comparator'), kw_only_params=(), frozen=True, slots=False, post_init_params=None, init_fns=(), va"
2442
- "lidate_fns=()), ReprPlan(fields=(ReprPlan.Field(name='left', kw_only=False, fn=None), ReprPlan.Field(name='rig"
2443
- "ht', kw_only=False, fn=None), ReprPlan.Field(name='comparator', kw_only=False, fn=None)), id=False, terse=Fals"
2444
- "e, default_fn=None)))"
2445
+ "Plans(tup=(CopyPlan(fields=('start', 'end', 'step')), EqPlan(fields=('start', 'end', 'step')), FrozenPlan(fiel"
2446
+ "ds=('start', 'end', 'step'), allow_dynamic_dunder_attrs=False), HashPlan(action='add', fields=('start', 'end',"
2447
+ " 'step'), cache=False), InitPlan(fields=(InitPlan.Field(name='start', annotation=OpRef(name='init.fields.0.ann"
2448
+ "otation'), default=None, default_factory=None, init=True, override=False, field_type=FieldType.INSTANCE, coerc"
2449
+ "e=None, validate=None, check_type=None), InitPlan.Field(name='end', annotation=OpRef(name='init.fields.1.annot"
2450
+ "ation'), default=None, default_factory=None, init=True, override=False, field_type=FieldType.INSTANCE, coerce="
2451
+ "None, validate=None, check_type=None), InitPlan.Field(name='step', annotation=OpRef(name='init.fields.2.annota"
2452
+ "tion'), default=None, default_factory=None, init=True, override=False, field_type=FieldType.INSTANCE, coerce=N"
2453
+ "one, validate=None, check_type=None)), self_param='self', std_params=('start', 'end', 'step'), kw_only_params="
2454
+ "(), frozen=True, slots=False, post_init_params=None, init_fns=(), validate_fns=()), ReprPlan(fields=(ReprPlan."
2455
+ "Field(name='start', kw_only=False, fn=None), ReprPlan.Field(name='end', kw_only=False, fn=None), ReprPlan.Fiel"
2456
+ "d(name='step', kw_only=False, fn=None)), id=False, terse=False, default_fn=None)))"
2445
2457
  ),
2446
- plan_repr_sha1='ee40fd21fce658ecb8d6c4a236c24880e69abc90',
2458
+ plan_repr_sha1='b32606cc73be16bf4f754945264efc4ebda65099',
2447
2459
  op_ref_idents=(
2448
2460
  '__dataclass__init__fields__0__annotation',
2449
2461
  '__dataclass__init__fields__1__annotation',
2450
2462
  '__dataclass__init__fields__2__annotation',
2451
2463
  ),
2452
2464
  cls_names=(
2453
- ('omlish.specs.jmespath', 'FilterProjection'),
2465
+ ('omlish.specs.jmespath', 'Slice'),
2454
2466
  ),
2455
2467
  )
2456
- def _process_dataclass__ee40fd21fce658ecb8d6c4a236c24880e69abc90():
2468
+ def _process_dataclass__b32606cc73be16bf4f754945264efc4ebda65099():
2457
2469
  def _process_dataclass(
2458
2470
  *,
2459
2471
  __dataclass__cls,
@@ -2478,9 +2490,9 @@ def _process_dataclass__ee40fd21fce658ecb8d6c4a236c24880e69abc90():
2478
2490
  if self.__class__ is not __dataclass__cls:
2479
2491
  raise TypeError(self)
2480
2492
  return __dataclass__cls( # noqa
2481
- left=self.left,
2482
- right=self.right,
2483
- comparator=self.comparator,
2493
+ start=self.start,
2494
+ end=self.end,
2495
+ step=self.step,
2484
2496
  )
2485
2497
 
2486
2498
  __copy__.__qualname__ = f"{__dataclass__cls.__qualname__}.__copy__"
@@ -2494,9 +2506,9 @@ def _process_dataclass__ee40fd21fce658ecb8d6c4a236c24880e69abc90():
2494
2506
  if self.__class__ is not other.__class__:
2495
2507
  return NotImplemented
2496
2508
  return (
2497
- self.left == other.left and
2498
- self.right == other.right and
2499
- self.comparator == other.comparator
2509
+ self.start == other.start and
2510
+ self.end == other.end and
2511
+ self.step == other.step
2500
2512
  )
2501
2513
 
2502
2514
  __eq__.__qualname__ = f"{__dataclass__cls.__qualname__}.__eq__"
@@ -2505,9 +2517,9 @@ def _process_dataclass__ee40fd21fce658ecb8d6c4a236c24880e69abc90():
2505
2517
  setattr(__dataclass__cls, '__eq__', __eq__)
2506
2518
 
2507
2519
  __dataclass___setattr_frozen_fields = {
2508
- 'left',
2509
- 'right',
2510
- 'comparator',
2520
+ 'start',
2521
+ 'end',
2522
+ 'step',
2511
2523
  }
2512
2524
 
2513
2525
  def __setattr__(self, name, value):
@@ -2524,9 +2536,9 @@ def _process_dataclass__ee40fd21fce658ecb8d6c4a236c24880e69abc90():
2524
2536
  setattr(__dataclass__cls, '__setattr__', __setattr__)
2525
2537
 
2526
2538
  __dataclass___delattr_frozen_fields = {
2527
- 'left',
2528
- 'right',
2529
- 'comparator',
2539
+ 'start',
2540
+ 'end',
2541
+ 'step',
2530
2542
  }
2531
2543
 
2532
2544
  def __delattr__(self, name):
@@ -2544,9 +2556,9 @@ def _process_dataclass__ee40fd21fce658ecb8d6c4a236c24880e69abc90():
2544
2556
 
2545
2557
  def __hash__(self):
2546
2558
  return hash((
2547
- self.left,
2548
- self.right,
2549
- self.comparator,
2559
+ self.start,
2560
+ self.end,
2561
+ self.step,
2550
2562
  ))
2551
2563
 
2552
2564
  __hash__.__qualname__ = f"{__dataclass__cls.__qualname__}.__hash__"
@@ -2554,13 +2566,13 @@ def _process_dataclass__ee40fd21fce658ecb8d6c4a236c24880e69abc90():
2554
2566
 
2555
2567
  def __init__(
2556
2568
  self,
2557
- left: __dataclass__init__fields__0__annotation,
2558
- right: __dataclass__init__fields__1__annotation,
2559
- comparator: __dataclass__init__fields__2__annotation,
2569
+ start: __dataclass__init__fields__0__annotation,
2570
+ end: __dataclass__init__fields__1__annotation,
2571
+ step: __dataclass__init__fields__2__annotation,
2560
2572
  ) -> __dataclass__None:
2561
- __dataclass__object_setattr(self, 'left', left)
2562
- __dataclass__object_setattr(self, 'right', right)
2563
- __dataclass__object_setattr(self, 'comparator', comparator)
2573
+ __dataclass__object_setattr(self, 'start', start)
2574
+ __dataclass__object_setattr(self, 'end', end)
2575
+ __dataclass__object_setattr(self, 'step', step)
2564
2576
 
2565
2577
  __init__.__qualname__ = f"{__dataclass__cls.__qualname__}.__init__"
2566
2578
  if '__init__' in __dataclass__cls.__dict__:
@@ -2570,9 +2582,9 @@ def _process_dataclass__ee40fd21fce658ecb8d6c4a236c24880e69abc90():
2570
2582
  @__dataclass___recursive_repr()
2571
2583
  def __repr__(self):
2572
2584
  parts = []
2573
- parts.append(f"left={self.left!r}")
2574
- parts.append(f"right={self.right!r}")
2575
- parts.append(f"comparator={self.comparator!r}")
2585
+ parts.append(f"start={self.start!r}")
2586
+ parts.append(f"end={self.end!r}")
2587
+ parts.append(f"step={self.step!r}")
2576
2588
  return (
2577
2589
  f"{self.__class__.__qualname__}("
2578
2590
  f"{', '.join(parts)}"
@@ -2589,37 +2601,27 @@ def _process_dataclass__ee40fd21fce658ecb8d6c4a236c24880e69abc90():
2589
2601
 
2590
2602
  @_register(
2591
2603
  plan_repr=(
2592
- "Plans(tup=(CopyPlan(fields=('condition', 'if_truthy', 'if_falsy')), EqPlan(fields=('condition', 'if_truthy', '"
2593
- "if_falsy')), FrozenPlan(fields=('condition', 'if_truthy', 'if_falsy'), allow_dynamic_dunder_attrs=False), Hash"
2594
- "Plan(action='add', fields=('condition', 'if_truthy', 'if_falsy'), cache=False), InitPlan(fields=(InitPlan.Fiel"
2595
- "d(name='condition', annotation=OpRef(name='init.fields.0.annotation'), default=None, default_factory=None, ini"
2596
- "t=True, override=False, field_type=FieldType.INSTANCE, coerce=None, validate=None, check_type=None), InitPlan."
2597
- "Field(name='if_truthy', annotation=OpRef(name='init.fields.1.annotation'), default=None, default_factory=None,"
2598
- " init=True, override=False, field_type=FieldType.INSTANCE, coerce=None, validate=None, check_type=None), InitP"
2599
- "lan.Field(name='if_falsy', annotation=OpRef(name='init.fields.2.annotation'), default=None, default_factory=No"
2600
- "ne, init=True, override=False, field_type=FieldType.INSTANCE, coerce=None, validate=None, check_type=None)), s"
2601
- "elf_param='self', std_params=('condition', 'if_truthy', 'if_falsy'), kw_only_params=(), frozen=True, slots=Fal"
2602
- "se, post_init_params=None, init_fns=(), validate_fns=()), ReprPlan(fields=(ReprPlan.Field(name='condition', kw"
2603
- "_only=False, fn=None), ReprPlan.Field(name='if_truthy', kw_only=False, fn=None), ReprPlan.Field(name='if_falsy"
2604
- "', kw_only=False, fn=None)), id=False, terse=False, default_fn=None)))"
2604
+ "Plans(tup=(CopyPlan(fields=('children_nodes',)), EqPlan(fields=('children_nodes',)), FrozenPlan(fields=('child"
2605
+ "ren_nodes',), allow_dynamic_dunder_attrs=False), HashPlan(action='add', fields=('children_nodes',), cache=Fals"
2606
+ "e), InitPlan(fields=(InitPlan.Field(name='children_nodes', annotation=OpRef(name='init.fields.0.annotation'), "
2607
+ "default=None, default_factory=None, init=True, override=False, field_type=FieldType.INSTANCE, coerce=None, val"
2608
+ "idate=None, check_type=None),), self_param='self', std_params=('children_nodes',), kw_only_params=(), frozen=T"
2609
+ "rue, slots=False, post_init_params=None, init_fns=(), validate_fns=()), ReprPlan(fields=(ReprPlan.Field(name='"
2610
+ "children_nodes', kw_only=False, fn=None),), id=False, terse=False, default_fn=None)))"
2605
2611
  ),
2606
- plan_repr_sha1='f81e930fc657b10385e84befd8ddeba424da3fc1',
2612
+ plan_repr_sha1='d958b10b4f15409b30504a103e6c94dfe8c47b9d',
2607
2613
  op_ref_idents=(
2608
2614
  '__dataclass__init__fields__0__annotation',
2609
- '__dataclass__init__fields__1__annotation',
2610
- '__dataclass__init__fields__2__annotation',
2611
2615
  ),
2612
2616
  cls_names=(
2613
- ('omlish.specs.jmespath', 'TernaryOperator'),
2617
+ ('omlish.specs.jmespath', 'Subexpression'),
2614
2618
  ),
2615
2619
  )
2616
- def _process_dataclass__f81e930fc657b10385e84befd8ddeba424da3fc1():
2620
+ def _process_dataclass__d958b10b4f15409b30504a103e6c94dfe8c47b9d():
2617
2621
  def _process_dataclass(
2618
2622
  *,
2619
2623
  __dataclass__cls,
2620
2624
  __dataclass__init__fields__0__annotation,
2621
- __dataclass__init__fields__1__annotation,
2622
- __dataclass__init__fields__2__annotation,
2623
2625
  __dataclass__FieldFnValidationError, # noqa
2624
2626
  __dataclass__FieldTypeValidationError, # noqa
2625
2627
  __dataclass__FnValidationError, # noqa
@@ -2638,9 +2640,7 @@ def _process_dataclass__f81e930fc657b10385e84befd8ddeba424da3fc1():
2638
2640
  if self.__class__ is not __dataclass__cls:
2639
2641
  raise TypeError(self)
2640
2642
  return __dataclass__cls( # noqa
2641
- condition=self.condition,
2642
- if_truthy=self.if_truthy,
2643
- if_falsy=self.if_falsy,
2643
+ children_nodes=self.children_nodes,
2644
2644
  )
2645
2645
 
2646
2646
  __copy__.__qualname__ = f"{__dataclass__cls.__qualname__}.__copy__"
@@ -2654,9 +2654,7 @@ def _process_dataclass__f81e930fc657b10385e84befd8ddeba424da3fc1():
2654
2654
  if self.__class__ is not other.__class__:
2655
2655
  return NotImplemented
2656
2656
  return (
2657
- self.condition == other.condition and
2658
- self.if_truthy == other.if_truthy and
2659
- self.if_falsy == other.if_falsy
2657
+ self.children_nodes == other.children_nodes
2660
2658
  )
2661
2659
 
2662
2660
  __eq__.__qualname__ = f"{__dataclass__cls.__qualname__}.__eq__"
@@ -2665,9 +2663,7 @@ def _process_dataclass__f81e930fc657b10385e84befd8ddeba424da3fc1():
2665
2663
  setattr(__dataclass__cls, '__eq__', __eq__)
2666
2664
 
2667
2665
  __dataclass___setattr_frozen_fields = {
2668
- 'condition',
2669
- 'if_truthy',
2670
- 'if_falsy',
2666
+ 'children_nodes',
2671
2667
  }
2672
2668
 
2673
2669
  def __setattr__(self, name, value):
@@ -2684,9 +2680,7 @@ def _process_dataclass__f81e930fc657b10385e84befd8ddeba424da3fc1():
2684
2680
  setattr(__dataclass__cls, '__setattr__', __setattr__)
2685
2681
 
2686
2682
  __dataclass___delattr_frozen_fields = {
2687
- 'condition',
2688
- 'if_truthy',
2689
- 'if_falsy',
2683
+ 'children_nodes',
2690
2684
  }
2691
2685
 
2692
2686
  def __delattr__(self, name):
@@ -2704,9 +2698,7 @@ def _process_dataclass__f81e930fc657b10385e84befd8ddeba424da3fc1():
2704
2698
 
2705
2699
  def __hash__(self):
2706
2700
  return hash((
2707
- self.condition,
2708
- self.if_truthy,
2709
- self.if_falsy,
2701
+ self.children_nodes,
2710
2702
  ))
2711
2703
 
2712
2704
  __hash__.__qualname__ = f"{__dataclass__cls.__qualname__}.__hash__"
@@ -2714,13 +2706,9 @@ def _process_dataclass__f81e930fc657b10385e84befd8ddeba424da3fc1():
2714
2706
 
2715
2707
  def __init__(
2716
2708
  self,
2717
- condition: __dataclass__init__fields__0__annotation,
2718
- if_truthy: __dataclass__init__fields__1__annotation,
2719
- if_falsy: __dataclass__init__fields__2__annotation,
2709
+ children_nodes: __dataclass__init__fields__0__annotation,
2720
2710
  ) -> __dataclass__None:
2721
- __dataclass__object_setattr(self, 'condition', condition)
2722
- __dataclass__object_setattr(self, 'if_truthy', if_truthy)
2723
- __dataclass__object_setattr(self, 'if_falsy', if_falsy)
2711
+ __dataclass__object_setattr(self, 'children_nodes', children_nodes)
2724
2712
 
2725
2713
  __init__.__qualname__ = f"{__dataclass__cls.__qualname__}.__init__"
2726
2714
  if '__init__' in __dataclass__cls.__dict__:
@@ -2730,9 +2718,7 @@ def _process_dataclass__f81e930fc657b10385e84befd8ddeba424da3fc1():
2730
2718
  @__dataclass___recursive_repr()
2731
2719
  def __repr__(self):
2732
2720
  parts = []
2733
- parts.append(f"condition={self.condition!r}")
2734
- parts.append(f"if_truthy={self.if_truthy!r}")
2735
- parts.append(f"if_falsy={self.if_falsy!r}")
2721
+ parts.append(f"children_nodes={self.children_nodes!r}")
2736
2722
  return (
2737
2723
  f"{self.__class__.__qualname__}("
2738
2724
  f"{', '.join(parts)}"
@@ -2749,31 +2735,37 @@ def _process_dataclass__f81e930fc657b10385e84befd8ddeba424da3fc1():
2749
2735
 
2750
2736
  @_register(
2751
2737
  plan_repr=(
2752
- "Plans(tup=(CopyPlan(fields=('name', 'expr')), EqPlan(fields=('name', 'expr')), FrozenPlan(fields=('name', 'exp"
2753
- "r'), allow_dynamic_dunder_attrs=False), HashPlan(action='add', fields=('name', 'expr'), cache=False), InitPlan"
2754
- "(fields=(InitPlan.Field(name='name', annotation=OpRef(name='init.fields.0.annotation'), default=None, default_"
2755
- "factory=None, init=True, override=False, field_type=FieldType.INSTANCE, coerce=None, validate=None, check_type"
2756
- "=None), InitPlan.Field(name='expr', annotation=OpRef(name='init.fields.1.annotation'), default=None, default_f"
2757
- "actory=None, init=True, override=False, field_type=FieldType.INSTANCE, coerce=None, validate=None, check_type="
2758
- "None)), self_param='self', std_params=('name', 'expr'), kw_only_params=(), frozen=True, slots=False, post_init"
2759
- "_params=None, init_fns=(), validate_fns=()), ReprPlan(fields=(ReprPlan.Field(name='name', kw_only=False, fn=No"
2760
- "ne), ReprPlan.Field(name='expr', kw_only=False, fn=None)), id=False, terse=False, default_fn=None)))"
2738
+ "Plans(tup=(CopyPlan(fields=('condition', 'if_truthy', 'if_falsy')), EqPlan(fields=('condition', 'if_truthy', '"
2739
+ "if_falsy')), FrozenPlan(fields=('condition', 'if_truthy', 'if_falsy'), allow_dynamic_dunder_attrs=False), Hash"
2740
+ "Plan(action='add', fields=('condition', 'if_truthy', 'if_falsy'), cache=False), InitPlan(fields=(InitPlan.Fiel"
2741
+ "d(name='condition', annotation=OpRef(name='init.fields.0.annotation'), default=None, default_factory=None, ini"
2742
+ "t=True, override=False, field_type=FieldType.INSTANCE, coerce=None, validate=None, check_type=None), InitPlan."
2743
+ "Field(name='if_truthy', annotation=OpRef(name='init.fields.1.annotation'), default=None, default_factory=None,"
2744
+ " init=True, override=False, field_type=FieldType.INSTANCE, coerce=None, validate=None, check_type=None), InitP"
2745
+ "lan.Field(name='if_falsy', annotation=OpRef(name='init.fields.2.annotation'), default=None, default_factory=No"
2746
+ "ne, init=True, override=False, field_type=FieldType.INSTANCE, coerce=None, validate=None, check_type=None)), s"
2747
+ "elf_param='self', std_params=('condition', 'if_truthy', 'if_falsy'), kw_only_params=(), frozen=True, slots=Fal"
2748
+ "se, post_init_params=None, init_fns=(), validate_fns=()), ReprPlan(fields=(ReprPlan.Field(name='condition', kw"
2749
+ "_only=False, fn=None), ReprPlan.Field(name='if_truthy', kw_only=False, fn=None), ReprPlan.Field(name='if_falsy"
2750
+ "', kw_only=False, fn=None)), id=False, terse=False, default_fn=None)))"
2761
2751
  ),
2762
- plan_repr_sha1='fb46b9fb75089de970d1b8ccffb404d02368804a',
2752
+ plan_repr_sha1='f81e930fc657b10385e84befd8ddeba424da3fc1',
2763
2753
  op_ref_idents=(
2764
2754
  '__dataclass__init__fields__0__annotation',
2765
2755
  '__dataclass__init__fields__1__annotation',
2756
+ '__dataclass__init__fields__2__annotation',
2766
2757
  ),
2767
2758
  cls_names=(
2768
- ('omlish.specs.jmespath', 'Assign'),
2759
+ ('omlish.specs.jmespath', 'TernaryOperator'),
2769
2760
  ),
2770
2761
  )
2771
- def _process_dataclass__fb46b9fb75089de970d1b8ccffb404d02368804a():
2762
+ def _process_dataclass__f81e930fc657b10385e84befd8ddeba424da3fc1():
2772
2763
  def _process_dataclass(
2773
2764
  *,
2774
2765
  __dataclass__cls,
2775
2766
  __dataclass__init__fields__0__annotation,
2776
2767
  __dataclass__init__fields__1__annotation,
2768
+ __dataclass__init__fields__2__annotation,
2777
2769
  __dataclass__FieldFnValidationError, # noqa
2778
2770
  __dataclass__FieldTypeValidationError, # noqa
2779
2771
  __dataclass__FnValidationError, # noqa
@@ -2792,8 +2784,9 @@ def _process_dataclass__fb46b9fb75089de970d1b8ccffb404d02368804a():
2792
2784
  if self.__class__ is not __dataclass__cls:
2793
2785
  raise TypeError(self)
2794
2786
  return __dataclass__cls( # noqa
2795
- name=self.name,
2796
- expr=self.expr,
2787
+ condition=self.condition,
2788
+ if_truthy=self.if_truthy,
2789
+ if_falsy=self.if_falsy,
2797
2790
  )
2798
2791
 
2799
2792
  __copy__.__qualname__ = f"{__dataclass__cls.__qualname__}.__copy__"
@@ -2807,8 +2800,9 @@ def _process_dataclass__fb46b9fb75089de970d1b8ccffb404d02368804a():
2807
2800
  if self.__class__ is not other.__class__:
2808
2801
  return NotImplemented
2809
2802
  return (
2810
- self.name == other.name and
2811
- self.expr == other.expr
2803
+ self.condition == other.condition and
2804
+ self.if_truthy == other.if_truthy and
2805
+ self.if_falsy == other.if_falsy
2812
2806
  )
2813
2807
 
2814
2808
  __eq__.__qualname__ = f"{__dataclass__cls.__qualname__}.__eq__"
@@ -2817,8 +2811,9 @@ def _process_dataclass__fb46b9fb75089de970d1b8ccffb404d02368804a():
2817
2811
  setattr(__dataclass__cls, '__eq__', __eq__)
2818
2812
 
2819
2813
  __dataclass___setattr_frozen_fields = {
2820
- 'name',
2821
- 'expr',
2814
+ 'condition',
2815
+ 'if_truthy',
2816
+ 'if_falsy',
2822
2817
  }
2823
2818
 
2824
2819
  def __setattr__(self, name, value):
@@ -2835,8 +2830,9 @@ def _process_dataclass__fb46b9fb75089de970d1b8ccffb404d02368804a():
2835
2830
  setattr(__dataclass__cls, '__setattr__', __setattr__)
2836
2831
 
2837
2832
  __dataclass___delattr_frozen_fields = {
2838
- 'name',
2839
- 'expr',
2833
+ 'condition',
2834
+ 'if_truthy',
2835
+ 'if_falsy',
2840
2836
  }
2841
2837
 
2842
2838
  def __delattr__(self, name):
@@ -2854,8 +2850,9 @@ def _process_dataclass__fb46b9fb75089de970d1b8ccffb404d02368804a():
2854
2850
 
2855
2851
  def __hash__(self):
2856
2852
  return hash((
2857
- self.name,
2858
- self.expr,
2853
+ self.condition,
2854
+ self.if_truthy,
2855
+ self.if_falsy,
2859
2856
  ))
2860
2857
 
2861
2858
  __hash__.__qualname__ = f"{__dataclass__cls.__qualname__}.__hash__"
@@ -2863,11 +2860,13 @@ def _process_dataclass__fb46b9fb75089de970d1b8ccffb404d02368804a():
2863
2860
 
2864
2861
  def __init__(
2865
2862
  self,
2866
- name: __dataclass__init__fields__0__annotation,
2867
- expr: __dataclass__init__fields__1__annotation,
2863
+ condition: __dataclass__init__fields__0__annotation,
2864
+ if_truthy: __dataclass__init__fields__1__annotation,
2865
+ if_falsy: __dataclass__init__fields__2__annotation,
2868
2866
  ) -> __dataclass__None:
2869
- __dataclass__object_setattr(self, 'name', name)
2870
- __dataclass__object_setattr(self, 'expr', expr)
2867
+ __dataclass__object_setattr(self, 'condition', condition)
2868
+ __dataclass__object_setattr(self, 'if_truthy', if_truthy)
2869
+ __dataclass__object_setattr(self, 'if_falsy', if_falsy)
2871
2870
 
2872
2871
  __init__.__qualname__ = f"{__dataclass__cls.__qualname__}.__init__"
2873
2872
  if '__init__' in __dataclass__cls.__dict__:
@@ -2877,8 +2876,9 @@ def _process_dataclass__fb46b9fb75089de970d1b8ccffb404d02368804a():
2877
2876
  @__dataclass___recursive_repr()
2878
2877
  def __repr__(self):
2879
2878
  parts = []
2880
- parts.append(f"name={self.name!r}")
2881
- parts.append(f"expr={self.expr!r}")
2879
+ parts.append(f"condition={self.condition!r}")
2880
+ parts.append(f"if_truthy={self.if_truthy!r}")
2881
+ parts.append(f"if_falsy={self.if_falsy!r}")
2882
2882
  return (
2883
2883
  f"{self.__class__.__qualname__}("
2884
2884
  f"{', '.join(parts)}"