adiumentum 0.3.1__tar.gz → 0.3.3__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.
- {adiumentum-0.3.1 → adiumentum-0.3.3}/PKG-INFO +1 -1
- {adiumentum-0.3.1 → adiumentum-0.3.3}/pyproject.toml +1 -1
- adiumentum-0.3.3/src/adiumentum/paths_manager.py +67 -0
- {adiumentum-0.3.1 → adiumentum-0.3.3}/src/adiumentum/pydantic_extensions.py +16 -9
- adiumentum-0.3.1/src/adiumentum/paths_manager.py +0 -19
- {adiumentum-0.3.1 → adiumentum-0.3.3}/README.md +0 -0
- {adiumentum-0.3.1 → adiumentum-0.3.3}/src/adiumentum/__init__.py +0 -0
- {adiumentum-0.3.1 → adiumentum-0.3.3}/src/adiumentum/color.py +0 -0
- {adiumentum-0.3.1 → adiumentum-0.3.3}/src/adiumentum/comparison.py +0 -0
- {adiumentum-0.3.1 → adiumentum-0.3.3}/src/adiumentum/converters.py +0 -0
- {adiumentum-0.3.1 → adiumentum-0.3.3}/src/adiumentum/dependency_sorting.py +0 -0
- {adiumentum-0.3.1 → adiumentum-0.3.3}/src/adiumentum/display.py +0 -0
- {adiumentum-0.3.1 → adiumentum-0.3.3}/src/adiumentum/elementary_types.py +0 -0
- {adiumentum-0.3.1 → adiumentum-0.3.3}/src/adiumentum/exceptions.py +0 -0
- {adiumentum-0.3.1 → adiumentum-0.3.3}/src/adiumentum/file_modification_time.py +0 -0
- {adiumentum-0.3.1 → adiumentum-0.3.3}/src/adiumentum/frozendict.py +0 -0
- {adiumentum-0.3.1 → adiumentum-0.3.3}/src/adiumentum/functional.py +0 -0
- {adiumentum-0.3.1 → adiumentum-0.3.3}/src/adiumentum/io_utils.py +0 -0
- {adiumentum-0.3.1 → adiumentum-0.3.3}/src/adiumentum/markers.py +0 -0
- {adiumentum-0.3.1 → adiumentum-0.3.3}/src/adiumentum/merge.py +0 -0
- {adiumentum-0.3.1 → adiumentum-0.3.3}/src/adiumentum/numerical.py +0 -0
- {adiumentum-0.3.1 → adiumentum-0.3.3}/src/adiumentum/performance_logging.py +0 -0
- {adiumentum-0.3.1 → adiumentum-0.3.3}/src/adiumentum/pydantic_extensions.md +0 -0
- {adiumentum-0.3.1 → adiumentum-0.3.3}/src/adiumentum/string_utils.py +0 -0
- {adiumentum-0.3.1 → adiumentum-0.3.3}/src/adiumentum/timestamping.py +0 -0
- {adiumentum-0.3.1 → adiumentum-0.3.3}/src/adiumentum/typing_utils.py +0 -0
@@ -0,0 +1,67 @@
|
|
1
|
+
from abc import ABC, abstractmethod
|
2
|
+
from pathlib import Path
|
3
|
+
from typing import Self
|
4
|
+
|
5
|
+
from pydantic import BaseModel
|
6
|
+
|
7
|
+
|
8
|
+
# class PathsManager:
|
9
|
+
# @abstractmethod
|
10
|
+
# def setup(self) -> None: ...
|
11
|
+
|
12
|
+
# @classmethod
|
13
|
+
# @abstractmethod
|
14
|
+
# def auto(cls, root_dir: Path): ...
|
15
|
+
|
16
|
+
# @classmethod
|
17
|
+
# @abstractmethod
|
18
|
+
# def read(cls, config_file_path: Path) -> Self: ...
|
19
|
+
|
20
|
+
# @abstractmethod
|
21
|
+
# def write(self, config_file_path: Path) -> None: ...
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
class PathsManager(BaseModel, ABC):
|
26
|
+
@classmethod
|
27
|
+
@abstractmethod
|
28
|
+
def create(cls, *args, **kwargs) -> Self:
|
29
|
+
"""
|
30
|
+
Create directories first if they do not already exist.
|
31
|
+
"""
|
32
|
+
...
|
33
|
+
|
34
|
+
@classmethod
|
35
|
+
@abstractmethod
|
36
|
+
def auto(cls, root_dir: Path, **kwargs) -> Self:
|
37
|
+
"""
|
38
|
+
Create directories and files in the default location if they do not alreay exist.
|
39
|
+
"""
|
40
|
+
...
|
41
|
+
|
42
|
+
|
43
|
+
@classmethod
|
44
|
+
@abstractmethod
|
45
|
+
def read(cls, config_file_path: Path) -> Self:
|
46
|
+
...
|
47
|
+
|
48
|
+
@abstractmethod
|
49
|
+
def write(self, config_file_path: Path) -> None:
|
50
|
+
...
|
51
|
+
|
52
|
+
@staticmethod
|
53
|
+
def ensure_file_exists(p: Path, content_if_empty: str = "") -> Path:
|
54
|
+
if not p.exists():
|
55
|
+
p.touch()
|
56
|
+
if content_if_empty:
|
57
|
+
p.write_text(content_if_empty)
|
58
|
+
return p
|
59
|
+
|
60
|
+
@staticmethod
|
61
|
+
def ensure_directory_exists(p: Path) -> Path:
|
62
|
+
for parent in p.parents:
|
63
|
+
if not parent.exists():
|
64
|
+
parent.mkdir()
|
65
|
+
if not p.exists():
|
66
|
+
p.mkdir()
|
67
|
+
return p
|
@@ -67,7 +67,6 @@ class AbstractCustom(ABC):
|
|
67
67
|
json_schema = handler.resolve_ref_schema(json_schema)
|
68
68
|
return json_schema
|
69
69
|
|
70
|
-
@abstractmethod
|
71
70
|
def __init__(self, *args, **kwargs) -> None:
|
72
71
|
TypeError(f"Use `model_validate` to instantiate {self.__class__.__name__}")
|
73
72
|
|
@@ -97,13 +96,14 @@ class AbstractCustom(ABC):
|
|
97
96
|
return set()
|
98
97
|
|
99
98
|
@classmethod
|
100
|
-
|
101
|
-
|
99
|
+
def model_construct(cls, _fields_set: set[str] | None = None, **values: Any) -> Self:
|
100
|
+
raise NotImplementedError
|
102
101
|
|
103
|
-
@abstractmethod
|
104
102
|
def model_copy(
|
105
103
|
self, *, update: Mapping[str, Any] | None = None, deep: bool = False
|
106
|
-
) -> Self:
|
104
|
+
) -> Self:
|
105
|
+
return self.__class__.model_validate(self.model_dump())
|
106
|
+
|
107
107
|
|
108
108
|
def model_dump(
|
109
109
|
self,
|
@@ -258,7 +258,6 @@ class AbstractCustom(ABC):
|
|
258
258
|
return cls.post_validation_hook(validated)
|
259
259
|
|
260
260
|
@classmethod
|
261
|
-
@abstractmethod
|
262
261
|
def model_validate_strings(
|
263
262
|
cls,
|
264
263
|
obj: Any,
|
@@ -268,17 +267,25 @@ class AbstractCustom(ABC):
|
|
268
267
|
context: Any | None = None,
|
269
268
|
by_alias: bool | None = None,
|
270
269
|
by_name: bool | None = None,
|
271
|
-
) -> Self:
|
270
|
+
) -> Self:
|
271
|
+
return cls.model_validate(
|
272
|
+
obj,
|
273
|
+
strict=strict,
|
274
|
+
extra=extra,
|
275
|
+
context=context,
|
276
|
+
by_alias=by_alias,
|
277
|
+
by_name=by_name,
|
278
|
+
)
|
272
279
|
|
273
280
|
@property
|
274
281
|
def __annotations__(self) -> dict[str, Any]: # type: ignore
|
275
282
|
return self.get_adapter().__annotations__
|
276
283
|
|
277
284
|
@classmethod
|
278
|
-
def
|
285
|
+
def read_json_file(cls, read_path: Path) -> Self:
|
279
286
|
return cls.model_validate_json(read_path.read_text())
|
280
287
|
|
281
|
-
def
|
288
|
+
def write_json_file(self, write_path: Path) -> None:
|
282
289
|
write_json(cast(JSONDict, self.model_dump(mode="json")), write_path)
|
283
290
|
|
284
291
|
@staticmethod
|
@@ -1,19 +0,0 @@
|
|
1
|
-
from abc import abstractmethod
|
2
|
-
from pathlib import Path
|
3
|
-
from typing import Self
|
4
|
-
|
5
|
-
|
6
|
-
class PathsManager:
|
7
|
-
@abstractmethod
|
8
|
-
def setup(self) -> None: ...
|
9
|
-
|
10
|
-
@classmethod
|
11
|
-
@abstractmethod
|
12
|
-
def auto(cls, root_dir: Path): ...
|
13
|
-
|
14
|
-
@classmethod
|
15
|
-
@abstractmethod
|
16
|
-
def read(cls, config_file_path: Path) -> Self: ...
|
17
|
-
|
18
|
-
@abstractmethod
|
19
|
-
def write(self, config_file_path: Path) -> None: ...
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|