persidict 0.36.4__py3-none-any.whl → 0.36.5__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.5
|
|
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
|
|
@@ -119,21 +119,49 @@ print(f"API Key: {cloud_config['api_key']}")
|
|
|
119
119
|
# >>> API Key: ABC-123-XYZ
|
|
120
120
|
```
|
|
121
121
|
|
|
122
|
-
## 4.
|
|
122
|
+
## 4. Comparison With Python Built-in Dictionaries
|
|
123
123
|
|
|
124
|
-
### 4.1
|
|
124
|
+
### 4.1 Similarities
|
|
125
|
+
|
|
126
|
+
`PersiDict` subclasses can be used like regular Python dictionaries, supporting:
|
|
127
|
+
|
|
128
|
+
* Get, set, and delete operations with square brackets (`[]`).
|
|
129
|
+
* Iteration over keys, values, and items.
|
|
130
|
+
* Membership testing with `in`.
|
|
131
|
+
* Length checking with `len()`.
|
|
132
|
+
* Standard methods like `keys()`, `values()`, `items()`, `get()`, `clear()`
|
|
133
|
+
, `setdefault()`, and `update()`.
|
|
134
|
+
|
|
135
|
+
### 4.2 Differences
|
|
136
|
+
|
|
137
|
+
* **Persistence**: Data is saved between program executions.
|
|
138
|
+
* **Keys**: Keys must be strings or sequences of URL/filename-safe strings.
|
|
139
|
+
* **Values**: Values must be pickleable.
|
|
140
|
+
You can also constrain values to a specific class.
|
|
141
|
+
* **Order**: Insertion order is not preserved.
|
|
142
|
+
* **Additional Methods**: `PersiDict` provides extra methods not in the standard
|
|
143
|
+
dict API, such as `timestamp()`, `random_key()`, `newest_keys()`, `subdicts()`
|
|
144
|
+
, `delete_if_exists()`, `get_params()` and more.
|
|
145
|
+
* **Special Values**: Use `KEEP_CURRENT` to avoid updating a value
|
|
146
|
+
and `DELETE_CURRENT` to delete a value during an assignment.
|
|
147
|
+
|
|
148
|
+
## 5. Glossary
|
|
149
|
+
|
|
150
|
+
### 5.1 Core Concepts
|
|
125
151
|
|
|
126
152
|
* **`PersiDict`**: The abstract base class that defines the common interface
|
|
127
153
|
for all persistent dictionaries in the package. It's the foundation
|
|
128
154
|
upon which everything else is built.
|
|
129
155
|
* **`PersiDictKey`**: A type hint that specifies what can be used
|
|
130
|
-
as a key in any `PersiDict`. It can be a `SafeStrTuple`,
|
|
131
|
-
|
|
156
|
+
as a key in any `PersiDict`. It can be a `SafeStrTuple`, a single string,
|
|
157
|
+
* or a sequence of strings. When a `PesiDict` method requires a key as an input,
|
|
158
|
+
it will accept any of these types and convert them to a `SafeStrTuple` internally.
|
|
132
159
|
* **`SafeStrTuple`**: The core data structure for keys. It's an immutable,
|
|
133
160
|
flat tuple of non-empty, URL/filename-safe strings, ensuring that
|
|
134
|
-
keys are consistent and safe for various storage backends.
|
|
161
|
+
keys are consistent and safe for various storage backends.
|
|
162
|
+
When a `PersiDict` method returns a key, it will always be in this format.
|
|
135
163
|
|
|
136
|
-
###
|
|
164
|
+
### 5.2 Main Implementations
|
|
137
165
|
|
|
138
166
|
* **`FileDirDict`**: A primary, concrete implementation of `PersiDict`
|
|
139
167
|
that stores each key-value pair as a separate file in a local directory.
|
|
@@ -141,7 +169,7 @@ that stores each key-value pair as a separate file in a local directory.
|
|
|
141
169
|
which stores each key-value pair as an object in an AWS S3 bucket,
|
|
142
170
|
suitable for distributed environments.
|
|
143
171
|
|
|
144
|
-
###
|
|
172
|
+
### 5.3 Key Parameters
|
|
145
173
|
|
|
146
174
|
* **`file_type`**: A key parameter for `FileDirDict` and `S3Dict` that
|
|
147
175
|
determines the serialization format for values.
|
|
@@ -160,7 +188,7 @@ stores its files. For `S3Dict`, this directory is used to cache files locally.
|
|
|
160
188
|
an `S3Dict` stores its objects.
|
|
161
189
|
* **`region`**: An optional string specifying the AWS region for the S3 bucket.
|
|
162
190
|
|
|
163
|
-
###
|
|
191
|
+
### 5.4 Advanced Classes
|
|
164
192
|
|
|
165
193
|
* **`WriteOnceDict`**: A wrapper that enforces write-once behavior
|
|
166
194
|
on any `PersiDict`, ignoring subsequent writes to the same key.
|
|
@@ -170,7 +198,7 @@ writes to the same key always match the original value.
|
|
|
170
198
|
multiple `PersiDict` instances sharing the same storage
|
|
171
199
|
but with different `file_type`s.
|
|
172
200
|
|
|
173
|
-
###
|
|
201
|
+
### 5.5 Special "Joker" Values
|
|
174
202
|
|
|
175
203
|
* **`Joker`**: The base class for special command-like values that
|
|
176
204
|
can be assigned to a key to trigger an action instead of storing a value.
|
|
@@ -179,32 +207,6 @@ ensures the existing value is not changed.
|
|
|
179
207
|
* **`DELETE_CURRENT`**: A "joker" value that deletes the key-value pair
|
|
180
208
|
from the dictionary when assigned to a key.
|
|
181
209
|
|
|
182
|
-
## 5. Comparison With Python Built-in Dictionaries
|
|
183
|
-
|
|
184
|
-
### 5.1 Similarities
|
|
185
|
-
|
|
186
|
-
`PersiDict` subclasses can be used like regular Python dictionaries, supporting:
|
|
187
|
-
|
|
188
|
-
* Get, set, and delete operations with square brackets (`[]`).
|
|
189
|
-
* Iteration over keys, values, and items.
|
|
190
|
-
* Membership testing with `in`.
|
|
191
|
-
* Length checking with `len()`.
|
|
192
|
-
* Standard methods like `keys()`, `values()`, `items()`, `get()`, `clear()`
|
|
193
|
-
, `setdefault()`, and `update()`.
|
|
194
|
-
|
|
195
|
-
### 5.2 Differences
|
|
196
|
-
|
|
197
|
-
* **Persistence**: Data is saved between program executions.
|
|
198
|
-
* **Keys**: Keys must be strings or sequences of URL/filename-safe strings.
|
|
199
|
-
* **Values**: Values must be pickleable.
|
|
200
|
-
You can also constrain values to a specific class.
|
|
201
|
-
* **Order**: Insertion order is not preserved.
|
|
202
|
-
* **Additional Methods**: `PersiDict` provides extra methods not in the standard
|
|
203
|
-
dict API, such as `timestamp()`, `random_key()`, `newest_keys()`, `subdicts()`
|
|
204
|
-
, `delete_if_exists()`, `get_params()` and more.
|
|
205
|
-
* **Special Values**: Use `KEEP_CURRENT` to avoid updating a value
|
|
206
|
-
and `DELETE_CURRENT` to delete a value during an assignment.
|
|
207
|
-
|
|
208
210
|
## 6. API Highlights
|
|
209
211
|
|
|
210
212
|
`PersiDict` subclasses support the standard Python dictionary API, plus these additional methods for advanced functionality:
|
|
@@ -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.5.dist-info/WHEEL,sha256=Pi5uDq5Fdo_Rr-HD5h9BiPn9Et29Y9Sh8NhcJNnFU1c,79
|
|
13
|
+
persidict-0.36.5.dist-info/METADATA,sha256=x--ncAi4Y9mx5AKT3aSqHhFS1FhM_A-KhwHdaEXUebU,11651
|
|
14
|
+
persidict-0.36.5.dist-info/RECORD,,
|
|
File without changes
|