altcodepro-polydb-python 2.3.3__py3-none-any.whl → 2.3.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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: altcodepro-polydb-python
3
- Version: 2.3.3
3
+ Version: 2.3.4
4
4
  Summary: Production-ready multi-cloud database abstraction layer with connection pooling, retry logic, and thread safety
5
5
  Author: AltCodePro
6
6
  Project-URL: Homepage, https://github.com/altcodepro/polydb-python
@@ -1,4 +1,4 @@
1
- altcodepro_polydb_python-2.3.3.dist-info/licenses/LICENSE,sha256=9X8GLocsBwy-5aR5JGOt2SAMDDPs9Qv-YnqmHBHOXrw,1067
1
+ altcodepro_polydb_python-2.3.4.dist-info/licenses/LICENSE,sha256=9X8GLocsBwy-5aR5JGOt2SAMDDPs9Qv-YnqmHBHOXrw,1067
2
2
  polydb/PolyDB.py,sha256=p9eDdvBGosE4fNSSAbtq3tHObdKZ-C2V2Q_ia39Ackk,23397
3
3
  polydb/__init__.py,sha256=UhUzfSvmMgKbV2tSME1ooIyfshIBi7_WyU4xl1tWWiA,1454
4
4
  polydb/advanced_query.py,sha256=cxMB-EB-qT3bWXJlhmjnMCUtrzogORWyoEfS50Dy7go,4280
@@ -24,7 +24,7 @@ polydb/validation.py,sha256=a1o1d02k3c6PWQwkBbw_0nEmIgrdB5RR8OcpNQMn4cA,4810
24
24
  polydb/adapters/AzureBlobStorageAdapter.py,sha256=iNscCIeoWy4YJo3IbI7gNam-NUT7t45ayrlPnYfqlCQ,6409
25
25
  polydb/adapters/AzureFileStorageAdapter.py,sha256=OuZY5P-FTQ36954obJN65oSMqmW3d-7QBmXxVGX0lds,6086
26
26
  polydb/adapters/AzureQueueAdapter.py,sha256=5tslwI0DgvMeb20w57aVSSSKiuCJEKrYjN0kGuFcdUI,5276
27
- polydb/adapters/AzureTableStorageAdapter.py,sha256=od0w0iN3DC8cBIMIcvzGEjVdrQLIuAj7O5OFFO5lEaM,21238
27
+ polydb/adapters/AzureTableStorageAdapter.py,sha256=wc_EcrwZmc5M6321Y6tio1BYiPEtJIck9gu6BqQDMsY,21890
28
28
  polydb/adapters/BlockchainBlobAdapter.py,sha256=BXSDT6rDGGE04qM2-dVNAeWk-VcF82JGHAdUJeYHCbI,3320
29
29
  polydb/adapters/BlockchainKVAdapter.py,sha256=5Egic8QyulgYcy9O12iWKq2EDyVEvnXp_ereYgIvbHk,4546
30
30
  polydb/adapters/BlockchainQueueAdapter.py,sha256=K01klT8Eu8c-y1G9Sg2r0PIjay_at9x27kCTTEHPkNY,4179
@@ -52,7 +52,7 @@ polydb/base/ObjectStorageAdapter.py,sha256=mNdJnhoB3VqSCQvmcoel5PohrVQw7Nrajdd5s
52
52
  polydb/base/QueueAdapter.py,sha256=jFgyG-SUK4nhRNxm2NbzUbwnA9b_5iAC-ikLSUpXRwk,799
53
53
  polydb/base/SharedFilesAdapter.py,sha256=hvmdNNhNxpN46Ob9RLAi8l46GB6JolYyZWnAMuaJ86g,708
54
54
  polydb/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
- altcodepro_polydb_python-2.3.3.dist-info/METADATA,sha256=mZBvP5r11bd2TZFDo--l_pESy57xOTcuP4IH8Ef2754,11910
56
- altcodepro_polydb_python-2.3.3.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
57
- altcodepro_polydb_python-2.3.3.dist-info/top_level.txt,sha256=WgLFWJoYjUhwvyPxJFl6jYLrVFuBJDX3OABf4ocwk_E,7
58
- altcodepro_polydb_python-2.3.3.dist-info/RECORD,,
55
+ altcodepro_polydb_python-2.3.4.dist-info/METADATA,sha256=lbV1IUtpKJ34lC4ViBv1RNcpLk8IPujTe6eU6HO-tnY,11910
56
+ altcodepro_polydb_python-2.3.4.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
57
+ altcodepro_polydb_python-2.3.4.dist-info/top_level.txt,sha256=WgLFWJoYjUhwvyPxJFl6jYLrVFuBJDX3OABf4ocwk_E,7
58
+ altcodepro_polydb_python-2.3.4.dist-info/RECORD,,
@@ -469,6 +469,9 @@ class AzureTableStorageAdapter(NoSQLKVAdapter):
469
469
 
470
470
  restored = json.loads(blob_data.decode("utf-8"))
471
471
  out = self._unpack_entity(restored)
472
+ out["_overflow"] = True
473
+ out["_blob_key"] = blob_key
474
+ out["_checksum"] = checksum
472
475
  if "id" not in out:
473
476
  out["id"] = safe_rk
474
477
  return out
@@ -541,10 +544,19 @@ class AzureTableStorageAdapter(NoSQLKVAdapter):
541
544
 
542
545
  if ent_dict.get("_overflow"):
543
546
  blob_key = ent_dict.get("_blob_key")
547
+ checksum = ent_dict.get("_checksum")
544
548
  if blob_key:
545
- blob_data = self._blob_download(blob_key)
546
- restored = json.loads(blob_data.decode("utf-8"))
547
- out = self._unpack_entity(restored)
549
+ try:
550
+ blob_data = self._blob_download(blob_key)
551
+ actual_checksum = hashlib.md5(blob_data).hexdigest()
552
+ if checksum and actual_checksum != checksum:
553
+ raise NoSQLError("Checksum mismatch")
554
+
555
+ restored = json.loads(blob_data.decode("utf-8"))
556
+ out = self._unpack_entity(restored)
557
+ except Exception as e:
558
+ logger.error(f"Blob read failed, falling back to table: {e}")
559
+ out = self._unpack_entity(ent_dict)
548
560
  else:
549
561
  out = self._unpack_entity(ent_dict)
550
562
  else: