Skip to main content

Linter for JSON Schema instances.

Project description

jsonschema-lint

Linter for JSON Schema instances.

Installation

This project is not currently packaged and so must be installed manually.

Clone the project with the following command:

git clone https://github.com/jacksmith15/jsonschema-lint.git

Usage

The linter is invoked on the command line:

$ jsonschema-lint

Selecting instances

By default, the linter will attempt to lint every file matching extension under the currect directory. This means every .json file, plus every .yaml/.yml file if PyYAML is installed. A file will only be linted if a matching schema can be detected (see below).

You can override this behaviour by passing arguments to the linter, e.g.

$ jsonschema-lint **/*.avsc

Schema resolution

There are three ways schemas can be selected for a given instance. In order of priority:

  1. If provided, the --schema option will be used to validate all target instances.
  2. A matching rule in a .jsonschema-lint file, in the instance directory or its parents (see below).
  3. If the --schema-store flag is provided, then matching rules from Schema Store will be used.

.jsonschema-lint files

.jsonschema-lint files follow similar logic to .gitignore and Github CODEOWNERS files, in that they apply to all files under their directory tree.

Each line in a .jsonschema-lint file is a rule, matching a filepath pattern to a particular schema. For example:

**/.circleci/config.yml  https://json.schemastore.org/circleciconfig.json  yaml

There are three parts to each rule, separated by whitespace. These are:

  • the pattern/glob, in this case matching any files named config.yml in a directory named .circleci
  • the location of the schema. This can be a remote URL, or a path on the local filesystem. If this is a relative path, it is resolved relative to the .jsonschema-lint file.
  • (optional) the expected file format of any instances. If this is omitted, the linter will attempt to detect the correct type from the file extension. If it cannot be detected, both will be attempted.

Development

Install dependencies:

pyenv shell 3.9.4  # Or other 3.9.x
pre-commit install  # Configure commit hooks
poetry install  # Install Python dependencies

Run tests:

poetry run inv verify

License

This project is distributed under the MIT license.

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

jsonschema-lint-0.1.0.tar.gz (14.5 kB view details)

Uploaded Source

Built Distribution

jsonschema_lint-0.1.0-py3-none-any.whl (18.4 kB view details)

Uploaded Python 3

File details

Details for the file jsonschema-lint-0.1.0.tar.gz.

File metadata

  • Download URL: jsonschema-lint-0.1.0.tar.gz
  • Upload date:
  • Size: 14.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.11 CPython/3.8.6 Linux/5.8.0-63-generic

File hashes

Hashes for jsonschema-lint-0.1.0.tar.gz
Algorithm Hash digest
SHA256 2626105694550a5c40e2f55d6d20fd49d5a886df7130ba78f913590fcd7317c9
MD5 f5204b7e56f3a62f7e88676c47c902d5
BLAKE2b-256 584c0166551d5aa74e48e80d3ce53dc04332fe3d6d39faafc87435caf22b635b

See more details on using hashes here.

File details

Details for the file jsonschema_lint-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: jsonschema_lint-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 18.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.11 CPython/3.8.6 Linux/5.8.0-63-generic

File hashes

Hashes for jsonschema_lint-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 274a1abc82b0274d4b2be0f3fea9a091d723239e3271ec5aed86e640c9ab64e4
MD5 eda28dede68d415f007b9e1732db0fbc
BLAKE2b-256 bec379e40253c199ba2a9f97bb38ec7896618399b412091e8e2ac4ab1c6fd353

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