sera-2 1.26.4__py3-none-any.whl → 1.26.5__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.
@@ -117,7 +117,7 @@ def make_query(schema: Schema, cls: Class, pkg: Package):
117
117
  query_ops.append(('"eq" | "ne"', tstype.type))
118
118
  elif tstype.type == "Date":
119
119
  # for date type, we use iso string as the value
120
- query_ops.append(('"eq" | "ne" | "lt" | "lte" | "gt" | "gte"', "string"))
120
+ query_ops.append(('"lte" | "gte"', "string"))
121
121
  query_ops.append(('"bti"', "[string, string]"))
122
122
  else:
123
123
  raise NotImplementedError(tstype.type)
sera/models/_datatype.py CHANGED
@@ -287,6 +287,22 @@ predefined_datatypes = {
287
287
  tstype=TsTypeWithDep(type="string", spectype="dict"),
288
288
  is_list=False,
289
289
  ),
290
+ "str2str": DataType(
291
+ pytype=PyTypeWithDep(type="dict[str, str]"),
292
+ sqltype=SQLTypeWithDep(
293
+ type="JSON", mapped_pytype="dict[str, str]", deps=["sqlalchemy.JSON"]
294
+ ),
295
+ tstype=TsTypeWithDep(type="Record<string, string>", spectype="str2str"),
296
+ is_list=False,
297
+ ),
298
+ "str2int": DataType(
299
+ pytype=PyTypeWithDep(type="dict[str, int]"),
300
+ sqltype=SQLTypeWithDep(
301
+ type="JSON", mapped_pytype="dict[str, int]", deps=["sqlalchemy.JSON"]
302
+ ),
303
+ tstype=TsTypeWithDep(type="Record<string, number>", spectype="str2int"),
304
+ is_list=False,
305
+ ),
290
306
  }
291
307
 
292
308
  predefined_py_datatypes = {"bytes": PyTypeWithDep(type="bytes")}
sera/models/_parse.py CHANGED
@@ -275,6 +275,14 @@ def _parse_datatype(schema: Schema, datatype: dict | str) -> DataType:
275
275
  if isinstance(datatype, dict):
276
276
  is_list = datatype.get("is_list", False)
277
277
 
278
+ # Parse Python type and argument if present
279
+ if datatype["pytype"] in predefined_py_datatypes:
280
+ py_type = predefined_py_datatypes[datatype["pytype"]]
281
+ else:
282
+ py_type = PyTypeWithDep(
283
+ type=datatype["pytype"]["type"], deps=datatype["pytype"].get("deps", [])
284
+ )
285
+
278
286
  # Parse SQL type and argument if present
279
287
  m = re.match(r"^([a-zA-Z0-9_]+)(\([^)]+\))?$", datatype["sqltype"])
280
288
  if m is not None:
@@ -291,7 +299,7 @@ def _parse_datatype(schema: Schema, datatype: dict | str) -> DataType:
291
299
  raise ValueError(f"Invalid SQL type format: {datatype['sqltype']}")
292
300
 
293
301
  return DataType(
294
- pytype=predefined_py_datatypes[datatype["pytype"]],
302
+ pytype=py_type,
295
303
  sqltype=sql_type,
296
304
  tstype=predefined_ts_datatypes[datatype["tstype"]],
297
305
  is_list=is_list,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sera-2
3
- Version: 1.26.4
3
+ Version: 1.26.5
4
4
  Summary:
5
5
  Author: Binh Vu
6
6
  Author-email: bvu687@gmail.com
@@ -33,7 +33,7 @@ sera/make/ts_frontend/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
33
33
  sera/make/ts_frontend/make_class_schema.py,sha256=JrUNBl5yJSbVFrdGcuC7sG0A-HhmXl24VJWCTVkDh8I,14458
34
34
  sera/make/ts_frontend/make_draft_model.py,sha256=LY1HP6BuEmtxEevqAWMe-GJyTbK-yDIsUjLjZdd-0Rg,32570
35
35
  sera/make/ts_frontend/make_enums.py,sha256=3U6Dt5Y4DM6D_ZiitcVHXtNQyA9cTE046WCDQCDOvSU,2596
36
- sera/make/ts_frontend/make_query.py,sha256=YnUBwMW_3LRJBoV2dpim6M6ouNhPPloCT2YBEBLgU7M,5731
36
+ sera/make/ts_frontend/make_query.py,sha256=ZpNhVEQn59xk16kMmM6HcwKy_9WpvdeFx0h1xCoCbeA,5703
37
37
  sera/make/ts_frontend/misc.py,sha256=A54nMg4dsn1AC_6T1tFRW3rZAJ71d7SHEMrFOdsI3jo,1011
38
38
  sera/misc/__init__.py,sha256=ee7OODdWPKP8pCDxsfg1EOdxxKFMJCoNMljgV0NCxBw,767
39
39
  sera/misc/_formatter.py,sha256=aCGYL08l8f3aLODHxSocxBBwkRYEo3K1QzCDEn3suj0,1685
@@ -42,15 +42,15 @@ sera/models/__init__.py,sha256=ZCnwzgUXhmHEcx5a7nYLopsBXJmSnfSkjt4kUH_vPnM,833
42
42
  sera/models/_class.py,sha256=495nP6j4pZIX1j0ZElUHNxe9doUX7vzSIwVrp_lAOHE,2922
43
43
  sera/models/_collection.py,sha256=5VsjmPMlZW-fYvcoYWOKD7Ch34zBYe4EPsjAn6bX7BY,2962
44
44
  sera/models/_constraints.py,sha256=SwUkvV8sESfuO3En6keA_r8GxKiarXYxMb5biml63lU,2021
45
- sera/models/_datatype.py,sha256=OlCnQlEpB4w9doz0hPhaZk5d4sF664CdGznSBvx0X9g,10293
45
+ sera/models/_datatype.py,sha256=0tut54rLErfzx0--S4Plf_YPsu0jKiFSSXHY1acOgU8,10921
46
46
  sera/models/_default.py,sha256=ABggW6qdPR4ZDqIPJdJ0GCGQ-7kfsfZmQ_DchgZEa-I,137
47
47
  sera/models/_enum.py,sha256=FRtEfto2httDB308W8OAuHh2LSazV3v16DHixlz1IZA,2088
48
48
  sera/models/_module.py,sha256=0jWfzb5iMF4IazeOKd_m9hWe7-xIsz7xlWF6mbdnHxw,5394
49
49
  sera/models/_multi_lingual_string.py,sha256=JETN6k00VH4wrA4w5vAHMEJV8fp3SY9bJebskFTjQLA,1186
50
- sera/models/_parse.py,sha256=nihBEDni-jKwecSBagd6bupDOuCzGviuoD9u6-rT64Q,13203
50
+ sera/models/_parse.py,sha256=ft5RbsBqkxxKcMOU6Bn_70ai0Lpo4FK2Shdmt4BjX-Q,13498
51
51
  sera/models/_property.py,sha256=Qo23KZl5OQNbuceygicgC3_Yv5ve1KxiFiMoWq6Ljj0,7758
52
52
  sera/models/_schema.py,sha256=VxJEiqgVvbXgcSUK4UW6JnRcggk4nsooVSE6MyXmfNY,1636
53
53
  sera/typing.py,sha256=7S6Ah-Yfcl8a0xAJ4lxEcguq3rYVM7SBeOiuxyJhC04,1089
54
- sera_2-1.26.4.dist-info/METADATA,sha256=9tRFamnahw1dsWTpsIeoBGCkF8pLU2o6rNlQG2PExbA,987
55
- sera_2-1.26.4.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
56
- sera_2-1.26.4.dist-info/RECORD,,
54
+ sera_2-1.26.5.dist-info/METADATA,sha256=5gvMEmoiQVFWW9BlLdaDy9YP-gMSAl8DwL02QYGaSI0,987
55
+ sera_2-1.26.5.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
56
+ sera_2-1.26.5.dist-info/RECORD,,