dialcache 0.27.0__tar.gz → 0.28.0__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.
- {dialcache-0.27.0 → dialcache-0.28.0}/.gitignore +1 -1
- {dialcache-0.27.0 → dialcache-0.28.0}/PKG-INFO +8 -21
- {dialcache-0.27.0 → dialcache-0.28.0}/README.md +7 -20
- {dialcache-0.27.0 → dialcache-0.28.0}/pyproject.toml +1 -1
- {dialcache-0.27.0 → dialcache-0.28.0}/API-DESIGN.md +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/LICENSE +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/dialcache/__init__.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/dialcache/_callbacks.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/dialcache/_shadow_log.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/dialcache/cache.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/dialcache/clock.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/dialcache/config.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/dialcache/context.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/dialcache/errors.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/dialcache/key.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/dialcache/local.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/dialcache/metrics.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/dialcache/protocol.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/dialcache/py.typed +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/dialcache/redis.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/dialcache/serializer.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/tests/formal/__init__.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/tests/formal/coordinator.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/tests/formal/driver.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/tests/formal/executor.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/tests/formal/scenarios.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/tests/formal/schema.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/tests/formal/simple_drivers.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/tests/formal/witness.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/tests/run_conformance.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/tests/run_integration.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_cache.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_cached_keys.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_callback_cancellation.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_cluster_read_routing.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_config.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_conformance.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_context.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_dependency_cancellation.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_docs_examples.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_engine_review.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_integration_acceptance.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_local.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_observer_recovery_boundaries.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_protocol_native.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_protocol_vectors.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_redis_adapter.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_redis_integration.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_review_regressions.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_shadow_deadline_retention.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_shadow_log.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_shadow_mismatch_logging.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_typing.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_validation_environment.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_wire_suite.py +0 -0
- {dialcache-0.27.0 → dialcache-0.28.0}/tests/typing/cached.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: dialcache
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.28.0
|
|
4
4
|
Summary: Explicitly enabled async caching with runtime policies, coalescing, and tracked Redis invalidation.
|
|
5
5
|
Project-URL: Repository, https://github.com/lan17/DialCache
|
|
6
6
|
Project-URL: Documentation, https://github.com/lan17/DialCache/tree/main/python
|
|
@@ -48,6 +48,7 @@ python3 -m pip install './python[redis]'
|
|
|
48
48
|
For local-only caching, omit the `redis` extra. Zstandard is included for the
|
|
49
49
|
portable Redis payload format. The application owns the asyncio event loop and
|
|
50
50
|
any Redis client connections.
|
|
51
|
+
The library has no Node.js runtime dependency.
|
|
51
52
|
|
|
52
53
|
## A cached function
|
|
53
54
|
|
|
@@ -140,7 +141,7 @@ cache = DialCache(policy_provider=policy_provider)
|
|
|
140
141
|
Runtime replies are sparse: an omitted field inherits the operation default.
|
|
141
142
|
A whole reply of `None` inherits the complete operation policy. An explicit
|
|
142
143
|
`None` leaf is malformed and cannot silently inherit a valid setting. Python
|
|
143
|
-
snake_case names and the shared
|
|
144
|
+
snake_case names and the shared camelCase mapping names are accepted.
|
|
144
145
|
Policy objects snapshot their input maps so later mutation cannot alter an
|
|
145
146
|
already admitted invocation.
|
|
146
147
|
|
|
@@ -243,8 +244,6 @@ The Python API takes inspiration from [Galileo gcache](https://github.com/rungal
|
|
|
243
244
|
decorated functions, argument-based identity, explicit context managers, and
|
|
244
245
|
pluggable serializers. DialCache follows its own portable
|
|
245
246
|
specification for behavior and wire compatibility.
|
|
246
|
-
The [API design notes](https://github.com/lan17/DialCache/blob/main/python/API-DESIGN.md) record the source-reviewed gcache revision
|
|
247
|
-
and the native API choices made for this port.
|
|
248
247
|
|
|
249
248
|
This binding exposes awaitable operations. It does not introduce a global
|
|
250
249
|
singleton, implicitly run synchronous I/O in a thread pool, serialize with
|
|
@@ -253,21 +252,9 @@ randomly. Direct `put`, `delete`, and `flush` cache APIs from gcache are outside
|
|
|
253
252
|
DialCache's portable contract; writes come from successful source loads and
|
|
254
253
|
entity-level invalidation is explicit.
|
|
255
254
|
|
|
256
|
-
## Development
|
|
255
|
+
## Development
|
|
257
256
|
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
python/.venv/bin/python -m pip install -e './python[test,redis]'
|
|
263
|
-
python/.venv/bin/python -m pytest python/tests
|
|
264
|
-
```
|
|
265
|
-
|
|
266
|
-
The native tests cover Python API behavior, policy validation, scope lifetime,
|
|
267
|
-
local expiry, cancellation, and wire boundaries. Shared replay runs the real
|
|
268
|
-
Python API through the repository's Node coordinator. Its inputs and expected
|
|
269
|
-
observations come from the same Quint-generated histories used by the other
|
|
270
|
-
ports; Node is a development dependency, not a runtime dependency of the
|
|
271
|
-
Python library. See [the porting guide](https://github.com/lan17/DialCache/blob/main/formal/guides/PORTING.md) for the completion
|
|
272
|
-
and settlement requirements and [the feature map](https://github.com/lan17/DialCache/blob/main/formal/guides/FEATURE-COVERAGE.md)
|
|
273
|
-
for portable behavior versus native adapter obligations.
|
|
257
|
+
Run the checks from the repository root: `make check-python` runs the native tests,
|
|
258
|
+
`make formal-python` replays the generated corpus, and `make integration-python`
|
|
259
|
+
runs the real-server checks. [Validation and evidence](https://github.com/lan17/DialCache/blob/main/formal/guides/VALIDATION.md) lists the
|
|
260
|
+
prerequisites and the other lanes.
|
|
@@ -20,6 +20,7 @@ python3 -m pip install './python[redis]'
|
|
|
20
20
|
For local-only caching, omit the `redis` extra. Zstandard is included for the
|
|
21
21
|
portable Redis payload format. The application owns the asyncio event loop and
|
|
22
22
|
any Redis client connections.
|
|
23
|
+
The library has no Node.js runtime dependency.
|
|
23
24
|
|
|
24
25
|
## A cached function
|
|
25
26
|
|
|
@@ -112,7 +113,7 @@ cache = DialCache(policy_provider=policy_provider)
|
|
|
112
113
|
Runtime replies are sparse: an omitted field inherits the operation default.
|
|
113
114
|
A whole reply of `None` inherits the complete operation policy. An explicit
|
|
114
115
|
`None` leaf is malformed and cannot silently inherit a valid setting. Python
|
|
115
|
-
snake_case names and the shared
|
|
116
|
+
snake_case names and the shared camelCase mapping names are accepted.
|
|
116
117
|
Policy objects snapshot their input maps so later mutation cannot alter an
|
|
117
118
|
already admitted invocation.
|
|
118
119
|
|
|
@@ -215,8 +216,6 @@ The Python API takes inspiration from [Galileo gcache](https://github.com/rungal
|
|
|
215
216
|
decorated functions, argument-based identity, explicit context managers, and
|
|
216
217
|
pluggable serializers. DialCache follows its own portable
|
|
217
218
|
specification for behavior and wire compatibility.
|
|
218
|
-
The [API design notes](https://github.com/lan17/DialCache/blob/main/python/API-DESIGN.md) record the source-reviewed gcache revision
|
|
219
|
-
and the native API choices made for this port.
|
|
220
219
|
|
|
221
220
|
This binding exposes awaitable operations. It does not introduce a global
|
|
222
221
|
singleton, implicitly run synchronous I/O in a thread pool, serialize with
|
|
@@ -225,21 +224,9 @@ randomly. Direct `put`, `delete`, and `flush` cache APIs from gcache are outside
|
|
|
225
224
|
DialCache's portable contract; writes come from successful source loads and
|
|
226
225
|
entity-level invalidation is explicit.
|
|
227
226
|
|
|
228
|
-
## Development
|
|
227
|
+
## Development
|
|
229
228
|
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
python/.venv/bin/python -m pip install -e './python[test,redis]'
|
|
235
|
-
python/.venv/bin/python -m pytest python/tests
|
|
236
|
-
```
|
|
237
|
-
|
|
238
|
-
The native tests cover Python API behavior, policy validation, scope lifetime,
|
|
239
|
-
local expiry, cancellation, and wire boundaries. Shared replay runs the real
|
|
240
|
-
Python API through the repository's Node coordinator. Its inputs and expected
|
|
241
|
-
observations come from the same Quint-generated histories used by the other
|
|
242
|
-
ports; Node is a development dependency, not a runtime dependency of the
|
|
243
|
-
Python library. See [the porting guide](https://github.com/lan17/DialCache/blob/main/formal/guides/PORTING.md) for the completion
|
|
244
|
-
and settlement requirements and [the feature map](https://github.com/lan17/DialCache/blob/main/formal/guides/FEATURE-COVERAGE.md)
|
|
245
|
-
for portable behavior versus native adapter obligations.
|
|
229
|
+
Run the checks from the repository root: `make check-python` runs the native tests,
|
|
230
|
+
`make formal-python` replays the generated corpus, and `make integration-python`
|
|
231
|
+
runs the real-server checks. [Validation and evidence](https://github.com/lan17/DialCache/blob/main/formal/guides/VALIDATION.md) lists the
|
|
232
|
+
prerequisites and the other lanes.
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "dialcache"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.28.0"
|
|
8
8
|
description = "Explicitly enabled async caching with runtime policies, coalescing, and tracked Redis invalidation."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.11"
|
|
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
|
|
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
|
|
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
|