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.4
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. Glossary
122
+ ## 4. Comparison With Python Built-in Dictionaries
123
123
 
124
- ### 4.1 Core Concepts
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
- a single string, or a sequence of strings.
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
- ### 4.2 Main Implementations
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
- ### 4.3 Key Parameters
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
- ### 4.4 Advanced Classes
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
- ### 4.5 Special "Joker" Values
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.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,,
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,,