ramifice 0.6.0__py3-none-any.whl → 0.7.0__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 +2 -1
- ramifice/commons/general.py +9 -9
- ramifice/commons/indexes.py +7 -7
- ramifice/commons/many.py +7 -7
- ramifice/commons/one.py +7 -7
- ramifice/commons/tools.py +0 -1
- ramifice/commons/unit_manager.py +3 -3
- ramifice/fields/bool_field.py +2 -2
- ramifice/fields/choice_float_dyn_field.py +3 -3
- ramifice/fields/choice_float_field.py +3 -3
- ramifice/fields/choice_float_mult_dyn_field.py +3 -3
- ramifice/fields/choice_float_mult_field.py +3 -3
- ramifice/fields/choice_int_dyn_field.py +3 -3
- ramifice/fields/choice_int_field.py +3 -3
- ramifice/fields/choice_int_mult_dyn_field.py +3 -3
- ramifice/fields/choice_int_mult_field.py +3 -3
- ramifice/fields/choice_text_dyn_field.py +3 -3
- ramifice/fields/choice_text_field.py +3 -3
- ramifice/fields/choice_text_mult_dyn_field.py +3 -3
- ramifice/fields/choice_text_mult_field.py +3 -3
- ramifice/fields/color_field.py +3 -3
- ramifice/fields/date_field.py +5 -5
- ramifice/fields/date_time_field.py +5 -5
- ramifice/fields/email_field.py +2 -2
- ramifice/fields/file_field.py +2 -2
- ramifice/fields/float_field.py +2 -2
- ramifice/fields/id_field.py +5 -5
- ramifice/fields/image_field.py +2 -2
- ramifice/fields/integer_field.py +2 -2
- ramifice/fields/ip_field.py +2 -2
- ramifice/fields/password_field.py +6 -5
- ramifice/fields/phone_field.py +2 -2
- ramifice/fields/slug_field.py +2 -2
- ramifice/fields/text_field.py +2 -2
- ramifice/fields/url_field.py +2 -2
- ramifice/models/decorator.py +1 -1
- ramifice/models/model.py +6 -6
- ramifice/paladins/check.py +2 -2
- ramifice/paladins/delete.py +2 -2
- ramifice/paladins/groups/text_group.py +9 -6
- ramifice/paladins/password.py +3 -3
- ramifice/paladins/refrash.py +2 -2
- ramifice/paladins/save.py +2 -2
- ramifice/utils/migration.py +15 -15
- ramifice/utils/mixins/json_converter.py +4 -3
- ramifice/utils/tools.py +8 -3
- {ramifice-0.6.0.dist-info → ramifice-0.7.0.dist-info}/METADATA +5 -4
- ramifice-0.7.0.dist-info/RECORD +84 -0
- ramifice-0.6.0.dist-info/RECORD +0 -84
- /ramifice/utils/{globals.py → constants.py} +0 -0
- {ramifice-0.6.0.dist-info → ramifice-0.7.0.dist-info}/WHEEL +0 -0
- {ramifice-0.6.0.dist-info → ramifice-0.7.0.dist-info}/licenses/LICENSE +0 -0
ramifice/utils/migration.py
CHANGED
@@ -12,24 +12,24 @@ from pymongo.asynchronous.collection import AsyncCollection
|
|
12
12
|
from termcolor import colored
|
13
13
|
|
14
14
|
from ramifice.models.model import Model
|
15
|
-
from ramifice.utils import
|
15
|
+
from ramifice.utils import constants
|
16
16
|
from ramifice.utils.errors import DoesNotMatchRegexError, NoModelsForMigrationError, PanicError
|
17
17
|
from ramifice.utils.fixtures import apply_fixture
|
18
18
|
|
19
19
|
|
20
|
-
class
|
20
|
+
class MigrationManager:
|
21
21
|
"""Monitoring and updating database state for application."""
|
22
22
|
|
23
23
|
def __init__(self, database_name: str, mongo_client: AsyncMongoClient): # noqa: D107
|
24
|
-
|
24
|
+
constants.DEBUG = False
|
25
25
|
#
|
26
|
-
db_name_regex =
|
26
|
+
db_name_regex = constants.REGEX["database_name"]
|
27
27
|
if db_name_regex.match(database_name) is None:
|
28
28
|
raise DoesNotMatchRegexError("^[a-zA-Z][-_a-zA-Z0-9]{0,59}$")
|
29
29
|
#
|
30
|
-
|
31
|
-
|
32
|
-
|
30
|
+
constants.DATABASE_NAME = database_name
|
31
|
+
constants.MONGO_CLIENT = mongo_client
|
32
|
+
constants.MONGO_DATABASE = constants.MONGO_CLIENT[constants.DATABASE_NAME]
|
33
33
|
# Get Model list.
|
34
34
|
self.model_list: list[Any] = Model.__subclasses__()
|
35
35
|
# Raise the exception if there are no models for migration.
|
@@ -43,7 +43,7 @@ class Monitor:
|
|
43
43
|
"""
|
44
44
|
# Get access to super collection.
|
45
45
|
# (Contains Model state and dynamic field data.)
|
46
|
-
super_collection: AsyncCollection =
|
46
|
+
super_collection: AsyncCollection = constants.MONGO_DATABASE[constants.SUPER_COLLECTION_NAME]
|
47
47
|
# Switch the `is_model_exist` parameter in `False`.
|
48
48
|
async for model_state in super_collection.find():
|
49
49
|
q_filter = {"collection_name": model_state["collection_name"]}
|
@@ -54,7 +54,7 @@ class Monitor:
|
|
54
54
|
"""Get the state of the current model from a super collection."""
|
55
55
|
# Get access to super collection.
|
56
56
|
# (Contains Model state and dynamic field data.)
|
57
|
-
super_collection: AsyncCollection =
|
57
|
+
super_collection: AsyncCollection = constants.MONGO_DATABASE[constants.SUPER_COLLECTION_NAME]
|
58
58
|
# Get state of current Model.
|
59
59
|
model_state: dict[str, Any] | None = await super_collection.find_one(
|
60
60
|
{"collection_name": metadata["collection_name"]}
|
@@ -86,10 +86,10 @@ class Monitor:
|
|
86
86
|
delete collections associated with those Models.
|
87
87
|
""" # noqa: D205
|
88
88
|
# Get access to database.
|
89
|
-
database =
|
89
|
+
database = constants.MONGO_DATABASE
|
90
90
|
# Get access to super collection.
|
91
91
|
# (Contains Model state and dynamic field data.)
|
92
|
-
super_collection: AsyncCollection =
|
92
|
+
super_collection: AsyncCollection = constants.MONGO_DATABASE[constants.SUPER_COLLECTION_NAME]
|
93
93
|
# Delete data for non-existent Models.
|
94
94
|
async for model_state in super_collection.find():
|
95
95
|
if model_state["is_model_exist"] is False:
|
@@ -111,9 +111,9 @@ class Monitor:
|
|
111
111
|
# Switch the `is_model_exist` parameter in the condition `False`.
|
112
112
|
await self.reset()
|
113
113
|
# Get access to database.
|
114
|
-
database =
|
114
|
+
database = constants.MONGO_DATABASE
|
115
115
|
# Get access to super collection.
|
116
|
-
super_collection: AsyncCollection = database[
|
116
|
+
super_collection: AsyncCollection = database[constants.SUPER_COLLECTION_NAME]
|
117
117
|
#
|
118
118
|
for cls_model in self.model_list:
|
119
119
|
# Get metadata of current Model.
|
@@ -195,7 +195,7 @@ class Monitor:
|
|
195
195
|
)
|
196
196
|
#
|
197
197
|
# Block the verification code.
|
198
|
-
|
198
|
+
constants.DEBUG = False
|
199
199
|
#
|
200
200
|
# Delete data for non-existent Models from a
|
201
201
|
# super collection and delete collections associated with those Models.
|
@@ -207,7 +207,7 @@ class Monitor:
|
|
207
207
|
# Apply fixture to current Model.
|
208
208
|
fixture_name: str | None = cls_model.META["fixture_name"]
|
209
209
|
if fixture_name is not None:
|
210
|
-
collection: AsyncCollection =
|
210
|
+
collection: AsyncCollection = constants.MONGO_DATABASE[
|
211
211
|
cls_model.META["collection_name"]
|
212
212
|
]
|
213
213
|
if await collection.estimated_document_count() == 0:
|
@@ -1,8 +1,9 @@
|
|
1
1
|
"""JsonMixin - Contains the methods for converting Fields to JSON and back."""
|
2
2
|
|
3
|
-
import json
|
4
3
|
from typing import Any
|
5
4
|
|
5
|
+
import orjson
|
6
|
+
|
6
7
|
|
7
8
|
class JsonMixin:
|
8
9
|
"""Contains the methods for converting Fields to JSON and back."""
|
@@ -17,7 +18,7 @@ class JsonMixin:
|
|
17
18
|
|
18
19
|
def to_json(self) -> str:
|
19
20
|
"""Convert object instance to a JSON string."""
|
20
|
-
return
|
21
|
+
return orjson.dumps(self.to_dict()).decode("utf-8")
|
21
22
|
|
22
23
|
@classmethod
|
23
24
|
def from_dict(cls, json_dict: dict[str, Any]) -> Any:
|
@@ -30,5 +31,5 @@ class JsonMixin:
|
|
30
31
|
@classmethod
|
31
32
|
def from_json(cls, json_str: str) -> Any:
|
32
33
|
"""Convert JSON string to a object instance."""
|
33
|
-
json_dict =
|
34
|
+
json_dict = orjson.loads(json_str)
|
34
35
|
return cls.from_dict(json_dict)
|
ramifice/utils/tools.py
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
"""Global collection of auxiliary methods."""
|
2
2
|
|
3
|
+
import asyncio
|
3
4
|
import ipaddress
|
4
5
|
import math
|
5
6
|
import os
|
@@ -10,7 +11,7 @@ import phonenumbers
|
|
10
11
|
from bson.objectid import ObjectId
|
11
12
|
from email_validator import EmailNotValidError, validate_email
|
12
13
|
|
13
|
-
from ramifice.utils.
|
14
|
+
from ramifice.utils.constants import REGEX
|
14
15
|
|
15
16
|
|
16
17
|
def is_password(password: str | None) -> bool:
|
@@ -49,10 +50,14 @@ def normal_email(email: str | None) -> str | None:
|
|
49
50
|
return normal
|
50
51
|
|
51
52
|
|
52
|
-
def is_email(email: str | None) -> bool:
|
53
|
+
async def is_email(email: str | None) -> bool:
|
53
54
|
"""Validate Email address."""
|
54
55
|
try:
|
55
|
-
|
56
|
+
await asyncio.to_thread(
|
57
|
+
validate_email,
|
58
|
+
str(email),
|
59
|
+
check_deliverability=True,
|
60
|
+
)
|
56
61
|
except EmailNotValidError:
|
57
62
|
return False
|
58
63
|
return True
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: ramifice
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.7.0
|
4
4
|
Summary: ORM-like API MongoDB for Python language.
|
5
5
|
Project-URL: Homepage, https://github.com/kebasyaty/ramifice
|
6
6
|
Project-URL: Documentation, https://kebasyaty.github.io/ramifice/
|
@@ -28,6 +28,7 @@ Requires-Dist: aioshutil>=1.5
|
|
28
28
|
Requires-Dist: argon2-cffi>=25.1.0
|
29
29
|
Requires-Dist: babel>=2.17.0
|
30
30
|
Requires-Dist: email-validator>=2.2.0
|
31
|
+
Requires-Dist: orjson>=3.10.18
|
31
32
|
Requires-Dist: phonenumbers>=9.0.6
|
32
33
|
Requires-Dist: pillow>=11.2.1
|
33
34
|
Requires-Dist: pymongo>=4.13.0
|
@@ -131,7 +132,7 @@ from datetime import datetime
|
|
131
132
|
import pprint
|
132
133
|
|
133
134
|
from pymongo import AsyncMongoClient
|
134
|
-
from ramifice import model, translations,
|
135
|
+
from ramifice import model, translations, MigrationManager
|
135
136
|
from ramifice.fields import (
|
136
137
|
ImageField,
|
137
138
|
PasswordField,
|
@@ -206,7 +207,7 @@ class User:
|
|
206
207
|
async def main():
|
207
208
|
client = AsyncMongoClient()
|
208
209
|
|
209
|
-
await
|
210
|
+
await MigrationManager(
|
210
211
|
database_name="test_db",
|
211
212
|
mongo_client=client,
|
212
213
|
).migrate()
|
@@ -557,7 +558,7 @@ if is_password("12345678"):
|
|
557
558
|
...
|
558
559
|
|
559
560
|
# Validate Email address.
|
560
|
-
if is_email("kebasyaty@gmail.com"):
|
561
|
+
if await is_email("kebasyaty@gmail.com"):
|
561
562
|
...
|
562
563
|
|
563
564
|
# Normalizing email address.
|
@@ -0,0 +1,84 @@
|
|
1
|
+
ramifice/__init__.py,sha256=DjzNF_-s3HHGIi2JU9Yyd5EOKhL1PrHWLjpsASvPclw,827
|
2
|
+
ramifice/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3
|
+
ramifice/commons/__init__.py,sha256=NZeqK9PEX7q8bVfiUaysdk_GShpA-5EfdM61mhj3wHg,513
|
4
|
+
ramifice/commons/general.py,sha256=qqISFnLo6WvStQSbm--ayRHeNGJcugpk3W_2p14ELiM,5402
|
5
|
+
ramifice/commons/indexes.py,sha256=GxUGj9rboPzrDBRcnz0UtancsO-MpvnlUJWum6fa5-Y,3667
|
6
|
+
ramifice/commons/many.py,sha256=Y9u_hTa6eehFNlOCVBp3q1jJjGvu_VOgalmDri0HaQ0,9283
|
7
|
+
ramifice/commons/one.py,sha256=njE7fFYGDu-gJyvLHP-l1tFsJsRQfI7YZ81ZiQO0voI,6795
|
8
|
+
ramifice/commons/tools.py,sha256=cF6gPOh-krNSEgslm-3tpTvbTAc6JdqihBoD0pmhSvU,2360
|
9
|
+
ramifice/commons/unit_manager.py,sha256=EuRWEDw_TRnL5F5c5IwK0YEYftzjrel7yVHwTEwL5iM,4517
|
10
|
+
ramifice/fields/__init__.py,sha256=u_XTUfcWTI96lvxinMPm_s9XNJ4jNDd8zhL9vwRvckc,1710
|
11
|
+
ramifice/fields/bool_field.py,sha256=l9oV36IkdFZhc2cTln5QWGzwf0t1s1QLf2GUBcFjNYs,2105
|
12
|
+
ramifice/fields/choice_float_dyn_field.py,sha256=eAATxYw5nyuCnnOU3n45jQ9U97dkgM5drvHh44nmEJM,3161
|
13
|
+
ramifice/fields/choice_float_field.py,sha256=0790wb8_aMjvxG7ocP1JcHr1NA3N-LbbUiBWPef9Rmc,3954
|
14
|
+
ramifice/fields/choice_float_mult_dyn_field.py,sha256=qQ99-4WbuIqKZOsoWmPvNnvMCthd2zuxPR1hgeKA3pM,3224
|
15
|
+
ramifice/fields/choice_float_mult_field.py,sha256=bxr-NAfuJqatoDt6R8KucxNZnaG4mvgTce027A12toI,4300
|
16
|
+
ramifice/fields/choice_int_dyn_field.py,sha256=XY9Li347jrX1KoVzQrE2gcu2WKYb4z2s5TKjmfw2_zc,3155
|
17
|
+
ramifice/fields/choice_int_field.py,sha256=G73y-hvO_NjKbgT2iBJ9O7ElPj4mA1b5VDNFpXvm8qs,3942
|
18
|
+
ramifice/fields/choice_int_mult_dyn_field.py,sha256=oDVSzafEQioGEBGIfRoXaukUxXJLhwo6p_WT_votvsQ,3220
|
19
|
+
ramifice/fields/choice_int_mult_field.py,sha256=RHJisTklROl-q_tEfPJVjd5Bjl2pJpC0aYM2ODHr-_0,4294
|
20
|
+
ramifice/fields/choice_text_dyn_field.py,sha256=cYAZL1v9PlvjM5BGEq0dkhtX38aC6cCGBxDFHusBdCk,3145
|
21
|
+
ramifice/fields/choice_text_field.py,sha256=ky4NHXV39v7acdUVCj0kUt2K-4AUrCtGD6ubaTeD3Tc,4141
|
22
|
+
ramifice/fields/choice_text_mult_dyn_field.py,sha256=LGSWuoNCJLGITbivsZ4XJOzjHtRh07Hhy0zwuQ7Cc6I,3210
|
23
|
+
ramifice/fields/choice_text_mult_field.py,sha256=44tKyFoUB6tEnC7pjHvbqDAqjY6vC5GiCNLBvAN_scw,4284
|
24
|
+
ramifice/fields/color_field.py,sha256=K-lYp8f08HTZt6WU0kY3CQWaAmx6I3-uyKHBq7xAeSA,3576
|
25
|
+
ramifice/fields/date_field.py,sha256=-M_dD8tVUXcDCQD5Hy5Ns9Z2QGlRya0qbvoWgA4qpmg,5277
|
26
|
+
ramifice/fields/date_time_field.py,sha256=ahjX-cD5Qj-V7JUi5QAZ8qgv9UePhYYYzJghiasKdqE,5312
|
27
|
+
ramifice/fields/email_field.py,sha256=4Kxy1K6CXJUJ8Db0CQuopjodiY4ybe7V0GT756t7Nks,3481
|
28
|
+
ramifice/fields/file_field.py,sha256=icckL_LGfPlotHO7j32lMre9J0O0k-WVjMQg5QdQav4,8130
|
29
|
+
ramifice/fields/float_field.py,sha256=fj9TPe1IYlZG7gTPp0Hr8C4PZJU9XEZMEym9hfEbB7M,4633
|
30
|
+
ramifice/fields/id_field.py,sha256=YO5oIwXtqgURjjd2oYe2ouXxdpaiJp5ZhUgUA2pkNeo,4183
|
31
|
+
ramifice/fields/image_field.py,sha256=qoUAkZW2b-EkU5IDvlbxEOFwWpLYFXs9ZFnxL55an6M,11549
|
32
|
+
ramifice/fields/integer_field.py,sha256=xPwpdhYNz4MyHgOypqa29oGNdKZic05yyUYHg5CDD3E,4609
|
33
|
+
ramifice/fields/ip_field.py,sha256=tBFGFMC_zwAyLGtVRNNfiu4vQoxXPcgVHhX_aoHrvns,3390
|
34
|
+
ramifice/fields/password_field.py,sha256=USD4Y8MTI89QZVT6zqLGBmb5kqOKrXqh73-z99cOvtk,3266
|
35
|
+
ramifice/fields/phone_field.py,sha256=UkszdRWQ-7-SutpVmr71IBZ9_Oc33h8W2vy_udMSERM,3663
|
36
|
+
ramifice/fields/slug_field.py,sha256=_g4fOyzv1qr9WI7cSXa2EOj9h1SVIBWfc29RZgxhn3c,2733
|
37
|
+
ramifice/fields/text_field.py,sha256=p4RhNjWbq0U2nd5OGnJd0CZZvoLea53nZ22kFc1NVWw,4140
|
38
|
+
ramifice/fields/url_field.py,sha256=oLdaVDwb3zaCEIE_XIikp-OZzYfi-8s19DnGrLJQ9XU,4041
|
39
|
+
ramifice/fields/general/__init__.py,sha256=JzgIDseNQLB_IDwY9-JSiT_bONxvhJmbKl5PhQzTnpE,40
|
40
|
+
ramifice/fields/general/choice_group.py,sha256=aNO8LnsafGOOQ7d2lAppI9YtzVHbWUZ6t1znEEIbAv8,962
|
41
|
+
ramifice/fields/general/date_group.py,sha256=C5VgR0CBEGgG7nIYEeI82hVXttngSJAGFvEdXC_OpGY,1213
|
42
|
+
ramifice/fields/general/field.py,sha256=qm7N-U5H1V6BK_6quJeGGpTmb9IqA-vxZlNHwoABye0,1384
|
43
|
+
ramifice/fields/general/file_group.py,sha256=T-IwFnlJAWaRcQKVn09IJCdFNGgnUfMkjLzWFFqn7gY,1117
|
44
|
+
ramifice/fields/general/number_group.py,sha256=LOPHbKAnIuqW4DEh2fH78w6qOQjp0OhkuP7MoikhlkA,761
|
45
|
+
ramifice/fields/general/text_group.py,sha256=m9EnlYGwqlck-JIYOCUd0hUYAVr8jH4YCnTmm9QlCkQ,1103
|
46
|
+
ramifice/models/__init__.py,sha256=h_QQ5rSJNZ-7kmx7wIFd8E8RmUS94b_x4jdwMbq8zm4,15
|
47
|
+
ramifice/models/decorator.py,sha256=fL9xc7-_BEiFEqfwgql6CihYWB6MC-JgiC0FSSK_JHA,5956
|
48
|
+
ramifice/models/model.py,sha256=e5UWHKIHwm7saxQ4bbamsTkz1VVBIqTRlAmJCOg5uRE,7160
|
49
|
+
ramifice/paladins/__init__.py,sha256=EJ6EEKXUcMG5P1bDmlEa4W3fsxSz5u6mzDG_oU1efMQ,618
|
50
|
+
ramifice/paladins/check.py,sha256=9lLJ6SnNQBI9eyAwWSqjFa7_F2A2QbTg4WHyrPL3E20,6584
|
51
|
+
ramifice/paladins/delete.py,sha256=90ZiTzYxa2bnhOJhkEBe7XR_Yi4gaTvrJ3u4dSik0mU,3430
|
52
|
+
ramifice/paladins/password.py,sha256=G-tMz2dIiOYEhOeSHYgAmc2e4tG_TJ2gt5tzPwBapkw,3047
|
53
|
+
ramifice/paladins/refrash.py,sha256=hIZQEBGtoIhuGGg2KQYGApCaMb8WhK_QZlzi1_-zzU0,1100
|
54
|
+
ramifice/paladins/save.py,sha256=mFau65uWYy4dSVyTVdZGR3VUnP-I_NPdMvq7F5n1sFo,3899
|
55
|
+
ramifice/paladins/tools.py,sha256=zc2VXp1U_BCT4IQWopwhxJ5vqci9jX128U5_nMeHawY,2652
|
56
|
+
ramifice/paladins/validation.py,sha256=gcEJXIEPu1g7Z54vl14YTs5rCmxOEYsgQH1usFfyy7k,1730
|
57
|
+
ramifice/paladins/groups/__init__.py,sha256=GxJWM3IkYT3HW9pnJ1QTEjdOKJnjEoAaQ8SRukXnIW0,712
|
58
|
+
ramifice/paladins/groups/bool_group.py,sha256=rz1XIIdhOqbCOYZT1Yl84XaJg-0vwdcqCnt0BH-xHVA,808
|
59
|
+
ramifice/paladins/groups/choice_group.py,sha256=KmrjbuHLLl6yGbRkdoMflf1thh17GLWrcbfaqrHlDiE,1813
|
60
|
+
ramifice/paladins/groups/date_group.py,sha256=V3MCp8eA7txVLh6xmg76G9_y62TzWIQWqH59Ip26Xag,3779
|
61
|
+
ramifice/paladins/groups/file_group.py,sha256=ySS7L5zcm2XrZRQUUOU8kgzqrucZ95UYzXD6pALWqE4,2982
|
62
|
+
ramifice/paladins/groups/id_group.py,sha256=zN_Glu_cMGk8jMSDli3vYPvYrQXvQJNJFzb-t-qtZlQ,1290
|
63
|
+
ramifice/paladins/groups/img_group.py,sha256=YDJTvbRoqQ2nf7-2QbIQ72I4j_c98_d5LZNrD9kCy0Q,6040
|
64
|
+
ramifice/paladins/groups/num_group.py,sha256=sbxzTdl33TVySfaNfqMixyBkJ69v6AqEgraFUN3Kftk,2317
|
65
|
+
ramifice/paladins/groups/pass_group.py,sha256=uuIIqMBXsYG7vTHc_AhdgWuNCivxTgQMjkEu0-ElSmY,1887
|
66
|
+
ramifice/paladins/groups/slug_group.py,sha256=ztiA2v7e5lQYRZtlLw8WGOhSWaYQfOdZ6wkKbx3ZbTM,2329
|
67
|
+
ramifice/paladins/groups/text_group.py,sha256=cdwUZoomw61A7CmDIbds_oOaia2tD-J5LLuj5b8E8O4,4472
|
68
|
+
ramifice/utils/__init__.py,sha256=xixHoOX4ja5jIUZemem1qn4k4aonv3G3Q76azQK_pkU,43
|
69
|
+
ramifice/utils/constants.py,sha256=uR20um3Qg_1SG1t7WyWbpq8kQD-9Mslyr_c1yh5Hw9w,1751
|
70
|
+
ramifice/utils/errors.py,sha256=iuhq7fzpUmsOyeXeg2fJjta8yAuqlXLKsZVMpfUhtHE,1901
|
71
|
+
ramifice/utils/fixtures.py,sha256=IG55gdFUbrWRQ2cL3Df9mYBgjVlFrlRuWB7UeK1Nzd8,3173
|
72
|
+
ramifice/utils/migration.py,sha256=Sx0uaXHVwGAYbroYuiKPCHrFBjIzOxcY3PCeP0q3KmU,11064
|
73
|
+
ramifice/utils/tools.py,sha256=dJjG92nevSq_US30pUdbBy37pvqBdxXHBeHZxpOInKM,2843
|
74
|
+
ramifice/utils/translations.py,sha256=aEkNKilD7RlJjBixqhh0cfIMw9lg13woaIwd3dyR8G4,4247
|
75
|
+
ramifice/utils/unit.py,sha256=PPNKWYFJ8cz0nwbBPaTdL58_Nr7N0fIHFJBpKG2ZLKI,2482
|
76
|
+
ramifice/utils/mixins/__init__.py,sha256=GrxJDsw73bEkitIh0-0BCxNnUK-N5uRXMCRlaPoaz1o,265
|
77
|
+
ramifice/utils/mixins/add_valid.py,sha256=TLOObedzXNA9eCylfAVbVCqIKE5sV-P5AdIN7avj-GA,407
|
78
|
+
ramifice/utils/mixins/hooks.py,sha256=33jvJRhfnJeL2Hd_YFXk3M_7wjqHaByU2wRjKyboL6s,914
|
79
|
+
ramifice/utils/mixins/indexing.py,sha256=Z0427HoaVRyNmSNN8Fx0mSICgAKV-gDdu3iR5qYUEbs,329
|
80
|
+
ramifice/utils/mixins/json_converter.py,sha256=2K_PZ34AzpesusgyyQFOLXFPcjXez3TWn-m9CHIKwRo,1131
|
81
|
+
ramifice-0.7.0.dist-info/METADATA,sha256=BAx1XVjis5nz7_9e9KQwRhcIQRwSqDC13vRcVsyjsUs,21030
|
82
|
+
ramifice-0.7.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
83
|
+
ramifice-0.7.0.dist-info/licenses/LICENSE,sha256=LrEL0aTZx90HDwFUQCJutORiDjJL9AnuVvCtspXIqt4,1095
|
84
|
+
ramifice-0.7.0.dist-info/RECORD,,
|
ramifice-0.6.0.dist-info/RECORD
DELETED
@@ -1,84 +0,0 @@
|
|
1
|
-
ramifice/__init__.py,sha256=jLlfcFwSvw_X3dTRz3MbaLJ8SfqlNNrZ8jSwBrS3EMI,783
|
2
|
-
ramifice/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3
|
-
ramifice/commons/__init__.py,sha256=NZeqK9PEX7q8bVfiUaysdk_GShpA-5EfdM61mhj3wHg,513
|
4
|
-
ramifice/commons/general.py,sha256=Jte8VWCGuMaQidCT19eFjh7tfaTEjBnkto_0mDJoxc4,5384
|
5
|
-
ramifice/commons/indexes.py,sha256=GlAUtYnGaqNjuupg-KLzDzak9eDcOWZiE9y-Iz2AKXQ,3653
|
6
|
-
ramifice/commons/many.py,sha256=5F3TsiUZuygILsNt5Er-mWHXot2qua_GEnHlT6AB-0M,9253
|
7
|
-
ramifice/commons/one.py,sha256=8B5IQHX68x8hsbrb90vu-WgCH9zge2jJ3RmlJ256xU0,6781
|
8
|
-
ramifice/commons/tools.py,sha256=xCalseb-sEDTqHyIv3r0o29n0VIWzmXZZoY3DTIVAIM,2373
|
9
|
-
ramifice/commons/unit_manager.py,sha256=RGKxNovICXiaCzqdzsuvO4fehcSnSa0BDw-ax0J3MuE,4509
|
10
|
-
ramifice/fields/__init__.py,sha256=u_XTUfcWTI96lvxinMPm_s9XNJ4jNDd8zhL9vwRvckc,1710
|
11
|
-
ramifice/fields/bool_field.py,sha256=aTOLSO4k6TRvfWpRupvAuOFSuPQfRBViCE4wI2AJYgo,2101
|
12
|
-
ramifice/fields/choice_float_dyn_field.py,sha256=5vfMjTr2jarr3sSaPfE-YejtTfK24CrTUPRCyn29QOE,3157
|
13
|
-
ramifice/fields/choice_float_field.py,sha256=jNjEfkLXAwaAHgubGOQrT9AttwbRgxHkqhtRqMgMtsk,3950
|
14
|
-
ramifice/fields/choice_float_mult_dyn_field.py,sha256=ReXje9VvEPUthqrP3fjr16VVi0GWvqiN7CQp4UeUDr4,3220
|
15
|
-
ramifice/fields/choice_float_mult_field.py,sha256=70L_mMKvvVowKS7E06BSsQ9IAX3s0q6k4_MhePcsYOU,4296
|
16
|
-
ramifice/fields/choice_int_dyn_field.py,sha256=yWYoESTjrk2_RxFwaVYuIXo6troyWHZK1Ey2kMJvRMs,3151
|
17
|
-
ramifice/fields/choice_int_field.py,sha256=2ejg7z-Ct-Ho56bZeB-SBuvNd0Aq7rQf7AFg41qxW-w,3938
|
18
|
-
ramifice/fields/choice_int_mult_dyn_field.py,sha256=TKwqvZOqUMnq7mdWrUofcnWq61FRAHBeMsIuiMXQXVw,3216
|
19
|
-
ramifice/fields/choice_int_mult_field.py,sha256=e39ue_sybVO9q5S1eKg6kTox6k8gIZSUEhmIlbpwF_c,4290
|
20
|
-
ramifice/fields/choice_text_dyn_field.py,sha256=6AR0vy_ZNv6XAgypzsgWrfNgHXS-7CX0OCA1gA9cy2Q,3147
|
21
|
-
ramifice/fields/choice_text_field.py,sha256=HTEfKUZKBDE3Rv9eKYenodURc4O_iClPQLK2y5LSfBU,4143
|
22
|
-
ramifice/fields/choice_text_mult_dyn_field.py,sha256=RxTDktctGVFKXbLWeISNrpEOIEysp7xjX0VoAn6a3NQ,3212
|
23
|
-
ramifice/fields/choice_text_mult_field.py,sha256=WCpOmrmPZpvIYV9WCo2xAHhAT_Iogd0tuuuR-raGm4c,4286
|
24
|
-
ramifice/fields/color_field.py,sha256=Syam8MtB--B0HzAT3w3QuWz3pPixSMbh8xGPmbGYLCs,3570
|
25
|
-
ramifice/fields/date_field.py,sha256=xhMRsEwk4CztDae5va2Tx0v9Oh55M4p0S4Y0qu-ZlIk,5251
|
26
|
-
ramifice/fields/date_time_field.py,sha256=RKxXVWTWGNxTri-MDlOAZNSwgtL46m-0grh3wKX-gi8,5286
|
27
|
-
ramifice/fields/email_field.py,sha256=qXG7zHkr5ox4CFrb6QYarBMl8gwcq8KlVFVCj-zfvs0,3477
|
28
|
-
ramifice/fields/file_field.py,sha256=YLdZvotj6ymEVRjYGU4xsiHkP_zI8krk3TuHaowvfDo,8126
|
29
|
-
ramifice/fields/float_field.py,sha256=wadjiYakzv4uzWD8wI2E0B9w78Or4hZiAmrNXlOy8EI,4629
|
30
|
-
ramifice/fields/id_field.py,sha256=NqdM0UJAi-iXJc7wa6CAJNG0-i4YNt08XGkHqV5ingc,4157
|
31
|
-
ramifice/fields/image_field.py,sha256=MfKILPPz2ye8x696eEu8loRRpIWgP4neVoZ7ucNkDIw,11545
|
32
|
-
ramifice/fields/integer_field.py,sha256=QpLqLItG4mVMYOhpGDVFNr-wDFqeUuERtfZy7C-EslE,4605
|
33
|
-
ramifice/fields/ip_field.py,sha256=q-2OgT4VBDo8yzrX7wwuSHwexwsM8wDwnHOyQRACItI,3386
|
34
|
-
ramifice/fields/password_field.py,sha256=EzIsegHdsVpnj9D-cTI1Q9RBbW07qUx7I7UFcMWW8Hk,3238
|
35
|
-
ramifice/fields/phone_field.py,sha256=-rjW8d00phqHi0YK_R8eZtwPHszyT9Aqxdb3M_KOxIY,3659
|
36
|
-
ramifice/fields/slug_field.py,sha256=V0kQ8bfqTv3Rxs17dmhGpe_LmgNS7LOGkvvK2fZJYfE,2729
|
37
|
-
ramifice/fields/text_field.py,sha256=JUMF8yx1eZ79k9mw28TxVCPcPqecXjqOpkDf25a5Tu4,4136
|
38
|
-
ramifice/fields/url_field.py,sha256=LsHNn38bDt_7kaggX53P-nE3C4pYIlp1NeOPcH06lTk,4037
|
39
|
-
ramifice/fields/general/__init__.py,sha256=JzgIDseNQLB_IDwY9-JSiT_bONxvhJmbKl5PhQzTnpE,40
|
40
|
-
ramifice/fields/general/choice_group.py,sha256=aNO8LnsafGOOQ7d2lAppI9YtzVHbWUZ6t1znEEIbAv8,962
|
41
|
-
ramifice/fields/general/date_group.py,sha256=C5VgR0CBEGgG7nIYEeI82hVXttngSJAGFvEdXC_OpGY,1213
|
42
|
-
ramifice/fields/general/field.py,sha256=qm7N-U5H1V6BK_6quJeGGpTmb9IqA-vxZlNHwoABye0,1384
|
43
|
-
ramifice/fields/general/file_group.py,sha256=T-IwFnlJAWaRcQKVn09IJCdFNGgnUfMkjLzWFFqn7gY,1117
|
44
|
-
ramifice/fields/general/number_group.py,sha256=LOPHbKAnIuqW4DEh2fH78w6qOQjp0OhkuP7MoikhlkA,761
|
45
|
-
ramifice/fields/general/text_group.py,sha256=m9EnlYGwqlck-JIYOCUd0hUYAVr8jH4YCnTmm9QlCkQ,1103
|
46
|
-
ramifice/models/__init__.py,sha256=h_QQ5rSJNZ-7kmx7wIFd8E8RmUS94b_x4jdwMbq8zm4,15
|
47
|
-
ramifice/models/decorator.py,sha256=vEblLbpQQ0BkdTI2ch-BtDvCqWSEXe2aaEjxND705_Q,5954
|
48
|
-
ramifice/models/model.py,sha256=JPEUYONRHVj7uE5vnuodc65dGHyBQCRmV8mdVUAgyXw,7118
|
49
|
-
ramifice/paladins/__init__.py,sha256=EJ6EEKXUcMG5P1bDmlEa4W3fsxSz5u6mzDG_oU1efMQ,618
|
50
|
-
ramifice/paladins/check.py,sha256=OeEDtL3lNR94bL1shrHloAHXHZtHnl6IWzEgukD9HSU,6580
|
51
|
-
ramifice/paladins/delete.py,sha256=hnLpyMoNbgegQ_GF-A7iEHj7cbk1oSc5xyTy1BNLxsE,3426
|
52
|
-
ramifice/paladins/password.py,sha256=pp0AVMf98w-2Ps3hHqwwIDSsXh93s-1TrBbeEI83Ly8,3041
|
53
|
-
ramifice/paladins/refrash.py,sha256=4xojazc5BqCkE8_st11gH5tj2LpflzWVn2ZD-uNoOsg,1096
|
54
|
-
ramifice/paladins/save.py,sha256=Z8vmqEksCK8XY27-BsgN2lyaNxLregOo5p0_XB9qUys,3895
|
55
|
-
ramifice/paladins/tools.py,sha256=zc2VXp1U_BCT4IQWopwhxJ5vqci9jX128U5_nMeHawY,2652
|
56
|
-
ramifice/paladins/validation.py,sha256=gcEJXIEPu1g7Z54vl14YTs5rCmxOEYsgQH1usFfyy7k,1730
|
57
|
-
ramifice/paladins/groups/__init__.py,sha256=GxJWM3IkYT3HW9pnJ1QTEjdOKJnjEoAaQ8SRukXnIW0,712
|
58
|
-
ramifice/paladins/groups/bool_group.py,sha256=rz1XIIdhOqbCOYZT1Yl84XaJg-0vwdcqCnt0BH-xHVA,808
|
59
|
-
ramifice/paladins/groups/choice_group.py,sha256=KmrjbuHLLl6yGbRkdoMflf1thh17GLWrcbfaqrHlDiE,1813
|
60
|
-
ramifice/paladins/groups/date_group.py,sha256=V3MCp8eA7txVLh6xmg76G9_y62TzWIQWqH59Ip26Xag,3779
|
61
|
-
ramifice/paladins/groups/file_group.py,sha256=ySS7L5zcm2XrZRQUUOU8kgzqrucZ95UYzXD6pALWqE4,2982
|
62
|
-
ramifice/paladins/groups/id_group.py,sha256=zN_Glu_cMGk8jMSDli3vYPvYrQXvQJNJFzb-t-qtZlQ,1290
|
63
|
-
ramifice/paladins/groups/img_group.py,sha256=YDJTvbRoqQ2nf7-2QbIQ72I4j_c98_d5LZNrD9kCy0Q,6040
|
64
|
-
ramifice/paladins/groups/num_group.py,sha256=sbxzTdl33TVySfaNfqMixyBkJ69v6AqEgraFUN3Kftk,2317
|
65
|
-
ramifice/paladins/groups/pass_group.py,sha256=uuIIqMBXsYG7vTHc_AhdgWuNCivxTgQMjkEu0-ElSmY,1887
|
66
|
-
ramifice/paladins/groups/slug_group.py,sha256=ztiA2v7e5lQYRZtlLw8WGOhSWaYQfOdZ6wkKbx3ZbTM,2329
|
67
|
-
ramifice/paladins/groups/text_group.py,sha256=FSrZbm3Fd0SU0IIFFBxs9XN2HPSFHshgwIRiLaUDwNY,4456
|
68
|
-
ramifice/utils/__init__.py,sha256=xixHoOX4ja5jIUZemem1qn4k4aonv3G3Q76azQK_pkU,43
|
69
|
-
ramifice/utils/errors.py,sha256=iuhq7fzpUmsOyeXeg2fJjta8yAuqlXLKsZVMpfUhtHE,1901
|
70
|
-
ramifice/utils/fixtures.py,sha256=IG55gdFUbrWRQ2cL3Df9mYBgjVlFrlRuWB7UeK1Nzd8,3173
|
71
|
-
ramifice/utils/globals.py,sha256=uR20um3Qg_1SG1t7WyWbpq8kQD-9Mslyr_c1yh5Hw9w,1751
|
72
|
-
ramifice/utils/migration.py,sha256=JUhYaJ61IS1W_Khof0sbqeHDQrI7-XcmTQ41PhCdjcQ,11017
|
73
|
-
ramifice/utils/tools.py,sha256=1yFIOrkWToM55OpMMId9T26hZqPQWnxLU3_jQ4Ejazg,2743
|
74
|
-
ramifice/utils/translations.py,sha256=aEkNKilD7RlJjBixqhh0cfIMw9lg13woaIwd3dyR8G4,4247
|
75
|
-
ramifice/utils/unit.py,sha256=PPNKWYFJ8cz0nwbBPaTdL58_Nr7N0fIHFJBpKG2ZLKI,2482
|
76
|
-
ramifice/utils/mixins/__init__.py,sha256=GrxJDsw73bEkitIh0-0BCxNnUK-N5uRXMCRlaPoaz1o,265
|
77
|
-
ramifice/utils/mixins/add_valid.py,sha256=TLOObedzXNA9eCylfAVbVCqIKE5sV-P5AdIN7avj-GA,407
|
78
|
-
ramifice/utils/mixins/hooks.py,sha256=33jvJRhfnJeL2Hd_YFXk3M_7wjqHaByU2wRjKyboL6s,914
|
79
|
-
ramifice/utils/mixins/indexing.py,sha256=Z0427HoaVRyNmSNN8Fx0mSICgAKV-gDdu3iR5qYUEbs,329
|
80
|
-
ramifice/utils/mixins/json_converter.py,sha256=WhigXyDAV-FfILaZuwvRFRIk0D90Rv3dG5t-mv5fVyc,1107
|
81
|
-
ramifice-0.6.0.dist-info/METADATA,sha256=mGAJxiS68kKIy6ZO94iagVCIAXPPVM2hoxSZnwHGKyk,20987
|
82
|
-
ramifice-0.6.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
83
|
-
ramifice-0.6.0.dist-info/licenses/LICENSE,sha256=LrEL0aTZx90HDwFUQCJutORiDjJL9AnuVvCtspXIqt4,1095
|
84
|
-
ramifice-0.6.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|