persidict 0.32.2__tar.gz → 0.32.3__tar.gz

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.32.2
3
+ Version: 0.32.3
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
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "persidict"
7
- version = "0.32.2"
7
+ version = "0.32.3"
8
8
  description = "Simple persistent key-value store for Python. Values are stored as files on a disk or as S3 objects on AWS cloud."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -253,16 +253,18 @@ class S3Dict(PersiDict):
253
253
  num_files = 0
254
254
  suffix = "." + self.file_type
255
255
 
256
- paginator = self.s3_client.get_paginator("list_objects")
256
+ paginator = self.s3_client.get_paginator("list_objects_v2")
257
257
  page_iterator = paginator.paginate(
258
258
  Bucket=self.bucket_name, Prefix = self.root_prefix)
259
259
 
260
260
  for page in page_iterator:
261
- if "Contents" in page:
262
- for key in page["Contents"]:
263
- obj_name = key["Key"]
264
- if obj_name.endswith(suffix):
265
- num_files += 1
261
+ contents = page.get("Contents")
262
+ if not contents:
263
+ continue
264
+ for key in contents:
265
+ obj_name = key["Key"]
266
+ if obj_name.endswith(suffix):
267
+ num_files += 1
266
268
 
267
269
  return num_files
268
270
 
@@ -280,25 +282,27 @@ class S3Dict(PersiDict):
280
282
  return SafeStrTuple(result)
281
283
 
282
284
  def step():
283
- paginator = self.s3_client.get_paginator("list_objects")
285
+ paginator = self.s3_client.get_paginator("list_objects_v2")
284
286
  page_iterator = paginator.paginate(
285
287
  Bucket=self.bucket_name, Prefix = self.root_prefix)
286
288
 
287
289
  for page in page_iterator:
288
- if "Contents" in page:
289
- for key in page["Contents"]:
290
- obj_name = key["Key"]
291
- if not obj_name.endswith(suffix):
292
- continue
293
- obj_key = splitter(obj_name)
294
- if iter_type == "keys":
295
- yield unsign_safe_str_tuple(
296
- obj_key, self.digest_len)
297
- elif iter_type == "values":
298
- yield self[obj_key]
299
- else:
300
- yield (unsign_safe_str_tuple(
301
- obj_key, self.digest_len), self[obj_key])
290
+ contents = page.get("Contents")
291
+ if not contents:
292
+ continue
293
+ for key in contents:
294
+ obj_name = key["Key"]
295
+ if not obj_name.endswith(suffix):
296
+ continue
297
+ obj_key = splitter(obj_name)
298
+ if iter_type == "keys":
299
+ yield unsign_safe_str_tuple(
300
+ obj_key, self.digest_len)
301
+ elif iter_type == "values":
302
+ yield self[obj_key]
303
+ else:
304
+ yield (unsign_safe_str_tuple(
305
+ obj_key, self.digest_len), self[obj_key])
302
306
 
303
307
  return step()
304
308
 
File without changes