graphddb-runtime 0.9.3__tar.gz → 1.0.1__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.
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/PKG-INFO +2 -2
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/graphddb_runtime/filters.py +12 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/graphddb_runtime/runtime.py +8 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/graphddb_runtime/transactions.py +10 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/graphddb_runtime.egg-info/PKG-INFO +2 -2
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/graphddb_runtime.egg-info/requires.txt +1 -1
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/pyproject.toml +2 -2
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/README.md +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/graphddb_runtime/__init__.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/graphddb_runtime/async_runtime.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/graphddb_runtime/batch.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/graphddb_runtime/behavior_exec.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/graphddb_runtime/concurrency.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/graphddb_runtime/cursor.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/graphddb_runtime/errors.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/graphddb_runtime/handler_registry.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/graphddb_runtime/hydration.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/graphddb_runtime/limits.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/graphddb_runtime/middleware.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/graphddb_runtime/per_key_cursor.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/graphddb_runtime/templates.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/graphddb_runtime.egg-info/SOURCES.txt +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/graphddb_runtime.egg-info/dependency_links.txt +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/graphddb_runtime.egg-info/top_level.txt +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/setup.cfg +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/tests/test_atomic_add_command.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/tests/test_concurrency.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/tests/test_contract_runtime.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/tests/test_crosslang_python_cells.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/tests/test_description.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/tests/test_description_followups.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/tests/test_description_jsdoc.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/tests/test_error_policy.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/tests/test_generated_module.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/tests/test_guard_eval.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/tests/test_handler_registry.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/tests/test_integration.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/tests/test_integration_batch_write.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/tests/test_integration_binding_contract.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/tests/test_integration_command.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/tests/test_integration_compose.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/tests/test_integration_contract.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/tests/test_integration_edge_derive.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/tests/test_integration_edge_write.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/tests/test_integration_events.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/tests/test_integration_maintain.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/tests/test_integration_middleware.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/tests/test_integration_referential.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/tests/test_integration_relations.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/tests/test_integration_unique.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/tests/test_maintain.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/tests/test_middleware.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/tests/test_relations.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/tests/test_spec_version_guard.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/tests/test_ttl.py +0 -0
- {graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/tests/test_unit.py +0 -0
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: graphddb-runtime
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 1.0.1
|
|
4
4
|
Summary: Thin DynamoDB executor for GraphDDB-generated Python repositories (single-operation core, issue #44).
|
|
5
5
|
License: MIT
|
|
6
6
|
Requires-Python: >=3.9
|
|
7
7
|
Description-Content-Type: text/markdown
|
|
8
8
|
Requires-Dist: boto3>=1.26
|
|
9
|
-
Requires-Dist: behavior-contracts==0.
|
|
9
|
+
Requires-Dist: behavior-contracts==0.5.0
|
|
10
10
|
Provides-Extra: test
|
|
11
11
|
Requires-Dist: pytest>=7.0; extra == "test"
|
|
12
12
|
|
|
@@ -148,6 +148,18 @@ def _compile_field(ctx: _Ctx, field: str, condition: Any) -> str:
|
|
|
148
148
|
|
|
149
149
|
|
|
150
150
|
def _compile_node(ctx: _Ctx, node: Any) -> str:
|
|
151
|
+
# Structural primitives (notExists / attributeExists / attributeNotExists) may be
|
|
152
|
+
# nested inside an and/or/not group, not only at the top level (issue #330). Render
|
|
153
|
+
# them here; otherwise the loop treats them as a field named "attributeNotExists"
|
|
154
|
+
# with an equality operand — a never-satisfied clause.
|
|
155
|
+
if node.get("notExists") is True:
|
|
156
|
+
return f"attribute_not_exists({ctx.name_alias('PK')})"
|
|
157
|
+
ae = node.get("attributeExists")
|
|
158
|
+
if isinstance(ae, str) and ae:
|
|
159
|
+
return f"attribute_exists({ctx.name_alias(ae)})"
|
|
160
|
+
ane = node.get("attributeNotExists")
|
|
161
|
+
if isinstance(ane, str) and ane:
|
|
162
|
+
return f"attribute_not_exists({ctx.name_alias(ane)})"
|
|
151
163
|
clauses: List[str] = []
|
|
152
164
|
for key, value in node.items():
|
|
153
165
|
if value is None:
|
|
@@ -218,6 +218,14 @@ def _resolve_condition_tree(node: Any, params: Mapping[str, Any]) -> Any:
|
|
|
218
218
|
typed caller-param values, and returns a tree shaped exactly like a
|
|
219
219
|
declarative ``filter`` so :func:`compile_filter` compiles it identically.
|
|
220
220
|
"""
|
|
221
|
+
# Structural primitives (notExists / attributeExists / attributeNotExists) may be
|
|
222
|
+
# nested in an and/or/not group (issue #330); pass them through verbatim.
|
|
223
|
+
if node.get("notExists") is True:
|
|
224
|
+
return {"notExists": True}
|
|
225
|
+
if isinstance(node.get("attributeExists"), str):
|
|
226
|
+
return {"attributeExists": node["attributeExists"]}
|
|
227
|
+
if isinstance(node.get("attributeNotExists"), str):
|
|
228
|
+
return {"attributeNotExists": node["attributeNotExists"]}
|
|
221
229
|
out: Dict[str, Any] = {}
|
|
222
230
|
for key, value in node.items():
|
|
223
231
|
if key in ("and", "or"):
|
|
@@ -108,6 +108,16 @@ def _resolve_condition_tree(
|
|
|
108
108
|
Mirrors the runtime's resolver but element-aware, producing a tree shaped
|
|
109
109
|
like a declarative ``filter`` for :func:`compile_filter`.
|
|
110
110
|
"""
|
|
111
|
+
# Structural primitives (notExists / attributeExists / attributeNotExists) carry a
|
|
112
|
+
# static field name / flag and no param leaf; they may be nested in an and/or/not
|
|
113
|
+
# group (issue #330). Pass them through verbatim, else the default branch iterates
|
|
114
|
+
# the string field name as operator entries.
|
|
115
|
+
if node.get("notExists") is True:
|
|
116
|
+
return {"notExists": True}
|
|
117
|
+
if isinstance(node.get("attributeExists"), str):
|
|
118
|
+
return {"attributeExists": node["attributeExists"]}
|
|
119
|
+
if isinstance(node.get("attributeNotExists"), str):
|
|
120
|
+
return {"attributeNotExists": node["attributeNotExists"]}
|
|
111
121
|
out: Dict[str, Any] = {}
|
|
112
122
|
for key, value in node.items():
|
|
113
123
|
if key in ("and", "or"):
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: graphddb-runtime
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 1.0.1
|
|
4
4
|
Summary: Thin DynamoDB executor for GraphDDB-generated Python repositories (single-operation core, issue #44).
|
|
5
5
|
License: MIT
|
|
6
6
|
Requires-Python: >=3.9
|
|
7
7
|
Description-Content-Type: text/markdown
|
|
8
8
|
Requires-Dist: boto3>=1.26
|
|
9
|
-
Requires-Dist: behavior-contracts==0.
|
|
9
|
+
Requires-Dist: behavior-contracts==0.5.0
|
|
10
10
|
Provides-Extra: test
|
|
11
11
|
Requires-Dist: pytest>=7.0; extra == "test"
|
|
12
12
|
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "graphddb-runtime"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "1.0.1"
|
|
8
8
|
description = "Thin DynamoDB executor for GraphDDB-generated Python repositories (single-operation core, issue #44)."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.9"
|
|
@@ -14,7 +14,7 @@ license = { text = "MIT" }
|
|
|
14
14
|
# canonicalisation) are delegated to the extracted shared package
|
|
15
15
|
# ``behavior-contracts`` (import name ``behavior_contracts``). The runtime
|
|
16
16
|
# imports it unconditionally, so it is a HARD dependency.
|
|
17
|
-
dependencies = ["boto3>=1.26", "behavior-contracts==0.
|
|
17
|
+
dependencies = ["boto3>=1.26", "behavior-contracts==0.5.0"]
|
|
18
18
|
|
|
19
19
|
[project.optional-dependencies]
|
|
20
20
|
test = ["pytest>=7.0"]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/graphddb_runtime.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphddb_runtime-0.9.3 → graphddb_runtime-1.0.1}/tests/test_integration_binding_contract.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|