ramifice 0.8.25__py3-none-any.whl → 0.8.27__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.
Files changed (58) hide show
  1. ramifice/commons/tools.py +1 -5
  2. ramifice/fields/bool_field.py +13 -3
  3. ramifice/fields/choice_float_dyn_field.py +11 -1
  4. ramifice/fields/choice_float_field.py +15 -3
  5. ramifice/fields/choice_float_mult_dyn_field.py +11 -1
  6. ramifice/fields/choice_float_mult_field.py +15 -3
  7. ramifice/fields/choice_int_dyn_field.py +11 -1
  8. ramifice/fields/choice_int_field.py +15 -3
  9. ramifice/fields/choice_int_mult_dyn_field.py +11 -1
  10. ramifice/fields/choice_int_mult_field.py +15 -3
  11. ramifice/fields/choice_text_dyn_field.py +11 -1
  12. ramifice/fields/choice_text_field.py +15 -3
  13. ramifice/fields/choice_text_mult_dyn_field.py +11 -1
  14. ramifice/fields/choice_text_mult_field.py +15 -3
  15. ramifice/fields/color_field.py +20 -7
  16. ramifice/fields/date_field.py +19 -4
  17. ramifice/fields/date_time_field.py +19 -4
  18. ramifice/fields/email_field.py +19 -5
  19. ramifice/fields/file_field.py +24 -11
  20. ramifice/fields/float_field.py +22 -4
  21. ramifice/fields/general/choice_group.py +1 -3
  22. ramifice/fields/general/date_group.py +1 -2
  23. ramifice/fields/general/field.py +2 -4
  24. ramifice/fields/general/file_group.py +1 -3
  25. ramifice/fields/general/number_group.py +1 -3
  26. ramifice/fields/general/text_group.py +1 -3
  27. ramifice/fields/id_field.py +13 -8
  28. ramifice/fields/image_field.py +25 -15
  29. ramifice/fields/integer_field.py +22 -4
  30. ramifice/fields/ip_field.py +19 -5
  31. ramifice/fields/password_field.py +14 -5
  32. ramifice/fields/phone_field.py +19 -5
  33. ramifice/fields/slug_field.py +14 -3
  34. ramifice/fields/text_field.py +20 -3
  35. ramifice/fields/url_field.py +15 -15
  36. ramifice/models/__init__.py +7 -1
  37. ramifice/models/decorator.py +2 -2
  38. ramifice/models/model.py +5 -7
  39. ramifice/paladins/__init__.py +16 -1
  40. ramifice/paladins/add_valid.py +3 -2
  41. ramifice/paladins/check.py +5 -5
  42. ramifice/paladins/groups/slug_group.py +1 -1
  43. ramifice/paladins/groups/text_group.py +2 -2
  44. ramifice/paladins/hooks.py +8 -2
  45. ramifice/paladins/indexing.py +3 -2
  46. ramifice/paladins/save.py +2 -2
  47. ramifice/paladins/validation.py +9 -9
  48. ramifice/utils/constants.py +1 -1
  49. ramifice/utils/fixtures.py +3 -3
  50. ramifice/utils/migration.py +3 -3
  51. ramifice/utils/tools.py +1 -1
  52. ramifice/utils/translations.py +1 -1
  53. ramifice/utils/unit.py +2 -2
  54. {ramifice-0.8.25.dist-info → ramifice-0.8.27.dist-info}/METADATA +2 -3
  55. ramifice-0.8.27.dist-info/RECORD +83 -0
  56. ramifice-0.8.25.dist-info/RECORD +0 -83
  57. {ramifice-0.8.25.dist-info → ramifice-0.8.27.dist-info}/WHEEL +0 -0
  58. {ramifice-0.8.25.dist-info → ramifice-0.8.27.dist-info}/licenses/LICENSE +0 -0
@@ -168,8 +168,8 @@ class CheckMixin(
168
168
  if img_data is not None:
169
169
  img_data["is_new_img"] = False
170
170
  #
171
- return dict(
172
- data=result_map,
173
- is_valid=not params["is_error_symptom"],
174
- is_update=is_update,
175
- )
171
+ return {
172
+ "data": result_map,
173
+ "is_valid": not params["is_error_symptom"],
174
+ "is_update": is_update,
175
+ }
@@ -66,7 +66,7 @@ class SlugGroupMixin:
66
66
  err_msg = (
67
67
  f"Model: `{params['full_model_name']}` > "
68
68
  + f"Field: `{field_name}` > "
69
- + f"Parameter: `slug_sources` => "
69
+ + "Parameter: `slug_sources` => "
70
70
  + "At least one field should be unique!"
71
71
  )
72
72
  logger.critical(err_msg)
@@ -102,11 +102,11 @@ class TextGroupMixin:
102
102
  # Insert result.
103
103
  if params["is_save"]:
104
104
  if is_multi_language:
105
- mult_lang_text: dict[str, str] = (
105
+ mult_lang_text = (
106
106
  params["curr_doc"][field_name]
107
107
  if params["is_update"]
108
108
  else (
109
- {lang: value for lang in translations.LANGUAGES}
109
+ dict.fromkeys(translations.LANGUAGES)
110
110
  if isinstance(value, str)
111
111
  else {lang: value.get(lang, "- -") for lang in translations.LANGUAGES}
112
112
  )
@@ -2,26 +2,32 @@
2
2
 
3
3
  __all__ = ("HooksMixin",)
4
4
 
5
- from abc import ABCMeta
5
+ from abc import abstractmethod
6
6
 
7
7
 
8
- class HooksMixin(metaclass=ABCMeta):
8
+ class HooksMixin:
9
9
  """A set of abstract methods for creating hooks."""
10
10
 
11
+ @abstractmethod
11
12
  async def pre_create(self) -> None:
12
13
  """Called before a new document is created in the database."""
13
14
 
15
+ @abstractmethod
14
16
  async def post_create(self) -> None:
15
17
  """Called after a new document has been created in the database."""
16
18
 
19
+ @abstractmethod
17
20
  async def pre_update(self) -> None:
18
21
  """Called before updating an existing document in the database."""
19
22
 
23
+ @abstractmethod
20
24
  async def post_update(self) -> None:
21
25
  """Called after an existing document in the database is updated."""
22
26
 
27
+ @abstractmethod
23
28
  async def pre_delete(self) -> None:
24
29
  """Called before deleting an existing document in the database."""
25
30
 
31
+ @abstractmethod
26
32
  async def post_delete(self) -> None:
27
33
  """Called after an existing document in the database has been deleted."""
@@ -2,12 +2,13 @@
2
2
 
3
3
  __all__ = ("IndexMixin",)
4
4
 
5
- from abc import ABCMeta
5
+ from abc import abstractmethod
6
6
 
7
7
 
8
- class IndexMixin(metaclass=ABCMeta):
8
+ class IndexMixin:
9
9
  """Contains the method for indexing the model in the database."""
10
10
 
11
11
  @classmethod
12
+ @abstractmethod
12
13
  async def indexing(cls) -> None:
13
14
  """Set up and start indexing."""
ramifice/paladins/save.py CHANGED
@@ -46,7 +46,7 @@ class SaveMixin:
46
46
  # Create or update a document in database.
47
47
  if result_check["is_update"]:
48
48
  # Update date and time.
49
- checked_data["updated_at"] = datetime.now()
49
+ checked_data["updated_at"] = datetime.now() # noqa: DTZ005
50
50
  # Run hook.
51
51
  await self.pre_update()
52
52
  # Update doc.
@@ -68,7 +68,7 @@ class SaveMixin:
68
68
  refresh_from_mongo_doc(self, mongo_doc)
69
69
  else:
70
70
  # Add date and time.
71
- today = datetime.now()
71
+ today = datetime.now() # noqa: DTZ005
72
72
  checked_data["created_at"] = today
73
73
  checked_data["updated_at"] = today
74
74
  # Run hook.
@@ -31,19 +31,19 @@ class ValidationMixin:
31
31
  if len(field_data.errors) > 0:
32
32
  # title
33
33
  if not is_err:
34
- print(colored("\nERRORS:", "red", attrs=["bold"]))
35
- print(colored("Model: ", "blue", attrs=["bold"]), end="")
36
- print(colored(f"`{self.full_model_name()}`", "blue"))
34
+ print(colored("\nERRORS:", "red", attrs=["bold"])) # noqa: T201
35
+ print(colored("Model: ", "blue", attrs=["bold"]), end="") # noqa: T201
36
+ print(colored(f"`{self.full_model_name()}`", "blue")) # noqa: T201
37
37
  is_err = True
38
38
  # field name
39
- print(colored("Field: ", "green", attrs=["bold"]), end="")
40
- print(colored(f"`{field_name}`:", "green"))
39
+ print(colored("Field: ", "green", attrs=["bold"]), end="") # noqa: T201
40
+ print(colored(f"`{field_name}`:", "green")) # noqa: T201
41
41
  # error messages
42
- print(colored("\n".join(field_data.errors), "red"))
42
+ print(colored("\n".join(field_data.errors), "red")) # noqa: T201
43
43
  if len(self._id.alerts) > 0:
44
44
  # title
45
- print(colored("AlERTS:", "yellow", attrs=["bold"]))
45
+ print(colored("AlERTS:", "yellow", attrs=["bold"])) # noqa: T201
46
46
  # messages
47
- print(colored("\n".join(self._id.alerts), "yellow"), end="\n\n")
47
+ print(colored("\n".join(self._id.alerts), "yellow"), end="\n\n") # noqa: T201
48
48
  else:
49
- print(end="\n\n")
49
+ print(end="\n\n") # noqa: T201
@@ -64,7 +64,7 @@ REGEX: dict[str, re.Pattern] = {
64
64
  "model_name": re.compile(r"^[A-Z][a-zA-Z0-9]{0,24}$"),
65
65
  "color_code": re.compile(
66
66
  r"^(?:#|0x)(?:[a-f0-9]{3}|[a-f0-9]{6}|[a-f0-9]{8})\b|(?:rgb|hsl)a?\([^\)]*\)$",
67
- re.I,
67
+ re.I, # noqa: FURB167
68
68
  ),
69
69
  "password": re.compile(r'^[-._!"`\'#%&,:;<>=@{}~\$\(\)\*\+\/\\\?\[\]\^\|a-zA-Z0-9]{8,256}$'),
70
70
  }
@@ -71,8 +71,8 @@ async def apply_fixture(
71
71
  # If the check fails.
72
72
  if not result_check["is_valid"]:
73
73
  await collection.database.drop_collection(collection.name)
74
- print(colored("\nFIXTURE:", "red", attrs=["bold"]))
75
- print(colored(fixture_path, "blue", attrs=["bold"]))
74
+ print(colored("\nFIXTURE:", "red", attrs=["bold"])) # noqa: T201
75
+ print(colored(fixture_path, "blue", attrs=["bold"])) # noqa: T201
76
76
  inst_model.print_err()
77
77
  msg = f"Fixture `{fixture_name}` failed."
78
78
  logger.critical(msg)
@@ -80,7 +80,7 @@ async def apply_fixture(
80
80
  # Get data for document.
81
81
  checked_data: dict[str, Any] = result_check["data"]
82
82
  # Add date and time.
83
- today = datetime.now()
83
+ today = datetime.now() # noqa: DTZ005
84
84
  checked_data["created_at"] = today
85
85
  checked_data["updated_at"] = today
86
86
  # Run hook.
@@ -172,7 +172,7 @@ class Migration:
172
172
  is_migration_process=True,
173
173
  )
174
174
  if not result_check["is_valid"]:
175
- print(colored("\n!!!>>MIGRATION<<!!!", "red", attrs=["bold"]))
175
+ print(colored("\n!!!>>MIGRATION<<!!!", "red", attrs=["bold"])) # noqa: T201
176
176
  inst_model.print_err()
177
177
  msg: str = "Migration failed."
178
178
  logger.critical(msg)
@@ -188,7 +188,7 @@ class Migration:
188
188
  ):
189
189
  checked_data[field_name] = mongo_doc[field_name]
190
190
  # Update date and time.
191
- checked_data["updated_at"] = datetime.now()
191
+ checked_data["updated_at"] = datetime.now() # noqa: DTZ005
192
192
  # Update the document in the database.
193
193
  await model_collection.replace_one(
194
194
  filter={"_id": checked_data["_id"]},
@@ -197,7 +197,7 @@ class Migration:
197
197
  #
198
198
  # Refresh the dynamic fields data for the current model.
199
199
  for field_name, field_data in metadata["data_dynamic_fields"].items():
200
- if model_state["data_dynamic_fields"].get(field_name, False) == False:
200
+ if model_state["data_dynamic_fields"].get(field_name, False) == False: # noqa: E712
201
201
  model_state["data_dynamic_fields"][field_name] = field_data
202
202
  else:
203
203
  metadata["data_dynamic_fields"][field_name] = model_state[
ramifice/utils/tools.py CHANGED
@@ -37,7 +37,7 @@ def is_password(password: str | None) -> bool:
37
37
 
38
38
  def to_human_size(size: int) -> str:
39
39
  """Convert number of bytes to readable format."""
40
- idx = int(math.floor(math.log(size) / math.log(1024)))
40
+ idx = int(math.floor(math.log(size) / math.log(1024))) # noqa: RUF046
41
41
  size = size if size < 1024 else abs(round(size / pow(1024, idx), 2))
42
42
  order = ["bytes", "KB", "MB", "GB", "TB"][idx]
43
43
  return f"{size} {order}"
@@ -57,7 +57,7 @@ def add_languages(
57
57
  ) -> None:
58
58
  """Add languages."""
59
59
  global DEFAULT_LOCALE, LANGUAGES
60
- if not default_locale in languages:
60
+ if default_locale not in languages:
61
61
  msg = "DEFAULT_LOCALE is not included in the LANGUAGES!"
62
62
  logger.critical(msg)
63
63
  raise PanicError(msg)
ramifice/utils/unit.py CHANGED
@@ -38,10 +38,10 @@ class Unit(JsonMixin):
38
38
  )
39
39
  raise PanicError(msg)
40
40
  if not isinstance(value, (float, int, str)):
41
- msg = "Class: `Unit` > Field: `value` => Not а `float | int | str` type!"
41
+ msg = "Class: `Unit` > Field: `value` => Not a `float | int | str` type!"
42
42
  raise PanicError(msg)
43
43
  if not isinstance(is_delete, bool):
44
- msg = "Class: `Unit` > Field: `is_delete` => Not а `bool` type!"
44
+ msg = "Class: `Unit` > Field: `is_delete` => Not a `bool` type!"
45
45
  raise PanicError(msg)
46
46
 
47
47
  JsonMixin.__init__(self)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ramifice
3
- Version: 0.8.25
3
+ Version: 0.8.27
4
4
  Summary: ORM-pseudo-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/
@@ -105,7 +105,7 @@ Online browsable documentation is available at [https://kebasyaty.github.io/rami
105
105
  [![Ubuntu](https://img.shields.io/badge/Ubuntu-E95420?style=for-the-badge&logo=ubuntu&logoColor=white)](https://github.com/kebasyaty/ramifice/blob/v0/assets/UBUNTU_INSTALL_MONGODB.md)
106
106
  [![Windows](https://img.shields.io/badge/Windows-0078D6?style=for-the-badge&logo=windows&logoColor=white)](https://www.mongodb.com/try/download/community)
107
107
 
108
- 2. Run:
108
+ 1. Run:
109
109
 
110
110
  ```shell
111
111
  # Fedora:
@@ -124,7 +124,6 @@ uv add ramifice
124
124
 
125
125
  3. Add `config` and `public` directories in root of your project:<br>
126
126
  [Download config directory](https://downgit.github.io/#/home?url=https://github.com/kebasyaty/ramifice/tree/main/config "Download config directory")
127
- <br>
128
127
  [Download public directory](https://downgit.github.io/#/home?url=https://github.com/kebasyaty/ramifice/tree/main/public "Download public directory")
129
128
 
130
129
  ## Usage
@@ -0,0 +1,83 @@
1
+ ramifice/__init__.py,sha256=rTkA9TUWsis-q056oslAcalr3rwNChMUcpQX5Q43Pzs,1520
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=D4sRNe9zrG_BD43vcEbnv81YthnzctZznbih6lBCnqM,9424
7
+ ramifice/commons/one.py,sha256=htcrIjwKTegwvLoA9KHVChCLzdwVJW0LZXUGLBMFE64,6979
8
+ ramifice/commons/tools.py,sha256=o0o-0W7VDAMPiEOWF9Du7W7py94fCLFx8KJc7LM6HP4,2423
9
+ ramifice/commons/unit_manager.py,sha256=hDHmn3u0NDeIXxh0iCvaxN_stxtCAJVie-cWAZ6TK88,4968
10
+ ramifice/fields/__init__.py,sha256=hjqCZG_kKsHdHtSd05vHn9SiFpk-YSvKEsVFaXim5Sw,2360
11
+ ramifice/fields/bool_field.py,sha256=d3sKQWMAfEycgtBIhIIov2XVoqLbN8th8i3H7YLrNdg,2769
12
+ ramifice/fields/choice_float_dyn_field.py,sha256=e-i7CtmDVqWzRJJ5Pq4PmI69riHDPx9NX51h2qFsjEE,3912
13
+ ramifice/fields/choice_float_field.py,sha256=4oonFHhUdHCoEr5WTQ75kol0ugK73vrGgyp2sEc1NPI,4891
14
+ ramifice/fields/choice_float_mult_dyn_field.py,sha256=45nr0FoY9roO2pJ0FfzBIMu6ih5cl7_3NyKVwtUAHrA,3979
15
+ ramifice/fields/choice_float_mult_field.py,sha256=lCRFDlftuf8FnQxhw3pw543Aeo45dDJoHJOOlEUrnXc,5261
16
+ ramifice/fields/choice_int_dyn_field.py,sha256=qUAZivbZSmGYhoPo-vu9P0psEjj-ZtUWjmjYv9GY6yc,3904
17
+ ramifice/fields/choice_int_field.py,sha256=QwRt155knw0rK-VHwc6M2GlOyUmqgI2hGyJfjaicMQA,4877
18
+ ramifice/fields/choice_int_mult_dyn_field.py,sha256=QajFttWuw5Z_S_ik48zev83tVIiPOgHjzPFnxmkO_e4,3973
19
+ ramifice/fields/choice_int_mult_field.py,sha256=bA3IzVNivQLJlQlKR9ot4TnaQVAFvGTNLvCYe55UMqE,5253
20
+ ramifice/fields/choice_text_dyn_field.py,sha256=H_BGtTuNNGJdXDZmGGPpi-7c0GtDGJwkyNFbKScLs28,3895
21
+ ramifice/fields/choice_text_field.py,sha256=8oWCn0xX_mk6ZUICq1H-poTEAsTDgHPLQfCAZSNs-xI,5097
22
+ ramifice/fields/choice_text_mult_dyn_field.py,sha256=OrPZ-y2ihcJeLkTWJrcPgMijedq_5czbPEmISg1HdWU,3964
23
+ ramifice/fields/choice_text_mult_field.py,sha256=gw5vWxooWBp0-RbFNTs74_n7Ib_nS2hKjlYzDLgy9RU,5244
24
+ ramifice/fields/color_field.py,sha256=-ju_cJBzKSmcXsFQweePqNmF8VeIyaRJLwvl_ypOuVk,4505
25
+ ramifice/fields/date_field.py,sha256=pmn627RGLojnprr3KAEYWvaF8IZm3YsWFZHBR8CCuYQ,6315
26
+ ramifice/fields/date_time_field.py,sha256=AVtxkvs6MP6GnSQ5chImWETnJ57LEHJinTj05Xg1xiE,6372
27
+ ramifice/fields/email_field.py,sha256=Z1FNIVy6NFcgxYXxsioUfU_kipbMp6iXdxS97woBooU,4445
28
+ ramifice/fields/file_field.py,sha256=dAsOYXPjMNwC_t8jCyoNEwlRAsGEd9V_tiuix0qTukU,9476
29
+ ramifice/fields/float_field.py,sha256=ePOO0GBjDFlWjieRItpVKkUbKeuAagBCeDNvvFCVEJs,5859
30
+ ramifice/fields/id_field.py,sha256=36VroZIgCH6uKuYjjWTXIycZ06ZGy4reLX6FhMUphCI,4757
31
+ ramifice/fields/image_field.py,sha256=jeHzsQtPJObDkKWUfyGagXn3_vKBaG4YXuJyqRYD1Mc,12854
32
+ ramifice/fields/integer_field.py,sha256=p6dkzuTDjuBdi4K43m9-qRQGOXz4zNIz0x2fD1tm-Mk,5833
33
+ ramifice/fields/ip_field.py,sha256=7s-pWIXVol2wWP6q8bEJiK_VyIzGZO17ZROK_GGbOrY,4349
34
+ ramifice/fields/password_field.py,sha256=lKELnyIjlAIJWeCR_3BCa0ZL5R0L73cf9zimigIgN3g,3902
35
+ ramifice/fields/phone_field.py,sha256=9KwTd4lUHYsP2-XzWDnC0ri5reU7imCf51Qqjv_TIqQ,4636
36
+ ramifice/fields/slug_field.py,sha256=wJtyf5LWP5pxw6G91_sYSs02QY7kvLYyB1_99_6gz5o,3552
37
+ ramifice/fields/text_field.py,sha256=fBVxBzHwj7R0TiSXnidqA5XHJdEz16WShT6TGjC-B6g,5299
38
+ ramifice/fields/url_field.py,sha256=O0IG1NKljTCN8AXll0vAQgPE5dXHJPbxrkytI6zG3i0,4348
39
+ ramifice/fields/general/__init__.py,sha256=JzgIDseNQLB_IDwY9-JSiT_bONxvhJmbKl5PhQzTnpE,40
40
+ ramifice/fields/general/choice_group.py,sha256=fdxfUEKavnW3SahtmyXNDsIJ1O67wCqZb0g-qnNc9cc,896
41
+ ramifice/fields/general/date_group.py,sha256=0Y4njV6AboQKCpSpjNRWiO8iJF4EdnVWOvmRz_M_7MY,1185
42
+ ramifice/fields/general/field.py,sha256=8P_k66rSGpY9qfiyRvRcH4VcqmzCy6fphr_BLrf-2N0,1360
43
+ ramifice/fields/general/file_group.py,sha256=HjCww3B6eS9gUmr6AGZTXhHVhS_VBvn0XpbrViWA8a8,986
44
+ ramifice/fields/general/number_group.py,sha256=QvJnnpvWvU5J-99mWk7h-00hW7busClv1eSR_DPll4A,753
45
+ ramifice/fields/general/text_group.py,sha256=y5j_7I-TzOpr6vJpbEFHN1JRc6s0wa6BVSqnHMMmX-4,1077
46
+ ramifice/models/__init__.py,sha256=I4p5Y_oHG9ZLZ3vR44PpCGGvB-C2W7fSQPb5qJsm-VQ,178
47
+ ramifice/models/decorator.py,sha256=2asTgb2rG4lfTciJhrfOI11kk-2wiScLBIbMy9Er3B4,6366
48
+ ramifice/models/model.py,sha256=kexnWtfmQaiGZU2qKeAhuHLxmuIFFe-xHwCULzLs9bc,7639
49
+ ramifice/paladins/__init__.py,sha256=bFr12UzadCCpuIkGSd6reeIeQ5td8W7LfckduP84WXc,1517
50
+ ramifice/paladins/add_valid.py,sha256=c-vIkbbIBC94T4czxkQC40uwNEe6w8wQgNVgu4cjeoY,439
51
+ ramifice/paladins/check.py,sha256=Gdfqb6pvcRwbcJNPXlG15aIZfpWNZJlpA4Yomf8at1c,6940
52
+ ramifice/paladins/delete.py,sha256=k3N2qlaHZLWtFUTqWvtkYaqW9h3uK7ecpLjKr5gfoGE,3690
53
+ ramifice/paladins/hooks.py,sha256=jTOcz5eb3WUpIy21h-CcnsISDDsTgDCWjitszcFxZFE,1057
54
+ ramifice/paladins/indexing.py,sha256=ep6iSUhnH70eaNASr0Kx3yeuRE_i9BEdVUUiJBo4hZE,363
55
+ ramifice/paladins/password.py,sha256=7lZmsl-bBely5zlVz0aCYlC5yf8nHp1YswoFF4CZWBI,3297
56
+ ramifice/paladins/refrash.py,sha256=oS-N1QVwQGwt5lSxS01bpM6ETGuMLV_RFt1u5v2uEds,1221
57
+ ramifice/paladins/save.py,sha256=f91g24hDaifTtZVDCaixWYTAdUj0MTGv10hqT8FNUaE,3747
58
+ ramifice/paladins/tools.py,sha256=8rkWPGrVMJiYN97EZuX52nVFVfB6qa08avYT4v8ohLA,2918
59
+ ramifice/paladins/validation.py,sha256=vJ55g4al-V_aGxFSrnXDwAxjJXWv00Z8ZGexFipRD1c,1890
60
+ ramifice/paladins/groups/__init__.py,sha256=GdIBJaMKz7L8pBKMAA__a4m-p0g0_RlzCcvDLDMMiec,958
61
+ ramifice/paladins/groups/bool_group.py,sha256=X8P4YDh02gNzxTo9rgeCnmnV88jApUPqPLYIkpf5vGg,841
62
+ ramifice/paladins/groups/choice_group.py,sha256=NkD2sKqBkdUMHY36pFdvL4uQ-81LXByRHF_lhCEAI6Y,1848
63
+ ramifice/paladins/groups/date_group.py,sha256=i6beJVv4RpMsSnqZziCLnvKoC43r4lyjsUjyBu_ZBkk,3812
64
+ ramifice/paladins/groups/file_group.py,sha256=vzTfkEKA4GDd3c4opeFbM_teGslYreoAyplvzvzpeCw,3015
65
+ ramifice/paladins/groups/id_group.py,sha256=9iurBTOuhG1_8Wmxc5piTMcUNxAW3H0ZavA1sW7uopY,1321
66
+ ramifice/paladins/groups/img_group.py,sha256=yH1cNAZbRnc5l67HCsjLNf2cR0L4LGasuBMOhCOP4GA,6171
67
+ ramifice/paladins/groups/num_group.py,sha256=UtpmYELsNyooiOEIAhSaRuTxYr_FrNpqq9KqAflX2aU,2349
68
+ ramifice/paladins/groups/pass_group.py,sha256=54kvAyoUCEjujTw0Dh6oUrtv3RU80sWEem_b-3Ytv0k,1920
69
+ ramifice/paladins/groups/slug_group.py,sha256=sf-9CebDLoCDsaxyPVJKMhi6D_tWFeg3ET8Qk5E8pU8,2505
70
+ ramifice/paladins/groups/text_group.py,sha256=TWvUxFctwDtXSJQL_E4TvHX1Yh-cDx5MJLGLAJyC6Xc,4478
71
+ ramifice/utils/__init__.py,sha256=lAD90nw2VfGSuf0SLjOkeFScBPmc48XFvecueAfq73w,468
72
+ ramifice/utils/constants.py,sha256=zDVG2D8u0UMNl1Ik90PhZCdxjmK81uwqxosorersbXE,2630
73
+ ramifice/utils/errors.py,sha256=eEV7-aVR0U19vKqTd9JRHFJXcOv6N1HtXSzqeQpdciE,2796
74
+ ramifice/utils/fixtures.py,sha256=8DqsTyX1yLIk04bYrKJHGojTc7974sEhQnsc6XVXe9M,3379
75
+ ramifice/utils/migration.py,sha256=0XMdHl1K0Akt5RxsRB_aUzN4VvN2t2yu3O-jSpFh79A,11504
76
+ ramifice/utils/mixins.py,sha256=XSkxJllqsMxN7xcP_9kn3-GRS4a1l_QQpFOlD3e-tIM,1123
77
+ ramifice/utils/tools.py,sha256=EKNJAV9Ch17IrmghLcu7-I69gDNkDSqPepG9GKU7WkA,3163
78
+ ramifice/utils/translations.py,sha256=EWITTDd4uXukRubOchqGwNjmZWt5HxoxRgq_kKeGsR8,4646
79
+ ramifice/utils/unit.py,sha256=Z32YjftbhNiuZTAQaM9-2ILxkfYcNz4nQ-1MFr8Jjek,2548
80
+ ramifice-0.8.27.dist-info/METADATA,sha256=ZVCIlIENRsAwjiVxjKUarX6apkD2gmTATwXy8h64A2c,21081
81
+ ramifice-0.8.27.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
82
+ ramifice-0.8.27.dist-info/licenses/LICENSE,sha256=LrEL0aTZx90HDwFUQCJutORiDjJL9AnuVvCtspXIqt4,1095
83
+ ramifice-0.8.27.dist-info/RECORD,,
@@ -1,83 +0,0 @@
1
- ramifice/__init__.py,sha256=rTkA9TUWsis-q056oslAcalr3rwNChMUcpQX5Q43Pzs,1520
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=D4sRNe9zrG_BD43vcEbnv81YthnzctZznbih6lBCnqM,9424
7
- ramifice/commons/one.py,sha256=htcrIjwKTegwvLoA9KHVChCLzdwVJW0LZXUGLBMFE64,6979
8
- ramifice/commons/tools.py,sha256=wBnJFibq3jW09vXywnP3MFGWCb2iLxWeDfwWBKf2b7g,2461
9
- ramifice/commons/unit_manager.py,sha256=hDHmn3u0NDeIXxh0iCvaxN_stxtCAJVie-cWAZ6TK88,4968
10
- ramifice/fields/__init__.py,sha256=hjqCZG_kKsHdHtSd05vHn9SiFpk-YSvKEsVFaXim5Sw,2360
11
- ramifice/fields/bool_field.py,sha256=ehJIGDoj4hLgDPcV5iNlC0FBDE2PNoK6sQsh7lIunDc,2382
12
- ramifice/fields/choice_float_dyn_field.py,sha256=JvZHRUvCO7aKof49fNSIsyA6UWOj3pxYM4h3E28yj6g,3453
13
- ramifice/fields/choice_float_field.py,sha256=t2RZ14wySastdvAkEpG-IdRa5NqC-ccMHbLB7xsN0QA,4299
14
- ramifice/fields/choice_float_mult_dyn_field.py,sha256=Ryii6MGPN8ZxKNSXPa4YFk3Zkyf5EmBfnYFKNGG62KA,3520
15
- ramifice/fields/choice_float_mult_field.py,sha256=cSz2WkXfFOc4yia9eF54nK983Rfl5EnQVh7gXFoCZLg,4669
16
- ramifice/fields/choice_int_dyn_field.py,sha256=vHJIMfaQ_U4VIyGBU9A_mVEMql9qmQ9taaC0ptWnlLE,3445
17
- ramifice/fields/choice_int_field.py,sha256=WN3v6bZ09qatLDiTG_t03wi7oNzgWfKIBv9aC3UOBUY,4285
18
- ramifice/fields/choice_int_mult_dyn_field.py,sha256=BS619QX9nGcSxglcu_rKFftkM0OulL6lss_GOOXZIwM,3514
19
- ramifice/fields/choice_int_mult_field.py,sha256=L1yuxBN_Z2t86dhWhAuHYKO68KgHExXRLwW01sfK22A,4661
20
- ramifice/fields/choice_text_dyn_field.py,sha256=F1mQVY6AmzVCx39DL9PKIl2tPkZPyF845zSpbuHsCyY,3436
21
- ramifice/fields/choice_text_field.py,sha256=713z-5ml2dKmvKT0R75dgwtgoeZlUjPbXPpEXc453EY,4505
22
- ramifice/fields/choice_text_mult_dyn_field.py,sha256=JTVxazJ12IHXSOdeUPW6kZkY_0rGh3iQt1omuMFdo4U,3505
23
- ramifice/fields/choice_text_mult_field.py,sha256=liwlu6oMfG22OU_3Rg74DUPmFgRnwO09MDRncuIg36c,4652
24
- ramifice/fields/color_field.py,sha256=N0no1wsVi1cYKipO7ZYsiVYIIn_yIpk-_Gfo4yCzrck,3911
25
- ramifice/fields/date_field.py,sha256=wxOHf9cvPA-0V767U_9mBzwtgMIdFeZii_867IOcmTI,5688
26
- ramifice/fields/date_time_field.py,sha256=dYKQvPN3uZ0vD5MfNe5almARze3VMAILWjgGy6ZDNBc,5727
27
- ramifice/fields/email_field.py,sha256=BW6bhngLl9adpajxQscGys7k7M5AVg2YUqG2_VeGrj4,3824
28
- ramifice/fields/file_field.py,sha256=eM4FSxcEIuHxcw79-ZvdDfQmHvNk8O4T1Z-hrNAXLXE,8734
29
- ramifice/fields/float_field.py,sha256=2xXA9xaXe54zcL6rIe6wbFUOm0uuvNH9kDNoZ5M9xyU,5057
30
- ramifice/fields/id_field.py,sha256=QUYwdEpzIJceqCfn04SkwQwqQl5BR-qprhuWrN74n8E,4492
31
- ramifice/fields/image_field.py,sha256=I8aMxb45KC3uCkNuFhb8D1GGlUvQYfAsLmyYQqLVUpA,12254
32
- ramifice/fields/integer_field.py,sha256=hdOEdlr2-xOEnf_mWpb3LPYqujiexAUyWVNdHk78y14,5031
33
- ramifice/fields/ip_field.py,sha256=WzmZ8N5yL6KkzPfHiISCE4JYQK5g1VXOO6nFyFMSFC4,3728
34
- ramifice/fields/password_field.py,sha256=U6uxWRxBtnW54J1Tq1T3EJZ0RvnGVkJbkPWUsihHqs4,3557
35
- ramifice/fields/phone_field.py,sha256=4CE8HJS6Zjwlu9xNDPdvqWYoMIGn7MbABQ3CqwtALRM,4014
36
- ramifice/fields/slug_field.py,sha256=CztvWcSIM_koGuM_Sml3-Sf0E3zfJkhvARuK537ab1E,3023
37
- ramifice/fields/text_field.py,sha256=sTjqY2SGT9ehybXbLR49hHn1xy0L5TCLkV8TksBdvIY,4478
38
- ramifice/fields/url_field.py,sha256=VQZ1NhZdUXnM3bnz5vgcnzYP6rmrSWVMfPmnvEfOk8c,4376
39
- ramifice/fields/general/__init__.py,sha256=JzgIDseNQLB_IDwY9-JSiT_bONxvhJmbKl5PhQzTnpE,40
40
- ramifice/fields/general/choice_group.py,sha256=RkYEuEl6wSazqhq2aDhUoKzKTEd54BgItpRy69rH93o,928
41
- ramifice/fields/general/date_group.py,sha256=9fgLgyKhfVEwlCcQ87uRInmvWhwMoyfB5dT3Tq3wCPM,1229
42
- ramifice/fields/general/field.py,sha256=tBU-9l_w1LW1EVRvu0qJn1ySk5y3BzzaUSeStIbMEg4,1392
43
- ramifice/fields/general/file_group.py,sha256=97JqyUCKYGtvQfNOuUjOa5SIMuQ4V6I-rpmM5UDmS1E,1032
44
- ramifice/fields/general/number_group.py,sha256=6Canht6VXXzp2lF-6R7uoWXbPufrjceYP74btOyzmzA,785
45
- ramifice/fields/general/text_group.py,sha256=ofWj1d-9pKkbxARpXa2xQ6ANY3fiLtJUaFPp0vsDiT4,1123
46
- ramifice/models/__init__.py,sha256=h_QQ5rSJNZ-7kmx7wIFd8E8RmUS94b_x4jdwMbq8zm4,15
47
- ramifice/models/decorator.py,sha256=uIjJ3uww0Ac7ufFn4VMqlA_8eP1I6oIhz5gRnDnH2w8,6396
48
- ramifice/models/model.py,sha256=qH21L7sDmJxbMz5UygHPCJhWgL52snFV_BRN-GchV00,7711
49
- ramifice/paladins/__init__.py,sha256=4OSEBIPXEXFbQZucz3_eog4jEBgAvNojjiwEHKcVYns,859
50
- ramifice/paladins/add_valid.py,sha256=NbRDEjetY0Pp3qoLzM5QUYI8ydkiXav_iOnqJUIwcRw,430
51
- ramifice/paladins/check.py,sha256=UHGlyZqZVq200Iv7BpRphf8LfREzV3X5EkdoqSuDqsg,6935
52
- ramifice/paladins/delete.py,sha256=k3N2qlaHZLWtFUTqWvtkYaqW9h3uK7ecpLjKr5gfoGE,3690
53
- ramifice/paladins/hooks.py,sha256=oZXO2v9zsEzpf2w3L04YjigGKyk6c8PzCWBneqGi2CQ,943
54
- ramifice/paladins/indexing.py,sha256=pQGKZFmYougPJwZRVqDINvcEQEcYsTCjAsNMMhmwrsU,354
55
- ramifice/paladins/password.py,sha256=7lZmsl-bBely5zlVz0aCYlC5yf8nHp1YswoFF4CZWBI,3297
56
- ramifice/paladins/refrash.py,sha256=oS-N1QVwQGwt5lSxS01bpM6ETGuMLV_RFt1u5v2uEds,1221
57
- ramifice/paladins/save.py,sha256=Ylmf20iZU9IwR0kE9zNlJVUXxjb9BckP9ifwRqCTJAg,3715
58
- ramifice/paladins/tools.py,sha256=8rkWPGrVMJiYN97EZuX52nVFVfB6qa08avYT4v8ohLA,2918
59
- ramifice/paladins/validation.py,sha256=3x8WUR0bTDkzJj41mEZyKc6brEmNukKpy0fc0NsniwQ,1764
60
- ramifice/paladins/groups/__init__.py,sha256=GdIBJaMKz7L8pBKMAA__a4m-p0g0_RlzCcvDLDMMiec,958
61
- ramifice/paladins/groups/bool_group.py,sha256=X8P4YDh02gNzxTo9rgeCnmnV88jApUPqPLYIkpf5vGg,841
62
- ramifice/paladins/groups/choice_group.py,sha256=NkD2sKqBkdUMHY36pFdvL4uQ-81LXByRHF_lhCEAI6Y,1848
63
- ramifice/paladins/groups/date_group.py,sha256=i6beJVv4RpMsSnqZziCLnvKoC43r4lyjsUjyBu_ZBkk,3812
64
- ramifice/paladins/groups/file_group.py,sha256=vzTfkEKA4GDd3c4opeFbM_teGslYreoAyplvzvzpeCw,3015
65
- ramifice/paladins/groups/id_group.py,sha256=9iurBTOuhG1_8Wmxc5piTMcUNxAW3H0ZavA1sW7uopY,1321
66
- ramifice/paladins/groups/img_group.py,sha256=yH1cNAZbRnc5l67HCsjLNf2cR0L4LGasuBMOhCOP4GA,6171
67
- ramifice/paladins/groups/num_group.py,sha256=UtpmYELsNyooiOEIAhSaRuTxYr_FrNpqq9KqAflX2aU,2349
68
- ramifice/paladins/groups/pass_group.py,sha256=54kvAyoUCEjujTw0Dh6oUrtv3RU80sWEem_b-3Ytv0k,1920
69
- ramifice/paladins/groups/slug_group.py,sha256=aakQpNoAcEFppRczlZgnP4-u9_7-Mb0RAWKhSGmo0Ig,2506
70
- ramifice/paladins/groups/text_group.py,sha256=PzFuRaHQzfsboGOOGKsxuqazN6We5u9TudB0-k1v0Ow,4505
71
- ramifice/utils/__init__.py,sha256=lAD90nw2VfGSuf0SLjOkeFScBPmc48XFvecueAfq73w,468
72
- ramifice/utils/constants.py,sha256=Wu_MyXvPpNonBbdgCmETLvMsZavyNXQ1IW9RXS9CMTA,2613
73
- ramifice/utils/errors.py,sha256=eEV7-aVR0U19vKqTd9JRHFJXcOv6N1HtXSzqeQpdciE,2796
74
- ramifice/utils/fixtures.py,sha256=n_EZ53uf4wKU1Erk9u58v0C1o5oqtBtnVe7JOJtH_VA,3335
75
- ramifice/utils/migration.py,sha256=Oo0Zjvje8YOR1szTUL5dn6trnb5oU41u6aveDNmpIvI,11460
76
- ramifice/utils/mixins.py,sha256=XSkxJllqsMxN7xcP_9kn3-GRS4a1l_QQpFOlD3e-tIM,1123
77
- ramifice/utils/tools.py,sha256=EPFINdgAJgewwQ9OErLEX8_z-_soQckyX7FsA7eRvyQ,3147
78
- ramifice/utils/translations.py,sha256=XlMcTRnDDxABxkBbFQY6Lg96IDuYoJUVSvPPWdeZNe8,4646
79
- ramifice/utils/unit.py,sha256=7alJuqY6vmYVZtumND6yMSJQDgarqMdRHXTyC6ULh4M,2550
80
- ramifice-0.8.25.dist-info/METADATA,sha256=Pg_YC_1bQVetxYELzYUeIUdVWe9u0MbnZx_f_CuTNOk,21089
81
- ramifice-0.8.25.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
82
- ramifice-0.8.25.dist-info/licenses/LICENSE,sha256=LrEL0aTZx90HDwFUQCJutORiDjJL9AnuVvCtspXIqt4,1095
83
- ramifice-0.8.25.dist-info/RECORD,,