Skip to main content

Make your JSON Schemas sociable and create linked data models.

Project description

tests Coverage Status PyPI version shields.io PyPI pyversions

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

For setting up the development environment, we rely on the devcontainer feature of VS Code in combination with Docker Compose.

To use it, you have to have Docker Compose as well as VS Code with its "Remote - Containers" extension (ms-vscode-remote.remote-containers) installed. Then open this repository in VS Code and run the command Remote-Containers: Reopen in Container from the VS Code "Command Palette".

This will give you a full-fledged, pre-configured development environment including:

  • infrastructural dependencies of the service (databases, etc.)
  • all relevant VS Code extensions pre-installed
  • pre-configured linting and auto-formatting
  • a pre-configured debugger
  • automatic license-header insertion

Moreover, inside the devcontainer, a command dev_install is available for convenience. It installs the service with all development dependencies, and it installs pre-commit.

The installation is performed automatically when you build the devcontainer. However, if you update dependencies in the ./pyproject.toml or the lock/requirements-dev.txt, please run it again.

License

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

README Generation

This README file is auto-generated, please see .readme_generation/README.md for details.

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

schemapack-4.0.1.tar.gz (43.4 kB view details)

Uploaded Source

Built Distribution

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

schemapack-4.0.1-py3-none-any.whl (71.0 kB view details)

Uploaded Python 3

File details

Details for the file schemapack-4.0.1.tar.gz.

File metadata

  • Download URL: schemapack-4.0.1.tar.gz
  • Upload date:
  • Size: 43.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for schemapack-4.0.1.tar.gz
Algorithm Hash digest
SHA256 2f44f392f8c05e9440a012161e3aacb854ad1c63ab9853c66dde41a6e683e9c5
MD5 67e48e093f89e2aeb13f61a4548c25ae
BLAKE2b-256 59351f95318e938b04e01fb190f524c2eaf28bd3cf8579b88fb9f5d35b782261

See more details on using hashes here.

File details

Details for the file schemapack-4.0.1-py3-none-any.whl.

File metadata

  • Download URL: schemapack-4.0.1-py3-none-any.whl
  • Upload date:
  • Size: 71.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for schemapack-4.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6ef352e984acdd7b71f48ea89c6189a77e0b594a28ef7ec422dc73a62d237018
MD5 e04ed03b41ba3422f68baab2b58609d3
BLAKE2b-256 fb276610b1b1b34554c44fe0e522c137f93eb2ffd12ef13926d2fa7f2b151d2d

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