Skip to main content

PyO3 bindings for commonmeta-rs's list/batch functions (VRAIX dump fetch+cache, Parquet I/O, batched archives)

Project description

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.

rm -rf dist
maturin build --release --out dist   # repeat per platform, or take CI artifacts
maturin sdist --out dist
uv publish --token "$PYPI_TOKEN" dist/*

Publishing from one machine uploads only that platform's wheel; other platforms fall back to building from the sdist. To ship binaries for every platform, collect the wheels-* artifacts from the 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.

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

commonmeta_rs-0.9.36.tar.gz (732.0 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.36-cp314-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (15.1 MB view details)

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

commonmeta_rs-0.9.36-cp314-abi3-macosx_11_0_arm64.whl (13.5 MB view details)

Uploaded CPython 3.14+macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: commonmeta_rs-0.9.36.tar.gz
  • Upload date:
  • Size: 732.0 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.36.tar.gz
Algorithm Hash digest
SHA256 0bbfa95475db5195471bc2c01cbc3591ed3bd7703834eede257a84edaed78ea4
MD5 3f7b1eec937133bdbad39a93f72784a1
BLAKE2b-256 1c325581db8cd57f02dbed4fb9b9f70819a62bfc8ea75ed2a2ab1f4adeae2c2d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: commonmeta_rs-0.9.36-cp314-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 15.1 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.36-cp314-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2cf4a79afb287def571f2fac435ab81a05ee85f8a68dbfa09f5969c3a806c454
MD5 2e5e6e69e8587dc9cb9b4983d9b80617
BLAKE2b-256 681e57ff9977c480ed3c1e6424459e70bac2f1b1140e2e00ba26bb24077571aa

See more details on using hashes here.

File details

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

File metadata

  • Download URL: commonmeta_rs-0.9.36-cp314-abi3-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 13.5 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.36-cp314-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 13513cf721a1f904916cccd841c698456ca1bdd7bd439e6e9773aea21642d576
MD5 778b5d383d94d1e9ff77ada0d4aa8bb3
BLAKE2b-256 339f8cb34bb976295691bcab1bce6af4f66f8a6c397f02f5836653a6948032e3

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