json2xml 6.0.4__tar.gz → 6.0.5__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.
- {json2xml-6.0.4 → json2xml-6.0.5}/HISTORY.rst +13 -1
- {json2xml-6.0.4 → json2xml-6.0.5}/PKG-INFO +16 -16
- {json2xml-6.0.4 → json2xml-6.0.5}/README.rst +15 -15
- {json2xml-6.0.4 → json2xml-6.0.5}/json2xml/__init__.py +1 -1
- {json2xml-6.0.4 → json2xml-6.0.5}/json2xml.egg-info/PKG-INFO +16 -16
- {json2xml-6.0.4 → json2xml-6.0.5}/pyproject.toml +1 -1
- {json2xml-6.0.4 → json2xml-6.0.5}/tests/test_rust_dicttoxml.py +4 -2
- {json2xml-6.0.4 → json2xml-6.0.5}/AUTHORS.rst +0 -0
- {json2xml-6.0.4 → json2xml-6.0.5}/CONTRIBUTING.rst +0 -0
- {json2xml-6.0.4 → json2xml-6.0.5}/LICENSE +0 -0
- {json2xml-6.0.4 → json2xml-6.0.5}/MANIFEST.in +0 -0
- {json2xml-6.0.4 → json2xml-6.0.5}/docs/Makefile +0 -0
- {json2xml-6.0.4 → json2xml-6.0.5}/docs/authors.rst +0 -0
- {json2xml-6.0.4 → json2xml-6.0.5}/docs/benchmarks.rst +0 -0
- {json2xml-6.0.4 → json2xml-6.0.5}/docs/conf.py +0 -0
- {json2xml-6.0.4 → json2xml-6.0.5}/docs/contributing.rst +0 -0
- {json2xml-6.0.4 → json2xml-6.0.5}/docs/history.rst +0 -0
- {json2xml-6.0.4 → json2xml-6.0.5}/docs/index.rst +0 -0
- {json2xml-6.0.4 → json2xml-6.0.5}/docs/installation.rst +0 -0
- {json2xml-6.0.4 → json2xml-6.0.5}/docs/json2xml.rst +0 -0
- {json2xml-6.0.4 → json2xml-6.0.5}/docs/make.bat +0 -0
- {json2xml-6.0.4 → json2xml-6.0.5}/docs/modules.rst +0 -0
- {json2xml-6.0.4 → json2xml-6.0.5}/docs/readme.rst +0 -0
- {json2xml-6.0.4 → json2xml-6.0.5}/docs/usage.rst +0 -0
- {json2xml-6.0.4 → json2xml-6.0.5}/json2xml/cli.py +0 -0
- {json2xml-6.0.4 → json2xml-6.0.5}/json2xml/dicttoxml.py +0 -0
- {json2xml-6.0.4 → json2xml-6.0.5}/json2xml/dicttoxml_fast.py +0 -0
- {json2xml-6.0.4 → json2xml-6.0.5}/json2xml/json2xml.py +0 -0
- {json2xml-6.0.4 → json2xml-6.0.5}/json2xml/utils.py +0 -0
- {json2xml-6.0.4 → json2xml-6.0.5}/json2xml.egg-info/SOURCES.txt +0 -0
- {json2xml-6.0.4 → json2xml-6.0.5}/json2xml.egg-info/dependency_links.txt +0 -0
- {json2xml-6.0.4 → json2xml-6.0.5}/json2xml.egg-info/entry_points.txt +0 -0
- {json2xml-6.0.4 → json2xml-6.0.5}/json2xml.egg-info/requires.txt +0 -0
- {json2xml-6.0.4 → json2xml-6.0.5}/json2xml.egg-info/top_level.txt +0 -0
- {json2xml-6.0.4 → json2xml-6.0.5}/requirements.in +0 -0
- {json2xml-6.0.4 → json2xml-6.0.5}/setup.cfg +0 -0
- {json2xml-6.0.4 → json2xml-6.0.5}/setup.py +0 -0
- {json2xml-6.0.4 → json2xml-6.0.5}/tests/__init__.py +0 -0
- {json2xml-6.0.4 → json2xml-6.0.5}/tests/conftest.py +0 -0
- {json2xml-6.0.4 → json2xml-6.0.5}/tests/test_cli.py +0 -0
- {json2xml-6.0.4 → json2xml-6.0.5}/tests/test_dict2xml.py +0 -0
- {json2xml-6.0.4 → json2xml-6.0.5}/tests/test_json2xml.py +0 -0
- {json2xml-6.0.4 → json2xml-6.0.5}/tests/test_missing_coverage.py +0 -0
- {json2xml-6.0.4 → json2xml-6.0.5}/tests/test_utils.py +0 -0
|
@@ -1,3 +1,16 @@
|
|
|
1
|
+
|
|
2
|
+
6.0.5 / 2026-03-12
|
|
3
|
+
==================
|
|
4
|
+
|
|
5
|
+
* fix: prevent double-escaping of XML attribute values for invalid key names
|
|
6
|
+
* fix: use Python-compatible float formatting in the Rust backend
|
|
7
|
+
* fix: propagate iteration errors instead of silently swallowing them
|
|
8
|
+
* fix: validate ``custom_root`` as a valid XML element name
|
|
9
|
+
* refactor: reduce Rust writer allocations and remove duplicated dispatch logic
|
|
10
|
+
* chore: bump pyo3 and rust binding versions
|
|
11
|
+
* fix: add missing ``xmltodict`` dependency to Rust CI workflow
|
|
12
|
+
|
|
13
|
+
|
|
1
14
|
History
|
|
2
15
|
=======
|
|
3
16
|
|
|
@@ -582,4 +595,3 @@ v3.0.0 / 2019-02-26
|
|
|
582
595
|
* Cleanup Readme.md
|
|
583
596
|
* Update issue templates
|
|
584
597
|
* fix vulnerabilities in requests
|
|
585
|
-
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: json2xml
|
|
3
|
-
Version: 6.0.
|
|
3
|
+
Version: 6.0.5
|
|
4
4
|
Summary: Simple Python Library to convert JSON to XML
|
|
5
5
|
Author-email: Vinit Kumar <mail@vinitkumar.me>
|
|
6
6
|
License: Apache Software License 2.0
|
|
@@ -79,7 +79,7 @@ Installation
|
|
|
79
79
|
|
|
80
80
|
pip install json2xml
|
|
81
81
|
|
|
82
|
-
**With Native Rust Acceleration (
|
|
82
|
+
**With Native Rust Acceleration (up to 149x faster)**
|
|
83
83
|
|
|
84
84
|
For maximum performance, install the optional Rust extension:
|
|
85
85
|
|
|
@@ -91,7 +91,7 @@ For maximum performance, install the optional Rust extension:
|
|
|
91
91
|
# Or install the Rust extension separately
|
|
92
92
|
pip install json2xml-rs
|
|
93
93
|
|
|
94
|
-
The Rust extension provides **
|
|
94
|
+
The Rust extension provides **75-149x faster** conversion compared to pure Python. It's automatically used when available, with seamless fallback to pure Python.
|
|
95
95
|
|
|
96
96
|
**As a CLI Tool**
|
|
97
97
|
|
|
@@ -337,7 +337,7 @@ Using tools directly:
|
|
|
337
337
|
|
|
338
338
|
**Rust Extension Development**
|
|
339
339
|
|
|
340
|
-
The optional Rust extension (``json2xml-rs``) provides
|
|
340
|
+
The optional Rust extension (``json2xml-rs``) provides up to 149x faster performance. To develop or build the Rust extension:
|
|
341
341
|
|
|
342
342
|
Prerequisites:
|
|
343
343
|
|
|
@@ -464,21 +464,21 @@ For users who need maximum performance within Python, json2xml includes an optio
|
|
|
464
464
|
- Rust Extension
|
|
465
465
|
- Speedup
|
|
466
466
|
* - **Small JSON** (47 bytes)
|
|
467
|
-
-
|
|
468
|
-
- 1.
|
|
469
|
-
- **
|
|
467
|
+
- 78µs
|
|
468
|
+
- 1.05µs
|
|
469
|
+
- **75x**
|
|
470
470
|
* - **Medium JSON** (3.2 KB)
|
|
471
|
-
- 2.
|
|
472
|
-
-
|
|
473
|
-
- **
|
|
471
|
+
- 2.15ms
|
|
472
|
+
- 15µs
|
|
473
|
+
- **139x**
|
|
474
474
|
* - **Large JSON** (32 KB)
|
|
475
|
-
-
|
|
476
|
-
-
|
|
477
|
-
- **
|
|
475
|
+
- 22ms
|
|
476
|
+
- 151µs
|
|
477
|
+
- **146x**
|
|
478
478
|
* - **Very Large JSON** (323 KB)
|
|
479
|
-
-
|
|
480
|
-
-
|
|
481
|
-
- **
|
|
479
|
+
- 219ms
|
|
480
|
+
- 1.47ms
|
|
481
|
+
- **149x**
|
|
482
482
|
|
|
483
483
|
**Usage with Rust Extension:**
|
|
484
484
|
|
|
@@ -43,7 +43,7 @@ Installation
|
|
|
43
43
|
|
|
44
44
|
pip install json2xml
|
|
45
45
|
|
|
46
|
-
**With Native Rust Acceleration (
|
|
46
|
+
**With Native Rust Acceleration (up to 149x faster)**
|
|
47
47
|
|
|
48
48
|
For maximum performance, install the optional Rust extension:
|
|
49
49
|
|
|
@@ -55,7 +55,7 @@ For maximum performance, install the optional Rust extension:
|
|
|
55
55
|
# Or install the Rust extension separately
|
|
56
56
|
pip install json2xml-rs
|
|
57
57
|
|
|
58
|
-
The Rust extension provides **
|
|
58
|
+
The Rust extension provides **75-149x faster** conversion compared to pure Python. It's automatically used when available, with seamless fallback to pure Python.
|
|
59
59
|
|
|
60
60
|
**As a CLI Tool**
|
|
61
61
|
|
|
@@ -301,7 +301,7 @@ Using tools directly:
|
|
|
301
301
|
|
|
302
302
|
**Rust Extension Development**
|
|
303
303
|
|
|
304
|
-
The optional Rust extension (``json2xml-rs``) provides
|
|
304
|
+
The optional Rust extension (``json2xml-rs``) provides up to 149x faster performance. To develop or build the Rust extension:
|
|
305
305
|
|
|
306
306
|
Prerequisites:
|
|
307
307
|
|
|
@@ -428,21 +428,21 @@ For users who need maximum performance within Python, json2xml includes an optio
|
|
|
428
428
|
- Rust Extension
|
|
429
429
|
- Speedup
|
|
430
430
|
* - **Small JSON** (47 bytes)
|
|
431
|
-
-
|
|
432
|
-
- 1.
|
|
433
|
-
- **
|
|
431
|
+
- 78µs
|
|
432
|
+
- 1.05µs
|
|
433
|
+
- **75x**
|
|
434
434
|
* - **Medium JSON** (3.2 KB)
|
|
435
|
-
- 2.
|
|
436
|
-
-
|
|
437
|
-
- **
|
|
435
|
+
- 2.15ms
|
|
436
|
+
- 15µs
|
|
437
|
+
- **139x**
|
|
438
438
|
* - **Large JSON** (32 KB)
|
|
439
|
-
-
|
|
440
|
-
-
|
|
441
|
-
- **
|
|
439
|
+
- 22ms
|
|
440
|
+
- 151µs
|
|
441
|
+
- **146x**
|
|
442
442
|
* - **Very Large JSON** (323 KB)
|
|
443
|
-
-
|
|
444
|
-
-
|
|
445
|
-
- **
|
|
443
|
+
- 219ms
|
|
444
|
+
- 1.47ms
|
|
445
|
+
- **149x**
|
|
446
446
|
|
|
447
447
|
**Usage with Rust Extension:**
|
|
448
448
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: json2xml
|
|
3
|
-
Version: 6.0.
|
|
3
|
+
Version: 6.0.5
|
|
4
4
|
Summary: Simple Python Library to convert JSON to XML
|
|
5
5
|
Author-email: Vinit Kumar <mail@vinitkumar.me>
|
|
6
6
|
License: Apache Software License 2.0
|
|
@@ -79,7 +79,7 @@ Installation
|
|
|
79
79
|
|
|
80
80
|
pip install json2xml
|
|
81
81
|
|
|
82
|
-
**With Native Rust Acceleration (
|
|
82
|
+
**With Native Rust Acceleration (up to 149x faster)**
|
|
83
83
|
|
|
84
84
|
For maximum performance, install the optional Rust extension:
|
|
85
85
|
|
|
@@ -91,7 +91,7 @@ For maximum performance, install the optional Rust extension:
|
|
|
91
91
|
# Or install the Rust extension separately
|
|
92
92
|
pip install json2xml-rs
|
|
93
93
|
|
|
94
|
-
The Rust extension provides **
|
|
94
|
+
The Rust extension provides **75-149x faster** conversion compared to pure Python. It's automatically used when available, with seamless fallback to pure Python.
|
|
95
95
|
|
|
96
96
|
**As a CLI Tool**
|
|
97
97
|
|
|
@@ -337,7 +337,7 @@ Using tools directly:
|
|
|
337
337
|
|
|
338
338
|
**Rust Extension Development**
|
|
339
339
|
|
|
340
|
-
The optional Rust extension (``json2xml-rs``) provides
|
|
340
|
+
The optional Rust extension (``json2xml-rs``) provides up to 149x faster performance. To develop or build the Rust extension:
|
|
341
341
|
|
|
342
342
|
Prerequisites:
|
|
343
343
|
|
|
@@ -464,21 +464,21 @@ For users who need maximum performance within Python, json2xml includes an optio
|
|
|
464
464
|
- Rust Extension
|
|
465
465
|
- Speedup
|
|
466
466
|
* - **Small JSON** (47 bytes)
|
|
467
|
-
-
|
|
468
|
-
- 1.
|
|
469
|
-
- **
|
|
467
|
+
- 78µs
|
|
468
|
+
- 1.05µs
|
|
469
|
+
- **75x**
|
|
470
470
|
* - **Medium JSON** (3.2 KB)
|
|
471
|
-
- 2.
|
|
472
|
-
-
|
|
473
|
-
- **
|
|
471
|
+
- 2.15ms
|
|
472
|
+
- 15µs
|
|
473
|
+
- **139x**
|
|
474
474
|
* - **Large JSON** (32 KB)
|
|
475
|
-
-
|
|
476
|
-
-
|
|
477
|
-
- **
|
|
475
|
+
- 22ms
|
|
476
|
+
- 151µs
|
|
477
|
+
- **146x**
|
|
478
478
|
* - **Very Large JSON** (323 KB)
|
|
479
|
-
-
|
|
480
|
-
-
|
|
481
|
-
- **
|
|
479
|
+
- 219ms
|
|
480
|
+
- 1.47ms
|
|
481
|
+
- **149x**
|
|
482
482
|
|
|
483
483
|
**Usage with Rust Extension:**
|
|
484
484
|
|
|
@@ -6,6 +6,8 @@ and matches the Python implementation for supported features.
|
|
|
6
6
|
"""
|
|
7
7
|
from __future__ import annotations
|
|
8
8
|
|
|
9
|
+
from typing import Any
|
|
10
|
+
|
|
9
11
|
import pytest
|
|
10
12
|
|
|
11
13
|
# Check if Rust extension is available
|
|
@@ -494,8 +496,8 @@ class TestRustPerformanceBasics:
|
|
|
494
496
|
|
|
495
497
|
def test_deeply_nested_structure(self):
|
|
496
498
|
"""Ensure deep nesting doesn't crash."""
|
|
497
|
-
data = {"level": None}
|
|
498
|
-
current = data
|
|
499
|
+
data: dict[str, Any] = {"level": None}
|
|
500
|
+
current: dict[str, Any] = data
|
|
499
501
|
for i in range(50):
|
|
500
502
|
current["level"] = {"value": i}
|
|
501
503
|
current = current["level"]
|
|
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
|