json2xml 6.0.1__tar.gz → 6.0.3__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.1 → json2xml-6.0.3}/HISTORY.rst +18 -0
  2. {json2xml-6.0.1 → json2xml-6.0.3}/PKG-INFO +61 -47
  3. {json2xml-6.0.1 → json2xml-6.0.3}/README.rst +55 -40
  4. {json2xml-6.0.1 → json2xml-6.0.3}/json2xml/__init__.py +1 -1
  5. {json2xml-6.0.1 → json2xml-6.0.3}/json2xml.egg-info/PKG-INFO +61 -47
  6. {json2xml-6.0.1 → json2xml-6.0.3}/json2xml.egg-info/requires.txt +3 -4
  7. {json2xml-6.0.1 → json2xml-6.0.3}/pyproject.toml +5 -6
  8. {json2xml-6.0.1 → json2xml-6.0.3}/requirements.in +1 -1
  9. {json2xml-6.0.1 → json2xml-6.0.3}/AUTHORS.rst +0 -0
  10. {json2xml-6.0.1 → json2xml-6.0.3}/CONTRIBUTING.rst +0 -0
  11. {json2xml-6.0.1 → json2xml-6.0.3}/LICENSE +0 -0
  12. {json2xml-6.0.1 → json2xml-6.0.3}/MANIFEST.in +0 -0
  13. {json2xml-6.0.1 → json2xml-6.0.3}/docs/Makefile +0 -0
  14. {json2xml-6.0.1 → json2xml-6.0.3}/docs/authors.rst +0 -0
  15. {json2xml-6.0.1 → json2xml-6.0.3}/docs/benchmarks.rst +0 -0
  16. {json2xml-6.0.1 → json2xml-6.0.3}/docs/conf.py +0 -0
  17. {json2xml-6.0.1 → json2xml-6.0.3}/docs/contributing.rst +0 -0
  18. {json2xml-6.0.1 → json2xml-6.0.3}/docs/history.rst +0 -0
  19. {json2xml-6.0.1 → json2xml-6.0.3}/docs/index.rst +0 -0
  20. {json2xml-6.0.1 → json2xml-6.0.3}/docs/installation.rst +0 -0
  21. {json2xml-6.0.1 → json2xml-6.0.3}/docs/json2xml.rst +0 -0
  22. {json2xml-6.0.1 → json2xml-6.0.3}/docs/make.bat +0 -0
  23. {json2xml-6.0.1 → json2xml-6.0.3}/docs/modules.rst +0 -0
  24. {json2xml-6.0.1 → json2xml-6.0.3}/docs/readme.rst +0 -0
  25. {json2xml-6.0.1 → json2xml-6.0.3}/docs/usage.rst +0 -0
  26. {json2xml-6.0.1 → json2xml-6.0.3}/json2xml/cli.py +0 -0
  27. {json2xml-6.0.1 → json2xml-6.0.3}/json2xml/dicttoxml.py +0 -0
  28. {json2xml-6.0.1 → json2xml-6.0.3}/json2xml/dicttoxml_fast.py +0 -0
  29. {json2xml-6.0.1 → json2xml-6.0.3}/json2xml/json2xml.py +0 -0
  30. {json2xml-6.0.1 → json2xml-6.0.3}/json2xml/utils.py +0 -0
  31. {json2xml-6.0.1 → json2xml-6.0.3}/json2xml.egg-info/SOURCES.txt +0 -0
  32. {json2xml-6.0.1 → json2xml-6.0.3}/json2xml.egg-info/dependency_links.txt +0 -0
  33. {json2xml-6.0.1 → json2xml-6.0.3}/json2xml.egg-info/entry_points.txt +0 -0
  34. {json2xml-6.0.1 → json2xml-6.0.3}/json2xml.egg-info/top_level.txt +0 -0
  35. {json2xml-6.0.1 → json2xml-6.0.3}/setup.cfg +0 -0
  36. {json2xml-6.0.1 → json2xml-6.0.3}/setup.py +0 -0
  37. {json2xml-6.0.1 → json2xml-6.0.3}/tests/__init__.py +0 -0
  38. {json2xml-6.0.1 → json2xml-6.0.3}/tests/conftest.py +0 -0
  39. {json2xml-6.0.1 → json2xml-6.0.3}/tests/test_cli.py +0 -0
  40. {json2xml-6.0.1 → json2xml-6.0.3}/tests/test_dict2xml.py +0 -0
  41. {json2xml-6.0.1 → json2xml-6.0.3}/tests/test_json2xml.py +0 -0
  42. {json2xml-6.0.1 → json2xml-6.0.3}/tests/test_missing_coverage.py +0 -0
  43. {json2xml-6.0.1 → json2xml-6.0.3}/tests/test_rust_dicttoxml.py +0 -0
  44. {json2xml-6.0.1 → json2xml-6.0.3}/tests/test_utils.py +0 -0
@@ -1,6 +1,24 @@
1
1
  History
2
2
  =======
3
3
 
4
+ 6.0.3 / 2026-01-29
5
+ ==================
6
+
7
+ * bump version
8
+ * Add rust tests (#271)
9
+ * feat(rust): make PyO3 optional to fix Python 3.14 fuzz linking (#270)
10
+ * chore: bump release
11
+ * fix: upgrade urllib3 to patched version (#269)
12
+ * Update README.rst (#268)
13
+ * docs: update README with comprehensive benchmark results
14
+
15
+ 6.0.2 / 2026-01-20
16
+ ==================
17
+
18
+ * fix: upgrade urllib3 to patched version (#269)
19
+ * Update README.rst (#268)
20
+ * docs: update README with comprehensive benchmark results
21
+
4
22
  6.0.1 / 2026-01-16
5
23
  ==================
6
24
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: json2xml
3
- Version: 6.0.1
3
+ Version: 6.0.3
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
@@ -25,12 +25,11 @@ License-File: AUTHORS.rst
25
25
  Requires-Dist: defusedxml
26
26
  Requires-Dist: urllib3
27
27
  Requires-Dist: xmltodict>=0.12.0
28
- Requires-Dist: pytest
29
- Requires-Dist: pytest-cov
30
- Requires-Dist: coverage
31
- Requires-Dist: setuptools
32
- Provides-Extra: test
33
- Requires-Dist: pytest>=8.4.1; extra == "test"
28
+ Provides-Extra: dev
29
+ Requires-Dist: pytest>=8.4.1; extra == "dev"
30
+ Requires-Dist: pytest-cov; extra == "dev"
31
+ Requires-Dist: coverage; extra == "dev"
32
+ Requires-Dist: setuptools; extra == "dev"
34
33
  Provides-Extra: fast
35
34
  Requires-Dist: json2xml-rs>=0.1.0; extra == "fast"
36
35
  Dynamic: license-file
@@ -80,21 +79,19 @@ Installation
80
79
 
81
80
  pip install json2xml
82
81
 
83
- **With Native Rust Acceleration (29x faster)**
82
+ **With Native Rust Acceleration (28x faster)**
84
83
 
85
84
  For maximum performance, install the optional Rust extension:
86
85
 
87
86
  .. code-block:: console
88
87
 
89
- # Install json2xml with Rust acceleration (when published)
88
+ # Install json2xml with Rust acceleration
90
89
  pip install json2xml[fast]
91
90
 
92
91
  # Or install the Rust extension separately
93
92
  pip install json2xml-rs
94
93
 
95
- The Rust extension provides **29x faster** conversion compared to pure Python. It's automatically used when available, with seamless fallback to pure Python.
96
-
97
- *Note: The ``json2xml-rs`` package will be available on PyPI after the first Rust release.*
94
+ The Rust extension provides **28x faster** conversion compared to pure Python. It's automatically used when available, with seamless fallback to pure Python.
98
95
 
99
96
  **As a CLI Tool**
100
97
 
@@ -467,21 +464,21 @@ For users who need maximum performance within Python, json2xml includes an optio
467
464
  - Rust Extension
468
465
  - Speedup
469
466
  * - **Small JSON** (47 bytes)
470
- - 41µs
471
- - 1.3µs
472
- - **33x**
467
+ - 40µs
468
+ - 1.5µs
469
+ - **27x**
473
470
  * - **Medium JSON** (3.2 KB)
474
471
  - 2.1ms
475
- - 76µs
476
- - **28x**
477
- * - **Large JSON** (32 KB)
478
- - 21.5ms
479
- - 727µs
472
+ - 71µs
480
473
  - **30x**
474
+ * - **Large JSON** (32 KB)
475
+ - 21ms
476
+ - 740µs
477
+ - **28x**
481
478
  * - **Very Large JSON** (323 KB)
482
- - 215ms
483
- - 7.4ms
484
- - **29x**
479
+ - 213ms
480
+ - 7.5ms
481
+ - **28x**
485
482
 
486
483
  **Usage with Rust Extension:**
487
484
 
@@ -511,38 +508,54 @@ For other platforms, the pure Python version is used automatically.
511
508
  Performance Benchmarks
512
509
  ^^^^^^^^^^^^^^^^^^^^^^
513
510
 
514
- Comprehensive benchmarks comparing Python, Go, and Zig implementations:
511
+ Comprehensive benchmarks comparing all implementations (Apple Silicon, January 2026):
515
512
 
516
513
  .. list-table::
517
514
  :header-rows: 1
518
- :widths: 25 20 15 15
515
+ :widths: 22 18 15 15 15 15
519
516
 
520
517
  * - Test Case
521
- - Python (CPython)
518
+ - Python
519
+ - Rust
522
520
  - Go
523
521
  - Zig
524
- * - **Small JSON** (47 bytes)
525
- - 68.88ms
526
- - 7.13ms
527
- - 2.65ms
528
- * - **Medium JSON** (2.6 KB)
529
- - 73.40ms
530
- - 4.85ms
531
- - 2.13ms
532
- * - **Large JSON** (323 KB)
533
- - 420.06ms
534
- - 68.88ms
535
- - 5.90ms
536
- * - **Very Large JSON** (1.6 MB)
537
- - 2.08s
538
- - 288.75ms
539
- - 20.62ms
522
+ - Best
523
+ * - **Small** (47B)
524
+ - 40µs
525
+ - 1.5µs
526
+ - 4.6ms
527
+ - 3.7ms
528
+ - Rust (28x)
529
+ * - **Medium** (3.2KB)
530
+ - 2.1ms
531
+ - 71µs
532
+ - 4.1ms
533
+ - 3.3ms
534
+ - Rust (30x)
535
+ * - **Large** (32KB)
536
+ - 21ms
537
+ - 740µs
538
+ - 4ms
539
+ - 6.1ms
540
+ - Rust (28x)
541
+ * - **Very Large** (323KB)
542
+ - 213ms
543
+ - 7.5ms
544
+ - 4.4ms
545
+ - 33ms
546
+ - Go (48x)
547
+
548
+ **Key Findings:**
549
+
550
+ - **Rust extension**: ~28x faster than Python, zero overhead (best for Python users)
551
+ - **Go CLI**: 48x faster for large files (300KB+), but has ~4ms startup overhead
552
+ - **Zig CLI**: 3-6x faster for medium-large files
540
553
 
541
554
  **Recommendation by Use Case:**
542
555
 
543
- - **Python integration / scripting**: Use this library (json2xml)
544
- - **CLI tool / moderate performance**: Use `json2xml-go <https://github.com/vinitkumar/json2xml-go>`_
545
- - **Maximum performance / large files**: Use `json2xml-zig <https://github.com/vinitkumar/json2xml-zig>`_
556
+ - **Python library calls**: Use ``pip install json2xml[fast]`` (Rust, 28x faster)
557
+ - **Large file CLI processing**: Use `json2xml-go <https://github.com/vinitkumar/json2xml-go>`_ (Go, 48x for 300KB+)
558
+ - **Pure Python required**: Use ``pip install json2xml``
546
559
 
547
560
  For detailed benchmarks, see `BENCHMARKS.md <https://github.com/vinitkumar/json2xml/blob/master/BENCHMARKS.md>`_.
548
561
 
@@ -552,8 +565,9 @@ Other Implementations
552
565
 
553
566
  This library is also available in other languages:
554
567
 
555
- - **Go**: `json2xml-go <https://github.com/vinitkumar/json2xml-go>`_ - 7x faster, native compiled binary
556
- - **Zig**: `json2xml-zig <https://github.com/vinitkumar/json2xml-zig>`_ - 85x faster, maximum performance
568
+ - **Rust**: `json2xml-rs <https://pypi.org/project/json2xml-rs/>`_ - 28x faster, Python extension via PyO3
569
+ - **Go**: `json2xml-go <https://github.com/vinitkumar/json2xml-go>`_ - 48x faster for large files, native CLI
570
+ - **Zig**: `json2xml-zig <https://github.com/vinitkumar/json2xml-zig>`_ - 6x faster, native CLI
557
571
 
558
572
 
559
573
  Help and Support to maintain this project
@@ -43,21 +43,19 @@ Installation
43
43
 
44
44
  pip install json2xml
45
45
 
46
- **With Native Rust Acceleration (29x faster)**
46
+ **With Native Rust Acceleration (28x faster)**
47
47
 
48
48
  For maximum performance, install the optional Rust extension:
49
49
 
50
50
  .. code-block:: console
51
51
 
52
- # Install json2xml with Rust acceleration (when published)
52
+ # Install json2xml with Rust acceleration
53
53
  pip install json2xml[fast]
54
54
 
55
55
  # Or install the Rust extension separately
56
56
  pip install json2xml-rs
57
57
 
58
- The Rust extension provides **29x faster** conversion compared to pure Python. It's automatically used when available, with seamless fallback to pure Python.
59
-
60
- *Note: The ``json2xml-rs`` package will be available on PyPI after the first Rust release.*
58
+ The Rust extension provides **28x faster** conversion compared to pure Python. It's automatically used when available, with seamless fallback to pure Python.
61
59
 
62
60
  **As a CLI Tool**
63
61
 
@@ -430,21 +428,21 @@ For users who need maximum performance within Python, json2xml includes an optio
430
428
  - Rust Extension
431
429
  - Speedup
432
430
  * - **Small JSON** (47 bytes)
433
- - 41µs
434
- - 1.3µs
435
- - **33x**
431
+ - 40µs
432
+ - 1.5µs
433
+ - **27x**
436
434
  * - **Medium JSON** (3.2 KB)
437
435
  - 2.1ms
438
- - 76µs
439
- - **28x**
440
- * - **Large JSON** (32 KB)
441
- - 21.5ms
442
- - 727µs
436
+ - 71µs
443
437
  - **30x**
438
+ * - **Large JSON** (32 KB)
439
+ - 21ms
440
+ - 740µs
441
+ - **28x**
444
442
  * - **Very Large JSON** (323 KB)
445
- - 215ms
446
- - 7.4ms
447
- - **29x**
443
+ - 213ms
444
+ - 7.5ms
445
+ - **28x**
448
446
 
449
447
  **Usage with Rust Extension:**
450
448
 
@@ -474,38 +472,54 @@ For other platforms, the pure Python version is used automatically.
474
472
  Performance Benchmarks
475
473
  ^^^^^^^^^^^^^^^^^^^^^^
476
474
 
477
- Comprehensive benchmarks comparing Python, Go, and Zig implementations:
475
+ Comprehensive benchmarks comparing all implementations (Apple Silicon, January 2026):
478
476
 
479
477
  .. list-table::
480
478
  :header-rows: 1
481
- :widths: 25 20 15 15
479
+ :widths: 22 18 15 15 15 15
482
480
 
483
481
  * - Test Case
484
- - Python (CPython)
482
+ - Python
483
+ - Rust
485
484
  - Go
486
485
  - Zig
487
- * - **Small JSON** (47 bytes)
488
- - 68.88ms
489
- - 7.13ms
490
- - 2.65ms
491
- * - **Medium JSON** (2.6 KB)
492
- - 73.40ms
493
- - 4.85ms
494
- - 2.13ms
495
- * - **Large JSON** (323 KB)
496
- - 420.06ms
497
- - 68.88ms
498
- - 5.90ms
499
- * - **Very Large JSON** (1.6 MB)
500
- - 2.08s
501
- - 288.75ms
502
- - 20.62ms
486
+ - Best
487
+ * - **Small** (47B)
488
+ - 40µs
489
+ - 1.5µs
490
+ - 4.6ms
491
+ - 3.7ms
492
+ - Rust (28x)
493
+ * - **Medium** (3.2KB)
494
+ - 2.1ms
495
+ - 71µs
496
+ - 4.1ms
497
+ - 3.3ms
498
+ - Rust (30x)
499
+ * - **Large** (32KB)
500
+ - 21ms
501
+ - 740µs
502
+ - 4ms
503
+ - 6.1ms
504
+ - Rust (28x)
505
+ * - **Very Large** (323KB)
506
+ - 213ms
507
+ - 7.5ms
508
+ - 4.4ms
509
+ - 33ms
510
+ - Go (48x)
511
+
512
+ **Key Findings:**
513
+
514
+ - **Rust extension**: ~28x faster than Python, zero overhead (best for Python users)
515
+ - **Go CLI**: 48x faster for large files (300KB+), but has ~4ms startup overhead
516
+ - **Zig CLI**: 3-6x faster for medium-large files
503
517
 
504
518
  **Recommendation by Use Case:**
505
519
 
506
- - **Python integration / scripting**: Use this library (json2xml)
507
- - **CLI tool / moderate performance**: Use `json2xml-go <https://github.com/vinitkumar/json2xml-go>`_
508
- - **Maximum performance / large files**: Use `json2xml-zig <https://github.com/vinitkumar/json2xml-zig>`_
520
+ - **Python library calls**: Use ``pip install json2xml[fast]`` (Rust, 28x faster)
521
+ - **Large file CLI processing**: Use `json2xml-go <https://github.com/vinitkumar/json2xml-go>`_ (Go, 48x for 300KB+)
522
+ - **Pure Python required**: Use ``pip install json2xml``
509
523
 
510
524
  For detailed benchmarks, see `BENCHMARKS.md <https://github.com/vinitkumar/json2xml/blob/master/BENCHMARKS.md>`_.
511
525
 
@@ -515,8 +529,9 @@ Other Implementations
515
529
 
516
530
  This library is also available in other languages:
517
531
 
518
- - **Go**: `json2xml-go <https://github.com/vinitkumar/json2xml-go>`_ - 7x faster, native compiled binary
519
- - **Zig**: `json2xml-zig <https://github.com/vinitkumar/json2xml-zig>`_ - 85x faster, maximum performance
532
+ - **Rust**: `json2xml-rs <https://pypi.org/project/json2xml-rs/>`_ - 28x faster, Python extension via PyO3
533
+ - **Go**: `json2xml-go <https://github.com/vinitkumar/json2xml-go>`_ - 48x faster for large files, native CLI
534
+ - **Zig**: `json2xml-zig <https://github.com/vinitkumar/json2xml-zig>`_ - 6x faster, native CLI
520
535
 
521
536
 
522
537
  Help and Support to maintain this project
@@ -2,5 +2,5 @@
2
2
 
3
3
  __author__ = """Vinit Kumar"""
4
4
  __email__ = "mail@vinitkumar.me"
5
- __version__ = "6.0.0"
5
+ __version__ = "6.0.3"
6
6
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: json2xml
3
- Version: 6.0.1
3
+ Version: 6.0.3
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
@@ -25,12 +25,11 @@ License-File: AUTHORS.rst
25
25
  Requires-Dist: defusedxml
26
26
  Requires-Dist: urllib3
27
27
  Requires-Dist: xmltodict>=0.12.0
28
- Requires-Dist: pytest
29
- Requires-Dist: pytest-cov
30
- Requires-Dist: coverage
31
- Requires-Dist: setuptools
32
- Provides-Extra: test
33
- Requires-Dist: pytest>=8.4.1; extra == "test"
28
+ Provides-Extra: dev
29
+ Requires-Dist: pytest>=8.4.1; extra == "dev"
30
+ Requires-Dist: pytest-cov; extra == "dev"
31
+ Requires-Dist: coverage; extra == "dev"
32
+ Requires-Dist: setuptools; extra == "dev"
34
33
  Provides-Extra: fast
35
34
  Requires-Dist: json2xml-rs>=0.1.0; extra == "fast"
36
35
  Dynamic: license-file
@@ -80,21 +79,19 @@ Installation
80
79
 
81
80
  pip install json2xml
82
81
 
83
- **With Native Rust Acceleration (29x faster)**
82
+ **With Native Rust Acceleration (28x faster)**
84
83
 
85
84
  For maximum performance, install the optional Rust extension:
86
85
 
87
86
  .. code-block:: console
88
87
 
89
- # Install json2xml with Rust acceleration (when published)
88
+ # Install json2xml with Rust acceleration
90
89
  pip install json2xml[fast]
91
90
 
92
91
  # Or install the Rust extension separately
93
92
  pip install json2xml-rs
94
93
 
95
- The Rust extension provides **29x faster** conversion compared to pure Python. It's automatically used when available, with seamless fallback to pure Python.
96
-
97
- *Note: The ``json2xml-rs`` package will be available on PyPI after the first Rust release.*
94
+ The Rust extension provides **28x faster** conversion compared to pure Python. It's automatically used when available, with seamless fallback to pure Python.
98
95
 
99
96
  **As a CLI Tool**
100
97
 
@@ -467,21 +464,21 @@ For users who need maximum performance within Python, json2xml includes an optio
467
464
  - Rust Extension
468
465
  - Speedup
469
466
  * - **Small JSON** (47 bytes)
470
- - 41µs
471
- - 1.3µs
472
- - **33x**
467
+ - 40µs
468
+ - 1.5µs
469
+ - **27x**
473
470
  * - **Medium JSON** (3.2 KB)
474
471
  - 2.1ms
475
- - 76µs
476
- - **28x**
477
- * - **Large JSON** (32 KB)
478
- - 21.5ms
479
- - 727µs
472
+ - 71µs
480
473
  - **30x**
474
+ * - **Large JSON** (32 KB)
475
+ - 21ms
476
+ - 740µs
477
+ - **28x**
481
478
  * - **Very Large JSON** (323 KB)
482
- - 215ms
483
- - 7.4ms
484
- - **29x**
479
+ - 213ms
480
+ - 7.5ms
481
+ - **28x**
485
482
 
486
483
  **Usage with Rust Extension:**
487
484
 
@@ -511,38 +508,54 @@ For other platforms, the pure Python version is used automatically.
511
508
  Performance Benchmarks
512
509
  ^^^^^^^^^^^^^^^^^^^^^^
513
510
 
514
- Comprehensive benchmarks comparing Python, Go, and Zig implementations:
511
+ Comprehensive benchmarks comparing all implementations (Apple Silicon, January 2026):
515
512
 
516
513
  .. list-table::
517
514
  :header-rows: 1
518
- :widths: 25 20 15 15
515
+ :widths: 22 18 15 15 15 15
519
516
 
520
517
  * - Test Case
521
- - Python (CPython)
518
+ - Python
519
+ - Rust
522
520
  - Go
523
521
  - Zig
524
- * - **Small JSON** (47 bytes)
525
- - 68.88ms
526
- - 7.13ms
527
- - 2.65ms
528
- * - **Medium JSON** (2.6 KB)
529
- - 73.40ms
530
- - 4.85ms
531
- - 2.13ms
532
- * - **Large JSON** (323 KB)
533
- - 420.06ms
534
- - 68.88ms
535
- - 5.90ms
536
- * - **Very Large JSON** (1.6 MB)
537
- - 2.08s
538
- - 288.75ms
539
- - 20.62ms
522
+ - Best
523
+ * - **Small** (47B)
524
+ - 40µs
525
+ - 1.5µs
526
+ - 4.6ms
527
+ - 3.7ms
528
+ - Rust (28x)
529
+ * - **Medium** (3.2KB)
530
+ - 2.1ms
531
+ - 71µs
532
+ - 4.1ms
533
+ - 3.3ms
534
+ - Rust (30x)
535
+ * - **Large** (32KB)
536
+ - 21ms
537
+ - 740µs
538
+ - 4ms
539
+ - 6.1ms
540
+ - Rust (28x)
541
+ * - **Very Large** (323KB)
542
+ - 213ms
543
+ - 7.5ms
544
+ - 4.4ms
545
+ - 33ms
546
+ - Go (48x)
547
+
548
+ **Key Findings:**
549
+
550
+ - **Rust extension**: ~28x faster than Python, zero overhead (best for Python users)
551
+ - **Go CLI**: 48x faster for large files (300KB+), but has ~4ms startup overhead
552
+ - **Zig CLI**: 3-6x faster for medium-large files
540
553
 
541
554
  **Recommendation by Use Case:**
542
555
 
543
- - **Python integration / scripting**: Use this library (json2xml)
544
- - **CLI tool / moderate performance**: Use `json2xml-go <https://github.com/vinitkumar/json2xml-go>`_
545
- - **Maximum performance / large files**: Use `json2xml-zig <https://github.com/vinitkumar/json2xml-zig>`_
556
+ - **Python library calls**: Use ``pip install json2xml[fast]`` (Rust, 28x faster)
557
+ - **Large file CLI processing**: Use `json2xml-go <https://github.com/vinitkumar/json2xml-go>`_ (Go, 48x for 300KB+)
558
+ - **Pure Python required**: Use ``pip install json2xml``
546
559
 
547
560
  For detailed benchmarks, see `BENCHMARKS.md <https://github.com/vinitkumar/json2xml/blob/master/BENCHMARKS.md>`_.
548
561
 
@@ -552,8 +565,9 @@ Other Implementations
552
565
 
553
566
  This library is also available in other languages:
554
567
 
555
- - **Go**: `json2xml-go <https://github.com/vinitkumar/json2xml-go>`_ - 7x faster, native compiled binary
556
- - **Zig**: `json2xml-zig <https://github.com/vinitkumar/json2xml-zig>`_ - 85x faster, maximum performance
568
+ - **Rust**: `json2xml-rs <https://pypi.org/project/json2xml-rs/>`_ - 28x faster, Python extension via PyO3
569
+ - **Go**: `json2xml-go <https://github.com/vinitkumar/json2xml-go>`_ - 48x faster for large files, native CLI
570
+ - **Zig**: `json2xml-zig <https://github.com/vinitkumar/json2xml-zig>`_ - 6x faster, native CLI
557
571
 
558
572
 
559
573
  Help and Support to maintain this project
@@ -1,13 +1,12 @@
1
1
  defusedxml
2
2
  urllib3
3
3
  xmltodict>=0.12.0
4
- pytest
4
+
5
+ [dev]
6
+ pytest>=8.4.1
5
7
  pytest-cov
6
8
  coverage
7
9
  setuptools
8
10
 
9
11
  [fast]
10
12
  json2xml-rs>=0.1.0
11
-
12
- [test]
13
- pytest>=8.4.1
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "json2xml"
7
- version = "6.0.1"
7
+ version = "6.0.3"
8
8
  description = "Simple Python Library to convert JSON to XML"
9
9
  readme = "README.rst"
10
10
  requires-python = ">=3.10"
@@ -31,10 +31,6 @@ dependencies = [
31
31
  "defusedxml",
32
32
  "urllib3",
33
33
  "xmltodict>=0.12.0",
34
- "pytest",
35
- "pytest-cov",
36
- "coverage",
37
- "setuptools",
38
34
  ]
39
35
 
40
36
  [project.urls]
@@ -47,8 +43,11 @@ json2xml-py = "json2xml.cli:main"
47
43
  include = ["json2xml"]
48
44
 
49
45
  [project.optional-dependencies]
50
- test = [
46
+ dev = [
51
47
  "pytest>=8.4.1",
48
+ "pytest-cov",
49
+ "coverage",
50
+ "setuptools",
52
51
  ]
53
52
  fast = ["json2xml-rs>=0.1.0"]
54
53
 
@@ -1,3 +1,3 @@
1
1
  defusedxml==0.7.1
2
- urllib3==2.5.0
2
+ urllib3==2.6.3
3
3
 
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