diff --git a/HISTORY.rst b/HISTORY.rst index 31473378..cbc356cf 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -1,4 +1,12 @@ +6.4.0 / 2026-07-13 +================== + + * perf: buffer Rust serializer writes in bounded 16 KiB chunks, reducing large-payload conversion time while keeping serializer memory near 80 MiB + * chore: release ``json2xml-rs`` 0.4.1 and require it from ``json2xml[fast]`` for accelerated installs + * docs: record before-and-after Rust buffering benchmarks and the unchanged XML output size + + 6.3.0 / 2026-06-10 ================== diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 0d29c1d9..2f4b2360 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,3 +1,24 @@ +# json2xml 6.4.0 and json2xml_rs 0.4.1 + +Released 2026-07-13. + +## Highlights + +- Added bounded 16 KiB buffering to the Rust serializer's direct Python-bytes output path. +- Reduced the 5,000-record benchmark median from roughly 4.8 ms to 2.4 ms while keeping serializer memory near 80 MiB. +- Kept XML output byte-for-byte identical. + +## Package Versions + +- Python package: `json2xml==6.4.0` +- Rust accelerator package: `json2xml-rs==0.4.1` +- Fast install: `pip install "json2xml[fast]"` + +## Verification + +The release passed the Python and Rust test suites, Rust wheel builds across supported platforms, and the Rust wheel compatibility matrix. + + # json2xml 6.3.0 and json2xml_rs 0.4.0 Released 2026-06-10. diff --git a/json2xml/__init__.py b/json2xml/__init__.py index 45a0c8b5..e5a66f36 100644 --- a/json2xml/__init__.py +++ b/json2xml/__init__.py @@ -2,4 +2,4 @@ __author__ = """Vinit Kumar""" __email__ = "mail@vinitkumar.me" -__version__ = "6.3.0" +__version__ = "6.4.0" diff --git a/pyproject.toml b/pyproject.toml index e80e1a30..1a8aba83 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "json2xml" -version = "6.3.0" +version = "6.4.0" description = "Simple Python Library to convert JSON to XML" readme = "README.rst" requires-python = ">=3.10" @@ -50,7 +50,7 @@ dev = [ "pygments>=2.20.0", "xmltodict>=0.12.0", ] -fast = ["json2xml-rs>=0.4.0"] +fast = ["json2xml-rs>=0.4.1"] [tool.pytest.ini_options] testpaths = ["tests"] diff --git a/rust/Cargo.toml b/rust/Cargo.toml index 33cef105..b0844121 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "json2xml_rs" -version = "0.4.0" +version = "0.4.1" edition = "2024" rust-version = "1.96" description = "Fast native JSON to XML conversion for Python" diff --git a/rust/README.md b/rust/README.md index ed989429..285793b7 100644 --- a/rust/README.md +++ b/rust/README.md @@ -76,7 +76,7 @@ The Rust implementation is expected to be 5-15x faster than pure Python for: - Type dispatch (compiled match statements vs. `isinstance()` chains) - String building (pre-allocated buffers vs. f-string concatenation) -Version 0.4.0 builds on the direct Python bytes writer with lower allocation +Version 0.4.1 builds on the direct Python bytes writer with lower allocation pressure in hot serializer paths. The previous 0.3.0 release reduced the measured serializer RSS delta for a 100,000-record benchmark by about 49% compared with the earlier Rust implementation. diff --git a/rust/pyproject.toml b/rust/pyproject.toml index f500a7a3..491fe234 100644 --- a/rust/pyproject.toml +++ b/rust/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "maturin" [project] name = "json2xml_rs" -version = "0.4.0" +version = "0.4.1" description = "Fast native JSON to XML conversion - Rust extension for json2xml" readme = "README.md" requires-python = ">=3.9" diff --git a/uv.lock b/uv.lock index db82e970..e089a7cc 100644 --- a/uv.lock +++ b/uv.lock @@ -147,7 +147,7 @@ wheels = [ [[package]] name = "json2xml" -version = "6.1.0" +version = "6.4.0" source = { editable = "." } dependencies = [ { name = "defusedxml" }, @@ -171,7 +171,7 @@ fast = [ requires-dist = [ { name = "coverage", marker = "extra == 'dev'" }, { name = "defusedxml" }, - { name = "json2xml-rs", marker = "extra == 'fast'", specifier = ">=0.1.0" }, + { name = "json2xml-rs", marker = "extra == 'fast'", specifier = ">=0.4.1" }, { name = "pygments", marker = "extra == 'dev'", specifier = ">=2.20.0" }, { name = "pytest", marker = "extra == 'dev'", specifier = ">=8.4.1" }, { name = "pytest-cov", marker = "extra == 'dev'" }, @@ -183,37 +183,39 @@ provides-extras = ["dev", "fast"] [[package]] name = "json2xml-rs" -version = "0.1.0" +version = "0.4.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ea/97/afe3215edcbde896e3846135bd2f65b3cd7367ca244d7f387542d3949df4/json2xml_rs-0.1.0.tar.gz", hash = "sha256:ed18705aec2a82a0e75dae1a87564ba2b6b1a55e67e6971a27fd191d0211f5b1", size = 6818, upload-time = "2026-01-16T07:07:41.493Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9b/48/bfce5499488c57a1d2dc07c35ade98edd0b4f385828e537132e220a703ab/json2xml_rs-0.4.1.tar.gz", hash = "sha256:dbf19cfe93cee3c245cffa64668fde9380d85a33da716bfbd43a9b41bc2c7e6e", size = 8914, upload-time = "2026-07-13T17:06:28.075Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/70/52/cdfa87959134f14d358580186c3d4383540e6b4cf5cc56aade9709694d05/json2xml_rs-0.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6521c7449f4e508e2e7cc8f1d8f51271907eda5625498fe792a694c26cd44732", size = 252216, upload-time = "2026-01-16T07:07:02.692Z" }, - { url = "https://files.pythonhosted.org/packages/dd/b6/3625b0cd4980d4e1a057dd1e46ebadb2ab62445c37b7b2c6d73fd19e304f/json2xml_rs-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a704ffe01ddf39164c449ff2e785dceae2dbc6dfb1c171df394daaf70194fbb3", size = 255887, upload-time = "2026-01-16T07:07:04.334Z" }, - { url = "https://files.pythonhosted.org/packages/71/5b/ab0db2244c59d510b52fb63fa04ff8e91fe964b5ce499d5c28d9ad08aa23/json2xml_rs-0.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:61126a14639993d52d006cb9ed7c2fa56726e0546bf211b8cbadaa5f2972f88e", size = 142579, upload-time = "2026-01-16T07:07:05.796Z" }, - { url = "https://files.pythonhosted.org/packages/b5/42/e47e73ce250bfd84f13fbde49f453762d30c44a4d1162a4a8ddd7d3f722f/json2xml_rs-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:c7fc90e5321d24ba01b5f62b3450d8e959ef853f4be7df2495c28315f00de0b2", size = 246839, upload-time = "2026-01-16T07:07:07.274Z" }, - { url = "https://files.pythonhosted.org/packages/64/06/0267c6ae103c0f3bff1ace951c65843027a3fbc8405c0f3e9b52f2634f89/json2xml_rs-0.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a49cd932c3c3235fa1e5a1b43b4819d7aa671521ed9219bd97f6106224061775", size = 234573, upload-time = "2026-01-16T07:07:08.528Z" }, - { url = "https://files.pythonhosted.org/packages/be/af/5db9a09b9e2b2a0e769a4c3bfb7c05aa55dc47bc5c0554f1f53802d09ff9/json2xml_rs-0.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3765426ef0e5d4e67435c120147a58bd4cb6645bd918588adee76168439bbf52", size = 252006, upload-time = "2026-01-16T07:07:09.948Z" }, - { url = "https://files.pythonhosted.org/packages/33/f2/c8b8ee32ae4ee4407430b735bd5f4eee24b13717c2625527f0c5a41d55ae/json2xml_rs-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b4d6f133d27a36c6152d18a8165f48b884066e0151e72e4d1f96a3c7ffd38b0", size = 255785, upload-time = "2026-01-16T07:07:11.412Z" }, - { url = "https://files.pythonhosted.org/packages/57/31/6b2dea975242269bd3680a78c4a7f3b3720f331e5a18151d68231bfbbb67/json2xml_rs-0.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:84de55847a1df0e32da30e3d315775d0c54930fc50ebec11cd24a32b59974a2a", size = 142599, upload-time = "2026-01-16T07:07:12.752Z" }, - { url = "https://files.pythonhosted.org/packages/fb/b8/acd009b7333b012711ba2f193aca03418f7542925902b895189d2654ab72/json2xml_rs-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:c24cc9fcbb1fc8d3c69e4fc0a5181f07bcff5b0b8fc6775bc5492246176c6ee8", size = 246885, upload-time = "2026-01-16T07:07:13.95Z" }, - { url = "https://files.pythonhosted.org/packages/bd/09/245f3c7ed829dc560d622a34540bd8200910efd5c016a07185fe1d231d9e/json2xml_rs-0.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:eb69bbf52d2ccbb849c922707e79b1f8e626d666f4bcf5b4826206c0af9e9588", size = 234142, upload-time = "2026-01-16T07:07:14.955Z" }, - { url = "https://files.pythonhosted.org/packages/a2/96/d2b6510660456fd2a9d3e8b0f5ecd59b58ca62d22184821b86f35d210c60/json2xml_rs-0.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97c46b34278f9514a7e62b8df4ecae6531630a0436137296abf86943cb2df33c", size = 251997, upload-time = "2026-01-16T07:07:16.305Z" }, - { url = "https://files.pythonhosted.org/packages/71/51/3dd8b65b25797a84fe637dacce48c9d0d86d5ffa242e7d4236a6a1d40a39/json2xml_rs-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de927b01f6658291940964dc0da702c63ea8d4b03d28c56ce28f2ce8ca8514b4", size = 256356, upload-time = "2026-01-16T07:07:17.453Z" }, - { url = "https://files.pythonhosted.org/packages/d0/07/68461cc3116d953affdde3e835125c50ea8a351c209e7441ece0c64bff8f/json2xml_rs-0.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:aa534e436800ca26e21082cbb8037dd25b9ee89cec59d10969ff4e87f99c0568", size = 141266, upload-time = "2026-01-16T07:07:18.844Z" }, - { url = "https://files.pythonhosted.org/packages/cd/cf/6937de660d73b1b62f948be9e03ee0c14be952309c6a6d3450b6ce177f0c/json2xml_rs-0.1.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:9d735d4a4cfcbc6da12c5b26fb0d39fbef4a4fc41399f6b0d446a2d724c16243", size = 246592, upload-time = "2026-01-16T07:07:20.253Z" }, - { url = "https://files.pythonhosted.org/packages/80/f4/7294a9bca10bb018e8913dc40dc08a8e822d36b40027abecfe6b6735b7aa/json2xml_rs-0.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5036520e1bb0f6de84203ebb357fd0436407abd8b9669e12bcfd7205ecb99486", size = 233933, upload-time = "2026-01-16T07:07:21.552Z" }, - { url = "https://files.pythonhosted.org/packages/3d/f8/906cbd6f9850c1b29fbb78d704ab525210dfddf668131aa50c6584fe7fb8/json2xml_rs-0.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a1e05e5e132ae957528884ba5e7f2c6164b0842de30f22b20b3736dc3e725fc", size = 251921, upload-time = "2026-01-16T07:07:23.031Z" }, - { url = "https://files.pythonhosted.org/packages/b5/24/2192a3e0db48be0bcf0cdb5fdf6e0eeace7eee062132f2865abe7417c2ba/json2xml_rs-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7c75bb05b5d4e7f59ee988f114cc587b85c231d7533a2367f1d80810d8e90fc", size = 256119, upload-time = "2026-01-16T07:07:24.252Z" }, - { url = "https://files.pythonhosted.org/packages/2a/df/ea41556ce06da0135eedb488c7fcc0771970c8574feed268f1b1885a2bc1/json2xml_rs-0.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:678f7ff66752c888a100cc83d2d505414b6af7d02bf059257648d52b7ad3cf12", size = 141063, upload-time = "2026-01-16T07:07:25.38Z" }, - { url = "https://files.pythonhosted.org/packages/25/a6/b6029f8e47f5d6822b00fce93a6cbaab0640d54053d467befb6755c5e94c/json2xml_rs-0.1.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4caaf6eeb9a78492594d6c9959b9c3a69723dc053c96cecb73ee7c62ab634a4f", size = 251057, upload-time = "2026-01-16T07:07:27.257Z" }, - { url = "https://files.pythonhosted.org/packages/70/da/f3ce87aa2f9fb613ebb98a10b5b9959fcc521212c48b2ae0ed2f867b6b60/json2xml_rs-0.1.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:e3ec5cc97615025a2e42eb9d9a9a14ec0351949d6c1ba339f3405019a5fda1f1", size = 247079, upload-time = "2026-01-16T07:07:28.644Z" }, - { url = "https://files.pythonhosted.org/packages/e3/fa/62d6a149198e5311e08e2e3ab299585996ddf151a8a9d28e6acd565c60f1/json2xml_rs-0.1.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:2ab2c206a0542f7ae17f1a48dcca1eeccba53e347214a1604cec9d59fe260c3c", size = 234609, upload-time = "2026-01-16T07:07:29.903Z" }, - { url = "https://files.pythonhosted.org/packages/9d/2f/801674ba823c79df46882d18df17b5514dd8e25164f7d0bb81de85a3dfa2/json2xml_rs-0.1.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97eee4ba5381c5c5ccbda400ec722d3f971349c88438cc177d0dcb4110e7d008", size = 252456, upload-time = "2026-01-16T07:07:31.311Z" }, - { url = "https://files.pythonhosted.org/packages/c2/15/a1a3fa0e84e54b56c481c519a73f591a35998eec7c664977c0b291c2b149/json2xml_rs-0.1.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:551b20ff86e1c4fdf92222646e19def72e067d1787448de1f9765cf2bbdaf9cd", size = 256833, upload-time = "2026-01-16T07:07:32.942Z" }, - { url = "https://files.pythonhosted.org/packages/c1/51/c1baddec4d22c537d09416dd5b997e6be3553a7c769f154c1cb77f2604b1/json2xml_rs-0.1.0-cp314-cp314-win_amd64.whl", hash = "sha256:b7477235fb770f05d646a8f79d19dc8cbb3f8a1fefdf1b8a826eb579a787e37a", size = 141769, upload-time = "2026-01-16T07:07:34.148Z" }, - { url = "https://files.pythonhosted.org/packages/7b/33/a644916a637b4ec39c3d5cc18d45850a266f90eb00437fd7955473311dfc/json2xml_rs-0.1.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c27caf152b3fd41ad442055f29484e66eff46c9c6a77d933f484919df1871f9", size = 251006, upload-time = "2026-01-16T07:07:35.228Z" }, - { url = "https://files.pythonhosted.org/packages/fa/ae/b857eb917fb8d9e571baba4ebf2fd6020106bf1f4184ae9bfe5163bf9c15/json2xml_rs-0.1.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d90b338acfc0c91c092c7370b62cf93665094117e494f06f14976a8af832f7be", size = 253579, upload-time = "2026-01-16T07:07:38.521Z" }, - { url = "https://files.pythonhosted.org/packages/83/47/03c6118738741541ae714cb05a334e94d2edb4f6741983d917910ed3387b/json2xml_rs-0.1.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a4db22c4df096a519a671672590e9f299cdc1dd8504327d230a54273c1557e4e", size = 256981, upload-time = "2026-01-16T07:07:39.612Z" }, + { url = "https://files.pythonhosted.org/packages/ac/37/0585f1b0fae8a4e0c82d5312e52f41a0bb1d09a33dbf08f94a384105a7ed/json2xml_rs-0.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa4d185d6786aca2f7458eaa4ce52594c05902d0f9676b1566e862962ea75e11", size = 229081, upload-time = "2026-07-13T17:05:40.019Z" }, + { url = "https://files.pythonhosted.org/packages/1f/a4/a2394e43e7e861b4b14784b70ecc229d8a06a1dede555a172105d2bf45b2/json2xml_rs-0.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d7bce8bb920e942f6a4283d44c81a168e65fc7ab9575a9b2435ef22a0d60b8d", size = 230950, upload-time = "2026-07-13T17:05:41.934Z" }, + { url = "https://files.pythonhosted.org/packages/a6/11/4ad4e7f031baa699cc56e536e33a9d8840e65008bb93f25ca61dcd942a37/json2xml_rs-0.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:90824b0754f9a2e6f252b867848605973ebdcf6ffc0e697aa4d670cc991e7323", size = 117686, upload-time = "2026-07-13T17:05:43.422Z" }, + { url = "https://files.pythonhosted.org/packages/56/73/d82523fcd6f61878d86f87f8101cf3943c9e0e3c964634f1d13126088f97/json2xml_rs-0.4.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:74984dd97a1048984e396013afdc13c1110c506f5fd4f2d29f694290572a3f0d", size = 222412, upload-time = "2026-07-13T17:05:45.008Z" }, + { url = "https://files.pythonhosted.org/packages/1c/d8/3dd97f1da5898d30b2ed58caf4e5d99f45d7b8888914e8f61e0819ea3dc1/json2xml_rs-0.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c4b315c5d2c24b2897f136bb1dda8f91e2ab764312ac534a3af34e50d2b2fadc", size = 213292, upload-time = "2026-07-13T17:05:46.726Z" }, + { url = "https://files.pythonhosted.org/packages/68/9e/c7363a6042bde846d8947312cfa8877a01e83a6977fa43fd80f4eb29f0cf/json2xml_rs-0.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2880d03274cd67564d9699c46615e79efea1a6e0bf9f06c5b4e6f57fbfc61ff6", size = 228754, upload-time = "2026-07-13T17:05:48.192Z" }, + { url = "https://files.pythonhosted.org/packages/95/5a/9c0a539bb55c55d089e3d70e59fe04628333017d792681e82b35e9fe902d/json2xml_rs-0.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5084cbb7ba964e3cb0a16eba2e84caba72d73fcc17c53cc9f5ab2491bc4960a5", size = 230828, upload-time = "2026-07-13T17:05:49.699Z" }, + { url = "https://files.pythonhosted.org/packages/20/d9/31276b02aaecdd57b8a25c4e645575e1645e12fee13329a42d5daf339dbf/json2xml_rs-0.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:7b6e57ee8877472d20c788a271f2432b0ae4728eeced6ff935945e71c24f2a34", size = 117578, upload-time = "2026-07-13T17:05:51.202Z" }, + { url = "https://files.pythonhosted.org/packages/37/c2/83e72a246053a4cd0491c698f8767d339e0296c06bcd177fac3d371ea3b6/json2xml_rs-0.4.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:cfc9e004f4e68b68baec94ba4cb3992c41559cd87de2043191752cf485dee365", size = 221538, upload-time = "2026-07-13T17:05:52.614Z" }, + { url = "https://files.pythonhosted.org/packages/e1/92/334cb874cfdfe6be0a116f390deb98a18bd5a2b1bbc21e2f8260284f0401/json2xml_rs-0.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fb985dc9c85c8827fd0fa41461d1911b3d8727c7af89a8ad4fe75add962f9a1c", size = 212626, upload-time = "2026-07-13T17:05:54.253Z" }, + { url = "https://files.pythonhosted.org/packages/f6/69/57f2f2a5fcd9ff0868e51722c3af23f598d9c8f56c71a77e6e5938eae178/json2xml_rs-0.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:216e92edd74eed0fd23afc031d45f2c2d923601ad8ced8cc22716e4b2a9284d3", size = 228511, upload-time = "2026-07-13T17:05:55.739Z" }, + { url = "https://files.pythonhosted.org/packages/eb/eb/7b45931346c862b65ec5076dcccb77f4b2f90bb42e72d13a3f108fddbc95/json2xml_rs-0.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b5483f085e0b99b0cd540c61bf3cc226d2e650fcf48dccdee98fb7d5ea72de5", size = 230760, upload-time = "2026-07-13T17:05:57.802Z" }, + { url = "https://files.pythonhosted.org/packages/b6/a0/a75b82cff8fcd5054b5f0f7a95c77f3a002650b8ef4bbc77b52aa98f97f4/json2xml_rs-0.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:c25d6ecd31e3457ad0046023242be1443ede4fc0061dabfa06b9a161b047af51", size = 116141, upload-time = "2026-07-13T17:05:59.223Z" }, + { url = "https://files.pythonhosted.org/packages/11/db/5adff090727f864c37d113ab47d8000e5e1978efe06a905fca0239ba9490/json2xml_rs-0.4.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:bdfe8c44dfe7745ef3dbb0eb73db92daf65621392f2343fac73e07bad68eaa22", size = 221748, upload-time = "2026-07-13T17:06:00.698Z" }, + { url = "https://files.pythonhosted.org/packages/ab/ec/8c69c2604d8a2c11421b75ff6c8e91b0ded55d6acf9553ffcb333df828ab/json2xml_rs-0.4.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4f05dfb166ca6743d6cd4831f012f37ba9935b19c43df7e4d229bbb83f6751dd", size = 212755, upload-time = "2026-07-13T17:06:02.326Z" }, + { url = "https://files.pythonhosted.org/packages/c8/e3/e317794dfdb40c28b9bda7d9bb1d96fdedc072b217ab3d56a0ee3877ab2a/json2xml_rs-0.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a8c4dac06e64ba0fed8c25256a56de1fcec6a96f9a556f7718b0ee474fa177b8", size = 228452, upload-time = "2026-07-13T17:06:04.012Z" }, + { url = "https://files.pythonhosted.org/packages/4a/7b/4c55143bf8c14390fe9f4ab89e4c25ada1aca73392e5c6d9c1836722ec29/json2xml_rs-0.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d12d81cf4f062f5c00d35e2df9850bed5658dba346951e48a7bbef3b345d7ce", size = 230860, upload-time = "2026-07-13T17:06:05.419Z" }, + { url = "https://files.pythonhosted.org/packages/93/16/c154da9ad023d3442bd4cc9aa190d5893ba704220546060c9fcaeb9f86b8/json2xml_rs-0.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:1cbf1ce9e18d6a72c0d39e211e21534358e32f37e63a1a8a894850f1cdd690c6", size = 116324, upload-time = "2026-07-13T17:06:07.05Z" }, + { url = "https://files.pythonhosted.org/packages/5b/3f/a7a67c3a153eb0365a745164dda65878f829ccdb4938b5c03ee2896dd4d2/json2xml_rs-0.4.1-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:e7875b727f5cc610530189b4f89530dd167d27c67c9b69945e52fc3e8ab51889", size = 221559, upload-time = "2026-07-13T17:06:08.411Z" }, + { url = "https://files.pythonhosted.org/packages/fb/d1/a6875d15decdfa0ae99f9343620681303c0acfcaf143f65a33df373b2864/json2xml_rs-0.4.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:9ea5f30c8975dcc3707679fe604b0a942865e586320972b38d7d2be1de606c63", size = 212526, upload-time = "2026-07-13T17:06:10.003Z" }, + { url = "https://files.pythonhosted.org/packages/8f/67/78cda0d6327eb070df0c73463f70a1e3d7e3c146a8b2e086b1954890a0a5/json2xml_rs-0.4.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df3a0574823d32d723ed9859e37ebe5214698fb7e44c064d0d981c61bb049c85", size = 228134, upload-time = "2026-07-13T17:06:11.435Z" }, + { url = "https://files.pythonhosted.org/packages/c6/77/49c4753c215b957e11b6ef09203208f8f89d63c6aeebdc12c11869070c1f/json2xml_rs-0.4.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0c102cd456ef0e8df86866036b8c8ad8e8f9c849e3e4888d04ce84a1d74af87", size = 230656, upload-time = "2026-07-13T17:06:12.998Z" }, + { url = "https://files.pythonhosted.org/packages/c7/ea/04a244cab81d45eab1dd1390216a3b9eb7dc4e13dd35c725a23d9731faeb/json2xml_rs-0.4.1-cp314-cp314-win_amd64.whl", hash = "sha256:3d00c5494ef307b4c30e0db38e7c4c06d62f79325292b9a7d7500a4d278fbfac", size = 116198, upload-time = "2026-07-13T17:06:14.474Z" }, + { url = "https://files.pythonhosted.org/packages/f9/c7/bb4504020a56f4261b4ab1c154fc6c1d2ecd12f3efc80b266801a7fb8fd2/json2xml_rs-0.4.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88b38b46d51402d2c84de2dade3f1f22fe734d150888459b94c98592215468bd", size = 227103, upload-time = "2026-07-13T17:06:15.855Z" }, + { url = "https://files.pythonhosted.org/packages/3c/5f/ebaa62c9638bd9d24deca908b1669b7a8116f8bdc15ac9af7cd3c85531fc/json2xml_rs-0.4.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a617ce050a24429b620c830a9c63696c495c49c850e3e3f285a1db4ec3c15c4b", size = 229906, upload-time = "2026-07-13T17:06:17.278Z" }, + { url = "https://files.pythonhosted.org/packages/5e/61/399bfd831209e8048ebcf682fbb5dfe77d54a88cc2101eb482c4d09ee87e/json2xml_rs-0.4.1-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad559dd9a5347c737ae836e6ec099ae4809de3047f966f29cbb8057912e71c8a", size = 230209, upload-time = "2026-07-13T17:06:18.768Z" }, + { url = "https://files.pythonhosted.org/packages/5d/b6/029a61bda8b99acdb55f9b9fe20bd8fe3aea640c188441314619fc8d57bf/json2xml_rs-0.4.1-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7cc455557f2513b16180d62f0d9e7beec0c1443aa8002ed24e1a991068de0ae4", size = 229388, upload-time = "2026-07-13T17:06:20.397Z" }, + { url = "https://files.pythonhosted.org/packages/00/2b/c35ad343890bafa34e23679036e3359f3ed926a654b2ffa8a6710708ca66/json2xml_rs-0.4.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e20248aff6da25605614cb79ea101397a06adbcbdcdfa2086ac96776e397f9a9", size = 230599, upload-time = "2026-07-13T17:06:25.287Z" }, + { url = "https://files.pythonhosted.org/packages/81/a2/9e04945abd24b1b864818cd493e013f0f27e13b44d26be592e0c9e9ecc4d/json2xml_rs-0.4.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9552062589e85bb8ead1b68355d481e431bb95954e121abf9675465257f81bc", size = 232677, upload-time = "2026-07-13T17:06:26.809Z" }, ] [[package]]