Skip to main content

hypothesis-jsonschema

A Hypothesis strategy for generating data that matches some JSON schema. It is currently in early alpha, but you can use it if you want. Here's the PyPI page.

The public API consists of a just two functions:

hypothesis_jsonschema.from_schema

Takes a JSON schema and return a strategy for allowed JSON objects.

This strategy supports almost all of the schema elements described in the draft RFC as of February 2019 (draft07), with the following exceptions:

  • For objects, the "dependencies" keyword is not supported.
  • Schema reuse with "definitions" is not supported.
  • string-encoding of non-JSON data is not supported.
  • schema annotations, i.e. "title", "description", "default", "readOnly", "writeOnly", and "examples" are not supported.
  • JSON pointers are not supported.

Draft07 support depends on having a compatible version of jsonschema, which at time of writing is limited to the pre-release 3.0.0x versions. Draft04 remains fully supported with the same exceptions.

hypothesis_jsonschema.json_schemata

A Hypothesis strategy for arbitrary JSON schemata.

This strategy may generate anything that can be handled by from_schema, and is used to provide full branch coverage when testing this package.

Supported versions

hypothesis-jsonschema does not support Python 2, because it's close to end of life and Python 3.6+ is a much nicer language. Contact me if you would like this changed and are willing to either pay for or do the work to support Python 2.

In general, 0.x versions will require very recent versions of all dependencies because I don't want to deal with compatibility workarounds.

hypothesis-jsonschema may make backwards-incompatible changes at any time before version 1.x - that's what semver means! - but I've kept the API surface small enough that this should be avoidable. The main source of breaks will be if or when schema that never really worked turn into explicit errors instead of generating values that don't quite match.

Changelog:

0.6.1 - 2019-02-23

  • Fix continuous delivery configuration (before the latent bug manifested)

0.6.0 - 2019-02-23

  • Support for conditional subschemata, i.e. the if, then, else keywords, and the anyOf, allOf, oneOf, and not keywords.

0.5.0 - 2019-02-22

  • Works with jsonschema 3.0 pre-release
  • Initial support for draft06 and draft07

0.4.2 - 2019-02-14

  • Dropped dependency on canonicaljson
  • Less warnings on Python 3.7

0.4.1 - 2019-02-06

  • Relicensed under the more permissive Mozilla Public License, like Hypothesis
  • Requires Hypothesis version 4.0 or later
  • Fixed an array bounds bug with maxItems and contains keywords

0.4.0 - 2018-11-25

Supports string formats (email, datetime, etc) and simple use of the "contains" keyword for arrays.

0.3.0 - 2018-11-25

Good support for all basic types. MVP.

0.2.0 - 2018-11-24

Inference for null, boolean, string, and numeric types.

0.1.0 - 2018-11-21

Stake in the ground (generate arbitrary JSON and filter it!)

Metadata

Release files for hypothesis-jsonschema 0.6.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 hypothesis-jsonschema 0.6.1
File Size Uploaded
hypothesis-jsonschema-0.6.1.tar.gz 9.2 kB Details

Release files / hypothesis-jsonschema-0.6.1.tar.gz

Download URL hypothesis-jsonschema-0.6.1.tar.gz
Size 9.2 kB
Tags Source
SHA-256 checksum
How to use checksums
7bb4e3fc94e74136c46126af5b21869f14747e62a1786e54140cfb3d9bda7704
BLAKE2b-256 checksum
How to use checksums
2e81667cddafa9258b46fb9d63a9ecdf0e6c08a12316b0b1974e936409b45344
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.7

Release history Release notifications | RSS feed

0.23.1

2 release files

0.23.0

2 release files

0.22.0

2 release files

0.19.2

2 release files

0.19.1

2 release files

0.18.2

2 release files

0.18.1

2 release files

0.18.0

2 release files

0.17.4

2 release files

0.17.3

2 release files

0.17.2

2 release files

0.17.1

2 release files

0.17.0

2 release files

0.16.2

2 release files

0.16.1

2 release files

0.13.1

2 release files

0.13.0

2 release files

0.12.1

2 release files

0.11.1

2 release files

0.11.0

2 release files

0.10.3

2 release files

0.10.1

2 release files

0.10.0

2 release files

0.9.13

2 release files

0.9.11

2 release files

0.9.10

2 release files

0.9.9

2 release files

0.9.8

2 release files

0.9.7

2 release files

0.9.6

2 release files

0.9.5

1 release file

0.9.4

1 release file

0.9.3

1 release file

0.9.2

1 release file

0.9.1

1 release file

0.9.0

1 release file

0.8.2

1 release file

0.8.1

1 release file

0.8.0

1 release file

0.7.0

1 release file

This release

0.6.1 This release

1 release file

0.6.0

1 release file

0.5.0

1 release file

0.4.2

1 release file

0.4.1

1 release file

0.4.0

1 release file

0.3.0

1 release file

0.2.0

1 release file

0.1.0

1 release file

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