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.
Files changed (44) hide show
  1. {json2xml-6.0.4 → json2xml-6.0.5}/HISTORY.rst +13 -1
  2. {json2xml-6.0.4 → json2xml-6.0.5}/PKG-INFO +16 -16
  3. {json2xml-6.0.4 → json2xml-6.0.5}/README.rst +15 -15
  4. {json2xml-6.0.4 → json2xml-6.0.5}/json2xml/__init__.py +1 -1
  5. {json2xml-6.0.4 → json2xml-6.0.5}/json2xml.egg-info/PKG-INFO +16 -16
  6. {json2xml-6.0.4 → json2xml-6.0.5}/pyproject.toml +1 -1
  7. {json2xml-6.0.4 → json2xml-6.0.5}/tests/test_rust_dicttoxml.py +4 -2
  8. {json2xml-6.0.4 → json2xml-6.0.5}/AUTHORS.rst +0 -0
  9. {json2xml-6.0.4 → json2xml-6.0.5}/CONTRIBUTING.rst +0 -0
  10. {json2xml-6.0.4 → json2xml-6.0.5}/LICENSE +0 -0
  11. {json2xml-6.0.4 → json2xml-6.0.5}/MANIFEST.in +0 -0
  12. {json2xml-6.0.4 → json2xml-6.0.5}/docs/Makefile +0 -0
  13. {json2xml-6.0.4 → json2xml-6.0.5}/docs/authors.rst +0 -0
  14. {json2xml-6.0.4 → json2xml-6.0.5}/docs/benchmarks.rst +0 -0
  15. {json2xml-6.0.4 → json2xml-6.0.5}/docs/conf.py +0 -0
  16. {json2xml-6.0.4 → json2xml-6.0.5}/docs/contributing.rst +0 -0
  17. {json2xml-6.0.4 → json2xml-6.0.5}/docs/history.rst +0 -0
  18. {json2xml-6.0.4 → json2xml-6.0.5}/docs/index.rst +0 -0
  19. {json2xml-6.0.4 → json2xml-6.0.5}/docs/installation.rst +0 -0
  20. {json2xml-6.0.4 → json2xml-6.0.5}/docs/json2xml.rst +0 -0
  21. {json2xml-6.0.4 → json2xml-6.0.5}/docs/make.bat +0 -0
  22. {json2xml-6.0.4 → json2xml-6.0.5}/docs/modules.rst +0 -0
  23. {json2xml-6.0.4 → json2xml-6.0.5}/docs/readme.rst +0 -0
  24. {json2xml-6.0.4 → json2xml-6.0.5}/docs/usage.rst +0 -0
  25. {json2xml-6.0.4 → json2xml-6.0.5}/json2xml/cli.py +0 -0
  26. {json2xml-6.0.4 → json2xml-6.0.5}/json2xml/dicttoxml.py +0 -0
  27. {json2xml-6.0.4 → json2xml-6.0.5}/json2xml/dicttoxml_fast.py +0 -0
  28. {json2xml-6.0.4 → json2xml-6.0.5}/json2xml/json2xml.py +0 -0
  29. {json2xml-6.0.4 → json2xml-6.0.5}/json2xml/utils.py +0 -0
  30. {json2xml-6.0.4 → json2xml-6.0.5}/json2xml.egg-info/SOURCES.txt +0 -0
  31. {json2xml-6.0.4 → json2xml-6.0.5}/json2xml.egg-info/dependency_links.txt +0 -0
  32. {json2xml-6.0.4 → json2xml-6.0.5}/json2xml.egg-info/entry_points.txt +0 -0
  33. {json2xml-6.0.4 → json2xml-6.0.5}/json2xml.egg-info/requires.txt +0 -0
  34. {json2xml-6.0.4 → json2xml-6.0.5}/json2xml.egg-info/top_level.txt +0 -0
  35. {json2xml-6.0.4 → json2xml-6.0.5}/requirements.in +0 -0
  36. {json2xml-6.0.4 → json2xml-6.0.5}/setup.cfg +0 -0
  37. {json2xml-6.0.4 → json2xml-6.0.5}/setup.py +0 -0
  38. {json2xml-6.0.4 → json2xml-6.0.5}/tests/__init__.py +0 -0
  39. {json2xml-6.0.4 → json2xml-6.0.5}/tests/conftest.py +0 -0
  40. {json2xml-6.0.4 → json2xml-6.0.5}/tests/test_cli.py +0 -0
  41. {json2xml-6.0.4 → json2xml-6.0.5}/tests/test_dict2xml.py +0 -0
  42. {json2xml-6.0.4 → json2xml-6.0.5}/tests/test_json2xml.py +0 -0
  43. {json2xml-6.0.4 → json2xml-6.0.5}/tests/test_missing_coverage.py +0 -0
  44. {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.4
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 (28x faster)**
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 **28x faster** conversion compared to pure Python. It's automatically used when available, with seamless fallback to pure Python.
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 29x faster performance. To develop or build the Rust extension:
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
- - 40µs
468
- - 1.5µs
469
- - **27x**
467
+ - 78µs
468
+ - 1.05µs
469
+ - **75x**
470
470
  * - **Medium JSON** (3.2 KB)
471
- - 2.1ms
472
- - 71µs
473
- - **30x**
471
+ - 2.15ms
472
+ - 15µs
473
+ - **139x**
474
474
  * - **Large JSON** (32 KB)
475
- - 21ms
476
- - 740µs
477
- - **28x**
475
+ - 22ms
476
+ - 151µs
477
+ - **146x**
478
478
  * - **Very Large JSON** (323 KB)
479
- - 213ms
480
- - 7.5ms
481
- - **28x**
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 (28x faster)**
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 **28x faster** conversion compared to pure Python. It's automatically used when available, with seamless fallback to pure Python.
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 29x faster performance. To develop or build the Rust extension:
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
- - 40µs
432
- - 1.5µs
433
- - **27x**
431
+ - 78µs
432
+ - 1.05µs
433
+ - **75x**
434
434
  * - **Medium JSON** (3.2 KB)
435
- - 2.1ms
436
- - 71µs
437
- - **30x**
435
+ - 2.15ms
436
+ - 15µs
437
+ - **139x**
438
438
  * - **Large JSON** (32 KB)
439
- - 21ms
440
- - 740µs
441
- - **28x**
439
+ - 22ms
440
+ - 151µs
441
+ - **146x**
442
442
  * - **Very Large JSON** (323 KB)
443
- - 213ms
444
- - 7.5ms
445
- - **28x**
443
+ - 219ms
444
+ - 1.47ms
445
+ - **149x**
446
446
 
447
447
  **Usage with Rust Extension:**
448
448
 
@@ -2,5 +2,5 @@
2
2
 
3
3
  __author__ = """Vinit Kumar"""
4
4
  __email__ = "mail@vinitkumar.me"
5
- __version__ = "6.0.4"
5
+ __version__ = "6.0.5"
6
6
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: json2xml
3
- Version: 6.0.4
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 (28x faster)**
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 **28x faster** conversion compared to pure Python. It's automatically used when available, with seamless fallback to pure Python.
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 29x faster performance. To develop or build the Rust extension:
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
- - 40µs
468
- - 1.5µs
469
- - **27x**
467
+ - 78µs
468
+ - 1.05µs
469
+ - **75x**
470
470
  * - **Medium JSON** (3.2 KB)
471
- - 2.1ms
472
- - 71µs
473
- - **30x**
471
+ - 2.15ms
472
+ - 15µs
473
+ - **139x**
474
474
  * - **Large JSON** (32 KB)
475
- - 21ms
476
- - 740µs
477
- - **28x**
475
+ - 22ms
476
+ - 151µs
477
+ - **146x**
478
478
  * - **Very Large JSON** (323 KB)
479
- - 213ms
480
- - 7.5ms
481
- - **28x**
479
+ - 219ms
480
+ - 1.47ms
481
+ - **149x**
482
482
 
483
483
  **Usage with Rust Extension:**
484
484
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "json2xml"
7
- version = "6.0.4"
7
+ version = "6.0.5"
8
8
  description = "Simple Python Library to convert JSON to XML"
9
9
  readme = "README.rst"
10
10
  requires-python = ">=3.10"
@@ -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