python-base-toolkit 1.0.0__tar.gz → 1.0.2__tar.gz

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 (51) hide show
  1. {python_base_toolkit-1.0.0/python_base_toolkit.egg-info → python_base_toolkit-1.0.2}/PKG-INFO +2 -1
  2. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/pyproject.toml +2 -1
  3. python_base_toolkit-1.0.2/python_base_toolkit/base_structures/base_pydantic_model.py +38 -0
  4. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit/utils/data_serialization.py +3 -0
  5. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2/python_base_toolkit.egg-info}/PKG-INFO +2 -1
  6. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit.egg-info/SOURCES.txt +1 -0
  7. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit.egg-info/requires.txt +1 -0
  8. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/LICENSE +0 -0
  9. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/MANIFEST.in +0 -0
  10. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/README.md +0 -0
  11. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/Taskfile.yml +0 -0
  12. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit/__init__.py +0 -0
  13. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit/base_structures/__init__.py +0 -0
  14. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit/base_structures/base_enum.py +4 -4
  15. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit/ci/task_files/default.yml +0 -0
  16. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit/ci/task_files/dependencies.yml +0 -0
  17. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit/ci/task_files/deploy.yml +0 -0
  18. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit/ci/task_files/docker.yml +0 -0
  19. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit/ci/task_files/includes.yml +0 -0
  20. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit/ci/task_files/install.yml +0 -0
  21. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit/ci/task_files/lint.yml +0 -0
  22. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit/ci/task_files/vars.yml +0 -0
  23. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit/consts/__init__.py +0 -0
  24. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit/consts/operating_system.py +0 -0
  25. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit/consts/units/__init__.py +0 -0
  26. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit/consts/units/binary_units.py +0 -0
  27. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit/consts/units/time_units.py +0 -0
  28. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit/decorators/__init__.py +0 -0
  29. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit/decorators/telemetry.py +0 -0
  30. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit/decorators/timer.py +0 -0
  31. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit/instances/__init__.py +0 -0
  32. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit/instances/instance_manager.py +0 -0
  33. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit/scripts/__init__.py +0 -0
  34. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit/scripts/remove_build_files.py +0 -0
  35. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit/utils/__init__.py +0 -0
  36. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit/utils/date_time.py +0 -0
  37. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit/utils/execute.py +0 -0
  38. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit/utils/file_utils.py +0 -0
  39. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit/utils/generate_id.py +0 -0
  40. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit/utils/logo.py +0 -0
  41. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit/utils/network.py +0 -0
  42. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit/utils/path_utils.py +0 -0
  43. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit/utils/pretty_print.py +0 -0
  44. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit/utils/pycache.py +0 -0
  45. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit/utils/random_utils.py +0 -0
  46. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit/utils/shorten_url.py +0 -0
  47. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit/utils/venv_details.py +0 -0
  48. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit.egg-info/dependency_links.txt +0 -0
  49. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit.egg-info/not-zip-safe +0 -0
  50. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/python_base_toolkit.egg-info/top_level.txt +0 -0
  51. {python_base_toolkit-1.0.0 → python_base_toolkit-1.0.2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-base-toolkit
3
- Version: 1.0.0
3
+ Version: 1.0.2
4
4
  Summary: A Python package for managing pytest plugins.
5
5
  Author: Avi Zaguri
6
6
  License: MIT
@@ -22,6 +22,7 @@ Requires-Dist: custom-python-logger>=2.0.11
22
22
  Requires-Dist: pandas>=2.3.3
23
23
  Requires-Dist: pathlib>=1.0.1
24
24
  Requires-Dist: pre-commit>=4.5.0
25
+ Requires-Dist: pydantic>=2.12.5
25
26
  Requires-Dist: pyfiglet>=1.0.4
26
27
  Requires-Dist: python-dotenv>=1.2.1
27
28
  Requires-Dist: pyyaml>=6.0.3
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "python-base-toolkit"
7
- version = "1.0.0"
7
+ version = "1.0.2"
8
8
  description = "A Python package for managing pytest plugins."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.12"
@@ -27,6 +27,7 @@ dependencies = [
27
27
  "pandas>=2.3.3",
28
28
  "pathlib>=1.0.1",
29
29
  "pre-commit>=4.5.0",
30
+ "pydantic>=2.12.5",
30
31
  "pyfiglet>=1.0.4",
31
32
  "python-dotenv>=1.2.1",
32
33
  "pyyaml>=6.0.3",
@@ -0,0 +1,38 @@
1
+ from typing import Any, TypeVar
2
+ from pydantic import BaseModel
3
+
4
+ T = TypeVar("T", bound="PydanticMixin")
5
+
6
+
7
+ class BasePydanticModel(BaseModel):
8
+ """Mixin to add Enum-like utility methods to Pydantic BaseModels."""
9
+
10
+ def __str__(self) -> str:
11
+ return f"{self.__class__.__name__}({self.model_dump()})"
12
+
13
+ def to_dict(self, **kwargs) -> dict[str, Any]:
14
+ """Wrapper for model_dump."""
15
+ return self.model_dump(**kwargs)
16
+
17
+ def to_json(self, **kwargs) -> str:
18
+ """Wrapper for model_dump_json."""
19
+ return self.model_dump_json(**kwargs)
20
+
21
+ def values(self) -> list[Any]:
22
+ """Returns a list of the current instance's field values."""
23
+ return list(self.model_dump().values())
24
+
25
+ @classmethod
26
+ def field_names(cls) -> list[str]:
27
+ """Returns a list of all field names defined in the model."""
28
+ return list(cls.model_fields.keys())
29
+
30
+ @classmethod
31
+ def has_field(cls, name: str) -> bool:
32
+ """Checks if a field name exists in the model definition."""
33
+ return name in cls.model_fields
34
+
35
+ @classmethod
36
+ def to_schema_dict(cls) -> dict[str, Any]:
37
+ """Returns the JSON schema of the model as a dictionary."""
38
+ return cls.model_json_schema()
@@ -8,11 +8,14 @@ from typing import Any
8
8
 
9
9
  import pandas as pd
10
10
  from custom_python_logger import get_logger
11
+ from pydantic import BaseModel
11
12
 
12
13
  logger = get_logger(__name__)
13
14
 
14
15
 
15
16
  def default_serialize(obj: object) -> object:
17
+ if isinstance(obj, BaseModel):
18
+ return obj.model_dump()
16
19
  if isinstance(obj, type):
17
20
  return obj.__name__
18
21
  if is_dataclass(obj) and not isinstance(obj, type):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-base-toolkit
3
- Version: 1.0.0
3
+ Version: 1.0.2
4
4
  Summary: A Python package for managing pytest plugins.
5
5
  Author: Avi Zaguri
6
6
  License: MIT
@@ -22,6 +22,7 @@ Requires-Dist: custom-python-logger>=2.0.11
22
22
  Requires-Dist: pandas>=2.3.3
23
23
  Requires-Dist: pathlib>=1.0.1
24
24
  Requires-Dist: pre-commit>=4.5.0
25
+ Requires-Dist: pydantic>=2.12.5
25
26
  Requires-Dist: pyfiglet>=1.0.4
26
27
  Requires-Dist: python-dotenv>=1.2.1
27
28
  Requires-Dist: pyyaml>=6.0.3
@@ -12,6 +12,7 @@ python_base_toolkit.egg-info/requires.txt
12
12
  python_base_toolkit.egg-info/top_level.txt
13
13
  python_base_toolkit/base_structures/__init__.py
14
14
  python_base_toolkit/base_structures/base_enum.py
15
+ python_base_toolkit/base_structures/base_pydantic_model.py
15
16
  python_base_toolkit/ci/task_files/default.yml
16
17
  python_base_toolkit/ci/task_files/dependencies.yml
17
18
  python_base_toolkit/ci/task_files/deploy.yml
@@ -4,6 +4,7 @@ custom-python-logger>=2.0.11
4
4
  pandas>=2.3.3
5
5
  pathlib>=1.0.1
6
6
  pre-commit>=4.5.0
7
+ pydantic>=2.12.5
7
8
  pyfiglet>=1.0.4
8
9
  python-dotenv>=1.2.1
9
10
  pyyaml>=6.0.3
@@ -21,6 +21,10 @@ class EnumMixin:
21
21
  def to_dict(cls: type[E]) -> dict:
22
22
  return {member.name: member.value for member in cls}
23
23
 
24
+ @classmethod
25
+ def to_json(cls) -> str:
26
+ return json.dumps(cls.to_dict())
27
+
24
28
  @classmethod
25
29
  def names(cls: type[E]) -> list[str]:
26
30
  return [c.name for c in cls]
@@ -41,10 +45,6 @@ class EnumMixin:
41
45
  def has_value(cls: type[E], value: Any) -> bool:
42
46
  return any(member.value == value for member in cls)
43
47
 
44
- @classmethod
45
- def to_json(cls) -> str:
46
- return json.dumps(cls.to_dict())
47
-
48
48
 
49
49
  class BaseEnum(EnumMixin, Enum):
50
50
  pass