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.
- {jsonatapy-2.1.7 → jsonatapy-2.2.1}/CHANGELOG.md +39 -0
- {jsonatapy-2.1.7 → jsonatapy-2.2.1}/Cargo.lock +1 -1
- {jsonatapy-2.1.7 → jsonatapy-2.2.1}/Cargo.toml +1 -1
- {jsonatapy-2.1.7 → jsonatapy-2.2.1}/PKG-INFO +3 -1
- {jsonatapy-2.1.7 → jsonatapy-2.2.1}/README.md +2 -0
- {jsonatapy-2.1.7 → jsonatapy-2.2.1}/pyproject.toml +1 -1
- {jsonatapy-2.1.7 → jsonatapy-2.2.1}/.gitignore +0 -0
- {jsonatapy-2.1.7 → jsonatapy-2.2.1}/.gitmodules +0 -0
- {jsonatapy-2.1.7 → jsonatapy-2.2.1}/.serena/.gitignore +0 -0
- {jsonatapy-2.1.7 → jsonatapy-2.2.1}/.serena/memories/architecture.md +0 -0
- {jsonatapy-2.1.7 → jsonatapy-2.2.1}/.serena/memories/conventions.md +0 -0
- {jsonatapy-2.1.7 → jsonatapy-2.2.1}/.serena/memories/core.md +0 -0
- {jsonatapy-2.1.7 → jsonatapy-2.2.1}/.serena/memories/memory_maintenance.md +0 -0
- {jsonatapy-2.1.7 → jsonatapy-2.2.1}/.serena/memories/suggested_commands.md +0 -0
- {jsonatapy-2.1.7 → jsonatapy-2.2.1}/.serena/memories/task_completion.md +0 -0
- {jsonatapy-2.1.7 → jsonatapy-2.2.1}/.serena/memories/tech_stack.md +0 -0
- {jsonatapy-2.1.7 → jsonatapy-2.2.1}/.serena/project.yml +0 -0
- {jsonatapy-2.1.7 → jsonatapy-2.2.1}/LICENSE +0 -0
- {jsonatapy-2.1.7 → jsonatapy-2.2.1}/benches/evaluator_bench.rs +0 -0
- {jsonatapy-2.1.7 → jsonatapy-2.2.1}/examples/evaluator_demo.rs +0 -0
- {jsonatapy-2.1.7 → jsonatapy-2.2.1}/examples/parser_demo.rs +0 -0
- {jsonatapy-2.1.7 → jsonatapy-2.2.1}/python/jsonatapy/__init__.py +0 -0
- {jsonatapy-2.1.7 → jsonatapy-2.2.1}/python/jsonatapy/py.typed +0 -0
- {jsonatapy-2.1.7 → jsonatapy-2.2.1}/src/ast.rs +0 -0
- {jsonatapy-2.1.7 → jsonatapy-2.2.1}/src/ast_transform.rs +0 -0
- {jsonatapy-2.1.7 → jsonatapy-2.2.1}/src/compiler.rs +0 -0
- {jsonatapy-2.1.7 → jsonatapy-2.2.1}/src/datetime.rs +0 -0
- {jsonatapy-2.1.7 → jsonatapy-2.2.1}/src/evaluator.rs +0 -0
- {jsonatapy-2.1.7 → jsonatapy-2.2.1}/src/functions.rs +0 -0
- {jsonatapy-2.1.7 → jsonatapy-2.2.1}/src/lib.rs +0 -0
- {jsonatapy-2.1.7 → jsonatapy-2.2.1}/src/parser/README.md +0 -0
- {jsonatapy-2.1.7 → jsonatapy-2.2.1}/src/parser.rs +0 -0
- {jsonatapy-2.1.7 → jsonatapy-2.2.1}/src/signature.rs +0 -0
- {jsonatapy-2.1.7 → jsonatapy-2.2.1}/src/value.rs +0 -0
- {jsonatapy-2.1.7 → jsonatapy-2.2.1}/src/vm.rs +0 -0
- {jsonatapy-2.1.7 → jsonatapy-2.2.1}/tests/datetime_picture_suite.rs +0 -0
- {jsonatapy-2.1.7 → jsonatapy-2.2.1}/tests/integration_test.rs +0 -0
- {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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: jsonatapy
|
|
3
|
-
Version: 2.1
|
|
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
|
[](https://crates.io/crates/jsonata-core)
|
|
58
60
|
[](https://pypi.org/project/jsonatapy/)
|
|
59
61
|
[](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
|
[](https://crates.io/crates/jsonata-core)
|
|
13
15
|
[](https://pypi.org/project/jsonatapy/)
|
|
14
16
|
[](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
|
+
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
|
|
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
|