hydra-python 0.17.6__tar.gz → 0.17.7__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (21) hide show
  1. {hydra_python-0.17.6 → hydra_python-0.17.7}/.gitignore +3 -0
  2. {hydra_python-0.17.6 → hydra_python-0.17.7}/PKG-INFO +2 -2
  3. hydra_python-0.17.7/build/main/digest.json +276 -0
  4. {hydra_python-0.17.6 → hydra_python-0.17.7}/pyproject.toml +2 -2
  5. {hydra_python-0.17.6 → hydra_python-0.17.7}/src/main/python/hydra/dsl/python/utils.py +3 -0
  6. {hydra_python-0.17.6 → hydra_python-0.17.7}/src/main/python/hydra/python/coder.py +10 -2
  7. {hydra_python-0.17.6 → hydra_python-0.17.7}/src/main/python/hydra/python/utils.py +103 -27
  8. hydra_python-0.17.6/build/main/digest.json +0 -123
  9. {hydra_python-0.17.6 → hydra_python-0.17.7}/LICENSE +0 -0
  10. {hydra_python-0.17.6 → hydra_python-0.17.7}/NOTICE +0 -0
  11. {hydra_python-0.17.6 → hydra_python-0.17.7}/README.md +0 -0
  12. {hydra_python-0.17.6 → hydra_python-0.17.7}/src/main/python/hydra/dsl/python/environment.py +0 -0
  13. {hydra_python-0.17.6 → hydra_python-0.17.7}/src/main/python/hydra/dsl/python/names.py +0 -0
  14. {hydra_python-0.17.6 → hydra_python-0.17.7}/src/main/python/hydra/dsl/python/syntax.py +0 -0
  15. {hydra_python-0.17.6 → hydra_python-0.17.7}/src/main/python/hydra/python/environment.py +0 -0
  16. {hydra_python-0.17.6 → hydra_python-0.17.7}/src/main/python/hydra/python/language.py +0 -0
  17. {hydra_python-0.17.6 → hydra_python-0.17.7}/src/main/python/hydra/python/names.py +0 -0
  18. {hydra_python-0.17.6 → hydra_python-0.17.7}/src/main/python/hydra/python/pyproject.py +0 -0
  19. {hydra_python-0.17.6 → hydra_python-0.17.7}/src/main/python/hydra/python/serde.py +0 -0
  20. {hydra_python-0.17.6 → hydra_python-0.17.7}/src/main/python/hydra/python/syntax.py +0 -0
  21. {hydra_python-0.17.6 → hydra_python-0.17.7}/src/main/python/hydra/python/testing.py +0 -0
@@ -150,3 +150,6 @@ claude/.*.sh
150
150
 
151
151
  # Backed-up branch plan documents (not release content)
152
152
  finalized-task-plans/
153
+
154
+ # Coordination-hook state: last surfaced coordination-branch SHA (per worktree)
155
+ .coordination-seen
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: hydra-python
3
- Version: 0.17.6
3
+ Version: 0.17.7
4
4
  Summary: Python support for Hydra
5
5
  Project-URL: Homepage, https://github.com/CategoricalData/hydra
6
6
  Project-URL: Repository, https://github.com/CategoricalData/hydra
@@ -9,7 +9,7 @@ License: Apache-2.0
9
9
  License-File: LICENSE
10
10
  License-File: NOTICE
11
11
  Requires-Python: >=3.12
12
- Requires-Dist: hydra-kernel==0.17.6
12
+ Requires-Dist: hydra-kernel==0.17.7
13
13
  Description-Content-Type: text/markdown
14
14
 
15
15
  # Hydra-Python
@@ -0,0 +1,276 @@
1
+ {
2
+ "digestFormatVersion": 2,
3
+ "moduleFormatVersion": 1,
4
+ "generator": "7abcbab265fa1310",
5
+ "generation": {
6
+ "generatorId": "7abcbab265fa1310",
7
+ "mode": "published",
8
+ "host": "python",
9
+ "hydraVersion": "0.17.6",
10
+ "revision": "424d7c2260-dirty",
11
+ "timestamp": "2026-09-14T21:55:11Z"
12
+ },
13
+ "selfHash": "0736daac9936e0be4ec8f8e13bd081a5acb6d26caf193636363c966326e87aba",
14
+ "dependencyHashes": [
15
+ {
16
+ "key": "hydra-kernel",
17
+ "value": "9a236485c2eb5ac6a517d66ab064b143ae6439d323f9968a1670a4d690c594cf"
18
+ }
19
+ ],
20
+ "inputs": [
21
+ {
22
+ "key": "hydra.python.coder",
23
+ "value": {
24
+ "kind": "other",
25
+ "hash": "2dcd40ec0777229e853704eb332bfbbf9790b70534b5e47fb11fb9be4996d22c"
26
+ }
27
+ },
28
+ {
29
+ "key": "hydra.python.environment",
30
+ "value": {
31
+ "kind": "other",
32
+ "hash": "c9fcaea745fbec176e40ba1f5015539afccce08dd9d64357c092b00a74b0ead7"
33
+ }
34
+ },
35
+ {
36
+ "key": "hydra.python.language",
37
+ "value": {
38
+ "kind": "other",
39
+ "hash": "023abc0b7f14a46a8ce25a51434878a81aae06093abb0c4bdc56e284a886de0b"
40
+ }
41
+ },
42
+ {
43
+ "key": "hydra.python.names",
44
+ "value": {
45
+ "kind": "other",
46
+ "hash": "309082902048042e83e9518bdad597cfbdc001400e5f21db59dfa13bb9f35f57"
47
+ }
48
+ },
49
+ {
50
+ "key": "hydra.python.pyproject",
51
+ "value": {
52
+ "kind": "other",
53
+ "hash": "881be5b9c94d452c99cbe3478f0f0bef48ce0662aa9f9b2591ddff8fef21548b"
54
+ }
55
+ },
56
+ {
57
+ "key": "hydra.python.serde",
58
+ "value": {
59
+ "kind": "other",
60
+ "hash": "c2f329584d68b5d1eacac7a8336bce84bef18b2ec728edceea8cd59bc4cbb45c"
61
+ }
62
+ },
63
+ {
64
+ "key": "hydra.python.syntax",
65
+ "value": {
66
+ "kind": "other",
67
+ "hash": "e98016197157f4afaab53d70d18bbbb107951e241e6ef87dbaed78eb7645ffcc"
68
+ }
69
+ },
70
+ {
71
+ "key": "hydra.python.testing",
72
+ "value": {
73
+ "kind": "other",
74
+ "hash": "8ab02cc21789bdae2221b90bc5664e1617b8d8cf93adea1f619fee05526c9267"
75
+ }
76
+ },
77
+ {
78
+ "key": "hydra.python.utils",
79
+ "value": {
80
+ "kind": "other",
81
+ "hash": "12d519e0d4e915452b962c16e7e45ec98f444dcc1cb4ee22a2a6c489db17c377"
82
+ }
83
+ },
84
+ {
85
+ "key": "jsonContent:hydra/dsl/python/environment.json",
86
+ "value": {
87
+ "kind": "other",
88
+ "hash": "c4915d2516067b18ce5b16a8464a47d5a59ba1376932e3987b6df607f7aebfd7"
89
+ }
90
+ },
91
+ {
92
+ "key": "jsonContent:hydra/dsl/python/names.json",
93
+ "value": {
94
+ "kind": "other",
95
+ "hash": "d3adb9f3e1d12ac227bb5d702b09dc4ce5efe88d2defddd94ec4b123dbf90a36"
96
+ }
97
+ },
98
+ {
99
+ "key": "jsonContent:hydra/dsl/python/syntax.json",
100
+ "value": {
101
+ "kind": "other",
102
+ "hash": "54bdb29075c43afb543364420ff57de57a9c20188ad6d3f91581181a466fd2fa"
103
+ }
104
+ },
105
+ {
106
+ "key": "jsonContent:hydra/dsl/python/utils.json",
107
+ "value": {
108
+ "kind": "other",
109
+ "hash": "3314f432e6d4003d2afe84ff2b24ddb84e1589255dd8ef4a7774a5eff07bd84a"
110
+ }
111
+ },
112
+ {
113
+ "key": "jsonContent:hydra/python/coder.json",
114
+ "value": {
115
+ "kind": "other",
116
+ "hash": "a2b430eceb6212d2c2d4185aa3ca961c8992a8eea0f2b45317ae632f00802947"
117
+ }
118
+ },
119
+ {
120
+ "key": "jsonContent:hydra/python/environment.json",
121
+ "value": {
122
+ "kind": "other",
123
+ "hash": "ac3e37f8a17ae29d2ef98d7a3b2ce2eaba7eec1bde18caeb9a28e94162ea4d19"
124
+ }
125
+ },
126
+ {
127
+ "key": "jsonContent:hydra/python/language.json",
128
+ "value": {
129
+ "kind": "other",
130
+ "hash": "657c83931d77ee5efd92b5e7fc25d50aef2ebbf14b834293af0f56a107b914ff"
131
+ }
132
+ },
133
+ {
134
+ "key": "jsonContent:hydra/python/names.json",
135
+ "value": {
136
+ "kind": "other",
137
+ "hash": "15523ffcae2f183b2e1282cafa98a8fb7ffb063bf3be597200afa449392bf6e5"
138
+ }
139
+ },
140
+ {
141
+ "key": "jsonContent:hydra/python/pyproject.json",
142
+ "value": {
143
+ "kind": "other",
144
+ "hash": "d2da2c56f2ef83033e3ec7e9e81db072413d4ea295c7884efcb4b10ab73d564e"
145
+ }
146
+ },
147
+ {
148
+ "key": "jsonContent:hydra/python/serde.json",
149
+ "value": {
150
+ "kind": "other",
151
+ "hash": "4b39e1786bd38ceb73525956e73f5bdc24e7e2085ebcfc53682209de3057012e"
152
+ }
153
+ },
154
+ {
155
+ "key": "jsonContent:hydra/python/syntax.json",
156
+ "value": {
157
+ "kind": "other",
158
+ "hash": "d6b15c193027c2f9cb381a4a8ecdb9541ce7f863b645d996923e7549c34796e0"
159
+ }
160
+ },
161
+ {
162
+ "key": "jsonContent:hydra/python/testing.json",
163
+ "value": {
164
+ "kind": "other",
165
+ "hash": "f8564336b36351b02f733b8b6c132b842b42b8e908e31d18bd45e086d9c6abec"
166
+ }
167
+ },
168
+ {
169
+ "key": "jsonContent:hydra/python/utils.json",
170
+ "value": {
171
+ "kind": "other",
172
+ "hash": "619771b6c8cfa4ac80c27dedba674978470f5846c8575bb3c7b60a1661ce2df4"
173
+ }
174
+ },
175
+ {
176
+ "key": "jsonContent:manifest.json",
177
+ "value": {
178
+ "kind": "other",
179
+ "hash": "3f94b521766d042381d7bee84596308ea4e35c7e8fb45f8fd8338a8dbe27a0ac"
180
+ }
181
+ }
182
+ ],
183
+ "outputs": [
184
+ {
185
+ "key": "hydra/dsl/python/environment.py",
186
+ "value": {
187
+ "kind": "targetFile",
188
+ "hash": "17b22fcaf759f776c959d41a749f506ff3c302815791e189a506c3f1af344f2c"
189
+ }
190
+ },
191
+ {
192
+ "key": "hydra/dsl/python/names.py",
193
+ "value": {
194
+ "kind": "targetFile",
195
+ "hash": "c571b01c5d149d3e6f587ef4524c5b065dae0ffba1b44617197f68fc1a6122fb"
196
+ }
197
+ },
198
+ {
199
+ "key": "hydra/dsl/python/syntax.py",
200
+ "value": {
201
+ "kind": "targetFile",
202
+ "hash": "5fe1c0c739cdac68d1b90d768153e23ebe7c805bafb96ac698a95425e2d7d7b5"
203
+ }
204
+ },
205
+ {
206
+ "key": "hydra/dsl/python/utils.py",
207
+ "value": {
208
+ "kind": "targetFile",
209
+ "hash": "faf969debba4f9484e9e758a0d0eef2ec5255a757b368b8c593adf9b567fa56b"
210
+ }
211
+ },
212
+ {
213
+ "key": "hydra/python/coder.py",
214
+ "value": {
215
+ "kind": "targetFile",
216
+ "hash": "b9e4d3a6b7975300ca9f51880df233283797d5dddee65fe2dbb23ba24fd23830"
217
+ }
218
+ },
219
+ {
220
+ "key": "hydra/python/environment.py",
221
+ "value": {
222
+ "kind": "targetFile",
223
+ "hash": "1036eb9d285ba3e98c85095820f2e77900334340c9f0223fd4dfd6b3e847f4df"
224
+ }
225
+ },
226
+ {
227
+ "key": "hydra/python/language.py",
228
+ "value": {
229
+ "kind": "targetFile",
230
+ "hash": "7ea0c3a6015ec1de92aebeed0963c1af9f3b70c8d57815e477c528c795383604"
231
+ }
232
+ },
233
+ {
234
+ "key": "hydra/python/names.py",
235
+ "value": {
236
+ "kind": "targetFile",
237
+ "hash": "3e8498f205a99ebfaa570a44ccac515b69ced9d7f3669a32f74d4d05d48204b6"
238
+ }
239
+ },
240
+ {
241
+ "key": "hydra/python/pyproject.py",
242
+ "value": {
243
+ "kind": "targetFile",
244
+ "hash": "1f9001d8d2273d4783105e099b874c273ce520b58456f9b447cb8d5e9a6a37d7"
245
+ }
246
+ },
247
+ {
248
+ "key": "hydra/python/serde.py",
249
+ "value": {
250
+ "kind": "targetFile",
251
+ "hash": "1f36ea2dc8c50df72abe464cd395689c71f0af70a9f78e68d26013f9b436c383"
252
+ }
253
+ },
254
+ {
255
+ "key": "hydra/python/syntax.py",
256
+ "value": {
257
+ "kind": "targetFile",
258
+ "hash": "24a72af882b47d80cc930f16f51a3e9c1a71c9d8da47a921829f40e847459fca"
259
+ }
260
+ },
261
+ {
262
+ "key": "hydra/python/testing.py",
263
+ "value": {
264
+ "kind": "targetFile",
265
+ "hash": "5c8f352d976eeeebf14974e9df208b53c8db59810fdbd76e6454868627122635"
266
+ }
267
+ },
268
+ {
269
+ "key": "hydra/python/utils.py",
270
+ "value": {
271
+ "kind": "targetFile",
272
+ "hash": "28508cfe1fa312c169c894bda18a920092fb8ce708d22f5bd76d7576527935e1"
273
+ }
274
+ }
275
+ ]
276
+ }
@@ -13,7 +13,7 @@
13
13
 
14
14
  [project]
15
15
  name = "hydra-python"
16
- version = "0.17.6"
16
+ version = "0.17.7"
17
17
  description = "Python support for Hydra"
18
18
  readme = "README.md"
19
19
  requires-python = ">=3.12"
@@ -22,7 +22,7 @@ authors = [
22
22
  { name = "Joshua Shinavier", email = "josh@fortytwo.net" },
23
23
  ]
24
24
  dependencies = [
25
- "hydra-kernel == 0.17.6",
25
+ "hydra-kernel == 0.17.7",
26
26
  ]
27
27
 
28
28
  [project.urls]
@@ -59,6 +59,9 @@ def comment_statement(arg0: hydra.typed.TypedTerm[str]) -> hydra.typed.TypedTerm
59
59
  return hydra.typed.TypedTerm(cast(hydra.core.Term,
60
60
  hydra.core.TermApplication(hydra.core.Application(cast(hydra.core.Term, hydra.core.TermVariable(hydra.core.Name("hydra.python.utils.commentStatement"))), arg0.value))))
61
61
 
62
+ # DSL reference to hydra.python.utils.decimalVariantMethods.
63
+ decimal_variant_methods = hydra.typed.TypedTerm(cast(hydra.core.Term, hydra.core.TermVariable(hydra.core.Name("hydra.python.utils.decimalVariantMethods"))))
64
+
62
65
  def decode_py_comparison_to_py_await_primary(arg0: hydra.typed.TypedTerm[hydra.python.syntax.Comparison]) -> hydra.typed.TypedTerm[Optional[hydra.python.syntax.Primary]]:
63
66
  r"""DSL reference to hydra.python.utils.decodePyComparisonToPyAwaitPrimary."""
64
67
 
@@ -8,6 +8,7 @@ from decimal import Decimal
8
8
  from functools import lru_cache
9
9
  from hydra.overlay.python.dsl.python import Either, Given, Left, None_, Optional, Right
10
10
  from hydra.overlay.python.util import ConsList, Lazy, PersistentMap, PersistentSet
11
+ from hydra.overlay.python.util._decimal import decimal_node_eq, decimal_node_hash
11
12
  from typing import TypeVar, cast
12
13
  import hydra.analysis
13
14
  import hydra.annotations
@@ -2289,17 +2290,21 @@ def encode_union_field(cx: T0, env: hydra.python.environment.PythonEnvironment,
2289
2290
  return hydra.overlay.python.lib.eithers.bind(hydra.annotations.get_type_description(cx, python_environment_get_graph(env), ftype),
2290
2291
  (lambda fcomment: (
2291
2292
  is_unit := Lazy((lambda : hydra.overlay.python.lib.equality.equal(hydra.strip.deannotate_type(ftype), cast(hydra.core.Type, hydra.core.TypeUnit())))),
2293
+ is_decimal := Lazy((lambda : hydra.overlay.python.lib.equality.equal(hydra.strip.deannotate_type(ftype),
2294
+ cast(hydra.core.Type, hydra.core.TypeLiteral(cast(hydra.core.LiteralType, hydra.core.LiteralTypeDecimal())))))),
2292
2295
  var_name := Lazy((lambda : deconflict_variant_name(False, env, union_name, fname, env.graph))),
2293
2296
  tparam_names := Lazy((lambda : find_type_params(env, ftype))),
2294
2297
  tparam_py_names := Lazy((lambda : hydra.overlay.python.lib.lists.map((lambda x1: hydra.python.names.encode_type_variable(x1)), tparam_names.get()))),
2295
2298
  field_params := Lazy((lambda : hydra.overlay.python.lib.lists.map((lambda x1: hydra.python.utils.py_name_to_py_type_parameter(x1)), tparam_py_names.get()))),
2296
2299
  body := Lazy((lambda : hydra.overlay.python.lib.logic.if_else(is_unit.get(),
2297
2300
  (lambda : hydra.python.utils.indented_block(fcomment, ConsList.of(hydra.python.utils.unit_variant_methods(var_name.get())))),
2298
- (lambda : hydra.python.utils.indented_block(fcomment, ConsList.of()))))),
2301
+ (lambda : hydra.overlay.python.lib.logic.if_else(is_decimal.get(),
2302
+ (lambda : hydra.python.utils.indented_block(fcomment, ConsList.of(hydra.python.utils.decimal_variant_methods()))),
2303
+ (lambda : hydra.python.utils.indented_block(fcomment, ConsList.of()))))))),
2299
2304
  hydra.overlay.python.lib.eithers.bind(hydra.overlay.python.lib.logic.if_else(is_unit.get(),
2300
2305
  (lambda : Right(None_())),
2301
2306
  (lambda : hydra.overlay.python.lib.eithers.bind(encode_type_quoted(env, ftype), (lambda quoted_type: Right(Given(variant_args(quoted_type, ConsList.of()))))))),
2302
- (lambda margs: Right(hydra.python.utils.py_class_definition_to_py_statement(hydra.python.syntax.ClassDefinition(None_(), var_name.get(), field_params.get(), margs, body.get()))))))[6]))
2307
+ (lambda margs: Right(hydra.python.utils.py_class_definition_to_py_statement(hydra.python.syntax.ClassDefinition(None_(), var_name.get(), field_params.get(), margs, body.get()))))))[7]))
2303
2308
 
2304
2309
  def encode_union_field_alt(env: hydra.python.environment.PythonEnvironment, union_name: hydra.core.Name, field_type: hydra.core.FieldType) -> hydra.python.syntax.Primary:
2305
2310
  r"""Encode a union field as a primary expression for | alternatives."""
@@ -3205,6 +3210,9 @@ def module_standard_imports(meta: hydra.python.environment.PythonModuleMetadata)
3205
3210
  cond_import_symbol("Lazy", True),
3206
3211
  cond_import_symbol("PersistentMap", meta.uses_frozen_dict),
3207
3212
  cond_import_symbol("PersistentSet", meta.uses_frozen_set))),
3213
+ (
3214
+ "hydra.overlay.python.util._decimal",
3215
+ ConsList.of(cond_import_symbol("decimal_node_eq", meta.uses_decimal), cond_import_symbol("decimal_node_hash", meta.uses_decimal))),
3208
3216
  (
3209
3217
  "typing",
3210
3218
  ConsList.of(cond_import_symbol("Annotated", meta.uses_annotated),
@@ -197,6 +197,109 @@ def comment_statement(s: str) -> hydra.python.syntax.Statement:
197
197
 
198
198
  return py_expression_to_py_statement(triple_quoted_string(s))
199
199
 
200
+ def indented_block(mcomment: Optional[str], stmts: Sequence[Sequence[hydra.python.syntax.Statement]]) -> hydra.python.syntax.Block:
201
+ r"""Create an indented block with optional comment."""
202
+
203
+ comment_group = Lazy((lambda : hydra.overlay.python.lib.optionals.match(mcomment, (lambda : ConsList.of()), (lambda s: ConsList.of(comment_statement(s))))))
204
+ groups = Lazy((lambda : hydra.overlay.python.lib.lists.filter((lambda g: hydra.overlay.python.lib.logic.not_(hydra.overlay.python.lib.lists.is_empty(g))),
205
+ hydra.overlay.python.lib.lists.cons(comment_group(), stmts))))
206
+ return hydra.overlay.python.lib.logic.if_else(hydra.overlay.python.lib.lists.is_empty(groups()),
207
+ (lambda : cast(hydra.python.syntax.Block,
208
+ hydra.python.syntax.BlockIndented(ConsList.of(ConsList.of(cast(hydra.python.syntax.Statement,
209
+ hydra.python.syntax.StatementSimple(ConsList.of(py_expression_to_py_simple_statement(py_atom_to_py_expression(cast(hydra.python.syntax.Atom, hydra.python.syntax.AtomEllipsis()))))))))))),
210
+ (lambda : cast(hydra.python.syntax.Block, hydra.python.syntax.BlockIndented(groups()))))
211
+
212
+ @lru_cache(1)
213
+ def self_only_params() -> hydra.python.syntax.Parameters:
214
+ return cast(hydra.python.syntax.Parameters,
215
+ hydra.python.syntax.ParametersParamNoDefault(hydra.python.syntax.ParamNoDefaultParameters(ConsList.of(hydra.python.syntax.ParamNoDefault(hydra.python.syntax.Param(hydra.python.syntax.Name("self"), None_()), None_())),
216
+ ConsList.of(),
217
+ None_())))
218
+
219
+ @lru_cache(1)
220
+ def self_other_params() -> hydra.python.syntax.Parameters:
221
+ return cast(hydra.python.syntax.Parameters,
222
+ hydra.python.syntax.ParametersParamNoDefault(hydra.python.syntax.ParamNoDefaultParameters(ConsList.of(hydra.python.syntax.ParamNoDefault(hydra.python.syntax.Param(hydra.python.syntax.Name("self"), None_()), None_()),
223
+ hydra.python.syntax.ParamNoDefault(hydra.python.syntax.Param(hydra.python.syntax.Name("other"), None_()), None_())),
224
+ ConsList.of(),
225
+ None_())))
226
+
227
+ @lru_cache(1)
228
+ def decimal_variant_methods() -> Sequence[hydra.python.syntax.Statement]:
229
+ r"""Generate __eq__ and __hash__ methods for the Decimal-typed union variant, delegating to hydra.overlay.python.util._decimal (scale-aware per docs/specification/ordering-and-equality.md; Node's generic derivation delegates to Decimal's own scale-blind equality/hash)."""
230
+
231
+ eq_body = Lazy((lambda : py_simple_statement_to_py_statement(cast(hydra.python.syntax.SimpleStatement,
232
+ hydra.python.syntax.SimpleStatementReturn(hydra.python.syntax.ReturnStatement(ConsList.of(cast(hydra.python.syntax.StarExpression,
233
+ hydra.python.syntax.StarExpressionSimple(function_call(cast(hydra.python.syntax.Primary,
234
+ hydra.python.syntax.PrimarySimple(cast(hydra.python.syntax.Atom, hydra.python.syntax.AtomName(hydra.python.syntax.Name("decimal_node_eq"))))),
235
+ ConsList.of(cast(hydra.python.syntax.Expression,
236
+ hydra.python.syntax.ExpressionSimple(hydra.python.syntax.Disjunction(ConsList.of(hydra.python.syntax.Conjunction(ConsList.of(cast(hydra.python.syntax.Inversion,
237
+ hydra.python.syntax.InversionSimple(hydra.python.syntax.Comparison(hydra.python.syntax.BitwiseOr(None_(),
238
+ hydra.python.syntax.BitwiseXor(None_(),
239
+ hydra.python.syntax.BitwiseAnd(None_(),
240
+ hydra.python.syntax.ShiftExpression(None_(),
241
+ hydra.python.syntax.Sum(None_(),
242
+ hydra.python.syntax.Term(None_(),
243
+ cast(hydra.python.syntax.Factor,
244
+ hydra.python.syntax.FactorSimple(hydra.python.syntax.Power(hydra.python.syntax.AwaitPrimary(False,
245
+ cast(hydra.python.syntax.Primary,
246
+ hydra.python.syntax.PrimarySimple(cast(hydra.python.syntax.Atom, hydra.python.syntax.AtomName(hydra.python.syntax.Name("self")))))),
247
+ None_()))))))))),
248
+ ConsList.of()))))))))),
249
+ cast(hydra.python.syntax.Expression,
250
+ hydra.python.syntax.ExpressionSimple(hydra.python.syntax.Disjunction(ConsList.of(hydra.python.syntax.Conjunction(ConsList.of(cast(hydra.python.syntax.Inversion,
251
+ hydra.python.syntax.InversionSimple(hydra.python.syntax.Comparison(hydra.python.syntax.BitwiseOr(None_(),
252
+ hydra.python.syntax.BitwiseXor(None_(),
253
+ hydra.python.syntax.BitwiseAnd(None_(),
254
+ hydra.python.syntax.ShiftExpression(None_(),
255
+ hydra.python.syntax.Sum(None_(),
256
+ hydra.python.syntax.Term(None_(),
257
+ cast(hydra.python.syntax.Factor,
258
+ hydra.python.syntax.FactorSimple(hydra.python.syntax.Power(hydra.python.syntax.AwaitPrimary(False,
259
+ cast(hydra.python.syntax.Primary,
260
+ hydra.python.syntax.PrimarySimple(cast(hydra.python.syntax.Atom, hydra.python.syntax.AtomName(hydra.python.syntax.Name("other")))))),
261
+ None_()))))))))),
262
+ ConsList.of()))))))))))))))))))))
263
+ eq_method = Lazy((lambda : cast(hydra.python.syntax.Statement,
264
+ hydra.python.syntax.StatementCompound(cast(hydra.python.syntax.CompoundStatement,
265
+ hydra.python.syntax.CompoundStatementFunction(hydra.python.syntax.FunctionDefinition(None_(),
266
+ hydra.python.syntax.FunctionDefRaw(False,
267
+ hydra.python.syntax.Name("__eq__"),
268
+ ConsList.of(),
269
+ Given(self_other_params()),
270
+ None_(),
271
+ None_(),
272
+ indented_block(None_(), ConsList.of(ConsList.of(eq_body())))))))))))
273
+ hash_body = Lazy((lambda : py_simple_statement_to_py_statement(cast(hydra.python.syntax.SimpleStatement,
274
+ hydra.python.syntax.SimpleStatementReturn(hydra.python.syntax.ReturnStatement(ConsList.of(cast(hydra.python.syntax.StarExpression,
275
+ hydra.python.syntax.StarExpressionSimple(function_call(cast(hydra.python.syntax.Primary,
276
+ hydra.python.syntax.PrimarySimple(cast(hydra.python.syntax.Atom, hydra.python.syntax.AtomName(hydra.python.syntax.Name("decimal_node_hash"))))),
277
+ ConsList.of(cast(hydra.python.syntax.Expression,
278
+ hydra.python.syntax.ExpressionSimple(hydra.python.syntax.Disjunction(ConsList.of(hydra.python.syntax.Conjunction(ConsList.of(cast(hydra.python.syntax.Inversion,
279
+ hydra.python.syntax.InversionSimple(hydra.python.syntax.Comparison(hydra.python.syntax.BitwiseOr(None_(),
280
+ hydra.python.syntax.BitwiseXor(None_(),
281
+ hydra.python.syntax.BitwiseAnd(None_(),
282
+ hydra.python.syntax.ShiftExpression(None_(),
283
+ hydra.python.syntax.Sum(None_(),
284
+ hydra.python.syntax.Term(None_(),
285
+ cast(hydra.python.syntax.Factor,
286
+ hydra.python.syntax.FactorSimple(hydra.python.syntax.Power(hydra.python.syntax.AwaitPrimary(False,
287
+ cast(hydra.python.syntax.Primary,
288
+ hydra.python.syntax.PrimarySimple(cast(hydra.python.syntax.Atom, hydra.python.syntax.AtomName(hydra.python.syntax.Name("self")))))),
289
+ None_()))))))))),
290
+ ConsList.of()))))))))))))))))))))
291
+ hash_method = Lazy((lambda : cast(hydra.python.syntax.Statement,
292
+ hydra.python.syntax.StatementCompound(cast(hydra.python.syntax.CompoundStatement,
293
+ hydra.python.syntax.CompoundStatementFunction(hydra.python.syntax.FunctionDefinition(None_(),
294
+ hydra.python.syntax.FunctionDefRaw(False,
295
+ hydra.python.syntax.Name("__hash__"),
296
+ ConsList.of(),
297
+ Given(self_only_params()),
298
+ None_(),
299
+ None_(),
300
+ indented_block(None_(), ConsList.of(ConsList.of(hash_body())))))))))))
301
+ return ConsList.of(eq_method(), hash_method())
302
+
200
303
  def decode_py_power_to_py_primary(p: hydra.python.syntax.Power) -> Optional[hydra.python.syntax.Primary]:
201
304
  r"""Decode a Power to a Primary if possible."""
202
305
 
@@ -303,18 +406,6 @@ def get_item_params() -> hydra.python.syntax.Parameters:
303
406
  ConsList.of(),
304
407
  None_())))
305
408
 
306
- def indented_block(mcomment: Optional[str], stmts: Sequence[Sequence[hydra.python.syntax.Statement]]) -> hydra.python.syntax.Block:
307
- r"""Create an indented block with optional comment."""
308
-
309
- comment_group = Lazy((lambda : hydra.overlay.python.lib.optionals.match(mcomment, (lambda : ConsList.of()), (lambda s: ConsList.of(comment_statement(s))))))
310
- groups = Lazy((lambda : hydra.overlay.python.lib.lists.filter((lambda g: hydra.overlay.python.lib.logic.not_(hydra.overlay.python.lib.lists.is_empty(g))),
311
- hydra.overlay.python.lib.lists.cons(comment_group(), stmts))))
312
- return hydra.overlay.python.lib.logic.if_else(hydra.overlay.python.lib.lists.is_empty(groups()),
313
- (lambda : cast(hydra.python.syntax.Block,
314
- hydra.python.syntax.BlockIndented(ConsList.of(ConsList.of(cast(hydra.python.syntax.Statement,
315
- hydra.python.syntax.StatementSimple(ConsList.of(py_expression_to_py_simple_statement(py_atom_to_py_expression(cast(hydra.python.syntax.Atom, hydra.python.syntax.AtomEllipsis()))))))))))),
316
- (lambda : cast(hydra.python.syntax.Block, hydra.python.syntax.BlockIndented(groups()))))
317
-
318
409
  def primary_and_params(prim: hydra.python.syntax.Primary, params: Sequence[hydra.python.syntax.Expression]) -> hydra.python.syntax.Expression:
319
410
  r"""Create a primary with parameters (subscript)."""
320
411
 
@@ -485,21 +576,6 @@ def return_single(expr: hydra.python.syntax.Expression) -> hydra.python.syntax.S
485
576
  return py_simple_statement_to_py_statement(cast(hydra.python.syntax.SimpleStatement,
486
577
  hydra.python.syntax.SimpleStatementReturn(hydra.python.syntax.ReturnStatement(ConsList.of(cast(hydra.python.syntax.StarExpression, hydra.python.syntax.StarExpressionSimple(expr)))))))
487
578
 
488
- @lru_cache(1)
489
- def self_only_params() -> hydra.python.syntax.Parameters:
490
- return cast(hydra.python.syntax.Parameters,
491
- hydra.python.syntax.ParametersParamNoDefault(hydra.python.syntax.ParamNoDefaultParameters(ConsList.of(hydra.python.syntax.ParamNoDefault(hydra.python.syntax.Param(hydra.python.syntax.Name("self"), None_()), None_())),
492
- ConsList.of(),
493
- None_())))
494
-
495
- @lru_cache(1)
496
- def self_other_params() -> hydra.python.syntax.Parameters:
497
- return cast(hydra.python.syntax.Parameters,
498
- hydra.python.syntax.ParametersParamNoDefault(hydra.python.syntax.ParamNoDefaultParameters(ConsList.of(hydra.python.syntax.ParamNoDefault(hydra.python.syntax.Param(hydra.python.syntax.Name("self"), None_()), None_()),
499
- hydra.python.syntax.ParamNoDefault(hydra.python.syntax.Param(hydra.python.syntax.Name("other"), None_()), None_())),
500
- ConsList.of(),
501
- None_())))
502
-
503
579
  def single_quoted_string(s: str) -> hydra.python.syntax.Expression:
504
580
  r"""Create a single-quoted string expression."""
505
581
 
@@ -1,123 +0,0 @@
1
- {
2
- "digestFormatVersion": 2,
3
- "moduleFormatVersion": 1,
4
- "generator": "3fcbb2c3eed9a625",
5
- "generation": {
6
- "generatorId": "3fcbb2c3eed9a625",
7
- "mode": "published",
8
- "host": "python",
9
- "hydraVersion": "0.17.5",
10
- "revision": "b0b667ab7e",
11
- "timestamp": "2026-08-30T21:12:52Z"},
12
- "selfHash": "9d63be6fefd1f95d501eb1ca75f52604f6b5ef6a37d02fe79ac24ae4608433e9",
13
- "dependencyHashes": [{"key": "hydra-kernel", "value": "21db6cd59e90695a747e6be08ce6759422f84c88efd511d09ecd00fae34e4c7a"}],
14
- "inputs": [
15
- {
16
- "key": "hydra.python.coder",
17
- "value": {"kind": "other", "hash": "0f6f038ef11ca726af501d1483716d1d5adff54e3c03e9a1f2cb61875260f4f7"}},
18
- {
19
- "key": "hydra.python.environment",
20
- "value": {"kind": "other", "hash": "663b02271ddd4a6ad9ab8a2bdc152a64802a675a59280909f605d6dedcc4017e"}},
21
- {
22
- "key": "hydra.python.language",
23
- "value": {"kind": "other", "hash": "78fb867a1d0fa6654f46f5d9fd72c2c5607d2934b7c7fbd5f5d830786b4ad91e"}},
24
- {
25
- "key": "hydra.python.names",
26
- "value": {"kind": "other", "hash": "5bc2e53c63d41de79877fbe331aada2c7f43175b09d4245b7ac61cf8261b0ca3"}},
27
- {
28
- "key": "hydra.python.pyproject",
29
- "value": {"kind": "other", "hash": "249512648b2b008db234ee348a72056d4d625cfeb0a80d8caacbda95002569a2"}},
30
- {
31
- "key": "hydra.python.serde",
32
- "value": {"kind": "other", "hash": "8d35f12f8ef3aa33db2064a266d6c97a31e2c8675a6f77005cdb011b01597b8a"}},
33
- {
34
- "key": "hydra.python.syntax",
35
- "value": {"kind": "other", "hash": "88a9154b48fd429f06efa0ba8981bdf12af3fed4de5a057b3304fadc623dbc19"}},
36
- {
37
- "key": "hydra.python.testing",
38
- "value": {"kind": "other", "hash": "52629d9f9aba82fbae03c9250b42d962eea9b2cdfde77c02466282ab95c51b5b"}},
39
- {
40
- "key": "hydra.python.utils",
41
- "value": {"kind": "other", "hash": "dee99428120e9ed4b418ca438480434cc967a13ac1d918385d9fb2b1d76afeb7"}},
42
- {
43
- "key": "jsonContent:hydra/dsl/python/environment.json",
44
- "value": {"kind": "other", "hash": "684965cea67ad57d492b50f408c6575f679b073c5de5e76826fb0941da86ec21"}},
45
- {
46
- "key": "jsonContent:hydra/dsl/python/names.json",
47
- "value": {"kind": "other", "hash": "2118b0194fde923feeda9877728e6a50813601ad5892dc122f3cf577e35bff6f"}},
48
- {
49
- "key": "jsonContent:hydra/dsl/python/syntax.json",
50
- "value": {"kind": "other", "hash": "a99b94b1f3e542d606da15fd6dafa32d858ce7d71ba02f7b21d8bb4881daa4e3"}},
51
- {
52
- "key": "jsonContent:hydra/dsl/python/utils.json",
53
- "value": {"kind": "other", "hash": "7a3b84d522c420db0db03a77f9e54635b33544f73eb49ed67cdc3a4d5dac04ae"}},
54
- {
55
- "key": "jsonContent:hydra/python/coder.json",
56
- "value": {"kind": "other", "hash": "ebc4bdd1c21d9af2f90f408414d22313b1d1c2750f6c792c2ebed8ea9793336e"}},
57
- {
58
- "key": "jsonContent:hydra/python/environment.json",
59
- "value": {"kind": "other", "hash": "27b358d874d0de0b7cd8b2ded9194c6ae0ac30069f26eb6d658e768ff9414825"}},
60
- {
61
- "key": "jsonContent:hydra/python/language.json",
62
- "value": {"kind": "other", "hash": "f5f154079126771b9af2a4df8e53a4e9c75bb44ee3f154f4f0ce762744785b88"}},
63
- {
64
- "key": "jsonContent:hydra/python/names.json",
65
- "value": {"kind": "other", "hash": "6997d344c45c2a774b8e5d354f67c06358a7f06c91317d6100b25573cb11b7ab"}},
66
- {
67
- "key": "jsonContent:hydra/python/pyproject.json",
68
- "value": {"kind": "other", "hash": "eacea3b3d38c4890c693a012d3cd71f02e96c25c131cef8a0aa90a30442f8a7f"}},
69
- {
70
- "key": "jsonContent:hydra/python/serde.json",
71
- "value": {"kind": "other", "hash": "1428720f350e9f76ab293116b4ebf7d384d8e78dc6b62f5220d3ef30c26f9585"}},
72
- {
73
- "key": "jsonContent:hydra/python/syntax.json",
74
- "value": {"kind": "other", "hash": "a6ddfec03413c23fd3830501c58eb4350b046b6b654faa51f49ffe9aab5b995c"}},
75
- {
76
- "key": "jsonContent:hydra/python/testing.json",
77
- "value": {"kind": "other", "hash": "eb35348cdf17021c1480d2b3ec001d4e5326f7d5b934325cb7294553d2ff64d2"}},
78
- {
79
- "key": "jsonContent:hydra/python/utils.json",
80
- "value": {"kind": "other", "hash": "cae0b4fac77fdae05b5592f671b9c58f84d3374f94acbe3d49f27962096d1a5e"}},
81
- {
82
- "key": "jsonContent:manifest.json",
83
- "value": {"kind": "other", "hash": "3f94b521766d042381d7bee84596308ea4e35c7e8fb45f8fd8338a8dbe27a0ac"}}],
84
- "outputs": [
85
- {
86
- "key": "hydra/dsl/python/environment.py",
87
- "value": {"kind": "targetFile", "hash": "17b22fcaf759f776c959d41a749f506ff3c302815791e189a506c3f1af344f2c"}},
88
- {
89
- "key": "hydra/dsl/python/names.py",
90
- "value": {"kind": "targetFile", "hash": "c571b01c5d149d3e6f587ef4524c5b065dae0ffba1b44617197f68fc1a6122fb"}},
91
- {
92
- "key": "hydra/dsl/python/syntax.py",
93
- "value": {"kind": "targetFile", "hash": "5fe1c0c739cdac68d1b90d768153e23ebe7c805bafb96ac698a95425e2d7d7b5"}},
94
- {
95
- "key": "hydra/dsl/python/utils.py",
96
- "value": {"kind": "targetFile", "hash": "3fed9996a3f875a53675b6c8620884949adf7d155b0e68cacfba9007d5d07b29"}},
97
- {
98
- "key": "hydra/python/coder.py",
99
- "value": {"kind": "targetFile", "hash": "d7e39526e1f7802a5af9d6ea57596766be03b9e16505095c57597f8903683461"}},
100
- {
101
- "key": "hydra/python/environment.py",
102
- "value": {"kind": "targetFile", "hash": "1036eb9d285ba3e98c85095820f2e77900334340c9f0223fd4dfd6b3e847f4df"}},
103
- {
104
- "key": "hydra/python/language.py",
105
- "value": {"kind": "targetFile", "hash": "7ea0c3a6015ec1de92aebeed0963c1af9f3b70c8d57815e477c528c795383604"}},
106
- {
107
- "key": "hydra/python/names.py",
108
- "value": {"kind": "targetFile", "hash": "3e8498f205a99ebfaa570a44ccac515b69ced9d7f3669a32f74d4d05d48204b6"}},
109
- {
110
- "key": "hydra/python/pyproject.py",
111
- "value": {"kind": "targetFile", "hash": "1f9001d8d2273d4783105e099b874c273ce520b58456f9b447cb8d5e9a6a37d7"}},
112
- {
113
- "key": "hydra/python/serde.py",
114
- "value": {"kind": "targetFile", "hash": "1f36ea2dc8c50df72abe464cd395689c71f0af70a9f78e68d26013f9b436c383"}},
115
- {
116
- "key": "hydra/python/syntax.py",
117
- "value": {"kind": "targetFile", "hash": "24a72af882b47d80cc930f16f51a3e9c1a71c9d8da47a921829f40e847459fca"}},
118
- {
119
- "key": "hydra/python/testing.py",
120
- "value": {"kind": "targetFile", "hash": "5c8f352d976eeeebf14974e9df208b53c8db59810fdbd76e6454868627122635"}},
121
- {
122
- "key": "hydra/python/utils.py",
123
- "value": {"kind": "targetFile", "hash": "2cfa00436ebc27925f9b45380792aa817921bb7dbaf88e0c17cfb51bbe3c82fc"}}]}
File without changes
File without changes
File without changes