arpakitlib 1.8.262__py3-none-any.whl → 1.8.264__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.
@@ -12,11 +12,14 @@ def clone_pydantic_model_fields(
12
12
  model_cls: Type[BaseModel],
13
13
  fields_to_remove: Iterable[str] | None = None,
14
14
  new_class_name: str | None = None,
15
+ class_name_prefix: str | None = "Cloned"
15
16
  ) -> Type[BaseModel]:
16
17
  if fields_to_remove is None:
17
18
  fields_to_remove = set()
19
+ if class_name_prefix is None:
20
+ class_name_prefix = "Cloned"
18
21
  if new_class_name is None:
19
- new_class_name = f"{model_cls.__name__}Cloned"
22
+ new_class_name = f"{model_cls.__name__}{class_name_prefix}"
20
23
 
21
24
  field_defs: dict[str, tuple[type[Any], Any]] = {}
22
25
 
@@ -33,9 +36,13 @@ def clone_pydantic_model_fields(
33
36
 
34
37
  field_defs[field_name] = ((field_.annotation or Any), default)
35
38
 
39
+ model_config = dict(getattr(model_cls, "model_config", {}))
40
+
36
41
  return create_model(
37
42
  new_class_name,
38
43
  __base__=BaseModel,
44
+ __config__=model_config,
45
+ __module__=model_cls.__module__,
39
46
  **field_defs,
40
47
  )
41
48
 
@@ -115,7 +115,8 @@ def pydantic_schema_from_sqlalchemy_model(
115
115
  filter_property_prefixes: list[str] | None = None,
116
116
  remove_property_prefixes: list[str] | None = None,
117
117
  skip_property_if_cannot_define_type: bool = True,
118
- skip_property_name_if_exists: bool = True
118
+ skip_property_name_if_exists: bool = True,
119
+ model_name_suffix: str = "Schema"
119
120
  ) -> type[BaseModel]:
120
121
  """
121
122
  Генерирует Pydantic-модель из колонок SQLAlchemy-модели и (опционально) из @property.
@@ -128,7 +129,7 @@ def pydantic_schema_from_sqlalchemy_model(
128
129
  - exclude_property_names: blacklist имён свойств (исключаются после whitelist'а).
129
130
  """
130
131
  mapper = inspect(sqlalchemy_model).mapper
131
- model_name = model_name or f"{sqlalchemy_model.__name__}Schema"
132
+ model_name = model_name or f"{sqlalchemy_model.__name__}{model_name_suffix}"
132
133
 
133
134
  annotations: dict[str, Any] = {}
134
135
  attrs: dict[str, Any] = {}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: arpakitlib
3
- Version: 1.8.262
3
+ Version: 1.8.264
4
4
  Summary: arpakitlib
5
5
  License: Apache-2.0
6
6
  Keywords: arpakitlib,arpakit,arpakit-company,arpakitcompany,arpakit_company
@@ -388,7 +388,7 @@ arpakitlib/ar_base_worker_util.py,sha256=e-Vj9w1D-59KN3Zz7TQlOB2lW4fZphJlsPpFkmX
388
388
  arpakitlib/ar_blank_util.py,sha256=qFUdY8usL_pRYamz8Rw1fW3fzNIgrLmpdYP8q-_PQvw,2281
389
389
  arpakitlib/ar_cache_file_util.py,sha256=Fo2pH-Zqm966KWFBHG_pbiySGZvhIFCYqy7k1weRfJ0,3476
390
390
  arpakitlib/ar_class_util.py,sha256=i76pQW_7k_S2m_DlQh6xNjtggv9Col3WSx9W_bwk98E,722
391
- arpakitlib/ar_clone_pydantic_model_fields.py,sha256=xxLwtvJzDf8EWMvBE4psWIj8c-cyeCxLRX76oCY_4zk,1214
391
+ arpakitlib/ar_clone_pydantic_model_fields.py,sha256=Uzv21DsOCknnuTlKRvMZshra6NooudUcrF73WU45FXY,1486
392
392
  arpakitlib/ar_datetime_util.py,sha256=Xe1NiT9oPQzNSG7RVRkhukhbg4i-hhS5ImmV7sPUc8o,971
393
393
  arpakitlib/ar_dict_util.py,sha256=oet-9AJEjQZfG_EI82BuYW0jdW2NQxKjPXol_nfTXjw,447
394
394
  arpakitlib/ar_dream_ai_api_client_util.py,sha256=Z1oii_XSsgunYx17SdcHl54S4KPQti7-MJs0xXZ8vL0,2830
@@ -414,7 +414,7 @@ arpakitlib/ar_need_type_util.py,sha256=XmY1kswz8j9oo5f9CxRu0_zgfvxWrXPYKOj6MM04s
414
414
  arpakitlib/ar_openai_api_client_util.py,sha256=dWgsSPXtxNBxS5VRi_NharGQrUXF_YjIfhU3Bj5cW9M,5651
415
415
  arpakitlib/ar_parse_command.py,sha256=1WTdQoWVshoDZ1jDaKeTzajfqaYHP3FNO0-REyo1aMY,3003
416
416
  arpakitlib/ar_postgresql_util.py,sha256=1AuLjEaa1Lg4pzn-ukCVnDi35Eg1k91APRTqZhIJAdo,945
417
- arpakitlib/ar_pydantic_schema_from_sqlalchemy_model.py,sha256=xJ5sQmkraMY5IAQGgNSo-Rd6qkObiZyQe9H11DzQCOo,10332
417
+ arpakitlib/ar_pydantic_schema_from_sqlalchemy_model.py,sha256=jUa9i3UWqK0Qyfq8jMcnwTUCoI3e_N4W36aEcxdLXBA,10388
418
418
  arpakitlib/ar_raise_own_exception_if_exception.py,sha256=A6TuNSBk1pHaQ_qxnUmE2LgsNGA1IGqX26b1_HEA4Nc,5978
419
419
  arpakitlib/ar_rat_func_util.py,sha256=Ca10o3RJwyx_DJLxjTxgHDO6NU3M6CWgUR4bif67OE4,2006
420
420
  arpakitlib/ar_really_validate_email.py,sha256=HBfhyiDB3INI6Iq6hR2WOMKA5wVWWRl0Qun-x__OZ9o,1201
@@ -430,8 +430,8 @@ arpakitlib/ar_sqlalchemy_util.py,sha256=FDva9onjtCPrYZYIHHb93NMwD1WlmaORjiWgPRJQ
430
430
  arpakitlib/ar_str_util.py,sha256=2lGpnXDf2h1cBZpVf5i1tX_HCv5iBd6IGnrCw4QWWlY,4350
431
431
  arpakitlib/ar_type_util.py,sha256=Cs_tef-Fc5xeyAF54KgISCsP11NHyzIsglm4S3Xx7iM,4049
432
432
  arpakitlib/ar_yookassa_api_client_util.py,sha256=VozuZeCJjmLd1zj2BdC9WfiAQ3XYOrIMsdpNK-AUlm0,5347
433
- arpakitlib-1.8.262.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
434
- arpakitlib-1.8.262.dist-info/METADATA,sha256=25miMynKGzgmjRW3agldAlkgYwYZbyOiTQbl4GRMfkE,3919
435
- arpakitlib-1.8.262.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
436
- arpakitlib-1.8.262.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
437
- arpakitlib-1.8.262.dist-info/RECORD,,
433
+ arpakitlib-1.8.264.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
434
+ arpakitlib-1.8.264.dist-info/METADATA,sha256=IAmxjxkolW0OP9dBRBseozIznelLi1-hkhWuLkuWubY,3919
435
+ arpakitlib-1.8.264.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
436
+ arpakitlib-1.8.264.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
437
+ arpakitlib-1.8.264.dist-info/RECORD,,