replit-river 0.17.12__py3-none-any.whl → 0.17.13__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.
- replit_river/codegen/client.py +29 -0
- {replit_river-0.17.12.dist-info → replit_river-0.17.13.dist-info}/METADATA +1 -1
- {replit_river-0.17.12.dist-info → replit_river-0.17.13.dist-info}/RECORD +5 -5
- {replit_river-0.17.12.dist-info → replit_river-0.17.13.dist-info}/WHEEL +1 -1
- {replit_river-0.17.12.dist-info → replit_river-0.17.13.dist-info}/licenses/LICENSE +0 -0
replit_river/codegen/client.py
CHANGED
|
@@ -101,6 +101,8 @@ class RiverConcreteType(BaseModel):
|
|
|
101
101
|
items: "RiverType | None" = Field(default=None)
|
|
102
102
|
const: str | int | None = Field(default=None)
|
|
103
103
|
patternProperties: dict[str, "RiverType"] = Field(default_factory=lambda: dict())
|
|
104
|
+
id_: str | None = Field(default=None, alias="$id")
|
|
105
|
+
ref: str | None = Field(default=None, alias="$ref")
|
|
104
106
|
|
|
105
107
|
|
|
106
108
|
class RiverUnionType(BaseModel):
|
|
@@ -158,7 +160,12 @@ def encode_type(
|
|
|
158
160
|
base_model: str,
|
|
159
161
|
in_module: list[ModuleName],
|
|
160
162
|
permit_unknown_members: bool,
|
|
163
|
+
type_registry: dict[str, TypeName] | None = None,
|
|
161
164
|
) -> tuple[TypeExpression, list[ModuleName], list[FileContents], set[TypeName]]:
|
|
165
|
+
# Registry to track $id -> TypeName mappings for resolving $ref
|
|
166
|
+
if type_registry is None:
|
|
167
|
+
type_registry = {}
|
|
168
|
+
|
|
162
169
|
def _make_open_union_type_expr(one_of: list[TypeExpression]) -> OpenUnionTypeExpr:
|
|
163
170
|
if base_model == "RiverError":
|
|
164
171
|
return OpenUnionTypeExpr(
|
|
@@ -175,6 +182,17 @@ def encode_type(
|
|
|
175
182
|
|
|
176
183
|
encoder_name: TypeName | None = None # defining this up here to placate mypy
|
|
177
184
|
chunks: list[FileContents] = []
|
|
185
|
+
|
|
186
|
+
# Handle $ref - return a forward reference to the registered type
|
|
187
|
+
if isinstance(type, RiverConcreteType) and type.ref is not None:
|
|
188
|
+
ref_id = type.ref
|
|
189
|
+
if ref_id in type_registry:
|
|
190
|
+
# Use forward reference string for the type
|
|
191
|
+
return (TypeName(f'"{type_registry[ref_id].value}"'), [], [], set())
|
|
192
|
+
else:
|
|
193
|
+
# Unknown ref, fall back to Any
|
|
194
|
+
return (TypeName("Any"), [], [], set())
|
|
195
|
+
|
|
178
196
|
if isinstance(type, RiverNotType):
|
|
179
197
|
return (NoneTypeExpr(), [], [], set())
|
|
180
198
|
elif isinstance(type, RiverUnionType):
|
|
@@ -269,6 +287,7 @@ def encode_type(
|
|
|
269
287
|
base_model,
|
|
270
288
|
in_module,
|
|
271
289
|
permit_unknown_members=permit_unknown_members,
|
|
290
|
+
type_registry=type_registry,
|
|
272
291
|
)
|
|
273
292
|
one_of.append(type_name)
|
|
274
293
|
chunks.extend(contents)
|
|
@@ -304,6 +323,7 @@ def encode_type(
|
|
|
304
323
|
base_model,
|
|
305
324
|
in_module,
|
|
306
325
|
permit_unknown_members=permit_unknown_members,
|
|
326
|
+
type_registry=type_registry,
|
|
307
327
|
)
|
|
308
328
|
one_of.append(type_name)
|
|
309
329
|
chunks.extend(contents)
|
|
@@ -377,6 +397,7 @@ def encode_type(
|
|
|
377
397
|
base_model,
|
|
378
398
|
in_module,
|
|
379
399
|
permit_unknown_members=permit_unknown_members,
|
|
400
|
+
type_registry=type_registry,
|
|
380
401
|
)
|
|
381
402
|
any_of.append(type_name)
|
|
382
403
|
chunks.extend(contents)
|
|
@@ -462,6 +483,7 @@ def encode_type(
|
|
|
462
483
|
base_model,
|
|
463
484
|
in_module,
|
|
464
485
|
permit_unknown_members=permit_unknown_members,
|
|
486
|
+
type_registry=type_registry,
|
|
465
487
|
)
|
|
466
488
|
elif isinstance(type, RiverConcreteType):
|
|
467
489
|
typeddict_encoder = list[str]()
|
|
@@ -509,6 +531,7 @@ def encode_type(
|
|
|
509
531
|
base_model,
|
|
510
532
|
in_module,
|
|
511
533
|
permit_unknown_members=permit_unknown_members,
|
|
534
|
+
type_registry=type_registry,
|
|
512
535
|
)
|
|
513
536
|
typeddict_encoder.append("TODO: dstewart")
|
|
514
537
|
return (ListTypeExpr(type_name), module_info, type_chunks, encoder_names)
|
|
@@ -523,10 +546,15 @@ def encode_type(
|
|
|
523
546
|
base_model,
|
|
524
547
|
in_module,
|
|
525
548
|
permit_unknown_members=permit_unknown_members,
|
|
549
|
+
type_registry=type_registry,
|
|
526
550
|
)
|
|
527
551
|
return (DictTypeExpr(type_name), module_info, type_chunks, encoder_names)
|
|
528
552
|
assert type.type == "object", type.type
|
|
529
553
|
|
|
554
|
+
# Register $id for this type so $ref can resolve to it
|
|
555
|
+
if type.id_ is not None:
|
|
556
|
+
type_registry[type.id_] = prefix
|
|
557
|
+
|
|
530
558
|
current_chunks: list[str] = [
|
|
531
559
|
f"class {render_literal_type(prefix)}({base_model}):"
|
|
532
560
|
]
|
|
@@ -551,6 +579,7 @@ def encode_type(
|
|
|
551
579
|
"BaseModel" if base_model == "RiverError" else base_model,
|
|
552
580
|
in_module,
|
|
553
581
|
permit_unknown_members=permit_unknown_members,
|
|
582
|
+
type_registry=type_registry,
|
|
554
583
|
)
|
|
555
584
|
encoder_name = None
|
|
556
585
|
chunks.extend(contents)
|
|
@@ -19,7 +19,7 @@ replit_river/transport_options.py,sha256=Kx3n6_x6sA69WV52EUvm-GzJhDaaewUQzbtcdPl
|
|
|
19
19
|
replit_river/websocket_wrapper.py,sha256=xrk421A5eXTH2bjAcNeBZN96zTO6xQsl0VS9qcwus6M,814
|
|
20
20
|
replit_river/codegen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
21
21
|
replit_river/codegen/__main__.py,sha256=LyKe1OXIyev0BuUcu43iu6zBLJzeogQ8DocxDkALD-Q,153
|
|
22
|
-
replit_river/codegen/client.py,sha256=
|
|
22
|
+
replit_river/codegen/client.py,sha256=LvNwtKd7apQyL7hhOscinhhfY2_IQZEEjRID88ImUSE,61189
|
|
23
23
|
replit_river/codegen/format.py,sha256=pLa9nWlw8hTOnjzZjMsMpgcmNYiLaF5VAHNQTwwJ7Zw,285
|
|
24
24
|
replit_river/codegen/run.py,sha256=InJaUDJft80pY7v2l-LoXHr8HYg3Bmb_6XQvlqgvxv4,3170
|
|
25
25
|
replit_river/codegen/schema.py,sha256=y3kzrEPgzW9gKMjqiF2souZk47mE_kuFkHlsxRdD560,5344
|
|
@@ -29,7 +29,7 @@ replit_river/v2/__init__.py,sha256=Fi4wP87qHOQwaWQmVbPJOOiGfkiZ6gTWg5bF5J8je5s,1
|
|
|
29
29
|
replit_river/v2/client.py,sha256=PQ1qz15lFTdMOs0kktBdzMUEYD66OnJJN0loYFVjdn4,7241
|
|
30
30
|
replit_river/v2/client_transport.py,sha256=swtsFoWIX8nnG5cBeHMkZSZsJ5SW-VbdNHBdLtldMgU,3445
|
|
31
31
|
replit_river/v2/session.py,sha256=8EMKw8bevoIrMfQBKMl3oXFlOJ91lzjmuqsm3qZN8Ts,54147
|
|
32
|
-
replit_river-0.17.
|
|
33
|
-
replit_river-0.17.
|
|
34
|
-
replit_river-0.17.
|
|
35
|
-
replit_river-0.17.
|
|
32
|
+
replit_river-0.17.13.dist-info/METADATA,sha256=qxC6HcTGBxbAXq-HNidfwfZOISeg7V6ZkFDTqVKkLP0,4794
|
|
33
|
+
replit_river-0.17.13.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
34
|
+
replit_river-0.17.13.dist-info/licenses/LICENSE,sha256=kyZ5E3kOH4dzPet_xD0w6xi04e-0fGT0HRMhKyLyLC0,1063
|
|
35
|
+
replit_river-0.17.13.dist-info/RECORD,,
|
|
File without changes
|