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.42.tar.gz (763.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.42-cp314-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (15.3 MB view details)

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

commonmeta_rs-0.9.42-cp314-abi3-macosx_11_0_arm64.whl (13.6 MB view details)

Uploaded CPython 3.14+macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: commonmeta_rs-0.9.42.tar.gz
  • Upload date:
  • Size: 763.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.42.tar.gz
Algorithm Hash digest
SHA256 3e648dfae5b206075bee0b80633604e92bcdb75cd951a0fa9e1ab1e660329e79
MD5 7e90a3e99231392e5793ba6592677b4c
BLAKE2b-256 6b8adaaa36f3e5340c4e2b159d9baa0fd113ae90a5cb145f50a2c23aa80fea4a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: commonmeta_rs-0.9.42-cp314-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 15.3 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.42-cp314-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 437065d7b804f90fc82aabcfdc4c7c4fd818dbefa8a2d0818f35a0cc6431b096
MD5 ac975a546d00add5415bdc316914e524
BLAKE2b-256 1b05b431fa56fd67b88befb5b0a8be32f6a55c6155f0c510203eff79622b569a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: commonmeta_rs-0.9.42-cp314-abi3-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 13.6 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.42-cp314-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1c30f9449a21635b6e90f6f736bec81027327802497d8f332bf101ebaf9fda89
MD5 02501526bb270724bf638a4a4c74ac19
BLAKE2b-256 fc352b3f6bb887c76b2ecd4732aaec99a233f21221d7200ce848d8707a980c0a

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