scruby 0.12.0__py3-none-any.whl → 0.12.3__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.
Potentially problematic release.
This version of scruby might be problematic. Click here for more details.
scruby/db.py
CHANGED
|
@@ -11,7 +11,7 @@ import zlib
|
|
|
11
11
|
from collections.abc import Callable
|
|
12
12
|
from pathlib import Path as SyncPath
|
|
13
13
|
from shutil import rmtree
|
|
14
|
-
from typing import Any, Never, TypeVar, assert_never
|
|
14
|
+
from typing import Any, Literal, Never, TypeVar, assert_never
|
|
15
15
|
|
|
16
16
|
import orjson
|
|
17
17
|
from anyio import Path, to_thread
|
|
@@ -45,7 +45,7 @@ class Scruby[T]:
|
|
|
45
45
|
self.__class_model = class_model
|
|
46
46
|
self.__db_root = constants.DB_ROOT
|
|
47
47
|
self.__hash_reduce_left = constants.HASH_REDUCE_LEFT
|
|
48
|
-
# The maximum number of
|
|
48
|
+
# The maximum number of branches.
|
|
49
49
|
match self.__hash_reduce_left:
|
|
50
50
|
case 0:
|
|
51
51
|
self.__max_branch_number = 4294967296
|
|
@@ -59,18 +59,18 @@ class Scruby[T]:
|
|
|
59
59
|
msg: str = f"{unreachable} - Unacceptable value for HASH_REDUCE_LEFT."
|
|
60
60
|
logger.critical(msg)
|
|
61
61
|
assert_never(Never(unreachable))
|
|
62
|
-
#
|
|
63
|
-
#
|
|
64
|
-
self._create_metadata()
|
|
65
|
-
|
|
66
|
-
def _create_metadata(self) -> None:
|
|
67
|
-
"""Create metadata for collection if absent.
|
|
68
|
-
|
|
69
|
-
This method is for internal use.
|
|
70
|
-
"""
|
|
62
|
+
# Caching a pati for metadata in the form of a tuple.
|
|
63
|
+
# The zero branch is reserved for metadata.
|
|
71
64
|
branch_number: int = 0
|
|
72
|
-
|
|
73
|
-
separated_hash: str = "/".join(list(
|
|
65
|
+
branch_number_as_hash: str = f"{branch_number:08x}"[constants.HASH_REDUCE_LEFT :]
|
|
66
|
+
separated_hash: str = "/".join(list(branch_number_as_hash))
|
|
67
|
+
self.__meta_path_tuple = (
|
|
68
|
+
constants.DB_ROOT,
|
|
69
|
+
class_model.__name__,
|
|
70
|
+
separated_hash,
|
|
71
|
+
"meta.json",
|
|
72
|
+
)
|
|
73
|
+
# Create metadata for collection, if required.
|
|
74
74
|
branch_path = SyncPath(
|
|
75
75
|
*(
|
|
76
76
|
self.__db_root,
|
|
@@ -87,29 +87,12 @@ class Scruby[T]:
|
|
|
87
87
|
meta_path = SyncPath(*(branch_path, "meta.json"))
|
|
88
88
|
meta_path.write_text(meta_json, "utf-8")
|
|
89
89
|
|
|
90
|
-
async def _get_meta_path(self) -> Path:
|
|
91
|
-
"""Asynchronous method for getting path to metadata of collection.
|
|
92
|
-
|
|
93
|
-
This method is for internal use.
|
|
94
|
-
"""
|
|
95
|
-
branch_number: int = 0
|
|
96
|
-
branch_number_as_hash: str = f"{branch_number:08x}"[self.__hash_reduce_left :]
|
|
97
|
-
separated_hash: str = "/".join(list(branch_number_as_hash))
|
|
98
|
-
return Path(
|
|
99
|
-
*(
|
|
100
|
-
self.__db_root,
|
|
101
|
-
self.__class_model.__name__,
|
|
102
|
-
separated_hash,
|
|
103
|
-
"meta.json",
|
|
104
|
-
),
|
|
105
|
-
)
|
|
106
|
-
|
|
107
90
|
async def _get_meta(self) -> _Meta:
|
|
108
91
|
"""Asynchronous method for getting metadata of collection.
|
|
109
92
|
|
|
110
93
|
This method is for internal use.
|
|
111
94
|
"""
|
|
112
|
-
meta_path =
|
|
95
|
+
meta_path = Path(*self.__meta_path_tuple)
|
|
113
96
|
meta_json = await meta_path.read_text()
|
|
114
97
|
meta: _Meta = self.__meta.model_validate_json(meta_json)
|
|
115
98
|
return meta
|
|
@@ -119,21 +102,19 @@ class Scruby[T]:
|
|
|
119
102
|
|
|
120
103
|
This method is for internal use.
|
|
121
104
|
"""
|
|
122
|
-
meta_path =
|
|
105
|
+
meta_path = Path(*self.__meta_path_tuple)
|
|
123
106
|
meta_json = meta.model_dump_json()
|
|
124
107
|
await meta_path.write_text(meta_json, "utf-8")
|
|
125
108
|
|
|
126
|
-
async def _counter_documents(self,
|
|
109
|
+
async def _counter_documents(self, step: Literal[1, -1]) -> None:
|
|
127
110
|
"""Asynchronous method for management of documents in metadata of collection.
|
|
128
111
|
|
|
129
112
|
This method is for internal use.
|
|
130
113
|
"""
|
|
131
|
-
meta_path =
|
|
114
|
+
meta_path = Path(*self.__meta_path_tuple)
|
|
132
115
|
meta_json = await meta_path.read_text("utf-8")
|
|
133
116
|
meta: _Meta = self.__meta.model_validate_json(meta_json)
|
|
134
|
-
meta.counter_documents +=
|
|
135
|
-
if meta.counter_documents < 0:
|
|
136
|
-
meta.counter_documents = 0
|
|
117
|
+
meta.counter_documents += step
|
|
137
118
|
meta_json = meta.model_dump_json()
|
|
138
119
|
await meta_path.write_text(meta_json, "utf-8")
|
|
139
120
|
|
|
@@ -142,22 +123,10 @@ class Scruby[T]:
|
|
|
142
123
|
|
|
143
124
|
This method is for internal use.
|
|
144
125
|
"""
|
|
145
|
-
|
|
146
|
-
branch_number_as_hash: str = f"{branch_number:08x}"[self.__hash_reduce_left :]
|
|
147
|
-
separated_hash: str = "/".join(list(branch_number_as_hash))
|
|
148
|
-
meta_path = SyncPath(
|
|
149
|
-
*(
|
|
150
|
-
self.__db_root,
|
|
151
|
-
self.__class_model.__name__,
|
|
152
|
-
separated_hash,
|
|
153
|
-
"meta.json",
|
|
154
|
-
),
|
|
155
|
-
)
|
|
126
|
+
meta_path = SyncPath(*self.__meta_path_tuple)
|
|
156
127
|
meta_json = meta_path.read_text("utf-8")
|
|
157
128
|
meta: _Meta = self.__meta.model_validate_json(meta_json)
|
|
158
129
|
meta.counter_documents += number
|
|
159
|
-
if meta.counter_documents < 0:
|
|
160
|
-
meta.counter_documents = 0
|
|
161
130
|
meta_json = meta.model_dump_json()
|
|
162
131
|
meta_path.write_text(meta_json, "utf-8")
|
|
163
132
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
scruby/__init__.py,sha256=GOVcjXmcOEDBbJQJDJlQq-x3M-VGJaMSN278EXsl2po,884
|
|
2
2
|
scruby/constants.py,sha256=3LZfcxcuRqwzoB0-iogLMjKBZRdxfWJmTbyPwVRhQgY,1007
|
|
3
|
-
scruby/db.py,sha256=
|
|
3
|
+
scruby/db.py,sha256=H70ODq0SXtEBB6iTBFA_l-fZ0L1zFq5Nb_PT3Ad2TZs,20925
|
|
4
4
|
scruby/errors.py,sha256=aHQri4LNcFVQrSHwjyzb1fL8O49SwjYEU4QgMOo4uyA,622
|
|
5
5
|
scruby/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
|
-
scruby-0.12.
|
|
7
|
-
scruby-0.12.
|
|
8
|
-
scruby-0.12.
|
|
9
|
-
scruby-0.12.
|
|
6
|
+
scruby-0.12.3.dist-info/METADATA,sha256=C7rNCceHMaFezgzg4TEvUR_vOivfvGG3bpgPOQrucLg,10925
|
|
7
|
+
scruby-0.12.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
8
|
+
scruby-0.12.3.dist-info/licenses/LICENSE,sha256=2zZINd6m_jNYlowdQImlEizyhSui5cBAJZRhWQURcEc,1095
|
|
9
|
+
scruby-0.12.3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|