Skip to main content

commonmeta-rs (Python bindings)

PyO3 bindings exposing commonmeta-rs's list-command batch functions to Python: VRAIX daily-dump fetch with local caching, lossless Parquet read/write, and batched archive rendering. Records cross the FFI boundary as plain JSON-shaped dicts — the same shape commonmeta-py's own readers and writers already produce and consume.

Install

uv pip install commonmeta-rs

Requires CPython 3.14 or newer. The wheels are built against the stable ABI (abi3-py314), so one wheel per platform also covers later 3.x releases. commonmeta-py itself keeps a 3.9 floor; only this backend needs 3.14.

Development

The interpreter must be 3.14+, matching requires-python; an older venv fails to build rather than falling back.

uv venv --python 3.14 .venv
uv pip install --python .venv/bin/python maturin pytest
source .venv/bin/activate
maturin develop
pytest tests/

Release

Releases are published by hand. PyPI trusted publishing only issues OIDC identities to GitHub, GitLab, Google Cloud and ActiveState, and this repo lives on Codeberg, so CI cannot authenticate to PyPI — the workflow builds and tests wheels only.

The version comes from [workspace.package] in the root Cargo.toml and is shared with the commonmeta crate, so a wheel names the release it wraps. Bump it there, not here.

Build one wheel per platform plus the sdist, then publish. Both wheels build on the host — no Docker. The macOS wheel is a native build; the Linux manylinux wheel cross-compiles with zig as the C cross-linker (maturin --zig). All commands are run from python/.

rm -rf dist

# One-time: the Linux cross target and zig (a pip package, no system install).
rustup target add x86_64-unknown-linux-gnu
uv pip install --python .venv/bin/python ziglang

# macOS (native — arm64 on Apple silicon)
maturin build --release --out dist

# Linux (manylinux2014 x86_64), cross-compiled with zig — no Docker, no emulation.
maturin build --release --out dist --target x86_64-unknown-linux-gnu --zig

# Source distribution (lets other platforms build from source as a fallback)
maturin sdist --out dist

uv publish --token "$PYPI_TOKEN" dist/*

Publishing from one machine uploads only the wheels present in dist/; any platform without a wheel falls back to building from the sdist. To ship binaries for more platforms (Windows, Intel macOS, Linux aarch64), add the matching maturin build --target … invocations or collect the wheels-* artifacts from the CI workflow into dist/ first.

API

  • fetch_vraix(source, date, input_path=None, limit=None, offset=0, cache_ttl_days=30) -> list[dict] Fetch records from a VRAIX daily dump (source is "crossref" or "datacite"). With input_path, reads a local SQLite file directly (no network); otherwise downloads {source}-{date}.sqlite3.zst from metadata.vraix.org, caching it locally for cache_ttl_days.
  • write_parquet(records: list[dict]) -> bytes Write records as a single lossless Parquet file.
  • read_parquet(data: bytes) -> list[dict] Read records back from Parquet bytes written by write_parquet.
  • write_archive(records: list[dict], to: str, base_name: str, batch_size=100_000) -> list[tuple[str, bytes]] Render records to to format, split into batches of at most batch_size records, returned as (entry_name, bytes) pairs ready to pack into a zip/tar archive.
  • convert(from_: str, to: str, input: str) -> bytes Convert a single record between formats.

Download files

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

Source Distribution

commonmeta_rs-0.9.80.tar.gz (837.2 kB view details)

Uploaded Source

Built Distributions

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

commonmeta_rs-0.9.80-cp314-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (15.2 MB view details)

Uploaded CPython 3.14+manylinux: glibc 2.17+ x86-64

commonmeta_rs-0.9.80-cp314-abi3-macosx_11_0_arm64.whl (15.3 MB view details)

Uploaded CPython 3.14+macOS 11.0+ ARM64

File details

Details for the file commonmeta_rs-0.9.80.tar.gz.

File metadata

  • Download URL: commonmeta_rs-0.9.80.tar.gz
  • Upload date:
  • Size: 837.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.25 {"installer":{"name":"uv","version":"0.11.25","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for commonmeta_rs-0.9.80.tar.gz
Algorithm Hash digest
SHA256 f9b7ad14816962590a856a94dee419c4118c79ecc8fe38b3c489c50a26fc335c
MD5 507b68dc3997b5a0a574aa66ce3c706f
BLAKE2b-256 783c3ebd2ccc26ba52bb719501b498f33e0509c6cc2460fd9e2339c3f501536c

See more details on using hashes here.

File details

Details for the file commonmeta_rs-0.9.80-cp314-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

  • Download URL: commonmeta_rs-0.9.80-cp314-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 15.2 MB
  • Tags: CPython 3.14+, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.25 {"installer":{"name":"uv","version":"0.11.25","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for commonmeta_rs-0.9.80-cp314-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e3c0566cfa6e2941f732daa044220435cde091c0f41a74d2b47a88e7a25c8917
MD5 e732480f44ac065a3b9c8d84ab6a0dc0
BLAKE2b-256 3ec6aa84890e3d23e7fa50c27e616c1490ecdebfd849573d800e319516c98c5a

See more details on using hashes here.

File details

Details for the file commonmeta_rs-0.9.80-cp314-abi3-macosx_11_0_arm64.whl.

File metadata

  • Download URL: commonmeta_rs-0.9.80-cp314-abi3-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 15.3 MB
  • Tags: CPython 3.14+, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.25 {"installer":{"name":"uv","version":"0.11.25","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for commonmeta_rs-0.9.80-cp314-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f715a77f8d7e3bd731de434a7e8e4407b56ae70e133ae3410ff55033a2d5c929
MD5 86a8faa6c2ee1cc37737f1ad26d71811
BLAKE2b-256 12efec9bfcda935fad3669027dcb8fde18e490b4aea0c85c8c841f0ae09f7d7e

See more details on using hashes here.

Release history Release notifications | RSS feed

0.9.84

2 files

0.9.83

2 files

0.9.82

3 files

0.9.81

3 files

This release

0.9.80 This release

3 files

0.9.79

3 files

0.9.78

3 files

0.9.77

3 files

0.9.76

3 files

0.9.75

3 files

0.9.74

3 files

0.9.73

3 files

0.9.72

3 files

0.9.71

3 files

0.9.70

3 files

0.9.69

3 files

0.9.68

3 files

0.9.67

3 files

0.9.66

3 files

0.9.65

3 files

0.9.63

3 files

0.9.62

3 files

0.9.61

3 files

0.9.60

3 files

0.9.59

3 files

0.9.58

3 files

0.9.57

3 files

0.9.56

3 files

0.9.55

3 files

0.9.52

3 files

0.9.51

3 files

0.9.50

3 files

0.9.48

3 files

0.9.46

3 files

0.9.45

3 files

0.9.44

3 files

0.9.43

3 files

0.9.42

3 files

0.9.41

3 files

0.9.40

3 files

0.9.38

3 files

0.9.37

2 files

0.9.36

3 files

0.9.35

3 files

0.9.34

3 files

0.9.33

3 files

0.9.32

3 files

0.9.31

3 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page