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.
Files changed (56) hide show
  1. {dialcache-0.27.0 → dialcache-0.28.0}/.gitignore +1 -1
  2. {dialcache-0.27.0 → dialcache-0.28.0}/PKG-INFO +8 -21
  3. {dialcache-0.27.0 → dialcache-0.28.0}/README.md +7 -20
  4. {dialcache-0.27.0 → dialcache-0.28.0}/pyproject.toml +1 -1
  5. {dialcache-0.27.0 → dialcache-0.28.0}/API-DESIGN.md +0 -0
  6. {dialcache-0.27.0 → dialcache-0.28.0}/LICENSE +0 -0
  7. {dialcache-0.27.0 → dialcache-0.28.0}/dialcache/__init__.py +0 -0
  8. {dialcache-0.27.0 → dialcache-0.28.0}/dialcache/_callbacks.py +0 -0
  9. {dialcache-0.27.0 → dialcache-0.28.0}/dialcache/_shadow_log.py +0 -0
  10. {dialcache-0.27.0 → dialcache-0.28.0}/dialcache/cache.py +0 -0
  11. {dialcache-0.27.0 → dialcache-0.28.0}/dialcache/clock.py +0 -0
  12. {dialcache-0.27.0 → dialcache-0.28.0}/dialcache/config.py +0 -0
  13. {dialcache-0.27.0 → dialcache-0.28.0}/dialcache/context.py +0 -0
  14. {dialcache-0.27.0 → dialcache-0.28.0}/dialcache/errors.py +0 -0
  15. {dialcache-0.27.0 → dialcache-0.28.0}/dialcache/key.py +0 -0
  16. {dialcache-0.27.0 → dialcache-0.28.0}/dialcache/local.py +0 -0
  17. {dialcache-0.27.0 → dialcache-0.28.0}/dialcache/metrics.py +0 -0
  18. {dialcache-0.27.0 → dialcache-0.28.0}/dialcache/protocol.py +0 -0
  19. {dialcache-0.27.0 → dialcache-0.28.0}/dialcache/py.typed +0 -0
  20. {dialcache-0.27.0 → dialcache-0.28.0}/dialcache/redis.py +0 -0
  21. {dialcache-0.27.0 → dialcache-0.28.0}/dialcache/serializer.py +0 -0
  22. {dialcache-0.27.0 → dialcache-0.28.0}/tests/formal/__init__.py +0 -0
  23. {dialcache-0.27.0 → dialcache-0.28.0}/tests/formal/coordinator.py +0 -0
  24. {dialcache-0.27.0 → dialcache-0.28.0}/tests/formal/driver.py +0 -0
  25. {dialcache-0.27.0 → dialcache-0.28.0}/tests/formal/executor.py +0 -0
  26. {dialcache-0.27.0 → dialcache-0.28.0}/tests/formal/scenarios.py +0 -0
  27. {dialcache-0.27.0 → dialcache-0.28.0}/tests/formal/schema.py +0 -0
  28. {dialcache-0.27.0 → dialcache-0.28.0}/tests/formal/simple_drivers.py +0 -0
  29. {dialcache-0.27.0 → dialcache-0.28.0}/tests/formal/witness.py +0 -0
  30. {dialcache-0.27.0 → dialcache-0.28.0}/tests/run_conformance.py +0 -0
  31. {dialcache-0.27.0 → dialcache-0.28.0}/tests/run_integration.py +0 -0
  32. {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_cache.py +0 -0
  33. {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_cached_keys.py +0 -0
  34. {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_callback_cancellation.py +0 -0
  35. {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_cluster_read_routing.py +0 -0
  36. {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_config.py +0 -0
  37. {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_conformance.py +0 -0
  38. {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_context.py +0 -0
  39. {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_dependency_cancellation.py +0 -0
  40. {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_docs_examples.py +0 -0
  41. {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_engine_review.py +0 -0
  42. {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_integration_acceptance.py +0 -0
  43. {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_local.py +0 -0
  44. {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_observer_recovery_boundaries.py +0 -0
  45. {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_protocol_native.py +0 -0
  46. {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_protocol_vectors.py +0 -0
  47. {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_redis_adapter.py +0 -0
  48. {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_redis_integration.py +0 -0
  49. {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_review_regressions.py +0 -0
  50. {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_shadow_deadline_retention.py +0 -0
  51. {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_shadow_log.py +0 -0
  52. {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_shadow_mismatch_logging.py +0 -0
  53. {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_typing.py +0 -0
  54. {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_validation_environment.py +0 -0
  55. {dialcache-0.27.0 → dialcache-0.28.0}/tests/test_wire_suite.py +0 -0
  56. {dialcache-0.27.0 → dialcache-0.28.0}/tests/typing/cached.py +0 -0
@@ -5,7 +5,7 @@ coverage/
5
5
  .formal-traces/
6
6
  docs/.vitepress/cache/
7
7
  docs/public/reference/
8
- docs/generated/
8
+ formal/generated/behavior.md
9
9
  *.tgz
10
10
  .env
11
11
  .env.*
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: dialcache
3
- Version: 0.27.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 corpus's camelCase mapping names are accepted.
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 and conformance
255
+ ## Development
257
256
 
258
- From the repository root:
259
-
260
- ```sh
261
- python3 -m venv python/.venv
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 corpus's camelCase mapping names are accepted.
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 and conformance
227
+ ## Development
229
228
 
230
- From the repository root:
231
-
232
- ```sh
233
- python3 -m venv python/.venv
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.27.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