persidict 0.36.2__py3-none-any.whl → 0.36.4__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 persidict might be problematic. Click here for more details.
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: persidict
|
|
3
|
-
Version: 0.36.
|
|
3
|
+
Version: 0.36.4
|
|
4
4
|
Summary: Simple persistent key-value store for Python. Values are stored as files on a disk or as S3 objects on AWS cloud.
|
|
5
5
|
Keywords: persistence,dicts,distributed,parallel
|
|
6
6
|
Author: Vlad (Volodymyr) Pavlov
|
|
@@ -38,15 +38,14 @@ Simple persistent dictionaries for distributed applications in Python.
|
|
|
38
38
|
|
|
39
39
|
## 1. What Is It?
|
|
40
40
|
|
|
41
|
-
`persidict`
|
|
42
|
-
It saves
|
|
43
|
-
|
|
44
|
-
|
|
41
|
+
`persidict` is a lightweight persistent key-value store for Python.
|
|
42
|
+
It saves a dictionary to either a local directory or an AWS S3 bucket,
|
|
43
|
+
storing each value as its own file or S3 object. Keys are limited to
|
|
44
|
+
text strings or sequences of strings.
|
|
45
45
|
|
|
46
|
-
|
|
47
|
-
`persidict` is designed for
|
|
48
|
-
|
|
49
|
-
accessing the same dictionary via a shared storage.
|
|
46
|
+
In contrast to traditional persistent dictionaries (e.g., Python’s `shelve)`,
|
|
47
|
+
`persidict` is designed for distributed environments where multiple processes
|
|
48
|
+
on different machines concurrently work with the same store.
|
|
50
49
|
|
|
51
50
|
## 2. Features
|
|
52
51
|
* **Persistent Storage**: Save dictionaries to the local filesystem
|
|
@@ -206,7 +205,24 @@ dict API, such as `timestamp()`, `random_key()`, `newest_keys()`, `subdicts()`
|
|
|
206
205
|
* **Special Values**: Use `KEEP_CURRENT` to avoid updating a value
|
|
207
206
|
and `DELETE_CURRENT` to delete a value during an assignment.
|
|
208
207
|
|
|
209
|
-
## 6.
|
|
208
|
+
## 6. API Highlights
|
|
209
|
+
|
|
210
|
+
`PersiDict` subclasses support the standard Python dictionary API, plus these additional methods for advanced functionality:
|
|
211
|
+
|
|
212
|
+
| Method | Return Type | Description |
|
|
213
|
+
| :--- | :--- | :--- |
|
|
214
|
+
| `timestamp(key)` | `float` | Returns the POSIX timestamp (seconds since epoch) of a key's last modification. |
|
|
215
|
+
| `random_key()` | `SafeStrTuple \| None` | Selects and returns a single random key, useful for sampling from the dataset. |
|
|
216
|
+
| `oldest_keys(max_n=None)` | `list[SafeStrTuple]` | Returns a list of keys sorted by their modification time, from oldest to newest. |
|
|
217
|
+
| `newest_keys(max_n=None)` | `list[SafeStrTuple]` | Returns a list of keys sorted by their modification time, from newest to oldest. |
|
|
218
|
+
| `oldest_values(max_n=None)` | `list[Any]` | Returns a list of values corresponding to the oldest keys. |
|
|
219
|
+
| `newest_values(max_n=None)` | `list[Any]` | Returns a list of values corresponding to the newest keys. |
|
|
220
|
+
| `get_subdict(prefix_key)` | `PersiDict` | Returns a new `PersiDict` instance that provides a view into a subset of keys sharing a common prefix. |
|
|
221
|
+
| `subdicts()` | `dict[str, PersiDict]` | Returns a dictionary mapping all first-level key prefixes to their corresponding sub-dictionary views. |
|
|
222
|
+
| `delete_if_exists(key)` | `bool` | Deletes a key-value pair if it exists and returns `True`; otherwise, returns `False`. |
|
|
223
|
+
| `get_params()` | `dict` | Returns a dictionary of the instance's configuration parameters, supporting the `parameterizable` API. |
|
|
224
|
+
|
|
225
|
+
## 7. Installation
|
|
210
226
|
|
|
211
227
|
The source code is hosted on GitHub at:
|
|
212
228
|
[https://github.com/pythagoras-dev/persidict](https://github.com/pythagoras-dev/persidict)
|
|
@@ -232,7 +248,7 @@ For development, including test dependencies:
|
|
|
232
248
|
pip install persidict[dev]
|
|
233
249
|
```
|
|
234
250
|
|
|
235
|
-
##
|
|
251
|
+
## 8. Dependencies
|
|
236
252
|
|
|
237
253
|
`persidict` has the following core dependencies:
|
|
238
254
|
|
|
@@ -244,20 +260,20 @@ pip install persidict[dev]
|
|
|
244
260
|
* [numpy](https://numpy.org)
|
|
245
261
|
* [deepdiff](https://zepworks.com/deepdiff)
|
|
246
262
|
|
|
247
|
-
For AWS S3 support (S3Dict), you will also need:
|
|
263
|
+
For AWS S3 support (`S3Dict`), you will also need:
|
|
248
264
|
* [boto3](https://boto3.readthedocs.io)
|
|
249
265
|
|
|
250
266
|
For development and testing, the following packages are used:
|
|
251
267
|
* [pytest](https://pytest.org)
|
|
252
268
|
* [moto](http://getmoto.org)
|
|
253
269
|
|
|
254
|
-
##
|
|
270
|
+
## 9. Contributing
|
|
255
271
|
Contributions are welcome! Please see the contributing [guide](https://github.com/pythagoras-dev/persidict?tab=contributing-ov-file) for more details
|
|
256
272
|
on how to get started, run tests, and submit pull requests.
|
|
257
273
|
|
|
258
|
-
##
|
|
274
|
+
## 10. License
|
|
259
275
|
`persidict` is licensed under the MIT License. See the [LICENSE](https://github.com/pythagoras-dev/persidict?tab=MIT-1-ov-file) file for more details.
|
|
260
276
|
|
|
261
|
-
##
|
|
277
|
+
## 11. Key Contacts
|
|
262
278
|
|
|
263
279
|
* [Vlad (Volodymyr) Pavlov](https://www.linkedin.com/in/vlpavlov/)
|
|
@@ -9,6 +9,6 @@ persidict/safe_chars.py,sha256=9Qy24fu2dmiJOdmCF8mKZULfQaRp7H4oxfgDXeLgogI,1160
|
|
|
9
9
|
persidict/safe_str_tuple.py,sha256=YBTcYjUKIffznOawXb9xKjz4HaKdklrgyVtegJFmr5w,7202
|
|
10
10
|
persidict/safe_str_tuple_signing.py,sha256=RQAj4fnpRVaOe0KpwLler1UTaeNOgXCQpU3t80ixtxg,7493
|
|
11
11
|
persidict/write_once_dict.py,sha256=-lPQ_yuU62pczHT0BYO6SFbiZBKFq8Tj9ln3jCzNDzA,11443
|
|
12
|
-
persidict-0.36.
|
|
13
|
-
persidict-0.36.
|
|
14
|
-
persidict-0.36.
|
|
12
|
+
persidict-0.36.4.dist-info/WHEEL,sha256=Pi5uDq5Fdo_Rr-HD5h9BiPn9Et29Y9Sh8NhcJNnFU1c,79
|
|
13
|
+
persidict-0.36.4.dist-info/METADATA,sha256=TiSOXzkrZlAggOFeug0QIdBYl66obEUJwIU-ukwRS_E,11437
|
|
14
|
+
persidict-0.36.4.dist-info/RECORD,,
|
|
File without changes
|