Skip to main content

High-performance, memory-efficient XML generator from Dict for Python, written in Rust.

Project description

Obj2XML-rs

High-performance, memory-efficient XML generator for Python, written in Rust.

A fast, deterministic, streaming-capable JSON→XML DSL with Python ergonomics.
obj2xml-rs is a drop-in replacement for libraries like xmltodict.unparse but designed for speed, scalability, and correctness. It leverages Rust's zero-copy optimizations and streaming capabilities to handle massive datasets without exhausting system memory.

🚀 Features

⚡ Blazing Fast: Built on quick-xml with Zero-Copy (Cow<str>) optimizations. 5-15x faster than pure Python.

🌊 True Streaming: Supports Python Generators and Iterators. Writes huge XML files item-by-item directly to disk.

🛡️ Robust Error Context: Exceptions include the full XML path (e.g., Error at root/users/[3]/@id).

🔒 Safe: Includes cycle detection to prevent infinite recursion crashes.

🔧 Professional Spec: Supports Namespaces, CDATA, Comments, Processing Instructions, and deterministic attribute sorting.

🐍 Pythonic: Supports default handlers for custom types (like datetime), similar to json.dump.

📦 Installation

pip install obj2xml-rs

📖 Quick Start

import obj2xml_rs

data = {
    "root": {
    "@id": "123",
    "name": "Rust",
    "features": ["Fast", "Safe"]
    }
}
print(obj2xml_rs.unparse(data, pretty=True))

Output:

<?xml version="1.0" encoding="utf-8"?>
<root id="123">
  <name>Rust</name>
  <features>Fast</features>
  <features>Safe</features>
</root>

Streaming (Low Memory)

Generate XML from a generator. Writes to file incrementally.

def huge_data():
    for i in range(1_000_000):
        yield {"row": {"id": i, "val": f"data_{i}"}}

obj2xml_rs.unparse(
    huge_data(),
    output="large.xml",
    streaming=True,
    item_name="row"
)

📋 Specification & Behavior

This section defines how Python structures map to XML.

1. Reserved Keys

The following keys have special meaning in a dictionary:

Key Description Example
@key XML Attribute (prefix configurable) {"@id": 1} →
#text Element text content {"tag": {"#text": "Hello"}} → Hello
#comment XML Comment {"#comment": "Note"} →
?key Processing Instruction {"?xml-stylesheet": "href..."} →
#tail Text content appearing immediately after the element's closing tag. {"b": {"#text": "Bold", "#tail": " text"}} → < b>Bold</ b> text
cdata CDATA Wrapper {"#text": {"cdata": "x<y"}} →

2. Element Mapping & Lists

Dict Keys: Map directly to XML Element names.
Lists: Keys containing a list generate repeated elements with the same name.

{"items": {"item": [1, 2]}}
<items><item>1</item><item>2</item></items>

Root Primitives: If the input is a list of primitives, they are wrapped in item_name.

unparse([1, 2], item_name="n", full_document=False)
<n>1</n><n>2</n>

3. Attributes & Sorting

Keys starting with attr_prefix (default "@") become attributes.
Values: Any serializable value is accepted. Dicts/Lists in attributes are stringified.
Sorting: Attributes follow Python insertion order by default. Use sort_attributes=True for deterministic output (attributes sorted lexicographically).

4. Namespaces

Namespaces can be declared in three ways:
Static (Root Scope): Best practice for clean XML.

unparse(data, namespaces={"soap": "http://example.com/soap"})
<root xmlns:soap="http://example.com/soap"> ...

Inline Declarations:

{"root": {"@xmlns:x": "urn:x", "x:child": 1}}

Dynamic Assignment:

{"tag": {"@ns": "urn:auto"}}

Automatically generates prefixes (ns0, ns1...)

5. Advanced Nodes

CDATA: Use the cdata key inside a text node.
Comments: Use #comment.
Processing Instructions: Keys starting with ?.

{"root": {"?xml-stylesheet": 'type="text/xsl" href="style.xsl"'}}

6. Constraints & Validation policies

XML Names: No validation of XML name syntax is performed. If you pass {"": 1}, invalid XML will be generated.
Mixed Content: Mixed #text and child elements are allowed.

{"p": {"#text": "Hello", "b": "World"}}
**Valid:** <p>Hello<b>World</b></p>

Root Rules:

 full_document=True (default): Requires exactly one root element.
 full_document=False: Allows multiple roots (XML Fragment).

⚠️ Error Handling

Errors are actionable and include the full path to the problematic node.

def fail_serializer(obj):
    raise ValueError("Bad data")

data = {"users": [{"name": "Alice", "meta": {"@date": object()}}]}

try:
    unparse(data, default=fail_serializer)
except ValueError as e:
    print(e)

Output:

Custom serialization failed: Bad data (at users/[0]/meta/@date)
Circular References: A RecursionError is raised if an object references itself.

⚙️ API Reference

def unparse(
   input: Union[Dict, Iterable, Any],
   *,
   output: Optional[Union[str, IO]] = None,
   encoding: str = "utf-8",
   full_document: bool = True,
   attr_prefix: str = "@",
   cdata_key: str = "#text",
   pretty: bool = False,
   indent: str = "  ",
   compat: str = "native",
   streaming: bool = False,
   default: Optional[Callable[[Any], str]] = None,
   item_name: str = "item",
   sort_attributes: bool = False,
   namespaces: Optional[Dict[str, str]] = None
) -> str:
Argument Description
compat "native" (default, for None) or "dicttoxml" (legacy, ).
default Callback to serialize unknown types. Errors propagate with path context.
streaming If True, writes incrementally. output must be provided.
namespaces Dict of {prefix: uri} declared at the root element.

🖥️ CLI Usage

# Basic
python -m obj2xml_rs input.json -o output.xml --pretty
# Streaming from Pipe
cat huge.json | python -m obj2xml_rs --stream --item-name "record" > out.xml

Python XML Library Comparison Matrix

Feature obj2xml-rs xmltodict xmltodict-rs dicttoxml quick-xmltodict
Language Rust (PyO3) Python Rust (PyO3) Python Rust (PyO3)
Capabilities Write Only Read & Write Read & Write Write Only Read Only
Write Speed High Low High Low N/A
Write Memory Model Streaming / Zero-Copy In-Memory Object Graph In-Memory String In-Memory String N/A
Stream Writing Yes (Generators) No No No N/A
Async Support Yes (asyncio) No No No N/A
Cycle Detection Yes, detects cycles early and
raises path-aware Python exceptions
No — fails with RecursionError No — causes interpreter crash (SIGSEGV) on cyclic input No — fails with RecursionError N/A
Error Context Path-Aware Generic Generic Generic N/A
Attributes Deterministicc Insertion Order Insertion Order Non-deterministic unless pre-sorted N/A
Namespaces Yes Yes Yes Limited N/A

📄 License

This project is licensed under the Apache License 2.0.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

obj2xml_rs-0.1.1.tar.gz (24.4 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

obj2xml_rs-0.1.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (235.1 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

obj2xml_rs-0.1.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (226.1 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

obj2xml_rs-0.1.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl (250.6 kB view details)

Uploaded PyPymanylinux: glibc 2.5+ i686

obj2xml_rs-0.1.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (222.2 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64

obj2xml_rs-0.1.1-cp314-cp314-win_amd64.whl (140.0 kB view details)

Uploaded CPython 3.14Windows x86-64

obj2xml_rs-0.1.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (234.4 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

obj2xml_rs-0.1.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (224.8 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

obj2xml_rs-0.1.1-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl (250.4 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.5+ i686

obj2xml_rs-0.1.1-cp314-cp314-macosx_11_0_arm64.whl (212.8 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

obj2xml_rs-0.1.1-cp314-cp314-macosx_10_12_x86_64.whl (227.6 kB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

obj2xml_rs-0.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (223.2 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

obj2xml_rs-0.1.1-cp313-cp313-win_amd64.whl (141.3 kB view details)

Uploaded CPython 3.13Windows x86-64

obj2xml_rs-0.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (236.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

obj2xml_rs-0.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (225.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

obj2xml_rs-0.1.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl (250.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.5+ i686

obj2xml_rs-0.1.1-cp313-cp313-macosx_11_0_arm64.whl (214.7 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

obj2xml_rs-0.1.1-cp313-cp313-macosx_10_12_x86_64.whl (230.3 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

obj2xml_rs-0.1.1-cp312-cp312-win_amd64.whl (141.2 kB view details)

Uploaded CPython 3.12Windows x86-64

obj2xml_rs-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (236.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

obj2xml_rs-0.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (225.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

obj2xml_rs-0.1.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl (250.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.5+ i686

obj2xml_rs-0.1.1-cp312-cp312-macosx_11_0_arm64.whl (214.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

obj2xml_rs-0.1.1-cp312-cp312-macosx_10_12_x86_64.whl (230.5 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

obj2xml_rs-0.1.1-cp311-cp311-win_amd64.whl (141.8 kB view details)

Uploaded CPython 3.11Windows x86-64

obj2xml_rs-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (235.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

obj2xml_rs-0.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (226.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

obj2xml_rs-0.1.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl (250.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.5+ i686

obj2xml_rs-0.1.1-cp311-cp311-macosx_11_0_arm64.whl (216.1 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

obj2xml_rs-0.1.1-cp311-cp311-macosx_10_12_x86_64.whl (231.2 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

obj2xml_rs-0.1.1-cp310-cp310-win_amd64.whl (141.7 kB view details)

Uploaded CPython 3.10Windows x86-64

obj2xml_rs-0.1.1-cp310-cp310-win32.whl (134.3 kB view details)

Uploaded CPython 3.10Windows x86

obj2xml_rs-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (235.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

obj2xml_rs-0.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (226.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

obj2xml_rs-0.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl (250.8 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.5+ i686

obj2xml_rs-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (235.6 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

obj2xml_rs-0.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (226.2 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

obj2xml_rs-0.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl (250.8 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.5+ i686

obj2xml_rs-0.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (235.5 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

obj2xml_rs-0.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (225.8 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

obj2xml_rs-0.1.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl (250.5 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.5+ i686

File details

Details for the file obj2xml_rs-0.1.1.tar.gz.

File metadata

  • Download URL: obj2xml_rs-0.1.1.tar.gz
  • Upload date:
  • Size: 24.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for obj2xml_rs-0.1.1.tar.gz
Algorithm Hash digest
SHA256 a73a66ab831cc1acd58ff0111bc2b85dafab198efb62bd4122ea9441e81b5884
MD5 dc02682a41175f3f2c206c515deed68d
BLAKE2b-256 a1ee1bd870c853c932b1ddac9c9ada83b75b7dca8b0063a18b0102ddf75e4633

See more details on using hashes here.

File details

Details for the file obj2xml_rs-0.1.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for obj2xml_rs-0.1.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5f0d69f0db5d0e2d5819949cc41cf7eff8f3f9afb0ab37af95ee9a419d6303f0
MD5 b89192e403d0fff7b629da9acbb9145a
BLAKE2b-256 c84d632bfc9c10a01d90ccba7d4c19137330196bc4a3a972f4e334b50545b23c

See more details on using hashes here.

File details

Details for the file obj2xml_rs-0.1.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for obj2xml_rs-0.1.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3d4563bc4eea563fd4028d7ce3147744f225f1752ee312aac16d9994cf7f1196
MD5 75c54b5cbd154727e9ef0357410cdefd
BLAKE2b-256 5e772967c160b1b492f73c40d41d9de05cf5df710af8d581fc048ebf4deeb984

See more details on using hashes here.

File details

Details for the file obj2xml_rs-0.1.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for obj2xml_rs-0.1.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 48411222e6f9ca0261e71af230a182315f0f78097b51856bfc705fd3ef1523d7
MD5 6e83e7d0bce0b085b130b52dcf091c16
BLAKE2b-256 08cf7c3702a3df521b7528def9c8f833f7a5de81f78fce6356798db11c125648

See more details on using hashes here.

File details

Details for the file obj2xml_rs-0.1.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for obj2xml_rs-0.1.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 faa430e3e5a3c8c52ab5f5f4b241117cdcd86a8f26a7b71cea7f796bef2efbe1
MD5 afd612a96c1993cc138cc37775b55fd3
BLAKE2b-256 f56cb691aff234af00d8842626f5adac72cebafd88aafcf87fc076efeefce672

See more details on using hashes here.

File details

Details for the file obj2xml_rs-0.1.1-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: obj2xml_rs-0.1.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 140.0 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for obj2xml_rs-0.1.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 c02430493e18f6ffb786a8a87b65592a5cb05954a4e6dd55c6905c706323b54b
MD5 d89ac1677771d97ed10c4bad38d319c3
BLAKE2b-256 277f66076c9a7c3dee0f4169609254a8b613cd9a52d5b895d69707eda7ce7e7d

See more details on using hashes here.

File details

Details for the file obj2xml_rs-0.1.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for obj2xml_rs-0.1.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 23fcf6e4586062f7d0d13c2f0d69e379a239aeeb88dc9963c52f5c1bcb9f76e7
MD5 6c53ab5b3c3bac450c13e336e2ba8cdc
BLAKE2b-256 36f44d13fb0ec366138b4cf94c7ad2e806abd43c7d40d9588deb4fd146955569

See more details on using hashes here.

File details

Details for the file obj2xml_rs-0.1.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for obj2xml_rs-0.1.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 882498545af88746b437696942a3fc9bbe2bdcc57b34ae2d59382b51cce9356b
MD5 fed739d49457e43bb1f53c135e817ebc
BLAKE2b-256 1ce186fcf26dd0c8e83dff9018dce7687ed0d63286fe8ab7822ddda8aa26dda2

See more details on using hashes here.

File details

Details for the file obj2xml_rs-0.1.1-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for obj2xml_rs-0.1.1-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 ef3a3a1964541b8392f9cb6e0204439abe83c07438cae33748224d23038947aa
MD5 47e8055edd434d414359a750841d8204
BLAKE2b-256 a9233eb6103b9fc09a5a3a516ae192b6fd2567ef4d6ad1aa1e617b8efd64419e

See more details on using hashes here.

File details

Details for the file obj2xml_rs-0.1.1-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for obj2xml_rs-0.1.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bf5905494a0d7064745b9c3b72cfdd9b48e27e654c8811f369953df10612ba19
MD5 4be1150a3cbcea1a24908b8992da978f
BLAKE2b-256 854f7142690f062ff393871f5233a553393299552cebe79ca6c63da022406cf6

See more details on using hashes here.

File details

Details for the file obj2xml_rs-0.1.1-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for obj2xml_rs-0.1.1-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 12eac310215c9400e174ac99e1e77be50a3f28d9ca81d8b3881b227856a1d8b5
MD5 082afbe99ef44d2e093219208436dfce
BLAKE2b-256 0b0030a2b789df495a18a1017e01d501e54cb271d59ab34f4997b4c078c205d1

See more details on using hashes here.

File details

Details for the file obj2xml_rs-0.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for obj2xml_rs-0.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 102b2514a6b088fc8c9e21e23e236c9713f4fa45ef08c093503d60f946e20f45
MD5 c388dd79278a73fc87fa20ebcdd97a9d
BLAKE2b-256 9d5b14912547332b79900422fda8aa9e93f36069404b5bf68a22f2e9e5b73028

See more details on using hashes here.

File details

Details for the file obj2xml_rs-0.1.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: obj2xml_rs-0.1.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 141.3 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for obj2xml_rs-0.1.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 65dc6fb6d88b90b2406bbdc657ee551bacbd827780f5a3f615a50d497a982bac
MD5 13570499adf567c0379e90f07debe7a6
BLAKE2b-256 5f4b9376d7591c4e18a43109bc6b5482f486124be48acd77b1a918e0764130f4

See more details on using hashes here.

File details

Details for the file obj2xml_rs-0.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for obj2xml_rs-0.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1aa3ec946b7f3237bf75bfd3796dc700cc07565e23d469f31365a6ac46136f23
MD5 00ecaa89364abbea0e7c37792391b7fa
BLAKE2b-256 8332c86092b73050dc6dc7547114b26f05bbed8a11cbda34e4a1197be0b29139

See more details on using hashes here.

File details

Details for the file obj2xml_rs-0.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for obj2xml_rs-0.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d48368abb18ffc9aafd81e3c30133658fd3a7e48b127b0e66cb200fa9bb2e1f1
MD5 09bf9714cf62c0be28cbb3bfb975f48e
BLAKE2b-256 7e41eb9c155bcfcc883dc7d64578ff44768f1652f5c81ec1bb95648f477b603d

See more details on using hashes here.

File details

Details for the file obj2xml_rs-0.1.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for obj2xml_rs-0.1.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 eb55e9165f638247d706e61205b1f411c896bb5d47c32fb493fa20240b7c469f
MD5 409f199a658726dec9d4d7ac36badad0
BLAKE2b-256 de49d89cc272b598fc05c1c79ad2c48e49f009da78b46c0caaa8171014099786

See more details on using hashes here.

File details

Details for the file obj2xml_rs-0.1.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for obj2xml_rs-0.1.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 67414f73dc47d1fae3b4dabcf471441e2ed8aed6716a2e59886ce9c09a2f33f5
MD5 6d05ade14e658f9a67171f080f59f71d
BLAKE2b-256 85b6b3a9f90b106fa823bd72f9a76760d81e8bb9f5b400ea3741d359e787a457

See more details on using hashes here.

File details

Details for the file obj2xml_rs-0.1.1-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for obj2xml_rs-0.1.1-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0bdf7dae913c911df11677d66de44349ac52c4af64b1e6b24497832dcc9dfc5d
MD5 145952c42dff13ef4d96fd6adb79080b
BLAKE2b-256 ac4e97d3d340529336a6c6c7bd51bd0d895bb1d76c8e13fefe8e7dd9dbf1d5d2

See more details on using hashes here.

File details

Details for the file obj2xml_rs-0.1.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: obj2xml_rs-0.1.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 141.2 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for obj2xml_rs-0.1.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 d57feb2d5a5293b90132caf2013d886b97373d904e763cb511d858543676d3ff
MD5 d63f7b2dfb8a551a927409de725be1e9
BLAKE2b-256 1648775100d746f9720712609164a9ca49de88a48e9e529278a84f238466df62

See more details on using hashes here.

File details

Details for the file obj2xml_rs-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for obj2xml_rs-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 76dd6976d211c8043b8a5d674960842befb7c3210ff569ae405e1f6580c835a9
MD5 d05e3ac39e0a8bc73cf5426c4d4294fa
BLAKE2b-256 90c1047361be3455d0a47136a5cbf63e100af6b9d4189285e993217adf867ef8

See more details on using hashes here.

File details

Details for the file obj2xml_rs-0.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for obj2xml_rs-0.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6c7c382d2a2796b9139c955902cdf74480d3df85c2a14378ebeb75d23bc8f444
MD5 d2b3c964bab0d844c7d513b910009e08
BLAKE2b-256 e7e3ff79a75a0787c95e912f84d077ec1018b3f54953fb8fec9b366e786a877b

See more details on using hashes here.

File details

Details for the file obj2xml_rs-0.1.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for obj2xml_rs-0.1.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 6814cfc5b183b835ab14b0cb2ff03bfad9f76d20836873208e18e16edfbeb157
MD5 0dc0735ff84eac1f88b2f471e5089953
BLAKE2b-256 7ef326bb96ff6509cc88f054b59db5b678085449f5b14899f58c005e1811f579

See more details on using hashes here.

File details

Details for the file obj2xml_rs-0.1.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for obj2xml_rs-0.1.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 07a0167a5145b7e0dd010e4415044b979131f6a1434e061b93c8528cb027874b
MD5 9ce237c175a865e3a22faaa3ebd063b4
BLAKE2b-256 32129f51da7815005ca85fc23acac722d97da347c419220d4cc957c11d887fbe

See more details on using hashes here.

File details

Details for the file obj2xml_rs-0.1.1-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for obj2xml_rs-0.1.1-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 9ef7acff78a087aeb767cd82bd6a40b59645660039b710fe12fee6060b516a48
MD5 1397395dd3270d94a51f83a598b300c5
BLAKE2b-256 9efe7c02bdda64e182aab78193aed53daf33db1b1677cca304e79f9f498283a7

See more details on using hashes here.

File details

Details for the file obj2xml_rs-0.1.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: obj2xml_rs-0.1.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 141.8 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for obj2xml_rs-0.1.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 7f77a449809b166e0b2a3dbbc3871e194ebb35c374b655100415ffc36eefad61
MD5 a178b21323f2a384619ee1006398532f
BLAKE2b-256 be8f30ad2f88fcd4990ce1b13898af76f986bd1a9f0366bcaf6c19fc97ac0884

See more details on using hashes here.

File details

Details for the file obj2xml_rs-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for obj2xml_rs-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 32543bc244ba0e51baaa8cf38d126af18a7dfb2e34cfff645d17f9766cba4829
MD5 2d8c0c7fa2feb07275680d54fb6306db
BLAKE2b-256 6f6421e3d158aad2c86999467373bced63b149df27288127647fdf804db8dcde

See more details on using hashes here.

File details

Details for the file obj2xml_rs-0.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for obj2xml_rs-0.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7b579ad487d3c149262aff0db977f0bbcb1d2e03359519cde1b3bf1e40478eec
MD5 ae488ac9141412bb62df3c38c339554d
BLAKE2b-256 0859a3107b2e61469e8ff4af46381e118a9e4858fa61b9d624d178be436b31e6

See more details on using hashes here.

File details

Details for the file obj2xml_rs-0.1.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for obj2xml_rs-0.1.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 cafa2b571a06ab0a4ef1e77c52eab1568f2cf757ae93b8f8a0c09f9effacf29d
MD5 e734d6407f6d52d624bfda347f44ff04
BLAKE2b-256 d2383a96bca8ffa77213433e4cceaf977081b8ed9389f201c7f6a36a8d062b9d

See more details on using hashes here.

File details

Details for the file obj2xml_rs-0.1.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for obj2xml_rs-0.1.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 406c8211199b70d14c426873122c9ad03d03a72b6df4f418aa33801ffcf55a21
MD5 859183c086d1ec3b7089e6f1d5e7ec96
BLAKE2b-256 b8adb0a965a508a4ba0828d70ab7b641595c5e3cfe5544a7886f43b8cc06c7cd

See more details on using hashes here.

File details

Details for the file obj2xml_rs-0.1.1-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for obj2xml_rs-0.1.1-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0867d490ec0da0002a0257b73fed27ce91e6af0727352793ddae009a83da9853
MD5 7dfea614ef9e4050ac0b7195e9295d57
BLAKE2b-256 61e57ce0ac9c8f780d592aed2d88e033406ca5d73965343aba8d79f836389da9

See more details on using hashes here.

File details

Details for the file obj2xml_rs-0.1.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: obj2xml_rs-0.1.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 141.7 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for obj2xml_rs-0.1.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 ec524f3369fff04bb120403bc55401d70e42fb87787ed1c2fa9b4cc7608335ca
MD5 e4febdf50586301319589e47ce552380
BLAKE2b-256 390df38c764e10524667013625f48909f30b3565d3cecbe35d94b02cd7580cda

See more details on using hashes here.

File details

Details for the file obj2xml_rs-0.1.1-cp310-cp310-win32.whl.

File metadata

  • Download URL: obj2xml_rs-0.1.1-cp310-cp310-win32.whl
  • Upload date:
  • Size: 134.3 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for obj2xml_rs-0.1.1-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 e2873c3d9d3352890f8214563b69fd7c655060b71df49664678c7f5a4c2feb8d
MD5 8e0cddbb59c76440b0789e1bdc499bf9
BLAKE2b-256 9cbceae9d6b69d76991929b5f7c74bb366381059f6637ce1fe761718fae0dfa6

See more details on using hashes here.

File details

Details for the file obj2xml_rs-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for obj2xml_rs-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a3692f24136b5c1837359836a538f1de1cdaa450f548cb34d7fdf1db128d03c1
MD5 86d91f84badd3ee8973dce54ff5d2f82
BLAKE2b-256 44c7a753c770a1bd09f08b1d46003d82c8615d0adef196214d31a78bc0e933cb

See more details on using hashes here.

File details

Details for the file obj2xml_rs-0.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for obj2xml_rs-0.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 710afd4285b77a097bfbe1c613a43c48954bb966d67c8b1feea642fa9f987b9f
MD5 ad2ed8b1ba275258839fa449c2e3cd63
BLAKE2b-256 589169c9210dbc9e5acf0fc999db45ebe093637471c704b0e66ce5c841a2f235

See more details on using hashes here.

File details

Details for the file obj2xml_rs-0.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for obj2xml_rs-0.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 b51b3814ba8d6e5d7703889acdcf41599a1922d14cc92e0d47f833425f4511af
MD5 0e9c0256bcd359071512d27f458e8da9
BLAKE2b-256 e002903ad3419ae614a56dfadf28cb545c8a2bb8f74041200bdc41d3e0e17da9

See more details on using hashes here.

File details

Details for the file obj2xml_rs-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for obj2xml_rs-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 22ce52184b9679aa848b61235dea4248c5d37799aeae0d7d793187cb1192a90b
MD5 bd3702f9c0de3dd76bfdaf0df98ce8f0
BLAKE2b-256 ae6a101905737673a2ea34b4f1b1410ce01e01693b153e24f0e97b40e1a919fa

See more details on using hashes here.

File details

Details for the file obj2xml_rs-0.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for obj2xml_rs-0.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 354363b127bc199ae53d6f4bbf2452ee880194c457756781bbf239c2568b2910
MD5 e84a37206b78ecd2571d933eca499ba2
BLAKE2b-256 db116508a590089a43dd98cf0ec04b5d821da2d73c142359239caf2d149a9e93

See more details on using hashes here.

File details

Details for the file obj2xml_rs-0.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for obj2xml_rs-0.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 c3825c93c20a009715ceb827b4af0cf1207284af9cecbe290cbf719251e1c163
MD5 9195fb1589f159f5a1422a36a3cd42ea
BLAKE2b-256 2b472fe4195ab36e65a257c8be164cfe1fb39397e15084b1d691e68e815792bd

See more details on using hashes here.

File details

Details for the file obj2xml_rs-0.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for obj2xml_rs-0.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 05872cf4930148c375a77a40c48594e0d89d3d00bad207fbd7e85c514c1016de
MD5 dd9b93e17e33b1d87f350caae5461c90
BLAKE2b-256 90c0f89de083cf5f6964800bc6c8c6a36c3a43c8e943429f878b8283e00ecb44

See more details on using hashes here.

File details

Details for the file obj2xml_rs-0.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for obj2xml_rs-0.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5a08b669e574b8ab75ba42fd41109c8dbbf0cd8ed4d15cac0ab85873babd379a
MD5 604d14e56ffb3ca7671fb127bd91a3c1
BLAKE2b-256 50088779db13627a610a0cce52bebd04963433e6e275203d40a59ecd1deb4ebb

See more details on using hashes here.

File details

Details for the file obj2xml_rs-0.1.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for obj2xml_rs-0.1.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 757c184e3ed42b152053abfaf2dd04a939319f1f08953f88a58a2345056135cd
MD5 3f87371a981ddbc5a3ceae8267f7cd3d
BLAKE2b-256 088fddb526b0f58863848984c6abf47bdd680aa7a7959560e39d8d6afff01411

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page