altcodepro-polydb-python 2.5.6__tar.gz → 2.5.8__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.
Files changed (115) hide show
  1. {altcodepro_polydb_python-2.5.6/src/altcodepro_polydb_python.egg-info → altcodepro_polydb_python-2.5.8}/PKG-INFO +1 -1
  2. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/pyproject.toml +1 -1
  3. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8/src/altcodepro_polydb_python.egg-info}/PKG-INFO +1 -1
  4. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/__init__.py +1 -1
  5. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/adapters/AzureTableStorageAdapter.py +5 -1
  6. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/databaseFactory.py +57 -31
  7. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/LICENSE +0 -0
  8. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/MANIFEST.in +0 -0
  9. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/README.md +0 -0
  10. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/requirements-aws.txt +0 -0
  11. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/requirements-azure.txt +0 -0
  12. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/requirements-dev.txt +0 -0
  13. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/requirements-gcp.txt +0 -0
  14. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/requirements-generic.txt +0 -0
  15. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/requirements.txt +0 -0
  16. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/setup.cfg +0 -0
  17. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/setup.py +0 -0
  18. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/altcodepro_polydb_python.egg-info/SOURCES.txt +0 -0
  19. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/altcodepro_polydb_python.egg-info/dependency_links.txt +0 -0
  20. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/altcodepro_polydb_python.egg-info/requires.txt +0 -0
  21. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/altcodepro_polydb_python.egg-info/top_level.txt +0 -0
  22. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/PolyDB.py +0 -0
  23. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/adapters/AWSSecretsManagerAdapter.py +0 -0
  24. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/adapters/AzureBlobStorageAdapter.py +0 -0
  25. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/adapters/AzureFileStorageAdapter.py +0 -0
  26. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/adapters/AzureKeyVaultAdapter.py +0 -0
  27. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/adapters/AzureQueueAdapter.py +0 -0
  28. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/adapters/BlockchainBlobAdapter.py +0 -0
  29. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/adapters/BlockchainFileAdapter.py +0 -0
  30. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/adapters/BlockchainKVAdapter.py +0 -0
  31. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/adapters/BlockchainQueueAdapter.py +0 -0
  32. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/adapters/DynamoDBAdapter.py +0 -0
  33. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/adapters/EFSAdapter.py +0 -0
  34. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/adapters/FirestoreAdapter.py +0 -0
  35. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/adapters/GCPFilestoreAdapter.py +0 -0
  36. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/adapters/GCPPubSubAdapter.py +0 -0
  37. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/adapters/GCPSecretManagerAdapter.py +0 -0
  38. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/adapters/GCPStorageAdapter.py +0 -0
  39. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/adapters/KafkaQueueAdapter.py +0 -0
  40. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/adapters/MongoDBAdapter.py +0 -0
  41. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/adapters/PostgreSQLAdapter.py +0 -0
  42. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/adapters/RabbitMQAdapter.py +0 -0
  43. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/adapters/S3Adapter.py +0 -0
  44. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/adapters/S3CompatibleAdapter.py +0 -0
  45. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/adapters/SQSAdapter.py +0 -0
  46. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/adapters/VaultAdapter.py +0 -0
  47. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/adapters/VercelBlobAdapter.py +0 -0
  48. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/adapters/VercelFileAdapter.py +0 -0
  49. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/adapters/VercelKVAdapter.py +0 -0
  50. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/adapters/VercelQueueAdapter.py +0 -0
  51. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/adapters/__init__.py +0 -0
  52. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/advanced_query.py +0 -0
  53. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/audit/AuditStorage.py +0 -0
  54. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/audit/__init__.py +0 -0
  55. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/audit/context.py +0 -0
  56. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/audit/manager.py +0 -0
  57. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/audit/models.py +0 -0
  58. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/base/NoSQLKVAdapter.py +0 -0
  59. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/base/ObjectStorageAdapter.py +0 -0
  60. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/base/QueueAdapter.py +0 -0
  61. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/base/SecretsAdapter.py +0 -0
  62. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/base/SharedFilesAdapter.py +0 -0
  63. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/base/__init__.py +0 -0
  64. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/batch.py +0 -0
  65. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/cache.py +0 -0
  66. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/cloudDatabaseFactory.py +0 -0
  67. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/decorators.py +0 -0
  68. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/errors.py +0 -0
  69. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/json_safe.py +0 -0
  70. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/models.py +0 -0
  71. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/monitoring.py +0 -0
  72. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/multitenancy.py +0 -0
  73. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/observability/__init__.py +0 -0
  74. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/observability/logging.py +0 -0
  75. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/py.typed +0 -0
  76. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/query.py +0 -0
  77. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/registry.py +0 -0
  78. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/retry.py +0 -0
  79. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/schema.py +0 -0
  80. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/security.py +0 -0
  81. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/services/__init__.py +0 -0
  82. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/services/compliance_service.py +0 -0
  83. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/services/security_service.py +0 -0
  84. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/types.py +0 -0
  85. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/utils.py +0 -0
  86. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/src/polydb/validation.py +0 -0
  87. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/tests/test_advanced_query_injection.py +0 -0
  88. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/tests/test_atomic_decrement.py +0 -0
  89. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/tests/test_audit_chain_cutover.py +0 -0
  90. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/tests/test_audit_hmac.py +0 -0
  91. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/tests/test_aws.py +0 -0
  92. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/tests/test_azure.py +0 -0
  93. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/tests/test_azure_queue_receipt_handle.py +0 -0
  94. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/tests/test_azure_table_empty_filter.py +0 -0
  95. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/tests/test_azure_table_unpack_entity.py +0 -0
  96. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/tests/test_blockchain.py +0 -0
  97. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/tests/test_cloud_factory.py +0 -0
  98. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/tests/test_field_encryption.py +0 -0
  99. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/tests/test_gcp.py +0 -0
  100. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/tests/test_kafka.py +0 -0
  101. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/tests/test_like_pattern_escaping.py +0 -0
  102. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/tests/test_mongodb.py +0 -0
  103. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/tests/test_multi_engine.py +0 -0
  104. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/tests/test_multitenancy_ddl_injection.py +0 -0
  105. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/tests/test_nosql_operator_injection.py +0 -0
  106. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/tests/test_observability.py +0 -0
  107. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/tests/test_postgresql.py +0 -0
  108. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/tests/test_queue_extend_delay_cancel.py +0 -0
  109. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/tests/test_rabbitmq.py +0 -0
  110. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/tests/test_redis_kv.py +0 -0
  111. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/tests/test_schema_ddl_injection.py +0 -0
  112. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/tests/test_secrets_aws.py +0 -0
  113. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/tests/test_secrets_vault.py +0 -0
  114. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/tests/test_session_vars.py +0 -0
  115. {altcodepro_polydb_python-2.5.6 → altcodepro_polydb_python-2.5.8}/tests/test_vercel.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: altcodepro-polydb-python
3
- Version: 2.5.6
3
+ Version: 2.5.8
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
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "altcodepro-polydb-python"
7
- version = "2.5.6"
7
+ version = "2.5.8"
8
8
  description = "Production-ready multi-cloud database abstraction layer with connection pooling, retry logic, and thread safety"
9
9
  readme = { file = "README.md", content-type = "text/markdown" }
10
10
  requires-python = ">=3.11"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: altcodepro-polydb-python
3
- Version: 2.5.6
3
+ Version: 2.5.8
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
@@ -4,7 +4,7 @@ PolyDB - Enterprise Cloud-Independent Database Abstraction
4
4
  Full LINQ support, field-level audit, cache, soft delete, overflow storage
5
5
  """
6
6
 
7
- __version__ = "2.5.6"
7
+ __version__ = "2.5.8"
8
8
 
9
9
  from .cloudDatabaseFactory import CloudDatabaseFactory
10
10
  from .databaseFactory import DatabaseFactory
@@ -404,7 +404,11 @@ class AzureTableStorageAdapter(NoSQLKVAdapter):
404
404
 
405
405
  polydb_meta = getattr(model, "__polydb__", None)
406
406
  if isinstance(polydb_meta, dict):
407
- collection = polydb_meta.get("collection") or polydb_meta.get("collection_name")
407
+ collection = (
408
+ polydb_meta.get("collection")
409
+ or polydb_meta.get("collection_name")
410
+ or polydb_meta.get("table")
411
+ )
408
412
  if collection:
409
413
  return self._sanitize_table_name(str(collection))
410
414
 
@@ -576,21 +576,40 @@ class DatabaseFactory:
576
576
  # `before`, so a plain id-addressed update() still lands on
577
577
  # the entity's real physical key instead of a mismatched
578
578
  # default partition / the id used as a row key it never had.
579
+ #
580
+ # meta.pk_field is None for the overwhelming majority of
581
+ # models (nothing declares an explicit partition/sort key) —
582
+ # that does NOT mean there's no partition key to recover, it
583
+ # means the adapter's own real default applies instead
584
+ # (NoSQLKVAdapter._get_pk_rk/_pk_rk_field_names: "tenant_id"
585
+ # / "id"). Resolving against meta.pk_field alone and giving
586
+ # up when it's unset silently produced pkey=None here, which
587
+ # patch()'s own dict-shaped entity_id branch has no fallback
588
+ # for either — the combination wrote every default-tier
589
+ # update to a bogus PartitionKey="None" row instead of the
590
+ # real one. Also check entity_id itself first (the caller's
591
+ # own already-resolved tenant/partition value, e.g.
592
+ # core_db.py's db_update passing {"id":..., "tenant_id":...})
593
+ # — it's more direct and just as authoritative as `before`.
594
+ pk_field_name = meta.pk_field or "tenant_id"
595
+ rk_field_name = meta.rk_field or "id"
579
596
  pkey = data.get("PartitionKey") or data.get("partition_key") or data.get("pk")
580
- if not pkey and meta.pk_field:
581
- pkey = data.get(meta.pk_field)
597
+ if not pkey:
598
+ pkey = data.get(pk_field_name)
599
+ if not pkey and isinstance(entity_id, dict):
600
+ pkey = entity_id.get(pk_field_name)
582
601
  if not pkey and before:
583
602
  pkey = (
584
603
  before.get("PartitionKey")
585
604
  or before.get("partition_key")
586
605
  or before.get("pk")
587
606
  or before.get("_pk")
588
- or (before.get(meta.pk_field) if meta.pk_field else None)
607
+ or before.get(pk_field_name)
589
608
  )
590
609
  rkey = None
591
- if meta.rk_field and meta.rk_field != "id":
592
- rkey = data.get(meta.rk_field) or (
593
- before.get(meta.rk_field) if before else None
610
+ if rk_field_name != "id":
611
+ rkey = data.get(rk_field_name) or (
612
+ before.get(rk_field_name) if before else None
594
613
  )
595
614
  en_id = entity_id
596
615
  if pkey:
@@ -758,38 +777,45 @@ class DatabaseFactory:
758
777
  )
759
778
  # Same physical-key recovery as update() (see there for why a
760
779
  # scalar entity_id alone isn't enough once a model's pk_field
761
- # /rk_field differ from "id").
780
+ # /rk_field differ from "id", and why meta.pk_field being
781
+ # unset must fall back to the adapter's own real default
782
+ # ("tenant_id"/"id"), never a silent no-op).
783
+ pk_field_name = meta.pk_field or "tenant_id"
784
+ rk_field_name = meta.rk_field or "id"
762
785
  en_id = entity_id
763
- if before:
786
+ pkey = None
787
+ if isinstance(entity_id, dict):
788
+ pkey = entity_id.get(pk_field_name)
789
+ if not pkey and before:
764
790
  pkey = (
765
791
  before.get("PartitionKey")
766
792
  or before.get("partition_key")
767
793
  or before.get("pk")
768
794
  or before.get("_pk")
769
- or (before.get(meta.pk_field) if meta.pk_field else None)
795
+ or before.get(pk_field_name)
770
796
  )
771
- if pkey:
772
- rkey = None
773
- if meta.rk_field and meta.rk_field != "id":
774
- rkey = before.get(meta.rk_field)
775
- if isinstance(en_id, dict):
776
- en_pk = (
777
- en_id.get("PartitionKey")
778
- or en_id.get("partition_key")
779
- or en_id.get("pk")
780
- )
781
- if not en_pk:
782
- en_id["partition_key"] = pkey
783
- en_rk = (
784
- en_id.get("RowKey")
785
- or en_id.get("row_key")
786
- or en_id.get("rk")
787
- or en_id.get("id")
788
- )
789
- if not en_rk and rkey:
790
- en_id["row_key"] = rkey
791
- else:
792
- en_id = {"partition_key": pkey, "row_key": rkey or entity_id}
797
+ if pkey:
798
+ rkey = None
799
+ if rk_field_name != "id":
800
+ rkey = before.get(rk_field_name) if before else None
801
+ if isinstance(en_id, dict):
802
+ en_pk = (
803
+ en_id.get("PartitionKey")
804
+ or en_id.get("partition_key")
805
+ or en_id.get("pk")
806
+ )
807
+ if not en_pk:
808
+ en_id["partition_key"] = pkey
809
+ en_rk = (
810
+ en_id.get("RowKey")
811
+ or en_id.get("row_key")
812
+ or en_id.get("rk")
813
+ or en_id.get("id")
814
+ )
815
+ if not en_rk and rkey:
816
+ en_id["row_key"] = rkey
817
+ else:
818
+ en_id = {"partition_key": pkey, "row_key": rkey or entity_id}
793
819
  result = adapters.nosql.delete(cls, en_id, etag=etag)
794
820
  success = True
795
821
  if self._enable_cache and self._cache: