ramifice 0.8.10__py3-none-any.whl → 0.8.12__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ramifice/__init__.py +16 -1
- ramifice/commons/__init__.py +2 -2
- ramifice/commons/general.py +11 -11
- ramifice/commons/indexes.py +8 -8
- ramifice/commons/many.py +10 -6
- ramifice/commons/one.py +13 -8
- ramifice/commons/tools.py +4 -4
- ramifice/commons/unit_manager.py +15 -5
- ramifice/fields/__init__.py +1 -1
- ramifice/fields/bool_field.py +26 -18
- ramifice/fields/choice_float_dyn_field.py +29 -21
- ramifice/fields/choice_float_field.py +41 -33
- ramifice/fields/choice_float_mult_dyn_field.py +29 -21
- ramifice/fields/choice_float_mult_field.py +48 -40
- ramifice/fields/choice_int_dyn_field.py +29 -21
- ramifice/fields/choice_int_field.py +41 -33
- ramifice/fields/choice_int_mult_dyn_field.py +29 -21
- ramifice/fields/choice_int_mult_field.py +48 -40
- ramifice/fields/choice_text_dyn_field.py +29 -21
- ramifice/fields/choice_text_field.py +47 -39
- ramifice/fields/choice_text_mult_dyn_field.py +29 -21
- ramifice/fields/choice_text_mult_field.py +48 -40
- ramifice/fields/color_field.py +40 -32
- ramifice/fields/date_field.py +49 -40
- ramifice/fields/date_time_field.py +49 -40
- ramifice/fields/email_field.py +42 -34
- ramifice/fields/file_field.py +45 -35
- ramifice/fields/float_field.py +56 -47
- ramifice/fields/general/__init__.py +1 -1
- ramifice/fields/general/choice_group.py +2 -2
- ramifice/fields/general/date_group.py +2 -2
- ramifice/fields/general/field.py +2 -2
- ramifice/fields/general/file_group.py +2 -2
- ramifice/fields/general/number_group.py +2 -2
- ramifice/fields/general/text_group.py +3 -3
- ramifice/fields/id_field.py +35 -28
- ramifice/fields/image_field.py +67 -57
- ramifice/fields/integer_field.py +56 -47
- ramifice/fields/ip_field.py +41 -34
- ramifice/fields/password_field.py +29 -22
- ramifice/fields/phone_field.py +44 -36
- ramifice/fields/slug_field.py +30 -22
- ramifice/fields/text_field.py +43 -35
- ramifice/fields/url_field.py +40 -33
- ramifice/models/__init__.py +1 -1
- ramifice/models/decorator.py +33 -11
- ramifice/models/model.py +16 -16
- ramifice/paladins/__init__.py +2 -2
- ramifice/paladins/check.py +58 -51
- ramifice/paladins/delete.py +9 -3
- ramifice/paladins/groups/__init__.py +1 -1
- ramifice/paladins/groups/bool_group.py +3 -3
- ramifice/paladins/groups/choice_group.py +3 -3
- ramifice/paladins/groups/date_group.py +3 -3
- ramifice/paladins/groups/file_group.py +3 -3
- ramifice/paladins/groups/id_group.py +3 -3
- ramifice/paladins/groups/img_group.py +36 -35
- ramifice/paladins/groups/num_group.py +3 -3
- ramifice/paladins/groups/pass_group.py +3 -3
- ramifice/paladins/groups/slug_group.py +8 -3
- ramifice/paladins/groups/text_group.py +3 -3
- ramifice/paladins/password.py +11 -4
- ramifice/paladins/refrash.py +7 -3
- ramifice/paladins/save.py +9 -3
- ramifice/paladins/tools.py +11 -6
- ramifice/paladins/validation.py +4 -4
- ramifice/utils/__init__.py +1 -1
- ramifice/utils/constants.py +1 -1
- ramifice/utils/errors.py +7 -7
- ramifice/utils/fixtures.py +7 -2
- ramifice/utils/migration.py +18 -9
- ramifice/utils/mixins/__init__.py +1 -1
- ramifice/utils/mixins/add_valid.py +3 -3
- ramifice/utils/mixins/hooks.py +8 -8
- ramifice/utils/mixins/indexing.py +3 -3
- ramifice/utils/mixins/json_converter.py +6 -6
- ramifice/utils/tools.py +12 -12
- ramifice/utils/translations.py +8 -4
- ramifice/utils/unit.py +8 -3
- {ramifice-0.8.10.dist-info → ramifice-0.8.12.dist-info}/METADATA +1 -1
- ramifice-0.8.12.dist-info/RECORD +84 -0
- ramifice-0.8.10.dist-info/RECORD +0 -84
- {ramifice-0.8.10.dist-info → ramifice-0.8.12.dist-info}/WHEEL +0 -0
- {ramifice-0.8.10.dist-info → ramifice-0.8.12.dist-info}/licenses/LICENSE +0 -0
ramifice/utils/migration.py
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
"""Migration are `Ramifice` way of
|
1
|
+
"""Ramifice - Migration are `Ramifice` way of
|
2
2
|
propagating changes you make to
|
3
3
|
your models (add or delete a Model, add or delete a field in Model, etc.) into
|
4
4
|
your database schema.
|
@@ -6,6 +6,7 @@ your database schema.
|
|
6
6
|
|
7
7
|
__all__ = ("Migration",)
|
8
8
|
|
9
|
+
import logging
|
9
10
|
from datetime import datetime
|
10
11
|
from typing import Any
|
11
12
|
|
@@ -18,16 +19,21 @@ from ramifice.utils import constants
|
|
18
19
|
from ramifice.utils.errors import DoesNotMatchRegexError, NoModelsForMigrationError, PanicError
|
19
20
|
from ramifice.utils.fixtures import apply_fixture
|
20
21
|
|
22
|
+
logger = logging.getLogger(__name__)
|
23
|
+
|
21
24
|
|
22
25
|
class Migration:
|
23
|
-
"""Migration of models to database."""
|
26
|
+
"""Ramifice - Migration of models to database."""
|
24
27
|
|
25
28
|
def __init__(self, database_name: str, mongo_client: AsyncMongoClient): # noqa: D107
|
26
29
|
constants.DEBUG = False
|
27
30
|
#
|
28
31
|
db_name_regex = constants.REGEX["database_name"]
|
29
32
|
if db_name_regex.match(database_name) is None:
|
30
|
-
|
33
|
+
regex_str: str = "^[a-zA-Z][-_a-zA-Z0-9]{0,59}$"
|
34
|
+
msg: str = f"Does not match the regular expression: {regex_str}"
|
35
|
+
logger.error(msg)
|
36
|
+
raise DoesNotMatchRegexError(regex_str)
|
31
37
|
#
|
32
38
|
constants.DATABASE_NAME = database_name
|
33
39
|
constants.MONGO_CLIENT = mongo_client
|
@@ -36,10 +42,11 @@ class Migration:
|
|
36
42
|
self.model_list: list[Any] = Model.__subclasses__()
|
37
43
|
# Raise the exception if there are no models for migration.
|
38
44
|
if len(self.model_list) == 0:
|
45
|
+
logger.error("No Models for Migration!")
|
39
46
|
raise NoModelsForMigrationError() # type: ignore[no-untyped-call]
|
40
47
|
|
41
48
|
async def reset(self) -> None:
|
42
|
-
"""Reset the condition of the models in a super collection.
|
49
|
+
"""Ramifice - Reset the condition of the models in a super collection.
|
43
50
|
|
44
51
|
Switch the `is_model_exist` parameter in the condition `False`.
|
45
52
|
"""
|
@@ -55,7 +62,7 @@ class Migration:
|
|
55
62
|
await super_collection.update_one(q_filter, update)
|
56
63
|
|
57
64
|
async def model_state(self, metadata: dict[str, Any]) -> dict[str, Any]:
|
58
|
-
"""Get the state of the current model from a super collection."""
|
65
|
+
"""Ramifice - Get the state of the current model from a super collection."""
|
59
66
|
# Get access to super collection.
|
60
67
|
# (Contains Model state and dynamic field data.)
|
61
68
|
super_collection: AsyncCollection = constants.MONGO_DATABASE[
|
@@ -79,7 +86,7 @@ class Migration:
|
|
79
86
|
return model_state
|
80
87
|
|
81
88
|
def new_fields(self, metadata: dict[str, Any], model_state: dict[str, Any]) -> list[str]:
|
82
|
-
"""Get a list of new fields that were added to Model."""
|
89
|
+
"""Ramifice - Get a list of new fields that were added to Model."""
|
83
90
|
new_fields: list[str] = []
|
84
91
|
for field_name, field_type in metadata["field_name_and_type"].items():
|
85
92
|
old_field_type: str | None = model_state["field_name_and_type"].get(field_name)
|
@@ -88,7 +95,7 @@ class Migration:
|
|
88
95
|
return new_fields
|
89
96
|
|
90
97
|
async def napalm(self) -> None:
|
91
|
-
"""Delete data for non-existent Models from a super collection,
|
98
|
+
"""Ramifice - Delete data for non-existent Models from a super collection,
|
92
99
|
delete collections associated with those Models.
|
93
100
|
""" # noqa: D205
|
94
101
|
# Get access to database.
|
@@ -109,7 +116,7 @@ class Migration:
|
|
109
116
|
await database.drop_collection(collection_name) # type: ignore[union-attr]
|
110
117
|
|
111
118
|
async def migrate(self) -> None:
|
112
|
-
"""Run migration process.
|
119
|
+
"""Ramifice - Run migration process.
|
113
120
|
|
114
121
|
1) Update the state of Models in the super collection.
|
115
122
|
2) Register new Models in the super collection.
|
@@ -167,7 +174,9 @@ class Migration:
|
|
167
174
|
if not result_check["is_valid"]:
|
168
175
|
print(colored("\n!!!>>MIGRATION<<!!!", "red", attrs=["bold"]))
|
169
176
|
inst_model.print_err()
|
170
|
-
|
177
|
+
msg: str = "Migration failed."
|
178
|
+
logger.error(msg)
|
179
|
+
raise PanicError(msg)
|
171
180
|
# Get checked data.
|
172
181
|
checked_data = result_check["data"]
|
173
182
|
# Add password from mongo_doc to checked_data.
|
@@ -1,4 +1,4 @@
|
|
1
|
-
"""AddValidMixin - Contains an abstract method for additional validation of fields."""
|
1
|
+
"""Ramifice - AddValidMixin - Contains an abstract method for additional validation of fields."""
|
2
2
|
|
3
3
|
__all__ = ("AddValidMixin",)
|
4
4
|
|
@@ -6,9 +6,9 @@ from abc import ABCMeta
|
|
6
6
|
|
7
7
|
|
8
8
|
class AddValidMixin(metaclass=ABCMeta):
|
9
|
-
"""Contains an abstract method for additional validation of fields."""
|
9
|
+
"""Ramifice - Contains an abstract method for additional validation of fields."""
|
10
10
|
|
11
11
|
async def add_validation(self) -> dict[str, str]:
|
12
|
-
"""Additional validation of fields."""
|
12
|
+
"""Ramifice - Additional validation of fields."""
|
13
13
|
error_map: dict[str, str] = {}
|
14
14
|
return error_map
|
ramifice/utils/mixins/hooks.py
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
"""HooksMixin - Contains abstract methods for creating hooks."""
|
1
|
+
"""Ramifice - HooksMixin - Contains abstract methods for creating hooks."""
|
2
2
|
|
3
3
|
__all__ = ("HooksMixin",)
|
4
4
|
|
@@ -6,22 +6,22 @@ from abc import ABCMeta
|
|
6
6
|
|
7
7
|
|
8
8
|
class HooksMixin(metaclass=ABCMeta):
|
9
|
-
"""A set of abstract methods for creating hooks."""
|
9
|
+
"""Ramifice - A set of abstract methods for creating hooks."""
|
10
10
|
|
11
11
|
async def pre_create(self) -> None:
|
12
|
-
"""Called before a new document is created in the database."""
|
12
|
+
"""Ramifice - Called before a new document is created in the database."""
|
13
13
|
|
14
14
|
async def post_create(self) -> None:
|
15
|
-
"""Called after a new document has been created in the database."""
|
15
|
+
"""Ramifice - Called after a new document has been created in the database."""
|
16
16
|
|
17
17
|
async def pre_update(self) -> None:
|
18
|
-
"""Called before updating an existing document in the database."""
|
18
|
+
"""Ramifice - Called before updating an existing document in the database."""
|
19
19
|
|
20
20
|
async def post_update(self) -> None:
|
21
|
-
"""Called after an existing document in the database is updated."""
|
21
|
+
"""Ramifice - Called after an existing document in the database is updated."""
|
22
22
|
|
23
23
|
async def pre_delete(self) -> None:
|
24
|
-
"""Called before deleting an existing document in the database."""
|
24
|
+
"""Ramifice - Called before deleting an existing document in the database."""
|
25
25
|
|
26
26
|
async def post_delete(self) -> None:
|
27
|
-
"""Called after an existing document in the database has been deleted."""
|
27
|
+
"""Ramifice - Called after an existing document in the database has been deleted."""
|
@@ -1,4 +1,4 @@
|
|
1
|
-
"""IndexMixin - Contains abstract method for indexing the model in the database."""
|
1
|
+
"""Ramifice - IndexMixin - Contains abstract method for indexing the model in the database."""
|
2
2
|
|
3
3
|
__all__ = ("IndexMixin",)
|
4
4
|
|
@@ -6,8 +6,8 @@ from abc import ABCMeta
|
|
6
6
|
|
7
7
|
|
8
8
|
class IndexMixin(metaclass=ABCMeta):
|
9
|
-
"""Contains the method for indexing the model in the database."""
|
9
|
+
"""Ramifice - Contains the method for indexing the model in the database."""
|
10
10
|
|
11
11
|
@classmethod
|
12
12
|
async def indexing(cls) -> None:
|
13
|
-
"""
|
13
|
+
"""Ramifice - Set up and start indexing."""
|
@@ -1,4 +1,4 @@
|
|
1
|
-
"""JsonMixin - Contains the methods for converting Fields to JSON and back."""
|
1
|
+
"""Ramifice - JsonMixin - Contains the methods for converting Fields to JSON and back."""
|
2
2
|
|
3
3
|
__all__ = ("JsonMixin",)
|
4
4
|
|
@@ -8,10 +8,10 @@ import orjson
|
|
8
8
|
|
9
9
|
|
10
10
|
class JsonMixin:
|
11
|
-
"""Contains the methods for converting Fields to JSON and back."""
|
11
|
+
"""Ramifice - Contains the methods for converting Fields to JSON and back."""
|
12
12
|
|
13
13
|
def to_dict(self) -> dict[str, Any]:
|
14
|
-
"""Convert object instance to a dictionary."""
|
14
|
+
"""Ramifice - Convert object instance to a dictionary."""
|
15
15
|
json_dict: dict[str, Any] = {}
|
16
16
|
for name, data in self.__dict__.items():
|
17
17
|
if not callable(data):
|
@@ -19,12 +19,12 @@ class JsonMixin:
|
|
19
19
|
return json_dict
|
20
20
|
|
21
21
|
def to_json(self) -> str:
|
22
|
-
"""Convert object instance to a JSON string."""
|
22
|
+
"""Ramifice - Convert object instance to a JSON string."""
|
23
23
|
return orjson.dumps(self.to_dict()).decode("utf-8")
|
24
24
|
|
25
25
|
@classmethod
|
26
26
|
def from_dict(cls, json_dict: dict[str, Any]) -> Any:
|
27
|
-
"""Convert JSON string to a object instance."""
|
27
|
+
"""Ramifice - Convert JSON string to a object instance."""
|
28
28
|
obj = cls()
|
29
29
|
for name, data in json_dict.items():
|
30
30
|
obj.__dict__[name] = data
|
@@ -32,6 +32,6 @@ class JsonMixin:
|
|
32
32
|
|
33
33
|
@classmethod
|
34
34
|
def from_json(cls, json_str: str) -> Any:
|
35
|
-
"""Convert JSON string to a object instance."""
|
35
|
+
"""Ramifice - Convert JSON string to a object instance."""
|
36
36
|
json_dict = orjson.loads(json_str)
|
37
37
|
return cls.from_dict(json_dict)
|
ramifice/utils/tools.py
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
"""Global collection of auxiliary methods."""
|
1
|
+
"""Ramifice - Global collection of auxiliary methods."""
|
2
2
|
|
3
3
|
__all__ = (
|
4
4
|
"is_password",
|
@@ -29,14 +29,14 @@ from ramifice.utils.constants import REGEX
|
|
29
29
|
|
30
30
|
|
31
31
|
def is_password(password: str | None) -> bool:
|
32
|
-
"""Validate Password."""
|
32
|
+
"""Ramifice - Validate Password."""
|
33
33
|
if not REGEX["password"].match(str(password)):
|
34
34
|
return False
|
35
35
|
return True
|
36
36
|
|
37
37
|
|
38
38
|
def to_human_size(size: int) -> str:
|
39
|
-
"""Convert number of bytes to readable format."""
|
39
|
+
"""Ramifice - Convert number of bytes to readable format."""
|
40
40
|
idx = int(math.floor(math.log(size) / math.log(1024)))
|
41
41
|
size = size if size < 1024 else abs(round(size / pow(1024, idx), 2))
|
42
42
|
order = ["bytes", "KB", "MB", "GB", "TB"][idx]
|
@@ -44,13 +44,13 @@ def to_human_size(size: int) -> str:
|
|
44
44
|
|
45
45
|
|
46
46
|
async def get_file_size(path: str) -> int:
|
47
|
-
"""Get file size in bytes."""
|
47
|
+
"""Ramifice - Get file size in bytes."""
|
48
48
|
size: int = await to_thread(getsize, path)
|
49
49
|
return size
|
50
50
|
|
51
51
|
|
52
52
|
def normal_email(email: str | None) -> str | None:
|
53
|
-
"""Normalizing email address.
|
53
|
+
"""Ramifice - Normalizing email address.
|
54
54
|
|
55
55
|
Use this before requeste to a database.
|
56
56
|
For example, on the login page.
|
@@ -68,7 +68,7 @@ def normal_email(email: str | None) -> str | None:
|
|
68
68
|
|
69
69
|
|
70
70
|
async def is_email(email: str | None) -> bool:
|
71
|
-
"""Validate Email address."""
|
71
|
+
"""Ramifice - Validate Email address."""
|
72
72
|
try:
|
73
73
|
await to_thread(
|
74
74
|
validate_email,
|
@@ -81,7 +81,7 @@ async def is_email(email: str | None) -> bool:
|
|
81
81
|
|
82
82
|
|
83
83
|
def is_url(url: str | None) -> bool:
|
84
|
-
"""Validate URL address."""
|
84
|
+
"""Ramifice - Validate URL address."""
|
85
85
|
result = urlparse(str(url))
|
86
86
|
if not result.scheme or not result.netloc:
|
87
87
|
return False
|
@@ -89,7 +89,7 @@ def is_url(url: str | None) -> bool:
|
|
89
89
|
|
90
90
|
|
91
91
|
def is_ip(address: str | int | None) -> bool:
|
92
|
-
"""Validate IP address."""
|
92
|
+
"""Ramifice - Validate IP address."""
|
93
93
|
try:
|
94
94
|
ipaddress.ip_address(str(address))
|
95
95
|
except ValueError:
|
@@ -98,14 +98,14 @@ def is_ip(address: str | int | None) -> bool:
|
|
98
98
|
|
99
99
|
|
100
100
|
def is_color(color_code: str | None) -> bool:
|
101
|
-
"""Validate Color code."""
|
101
|
+
"""Ramifice - Validate Color code."""
|
102
102
|
if REGEX["color_code"].match(str(color_code)) is None:
|
103
103
|
return False
|
104
104
|
return True
|
105
105
|
|
106
106
|
|
107
107
|
def is_phone(number: str | None) -> bool:
|
108
|
-
"""Validate Phone number."""
|
108
|
+
"""Ramifice - Validate Phone number."""
|
109
109
|
try:
|
110
110
|
phone = phonenumbers.parse(str(number))
|
111
111
|
if not phonenumbers.is_valid_number(phone):
|
@@ -116,10 +116,10 @@ def is_phone(number: str | None) -> bool:
|
|
116
116
|
|
117
117
|
|
118
118
|
def is_mongo_id(oid: Any) -> bool:
|
119
|
-
"""Validation of the Mongodb identifier."""
|
119
|
+
"""Ramifice - Validation of the Mongodb identifier."""
|
120
120
|
return ObjectId.is_valid(oid)
|
121
121
|
|
122
122
|
|
123
123
|
def hash_to_obj_id(hash: str | None) -> ObjectId | None:
|
124
|
-
"""Get ObjectId from hash string."""
|
124
|
+
"""Ramifice - Get ObjectId from hash string."""
|
125
125
|
return ObjectId(hash) if bool(hash) else None
|
ramifice/utils/translations.py
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
"""
|
1
|
+
"""Ramifice - Localization of translations.
|
2
2
|
|
3
3
|
The module contains the following variables:
|
4
4
|
|
@@ -33,11 +33,14 @@ __all__ = (
|
|
33
33
|
|
34
34
|
import copy
|
35
35
|
import gettext as _gettext
|
36
|
+
import logging
|
36
37
|
from gettext import NullTranslations
|
37
38
|
from typing import Any
|
38
39
|
|
39
40
|
from ramifice.utils.errors import PanicError
|
40
41
|
|
42
|
+
logger = logging.getLogger(__name__)
|
43
|
+
|
41
44
|
# Language by default.
|
42
45
|
DEFAULT_LOCALE: str = "en"
|
43
46
|
# Code of current language.
|
@@ -47,6 +50,7 @@ LANGUAGES: frozenset[str] = frozenset(("en", "ru"))
|
|
47
50
|
|
48
51
|
if not DEFAULT_LOCALE in LANGUAGES:
|
49
52
|
msg = "ERROR: DEFAULT_LOCALE is not included in the LANGUAGES!"
|
53
|
+
logger.error(msg)
|
50
54
|
raise PanicError(msg)
|
51
55
|
|
52
56
|
# Add translations for Ramifice.
|
@@ -75,7 +79,7 @@ custom_translations: dict[str, NullTranslations] = {
|
|
75
79
|
|
76
80
|
|
77
81
|
def get_ramifice_translator(lang_code: str) -> Any:
|
78
|
-
"""Get an object of translation for the desired language, for Ramifice.
|
82
|
+
"""Ramifice - Get an object of translation for the desired language, for Ramifice.
|
79
83
|
|
80
84
|
Examples:
|
81
85
|
>>> from ramifice import translations
|
@@ -97,7 +101,7 @@ def get_ramifice_translator(lang_code: str) -> Any:
|
|
97
101
|
|
98
102
|
|
99
103
|
def get_custom_translator(lang_code: str) -> Any:
|
100
|
-
"""Get an object of translation for the desired language, for custom project.
|
104
|
+
"""Ramifice - Get an object of translation for the desired language, for custom project.
|
101
105
|
|
102
106
|
Examples:
|
103
107
|
>>> from ramifice import translations
|
@@ -127,7 +131,7 @@ ngettext: Any = get_custom_translator(DEFAULT_LOCALE).ngettext
|
|
127
131
|
|
128
132
|
|
129
133
|
def change_locale(lang_code: str) -> None:
|
130
|
-
"""Change current language.
|
134
|
+
"""Ramifice - Change current language.
|
131
135
|
|
132
136
|
Examples:
|
133
137
|
>>> from ramifice import translations
|
ramifice/utils/unit.py
CHANGED
@@ -1,13 +1,17 @@
|
|
1
|
-
"""Unit - Data management in dynamic fields."""
|
1
|
+
"""Ramifice - Unit - Data management in dynamic fields."""
|
2
2
|
|
3
3
|
__all__ = ("Unit",)
|
4
4
|
|
5
|
+
import logging
|
6
|
+
|
5
7
|
from ramifice.utils.errors import PanicError
|
6
8
|
from ramifice.utils.mixins.json_converter import JsonMixin
|
7
9
|
|
10
|
+
logger = logging.getLogger(__name__)
|
11
|
+
|
8
12
|
|
9
13
|
class Unit(JsonMixin):
|
10
|
-
"""Unit of information for `choices` parameter in dynamic field types.
|
14
|
+
"""Ramifice - Unit of information for `choices` parameter in dynamic field types.
|
11
15
|
|
12
16
|
Attributes:
|
13
17
|
field -- The name of the dynamic field.
|
@@ -50,7 +54,7 @@ class Unit(JsonMixin):
|
|
50
54
|
self.check_empty_arguments()
|
51
55
|
|
52
56
|
def check_empty_arguments(self) -> None:
|
53
|
-
"""Check the arguments for empty values.
|
57
|
+
"""Ramifice - Check the arguments for empty values.
|
54
58
|
|
55
59
|
Returns:
|
56
60
|
`None` or raised exception `PanicError`.
|
@@ -71,4 +75,5 @@ class Unit(JsonMixin):
|
|
71
75
|
+ f"Field: `{field_name}` => "
|
72
76
|
+ "Must not be empty!"
|
73
77
|
)
|
78
|
+
logger.error(msg)
|
74
79
|
raise PanicError(msg)
|
@@ -0,0 +1,84 @@
|
|
1
|
+
ramifice/__init__.py,sha256=Xejr_t4cimFFNKS6xXvAeLRue1vTB5kZWGeYbHXDUDw,1116
|
2
|
+
ramifice/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3
|
+
ramifice/commons/__init__.py,sha256=F5tnz0bz7IcwOT9wkPmyWL7cDDUI1BUVSfC73G56dfs,567
|
4
|
+
ramifice/commons/general.py,sha256=HuErflr-dZ2pWhaSy81IGllFfGxlj8yrdnaAEGUtK3M,5554
|
5
|
+
ramifice/commons/indexes.py,sha256=Ay1Y7Ft8t6Yuw7_LHtK5K87BNAac2WYsY2zzvPEu_zw,3784
|
6
|
+
ramifice/commons/many.py,sha256=ekOp7XxusTA7u6GKErtV8fEeQ5mzCV3IJz_jiA045GM,9464
|
7
|
+
ramifice/commons/one.py,sha256=xSMghkeRgheIY4U9vl9om7_ASihrkQ41AXS4m7W3z2M,7028
|
8
|
+
ramifice/commons/tools.py,sha256=Cs1RRWolxBrGXwTWLuqYmkOgDLYoKJmfctf_MgZPams,2505
|
9
|
+
ramifice/commons/unit_manager.py,sha256=9XrWZtbt9CzZMUDz4mqL3McvJ8RkseMSJpNGgxoGSeA,4875
|
10
|
+
ramifice/fields/__init__.py,sha256=g1Nrv2E1XrdGO9xIiyhhjIRDh-KyOwLSvDuMCOfmBBw,1721
|
11
|
+
ramifice/fields/bool_field.py,sha256=azPiI2Fq6PkBGILeDo2wrIepzPERRPMrFvE7z7FxnvM,2408
|
12
|
+
ramifice/fields/choice_float_dyn_field.py,sha256=a2HS4PlIPQs9Ya3foyMthFqWZT45p8tIJ9NIllV9Zgk,3490
|
13
|
+
ramifice/fields/choice_float_field.py,sha256=lfDgF57LFHKcr2HyC-V8SZkuiyWUSIWEefzU_CYBE-Q,4336
|
14
|
+
ramifice/fields/choice_float_mult_dyn_field.py,sha256=zcSyyOfXHD9RE78cxnG4ACpAKrYm1n93LRwIooWTd4U,3557
|
15
|
+
ramifice/fields/choice_float_mult_field.py,sha256=WlRSb5o8Jn2F9xYBXH0u1xpuXQdNJFNED4b2PuVnD_s,4706
|
16
|
+
ramifice/fields/choice_int_dyn_field.py,sha256=wg90Pdf9gHri0VLpTLbI_ztJvFsdiN9dqJJskO1hMN4,3482
|
17
|
+
ramifice/fields/choice_int_field.py,sha256=2vM9WVXYdk9nYgGajmf_B8m3J17zRqOmncqF9_jFOYs,4322
|
18
|
+
ramifice/fields/choice_int_mult_dyn_field.py,sha256=Vn_Ua8lV-5YN6VRfHaquq299ZBlyENv88_wdqR4tnCU,3551
|
19
|
+
ramifice/fields/choice_int_mult_field.py,sha256=dv-qwE_yT_dedJicwCQM0O_jahexSlw_R1RtKGyuZ3E,4698
|
20
|
+
ramifice/fields/choice_text_dyn_field.py,sha256=lSmD-JW4w1NdVa_GhUcCZ4Su5pmRmoMtebgRgiwCfso,3473
|
21
|
+
ramifice/fields/choice_text_field.py,sha256=5choPzao1Np74e-5iRWBHL9VxkVe93XRJYqtZgY11mE,4542
|
22
|
+
ramifice/fields/choice_text_mult_dyn_field.py,sha256=8wqlU0sTJ48Joeh1yyrAE8LnRH2GSBUOWzcjqvWU7lY,3542
|
23
|
+
ramifice/fields/choice_text_mult_field.py,sha256=gbHqd0awF_h1KlEecGVzIiXNs5pdR4_VKqbFzzJjTt8,4689
|
24
|
+
ramifice/fields/color_field.py,sha256=lbSHIsf3i42S5vvTCgO9IBYgywK6EeF58TNTG71C1Xw,3937
|
25
|
+
ramifice/fields/date_field.py,sha256=vu8tiQMdwrcG0MEsBKJ7WibVY2te1goWO1m6HSb36LU,5743
|
26
|
+
ramifice/fields/date_time_field.py,sha256=ntAwhSUcVSy_-Py1IuTtZpeVqafqKmxqJPFhROMbG4s,5782
|
27
|
+
ramifice/fields/email_field.py,sha256=V_Nw6tHrWQ11-8KDn-AzA6SGyMVnSMmFEhmQdsBYke4,3850
|
28
|
+
ramifice/fields/file_field.py,sha256=YK3HU2jfiFXMkuq9m_ZBJZY4nppEJwCg4h0d9e_WQOw,8782
|
29
|
+
ramifice/fields/float_field.py,sha256=PK1YTiY2prSyMUg_TgtryAAECzmripF5VWe_trFWjEo,5083
|
30
|
+
ramifice/fields/id_field.py,sha256=osYwdJgHBSR4w4dPc1PcZmt58fq7wjrhzFoLtZ3SP9M,4547
|
31
|
+
ramifice/fields/image_field.py,sha256=gmIrtYkic7bpvOv0I-snMi1WxgyPdJlnmJWd4oIvuTk,12302
|
32
|
+
ramifice/fields/integer_field.py,sha256=Djjym6ceLtkhKzeHHCOv9Zx5egTTJhVWQpVTljxN4-4,5057
|
33
|
+
ramifice/fields/ip_field.py,sha256=nMo3t5xgg_cgU5NjsDaUko4I-MCdm9I4wg5ybV03-VM,3754
|
34
|
+
ramifice/fields/password_field.py,sha256=I6yn8Iyez-V3M8czHi25lLrR8zabGX87ozZGgq-ulBw,3612
|
35
|
+
ramifice/fields/phone_field.py,sha256=jCZkIu1FIMUA6oEGOFmrdULJM50Ag5p8wbGOnDfKKag,4040
|
36
|
+
ramifice/fields/slug_field.py,sha256=E5ZxEx8_4y6sO-neBbbodKSb4vjNg2DPO-ioLyVydxE,3049
|
37
|
+
ramifice/fields/text_field.py,sha256=qPwQ_IW6TdkK7kIV6GWTVsw1OJu6Cb-7w3UtH0Ksx1o,4515
|
38
|
+
ramifice/fields/url_field.py,sha256=10H0pg4Du5goT9mKs53A4PgMDQSCkcJB9R7tE9UrdWc,4402
|
39
|
+
ramifice/fields/general/__init__.py,sha256=j3Onqv8DAR5vMf7GLvLdBDYe5i2WaxF6aHgus0NZBMw,51
|
40
|
+
ramifice/fields/general/choice_group.py,sha256=u-xmgr88oYo2gPxmBaCk9Lzxh6dWxYj_N8hiEoOENgM,1014
|
41
|
+
ramifice/fields/general/date_group.py,sha256=RCNl5qrOwJ1AoysgpwR2mq87l0UJU0Ep7MmliLyTtjM,1263
|
42
|
+
ramifice/fields/general/field.py,sha256=bNVZrl4Vw0ZBHHdijAUAbIl78jIB4loWRUYMcdg6i0E,1430
|
43
|
+
ramifice/fields/general/file_group.py,sha256=SmF8OHKXsyZtWr90n8iCAXBXFQrjRV2HdDc_n1ngITk,1064
|
44
|
+
ramifice/fields/general/number_group.py,sha256=jspiA9hWiU_hNhXbTku2rZG3UezrhEVBGopNgooJ4ig,813
|
45
|
+
ramifice/fields/general/text_group.py,sha256=hYVX4-ipD2_eyj-WpHIHnFrpQevySaVd4twffUsrOLo,1164
|
46
|
+
ramifice/models/__init__.py,sha256=y5jRhSzcPuEVUWr1u--o1GyjFb7irlf5Rn2gPvQ3IPg,26
|
47
|
+
ramifice/models/decorator.py,sha256=U4uubmFUCipkiILvej5VrH4qwow3DGG_DG444hX6Ju0,6667
|
48
|
+
ramifice/models/model.py,sha256=m19E7h3Fv2F7oDotc1z_n_NglFN7KmXOrNL0r4Jg_y4,7352
|
49
|
+
ramifice/paladins/__init__.py,sha256=I2FzvCrp6upv_GPLfDqaVLwIT6-3Dp_K9i51tFUXDuc,673
|
50
|
+
ramifice/paladins/check.py,sha256=kZXibFqTkMnMdujAVlcGRVaMZlOQ0od5N0lWExu_FEc,6971
|
51
|
+
ramifice/paladins/delete.py,sha256=PRd-xraM9gMdCSFemGX5A8YAdg08RKVqerBGrvFwfJk,3677
|
52
|
+
ramifice/paladins/password.py,sha256=MyDZN94yUqpAmD2jt6Hk5714bYcXQZGszNVjm33e-M8,3332
|
53
|
+
ramifice/paladins/refrash.py,sha256=QyvWm_nRdbrtRuyESLZbaoEkqO8n1cs1tvsIfSu6mC8,1251
|
54
|
+
ramifice/paladins/save.py,sha256=XlJUKkMySE7_9w1H9L-u7L-J9Uj88njVzTHzfI9rYu8,4121
|
55
|
+
ramifice/paladins/tools.py,sha256=sdQQkyi3VaS0v_bVHRy6bt_pPmu0r1iorT9MX9_ThIw,2978
|
56
|
+
ramifice/paladins/validation.py,sha256=DglGT-GnL7XM__77vNXkOAmdBMUVw8HyIJJ5rmKuPns,1808
|
57
|
+
ramifice/paladins/groups/__init__.py,sha256=JCsgvspyx4dg9vNNONIlGzlL4Dnejm5N4rynOG8LLPo,723
|
58
|
+
ramifice/paladins/groups/bool_group.py,sha256=hOD2wbz6VFS7KhxuevV5ApKXkmTJB18S-5s92PwOmHM,874
|
59
|
+
ramifice/paladins/groups/choice_group.py,sha256=ODB7m8PFY-fM68LTRujN7yUL9oJvMt39p25aVBJxWCc,1881
|
60
|
+
ramifice/paladins/groups/date_group.py,sha256=I7W2HFJ96IJh8lpMyHa--_msyNityN2cGbWMky-ShAc,3845
|
61
|
+
ramifice/paladins/groups/file_group.py,sha256=Rtj75Q8V7ie8Nf96Z-QYj2Ah65HK8BQIwbFvSFJxeLE,3048
|
62
|
+
ramifice/paladins/groups/id_group.py,sha256=cXVM65IGo7UTrTezc_6NsSfHK7SXGekQgY1YHQT6Gug,1354
|
63
|
+
ramifice/paladins/groups/img_group.py,sha256=M-fzE1tX0BVYqvT9KCqdTo5FbS5f-nSXdomyNWrvTNw,6204
|
64
|
+
ramifice/paladins/groups/num_group.py,sha256=WJR6Jaxd_YmEvWdgEXzDFZsiiF0OqOstw6_NaRGbLSU,2382
|
65
|
+
ramifice/paladins/groups/pass_group.py,sha256=1_FYXA96yan4xCvoY-ABX02T8gyrPP5Pjr4Np_expi8,1953
|
66
|
+
ramifice/paladins/groups/slug_group.py,sha256=0H1baGmX572t3v6E68rwS3AvDyfGPJMldZgPVNZtyPI,2533
|
67
|
+
ramifice/paladins/groups/text_group.py,sha256=2CyhZxQgFDv-uGRKIxgngB15_BfgPmhxp4N_X7WXsSQ,4538
|
68
|
+
ramifice/utils/__init__.py,sha256=wdOon9X-38jYpgOy1qyN-u7IzbGEXXuXudnzj5xFQGI,54
|
69
|
+
ramifice/utils/constants.py,sha256=VFvzFaOfzzhfoLMrI9nH9Dz_P5ktI8cOdqTINFHUEo4,2624
|
70
|
+
ramifice/utils/errors.py,sha256=OBoTuVLkMbtt-wdOZKY6eByNwAmaQvu1FHhfUi-aU9k,1978
|
71
|
+
ramifice/utils/fixtures.py,sha256=fmC87O0EE-EHsDqSOMD0mCSehKncMazzPuIfm7cO1tI,3351
|
72
|
+
ramifice/utils/migration.py,sha256=Q_kDRdMMtkYX4mB8RoLD2sIOej8rr9yhqz-Aip57VYU,11553
|
73
|
+
ramifice/utils/tools.py,sha256=LZyA715HnkNO7TcBu4Ia29A6Ko3n-F2BRULzIyNKt9o,3279
|
74
|
+
ramifice/utils/translations.py,sha256=gI-3R-xcOfONF11VTxmya0upXdE5ALoetTibEfyqlf0,4424
|
75
|
+
ramifice/utils/unit.py,sha256=7I48948JfUSxHS78aN7VfFi5nMi5DUi2cgaDu15dn7s,2601
|
76
|
+
ramifice/utils/mixins/__init__.py,sha256=1W6HoabjN73crpzJ_rmhI10KM9C2RbPZn5Em6Gi9Aig,283
|
77
|
+
ramifice/utils/mixins/add_valid.py,sha256=vYq4wGdpfA4iLMts7G0NvDALZBwupOScsajDFWCmmYg,472
|
78
|
+
ramifice/utils/mixins/hooks.py,sha256=h8coNstWWHI4VwPgpjx0NWTj93-5NDAGtav0VFh-fk4,1031
|
79
|
+
ramifice/utils/mixins/indexing.py,sha256=WVLxmkLKg-C_LHn2hq6LJuOkSr9eS-XUUvCMgK-pKYo,387
|
80
|
+
ramifice/utils/mixins/json_converter.py,sha256=qBqFYol3Pbq1kX33EWB6FsYUL3AGSdYNtQE97HQ9jy4,1225
|
81
|
+
ramifice-0.8.12.dist-info/METADATA,sha256=bQXSVotn2jXPctHCF-GICVspqxbwwBtqCdKSv2sssK4,20328
|
82
|
+
ramifice-0.8.12.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
83
|
+
ramifice-0.8.12.dist-info/licenses/LICENSE,sha256=LrEL0aTZx90HDwFUQCJutORiDjJL9AnuVvCtspXIqt4,1095
|
84
|
+
ramifice-0.8.12.dist-info/RECORD,,
|
ramifice-0.8.10.dist-info/RECORD
DELETED
@@ -1,84 +0,0 @@
|
|
1
|
-
ramifice/__init__.py,sha256=Pm2v5QCHErdx0sWBFeJnoczz3fg_rzd8UB7AS_ICDL0,820
|
2
|
-
ramifice/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3
|
-
ramifice/commons/__init__.py,sha256=HwOckqlNkt4OzFbYqnLw9x0VXLbwO_mJaJ9MLYgSvtI,545
|
4
|
-
ramifice/commons/general.py,sha256=ZryiRH-qf_cH9HCul7EP11UU-k4YO_rp_kku2FWAwj4,5433
|
5
|
-
ramifice/commons/indexes.py,sha256=dBPVYeJGbEyENLEzGjQmQ2XYOr3qqzjonj6zyH4rl54,3696
|
6
|
-
ramifice/commons/many.py,sha256=VkEVWzz3FgoSsuQULfV8rfW87H558_NRbwfQhlGgqNs,9311
|
7
|
-
ramifice/commons/one.py,sha256=XHXUthY-ACW-9dhI4yWGupZ1RsaRSQbIuwu_rdngjBc,6822
|
8
|
-
ramifice/commons/tools.py,sha256=wBnJFibq3jW09vXywnP3MFGWCb2iLxWeDfwWBKf2b7g,2461
|
9
|
-
ramifice/commons/unit_manager.py,sha256=bKvHEAag5FrH3kXmmqQCgfSEIkJjIGIo1ymCfLhbcKc,4569
|
10
|
-
ramifice/fields/__init__.py,sha256=u_XTUfcWTI96lvxinMPm_s9XNJ4jNDd8zhL9vwRvckc,1710
|
11
|
-
ramifice/fields/bool_field.py,sha256=ZZftUSR9CKhl2eGTGfbmmSgoKVnWDcNuP2bMrycF9O0,2136
|
12
|
-
ramifice/fields/choice_float_dyn_field.py,sha256=F6hXUXV9iNW4TgvSvBGTXwK33qtDFx7OskfEeHFgkP4,3199
|
13
|
-
ramifice/fields/choice_float_field.py,sha256=NVQGPPOMdkdFRyqXhEJoKjv6-MPAYPJcLN25VVojM78,3989
|
14
|
-
ramifice/fields/choice_float_mult_dyn_field.py,sha256=voiokW_Rx89nckrRq5e_DClIe7V7cQ2B3Y58yvDSenc,3266
|
15
|
-
ramifice/fields/choice_float_mult_field.py,sha256=VZtTO8Yx4fSJkW4p5mVw_DuroncGNHvtAM1nbL5rku4,4339
|
16
|
-
ramifice/fields/choice_int_dyn_field.py,sha256=UHi2jpxXhP5xZQz2PhFGJybR_yjHgmrxTsUpiH7dPlU,3191
|
17
|
-
ramifice/fields/choice_int_field.py,sha256=eAPQzt97_mHCDhCJt8oYuDFEMBb8s-DAwEEaRbMRDnw,3975
|
18
|
-
ramifice/fields/choice_int_mult_dyn_field.py,sha256=a0p70n0xnAzJWfnOJ7HrZqYCPZeKVQEd3yNisFUgNfw,3260
|
19
|
-
ramifice/fields/choice_int_mult_field.py,sha256=ZnC7bB5r1Z6PsW0Lp7r6Pu2yyI46GGPHyj9PC6juajA,4331
|
20
|
-
ramifice/fields/choice_text_dyn_field.py,sha256=h2eUA2gUwmiP-ykzWVDLSCZRNLE6LFeb04GgF4MJdlU,3182
|
21
|
-
ramifice/fields/choice_text_field.py,sha256=TLkZ47oX1_HCtP3erl-0vIMqzSD_vpGbcImymw3YB8M,4175
|
22
|
-
ramifice/fields/choice_text_mult_dyn_field.py,sha256=h104T9SR9vjWi6KBrQ0U1-hM1rqZXXyaEVkBRb_ct4w,3251
|
23
|
-
ramifice/fields/choice_text_mult_field.py,sha256=XlLxwPWyrQWmiL95GAg5Avlo84vi8jovAnkXq5GsS3E,4322
|
24
|
-
ramifice/fields/color_field.py,sha256=I87c8w-2PHMCSTfWTXCmZMJNmrnqzW9Kox436M7yx6A,3605
|
25
|
-
ramifice/fields/date_field.py,sha256=QkUiaBd0FxgDkjYnkCG9M8Jlsg1YuhCe-csuvZ20AGY,5305
|
26
|
-
ramifice/fields/date_time_field.py,sha256=1WBb_zzYe8-eG7mWvoHSm08PF8YDCxZo7iDk8-h3arY,5344
|
27
|
-
ramifice/fields/email_field.py,sha256=8BxJZQGkYSLVz01HFaSaZQw9VC_n8pUc423d7halxGA,3510
|
28
|
-
ramifice/fields/file_field.py,sha256=IYICN6iYiz-VmN6GrrashE2qOBzEHTZgUzyYdYYBdPQ,8333
|
29
|
-
ramifice/fields/float_field.py,sha256=pKe_XgBjUKxUWZ_ZKTwTgrZlNx8Zn1jShMukeG7P5FQ,4666
|
30
|
-
ramifice/fields/id_field.py,sha256=O68MAiRcYsGmM6gxTaA7NH1obI7HFyba_ANx8_HQL9Y,4209
|
31
|
-
ramifice/fields/image_field.py,sha256=w0Xd0d9idmB1Eb41VcZqjcRRU7aSPbTWp0zm0Qqom78,11753
|
32
|
-
ramifice/fields/integer_field.py,sha256=CJ1tOn6eOyK9zc-NRWkNTCmpZ9HoKgEvRzCUdEHgY6o,4640
|
33
|
-
ramifice/fields/ip_field.py,sha256=dS4uxcCaL49fisacVhhBS3npTuRORgKJClDMys82CG4,3416
|
34
|
-
ramifice/fields/password_field.py,sha256=cEwU-YiqxZfGu7OeMilmYEakpwF5JWIYKfHiUrSKtGA,3298
|
35
|
-
ramifice/fields/phone_field.py,sha256=gOU3dYfWvYzzI2TA73KiIz3vTyp1khAbVNjqz_z6Dbg,3692
|
36
|
-
ramifice/fields/slug_field.py,sha256=o8ftFnwClNUl7y6zyE7UUo0daUu5SV_tvwR_f7uFNg8,2761
|
37
|
-
ramifice/fields/text_field.py,sha256=QEjsvqxe76OgU5e0yIxGw_6MDbTzz0QAqtdxqbdz9-4,4168
|
38
|
-
ramifice/fields/url_field.py,sha256=ww2qYPmKYMYvgG4UHbWqEZdRPLVDFTqaMFD2EZUxpWM,4068
|
39
|
-
ramifice/fields/general/__init__.py,sha256=JzgIDseNQLB_IDwY9-JSiT_bONxvhJmbKl5PhQzTnpE,40
|
40
|
-
ramifice/fields/general/choice_group.py,sha256=Nvpz_lXMeZPWnogOL0QB71DApv2k-KQ9ZhWCx2AjilM,992
|
41
|
-
ramifice/fields/general/date_group.py,sha256=DDQayQPU0EESfYMY4pVHleYK9ysWRV86VLefV3Gs5k4,1241
|
42
|
-
ramifice/fields/general/field.py,sha256=3HnAV6hQ2Jn4nn_Cososs9EqfV1Y5wbDUwEzOu23mzE,1408
|
43
|
-
ramifice/fields/general/file_group.py,sha256=q1gPQpTYsLMYZIpmj_dj4CQ_Ryo7PBpsTSKwy3E5dow,1042
|
44
|
-
ramifice/fields/general/number_group.py,sha256=GBE2Cv61rYKg1WjyD1nqE7z3QF3thBiLKAWAkKw1xGs,791
|
45
|
-
ramifice/fields/general/text_group.py,sha256=6SLJ8TM9moFECrxDbNXeFNGclQPYxmnP2Tm19e98hmk,1131
|
46
|
-
ramifice/models/__init__.py,sha256=h_QQ5rSJNZ-7kmx7wIFd8E8RmUS94b_x4jdwMbq8zm4,15
|
47
|
-
ramifice/models/decorator.py,sha256=8Uy6uutRxbyNbS-C1nB50stUqJzF00MKsMECjxgMkd8,5991
|
48
|
-
ramifice/models/model.py,sha256=ugkEDWsaUJOMLVQPhqDp0fcijcTk9vTsh9l-H43tZL4,7184
|
49
|
-
ramifice/paladins/__init__.py,sha256=4cHrf5OhQGQm3GOTH4Wv3LVDgnVGbp6rc2EeNCRDD6Q,651
|
50
|
-
ramifice/paladins/check.py,sha256=6uisaM3MgUpA_LQ_w8Did4dRcDKz9il-tRY2lrqh91I,6602
|
51
|
-
ramifice/paladins/delete.py,sha256=1-CbxQMvfrdg1BXH9L1ah0tQShweXF1rbL89Yc5XMSg,3495
|
52
|
-
ramifice/paladins/password.py,sha256=pcDOCNW1WOLa8qGfoCIeNOZjCe_qlcNNKBYutn52RQ0,3079
|
53
|
-
ramifice/paladins/refrash.py,sha256=Ab22W4nQs3s8LgFgjmxjYKElsfRwRowM9LzTrGFyJAM,1131
|
54
|
-
ramifice/paladins/save.py,sha256=2YeEofr-kRF7bP5mEVejIlspDBjiLKzBqG2lSj6BOus,3927
|
55
|
-
ramifice/paladins/tools.py,sha256=YSJsjSAqP1jlcS1XvQGtLlL5b_EL-U6nYNewv5dFaZo,2807
|
56
|
-
ramifice/paladins/validation.py,sha256=3x8WUR0bTDkzJj41mEZyKc6brEmNukKpy0fc0NsniwQ,1764
|
57
|
-
ramifice/paladins/groups/__init__.py,sha256=GxJWM3IkYT3HW9pnJ1QTEjdOKJnjEoAaQ8SRukXnIW0,712
|
58
|
-
ramifice/paladins/groups/bool_group.py,sha256=X8P4YDh02gNzxTo9rgeCnmnV88jApUPqPLYIkpf5vGg,841
|
59
|
-
ramifice/paladins/groups/choice_group.py,sha256=NkD2sKqBkdUMHY36pFdvL4uQ-81LXByRHF_lhCEAI6Y,1848
|
60
|
-
ramifice/paladins/groups/date_group.py,sha256=i6beJVv4RpMsSnqZziCLnvKoC43r4lyjsUjyBu_ZBkk,3812
|
61
|
-
ramifice/paladins/groups/file_group.py,sha256=vzTfkEKA4GDd3c4opeFbM_teGslYreoAyplvzvzpeCw,3015
|
62
|
-
ramifice/paladins/groups/id_group.py,sha256=9iurBTOuhG1_8Wmxc5piTMcUNxAW3H0ZavA1sW7uopY,1321
|
63
|
-
ramifice/paladins/groups/img_group.py,sha256=qy2PeCIcEHTeFsP3GFJspUBMAGprlZEeasB8rETRtEY,6047
|
64
|
-
ramifice/paladins/groups/num_group.py,sha256=UtpmYELsNyooiOEIAhSaRuTxYr_FrNpqq9KqAflX2aU,2349
|
65
|
-
ramifice/paladins/groups/pass_group.py,sha256=54kvAyoUCEjujTw0Dh6oUrtv3RU80sWEem_b-3Ytv0k,1920
|
66
|
-
ramifice/paladins/groups/slug_group.py,sha256=OFuSqwnvmN6SSbR05zHHHngr44lbrAgZnIugSV650V0,2362
|
67
|
-
ramifice/paladins/groups/text_group.py,sha256=PzFuRaHQzfsboGOOGKsxuqazN6We5u9TudB0-k1v0Ow,4505
|
68
|
-
ramifice/utils/__init__.py,sha256=xixHoOX4ja5jIUZemem1qn4k4aonv3G3Q76azQK_pkU,43
|
69
|
-
ramifice/utils/constants.py,sha256=Wu_MyXvPpNonBbdgCmETLvMsZavyNXQ1IW9RXS9CMTA,2613
|
70
|
-
ramifice/utils/errors.py,sha256=iuhq7fzpUmsOyeXeg2fJjta8yAuqlXLKsZVMpfUhtHE,1901
|
71
|
-
ramifice/utils/fixtures.py,sha256=4vUFyIiEcqtkS5bAqwBWwXUKny3akbyWbI1j9450sBg,3211
|
72
|
-
ramifice/utils/migration.py,sha256=3rGebK-df0EBvq2QKIP9URnm3TPZLI97GXUf4EZRNsM,11134
|
73
|
-
ramifice/utils/tools.py,sha256=EPFINdgAJgewwQ9OErLEX8_z-_soQckyX7FsA7eRvyQ,3147
|
74
|
-
ramifice/utils/translations.py,sha256=h8B9AdqFu2V-8eg8DMwLpa9pib8IMv59SyPSDuyxchM,4305
|
75
|
-
ramifice/utils/unit.py,sha256=kfVlPHeVhVsli6jw5tV5yHC23QhAsTEL_V2rwHtDE20,2479
|
76
|
-
ramifice/utils/mixins/__init__.py,sha256=GrxJDsw73bEkitIh0-0BCxNnUK-N5uRXMCRlaPoaz1o,265
|
77
|
-
ramifice/utils/mixins/add_valid.py,sha256=9GV0XwprHl4yNRQty3InKij8oqO-9WZgWiQTfh0CVH0,439
|
78
|
-
ramifice/utils/mixins/hooks.py,sha256=oZXO2v9zsEzpf2w3L04YjigGKyk6c8PzCWBneqGi2CQ,943
|
79
|
-
ramifice/utils/mixins/indexing.py,sha256=bpQaQCLIhk6SmjEwZssAXhabsdXV8MFihlKhHHxO--w,358
|
80
|
-
ramifice/utils/mixins/json_converter.py,sha256=HMU4gDnrUS0oW3vT-mWAruvNJGn37Pv2A4CKnOBnrJA,1159
|
81
|
-
ramifice-0.8.10.dist-info/METADATA,sha256=CvH9io_z3tA8tvXlOyXRqFIcT5lWabVct11yeQW_a9g,20328
|
82
|
-
ramifice-0.8.10.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
83
|
-
ramifice-0.8.10.dist-info/licenses/LICENSE,sha256=LrEL0aTZx90HDwFUQCJutORiDjJL9AnuVvCtspXIqt4,1095
|
84
|
-
ramifice-0.8.10.dist-info/RECORD,,
|
File without changes
|
File without changes
|