amsdal_utils 0.4.5__tar.gz → 0.5.0__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 (73) hide show
  1. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/PKG-INFO +1 -1
  2. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/change-logs.md +6 -0
  3. amsdal_utils-0.5.0/latest-changelogs.md +5 -0
  4. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/__about__.py +1 -1
  5. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/models/data_models/core.py +34 -2
  6. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/schemas/schema.py +10 -2
  7. amsdal_utils-0.4.5/latest-changelogs.md +0 -5
  8. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/.editorconfig +0 -0
  9. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/.gitignore +0 -0
  10. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/CONTRIBUTING.md +0 -0
  11. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/LICENSE.txt +0 -0
  12. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/README.md +0 -0
  13. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/license_check.py +0 -0
  14. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/pyproject.toml +0 -0
  15. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/release_notes/.gitkeep +0 -0
  16. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/scripts/release.sh +0 -0
  17. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/scripts/tag_check.sh +0 -0
  18. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/Third-Party Materials - AMSDAL Dependencies - License Notices.md +0 -0
  19. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/__init__.py +0 -0
  20. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/classes/__init__.py +0 -0
  21. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/classes/metadata_manager.py +0 -0
  22. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/classes/transaction_manager.py +0 -0
  23. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/classes/version_manager.py +0 -0
  24. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/config/__init__.py +0 -0
  25. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/config/data_models/__init__.py +0 -0
  26. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/config/data_models/amsdal_config.py +0 -0
  27. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/config/data_models/connection_config.py +0 -0
  28. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/config/data_models/integration_config.py +0 -0
  29. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/config/data_models/repository_config.py +0 -0
  30. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/config/data_models/resources_config.py +0 -0
  31. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/config/enums.py +0 -0
  32. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/config/manager.py +0 -0
  33. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/errors.py +0 -0
  34. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/lifecycle/__init__.py +0 -0
  35. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/lifecycle/consumer.py +0 -0
  36. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/lifecycle/enum.py +0 -0
  37. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/lifecycle/producer.py +0 -0
  38. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/models/__init__.py +0 -0
  39. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/models/base.py +0 -0
  40. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/models/data_models/__init__.py +0 -0
  41. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/models/data_models/address.py +0 -0
  42. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/models/data_models/enums.py +0 -0
  43. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/models/data_models/metadata.py +0 -0
  44. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/models/data_models/reference.py +0 -0
  45. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/models/data_models/table_schema.py +0 -0
  46. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/models/data_models/transaction.py +0 -0
  47. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/models/enums.py +0 -0
  48. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/models/mixins/__init__.py +0 -0
  49. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/models/mixins/cached_mixin.py +0 -0
  50. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/models/utils/__init__.py +0 -0
  51. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/models/utils/get_subclasses.py +0 -0
  52. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/models/utils/reference_builders.py +0 -0
  53. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/py.typed +0 -0
  54. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/query/__init__.py +0 -0
  55. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/query/data_models/__init__.py +0 -0
  56. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/query/data_models/filter.py +0 -0
  57. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/query/data_models/order_by.py +0 -0
  58. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/query/data_models/paginator.py +0 -0
  59. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/query/data_models/query_specifier.py +0 -0
  60. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/query/enums.py +0 -0
  61. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/query/mixin.py +0 -0
  62. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/query/pull_out_filter.py +0 -0
  63. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/query/split.py +0 -0
  64. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/query/utils.py +0 -0
  65. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/schemas/__init__.py +0 -0
  66. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/schemas/interfaces.py +0 -0
  67. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/utils/__init__.py +0 -0
  68. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/utils/classes.py +0 -0
  69. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/utils/decorators.py +0 -0
  70. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/utils/identifier.py +0 -0
  71. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/utils/lazy_object.py +0 -0
  72. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/utils/singleton.py +0 -0
  73. {amsdal_utils-0.4.5 → amsdal_utils-0.5.0}/src/amsdal_utils/utils/text.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: amsdal_utils
3
- Version: 0.4.5
3
+ Version: 0.5.0
4
4
  Summary: Utils for AMSDAL data framework
5
5
  Project-URL: Documentation, https://pypi.org/project/amsdal_utils/#readme
6
6
  Project-URL: Issues, https://pypi.org/project/amsdal_utils/#issues
@@ -1,3 +1,9 @@
1
+ ## [v0.5.0](https://pypi.org/project/amsdal_utils/0.5.0/) - 2024-05-19
2
+
3
+ ### Added
4
+
5
+ - Storage metadata. Support multi-types via `|` separator
6
+
1
7
  ## [v0.4.5](https://pypi.org/project/amsdal_utils/0.4.5/) - 2024-05-16
2
8
 
3
9
  ### Added
@@ -0,0 +1,5 @@
1
+ ## [v0.5.0](https://pypi.org/project/amsdal_utils/0.5.0/) - 2024-05-19
2
+
3
+ ### Added
4
+
5
+ - Storage metadata. Support multi-types via `|` separator
@@ -1,4 +1,4 @@
1
1
  # SPDX-FileCopyrightText: 2023-present
2
2
  #
3
3
  # SPDX-License-Identifier: AMSDAL End User License Agreement
4
- __version__ = '0.4.5'
4
+ __version__ = '0.5.0'
@@ -72,6 +72,24 @@ class LegacyDictSchema(BaseModel):
72
72
  value_type: str
73
73
 
74
74
 
75
+ def process_one_of(data: dict[str, Any]) -> dict[str, Any]:
76
+ one_of = [
77
+ ao
78
+ for ao in data.pop('oneOf')
79
+ if ao not in [{'type': 'null'}, {'$ref': '#/$defs/Reference'}, {'$ref': '#/$defs/LegacyModel'}]
80
+ ]
81
+
82
+ for _one_of_item in one_of:
83
+ if not _one_of_item or '$ref' not in _one_of_item:
84
+ msg = f'Multiple oneOf should contain $ref. Currently: {one_of}'
85
+ raise ValueError(msg)
86
+
87
+ _types = [_one_of_item['$ref'].rsplit('/', 1)[-1] for _one_of_item in one_of]
88
+ data['type'] = '|'.join(_types)
89
+
90
+ return data
91
+
92
+
75
93
  def process_any_of(data: dict[str, Any], info: ValidationInfo) -> dict[str, Any]:
76
94
  _any_of = data.pop('anyOf')
77
95
  if _any_of in [[{'$ref': '#/$defs/Reference'}], [{'$ref': '#/$defs/Reference'}, {'type': 'null'}]]:
@@ -85,8 +103,13 @@ def process_any_of(data: dict[str, Any], info: ValidationInfo) -> dict[str, Any]
85
103
  ]
86
104
 
87
105
  if len(any_of) != 1:
88
- err_type = 'invalid_data'
89
- raise PydanticCustomError(err_type, 'Data must have exactly one non-null type in "anyOf"')
106
+ for _any_of_item in any_of:
107
+ if not _any_of_item or '$ref' not in _any_of_item:
108
+ msg = f'Multiple anyOf should contain $ref. Currently: {any_of}'
109
+ raise ValueError(msg)
110
+ _types = [_any_of_item['$ref'].rsplit('/', 1)[-1] for _any_of_item in any_of]
111
+
112
+ data['type'] = '|'.join(_types)
90
113
 
91
114
  _any_of_element = any_of[0]
92
115
 
@@ -186,6 +209,15 @@ class TypeData(BaseModel, extra='allow'):
186
209
  if 'anyOf' in data:
187
210
  data = process_any_of(data, info)
188
211
 
212
+ if 'oneOf' in data:
213
+ data = process_one_of(data)
214
+
215
+ if 'discriminator' in data and isinstance(data['discriminator'], dict):
216
+ try:
217
+ data['discriminator'] = data['discriminator']['propertyName']
218
+ except:
219
+ raise
220
+
189
221
  if 'type' not in data:
190
222
  data['type'] = 'object'
191
223
 
@@ -30,7 +30,6 @@ class PropertyData(TypeData, extra='allow'):
30
30
  field_name (str | None): The name of the field.
31
31
  field_id (str | None): The ID of the field.
32
32
  is_deleted (bool): Indicates if the property is deleted.
33
- db_field (list[str] | None): The database fields.
34
33
  """
35
34
 
36
35
  title: str | None = None
@@ -38,7 +37,7 @@ class PropertyData(TypeData, extra='allow'):
38
37
  field_name: str | None = None
39
38
  field_id: str | None = None
40
39
  is_deleted: bool = False
41
- db_field: list[str] | None = None
40
+ discriminator: str | None = None
42
41
 
43
42
  @model_validator(mode='before')
44
43
  @classmethod
@@ -101,6 +100,14 @@ class PropertyData(TypeData, extra='allow'):
101
100
  return self
102
101
 
103
102
 
103
+ class StorageMetadata(BaseModel, extra='allow'):
104
+ table_name: str | None = Field(None, title='Table name')
105
+ db_fields: dict[str, list[str]] | None = Field(None, title='Database property to fields mapping')
106
+ primary_key: list[str] | None = Field(None, title='Primary key fields')
107
+ indexed: list[list[str]] | None = Field(None, title='Indexed')
108
+ unique: list[list[str]] | None = Field(None, title='Unique Fields')
109
+
110
+
104
111
  class ObjectSchema(BaseModel, extra='allow'):
105
112
  r"""
106
113
  Schema for an object.
@@ -127,6 +134,7 @@ class ObjectSchema(BaseModel, extra='allow'):
127
134
  options: list[OptionItemData] | None = None
128
135
  meta_class: str = MetaClasses.CLASS_OBJECT.value
129
136
  custom_code: str | None = None
137
+ storage_metadata: StorageMetadata | None = None
130
138
 
131
139
  @model_validator(mode='before')
132
140
  @classmethod
@@ -1,5 +0,0 @@
1
- ## [v0.4.5](https://pypi.org/project/amsdal_utils/0.4.5/) - 2024-05-16
2
-
3
- ### Added
4
-
5
- - Added support for optional References in models
File without changes
File without changes
File without changes
File without changes