Skip to main content

A meta-validator for the JSON Schema specification.

Project description

PyPI version Supported Python versions Build status

Bowtie is a meta-validator of the JSON Schema specification, by which we mean it coordinates executing other validator implementations, collecting and reporting on their results.

To do so it defines a simple input/output protocol (specified in this JSON Schema which validator implementations can implement, and it provides a CLI which can execute supported implementations.

It’s called Bowtie because it fans in lots of JSON then fans out lots of results: >·<. Looks like a bowtie, no? Also because it’s elegant – we hope.

Execution

In general, executing bowtie consists of providing 2 pieces of input:

  • The names of one or more supported implementations to execute

  • One or more test cases to run against these implementations (schemas, instances and optionally, expected validation results)

Given these, bowtie will report on the result of executing each implementation against the input schema/instance pairs. If expected results are provided, it will compare the results produced against the expected ones, reporting on any implementations which differ from the expected output.

CLI

A sample invocation of the CLI is:

$ bowtie run -i some/jsonschema-implementation/docker-image <<EOF
{"description": "stuff", "schema": {}, "tests": [{"description": "a test", "instance": {"foo": "bar"}}] }
EOF
{"valid": true}

(TODO)

Uses

A key use of bowtie is in executing as input the official test suite and comparing the results produced by implementations to the expected ones from the suite.

Of course one isn’t limited to just the test cases in the test suite, as bowtie can be used to compare the validation results of any input across its supported implementations.

Adding an Implementation

Add a Dockerfile which runs as its entry point a bowtie-compatible process to the implementations/ directory in the root of this repository.

Name your directory <(ascii-compatible-name-of-)language-your-implementation-is-written-in>-<language-specific-package-identifier>, so if your implementation is written in B++ and called flooblekins, name the directory bpp-flooblekins.

Project details


Release history Release notifications | RSS feed

This version

0.5.2

Download files

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

Source Distribution

bowtie_json_schema-0.5.2.tar.gz (32.0 kB view details)

Uploaded Source

Built Distribution

bowtie_json_schema-0.5.2-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

Details for the file bowtie_json_schema-0.5.2.tar.gz.

File metadata

  • Download URL: bowtie_json_schema-0.5.2.tar.gz
  • Upload date:
  • Size: 32.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for bowtie_json_schema-0.5.2.tar.gz
Algorithm Hash digest
SHA256 c6c8e7964617c4001b619b5a65b9258b7a9ceaa7055288b8c7faaf13ac3277b5
MD5 1b557ef9b58d3b28b9f53d2e545ec873
BLAKE2b-256 c61761850c32afdeeb871e813daf74d06fef0e5996717b9d6a1ff99a7e4f28e0

See more details on using hashes here.

File details

Details for the file bowtie_json_schema-0.5.2-py3-none-any.whl.

File metadata

File hashes

Hashes for bowtie_json_schema-0.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 76235c26651a75b92dbd95bb23e835a824b5f5d02b5813a09eb141f37c6f8559
MD5 6dcc702a7886eabbd5f4dcb05ecc3621
BLAKE2b-256 d4cf72f37568afb27c77465176714267472a7ac1cce722af5b9ac86bd41c8e10

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page