Skip to main content

Python bindings for Rudof

Project description

pyrudof - Python bindings for Rudof

pyrudof provides Python bindings for rudof, a Rust library for Semantic Web operations.

At a high level it supports:

  • Loading and serializing RDF and PG data.
  • Loading, checking, serializing and validating ShEx schemas.
  • Loading, serializing and validating SHACL shapes.
  • Loading, serializing and validating PGSchemas.
  • Loading, running and serializing SPARQL queries and query results.
  • Converting and comparing schemas between supported formats.
  • Loading and serializing DCTAP and Service Descriptions.
  • Generating synthetic data from schemas.

Installation

Install from PyPI (recommended)

pip install pyrudof

pyrudof is built with PyO3 using abi3 wheels (Python 3.7+ compatible).

Build from source

Building from source requires a working Rust toolchain and Python.

# Clone the repository
git clone https://github.com/rudof-project/rudof.git
cd rudof/python

# Optional but recommended: virtual environment
python -m venv .venv
# Linux/macOS:
source .venv/bin/activate
# Windows PowerShell:
# .\.venv\Scripts\Activate.ps1

# Build and install editable package
pip install maturin
pip install -e .

For a release wheel:

maturin build --release
pip install --force-reinstall target/wheels/pyrudof-*.whl

Architecture and package structure

Package layout

Path Purpose
src/ Rust implementation of the Python bindings (Rudof, RudofConfig, generator APIs, enums, and error mappings).
stubs/pyrudof/ Hand-maintained .pyi type stubs for static type checking and editor support.
examples/ Runnable example scripts organized by category, plus examples.toml manifest metadata.
tests/ Python unittest suite and manifest registry loader for example-based tests.
docs/ Sphinx docs, including the examples page generator (generate_examples_doc.py).
Cargo.toml / pyproject.toml Rust crate and Python build configuration (maturin + PyO3).

Test architecture

Tests are dynamically generated from examples/examples.toml.

Each generated test:

  1. Executes the registered Python example as a subprocess.
  2. Asserts a zero exit code.
  3. Checks configured expected_output substrings (if any).
Component Purpose
tests/test_examples.py Builds dynamic unittest.TestCase classes per category/example.
tests/examples_registry.py Loads and validates examples/examples.toml entries.
examples/examples.toml Single source of truth for metadata and category order.
examples/**/*.py Executable example scripts run by tests and referenced by docs.

Testing

All test commands are run from bindings/python/tests.

Run the full suite

cd bindings/python/tests
python -m unittest discover -vvv

Run a specific category or test

# All ShEx examples
python -m unittest test_examples.TestShexExamples -v

# All SHACL examples
python -m unittest test_examples.TestShaclExamples -v

# All data generation examples
python -m unittest test_examples.TestGenerateExamples -v

# A single example
python -m unittest test_examples.TestShexExamples.test_shex_validate_inline -v

Run skipped examples

Examples marked with skip_test = true in the manifest are skipped by default.

# Linux/macOS
RUN_SKIPPED_EXAMPLES=1 python -m unittest test_examples -v

# Windows PowerShell
$env:RUN_SKIPPED_EXAMPLES="1"; python -m unittest test_examples -v

Examples and documentation

The examples system is intentionally centralized:

  • examples/examples.toml stores metadata (key, source_file, title, description, category, files, expected_output, skip_test).
  • examples/**/*.py stores the executable code.
  • tests/test_examples.py and docs/generate_examples_doc.py both read from that same manifest.

Available categories

Category Description
rdf RDF loading, serialization, node inspection
sparql SELECT / CONSTRUCT query workflows
shex ShEx loading, validation, and serialization
shacl SHACL loading, validation, extraction, serialization
dctap DCTAP profile handling
endpoint Service description examples
generate Synthetic data generation APIs
utility Config, resets, version, module/error helpers

Add a new example

  1. Create a runnable script under bindings/python/examples/ (recommended: place it inside a category subfolder, for example bindings/python/examples/shex/my_example.py).
  2. Register it in bindings/python/examples/examples.toml.
  3. Run tests from bindings/python/tests.
  4. Regenerate and check docs in bindings/python/docs.

Manifest template:

[[example]]
key = "my_example"
source_file = "shex/my_example.py"
title = "My Example"
description = "What this example demonstrates"
category = "shex"  # rdf | sparql | shex | shacl | dctap | endpoint | generate | utility
files = { data = "person.ttl" }  # optional referenced files
expected_output = ["Alice"]       # optional substrings (can be empty list)
# skip_test = true                 # optional (network/special runtime)

Build docs locally

cd bindings/python/docs
python generate_examples_doc.py --update
python generate_examples_doc.py --check
python -m sphinx -b html . _build/html

Then open bindings/python/docs/_build/html/index.html.

Project details


Release history Release notifications | RSS feed

This version

0.3.6

Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

pyrudof-0.3.6-cp37-abi3-win_amd64.whl (9.8 MB view details)

Uploaded CPython 3.7+Windows x86-64

pyrudof-0.3.6-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.2 MB view details)

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

pyrudof-0.3.6-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (11.0 MB view details)

Uploaded CPython 3.7+manylinux: glibc 2.17+ ARM64

pyrudof-0.3.6-cp37-abi3-macosx_11_0_arm64.whl (10.1 MB view details)

Uploaded CPython 3.7+macOS 11.0+ ARM64

pyrudof-0.3.6-cp37-abi3-macosx_10_12_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.7+macOS 10.12+ x86-64

File details

Details for the file pyrudof-0.3.6-cp37-abi3-win_amd64.whl.

File metadata

  • Download URL: pyrudof-0.3.6-cp37-abi3-win_amd64.whl
  • Upload date:
  • Size: 9.8 MB
  • Tags: CPython 3.7+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.14.1

File hashes

Hashes for pyrudof-0.3.6-cp37-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 8631d0a8312da0db4c60e3970104a9256ecefff0c3d76062783e6a49ffc210d6
MD5 1c1790334e91beedf1aaf71b409534d4
BLAKE2b-256 f01d0ba6c94be84695db9ca337a678e0225d6b6df712373d067bba11b112f4c0

See more details on using hashes here.

File details

Details for the file pyrudof-0.3.6-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyrudof-0.3.6-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 11cb21bb6219f441831191121ff3020f924734d372320709289b43da192b553f
MD5 d6ca2f0544a6a37f1374c6fe1c226821
BLAKE2b-256 25f0ecdeaa43182faf89846495d1b2156437bf35fc28625b804a907645ffb174

See more details on using hashes here.

File details

Details for the file pyrudof-0.3.6-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyrudof-0.3.6-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 478d73841940b6fb6dd36a1973584aa277f68f7b0baf3378ba36acc97cd3ab09
MD5 21e609f85062b61a75d23eb98acd2473
BLAKE2b-256 ea33f8e8a1e70ad311db3e040d1b0e79049677d6e52b6b00520e40ce7412849c

See more details on using hashes here.

File details

Details for the file pyrudof-0.3.6-cp37-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyrudof-0.3.6-cp37-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 914fd1030ad32764b0c7cc445cde4818e6fa2fc4d681f7aebcf2e2988ea40efa
MD5 c3b7a8309b6c3bedd40d32e39cc17384
BLAKE2b-256 24144a48b0b299fb58245d191dd95a5bbecca7f04b132a388e0dc2eaf71d8ebf

See more details on using hashes here.

File details

Details for the file pyrudof-0.3.6-cp37-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for pyrudof-0.3.6-cp37-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 99b08eb532ec4d4250c27e7257962888631b3c353b4fe487b02b925df0bb1e6d
MD5 7934fa2407ebc749a84e640dff74d4d7
BLAKE2b-256 988351b8bb185e693c7c892341e7083b9e240c9db7e6ac1965857c57f1ea2fd7

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