Skip to main content

High-performance Cython XML parser for Python — pugixml with a Pythonic API

Project description

pygixml

Python Versions PyPI version License: MIT Build Status Documentation Status GitHub Stars

A high-performance XML parser for Python based on Cython and pugixml. Fast parsing, full XPath 1.0 support, and a clean Pythonic API for reading, writing, and transforming XML.

📚 View Full Documentation


Why pygixml?

Speed, memory, and size. pygixml brings pugixml's battle-tested C++ parser directly to Python — with numbers that speak for themselves.

Parsing Performance (5 000 elements, 50 iterations)

Library Avg Time Speedup vs ElementTree
pygixml 0.0009 s 9.2× faster
lxml 0.0041 s 2.0× faster
ElementTree 0.0083 s 1.0× (baseline)

Memory Usage (5 000 elements, peak)

Library Peak Memory vs ElementTree
pygixml 0.67 MB 7.2× less
lxml 0.67 MB 7.2× less
ElementTree 4.84 MB 1.0×

Package Size

Library Installed Size vs lxml
pygixml 0.43 MB 12.7× smaller
lxml 5.48 MB 1.0×

All numbers from benchmarks/full_benchmark.py. See the Performance page for the full comparison across 6 XML sizes.

Features

  • Blazing-fast parsing — up to 14× faster than ElementTree
  • Low memory — 7× less than ElementTree, on par with lxml
  • Tiny footprint — 0.43 MB installed (12.7× smaller than lxml)
  • Full XPath 1.0 — complete query engine with all standard functions
  • Pythonic API — intuitive properties and methods, not a direct C++ mirror
  • objectify — lxml.objectify-style dotted navigation
  • dictify — xmltodict-compatible XML → dict conversion
  • Cross-platform — Windows, Linux, macOS
  • Text extraction — recursive text gathering with configurable joins
  • XML serialization — output with custom indentation
  • Node iteration — depth-first traversal of the entire document

Installation

# From PyPI
pip install pygixml

# Or from GitHub
pip install git+https://github.com/MohammadRaziei/pygixml.git

Quick Start

import pygixml

# Parse XML from string
xml = """
<library>
    <book id="1" category="fiction">
        <title>The Great Gatsby</title>
        <author>F. Scott Fitzgerald</author>
        <year>1925</year>
    </book>
    <book id="2" category="fiction">
        <title>1984</title>
        <author>George Orwell</author>
        <year>1949</year>
    </book>
</library>
"""

doc = pygixml.parse_string(xml)
root = doc.root                           # <library>

# Access children and attributes
book = root.child("book")
print(book.name)                          # book
print(book.attribute("id").value)         # 1
print(book.child("title").text())         # The Great Gatsby

# XPath queries
fiction = root.select_nodes("book[@category='fiction']")
print(f"Found {len(fiction)} fiction books")

# Create & save
doc = pygixml.XMLDocument()
root = doc.append_child("catalog")
root.append_child("item").set_value("Hello")
doc.save_file("output.xml")

Properties vs Methods

A quick reference so you don't get tripped up:

Properties (no ()) Methods (need ())
node.name, node.value, node.type node.child(name)
node.parent, node.next_sibling node.first_child()
node.xml, node.xpath node.append_child(name)
attr.name, attr.value node.set_value(v)
doc.root node.select_nodes(query)
node.first_attribute()
node.text()

objectify — dotted navigation

pygixml.objectify provides an lxml.objectify-inspired interface for navigating XML with plain Python attribute access.

from pygixml import objectify

xml = """
<database name="users_db" version="1.2">
    <user-profile id="101" verified="true">
        <first_name>Mohammad</first_name>
        <balance>450.75</balance>
    </user-profile>
    <entry>Value A</entry>
    <entry>Value B</entry>
</database>
"""

root = objectify.from_string(xml)

# Dotted navigation — underscores map to hyphens automatically
print(root.user_profile.first_name)        # ObjectifiedElement(<first_name>)
print(str(root.user_profile.first_name))   # 'Mohammad'

# Automatic type inference for attributes
print(root.version)                        # 1.2   (float)
print(root.user_profile.id)               # 101   (int)
print(root.user_profile.verified)         # True  (bool)

# Text content
print(str(root.user_profile.first_name))  # 'Mohammad'   always str
print(root.user_profile.balance())        # 450.75        type-inferred

# Repeated siblings — indexing and iteration
print(root.entry[0])                      # ObjectifiedElement
print([str(e) for e in root.entry])       # ['Value A', 'Value B']

# Safe attribute access — never raises
print(root.get('version'))                # 1.2
print(root.get('missing', 'default'))     # 'default'

# Search descendants
print(root.find('balance'))               # ObjectifiedElement(<balance>)
print(root.find('balance', recursive=False))  # None  (not a direct child)
print(root.findall('entry'))              # [ObjectifiedElement, ...]

# Write support — modify in place
root.user_profile.first_name = "Ali"      # update child element text
root.version = 2.0                        # update attribute
root.timeout = 30                         # create new child element

# Delete
del root.timeout                          # remove child element
del root.version                          # remove attribute

objectify API

Feature Behaviour
root.child_tag First <child_tag> element; falls back to <child-tag>
root.attr_name Attribute value (type-inferred) when no child matches
root.tag[n] Index into repeated siblings
for e in root.tag Iterate repeated siblings
str(elem) Raw text content, always str
elem() Type-inferred text content
elem.get(name, default) Safe attribute read, never raises
elem.find(tag) First matching descendant, or None
elem.findall(tag) All matching descendants
elem.name = value Update child text or attribute; create child if absent
del elem.name Remove child element or attribute
elem.tag XML tag name string
elem.attrib {name: typed_value} dict of all attributes
elem.xml Serialised XML of the subtree
Child beats attribute When both share a name, child wins (read and write)

dictify — XML to dict

pygixml.dictify converts XML to a nested dict, compatible with the xmltodict library.

from pygixml import dictify

xml = """
<database name="users_db" version="1.2">
    <user-profile id="101" verified="true">
        <first_name>Mohammad</first_name>
        <balance>450.75</balance>
    </user-profile>
    <entry>Value A</entry>
    <entry>Value B</entry>
</database>
"""

# Parse XML → dict
d = dictify.parse(xml)
# {
#   'database': {
#     '@name': 'users_db',
#     '@version': '1.2',
#     'user-profile': {
#       '@id': '101', '@verified': 'true',
#       'first_name': 'Mohammad', 'balance': '450.75'
#     },
#     'entry': ['Value A', 'Value B']
#   }
# }

# Repeated siblings → list automatically
print(d['database']['entry'])             # ['Value A', 'Value B']

# Attributes prefixed with '@'
print(d['database']['@name'])             # 'users_db'

# Custom options
d = dictify.parse(xml,
    attr_prefix='',       # no prefix — attrs and children in same namespace
    cdata_key='text',     # key for text content (default '#text')
    force_list={'entry'}, # always a list, even with one element
)

# Parse from file
d = dictify.parse_file('data.xml')

# Convert back to XML
xml_out = dictify.unparse(d, pretty=True, indent='\t')
print(xml_out)

dictify API

Parameter Default Description
attr_prefix "@" Prefix added to attribute keys
cdata_key "#text" Key for text content in mixed nodes
force_list None Tag names always wrapped in a list; pass True for all
Function Description
dictify.parse(xml, **opts) Parse XML string → dict
dictify.parse_file(path, **opts) Parse XML file → dict
dictify.unparse(d, pretty, indent, ...) dict → XML string

Advanced Features

Text Content Extraction

import pygixml

xml = """
<root>
    <simple>Hello World</simple>
    <nested>
        <child>Child Text</child>
        More text
    </nested>
    <mixed>Text <b>with</b> mixed <i>content</i></mixed>
</root>
"""

doc = pygixml.parse_string(xml)
root = doc.root

print(root.child("simple").text())                # Hello World
print(root.child("nested").text(join=" | "))      # Child Text | More text
print(root.child("mixed").text(recursive=False))  # Text

XML Serialization

import pygixml

doc = pygixml.XMLDocument()
root = doc.append_child("root")
root.append_child("item").set_value("content")

print(root.xml)
# <root>
#   <item>content</item>
# </root>

print(root.to_string("    "))  # 4-space indent

Document Iteration

import pygixml

doc = pygixml.parse_string("<root><a/><b/></root>")

for node in doc:
    print(f"{node.type:12s} {node.name}")
# document
# element       root
# element       a
# element       b

Modifying XML

import pygixml

doc = pygixml.parse_string("<person><name>John</name></person>")
root = doc.root

root.child("name").set_value("Jane")
root.child("name").name = "full_name"
root.append_child("age").set_value("30")

print(root.xml)
# <person>
#   <full_name>Jane</full_name>
#   <age>30</age>
# </person>

XPath Support

Full XPath 1.0 via pugixml's engine:

import pygixml

xml = """
<library>
    <book id="1" category="fiction">
        <title>The Great Gatsby</title>
        <author>F. Scott Fitzgerald</author>
        <year>1925</year>
        <price>12.99</price>
    </book>
    <book id="2" category="fiction">
        <title>1984</title>
        <author>George Orwell</author>
        <year>1949</year>
        <price>10.99</price>
    </book>
</library>
"""

doc = pygixml.parse_string(xml)
root = doc.root

# Select nodes
books = root.select_nodes("book")
print(f"Found {len(books)} books")

# Predicates
fiction = root.select_nodes("book[@category='fiction']")
print(f"Found {len(fiction)} fiction books")

# Single node
book = root.select_node("book[@id='2']")
if book:
    print(book.node.child("title").text())    # 1984

# Pre-compiled query for repeated use
query = pygixml.XPathQuery("book[year > 1930]")
recent = query.evaluate_node_set(root)
print(f"Found {len(recent)} books published after 1930")

# Scalar evaluations
avg = pygixml.XPathQuery("sum(book/price) div count(book)").evaluate_number(root)
print(f"Average price: ${avg:.2f}")           # Average price: $11.99

has_orwell = pygixml.XPathQuery("book[author='George Orwell']").evaluate_boolean(root)
print(f"Has Orwell books: {has_orwell}")       # Has Orwell books: True

Supported XPath

Category Examples
Node selection //book, /library/book, book[1]
Attributes book[@id], book[@category='fiction']
Boolean ops and, or, not()
Comparisons =, !=, <, >, <=, >=
Math +, -, *, div, mod
Functions position(), last(), count(), sum(), string(), number()
Axes child::, attribute::, descendant::, ancestor::
Wildcards *, @*, node()

Core API

Class / Module Purpose
XMLDocument Document-level operations: load, save, append-child
XMLNode Navigate, read, and modify individual nodes
XMLAttribute Attribute name and value access
XPathQuery Pre-compiled XPath queries for repeated evaluation
XPathNode Single XPath result (wraps a node or attribute)
XPathNodeSet Collection of XPath results
objectify lxml.objectify-style dotted navigation
dictify xmltodict-compatible XML → dict conversion

Module-level functions: parse_string(xml), parse_file(path).


Benchmarks

python benchmarks/full_benchmark.py
python benchmarks/benchmark_parsing.py

Compares pygixml against lxml and xml.etree.ElementTree. Results are printed as tables and saved to benchmarks/results/benchmark_full.json.


Documentation

📖 Full docs: https://mohammadraziei.github.io/pygixml/


License

MIT License — see LICENSE.

Enjoy pygixml? Star the repository ⭐ 👉 Star pygixml on GitHub


Acknowledgments

  • pugixml — Fast and lightweight C++ XML library
  • Cython — C extensions for Python
  • scikit-build — Modern Python build system

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

pygixml-0.11.0.tar.gz (703.7 kB view details)

Uploaded Source

Built Distributions

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

pygixml-0.11.0-cp314-cp314t-win_amd64.whl (235.0 kB view details)

Uploaded CPython 3.14tWindows x86-64

pygixml-0.11.0-cp314-cp314t-win32.whl (199.9 kB view details)

Uploaded CPython 3.14tWindows x86

pygixml-0.11.0-cp314-cp314t-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

pygixml-0.11.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (248.5 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

pygixml-0.11.0-cp314-cp314t-macosx_10_15_universal2.whl (412.4 kB view details)

Uploaded CPython 3.14tmacOS 10.15+ universal2 (ARM64, x86-64)

pygixml-0.11.0-cp314-cp314-win_amd64.whl (214.9 kB view details)

Uploaded CPython 3.14Windows x86-64

pygixml-0.11.0-cp314-cp314-win32.whl (184.2 kB view details)

Uploaded CPython 3.14Windows x86

pygixml-0.11.0-cp314-cp314-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

pygixml-0.11.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (254.8 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

pygixml-0.11.0-cp314-cp314-macosx_10_15_universal2.whl (399.5 kB view details)

Uploaded CPython 3.14macOS 10.15+ universal2 (ARM64, x86-64)

pygixml-0.11.0-cp313-cp313-win_amd64.whl (209.0 kB view details)

Uploaded CPython 3.13Windows x86-64

pygixml-0.11.0-cp313-cp313-win32.whl (179.7 kB view details)

Uploaded CPython 3.13Windows x86

pygixml-0.11.0-cp313-cp313-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

pygixml-0.11.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (253.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

pygixml-0.11.0-cp313-cp313-macosx_10_13_universal2.whl (398.1 kB view details)

Uploaded CPython 3.13macOS 10.13+ universal2 (ARM64, x86-64)

pygixml-0.11.0-cp312-cp312-win_amd64.whl (209.1 kB view details)

Uploaded CPython 3.12Windows x86-64

pygixml-0.11.0-cp312-cp312-win32.whl (179.9 kB view details)

Uploaded CPython 3.12Windows x86

pygixml-0.11.0-cp312-cp312-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

pygixml-0.11.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (254.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

pygixml-0.11.0-cp312-cp312-macosx_10_13_universal2.whl (398.9 kB view details)

Uploaded CPython 3.12macOS 10.13+ universal2 (ARM64, x86-64)

pygixml-0.11.0-cp311-cp311-win_amd64.whl (209.4 kB view details)

Uploaded CPython 3.11Windows x86-64

pygixml-0.11.0-cp311-cp311-win32.whl (180.7 kB view details)

Uploaded CPython 3.11Windows x86

pygixml-0.11.0-cp311-cp311-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

pygixml-0.11.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (258.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

pygixml-0.11.0-cp311-cp311-macosx_10_9_universal2.whl (398.6 kB view details)

Uploaded CPython 3.11macOS 10.9+ universal2 (ARM64, x86-64)

pygixml-0.11.0-cp310-cp310-win_amd64.whl (209.3 kB view details)

Uploaded CPython 3.10Windows x86-64

pygixml-0.11.0-cp310-cp310-win32.whl (180.8 kB view details)

Uploaded CPython 3.10Windows x86

pygixml-0.11.0-cp310-cp310-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

pygixml-0.11.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (257.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

pygixml-0.11.0-cp310-cp310-macosx_10_9_universal2.whl (399.2 kB view details)

Uploaded CPython 3.10macOS 10.9+ universal2 (ARM64, x86-64)

pygixml-0.11.0-cp39-cp39-win_amd64.whl (209.8 kB view details)

Uploaded CPython 3.9Windows x86-64

pygixml-0.11.0-cp39-cp39-win32.whl (181.3 kB view details)

Uploaded CPython 3.9Windows x86

pygixml-0.11.0-cp39-cp39-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

pygixml-0.11.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (258.0 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

pygixml-0.11.0-cp39-cp39-macosx_10_9_universal2.whl (400.5 kB view details)

Uploaded CPython 3.9macOS 10.9+ universal2 (ARM64, x86-64)

pygixml-0.11.0-cp38-cp38-win_amd64.whl (200.0 kB view details)

Uploaded CPython 3.8Windows x86-64

pygixml-0.11.0-cp38-cp38-win32.whl (172.0 kB view details)

Uploaded CPython 3.8Windows x86

pygixml-0.11.0-cp38-cp38-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ x86-64

pygixml-0.11.0-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (248.0 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

pygixml-0.11.0-cp38-cp38-macosx_10_9_universal2.whl (395.4 kB view details)

Uploaded CPython 3.8macOS 10.9+ universal2 (ARM64, x86-64)

File details

Details for the file pygixml-0.11.0.tar.gz.

File metadata

  • Download URL: pygixml-0.11.0.tar.gz
  • Upload date:
  • Size: 703.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pygixml-0.11.0.tar.gz
Algorithm Hash digest
SHA256 b2d1876ce4d67cb8920bf0fb93ce7ad5dfbcdfba7975e391b23fd3c9710ae160
MD5 16e0ab7ec4e367decc540ac3a5f9b1c5
BLAKE2b-256 469f21cb142bc954ee2854e7c99843a023c3e2325faf038638054ac0eed9d87b

See more details on using hashes here.

File details

Details for the file pygixml-0.11.0-cp314-cp314t-win_amd64.whl.

File metadata

  • Download URL: pygixml-0.11.0-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 235.0 kB
  • Tags: CPython 3.14t, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pygixml-0.11.0-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 8be0356e39b097e402ab7684e6c75b29a0ce6b5e1a3ac7021b5726a842210461
MD5 3f542190aef0be496a93a5a1378b9f1f
BLAKE2b-256 7d6fd2d168e646fa0c6728d36c54914a572eb042071c0c37076f841b24d79898

See more details on using hashes here.

File details

Details for the file pygixml-0.11.0-cp314-cp314t-win32.whl.

File metadata

  • Download URL: pygixml-0.11.0-cp314-cp314t-win32.whl
  • Upload date:
  • Size: 199.9 kB
  • Tags: CPython 3.14t, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pygixml-0.11.0-cp314-cp314t-win32.whl
Algorithm Hash digest
SHA256 e99c1be0d10b47e98650e6e9e9b32f21f56aa88fa612d961afe4961a8663f16d
MD5 4b9f2c68d636c2989db5faf6b8059ff9
BLAKE2b-256 51b92bd3881398039650cb813ab4155009026785d482aff675b8103b1b7c61bc

See more details on using hashes here.

File details

Details for the file pygixml-0.11.0-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pygixml-0.11.0-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 758380cb07bb51b9903662005055bf2fcdd646a48c899cc5e25030c4d123f7cb
MD5 56b2fcf4eff90b9dec5bf6d56e163a6a
BLAKE2b-256 5e20d8f5e0f9c09219ea4185ad30bec3aeb1fafb962dad9fc159f46f8c1e860d

See more details on using hashes here.

File details

Details for the file pygixml-0.11.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pygixml-0.11.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8a88cad989bd6a21e9e48e8a17d5a4b4062a0ab42f778f6f497aaf5c2b192e53
MD5 815de546f217c27e44c98e4ed31e2666
BLAKE2b-256 74220c0aad315413ef47b661d010f729005cb3436bf896e8701702630bf6c330

See more details on using hashes here.

File details

Details for the file pygixml-0.11.0-cp314-cp314t-macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for pygixml-0.11.0-cp314-cp314t-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 9864d3f975173243344c1bc7aca5197bb2c086fd9bfb2674444d7ad2960cfb6d
MD5 00356d55466af7f979c4bb1d10d4b688
BLAKE2b-256 06ebbd4a57cb76c4aa1f2d1fb0fb39168d694cf84809ea487da4938c1156689f

See more details on using hashes here.

File details

Details for the file pygixml-0.11.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: pygixml-0.11.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 214.9 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pygixml-0.11.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 d6b52290dfb737d1d42612474c878f556eed8d0dc0466e5ed747f973ed8d066b
MD5 c6b8b6055471dd01cf673f7bf44b4c55
BLAKE2b-256 29bb764b728ade221a721b5b5c6224e42403d58ee2e18dc9b5bdfb75cb932dd6

See more details on using hashes here.

File details

Details for the file pygixml-0.11.0-cp314-cp314-win32.whl.

File metadata

  • Download URL: pygixml-0.11.0-cp314-cp314-win32.whl
  • Upload date:
  • Size: 184.2 kB
  • Tags: CPython 3.14, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pygixml-0.11.0-cp314-cp314-win32.whl
Algorithm Hash digest
SHA256 8d9d3ff95e3c76cb930a6d620dde1b30dca3ce62dfff1a5051ea623a8cc6a90a
MD5 f20099976810e8b939f09936ce9db5cb
BLAKE2b-256 dd3f4bfa4462ba728e1522c51ca6a404113879bde55c33aa3912c254a526f3d5

See more details on using hashes here.

File details

Details for the file pygixml-0.11.0-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pygixml-0.11.0-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 376bf79582a54b3e57e05ee41f655317e9c891a939a5e0216d59fe0cbdee4e93
MD5 0ff134c3aecf5caeb1da5161b45871cd
BLAKE2b-256 eb1052967a010051982745ff9c4cb604f5cdf38c10bf7fcbd9a576f332d1b292

See more details on using hashes here.

File details

Details for the file pygixml-0.11.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pygixml-0.11.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6520b270b5cbef796adb483f19439793e43218f1fb9f698a8fb40da512a95030
MD5 83ea3854d48d4086e26a3c63213a076d
BLAKE2b-256 bdb9b2629141c9c2ee3ac0fd0d5e4f90107d831af7408b6154d0b82f7a27cf31

See more details on using hashes here.

File details

Details for the file pygixml-0.11.0-cp314-cp314-macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for pygixml-0.11.0-cp314-cp314-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 37bf44b4111b8261fa08fe2f5b2af856838e4f7d6966d358fed6971c43d9a3b5
MD5 dd9cc827caf52de37d308f3c5217901d
BLAKE2b-256 268329f17dc8399c26bc404153aca0f4276c2e5df24442c52b13d8016523ddea

See more details on using hashes here.

File details

Details for the file pygixml-0.11.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pygixml-0.11.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 209.0 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pygixml-0.11.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 7dfdae652f4cd9e25e2860b75932db7757e5d8c9b55dbf6b3705b207748262e9
MD5 9a0c4d46cb6e02c788f76d327c3759e3
BLAKE2b-256 f168691897a7858c48db8c6ebf23ffe01b13cd41f8e83f03bdbcc3e5faf43efd

See more details on using hashes here.

File details

Details for the file pygixml-0.11.0-cp313-cp313-win32.whl.

File metadata

  • Download URL: pygixml-0.11.0-cp313-cp313-win32.whl
  • Upload date:
  • Size: 179.7 kB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pygixml-0.11.0-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 231ab279f6adae2bae33f197f3a0b04e4de6e786321430c2c568da2a4e655878
MD5 e99f1834145dd6f706d786a89f81d406
BLAKE2b-256 81994d924d5905de02b9c6d59fc060a9ccf2d62cb78f16e6532734516aace0cb

See more details on using hashes here.

File details

Details for the file pygixml-0.11.0-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pygixml-0.11.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0c2eb0775a8ab2c082acaca33b01b275d8426e955896a898d2dd7596683d55e2
MD5 ff5f959135b4abbde83fcb1ac0bb63b8
BLAKE2b-256 d786fe394cdb5b79c52dce8726c0a8da8843a651772257dc5c842ddfbf28d380

See more details on using hashes here.

File details

Details for the file pygixml-0.11.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pygixml-0.11.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 50b273d47897f0f04db81097b27a6fc1dea2b97dfc9c273e25ded2b4875e56ec
MD5 1887e0f40b308398fa5cdd1330a916ba
BLAKE2b-256 c3c6d467678cfc5876582ada75ac8d2435aa2fddb950e7211855c80ed1051bc3

See more details on using hashes here.

File details

Details for the file pygixml-0.11.0-cp313-cp313-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for pygixml-0.11.0-cp313-cp313-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 0ec1f285c9962ff141958d6be88ca1ca356aa5fdcdcf60268bd468ebc9260a83
MD5 97385f787fa2c8b0bcf6dd87ff2eb8bb
BLAKE2b-256 6292c23eebb1ff579c9de25b6b958240e4bb1f19531c3e27b63b785f403f2f95

See more details on using hashes here.

File details

Details for the file pygixml-0.11.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pygixml-0.11.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 209.1 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pygixml-0.11.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 d4d3eba3a7a59f4b8b0188f03d3469ae81c62084e907b1a38ee1b34f80eb4772
MD5 bd1316423ea35197cce37bb5ccc50ac9
BLAKE2b-256 7c129bebc34006b6b3e2366dcf2f3265251554ab1c33e283a2f56c446b137715

See more details on using hashes here.

File details

Details for the file pygixml-0.11.0-cp312-cp312-win32.whl.

File metadata

  • Download URL: pygixml-0.11.0-cp312-cp312-win32.whl
  • Upload date:
  • Size: 179.9 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pygixml-0.11.0-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 9c10337fe1ba68c97f76cf023311fcfc4e02e533d0026d53da09ed20e05591b7
MD5 44e2f7702a16c8cc0d03d8de6ba69a11
BLAKE2b-256 468d7d9a1d8e733ff1c973c4dcd1ab2bdaa6c5e25e24c21f7144dcbbc3512180

See more details on using hashes here.

File details

Details for the file pygixml-0.11.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pygixml-0.11.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5813f0fca0be09ddb869ebe9b8597c5d0e392e5261fa547bdabfe4e3d3315849
MD5 9b05cc3141d57d85e36edb90a417a853
BLAKE2b-256 b7a02e464b0c7437cedf1b0f0a2ff4c71b12aaf6253b7f702bb7ae88ff7ff12f

See more details on using hashes here.

File details

Details for the file pygixml-0.11.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pygixml-0.11.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 408ec2087184a715b4cfaa660083097c3271b633f848e75343dd430355d10c1e
MD5 8f878dc2232aededbe1cc557488574cc
BLAKE2b-256 247bdd6d54bbebd790e77c791cd7b54727b7f526ae4f3469d300e83bab8010b4

See more details on using hashes here.

File details

Details for the file pygixml-0.11.0-cp312-cp312-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for pygixml-0.11.0-cp312-cp312-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 4331f80dbf37b13f01543ebf3d0fbf4bcf4d2687e13b0ec7f91c8aa2d3168e57
MD5 e9c28481a939aaba19d63bd321fa97f1
BLAKE2b-256 00b45513d983206ccc9cf81384cf0eecff9259d765f7c724e3a3489ba62fdc66

See more details on using hashes here.

File details

Details for the file pygixml-0.11.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pygixml-0.11.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 209.4 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pygixml-0.11.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 a377ade6803cadf59b3d6aa6f78ee7ae5c2f4534fe60242048c15178d5e142ba
MD5 0700faa6cbb8f04e9e9f5c64e66e0f18
BLAKE2b-256 73ded5926d45e1d9441f7d012c08abbb7a58a93e42d14279fcf38e9f033b725f

See more details on using hashes here.

File details

Details for the file pygixml-0.11.0-cp311-cp311-win32.whl.

File metadata

  • Download URL: pygixml-0.11.0-cp311-cp311-win32.whl
  • Upload date:
  • Size: 180.7 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pygixml-0.11.0-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 fb4f43e972729da2fcb146c2988e0c00cbf89434d3b8a057bbda44340fcda774
MD5 3def722503ad82c610be9b2ad4fdfe35
BLAKE2b-256 ceaf39cc61776a92e27cb984dd102c2fb8c43fadba05967ad1e7dbee77111d8f

See more details on using hashes here.

File details

Details for the file pygixml-0.11.0-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pygixml-0.11.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3c5f082c0ea9e024d07f6a04fd3ef111c2a7f36f695c91104ff69e7037a2f6ea
MD5 b2bd4f04bd4503363fa25591c335cfb0
BLAKE2b-256 ef2566249c65f68c7cfe105b00ab55bd2d3eaace1bb14f17e9339a210bc58525

See more details on using hashes here.

File details

Details for the file pygixml-0.11.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pygixml-0.11.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ee2fdda74d5734837a5f60790cfaa94d4dd3d0315a30d7cf47a409210b02a771
MD5 4e67a08a270ca77f76d57e09a6ecdc91
BLAKE2b-256 2671dcc8d23a59ab45dd6349d5b07b5192cf70edfcf819d9c3cbab50e0cbac36

See more details on using hashes here.

File details

Details for the file pygixml-0.11.0-cp311-cp311-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for pygixml-0.11.0-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 8bcc7a45be7a8fdb19172e561eb7a3161ceb65feaa0587d9461bec0d511fdfb1
MD5 fd1effa382ce8b337572203c3c57e4d6
BLAKE2b-256 a6f12a5b49bb4f32b70616492e87fc7dc9423bec15f8853fc7e5f9cc837ad10a

See more details on using hashes here.

File details

Details for the file pygixml-0.11.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pygixml-0.11.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 209.3 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pygixml-0.11.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 efa5aa01f83fd8ae73ba1c0ed0b42f172baa0a733ad8896c853801d3d3408722
MD5 af8af5fe07f8d0297b2a0fbfd6fb5f6d
BLAKE2b-256 55a4ef8877d9fac5b069b3cc49bf74370365d504dc9bfd410051921a7304009f

See more details on using hashes here.

File details

Details for the file pygixml-0.11.0-cp310-cp310-win32.whl.

File metadata

  • Download URL: pygixml-0.11.0-cp310-cp310-win32.whl
  • Upload date:
  • Size: 180.8 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pygixml-0.11.0-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 a107c44f2cc7489eb2b4d92acbba8119ed63880081a6c1f74a81301b48ac4241
MD5 d01e6559690b81c04f6662af63a1f05f
BLAKE2b-256 3686766404438646ff06fc1052216bafab4f1a6a251879cff825d5c63aafacb6

See more details on using hashes here.

File details

Details for the file pygixml-0.11.0-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pygixml-0.11.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1cfb20f17cd84214d7b6d54fcbac1916e59825e0cc111f606136a5a1c0bc9cf7
MD5 2604844bac58cd0bcb598a701aec7b43
BLAKE2b-256 59e709f3232ef2d165b8ba1c8bbd4bd02ced074091bf701d7235867a212f45a6

See more details on using hashes here.

File details

Details for the file pygixml-0.11.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pygixml-0.11.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b4a118b2ce1b55d3e02031c33de4a4a095f34ebc2af678bf552aa2f37b5cdcff
MD5 d39b1cc0d63033f1d6f776be92dcbd97
BLAKE2b-256 506446aa6b9f62a5947f6aa350956d83442823c37f7d448a35b21a84abd94de6

See more details on using hashes here.

File details

Details for the file pygixml-0.11.0-cp310-cp310-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for pygixml-0.11.0-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 ce210d61cf451a4f4d8dd1d69adea28febe514eac14a4d115179ae827cb27055
MD5 3a0b7b594f6c271868f400962bb22b76
BLAKE2b-256 e1fb85a1efdc0e9029f8bc6e176928b8a545f197e8fe754c9ebc7fcf039f5450

See more details on using hashes here.

File details

Details for the file pygixml-0.11.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: pygixml-0.11.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 209.8 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pygixml-0.11.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 102e36512602c5721b1e1d0d914edd465d51ee0c08210b301cbce91e665b94e9
MD5 5feea6ccb02e9d12d1e809eac966c7b6
BLAKE2b-256 f115b949aac309b2777861a92e5e9821d9cd651500351172183c02057587e0c8

See more details on using hashes here.

File details

Details for the file pygixml-0.11.0-cp39-cp39-win32.whl.

File metadata

  • Download URL: pygixml-0.11.0-cp39-cp39-win32.whl
  • Upload date:
  • Size: 181.3 kB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pygixml-0.11.0-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 6d9858f663ccd8660642138702bab82021cc6dc36657d7b0f91d566b67dca391
MD5 b3b8559ad202de4fc895187998f7505a
BLAKE2b-256 3f38d5f0bd98852dd42204d86f3627db0f806e4b9ad627cc93d3aaf62c510032

See more details on using hashes here.

File details

Details for the file pygixml-0.11.0-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pygixml-0.11.0-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5a998af4019fd2bb595cf5f33d129abdf6dc1a776bef23c1c83060c6d297339c
MD5 d4c2490f8dce1978dfc99f4344cebc94
BLAKE2b-256 f5d124ae976ccc330e63ba3c686abcea6e094f9439cf3385ea33b9f5c572c429

See more details on using hashes here.

File details

Details for the file pygixml-0.11.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pygixml-0.11.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0323f5090abd08a3beeb432f6eabbde83d1fc6795eba83a3d005b4c51fd56cb6
MD5 0c7ad3c58bf2fb60c0b8aaf9d52c976c
BLAKE2b-256 483b02cf7c72c3b3f9b06da571b3958708a55835afcfdcc411369987a3bf008a

See more details on using hashes here.

File details

Details for the file pygixml-0.11.0-cp39-cp39-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for pygixml-0.11.0-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 de5278608212b1610487b9f95d140e1ed4dec642249ded645e331cb28add8223
MD5 2f78e86a18de9b118df3233e22bbf2f9
BLAKE2b-256 a17370c158f74e9748f1ae5f4404999d5a18a0eba3dab2d08f7be7fd4f0c1dcd

See more details on using hashes here.

File details

Details for the file pygixml-0.11.0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: pygixml-0.11.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 200.0 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pygixml-0.11.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 625b124bab38961b3a2f9a6cbf8de05b1173454510041868120ea0e13fe4a92d
MD5 a8974498c1dc9e24e1af0d6de8cf88b2
BLAKE2b-256 07544df148596128dcb14ef0a6cbf8e300249f2725a6e1c5a3c7da660b181693

See more details on using hashes here.

File details

Details for the file pygixml-0.11.0-cp38-cp38-win32.whl.

File metadata

  • Download URL: pygixml-0.11.0-cp38-cp38-win32.whl
  • Upload date:
  • Size: 172.0 kB
  • Tags: CPython 3.8, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pygixml-0.11.0-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 521b76fcfcef59490ca7ee4443e2a8ca7b27f4bb2169d4d2d6f4c09d878995b0
MD5 97546c641769f70d9580c698c8498eda
BLAKE2b-256 74f702780dcbf5a003f061d05f804b512649cabc92687a039b52ad6655e80936

See more details on using hashes here.

File details

Details for the file pygixml-0.11.0-cp38-cp38-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pygixml-0.11.0-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8b45a9065adf9fe38dd5092a26c83db57d8774e53164f4026e4e1f2ae354f3c6
MD5 5d510ca5773ef77db5dcce1e6675cc96
BLAKE2b-256 13a355d5d1518bb6edcd621d0ed32b31ffda053e76cab519c5f01b1be1c14a49

See more details on using hashes here.

File details

Details for the file pygixml-0.11.0-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pygixml-0.11.0-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 bb2b6ab79bdfd1856190cd355d747c54d9383889956e37139ba09fc001b571d4
MD5 c25e0d9cbf51e5d321d86c30abb2685b
BLAKE2b-256 6f7d1ef531bd16dc09bf895a74fc54413cdb08435ba3875c9020ee1c01fd1499

See more details on using hashes here.

File details

Details for the file pygixml-0.11.0-cp38-cp38-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for pygixml-0.11.0-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 a3990da54d8d431b4574c165861b4552e4f5bd7619f680b7b5b1bcb3868da40f
MD5 4a1cbed02b4e73534ecb6ef066411165
BLAKE2b-256 dc8c3d31262e519b92850f352a57b30b4eb0ebd1b0d56c49ae1cfc920a8ec790

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