amsdal 0.4.10__cp312-cp312-macosx_10_13_universal2.whl → 0.5.33__cp312-cp312-macosx_10_13_universal2.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.
Files changed (163) hide show
  1. amsdal/Third-Party Materials - AMSDAL Dependencies - License Notices.md +28 -0
  2. amsdal/__about__.py +1 -1
  3. amsdal/__migrations__/0000_initial.py +22 -203
  4. amsdal/__migrations__/0001_create_class_file.py +61 -0
  5. amsdal/__migrations__/0002_create_class_file.py +109 -0
  6. amsdal/__migrations__/0003_update_class_file.py +91 -0
  7. amsdal/__migrations__/0004_update_class_file.py +45 -0
  8. amsdal/cloud/__init__.cpython-312-darwin.so +0 -0
  9. amsdal/cloud/client.cpython-312-darwin.so +0 -0
  10. amsdal/cloud/constants.cpython-312-darwin.so +0 -0
  11. amsdal/cloud/enums.cpython-312-darwin.so +0 -0
  12. amsdal/cloud/models/__init__.cpython-312-darwin.so +0 -0
  13. amsdal/cloud/models/base.cpython-312-darwin.so +0 -0
  14. amsdal/cloud/services/__init__.cpython-312-darwin.so +0 -0
  15. amsdal/cloud/services/actions/__init__.cpython-312-darwin.so +0 -0
  16. amsdal/cloud/services/actions/add_allowlist_ip.cpython-312-darwin.so +0 -0
  17. amsdal/cloud/services/actions/add_basic_auth.cpython-312-darwin.so +0 -0
  18. amsdal/cloud/services/actions/add_dependency.cpython-312-darwin.so +0 -0
  19. amsdal/cloud/services/actions/add_secret.cpython-312-darwin.so +0 -0
  20. amsdal/cloud/services/actions/base.cpython-312-darwin.so +0 -0
  21. amsdal/cloud/services/actions/create_deploy.cpython-312-darwin.so +0 -0
  22. amsdal/cloud/services/actions/create_env.cpython-312-darwin.so +0 -0
  23. amsdal/cloud/services/actions/create_session.cpython-312-darwin.so +0 -0
  24. amsdal/cloud/services/actions/delete_allowlist_ip.cpython-312-darwin.so +0 -0
  25. amsdal/cloud/services/actions/delete_basic_auth.cpython-312-darwin.so +0 -0
  26. amsdal/cloud/services/actions/delete_dependency.cpython-312-darwin.so +0 -0
  27. amsdal/cloud/services/actions/delete_env.cpython-312-darwin.so +0 -0
  28. amsdal/cloud/services/actions/delete_secret.cpython-312-darwin.so +0 -0
  29. amsdal/cloud/services/actions/destroy_deploy.cpython-312-darwin.so +0 -0
  30. amsdal/cloud/services/actions/expose_db.cpython-312-darwin.so +0 -0
  31. amsdal/cloud/services/actions/get_basic_auth_credentials.cpython-312-darwin.so +0 -0
  32. amsdal/cloud/services/actions/get_monitoring_info.cpython-312-darwin.so +0 -0
  33. amsdal/cloud/services/actions/list_dependencies.cpython-312-darwin.so +0 -0
  34. amsdal/cloud/services/actions/list_deploys.cpython-312-darwin.so +0 -0
  35. amsdal/cloud/services/actions/list_envs.cpython-312-darwin.so +0 -0
  36. amsdal/cloud/services/actions/list_secrets.cpython-312-darwin.so +0 -0
  37. amsdal/cloud/services/actions/manager.cpython-312-darwin.so +0 -0
  38. amsdal/cloud/services/actions/signup_action.cpython-312-darwin.so +0 -0
  39. amsdal/cloud/services/actions/update_deploy.cpython-312-darwin.so +0 -0
  40. amsdal/cloud/services/auth/__init__.cpython-312-darwin.so +0 -0
  41. amsdal/cloud/services/auth/base.cpython-312-darwin.so +0 -0
  42. amsdal/cloud/services/auth/credentials.cpython-312-darwin.so +0 -0
  43. amsdal/cloud/services/auth/manager.cpython-312-darwin.so +0 -0
  44. amsdal/cloud/services/auth/signup_service.cpython-312-darwin.so +0 -0
  45. amsdal/cloud/services/auth/token.cpython-312-darwin.so +0 -0
  46. amsdal/configs/main.py +17 -1
  47. amsdal/configs/main.pyi +7 -3
  48. amsdal/contrib/__init__.cpython-312-darwin.so +0 -0
  49. amsdal/contrib/auth/errors.py +36 -0
  50. amsdal/contrib/auth/errors.pyi +12 -0
  51. amsdal/contrib/auth/lifecycle/consumer.py +3 -3
  52. amsdal/contrib/auth/lifecycle/consumer.pyi +3 -0
  53. amsdal/contrib/auth/migrations/0000_initial.py +55 -52
  54. amsdal/contrib/auth/migrations/0001_add_mfa_support.py +188 -0
  55. amsdal/contrib/auth/models/__init__.py +1 -0
  56. amsdal/contrib/auth/models/backup_code.py +85 -0
  57. amsdal/contrib/auth/models/email_mfa_device.py +108 -0
  58. amsdal/contrib/auth/models/login_session.py +117 -0
  59. amsdal/contrib/auth/models/mfa_device.py +86 -0
  60. amsdal/contrib/auth/models/sms_device.py +113 -0
  61. amsdal/contrib/auth/models/totp_device.py +58 -0
  62. amsdal/contrib/auth/models/user.py +50 -0
  63. amsdal/contrib/auth/services/__init__.py +1 -0
  64. amsdal/contrib/auth/services/mfa_device_service.py +544 -0
  65. amsdal/contrib/auth/services/mfa_device_service.pyi +216 -0
  66. amsdal/contrib/auth/services/totp_service.py +358 -0
  67. amsdal/contrib/auth/services/totp_service.pyi +158 -0
  68. amsdal/contrib/auth/settings.py +8 -0
  69. amsdal/contrib/auth/settings.pyi +8 -0
  70. amsdal/contrib/auth/transactions/__init__.py +1 -0
  71. amsdal/contrib/auth/transactions/mfa_device_transactions.py +458 -0
  72. amsdal/contrib/auth/transactions/mfa_device_transactions.pyi +226 -0
  73. amsdal/contrib/auth/transactions/totp_transactions.py +203 -0
  74. amsdal/contrib/auth/transactions/totp_transactions.pyi +113 -0
  75. amsdal/contrib/auth/utils/mfa.py +257 -0
  76. amsdal/contrib/auth/utils/mfa.pyi +119 -0
  77. amsdal/contrib/frontend_configs/conversion/convert.py +32 -5
  78. amsdal/contrib/frontend_configs/migrations/0000_initial.py +154 -183
  79. amsdal/contrib/frontend_configs/migrations/0001_update_frontend_control_config.py +245 -0
  80. amsdal/contrib/frontend_configs/migrations/0002_add_button_and_invoke_actions.py +352 -0
  81. amsdal/contrib/frontend_configs/migrations/0003_create_class_frontendconfigdashboardelement.py +145 -0
  82. amsdal/contrib/frontend_configs/models/frontend_config_control_action.py +57 -1
  83. amsdal/contrib/frontend_configs/models/frontend_config_dashboard.py +51 -0
  84. amsdal/contrib/frontend_configs/models/frontend_control_config.py +69 -46
  85. amsdal/fixtures/__init__.cpython-312-darwin.so +0 -0
  86. amsdal/fixtures/manager.cpython-312-darwin.so +0 -0
  87. amsdal/fixtures/utils.cpython-312-darwin.so +0 -0
  88. amsdal/manager.cpython-312-darwin.so +0 -0
  89. amsdal/manager.pyi +5 -0
  90. amsdal/mixins/__init__.cpython-312-darwin.so +0 -0
  91. amsdal/mixins/class_versions_mixin.cpython-312-darwin.so +0 -0
  92. amsdal/models/core/class_object.py +7 -6
  93. amsdal/models/core/class_property.py +7 -1
  94. amsdal/models/core/file.py +168 -81
  95. amsdal/models/core/storage_metadata.py +15 -0
  96. amsdal/models/mixins.py +31 -0
  97. amsdal/models/types/object.py +3 -3
  98. amsdal/schemas/core/class_object/model.json +20 -0
  99. amsdal/schemas/core/class_property/model.json +19 -0
  100. amsdal/schemas/core/file/properties/validate_data.py +2 -3
  101. amsdal/schemas/core/storage_metadata/model.json +52 -0
  102. amsdal/schemas/interfaces.pyi +1 -1
  103. amsdal/schemas/manager.cpython-312-darwin.so +0 -0
  104. amsdal/schemas/mixins/check_dependencies_mixin.py +23 -8
  105. amsdal/schemas/mixins/check_dependencies_mixin.pyi +5 -2
  106. amsdal/schemas/utils.pyi +2 -2
  107. amsdal/services/__init__.py +11 -0
  108. amsdal/services/__init__.pyi +4 -0
  109. amsdal/services/external_connections.py +262 -0
  110. amsdal/services/external_connections.pyi +190 -0
  111. amsdal/services/external_model_generator.py +350 -0
  112. amsdal/services/external_model_generator.pyi +134 -0
  113. amsdal/services/transaction_execution.cpython-312-darwin.so +0 -0
  114. amsdal/services/transaction_execution.pyi +1 -0
  115. amsdal/storages/__init__.py +20 -0
  116. amsdal/storages/__init__.pyi +8 -0
  117. amsdal/storages/file_system.py +214 -0
  118. amsdal/storages/file_system.pyi +36 -0
  119. amsdal/utils/rollback/__init__.pyi +6 -0
  120. amsdal/utils/tests/enums.py +0 -2
  121. amsdal/utils/tests/helpers.py +213 -381
  122. amsdal/utils/tests/migrations.py +157 -0
  123. {amsdal-0.4.10.dist-info → amsdal-0.5.33.dist-info}/METADATA +17 -11
  124. {amsdal-0.4.10.dist-info → amsdal-0.5.33.dist-info}/RECORD +131 -124
  125. {amsdal-0.4.10.dist-info → amsdal-0.5.33.dist-info}/WHEEL +1 -1
  126. amsdal/__migrations__/0001_datetime_type.py +0 -18
  127. amsdal/__migrations__/0002_fixture_order.py +0 -44
  128. amsdal/__migrations__/0003_schema_type_in_class_meta.py +0 -44
  129. amsdal/contrib/auth/models/login_session.pyi +0 -37
  130. amsdal/contrib/auth/models/permission.pyi +0 -18
  131. amsdal/contrib/auth/models/user.pyi +0 -46
  132. amsdal/contrib/frontend_configs/models/frontend_activator_config.pyi +0 -12
  133. amsdal/contrib/frontend_configs/models/frontend_config_async_validator.pyi +0 -7
  134. amsdal/contrib/frontend_configs/models/frontend_config_control_action.pyi +0 -32
  135. amsdal/contrib/frontend_configs/models/frontend_config_group_validator.pyi +0 -11
  136. amsdal/contrib/frontend_configs/models/frontend_config_option.pyi +0 -8
  137. amsdal/contrib/frontend_configs/models/frontend_config_skip_none_base.pyi +0 -8
  138. amsdal/contrib/frontend_configs/models/frontend_config_slider_option.pyi +0 -9
  139. amsdal/contrib/frontend_configs/models/frontend_config_text_mask.pyi +0 -10
  140. amsdal/contrib/frontend_configs/models/frontend_config_validator.pyi +0 -15
  141. amsdal/contrib/frontend_configs/models/frontend_control_config.pyi +0 -35
  142. amsdal/contrib/frontend_configs/models/frontend_model_config.pyi +0 -9
  143. amsdal/models/__init__.pyi +0 -9
  144. amsdal/models/core/class_object.pyi +0 -24
  145. amsdal/models/core/class_object_meta.py +0 -26
  146. amsdal/models/core/class_object_meta.pyi +0 -15
  147. amsdal/models/core/class_property.pyi +0 -11
  148. amsdal/models/core/class_property_meta.py +0 -15
  149. amsdal/models/core/class_property_meta.pyi +0 -10
  150. amsdal/models/core/file.pyi +0 -104
  151. amsdal/models/core/fixture.pyi +0 -14
  152. amsdal/models/core/option.pyi +0 -8
  153. amsdal/models/core/validator.pyi +0 -8
  154. amsdal/models/types/object.pyi +0 -16
  155. amsdal/schemas/core/class_object_meta/model.json +0 -59
  156. amsdal/schemas/core/class_property_meta/model.json +0 -23
  157. amsdal/services/__init__.cpython-312-darwin.so +0 -0
  158. /amsdal/contrib/auth/{models → services}/__init__.pyi +0 -0
  159. /amsdal/contrib/{frontend_configs/models → auth/transactions}/__init__.pyi +0 -0
  160. /amsdal/{models/core/__init__.pyi → contrib/auth/utils/__init__.py} +0 -0
  161. /amsdal/{models/types → contrib/auth/utils}/__init__.pyi +0 -0
  162. {amsdal-0.4.10.dist-info → amsdal-0.5.33.dist-info}/licenses/LICENSE.txt +0 -0
  163. {amsdal-0.4.10.dist-info → amsdal-0.5.33.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,157 @@
1
+ import contextlib
2
+ from asyncio import iscoroutine
3
+
4
+ from amsdal_data.connections.historical.schema_version_manager import AsyncHistoricalSchemaVersionManager
5
+ from amsdal_data.connections.historical.schema_version_manager import HistoricalSchemaVersionManager
6
+ from amsdal_models.migration import migrations
7
+ from amsdal_models.migration.executors.default_executor import DefaultAsyncMigrationExecutor
8
+ from amsdal_models.migration.executors.default_executor import DefaultMigrationExecutor
9
+ from amsdal_models.migration.file_migration_executor import AsyncFileMigrationExecutorManager
10
+ from amsdal_models.migration.file_migration_executor import FileMigrationExecutorManager
11
+ from amsdal_models.migration.file_migration_generator import SimpleFileMigrationGenerator
12
+ from amsdal_models.migration.file_migration_store import AsyncFileMigrationStore
13
+ from amsdal_models.migration.file_migration_store import FileMigrationStore
14
+ from amsdal_models.migration.file_migration_writer import FileMigrationWriter
15
+ from amsdal_models.migration.migrations import MigrationSchemas
16
+ from amsdal_models.migration.migrations_loader import MigrationsLoader
17
+ from amsdal_models.schemas.class_schema_loader import ClassSchemaLoader
18
+ from amsdal_utils.models.enums import ModuleType
19
+
20
+ from amsdal.configs.constants import CORE_MIGRATIONS_PATH
21
+ from amsdal.configs.main import settings
22
+
23
+
24
+ def migrate() -> None:
25
+ schemas = MigrationSchemas()
26
+ executor = DefaultMigrationExecutor(schemas, use_foreign_keys=True)
27
+ store = FileMigrationStore(settings.migrations_root_path)
28
+ store.init_migration_table()
29
+
30
+ class UserMigrationsLoader(MigrationsLoader):
31
+ def __init__(self):
32
+ super().__init__(settings.migrations_root_path, ModuleType.USER)
33
+ self._migrations_files = []
34
+
35
+ with contextlib.suppress(Exception):
36
+ HistoricalSchemaVersionManager().object_classes # noqa: B018
37
+
38
+ # migrate core and contrib due to applied migrations
39
+ executor_manager = FileMigrationExecutorManager(
40
+ core_migrations_path=CORE_MIGRATIONS_PATH,
41
+ app_migrations_loader=UserMigrationsLoader(),
42
+ executor=executor,
43
+ store=store,
44
+ contrib=settings.CONTRIBS,
45
+ )
46
+ executor_manager.execute()
47
+
48
+ # always apply migrations for user models
49
+ user_schema_loader = ClassSchemaLoader(
50
+ settings.USER_MODELS_MODULE,
51
+ class_filter=lambda cls: cls.__module_type__ == ModuleType.USER,
52
+ )
53
+ _schemas, _cycle_schemas = user_schema_loader.load_sorted()
54
+ _schemas_map = {_schema.title: _schema for _schema in _schemas}
55
+
56
+ for object_schema in _schemas:
57
+ for _operation_data in SimpleFileMigrationGenerator.build_operations(
58
+ ModuleType.USER,
59
+ object_schema,
60
+ None,
61
+ ):
62
+ _operation_name = FileMigrationWriter.operation_name_map[_operation_data.type]
63
+ _operation = getattr(migrations, _operation_name)(
64
+ module_type=ModuleType.USER,
65
+ class_name=_operation_data.class_name,
66
+ new_schema=_operation_data.new_schema.model_dump(),
67
+ )
68
+
69
+ _operation.forward(executor)
70
+
71
+ for object_schema in _cycle_schemas:
72
+ for _operation_data in SimpleFileMigrationGenerator.build_operations(
73
+ ModuleType.USER,
74
+ object_schema,
75
+ _schemas_map[object_schema.title],
76
+ ):
77
+ _operation_name = FileMigrationWriter.operation_name_map[_operation_data.type]
78
+ _operation = getattr(migrations, _operation_name)(
79
+ module_type=ModuleType.USER,
80
+ class_name=_operation_data.class_name,
81
+ new_schema=_operation_data.new_schema.model_dump(),
82
+ )
83
+
84
+ _operation.forward(executor)
85
+
86
+ executor.flush_buffer()
87
+
88
+
89
+ async def async_migrate() -> None:
90
+ schemas = MigrationSchemas()
91
+ executor = DefaultAsyncMigrationExecutor(schemas)
92
+ store = AsyncFileMigrationStore(settings.migrations_root_path)
93
+ await store.init_migration_table()
94
+
95
+ class UserMigrationsLoader(MigrationsLoader):
96
+ def __init__(self):
97
+ super().__init__(settings.migrations_root_path, ModuleType.USER)
98
+ self._migrations_files = []
99
+
100
+ with contextlib.suppress(Exception):
101
+ await AsyncHistoricalSchemaVersionManager().object_classes
102
+
103
+ # migrate core and contrib due to applied migrations
104
+ executor_manager = AsyncFileMigrationExecutorManager(
105
+ core_migrations_path=CORE_MIGRATIONS_PATH,
106
+ app_migrations_loader=UserMigrationsLoader(),
107
+ executor=executor,
108
+ store=store,
109
+ contrib=settings.CONTRIBS,
110
+ )
111
+ await executor_manager.execute()
112
+
113
+ # always apply migrations for user models
114
+ user_schema_loader = ClassSchemaLoader(
115
+ settings.USER_MODELS_MODULE,
116
+ class_filter=lambda cls: cls.__module_type__ == ModuleType.USER,
117
+ )
118
+ _schemas, _cycle_schemas = user_schema_loader.load_sorted()
119
+ _schemas_map = {_schema.title: _schema for _schema in _schemas}
120
+
121
+ for object_schema in _schemas:
122
+ for _operation_data in SimpleFileMigrationGenerator.build_operations(
123
+ ModuleType.USER,
124
+ object_schema,
125
+ None,
126
+ ):
127
+ _operation_name = FileMigrationWriter.operation_name_map[_operation_data.type]
128
+ _operation = getattr(migrations, _operation_name)(
129
+ module_type=ModuleType.USER,
130
+ class_name=_operation_data.class_name,
131
+ new_schema=_operation_data.new_schema.model_dump(),
132
+ )
133
+
134
+ forward_result = _operation.forward(executor)
135
+
136
+ if iscoroutine(forward_result):
137
+ await forward_result
138
+
139
+ for object_schema in _cycle_schemas:
140
+ for _operation_data in SimpleFileMigrationGenerator.build_operations(
141
+ ModuleType.USER,
142
+ object_schema,
143
+ _schemas_map[object_schema.title],
144
+ ):
145
+ _operation_name = FileMigrationWriter.operation_name_map[_operation_data.type]
146
+ _operation = getattr(migrations, _operation_name)(
147
+ module_type=ModuleType.USER,
148
+ class_name=_operation_data.class_name,
149
+ new_schema=_operation_data.new_schema.model_dump(),
150
+ )
151
+
152
+ forward_result = _operation.forward(executor)
153
+
154
+ if iscoroutine(forward_result):
155
+ await forward_result
156
+
157
+ await executor.flush_buffer()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: amsdal
3
- Version: 0.4.10
3
+ Version: 0.5.33
4
4
  Summary: AMSDAL
5
5
  License: AMSDAL End User License Agreement
6
6
 
@@ -117,32 +117,38 @@ Classifier: Development Status :: 4 - Beta
117
117
  Classifier: Programming Language :: Python
118
118
  Classifier: Programming Language :: Python :: 3.11
119
119
  Classifier: Programming Language :: Python :: 3.12
120
+ Classifier: Programming Language :: Python :: 3.13
120
121
  Classifier: Programming Language :: Python :: Implementation :: CPython
121
122
  Classifier: Programming Language :: Python :: Implementation :: PyPy
122
- Requires-Python: >=3.11
123
+ Requires-Python: <3.14,>=3.11
123
124
  Description-Content-Type: text/markdown
124
125
  License-File: LICENSE.txt
125
- Requires-Dist: pydantic~=2.3
126
- Requires-Dist: pydantic-settings~=2.0
126
+ Requires-Dist: pydantic~=2.12
127
+ Requires-Dist: pydantic-settings~=2.12
127
128
  Requires-Dist: PyJWT~=2.8
128
129
  Requires-Dist: cryptography~=42.0
129
130
  Requires-Dist: httpx~=0.25
130
131
  Requires-Dist: bcrypt~=4.0
132
+ Requires-Dist: pyotp~=2.9
131
133
  Requires-Dist: black>=24.3.0
132
- Requires-Dist: amsdal_utils==0.4.*
133
- Requires-Dist: amsdal_data[postgres-binary]==0.4.*
134
- Requires-Dist: amsdal_models<0.5,>=0.4.1
134
+ Requires-Dist: amsdal_utils==0.5.*
135
+ Requires-Dist: amsdal_data>=0.5.8
136
+ Requires-Dist: amsdal_models==0.5.*
135
137
  Requires-Dist: pip>=21.3.1
136
138
  Provides-Extra: cli
137
- Requires-Dist: amsdal-cli==0.4.*; extra == "cli"
139
+ Requires-Dist: amsdal-cli==0.5.*; extra == "cli"
138
140
  Provides-Extra: server
139
- Requires-Dist: amsdal-server==0.4.*; extra == "server"
141
+ Requires-Dist: amsdal-server==0.5.*; extra == "server"
140
142
  Provides-Extra: factory
141
143
  Requires-Dist: polyfactory==2.*; extra == "factory"
142
144
  Provides-Extra: celery
143
145
  Requires-Dist: celery==5.4.0; extra == "celery"
144
- Provides-Extra: aiosqlite
145
- Requires-Dist: aiosqlite>=0.20.0; extra == "aiosqlite"
146
+ Provides-Extra: async-sqlite
147
+ Requires-Dist: amsdal-data[async-sqlite]; extra == "async-sqlite"
148
+ Provides-Extra: postgres-binary
149
+ Requires-Dist: amsdal-data[postgres-binary]; extra == "postgres-binary"
150
+ Provides-Extra: postgres-c
151
+ Requires-Dist: amsdal-data[postgres-c]; extra == "postgres-c"
146
152
  Dynamic: license-file
147
153
 
148
154
  # AMSDAL