diff --git a/pkgs/development/python-modules/jschon/default.nix b/pkgs/development/python-modules/jschon/default.nix new file mode 100644 index 000000000000..8a1686095fbf --- /dev/null +++ b/pkgs/development/python-modules/jschon/default.nix @@ -0,0 +1,75 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, setuptools +, wheel +, rfc3986 +, pytestCheckHook +, hypothesis +, requests +, pytest-httpserver +, pytest-xdist +}: + +buildPythonPackage rec { + pname = "jschon"; + version = "0.11.1"; + pyproject = true; + + src = fetchFromGitHub { + owner = "marksparkza"; + repo = "jschon"; + rev = "v${version}"; + hash = "sha256-uOvEIEUEILsoLuV5U9AJCQAlT4iHQhsnSt65gfCiW0k="; + fetchSubmodules = true; + }; + + build-system = [ + setuptools + wheel + ]; + + dependencies = [ + rfc3986 + ]; + + pythonImportsCheck = [ + "jschon" + "jschon.catalog" + "jschon.vocabulary" + "jschon.exc" + "jschon.exceptions" + "jschon.formats" + "jschon.json" + "jschon.jsonpatch" + "jschon.jsonpointer" + "jschon.jsonschema" + "jschon.output" + "jschon.uri" + "jschon.utils" + ]; + + nativeCheckInputs = [ + pytestCheckHook + hypothesis + requests + pytest-httpserver + #pytest-benchmark # not needed for distribution + pytest-xdist # not used upstream, but massive speedup + ]; + + disabledTestPaths = [ + "tests/test_benchmarks.py" + ]; + + # used in checks + __darwinAllowLocalNetworking = true; + + meta = with lib; { + description = "An object-oriented JSON Schema implementation for Python"; + homepage = "https://github.com/marksparkza/jschon"; + changelog = "https://github.com/marksparkza/jschon/blob/${src.rev}/CHANGELOG.rst"; + license = licenses.mit; + maintainers = with maintainers; [ pbsds ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 005bb5fc87d7..c3a056ee545a 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -6202,6 +6202,8 @@ self: super: with self; { jschema-to-python = callPackage ../development/python-modules/jschema-to-python { }; + jschon = callPackage ../development/python-modules/jschon { }; + jsmin = callPackage ../development/python-modules/jsmin { }; json5 = callPackage ../development/python-modules/json5 { };