Skip to main content

YAML Schema

A library that implements some amount of jsonschema validation against YAML document ASTs.

Unlike other JSON-schema validation tools which give document path relative errors, this approach allows for line & file errors more appropriate to user-facing tools. yamlschema (PyPi) (Github) (source) just loads the YAML document fully and punts directly to jsonschema; making it difficult-to-impossible to map errors back to source locations.

API Overview

yamlschema.LintRecord(level, node, schema, message)

LintRecords are what linting produces. Each LintRecord contains the YAML AST node which failed validation, the schema it failed to validate against, and some metadata.

level is a LintLevel which attempts to explain what "kind" of error this piece of lint represents. For instance LintLevel.MISSING encodes missing properties. LintLevel.MISSMATCH encodes type mismatches. LintLevel.UNEXPECTED encodes unexpected/disallowed keys and other errors.

yamlschema.YamlLinter(schema)

The linter itself is implemented as a class with a variety of instance methods; allowing the linter to be hacked by users much in the same way that JSON encodiers and decoders can be hacked.

The linter "interface" consists of __init__(schema: dict); being a loaded JSON schema as a dict tree and lint_document(schema, node) -> Iterable[LintRecord] which initiates the recursive linting.

The reference implementation of the linter recursively calls lint_document on every sub-structure in the document.

yamlschema.lint_file(schema, path, cls=YamlLinter)

As conveniences, yamlschema gives you a couple entrypoints that handle constructing the linter class, using yaml.compose() to get an AST and starting linting for you. lint_file and lint_buffer respectively allow the user to either bring a file path or a string of YAML.

Example

>>> from yamlschema import lint_buffer
>>> list(lint_buffer({"type": "integer"}, "---\n1.0"))
[
  LintRecord(
    level=<LintLevel.MISSMATCH: 2>,
    node=ScalarNode(tag='tag:yaml.org,2002:float', value='1.0'),
    schema={'type': 'integer'},
    message="Expected an integer, got a 'tag:yaml.org,2002:float'"
  )
]

Metadata

Release files for arrdem.yamlschema 0.1.0

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

Built distribution (wheel)

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

Release files / arrdem.yamlschema-0.1.0-py3-none-any.whl

Download URL arrdem.yamlschema-0.1.0-py3-none-any.whl
Size 4.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
12ac5bb1f8b68597fe213cf07958322bccf3968870226c92723782c9140e516b
BLAKE2b-256 checksum
How to use checksums
d304fecdea29116517afe6469296e81281d393d84f891f10daaef65c647f9431
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.6

Security for arrdem.yamlschema 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

0.1.0 This release

1 release file No provenance

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