Skip to main content

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

Project description

Obj2XML-rs

PyPI version Python Versions

High-performance, memory-efficient XML serializer and parser for Python, written in Rust.

A fast, deterministic, streaming-capable JSON↔XML tool with Python ergonomics. obj2xml-rs is a drop-in replacement for libraries like xmltodict 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

1. Unparse (Dict → XML)

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>

2. Parse (XML → Dict)

xml = '<root id="1"><item>A</item><item>B</item></root>'
data = obj2xml_rs.parse(xml)
print(data)
# {'root': {'@id': '1', 'item': ['A', 'B']}}

3. Streaming (Low Memory Write)

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:

  1. Static (Root Scope): Best practice for clean XML.
    unparse(data, namespaces={"soap": "http://example.com/soap"})
    # <root xmlns:soap="http://example.com/soap"> ...
    
  2. Inline Declarations:
    {"root": {"@xmlns:x": "urn:x", "x:child": 1}}
    
  3. 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 {"<invalid>": 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

Unparse (Write)

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:

Parse (Read)

def parse(
    xml_input: Union[str, bytes, IO],
    *,
    encoding: Optional[str] = None,
    attr_prefix: str = "@",
    cdata_key: str = "#text",
    force_cdata: bool = False,
    process_namespaces: bool = False,
    namespace_separator: str = ":",
    strip_whitespace: bool = True,
    force_list: Optional[Iterable[str]] = None,
    process_comments: bool = False
) -> Dict[str, Any]:

CLI Usage

JSON to XML (Unparse)

# Basic
python -m obj2xml_rs unparse input.json -o output.xml --pretty

# Streaming from Pipe
cat huge.json | python -m obj2xml_rs unparse --stream --item-name "record" > out.xml

XML to JSON (Parse)

# Convert XML file to JSON
python -m obj2xml_rs parse data.xml -o data.json --pretty

# Force specific tags to be lists
python -m obj2xml_rs parse data.xml --force-list item user

Python XML Library Comparison Matrix

Feature obj2xml-rs xmltodict xmltodict-rs dicttoxml quick-xmltodict
Language Rust (PyO3) Python Rust (PyO3) Python Rust (PyO3)
Capabilities Read & Write 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.2.0.tar.gz (29.5 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.2.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (277.4 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

obj2xml_rs-0.2.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (265.8 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

obj2xml_rs-0.2.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl (296.8 kB view details)

Uploaded PyPymanylinux: glibc 2.5+ i686

obj2xml_rs-0.2.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (260.1 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64

obj2xml_rs-0.2.0-cp314-cp314-win_amd64.whl (182.2 kB view details)

Uploaded CPython 3.14Windows x86-64

obj2xml_rs-0.2.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (275.6 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

obj2xml_rs-0.2.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (264.2 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

obj2xml_rs-0.2.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl (296.4 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.5+ i686

obj2xml_rs-0.2.0-cp314-cp314-macosx_11_0_arm64.whl (250.2 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

obj2xml_rs-0.2.0-cp314-cp314-macosx_10_12_x86_64.whl (268.9 kB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

obj2xml_rs-0.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (261.7 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

obj2xml_rs-0.2.0-cp313-cp313-win_amd64.whl (183.7 kB view details)

Uploaded CPython 3.13Windows x86-64

obj2xml_rs-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (278.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

obj2xml_rs-0.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (265.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

obj2xml_rs-0.2.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl (297.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.5+ i686

obj2xml_rs-0.2.0-cp313-cp313-macosx_11_0_arm64.whl (252.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

obj2xml_rs-0.2.0-cp313-cp313-macosx_10_12_x86_64.whl (271.4 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

obj2xml_rs-0.2.0-cp312-cp312-win_amd64.whl (184.1 kB view details)

Uploaded CPython 3.12Windows x86-64

obj2xml_rs-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (278.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

obj2xml_rs-0.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (264.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

obj2xml_rs-0.2.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl (296.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.5+ i686

obj2xml_rs-0.2.0-cp312-cp312-macosx_11_0_arm64.whl (251.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

obj2xml_rs-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl (270.8 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

obj2xml_rs-0.2.0-cp311-cp311-win_amd64.whl (184.0 kB view details)

Uploaded CPython 3.11Windows x86-64

obj2xml_rs-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (278.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

obj2xml_rs-0.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (265.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

obj2xml_rs-0.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl (297.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.5+ i686

obj2xml_rs-0.2.0-cp311-cp311-macosx_11_0_arm64.whl (253.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

obj2xml_rs-0.2.0-cp311-cp311-macosx_10_12_x86_64.whl (271.7 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

obj2xml_rs-0.2.0-cp310-cp310-win_amd64.whl (184.0 kB view details)

Uploaded CPython 3.10Windows x86-64

obj2xml_rs-0.2.0-cp310-cp310-win32.whl (176.8 kB view details)

Uploaded CPython 3.10Windows x86

obj2xml_rs-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (278.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

obj2xml_rs-0.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (265.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

obj2xml_rs-0.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl (297.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.5+ i686

obj2xml_rs-0.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (278.6 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

obj2xml_rs-0.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (265.5 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

obj2xml_rs-0.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl (297.5 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.5+ i686

obj2xml_rs-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (278.5 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

obj2xml_rs-0.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (265.2 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

obj2xml_rs-0.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl (297.1 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.5+ i686

File details

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

File metadata

  • Download URL: obj2xml_rs-0.2.0.tar.gz
  • Upload date:
  • Size: 29.5 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.2.0.tar.gz
Algorithm Hash digest
SHA256 9367ef30ef48bd9b76dcb6be9fa9ed4fb2c183c518e121b49e96ee8ed605321b
MD5 f72048f964afacf09bbdacd1c6a5c573
BLAKE2b-256 b23f847fbee1b0cd87e951524de0d94fa4a79069cd465ad0957280d7cfdbfe41

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for obj2xml_rs-0.2.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 773f00f8842acf40332559b6d6782ac7e9094b1bb561799193854932d91020bc
MD5 691111998f87cf0afef183eefd71d79b
BLAKE2b-256 7f08a758ba939326146b1ad0dd7992abb3f0d39c5729443eb9206c2e84434307

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for obj2xml_rs-0.2.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8d3fe8fa8e984528b592d452182716b909c36275bccba936984a64ced3f3a64a
MD5 0f3fd4c6ec91deb0d894963c6c296f18
BLAKE2b-256 0ff315f4857458a37218f1fc860b4cd89e12af590b9a3725a11502cef8ac2a2f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for obj2xml_rs-0.2.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 178f81455237bc5e1881b4c833261f2683442a605a0c28b3e463fa2ed5d1a9f0
MD5 24e4b1df86e9411730f70116ba3e7e0e
BLAKE2b-256 2b9a5e1c27beafe73b077af8bb4b5d6fa0e99752c9d743cab42af7355dcff12c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for obj2xml_rs-0.2.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 51846e6093431ab9227d80aa55ae3c6c9f6538112b225906ef2ac23aca3d9332
MD5 05358c4ecdc24a4de4bce564ac62ab45
BLAKE2b-256 6f4a4d893cd02de1a7859301bdb3618c25ea3d78671bf4e4583931b001fd9381

See more details on using hashes here.

File details

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

File metadata

  • Download URL: obj2xml_rs-0.2.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 182.2 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.2.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 4c4b0e2d54eea513579ce02273bc7c999acb49a634b39d1d1ee2b4137ba451dc
MD5 be532a8d93d4221e6405981ee2f010e9
BLAKE2b-256 1efad55366932cd06c40a264ecd5ef00c2a982b60d3f6577f83122fbfa6f7d39

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for obj2xml_rs-0.2.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a446eabecaffffb89935f44a844bb473f77c2b04e0fb168796cd1e9daf2f0701
MD5 a3b4e78213c21d1544befeb9a0f5caad
BLAKE2b-256 d822caebdf0368a100059c175f6b51ea3127fd82f09102dafe6f41deee3d1550

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for obj2xml_rs-0.2.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a25a0796aff33de8f4478d46d05ebb5d0d2a80ee4d9520c2c9ec065c98a5d8f2
MD5 8d52e4a4bf6052ab9027d196837dcc45
BLAKE2b-256 5d0be9fe5b64e239b1612c0d0cab0de28df40a0d81021a8f2c3e56fb2ede0f1e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for obj2xml_rs-0.2.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 303e0a5d79c4dd64e3a56da556fc5cec7905af2b50661a61245ea9af8233cf51
MD5 1a6ff04ec596fb76a461a3251f006e73
BLAKE2b-256 8a9474368d4e2de75a829e97432a45cd04254d3cb601544317e455f66c214953

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for obj2xml_rs-0.2.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ff5c4c31457ddecda89e67cec425049f041c9ecc87aa37899cd324b4095777a8
MD5 6c8336d94b70fd95123cd1ce30f76155
BLAKE2b-256 50d3ab3b18653194c5d6add03902c76712a5c30a75ac8f4d7f7596f7b95d8888

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for obj2xml_rs-0.2.0-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 7fe037ccff6ea98e85ba0f55bd97de596e7be690c10bacf5f560b681cbff6a08
MD5 15cc5055d5c99ccce77fc0b804b37dd4
BLAKE2b-256 f045ee8558ac982eae9a4a153e432876a2f99edaf6a758b8efc1f6ee921c1b9d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for obj2xml_rs-0.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d1b801e7dd417546c8a57c25b3b37c9bd2cf533a97da166ebe5d3d3f6f5780c1
MD5 a7cf43fa8ea20193d443c7d0a3d06ca1
BLAKE2b-256 68aea8de2d3205616e99bd389b7d15d1f0851955838c459d6e5c17d8c1696d1f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: obj2xml_rs-0.2.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 183.7 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.2.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 f3790079f77bb7321e349c88ed2eb66cb0a884423487c1105d77426cfd7c6da3
MD5 7decdd7ce484b0c96380c846929219ed
BLAKE2b-256 c764efe9ca633a9afd4e5a28fddbd31650be349802eacfabacb8ba970525dc09

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for obj2xml_rs-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c1c0f036e26f13aa1a5d4c6d090200ab1857316b68e378b505aef9b4db1ae3fb
MD5 3e5d6ef83950c6b9694c03e1a24159fb
BLAKE2b-256 21054721ec263d37c24cf661f21a480311aba5ed86047cdd68ecea33668db8c6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for obj2xml_rs-0.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7107dde79f25d58148d34dc7530f8ab8b87fb288cd969e999b0352ce33f36dfa
MD5 31b88099a752ca90141e9265fdbf2bb9
BLAKE2b-256 c69c14b6e206e7d71bd40d754da06c64a452c1a62fe61a9cdb121679baaddce6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for obj2xml_rs-0.2.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 90a88241e4ce9b861075fde4f3e39f7d8273a6a15f2b13e9ddcf211beb75d5bc
MD5 0a8deb3f64e91343f2b67d8aa813ff58
BLAKE2b-256 6ba7f2901c6331f9ad39e4583745d7847e737c21cd0c04ee88bb824335ea4d2f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for obj2xml_rs-0.2.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9caae22916ef0380f347f1194b06e901bacb460c6b18ecb114d89dbc7d7fc213
MD5 1d8f1f345b0556174830ce7237d52421
BLAKE2b-256 75846beeb669e5eeee474b0795438d97b331231950b73869114a93ff868a3f4b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for obj2xml_rs-0.2.0-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 9fa726cb797586e065f9f64b266178b2e21688dfe538ef892619d6046606fa6c
MD5 a198d3d0e4e17cd2664536ea2975590a
BLAKE2b-256 b586083165c9613bfcb184fc479710c988e92360212151577e0bf8f7936ba25b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: obj2xml_rs-0.2.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 184.1 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.2.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 0833e3ca41e9aa5ab3a9237719791b13ca056a240e80082b3b493fad6617029d
MD5 8a11dc98fceffa47b2db6aefed0d7896
BLAKE2b-256 ce8c7250ee56bff4693149199384134feec52fae93c9c601a7caeb3130744029

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for obj2xml_rs-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5f84ca77d6a550bb84cf578e20307803ae9f7165e5e46ea41c367cda7b036c72
MD5 7b88b8cf929885b489b49fc3715e4ddd
BLAKE2b-256 34e655db787fcc31f0e3ea0db83ac24af50f3d48ffe286df80431b5d3e851fa1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for obj2xml_rs-0.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0124ee5df026af3b52654739efa47f1b6679b4ac45542ddc69a333c254528598
MD5 98d3c014ed63e7f2ea9c1d8ecc5f14da
BLAKE2b-256 534ee9f523a18217be5c0daf1cec531ac599fb904f4a5dead97e8a15d05bd073

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for obj2xml_rs-0.2.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 f4c61633d69f2457446891c6842302ed8c67b066cd9966977c7c7bc4bd817e05
MD5 083f180a1b1153dcd131c86e623b74ce
BLAKE2b-256 925e9302f4e55f98acb3275b9ecd709e295c2904c688ae600e53f634708714fa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for obj2xml_rs-0.2.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ef5883d00153b2908c8796127a0f8bb13e32dd112069fe38446fc0c9a536b9cb
MD5 3b60aadab0e24d2c521060e4c57c089d
BLAKE2b-256 af62ea50b0e8a0e8c87b9912c91dc907325a40982477082d2a75ada55dffea40

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for obj2xml_rs-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 5ab332cc8218e5e3de6ec452da070f280b6f90e9c25b2f593c046d24e3c3d640
MD5 a874a258f2dae589f0d85f47d84dbf23
BLAKE2b-256 37b69d4c71cbf3dfca2b9e9bf5662275b92a300a7c9fa020f0a92ad896117e85

See more details on using hashes here.

File details

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

File metadata

  • Download URL: obj2xml_rs-0.2.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 184.0 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.2.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 70dca09faf11ebfccb9bff9702359a8f0ef44f83467a1664c0181d807e7b3560
MD5 438278c7b575d41953273719489e0a1d
BLAKE2b-256 9de22d97c68bd752823c69973db8b356e0797c74e5636aa253f59b4bb107cf38

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for obj2xml_rs-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bd6a1662233772d24c4907767325b62244599fbf92f151df0f0e83dd841d5f9d
MD5 b1a4d8e4045a5a95ba6e76d6d34d0811
BLAKE2b-256 37b22551ec155ebcc27990f0d49c6027f63a0de14c1ec9e226ee36f47356eefc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for obj2xml_rs-0.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 eb929b5fe742abf385e7ee1222c35fe387864fa174969814e44ac042e3d418b9
MD5 dd293db28c7c4264538ab22d5ded7af1
BLAKE2b-256 e61b6dfc06eef7090899b6af3ee8ec4774f6a75c6bdc0427db1e5be1665d7020

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for obj2xml_rs-0.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 33440e26624e00a88a41b45c6742110650cd9081fcf0834fe2bf89baf466ceb1
MD5 2acd06263ed2d92e62899e3cb95753e2
BLAKE2b-256 70632bd79adddc60200bc36d988b5f13a66d308b2257794829c39975fcbdecfe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for obj2xml_rs-0.2.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4ac55b216dd5c930aeaac6b9ccb8190e83f0519686c8881cf2bee151708dd248
MD5 04142cea44d5f96a29ce1a508d6cf1ee
BLAKE2b-256 2e05be97210ba753e762a4c0927895741592e3d3c357c636ab37a581a0e8450d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for obj2xml_rs-0.2.0-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 774828c2f04755b25a7b96120fbbd62d57f65259f24aa650dd20a2c372e6ab0c
MD5 6bb4bf0fd2421eafeda02e751b31c755
BLAKE2b-256 b73c1fa5aeeb41950df93b4d6d20fdf3da73fde7e2f5dc28aef04e4f1cd5bc28

See more details on using hashes here.

File details

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

File metadata

  • Download URL: obj2xml_rs-0.2.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 184.0 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.2.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 de343973396ac044cb1b7a1d2d049414680aa37645d90e54f59fa9397c9499e9
MD5 d32958e3d12bc78d293ca2a712b2fe12
BLAKE2b-256 392553fee3e8cf80754b99502844d12653258e7fca3cf3457a37b1281dd58bec

See more details on using hashes here.

File details

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

File metadata

  • Download URL: obj2xml_rs-0.2.0-cp310-cp310-win32.whl
  • Upload date:
  • Size: 176.8 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.2.0-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 357fc4e3c4155414e712c43dffc7e69ba45c77f2651ab1f294bb5be379816092
MD5 9350240d50229f605b5be28415ef1f50
BLAKE2b-256 c222f0d7f589af301ceab7c316c06bcfa50cfbb6abd136ca2be1dbc988a9bb67

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for obj2xml_rs-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 778191e7e616085b718d8a42e390be7f803d83510da628cbdb0bd8bdbb454e5f
MD5 ccc1c6fcf9d366033e3b83c2d9a28b3d
BLAKE2b-256 0ba16ceb4cf15ca406596e9127378abe60d6d7bc39461b9e9c26ad790b953ff1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for obj2xml_rs-0.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 82ef5d1df50ebfc1d4ddf25935dc1ef2ab9677c549a48e3c2f196640e0b68ddc
MD5 affe094f6f8c9dbc054e8b335fd1cc31
BLAKE2b-256 f1dcec2fc3eaa6087f1f465ce3a7f9fe0663878f6091347331347ae1463722ff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for obj2xml_rs-0.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 452092dadcf7d1ba7059cce0ff357056a5531be8f3e994e00f7b1c3caa928281
MD5 9910cfbd965b3ce987d6eceffc745601
BLAKE2b-256 5c1ccd30c98da8233ba21de5d0c2cd426372ff050b7e33812929218d01dd23be

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for obj2xml_rs-0.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7761c9398ecb5460aad5aec74bee6be702f20a57bf577297b299e0bd92a34dd5
MD5 e14002c1ebee1b6f448abc9fe7a42b13
BLAKE2b-256 3ac36ac99f75a11d43a45f1d6792049894b7e73c8157d9123cbcc8d15c8672e9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for obj2xml_rs-0.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4a53e392e8926d4c7802973297aeaf2ab0f3834fc7e47deec9ff240d6ef14d48
MD5 af1c5dd5bb93c7e92cc2cb2cbd2caab3
BLAKE2b-256 1dd020e4af37f5816c7c3bd6bccfe7de893f4cb60370ba292fa9315044e787aa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for obj2xml_rs-0.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 f281fb057750d3c40cecb97d6e049eccd9f3cb80dcd88ff2dc720c32ef6530ed
MD5 5aebf5f5732456e0918cb2161503aecd
BLAKE2b-256 88fd88219293027727b13c3076d9c96c17c90fa898bb45499d9e06fca5373ef5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for obj2xml_rs-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5b08caed6c2958954a25709608fa1e2c704e221b6b4a462254a10e1d335e5646
MD5 d25a6648915c5bf24cfb8e59f2e4ff1b
BLAKE2b-256 821ae672d468d57ba160cbf34219adda631df7867388a1212658fc2753778dc1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for obj2xml_rs-0.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3bf521e52641a99ce2417288b8974cb8d4d2ddd804d56d3eb8b7cf657ee49ae0
MD5 d3ca0f3021d8f2fef28699ddd5623e3e
BLAKE2b-256 f66ed0969c57d475f0408cdeee90b95b3e7ea32383bc83cfd8113dac57cc8bff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for obj2xml_rs-0.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 aed74051f775c8124a5e7e4b128ede8611b38f222b0cadd0513db9137215c759
MD5 6d05309f85bc008be0856785fb75ece6
BLAKE2b-256 11b2e06c3848853900cc71cfb564fe89037c8fad684d24db308113e8b3a23484

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