amsdal 0.5.0__cp311-cp311-macosx_10_9_universal2.whl → 0.5.2__cp311-cp311-macosx_10_9_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.
- amsdal/__about__.py +1 -1
- amsdal/__migrations__/0000_initial.py +1 -1
- amsdal/__migrations__/0001_create_class_file.py +4 -103
- amsdal/__migrations__/0002_create_class_file.py +109 -0
- amsdal/cloud/__init__.cpython-311-darwin.so +0 -0
- amsdal/cloud/client.cpython-311-darwin.so +0 -0
- amsdal/cloud/constants.cpython-311-darwin.so +0 -0
- amsdal/cloud/enums.cpython-311-darwin.so +0 -0
- amsdal/cloud/models/__init__.cpython-311-darwin.so +0 -0
- amsdal/cloud/models/base.cpython-311-darwin.so +0 -0
- amsdal/cloud/services/__init__.cpython-311-darwin.so +0 -0
- amsdal/cloud/services/actions/__init__.cpython-311-darwin.so +0 -0
- amsdal/cloud/services/actions/add_allowlist_ip.cpython-311-darwin.so +0 -0
- amsdal/cloud/services/actions/add_basic_auth.cpython-311-darwin.so +0 -0
- amsdal/cloud/services/actions/add_dependency.cpython-311-darwin.so +0 -0
- amsdal/cloud/services/actions/add_secret.cpython-311-darwin.so +0 -0
- amsdal/cloud/services/actions/base.cpython-311-darwin.so +0 -0
- amsdal/cloud/services/actions/create_deploy.cpython-311-darwin.so +0 -0
- amsdal/cloud/services/actions/create_env.cpython-311-darwin.so +0 -0
- amsdal/cloud/services/actions/create_session.cpython-311-darwin.so +0 -0
- amsdal/cloud/services/actions/delete_allowlist_ip.cpython-311-darwin.so +0 -0
- amsdal/cloud/services/actions/delete_basic_auth.cpython-311-darwin.so +0 -0
- amsdal/cloud/services/actions/delete_dependency.cpython-311-darwin.so +0 -0
- amsdal/cloud/services/actions/delete_env.cpython-311-darwin.so +0 -0
- amsdal/cloud/services/actions/delete_secret.cpython-311-darwin.so +0 -0
- amsdal/cloud/services/actions/destroy_deploy.cpython-311-darwin.so +0 -0
- amsdal/cloud/services/actions/expose_db.cpython-311-darwin.so +0 -0
- amsdal/cloud/services/actions/get_basic_auth_credentials.cpython-311-darwin.so +0 -0
- amsdal/cloud/services/actions/get_monitoring_info.cpython-311-darwin.so +0 -0
- amsdal/cloud/services/actions/list_dependencies.cpython-311-darwin.so +0 -0
- amsdal/cloud/services/actions/list_deploys.cpython-311-darwin.so +0 -0
- amsdal/cloud/services/actions/list_envs.cpython-311-darwin.so +0 -0
- amsdal/cloud/services/actions/list_secrets.cpython-311-darwin.so +0 -0
- amsdal/cloud/services/actions/manager.cpython-311-darwin.so +0 -0
- amsdal/cloud/services/actions/signup_action.cpython-311-darwin.so +0 -0
- amsdal/cloud/services/actions/update_deploy.cpython-311-darwin.so +0 -0
- amsdal/cloud/services/auth/__init__.cpython-311-darwin.so +0 -0
- amsdal/cloud/services/auth/base.cpython-311-darwin.so +0 -0
- amsdal/cloud/services/auth/credentials.cpython-311-darwin.so +0 -0
- amsdal/cloud/services/auth/manager.cpython-311-darwin.so +0 -0
- amsdal/cloud/services/auth/signup_service.cpython-311-darwin.so +0 -0
- amsdal/cloud/services/auth/token.cpython-311-darwin.so +0 -0
- amsdal/configs/main.pyi +1 -2
- amsdal/contrib/__init__.cpython-311-darwin.so +0 -0
- amsdal/contrib/auth/lifecycle/consumer.py +1 -1
- amsdal/contrib/auth/lifecycle/consumer.pyi +3 -0
- amsdal/contrib/frontend_configs/conversion/convert.py +18 -2
- amsdal/fixtures/__init__.cpython-311-darwin.so +0 -0
- amsdal/fixtures/manager.cpython-311-darwin.so +0 -0
- amsdal/fixtures/utils.cpython-311-darwin.so +0 -0
- amsdal/manager.cpython-311-darwin.so +0 -0
- amsdal/manager.pyi +5 -0
- amsdal/mixins/__init__.cpython-311-darwin.so +0 -0
- amsdal/mixins/class_versions_mixin.cpython-311-darwin.so +0 -0
- amsdal/models/types/object.py +3 -3
- amsdal/schemas/interfaces.pyi +1 -1
- amsdal/schemas/manager.cpython-311-darwin.so +0 -0
- amsdal/schemas/utils.pyi +2 -2
- amsdal/services/__init__.cpython-311-darwin.so +0 -0
- amsdal/services/transaction_execution.cpython-311-darwin.so +0 -0
- amsdal/utils/rollback/__init__.pyi +6 -0
- {amsdal-0.5.0.dist-info → amsdal-0.5.2.dist-info}/METADATA +1 -1
- {amsdal-0.5.0.dist-info → amsdal-0.5.2.dist-info}/RECORD +66 -65
- {amsdal-0.5.0.dist-info → amsdal-0.5.2.dist-info}/WHEEL +1 -1
- {amsdal-0.5.0.dist-info → amsdal-0.5.2.dist-info}/licenses/LICENSE.txt +0 -0
- {amsdal-0.5.0.dist-info → amsdal-0.5.2.dist-info}/top_level.txt +0 -0
amsdal/__about__.py
CHANGED
@@ -6,7 +6,7 @@ class Migration(migrations.Migration):
|
|
6
6
|
operations: list[migrations.Operation] = [
|
7
7
|
migrations.CreateClass(
|
8
8
|
module_type=ModuleType.TYPE,
|
9
|
-
class_name=
|
9
|
+
class_name='Object',
|
10
10
|
new_schema={
|
11
11
|
"title": "Object",
|
12
12
|
"required": ["title", "type", "module_type"],
|
@@ -39,7 +39,10 @@ class Migration(migrations.Migration):
|
|
39
39
|
"module_type": {"type": "string", "title": "Module Type"},
|
40
40
|
"properties": {
|
41
41
|
"type": "dictionary",
|
42
|
-
"items": {
|
42
|
+
"items": {
|
43
|
+
"key": {"type": "string"},
|
44
|
+
"value": {"type": "ClassProperty", "title": "ClassProperty"},
|
45
|
+
},
|
43
46
|
"title": "Properties",
|
44
47
|
},
|
45
48
|
"required": {"type": "array", "items": {"type": "string"}, "title": "Required"},
|
@@ -55,106 +58,4 @@ class Migration(migrations.Migration):
|
|
55
58
|
},
|
56
59
|
},
|
57
60
|
),
|
58
|
-
migrations.CreateClass(
|
59
|
-
module_type=ModuleType.CORE,
|
60
|
-
class_name="File",
|
61
|
-
new_schema={
|
62
|
-
"title": "File",
|
63
|
-
"required": ["filename", "data"],
|
64
|
-
"properties": {
|
65
|
-
"filename": {"type": "string", "title": "Filename"},
|
66
|
-
"data": {"type": "binary", "title": "Data"},
|
67
|
-
"size": {"type": "number", "title": "Size"},
|
68
|
-
},
|
69
|
-
"custom_code": 'import base64\nfrom pathlib import Path\nfrom typing import BinaryIO\n\nfrom pydantic import field_validator\n\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 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 data = file_or_path.read_bytes()\n filename = file_or_path.name\n else:\n file_or_path.seek(0)\n data = file_or_path.read()\n filename = Path(file_or_path.name).name\n return cls(data=data, filename=filename)\n\n@field_validator(\'data\')\n@classmethod\ndef data_base64_decode(cls, v: bytes) -> bytes:\n """\n Decodes a base64-encoded byte string if it is base64-encoded.\n\n This method checks if the provided byte string is base64-encoded and decodes it if true.\n If the byte string is not base64-encoded, it returns the original byte string.\n\n Args:\n cls: The class this method belongs to.\n v (bytes): The byte string to be checked and potentially decoded.\n\n Returns:\n bytes: The decoded byte string if it was base64-encoded, otherwise the original byte string.\n """\n is_base64: bool = False\n try:\n is_base64 = base64.b64encode(base64.b64decode(v)) == v\n except Exception:\n ...\n if is_base64:\n return base64.b64decode(v)\n return v\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\nasync def apre_create(self) -> None:\n """\n Prepares the object for creation by setting its size attribute.\n\n This method calculates the size of the object\'s data and assigns it to the size attribute.\n If the data is None, it defaults to an empty byte string.\n\n Args:\n None\n """\n self.size = len(self.data or b\'\')\n\nasync def apre_update(self) -> None:\n """\n Prepares the object for update by setting its size attribute.\n\n This method calculates the size of the object\'s data and assigns it to the size attribute.\n If the data is None, it defaults to an empty byte string.\n\n Args:\n None\n """\n self.size = len(self.data or b\'\')\n\ndef __repr__(self) -> str:\n return f\'File<{self.filename}>({self.size or len(self.data) or 0} bytes)\'\n\ndef __str__(self) -> str:\n return repr(self)\n\ndef pre_create(self) -> None:\n """\n Prepares the object for creation by setting its size attribute.\n\n This method calculates the size of the object\'s data and assigns it to the size attribute.\n If the data is None, it defaults to an empty byte string.\n\n Args:\n None\n """\n self.size = len(self.data or b\'\')\n\ndef pre_update(self) -> None:\n """\n Prepares the object for update by setting its size attribute.\n\n This method calculates the size of the object\'s data and assigns it to the size attribute.\n If the data is None, it defaults to an empty byte string.\n\n Args:\n None\n """\n self.size = len(self.data or b\'\')\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 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(self.data)\n else:\n file_or_path.write(self.data)\n file_or_path.seek(0)',
|
70
|
-
"storage_metadata": {
|
71
|
-
"table_name": "File",
|
72
|
-
"db_fields": {},
|
73
|
-
"primary_key": ["partition_key"],
|
74
|
-
"foreign_keys": {},
|
75
|
-
},
|
76
|
-
},
|
77
|
-
),
|
78
|
-
migrations.CreateClass(
|
79
|
-
module_type=ModuleType.CORE,
|
80
|
-
class_name="Fixture",
|
81
|
-
new_schema={
|
82
|
-
"title": "Fixture",
|
83
|
-
"required": ["external_id", "data"],
|
84
|
-
"properties": {
|
85
|
-
"class_name": {"type": "string", "title": "Class Name"},
|
86
|
-
"order": {"type": "number", "title": "Order"},
|
87
|
-
"external_id": {"type": "string", "title": "External ID"},
|
88
|
-
"data": {
|
89
|
-
"type": "dictionary",
|
90
|
-
"items": {"key": {"type": "string"}, "value": {"type": "anything"}},
|
91
|
-
"title": "Data",
|
92
|
-
},
|
93
|
-
},
|
94
|
-
"custom_code": "from typing import Any\n\nfrom amsdal_models.builder.validators.dict_validators import validate_non_empty_keys\nfrom pydantic.functional_validators import field_validator\n\n\n@field_validator('data')\n@classmethod\ndef _non_empty_keys_data(cls: type, value: Any) -> Any:\n return validate_non_empty_keys(value)",
|
95
|
-
"storage_metadata": {
|
96
|
-
"table_name": "Fixture",
|
97
|
-
"db_fields": {},
|
98
|
-
"primary_key": ["partition_key"],
|
99
|
-
"unique": [["external_id"]],
|
100
|
-
"foreign_keys": {},
|
101
|
-
},
|
102
|
-
},
|
103
|
-
),
|
104
|
-
migrations.CreateClass(
|
105
|
-
module_type=ModuleType.CORE,
|
106
|
-
class_name="Option",
|
107
|
-
new_schema={
|
108
|
-
"title": "Option",
|
109
|
-
"required": ["key", "value"],
|
110
|
-
"properties": {
|
111
|
-
"key": {"type": "string", "title": "Key"},
|
112
|
-
"value": {"type": "string", "title": "Value Type"},
|
113
|
-
},
|
114
|
-
"meta_class": "TypeMeta",
|
115
|
-
"storage_metadata": {"table_name": "Option", "db_fields": {}, "foreign_keys": {}},
|
116
|
-
},
|
117
|
-
),
|
118
|
-
migrations.CreateClass(
|
119
|
-
module_type=ModuleType.CORE,
|
120
|
-
class_name="StorageMetadata",
|
121
|
-
new_schema={
|
122
|
-
"title": "StorageMetadata",
|
123
|
-
"properties": {
|
124
|
-
"table_name": {"type": "string", "title": "Table name"},
|
125
|
-
"db_fields": {
|
126
|
-
"type": "dictionary",
|
127
|
-
"items": {"key": {"type": "string"}, "value": {"type": "array"}},
|
128
|
-
"title": "Database fields",
|
129
|
-
},
|
130
|
-
"primary_key": {"type": "array", "items": {"type": "string"}, "title": "Primary key fields"},
|
131
|
-
"indexed": {
|
132
|
-
"type": "array",
|
133
|
-
"items": {"type": "array", "items": {"type": "string"}},
|
134
|
-
"title": "Indexed",
|
135
|
-
},
|
136
|
-
"unique": {
|
137
|
-
"type": "array",
|
138
|
-
"items": {"type": "array", "items": {"type": "string"}},
|
139
|
-
"title": "Unique Fields",
|
140
|
-
},
|
141
|
-
},
|
142
|
-
"meta_class": "TypeMeta",
|
143
|
-
"storage_metadata": {"table_name": "StorageMetadata", "db_fields": {}, "foreign_keys": {}},
|
144
|
-
},
|
145
|
-
),
|
146
|
-
migrations.CreateClass(
|
147
|
-
module_type=ModuleType.CORE,
|
148
|
-
class_name="Validator",
|
149
|
-
new_schema={
|
150
|
-
"title": "Validator",
|
151
|
-
"required": ["name", "data"],
|
152
|
-
"properties": {
|
153
|
-
"name": {"type": "string", "title": "Validator Name"},
|
154
|
-
"data": {"type": "anything", "title": "Validator Data"},
|
155
|
-
},
|
156
|
-
"meta_class": "TypeMeta",
|
157
|
-
"storage_metadata": {"table_name": "Validator", "db_fields": {}, "foreign_keys": {}},
|
158
|
-
},
|
159
|
-
),
|
160
61
|
]
|
@@ -0,0 +1,109 @@
|
|
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.CORE,
|
9
|
+
class_name="File",
|
10
|
+
new_schema={
|
11
|
+
"title": "File",
|
12
|
+
"required": ["filename", "data"],
|
13
|
+
"properties": {
|
14
|
+
"filename": {"type": "string", "title": "Filename"},
|
15
|
+
"data": {"type": "binary", "title": "Data"},
|
16
|
+
"size": {"type": "number", "title": "Size"},
|
17
|
+
},
|
18
|
+
"custom_code": 'import base64\nfrom pathlib import Path\nfrom typing import BinaryIO\n\nfrom pydantic import field_validator\n\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 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 data = file_or_path.read_bytes()\n filename = file_or_path.name\n else:\n file_or_path.seek(0)\n data = file_or_path.read()\n filename = Path(file_or_path.name).name\n return cls(data=data, filename=filename)\n\n@field_validator(\'data\')\n@classmethod\ndef data_base64_decode(cls, v: bytes) -> bytes:\n """\n Decodes a base64-encoded byte string if it is base64-encoded.\n\n This method checks if the provided byte string is base64-encoded and decodes it if true.\n If the byte string is not base64-encoded, it returns the original byte string.\n\n Args:\n cls: The class this method belongs to.\n v (bytes): The byte string to be checked and potentially decoded.\n\n Returns:\n bytes: The decoded byte string if it was base64-encoded, otherwise the original byte string.\n """\n is_base64: bool = False\n try:\n is_base64 = base64.b64encode(base64.b64decode(v)) == v\n except Exception:\n ...\n if is_base64:\n return base64.b64decode(v)\n return v\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\nasync def apre_create(self) -> None:\n """\n Prepares the object for creation by setting its size attribute.\n\n This method calculates the size of the object\'s data and assigns it to the size attribute.\n If the data is None, it defaults to an empty byte string.\n\n Args:\n None\n """\n self.size = len(self.data or b\'\')\n\nasync def apre_update(self) -> None:\n """\n Prepares the object for update by setting its size attribute.\n\n This method calculates the size of the object\'s data and assigns it to the size attribute.\n If the data is None, it defaults to an empty byte string.\n\n Args:\n None\n """\n self.size = len(self.data or b\'\')\n\ndef __repr__(self) -> str:\n return f\'File<{self.filename}>({self.size or len(self.data) or 0} bytes)\'\n\ndef __str__(self) -> str:\n return repr(self)\n\ndef pre_create(self) -> None:\n """\n Prepares the object for creation by setting its size attribute.\n\n This method calculates the size of the object\'s data and assigns it to the size attribute.\n If the data is None, it defaults to an empty byte string.\n\n Args:\n None\n """\n self.size = len(self.data or b\'\')\n\ndef pre_update(self) -> None:\n """\n Prepares the object for update by setting its size attribute.\n\n This method calculates the size of the object\'s data and assigns it to the size attribute.\n If the data is None, it defaults to an empty byte string.\n\n Args:\n None\n """\n self.size = len(self.data or b\'\')\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 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(self.data)\n else:\n file_or_path.write(self.data)\n file_or_path.seek(0)',
|
19
|
+
"storage_metadata": {
|
20
|
+
"table_name": "File",
|
21
|
+
"db_fields": {},
|
22
|
+
"primary_key": ["partition_key"],
|
23
|
+
"foreign_keys": {},
|
24
|
+
},
|
25
|
+
},
|
26
|
+
),
|
27
|
+
migrations.CreateClass(
|
28
|
+
module_type=ModuleType.CORE,
|
29
|
+
class_name="Fixture",
|
30
|
+
new_schema={
|
31
|
+
"title": "Fixture",
|
32
|
+
"required": ["external_id", "data"],
|
33
|
+
"properties": {
|
34
|
+
"class_name": {"type": "string", "title": "Class Name"},
|
35
|
+
"order": {"type": "number", "title": "Order"},
|
36
|
+
"external_id": {"type": "string", "title": "External ID"},
|
37
|
+
"data": {
|
38
|
+
"type": "dictionary",
|
39
|
+
"items": {"key": {"type": "string"}, "value": {"type": "anything"}},
|
40
|
+
"title": "Data",
|
41
|
+
},
|
42
|
+
},
|
43
|
+
"custom_code": "from typing import Any\n\nfrom amsdal_models.builder.validators.dict_validators import validate_non_empty_keys\nfrom pydantic.functional_validators import field_validator\n\n\n@field_validator('data')\n@classmethod\ndef _non_empty_keys_data(cls: type, value: Any) -> Any:\n return validate_non_empty_keys(value)",
|
44
|
+
"storage_metadata": {
|
45
|
+
"table_name": "Fixture",
|
46
|
+
"db_fields": {},
|
47
|
+
"primary_key": ["partition_key"],
|
48
|
+
"unique": [["external_id"]],
|
49
|
+
"foreign_keys": {},
|
50
|
+
},
|
51
|
+
},
|
52
|
+
),
|
53
|
+
migrations.CreateClass(
|
54
|
+
module_type=ModuleType.CORE,
|
55
|
+
class_name="Option",
|
56
|
+
new_schema={
|
57
|
+
"title": "Option",
|
58
|
+
"required": ["key", "value"],
|
59
|
+
"properties": {
|
60
|
+
"key": {"type": "string", "title": "Key"},
|
61
|
+
"value": {"type": "string", "title": "Value Type"},
|
62
|
+
},
|
63
|
+
"meta_class": "TypeMeta",
|
64
|
+
"storage_metadata": {"table_name": "Option", "db_fields": {}, "foreign_keys": {}},
|
65
|
+
},
|
66
|
+
),
|
67
|
+
migrations.CreateClass(
|
68
|
+
module_type=ModuleType.CORE,
|
69
|
+
class_name="StorageMetadata",
|
70
|
+
new_schema={
|
71
|
+
"title": "StorageMetadata",
|
72
|
+
"properties": {
|
73
|
+
"table_name": {"type": "string", "title": "Table name"},
|
74
|
+
"db_fields": {
|
75
|
+
"type": "dictionary",
|
76
|
+
"items": {"key": {"type": "string"}, "value": {"type": "array", "items": {"type": "string"}}},
|
77
|
+
"title": "Database fields",
|
78
|
+
},
|
79
|
+
"primary_key": {"type": "array", "items": {"type": "string"}, "title": "Primary key fields"},
|
80
|
+
"indexed": {
|
81
|
+
"type": "array",
|
82
|
+
"items": {"type": "array", "items": {"type": "string"}},
|
83
|
+
"title": "Indexed",
|
84
|
+
},
|
85
|
+
"unique": {
|
86
|
+
"type": "array",
|
87
|
+
"items": {"type": "array", "items": {"type": "string"}},
|
88
|
+
"title": "Unique Fields",
|
89
|
+
},
|
90
|
+
},
|
91
|
+
"meta_class": "TypeMeta",
|
92
|
+
"storage_metadata": {"table_name": "StorageMetadata", "db_fields": {}, "foreign_keys": {}},
|
93
|
+
},
|
94
|
+
),
|
95
|
+
migrations.CreateClass(
|
96
|
+
module_type=ModuleType.CORE,
|
97
|
+
class_name="Validator",
|
98
|
+
new_schema={
|
99
|
+
"title": "Validator",
|
100
|
+
"required": ["name", "data"],
|
101
|
+
"properties": {
|
102
|
+
"name": {"type": "string", "title": "Validator Name"},
|
103
|
+
"data": {"type": "anything", "title": "Validator Data"},
|
104
|
+
},
|
105
|
+
"meta_class": "TypeMeta",
|
106
|
+
"storage_metadata": {"table_name": "Validator", "db_fields": {}, "foreign_keys": {}},
|
107
|
+
},
|
108
|
+
),
|
109
|
+
]
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
amsdal/configs/main.pyi
CHANGED
Binary file
|
@@ -116,7 +116,7 @@ class CheckAndCreateSuperUserConsumer(LifecycleConsumer):
|
|
116
116
|
password=auth_settings.ADMIN_USER_PASSWORD.encode(),
|
117
117
|
permissions=[access_all_permission],
|
118
118
|
)
|
119
|
-
await instance.asave(force_insert=True)
|
119
|
+
await instance.asave(force_insert=True) # type: ignore[misc]
|
120
120
|
logger.info('Super user created successfully')
|
121
121
|
|
122
122
|
|
@@ -1,5 +1,6 @@
|
|
1
1
|
from _typeshed import Incomplete
|
2
2
|
from amsdal.contrib.auth.errors import AuthenticationError as AuthenticationError
|
3
|
+
from amsdal_data.transactions.decorators import async_transaction, transaction
|
3
4
|
from amsdal_models.classes.model import Model
|
4
5
|
from amsdal_utils.lifecycle.consumer import LifecycleConsumer
|
5
6
|
from typing import Any
|
@@ -13,6 +14,7 @@ class CheckAndCreateSuperUserConsumer(LifecycleConsumer):
|
|
13
14
|
This consumer checks if a super user exists based on the provided email and password
|
14
15
|
in the authentication settings. If the super user does not exist, it creates one.
|
15
16
|
"""
|
17
|
+
@transaction
|
16
18
|
def on_event(self) -> None:
|
17
19
|
"""
|
18
20
|
Checks for the existence of a super user and creates one if necessary.
|
@@ -21,6 +23,7 @@ class CheckAndCreateSuperUserConsumer(LifecycleConsumer):
|
|
21
23
|
in the authentication settings. If the super user does not exist, it creates one
|
22
24
|
with the necessary permissions.
|
23
25
|
"""
|
26
|
+
@async_transaction
|
24
27
|
async def on_event_async(self) -> None:
|
25
28
|
"""
|
26
29
|
Checks for the existence of a super user and creates one if necessary.
|
@@ -274,10 +274,26 @@ def convert_to_frontend_config(value: Any, *, is_transaction: bool = False) -> d
|
|
274
274
|
'controls': model_controls,
|
275
275
|
}
|
276
276
|
|
277
|
-
|
277
|
+
try:
|
278
|
+
if issubclass(value, Enum):
|
279
|
+
return {
|
280
|
+
'type': 'select',
|
281
|
+
'options': [{'label': option.name, 'value': option.value} for option in value],
|
282
|
+
}
|
283
|
+
except TypeError:
|
284
|
+
pass
|
285
|
+
|
286
|
+
if value.__class__.__name__ == '_LiteralGenericAlias' and hasattr(value, '__origin__'):
|
287
|
+
options = get_args(value)
|
278
288
|
return {
|
279
289
|
'type': 'select',
|
280
|
-
'options': [{'label': option
|
290
|
+
'options': [{'label': str(option), 'value': option} for option in options],
|
281
291
|
}
|
282
292
|
|
293
|
+
if value.__class__.__name__ == '_AnnotatedAlias' and hasattr(value, '__origin__'):
|
294
|
+
# Handle Annotated types
|
295
|
+
options = get_args(value)
|
296
|
+
if options:
|
297
|
+
return convert_to_frontend_config(options[0], is_transaction=is_transaction)
|
298
|
+
|
283
299
|
return {}
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
amsdal/manager.pyi
CHANGED
@@ -5,6 +5,7 @@ from amsdal.configs.main import settings as settings
|
|
5
5
|
from amsdal.errors import AmsdalAuthenticationError as AmsdalAuthenticationError, AmsdalMissingCredentialsError as AmsdalMissingCredentialsError, AmsdalRuntimeError as AmsdalRuntimeError, AmsdalSignupError as AmsdalSignupError
|
6
6
|
from amsdal.fixtures.manager import AsyncFixturesManager as AsyncFixturesManager, FixturesManager as FixturesManager
|
7
7
|
from amsdal.mixins.class_versions_mixin import ClassVersionsMixin as ClassVersionsMixin
|
8
|
+
from amsdal_data.transactions.decorators import async_transaction, transaction
|
8
9
|
from amsdal_models.classes.class_manager import ClassManager
|
9
10
|
from amsdal_utils.config.data_models.amsdal_config import AmsdalConfig as AmsdalConfig
|
10
11
|
from amsdal_utils.utils.singleton import Singleton
|
@@ -69,6 +70,7 @@ class AmsdalManager(ClassVersionsMixin, metaclass=Singleton):
|
|
69
70
|
Returns:
|
70
71
|
None
|
71
72
|
"""
|
73
|
+
@transaction
|
72
74
|
def post_setup(self) -> None:
|
73
75
|
"""
|
74
76
|
Registers internal classes and prepares connections (creates internal tables).
|
@@ -98,6 +100,7 @@ class AmsdalManager(ClassVersionsMixin, metaclass=Singleton):
|
|
98
100
|
Returns:
|
99
101
|
None
|
100
102
|
"""
|
103
|
+
@transaction
|
101
104
|
def apply_fixtures(self) -> None:
|
102
105
|
"""
|
103
106
|
Loads and applies fixtures defined in your application.
|
@@ -194,6 +197,7 @@ class AsyncAmsdalManager(ClassVersionsMixin, metaclass=Singleton):
|
|
194
197
|
Returns:
|
195
198
|
None
|
196
199
|
"""
|
200
|
+
@async_transaction
|
197
201
|
async def post_setup(self) -> None:
|
198
202
|
"""
|
199
203
|
Registers internal classes and prepares connections (creates internal tables).
|
@@ -223,6 +227,7 @@ class AsyncAmsdalManager(ClassVersionsMixin, metaclass=Singleton):
|
|
223
227
|
Returns:
|
224
228
|
None
|
225
229
|
"""
|
230
|
+
@async_transaction
|
226
231
|
async def apply_fixtures(self) -> None:
|
227
232
|
"""
|
228
233
|
Loads and applies fixtures defined in your application.
|
Binary file
|
Binary file
|
amsdal/models/types/object.py
CHANGED
@@ -11,9 +11,9 @@ from pydantic.functional_validators import field_validator
|
|
11
11
|
|
12
12
|
class Object(Model):
|
13
13
|
__module_type__: ClassVar[ModuleType] = ModuleType.TYPE
|
14
|
-
title: str = Field(title='Title')
|
15
|
-
type: str = Field(title='Type')
|
16
|
-
module_type: str = Field(title='Module Type')
|
14
|
+
title: str = Field(title='Title', default='')
|
15
|
+
type: str = Field(title='Type', default='object')
|
16
|
+
module_type: str = Field(title='Module Type', default=ModuleType.CORE.value)
|
17
17
|
default: Optional[Any] = Field(None, title='Default') # noqa: UP007
|
18
18
|
properties: Optional[dict[str, Optional[Any]]] = Field(None, title='Properties') # noqa: UP007
|
19
19
|
required: Optional[list[str]] = Field(None, title='Required') # noqa: UP007
|
amsdal/schemas/interfaces.pyi
CHANGED
@@ -3,7 +3,7 @@ from abc import ABC, abstractmethod
|
|
3
3
|
from amsdal_utils.schemas.schema import ObjectSchema as ObjectSchema
|
4
4
|
from typing import TypeAlias
|
5
5
|
|
6
|
-
ModulePathType: TypeAlias
|
6
|
+
ModulePathType: TypeAlias = str
|
7
7
|
|
8
8
|
class BaseSchemaLoader(ABC, metaclass=abc.ABCMeta):
|
9
9
|
@property
|
Binary file
|
amsdal/schemas/utils.pyi
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
from amsdal_utils.models.enums import ModuleType as ModuleType
|
2
2
|
from typing import TypeAlias
|
3
3
|
|
4
|
-
ModulePathType: TypeAlias
|
5
|
-
ClassNameType: TypeAlias
|
4
|
+
ModulePathType: TypeAlias = str
|
5
|
+
ClassNameType: TypeAlias = str
|
6
6
|
|
7
7
|
class ModelModuleInfo:
|
8
8
|
_info: dict[ModuleType, dict[ClassNameType, ModulePathType]]
|
Binary file
|
Binary file
|
@@ -1,3 +1,6 @@
|
|
1
|
+
from amsdal_data.transactions.decorators import async_transaction, transaction
|
2
|
+
|
3
|
+
@transaction
|
1
4
|
def rollback_to_timestamp(timestamp: float) -> None:
|
2
5
|
"""
|
3
6
|
Rollback the data to the given timestamp
|
@@ -6,6 +9,7 @@ def rollback_to_timestamp(timestamp: float) -> None:
|
|
6
9
|
Returns:
|
7
10
|
None
|
8
11
|
"""
|
12
|
+
@transaction
|
9
13
|
def rollback_transaction(transaction_id: str) -> None:
|
10
14
|
"""
|
11
15
|
Rollback the data to the point in time before the given transaction
|
@@ -14,6 +18,7 @@ def rollback_transaction(transaction_id: str) -> None:
|
|
14
18
|
Returns:
|
15
19
|
None
|
16
20
|
"""
|
21
|
+
@async_transaction
|
17
22
|
async def async_rollback_to_timestamp(timestamp: float) -> None:
|
18
23
|
"""
|
19
24
|
Rollback the data to the given timestamp
|
@@ -22,6 +27,7 @@ async def async_rollback_to_timestamp(timestamp: float) -> None:
|
|
22
27
|
Returns:
|
23
28
|
None
|
24
29
|
"""
|
30
|
+
@async_transaction
|
25
31
|
async def async_rollback_transaction(transaction_id: str) -> None:
|
26
32
|
"""
|
27
33
|
Rollback the data to the point in time before the given transaction
|
@@ -1,9 +1,9 @@
|
|
1
|
-
amsdal/manager.pyi,sha256=
|
1
|
+
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
|
-
amsdal/manager.cpython-311-darwin.so,sha256=
|
4
|
+
amsdal/manager.cpython-311-darwin.so,sha256=BbQJ3IjBppsg1T3wHhsBBUXNFZdhsozwAHtRbHun51M,518288
|
5
5
|
amsdal/Third-Party Materials - AMSDAL Dependencies - License Notices.md,sha256=3YRsqickIvSW7EmjlC-yk5h-YW_GMzAz7wsT9ZPIiaM,74780
|
6
|
-
amsdal/__about__.py,sha256=
|
6
|
+
amsdal/__about__.py,sha256=glsk81MrslMVQFReYet26elGhdxBZYmME4LF8nyLdxA,124
|
7
7
|
amsdal/errors.pyi,sha256=mcuGsQMWaIUmC9GJDIkf99dQMMsCfBy6OI_UB3NSNmc,597
|
8
8
|
amsdal/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
9
9
|
amsdal/errors.py,sha256=pZZKIklaDkh8jdFSAfX81TbiylvbaE70nttRjTcTSBk,616
|
@@ -14,8 +14,8 @@ amsdal/context/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
14
14
|
amsdal/context/manager.py,sha256=CKGY75P2y-TCnZvK5p9NJsDgHo8KXHSE0Eg5AGRjnfk,1850
|
15
15
|
amsdal/mixins/class_versions_mixin.pyi,sha256=oSXjkTsN35d-3YgCckclhk7xRkljKHLYtN8a8gJgj2o,548
|
16
16
|
amsdal/mixins/__init__.pyi,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
17
|
-
amsdal/mixins/__init__.cpython-311-darwin.so,sha256=
|
18
|
-
amsdal/mixins/class_versions_mixin.cpython-311-darwin.so,sha256=
|
17
|
+
amsdal/mixins/__init__.cpython-311-darwin.so,sha256=Mnb1htLQnovER0AGjaAyMIESBcV83qNqPv9KWxufns0,120656
|
18
|
+
amsdal/mixins/class_versions_mixin.cpython-311-darwin.so,sha256=xuK-8faT4n4RPhKRr8SQ1ghxIGQrU6lnD6j9veJcqQQ,180576
|
19
19
|
amsdal/utils/__init__.pyi,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
20
20
|
amsdal/utils/contrib_paths.py,sha256=9BpNegbPofuvaQ4bE4E5cO4IV415ZZJkTqSLHUruJ3k,787
|
21
21
|
amsdal/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -24,13 +24,13 @@ amsdal/utils/tests/enums.py,sha256=DoVtMzvfePjfLiAVctPDehdTTHawDbWrQP3yg46Bx6k,3
|
|
24
24
|
amsdal/utils/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
25
25
|
amsdal/utils/tests/factories.py,sha256=SAnMjkDHg2dXgnDfxQGTvZX5MLuRmdskq7Cjbf6swVk,1926
|
26
26
|
amsdal/utils/tests/helpers.py,sha256=THD7IaDmpIquolh82b1IHUbVpcyQSk2GvwnZEEtQpPE,17383
|
27
|
-
amsdal/utils/rollback/__init__.pyi,sha256=
|
27
|
+
amsdal/utils/rollback/__init__.pyi,sha256=oA1_VJjK3k13nUp8H1wXjJs6LrlqEtAethPRQ7P8mLc,1106
|
28
28
|
amsdal/utils/rollback/__init__.py,sha256=NBIvidqj0nKRa30mWon5onpHBPQidb0DFJGcZbkKrY8,16832
|
29
29
|
amsdal/models/__init__.pyi,sha256=14Jaejs35pftAZ8z3rNWKV6csTrBZPPKMNKrrIx_rTs,825
|
30
30
|
amsdal/models/__init__.py,sha256=bwURV9lpt8a6S8WvLgMDk_haor9FUQa-o29StSdTMCs,757
|
31
31
|
amsdal/models/types/object.pyi,sha256=eK0S3jDDZGHmsvdbQKdLFVG3FScAUx6eOM9HMjO5TLw,532
|
32
32
|
amsdal/models/types/__init__.pyi,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
33
|
-
amsdal/models/types/object.py,sha256=
|
33
|
+
amsdal/models/types/object.py,sha256=cFbuXw_YVDmWdBIp49snKcTV2BmBag8LjinkLfV0_fA,1229
|
34
34
|
amsdal/models/types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
35
35
|
amsdal/models/core/validator.py,sha256=Eqn2XvJV8Kn6NT2HnIGIkAV2ubmSen3rx5Yaeiuapak,367
|
36
36
|
amsdal/models/core/fixture.py,sha256=V4SS1rAYD6mtRjwZ5tEaGgZL3fgRuP2KJ4x7R3AkBWo,1000
|
@@ -50,7 +50,7 @@ amsdal/models/core/class_object.py,sha256=Y5sdatrNZK1jkMImyeRFTxeUonuzJaDCKZzULZ
|
|
50
50
|
amsdal/models/core/file.pyi,sha256=RZTKCfjQ4fXtwz3E1xtgDsViaB_IwGtX2icDQtw-_kk,3460
|
51
51
|
amsdal/contrib/__init__.pyi,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
52
52
|
amsdal/contrib/app_config.pyi,sha256=j3MYfBcn9MzhTagEczGWfVH9N5jrfiKmUhxZMoakojw,149
|
53
|
-
amsdal/contrib/__init__.cpython-311-darwin.so,sha256=
|
53
|
+
amsdal/contrib/__init__.cpython-311-darwin.so,sha256=NkVwpCK07FTSdj1g0M2uUkD9UoWBeNn_NUW1nmQ64tg,120656
|
54
54
|
amsdal/contrib/app_config.py,sha256=RT3RAEE49XtzuFTXYNVuaqU9V4YIl0ZWZijtXgV-SC4,131
|
55
55
|
amsdal/contrib/auth/__init__.pyi,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
56
56
|
amsdal/contrib/auth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -65,8 +65,8 @@ amsdal/contrib/auth/decorators/__init__.pyi,sha256=1DKnpx3dKyeuHyKcnXn0TzVqQxT8q
|
|
65
65
|
amsdal/contrib/auth/decorators/__init__.py,sha256=oBKJQtgWnWiPOjol9-KejJPuQJmfsjj14UVB_4qB4kw,1088
|
66
66
|
amsdal/contrib/auth/lifecycle/__init__.pyi,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
67
67
|
amsdal/contrib/auth/lifecycle/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
68
|
-
amsdal/contrib/auth/lifecycle/consumer.pyi,sha256=
|
69
|
-
amsdal/contrib/auth/lifecycle/consumer.py,sha256=
|
68
|
+
amsdal/contrib/auth/lifecycle/consumer.pyi,sha256=xvcZIfpCE-HmUm_KwyVvkueiipl90teZqdlszmappD4,5333
|
69
|
+
amsdal/contrib/auth/lifecycle/consumer.py,sha256=N2JJuS13FC4rOHsHuHgMKU0Kef9-S31RUiP3QHXjqIQ,16884
|
70
70
|
amsdal/contrib/auth/models/user.py,sha256=jc8XbgfYtbuktu1Qz0DHLCNGHzrK2pyKrtdH8m7VMzk,3771
|
71
71
|
amsdal/contrib/auth/models/__init__.pyi,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
72
72
|
amsdal/contrib/auth/models/permission.py,sha256=KOy91A6PEbftwqfXlp91JZZM6YfAxG6B5-M3FfC5Nb0,675
|
@@ -114,17 +114,17 @@ amsdal/contrib/frontend_configs/models/frontend_config_skip_none_base.py,sha256=
|
|
114
114
|
amsdal/contrib/frontend_configs/models/frontend_activator_config.py,sha256=40mXb53uk4Rg4F5uMgCFHuDJTjQA9b_qO5zUtJHTPKk,1023
|
115
115
|
amsdal/contrib/frontend_configs/models/frontend_config_validator.py,sha256=TckgaoRn3hU04rihXQMTAt8wNFoZo8dzHTR0RVyPytY,1317
|
116
116
|
amsdal/contrib/frontend_configs/conversion/__init__.pyi,sha256=Gbz6P3jhpqK6hLcGxi6l0sI_MNrb8_JNLLD4YVOjkFY,162
|
117
|
-
amsdal/contrib/frontend_configs/conversion/convert.py,sha256=
|
117
|
+
amsdal/contrib/frontend_configs/conversion/convert.py,sha256=So5O3kNoneI30w1EiBnYPBwajxq6md9-7NFzdnd3SzU,9454
|
118
118
|
amsdal/contrib/frontend_configs/conversion/convert.pyi,sha256=cmJVdWBIobg3a5QEZUN1itITb5vPX9DoWqPzZCPN28M,913
|
119
119
|
amsdal/contrib/frontend_configs/conversion/__init__.py,sha256=4Kkv5xgGvqky3szx08bBfbbxrc6TeFDSnosGimSoNcI,139
|
120
120
|
amsdal/schemas/interfaces.py,sha256=ECDbWTljhGXYVbbSLjH0ko-rIWgp4LttuIr-Amte2bA,672
|
121
121
|
amsdal/schemas/manager.pyi,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
122
122
|
amsdal/schemas/__init__.pyi,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
123
123
|
amsdal/schemas/repository.pyi,sha256=e6YUXO248WmhWkkXWt828JrFzIJ9alTPqjXqbktjeWw,1443
|
124
|
-
amsdal/schemas/interfaces.pyi,sha256=
|
124
|
+
amsdal/schemas/interfaces.pyi,sha256=jUXLEKIa_af9Qrv9a4UvfRmsUV78N921i4dDXKHPaQk,725
|
125
125
|
amsdal/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
126
|
-
amsdal/schemas/manager.cpython-311-darwin.so,sha256=
|
127
|
-
amsdal/schemas/utils.pyi,sha256=
|
126
|
+
amsdal/schemas/manager.cpython-311-darwin.so,sha256=TLnEHASOYVzXgQR_aIg8QewOJXV7vY-_L1RcifenI1M,120656
|
127
|
+
amsdal/schemas/utils.pyi,sha256=UbeISOxetojP6HlzhiJWeaAVyYZUrnGAS5niTQ0m6n0,437
|
128
128
|
amsdal/schemas/utils.py,sha256=t8k7QYYR6SsCPpBhp7s585eSYKVIF895EKRMK1w1y1Q,492
|
129
129
|
amsdal/schemas/repository.py,sha256=PbskgDr8JMabQm2uf8Kfj5bBSPlPkx4cDGXn-jfIsPM,3249
|
130
130
|
amsdal/schemas/manager.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -161,104 +161,105 @@ amsdal/schemas/mixins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
|
|
161
161
|
amsdal/schemas/mixins/check_dependencies_mixin.py,sha256=M3Wi1g4F9pbEEpOUlXUhCnvh5CyObhRlij0AecTTbJc,5082
|
162
162
|
amsdal/queryset/__init__.pyi,sha256=U8YdXkB_drnE4aX54kg7B8my9fyPg-pwsVct6QfM5Bc,545
|
163
163
|
amsdal/queryset/__init__.py,sha256=CzNaFx6yHvePtd3JY1ZGF3QLfE-e_ll5iSnaCVWdKHI,676
|
164
|
-
amsdal/__migrations__/
|
165
|
-
amsdal/__migrations__/
|
164
|
+
amsdal/__migrations__/0002_create_class_file.py,sha256=Aq72H968urji4D5aEMCsEol6gaXp1SGylmhua-hxBec,9360
|
165
|
+
amsdal/__migrations__/0000_initial.py,sha256=USn8u2uhHy9yFtONsTec-LMdCl3f7GQ_AgSL-yQZmO4,1874
|
166
|
+
amsdal/__migrations__/0001_create_class_file.py,sha256=ujBYnCvk-UhswWlSIsiQqMbgSrXBsdWDFNaFLlc0Trc,3762
|
166
167
|
amsdal/transactions/__init__.pyi,sha256=tK1CNKSx7gEFephi0mw04j-xxl1Z2af3iFbykFqov6I,340
|
167
168
|
amsdal/transactions/__init__.py,sha256=XQF1Ipr2Ao0TDhyNlZPAF8TNkpl75PalOZrzRVzQn1g,429
|
168
169
|
amsdal/configs/__init__.pyi,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
169
170
|
amsdal/configs/constants.pyi,sha256=ZoWj8V0YkrPaY0zBsXCenwuWMQIQ0K6hnzr4We9CRl0,683
|
170
171
|
amsdal/configs/constants.py,sha256=faghdS6r3on1WKrp782WmgONd1fMf4X73LJzAwMO1po,969
|
171
172
|
amsdal/configs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
172
|
-
amsdal/configs/main.pyi,sha256=
|
173
|
+
amsdal/configs/main.pyi,sha256=XpcltkUCEECvRbiQ6P-j66zjU_g8lWLbCPfHoHhRMyw,6846
|
173
174
|
amsdal/configs/main.py,sha256=lRO_iTMlmlosTAHZrVg3iXZVuKj45lEb5LrPln3wixM,9567
|
174
|
-
amsdal/cloud/client.cpython-311-darwin.so,sha256=
|
175
|
+
amsdal/cloud/client.cpython-311-darwin.so,sha256=gYdnwbQxRpLh-lI9uCabM3JMLunVs6osYvMC1aKxV1A,216208
|
175
176
|
amsdal/cloud/__init__.pyi,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
176
177
|
amsdal/cloud/constants.pyi,sha256=0qWxDqjQkETwUtgco5kV83fPHhQ4jRdJe_YPPNTnSIY,327
|
177
178
|
amsdal/cloud/client.pyi,sha256=3VjPRtJrbUU29u_wswETrMorN0iUb4GFAXmMc73bUf4,2247
|
178
|
-
amsdal/cloud/enums.cpython-311-darwin.so,sha256=
|
179
|
-
amsdal/cloud/constants.cpython-311-darwin.so,sha256=
|
180
|
-
amsdal/cloud/__init__.cpython-311-darwin.so,sha256=
|
179
|
+
amsdal/cloud/enums.cpython-311-darwin.so,sha256=baglpC58WCdOYmmGRtB9dg_sz9oXfxsnM-v3k73_nJU,158064
|
180
|
+
amsdal/cloud/constants.cpython-311-darwin.so,sha256=AAM4AnPTS6DCaCWcVRg5nfqJvFnVLEwz4gcZ32V9o2M,158688
|
181
|
+
amsdal/cloud/__init__.cpython-311-darwin.so,sha256=LprELAdMV_f1DtUqQhoNuFkyFE7hsMhIoJ_R4i8dybc,120656
|
181
182
|
amsdal/cloud/enums.pyi,sha256=mX5O1FPc3aNnN108aOJT66Nn9KlcyrRTj9B23sFdDfw,1757
|
182
|
-
amsdal/cloud/models/base.cpython-311-darwin.so,sha256=
|
183
|
+
amsdal/cloud/models/base.cpython-311-darwin.so,sha256=z1GtH9k1LrCimzWLhRg4F-2TiKNDIeaH0Pu1TkamSRU,211632
|
183
184
|
amsdal/cloud/models/base.pyi,sha256=avwAj4uS4NHrXvmSKBxokFKFWSaBPXtJPl1Ig1CD6sg,7727
|
184
185
|
amsdal/cloud/models/__init__.pyi,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
185
|
-
amsdal/cloud/models/__init__.cpython-311-darwin.so,sha256=
|
186
|
+
amsdal/cloud/models/__init__.cpython-311-darwin.so,sha256=Xu-lQ6PeAw4sWN5d6CYLsBDA4BD9A_Zj4i9tppHqcMU,120688
|
186
187
|
amsdal/cloud/services/__init__.pyi,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
187
|
-
amsdal/cloud/services/__init__.cpython-311-darwin.so,sha256=
|
188
|
-
amsdal/cloud/services/auth/base.cpython-311-darwin.so,sha256=
|
188
|
+
amsdal/cloud/services/__init__.cpython-311-darwin.so,sha256=V1Ufn1lTNJAifP0Zb1qLbhKcdsFZ-ypR9LTvXpTFFCk,120688
|
189
|
+
amsdal/cloud/services/auth/base.cpython-311-darwin.so,sha256=29rIPazJ8vKz3zGmEa4eJ61h75lTDVqSHl3YAM3ukV8,163104
|
189
190
|
amsdal/cloud/services/auth/base.pyi,sha256=oj_tgwWhf02g-FzCLcNOEZjYDxfcrrDssING4jsUMb8,167
|
190
191
|
amsdal/cloud/services/auth/manager.pyi,sha256=AhKllHgraztP3JSKta9MmQjTNRAbQbwqZg2EpQZSwhI,1243
|
191
192
|
amsdal/cloud/services/auth/__init__.pyi,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
192
193
|
amsdal/cloud/services/auth/signup_service.pyi,sha256=SfSN1tLIwrzGi9JbMgoLuKKH1u5uoh_MOFJ4n_NHcBY,1145
|
193
|
-
amsdal/cloud/services/auth/token.cpython-311-darwin.so,sha256=
|
194
|
-
amsdal/cloud/services/auth/manager.cpython-311-darwin.so,sha256=
|
194
|
+
amsdal/cloud/services/auth/token.cpython-311-darwin.so,sha256=9iCY-7TMPPdIOQNdio4G6pwJWzTQg1gclEH31tq8Q7Y,251536
|
195
|
+
amsdal/cloud/services/auth/manager.cpython-311-darwin.so,sha256=ZVkutpb5REysd1kFojIfbYbxIkEiKrCcdK0SHBqF4YM,214128
|
195
196
|
amsdal/cloud/services/auth/token.pyi,sha256=v9QDleIytAZGlYHHaO-W1fTr5d2OLGWsh5g6HDeuk90,1042
|
196
|
-
amsdal/cloud/services/auth/signup_service.cpython-311-darwin.so,sha256=
|
197
|
-
amsdal/cloud/services/auth/__init__.cpython-311-darwin.so,sha256=
|
198
|
-
amsdal/cloud/services/auth/credentials.cpython-311-darwin.so,sha256=
|
197
|
+
amsdal/cloud/services/auth/signup_service.cpython-311-darwin.so,sha256=YU0ZFKnwb0l7sjPiFqz3pYFx5YL8Jdgv5JrjqMe2jbg,216216
|
198
|
+
amsdal/cloud/services/auth/__init__.cpython-311-darwin.so,sha256=oRV17ShH-u-lNIRRBklfiASLW6ouGzUytARpRN2aW6A,120704
|
199
|
+
amsdal/cloud/services/auth/credentials.cpython-311-darwin.so,sha256=w6oMM4svmJ_5q4wZPNulMlyFGtCt8kTxqLfGJ_r5r1k,253224
|
199
200
|
amsdal/cloud/services/auth/credentials.pyi,sha256=ghp3r8rDq5l5xxx7UKFkCASyQJbWChkF2PQDJrQmeW4,1417
|
200
|
-
amsdal/cloud/services/actions/get_basic_auth_credentials.cpython-311-darwin.so,sha256=
|
201
|
-
amsdal/cloud/services/actions/base.cpython-311-darwin.so,sha256=
|
201
|
+
amsdal/cloud/services/actions/get_basic_auth_credentials.cpython-311-darwin.so,sha256=YEwTLhq5KAMOs4naDwLg39PyIn1YwJvIGlBtRKoCx-Y,181112
|
202
|
+
amsdal/cloud/services/actions/base.cpython-311-darwin.so,sha256=qRMD9-xoKhvS9W-H1HO6tkEKHwOway7ukfEnq95rpGg,323552
|
202
203
|
amsdal/cloud/services/actions/list_envs.pyi,sha256=7PylFRd1Jb6nkTt8q8iy27rLj-Q5qcwfqW02_OlfDZs,878
|
203
|
-
amsdal/cloud/services/actions/delete_basic_auth.cpython-311-darwin.so,sha256=
|
204
|
+
amsdal/cloud/services/actions/delete_basic_auth.cpython-311-darwin.so,sha256=6gpw594pD1IO3otHqOKsP9Fq7qmZxTR86XGIEoGfEKo,180744
|
204
205
|
amsdal/cloud/services/actions/base.pyi,sha256=J98igdu3E9-mled_kbxerja4DTLM0OAW8cHtsVOQ_fc,5880
|
205
|
-
amsdal/cloud/services/actions/add_allowlist_ip.cpython-311-darwin.so,sha256=
|
206
|
-
amsdal/cloud/services/actions/signup_action.cpython-311-darwin.so,sha256=
|
206
|
+
amsdal/cloud/services/actions/add_allowlist_ip.cpython-311-darwin.so,sha256=FJZjKCn5jmiMRx8sr1v_HZiZePuo_DpeDGaxK6t0oPI,180776
|
207
|
+
amsdal/cloud/services/actions/signup_action.cpython-311-darwin.so,sha256=u595N1iI6uthsxfQ1cOPFSZd6Z5EQotRuvz-CW4PD0k,180584
|
207
208
|
amsdal/cloud/services/actions/manager.pyi,sha256=Tal5u1nMhi7MeuJ9lBIPYPLgKoIB6DUXPU2AokrusHI,15441
|
208
|
-
amsdal/cloud/services/actions/delete_dependency.cpython-311-darwin.so,sha256=
|
209
|
-
amsdal/cloud/services/actions/expose_db.cpython-311-darwin.so,sha256=
|
209
|
+
amsdal/cloud/services/actions/delete_dependency.cpython-311-darwin.so,sha256=1gCruyb5ZpWrZZuKTv1TYFqD3J5wWN8cbpnu2cy62Vg,180760
|
210
|
+
amsdal/cloud/services/actions/expose_db.cpython-311-darwin.so,sha256=K9T_PrioYm0IM0MDtDWROg7n8WUJHsxBqDHgKP26BBc,181184
|
210
211
|
amsdal/cloud/services/actions/delete_allowlist_ip.pyi,sha256=W5zVq7YKL_OVigZl58bqau3rvAzsLdItAZaqDO1HGJw,933
|
211
|
-
amsdal/cloud/services/actions/add_secret.cpython-311-darwin.so,sha256=
|
212
|
+
amsdal/cloud/services/actions/add_secret.cpython-311-darwin.so,sha256=EwbEL48w3Uo8zQmPgw85hiR6x86ILfn78BJCiYLnQK8,180632
|
212
213
|
amsdal/cloud/services/actions/add_basic_auth.pyi,sha256=4tyTci_k_xlJrkBd71sY0ivRr8alo3Bq0KCkjIfacu4,1106
|
213
214
|
amsdal/cloud/services/actions/list_secrets.pyi,sha256=vF-EikAy7WHdkvkGikD_oDFDIgE1GEr8nxAQKYAs9rY,1079
|
214
|
-
amsdal/cloud/services/actions/list_secrets.cpython-311-darwin.so,sha256=
|
215
|
+
amsdal/cloud/services/actions/list_secrets.cpython-311-darwin.so,sha256=xBEm68z-sIQcKORkrsFkWb_Yh3Z-1qnfR89glqFxDGk,181304
|
215
216
|
amsdal/cloud/services/actions/__init__.pyi,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
216
217
|
amsdal/cloud/services/actions/get_basic_auth_credentials.pyi,sha256=1FU8BtDRaGTx8fSqdhmotQK-rR7gKr4Qav_E-T_23rc,1071
|
217
|
-
amsdal/cloud/services/actions/list_deploys.cpython-311-darwin.so,sha256=
|
218
|
-
amsdal/cloud/services/actions/list_envs.cpython-311-darwin.so,sha256=
|
219
|
-
amsdal/cloud/services/actions/list_dependencies.cpython-311-darwin.so,sha256=
|
220
|
-
amsdal/cloud/services/actions/destroy_deploy.cpython-311-darwin.so,sha256=
|
221
|
-
amsdal/cloud/services/actions/create_session.cpython-311-darwin.so,sha256=
|
222
|
-
amsdal/cloud/services/actions/create_deploy.cpython-311-darwin.so,sha256=
|
218
|
+
amsdal/cloud/services/actions/list_deploys.cpython-311-darwin.so,sha256=MXKZR-mV-dP-xwM8bui4ocHZQNkxj8Dqn7j9Qjyiu4c,181080
|
219
|
+
amsdal/cloud/services/actions/list_envs.cpython-311-darwin.so,sha256=f6FPaqzrRUB2dYwG7-DwckOJRq2bKNYckMw3L1VxKD0,180752
|
220
|
+
amsdal/cloud/services/actions/list_dependencies.cpython-311-darwin.so,sha256=V7b5V1HOqvcqo8dBGOny24vVkI_Z9heHVFoH3O5GcxI,181304
|
221
|
+
amsdal/cloud/services/actions/destroy_deploy.cpython-311-darwin.so,sha256=pMWmj5y0a9ulD9nLiCN5vOR6Hig7TnOUhDOeNP4pUg0,180536
|
222
|
+
amsdal/cloud/services/actions/create_session.cpython-311-darwin.so,sha256=4VbvRuhnkVZSYfuu-KbnNgInGrN8pBNsR-LbX0jAJSM,180984
|
223
|
+
amsdal/cloud/services/actions/create_deploy.cpython-311-darwin.so,sha256=8s8eCemdXtYVfEguxToMpO4Bw2mdVdiZ7UTM4Gz8jaQ,269240
|
223
224
|
amsdal/cloud/services/actions/delete_secret.pyi,sha256=gZi17MivNYBIfdPU2GjoJ2I2lWiefdvLuXTcxDss1P4,953
|
224
225
|
amsdal/cloud/services/actions/delete_env.pyi,sha256=uyBHMOp_AprbpSfv6y6QfYW5FvK1-8jb2NxK_FmuPHE,969
|
225
|
-
amsdal/cloud/services/actions/manager.cpython-311-darwin.so,sha256=
|
226
|
+
amsdal/cloud/services/actions/manager.cpython-311-darwin.so,sha256=VymwBPojqwPfqJuECfkcSaj5t5FsJAtZbV5hbVpW6Us,371312
|
226
227
|
amsdal/cloud/services/actions/delete_dependency.pyi,sha256=VuT1w2qOpjR7I9mBi9tPXMXDPEeU8tG0vi9TXV82Frg,1021
|
227
|
-
amsdal/cloud/services/actions/add_dependency.cpython-311-darwin.so,sha256=
|
228
|
+
amsdal/cloud/services/actions/add_dependency.cpython-311-darwin.so,sha256=RHc3WCFwjh-DKyrTgdb_WKbG80yQnCfZ0evWyRCvVuM,180712
|
228
229
|
amsdal/cloud/services/actions/create_session.pyi,sha256=KUvx_vkhLQfGp_DM1ZvgszyT_G8LB28KoI1XpjNR7YY,674
|
229
|
-
amsdal/cloud/services/actions/delete_allowlist_ip.cpython-311-darwin.so,sha256=
|
230
|
+
amsdal/cloud/services/actions/delete_allowlist_ip.cpython-311-darwin.so,sha256=H0SZJ33z0KUFIbDIC1VumNdL-3-zRV86Xm4y7Ghj0Oc,180832
|
230
231
|
amsdal/cloud/services/actions/list_deploys.pyi,sha256=Q8da3PDPxICLP2V7L-A7p-9_a3qNKrARqgHhu0CA0nA,724
|
231
|
-
amsdal/cloud/services/actions/add_basic_auth.cpython-311-darwin.so,sha256=
|
232
|
+
amsdal/cloud/services/actions/add_basic_auth.cpython-311-darwin.so,sha256=VokL6x924HxiPltzblwZAlALFFn1nzpDiUw7Z7EucPc,181112
|
232
233
|
amsdal/cloud/services/actions/add_allowlist_ip.pyi,sha256=gB2NQVz8NcSsgXYiym2Suh1RPI8eHKIAFE13RmeTHkA,883
|
233
234
|
amsdal/cloud/services/actions/get_monitoring_info.pyi,sha256=uvtBgWvtWf-Mq4vZq_q-q8Z8hJh5voAY61KRJQPGWFk,1045
|
234
235
|
amsdal/cloud/services/actions/add_dependency.pyi,sha256=uVEIhvDa4GRS0Lg6TkcYdOwezKcxrzL7A_Lh8BxcAeU,837
|
235
|
-
amsdal/cloud/services/actions/get_monitoring_info.cpython-311-darwin.so,sha256=
|
236
|
-
amsdal/cloud/services/actions/update_deploy.cpython-311-darwin.so,sha256=
|
236
|
+
amsdal/cloud/services/actions/get_monitoring_info.cpython-311-darwin.so,sha256=3env1kWSC1LeSW8Kz8eja2WV4SZDxHe2mUDq8kJ8sKU,180976
|
237
|
+
amsdal/cloud/services/actions/update_deploy.cpython-311-darwin.so,sha256=c8t82vX15TQQG2boJg0T6CwfjtcO7TYCyIXCWaj5_wM,181064
|
237
238
|
amsdal/cloud/services/actions/signup_action.pyi,sha256=VswHjhxw2eHYqXwc---F2LpwlD7GlIuL_Ev2DmA96_4,808
|
238
|
-
amsdal/cloud/services/actions/create_env.cpython-311-darwin.so,sha256=
|
239
|
+
amsdal/cloud/services/actions/create_env.cpython-311-darwin.so,sha256=fuFga_WA-4YEJoi4zMrYVG8T8f10ESduU4ri2IGRVIM,180824
|
239
240
|
amsdal/cloud/services/actions/add_secret.pyi,sha256=H6rS3PRwiktMfnoY8qwtmTplN9gG2yZgQKKCX8S8Q6c,890
|
240
|
-
amsdal/cloud/services/actions/delete_env.cpython-311-darwin.so,sha256=
|
241
|
-
amsdal/cloud/services/actions/__init__.cpython-311-darwin.so,sha256=
|
241
|
+
amsdal/cloud/services/actions/delete_env.cpython-311-darwin.so,sha256=sUFZ7NWlQUlZbpnDSJcgvh2hkSxvq7EsB5n5wFHau_g,180824
|
242
|
+
amsdal/cloud/services/actions/__init__.cpython-311-darwin.so,sha256=PoSoEFo4eAtlXonGkzepusD3x9Id4cUjQB_U7ZMuP2E,120720
|
242
243
|
amsdal/cloud/services/actions/destroy_deploy.pyi,sha256=VNb0J71B3gk4SVJwxlB9XTj4vCG-37ucojcGzsvKwe8,609
|
243
244
|
amsdal/cloud/services/actions/update_deploy.pyi,sha256=alM1nquQZ5O8PYlDIqDdSuiyuc_aj9fkd01bL9KANEI,766
|
244
245
|
amsdal/cloud/services/actions/create_deploy.pyi,sha256=VmVMYJQmjPZce6Cm8sMQ27HomhfdzZc_0X57ZWZmCt0,1988
|
245
246
|
amsdal/cloud/services/actions/delete_basic_auth.pyi,sha256=-I1YoOMFi0LaRsZL2JBGH_sg18PZoUL1PP9YetboDJA,915
|
246
247
|
amsdal/cloud/services/actions/list_dependencies.pyi,sha256=C37VamSyRT-uNLuwQJ0OrHKavs8Jt0bfPbAsE5BQEvE,1035
|
247
248
|
amsdal/cloud/services/actions/create_env.pyi,sha256=ITvyLrvwt6H36JNYURHZ_PbmGZquc5Fm07dVo7H6ll0,910
|
248
|
-
amsdal/cloud/services/actions/delete_secret.cpython-311-darwin.so,sha256=
|
249
|
+
amsdal/cloud/services/actions/delete_secret.cpython-311-darwin.so,sha256=ZD9U-DyYNqjP0vknQ09PSFhCI4sf-e5og-4fNYZ7ARo,180680
|
249
250
|
amsdal/cloud/services/actions/expose_db.pyi,sha256=uk2zuz1SiXwjDFxtKF-yyWGNEONOgfm7EcrEyVT0cMM,1049
|
250
251
|
amsdal/fixtures/manager.pyi,sha256=fMl3nNa2A9jiZanZ_7tnUGaPigk_03KMmdcUGPoX9kI,7077
|
251
252
|
amsdal/fixtures/__init__.pyi,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
252
|
-
amsdal/fixtures/manager.cpython-311-darwin.so,sha256=
|
253
|
+
amsdal/fixtures/manager.cpython-311-darwin.so,sha256=HB-N83pnCmCLhJSjsACzs0gT804P5ekya0n4JHMclc0,622896
|
253
254
|
amsdal/fixtures/utils.pyi,sha256=OnFn7opJscOydj-rlcXQIdDodlIKGCt79TRy5zAUkqg,457
|
254
|
-
amsdal/fixtures/utils.cpython-311-darwin.so,sha256=
|
255
|
-
amsdal/fixtures/__init__.cpython-311-darwin.so,sha256=
|
255
|
+
amsdal/fixtures/utils.cpython-311-darwin.so,sha256=8J-3opsUNhhJG5eFN81Tgr0Es_RqmLfLBY4bkAtr-0E,306720
|
256
|
+
amsdal/fixtures/__init__.cpython-311-darwin.so,sha256=e3ms6DZIOAlCeJOUd1it6CRhEIBQLSubfFlpC3_zJhw,120672
|
256
257
|
amsdal/services/transaction_execution.pyi,sha256=TwCuurOoqSHgNu9GCYYZPSpGjxXssF2eNygQ5KVwAZM,4374
|
257
258
|
amsdal/services/__init__.pyi,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
258
|
-
amsdal/services/__init__.cpython-311-darwin.so,sha256=
|
259
|
-
amsdal/services/transaction_execution.cpython-311-darwin.so,sha256=
|
260
|
-
amsdal-0.5.
|
261
|
-
amsdal-0.5.
|
262
|
-
amsdal-0.5.
|
263
|
-
amsdal-0.5.
|
264
|
-
amsdal-0.5.
|
259
|
+
amsdal/services/__init__.cpython-311-darwin.so,sha256=C-dNAcZQ0IbZ6R4EXVNUoPFAbWA0TuXlpfEW-orXSn0,120672
|
260
|
+
amsdal/services/transaction_execution.cpython-311-darwin.so,sha256=3MnkxzWJLmXZ1bkvj8f8CzliCUXB87Ya29_V8KhTDeQ,435472
|
261
|
+
amsdal-0.5.2.dist-info/RECORD,,
|
262
|
+
amsdal-0.5.2.dist-info/WHEEL,sha256=K35cO9veJgM7rcbvmUlNI0Barc1JY1wlKyFrMAjmMKc,114
|
263
|
+
amsdal-0.5.2.dist-info/top_level.txt,sha256=VPQLnOP3mf7q0JuQ_vPZYQyPNGKd_uc6ouz-hZRkhSk,7
|
264
|
+
amsdal-0.5.2.dist-info/METADATA,sha256=J-ibi1Ye_D33YGGjoi3B0HK-5yGUAgLqUiamUDVQFKY,57432
|
265
|
+
amsdal-0.5.2.dist-info/licenses/LICENSE.txt,sha256=hG-541PFYfNJi9WRZi_hno91UyqNg7YLK8LR3vLblZA,27355
|
File without changes
|
File without changes
|