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 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 find_many_and_delete(
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
- """Finds one or more documents matching the filter and deletes their.
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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: scruby
3
- Version: 0.12.3
3
+ Version: 0.13.1
4
4
  Summary: A fast key-value storage library.
5
5
  Project-URL: Homepage, https://github.com/kebasyaty/scruby
6
6
  Project-URL: Repository, https://github.com/kebasyaty/scruby
@@ -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,,
@@ -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,,