jsonatapy 2.1.7__tar.gz → 2.2.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.
Files changed (38) hide show
  1. {jsonatapy-2.1.7 → jsonatapy-2.2.1}/CHANGELOG.md +39 -0
  2. {jsonatapy-2.1.7 → jsonatapy-2.2.1}/Cargo.lock +1 -1
  3. {jsonatapy-2.1.7 → jsonatapy-2.2.1}/Cargo.toml +1 -1
  4. {jsonatapy-2.1.7 → jsonatapy-2.2.1}/PKG-INFO +3 -1
  5. {jsonatapy-2.1.7 → jsonatapy-2.2.1}/README.md +2 -0
  6. {jsonatapy-2.1.7 → jsonatapy-2.2.1}/pyproject.toml +1 -1
  7. {jsonatapy-2.1.7 → jsonatapy-2.2.1}/.gitignore +0 -0
  8. {jsonatapy-2.1.7 → jsonatapy-2.2.1}/.gitmodules +0 -0
  9. {jsonatapy-2.1.7 → jsonatapy-2.2.1}/.serena/.gitignore +0 -0
  10. {jsonatapy-2.1.7 → jsonatapy-2.2.1}/.serena/memories/architecture.md +0 -0
  11. {jsonatapy-2.1.7 → jsonatapy-2.2.1}/.serena/memories/conventions.md +0 -0
  12. {jsonatapy-2.1.7 → jsonatapy-2.2.1}/.serena/memories/core.md +0 -0
  13. {jsonatapy-2.1.7 → jsonatapy-2.2.1}/.serena/memories/memory_maintenance.md +0 -0
  14. {jsonatapy-2.1.7 → jsonatapy-2.2.1}/.serena/memories/suggested_commands.md +0 -0
  15. {jsonatapy-2.1.7 → jsonatapy-2.2.1}/.serena/memories/task_completion.md +0 -0
  16. {jsonatapy-2.1.7 → jsonatapy-2.2.1}/.serena/memories/tech_stack.md +0 -0
  17. {jsonatapy-2.1.7 → jsonatapy-2.2.1}/.serena/project.yml +0 -0
  18. {jsonatapy-2.1.7 → jsonatapy-2.2.1}/LICENSE +0 -0
  19. {jsonatapy-2.1.7 → jsonatapy-2.2.1}/benches/evaluator_bench.rs +0 -0
  20. {jsonatapy-2.1.7 → jsonatapy-2.2.1}/examples/evaluator_demo.rs +0 -0
  21. {jsonatapy-2.1.7 → jsonatapy-2.2.1}/examples/parser_demo.rs +0 -0
  22. {jsonatapy-2.1.7 → jsonatapy-2.2.1}/python/jsonatapy/__init__.py +0 -0
  23. {jsonatapy-2.1.7 → jsonatapy-2.2.1}/python/jsonatapy/py.typed +0 -0
  24. {jsonatapy-2.1.7 → jsonatapy-2.2.1}/src/ast.rs +0 -0
  25. {jsonatapy-2.1.7 → jsonatapy-2.2.1}/src/ast_transform.rs +0 -0
  26. {jsonatapy-2.1.7 → jsonatapy-2.2.1}/src/compiler.rs +0 -0
  27. {jsonatapy-2.1.7 → jsonatapy-2.2.1}/src/datetime.rs +0 -0
  28. {jsonatapy-2.1.7 → jsonatapy-2.2.1}/src/evaluator.rs +0 -0
  29. {jsonatapy-2.1.7 → jsonatapy-2.2.1}/src/functions.rs +0 -0
  30. {jsonatapy-2.1.7 → jsonatapy-2.2.1}/src/lib.rs +0 -0
  31. {jsonatapy-2.1.7 → jsonatapy-2.2.1}/src/parser/README.md +0 -0
  32. {jsonatapy-2.1.7 → jsonatapy-2.2.1}/src/parser.rs +0 -0
  33. {jsonatapy-2.1.7 → jsonatapy-2.2.1}/src/signature.rs +0 -0
  34. {jsonatapy-2.1.7 → jsonatapy-2.2.1}/src/value.rs +0 -0
  35. {jsonatapy-2.1.7 → jsonatapy-2.2.1}/src/vm.rs +0 -0
  36. {jsonatapy-2.1.7 → jsonatapy-2.2.1}/tests/datetime_picture_suite.rs +0 -0
  37. {jsonatapy-2.1.7 → jsonatapy-2.2.1}/tests/integration_test.rs +0 -0
  38. {jsonatapy-2.1.7 → jsonatapy-2.2.1}/tests/parent_and_focus_binding_suite.rs +0 -0
@@ -19,8 +19,47 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
19
19
 
20
20
  ### Security
21
21
 
22
+ ## [2.2.1] - 2026-07-08
23
+
24
+ > Same code as [2.1.7](#217---2026-07-08) below, renumbered. This project's release versions
25
+ > track the jsonata-js major/minor version they target (patch numbers are independent — see
26
+ > README). `2.1.7` incorrectly continued the old `2.1.x` patch series even though this release's
27
+ > guardrails feature and signature-engine fixes target jsonata-js `2.2.0`/`2.2.1`; `2.1.7` is
28
+ > superseded immediately by this release and should not be used.
29
+
30
+ ### Added
31
+ - Guardrails: `timeout` (ms, error code `D1012`), `max_stack_depth` (error code `D1011`), and
32
+ `max_sequence_length` (error code `D2015`) keyword arguments on `compile()` and every
33
+ `evaluate*()` call, enforced consistently across all three execution engines (tree-walker,
34
+ compiled-expression fast path, bytecode VM). All default to `None` (unlimited) — no behavior
35
+ change unless configured. See [Guardrails](docs/api.md#guardrails). (jsonata-js 2.2.1 Phase 2, #56)
36
+ - Documented the guardrails API in `docs/api.md`, `docs/usage.md`, and `docs/error-handling.md`
37
+ (previously shipped with accurate Python docstrings but no user-facing docs), and corrected
38
+ `docs/migration-from-js.md`'s stale claim that Python had no built-in timeout support.
39
+
40
+ ### Fixed
41
+ - A deeply-nested expression (arithmetic chains, parenthesized/grouped expressions) no longer
42
+ crashes the whole process (previously a native stack overflow) — now raises a graceful `U1002`
43
+ error instead, via a depth guard in the parser and a second, defense-in-depth guard in the
44
+ post-parse AST pass.
45
+ - `Instr::MakeArray`/`MakeObject`/`BlockEnd`'s bytecode operands (and `CallBuiltin`'s argument
46
+ count, and internal constant-pool bookkeeping) no longer silently produce wrong, truncated
47
+ results for oversized literals/blocks/calls (e.g. array literals with more than 65,535
48
+ elements) — such cases now fall back to the always-correct tree-walker instead.
49
+ - `ast_transform.rs`'s depth-guard error messages no longer imply `%`/`@`/`#` ancestor-operator
50
+ usage (e.g. "...while resolving ancestor/path metadata") when the guard fires for any
51
+ sufficiently-nested expression, including plain arithmetic.
52
+ - Release workflow now fails loudly on a fresh dispatch when the target version tag already
53
+ exists at a different commit, instead of silently reusing the wrong commit (#53).
54
+
22
55
  ## [2.1.7] - 2026-07-08
23
56
 
57
+ **Superseded by [2.2.1](#221---2026-07-08) above, published the same day.** This version was
58
+ numbered following a simple patch-increment from `2.1.6` rather than this project's actual
59
+ versioning policy (track jsonata-js's major/minor). It is fully functional and was not yanked —
60
+ package registries don't allow deleting a published version — but `2.2.1` is the version that
61
+ should be used going forward.
62
+
24
63
  ### Added
25
64
  - Guardrails: `timeout` (ms, error code `D1012`), `max_stack_depth` (error code `D1011`), and
26
65
  `max_sequence_length` (error code `D2015`) keyword arguments on `compile()` and every
@@ -483,7 +483,7 @@ dependencies = [
483
483
 
484
484
  [[package]]
485
485
  name = "jsonata-core"
486
- version = "2.1.7"
486
+ version = "2.2.1"
487
487
  dependencies = [
488
488
  "base64",
489
489
  "chrono",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "jsonata-core"
3
- version = "2.1.7"
3
+ version = "2.2.1"
4
4
  edition = "2021"
5
5
  authors = ["txjmb <txjmb@users.noreply.github.com>"]
6
6
  description = "High-performance Rust implementation of JSONata query and transformation language"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jsonatapy
3
- Version: 2.1.7
3
+ Version: 2.2.1
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Intended Audience :: Developers
6
6
  Classifier: License :: OSI Approved :: MIT License
@@ -54,6 +54,8 @@ workloads, and faster than the next pure-Rust implementation.
54
54
 
55
55
  Many, many thanks to the incredible work of all the maintainers of the [JSONata](https://github.com/jsonata-js/jsonata) reference library. JSONata is a very powerful, well-designed, and useful language that has made an impact on many projects. This project leverages their outstanding work to extend that capability to Python and Rust and would not be possible without that project. The implementation in Rust was strongly influenced by their implementation. The 1600+ tests they created provided the scaffolding and validation for all of this project. This project will continue to follow and be a derivative of the reference project as the JSONata reference library evolves.
56
56
 
57
+ Release versions will follow the reference jsonata-js project major and minor release numbers, but not necessarily patches. This will make it easier for adopters of this library to understand each release's JSONata API compatibility. As an example, 2.1.7 should be compliant with 2.1.x jsonata-js tests, but may have fixes specific to this library. If a patch release for jsonata-js is relevant for this project, it will be included in a patch release that may or may not follow the patch numbers of the upstream project.
58
+
57
59
  [![Crates.io](https://img.shields.io/crates/v/jsonata-core.svg)](https://crates.io/crates/jsonata-core)
58
60
  [![PyPI version](https://badge.fury.io/py/jsonatapy.svg)](https://pypi.org/project/jsonatapy/)
59
61
  [![Python versions](https://img.shields.io/pypi/pyversions/jsonatapy.svg)](https://pypi.org/project/jsonatapy/)
@@ -9,6 +9,8 @@ workloads, and faster than the next pure-Rust implementation.
9
9
 
10
10
  Many, many thanks to the incredible work of all the maintainers of the [JSONata](https://github.com/jsonata-js/jsonata) reference library. JSONata is a very powerful, well-designed, and useful language that has made an impact on many projects. This project leverages their outstanding work to extend that capability to Python and Rust and would not be possible without that project. The implementation in Rust was strongly influenced by their implementation. The 1600+ tests they created provided the scaffolding and validation for all of this project. This project will continue to follow and be a derivative of the reference project as the JSONata reference library evolves.
11
11
 
12
+ Release versions will follow the reference jsonata-js project major and minor release numbers, but not necessarily patches. This will make it easier for adopters of this library to understand each release's JSONata API compatibility. As an example, 2.1.7 should be compliant with 2.1.x jsonata-js tests, but may have fixes specific to this library. If a patch release for jsonata-js is relevant for this project, it will be included in a patch release that may or may not follow the patch numbers of the upstream project.
13
+
12
14
  [![Crates.io](https://img.shields.io/crates/v/jsonata-core.svg)](https://crates.io/crates/jsonata-core)
13
15
  [![PyPI version](https://badge.fury.io/py/jsonatapy.svg)](https://pypi.org/project/jsonatapy/)
14
16
  [![Python versions](https://img.shields.io/pypi/pyversions/jsonatapy.svg)](https://pypi.org/project/jsonatapy/)
@@ -4,7 +4,7 @@ build-backend = "maturin"
4
4
 
5
5
  [project]
6
6
  name = "jsonatapy"
7
- version = "2.1.7"
7
+ version = "2.2.1"
8
8
  description = "High-performance Python/Rust implementation of JSONata query and transformation language"
9
9
  authors = [
10
10
  {name = "txjmb", email = "txjmb@users.noreply.github.com"}
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