scruby 0.12.3__py3-none-any.whl → 0.13.1__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/aggregation.py +76 -0
- scruby/db.py +3 -3
- {scruby-0.12.3.dist-info → scruby-0.13.1.dist-info}/METADATA +1 -1
- scruby-0.13.1.dist-info/RECORD +10 -0
- scruby-0.12.3.dist-info/RECORD +0 -9
- {scruby-0.12.3.dist-info → scruby-0.13.1.dist-info}/WHEEL +0 -0
- {scruby-0.12.3.dist-info → scruby-0.13.1.dist-info}/licenses/LICENSE +0 -0
scruby/aggregation.py
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"""Aggregation classes."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
__all__ = (
|
|
6
|
+
"Average",
|
|
7
|
+
"Max",
|
|
8
|
+
"Min",
|
|
9
|
+
"Sum",
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
from typing import Any
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class Average:
|
|
16
|
+
"""Aggregation class for calculating the average value."""
|
|
17
|
+
|
|
18
|
+
def __init__(self) -> None: # noqa: D107
|
|
19
|
+
self.value = 0.0
|
|
20
|
+
self.counter = 0.0
|
|
21
|
+
|
|
22
|
+
def set(self, number: int | float) -> None:
|
|
23
|
+
"""Add value."""
|
|
24
|
+
self.value += float(number)
|
|
25
|
+
self.counter += 1.0
|
|
26
|
+
|
|
27
|
+
def get(self) -> float:
|
|
28
|
+
"""Get arithmetic average value."""
|
|
29
|
+
return self.value / self.counter
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class Max:
|
|
33
|
+
"""Aggregation class for calculating the maximum value."""
|
|
34
|
+
|
|
35
|
+
def __init__(self) -> None: # noqa: D107
|
|
36
|
+
self.value: Any = 0
|
|
37
|
+
|
|
38
|
+
def set(self, number: int | float) -> None:
|
|
39
|
+
"""Add value."""
|
|
40
|
+
if number > self.value:
|
|
41
|
+
self.value = number
|
|
42
|
+
|
|
43
|
+
def get(self) -> Any:
|
|
44
|
+
"""Get maximum value."""
|
|
45
|
+
return self.value
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
class Min:
|
|
49
|
+
"""Aggregation class for calculating the minimum value."""
|
|
50
|
+
|
|
51
|
+
def __init__(self) -> None: # noqa: D107
|
|
52
|
+
self.value: Any = 0
|
|
53
|
+
|
|
54
|
+
def set(self, number: int | float) -> None:
|
|
55
|
+
"""Add value."""
|
|
56
|
+
if self.value == 0 or number < self.value:
|
|
57
|
+
self.value = number
|
|
58
|
+
|
|
59
|
+
def get(self) -> Any:
|
|
60
|
+
"""Get minimum value."""
|
|
61
|
+
return self.value
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
class Sum:
|
|
65
|
+
"""Aggregation class for calculating sum of values."""
|
|
66
|
+
|
|
67
|
+
def __init__(self) -> None: # noqa: D107
|
|
68
|
+
self.value: Any = 0
|
|
69
|
+
|
|
70
|
+
def set(self, number: int | float) -> None:
|
|
71
|
+
"""Add value."""
|
|
72
|
+
self.value += number
|
|
73
|
+
|
|
74
|
+
def get(self) -> Any:
|
|
75
|
+
"""Get sum of values."""
|
|
76
|
+
return self.value
|
scruby/db.py
CHANGED
|
@@ -102,8 +102,8 @@ class Scruby[T]:
|
|
|
102
102
|
|
|
103
103
|
This method is for internal use.
|
|
104
104
|
"""
|
|
105
|
-
meta_path = Path(*self.__meta_path_tuple)
|
|
106
105
|
meta_json = meta.model_dump_json()
|
|
106
|
+
meta_path = Path(*self.__meta_path_tuple)
|
|
107
107
|
await meta_path.write_text(meta_json, "utf-8")
|
|
108
108
|
|
|
109
109
|
async def _counter_documents(self, step: Literal[1, -1]) -> None:
|
|
@@ -468,13 +468,13 @@ class Scruby[T]:
|
|
|
468
468
|
leaf_path.write_bytes(orjson.dumps(new_data))
|
|
469
469
|
return counter
|
|
470
470
|
|
|
471
|
-
def
|
|
471
|
+
def delete_many(
|
|
472
472
|
self,
|
|
473
473
|
filter_fn: Callable,
|
|
474
474
|
max_workers: int | None = None,
|
|
475
475
|
timeout: float | None = None,
|
|
476
476
|
) -> int:
|
|
477
|
-
"""
|
|
477
|
+
"""Delete one or more documents matching the filter.
|
|
478
478
|
|
|
479
479
|
The search is based on the effect of a quantum loop.
|
|
480
480
|
The search effectiveness depends on the number of processor threads.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
scruby/__init__.py,sha256=GOVcjXmcOEDBbJQJDJlQq-x3M-VGJaMSN278EXsl2po,884
|
|
2
|
+
scruby/aggregation.py,sha256=AdVZNl9fV59pWMBQez5upQEuodAg3HIw0ixOnM8FrKg,1762
|
|
3
|
+
scruby/constants.py,sha256=3LZfcxcuRqwzoB0-iogLMjKBZRdxfWJmTbyPwVRhQgY,1007
|
|
4
|
+
scruby/db.py,sha256=OXtMqq9y6RQkHHWOgFVXqI96v7g58SIoLUq-h09WxjI,20899
|
|
5
|
+
scruby/errors.py,sha256=aHQri4LNcFVQrSHwjyzb1fL8O49SwjYEU4QgMOo4uyA,622
|
|
6
|
+
scruby/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
|
+
scruby-0.13.1.dist-info/METADATA,sha256=LlJPM_ZrH1yhQA7Yk0owqfigwt72Z2gRIVlDFdJ1cL4,10925
|
|
8
|
+
scruby-0.13.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
9
|
+
scruby-0.13.1.dist-info/licenses/LICENSE,sha256=2zZINd6m_jNYlowdQImlEizyhSui5cBAJZRhWQURcEc,1095
|
|
10
|
+
scruby-0.13.1.dist-info/RECORD,,
|
scruby-0.12.3.dist-info/RECORD
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
scruby/__init__.py,sha256=GOVcjXmcOEDBbJQJDJlQq-x3M-VGJaMSN278EXsl2po,884
|
|
2
|
-
scruby/constants.py,sha256=3LZfcxcuRqwzoB0-iogLMjKBZRdxfWJmTbyPwVRhQgY,1007
|
|
3
|
-
scruby/db.py,sha256=H70ODq0SXtEBB6iTBFA_l-fZ0L1zFq5Nb_PT3Ad2TZs,20925
|
|
4
|
-
scruby/errors.py,sha256=aHQri4LNcFVQrSHwjyzb1fL8O49SwjYEU4QgMOo4uyA,622
|
|
5
|
-
scruby/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
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
|