ramifice 0.5.11__py3-none-any.whl → 0.6.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 +3 -3
- ramifice/commons/__init__.py +5 -5
- ramifice/commons/general.py +2 -2
- ramifice/commons/indexes.py +1 -1
- ramifice/commons/many.py +7 -3
- ramifice/commons/one.py +7 -3
- ramifice/commons/tools.py +1 -1
- ramifice/commons/unit_manager.py +3 -3
- ramifice/fields/__init__.py +28 -28
- ramifice/fields/bool_field.py +3 -3
- ramifice/fields/choice_float_dyn_field.py +4 -4
- ramifice/fields/choice_float_field.py +4 -4
- ramifice/fields/choice_float_mult_dyn_field.py +4 -4
- ramifice/fields/choice_float_mult_field.py +4 -4
- ramifice/fields/choice_int_dyn_field.py +4 -4
- ramifice/fields/choice_int_field.py +4 -4
- ramifice/fields/choice_int_mult_dyn_field.py +4 -4
- ramifice/fields/choice_int_mult_field.py +4 -4
- ramifice/fields/choice_text_dyn_field.py +4 -4
- ramifice/fields/choice_text_field.py +4 -4
- ramifice/fields/choice_text_mult_dyn_field.py +4 -4
- ramifice/fields/choice_text_mult_field.py +4 -4
- ramifice/fields/color_field.py +4 -4
- ramifice/fields/date_field.py +3 -3
- ramifice/fields/date_time_field.py +3 -3
- ramifice/fields/email_field.py +4 -4
- ramifice/fields/file_field.py +19 -18
- ramifice/fields/float_field.py +4 -4
- ramifice/fields/general/__init__.py +1 -1
- ramifice/fields/general/choice_group.py +3 -1
- ramifice/fields/general/date_group.py +2 -1
- ramifice/fields/general/field.py +3 -1
- ramifice/fields/general/file_group.py +3 -1
- ramifice/fields/general/number_group.py +3 -1
- ramifice/fields/general/text_group.py +3 -1
- ramifice/fields/id_field.py +2 -2
- ramifice/fields/image_field.py +18 -37
- ramifice/fields/integer_field.py +4 -4
- ramifice/fields/ip_field.py +4 -4
- ramifice/fields/password_field.py +2 -2
- ramifice/fields/phone_field.py +4 -4
- ramifice/fields/slug_field.py +4 -4
- ramifice/fields/text_field.py +3 -3
- ramifice/fields/url_field.py +4 -4
- ramifice/models/decorator.py +33 -61
- ramifice/models/model.py +2 -2
- ramifice/paladins/__init__.py +6 -6
- ramifice/paladins/check.py +17 -30
- ramifice/paladins/delete.py +6 -6
- ramifice/paladins/groups/__init__.py +10 -10
- ramifice/paladins/groups/bool_group.py +1 -1
- ramifice/paladins/groups/choice_group.py +2 -2
- ramifice/paladins/groups/date_group.py +5 -2
- ramifice/paladins/groups/file_group.py +7 -4
- ramifice/paladins/groups/id_group.py +2 -2
- ramifice/paladins/groups/img_group.py +27 -15
- ramifice/paladins/groups/num_group.py +6 -2
- ramifice/paladins/groups/pass_group.py +3 -3
- ramifice/paladins/groups/slug_group.py +2 -2
- ramifice/paladins/groups/text_group.py +16 -5
- ramifice/paladins/password.py +2 -2
- ramifice/paladins/refrash.py +3 -3
- ramifice/paladins/save.py +3 -3
- ramifice/paladins/tools.py +1 -3
- ramifice/utils/fixtures.py +1 -1
- ramifice/utils/migration.py +5 -7
- ramifice/utils/mixins/__init__.py +4 -4
- ramifice/utils/tools.py +2 -2
- ramifice/utils/translations.py +1 -1
- ramifice/utils/unit.py +2 -2
- {ramifice-0.5.11.dist-info → ramifice-0.6.0.dist-info}/METADATA +4 -17
- ramifice-0.6.0.dist-info/RECORD +84 -0
- ramifice/models/pseudo.py +0 -181
- ramifice-0.5.11.dist-info/RECORD +0 -85
- {ramifice-0.5.11.dist-info → ramifice-0.6.0.dist-info}/WHEEL +0 -0
- {ramifice-0.5.11.dist-info → ramifice-0.6.0.dist-info}/licenses/LICENSE +0 -0
ramifice/models/pseudo.py
DELETED
@@ -1,181 +0,0 @@
|
|
1
|
-
"""For converting Python classes into Ramifice models."""
|
2
|
-
|
3
|
-
import json
|
4
|
-
import os
|
5
|
-
import shutil
|
6
|
-
from abc import ABCMeta, abstractmethod
|
7
|
-
from typing import Any
|
8
|
-
|
9
|
-
from babel.dates import format_date, format_datetime
|
10
|
-
from bson.objectid import ObjectId
|
11
|
-
from dateutil.parser import parse
|
12
|
-
|
13
|
-
from ..utils import translations
|
14
|
-
from ..utils.errors import PanicError
|
15
|
-
|
16
|
-
|
17
|
-
class PseudoModel(metaclass=ABCMeta):
|
18
|
-
"""Convert the Python Class into a pseudo Model Ramifice.
|
19
|
-
|
20
|
-
Used for a Model that do not migrate into the database.
|
21
|
-
"""
|
22
|
-
|
23
|
-
META: dict[str, Any] = {}
|
24
|
-
|
25
|
-
def __init__(self) -> None: # noqa: D107
|
26
|
-
self.fields()
|
27
|
-
self.inject()
|
28
|
-
|
29
|
-
for _, f_type in self.__dict__.items():
|
30
|
-
if not callable(f_type) and f_type.group == "img":
|
31
|
-
f_type.__dict__["add_width_height"] = True
|
32
|
-
|
33
|
-
def __del__(self) -> None: # noqa: D105
|
34
|
-
# If the model is not migrated,
|
35
|
-
# it must delete files and images in the destructor.
|
36
|
-
for _, f_type in self.__dict__.items():
|
37
|
-
if callable(f_type):
|
38
|
-
continue
|
39
|
-
value = f_type.value
|
40
|
-
if value is not None:
|
41
|
-
if f_type.group == "file":
|
42
|
-
value = value.get("path")
|
43
|
-
if value is not None:
|
44
|
-
os.remove(value)
|
45
|
-
elif f_type.group == "img":
|
46
|
-
value = value.get("imgs_dir_path")
|
47
|
-
if value is not None:
|
48
|
-
shutil.rmtree(value)
|
49
|
-
|
50
|
-
@abstractmethod
|
51
|
-
def fields(self) -> None:
|
52
|
-
"""For adding fields."""
|
53
|
-
pass
|
54
|
-
|
55
|
-
def model_name(self) -> str:
|
56
|
-
"""Get Model name - Class name."""
|
57
|
-
return self.__class__.__name__
|
58
|
-
|
59
|
-
def full_model_name(self) -> str:
|
60
|
-
"""Get full Model name - module_name + . + ClassName."""
|
61
|
-
cls = self.__class__
|
62
|
-
return f"{cls.__module__}.{cls.__name__}"
|
63
|
-
|
64
|
-
def inject(self) -> None:
|
65
|
-
"""Injecting metadata from Model.META in params of fields."""
|
66
|
-
metadata = self.__class__.META
|
67
|
-
if bool(metadata):
|
68
|
-
field_attrs = metadata["field_attrs"]
|
69
|
-
for f_name, f_type in self.__dict__.items():
|
70
|
-
if callable(f_type):
|
71
|
-
continue
|
72
|
-
f_type.id = field_attrs[f_name]["id"]
|
73
|
-
f_type.name = field_attrs[f_name]["name"]
|
74
|
-
if "Dyn" in f_type.field_type:
|
75
|
-
msg = (
|
76
|
-
f"Model: `{metadata['full_model_name']}` > "
|
77
|
-
+ f"Field: `{f_name}` => "
|
78
|
-
+ "Dynamic field only for a migrated Model."
|
79
|
-
)
|
80
|
-
raise PanicError(msg)
|
81
|
-
|
82
|
-
# Complect of methods for converting Model to JSON and back.
|
83
|
-
# --------------------------------------------------------------------------
|
84
|
-
def to_dict(self) -> dict[str, Any]:
|
85
|
-
"""Convert object instance to a dictionary."""
|
86
|
-
json_dict: dict[str, Any] = {}
|
87
|
-
for name, data in self.__dict__.items():
|
88
|
-
if not callable(data):
|
89
|
-
json_dict[name] = data.to_dict()
|
90
|
-
return json_dict
|
91
|
-
|
92
|
-
def to_json(self) -> str:
|
93
|
-
"""Convert object instance to a JSON string."""
|
94
|
-
return json.dumps(self.to_dict())
|
95
|
-
|
96
|
-
@classmethod
|
97
|
-
def from_dict(cls, json_dict: dict[str, Any]) -> Any:
|
98
|
-
"""Convert JSON string to a object instance."""
|
99
|
-
obj = cls()
|
100
|
-
for name, data in json_dict.items():
|
101
|
-
obj.__dict__[name] = obj.__dict__[name].__class__.from_dict(data)
|
102
|
-
return obj
|
103
|
-
|
104
|
-
@classmethod
|
105
|
-
def from_json(cls, json_str: str) -> Any:
|
106
|
-
"""Convert JSON string to a object instance."""
|
107
|
-
json_dict = json.loads(json_str)
|
108
|
-
return cls.from_dict(json_dict)
|
109
|
-
|
110
|
-
# --------------------------------------------------------------------------
|
111
|
-
def to_dict_only_value(self) -> dict[str, Any]:
|
112
|
-
"""Convert model.field.value (only the `value` attribute) to a dictionary."""
|
113
|
-
json_dict: dict[str, Any] = {}
|
114
|
-
current_locale = translations.CURRENT_LOCALE
|
115
|
-
for name, data in self.__dict__.items():
|
116
|
-
if callable(data):
|
117
|
-
continue
|
118
|
-
value = data.value
|
119
|
-
if value is not None:
|
120
|
-
group = data.group
|
121
|
-
if group == "date":
|
122
|
-
value = (
|
123
|
-
format_date(
|
124
|
-
date=value,
|
125
|
-
format="short",
|
126
|
-
locale=current_locale,
|
127
|
-
)
|
128
|
-
if data.field_type == "DateField"
|
129
|
-
else format_datetime(
|
130
|
-
datetime=value,
|
131
|
-
format="short",
|
132
|
-
locale=current_locale,
|
133
|
-
)
|
134
|
-
)
|
135
|
-
elif group == "id":
|
136
|
-
value = str(value)
|
137
|
-
elif group == "pass":
|
138
|
-
value = None
|
139
|
-
json_dict[name] = value
|
140
|
-
return json_dict
|
141
|
-
|
142
|
-
def to_json_only_value(self) -> str:
|
143
|
-
"""Convert model.field.value (only the `value` attribute) to a JSON string."""
|
144
|
-
return json.dumps(self.to_dict_only_value())
|
145
|
-
|
146
|
-
@classmethod
|
147
|
-
def from_dict_only_value(cls, json_dict: dict[str, Any]) -> Any:
|
148
|
-
"""Convert JSON string to a object instance."""
|
149
|
-
obj = cls()
|
150
|
-
for name, data in obj.__dict__.items():
|
151
|
-
if callable(data):
|
152
|
-
continue
|
153
|
-
value = json_dict.get(name)
|
154
|
-
if value is not None:
|
155
|
-
group = data.group
|
156
|
-
if group == "date":
|
157
|
-
value = parse(value)
|
158
|
-
elif group == "id":
|
159
|
-
value = ObjectId(value)
|
160
|
-
obj.__dict__[name].value = value
|
161
|
-
return obj
|
162
|
-
|
163
|
-
@classmethod
|
164
|
-
def from_json_only_value(cls, json_str: str) -> Any:
|
165
|
-
"""Convert JSON string to a object instance."""
|
166
|
-
json_dict = json.loads(json_str)
|
167
|
-
return cls.from_dict_only_value(json_dict)
|
168
|
-
|
169
|
-
def refrash_fields_only_value(self, only_value_dict: dict[str, Any]) -> None:
|
170
|
-
"""Partial or complete update a `value` of fields."""
|
171
|
-
for name, data in self.__dict__.items():
|
172
|
-
if callable(data):
|
173
|
-
continue
|
174
|
-
value = only_value_dict.get(name)
|
175
|
-
if value is not None:
|
176
|
-
group = data.group
|
177
|
-
if group == "date":
|
178
|
-
value = parse(value)
|
179
|
-
elif group == "id":
|
180
|
-
value = ObjectId(value)
|
181
|
-
self.__dict__[name].value = value
|
ramifice-0.5.11.dist-info/RECORD
DELETED
@@ -1,85 +0,0 @@
|
|
1
|
-
ramifice/__init__.py,sha256=IuI20h84QWyFftykvte_HLft2iVxwpu0K592NypMwfo,759
|
2
|
-
ramifice/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3
|
-
ramifice/commons/__init__.py,sha256=FTG78sTU0ay0rvmrq5fUmVjL-I-S7wgQq3BLcyqnjrQ,433
|
4
|
-
ramifice/commons/general.py,sha256=SmtJge18Yjz7cpc-KXo238rQl465WtTqzNnuRjHl8qs,5361
|
5
|
-
ramifice/commons/indexes.py,sha256=hAcWKZ9MMgLbRtoQ6Af0b8r-PY0dbEYmMBl8z_d1DRo,3646
|
6
|
-
ramifice/commons/many.py,sha256=jkah1kO1CXWPB0xW0dbMelCFBSirRYkX9a333EcPE_M,9202
|
7
|
-
ramifice/commons/one.py,sha256=uZsgwg_GgA1VMZDPqhRFMmCdtvcv6xsL4DWbCOwGV3w,6730
|
8
|
-
ramifice/commons/tools.py,sha256=ectaILVYCSwNbB0VAys6nIhdsJbwuxAupNvcQfweC88,2366
|
9
|
-
ramifice/commons/unit_manager.py,sha256=4spjvTv29AYSWaIP2A4k9E1vawPmwFau9GFK_yaveb8,4488
|
10
|
-
ramifice/fields/__init__.py,sha256=yRfX7Tvpuh27Ggcx5u9e1RRYK7Wu59EVJYxxetmuP1w,1290
|
11
|
-
ramifice/fields/bool_field.py,sha256=WWubSwsFJZu8b3MviDd2zXnNYOQaYw8toklFNSTVFLA,2072
|
12
|
-
ramifice/fields/choice_float_dyn_field.py,sha256=GMyKWLjNCP7TeQl1rnM3S7GBPd0N0so_CCCYcuGQLZM,3113
|
13
|
-
ramifice/fields/choice_float_field.py,sha256=7YY85Y1Em11z60oXtNqpUE-Ro-doB-3wQl33eKwOR1o,3906
|
14
|
-
ramifice/fields/choice_float_mult_dyn_field.py,sha256=Uq8eyjiOVVL_K__-C5UJCsUcgXdFYMluZBSJatGz528,3176
|
15
|
-
ramifice/fields/choice_float_mult_field.py,sha256=GKGUKARGnEhjzDe2N29QjU7u1TQcsSmpFIbjTPy6nDo,4252
|
16
|
-
ramifice/fields/choice_int_dyn_field.py,sha256=O4cTaFIZdxZgb3AZmDIHrYwavBaG-pf-s3fF8fSeu2I,3107
|
17
|
-
ramifice/fields/choice_int_field.py,sha256=VJi_9Ilp9Vei4qDqii4OSV_xzpZJHmxeYb5Lfxkvf6Y,3894
|
18
|
-
ramifice/fields/choice_int_mult_dyn_field.py,sha256=G4iLbgipjNIuwQjh0mXo04npp7wpDnvVOlb3LmJKUEg,3172
|
19
|
-
ramifice/fields/choice_int_mult_field.py,sha256=J-oRNoPoF-cgAbHlxtVTU7E-OeLf-Z-E2gL2036qhRc,4246
|
20
|
-
ramifice/fields/choice_text_dyn_field.py,sha256=xFAOzdTKzrJg73-7CvNjovj-Dnj0ONmZi-sUz2vvcEI,3103
|
21
|
-
ramifice/fields/choice_text_field.py,sha256=L1j36BX6pKtS661ZSYtrD9tuAjxD2puRGOvrdEBqcS8,4099
|
22
|
-
ramifice/fields/choice_text_mult_dyn_field.py,sha256=HtDd7X70VlIJ2SdCTVr_8dZvw_oPw79QC0YjGaOZQlA,3168
|
23
|
-
ramifice/fields/choice_text_mult_field.py,sha256=UGKbAJQaX1pq0KFJnvgEYYKlrr_eGsaFY2eOA-43NRw,4242
|
24
|
-
ramifice/fields/color_field.py,sha256=NdYey3Og8hh7oK7yDljrG6K8frgqj4C2OTXFnJVAYFQ,3526
|
25
|
-
ramifice/fields/date_field.py,sha256=w875p6JwssKhEZJLBHmC8sE5wArn161rlQi0Zt-qEZo,5214
|
26
|
-
ramifice/fields/date_time_field.py,sha256=OGi-ED-Gm_AWGzczHA1qch59IuWy3KkVIJHQl3OlatU,5249
|
27
|
-
ramifice/fields/email_field.py,sha256=jEIcWi6glmpK3x3os-b-IFxlrwho4uS4uIamprtg2_M,3433
|
28
|
-
ramifice/fields/file_field.py,sha256=nMaVqVD61dH2TYN3ewAcT7xkYCtHuBcl4aSeoCcIDmA,7941
|
29
|
-
ramifice/fields/float_field.py,sha256=o6rkcoYJB0Lyq4GkDxP3v4mUS-nKUgYCxNQkmgbTjlY,4585
|
30
|
-
ramifice/fields/id_field.py,sha256=1_K1pfjYO7mNDs5W2zUHOiB5Y5vw0g02TPoGiBC2IYY,4135
|
31
|
-
ramifice/fields/image_field.py,sha256=yxJLHZKYACoJMp_TrjhCDj1NHTG5uoDC45nD63YI474,12318
|
32
|
-
ramifice/fields/integer_field.py,sha256=O-nddXEn7rkkqB-SgJxLPRTRHmPstrO-IfYiGR_ADe8,4561
|
33
|
-
ramifice/fields/ip_field.py,sha256=tsxdwKd-MhkhnE1F2FmFg67jwh9Q-RvXECv1aG8PitE,3342
|
34
|
-
ramifice/fields/password_field.py,sha256=m3n_qJRRHCtgyBC7nDB0dYBO_82Lp1Ws48d1_jxHA8o,3216
|
35
|
-
ramifice/fields/phone_field.py,sha256=5qZ_rR82M9cuW7Dv-D5d9jDaw7DJp9y60lRB4GEmi4w,3615
|
36
|
-
ramifice/fields/slug_field.py,sha256=9rH1VdxYPoK60QCKHRB91bA3ZmIeIuFmf6WttzB1yTI,2685
|
37
|
-
ramifice/fields/text_field.py,sha256=pa5J1nTBC56JDU3mDyjy1Qofv8FLFUgACkNcZB6cUGQ,4107
|
38
|
-
ramifice/fields/url_field.py,sha256=DTy4B22juav9dzIrqKy3NzM2vuICHvDzIDbzkkyF1C0,3993
|
39
|
-
ramifice/fields/general/__init__.py,sha256=5OE0TwPQjvpB3lBPuEwKrhjR_1ehOWxB98OJP_n32MA,20
|
40
|
-
ramifice/fields/general/choice_group.py,sha256=TBJblwH8mB71wd1z2jcSs28H-zx3JZVBfkk4YCE1-pI,916
|
41
|
-
ramifice/fields/general/date_group.py,sha256=RKockc_X1bYAbpzxTzXdc0kxgx51MK0bjko_j34ixWU,1169
|
42
|
-
ramifice/fields/general/field.py,sha256=Iwjx0idIUIFwcQw4TQEqejKct1EGaaJv1zZ1poSW8lo,1338
|
43
|
-
ramifice/fields/general/file_group.py,sha256=n45KfPzFI_l5hXoKkPDG0Q-0mdC2obExV-3PJ-MN5tA,1071
|
44
|
-
ramifice/fields/general/number_group.py,sha256=AqlCY-t6JHZ2QVBe7mk5nPt6z8M4VJ_RARRlSBoIxms,715
|
45
|
-
ramifice/fields/general/text_group.py,sha256=6GD2Fe6Toz6zZjAAlcy5rPVCAGh6Yn1ltdIrFg9RF18,1057
|
46
|
-
ramifice/models/__init__.py,sha256=h_QQ5rSJNZ-7kmx7wIFd8E8RmUS94b_x4jdwMbq8zm4,15
|
47
|
-
ramifice/models/decorator.py,sha256=U1ukWWq2voEwvKonQAzihqGYVsoyPrOQ2jDXJZ-UcMc,7251
|
48
|
-
ramifice/models/model.py,sha256=Ydz4kpYiEjjhxkiwhJmSIZM--lKe0QE38yL6wh2eITM,7104
|
49
|
-
ramifice/models/pseudo.py,sha256=0PBLHUmoT5eXzIaZtTQ20IaNUPRAuRGGfRWbUypPtfc,6765
|
50
|
-
ramifice/paladins/__init__.py,sha256=PIP3AXI2KBRXNcLJUF0d7ygJ7VLOAxlhb4HRKQ9MGYY,516
|
51
|
-
ramifice/paladins/check.py,sha256=ennDiVAoCZIS3aKBK0eA-Vt8VJQnbIv90be5IFYraFg,7026
|
52
|
-
ramifice/paladins/delete.py,sha256=tw50E98D5eFZ7gHGnh_8ztUB1LeTeWWKZvIcQqlgbF8,3352
|
53
|
-
ramifice/paladins/password.py,sha256=w1XWh3bsncH1VTVjCLxyKI2waxMvltwcsPWW3V9Ib84,3027
|
54
|
-
ramifice/paladins/refrash.py,sha256=fw-9x_NKGzreipBt_F9KF6FTsYm9hSzfq4ubi1FHYrQ,1065
|
55
|
-
ramifice/paladins/save.py,sha256=EG0_v-imCQPax2pJIAXPoQcSL99g8abY2EeGJMvXBW4,3864
|
56
|
-
ramifice/paladins/tools.py,sha256=Xm1RhkV1GX5B6GbyGmJMBzFyDQcenBxcRjlUamIz5pA,2706
|
57
|
-
ramifice/paladins/validation.py,sha256=gcEJXIEPu1g7Z54vl14YTs5rCmxOEYsgQH1usFfyy7k,1730
|
58
|
-
ramifice/paladins/groups/__init__.py,sha256=hpqmWLsYAMvZHAbmMXluQSqLhkHOSTUAgLHyTM1LTYI,472
|
59
|
-
ramifice/paladins/groups/bool_group.py,sha256=oJc9mw9KGrnK_Pj7uXixYYQAJphcXLr_xSQv3PMUlcU,792
|
60
|
-
ramifice/paladins/groups/choice_group.py,sha256=NsOdPMHtnK-ITnSQxEteCeTFhk7MrJJ3wIcDEeOgodU,1791
|
61
|
-
ramifice/paladins/groups/date_group.py,sha256=B9usKKrHX16F1ckik60Xkub1tawgNENSHTk5Rt-K96k,3741
|
62
|
-
ramifice/paladins/groups/file_group.py,sha256=-xgtrLOTlKXc71Mnbu3I_LbYnTEd8OprnhtYcJbaDtg,2932
|
63
|
-
ramifice/paladins/groups/id_group.py,sha256=q5BeoM1e7mZmX0zVgemva9K-9ihJKBrX8kxvMh-uhhQ,1268
|
64
|
-
ramifice/paladins/groups/img_group.py,sha256=RoD_QnW0F0DAzrGQmRi8jMZnWy2IomlFn6A5jTM02iA,5542
|
65
|
-
ramifice/paladins/groups/num_group.py,sha256=6jT7nfIiVoQTlI2UdkcQOlHIDYjllFqSH7Nb87uJgzg,2274
|
66
|
-
ramifice/paladins/groups/pass_group.py,sha256=YU5a-NwohEutoEx2N5JmGfg8uPiYiW0XJ8XYsOih6eA,1859
|
67
|
-
ramifice/paladins/groups/slug_group.py,sha256=joBB5litljbv2h5JKEMzF71s_DKMWH6nzgThLiLZx2E,2307
|
68
|
-
ramifice/paladins/groups/text_group.py,sha256=EiHGuiJKm-A4UrsV4DHoI7whL-LdQCIEvW6jX4YjfCo,4354
|
69
|
-
ramifice/utils/__init__.py,sha256=xixHoOX4ja5jIUZemem1qn4k4aonv3G3Q76azQK_pkU,43
|
70
|
-
ramifice/utils/errors.py,sha256=iuhq7fzpUmsOyeXeg2fJjta8yAuqlXLKsZVMpfUhtHE,1901
|
71
|
-
ramifice/utils/fixtures.py,sha256=qsv9cg06lc82XaRlhI1j5vftmOQTTwOcDXCg_lnpK04,3159
|
72
|
-
ramifice/utils/globals.py,sha256=uR20um3Qg_1SG1t7WyWbpq8kQD-9Mslyr_c1yh5Hw9w,1751
|
73
|
-
ramifice/utils/migration.py,sha256=kx1JX0xSgebtNtoTm_161_MqBw5kpsqCfIsc8wXYc34,11060
|
74
|
-
ramifice/utils/tools.py,sha256=sOKzwnvf6vdTNf9r6PKAdw6aB4undat2Z8tzS3M1GnQ,2733
|
75
|
-
ramifice/utils/translations.py,sha256=rnBoFC4sFuwX5DoWa1EL5MmkfXslbGrezdiwebJ5HUk,4233
|
76
|
-
ramifice/utils/unit.py,sha256=R34gxriT67vI6PmjMIRftNsSP036jwbnsYjxt1Wma48,2454
|
77
|
-
ramifice/utils/mixins/__init__.py,sha256=-UxYokZSlEaqoIs0aPVGtzK2CgN88mTzyhryHEtt0Yo,181
|
78
|
-
ramifice/utils/mixins/add_valid.py,sha256=TLOObedzXNA9eCylfAVbVCqIKE5sV-P5AdIN7avj-GA,407
|
79
|
-
ramifice/utils/mixins/hooks.py,sha256=33jvJRhfnJeL2Hd_YFXk3M_7wjqHaByU2wRjKyboL6s,914
|
80
|
-
ramifice/utils/mixins/indexing.py,sha256=Z0427HoaVRyNmSNN8Fx0mSICgAKV-gDdu3iR5qYUEbs,329
|
81
|
-
ramifice/utils/mixins/json_converter.py,sha256=WhigXyDAV-FfILaZuwvRFRIk0D90Rv3dG5t-mv5fVyc,1107
|
82
|
-
ramifice-0.5.11.dist-info/METADATA,sha256=gTxPqTmy6_69QXkdYgR30QYXrOsgUC5w__zOxNnXukg,21454
|
83
|
-
ramifice-0.5.11.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
84
|
-
ramifice-0.5.11.dist-info/licenses/LICENSE,sha256=LrEL0aTZx90HDwFUQCJutORiDjJL9AnuVvCtspXIqt4,1095
|
85
|
-
ramifice-0.5.11.dist-info/RECORD,,
|
File without changes
|
File without changes
|