amsdal 0.5.9__cp312-cp312-macosx_10_13_universal2.whl → 0.5.11__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 (58) hide show
  1. amsdal/__about__.py +1 -1
  2. amsdal/__migrations__/0004_update_class_file.py +45 -0
  3. amsdal/cloud/__init__.cpython-312-darwin.so +0 -0
  4. amsdal/cloud/client.cpython-312-darwin.so +0 -0
  5. amsdal/cloud/constants.cpython-312-darwin.so +0 -0
  6. amsdal/cloud/enums.cpython-312-darwin.so +0 -0
  7. amsdal/cloud/models/__init__.cpython-312-darwin.so +0 -0
  8. amsdal/cloud/models/base.cpython-312-darwin.so +0 -0
  9. amsdal/cloud/services/__init__.cpython-312-darwin.so +0 -0
  10. amsdal/cloud/services/actions/__init__.cpython-312-darwin.so +0 -0
  11. amsdal/cloud/services/actions/add_allowlist_ip.cpython-312-darwin.so +0 -0
  12. amsdal/cloud/services/actions/add_basic_auth.cpython-312-darwin.so +0 -0
  13. amsdal/cloud/services/actions/add_dependency.cpython-312-darwin.so +0 -0
  14. amsdal/cloud/services/actions/add_secret.cpython-312-darwin.so +0 -0
  15. amsdal/cloud/services/actions/base.cpython-312-darwin.so +0 -0
  16. amsdal/cloud/services/actions/create_deploy.cpython-312-darwin.so +0 -0
  17. amsdal/cloud/services/actions/create_env.cpython-312-darwin.so +0 -0
  18. amsdal/cloud/services/actions/create_session.cpython-312-darwin.so +0 -0
  19. amsdal/cloud/services/actions/delete_allowlist_ip.cpython-312-darwin.so +0 -0
  20. amsdal/cloud/services/actions/delete_basic_auth.cpython-312-darwin.so +0 -0
  21. amsdal/cloud/services/actions/delete_dependency.cpython-312-darwin.so +0 -0
  22. amsdal/cloud/services/actions/delete_env.cpython-312-darwin.so +0 -0
  23. amsdal/cloud/services/actions/delete_secret.cpython-312-darwin.so +0 -0
  24. amsdal/cloud/services/actions/destroy_deploy.cpython-312-darwin.so +0 -0
  25. amsdal/cloud/services/actions/expose_db.cpython-312-darwin.so +0 -0
  26. amsdal/cloud/services/actions/get_basic_auth_credentials.cpython-312-darwin.so +0 -0
  27. amsdal/cloud/services/actions/get_monitoring_info.cpython-312-darwin.so +0 -0
  28. amsdal/cloud/services/actions/list_dependencies.cpython-312-darwin.so +0 -0
  29. amsdal/cloud/services/actions/list_deploys.cpython-312-darwin.so +0 -0
  30. amsdal/cloud/services/actions/list_envs.cpython-312-darwin.so +0 -0
  31. amsdal/cloud/services/actions/list_secrets.cpython-312-darwin.so +0 -0
  32. amsdal/cloud/services/actions/manager.cpython-312-darwin.so +0 -0
  33. amsdal/cloud/services/actions/signup_action.cpython-312-darwin.so +0 -0
  34. amsdal/cloud/services/actions/update_deploy.cpython-312-darwin.so +0 -0
  35. amsdal/cloud/services/auth/__init__.cpython-312-darwin.so +0 -0
  36. amsdal/cloud/services/auth/base.cpython-312-darwin.so +0 -0
  37. amsdal/cloud/services/auth/credentials.cpython-312-darwin.so +0 -0
  38. amsdal/cloud/services/auth/manager.cpython-312-darwin.so +0 -0
  39. amsdal/cloud/services/auth/signup_service.cpython-312-darwin.so +0 -0
  40. amsdal/cloud/services/auth/token.cpython-312-darwin.so +0 -0
  41. amsdal/contrib/__init__.cpython-312-darwin.so +0 -0
  42. amsdal/contrib/frontend_configs/migrations/0001_update_frontend_control_config.py +245 -0
  43. amsdal/contrib/frontend_configs/models/frontend_control_config.py +57 -46
  44. amsdal/fixtures/__init__.cpython-312-darwin.so +0 -0
  45. amsdal/fixtures/manager.cpython-312-darwin.so +0 -0
  46. amsdal/fixtures/utils.cpython-312-darwin.so +0 -0
  47. amsdal/manager.cpython-312-darwin.so +0 -0
  48. amsdal/mixins/__init__.cpython-312-darwin.so +0 -0
  49. amsdal/mixins/class_versions_mixin.cpython-312-darwin.so +0 -0
  50. amsdal/models/core/file.py +10 -17
  51. amsdal/schemas/manager.cpython-312-darwin.so +0 -0
  52. amsdal/services/__init__.cpython-312-darwin.so +0 -0
  53. amsdal/services/transaction_execution.cpython-312-darwin.so +0 -0
  54. {amsdal-0.5.9.dist-info → amsdal-0.5.11.dist-info}/METADATA +1 -1
  55. {amsdal-0.5.9.dist-info → amsdal-0.5.11.dist-info}/RECORD +58 -56
  56. {amsdal-0.5.9.dist-info → amsdal-0.5.11.dist-info}/WHEEL +0 -0
  57. {amsdal-0.5.9.dist-info → amsdal-0.5.11.dist-info}/licenses/LICENSE.txt +0 -0
  58. {amsdal-0.5.9.dist-info → amsdal-0.5.11.dist-info}/top_level.txt +0 -0
amsdal/__about__.py CHANGED
@@ -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.5.9'
4
+ __version__ = '0.5.11'
@@ -0,0 +1,45 @@
1
+ from amsdal_models.migration import migrations
2
+ from amsdal_utils.models.enums import ModuleType
3
+
4
+
5
+ class Migration(migrations.Migration):
6
+ operations: list[migrations.Operation] = [
7
+ migrations.UpdateClass(
8
+ module_type=ModuleType.CORE,
9
+ class_name="File",
10
+ old_schema={
11
+ "title": "File",
12
+ "required": ["filename"],
13
+ "properties": {
14
+ "filename": {"type": "string", "title": "Filename"},
15
+ "data": {"type": "binary", "title": "Data"},
16
+ "size": {"type": "number", "title": "Size"},
17
+ "storage_address": {"type": "anything", "title": "Storage Reference"},
18
+ },
19
+ "custom_code": 'import base64\nimport io\nfrom contextlib import suppress\nfrom pathlib import Path\nfrom typing import IO\nfrom typing import Any\nfrom typing import BinaryIO\n\nfrom amsdal_models.storage.backends.db import DBStorage\nfrom amsdal_models.storage.base import Storage\nfrom pydantic import model_validator\n\n\n@classmethod\ndef data_base64_decode(cls, data: Any) -> bytes:\n if isinstance(data, str):\n data = data.encode(\'utf-8\')\n is_base64: bool = False\n with suppress(Exception):\n is_base64 = base64.b64encode(base64.b64decode(data)) == data\n if is_base64:\n return base64.b64decode(data)\n return data\n\n@classmethod\ndef from_bytes(cls, filename: str, data: bytes) -> \'File\':\n """\n Creates a `File` object from a byte string.\n\n Args:\n filename (str): The filename of the file.\n data (bytes): The byte string containing the file data.:\n\n Returns:\n File: The created `File` object.\n """\n obj = cls(filename=filename, data=data, size=len(data))\n obj._needs_persist = True\n return obj\n\n@classmethod\ndef from_file(cls, file_or_path: Path | BinaryIO) -> \'File\':\n """\n Creates a `File` object from a file path or a binary file object.\n\n Args:\n file_or_path (Path | BinaryIO): The file path or binary file object.\n\n Returns:\n File: The created `File` object.\n\n Raises:\n ValueError: If the provided path is a directory.\n """\n f: BinaryIO | io.BufferedReader\n if isinstance(file_or_path, Path):\n if file_or_path.is_dir():\n msg = f\'{file_or_path} is a directory\'\n raise ValueError(msg)\n f = file_or_path.open(\'rb\')\n filename = file_or_path.name\n size = file_or_path.stat().st_size\n else:\n f = file_or_path\n filename = Path(getattr(f, \'name\', \'unnamed\')).name\n try:\n if f.seekable():\n f.seek(0, io.SEEK_END)\n size = f.tell()\n f.seek(0)\n else:\n size = None\n except (OSError, AttributeError):\n size = None\n obj = cls(filename=filename, size=size)\n obj._source = f\n obj._needs_persist = True\n return obj\n\n@model_validator(mode=\'before\')\n@classmethod\ndef validate_model_data(cls, data: Any) -> Any:\n if isinstance(data, dict):\n if \'data\' in data:\n if data[\'data\']:\n data[\'data\'] = cls.data_base64_decode(data[\'data\'])\n data[\'size\'] = len(data[\'data\'])\n else:\n data[\'size\'] = 0\n return data\n\n@property\ndef mimetype(self) -> str | None:\n """\n Returns the MIME type of the file based on its filename.\n\n This method uses the `mimetypes` module to guess the MIME type of the file.\n\n Returns:\n str | None: The guessed MIME type of the file, or None if it cannot be determined.\n """\n import mimetypes\n return mimetypes.guess_type(self.filename)[0]\n\n@property\ndef storage(self) -> Storage:\n from amsdal.storages import default_storage\n if self._storage:\n return self._storage\n if self.storage_address:\n return Storage.from_storage_spec({\'storage_class\': self.storage_address.ref.resource})\n return default_storage()\n\nasync def aopen(self, mode: str=\'rb\') -> Any:\n """\n Async variant of open().\n\n Uses the resolved storage to call aopen(); if the backend does not implement\n async, falls back to the sync open().\n """\n try:\n return await self.storage.aopen(self, mode)\n except NotImplementedError:\n return self.storage.open(self, mode)\n\nasync def apre_create(self) -> None:\n if self._needs_persist:\n from amsdal_models.storage.persistence import apersist_file\n await apersist_file(self, storage=self.storage)\n\nasync def apre_update(self) -> None:\n if self._needs_persist:\n from amsdal_models.storage.persistence import apersist_file\n await apersist_file(self, storage=self.storage)\n\nasync def aread_bytes(self) -> bytes:\n async with await self.aopen() as f:\n return await f.read()\n\nasync def aurl(self) -> str:\n """\n Async variant of url().\n\n Uses the resolved storage to call aurl(); if the backend does not implement\n async, falls back to the sync url().\n """\n try:\n return await self.storage.aurl(self)\n except NotImplementedError:\n return self.storage.url(self)\n\ndef __repr__(self) -> str:\n return f"File<{self.filename}>({self.size or len(self.data or \'\') or 0} bytes)"\n\ndef __str__(self) -> str:\n return repr(self)\n\ndef open(self, mode: str=\'rb\') -> IO[Any]:\n """\n Open a binary stream for reading (or other modes if supported) using storage_address.\n\n Raises StateError if storage_address is missing.\n """\n return self.storage.open(self, mode)\n\ndef pre_create(self) -> None:\n if self._needs_persist:\n from amsdal_models.storage.persistence import persist_file\n persist_file(self, storage=self.storage)\n\ndef pre_update(self) -> None:\n if self._needs_persist:\n from amsdal_models.storage.persistence import persist_file\n persist_file(self, storage=self.storage)\n\ndef read_bytes(self) -> bytes:\n with self.open() as f:\n return f.read()\n\ndef set_data(self, data: bytes | str) -> None:\n if not isinstance(self.storage, DBStorage):\n msg = \'Cannot set data on a file that is not stored in a database. Use `File.from_bytes` instead.\'\n raise ValueError(msg)\n self.data = self.data_base64_decode(data)\n self.size = len(self.data)\n self._needs_persist = True\n\ndef to_file(self, file_or_path: Path | BinaryIO) -> None:\n """\n Writes the object\'s data to a file path or a binary file object.\n\n Args:\n file_or_path (Path | BinaryIO): The file path or binary file object where the data will be written.\n\n Returns:\n None\n\n Raises:\n ValueError: If the provided path is a directory.\n """\n with self.open() as f:\n if isinstance(file_or_path, Path):\n if file_or_path.is_dir():\n file_or_path = file_or_path / self.name\n file_or_path.write_bytes(f.read())\n else:\n file_or_path.write(f.read())\n file_or_path.seek(0)\n\ndef url(self) -> str:\n """\n Return a URL for this file using its storage_address.\n\n Raises StateError if storage_address is missing.\n """\n return self.storage.url(self)',
20
+ "storage_metadata": {
21
+ "table_name": "File",
22
+ "db_fields": {},
23
+ "primary_key": ["partition_key"],
24
+ "foreign_keys": {},
25
+ },
26
+ },
27
+ new_schema={
28
+ "title": "File",
29
+ "required": ["filename"],
30
+ "properties": {
31
+ "filename": {"type": "string", "title": "Filename"},
32
+ "data": {"type": "binary", "title": "Data"},
33
+ "size": {"type": "number", "title": "Size"},
34
+ "storage_address": {"type": "anything", "title": "Storage Reference"},
35
+ },
36
+ "custom_code": 'import base64\nimport io\nfrom contextlib import suppress\nfrom pathlib import Path\nfrom typing import IO\nfrom typing import Any\nfrom typing import BinaryIO\n\nfrom amsdal_models.storage.backends.db import AsyncFileWrapper\nfrom amsdal_models.storage.backends.db import DBStorage\nfrom amsdal_models.storage.base import Storage\nfrom pydantic import model_validator\n\n\n@classmethod\ndef data_base64_decode(cls, data: Any) -> bytes:\n if isinstance(data, str):\n data = data.encode(\'utf-8\')\n is_base64: bool = False\n with suppress(Exception):\n is_base64 = base64.b64encode(base64.b64decode(data)) == data\n if is_base64:\n return base64.b64decode(data)\n return data\n\n@classmethod\ndef from_bytes(cls, filename: str, data: bytes) -> \'File\':\n """\n Creates a `File` object from a byte string.\n\n Args:\n filename (str): The filename of the file.\n data (bytes): The byte string containing the file data.:\n\n Returns:\n File: The created `File` object.\n """\n obj = cls(filename=filename, data=data, size=len(data))\n return obj\n\n@classmethod\ndef from_file(cls, file_or_path: Path | BinaryIO) -> \'File\':\n """\n Creates a `File` object from a file path or a binary file object.\n\n Args:\n file_or_path (Path | BinaryIO): The file path or binary file object.\n\n Returns:\n File: The created `File` object.\n\n Raises:\n ValueError: If the provided path is a directory.\n """\n f: BinaryIO | io.BufferedReader\n if isinstance(file_or_path, Path):\n if file_or_path.is_dir():\n msg = f\'{file_or_path} is a directory\'\n raise ValueError(msg)\n f = file_or_path.open(\'rb\')\n filename = file_or_path.name\n size = file_or_path.stat().st_size\n else:\n f = file_or_path\n filename = Path(getattr(f, \'name\', \'unnamed\')).name\n try:\n if f.seekable():\n f.seek(0, io.SEEK_END)\n size = f.tell()\n f.seek(0)\n else:\n size = None\n except (OSError, AttributeError):\n size = None\n obj = cls(filename=filename, size=size)\n obj._source = f\n return obj\n\n@model_validator(mode=\'before\')\n@classmethod\ndef validate_model_data(cls, data: Any) -> Any:\n if isinstance(data, dict):\n if \'data\' in data:\n if data[\'data\']:\n data[\'data\'] = cls.data_base64_decode(data[\'data\'])\n data[\'size\'] = len(data[\'data\'])\n else:\n data[\'size\'] = 0\n return data\n\n@property\ndef mimetype(self) -> str | None:\n """\n Returns the MIME type of the file based on its filename.\n\n This method uses the `mimetypes` module to guess the MIME type of the file.\n\n Returns:\n str | None: The guessed MIME type of the file, or None if it cannot be determined.\n """\n import mimetypes\n return mimetypes.guess_type(self.filename)[0]\n\n@property\ndef storage(self) -> Storage:\n from amsdal.storages import default_storage\n if self._storage:\n return self._storage\n if self.storage_address:\n return Storage.from_storage_spec({\'storage_class\': self.storage_address.ref.resource})\n return default_storage()\n\nasync def aopen(self, mode: str=\'rb\') -> Any:\n """\n Async variant of open().\n\n Uses the resolved storage to call aopen(); if the backend does not implement\n async, falls back to the sync open().\n """\n try:\n return await self.storage.aopen(self, mode)\n except NotImplementedError:\n return AsyncFileWrapper(self.storage.open(self, mode))\n\nasync def apre_create(self) -> None:\n from amsdal_models.storage.persistence import apersist_file\n await apersist_file(self, storage=self.storage)\n\nasync def apre_update(self) -> None:\n from amsdal_models.storage.persistence import apersist_file\n await apersist_file(self, storage=self.storage)\n\nasync def aread_bytes(self) -> bytes:\n async with await self.aopen() as f:\n return await f.read()\n\nasync def aurl(self) -> str:\n """\n Async variant of url().\n\n Uses the resolved storage to call aurl(); if the backend does not implement\n async, falls back to the sync url().\n """\n try:\n return await self.storage.aurl(self)\n except NotImplementedError:\n return self.storage.url(self)\n\ndef __repr__(self) -> str:\n return f"File<{self.filename}>({self.size or len(self.data or \'\') or 0} bytes)"\n\ndef __str__(self) -> str:\n return repr(self)\n\ndef open(self, mode: str=\'rb\') -> IO[Any]:\n """\n Open a binary stream for reading (or other modes if supported) using storage_address.\n\n Raises StateError if storage_address is missing.\n """\n return self.storage.open(self, mode)\n\ndef pre_create(self) -> None:\n from amsdal_models.storage.persistence import persist_file\n persist_file(self, storage=self.storage)\n\ndef pre_update(self) -> None:\n from amsdal_models.storage.persistence import persist_file\n persist_file(self, storage=self.storage)\n\ndef read_bytes(self) -> bytes:\n with self.open() as f:\n return f.read()\n\ndef set_data(self, data: bytes | str) -> None:\n if not isinstance(self.storage, DBStorage):\n msg = \'Cannot set data on a file that is not stored in a database. Use `File.from_bytes` instead.\'\n raise ValueError(msg)\n self.data = self.data_base64_decode(data)\n self.size = len(self.data)\n\ndef to_file(self, file_or_path: Path | BinaryIO) -> None:\n """\n Writes the object\'s data to a file path or a binary file object.\n\n Args:\n file_or_path (Path | BinaryIO): The file path or binary file object where the data will be written.\n\n Returns:\n None\n\n Raises:\n ValueError: If the provided path is a directory.\n """\n with self.open() as f:\n if isinstance(file_or_path, Path):\n if file_or_path.is_dir():\n file_or_path = file_or_path / self.name\n file_or_path.write_bytes(f.read())\n else:\n file_or_path.write(f.read())\n file_or_path.seek(0)\n\ndef url(self) -> str:\n """\n Return a URL for this file using its storage_address.\n\n Raises StateError if storage_address is missing.\n """\n return self.storage.url(self)',
37
+ "storage_metadata": {
38
+ "table_name": "File",
39
+ "db_fields": {},
40
+ "primary_key": ["partition_key"],
41
+ "foreign_keys": {},
42
+ },
43
+ },
44
+ ),
45
+ ]
Binary file
Binary file
Binary file
@@ -0,0 +1,245 @@
1
+ from amsdal_models.migration import migrations
2
+ from amsdal_utils.models.enums import ModuleType
3
+
4
+
5
+ class Migration(migrations.Migration):
6
+ operations: list[migrations.Operation] = [
7
+ migrations.CreateClass(
8
+ module_type=ModuleType.CONTRIB,
9
+ class_name="Condition",
10
+ new_schema={
11
+ "title": "Condition",
12
+ "type": "FrontendConfigSkipNoneBase",
13
+ "required": ["operation", "conditions"],
14
+ "properties": {
15
+ "operation": {
16
+ "type": "string",
17
+ "options": [
18
+ {"key": "and", "value": "and"},
19
+ {"key": "or", "value": "or"},
20
+ {"key": "not", "value": "not"},
21
+ ],
22
+ "title": "Operation",
23
+ "enum": ["and", "or", "not"],
24
+ },
25
+ "conditions": {
26
+ "type": "array",
27
+ "items": {"type": "ConditionItem", "title": "ConditionItem"},
28
+ "title": "Conditions",
29
+ },
30
+ },
31
+ "meta_class": "TypeMeta",
32
+ "custom_code": "from typing import Any\n\nfrom amsdal.contrib.frontend_configs.models.frontend_activator_config import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_async_validator import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_control_action import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_option import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_skip_none_base import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_slider_option import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_text_mask import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_validator import *\n\n\ndef model_dump(self, **kwargs: Any) -> dict[str, Any]:\n kwargs['exclude_none'] = True\n return super().model_dump(**kwargs)\n\ndef model_dump_json(self, **kwargs: Any) -> str:\n kwargs['exclude_none'] = True\n return super().model_dump_json(**kwargs)",
33
+ "storage_metadata": {"table_name": "Condition", "db_fields": {}, "foreign_keys": {}},
34
+ },
35
+ ),
36
+ migrations.CreateClass(
37
+ module_type=ModuleType.CONTRIB,
38
+ class_name="ConditionItem",
39
+ new_schema={
40
+ "title": "ConditionItem",
41
+ "type": "FrontendConfigSkipNoneBase",
42
+ "required": ["path", "condition"],
43
+ "properties": {
44
+ "path": {"type": "string", "title": "Path"},
45
+ "condition": {"type": "string", "title": "Condition"},
46
+ "value": {"type": "anything", "title": "Value"},
47
+ },
48
+ "meta_class": "TypeMeta",
49
+ "custom_code": "from typing import Any\n\nfrom amsdal.contrib.frontend_configs.models.frontend_activator_config import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_async_validator import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_control_action import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_option import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_skip_none_base import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_slider_option import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_text_mask import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_validator import *\n\n\ndef model_dump(self, **kwargs: Any) -> dict[str, Any]:\n kwargs['exclude_none'] = True\n return super().model_dump(**kwargs)\n\ndef model_dump_json(self, **kwargs: Any) -> str:\n kwargs['exclude_none'] = True\n return super().model_dump_json(**kwargs)",
50
+ "storage_metadata": {"table_name": "ConditionItem", "db_fields": {}, "foreign_keys": {}},
51
+ },
52
+ ),
53
+ migrations.UpdateClass(
54
+ module_type=ModuleType.CONTRIB,
55
+ class_name="FrontendControlConfig",
56
+ old_schema={
57
+ "title": "FrontendControlConfig",
58
+ "type": "FrontendConfigSkipNoneBase",
59
+ "required": ["type", "name"],
60
+ "properties": {
61
+ "type": {"type": "string", "title": "Type"},
62
+ "name": {"type": "string", "title": "Name"},
63
+ "label": {"type": "string", "title": "Label"},
64
+ "required": {"type": "boolean", "title": "Required"},
65
+ "hideLabel": {"type": "boolean", "title": "Hide Label"},
66
+ "actions": {
67
+ "type": "array",
68
+ "items": {"type": "FrontendConfigControlAction", "title": "FrontendConfigControlAction"},
69
+ "title": "Actions",
70
+ },
71
+ "validators": {
72
+ "type": "array",
73
+ "items": {"type": "FrontendConfigValidator", "title": "FrontendConfigValidator"},
74
+ "title": "Validators",
75
+ },
76
+ "asyncValidators": {
77
+ "type": "array",
78
+ "items": {"type": "FrontendConfigAsyncValidator", "title": "FrontendConfigAsyncValidator"},
79
+ "title": "Async Validators",
80
+ },
81
+ "activators": {
82
+ "type": "array",
83
+ "items": {"type": "FrontendActivatorConfig", "title": "FrontendActivatorConfig"},
84
+ "title": "Activators",
85
+ },
86
+ "additionalText": {"type": "string", "title": "Additional Text"},
87
+ "value": {"type": "anything", "title": "Value"},
88
+ "placeholder": {"type": "string", "title": "Placeholder"},
89
+ "options": {
90
+ "type": "array",
91
+ "items": {"type": "FrontendConfigOption", "title": "FrontendConfigOption"},
92
+ "title": "Options",
93
+ },
94
+ "mask": {"type": "FrontendConfigTextMask", "title": "Mask"},
95
+ "controls": {
96
+ "type": "array",
97
+ "items": {"type": "FrontendControlConfig", "title": "FrontendControlConfig"},
98
+ "title": "Controls",
99
+ },
100
+ "showSearch": {"type": "boolean", "title": "Show Search"},
101
+ "sliderOptions": {"type": "FrontendConfigSliderOption", "title": "Slider Option"},
102
+ "customLabel": {"type": "array", "items": {"type": "string"}, "title": "Custom Label"},
103
+ "control": {"type": "FrontendControlConfig", "title": "Control"},
104
+ "entityType": {"type": "string", "title": "Entity Type"},
105
+ },
106
+ "meta_class": "TypeMeta",
107
+ "custom_code": "from typing import Any\n\nfrom amsdal_models.builder.validators.options_validators import validate_options\nfrom pydantic.functional_validators import field_validator\n\nfrom amsdal.contrib.frontend_configs.models.frontend_activator_config import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_async_validator import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_control_action import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_option import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_skip_none_base import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_slider_option import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_text_mask import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_validator import *\n\n\n@field_validator('type')\n@classmethod\ndef validate_value_in_options_type(cls: type, value: Any) -> Any:\n return validate_options(value, options=['Bytes', 'array', 'checkbox', 'date', 'dateTriplet', 'datetime', 'dict', 'dropzone', 'email', 'file', 'group', 'group_switch', 'group_toggle', 'info-group', 'infoscreen', 'multiselect', 'number', 'number-operations', 'number-slider', 'number_equals', 'number_initial', 'number_minus', 'number_plus', 'object', 'object_group', 'object_latest', 'password', 'phone', 'radio', 'select', 'text', 'textarea', 'time', 'toggle'])\n\ndef model_dump(self, **kwargs: Any) -> dict[str, Any]:\n kwargs['exclude_none'] = True\n return super().model_dump(**kwargs)\n\ndef model_dump_json(self, **kwargs: Any) -> str:\n kwargs['exclude_none'] = True\n return super().model_dump_json(**kwargs)",
108
+ "storage_metadata": {"table_name": "FrontendControlConfig", "db_fields": {}, "foreign_keys": {}},
109
+ },
110
+ new_schema={
111
+ "title": "FrontendControlConfig",
112
+ "type": "FrontendConfigSkipNoneBase",
113
+ "required": ["type", "name"],
114
+ "properties": {
115
+ "type": {
116
+ "type": "string",
117
+ "options": [
118
+ {"key": "Bytes", "value": "Bytes"},
119
+ {"key": "array", "value": "array"},
120
+ {"key": "checkbox", "value": "checkbox"},
121
+ {"key": "date", "value": "date"},
122
+ {"key": "dateTriplet", "value": "dateTriplet"},
123
+ {"key": "datetime", "value": "datetime"},
124
+ {"key": "dict", "value": "dict"},
125
+ {"key": "dropzone", "value": "dropzone"},
126
+ {"key": "email", "value": "email"},
127
+ {"key": "file", "value": "file"},
128
+ {"key": "group", "value": "group"},
129
+ {"key": "group_switch", "value": "group_switch"},
130
+ {"key": "group_toggle", "value": "group_toggle"},
131
+ {"key": "info-group", "value": "info-group"},
132
+ {"key": "infoscreen", "value": "infoscreen"},
133
+ {"key": "multiselect", "value": "multiselect"},
134
+ {"key": "number", "value": "number"},
135
+ {"key": "number-operations", "value": "number-operations"},
136
+ {"key": "number-slider", "value": "number-slider"},
137
+ {"key": "number_equals", "value": "number_equals"},
138
+ {"key": "number_initial", "value": "number_initial"},
139
+ {"key": "number_minus", "value": "number_minus"},
140
+ {"key": "number_plus", "value": "number_plus"},
141
+ {"key": "object", "value": "object"},
142
+ {"key": "object_group", "value": "object_group"},
143
+ {"key": "object_latest", "value": "object_latest"},
144
+ {"key": "password", "value": "password"},
145
+ {"key": "phone", "value": "phone"},
146
+ {"key": "radio", "value": "radio"},
147
+ {"key": "select", "value": "select"},
148
+ {"key": "text", "value": "text"},
149
+ {"key": "textarea", "value": "textarea"},
150
+ {"key": "time", "value": "time"},
151
+ {"key": "toggle", "value": "toggle"},
152
+ {"key": "sections", "value": "sections"},
153
+ {"key": "section", "value": "section"},
154
+ ],
155
+ "title": "Type",
156
+ "enum": [
157
+ "Bytes",
158
+ "array",
159
+ "checkbox",
160
+ "date",
161
+ "dateTriplet",
162
+ "datetime",
163
+ "dict",
164
+ "dropzone",
165
+ "email",
166
+ "file",
167
+ "group",
168
+ "group_switch",
169
+ "group_toggle",
170
+ "info-group",
171
+ "infoscreen",
172
+ "multiselect",
173
+ "number",
174
+ "number-operations",
175
+ "number-slider",
176
+ "number_equals",
177
+ "number_initial",
178
+ "number_minus",
179
+ "number_plus",
180
+ "object",
181
+ "object_group",
182
+ "object_latest",
183
+ "password",
184
+ "phone",
185
+ "radio",
186
+ "select",
187
+ "text",
188
+ "textarea",
189
+ "time",
190
+ "toggle",
191
+ "sections",
192
+ "section",
193
+ ],
194
+ },
195
+ "name": {"type": "string", "title": "Name"},
196
+ "label": {"type": "string", "title": "Label"},
197
+ "required": {"type": "boolean", "title": "Required"},
198
+ "hideLabel": {"type": "boolean", "title": "Hide Label"},
199
+ "actions": {
200
+ "type": "array",
201
+ "items": {"type": "FrontendConfigControlAction", "title": "FrontendConfigControlAction"},
202
+ "title": "Actions",
203
+ },
204
+ "validators": {
205
+ "type": "array",
206
+ "items": {"type": "FrontendConfigValidator", "title": "FrontendConfigValidator"},
207
+ "title": "Validators",
208
+ },
209
+ "asyncValidators": {
210
+ "type": "array",
211
+ "items": {"type": "FrontendConfigAsyncValidator", "title": "FrontendConfigAsyncValidator"},
212
+ "title": "Async Validators",
213
+ },
214
+ "activators": {
215
+ "type": "array",
216
+ "items": {"type": "FrontendActivatorConfig", "title": "FrontendActivatorConfig"},
217
+ "title": "Activators",
218
+ },
219
+ "additionalText": {"type": "string", "title": "Additional Text"},
220
+ "value": {"type": "anything", "title": "Value"},
221
+ "placeholder": {"type": "string", "title": "Placeholder"},
222
+ "options": {
223
+ "type": "array",
224
+ "items": {"type": "FrontendConfigOption", "title": "FrontendConfigOption"},
225
+ "title": "Options",
226
+ },
227
+ "mask": {"type": "FrontendConfigTextMask", "title": "Mask"},
228
+ "controls": {
229
+ "type": "array",
230
+ "items": {"type": "FrontendControlConfig", "title": "FrontendControlConfig"},
231
+ "title": "Controls",
232
+ },
233
+ "showSearch": {"type": "boolean", "title": "Show Search"},
234
+ "sliderOptions": {"type": "FrontendConfigSliderOption", "title": "Slider Option"},
235
+ "customLabel": {"type": "array", "items": {"type": "string"}, "title": "Custom Label"},
236
+ "control": {"type": "FrontendControlConfig", "title": "Control"},
237
+ "entityType": {"type": "string", "title": "Entity Type"},
238
+ "condition": {"type": "Condition", "title": "Condition"},
239
+ },
240
+ "meta_class": "TypeMeta",
241
+ "custom_code": "from typing import Any\n\nfrom amsdal.contrib.frontend_configs.models.frontend_activator_config import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_async_validator import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_control_action import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_option import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_skip_none_base import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_slider_option import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_text_mask import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_validator import *\n\n\ndef model_dump(self, **kwargs: Any) -> dict[str, Any]:\n kwargs['exclude_none'] = True\n return super().model_dump(**kwargs)\n\ndef model_dump_json(self, **kwargs: Any) -> str:\n kwargs['exclude_none'] = True\n return super().model_dump_json(**kwargs)",
242
+ "storage_metadata": {"table_name": "FrontendControlConfig", "db_fields": {}, "foreign_keys": {}},
243
+ },
244
+ ),
245
+ ]
@@ -1,11 +1,10 @@
1
1
  from typing import Any
2
2
  from typing import ClassVar
3
+ from typing import Literal
3
4
  from typing import Optional
4
5
 
5
- from amsdal_models.builder.validators.options_validators import validate_options
6
6
  from amsdal_utils.models.enums import ModuleType
7
7
  from pydantic.fields import Field
8
- from pydantic.functional_validators import field_validator
9
8
 
10
9
  from amsdal.contrib.frontend_configs.models.frontend_activator_config import * # noqa: F403
11
10
  from amsdal.contrib.frontend_configs.models.frontend_config_async_validator import * # noqa: F403
@@ -16,10 +15,64 @@ from amsdal.contrib.frontend_configs.models.frontend_config_slider_option import
16
15
  from amsdal.contrib.frontend_configs.models.frontend_config_text_mask import * # noqa: F403
17
16
  from amsdal.contrib.frontend_configs.models.frontend_config_validator import * # noqa: F403
18
17
 
18
+ ConfigType = Literal[
19
+ 'Bytes',
20
+ 'array',
21
+ 'checkbox',
22
+ 'date',
23
+ 'dateTriplet',
24
+ 'datetime',
25
+ 'dict',
26
+ 'dropzone',
27
+ 'email',
28
+ 'file',
29
+ 'group',
30
+ 'group_switch',
31
+ 'group_toggle',
32
+ 'info-group',
33
+ 'infoscreen',
34
+ 'multiselect',
35
+ 'number',
36
+ 'number-operations',
37
+ 'number-slider',
38
+ 'number_equals',
39
+ 'number_initial',
40
+ 'number_minus',
41
+ 'number_plus',
42
+ 'object',
43
+ 'object_group',
44
+ 'object_latest',
45
+ 'password',
46
+ 'phone',
47
+ 'radio',
48
+ 'select',
49
+ 'text',
50
+ 'textarea',
51
+ 'time',
52
+ 'toggle',
53
+ 'sections',
54
+ 'section',
55
+ ]
56
+
57
+
58
+ class ConditionItem(FrontendConfigSkipNoneBase): # noqa: F405
59
+ path: str = Field(title='Path')
60
+ condition: str = Field(title='Condition')
61
+ value: Any = Field(default=None, title='Value')
62
+
63
+
64
+ class Condition(FrontendConfigSkipNoneBase): # noqa: F405
65
+ __module_type__: ClassVar[ModuleType] = ModuleType.CONTRIB
66
+ operation: Literal['and', 'or', 'not'] = Field(title='Operation')
67
+ conditions: list[ConditionItem] = Field(title='Conditions') # noqa: F405
68
+
69
+
70
+ Condition.model_rebuild()
71
+
19
72
 
20
73
  class FrontendControlConfig(FrontendConfigSkipNoneBase): # noqa: F405
21
74
  __module_type__: ClassVar[ModuleType] = ModuleType.CONTRIB
22
- type: str = Field(title='Type')
75
+ type: ConfigType = Field(title='Type')
23
76
  name: str = Field(title='Name')
24
77
  label: str | None = Field(None, title='Label')
25
78
  required: bool | None = Field(None, title='Required')
@@ -42,46 +95,4 @@ class FrontendControlConfig(FrontendConfigSkipNoneBase): # noqa: F405
42
95
  customLabel: list[str] | None = Field(None, title='Custom Label') # noqa: N815
43
96
  control: Optional['FrontendControlConfig'] = Field(None, title='Control')
44
97
  entityType: str | None = Field(None, title='Entity Type') # noqa: N815
45
-
46
- @field_validator('type')
47
- @classmethod
48
- def validate_value_in_options_type(cls: type, value: Any) -> Any: # type: ignore # noqa: A003
49
- return validate_options(
50
- value,
51
- options=[
52
- 'Bytes',
53
- 'array',
54
- 'checkbox',
55
- 'date',
56
- 'dateTriplet',
57
- 'datetime',
58
- 'dict',
59
- 'dropzone',
60
- 'email',
61
- 'file',
62
- 'group',
63
- 'group_switch',
64
- 'group_toggle',
65
- 'info-group',
66
- 'infoscreen',
67
- 'multiselect',
68
- 'number',
69
- 'number-operations',
70
- 'number-slider',
71
- 'number_equals',
72
- 'number_initial',
73
- 'number_minus',
74
- 'number_plus',
75
- 'object',
76
- 'object_group',
77
- 'object_latest',
78
- 'password',
79
- 'phone',
80
- 'radio',
81
- 'select',
82
- 'text',
83
- 'textarea',
84
- 'time',
85
- 'toggle',
86
- ],
87
- )
98
+ condition: Condition | None = Field(None, title='Condition') # noqa: F405
Binary file
Binary file
@@ -8,6 +8,7 @@ from typing import BinaryIO
8
8
  from typing import ClassVar
9
9
 
10
10
  from amsdal_models.classes.model import Model
11
+ from amsdal_models.storage.backends.db import AsyncFileWrapper
11
12
  from amsdal_models.storage.backends.db import DBStorage
12
13
  from amsdal_models.storage.base import Storage
13
14
  from amsdal_utils.models.data_models.reference import Reference
@@ -25,7 +26,6 @@ class File(Model):
25
26
  storage_address: Reference | None = Field(default=None, title='Storage Reference')
26
27
 
27
28
  _source: BinaryIO | None = PrivateAttr(default=None)
28
- _needs_persist: bool = PrivateAttr(default=False)
29
29
  _storage: Storage | None = PrivateAttr(default=None)
30
30
 
31
31
  @property
@@ -47,28 +47,24 @@ class File(Model):
47
47
  return repr(self)
48
48
 
49
49
  def pre_create(self) -> None:
50
- if self._needs_persist:
51
- from amsdal_models.storage.persistence import persist_file
50
+ from amsdal_models.storage.persistence import persist_file
52
51
 
53
- persist_file(self, storage=self.storage)
52
+ persist_file(self, storage=self.storage)
54
53
 
55
54
  def pre_update(self) -> None:
56
- if self._needs_persist:
57
- from amsdal_models.storage.persistence import persist_file
55
+ from amsdal_models.storage.persistence import persist_file
58
56
 
59
- persist_file(self, storage=self.storage)
57
+ persist_file(self, storage=self.storage)
60
58
 
61
59
  async def apre_create(self) -> None:
62
- if self._needs_persist:
63
- from amsdal_models.storage.persistence import apersist_file
60
+ from amsdal_models.storage.persistence import apersist_file
64
61
 
65
- await apersist_file(self, storage=self.storage)
62
+ await apersist_file(self, storage=self.storage)
66
63
 
67
64
  async def apre_update(self) -> None:
68
- if self._needs_persist:
69
- from amsdal_models.storage.persistence import apersist_file
65
+ from amsdal_models.storage.persistence import apersist_file
70
66
 
71
- await apersist_file(self, storage=self.storage)
67
+ await apersist_file(self, storage=self.storage)
72
68
 
73
69
  @model_validator(mode='before')
74
70
  @classmethod
@@ -137,7 +133,6 @@ class File(Model):
137
133
 
138
134
  obj = cls(filename=filename, size=size)
139
135
  obj._source = f
140
- obj._needs_persist = True
141
136
  return obj
142
137
 
143
138
  @classmethod
@@ -153,7 +148,6 @@ class File(Model):
153
148
  File: The created `File` object.
154
149
  """
155
150
  obj = cls(filename=filename, data=data, size=len(data))
156
- obj._needs_persist = True
157
151
  return obj
158
152
 
159
153
  def to_file(self, file_or_path: Path | BinaryIO) -> None:
@@ -216,7 +210,7 @@ class File(Model):
216
210
  try:
217
211
  return await self.storage.aopen(self, mode)
218
212
  except NotImplementedError:
219
- return self.storage.open(self, mode)
213
+ return AsyncFileWrapper(self.storage.open(self, mode))
220
214
 
221
215
  @property
222
216
  def mimetype(self) -> str | None:
@@ -247,4 +241,3 @@ class File(Model):
247
241
 
248
242
  self.data = self.data_base64_decode(data)
249
243
  self.size = len(self.data)
250
- self._needs_persist = True
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: amsdal
3
- Version: 0.5.9
3
+ Version: 0.5.11
4
4
  Summary: AMSDAL
5
5
  License: AMSDAL End User License Agreement
6
6
 
@@ -2,9 +2,9 @@ amsdal/manager.pyi,sha256=aRX-FO3KIozgaoJg3_pAVJjPAW9PL8hMiYvaTJ_kp5E,9466
2
2
  amsdal/__init__.pyi,sha256=4FIq7rQKQXoDNIzrDxtklKrbPcE2qqKU8W0jp8Mld6Q,741
3
3
  amsdal/__init__.py,sha256=eg_kMNcJSTvb8Q32AstCARJURBhrlIVmE12Dgq0nOUk,742
4
4
  amsdal/Third-Party Materials - AMSDAL Dependencies - License Notices.md,sha256=3YRsqickIvSW7EmjlC-yk5h-YW_GMzAz7wsT9ZPIiaM,74780
5
- amsdal/__about__.py,sha256=6kYLhdHkt8K7kGaoPcOypmOiRuisFHUqVenu6fa0rn8,124
5
+ amsdal/__about__.py,sha256=L5tj-PVMFqHOJMvqYtQckSVfhE7MXzcQWLoMxnxqIwI,125
6
6
  amsdal/errors.pyi,sha256=mcuGsQMWaIUmC9GJDIkf99dQMMsCfBy6OI_UB3NSNmc,597
7
- amsdal/manager.cpython-312-darwin.so,sha256=pJa-lpTdoC4EGvwYKYGtSHyLQKJO9wqW4jWKKFvoO4E,501968
7
+ amsdal/manager.cpython-312-darwin.so,sha256=Il6KJSpKK4a6Oq1fX7rwWQR5--syTWQmE1gerAbHzko,501968
8
8
  amsdal/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
9
  amsdal/errors.py,sha256=pZZKIklaDkh8jdFSAfX81TbiylvbaE70nttRjTcTSBk,616
10
10
  amsdal/__about__.pyi,sha256=Y25n44pyE3vp92MiABKrcK3IWRyQ1JG1rZ4Ufqy2nC0,17
@@ -17,8 +17,8 @@ amsdal/context/__init__.pyi,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
17
  amsdal/context/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
18
  amsdal/context/manager.py,sha256=CKGY75P2y-TCnZvK5p9NJsDgHo8KXHSE0Eg5AGRjnfk,1850
19
19
  amsdal/mixins/class_versions_mixin.pyi,sha256=oSXjkTsN35d-3YgCckclhk7xRkljKHLYtN8a8gJgj2o,548
20
- amsdal/mixins/__init__.cpython-312-darwin.so,sha256=S_XA1HXxCGkozjnzrjSiZM1sX9d92xIZRMaJ5AFrIKc,120720
21
- amsdal/mixins/class_versions_mixin.cpython-312-darwin.so,sha256=UtmBsjO3XzTvh1_UKiUbwwsezaYv4Eiqg2G-JT0N6XA,180480
20
+ amsdal/mixins/__init__.cpython-312-darwin.so,sha256=R8MoTULt_nF96utqE8JC5HINk2FIn_U5NbJR2G1nfW8,120720
21
+ amsdal/mixins/class_versions_mixin.cpython-312-darwin.so,sha256=lZ-Aq_bzLtc6_PtYUtquzHcQF0mplccNgueLOnaaf4Y,180480
22
22
  amsdal/mixins/__init__.pyi,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
23
  amsdal/utils/__init__.pyi,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
24
  amsdal/utils/contrib_paths.py,sha256=9BpNegbPofuvaQ4bE4E5cO4IV415ZZJkTqSLHUruJ3k,787
@@ -40,10 +40,10 @@ amsdal/models/core/fixture.py,sha256=V4SS1rAYD6mtRjwZ5tEaGgZL3fgRuP2KJ4x7R3AkBWo
40
40
  amsdal/models/core/option.py,sha256=W2w9tmNrdmOF6x5QohJghRrnUY-RFCQ0YFULhVGdDzw,326
41
41
  amsdal/models/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
42
  amsdal/models/core/storage_metadata.py,sha256=q-IOcsIpZHf_bt7v2NTtXAfV2i8fip3F_wtes16WY78,716
43
- amsdal/models/core/file.py,sha256=j-i70o8NeOIlw35xysuFsuIkehf2Q67lOiO4SJN5MTc,7921
43
+ amsdal/models/core/file.py,sha256=IZIS3H_RHYYlwlgOpTROspMNHcpthofMbyzd3bD8lcY,7685
44
44
  amsdal/models/core/class_property.py,sha256=HFIMb0DE8bhmRf_l45VeJJD_tE85eUZ---IPSBdld7I,1098
45
45
  amsdal/models/core/class_object.py,sha256=Y5sdatrNZK1jkMImyeRFTxeUonuzJaDCKZzULZvJIHw,1487
46
- amsdal/contrib/__init__.cpython-312-darwin.so,sha256=jLDKtpWGXkYq_l8byi5ABrrgRR9h0VJPf66hMXZXrJE,120736
46
+ amsdal/contrib/__init__.cpython-312-darwin.so,sha256=mTM-ggviqeoyZKU8sKML_bzAkquIINrwG9LCaNCcyRc,120736
47
47
  amsdal/contrib/__init__.pyi,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
48
48
  amsdal/contrib/app_config.pyi,sha256=j3MYfBcn9MzhTagEczGWfVH9N5jrfiKmUhxZMoakojw,149
49
49
  amsdal/contrib/app_config.py,sha256=RT3RAEE49XtzuFTXYNVuaqU9V4YIl0ZWZijtXgV-SC4,131
@@ -76,6 +76,7 @@ amsdal/contrib/frontend_configs/app.pyi,sha256=Bxdz0kmOF-Poaf2wmoJdgWYmHaStFyOFY
76
76
  amsdal/contrib/frontend_configs/utils.py,sha256=IruaUNl4xkOr2IIFzlvrmi06vEu3CWx49GzLBsrCFU0,1103
77
77
  amsdal/contrib/frontend_configs/app.py,sha256=fY4GukBM6GKSZExT0EgddTamLfUJHwQZS8tOwVQyeSY,836
78
78
  amsdal/contrib/frontend_configs/migrations/0000_initial.py,sha256=-Vg5u__gvbOaz3tMOVVj_V086nb_D6IoC1Ji6ClkUoE,18952
79
+ amsdal/contrib/frontend_configs/migrations/0001_update_frontend_control_config.py,sha256=4mvgb2IyOWfi3cT4tnrM8lFVmoT3qR064anHpcUz028,17229
79
80
  amsdal/contrib/frontend_configs/lifecycle/__init__.pyi,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
80
81
  amsdal/contrib/frontend_configs/lifecycle/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
81
82
  amsdal/contrib/frontend_configs/lifecycle/consumer.pyi,sha256=kRNenTrKfswS8Y3UY6XYQ03WlCuo9LFk8WIJxm--cAk,4168
@@ -84,7 +85,7 @@ amsdal/contrib/frontend_configs/models/frontend_config_control_action.py,sha256=
84
85
  amsdal/contrib/frontend_configs/models/frontend_config_option.py,sha256=n4ZcI7RDwNCpeT5gGLuNJeHzJlhqyf7U5BD4V4wbUv4,448
85
86
  amsdal/contrib/frontend_configs/models/frontend_model_config.py,sha256=UTvp-RvPnci4F7RdRj60hZXgEjSqvNhkfwdbw7ju_sU,517
86
87
  amsdal/contrib/frontend_configs/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
87
- amsdal/contrib/frontend_configs/models/frontend_control_config.py,sha256=ePkGaRMssOqO5NjWs2xA1ZK95hl40WAKg7Fp2QZMda4,4014
88
+ amsdal/contrib/frontend_configs/models/frontend_control_config.py,sha256=2gKp5C2CnK13PMhy0-7F_6ZneYdvgm4NxV1f9ZCHDwI,3889
88
89
  amsdal/contrib/frontend_configs/models/frontend_config_group_validator.py,sha256=vJ36_Xmweygi5UXAL6wOXLi6sGe2rkUcsmT7WzgXuAU,974
89
90
  amsdal/contrib/frontend_configs/models/frontend_config_slider_option.py,sha256=bixZRd4x4zcxykMXC3obYDp8DHORRR3BEBcqaZGcHHo,510
90
91
  amsdal/contrib/frontend_configs/models/frontend_config_text_mask.py,sha256=EEonXV4HyxiVq4AkvIxKtzXhiDYeplexMWzNSQeYpoc,583
@@ -104,7 +105,7 @@ amsdal/schemas/interfaces.pyi,sha256=jUXLEKIa_af9Qrv9a4UvfRmsUV78N921i4dDXKHPaQk
104
105
  amsdal/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
105
106
  amsdal/schemas/utils.pyi,sha256=UbeISOxetojP6HlzhiJWeaAVyYZUrnGAS5niTQ0m6n0,437
106
107
  amsdal/schemas/utils.py,sha256=t8k7QYYR6SsCPpBhp7s585eSYKVIF895EKRMK1w1y1Q,492
107
- amsdal/schemas/manager.cpython-312-darwin.so,sha256=_8JnYtz5n9bu5vOSjntBJOtQoAu-n9CACC_8W7PUTWY,120736
108
+ amsdal/schemas/manager.cpython-312-darwin.so,sha256=YehHGLILJNcBgTxeCKkVfWtUGvY3yHzNjDT6WX3_b3I,120736
108
109
  amsdal/schemas/repository.py,sha256=PbskgDr8JMabQm2uf8Kfj5bBSPlPkx4cDGXn-jfIsPM,3249
109
110
  amsdal/schemas/manager.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
110
111
  amsdal/schemas/types/array/model.json,sha256=I9Z7r691yd8i-Ndy8Cf3rFGg22mnLxg_weeVU2kRtkY,117
@@ -141,6 +142,7 @@ amsdal/schemas/mixins/check_dependencies_mixin.py,sha256=M3Wi1g4F9pbEEpOUlXUhCnv
141
142
  amsdal/queryset/__init__.pyi,sha256=U8YdXkB_drnE4aX54kg7B8my9fyPg-pwsVct6QfM5Bc,545
142
143
  amsdal/queryset/__init__.py,sha256=CzNaFx6yHvePtd3JY1ZGF3QLfE-e_ll5iSnaCVWdKHI,676
143
144
  amsdal/__migrations__/0002_create_class_file.py,sha256=Aq72H968urji4D5aEMCsEol6gaXp1SGylmhua-hxBec,9360
145
+ amsdal/__migrations__/0004_update_class_file.py,sha256=ZxCgHFsR7WBxoAKlncEHbXusrnCLZgqVuk4yiQ9gzCg,15261
144
146
  amsdal/__migrations__/0000_initial.py,sha256=USn8u2uhHy9yFtONsTec-LMdCl3f7GQ_AgSL-yQZmO4,1874
145
147
  amsdal/__migrations__/0001_create_class_file.py,sha256=ujBYnCvk-UhswWlSIsiQqMbgSrXBsdWDFNaFLlc0Trc,3762
146
148
  amsdal/__migrations__/0003_update_class_file.py,sha256=sKzNB9Lc5w6mGIYfyN0jI7wLgkHQVVybdCkJIqw0UYk,16118
@@ -152,94 +154,94 @@ amsdal/configs/constants.py,sha256=faghdS6r3on1WKrp782WmgONd1fMf4X73LJzAwMO1po,9
152
154
  amsdal/configs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
153
155
  amsdal/configs/main.pyi,sha256=2pCKNMnSdnggHNGj37VSDhAxegrzXqVerz0HLtx7Ni4,6937
154
156
  amsdal/configs/main.py,sha256=9iwtIPIy3Dbpenkhq2rSl2ar1nuJjGv4PRQeEv4z71A,9756
155
- amsdal/cloud/__init__.cpython-312-darwin.so,sha256=Flxr26GYFsr-B35tz6tBnX2PXs7bonx0SeSt5Z5XV4M,120720
157
+ amsdal/cloud/__init__.cpython-312-darwin.so,sha256=QmstApSekxAZOv18fvkQalnsjVmrsSLn4xFdmgYzsAk,120720
156
158
  amsdal/cloud/__init__.pyi,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
157
159
  amsdal/cloud/constants.pyi,sha256=0qWxDqjQkETwUtgco5kV83fPHhQ4jRdJe_YPPNTnSIY,327
158
160
  amsdal/cloud/client.pyi,sha256=3VjPRtJrbUU29u_wswETrMorN0iUb4GFAXmMc73bUf4,2247
159
- amsdal/cloud/constants.cpython-312-darwin.so,sha256=3OOqdmLjPqWTSO5ojvyvvfWnx_bM2EzdHNIxCd_mEWI,158688
160
- amsdal/cloud/enums.cpython-312-darwin.so,sha256=MuWkVRo3trvUP0f6aSxmjOMXps0HKbWm7o_GSKb1q84,158128
161
- amsdal/cloud/client.cpython-312-darwin.so,sha256=Td5BiwmPtqARWJ1AaXQeGlgiPsy-RKeeOzHHLN1kaEg,216144
161
+ amsdal/cloud/constants.cpython-312-darwin.so,sha256=tQw9TFsnD3OgMbNJNexWo1AziV1D1wKM6FVarcknqB4,158688
162
+ amsdal/cloud/enums.cpython-312-darwin.so,sha256=pV_NNqs0utWRMPUHo8jO6tm732bjsh_0qTeq9NprzNU,158128
163
+ amsdal/cloud/client.cpython-312-darwin.so,sha256=Fn04aNigXTSQk5hOTpx6zz0ZbK1jc1I201Gg6ZqmFF4,216144
162
164
  amsdal/cloud/enums.pyi,sha256=mX5O1FPc3aNnN108aOJT66Nn9KlcyrRTj9B23sFdDfw,1757
163
- amsdal/cloud/models/__init__.cpython-312-darwin.so,sha256=FUJas9ClywhSmLOSkKsUNSS_G-SBRTIsX2MUS6M7DdM,120752
165
+ amsdal/cloud/models/__init__.cpython-312-darwin.so,sha256=wSv2odxKI5MzwSV4Vaq117OPKqcE81EihGbp6HL5qaY,120752
164
166
  amsdal/cloud/models/base.pyi,sha256=avwAj4uS4NHrXvmSKBxokFKFWSaBPXtJPl1Ig1CD6sg,7727
165
167
  amsdal/cloud/models/__init__.pyi,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
166
- amsdal/cloud/models/base.cpython-312-darwin.so,sha256=2ZFS0Rr7dYMQmJubcUuWaiDMIrdDDetKl2D9UHkv4Jg,195328
167
- amsdal/cloud/services/__init__.cpython-312-darwin.so,sha256=a5Pj-ryUclSgRHC54fZTnpc-QtEUGlx-VEaeuzUnV8Q,120768
168
+ amsdal/cloud/models/base.cpython-312-darwin.so,sha256=AG7oxVZTXjN4GaUnJffYKnyVOq5VW43Qg5TP2P_KrqI,195328
169
+ amsdal/cloud/services/__init__.cpython-312-darwin.so,sha256=9R3C2iMDRHktbrLhDfk2Jtv_lF-5o3N5CHycW15HXE4,120768
168
170
  amsdal/cloud/services/__init__.pyi,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
169
- amsdal/cloud/services/auth/__init__.cpython-312-darwin.so,sha256=_rtmM5iy9cA45HGrJ-id2zysxDkoTsuImjZlOClFwC0,120784
171
+ amsdal/cloud/services/auth/__init__.cpython-312-darwin.so,sha256=yPnZv92LgZxsAGpHNgBJudeXjJFbRTNi1B6ZcAIPNzs,120784
170
172
  amsdal/cloud/services/auth/base.pyi,sha256=oj_tgwWhf02g-FzCLcNOEZjYDxfcrrDssING4jsUMb8,167
171
173
  amsdal/cloud/services/auth/manager.pyi,sha256=AhKllHgraztP3JSKta9MmQjTNRAbQbwqZg2EpQZSwhI,1243
172
174
  amsdal/cloud/services/auth/__init__.pyi,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
173
- amsdal/cloud/services/auth/credentials.cpython-312-darwin.so,sha256=FOwCxJLEUKSjAtcnYFKW-NNxHx9cSDG8q14deQ48UAI,287944
175
+ amsdal/cloud/services/auth/credentials.cpython-312-darwin.so,sha256=zV8A7G6TL8qFUOvpS_OWl4eajnYJxOvwId20UJu06s4,287944
174
176
  amsdal/cloud/services/auth/signup_service.pyi,sha256=SfSN1tLIwrzGi9JbMgoLuKKH1u5uoh_MOFJ4n_NHcBY,1145
175
- amsdal/cloud/services/auth/signup_service.cpython-312-darwin.so,sha256=NMGsqMdm-fmIRywSye281v6u9NUP13D9HotPo4Jb6NQ,216232
177
+ amsdal/cloud/services/auth/signup_service.cpython-312-darwin.so,sha256=qS264uhJ8pl-f8eIXOp7KnPd7Ap66FC6tmm4TWbXyhQ,216232
176
178
  amsdal/cloud/services/auth/token.pyi,sha256=v9QDleIytAZGlYHHaO-W1fTr5d2OLGWsh5g6HDeuk90,1042
177
- amsdal/cloud/services/auth/token.cpython-312-darwin.so,sha256=C6mQb3cy9FdaQAz5IFNRIWwc0vBUXYcKDofB5pNxff8,251648
178
- amsdal/cloud/services/auth/manager.cpython-312-darwin.so,sha256=L_i4ojCIdLQNioJxxu8hsOaZb_gZgX535jrKA8_g6CI,214144
179
- amsdal/cloud/services/auth/base.cpython-312-darwin.so,sha256=oNpWMz-JkQ1kbB1iSQuTeO501G-vQ0Kgzux9Y30ttds,163120
179
+ amsdal/cloud/services/auth/token.cpython-312-darwin.so,sha256=r1tV6Oi0p0_mWDPtAHL0IbawrAYvVAK8v-hUiPOWSvk,251648
180
+ amsdal/cloud/services/auth/manager.cpython-312-darwin.so,sha256=CnquSzMklqVIxNJ0hmOIQHUIRTuh-gEPs3BByjJl8xI,214144
181
+ amsdal/cloud/services/auth/base.cpython-312-darwin.so,sha256=rO1Dh5WGYBjS3CzWIBY-7z0sB6OSKqq-DUjTKQ-Uwzg,163120
180
182
  amsdal/cloud/services/auth/credentials.pyi,sha256=ghp3r8rDq5l5xxx7UKFkCASyQJbWChkF2PQDJrQmeW4,1417
181
- amsdal/cloud/services/actions/delete_env.cpython-312-darwin.so,sha256=DSb7GYYGPlnxqXGfXMrdZ0qIboEkgqiw4faTuTXU8yg,180840
182
- amsdal/cloud/services/actions/__init__.cpython-312-darwin.so,sha256=--A0-SKfQsPfH92JChURAdDNHRn3L6iIi6Phsezhel0,120800
183
+ amsdal/cloud/services/actions/delete_env.cpython-312-darwin.so,sha256=wxUVtwaZAMOi3KaE34NWOcWzXKkljN1lIjXsRssU_10,180840
184
+ amsdal/cloud/services/actions/__init__.cpython-312-darwin.so,sha256=tnS4gxAadfECvcw2xVvRc7EX0E6MGrsZu3rDfa4KmgQ,120800
183
185
  amsdal/cloud/services/actions/list_envs.pyi,sha256=7PylFRd1Jb6nkTt8q8iy27rLj-Q5qcwfqW02_OlfDZs,878
184
186
  amsdal/cloud/services/actions/base.pyi,sha256=J98igdu3E9-mled_kbxerja4DTLM0OAW8cHtsVOQ_fc,5880
185
187
  amsdal/cloud/services/actions/manager.pyi,sha256=Tal5u1nMhi7MeuJ9lBIPYPLgKoIB6DUXPU2AokrusHI,15441
186
188
  amsdal/cloud/services/actions/delete_allowlist_ip.pyi,sha256=W5zVq7YKL_OVigZl58bqau3rvAzsLdItAZaqDO1HGJw,933
187
189
  amsdal/cloud/services/actions/add_basic_auth.pyi,sha256=4tyTci_k_xlJrkBd71sY0ivRr8alo3Bq0KCkjIfacu4,1106
188
190
  amsdal/cloud/services/actions/list_secrets.pyi,sha256=vF-EikAy7WHdkvkGikD_oDFDIgE1GEr8nxAQKYAs9rY,1079
189
- amsdal/cloud/services/actions/delete_secret.cpython-312-darwin.so,sha256=2cz7l1TZGCI_Rv1mPARCFKaVCavT9nR_ZMdLW63NseQ,164312
191
+ amsdal/cloud/services/actions/delete_secret.cpython-312-darwin.so,sha256=7_op-o7ws9nFdINt53MppcvTeOURmMzame05JnkuHNY,164312
190
192
  amsdal/cloud/services/actions/__init__.pyi,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
191
193
  amsdal/cloud/services/actions/get_basic_auth_credentials.pyi,sha256=1FU8BtDRaGTx8fSqdhmotQK-rR7gKr4Qav_E-T_23rc,1071
192
- amsdal/cloud/services/actions/add_basic_auth.cpython-312-darwin.so,sha256=Z2mwnCjzhXNHzZns5zzFsuiVkefCgRNVUymM56eAQq8,197512
194
+ amsdal/cloud/services/actions/add_basic_auth.cpython-312-darwin.so,sha256=8LuNbG8jCEaGSG2t2K5M_YS5jRMqxps_wEjqfQSdVDc,197512
193
195
  amsdal/cloud/services/actions/delete_secret.pyi,sha256=gZi17MivNYBIfdPU2GjoJ2I2lWiefdvLuXTcxDss1P4,953
194
196
  amsdal/cloud/services/actions/delete_env.pyi,sha256=uyBHMOp_AprbpSfv6y6QfYW5FvK1-8jb2NxK_FmuPHE,969
195
- amsdal/cloud/services/actions/delete_allowlist_ip.cpython-312-darwin.so,sha256=hB_hZw1ZBAeYFteC2AD1NDRbeOdW_bZ9sq_vcliwwSk,180848
196
- amsdal/cloud/services/actions/add_dependency.cpython-312-darwin.so,sha256=FrphxMNvhQD_B0Ux61FScpvrbwQc9Xvife5AMSeL6qY,164328
197
- amsdal/cloud/services/actions/create_env.cpython-312-darwin.so,sha256=KyLqRJY-lLCEiVSxK_ZMX9xuLQ0QDG-d4UmKDGn09uI,180840
198
- amsdal/cloud/services/actions/update_deploy.cpython-312-darwin.so,sha256=ZfSWccwAHuo519a0dobNvNcgUHoaq3UKJQek5HHE88g,181080
199
- amsdal/cloud/services/actions/get_monitoring_info.cpython-312-darwin.so,sha256=K3WJ7_TZWPhVb67AzE1p3iFjOVqn9loi_Sjfl43NX_I,197376
197
+ amsdal/cloud/services/actions/delete_allowlist_ip.cpython-312-darwin.so,sha256=uMwVmtYD-NEpf0xxUYJ0ewMFsWiGNucvtuGePL_ImRg,180848
198
+ amsdal/cloud/services/actions/add_dependency.cpython-312-darwin.so,sha256=zHaXs1wsNyXgTTdduOb66E6za55dxA_V509neG34CMY,164328
199
+ amsdal/cloud/services/actions/create_env.cpython-312-darwin.so,sha256=i3S2tmEkdaSKsx4WSNahCum9QR4pQ3Tic5UU8GQ4Tsg,180840
200
+ amsdal/cloud/services/actions/update_deploy.cpython-312-darwin.so,sha256=y-CfvHTR54wjFlfCUndBEPu3C2emdMS6N0mUMMo4Z8k,181080
201
+ amsdal/cloud/services/actions/get_monitoring_info.cpython-312-darwin.so,sha256=ljtRcRrho2KMUs-ELe2hYfYP7c9JStr8RvWDWtzTsB0,197376
200
202
  amsdal/cloud/services/actions/delete_dependency.pyi,sha256=VuT1w2qOpjR7I9mBi9tPXMXDPEeU8tG0vi9TXV82Frg,1021
201
- amsdal/cloud/services/actions/destroy_deploy.cpython-312-darwin.so,sha256=M7yNGGq6INywopR2RIyZNk_uzZH6K5oQMm7il74HM1g,164168
202
- amsdal/cloud/services/actions/list_dependencies.cpython-312-darwin.so,sha256=CSq5YvdxpsJYnDvVXi1ks0H9YXmNj0uGUTrShuMH5Jo,197704
203
- amsdal/cloud/services/actions/list_envs.cpython-312-darwin.so,sha256=urbekonV4QFBRkV3eUY8ENV-tNXz56GmS5fbjvZ70ew,164384
204
- amsdal/cloud/services/actions/list_deploys.cpython-312-darwin.so,sha256=P_kEQ0tgJu9V1Ra0gGfS4XBRLtODlF2Sgjt_qj_33M0,181096
203
+ amsdal/cloud/services/actions/destroy_deploy.cpython-312-darwin.so,sha256=d9iJELEMn8LN2U20IbhCbC1_yWgrsfQ-PnhUi1g89IM,164168
204
+ amsdal/cloud/services/actions/list_dependencies.cpython-312-darwin.so,sha256=dXbgAN0nNEaoCb5C5h9uhgAE5vPU29LcaWSHhrCFa8k,197704
205
+ amsdal/cloud/services/actions/list_envs.cpython-312-darwin.so,sha256=JznnzVygb39vLj1HE4lZDK-H8sCxweLJvThvHW-GuOo,164384
206
+ amsdal/cloud/services/actions/list_deploys.cpython-312-darwin.so,sha256=OsEqXD-wG6cOCiiULUt1Nox-8NI0m4St3vp0JRDr878,181096
205
207
  amsdal/cloud/services/actions/create_session.pyi,sha256=KUvx_vkhLQfGp_DM1ZvgszyT_G8LB28KoI1XpjNR7YY,674
206
208
  amsdal/cloud/services/actions/list_deploys.pyi,sha256=Q8da3PDPxICLP2V7L-A7p-9_a3qNKrARqgHhu0CA0nA,724
207
- amsdal/cloud/services/actions/create_deploy.cpython-312-darwin.so,sha256=ZlAWImrmqA4qRkYw7W90NOl9mipPnvNPIhGVP6yyNts,269176
208
- amsdal/cloud/services/actions/create_session.cpython-312-darwin.so,sha256=whbAGY3hMnbvHWOp4pRj-MEQ2TfVDeOtZvgolLZBc5U,181000
209
+ amsdal/cloud/services/actions/create_deploy.cpython-312-darwin.so,sha256=hWpZlIdEy64UAPCN9w2rZ6EabDgRVVWACKnvhuz1IXQ,269176
210
+ amsdal/cloud/services/actions/create_session.cpython-312-darwin.so,sha256=vN4nZfDtSwGdn-VmS9sM-ONVR44drM4r-ewFaO1rGT8,181000
209
211
  amsdal/cloud/services/actions/add_allowlist_ip.pyi,sha256=gB2NQVz8NcSsgXYiym2Suh1RPI8eHKIAFE13RmeTHkA,883
210
212
  amsdal/cloud/services/actions/get_monitoring_info.pyi,sha256=uvtBgWvtWf-Mq4vZq_q-q8Z8hJh5voAY61KRJQPGWFk,1045
211
213
  amsdal/cloud/services/actions/add_dependency.pyi,sha256=uVEIhvDa4GRS0Lg6TkcYdOwezKcxrzL7A_Lh8BxcAeU,837
212
- amsdal/cloud/services/actions/manager.cpython-312-darwin.so,sha256=vnMjMonQO2tmlHJTmADxgQL-5JWZwjm4jbdDIsf4LNY,354848
214
+ amsdal/cloud/services/actions/manager.cpython-312-darwin.so,sha256=wgQZJIjiiX0VEV336JBF1EXDIapL4nc0rGtKc7sJ98k,354848
213
215
  amsdal/cloud/services/actions/signup_action.pyi,sha256=VswHjhxw2eHYqXwc---F2LpwlD7GlIuL_Ev2DmA96_4,808
214
216
  amsdal/cloud/services/actions/add_secret.pyi,sha256=H6rS3PRwiktMfnoY8qwtmTplN9gG2yZgQKKCX8S8Q6c,890
215
- amsdal/cloud/services/actions/base.cpython-312-darwin.so,sha256=jiKWom1Mmho4DYN6Bn1AFJPuu2ELM_e0sWA6VIFrpJQ,307200
216
- amsdal/cloud/services/actions/get_basic_auth_credentials.cpython-312-darwin.so,sha256=ri1gARkaFjufvMpiZUpcGzjrcXT6b7grqLJnLVwX3G4,197512
217
+ amsdal/cloud/services/actions/base.cpython-312-darwin.so,sha256=tIxdQcW9rjlYGdBCZknEqE1Ksb0x3o5SxutQYjec5Ho,307200
218
+ amsdal/cloud/services/actions/get_basic_auth_credentials.cpython-312-darwin.so,sha256=KdVbWbpMJCsOgrYfi2_ZksDSvn9nuMrKgocCXXh3Rnk,197512
217
219
  amsdal/cloud/services/actions/destroy_deploy.pyi,sha256=VNb0J71B3gk4SVJwxlB9XTj4vCG-37ucojcGzsvKwe8,609
218
220
  amsdal/cloud/services/actions/update_deploy.pyi,sha256=alM1nquQZ5O8PYlDIqDdSuiyuc_aj9fkd01bL9KANEI,766
219
- amsdal/cloud/services/actions/add_secret.cpython-312-darwin.so,sha256=aBGRV_l19v3DiPLSG13S--wz7AUG7bFRZOHcBx-0Rdc,164264
220
- amsdal/cloud/services/actions/expose_db.cpython-312-darwin.so,sha256=5LJ_6-16hfBRGge8AjLSOVO4TFCECDX7_WgJujp8I8w,197568
221
- amsdal/cloud/services/actions/delete_dependency.cpython-312-darwin.so,sha256=Rct9-LTMWS3WYqv3i8a71Py2FjPqRHEWcWce3Zkw9DE,164376
222
- amsdal/cloud/services/actions/add_allowlist_ip.cpython-312-darwin.so,sha256=RftsKlzY8rR9Myk8AT3yiwgz4KwETTm9f2MQcaOxUAg,180792
223
- amsdal/cloud/services/actions/signup_action.cpython-312-darwin.so,sha256=jAlR6mPmRVdp7LtCFwA4VGq0hcObsmw6YIshO07jQnc,164216
224
- amsdal/cloud/services/actions/delete_basic_auth.cpython-312-darwin.so,sha256=MuXZxtautqdrohZp6IdHDmvZniRyYOdIIhvEmt2eFOo,164376
225
- amsdal/cloud/services/actions/list_secrets.cpython-312-darwin.so,sha256=URKLjn8v4JFqUCNELK57fAmfYRtfGSMIU5m6Ksq3u48,197688
221
+ amsdal/cloud/services/actions/add_secret.cpython-312-darwin.so,sha256=oYVwmHuowFKUgPwZouptyF_ECnznkdoqGnyTw8SrVx0,164264
222
+ amsdal/cloud/services/actions/expose_db.cpython-312-darwin.so,sha256=cSdYhPZRGoFYDqShxwZZuF50YQOz3vjfddGBr6Xo2To,197568
223
+ amsdal/cloud/services/actions/delete_dependency.cpython-312-darwin.so,sha256=E3mecOgwAb-zkoRqDhHJqxKvQik5akt2ZehiPoRZCLs,164376
224
+ amsdal/cloud/services/actions/add_allowlist_ip.cpython-312-darwin.so,sha256=1yi2VwJwZ17nseI41HyFaAop_6jVo9GGt0vaiI2qA3U,180792
225
+ amsdal/cloud/services/actions/signup_action.cpython-312-darwin.so,sha256=yYUwXkKZn7XzWIWsWFxSOYdHOgQ4iyZL6EZk50SGkQ0,164216
226
+ amsdal/cloud/services/actions/delete_basic_auth.cpython-312-darwin.so,sha256=hGMxU2SgZJnww9zQSYomuRAsWJEUS0hln5v0NIMY8E8,164376
227
+ amsdal/cloud/services/actions/list_secrets.cpython-312-darwin.so,sha256=ULHfBganhmF2gJnPvODuVtPQpX1rmY8gcRDXbDkB_hY,197688
226
228
  amsdal/cloud/services/actions/create_deploy.pyi,sha256=VmVMYJQmjPZce6Cm8sMQ27HomhfdzZc_0X57ZWZmCt0,1988
227
229
  amsdal/cloud/services/actions/delete_basic_auth.pyi,sha256=-I1YoOMFi0LaRsZL2JBGH_sg18PZoUL1PP9YetboDJA,915
228
230
  amsdal/cloud/services/actions/list_dependencies.pyi,sha256=C37VamSyRT-uNLuwQJ0OrHKavs8Jt0bfPbAsE5BQEvE,1035
229
231
  amsdal/cloud/services/actions/create_env.pyi,sha256=ITvyLrvwt6H36JNYURHZ_PbmGZquc5Fm07dVo7H6ll0,910
230
232
  amsdal/cloud/services/actions/expose_db.pyi,sha256=uk2zuz1SiXwjDFxtKF-yyWGNEONOgfm7EcrEyVT0cMM,1049
231
- amsdal/fixtures/__init__.cpython-312-darwin.so,sha256=LpVeyNdTs4oPz5N-41rWhit5Bs2LI8InZdS6EJg16Lc,120736
233
+ amsdal/fixtures/__init__.cpython-312-darwin.so,sha256=UqC_vneay0tyEJbBEE4FnpuxN-6FZx1LNNL_smPIpIg,120736
232
234
  amsdal/fixtures/manager.pyi,sha256=fMl3nNa2A9jiZanZ_7tnUGaPigk_03KMmdcUGPoX9kI,7077
233
235
  amsdal/fixtures/__init__.pyi,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
234
- amsdal/fixtures/utils.cpython-312-darwin.so,sha256=doKe9s8IaYsrFSGMaVGWZauO10PVCywfS9rnVtBydFQ,290128
236
+ amsdal/fixtures/utils.cpython-312-darwin.so,sha256=Hyhov8eOAW3-kjTQiMkQmktfWvZIaF6UugtW9uA0dIo,290128
235
237
  amsdal/fixtures/utils.pyi,sha256=OnFn7opJscOydj-rlcXQIdDodlIKGCt79TRy5zAUkqg,457
236
- amsdal/fixtures/manager.cpython-312-darwin.so,sha256=fhxn0w0Qiw84AcdIXdBrSj17ZbJk_W0u7vvQpEAILKc,655648
237
- amsdal/services/__init__.cpython-312-darwin.so,sha256=Tp1Nu_1pI1Y-STNXMOW-7mRXUUrAevVZEKRoqc3ZeUA,120736
238
+ amsdal/fixtures/manager.cpython-312-darwin.so,sha256=R915jM16W5DWtBavq2Unob1ue95SeN9axwO538TjKz0,655648
239
+ amsdal/services/__init__.cpython-312-darwin.so,sha256=2K09Ey4fjxtC1F9yB0-AGXKIoSl7NKlAbWEWMCFESFs,120736
238
240
  amsdal/services/transaction_execution.pyi,sha256=TwCuurOoqSHgNu9GCYYZPSpGjxXssF2eNygQ5KVwAZM,4374
239
- amsdal/services/transaction_execution.cpython-312-darwin.so,sha256=51OkDzoUAnaarAuIUrhLmaKJdcZpowdi68FZ8AkKJ0I,435648
241
+ amsdal/services/transaction_execution.cpython-312-darwin.so,sha256=ZKV_JX1la3iULju0wxI3g3tJPOSc7UungGPsb_iNEN4,435648
240
242
  amsdal/services/__init__.pyi,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
241
- amsdal-0.5.9.dist-info/RECORD,,
242
- amsdal-0.5.9.dist-info/WHEEL,sha256=_N1vyLgwJ10g4JxFsp-IfU42zGJgf-DUqwfdbV1YvEM,115
243
- amsdal-0.5.9.dist-info/top_level.txt,sha256=VPQLnOP3mf7q0JuQ_vPZYQyPNGKd_uc6ouz-hZRkhSk,7
244
- amsdal-0.5.9.dist-info/METADATA,sha256=u_dS0-iVdiSiYE4SW6sHGaX7eSD9G_JDFgyfdVOQftQ,57622
245
- amsdal-0.5.9.dist-info/licenses/LICENSE.txt,sha256=hG-541PFYfNJi9WRZi_hno91UyqNg7YLK8LR3vLblZA,27355
243
+ amsdal-0.5.11.dist-info/RECORD,,
244
+ amsdal-0.5.11.dist-info/WHEEL,sha256=_N1vyLgwJ10g4JxFsp-IfU42zGJgf-DUqwfdbV1YvEM,115
245
+ amsdal-0.5.11.dist-info/top_level.txt,sha256=VPQLnOP3mf7q0JuQ_vPZYQyPNGKd_uc6ouz-hZRkhSk,7
246
+ amsdal-0.5.11.dist-info/METADATA,sha256=blriDQBHUpEI5skBbBAUFgGaCzZjW8d0fxNURbytJpM,57623
247
+ amsdal-0.5.11.dist-info/licenses/LICENSE.txt,sha256=hG-541PFYfNJi9WRZi_hno91UyqNg7YLK8LR3vLblZA,27355