Skip to main content

PyPI version shields.io PyPI pyversions Ruff Checked with mypy

Schemapack

Make your JSON Schemas sociable and create linked data models.

Description

Schemapack is a library that defines a lightweight data modeling framework based on a schema description, a compatible data instance format, and the tooling that supports them. It introduces two main components: the schemapack, which describes linked data structures, and the datapack, which represents the data conforming to those structures. The tooling around schemapack and datapack focuses on loading, extraction, and validation, and supports partial extraction and data embedding operations. The Schemapack library includes a CLI component that provides access to core functionality via the command line.

Installation

This package is available at PyPI: https://pypi.org/project/schemapack

Install:

bash

pip install schemapack

Upgrade:

pip install --upgrade schemapack

Usage

bash

schemapack --help


 Usage: schemapack [OPTIONS] COMMAND [ARGS]...

 Common arguments and options.

╭─ Options ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --version                     Show the version of the library and exit.                                                                   │
│ --install-completion          Install completion for the current shell.                                                                   │
│ --show-completion             Show completion for the current shell, to copy it or customize the installation.                            │
│ --help                        Show this message and exit.                                                                                 │
╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ validate              Validate a datapack against a schemapack.                                                                           │
│ check-schemapack      Check if the provided JSON/YAML document complies with the schemapack specs.                                        │
│ check-datapack        Check if the provided JSON/YAML document complies with the datapack specs.                                          │
│ condense-schemapack   Writes a version of the provided schemapack with embedded content schemas to                                        │
│                       stdout.                                                                                                             │
│ isolate-resource      Isolate a resource from the given datapack and write a datapack that is rooted to                                   │
│                       this resource to stdout.                                                                                            │
│ isolate-class         Isolate a class from the given schemapack and write a condensed (with content                                       │
│                       schemas being embedded) schemapack that is rooted to this class to stdout.                                          │
│ export-mermaid        Generate an entity relationship diagram based on the mermaid markup from the                                        │
│                       provided schemapack.                                                                                                │
╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯


Quick Start

This example shows how to validate a datapack.yaml file against a schemapack.yaml using the schemapack Python library. The schemapack defines the schema and validation rules, while the datapack contains the actual data to be validated. The steps below demonstrate how to load both files and run validation with SchemaPackValidator.

from pathlib import Path

from schemapack import SchemaPackValidator, load_datapack, load_schemapack

schemapack_path = Path("path/to/schemapack.yaml")
datapack_path = Path("path/to/datapack.yaml")

# load schemapack
schemapack = load_schemapack(schemapack_path)

# load datapack
datapack = load_datapack(datapack_path)

# validate datapack against schemapack
validator = SchemaPackValidator(schemapack=schemapack)
validator.validate(datapack=datapack)

Documentation

Development

This package is a member of the GHGA monorepo and is developed from the repository root rather than on its own. The repository ships a devcontainer with the whole toolchain: open it in VS Code and run Remote-Containers: Reopen in Container, or set the environment up directly with just sync.

The usual tasks, run from the repository root (see ADR-0034 for the full recipe list):

just sync                  # install every member plus the shared dev toolchain
just test libs/schemapack  # this member's test suite
just lint                  # ruff check + format check across the workspace

License

This repository is free to use and modify according to the Apache 2.0 License.

Metadata

Release files for schemapack 4.4.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for schemapack 4.4.1
File Size Uploaded
schemapack-4.4.1.tar.gz 46.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for schemapack 4.4.1
File Interpreter ABI Platform
schemapack-4.4.1-py3-none-any.whl Python 3 none any Details

Total release size: 120.6 kB

Release files / schemapack-4.4.1.tar.gz

Download URL schemapack-4.4.1.tar.gz
Size 46.3 kB
Tags Source
SHA-256 checksum
How to use checksums
0c7cfa438ac019d9e7c9ad4f147e859f2b8fe092cf22a4deda13f9054a45a937
BLAKE2b-256 checksum
How to use checksums
55aac28ba144cca364f36e9f46e2a424a245f3092855db558aad2e71578962e8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / schemapack-4.4.1-py3-none-any.whl

Download URL schemapack-4.4.1-py3-none-any.whl
Size 74.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6222ad364c612542b35769a6010bd5f754f8529c03f26bec99940ff609cc3ecc
BLAKE2b-256 checksum
How to use checksums
c568b6245f67423c9c046c285d2509dc0b114d51bb5ef1e52cc0397c18b1ad3e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
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