xml2arrow-python
A Python package for efficiently converting XML files to Apache Arrow tables using a YAML configuration. Powered by the xml2arrow Rust crate for high performance.
Features
- 🚀 High-performance XML parsing via the xml2arrow Rust crate
- 📊 Declarative mapping from XML structures to Arrow tables using a YAML config file
- 🔄 Nested structure support with parent–child index columns linking related tables
- 🎯 Type conversion including automatic scale and offset transforms for float fields
- 💡 Attribute and element extraction using
@-prefixed path segments for attributes - ⏹️ Early termination via
stop_at_pathsfor efficiently reading only part of a file - 🐍 Flexible input — accepts file paths, path-like objects, readable file-like
objects, or in-memory
bytes/bytearray(parsed zero-copy, no intermediate buffering) - 🧵 Thread-friendly — the GIL is released while parsing, so threads sharing one parser instance can parse multiple documents in parallel
- 🌊 Bounded-memory streaming for documents larger than RAM —
parse_batches()yields batches incrementally, andparse_single_table()returns a nativepyarrow.RecordBatchReaderfor Parquet/dataset/DuckDB pipelines
Installation
pip install xml2arrow
Usage
1. Write a configuration file
The YAML configuration defines which parts of the XML document become tables and how their fields are typed. The full schema is:
parser_options:
trim_text: <true|false> # Trim whitespace from text nodes (default: false)
stop_at_paths: [<xml_path>] # Stop parsing after these closing tags (optional,
# useful for reading only a file header)
tables:
- name: <table_name> # Name of the resulting PyArrow RecordBatch
xml_path: <xml_path> # Path to the element whose children are rows.
# Use "/" to treat the whole document as one row.
levels: [<level>, ...] # Parent-link index columns — see "Nested tables"
fields:
- name: <field_name> # Column name
xml_path: <field_path> # Path to the element or attribute holding the value.
# Prefix the last segment with @ for attributes
# (e.g. /library/book/@id)
data_type: <type> # Arrow data type — see supported types below
nullable: <true|false> # Whether the field can be null (default: false)
# If false, missing/empty tags cause a ParseError.
scale: <number> # Multiply float values by this factor (optional)
offset: <number> # Add this value to float values after scaling (optional)
# value = (value * scale) + offset
Supported data types: Boolean, Int8, UInt8, Int16, UInt16, Int32,
UInt32, Int64, UInt64, Float32, Float64, Utf8
Boolean fields accept (case-insensitively): true, false, 1, 0, yes,
no, on, off, t, f, y, n.
2. Nested tables and levels
When your XML has a parent–child relationship between tables, levels creates the
index columns that link child rows back to their parent rows. Each string in the
list names an element at a nesting boundary above the row element, and generates a
zero-based uint32 column named <level> in the output.
Note: If a table is defined purely to establish a structural hierarchy (i.e., it has levels defined but an empty fields list), it acts only as a boundary and will be excluded from the final output map.
For example, given stations that each have multiple measurements:
<report>
<monitoring_stations>
<monitoring_station> <!-- boundary → produces <station> index -->
<measurements>
<measurement> <!-- row element for the measurements table -->
...
</measurement>
</measurements>
</monitoring_station>
</monitoring_stations>
</report>
- name: measurements
xml_path: /report/monitoring_stations/monitoring_station/measurements
levels: [station, measurement]
fields: [...]
This produces a <station> column (which parent station each measurement belongs
to) and a <measurement> column (the per-station row counter), letting you join
the measurements table back to the stations table on <station>.
3. Parse the XML
import polars as pl
from xml2arrow import XmlToArrowParser
parser = XmlToArrowParser("config.yaml")
record_batches = parser.parse("data.xml") # also accepts pathlib.Path, bytes,
# bytearray, or any file-like object
# Access a table by name
batch = record_batches["measurements"] # pyarrow.RecordBatch
# Convert to a pandas DataFrame
df = batch.to_pandas()
# Convert to a Polars DataFrame
df = pl.from_arrow(batch)
# Convert to a PyArrow Table
import pyarrow as pa
table = pa.Table.from_batches([batch])
parse() returns a dict[str, pyarrow.RecordBatch] whose keys are the table
names defined in your config. Because the values are standard PyArrow
RecordBatch objects they integrate directly with pandas, Polars, DuckDB,
and any other tool in the Arrow ecosystem.
Tip: Constructing an
XmlToArrowParservalidates the config and compiles its path lookup table once, up front. When processing many files with the same config, build the parser once and reuse it acrossparse()calls — this amortizes that fixed setup cost and is noticeably faster than creating a new parser per file, especially for many small documents.parser = XmlToArrowParser("config.yaml") # validate + compile once for path in xml_files: record_batches = parser.parse(path) # reused for every file ...
4. Streaming documents too large for memory
parse() materializes every table in full, so peak memory grows with the
document. For XML files that don't fit in memory (multi-GB exports,
Wikipedia-style dumps), parse_batches() yields each table's rows
incrementally as (table_name, batch) tuples — memory stays bounded by the
batch limits, and parsing runs on a background Rust thread that overlaps
with your processing:
parser = XmlToArrowParser("config.yaml")
for name, batch in parser.parse_batches("huge.xml"):
writers[name].write_batch(batch) # e.g. per-table ParquetWriter
Concatenating a table's batches in yield order reproduces exactly what
parse() would have returned. Batches flush at 8192 rows or 128 MiB of
accumulated values per table (tune with max_rows_per_batch /
max_bytes_per_batch), and parser.schema(name) provides any table's
schema up front for schema-first sinks. One caveat inherent to single-pass
XML: a parent element closes after its children, so a child batch can
reference a parent row that arrives in a later batch of the parent table —
irrelevant when each table goes to its own sink.
When the config defines exactly one table with fields — the common shape for
huge documents — parse_single_table() returns a native
pyarrow.RecordBatchReader, pluggable directly into
pyarrow.parquet.ParquetWriter, pyarrow.dataset, or DuckDB:
import pyarrow.parquet as pq
reader = parser.parse_single_table("huge.xml")
with pq.ParquetWriter("out.parquet", reader.schema) as writer:
for batch in reader:
writer.write_batch(batch)
Example
This example extracts meteorological station data from a nested XML document into three linked Arrow tables.
XML data (stations.xml)
<report>
<header>
<title>Meteorological Station Data</title>
<created_by>National Weather Service</created_by>
<creation_time>2024-12-30T13:59:15Z</creation_time>
</header>
<monitoring_stations>
<monitoring_station id="MS001">
<location>
<latitude>-61.39110459389277</latitude>
<longitude>48.08662749089257</longitude>
<elevation>547.1050788360882</elevation>
</location>
<measurements>
<measurement>
<timestamp>2024-12-30T12:39:15Z</timestamp>
<temperature unit="C">35.486545480326114</temperature>
<pressure unit="hPa">950.439973486407</pressure>
<humidity unit="%">49.77716576844861</humidity>
</measurement>
<measurement>
<timestamp>2024-12-30T12:44:15Z</timestamp>
<temperature unit="C">29.095166644493865</temperature>
<pressure unit="hPa">1049.3215015450517</pressure>
<humidity unit="%">32.5687148391251</humidity>
</measurement>
</measurements>
<metadata>
<description>Located in the Arctic Tundra area, used for Scientific Research.</description>
<install_date>2024-03-31</install_date>
</metadata>
</monitoring_station>
<monitoring_station id="MS002">
<location>
<latitude>11.891496388319311</latitude>
<longitude>135.09336983543022</longitude>
<elevation>174.53349357280004</elevation>
</location>
<measurements>
<measurement>
<timestamp>2024-12-30T12:39:15Z</timestamp>
<temperature unit="C">24.791842953632283</temperature>
<pressure unit="hPa">989.4054287187706</pressure>
<humidity unit="%">57.70794884397625</humidity>
</measurement>
<measurement>
<timestamp>2024-12-30T12:44:15Z</timestamp>
<temperature unit="C">15.153690541845911</temperature>
<pressure unit="hPa">1001.413052919951</pressure>
<humidity unit="%">45.45094598045342</humidity>
</measurement>
<measurement>
<timestamp>2024-12-30T12:49:15Z</timestamp>
<temperature unit="C">-4.022555715139081</temperature>
<pressure unit="hPa">1000.5225751769922</pressure>
<humidity unit="%">70.40117458947834</humidity>
</measurement>
<measurement>
<timestamp>2024-12-30T12:54:15Z</timestamp>
<temperature unit="C">25.852920542644185</temperature>
<pressure unit="hPa">953.762785698162</pressure>
<humidity unit="%">42.62088244545566</humidity>
</measurement>
</measurements>
<metadata>
<description>Located in the Desert area, used for Weather Forecasting.</description>
<install_date>2024-01-17</install_date>
</metadata>
</monitoring_station>
</monitoring_stations>
</report>
Configuration (stations.yaml)
tables:
- name: report
xml_path: /
levels: []
fields:
- name: title
xml_path: /report/header/title
data_type: Utf8
- name: created_by
xml_path: /report/header/created_by
data_type: Utf8
- name: creation_time
xml_path: /report/header/creation_time
data_type: Utf8
- name: stations
xml_path: /report/monitoring_stations
levels:
- station
fields:
- name: id
xml_path: /report/monitoring_stations/monitoring_station/@id
data_type: Utf8
- name: latitude
xml_path: /report/monitoring_stations/monitoring_station/location/latitude
data_type: Float32
- name: longitude
xml_path: /report/monitoring_stations/monitoring_station/location/longitude
data_type: Float32
- name: elevation
xml_path: /report/monitoring_stations/monitoring_station/location/elevation
data_type: Float32
- name: description
xml_path: /report/monitoring_stations/monitoring_station/metadata/description
data_type: Utf8
- name: install_date
xml_path: /report/monitoring_stations/monitoring_station/metadata/install_date
data_type: Utf8
- name: measurements
xml_path: /report/monitoring_stations/monitoring_station/measurements
levels:
- station # Links each measurement back to its parent station
- measurement
fields:
- name: timestamp
xml_path: /report/monitoring_stations/monitoring_station/measurements/measurement/timestamp
data_type: Utf8
- name: temperature
xml_path: /report/monitoring_stations/monitoring_station/measurements/measurement/temperature
data_type: Float64
offset: 273.15 # Convert °C → K
- name: pressure
xml_path: /report/monitoring_stations/monitoring_station/measurements/measurement/pressure
data_type: Float64
scale: 100.0 # Convert hPa → Pa
- name: humidity
xml_path: /report/monitoring_stations/monitoring_station/measurements/measurement/humidity
data_type: Float64
Parsing and using the output
import polars as pl
from xml2arrow import XmlToArrowParser
parser = XmlToArrowParser("stations.yaml")
record_batches = parser.parse("stations.xml")
stations_df = pl.from_arrow(record_batches["stations"])
measurements_df = pl.from_arrow(record_batches["measurements"])
# Join measurements back to their parent station using the <station> index
merged = measurements_df.join(
stations_df.select(["<station>", "id"]),
on="<station>",
)
print(merged.select(["id", "timestamp", "temperature", "pressure"]))
Output
- report:
┌─────────────────────────────┬──────────────────────────┬──────────────────────┐
│ title ┆ created_by ┆ creation_time │
│ --- ┆ --- ┆ --- │
│ str ┆ str ┆ str │
╞═════════════════════════════╪══════════════════════════╪══════════════════════╡
│ Meteorological Station Data ┆ National Weather Service ┆ 2024-12-30T13:59:15Z │
└─────────────────────────────┴──────────────────────────┴──────────────────────┘
- stations:
┌───────────┬───────┬────────────┬────────────┬────────────┬────────────────────────┬──────────────┐
│ <station> ┆ id ┆ latitude ┆ longitude ┆ elevation ┆ description ┆ install_date │
│ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- │
│ u32 ┆ str ┆ f32 ┆ f32 ┆ f32 ┆ str ┆ str │
╞═══════════╪═══════╪════════════╪════════════╪════════════╪════════════════════════╪══════════════╡
│ 0 ┆ MS001 ┆ -61.391106 ┆ 48.086628 ┆ 547.105103 ┆ Located in the Arctic ┆ 2024-03-31 │
│ ┆ ┆ ┆ ┆ ┆ Tundra a… ┆ │
│ 1 ┆ MS002 ┆ 11.891497 ┆ 135.093369 ┆ 174.533493 ┆ Located in the Desert ┆ 2024-01-17 │
│ ┆ ┆ ┆ ┆ ┆ area, us… ┆ │
└───────────┴───────┴────────────┴────────────┴────────────┴────────────────────────┴──────────────┘
- measurements:
┌───────────┬───────────────┬──────────────────────┬─────────────┬───────────────┬───────────┐
│ <station> ┆ <measurement> ┆ timestamp ┆ temperature ┆ pressure ┆ humidity │
│ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- │
│ u32 ┆ u32 ┆ str ┆ f64 ┆ f64 ┆ f64 │
╞═══════════╪═══════════════╪══════════════════════╪═════════════╪═══════════════╪═══════════╡
│ 0 ┆ 0 ┆ 2024-12-30T12:39:15Z ┆ 308.636545 ┆ 95043.997349 ┆ 49.777166 │
│ 0 ┆ 1 ┆ 2024-12-30T12:44:15Z ┆ 302.245167 ┆ 104932.150155 ┆ 32.568715 │
│ 1 ┆ 0 ┆ 2024-12-30T12:39:15Z ┆ 297.941843 ┆ 98940.542872 ┆ 57.707949 │
│ 1 ┆ 1 ┆ 2024-12-30T12:44:15Z ┆ 288.303691 ┆ 100141.305292 ┆ 45.450946 │
│ 1 ┆ 2 ┆ 2024-12-30T12:49:15Z ┆ 269.127444 ┆ 100052.257518 ┆ 70.401175 │
│ 1 ┆ 3 ┆ 2024-12-30T12:54:15Z ┆ 299.002921 ┆ 95376.27857 ┆ 42.620882 │
└───────────┴───────────────┴──────────────────────┴─────────────┴───────────────┴───────────┘
The <station> index in the measurements table links each measurement to its
parent station by row position, enabling a join on stations.<station> = measurements.<station>.
Release files for xml2arrow 0.19.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| xml2arrow-0.19.0.tar.gz | 48.6 kB | Details |
Built distributions (wheels)
Total release size: 8.7 MB
Release files / xml2arrow-0.19.0.tar.gz
| Download URL | xml2arrow-0.19.0.tar.gz |
|---|---|
| Size | 48.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
83dbd096fdbbf286390b972e60147dc771cc2d48c001d0bb5257555bb5d7ab64
|
|
BLAKE2b-256 checksum How to use checksums |
a3b96913c62b410b900d441d19b4251532371f72261f2410a12d4d8e37620640
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|
Release files / xml2arrow-0.19.0-cp310-abi3-win_amd64.whl
| Download URL | xml2arrow-0.19.0-cp310-abi3-win_amd64.whl |
|---|---|
| Size | 500.0 kB |
| Tags | CPython 3.10 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
6edf2ae4a2b07a159683d61be1fe91427796fec991c3cbb8c9a39cdf4f4c7c37
|
|
BLAKE2b-256 checksum How to use checksums |
2209845c222952f7e16d5015e5c7f1e1f949ac79dc6a4d36ac878ff923ff4e18
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|
Release files / xml2arrow-0.19.0-cp310-abi3-win32.whl
| Download URL | xml2arrow-0.19.0-cp310-abi3-win32.whl |
|---|---|
| Size | 467.7 kB |
| Tags | CPython 3.10 Windows x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
e0b7fbe528fdc19f6602f73bed158fd644f4f16c12b62b0cd170a8fb7aa70f21
|
|
BLAKE2b-256 checksum How to use checksums |
021e0d5940db0497e9999cc2b20339be1c0d4a031c7cf4c96503b1510970961e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|
Release files / xml2arrow-0.19.0-cp310-abi3-musllinux_1_2_x86_64.whl
| Download URL | xml2arrow-0.19.0-cp310-abi3-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 780.2 kB |
| Tags | CPython 3.10 Linux musl 1.2+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
a01aaf133fbe4510374bbe3463d8f5963c14b47b68c05445d36c580439deb814
|
|
BLAKE2b-256 checksum How to use checksums |
f0bfc97864d7a099006d30c3f2ae743b084e1b09993f6d2b3fa5ae660d575ff9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|
Release files / xml2arrow-0.19.0-cp310-abi3-musllinux_1_2_i686.whl
| Download URL | xml2arrow-0.19.0-cp310-abi3-musllinux_1_2_i686.whl |
|---|---|
| Size | 806.0 kB |
| Tags | CPython 3.10 Linux musl 1.2+ x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
aaf32c459f8781a70cf0d03e7539ae2e744a61b50b41a1b59e729345b6d1b0b5
|
|
BLAKE2b-256 checksum How to use checksums |
d2903c33d150b196ef30b7bb5582fc57df7526d3ffdd6f709ccce4a2b5384676
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|
Release files / xml2arrow-0.19.0-cp310-abi3-musllinux_1_2_armv7l.whl
| Download URL | xml2arrow-0.19.0-cp310-abi3-musllinux_1_2_armv7l.whl |
|---|---|
| Size | 835.6 kB |
| Tags | CPython 3.10 Linux musl 1.2+ ARMv7l abi3 |
|
SHA-256 checksum How to use checksums |
a5b680a7c53201e7da58356e525b6b44bda403fac2ee39be9a991508fbac312c
|
|
BLAKE2b-256 checksum How to use checksums |
a754160f97201f8f74370cd989ff2ca4ab48ed1162b00d6809744c017c5c8d55
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|
Release files / xml2arrow-0.19.0-cp310-abi3-musllinux_1_2_aarch64.whl
| Download URL | xml2arrow-0.19.0-cp310-abi3-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 722.4 kB |
| Tags | CPython 3.10 Linux musl 1.2+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
08519a9da78f65134abb4fc3c475c90c3c8f4bb3e536ad832d42caa0cdaa3bab
|
|
BLAKE2b-256 checksum How to use checksums |
9e2ecb30522eba90844eaaaebc32a566d698ffa4a82a9383dd445832d99e01a4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|
Release files / xml2arrow-0.19.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | xml2arrow-0.19.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 567.2 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
a50389897824ed2d76791c3b19b37da9e3ffa1acc7ad6b564f31908b4e22653b
|
|
BLAKE2b-256 checksum How to use checksums |
86ac07e320bfec23006b270f10f09ef41342ddc5426095b41a8e05df378b0e29
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|
Release files / xml2arrow-0.19.0-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
| Download URL | xml2arrow-0.19.0-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl |
|---|---|
| Size | 637.4 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ IBM System/390x abi3 |
|
SHA-256 checksum How to use checksums |
5e3453162ca0c550065d5af9f9c427b627da3808bc2e242dc29170e20555eb0d
|
|
BLAKE2b-256 checksum How to use checksums |
6a3fcfab4799cb4b03c2138f7d2ee7e8d88c8cffd32e2e142868626165ff2c3f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|
Release files / xml2arrow-0.19.0-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
| Download URL | xml2arrow-0.19.0-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl |
|---|---|
| Size | 618.5 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ PowerPC 64-le abi3 |
|
SHA-256 checksum How to use checksums |
8a1ad8ee835dd7ff2ea345d1515c632b0040d175a52e193136d616e40ae7858f
|
|
BLAKE2b-256 checksum How to use checksums |
25368c76e1609bfd817a14930fda2cfb08b65628777cf46a717b5db85cdafc60
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|
Release files / xml2arrow-0.19.0-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
| Download URL | xml2arrow-0.19.0-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl |
|---|---|
| Size | 558.4 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ ARMv7l abi3 |
|
SHA-256 checksum How to use checksums |
3f062c629dc0a6a52027ceaad0d383e441a0cc22976abeaa60ffa8cd619cbdaa
|
|
BLAKE2b-256 checksum How to use checksums |
215167554f07360d188295e75c0c1ca8f641ab423300751f92793dbe168449c2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|
Release files / xml2arrow-0.19.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | xml2arrow-0.19.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 544.6 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
1882c96a91a67131b5cdd74b015438a8531e9fde78c11e889070d03cc87c099c
|
|
BLAKE2b-256 checksum How to use checksums |
e0133f6913d064c8f91584815e0dd1e8fc6a9de0ea83b567a4e78c7a90e12663
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|
Release files / xml2arrow-0.19.0-cp310-abi3-manylinux_2_12_i686.manylinux2010_i686.whl
| Download URL | xml2arrow-0.19.0-cp310-abi3-manylinux_2_12_i686.manylinux2010_i686.whl |
|---|---|
| Size | 597.0 kB |
| Tags | CPython 3.10 Linux glibc 2.12+ x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
a0189622ef81e6a959edaa9df49352edf9a667664a42aa5495809e758bd7c60b
|
|
BLAKE2b-256 checksum How to use checksums |
98dd8c3104c021e8688ad084cd38fe6629da4fc94d9a1bb6624a9214e1cb3132
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|
Release files / xml2arrow-0.19.0-cp310-abi3-macosx_11_0_arm64.whl
| Download URL | xml2arrow-0.19.0-cp310-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 521.4 kB |
| Tags | CPython 3.10 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
115936ca62d43b6549fb41ad73a3b0a37dc33eda89ea187ac5bd0de1645bea8b
|
|
BLAKE2b-256 checksum How to use checksums |
088d069d5374cdb9a64dcddc8e6a993e93cf4779505159eb87912d4f5ac37c7f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|
Release files / xml2arrow-0.19.0-cp310-abi3-macosx_10_12_x86_64.whl
| Download URL | xml2arrow-0.19.0-cp310-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 542.5 kB |
| Tags | CPython 3.10 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
1468bbc285b6404cce58ea2fc6a3d875190e081f749447db454647bb44126875
|
|
BLAKE2b-256 checksum How to use checksums |
6e09108b1827e88acd80256cc84d38441dab7cb96cec94ee6e6a1c194a7f2389
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|