<86>Dec 21 08:24:23 userdel[867440]: delete user 'rooter' <86>Dec 21 08:24:23 userdel[867440]: removed group 'rooter' owned by 'rooter' <86>Dec 21 08:24:23 userdel[867440]: removed shadow group 'rooter' owned by 'rooter' <86>Dec 21 08:24:23 groupadd[867525]: group added to /etc/group: name=rooter, GID=1844 <86>Dec 21 08:24:23 groupadd[867525]: group added to /etc/gshadow: name=rooter <86>Dec 21 08:24:23 groupadd[867525]: new group: name=rooter, GID=1844 <86>Dec 21 08:24:23 useradd[867607]: new user: name=rooter, UID=1844, GID=1844, home=/root, shell=/bin/bash, from=none <86>Dec 21 08:24:23 userdel[867723]: delete user 'builder' <86>Dec 21 08:24:23 userdel[867723]: removed group 'builder' owned by 'builder' <86>Dec 21 08:24:23 userdel[867723]: removed shadow group 'builder' owned by 'builder' <86>Dec 21 08:24:23 groupadd[867775]: group added to /etc/group: name=builder, GID=1845 <86>Dec 21 08:24:23 groupadd[867775]: group added to /etc/gshadow: name=builder <86>Dec 21 08:24:23 groupadd[867775]: new group: name=builder, GID=1845 <86>Dec 21 08:24:23 useradd[867815]: new user: name=builder, UID=1845, GID=1845, home=/usr/src, shell=/bin/bash, from=none <13>Dec 21 08:24:29 rpmi: libmpdec3-2.5.1-alt3 sisyphus+314490.500.5.1 1675432033 installed <13>Dec 21 08:24:29 rpmi: libgdbm-1.8.3-alt10 sisyphus+346222.200.3.2 1716468406 installed <13>Dec 21 08:24:29 rpmi: libexpat-2.5.0-alt1 sisyphus+346180.200.2.1 1716349845 installed <13>Dec 21 08:24:29 rpmi: libb2-0.98.1-alt1_1 sisyphus+291614.100.1.1 1638962878 installed <13>Dec 21 08:24:29 rpmi: libp11-kit-1:0.25.5-alt1 sisyphus+352553.100.1.1 1720622586 installed <13>Dec 21 08:24:29 rpmi: libtasn1-4.19.0-alt3 sisyphus+327816.100.1.1 1692802618 installed <13>Dec 21 08:24:29 rpmi: rpm-macros-alternatives-0.5.2-alt2 sisyphus+315270.200.2.1 1676457367 installed <13>Dec 21 08:24:29 rpmi: alternatives-0.5.2-alt2 sisyphus+315270.200.2.1 1676457367 installed <13>Dec 21 08:24:29 rpmi: ca-certificates-2024.12.10-alt1 sisyphus+364633.200.3.1 1733918603 installed <13>Dec 21 08:24:29 rpmi: ca-trust-0.2.0-alt1 sisyphus+344843.100.1.1 1712743326 installed <13>Dec 21 08:24:29 rpmi: p11-kit-trust-1:0.25.5-alt1 sisyphus+352553.100.1.1 1720622586 installed <13>Dec 21 08:24:29 rpmi: libcrypto3-3.1.7-alt2 sisyphus+359910.100.1.1 1729080696 installed <13>Dec 21 08:24:29 rpmi: libssl3-3.1.7-alt2 sisyphus+359910.100.1.1 1729080696 installed <13>Dec 21 08:24:29 rpmi: python3-3.12.8-alt1 sisyphus+364336.100.1.1 1733526985 installed <13>Dec 21 08:24:30 rpmi: python3-base-3.12.8-alt1 sisyphus+364336.100.1.1 1733526985 installed <13>Dec 21 08:24:30 rpmi: python3-module-py3dephell-0.3.1-alt1 sisyphus+365261.200.1.1 1734463433 installed <13>Dec 21 08:24:30 rpmi: python3-module-pyproject-installer-0.5.5-alt1 sisyphus+362541.100.1.1 1731610714 installed <13>Dec 21 08:24:30 rpmi: rpm-macros-pyproject-0.0.9-alt1 sisyphus+362541.300.2.1 1731671840 installed <13>Dec 21 08:24:30 rpmi: tests-for-installed-python3-pkgs-0.1.26-alt2 sisyphus+365350.100.1.1 1734517486 installed <13>Dec 21 08:24:30 rpmi: rpm-build-python3-0.1.26-alt2 sisyphus+365350.100.1.1 1734517486 installed <13>Dec 21 08:24:30 rpmi: rpm-build-pyproject-0.0.9-alt1 sisyphus+362541.300.2.1 1731671840 installed <13>Dec 21 08:24:34 rpmi: python3-module-more-itertools-10.5.0-alt1 sisyphus+357221.100.1.1 1725964420 installed <13>Dec 21 08:24:34 rpmi: python3-module-jaraco.functools-4.1.0-alt1 sisyphus+358564.100.1.1 1727528718 installed <13>Dec 21 08:24:35 rpmi: python3-module-packaging-24.2-alt1 sisyphus+362183.100.1.1 1731315992 installed <13>Dec 21 08:24:35 rpmi: python3-module-pluggy-1.5.0-alt1 sisyphus+345632.100.2.1 1713864244 installed <13>Dec 21 08:24:35 rpmi: python3-module-wheel-0.45.1-alt1 sisyphus+363326.100.2.1 1732609969 installed <13>Dec 21 08:24:35 rpmi: python3-module-platformdirs-4.3.6-alt1 sisyphus+357787.200.1.1 1726664692 installed <13>Dec 21 08:24:35 rpmi: python3-module-jaraco.context-6.0.1-alt1 sisyphus+357809.300.1.1 1726769204 installed <13>Dec 21 08:24:35 rpmi: python3-module-iniconfig-2.0.0-alt1 sisyphus+314076.200.3.1 1674737275 installed <13>Dec 21 08:24:35 rpmi: python3-module-autocommand-2.2.2-alt1.1 sisyphus+339714.100.1.1 1706968174 installed <13>Dec 21 08:24:35 rpmi: python3-module-jaraco.text-4.0.0-alt1 sisyphus+353877.400.2.1 1722250727 installed <13>Dec 21 08:24:35 rpmi: python3-module-jaraco.collections-5.1.0-alt1 sisyphus+357809.200.1.1 1726769173 installed <13>Dec 21 08:24:35 rpmi: python3-module-pkg_resources-1:75.6.0-alt1 sisyphus+363072.100.1.1 1732185085 installed <13>Dec 21 08:24:35 rpmi: libpython3-3.12.8-alt1 sisyphus+364336.100.1.1 1733526985 installed <13>Dec 21 08:24:35 rpmi: libncurses6-6.3.20220618-alt4 sisyphus+327286.4600.14.1 1711486782 installed <13>Dec 21 08:24:35 rpmi: libtinfo-devel-6.3.20220618-alt4 sisyphus+327286.4600.14.1 1711486782 installed <13>Dec 21 08:24:35 rpmi: libncurses-devel-6.3.20220618-alt4 sisyphus+327286.4600.14.1 1711486782 installed <13>Dec 21 08:24:36 rpmi: python3-dev-3.12.8-alt1 sisyphus+364336.100.1.1 1733526985 installed <13>Dec 21 08:24:36 rpmi: python3-module-setuptools-1:75.6.0-alt1 sisyphus+363072.100.1.1 1732185085 installed <13>Dec 21 08:24:36 rpmi: python3-module-pytest-8.3.4-alt1 sisyphus+363889.100.1.1 1733152874 installed Building target platforms: i586 Building for target i586 Wrote: /usr/src/in/nosrpm/python3-module-fastjsonschema-2.21.1-alt1.nosrc.rpm (w1.gzdio) Installing python3-module-fastjsonschema-2.21.1-alt1.src.rpm Building target platforms: i586 Building for target i586 Executing(%prep): /bin/sh -e /usr/src/tmp/rpm-tmp.86014 + umask 022 + /bin/mkdir -p /usr/src/RPM/BUILD + cd /usr/src/RPM/BUILD + cd /usr/src/RPM/BUILD + rm -rf python3-module-fastjsonschema-2.21.1 + echo 'Source #0 (python3-module-fastjsonschema-2.21.1.tar):' Source #0 (python3-module-fastjsonschema-2.21.1.tar): + /bin/tar -xf /usr/src/RPM/SOURCES/python3-module-fastjsonschema-2.21.1.tar + cd python3-module-fastjsonschema-2.21.1 + echo 'Source #1 (modules.tar):' Source #1 (modules.tar): + /bin/tar -xf /usr/src/RPM/SOURCES/modules.tar + /bin/chmod -c -Rf u+rwX,go-w . + echo 'Patch #0 (python3-module-fastjsonschema-2.21.1-alt.patch):' Patch #0 (python3-module-fastjsonschema-2.21.1-alt.patch): + /usr/bin/patch -p1 patching file tests/json_schema/utils.py + /usr/bin/python3 -m pyproject_installer deps --depsconfig /usr/src/RPM/SOURCES/pyproject_deps.json show pep518 + /usr/bin/python3 -m pyproject_installer deps --depsconfig /usr/src/RPM/SOURCES/pyproject_deps.json sync pep518 --verify --verify-exclude 'wheel$' INFO : pyproject.toml was not found, using defaults + /usr/bin/python3 -m pyproject_installer deps --depsconfig /usr/src/RPM/SOURCES/pyproject_deps.json show pep517 + /usr/bin/python3 -m pyproject_installer deps --depsconfig /usr/src/RPM/SOURCES/pyproject_deps.json sync pep517 --verify --verify-exclude 'wheel$' INFO : pyproject.toml was not found, using defaults + /usr/bin/python3 -m pyproject_installer deps --depsconfig /usr/src/RPM/SOURCES/pyproject_deps.json show metadata + /usr/bin/python3 -m pyproject_installer deps --depsconfig /usr/src/RPM/SOURCES/pyproject_deps.json sync metadata --verify INFO : Building metadata INFO : Building metadata with prepare_metadata_for_build_wheel INFO : Source tree: /usr/src/RPM/BUILD/python3-module-fastjsonschema-2.21.1 INFO : Output dir: /usr/src/tmp/tmp100cdy7b INFO : pyproject.toml was not found, using defaults + /usr/bin/python3 -m pyproject_installer deps --depsconfig /usr/src/RPM/SOURCES/pyproject_deps.json show check + /usr/bin/python3 -m pyproject_installer deps --depsconfig /usr/src/RPM/SOURCES/pyproject_deps.json sync check --verify + exit 0 Executing(%build): /bin/sh -e /usr/src/tmp/rpm-tmp.36765 + umask 022 + /bin/mkdir -p /usr/src/RPM/BUILD + cd /usr/src/RPM/BUILD + cd python3-module-fastjsonschema-2.21.1 + export 'CFLAGS=-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto -march=i586 -mtune=generic' + CFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto -march=i586 -mtune=generic' + export 'CXXFLAGS=-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto -march=i586 -mtune=generic' + CXXFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto -march=i586 -mtune=generic' + export 'FFLAGS=-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto -march=i586 -mtune=generic' + FFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto -march=i586 -mtune=generic' + /usr/bin/python3 -m pyproject_installer -v build INFO : pyproject_installer.build_cmd._build : Building wheel INFO : pyproject_installer.build_cmd._build : Source tree: /usr/src/RPM/BUILD/python3-module-fastjsonschema-2.21.1 INFO : pyproject_installer.build_cmd._build : Output dir: /usr/src/RPM/BUILD/python3-module-fastjsonschema-2.21.1/dist DEBUG : pyproject_installer.lib.build_backend : Validating source path DEBUG : pyproject_installer.lib.build_backend : Checking for PEP517 spec INFO : pyproject_installer.lib.build_backend : pyproject.toml was not found, using defaults INFO : backend_caller.py : Calling hook build_wheel in subprocess INFO : backend_caller.py : Build backend: setuptools.build_meta:__legacy__ INFO : backend_caller.py : Hook args: ['/usr/src/RPM/BUILD/python3-module-fastjsonschema-2.21.1/dist'] INFO : backend_caller.py : Hook kwargs: {'config_settings': None} INFO : root : running bdist_wheel INFO : root : running build INFO : root : running build_py INFO : root : creating build/lib/fastjsonschema INFO : root : copying fastjsonschema/__init__.py -> build/lib/fastjsonschema INFO : root : copying fastjsonschema/__main__.py -> build/lib/fastjsonschema INFO : root : copying fastjsonschema/draft04.py -> build/lib/fastjsonschema INFO : root : copying fastjsonschema/draft06.py -> build/lib/fastjsonschema INFO : root : copying fastjsonschema/draft07.py -> build/lib/fastjsonschema INFO : root : copying fastjsonschema/exceptions.py -> build/lib/fastjsonschema INFO : root : copying fastjsonschema/generator.py -> build/lib/fastjsonschema INFO : root : copying fastjsonschema/indent.py -> build/lib/fastjsonschema INFO : root : copying fastjsonschema/ref_resolver.py -> build/lib/fastjsonschema INFO : root : copying fastjsonschema/version.py -> build/lib/fastjsonschema INFO : root : installing to build/bdist.linux-i686/wheel INFO : root : running install INFO : root : running install_lib INFO : root : creating build/bdist.linux-i686/wheel INFO : root : creating build/bdist.linux-i686/wheel/fastjsonschema INFO : root : copying build/lib/fastjsonschema/__init__.py -> build/bdist.linux-i686/wheel/./fastjsonschema INFO : root : copying build/lib/fastjsonschema/__main__.py -> build/bdist.linux-i686/wheel/./fastjsonschema INFO : root : copying build/lib/fastjsonschema/draft04.py -> build/bdist.linux-i686/wheel/./fastjsonschema INFO : root : copying build/lib/fastjsonschema/draft06.py -> build/bdist.linux-i686/wheel/./fastjsonschema INFO : root : copying build/lib/fastjsonschema/draft07.py -> build/bdist.linux-i686/wheel/./fastjsonschema INFO : root : copying build/lib/fastjsonschema/exceptions.py -> build/bdist.linux-i686/wheel/./fastjsonschema INFO : root : copying build/lib/fastjsonschema/generator.py -> build/bdist.linux-i686/wheel/./fastjsonschema INFO : root : copying build/lib/fastjsonschema/indent.py -> build/bdist.linux-i686/wheel/./fastjsonschema INFO : root : copying build/lib/fastjsonschema/ref_resolver.py -> build/bdist.linux-i686/wheel/./fastjsonschema INFO : root : copying build/lib/fastjsonschema/version.py -> build/bdist.linux-i686/wheel/./fastjsonschema INFO : root : running install_egg_info INFO : root : running egg_info INFO : root : writing fastjsonschema.egg-info/PKG-INFO INFO : root : writing dependency_links to fastjsonschema.egg-info/dependency_links.txt INFO : root : writing requirements to fastjsonschema.egg-info/requires.txt INFO : root : writing top-level names to fastjsonschema.egg-info/top_level.txt INFO : root : reading manifest file 'fastjsonschema.egg-info/SOURCES.txt' INFO : root : reading manifest template 'MANIFEST.in' WARNING : root : warning: no previously-included files matching '*.pyc' found anywhere in distribution INFO : root : adding license file 'LICENSE' INFO : root : adding license file 'AUTHORS' INFO : root : writing manifest file 'fastjsonschema.egg-info/SOURCES.txt' INFO : root : Copying fastjsonschema.egg-info to build/bdist.linux-i686/wheel/./fastjsonschema-2.21.1-py3.12.egg-info INFO : root : running install_scripts INFO : root : creating build/bdist.linux-i686/wheel/fastjsonschema-2.21.1.dist-info/WHEEL INFO : wheel : creating '/usr/src/RPM/BUILD/python3-module-fastjsonschema-2.21.1/dist/.tmp-nz05i13p/fastjsonschema-2.21.1-py3-none-any.whl' and adding 'build/bdist.linux-i686/wheel' to it INFO : wheel : adding 'fastjsonschema/__init__.py' INFO : wheel : adding 'fastjsonschema/__main__.py' INFO : wheel : adding 'fastjsonschema/draft04.py' INFO : wheel : adding 'fastjsonschema/draft06.py' INFO : wheel : adding 'fastjsonschema/draft07.py' INFO : wheel : adding 'fastjsonschema/exceptions.py' INFO : wheel : adding 'fastjsonschema/generator.py' INFO : wheel : adding 'fastjsonschema/indent.py' INFO : wheel : adding 'fastjsonschema/ref_resolver.py' INFO : wheel : adding 'fastjsonschema/version.py' INFO : wheel : adding 'fastjsonschema-2.21.1.dist-info/AUTHORS' INFO : wheel : adding 'fastjsonschema-2.21.1.dist-info/LICENSE' INFO : wheel : adding 'fastjsonschema-2.21.1.dist-info/METADATA' INFO : wheel : adding 'fastjsonschema-2.21.1.dist-info/WHEEL' INFO : wheel : adding 'fastjsonschema-2.21.1.dist-info/top_level.txt' INFO : wheel : adding 'fastjsonschema-2.21.1.dist-info/RECORD' INFO : root : removing build/bdist.linux-i686/wheel INFO : pyproject_installer.build_cmd._build : Built wheel: fastjsonschema-2.21.1-py3-none-any.whl + exit 0 Executing(%install): /bin/sh -e /usr/src/tmp/rpm-tmp.36765 + umask 022 + /bin/mkdir -p /usr/src/RPM/BUILD + cd /usr/src/RPM/BUILD + /bin/chmod -Rf u+rwX -- /usr/src/tmp/python3-module-fastjsonschema-buildroot + : + /bin/rm -rf -- /usr/src/tmp/python3-module-fastjsonschema-buildroot + PATH=/usr/libexec/rpm-build:/usr/src/bin:/usr/bin:/bin:/usr/local/bin:/usr/games + cd python3-module-fastjsonschema-2.21.1 + /usr/bin/python3 -m pyproject_installer -v install --destdir=/usr/src/tmp/python3-module-fastjsonschema-buildroot INFO : pyproject_installer.install_cmd._install : Installing wheel INFO : pyproject_installer.install_cmd._install : Wheel directory: /usr/src/RPM/BUILD/python3-module-fastjsonschema-2.21.1/dist INFO : pyproject_installer.install_cmd._install : Wheel filename: fastjsonschema-2.21.1-py3-none-any.whl INFO : pyproject_installer.install_cmd._install : Destination: /usr/src/tmp/python3-module-fastjsonschema-buildroot DEBUG : pyproject_installer.lib.wheel : Parsing wheel filename DEBUG : pyproject_installer.lib.wheel : Validating wheel file DEBUG : pyproject_installer.lib.wheel : Validating wheel spec version DEBUG : pyproject_installer.lib.wheel : Parsing wheel spec metadata DEBUG : pyproject_installer.lib.wheel : Validating RECORD INFO : pyproject_installer.install_cmd._install : Wheel installation root: /usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages INFO : pyproject_installer.install_cmd._install : Extracting wheel DEBUG : pyproject_installer.install_cmd._install : Filtering out not allowed file: fastjsonschema-2.21.1.dist-info/AUTHORS DEBUG : pyproject_installer.install_cmd._install : Filtering out not allowed file: fastjsonschema-2.21.1.dist-info/LICENSE DEBUG : pyproject_installer.install_cmd._install : Filtering out not allowed file: fastjsonschema-2.21.1.dist-info/WHEEL DEBUG : pyproject_installer.install_cmd._install : Filtering out not allowed file: fastjsonschema-2.21.1.dist-info/top_level.txt DEBUG : pyproject_installer.install_cmd._install : Filtering out not allowed file: fastjsonschema-2.21.1.dist-info/RECORD INFO : pyproject_installer.install_cmd._install : Wheel was installed + /usr/lib/rpm/brp-alt Cleaning files in /usr/src/tmp/python3-module-fastjsonschema-buildroot (auto) Verifying and fixing files in /usr/src/tmp/python3-module-fastjsonschema-buildroot (binconfig,pkgconfig,libtool,desktop,gnuconfig) Checking contents of files in /usr/src/tmp/python3-module-fastjsonschema-buildroot/ (default) Compressing files in /usr/src/tmp/python3-module-fastjsonschema-buildroot (auto) Adjusting library links in /usr/src/tmp/python3-module-fastjsonschema-buildroot ./usr/lib: (from :0) Verifying ELF objects in /usr/src/tmp/python3-module-fastjsonschema-buildroot (arch=normal,fhs=normal,lfs=relaxed,lint=relaxed,rpath=normal,stack=normal,textrel=normal,unresolved=normal) Splitting links to aliased files under /{,s}bin in /usr/src/tmp/python3-module-fastjsonschema-buildroot Bytecompiling python3 modules in /usr/src/tmp/python3-module-fastjsonschema-buildroot using /usr/bin/python3 compile /usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/__init__.py compile /usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/__main__.py compile /usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/draft04.py compile /usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/draft06.py compile /usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/draft07.py compile /usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/exceptions.py compile /usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/generator.py compile /usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/indent.py compile /usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/ref_resolver.py compile /usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/version.py Bytecompiling python3 modules with optimization in /usr/src/tmp/python3-module-fastjsonschema-buildroot using /usr/bin/python3 -O compile /usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/__init__.py compile /usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/__main__.py compile /usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/draft04.py compile /usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/draft06.py compile /usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/draft07.py compile /usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/exceptions.py compile /usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/generator.py compile /usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/indent.py compile /usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/ref_resolver.py compile /usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/version.py Bytecompiling python3 modules with optimization-2 in /usr/src/tmp/python3-module-fastjsonschema-buildroot using /usr/bin/python3 -OO compile /usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/__init__.py compile /usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/__main__.py compile /usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/draft04.py compile /usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/draft06.py compile /usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/draft07.py compile /usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/exceptions.py compile /usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/generator.py compile /usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/indent.py compile /usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/ref_resolver.py compile /usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/version.py Hardlinking identical .pyc and .opt-?.pyc files './usr/lib/python3/site-packages/fastjsonschema/__pycache__/__init__.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/fastjsonschema/__pycache__/__init__.cpython-312.pyc' './usr/lib/python3/site-packages/fastjsonschema/__pycache__/__main__.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/fastjsonschema/__pycache__/__main__.cpython-312.pyc' './usr/lib/python3/site-packages/fastjsonschema/__pycache__/__main__.cpython-312.opt-2.pyc' => './usr/lib/python3/site-packages/fastjsonschema/__pycache__/__main__.cpython-312.opt-1.pyc' './usr/lib/python3/site-packages/fastjsonschema/__pycache__/draft04.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/fastjsonschema/__pycache__/draft04.cpython-312.pyc' './usr/lib/python3/site-packages/fastjsonschema/__pycache__/draft06.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/fastjsonschema/__pycache__/draft06.cpython-312.pyc' './usr/lib/python3/site-packages/fastjsonschema/__pycache__/draft07.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/fastjsonschema/__pycache__/draft07.cpython-312.pyc' './usr/lib/python3/site-packages/fastjsonschema/__pycache__/exceptions.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/fastjsonschema/__pycache__/exceptions.cpython-312.pyc' './usr/lib/python3/site-packages/fastjsonschema/__pycache__/indent.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/fastjsonschema/__pycache__/indent.cpython-312.pyc' './usr/lib/python3/site-packages/fastjsonschema/__pycache__/ref_resolver.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/fastjsonschema/__pycache__/ref_resolver.cpython-312.pyc' './usr/lib/python3/site-packages/fastjsonschema/__pycache__/version.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/fastjsonschema/__pycache__/version.cpython-312.pyc' './usr/lib/python3/site-packages/fastjsonschema/__pycache__/version.cpython-312.opt-2.pyc' => './usr/lib/python3/site-packages/fastjsonschema/__pycache__/version.cpython-312.opt-1.pyc' Executing(%check): /bin/sh -e /usr/src/tmp/rpm-tmp.36765 + umask 022 + /bin/mkdir -p /usr/src/RPM/BUILD + cd /usr/src/RPM/BUILD + cd python3-module-fastjsonschema-2.21.1 + export 'CFLAGS=-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto -march=i586 -mtune=generic' + CFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto -march=i586 -mtune=generic' + export 'CXXFLAGS=-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto -march=i586 -mtune=generic' + CXXFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto -march=i586 -mtune=generic' + export 'FFLAGS=-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto -march=i586 -mtune=generic' + FFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto -march=i586 -mtune=generic' + export NO_INTERNET=YES + NO_INTERNET=YES + /usr/bin/python3 -m pyproject_installer run -- python3 -m pytest -m 'not benchmark' -vra INFO : Creating venv INFO : Installing console scripts INFO : Installing package: /usr/src/RPM/BUILD/python3-module-fastjsonschema-2.21.1/dist/fastjsonschema-2.21.1-py3-none-any.whl INFO : Running command: ['/usr/src/RPM/BUILD/python3-module-fastjsonschema-2.21.1/.run_venv/bin/python3', '-m', 'pyproject_installer', 'install', '/usr/src/RPM/BUILD/python3-module-fastjsonschema-2.21.1/dist/fastjsonschema-2.21.1-py3-none-any.whl'] INFO : Running command: ['python3', '-m', 'pytest', '-m', 'not benchmark', '-vra'] ============================= test session starts ============================== platform linux -- Python 3.12.8, pytest-8.3.4, pluggy-1.5.0 -- /usr/src/RPM/BUILD/python3-module-fastjsonschema-2.21.1/.run_venv/bin/python3 cachedir: .pytest_cache rootdir: /usr/src/RPM/BUILD/python3-module-fastjsonschema-2.21.1 collecting ... collected 2091 items / 12 deselected / 2079 selected tests/json_schema/test_draft04.py::test[additionalItems.json / additionalItems as schema / additional items match schema] PASSED [ 0%] tests/json_schema/test_draft04.py::test[additionalItems.json / additionalItems as schema / additional items do not match schema] PASSED [ 0%] tests/json_schema/test_draft04.py::test[additionalItems.json / items is schema, no additionalItems / all items match schema] PASSED [ 0%] tests/json_schema/test_draft04.py::test[additionalItems.json / array of items with no additionalItems / fewer number of items present] PASSED [ 0%] tests/json_schema/test_draft04.py::test[additionalItems.json / array of items with no additionalItems / equal number of items present] PASSED [ 0%] tests/json_schema/test_draft04.py::test[additionalItems.json / array of items with no additionalItems / additional items are not permitted] PASSED [ 0%] tests/json_schema/test_draft04.py::test[additionalItems.json / additionalItems as false without items / items defaults to empty schema so everything is valid] PASSED [ 0%] tests/json_schema/test_draft04.py::test[additionalItems.json / additionalItems as false without items / ignores non-arrays] PASSED [ 0%] tests/json_schema/test_draft04.py::test[additionalItems.json / additionalItems are allowed by default / only the first item is validated] PASSED [ 0%] tests/json_schema/test_draft04.py::test[additionalProperties.json / additionalProperties being false does not allow other properties / no additional properties is valid] PASSED [ 0%] tests/json_schema/test_draft04.py::test[additionalProperties.json / additionalProperties being false does not allow other properties / an additional property is invalid] PASSED [ 0%] tests/json_schema/test_draft04.py::test[additionalProperties.json / additionalProperties being false does not allow other properties / ignores arrays] PASSED [ 0%] tests/json_schema/test_draft04.py::test[additionalProperties.json / additionalProperties being false does not allow other properties / ignores strings] PASSED [ 0%] tests/json_schema/test_draft04.py::test[additionalProperties.json / additionalProperties being false does not allow other properties / ignores other non-objects] PASSED [ 0%] tests/json_schema/test_draft04.py::test[additionalProperties.json / additionalProperties being false does not allow other properties / patternProperties are not additional properties] PASSED [ 0%] tests/json_schema/test_draft04.py::test[additionalProperties.json / non-ASCII pattern with additionalProperties / matching the pattern is valid] PASSED [ 0%] tests/json_schema/test_draft04.py::test[additionalProperties.json / non-ASCII pattern with additionalProperties / not matching the pattern is invalid] PASSED [ 0%] tests/json_schema/test_draft04.py::test[additionalProperties.json / additionalProperties allows a schema which should validate / no additional properties is valid] PASSED [ 0%] tests/json_schema/test_draft04.py::test[additionalProperties.json / additionalProperties allows a schema which should validate / an additional valid property is valid] PASSED [ 0%] tests/json_schema/test_draft04.py::test[additionalProperties.json / additionalProperties allows a schema which should validate / an additional invalid property is invalid] PASSED [ 0%] tests/json_schema/test_draft04.py::test[additionalProperties.json / additionalProperties can exist by itself / an additional valid property is valid] PASSED [ 1%] tests/json_schema/test_draft04.py::test[additionalProperties.json / additionalProperties can exist by itself / an additional invalid property is invalid] PASSED [ 1%] tests/json_schema/test_draft04.py::test[additionalProperties.json / additionalProperties are allowed by default / additional properties are allowed] PASSED [ 1%] tests/json_schema/test_draft04.py::test[additionalProperties.json / additionalProperties should not look in applicators / properties defined in allOf are not allowed] PASSED [ 1%] tests/json_schema/test_draft04.py::test[allOf.json / allOf / allOf] PASSED [ 1%] tests/json_schema/test_draft04.py::test[allOf.json / allOf / mismatch second] PASSED [ 1%] tests/json_schema/test_draft04.py::test[allOf.json / allOf / mismatch first] PASSED [ 1%] tests/json_schema/test_draft04.py::test[allOf.json / allOf / wrong type] PASSED [ 1%] tests/json_schema/test_draft04.py::test[allOf.json / allOf with base schema / valid] PASSED [ 1%] tests/json_schema/test_draft04.py::test[allOf.json / allOf with base schema / mismatch base schema] PASSED [ 1%] tests/json_schema/test_draft04.py::test[allOf.json / allOf with base schema / mismatch first allOf] PASSED [ 1%] tests/json_schema/test_draft04.py::test[allOf.json / allOf with base schema / mismatch second allOf] PASSED [ 1%] tests/json_schema/test_draft04.py::test[allOf.json / allOf with base schema / mismatch both] PASSED [ 1%] tests/json_schema/test_draft04.py::test[allOf.json / allOf simple types / valid] PASSED [ 1%] tests/json_schema/test_draft04.py::test[allOf.json / allOf simple types / mismatch one] PASSED [ 1%] tests/json_schema/test_draft04.py::test[allOf.json / allOf with one empty schema / any data is valid] PASSED [ 1%] tests/json_schema/test_draft04.py::test[allOf.json / allOf with two empty schemas / any data is valid] PASSED [ 1%] tests/json_schema/test_draft04.py::test[allOf.json / allOf with the first empty schema / number is valid] PASSED [ 1%] tests/json_schema/test_draft04.py::test[allOf.json / allOf with the first empty schema / string is invalid] PASSED [ 1%] tests/json_schema/test_draft04.py::test[allOf.json / allOf with the last empty schema / number is valid] PASSED [ 1%] tests/json_schema/test_draft04.py::test[allOf.json / allOf with the last empty schema / string is invalid] PASSED [ 1%] tests/json_schema/test_draft04.py::test[anyOf.json / anyOf / first anyOf valid] PASSED [ 2%] tests/json_schema/test_draft04.py::test[anyOf.json / anyOf / second anyOf valid] PASSED [ 2%] tests/json_schema/test_draft04.py::test[anyOf.json / anyOf / both anyOf valid] PASSED [ 2%] tests/json_schema/test_draft04.py::test[anyOf.json / anyOf / neither anyOf valid] PASSED [ 2%] tests/json_schema/test_draft04.py::test[anyOf.json / anyOf with base schema / mismatch base schema] PASSED [ 2%] tests/json_schema/test_draft04.py::test[anyOf.json / anyOf with base schema / one anyOf valid] PASSED [ 2%] tests/json_schema/test_draft04.py::test[anyOf.json / anyOf with base schema / both anyOf invalid] PASSED [ 2%] tests/json_schema/test_draft04.py::test[anyOf.json / anyOf complex types / first anyOf valid (complex)] PASSED [ 2%] tests/json_schema/test_draft04.py::test[anyOf.json / anyOf complex types / second anyOf valid (complex)] PASSED [ 2%] tests/json_schema/test_draft04.py::test[anyOf.json / anyOf complex types / both anyOf valid (complex)] PASSED [ 2%] tests/json_schema/test_draft04.py::test[anyOf.json / anyOf complex types / neither anyOf valid (complex)] PASSED [ 2%] tests/json_schema/test_draft04.py::test[anyOf.json / anyOf with one empty schema / string is valid] PASSED [ 2%] tests/json_schema/test_draft04.py::test[anyOf.json / anyOf with one empty schema / number is valid] PASSED [ 2%] tests/json_schema/test_draft04.py::test[default.json / invalid type for default / valid when property is specified] PASSED [ 2%] tests/json_schema/test_draft04.py::test[default.json / invalid type for default / still valid when the invalid default is used] PASSED [ 2%] tests/json_schema/test_draft04.py::test[default.json / invalid string value for default / valid when property is specified] PASSED [ 2%] tests/json_schema/test_draft04.py::test[default.json / invalid string value for default / still valid when the invalid default is used] PASSED [ 2%] tests/json_schema/test_draft04.py::test[definitions.json / valid definition / valid definition schema] XFAIL [ 2%] tests/json_schema/test_draft04.py::test[definitions.json / invalid definition / invalid definition schema] XFAIL [ 2%] tests/json_schema/test_draft04.py::test[dependencies.json / dependencies / neither] PASSED [ 2%] tests/json_schema/test_draft04.py::test[dependencies.json / dependencies / nondependant] PASSED [ 2%] tests/json_schema/test_draft04.py::test[dependencies.json / dependencies / with dependency] PASSED [ 3%] tests/json_schema/test_draft04.py::test[dependencies.json / dependencies / missing dependency] PASSED [ 3%] tests/json_schema/test_draft04.py::test[dependencies.json / dependencies / ignores arrays] PASSED [ 3%] tests/json_schema/test_draft04.py::test[dependencies.json / dependencies / ignores strings] PASSED [ 3%] tests/json_schema/test_draft04.py::test[dependencies.json / dependencies / ignores other non-objects] PASSED [ 3%] tests/json_schema/test_draft04.py::test[dependencies.json / multiple dependencies / neither] PASSED [ 3%] tests/json_schema/test_draft04.py::test[dependencies.json / multiple dependencies / nondependants] PASSED [ 3%] tests/json_schema/test_draft04.py::test[dependencies.json / multiple dependencies / with dependencies] PASSED [ 3%] tests/json_schema/test_draft04.py::test[dependencies.json / multiple dependencies / missing dependency] PASSED [ 3%] tests/json_schema/test_draft04.py::test[dependencies.json / multiple dependencies / missing other dependency] PASSED [ 3%] tests/json_schema/test_draft04.py::test[dependencies.json / multiple dependencies / missing both dependencies] PASSED [ 3%] tests/json_schema/test_draft04.py::test[dependencies.json / multiple dependencies subschema / valid] PASSED [ 3%] tests/json_schema/test_draft04.py::test[dependencies.json / multiple dependencies subschema / no dependency] PASSED [ 3%] tests/json_schema/test_draft04.py::test[dependencies.json / multiple dependencies subschema / wrong type] PASSED [ 3%] tests/json_schema/test_draft04.py::test[dependencies.json / multiple dependencies subschema / wrong type other] PASSED [ 3%] tests/json_schema/test_draft04.py::test[dependencies.json / multiple dependencies subschema / wrong type both] PASSED [ 3%] tests/json_schema/test_draft04.py::test[dependencies.json / dependencies with escaped characters / valid object 1] PASSED [ 3%] tests/json_schema/test_draft04.py::test[dependencies.json / dependencies with escaped characters / valid object 2] PASSED [ 3%] tests/json_schema/test_draft04.py::test[dependencies.json / dependencies with escaped characters / valid object 3] PASSED [ 3%] tests/json_schema/test_draft04.py::test[dependencies.json / dependencies with escaped characters / invalid object 1] PASSED [ 3%] tests/json_schema/test_draft04.py::test[dependencies.json / dependencies with escaped characters / invalid object 2] PASSED [ 3%] tests/json_schema/test_draft04.py::test[dependencies.json / dependencies with escaped characters / invalid object 3] PASSED [ 4%] tests/json_schema/test_draft04.py::test[dependencies.json / dependencies with escaped characters / invalid object 4] PASSED [ 4%] tests/json_schema/test_draft04.py::test[enum.json / simple enum validation / one of the enum is valid] XPASS [ 4%] tests/json_schema/test_draft04.py::test[enum.json / simple enum validation / something else is invalid] XPASS [ 4%] tests/json_schema/test_draft04.py::test[enum.json / heterogeneous enum validation / one of the enum is valid] XPASS [ 4%] tests/json_schema/test_draft04.py::test[enum.json / heterogeneous enum validation / something else is invalid] XPASS [ 4%] tests/json_schema/test_draft04.py::test[enum.json / heterogeneous enum validation / objects are deep compared] XPASS [ 4%] tests/json_schema/test_draft04.py::test[enum.json / enums in properties / both properties are valid] XPASS [ 4%] tests/json_schema/test_draft04.py::test[enum.json / enums in properties / missing optional property is valid] XPASS [ 4%] tests/json_schema/test_draft04.py::test[enum.json / enums in properties / missing required property is invalid] XPASS [ 4%] tests/json_schema/test_draft04.py::test[enum.json / enums in properties / missing all properties is invalid] XPASS [ 4%] tests/json_schema/test_draft04.py::test[enum.json / enum with escaped characters / member 1 is valid] XPASS [ 4%] tests/json_schema/test_draft04.py::test[enum.json / enum with escaped characters / member 2 is valid] XPASS [ 4%] tests/json_schema/test_draft04.py::test[enum.json / enum with escaped characters / another string is invalid] XPASS [ 4%] tests/json_schema/test_draft04.py::test[items.json / a schema given for items / valid items] PASSED [ 4%] tests/json_schema/test_draft04.py::test[items.json / a schema given for items / wrong type of items] PASSED [ 4%] tests/json_schema/test_draft04.py::test[items.json / a schema given for items / ignores non-arrays] PASSED [ 4%] tests/json_schema/test_draft04.py::test[items.json / a schema given for items / JavaScript pseudo-array is valid] PASSED [ 4%] tests/json_schema/test_draft04.py::test[items.json / an array of schemas for items / correct types] PASSED [ 4%] tests/json_schema/test_draft04.py::test[items.json / an array of schemas for items / wrong types] PASSED [ 4%] tests/json_schema/test_draft04.py::test[items.json / an array of schemas for items / incomplete array of items] PASSED [ 5%] tests/json_schema/test_draft04.py::test[items.json / an array of schemas for items / array with additional items] PASSED [ 5%] tests/json_schema/test_draft04.py::test[items.json / an array of schemas for items / empty array] PASSED [ 5%] tests/json_schema/test_draft04.py::test[items.json / an array of schemas for items / JavaScript pseudo-array is valid] PASSED [ 5%] tests/json_schema/test_draft04.py::test[items.json / items and subitems / valid items] PASSED [ 5%] tests/json_schema/test_draft04.py::test[items.json / items and subitems / too many items] PASSED [ 5%] tests/json_schema/test_draft04.py::test[items.json / items and subitems / too many sub-items] PASSED [ 5%] tests/json_schema/test_draft04.py::test[items.json / items and subitems / wrong item] PASSED [ 5%] tests/json_schema/test_draft04.py::test[items.json / items and subitems / wrong sub-item] PASSED [ 5%] tests/json_schema/test_draft04.py::test[items.json / items and subitems / fewer items is valid] PASSED [ 5%] tests/json_schema/test_draft04.py::test[items.json / nested items / valid nested array] PASSED [ 5%] tests/json_schema/test_draft04.py::test[items.json / nested items / nested array with invalid type] PASSED [ 5%] tests/json_schema/test_draft04.py::test[items.json / nested items / not deep enough] PASSED [ 5%] tests/json_schema/test_draft04.py::test[maxItems.json / maxItems validation / shorter is valid] PASSED [ 5%] tests/json_schema/test_draft04.py::test[maxItems.json / maxItems validation / exact length is valid] PASSED [ 5%] tests/json_schema/test_draft04.py::test[maxItems.json / maxItems validation / too long is invalid] PASSED [ 5%] tests/json_schema/test_draft04.py::test[maxItems.json / maxItems validation / ignores non-arrays] PASSED [ 5%] tests/json_schema/test_draft04.py::test[maxLength.json / maxLength validation / shorter is valid] PASSED [ 5%] tests/json_schema/test_draft04.py::test[maxLength.json / maxLength validation / exact length is valid] PASSED [ 5%] tests/json_schema/test_draft04.py::test[maxLength.json / maxLength validation / too long is invalid] PASSED [ 5%] tests/json_schema/test_draft04.py::test[maxLength.json / maxLength validation / ignores non-strings] PASSED [ 5%] tests/json_schema/test_draft04.py::test[maxLength.json / maxLength validation / two supplementary Unicode code points is long enough] PASSED [ 6%] tests/json_schema/test_draft04.py::test[maxProperties.json / maxProperties validation / shorter is valid] PASSED [ 6%] tests/json_schema/test_draft04.py::test[maxProperties.json / maxProperties validation / exact length is valid] PASSED [ 6%] tests/json_schema/test_draft04.py::test[maxProperties.json / maxProperties validation / too long is invalid] PASSED [ 6%] tests/json_schema/test_draft04.py::test[maxProperties.json / maxProperties validation / ignores arrays] PASSED [ 6%] tests/json_schema/test_draft04.py::test[maxProperties.json / maxProperties validation / ignores strings] PASSED [ 6%] tests/json_schema/test_draft04.py::test[maxProperties.json / maxProperties validation / ignores other non-objects] PASSED [ 6%] tests/json_schema/test_draft04.py::test[maximum.json / maximum validation / below the maximum is valid] PASSED [ 6%] tests/json_schema/test_draft04.py::test[maximum.json / maximum validation / boundary point is valid] PASSED [ 6%] tests/json_schema/test_draft04.py::test[maximum.json / maximum validation / above the maximum is invalid] PASSED [ 6%] tests/json_schema/test_draft04.py::test[maximum.json / maximum validation / ignores non-numbers] PASSED [ 6%] tests/json_schema/test_draft04.py::test[maximum.json / maximum validation (explicit false exclusivity) / below the maximum is valid] PASSED [ 6%] tests/json_schema/test_draft04.py::test[maximum.json / maximum validation (explicit false exclusivity) / boundary point is valid] PASSED [ 6%] tests/json_schema/test_draft04.py::test[maximum.json / maximum validation (explicit false exclusivity) / above the maximum is invalid] PASSED [ 6%] tests/json_schema/test_draft04.py::test[maximum.json / maximum validation (explicit false exclusivity) / ignores non-numbers] PASSED [ 6%] tests/json_schema/test_draft04.py::test[maximum.json / exclusiveMaximum validation / below the maximum is still valid] PASSED [ 6%] tests/json_schema/test_draft04.py::test[maximum.json / exclusiveMaximum validation / boundary point is invalid] PASSED [ 6%] tests/json_schema/test_draft04.py::test[minItems.json / minItems validation / longer is valid] PASSED [ 6%] tests/json_schema/test_draft04.py::test[minItems.json / minItems validation / exact length is valid] PASSED [ 6%] tests/json_schema/test_draft04.py::test[minItems.json / minItems validation / too short is invalid] PASSED [ 6%] tests/json_schema/test_draft04.py::test[minItems.json / minItems validation / ignores non-arrays] PASSED [ 6%] tests/json_schema/test_draft04.py::test[minLength.json / minLength validation / longer is valid] PASSED [ 7%] tests/json_schema/test_draft04.py::test[minLength.json / minLength validation / exact length is valid] PASSED [ 7%] tests/json_schema/test_draft04.py::test[minLength.json / minLength validation / too short is invalid] PASSED [ 7%] tests/json_schema/test_draft04.py::test[minLength.json / minLength validation / ignores non-strings] PASSED [ 7%] tests/json_schema/test_draft04.py::test[minLength.json / minLength validation / one supplementary Unicode code point is not long enough] PASSED [ 7%] tests/json_schema/test_draft04.py::test[minProperties.json / minProperties validation / longer is valid] PASSED [ 7%] tests/json_schema/test_draft04.py::test[minProperties.json / minProperties validation / exact length is valid] PASSED [ 7%] tests/json_schema/test_draft04.py::test[minProperties.json / minProperties validation / too short is invalid] PASSED [ 7%] tests/json_schema/test_draft04.py::test[minProperties.json / minProperties validation / ignores arrays] PASSED [ 7%] tests/json_schema/test_draft04.py::test[minProperties.json / minProperties validation / ignores strings] PASSED [ 7%] tests/json_schema/test_draft04.py::test[minProperties.json / minProperties validation / ignores other non-objects] PASSED [ 7%] tests/json_schema/test_draft04.py::test[minimum.json / minimum validation / above the minimum is valid] PASSED [ 7%] tests/json_schema/test_draft04.py::test[minimum.json / minimum validation / boundary point is valid] PASSED [ 7%] tests/json_schema/test_draft04.py::test[minimum.json / minimum validation / below the minimum is invalid] PASSED [ 7%] tests/json_schema/test_draft04.py::test[minimum.json / minimum validation / ignores non-numbers] PASSED [ 7%] tests/json_schema/test_draft04.py::test[minimum.json / minimum validation (explicit false exclusivity) / above the minimum is valid] PASSED [ 7%] tests/json_schema/test_draft04.py::test[minimum.json / minimum validation (explicit false exclusivity) / boundary point is valid] PASSED [ 7%] tests/json_schema/test_draft04.py::test[minimum.json / minimum validation (explicit false exclusivity) / below the minimum is invalid] PASSED [ 7%] tests/json_schema/test_draft04.py::test[minimum.json / minimum validation (explicit false exclusivity) / ignores non-numbers] PASSED [ 7%] tests/json_schema/test_draft04.py::test[minimum.json / exclusiveMinimum validation / above the minimum is still valid] PASSED [ 7%] tests/json_schema/test_draft04.py::test[minimum.json / exclusiveMinimum validation / boundary point is invalid] PASSED [ 7%] tests/json_schema/test_draft04.py::test[minimum.json / minimum validation with signed integer / negative above the minimum is valid] PASSED [ 8%] tests/json_schema/test_draft04.py::test[minimum.json / minimum validation with signed integer / positive above the minimum is valid] PASSED [ 8%] tests/json_schema/test_draft04.py::test[minimum.json / minimum validation with signed integer / boundary point is valid] PASSED [ 8%] tests/json_schema/test_draft04.py::test[minimum.json / minimum validation with signed integer / below the minimum is invalid] PASSED [ 8%] tests/json_schema/test_draft04.py::test[minimum.json / minimum validation with signed integer / ignores non-numbers] PASSED [ 8%] tests/json_schema/test_draft04.py::test[multipleOf.json / by int / int by int] PASSED [ 8%] tests/json_schema/test_draft04.py::test[multipleOf.json / by int / int by int fail] PASSED [ 8%] tests/json_schema/test_draft04.py::test[multipleOf.json / by int / ignores non-numbers] PASSED [ 8%] tests/json_schema/test_draft04.py::test[multipleOf.json / by number / zero is multiple of anything] PASSED [ 8%] tests/json_schema/test_draft04.py::test[multipleOf.json / by number / 4.5 is multiple of 1.5] PASSED [ 8%] tests/json_schema/test_draft04.py::test[multipleOf.json / by number / 35 is not multiple of 1.5] PASSED [ 8%] tests/json_schema/test_draft04.py::test[multipleOf.json / by small number / 0.0075 is multiple of 0.0001] PASSED [ 8%] tests/json_schema/test_draft04.py::test[multipleOf.json / by small number / 0.00751 is not multiple of 0.0001] PASSED [ 8%] tests/json_schema/test_draft04.py::test[not.json / not / allowed] PASSED [ 8%] tests/json_schema/test_draft04.py::test[not.json / not / disallowed] PASSED [ 8%] tests/json_schema/test_draft04.py::test[not.json / not multiple types / valid] PASSED [ 8%] tests/json_schema/test_draft04.py::test[not.json / not multiple types / mismatch] PASSED [ 8%] tests/json_schema/test_draft04.py::test[not.json / not multiple types / other mismatch] PASSED [ 8%] tests/json_schema/test_draft04.py::test[not.json / not more complex schema / match] PASSED [ 8%] tests/json_schema/test_draft04.py::test[not.json / not more complex schema / other match] PASSED [ 8%] tests/json_schema/test_draft04.py::test[not.json / not more complex schema / mismatch] PASSED [ 8%] tests/json_schema/test_draft04.py::test[not.json / forbidden property / property present] PASSED [ 9%] tests/json_schema/test_draft04.py::test[not.json / forbidden property / property absent] PASSED [ 9%] tests/json_schema/test_draft04.py::test[oneOf.json / oneOf / first oneOf valid] PASSED [ 9%] tests/json_schema/test_draft04.py::test[oneOf.json / oneOf / second oneOf valid] PASSED [ 9%] tests/json_schema/test_draft04.py::test[oneOf.json / oneOf / both oneOf valid] PASSED [ 9%] tests/json_schema/test_draft04.py::test[oneOf.json / oneOf / neither oneOf valid] PASSED [ 9%] tests/json_schema/test_draft04.py::test[oneOf.json / oneOf with base schema / mismatch base schema] PASSED [ 9%] tests/json_schema/test_draft04.py::test[oneOf.json / oneOf with base schema / one oneOf valid] PASSED [ 9%] tests/json_schema/test_draft04.py::test[oneOf.json / oneOf with base schema / both oneOf valid] PASSED [ 9%] tests/json_schema/test_draft04.py::test[oneOf.json / oneOf complex types / first oneOf valid (complex)] PASSED [ 9%] tests/json_schema/test_draft04.py::test[oneOf.json / oneOf complex types / second oneOf valid (complex)] PASSED [ 9%] tests/json_schema/test_draft04.py::test[oneOf.json / oneOf complex types / both oneOf valid (complex)] PASSED [ 9%] tests/json_schema/test_draft04.py::test[oneOf.json / oneOf complex types / neither oneOf valid (complex)] PASSED [ 9%] tests/json_schema/test_draft04.py::test[oneOf.json / oneOf with empty schema / one valid - valid] PASSED [ 9%] tests/json_schema/test_draft04.py::test[oneOf.json / oneOf with empty schema / both valid - invalid] PASSED [ 9%] tests/json_schema/test_draft04.py::test[oneOf.json / oneOf with required / both invalid - invalid] PASSED [ 9%] tests/json_schema/test_draft04.py::test[oneOf.json / oneOf with required / first valid - valid] PASSED [ 9%] tests/json_schema/test_draft04.py::test[oneOf.json / oneOf with required / second valid - valid] PASSED [ 9%] tests/json_schema/test_draft04.py::test[oneOf.json / oneOf with required / both valid - invalid] PASSED [ 9%] tests/json_schema/test_draft04.py::test[bignum.json / integer / a bignum is an integer] PASSED [ 9%] tests/json_schema/test_draft04.py::test[bignum.json / number / a bignum is a number] PASSED [ 10%] tests/json_schema/test_draft04.py::test[bignum.json / integer / a negative bignum is an integer] PASSED [ 10%] tests/json_schema/test_draft04.py::test[bignum.json / number / a negative bignum is a number] PASSED [ 10%] tests/json_schema/test_draft04.py::test[bignum.json / string / a bignum is not a string] PASSED [ 10%] tests/json_schema/test_draft04.py::test[bignum.json / integer comparison / comparison works for high numbers] PASSED [ 10%] tests/json_schema/test_draft04.py::test[bignum.json / float comparison with high precision / comparison works for high numbers] PASSED [ 10%] tests/json_schema/test_draft04.py::test[bignum.json / integer comparison / comparison works for very negative numbers] PASSED [ 10%] tests/json_schema/test_draft04.py::test[bignum.json / float comparison with high precision on negative numbers / comparison works for very negative numbers] PASSED [ 10%] tests/json_schema/test_draft04.py::test[ecmascript-regex.json / ECMA 262 regex non-compliance / ECMA 262 has no support for \\Z anchor from .NET] XFAIL [ 10%] tests/json_schema/test_draft04.py::test[format.json / validation of date-time strings / a valid date-time string] PASSED [ 10%] tests/json_schema/test_draft04.py::test[format.json / validation of date-time strings / a valid date-time string without second fraction] PASSED [ 10%] tests/json_schema/test_draft04.py::test[format.json / validation of date-time strings / a valid date-time string with plus offset] PASSED [ 10%] tests/json_schema/test_draft04.py::test[format.json / validation of date-time strings / a valid date-time string with minus offset] PASSED [ 10%] tests/json_schema/test_draft04.py::test[format.json / validation of date-time strings / a invalid day in date-time string] PASSED [ 10%] tests/json_schema/test_draft04.py::test[format.json / validation of date-time strings / an invalid offset in date-time string] PASSED [ 10%] tests/json_schema/test_draft04.py::test[format.json / validation of date-time strings / an invalid date-time string] PASSED [ 10%] tests/json_schema/test_draft04.py::test[format.json / validation of date-time strings / case-insensitive T and Z] PASSED [ 10%] tests/json_schema/test_draft04.py::test[format.json / validation of date-time strings / only RFC3339 not all of ISO 8601 are valid] PASSED [ 10%] tests/json_schema/test_draft04.py::test[format.json / validation of URIs / a valid URL with anchor tag] PASSED [ 10%] tests/json_schema/test_draft04.py::test[format.json / validation of URIs / a valid URL with anchor tag and parantheses] PASSED [ 10%] tests/json_schema/test_draft04.py::test[format.json / validation of URIs / a valid URL with URL-encoded stuff] PASSED [ 10%] tests/json_schema/test_draft04.py::test[format.json / validation of URIs / a valid puny-coded URL ] PASSED [ 11%] tests/json_schema/test_draft04.py::test[format.json / validation of URIs / a valid URL with many special characters] PASSED [ 11%] tests/json_schema/test_draft04.py::test[format.json / validation of URIs / a valid URL based on IPv4] PASSED [ 11%] tests/json_schema/test_draft04.py::test[format.json / validation of URIs / a valid URL with ftp scheme] PASSED [ 11%] tests/json_schema/test_draft04.py::test[format.json / validation of URIs / a valid URL for a simple text file] PASSED [ 11%] tests/json_schema/test_draft04.py::test[format.json / validation of URIs / a valid URL ] PASSED [ 11%] tests/json_schema/test_draft04.py::test[format.json / validation of URIs / a valid mailto URI] PASSED [ 11%] tests/json_schema/test_draft04.py::test[format.json / validation of URIs / a valid newsgroup URI] PASSED [ 11%] tests/json_schema/test_draft04.py::test[format.json / validation of URIs / a valid tel URI] PASSED [ 11%] tests/json_schema/test_draft04.py::test[format.json / validation of URIs / a valid URN] PASSED [ 11%] tests/json_schema/test_draft04.py::test[format.json / validation of URIs / an invalid protocol-relative URI Reference] PASSED [ 11%] tests/json_schema/test_draft04.py::test[format.json / validation of URIs / an invalid relative URI Reference] PASSED [ 11%] tests/json_schema/test_draft04.py::test[format.json / validation of URIs / an invalid URI] PASSED [ 11%] tests/json_schema/test_draft04.py::test[format.json / validation of URIs / an invalid URI though valid URI reference] PASSED [ 11%] tests/json_schema/test_draft04.py::test[format.json / validation of URIs / an invalid URI with spaces] PASSED [ 11%] tests/json_schema/test_draft04.py::test[format.json / validation of URIs / an invalid URI with spaces and missing scheme] PASSED [ 11%] tests/json_schema/test_draft04.py::test[format.json / validation of e-mail addresses / a valid e-mail address] PASSED [ 11%] tests/json_schema/test_draft04.py::test[format.json / validation of e-mail addresses / an invalid e-mail address] PASSED [ 11%] tests/json_schema/test_draft04.py::test[format.json / validation of IP addresses / a valid IP address] PASSED [ 11%] tests/json_schema/test_draft04.py::test[format.json / validation of IP addresses / an IP address with too many components] PASSED [ 11%] tests/json_schema/test_draft04.py::test[format.json / validation of IP addresses / an IP address with out-of-range values] PASSED [ 11%] tests/json_schema/test_draft04.py::test[format.json / validation of IP addresses / an IP address without 4 components] PASSED [ 12%] tests/json_schema/test_draft04.py::test[format.json / validation of IP addresses / an IP address as an integer] PASSED [ 12%] tests/json_schema/test_draft04.py::test[format.json / validation of IPv6 addresses / a valid IPv6 address] PASSED [ 12%] tests/json_schema/test_draft04.py::test[format.json / validation of IPv6 addresses / an IPv6 address with out-of-range values] PASSED [ 12%] tests/json_schema/test_draft04.py::test[format.json / validation of IPv6 addresses / an IPv6 address with too many components] PASSED [ 12%] tests/json_schema/test_draft04.py::test[format.json / validation of IPv6 addresses / an IPv6 address containing illegal characters] PASSED [ 12%] tests/json_schema/test_draft04.py::test[format.json / validation of host names / a valid host name] PASSED [ 12%] tests/json_schema/test_draft04.py::test[format.json / validation of host names / a host name starting with an illegal character] PASSED [ 12%] tests/json_schema/test_draft04.py::test[format.json / validation of host names / a host name containing illegal characters] PASSED [ 12%] tests/json_schema/test_draft04.py::test[format.json / validation of host names / a host name with a component too long] PASSED [ 12%] tests/json_schema/test_draft04.py::test[zeroTerminatedFloats.json / some languages do not distinguish between different types of numeric value / a float is not an integer even without fractional part] PASSED [ 12%] tests/json_schema/test_draft04.py::test[pattern.json / pattern validation / a matching pattern is valid] PASSED [ 12%] tests/json_schema/test_draft04.py::test[pattern.json / pattern validation / a non-matching pattern is invalid] PASSED [ 12%] tests/json_schema/test_draft04.py::test[pattern.json / pattern validation / ignores non-strings] PASSED [ 12%] tests/json_schema/test_draft04.py::test[pattern.json / pattern is not anchored / matches a substring] PASSED [ 12%] tests/json_schema/test_draft04.py::test[patternProperties.json / patternProperties validates properties matching a regex / a single valid match is valid] PASSED [ 12%] tests/json_schema/test_draft04.py::test[patternProperties.json / patternProperties validates properties matching a regex / multiple valid matches is valid] PASSED [ 12%] tests/json_schema/test_draft04.py::test[patternProperties.json / patternProperties validates properties matching a regex / a single invalid match is invalid] PASSED [ 12%] tests/json_schema/test_draft04.py::test[patternProperties.json / patternProperties validates properties matching a regex / multiple invalid matches is invalid] PASSED [ 12%] tests/json_schema/test_draft04.py::test[patternProperties.json / patternProperties validates properties matching a regex / ignores arrays] PASSED [ 12%] tests/json_schema/test_draft04.py::test[patternProperties.json / patternProperties validates properties matching a regex / ignores strings] PASSED [ 12%] tests/json_schema/test_draft04.py::test[patternProperties.json / patternProperties validates properties matching a regex / ignores other non-objects] PASSED [ 13%] tests/json_schema/test_draft04.py::test[patternProperties.json / multiple simultaneous patternProperties are validated / a single valid match is valid] PASSED [ 13%] tests/json_schema/test_draft04.py::test[patternProperties.json / multiple simultaneous patternProperties are validated / a simultaneous match is valid] PASSED [ 13%] tests/json_schema/test_draft04.py::test[patternProperties.json / multiple simultaneous patternProperties are validated / multiple matches is valid] PASSED [ 13%] tests/json_schema/test_draft04.py::test[patternProperties.json / multiple simultaneous patternProperties are validated / an invalid due to one is invalid] PASSED [ 13%] tests/json_schema/test_draft04.py::test[patternProperties.json / multiple simultaneous patternProperties are validated / an invalid due to the other is invalid] PASSED [ 13%] tests/json_schema/test_draft04.py::test[patternProperties.json / multiple simultaneous patternProperties are validated / an invalid due to both is invalid] PASSED [ 13%] tests/json_schema/test_draft04.py::test[patternProperties.json / regexes are not anchored by default and are case sensitive / non recognized members are ignored] PASSED [ 13%] tests/json_schema/test_draft04.py::test[patternProperties.json / regexes are not anchored by default and are case sensitive / recognized members are accounted for] PASSED [ 13%] tests/json_schema/test_draft04.py::test[patternProperties.json / regexes are not anchored by default and are case sensitive / regexes are case sensitive] PASSED [ 13%] tests/json_schema/test_draft04.py::test[patternProperties.json / regexes are not anchored by default and are case sensitive / regexes are case sensitive, 2] PASSED [ 13%] tests/json_schema/test_draft04.py::test[properties.json / object properties validation / both properties present and valid is valid] PASSED [ 13%] tests/json_schema/test_draft04.py::test[properties.json / object properties validation / one property invalid is invalid] PASSED [ 13%] tests/json_schema/test_draft04.py::test[properties.json / object properties validation / both properties invalid is invalid] PASSED [ 13%] tests/json_schema/test_draft04.py::test[properties.json / object properties validation / doesn't invalidate other properties] PASSED [ 13%] tests/json_schema/test_draft04.py::test[properties.json / object properties validation / ignores arrays] PASSED [ 13%] tests/json_schema/test_draft04.py::test[properties.json / object properties validation / ignores other non-objects] PASSED [ 13%] tests/json_schema/test_draft04.py::test[properties.json / properties, patternProperties, additionalProperties interaction / property validates property] PASSED [ 13%] tests/json_schema/test_draft04.py::test[properties.json / properties, patternProperties, additionalProperties interaction / property invalidates property] PASSED [ 13%] tests/json_schema/test_draft04.py::test[properties.json / properties, patternProperties, additionalProperties interaction / patternProperty invalidates property] PASSED [ 13%] tests/json_schema/test_draft04.py::test[properties.json / properties, patternProperties, additionalProperties interaction / patternProperty validates nonproperty] PASSED [ 13%] tests/json_schema/test_draft04.py::test[properties.json / properties, patternProperties, additionalProperties interaction / patternProperty invalidates nonproperty] PASSED [ 14%] tests/json_schema/test_draft04.py::test[properties.json / properties, patternProperties, additionalProperties interaction / additionalProperty ignores property] PASSED [ 14%] tests/json_schema/test_draft04.py::test[properties.json / properties, patternProperties, additionalProperties interaction / additionalProperty validates others] PASSED [ 14%] tests/json_schema/test_draft04.py::test[properties.json / properties, patternProperties, additionalProperties interaction / additionalProperty invalidates others] PASSED [ 14%] tests/json_schema/test_draft04.py::test[properties.json / properties with escaped characters / object with all numbers is valid] PASSED [ 14%] tests/json_schema/test_draft04.py::test[properties.json / properties with escaped characters / object with strings is invalid] PASSED [ 14%] tests/json_schema/test_draft04.py::test[ref.json / root pointer ref / match] XPASS [ 14%] tests/json_schema/test_draft04.py::test[ref.json / root pointer ref / recursive match] XPASS [ 14%] tests/json_schema/test_draft04.py::test[ref.json / root pointer ref / mismatch] XPASS [ 14%] tests/json_schema/test_draft04.py::test[ref.json / root pointer ref / recursive mismatch] XPASS [ 14%] tests/json_schema/test_draft04.py::test[ref.json / relative pointer ref to object / match] XPASS [ 14%] tests/json_schema/test_draft04.py::test[ref.json / relative pointer ref to object / mismatch] XPASS [ 14%] tests/json_schema/test_draft04.py::test[ref.json / relative pointer ref to array / match array] XPASS [ 14%] tests/json_schema/test_draft04.py::test[ref.json / relative pointer ref to array / mismatch array] XPASS [ 14%] tests/json_schema/test_draft04.py::test[ref.json / escaped pointer ref / slash invalid] XPASS [ 14%] tests/json_schema/test_draft04.py::test[ref.json / escaped pointer ref / tilda invalid] XPASS [ 14%] tests/json_schema/test_draft04.py::test[ref.json / escaped pointer ref / percent invalid] XPASS [ 14%] tests/json_schema/test_draft04.py::test[ref.json / escaped pointer ref / slash valid] XPASS [ 14%] tests/json_schema/test_draft04.py::test[ref.json / escaped pointer ref / tilda valid] XPASS [ 14%] tests/json_schema/test_draft04.py::test[ref.json / escaped pointer ref / percent valid] XPASS [ 14%] tests/json_schema/test_draft04.py::test[ref.json / nested refs / nested ref valid] XPASS [ 15%] tests/json_schema/test_draft04.py::test[ref.json / nested refs / nested ref invalid] XPASS [ 15%] tests/json_schema/test_draft04.py::test[ref.json / ref overrides any sibling keywords / ref valid] XPASS [ 15%] tests/json_schema/test_draft04.py::test[ref.json / ref overrides any sibling keywords / ref valid, maxItems ignored] XPASS [ 15%] tests/json_schema/test_draft04.py::test[ref.json / ref overrides any sibling keywords / ref invalid] XPASS [ 15%] tests/json_schema/test_draft04.py::test[ref.json / remote ref, containing refs itself / remote ref valid] XFAIL [ 15%] tests/json_schema/test_draft04.py::test[ref.json / remote ref, containing refs itself / remote ref invalid] XFAIL [ 15%] tests/json_schema/test_draft04.py::test[ref.json / property named $ref that is not a reference / property named $ref valid] XPASS [ 15%] tests/json_schema/test_draft04.py::test[ref.json / property named $ref that is not a reference / property named $ref invalid] XPASS [ 15%] tests/json_schema/test_draft04.py::test[ref.json / Recursive references between schemas / valid tree] XPASS [ 15%] tests/json_schema/test_draft04.py::test[ref.json / Recursive references between schemas / invalid tree] XPASS [ 15%] tests/json_schema/test_draft04.py::test[ref.json / refs with quote / object with numbers is valid] XPASS [ 15%] tests/json_schema/test_draft04.py::test[ref.json / refs with quote / object with strings is invalid] XPASS [ 15%] tests/json_schema/test_draft04.py::test[refRemote.json / remote ref / remote ref valid] XPASS [ 15%] tests/json_schema/test_draft04.py::test[refRemote.json / remote ref / remote ref invalid] XPASS [ 15%] tests/json_schema/test_draft04.py::test[refRemote.json / fragment within remote ref / remote fragment valid] XPASS [ 15%] tests/json_schema/test_draft04.py::test[refRemote.json / fragment within remote ref / remote fragment invalid] XPASS [ 15%] tests/json_schema/test_draft04.py::test[refRemote.json / ref within remote ref / ref within ref valid] XPASS [ 15%] tests/json_schema/test_draft04.py::test[refRemote.json / ref within remote ref / ref within ref invalid] XPASS [ 15%] tests/json_schema/test_draft04.py::test[refRemote.json / base URI change / base URI change ref valid] XPASS [ 15%] tests/json_schema/test_draft04.py::test[refRemote.json / base URI change / base URI change ref invalid] XPASS [ 15%] tests/json_schema/test_draft04.py::test[refRemote.json / base URI change - change folder / number is valid] XPASS [ 16%] tests/json_schema/test_draft04.py::test[refRemote.json / base URI change - change folder / string is invalid] XPASS [ 16%] tests/json_schema/test_draft04.py::test[refRemote.json / base URI change - change folder in subschema / number is valid] XPASS [ 16%] tests/json_schema/test_draft04.py::test[refRemote.json / base URI change - change folder in subschema / string is invalid] XPASS [ 16%] tests/json_schema/test_draft04.py::test[refRemote.json / root ref in remote ref / string is valid] XPASS [ 16%] tests/json_schema/test_draft04.py::test[refRemote.json / root ref in remote ref / null is valid] XPASS [ 16%] tests/json_schema/test_draft04.py::test[refRemote.json / root ref in remote ref / object is invalid] XPASS [ 16%] tests/json_schema/test_draft04.py::test[required.json / required validation / present required property is valid] PASSED [ 16%] tests/json_schema/test_draft04.py::test[required.json / required validation / non-present required property is invalid] PASSED [ 16%] tests/json_schema/test_draft04.py::test[required.json / required validation / ignores arrays] PASSED [ 16%] tests/json_schema/test_draft04.py::test[required.json / required validation / ignores strings] PASSED [ 16%] tests/json_schema/test_draft04.py::test[required.json / required validation / ignores other non-objects] PASSED [ 16%] tests/json_schema/test_draft04.py::test[required.json / required default validation / not required by default] PASSED [ 16%] tests/json_schema/test_draft04.py::test[required.json / required with escaped characters / object with all properties present is valid] PASSED [ 16%] tests/json_schema/test_draft04.py::test[required.json / required with escaped characters / object with some properties missing is invalid] PASSED [ 16%] tests/json_schema/test_draft04.py::test[type.json / integer type matches integers / an integer is an integer] PASSED [ 16%] tests/json_schema/test_draft04.py::test[type.json / integer type matches integers / a float is not an integer] PASSED [ 16%] tests/json_schema/test_draft04.py::test[type.json / integer type matches integers / a string is not an integer] PASSED [ 16%] tests/json_schema/test_draft04.py::test[type.json / integer type matches integers / a string is still not an integer, even if it looks like one] PASSED [ 16%] tests/json_schema/test_draft04.py::test[type.json / integer type matches integers / an object is not an integer] PASSED [ 16%] tests/json_schema/test_draft04.py::test[type.json / integer type matches integers / an array is not an integer] PASSED [ 16%] tests/json_schema/test_draft04.py::test[type.json / integer type matches integers / a boolean is not an integer] PASSED [ 17%] tests/json_schema/test_draft04.py::test[type.json / integer type matches integers / null is not an integer] PASSED [ 17%] tests/json_schema/test_draft04.py::test[type.json / number type matches numbers / an integer is a number] PASSED [ 17%] tests/json_schema/test_draft04.py::test[type.json / number type matches numbers / a float is a number] PASSED [ 17%] tests/json_schema/test_draft04.py::test[type.json / number type matches numbers / a string is not a number] PASSED [ 17%] tests/json_schema/test_draft04.py::test[type.json / number type matches numbers / a string is still not a number, even if it looks like one] PASSED [ 17%] tests/json_schema/test_draft04.py::test[type.json / number type matches numbers / an object is not a number] PASSED [ 17%] tests/json_schema/test_draft04.py::test[type.json / number type matches numbers / an array is not a number] PASSED [ 17%] tests/json_schema/test_draft04.py::test[type.json / number type matches numbers / a boolean is not a number] PASSED [ 17%] tests/json_schema/test_draft04.py::test[type.json / number type matches numbers / null is not a number] PASSED [ 17%] tests/json_schema/test_draft04.py::test[type.json / string type matches strings / 1 is not a string] PASSED [ 17%] tests/json_schema/test_draft04.py::test[type.json / string type matches strings / a float is not a string] PASSED [ 17%] tests/json_schema/test_draft04.py::test[type.json / string type matches strings / a string is a string] PASSED [ 17%] tests/json_schema/test_draft04.py::test[type.json / string type matches strings / a string is still a string, even if it looks like a number] PASSED [ 17%] tests/json_schema/test_draft04.py::test[type.json / string type matches strings / an empty string is still a string] PASSED [ 17%] tests/json_schema/test_draft04.py::test[type.json / string type matches strings / an object is not a string] PASSED [ 17%] tests/json_schema/test_draft04.py::test[type.json / string type matches strings / an array is not a string] PASSED [ 17%] tests/json_schema/test_draft04.py::test[type.json / string type matches strings / a boolean is not a string] PASSED [ 17%] tests/json_schema/test_draft04.py::test[type.json / string type matches strings / null is not a string] PASSED [ 17%] tests/json_schema/test_draft04.py::test[type.json / object type matches objects / an integer is not an object] PASSED [ 17%] tests/json_schema/test_draft04.py::test[type.json / object type matches objects / a float is not an object] PASSED [ 17%] tests/json_schema/test_draft04.py::test[type.json / object type matches objects / a string is not an object] PASSED [ 18%] tests/json_schema/test_draft04.py::test[type.json / object type matches objects / an object is an object] PASSED [ 18%] tests/json_schema/test_draft04.py::test[type.json / object type matches objects / an array is not an object] PASSED [ 18%] tests/json_schema/test_draft04.py::test[type.json / object type matches objects / a boolean is not an object] PASSED [ 18%] tests/json_schema/test_draft04.py::test[type.json / object type matches objects / null is not an object] PASSED [ 18%] tests/json_schema/test_draft04.py::test[type.json / array type matches arrays / an integer is not an array] PASSED [ 18%] tests/json_schema/test_draft04.py::test[type.json / array type matches arrays / a float is not an array] PASSED [ 18%] tests/json_schema/test_draft04.py::test[type.json / array type matches arrays / a string is not an array] PASSED [ 18%] tests/json_schema/test_draft04.py::test[type.json / array type matches arrays / an object is not an array] PASSED [ 18%] tests/json_schema/test_draft04.py::test[type.json / array type matches arrays / an array is an array] PASSED [ 18%] tests/json_schema/test_draft04.py::test[type.json / array type matches arrays / a boolean is not an array] PASSED [ 18%] tests/json_schema/test_draft04.py::test[type.json / array type matches arrays / null is not an array] PASSED [ 18%] tests/json_schema/test_draft04.py::test[type.json / boolean type matches booleans / an integer is not a boolean] PASSED [ 18%] tests/json_schema/test_draft04.py::test[type.json / boolean type matches booleans / zero is not a boolean] PASSED [ 18%] tests/json_schema/test_draft04.py::test[type.json / boolean type matches booleans / a float is not a boolean] PASSED [ 18%] tests/json_schema/test_draft04.py::test[type.json / boolean type matches booleans / a string is not a boolean] PASSED [ 18%] tests/json_schema/test_draft04.py::test[type.json / boolean type matches booleans / an empty string is not a boolean] PASSED [ 18%] tests/json_schema/test_draft04.py::test[type.json / boolean type matches booleans / an object is not a boolean] PASSED [ 18%] tests/json_schema/test_draft04.py::test[type.json / boolean type matches booleans / an array is not a boolean] PASSED [ 18%] tests/json_schema/test_draft04.py::test[type.json / boolean type matches booleans / true is a boolean] PASSED [ 18%] tests/json_schema/test_draft04.py::test[type.json / boolean type matches booleans / false is a boolean] PASSED [ 18%] tests/json_schema/test_draft04.py::test[type.json / boolean type matches booleans / null is not a boolean] PASSED [ 19%] tests/json_schema/test_draft04.py::test[type.json / null type matches only the null object / an integer is not null] PASSED [ 19%] tests/json_schema/test_draft04.py::test[type.json / null type matches only the null object / a float is not null] PASSED [ 19%] tests/json_schema/test_draft04.py::test[type.json / null type matches only the null object / zero is not null] PASSED [ 19%] tests/json_schema/test_draft04.py::test[type.json / null type matches only the null object / a string is not null] PASSED [ 19%] tests/json_schema/test_draft04.py::test[type.json / null type matches only the null object / an empty string is not null] PASSED [ 19%] tests/json_schema/test_draft04.py::test[type.json / null type matches only the null object / an object is not null] PASSED [ 19%] tests/json_schema/test_draft04.py::test[type.json / null type matches only the null object / an array is not null] PASSED [ 19%] tests/json_schema/test_draft04.py::test[type.json / null type matches only the null object / true is not null] PASSED [ 19%] tests/json_schema/test_draft04.py::test[type.json / null type matches only the null object / false is not null] PASSED [ 19%] tests/json_schema/test_draft04.py::test[type.json / null type matches only the null object / null is null] PASSED [ 19%] tests/json_schema/test_draft04.py::test[type.json / multiple types can be specified in an array / an integer is valid] PASSED [ 19%] tests/json_schema/test_draft04.py::test[type.json / multiple types can be specified in an array / a string is valid] PASSED [ 19%] tests/json_schema/test_draft04.py::test[type.json / multiple types can be specified in an array / a float is invalid] PASSED [ 19%] tests/json_schema/test_draft04.py::test[type.json / multiple types can be specified in an array / an object is invalid] PASSED [ 19%] tests/json_schema/test_draft04.py::test[type.json / multiple types can be specified in an array / an array is invalid] PASSED [ 19%] tests/json_schema/test_draft04.py::test[type.json / multiple types can be specified in an array / a boolean is invalid] PASSED [ 19%] tests/json_schema/test_draft04.py::test[type.json / multiple types can be specified in an array / null is invalid] PASSED [ 19%] tests/json_schema/test_draft04.py::test[type.json / type as array with one item / string is valid] PASSED [ 19%] tests/json_schema/test_draft04.py::test[type.json / type as array with one item / number is invalid] PASSED [ 19%] tests/json_schema/test_draft04.py::test[type.json / type: array or object / array is valid] PASSED [ 20%] tests/json_schema/test_draft04.py::test[type.json / type: array or object / object is valid] PASSED [ 20%] tests/json_schema/test_draft04.py::test[type.json / type: array or object / number is invalid] PASSED [ 20%] tests/json_schema/test_draft04.py::test[type.json / type: array or object / string is invalid] PASSED [ 20%] tests/json_schema/test_draft04.py::test[type.json / type: array or object / null is invalid] PASSED [ 20%] tests/json_schema/test_draft04.py::test[type.json / type: array, object or null / array is valid] PASSED [ 20%] tests/json_schema/test_draft04.py::test[type.json / type: array, object or null / object is valid] PASSED [ 20%] tests/json_schema/test_draft04.py::test[type.json / type: array, object or null / null is valid] PASSED [ 20%] tests/json_schema/test_draft04.py::test[type.json / type: array, object or null / number is invalid] PASSED [ 20%] tests/json_schema/test_draft04.py::test[type.json / type: array, object or null / string is invalid] PASSED [ 20%] tests/json_schema/test_draft04.py::test[uniqueItems.json / uniqueItems validation / unique array of integers is valid] PASSED [ 20%] tests/json_schema/test_draft04.py::test[uniqueItems.json / uniqueItems validation / non-unique array of integers is invalid] PASSED [ 20%] tests/json_schema/test_draft04.py::test[uniqueItems.json / uniqueItems validation / numbers are unique if mathematically unequal] PASSED [ 20%] tests/json_schema/test_draft04.py::test[uniqueItems.json / uniqueItems validation / unique array of objects is valid] PASSED [ 20%] tests/json_schema/test_draft04.py::test[uniqueItems.json / uniqueItems validation / non-unique array of objects is invalid] PASSED [ 20%] tests/json_schema/test_draft04.py::test[uniqueItems.json / uniqueItems validation / unique array of nested objects is valid] PASSED [ 20%] tests/json_schema/test_draft04.py::test[uniqueItems.json / uniqueItems validation / non-unique array of nested objects is invalid] PASSED [ 20%] tests/json_schema/test_draft04.py::test[uniqueItems.json / uniqueItems validation / unique array of arrays is valid] PASSED [ 20%] tests/json_schema/test_draft04.py::test[uniqueItems.json / uniqueItems validation / non-unique array of arrays is invalid] PASSED [ 20%] tests/json_schema/test_draft04.py::test[uniqueItems.json / uniqueItems validation / 1 and true are unique] PASSED [ 20%] tests/json_schema/test_draft04.py::test[uniqueItems.json / uniqueItems validation / 0 and false are unique] PASSED [ 20%] tests/json_schema/test_draft04.py::test[uniqueItems.json / uniqueItems validation / unique heterogeneous types are valid] PASSED [ 21%] tests/json_schema/test_draft04.py::test[uniqueItems.json / uniqueItems validation / non-unique heterogeneous types are invalid] PASSED [ 21%] tests/json_schema/test_draft06.py::test[additionalItems.json / additionalItems as schema / additional items match schema] PASSED [ 21%] tests/json_schema/test_draft06.py::test[additionalItems.json / additionalItems as schema / additional items do not match schema] PASSED [ 21%] tests/json_schema/test_draft06.py::test[additionalItems.json / items is schema, no additionalItems / all items match schema] PASSED [ 21%] tests/json_schema/test_draft06.py::test[additionalItems.json / array of items with no additionalItems / fewer number of items present] PASSED [ 21%] tests/json_schema/test_draft06.py::test[additionalItems.json / array of items with no additionalItems / equal number of items present] PASSED [ 21%] tests/json_schema/test_draft06.py::test[additionalItems.json / array of items with no additionalItems / additional items are not permitted] PASSED [ 21%] tests/json_schema/test_draft06.py::test[additionalItems.json / additionalItems as false without items / items defaults to empty schema so everything is valid] PASSED [ 21%] tests/json_schema/test_draft06.py::test[additionalItems.json / additionalItems as false without items / ignores non-arrays] PASSED [ 21%] tests/json_schema/test_draft06.py::test[additionalItems.json / additionalItems are allowed by default / only the first item is validated] PASSED [ 21%] tests/json_schema/test_draft06.py::test[additionalProperties.json / additionalProperties being false does not allow other properties / no additional properties is valid] PASSED [ 21%] tests/json_schema/test_draft06.py::test[additionalProperties.json / additionalProperties being false does not allow other properties / an additional property is invalid] PASSED [ 21%] tests/json_schema/test_draft06.py::test[additionalProperties.json / additionalProperties being false does not allow other properties / ignores arrays] PASSED [ 21%] tests/json_schema/test_draft06.py::test[additionalProperties.json / additionalProperties being false does not allow other properties / ignores strings] PASSED [ 21%] tests/json_schema/test_draft06.py::test[additionalProperties.json / additionalProperties being false does not allow other properties / ignores other non-objects] PASSED [ 21%] tests/json_schema/test_draft06.py::test[additionalProperties.json / additionalProperties being false does not allow other properties / patternProperties are not additional properties] PASSED [ 21%] tests/json_schema/test_draft06.py::test[additionalProperties.json / non-ASCII pattern with additionalProperties / matching the pattern is valid] PASSED [ 21%] tests/json_schema/test_draft06.py::test[additionalProperties.json / non-ASCII pattern with additionalProperties / not matching the pattern is invalid] PASSED [ 21%] tests/json_schema/test_draft06.py::test[additionalProperties.json / additionalProperties allows a schema which should validate / no additional properties is valid] PASSED [ 21%] tests/json_schema/test_draft06.py::test[additionalProperties.json / additionalProperties allows a schema which should validate / an additional valid property is valid] PASSED [ 21%] tests/json_schema/test_draft06.py::test[additionalProperties.json / additionalProperties allows a schema which should validate / an additional invalid property is invalid] PASSED [ 22%] tests/json_schema/test_draft06.py::test[additionalProperties.json / additionalProperties can exist by itself / an additional valid property is valid] PASSED [ 22%] tests/json_schema/test_draft06.py::test[additionalProperties.json / additionalProperties can exist by itself / an additional invalid property is invalid] PASSED [ 22%] tests/json_schema/test_draft06.py::test[additionalProperties.json / additionalProperties are allowed by default / additional properties are allowed] PASSED [ 22%] tests/json_schema/test_draft06.py::test[additionalProperties.json / additionalProperties should not look in applicators / properties defined in allOf are not allowed] PASSED [ 22%] tests/json_schema/test_draft06.py::test[allOf.json / allOf / allOf] PASSED [ 22%] tests/json_schema/test_draft06.py::test[allOf.json / allOf / mismatch second] PASSED [ 22%] tests/json_schema/test_draft06.py::test[allOf.json / allOf / mismatch first] PASSED [ 22%] tests/json_schema/test_draft06.py::test[allOf.json / allOf / wrong type] PASSED [ 22%] tests/json_schema/test_draft06.py::test[allOf.json / allOf with base schema / valid] PASSED [ 22%] tests/json_schema/test_draft06.py::test[allOf.json / allOf with base schema / mismatch base schema] PASSED [ 22%] tests/json_schema/test_draft06.py::test[allOf.json / allOf with base schema / mismatch first allOf] PASSED [ 22%] tests/json_schema/test_draft06.py::test[allOf.json / allOf with base schema / mismatch second allOf] PASSED [ 22%] tests/json_schema/test_draft06.py::test[allOf.json / allOf with base schema / mismatch both] PASSED [ 22%] tests/json_schema/test_draft06.py::test[allOf.json / allOf simple types / valid] PASSED [ 22%] tests/json_schema/test_draft06.py::test[allOf.json / allOf simple types / mismatch one] PASSED [ 22%] tests/json_schema/test_draft06.py::test[allOf.json / allOf with boolean schemas, all true / any value is valid] PASSED [ 22%] tests/json_schema/test_draft06.py::test[allOf.json / allOf with boolean schemas, some false / any value is invalid] PASSED [ 22%] tests/json_schema/test_draft06.py::test[allOf.json / allOf with boolean schemas, all false / any value is invalid] PASSED [ 22%] tests/json_schema/test_draft06.py::test[allOf.json / allOf with one empty schema / any data is valid] PASSED [ 22%] tests/json_schema/test_draft06.py::test[allOf.json / allOf with two empty schemas / any data is valid] PASSED [ 22%] tests/json_schema/test_draft06.py::test[allOf.json / allOf with the first empty schema / number is valid] PASSED [ 23%] tests/json_schema/test_draft06.py::test[allOf.json / allOf with the first empty schema / string is invalid] PASSED [ 23%] tests/json_schema/test_draft06.py::test[allOf.json / allOf with the last empty schema / number is valid] PASSED [ 23%] tests/json_schema/test_draft06.py::test[allOf.json / allOf with the last empty schema / string is invalid] PASSED [ 23%] tests/json_schema/test_draft06.py::test[anyOf.json / anyOf / first anyOf valid] PASSED [ 23%] tests/json_schema/test_draft06.py::test[anyOf.json / anyOf / second anyOf valid] PASSED [ 23%] tests/json_schema/test_draft06.py::test[anyOf.json / anyOf / both anyOf valid] PASSED [ 23%] tests/json_schema/test_draft06.py::test[anyOf.json / anyOf / neither anyOf valid] PASSED [ 23%] tests/json_schema/test_draft06.py::test[anyOf.json / anyOf with base schema / mismatch base schema] PASSED [ 23%] tests/json_schema/test_draft06.py::test[anyOf.json / anyOf with base schema / one anyOf valid] PASSED [ 23%] tests/json_schema/test_draft06.py::test[anyOf.json / anyOf with base schema / both anyOf invalid] PASSED [ 23%] tests/json_schema/test_draft06.py::test[anyOf.json / anyOf with boolean schemas, all true / any value is valid] PASSED [ 23%] tests/json_schema/test_draft06.py::test[anyOf.json / anyOf with boolean schemas, some true / any value is valid] PASSED [ 23%] tests/json_schema/test_draft06.py::test[anyOf.json / anyOf with boolean schemas, all false / any value is invalid] PASSED [ 23%] tests/json_schema/test_draft06.py::test[anyOf.json / anyOf complex types / first anyOf valid (complex)] PASSED [ 23%] tests/json_schema/test_draft06.py::test[anyOf.json / anyOf complex types / second anyOf valid (complex)] PASSED [ 23%] tests/json_schema/test_draft06.py::test[anyOf.json / anyOf complex types / both anyOf valid (complex)] PASSED [ 23%] tests/json_schema/test_draft06.py::test[anyOf.json / anyOf complex types / neither anyOf valid (complex)] PASSED [ 23%] tests/json_schema/test_draft06.py::test[anyOf.json / anyOf with one empty schema / string is valid] PASSED [ 23%] tests/json_schema/test_draft06.py::test[anyOf.json / anyOf with one empty schema / number is valid] PASSED [ 23%] tests/json_schema/test_draft06.py::test[boolean_schema.json / boolean schema 'true' / number is valid] PASSED [ 24%] tests/json_schema/test_draft06.py::test[boolean_schema.json / boolean schema 'true' / string is valid] PASSED [ 24%] tests/json_schema/test_draft06.py::test[boolean_schema.json / boolean schema 'true' / boolean true is valid] PASSED [ 24%] tests/json_schema/test_draft06.py::test[boolean_schema.json / boolean schema 'true' / boolean false is valid] PASSED [ 24%] tests/json_schema/test_draft06.py::test[boolean_schema.json / boolean schema 'true' / null is valid] PASSED [ 24%] tests/json_schema/test_draft06.py::test[boolean_schema.json / boolean schema 'true' / object is valid] PASSED [ 24%] tests/json_schema/test_draft06.py::test[boolean_schema.json / boolean schema 'true' / empty object is valid] PASSED [ 24%] tests/json_schema/test_draft06.py::test[boolean_schema.json / boolean schema 'true' / array is valid] PASSED [ 24%] tests/json_schema/test_draft06.py::test[boolean_schema.json / boolean schema 'true' / empty array is valid] PASSED [ 24%] tests/json_schema/test_draft06.py::test[boolean_schema.json / boolean schema 'false' / number is invalid] PASSED [ 24%] tests/json_schema/test_draft06.py::test[boolean_schema.json / boolean schema 'false' / string is invalid] PASSED [ 24%] tests/json_schema/test_draft06.py::test[boolean_schema.json / boolean schema 'false' / boolean true is invalid] PASSED [ 24%] tests/json_schema/test_draft06.py::test[boolean_schema.json / boolean schema 'false' / boolean false is invalid] PASSED [ 24%] tests/json_schema/test_draft06.py::test[boolean_schema.json / boolean schema 'false' / null is invalid] PASSED [ 24%] tests/json_schema/test_draft06.py::test[boolean_schema.json / boolean schema 'false' / object is invalid] PASSED [ 24%] tests/json_schema/test_draft06.py::test[boolean_schema.json / boolean schema 'false' / empty object is invalid] PASSED [ 24%] tests/json_schema/test_draft06.py::test[boolean_schema.json / boolean schema 'false' / array is invalid] PASSED [ 24%] tests/json_schema/test_draft06.py::test[boolean_schema.json / boolean schema 'false' / empty array is invalid] PASSED [ 24%] tests/json_schema/test_draft06.py::test[const.json / const validation / same value is valid] XPASS [ 24%] tests/json_schema/test_draft06.py::test[const.json / const validation / another value is invalid] XPASS [ 24%] tests/json_schema/test_draft06.py::test[const.json / const validation / another type is invalid] XPASS [ 24%] tests/json_schema/test_draft06.py::test[const.json / const with object / same object is valid] XPASS [ 25%] tests/json_schema/test_draft06.py::test[const.json / const with object / same object with different property order is valid] XPASS [ 25%] tests/json_schema/test_draft06.py::test[const.json / const with object / another object is invalid] XPASS [ 25%] tests/json_schema/test_draft06.py::test[const.json / const with object / another type is invalid] XPASS [ 25%] tests/json_schema/test_draft06.py::test[const.json / const with array / same array is valid] XPASS [ 25%] tests/json_schema/test_draft06.py::test[const.json / const with array / another array item is invalid] XPASS [ 25%] tests/json_schema/test_draft06.py::test[const.json / const with array / array with additional items is invalid] XPASS [ 25%] tests/json_schema/test_draft06.py::test[const.json / const with null / null is valid] XPASS [ 25%] tests/json_schema/test_draft06.py::test[const.json / const with null / not null is invalid] XPASS [ 25%] tests/json_schema/test_draft06.py::test[contains.json / contains keyword validation / array with item matching schema (5) is valid] PASSED [ 25%] tests/json_schema/test_draft06.py::test[contains.json / contains keyword validation / array with item matching schema (6) is valid] PASSED [ 25%] tests/json_schema/test_draft06.py::test[contains.json / contains keyword validation / array with two items matching schema (5, 6) is valid] PASSED [ 25%] tests/json_schema/test_draft06.py::test[contains.json / contains keyword validation / array without items matching schema is invalid] PASSED [ 25%] tests/json_schema/test_draft06.py::test[contains.json / contains keyword validation / empty array is invalid] PASSED [ 25%] tests/json_schema/test_draft06.py::test[contains.json / contains keyword validation / not array is valid] PASSED [ 25%] tests/json_schema/test_draft06.py::test[contains.json / contains keyword with const keyword / array with item 5 is valid] PASSED [ 25%] tests/json_schema/test_draft06.py::test[contains.json / contains keyword with const keyword / array with two items 5 is valid] PASSED [ 25%] tests/json_schema/test_draft06.py::test[contains.json / contains keyword with const keyword / array without item 5 is invalid] PASSED [ 25%] tests/json_schema/test_draft06.py::test[contains.json / contains keyword with boolean schema true / any non-empty array is valid] PASSED [ 25%] tests/json_schema/test_draft06.py::test[contains.json / contains keyword with boolean schema true / empty array is invalid] PASSED [ 25%] tests/json_schema/test_draft06.py::test[contains.json / contains keyword with boolean schema false / any non-empty array is invalid] PASSED [ 25%] tests/json_schema/test_draft06.py::test[contains.json / contains keyword with boolean schema false / empty array is invalid] PASSED [ 26%] tests/json_schema/test_draft06.py::test[default.json / invalid type for default / valid when property is specified] PASSED [ 26%] tests/json_schema/test_draft06.py::test[default.json / invalid type for default / still valid when the invalid default is used] PASSED [ 26%] tests/json_schema/test_draft06.py::test[default.json / invalid string value for default / valid when property is specified] PASSED [ 26%] tests/json_schema/test_draft06.py::test[default.json / invalid string value for default / still valid when the invalid default is used] PASSED [ 26%] tests/json_schema/test_draft06.py::test[definitions.json / valid definition / valid definition schema] XFAIL [ 26%] tests/json_schema/test_draft06.py::test[definitions.json / invalid definition / invalid definition schema] XFAIL [ 26%] tests/json_schema/test_draft06.py::test[dependencies.json / dependencies / neither] PASSED [ 26%] tests/json_schema/test_draft06.py::test[dependencies.json / dependencies / nondependant] PASSED [ 26%] tests/json_schema/test_draft06.py::test[dependencies.json / dependencies / with dependency] PASSED [ 26%] tests/json_schema/test_draft06.py::test[dependencies.json / dependencies / missing dependency] PASSED [ 26%] tests/json_schema/test_draft06.py::test[dependencies.json / dependencies / ignores arrays] PASSED [ 26%] tests/json_schema/test_draft06.py::test[dependencies.json / dependencies / ignores strings] PASSED [ 26%] tests/json_schema/test_draft06.py::test[dependencies.json / dependencies / ignores other non-objects] PASSED [ 26%] tests/json_schema/test_draft06.py::test[dependencies.json / dependencies with empty array / empty object] PASSED [ 26%] tests/json_schema/test_draft06.py::test[dependencies.json / dependencies with empty array / object with one property] PASSED [ 26%] tests/json_schema/test_draft06.py::test[dependencies.json / multiple dependencies / neither] PASSED [ 26%] tests/json_schema/test_draft06.py::test[dependencies.json / multiple dependencies / nondependants] PASSED [ 26%] tests/json_schema/test_draft06.py::test[dependencies.json / multiple dependencies / with dependencies] PASSED [ 26%] tests/json_schema/test_draft06.py::test[dependencies.json / multiple dependencies / missing dependency] PASSED [ 26%] tests/json_schema/test_draft06.py::test[dependencies.json / multiple dependencies / missing other dependency] PASSED [ 26%] tests/json_schema/test_draft06.py::test[dependencies.json / multiple dependencies / missing both dependencies] PASSED [ 27%] tests/json_schema/test_draft06.py::test[dependencies.json / multiple dependencies subschema / valid] PASSED [ 27%] tests/json_schema/test_draft06.py::test[dependencies.json / multiple dependencies subschema / no dependency] PASSED [ 27%] tests/json_schema/test_draft06.py::test[dependencies.json / multiple dependencies subschema / wrong type] PASSED [ 27%] tests/json_schema/test_draft06.py::test[dependencies.json / multiple dependencies subschema / wrong type other] PASSED [ 27%] tests/json_schema/test_draft06.py::test[dependencies.json / multiple dependencies subschema / wrong type both] PASSED [ 27%] tests/json_schema/test_draft06.py::test[dependencies.json / dependencies with boolean subschemas / object with property having schema true is valid] PASSED [ 27%] tests/json_schema/test_draft06.py::test[dependencies.json / dependencies with boolean subschemas / object with property having schema false is invalid] PASSED [ 27%] tests/json_schema/test_draft06.py::test[dependencies.json / dependencies with boolean subschemas / object with both properties is invalid] PASSED [ 27%] tests/json_schema/test_draft06.py::test[dependencies.json / dependencies with boolean subschemas / empty object is valid] PASSED [ 27%] tests/json_schema/test_draft06.py::test[dependencies.json / empty array of dependencies / object with property is valid] PASSED [ 27%] tests/json_schema/test_draft06.py::test[dependencies.json / empty array of dependencies / empty object is valid] PASSED [ 27%] tests/json_schema/test_draft06.py::test[dependencies.json / empty array of dependencies / non-object is valid] PASSED [ 27%] tests/json_schema/test_draft06.py::test[dependencies.json / dependencies with escaped characters / valid object 1] PASSED [ 27%] tests/json_schema/test_draft06.py::test[dependencies.json / dependencies with escaped characters / valid object 2] PASSED [ 27%] tests/json_schema/test_draft06.py::test[dependencies.json / dependencies with escaped characters / valid object 3] PASSED [ 27%] tests/json_schema/test_draft06.py::test[dependencies.json / dependencies with escaped characters / invalid object 1] PASSED [ 27%] tests/json_schema/test_draft06.py::test[dependencies.json / dependencies with escaped characters / invalid object 2] PASSED [ 27%] tests/json_schema/test_draft06.py::test[dependencies.json / dependencies with escaped characters / invalid object 3] PASSED [ 27%] tests/json_schema/test_draft06.py::test[dependencies.json / dependencies with escaped characters / invalid object 4] PASSED [ 27%] tests/json_schema/test_draft06.py::test[enum.json / simple enum validation / one of the enum is valid] XPASS [ 27%] tests/json_schema/test_draft06.py::test[enum.json / simple enum validation / something else is invalid] XPASS [ 28%] tests/json_schema/test_draft06.py::test[enum.json / heterogeneous enum validation / one of the enum is valid] XPASS [ 28%] tests/json_schema/test_draft06.py::test[enum.json / heterogeneous enum validation / something else is invalid] XPASS [ 28%] tests/json_schema/test_draft06.py::test[enum.json / heterogeneous enum validation / objects are deep compared] XPASS [ 28%] tests/json_schema/test_draft06.py::test[enum.json / enums in properties / both properties are valid] XPASS [ 28%] tests/json_schema/test_draft06.py::test[enum.json / enums in properties / missing optional property is valid] XPASS [ 28%] tests/json_schema/test_draft06.py::test[enum.json / enums in properties / missing required property is invalid] XPASS [ 28%] tests/json_schema/test_draft06.py::test[enum.json / enums in properties / missing all properties is invalid] XPASS [ 28%] tests/json_schema/test_draft06.py::test[enum.json / enum with escaped characters / member 1 is valid] XPASS [ 28%] tests/json_schema/test_draft06.py::test[enum.json / enum with escaped characters / member 2 is valid] XPASS [ 28%] tests/json_schema/test_draft06.py::test[enum.json / enum with escaped characters / another string is invalid] XPASS [ 28%] tests/json_schema/test_draft06.py::test[exclusiveMaximum.json / exclusiveMaximum validation / below the exclusiveMaximum is valid] PASSED [ 28%] tests/json_schema/test_draft06.py::test[exclusiveMaximum.json / exclusiveMaximum validation / boundary point is invalid] PASSED [ 28%] tests/json_schema/test_draft06.py::test[exclusiveMaximum.json / exclusiveMaximum validation / above the exclusiveMaximum is invalid] PASSED [ 28%] tests/json_schema/test_draft06.py::test[exclusiveMaximum.json / exclusiveMaximum validation / ignores non-numbers] PASSED [ 28%] tests/json_schema/test_draft06.py::test[exclusiveMinimum.json / exclusiveMinimum validation / above the exclusiveMinimum is valid] PASSED [ 28%] tests/json_schema/test_draft06.py::test[exclusiveMinimum.json / exclusiveMinimum validation / boundary point is invalid] PASSED [ 28%] tests/json_schema/test_draft06.py::test[exclusiveMinimum.json / exclusiveMinimum validation / below the exclusiveMinimum is invalid] PASSED [ 28%] tests/json_schema/test_draft06.py::test[exclusiveMinimum.json / exclusiveMinimum validation / ignores non-numbers] PASSED [ 28%] tests/json_schema/test_draft06.py::test[items.json / a schema given for items / valid items] PASSED [ 28%] tests/json_schema/test_draft06.py::test[items.json / a schema given for items / wrong type of items] PASSED [ 29%] tests/json_schema/test_draft06.py::test[items.json / a schema given for items / ignores non-arrays] PASSED [ 29%] tests/json_schema/test_draft06.py::test[items.json / a schema given for items / JavaScript pseudo-array is valid] PASSED [ 29%] tests/json_schema/test_draft06.py::test[items.json / an array of schemas for items / correct types] PASSED [ 29%] tests/json_schema/test_draft06.py::test[items.json / an array of schemas for items / wrong types] PASSED [ 29%] tests/json_schema/test_draft06.py::test[items.json / an array of schemas for items / incomplete array of items] PASSED [ 29%] tests/json_schema/test_draft06.py::test[items.json / an array of schemas for items / array with additional items] PASSED [ 29%] tests/json_schema/test_draft06.py::test[items.json / an array of schemas for items / empty array] PASSED [ 29%] tests/json_schema/test_draft06.py::test[items.json / an array of schemas for items / JavaScript pseudo-array is valid] PASSED [ 29%] tests/json_schema/test_draft06.py::test[items.json / items with boolean schema (true) / any array is valid] PASSED [ 29%] tests/json_schema/test_draft06.py::test[items.json / items with boolean schema (true) / empty array is valid] PASSED [ 29%] tests/json_schema/test_draft06.py::test[items.json / items with boolean schema (false) / any non-empty array is invalid] PASSED [ 29%] tests/json_schema/test_draft06.py::test[items.json / items with boolean schema (false) / empty array is valid] PASSED [ 29%] tests/json_schema/test_draft06.py::test[items.json / items with boolean schemas / array with one item is valid] PASSED [ 29%] tests/json_schema/test_draft06.py::test[items.json / items with boolean schemas / array with two items is invalid] PASSED [ 29%] tests/json_schema/test_draft06.py::test[items.json / items with boolean schemas / empty array is valid] PASSED [ 29%] tests/json_schema/test_draft06.py::test[items.json / items and subitems / valid items] PASSED [ 29%] tests/json_schema/test_draft06.py::test[items.json / items and subitems / too many items] PASSED [ 29%] tests/json_schema/test_draft06.py::test[items.json / items and subitems / too many sub-items] PASSED [ 29%] tests/json_schema/test_draft06.py::test[items.json / items and subitems / wrong item] PASSED [ 29%] tests/json_schema/test_draft06.py::test[items.json / items and subitems / wrong sub-item] PASSED [ 29%] tests/json_schema/test_draft06.py::test[items.json / items and subitems / fewer items is valid] PASSED [ 30%] tests/json_schema/test_draft06.py::test[items.json / nested items / valid nested array] PASSED [ 30%] tests/json_schema/test_draft06.py::test[items.json / nested items / nested array with invalid type] PASSED [ 30%] tests/json_schema/test_draft06.py::test[items.json / nested items / not deep enough] PASSED [ 30%] tests/json_schema/test_draft06.py::test[maxItems.json / maxItems validation / shorter is valid] PASSED [ 30%] tests/json_schema/test_draft06.py::test[maxItems.json / maxItems validation / exact length is valid] PASSED [ 30%] tests/json_schema/test_draft06.py::test[maxItems.json / maxItems validation / too long is invalid] PASSED [ 30%] tests/json_schema/test_draft06.py::test[maxItems.json / maxItems validation / ignores non-arrays] PASSED [ 30%] tests/json_schema/test_draft06.py::test[maxLength.json / maxLength validation / shorter is valid] PASSED [ 30%] tests/json_schema/test_draft06.py::test[maxLength.json / maxLength validation / exact length is valid] PASSED [ 30%] tests/json_schema/test_draft06.py::test[maxLength.json / maxLength validation / too long is invalid] PASSED [ 30%] tests/json_schema/test_draft06.py::test[maxLength.json / maxLength validation / ignores non-strings] PASSED [ 30%] tests/json_schema/test_draft06.py::test[maxLength.json / maxLength validation / two supplementary Unicode code points is long enough] PASSED [ 30%] tests/json_schema/test_draft06.py::test[maxProperties.json / maxProperties validation / shorter is valid] PASSED [ 30%] tests/json_schema/test_draft06.py::test[maxProperties.json / maxProperties validation / exact length is valid] PASSED [ 30%] tests/json_schema/test_draft06.py::test[maxProperties.json / maxProperties validation / too long is invalid] PASSED [ 30%] tests/json_schema/test_draft06.py::test[maxProperties.json / maxProperties validation / ignores arrays] PASSED [ 30%] tests/json_schema/test_draft06.py::test[maxProperties.json / maxProperties validation / ignores strings] PASSED [ 30%] tests/json_schema/test_draft06.py::test[maxProperties.json / maxProperties validation / ignores other non-objects] PASSED [ 30%] tests/json_schema/test_draft06.py::test[maximum.json / maximum validation / below the maximum is valid] PASSED [ 30%] tests/json_schema/test_draft06.py::test[maximum.json / maximum validation / boundary point is valid] PASSED [ 30%] tests/json_schema/test_draft06.py::test[maximum.json / maximum validation / above the maximum is invalid] PASSED [ 31%] tests/json_schema/test_draft06.py::test[maximum.json / maximum validation / ignores non-numbers] PASSED [ 31%] tests/json_schema/test_draft06.py::test[minItems.json / minItems validation / longer is valid] PASSED [ 31%] tests/json_schema/test_draft06.py::test[minItems.json / minItems validation / exact length is valid] PASSED [ 31%] tests/json_schema/test_draft06.py::test[minItems.json / minItems validation / too short is invalid] PASSED [ 31%] tests/json_schema/test_draft06.py::test[minItems.json / minItems validation / ignores non-arrays] PASSED [ 31%] tests/json_schema/test_draft06.py::test[minLength.json / minLength validation / longer is valid] PASSED [ 31%] tests/json_schema/test_draft06.py::test[minLength.json / minLength validation / exact length is valid] PASSED [ 31%] tests/json_schema/test_draft06.py::test[minLength.json / minLength validation / too short is invalid] PASSED [ 31%] tests/json_schema/test_draft06.py::test[minLength.json / minLength validation / ignores non-strings] PASSED [ 31%] tests/json_schema/test_draft06.py::test[minLength.json / minLength validation / one supplementary Unicode code point is not long enough] PASSED [ 31%] tests/json_schema/test_draft06.py::test[minProperties.json / minProperties validation / longer is valid] PASSED [ 31%] tests/json_schema/test_draft06.py::test[minProperties.json / minProperties validation / exact length is valid] PASSED [ 31%] tests/json_schema/test_draft06.py::test[minProperties.json / minProperties validation / too short is invalid] PASSED [ 31%] tests/json_schema/test_draft06.py::test[minProperties.json / minProperties validation / ignores arrays] PASSED [ 31%] tests/json_schema/test_draft06.py::test[minProperties.json / minProperties validation / ignores strings] PASSED [ 31%] tests/json_schema/test_draft06.py::test[minProperties.json / minProperties validation / ignores other non-objects] PASSED [ 31%] tests/json_schema/test_draft06.py::test[minimum.json / minimum validation / above the minimum is valid] PASSED [ 31%] tests/json_schema/test_draft06.py::test[minimum.json / minimum validation / boundary point is valid] PASSED [ 31%] tests/json_schema/test_draft06.py::test[minimum.json / minimum validation / below the minimum is invalid] PASSED [ 31%] tests/json_schema/test_draft06.py::test[minimum.json / minimum validation / ignores non-numbers] PASSED [ 31%] tests/json_schema/test_draft06.py::test[minimum.json / minimum validation with signed integer / negative above the minimum is valid] PASSED [ 32%] tests/json_schema/test_draft06.py::test[minimum.json / minimum validation with signed integer / positive above the minimum is valid] PASSED [ 32%] tests/json_schema/test_draft06.py::test[minimum.json / minimum validation with signed integer / boundary point is valid] PASSED [ 32%] tests/json_schema/test_draft06.py::test[minimum.json / minimum validation with signed integer / below the minimum is invalid] PASSED [ 32%] tests/json_schema/test_draft06.py::test[minimum.json / minimum validation with signed integer / ignores non-numbers] PASSED [ 32%] tests/json_schema/test_draft06.py::test[multipleOf.json / by int / int by int] PASSED [ 32%] tests/json_schema/test_draft06.py::test[multipleOf.json / by int / int by int fail] PASSED [ 32%] tests/json_schema/test_draft06.py::test[multipleOf.json / by int / ignores non-numbers] PASSED [ 32%] tests/json_schema/test_draft06.py::test[multipleOf.json / by number / zero is multiple of anything] PASSED [ 32%] tests/json_schema/test_draft06.py::test[multipleOf.json / by number / 4.5 is multiple of 1.5] PASSED [ 32%] tests/json_schema/test_draft06.py::test[multipleOf.json / by number / 35 is not multiple of 1.5] PASSED [ 32%] tests/json_schema/test_draft06.py::test[multipleOf.json / by small number / 0.0075 is multiple of 0.0001] PASSED [ 32%] tests/json_schema/test_draft06.py::test[multipleOf.json / by small number / 0.00751 is not multiple of 0.0001] PASSED [ 32%] tests/json_schema/test_draft06.py::test[not.json / not / allowed] PASSED [ 32%] tests/json_schema/test_draft06.py::test[not.json / not / disallowed] PASSED [ 32%] tests/json_schema/test_draft06.py::test[not.json / not multiple types / valid] PASSED [ 32%] tests/json_schema/test_draft06.py::test[not.json / not multiple types / mismatch] PASSED [ 32%] tests/json_schema/test_draft06.py::test[not.json / not multiple types / other mismatch] PASSED [ 32%] tests/json_schema/test_draft06.py::test[not.json / not more complex schema / match] PASSED [ 32%] tests/json_schema/test_draft06.py::test[not.json / not more complex schema / other match] PASSED [ 32%] tests/json_schema/test_draft06.py::test[not.json / not more complex schema / mismatch] PASSED [ 32%] tests/json_schema/test_draft06.py::test[not.json / forbidden property / property present] PASSED [ 33%] tests/json_schema/test_draft06.py::test[not.json / forbidden property / property absent] PASSED [ 33%] tests/json_schema/test_draft06.py::test[not.json / not with boolean schema true / any value is invalid] PASSED [ 33%] tests/json_schema/test_draft06.py::test[not.json / not with boolean schema false / any value is valid] PASSED [ 33%] tests/json_schema/test_draft06.py::test[oneOf.json / oneOf / first oneOf valid] PASSED [ 33%] tests/json_schema/test_draft06.py::test[oneOf.json / oneOf / second oneOf valid] PASSED [ 33%] tests/json_schema/test_draft06.py::test[oneOf.json / oneOf / both oneOf valid] PASSED [ 33%] tests/json_schema/test_draft06.py::test[oneOf.json / oneOf / neither oneOf valid] PASSED [ 33%] tests/json_schema/test_draft06.py::test[oneOf.json / oneOf with base schema / mismatch base schema] PASSED [ 33%] tests/json_schema/test_draft06.py::test[oneOf.json / oneOf with base schema / one oneOf valid] PASSED [ 33%] tests/json_schema/test_draft06.py::test[oneOf.json / oneOf with base schema / both oneOf valid] PASSED [ 33%] tests/json_schema/test_draft06.py::test[oneOf.json / oneOf with boolean schemas, all true / any value is invalid] PASSED [ 33%] tests/json_schema/test_draft06.py::test[oneOf.json / oneOf with boolean schemas, one true / any value is valid] PASSED [ 33%] tests/json_schema/test_draft06.py::test[oneOf.json / oneOf with boolean schemas, more than one true / any value is invalid] PASSED [ 33%] tests/json_schema/test_draft06.py::test[oneOf.json / oneOf with boolean schemas, all false / any value is invalid] PASSED [ 33%] tests/json_schema/test_draft06.py::test[oneOf.json / oneOf complex types / first oneOf valid (complex)] PASSED [ 33%] tests/json_schema/test_draft06.py::test[oneOf.json / oneOf complex types / second oneOf valid (complex)] PASSED [ 33%] tests/json_schema/test_draft06.py::test[oneOf.json / oneOf complex types / both oneOf valid (complex)] PASSED [ 33%] tests/json_schema/test_draft06.py::test[oneOf.json / oneOf complex types / neither oneOf valid (complex)] PASSED [ 33%] tests/json_schema/test_draft06.py::test[oneOf.json / oneOf with empty schema / one valid - valid] PASSED [ 33%] tests/json_schema/test_draft06.py::test[oneOf.json / oneOf with empty schema / both valid - invalid] PASSED [ 34%] tests/json_schema/test_draft06.py::test[oneOf.json / oneOf with required / both invalid - invalid] PASSED [ 34%] tests/json_schema/test_draft06.py::test[oneOf.json / oneOf with required / first valid - valid] PASSED [ 34%] tests/json_schema/test_draft06.py::test[oneOf.json / oneOf with required / second valid - valid] PASSED [ 34%] tests/json_schema/test_draft06.py::test[oneOf.json / oneOf with required / both valid - invalid] PASSED [ 34%] tests/json_schema/test_draft06.py::test[bignum.json / integer / a bignum is an integer] PASSED [ 34%] tests/json_schema/test_draft06.py::test[bignum.json / number / a bignum is a number] PASSED [ 34%] tests/json_schema/test_draft06.py::test[bignum.json / integer / a negative bignum is an integer] PASSED [ 34%] tests/json_schema/test_draft06.py::test[bignum.json / number / a negative bignum is a number] PASSED [ 34%] tests/json_schema/test_draft06.py::test[bignum.json / string / a bignum is not a string] PASSED [ 34%] tests/json_schema/test_draft06.py::test[bignum.json / integer comparison / comparison works for high numbers] PASSED [ 34%] tests/json_schema/test_draft06.py::test[bignum.json / float comparison with high precision / comparison works for high numbers] PASSED [ 34%] tests/json_schema/test_draft06.py::test[bignum.json / integer comparison / comparison works for very negative numbers] PASSED [ 34%] tests/json_schema/test_draft06.py::test[bignum.json / float comparison with high precision on negative numbers / comparison works for very negative numbers] PASSED [ 34%] tests/json_schema/test_draft06.py::test[ecmascript-regex.json / ECMA 262 regex non-compliance / ECMA 262 has no support for \\Z anchor from .NET] XFAIL [ 34%] tests/json_schema/test_draft06.py::test[format.json / validation of date-time strings / a valid date-time string] PASSED [ 34%] tests/json_schema/test_draft06.py::test[format.json / validation of date-time strings / a valid date-time string without second fraction] PASSED [ 34%] tests/json_schema/test_draft06.py::test[format.json / validation of date-time strings / a valid date-time string with plus offset] PASSED [ 34%] tests/json_schema/test_draft06.py::test[format.json / validation of date-time strings / a valid date-time string with minus offset] PASSED [ 34%] tests/json_schema/test_draft06.py::test[format.json / validation of date-time strings / a invalid day in date-time string] PASSED [ 34%] tests/json_schema/test_draft06.py::test[format.json / validation of date-time strings / an invalid offset in date-time string] PASSED [ 34%] tests/json_schema/test_draft06.py::test[format.json / validation of date-time strings / an invalid closing Z after time-zone offset] PASSED [ 35%] tests/json_schema/test_draft06.py::test[format.json / validation of date-time strings / an invalid date-time string] PASSED [ 35%] tests/json_schema/test_draft06.py::test[format.json / validation of date-time strings / case-insensitive T and Z] PASSED [ 35%] tests/json_schema/test_draft06.py::test[format.json / validation of date-time strings / only RFC3339 not all of ISO 8601 are valid] PASSED [ 35%] tests/json_schema/test_draft06.py::test[format.json / validation of URIs / a valid URL with anchor tag] PASSED [ 35%] tests/json_schema/test_draft06.py::test[format.json / validation of URIs / a valid URL with anchor tag and parantheses] PASSED [ 35%] tests/json_schema/test_draft06.py::test[format.json / validation of URIs / a valid URL with URL-encoded stuff] PASSED [ 35%] tests/json_schema/test_draft06.py::test[format.json / validation of URIs / a valid puny-coded URL ] PASSED [ 35%] tests/json_schema/test_draft06.py::test[format.json / validation of URIs / a valid URL with many special characters] PASSED [ 35%] tests/json_schema/test_draft06.py::test[format.json / validation of URIs / a valid URL based on IPv4] PASSED [ 35%] tests/json_schema/test_draft06.py::test[format.json / validation of URIs / a valid URL with ftp scheme] PASSED [ 35%] tests/json_schema/test_draft06.py::test[format.json / validation of URIs / a valid URL for a simple text file] PASSED [ 35%] tests/json_schema/test_draft06.py::test[format.json / validation of URIs / a valid URL ] PASSED [ 35%] tests/json_schema/test_draft06.py::test[format.json / validation of URIs / a valid mailto URI] PASSED [ 35%] tests/json_schema/test_draft06.py::test[format.json / validation of URIs / a valid newsgroup URI] PASSED [ 35%] tests/json_schema/test_draft06.py::test[format.json / validation of URIs / a valid tel URI] PASSED [ 35%] tests/json_schema/test_draft06.py::test[format.json / validation of URIs / a valid URN] PASSED [ 35%] tests/json_schema/test_draft06.py::test[format.json / validation of URIs / an invalid protocol-relative URI Reference] PASSED [ 35%] tests/json_schema/test_draft06.py::test[format.json / validation of URIs / an invalid relative URI Reference] PASSED [ 35%] tests/json_schema/test_draft06.py::test[format.json / validation of URIs / an invalid URI] PASSED [ 35%] tests/json_schema/test_draft06.py::test[format.json / validation of URIs / an invalid URI though valid URI reference] PASSED [ 35%] tests/json_schema/test_draft06.py::test[format.json / validation of URIs / an invalid URI with spaces] PASSED [ 36%] tests/json_schema/test_draft06.py::test[format.json / validation of URIs / an invalid URI with spaces and missing scheme] PASSED [ 36%] tests/json_schema/test_draft06.py::test[format.json / validation of URI References / a valid URI] PASSED [ 36%] tests/json_schema/test_draft06.py::test[format.json / validation of URI References / a valid protocol-relative URI Reference] PASSED [ 36%] tests/json_schema/test_draft06.py::test[format.json / validation of URI References / a valid relative URI Reference] PASSED [ 36%] tests/json_schema/test_draft06.py::test[format.json / validation of URI References / an invalid URI Reference] PASSED [ 36%] tests/json_schema/test_draft06.py::test[format.json / validation of URI References / a valid URI Reference] PASSED [ 36%] tests/json_schema/test_draft06.py::test[format.json / validation of URI References / a valid URI fragment] PASSED [ 36%] tests/json_schema/test_draft06.py::test[format.json / validation of URI References / an invalid URI fragment] PASSED [ 36%] tests/json_schema/test_draft06.py::test[format.json / format: uri-template / a valid uri-template] PASSED [ 36%] tests/json_schema/test_draft06.py::test[format.json / format: uri-template / an invalid uri-template] PASSED [ 36%] tests/json_schema/test_draft06.py::test[format.json / format: uri-template / a valid uri-template without variables] PASSED [ 36%] tests/json_schema/test_draft06.py::test[format.json / format: uri-template / a valid relative uri-template] PASSED [ 36%] tests/json_schema/test_draft06.py::test[format.json / validation of e-mail addresses / a valid e-mail address] PASSED [ 36%] tests/json_schema/test_draft06.py::test[format.json / validation of e-mail addresses / an invalid e-mail address] PASSED [ 36%] tests/json_schema/test_draft06.py::test[format.json / validation of IP addresses / a valid IP address] PASSED [ 36%] tests/json_schema/test_draft06.py::test[format.json / validation of IP addresses / an IP address with too many components] PASSED [ 36%] tests/json_schema/test_draft06.py::test[format.json / validation of IP addresses / an IP address with out-of-range values] PASSED [ 36%] tests/json_schema/test_draft06.py::test[format.json / validation of IP addresses / an IP address without 4 components] PASSED [ 36%] tests/json_schema/test_draft06.py::test[format.json / validation of IP addresses / an IP address as an integer] PASSED [ 36%] tests/json_schema/test_draft06.py::test[format.json / validation of IPv6 addresses / a valid IPv6 address] PASSED [ 36%] tests/json_schema/test_draft06.py::test[format.json / validation of IPv6 addresses / an IPv6 address with out-of-range values] PASSED [ 37%] tests/json_schema/test_draft06.py::test[format.json / validation of IPv6 addresses / an IPv6 address with too many components] PASSED [ 37%] tests/json_schema/test_draft06.py::test[format.json / validation of IPv6 addresses / an IPv6 address containing illegal characters] PASSED [ 37%] tests/json_schema/test_draft06.py::test[format.json / validation of host names / a valid host name] PASSED [ 37%] tests/json_schema/test_draft06.py::test[format.json / validation of host names / a host name starting with an illegal character] PASSED [ 37%] tests/json_schema/test_draft06.py::test[format.json / validation of host names / a host name containing illegal characters] PASSED [ 37%] tests/json_schema/test_draft06.py::test[format.json / validation of host names / a host name with a component too long] PASSED [ 37%] tests/json_schema/test_draft06.py::test[format.json / validation of JSON-pointers (JSON String Representation) / a valid JSON-pointer] PASSED [ 37%] tests/json_schema/test_draft06.py::test[format.json / validation of JSON-pointers (JSON String Representation) / not a valid JSON-pointer (~ not escaped)] PASSED [ 37%] tests/json_schema/test_draft06.py::test[format.json / validation of JSON-pointers (JSON String Representation) / valid JSON-pointer with empty segment] PASSED [ 37%] tests/json_schema/test_draft06.py::test[format.json / validation of JSON-pointers (JSON String Representation) / valid JSON-pointer with the last empty segment] PASSED [ 37%] tests/json_schema/test_draft06.py::test[format.json / validation of JSON-pointers (JSON String Representation) / valid JSON-pointer as stated in RFC 6901 #1] PASSED [ 37%] tests/json_schema/test_draft06.py::test[format.json / validation of JSON-pointers (JSON String Representation) / valid JSON-pointer as stated in RFC 6901 #2] PASSED [ 37%] tests/json_schema/test_draft06.py::test[format.json / validation of JSON-pointers (JSON String Representation) / valid JSON-pointer as stated in RFC 6901 #3] PASSED [ 37%] tests/json_schema/test_draft06.py::test[format.json / validation of JSON-pointers (JSON String Representation) / valid JSON-pointer as stated in RFC 6901 #4] PASSED [ 37%] tests/json_schema/test_draft06.py::test[format.json / validation of JSON-pointers (JSON String Representation) / valid JSON-pointer as stated in RFC 6901 #5] PASSED [ 37%] tests/json_schema/test_draft06.py::test[format.json / validation of JSON-pointers (JSON String Representation) / valid JSON-pointer as stated in RFC 6901 #6] PASSED [ 37%] tests/json_schema/test_draft06.py::test[format.json / validation of JSON-pointers (JSON String Representation) / valid JSON-pointer as stated in RFC 6901 #7] PASSED [ 37%] tests/json_schema/test_draft06.py::test[format.json / validation of JSON-pointers (JSON String Representation) / valid JSON-pointer as stated in RFC 6901 #8] PASSED [ 37%] tests/json_schema/test_draft06.py::test[format.json / validation of JSON-pointers (JSON String Representation) / valid JSON-pointer as stated in RFC 6901 #9] PASSED [ 37%] tests/json_schema/test_draft06.py::test[format.json / validation of JSON-pointers (JSON String Representation) / valid JSON-pointer as stated in RFC 6901 #10] PASSED [ 37%] tests/json_schema/test_draft06.py::test[format.json / validation of JSON-pointers (JSON String Representation) / valid JSON-pointer as stated in RFC 6901 #11] PASSED [ 38%] tests/json_schema/test_draft06.py::test[format.json / validation of JSON-pointers (JSON String Representation) / valid JSON-pointer as stated in RFC 6901 #12] PASSED [ 38%] tests/json_schema/test_draft06.py::test[format.json / validation of JSON-pointers (JSON String Representation) / valid JSON-pointer used adding to the last array position] PASSED [ 38%] tests/json_schema/test_draft06.py::test[format.json / validation of JSON-pointers (JSON String Representation) / valid JSON-pointer (- used as object member name)] PASSED [ 38%] tests/json_schema/test_draft06.py::test[format.json / validation of JSON-pointers (JSON String Representation) / valid JSON-pointer (multiple escaped characters)] PASSED [ 38%] tests/json_schema/test_draft06.py::test[format.json / validation of JSON-pointers (JSON String Representation) / valid JSON-pointer (escaped with fraction part) #1] PASSED [ 38%] tests/json_schema/test_draft06.py::test[format.json / validation of JSON-pointers (JSON String Representation) / valid JSON-pointer (escaped with fraction part) #2] PASSED [ 38%] tests/json_schema/test_draft06.py::test[format.json / validation of JSON-pointers (JSON String Representation) / not a valid JSON-pointer (URI Fragment Identifier) #1] PASSED [ 38%] tests/json_schema/test_draft06.py::test[format.json / validation of JSON-pointers (JSON String Representation) / not a valid JSON-pointer (URI Fragment Identifier) #2] PASSED [ 38%] tests/json_schema/test_draft06.py::test[format.json / validation of JSON-pointers (JSON String Representation) / not a valid JSON-pointer (URI Fragment Identifier) #3] PASSED [ 38%] tests/json_schema/test_draft06.py::test[format.json / validation of JSON-pointers (JSON String Representation) / not a valid JSON-pointer (some escaped, but not all) #1] PASSED [ 38%] tests/json_schema/test_draft06.py::test[format.json / validation of JSON-pointers (JSON String Representation) / not a valid JSON-pointer (some escaped, but not all) #2] PASSED [ 38%] tests/json_schema/test_draft06.py::test[format.json / validation of JSON-pointers (JSON String Representation) / not a valid JSON-pointer (wrong escape character) #1] PASSED [ 38%] tests/json_schema/test_draft06.py::test[format.json / validation of JSON-pointers (JSON String Representation) / not a valid JSON-pointer (wrong escape character) #2] PASSED [ 38%] tests/json_schema/test_draft06.py::test[format.json / validation of JSON-pointers (JSON String Representation) / not a valid JSON-pointer (multiple characters not escaped)] PASSED [ 38%] tests/json_schema/test_draft06.py::test[format.json / validation of JSON-pointers (JSON String Representation) / not a valid JSON-pointer (isn't empty nor starts with /) #1] PASSED [ 38%] tests/json_schema/test_draft06.py::test[format.json / validation of JSON-pointers (JSON String Representation) / not a valid JSON-pointer (isn't empty nor starts with /) #2] PASSED [ 38%] tests/json_schema/test_draft06.py::test[format.json / validation of JSON-pointers (JSON String Representation) / not a valid JSON-pointer (isn't empty nor starts with /) #3] PASSED [ 38%] tests/json_schema/test_draft06.py::test[zeroTerminatedFloats.json / some languages do not distinguish between different types of numeric value / a float without fractional part is an integer] PASSED [ 38%] tests/json_schema/test_draft06.py::test[pattern.json / pattern validation / a matching pattern is valid] PASSED [ 38%] tests/json_schema/test_draft06.py::test[pattern.json / pattern validation / a non-matching pattern is invalid] PASSED [ 39%] tests/json_schema/test_draft06.py::test[pattern.json / pattern validation / ignores non-strings] PASSED [ 39%] tests/json_schema/test_draft06.py::test[pattern.json / pattern is not anchored / matches a substring] PASSED [ 39%] tests/json_schema/test_draft06.py::test[patternProperties.json / patternProperties validates properties matching a regex / a single valid match is valid] PASSED [ 39%] tests/json_schema/test_draft06.py::test[patternProperties.json / patternProperties validates properties matching a regex / multiple valid matches is valid] PASSED [ 39%] tests/json_schema/test_draft06.py::test[patternProperties.json / patternProperties validates properties matching a regex / a single invalid match is invalid] PASSED [ 39%] tests/json_schema/test_draft06.py::test[patternProperties.json / patternProperties validates properties matching a regex / multiple invalid matches is invalid] PASSED [ 39%] tests/json_schema/test_draft06.py::test[patternProperties.json / patternProperties validates properties matching a regex / ignores arrays] PASSED [ 39%] tests/json_schema/test_draft06.py::test[patternProperties.json / patternProperties validates properties matching a regex / ignores strings] PASSED [ 39%] tests/json_schema/test_draft06.py::test[patternProperties.json / patternProperties validates properties matching a regex / ignores other non-objects] PASSED [ 39%] tests/json_schema/test_draft06.py::test[patternProperties.json / multiple simultaneous patternProperties are validated / a single valid match is valid] PASSED [ 39%] tests/json_schema/test_draft06.py::test[patternProperties.json / multiple simultaneous patternProperties are validated / a simultaneous match is valid] PASSED [ 39%] tests/json_schema/test_draft06.py::test[patternProperties.json / multiple simultaneous patternProperties are validated / multiple matches is valid] PASSED [ 39%] tests/json_schema/test_draft06.py::test[patternProperties.json / multiple simultaneous patternProperties are validated / an invalid due to one is invalid] PASSED [ 39%] tests/json_schema/test_draft06.py::test[patternProperties.json / multiple simultaneous patternProperties are validated / an invalid due to the other is invalid] PASSED [ 39%] tests/json_schema/test_draft06.py::test[patternProperties.json / multiple simultaneous patternProperties are validated / an invalid due to both is invalid] PASSED [ 39%] tests/json_schema/test_draft06.py::test[patternProperties.json / regexes are not anchored by default and are case sensitive / non recognized members are ignored] PASSED [ 39%] tests/json_schema/test_draft06.py::test[patternProperties.json / regexes are not anchored by default and are case sensitive / recognized members are accounted for] PASSED [ 39%] tests/json_schema/test_draft06.py::test[patternProperties.json / regexes are not anchored by default and are case sensitive / regexes are case sensitive] PASSED [ 39%] tests/json_schema/test_draft06.py::test[patternProperties.json / regexes are not anchored by default and are case sensitive / regexes are case sensitive, 2] PASSED [ 39%] tests/json_schema/test_draft06.py::test[patternProperties.json / patternProperties with boolean schemas / object with property matching schema true is valid] PASSED [ 39%] tests/json_schema/test_draft06.py::test[patternProperties.json / patternProperties with boolean schemas / object with property matching schema false is invalid] PASSED [ 40%] tests/json_schema/test_draft06.py::test[patternProperties.json / patternProperties with boolean schemas / object with both properties is invalid] PASSED [ 40%] tests/json_schema/test_draft06.py::test[patternProperties.json / patternProperties with boolean schemas / empty object is valid] PASSED [ 40%] tests/json_schema/test_draft06.py::test[properties.json / object properties validation / both properties present and valid is valid] PASSED [ 40%] tests/json_schema/test_draft06.py::test[properties.json / object properties validation / one property invalid is invalid] PASSED [ 40%] tests/json_schema/test_draft06.py::test[properties.json / object properties validation / both properties invalid is invalid] PASSED [ 40%] tests/json_schema/test_draft06.py::test[properties.json / object properties validation / doesn't invalidate other properties] PASSED [ 40%] tests/json_schema/test_draft06.py::test[properties.json / object properties validation / ignores arrays] PASSED [ 40%] tests/json_schema/test_draft06.py::test[properties.json / object properties validation / ignores other non-objects] PASSED [ 40%] tests/json_schema/test_draft06.py::test[properties.json / properties, patternProperties, additionalProperties interaction / property validates property] PASSED [ 40%] tests/json_schema/test_draft06.py::test[properties.json / properties, patternProperties, additionalProperties interaction / property invalidates property] PASSED [ 40%] tests/json_schema/test_draft06.py::test[properties.json / properties, patternProperties, additionalProperties interaction / patternProperty invalidates property] PASSED [ 40%] tests/json_schema/test_draft06.py::test[properties.json / properties, patternProperties, additionalProperties interaction / patternProperty validates nonproperty] PASSED [ 40%] tests/json_schema/test_draft06.py::test[properties.json / properties, patternProperties, additionalProperties interaction / patternProperty invalidates nonproperty] PASSED [ 40%] tests/json_schema/test_draft06.py::test[properties.json / properties, patternProperties, additionalProperties interaction / additionalProperty ignores property] PASSED [ 40%] tests/json_schema/test_draft06.py::test[properties.json / properties, patternProperties, additionalProperties interaction / additionalProperty validates others] PASSED [ 40%] tests/json_schema/test_draft06.py::test[properties.json / properties, patternProperties, additionalProperties interaction / additionalProperty invalidates others] PASSED [ 40%] tests/json_schema/test_draft06.py::test[properties.json / properties with boolean schema / no property present is valid] PASSED [ 40%] tests/json_schema/test_draft06.py::test[properties.json / properties with boolean schema / only 'true' property present is valid] PASSED [ 40%] tests/json_schema/test_draft06.py::test[properties.json / properties with boolean schema / only 'false' property present is invalid] PASSED [ 40%] tests/json_schema/test_draft06.py::test[properties.json / properties with boolean schema / both properties present is invalid] PASSED [ 40%] tests/json_schema/test_draft06.py::test[properties.json / properties with escaped characters / object with all numbers is valid] PASSED [ 41%] tests/json_schema/test_draft06.py::test[properties.json / properties with escaped characters / object with strings is invalid] PASSED [ 41%] tests/json_schema/test_draft06.py::test[propertyNames.json / propertyNames validation / all property names valid] PASSED [ 41%] tests/json_schema/test_draft06.py::test[propertyNames.json / propertyNames validation / some property names invalid] PASSED [ 41%] tests/json_schema/test_draft06.py::test[propertyNames.json / propertyNames validation / object without properties is valid] PASSED [ 41%] tests/json_schema/test_draft06.py::test[propertyNames.json / propertyNames validation / ignores arrays] PASSED [ 41%] tests/json_schema/test_draft06.py::test[propertyNames.json / propertyNames validation / ignores strings] PASSED [ 41%] tests/json_schema/test_draft06.py::test[propertyNames.json / propertyNames validation / ignores other non-objects] PASSED [ 41%] tests/json_schema/test_draft06.py::test[propertyNames.json / propertyNames with boolean schema true / object with any properties is valid] PASSED [ 41%] tests/json_schema/test_draft06.py::test[propertyNames.json / propertyNames with boolean schema true / empty object is valid] PASSED [ 41%] tests/json_schema/test_draft06.py::test[propertyNames.json / propertyNames with boolean schema false / object with any properties is invalid] PASSED [ 41%] tests/json_schema/test_draft06.py::test[propertyNames.json / propertyNames with boolean schema false / empty object is valid] PASSED [ 41%] tests/json_schema/test_draft06.py::test[ref.json / root pointer ref / match] XPASS [ 41%] tests/json_schema/test_draft06.py::test[ref.json / root pointer ref / recursive match] XPASS [ 41%] tests/json_schema/test_draft06.py::test[ref.json / root pointer ref / mismatch] XPASS [ 41%] tests/json_schema/test_draft06.py::test[ref.json / root pointer ref / recursive mismatch] XPASS [ 41%] tests/json_schema/test_draft06.py::test[ref.json / relative pointer ref to object / match] XPASS [ 41%] tests/json_schema/test_draft06.py::test[ref.json / relative pointer ref to object / mismatch] XPASS [ 41%] tests/json_schema/test_draft06.py::test[ref.json / relative pointer ref to array / match array] XPASS [ 41%] tests/json_schema/test_draft06.py::test[ref.json / relative pointer ref to array / mismatch array] XPASS [ 41%] tests/json_schema/test_draft06.py::test[ref.json / escaped pointer ref / slash invalid] XPASS [ 41%] tests/json_schema/test_draft06.py::test[ref.json / escaped pointer ref / tilda invalid] XPASS [ 42%] tests/json_schema/test_draft06.py::test[ref.json / escaped pointer ref / percent invalid] XPASS [ 42%] tests/json_schema/test_draft06.py::test[ref.json / escaped pointer ref / slash valid] XPASS [ 42%] tests/json_schema/test_draft06.py::test[ref.json / escaped pointer ref / tilda valid] XPASS [ 42%] tests/json_schema/test_draft06.py::test[ref.json / escaped pointer ref / percent valid] XPASS [ 42%] tests/json_schema/test_draft06.py::test[ref.json / nested refs / nested ref valid] XPASS [ 42%] tests/json_schema/test_draft06.py::test[ref.json / nested refs / nested ref invalid] XPASS [ 42%] tests/json_schema/test_draft06.py::test[ref.json / ref overrides any sibling keywords / ref valid] XPASS [ 42%] tests/json_schema/test_draft06.py::test[ref.json / ref overrides any sibling keywords / ref valid, maxItems ignored] XPASS [ 42%] tests/json_schema/test_draft06.py::test[ref.json / ref overrides any sibling keywords / ref invalid] XPASS [ 42%] tests/json_schema/test_draft06.py::test[ref.json / remote ref, containing refs itself / remote ref valid] XFAIL [ 42%] tests/json_schema/test_draft06.py::test[ref.json / remote ref, containing refs itself / remote ref invalid] XFAIL [ 42%] tests/json_schema/test_draft06.py::test[ref.json / property named $ref that is not a reference / property named $ref valid] XPASS [ 42%] tests/json_schema/test_draft06.py::test[ref.json / property named $ref that is not a reference / property named $ref invalid] XPASS [ 42%] tests/json_schema/test_draft06.py::test[ref.json / $ref to boolean schema true / any value is valid] XPASS [ 42%] tests/json_schema/test_draft06.py::test[ref.json / $ref to boolean schema false / any value is invalid] XPASS [ 42%] tests/json_schema/test_draft06.py::test[ref.json / Recursive references between schemas / valid tree] XPASS [ 42%] tests/json_schema/test_draft06.py::test[ref.json / Recursive references between schemas / invalid tree] XPASS [ 42%] tests/json_schema/test_draft06.py::test[ref.json / refs with quote / object with numbers is valid] XPASS [ 42%] tests/json_schema/test_draft06.py::test[ref.json / refs with quote / object with strings is invalid] XPASS [ 42%] tests/json_schema/test_draft06.py::test[refRemote.json / remote ref / remote ref valid] XPASS [ 43%] tests/json_schema/test_draft06.py::test[refRemote.json / remote ref / remote ref invalid] XPASS [ 43%] tests/json_schema/test_draft06.py::test[refRemote.json / fragment within remote ref / remote fragment valid] XPASS [ 43%] tests/json_schema/test_draft06.py::test[refRemote.json / fragment within remote ref / remote fragment invalid] XPASS [ 43%] tests/json_schema/test_draft06.py::test[refRemote.json / ref within remote ref / ref within ref valid] XPASS [ 43%] tests/json_schema/test_draft06.py::test[refRemote.json / ref within remote ref / ref within ref invalid] XPASS [ 43%] tests/json_schema/test_draft06.py::test[refRemote.json / base URI change / base URI change ref valid] XPASS [ 43%] tests/json_schema/test_draft06.py::test[refRemote.json / base URI change / base URI change ref invalid] XPASS [ 43%] tests/json_schema/test_draft06.py::test[refRemote.json / base URI change - change folder / number is valid] XPASS [ 43%] tests/json_schema/test_draft06.py::test[refRemote.json / base URI change - change folder / string is invalid] XPASS [ 43%] tests/json_schema/test_draft06.py::test[refRemote.json / base URI change - change folder in subschema / number is valid] XPASS [ 43%] tests/json_schema/test_draft06.py::test[refRemote.json / base URI change - change folder in subschema / string is invalid] XPASS [ 43%] tests/json_schema/test_draft06.py::test[refRemote.json / root ref in remote ref / string is valid] XPASS [ 43%] tests/json_schema/test_draft06.py::test[refRemote.json / root ref in remote ref / null is valid] XPASS [ 43%] tests/json_schema/test_draft06.py::test[refRemote.json / root ref in remote ref / object is invalid] XPASS [ 43%] tests/json_schema/test_draft06.py::test[required.json / required validation / present required property is valid] PASSED [ 43%] tests/json_schema/test_draft06.py::test[required.json / required validation / non-present required property is invalid] PASSED [ 43%] tests/json_schema/test_draft06.py::test[required.json / required validation / ignores arrays] PASSED [ 43%] tests/json_schema/test_draft06.py::test[required.json / required validation / ignores strings] PASSED [ 43%] tests/json_schema/test_draft06.py::test[required.json / required validation / ignores other non-objects] PASSED [ 43%] tests/json_schema/test_draft06.py::test[required.json / required default validation / not required by default] PASSED [ 43%] tests/json_schema/test_draft06.py::test[required.json / required with empty array / property not required] PASSED [ 44%] tests/json_schema/test_draft06.py::test[required.json / required with escaped characters / object with all properties present is valid] PASSED [ 44%] tests/json_schema/test_draft06.py::test[required.json / required with escaped characters / object with some properties missing is invalid] PASSED [ 44%] tests/json_schema/test_draft06.py::test[type.json / integer type matches integers / an integer is an integer] PASSED [ 44%] tests/json_schema/test_draft06.py::test[type.json / integer type matches integers / a float is not an integer] PASSED [ 44%] tests/json_schema/test_draft06.py::test[type.json / integer type matches integers / a string is not an integer] PASSED [ 44%] tests/json_schema/test_draft06.py::test[type.json / integer type matches integers / a string is still not an integer, even if it looks like one] PASSED [ 44%] tests/json_schema/test_draft06.py::test[type.json / integer type matches integers / an object is not an integer] PASSED [ 44%] tests/json_schema/test_draft06.py::test[type.json / integer type matches integers / an array is not an integer] PASSED [ 44%] tests/json_schema/test_draft06.py::test[type.json / integer type matches integers / a boolean is not an integer] PASSED [ 44%] tests/json_schema/test_draft06.py::test[type.json / integer type matches integers / null is not an integer] PASSED [ 44%] tests/json_schema/test_draft06.py::test[type.json / number type matches numbers / an integer is a number] PASSED [ 44%] tests/json_schema/test_draft06.py::test[type.json / number type matches numbers / a float is a number] PASSED [ 44%] tests/json_schema/test_draft06.py::test[type.json / number type matches numbers / a string is not a number] PASSED [ 44%] tests/json_schema/test_draft06.py::test[type.json / number type matches numbers / a string is still not a number, even if it looks like one] PASSED [ 44%] tests/json_schema/test_draft06.py::test[type.json / number type matches numbers / an object is not a number] PASSED [ 44%] tests/json_schema/test_draft06.py::test[type.json / number type matches numbers / an array is not a number] PASSED [ 44%] tests/json_schema/test_draft06.py::test[type.json / number type matches numbers / a boolean is not a number] PASSED [ 44%] tests/json_schema/test_draft06.py::test[type.json / number type matches numbers / null is not a number] PASSED [ 44%] tests/json_schema/test_draft06.py::test[type.json / string type matches strings / 1 is not a string] PASSED [ 44%] tests/json_schema/test_draft06.py::test[type.json / string type matches strings / a float is not a string] PASSED [ 44%] tests/json_schema/test_draft06.py::test[type.json / string type matches strings / a string is a string] PASSED [ 45%] tests/json_schema/test_draft06.py::test[type.json / string type matches strings / a string is still a string, even if it looks like a number] PASSED [ 45%] tests/json_schema/test_draft06.py::test[type.json / string type matches strings / an empty string is still a string] PASSED [ 45%] tests/json_schema/test_draft06.py::test[type.json / string type matches strings / an object is not a string] PASSED [ 45%] tests/json_schema/test_draft06.py::test[type.json / string type matches strings / an array is not a string] PASSED [ 45%] tests/json_schema/test_draft06.py::test[type.json / string type matches strings / a boolean is not a string] PASSED [ 45%] tests/json_schema/test_draft06.py::test[type.json / string type matches strings / null is not a string] PASSED [ 45%] tests/json_schema/test_draft06.py::test[type.json / object type matches objects / an integer is not an object] PASSED [ 45%] tests/json_schema/test_draft06.py::test[type.json / object type matches objects / a float is not an object] PASSED [ 45%] tests/json_schema/test_draft06.py::test[type.json / object type matches objects / a string is not an object] PASSED [ 45%] tests/json_schema/test_draft06.py::test[type.json / object type matches objects / an object is an object] PASSED [ 45%] tests/json_schema/test_draft06.py::test[type.json / object type matches objects / an array is not an object] PASSED [ 45%] tests/json_schema/test_draft06.py::test[type.json / object type matches objects / a boolean is not an object] PASSED [ 45%] tests/json_schema/test_draft06.py::test[type.json / object type matches objects / null is not an object] PASSED [ 45%] tests/json_schema/test_draft06.py::test[type.json / array type matches arrays / an integer is not an array] PASSED [ 45%] tests/json_schema/test_draft06.py::test[type.json / array type matches arrays / a float is not an array] PASSED [ 45%] tests/json_schema/test_draft06.py::test[type.json / array type matches arrays / a string is not an array] PASSED [ 45%] tests/json_schema/test_draft06.py::test[type.json / array type matches arrays / an object is not an array] PASSED [ 45%] tests/json_schema/test_draft06.py::test[type.json / array type matches arrays / an array is an array] PASSED [ 45%] tests/json_schema/test_draft06.py::test[type.json / array type matches arrays / a boolean is not an array] PASSED [ 45%] tests/json_schema/test_draft06.py::test[type.json / array type matches arrays / null is not an array] PASSED [ 45%] tests/json_schema/test_draft06.py::test[type.json / boolean type matches booleans / an integer is not a boolean] PASSED [ 46%] tests/json_schema/test_draft06.py::test[type.json / boolean type matches booleans / zero is not a boolean] PASSED [ 46%] tests/json_schema/test_draft06.py::test[type.json / boolean type matches booleans / a float is not a boolean] PASSED [ 46%] tests/json_schema/test_draft06.py::test[type.json / boolean type matches booleans / a string is not a boolean] PASSED [ 46%] tests/json_schema/test_draft06.py::test[type.json / boolean type matches booleans / an empty string is not a boolean] PASSED [ 46%] tests/json_schema/test_draft06.py::test[type.json / boolean type matches booleans / an object is not a boolean] PASSED [ 46%] tests/json_schema/test_draft06.py::test[type.json / boolean type matches booleans / an array is not a boolean] PASSED [ 46%] tests/json_schema/test_draft06.py::test[type.json / boolean type matches booleans / true is a boolean] PASSED [ 46%] tests/json_schema/test_draft06.py::test[type.json / boolean type matches booleans / false is a boolean] PASSED [ 46%] tests/json_schema/test_draft06.py::test[type.json / boolean type matches booleans / null is not a boolean] PASSED [ 46%] tests/json_schema/test_draft06.py::test[type.json / null type matches only the null object / an integer is not null] PASSED [ 46%] tests/json_schema/test_draft06.py::test[type.json / null type matches only the null object / a float is not null] PASSED [ 46%] tests/json_schema/test_draft06.py::test[type.json / null type matches only the null object / zero is not null] PASSED [ 46%] tests/json_schema/test_draft06.py::test[type.json / null type matches only the null object / a string is not null] PASSED [ 46%] tests/json_schema/test_draft06.py::test[type.json / null type matches only the null object / an empty string is not null] PASSED [ 46%] tests/json_schema/test_draft06.py::test[type.json / null type matches only the null object / an object is not null] PASSED [ 46%] tests/json_schema/test_draft06.py::test[type.json / null type matches only the null object / an array is not null] PASSED [ 46%] tests/json_schema/test_draft06.py::test[type.json / null type matches only the null object / true is not null] PASSED [ 46%] tests/json_schema/test_draft06.py::test[type.json / null type matches only the null object / false is not null] PASSED [ 46%] tests/json_schema/test_draft06.py::test[type.json / null type matches only the null object / null is null] PASSED [ 46%] tests/json_schema/test_draft06.py::test[type.json / multiple types can be specified in an array / an integer is valid] PASSED [ 46%] tests/json_schema/test_draft06.py::test[type.json / multiple types can be specified in an array / a string is valid] PASSED [ 47%] tests/json_schema/test_draft06.py::test[type.json / multiple types can be specified in an array / a float is invalid] PASSED [ 47%] tests/json_schema/test_draft06.py::test[type.json / multiple types can be specified in an array / an object is invalid] PASSED [ 47%] tests/json_schema/test_draft06.py::test[type.json / multiple types can be specified in an array / an array is invalid] PASSED [ 47%] tests/json_schema/test_draft06.py::test[type.json / multiple types can be specified in an array / a boolean is invalid] PASSED [ 47%] tests/json_schema/test_draft06.py::test[type.json / multiple types can be specified in an array / null is invalid] PASSED [ 47%] tests/json_schema/test_draft06.py::test[type.json / type as array with one item / string is valid] PASSED [ 47%] tests/json_schema/test_draft06.py::test[type.json / type as array with one item / number is invalid] PASSED [ 47%] tests/json_schema/test_draft06.py::test[type.json / type: array or object / array is valid] PASSED [ 47%] tests/json_schema/test_draft06.py::test[type.json / type: array or object / object is valid] PASSED [ 47%] tests/json_schema/test_draft06.py::test[type.json / type: array or object / number is invalid] PASSED [ 47%] tests/json_schema/test_draft06.py::test[type.json / type: array or object / string is invalid] PASSED [ 47%] tests/json_schema/test_draft06.py::test[type.json / type: array or object / null is invalid] PASSED [ 47%] tests/json_schema/test_draft06.py::test[type.json / type: array, object or null / array is valid] PASSED [ 47%] tests/json_schema/test_draft06.py::test[type.json / type: array, object or null / object is valid] PASSED [ 47%] tests/json_schema/test_draft06.py::test[type.json / type: array, object or null / null is valid] PASSED [ 47%] tests/json_schema/test_draft06.py::test[type.json / type: array, object or null / number is invalid] PASSED [ 47%] tests/json_schema/test_draft06.py::test[type.json / type: array, object or null / string is invalid] PASSED [ 47%] tests/json_schema/test_draft06.py::test[uniqueItems.json / uniqueItems validation / unique array of integers is valid] PASSED [ 47%] tests/json_schema/test_draft06.py::test[uniqueItems.json / uniqueItems validation / non-unique array of integers is invalid] PASSED [ 47%] tests/json_schema/test_draft06.py::test[uniqueItems.json / uniqueItems validation / numbers are unique if mathematically unequal] PASSED [ 48%] tests/json_schema/test_draft06.py::test[uniqueItems.json / uniqueItems validation / unique array of objects is valid] PASSED [ 48%] tests/json_schema/test_draft06.py::test[uniqueItems.json / uniqueItems validation / non-unique array of objects is invalid] PASSED [ 48%] tests/json_schema/test_draft06.py::test[uniqueItems.json / uniqueItems validation / unique array of nested objects is valid] PASSED [ 48%] tests/json_schema/test_draft06.py::test[uniqueItems.json / uniqueItems validation / non-unique array of nested objects is invalid] PASSED [ 48%] tests/json_schema/test_draft06.py::test[uniqueItems.json / uniqueItems validation / unique array of arrays is valid] PASSED [ 48%] tests/json_schema/test_draft06.py::test[uniqueItems.json / uniqueItems validation / non-unique array of arrays is invalid] PASSED [ 48%] tests/json_schema/test_draft06.py::test[uniqueItems.json / uniqueItems validation / 1 and true are unique] PASSED [ 48%] tests/json_schema/test_draft06.py::test[uniqueItems.json / uniqueItems validation / 0 and false are unique] PASSED [ 48%] tests/json_schema/test_draft06.py::test[uniqueItems.json / uniqueItems validation / unique heterogeneous types are valid] PASSED [ 48%] tests/json_schema/test_draft06.py::test[uniqueItems.json / uniqueItems validation / non-unique heterogeneous types are invalid] PASSED [ 48%] tests/json_schema/test_draft07.py::test[additionalItems.json / additionalItems as schema / additional items match schema] PASSED [ 48%] tests/json_schema/test_draft07.py::test[additionalItems.json / additionalItems as schema / additional items do not match schema] PASSED [ 48%] tests/json_schema/test_draft07.py::test[additionalItems.json / items is schema, no additionalItems / all items match schema] PASSED [ 48%] tests/json_schema/test_draft07.py::test[additionalItems.json / array of items with no additionalItems / fewer number of items present] PASSED [ 48%] tests/json_schema/test_draft07.py::test[additionalItems.json / array of items with no additionalItems / equal number of items present] PASSED [ 48%] tests/json_schema/test_draft07.py::test[additionalItems.json / array of items with no additionalItems / additional items are not permitted] PASSED [ 48%] tests/json_schema/test_draft07.py::test[additionalItems.json / additionalItems as false without items / items defaults to empty schema so everything is valid] PASSED [ 48%] tests/json_schema/test_draft07.py::test[additionalItems.json / additionalItems as false without items / ignores non-arrays] PASSED [ 48%] tests/json_schema/test_draft07.py::test[additionalItems.json / additionalItems are allowed by default / only the first item is validated] PASSED [ 48%] tests/json_schema/test_draft07.py::test[additionalProperties.json / additionalProperties being false does not allow other properties / no additional properties is valid] PASSED [ 48%] tests/json_schema/test_draft07.py::test[additionalProperties.json / additionalProperties being false does not allow other properties / an additional property is invalid] PASSED [ 49%] tests/json_schema/test_draft07.py::test[additionalProperties.json / additionalProperties being false does not allow other properties / ignores arrays] PASSED [ 49%] tests/json_schema/test_draft07.py::test[additionalProperties.json / additionalProperties being false does not allow other properties / ignores strings] PASSED [ 49%] tests/json_schema/test_draft07.py::test[additionalProperties.json / additionalProperties being false does not allow other properties / ignores other non-objects] PASSED [ 49%] tests/json_schema/test_draft07.py::test[additionalProperties.json / additionalProperties being false does not allow other properties / patternProperties are not additional properties] PASSED [ 49%] tests/json_schema/test_draft07.py::test[additionalProperties.json / non-ASCII pattern with additionalProperties / matching the pattern is valid] PASSED [ 49%] tests/json_schema/test_draft07.py::test[additionalProperties.json / non-ASCII pattern with additionalProperties / not matching the pattern is invalid] PASSED [ 49%] tests/json_schema/test_draft07.py::test[additionalProperties.json / additionalProperties allows a schema which should validate / no additional properties is valid] PASSED [ 49%] tests/json_schema/test_draft07.py::test[additionalProperties.json / additionalProperties allows a schema which should validate / an additional valid property is valid] PASSED [ 49%] tests/json_schema/test_draft07.py::test[additionalProperties.json / additionalProperties allows a schema which should validate / an additional invalid property is invalid] PASSED [ 49%] tests/json_schema/test_draft07.py::test[additionalProperties.json / additionalProperties can exist by itself / an additional valid property is valid] PASSED [ 49%] tests/json_schema/test_draft07.py::test[additionalProperties.json / additionalProperties can exist by itself / an additional invalid property is invalid] PASSED [ 49%] tests/json_schema/test_draft07.py::test[additionalProperties.json / additionalProperties are allowed by default / additional properties are allowed] PASSED [ 49%] tests/json_schema/test_draft07.py::test[additionalProperties.json / additionalProperties should not look in applicators / properties defined in allOf are not allowed] PASSED [ 49%] tests/json_schema/test_draft07.py::test[allOf.json / allOf / allOf] PASSED [ 49%] tests/json_schema/test_draft07.py::test[allOf.json / allOf / mismatch second] PASSED [ 49%] tests/json_schema/test_draft07.py::test[allOf.json / allOf / mismatch first] PASSED [ 49%] tests/json_schema/test_draft07.py::test[allOf.json / allOf / wrong type] PASSED [ 49%] tests/json_schema/test_draft07.py::test[allOf.json / allOf with base schema / valid] PASSED [ 49%] tests/json_schema/test_draft07.py::test[allOf.json / allOf with base schema / mismatch base schema] PASSED [ 49%] tests/json_schema/test_draft07.py::test[allOf.json / allOf with base schema / mismatch first allOf] PASSED [ 49%] tests/json_schema/test_draft07.py::test[allOf.json / allOf with base schema / mismatch second allOf] PASSED [ 50%] tests/json_schema/test_draft07.py::test[allOf.json / allOf with base schema / mismatch both] PASSED [ 50%] tests/json_schema/test_draft07.py::test[allOf.json / allOf simple types / valid] PASSED [ 50%] tests/json_schema/test_draft07.py::test[allOf.json / allOf simple types / mismatch one] PASSED [ 50%] tests/json_schema/test_draft07.py::test[allOf.json / allOf with boolean schemas, all true / any value is valid] PASSED [ 50%] tests/json_schema/test_draft07.py::test[allOf.json / allOf with boolean schemas, some false / any value is invalid] PASSED [ 50%] tests/json_schema/test_draft07.py::test[allOf.json / allOf with boolean schemas, all false / any value is invalid] PASSED [ 50%] tests/json_schema/test_draft07.py::test[allOf.json / allOf with one empty schema / any data is valid] PASSED [ 50%] tests/json_schema/test_draft07.py::test[allOf.json / allOf with two empty schemas / any data is valid] PASSED [ 50%] tests/json_schema/test_draft07.py::test[allOf.json / allOf with the first empty schema / number is valid] PASSED [ 50%] tests/json_schema/test_draft07.py::test[allOf.json / allOf with the first empty schema / string is invalid] PASSED [ 50%] tests/json_schema/test_draft07.py::test[allOf.json / allOf with the last empty schema / number is valid] PASSED [ 50%] tests/json_schema/test_draft07.py::test[allOf.json / allOf with the last empty schema / string is invalid] PASSED [ 50%] tests/json_schema/test_draft07.py::test[anyOf.json / anyOf / first anyOf valid] PASSED [ 50%] tests/json_schema/test_draft07.py::test[anyOf.json / anyOf / second anyOf valid] PASSED [ 50%] tests/json_schema/test_draft07.py::test[anyOf.json / anyOf / both anyOf valid] PASSED [ 50%] tests/json_schema/test_draft07.py::test[anyOf.json / anyOf / neither anyOf valid] PASSED [ 50%] tests/json_schema/test_draft07.py::test[anyOf.json / anyOf with base schema / mismatch base schema] PASSED [ 50%] tests/json_schema/test_draft07.py::test[anyOf.json / anyOf with base schema / one anyOf valid] PASSED [ 50%] tests/json_schema/test_draft07.py::test[anyOf.json / anyOf with base schema / both anyOf invalid] PASSED [ 50%] tests/json_schema/test_draft07.py::test[anyOf.json / anyOf with boolean schemas, all true / any value is valid] PASSED [ 50%] tests/json_schema/test_draft07.py::test[anyOf.json / anyOf with boolean schemas, some true / any value is valid] PASSED [ 51%] tests/json_schema/test_draft07.py::test[anyOf.json / anyOf with boolean schemas, all false / any value is invalid] PASSED [ 51%] tests/json_schema/test_draft07.py::test[anyOf.json / anyOf complex types / first anyOf valid (complex)] PASSED [ 51%] tests/json_schema/test_draft07.py::test[anyOf.json / anyOf complex types / second anyOf valid (complex)] PASSED [ 51%] tests/json_schema/test_draft07.py::test[anyOf.json / anyOf complex types / both anyOf valid (complex)] PASSED [ 51%] tests/json_schema/test_draft07.py::test[anyOf.json / anyOf complex types / neither anyOf valid (complex)] PASSED [ 51%] tests/json_schema/test_draft07.py::test[anyOf.json / anyOf with one empty schema / string is valid] PASSED [ 51%] tests/json_schema/test_draft07.py::test[anyOf.json / anyOf with one empty schema / number is valid] PASSED [ 51%] tests/json_schema/test_draft07.py::test[boolean_schema.json / boolean schema 'true' / number is valid] PASSED [ 51%] tests/json_schema/test_draft07.py::test[boolean_schema.json / boolean schema 'true' / string is valid] PASSED [ 51%] tests/json_schema/test_draft07.py::test[boolean_schema.json / boolean schema 'true' / boolean true is valid] PASSED [ 51%] tests/json_schema/test_draft07.py::test[boolean_schema.json / boolean schema 'true' / boolean false is valid] PASSED [ 51%] tests/json_schema/test_draft07.py::test[boolean_schema.json / boolean schema 'true' / null is valid] PASSED [ 51%] tests/json_schema/test_draft07.py::test[boolean_schema.json / boolean schema 'true' / object is valid] PASSED [ 51%] tests/json_schema/test_draft07.py::test[boolean_schema.json / boolean schema 'true' / empty object is valid] PASSED [ 51%] tests/json_schema/test_draft07.py::test[boolean_schema.json / boolean schema 'true' / array is valid] PASSED [ 51%] tests/json_schema/test_draft07.py::test[boolean_schema.json / boolean schema 'true' / empty array is valid] PASSED [ 51%] tests/json_schema/test_draft07.py::test[boolean_schema.json / boolean schema 'false' / number is invalid] PASSED [ 51%] tests/json_schema/test_draft07.py::test[boolean_schema.json / boolean schema 'false' / string is invalid] PASSED [ 51%] tests/json_schema/test_draft07.py::test[boolean_schema.json / boolean schema 'false' / boolean true is invalid] PASSED [ 51%] tests/json_schema/test_draft07.py::test[boolean_schema.json / boolean schema 'false' / boolean false is invalid] PASSED [ 51%] tests/json_schema/test_draft07.py::test[boolean_schema.json / boolean schema 'false' / null is invalid] PASSED [ 52%] tests/json_schema/test_draft07.py::test[boolean_schema.json / boolean schema 'false' / object is invalid] PASSED [ 52%] tests/json_schema/test_draft07.py::test[boolean_schema.json / boolean schema 'false' / empty object is invalid] PASSED [ 52%] tests/json_schema/test_draft07.py::test[boolean_schema.json / boolean schema 'false' / array is invalid] PASSED [ 52%] tests/json_schema/test_draft07.py::test[boolean_schema.json / boolean schema 'false' / empty array is invalid] PASSED [ 52%] tests/json_schema/test_draft07.py::test[const.json / const validation / same value is valid] XPASS [ 52%] tests/json_schema/test_draft07.py::test[const.json / const validation / another value is invalid] XPASS [ 52%] tests/json_schema/test_draft07.py::test[const.json / const validation / another type is invalid] XPASS [ 52%] tests/json_schema/test_draft07.py::test[const.json / const with object / same object is valid] XPASS [ 52%] tests/json_schema/test_draft07.py::test[const.json / const with object / same object with different property order is valid] XPASS [ 52%] tests/json_schema/test_draft07.py::test[const.json / const with object / another object is invalid] XPASS [ 52%] tests/json_schema/test_draft07.py::test[const.json / const with object / another type is invalid] XPASS [ 52%] tests/json_schema/test_draft07.py::test[const.json / const with array / same array is valid] XPASS [ 52%] tests/json_schema/test_draft07.py::test[const.json / const with array / another array item is invalid] XPASS [ 52%] tests/json_schema/test_draft07.py::test[const.json / const with array / array with additional items is invalid] XPASS [ 52%] tests/json_schema/test_draft07.py::test[const.json / const with null / null is valid] XPASS [ 52%] tests/json_schema/test_draft07.py::test[const.json / const with null / not null is invalid] XPASS [ 52%] tests/json_schema/test_draft07.py::test[contains.json / contains keyword validation / array with item matching schema (5) is valid] PASSED [ 52%] tests/json_schema/test_draft07.py::test[contains.json / contains keyword validation / array with item matching schema (6) is valid] PASSED [ 52%] tests/json_schema/test_draft07.py::test[contains.json / contains keyword validation / array with two items matching schema (5, 6) is valid] PASSED [ 52%] tests/json_schema/test_draft07.py::test[contains.json / contains keyword validation / array without items matching schema is invalid] PASSED [ 53%] tests/json_schema/test_draft07.py::test[contains.json / contains keyword validation / empty array is invalid] PASSED [ 53%] tests/json_schema/test_draft07.py::test[contains.json / contains keyword validation / not array is valid] PASSED [ 53%] tests/json_schema/test_draft07.py::test[contains.json / contains keyword with const keyword / array with item 5 is valid] PASSED [ 53%] tests/json_schema/test_draft07.py::test[contains.json / contains keyword with const keyword / array with two items 5 is valid] PASSED [ 53%] tests/json_schema/test_draft07.py::test[contains.json / contains keyword with const keyword / array without item 5 is invalid] PASSED [ 53%] tests/json_schema/test_draft07.py::test[contains.json / contains keyword with boolean schema true / any non-empty array is valid] PASSED [ 53%] tests/json_schema/test_draft07.py::test[contains.json / contains keyword with boolean schema true / empty array is invalid] PASSED [ 53%] tests/json_schema/test_draft07.py::test[contains.json / contains keyword with boolean schema false / any non-empty array is invalid] PASSED [ 53%] tests/json_schema/test_draft07.py::test[contains.json / contains keyword with boolean schema false / empty array is invalid] PASSED [ 53%] tests/json_schema/test_draft07.py::test[default.json / invalid type for default / valid when property is specified] PASSED [ 53%] tests/json_schema/test_draft07.py::test[default.json / invalid type for default / still valid when the invalid default is used] PASSED [ 53%] tests/json_schema/test_draft07.py::test[default.json / invalid string value for default / valid when property is specified] PASSED [ 53%] tests/json_schema/test_draft07.py::test[default.json / invalid string value for default / still valid when the invalid default is used] PASSED [ 53%] tests/json_schema/test_draft07.py::test[definitions.json / valid definition / valid definition schema] XFAIL [ 53%] tests/json_schema/test_draft07.py::test[definitions.json / invalid definition / invalid definition schema] XFAIL [ 53%] tests/json_schema/test_draft07.py::test[dependencies.json / dependencies / neither] PASSED [ 53%] tests/json_schema/test_draft07.py::test[dependencies.json / dependencies / nondependant] PASSED [ 53%] tests/json_schema/test_draft07.py::test[dependencies.json / dependencies / with dependency] PASSED [ 53%] tests/json_schema/test_draft07.py::test[dependencies.json / dependencies / missing dependency] PASSED [ 53%] tests/json_schema/test_draft07.py::test[dependencies.json / dependencies / ignores arrays] PASSED [ 53%] tests/json_schema/test_draft07.py::test[dependencies.json / dependencies / ignores strings] PASSED [ 54%] tests/json_schema/test_draft07.py::test[dependencies.json / dependencies / ignores other non-objects] PASSED [ 54%] tests/json_schema/test_draft07.py::test[dependencies.json / dependencies with empty array / empty object] PASSED [ 54%] tests/json_schema/test_draft07.py::test[dependencies.json / dependencies with empty array / object with one property] PASSED [ 54%] tests/json_schema/test_draft07.py::test[dependencies.json / multiple dependencies / neither] PASSED [ 54%] tests/json_schema/test_draft07.py::test[dependencies.json / multiple dependencies / nondependants] PASSED [ 54%] tests/json_schema/test_draft07.py::test[dependencies.json / multiple dependencies / with dependencies] PASSED [ 54%] tests/json_schema/test_draft07.py::test[dependencies.json / multiple dependencies / missing dependency] PASSED [ 54%] tests/json_schema/test_draft07.py::test[dependencies.json / multiple dependencies / missing other dependency] PASSED [ 54%] tests/json_schema/test_draft07.py::test[dependencies.json / multiple dependencies / missing both dependencies] PASSED [ 54%] tests/json_schema/test_draft07.py::test[dependencies.json / multiple dependencies subschema / valid] PASSED [ 54%] tests/json_schema/test_draft07.py::test[dependencies.json / multiple dependencies subschema / no dependency] PASSED [ 54%] tests/json_schema/test_draft07.py::test[dependencies.json / multiple dependencies subschema / wrong type] PASSED [ 54%] tests/json_schema/test_draft07.py::test[dependencies.json / multiple dependencies subschema / wrong type other] PASSED [ 54%] tests/json_schema/test_draft07.py::test[dependencies.json / multiple dependencies subschema / wrong type both] PASSED [ 54%] tests/json_schema/test_draft07.py::test[dependencies.json / dependencies with boolean subschemas / object with property having schema true is valid] PASSED [ 54%] tests/json_schema/test_draft07.py::test[dependencies.json / dependencies with boolean subschemas / object with property having schema false is invalid] PASSED [ 54%] tests/json_schema/test_draft07.py::test[dependencies.json / dependencies with boolean subschemas / object with both properties is invalid] PASSED [ 54%] tests/json_schema/test_draft07.py::test[dependencies.json / dependencies with boolean subschemas / empty object is valid] PASSED [ 54%] tests/json_schema/test_draft07.py::test[dependencies.json / empty array of dependencies / object with property is valid] PASSED [ 54%] tests/json_schema/test_draft07.py::test[dependencies.json / empty array of dependencies / empty object is valid] PASSED [ 54%] tests/json_schema/test_draft07.py::test[dependencies.json / empty array of dependencies / non-object is valid] PASSED [ 55%] tests/json_schema/test_draft07.py::test[dependencies.json / dependencies with escaped characters / valid object 1] PASSED [ 55%] tests/json_schema/test_draft07.py::test[dependencies.json / dependencies with escaped characters / valid object 2] PASSED [ 55%] tests/json_schema/test_draft07.py::test[dependencies.json / dependencies with escaped characters / valid object 3] PASSED [ 55%] tests/json_schema/test_draft07.py::test[dependencies.json / dependencies with escaped characters / invalid object 1] PASSED [ 55%] tests/json_schema/test_draft07.py::test[dependencies.json / dependencies with escaped characters / invalid object 2] PASSED [ 55%] tests/json_schema/test_draft07.py::test[dependencies.json / dependencies with escaped characters / invalid object 3] PASSED [ 55%] tests/json_schema/test_draft07.py::test[dependencies.json / dependencies with escaped characters / invalid object 4] PASSED [ 55%] tests/json_schema/test_draft07.py::test[enum.json / simple enum validation / one of the enum is valid] XPASS [ 55%] tests/json_schema/test_draft07.py::test[enum.json / simple enum validation / something else is invalid] XPASS [ 55%] tests/json_schema/test_draft07.py::test[enum.json / heterogeneous enum validation / one of the enum is valid] XPASS [ 55%] tests/json_schema/test_draft07.py::test[enum.json / heterogeneous enum validation / something else is invalid] XPASS [ 55%] tests/json_schema/test_draft07.py::test[enum.json / heterogeneous enum validation / objects are deep compared] XPASS [ 55%] tests/json_schema/test_draft07.py::test[enum.json / enums in properties / both properties are valid] XPASS [ 55%] tests/json_schema/test_draft07.py::test[enum.json / enums in properties / missing optional property is valid] XPASS [ 55%] tests/json_schema/test_draft07.py::test[enum.json / enums in properties / missing required property is invalid] XPASS [ 55%] tests/json_schema/test_draft07.py::test[enum.json / enums in properties / missing all properties is invalid] XPASS [ 55%] tests/json_schema/test_draft07.py::test[enum.json / enum with escaped characters / member 1 is valid] XPASS [ 55%] tests/json_schema/test_draft07.py::test[enum.json / enum with escaped characters / member 2 is valid] XPASS [ 55%] tests/json_schema/test_draft07.py::test[enum.json / enum with escaped characters / another string is invalid] XPASS [ 55%] tests/json_schema/test_draft07.py::test[exclusiveMaximum.json / exclusiveMaximum validation / below the exclusiveMaximum is valid] PASSED [ 55%] tests/json_schema/test_draft07.py::test[exclusiveMaximum.json / exclusiveMaximum validation / boundary point is invalid] PASSED [ 56%] tests/json_schema/test_draft07.py::test[exclusiveMaximum.json / exclusiveMaximum validation / above the exclusiveMaximum is invalid] PASSED [ 56%] tests/json_schema/test_draft07.py::test[exclusiveMaximum.json / exclusiveMaximum validation / ignores non-numbers] PASSED [ 56%] tests/json_schema/test_draft07.py::test[exclusiveMinimum.json / exclusiveMinimum validation / above the exclusiveMinimum is valid] PASSED [ 56%] tests/json_schema/test_draft07.py::test[exclusiveMinimum.json / exclusiveMinimum validation / boundary point is invalid] PASSED [ 56%] tests/json_schema/test_draft07.py::test[exclusiveMinimum.json / exclusiveMinimum validation / below the exclusiveMinimum is invalid] PASSED [ 56%] tests/json_schema/test_draft07.py::test[exclusiveMinimum.json / exclusiveMinimum validation / ignores non-numbers] PASSED [ 56%] tests/json_schema/test_draft07.py::test[if-then-else.json / ignore if without then or else / valid when valid against lone if] PASSED [ 56%] tests/json_schema/test_draft07.py::test[if-then-else.json / ignore if without then or else / valid when invalid against lone if] PASSED [ 56%] tests/json_schema/test_draft07.py::test[if-then-else.json / ignore then without if / valid when valid against lone then] PASSED [ 56%] tests/json_schema/test_draft07.py::test[if-then-else.json / ignore then without if / valid when invalid against lone then] PASSED [ 56%] tests/json_schema/test_draft07.py::test[if-then-else.json / ignore else without if / valid when valid against lone else] PASSED [ 56%] tests/json_schema/test_draft07.py::test[if-then-else.json / ignore else without if / valid when invalid against lone else] PASSED [ 56%] tests/json_schema/test_draft07.py::test[if-then-else.json / if and then without else / valid through then] PASSED [ 56%] tests/json_schema/test_draft07.py::test[if-then-else.json / if and then without else / invalid through then] PASSED [ 56%] tests/json_schema/test_draft07.py::test[if-then-else.json / if and then without else / valid when if test fails] PASSED [ 56%] tests/json_schema/test_draft07.py::test[if-then-else.json / if and else without then / valid when if test passes] PASSED [ 56%] tests/json_schema/test_draft07.py::test[if-then-else.json / if and else without then / valid through else] PASSED [ 56%] tests/json_schema/test_draft07.py::test[if-then-else.json / if and else without then / invalid through else] PASSED [ 56%] tests/json_schema/test_draft07.py::test[if-then-else.json / validate against correct branch, then vs else / valid through then] PASSED [ 56%] tests/json_schema/test_draft07.py::test[if-then-else.json / validate against correct branch, then vs else / invalid through then] PASSED [ 56%] tests/json_schema/test_draft07.py::test[if-then-else.json / validate against correct branch, then vs else / valid through else] PASSED [ 57%] tests/json_schema/test_draft07.py::test[if-then-else.json / validate against correct branch, then vs else / invalid through else] PASSED [ 57%] tests/json_schema/test_draft07.py::test[if-then-else.json / non-interference across combined schemas / valid, but woud have been invalid through then] PASSED [ 57%] tests/json_schema/test_draft07.py::test[if-then-else.json / non-interference across combined schemas / valid, but would have been invalid through else] PASSED [ 57%] tests/json_schema/test_draft07.py::test[items.json / a schema given for items / valid items] PASSED [ 57%] tests/json_schema/test_draft07.py::test[items.json / a schema given for items / wrong type of items] PASSED [ 57%] tests/json_schema/test_draft07.py::test[items.json / a schema given for items / ignores non-arrays] PASSED [ 57%] tests/json_schema/test_draft07.py::test[items.json / a schema given for items / JavaScript pseudo-array is valid] PASSED [ 57%] tests/json_schema/test_draft07.py::test[items.json / an array of schemas for items / correct types] PASSED [ 57%] tests/json_schema/test_draft07.py::test[items.json / an array of schemas for items / wrong types] PASSED [ 57%] tests/json_schema/test_draft07.py::test[items.json / an array of schemas for items / incomplete array of items] PASSED [ 57%] tests/json_schema/test_draft07.py::test[items.json / an array of schemas for items / array with additional items] PASSED [ 57%] tests/json_schema/test_draft07.py::test[items.json / an array of schemas for items / empty array] PASSED [ 57%] tests/json_schema/test_draft07.py::test[items.json / an array of schemas for items / JavaScript pseudo-array is valid] PASSED [ 57%] tests/json_schema/test_draft07.py::test[items.json / items with boolean schema (true) / any array is valid] PASSED [ 57%] tests/json_schema/test_draft07.py::test[items.json / items with boolean schema (true) / empty array is valid] PASSED [ 57%] tests/json_schema/test_draft07.py::test[items.json / items with boolean schema (false) / any non-empty array is invalid] PASSED [ 57%] tests/json_schema/test_draft07.py::test[items.json / items with boolean schema (false) / empty array is valid] PASSED [ 57%] tests/json_schema/test_draft07.py::test[items.json / items with boolean schemas / array with one item is valid] PASSED [ 57%] tests/json_schema/test_draft07.py::test[items.json / items with boolean schemas / array with two items is invalid] PASSED [ 57%] tests/json_schema/test_draft07.py::test[items.json / items with boolean schemas / empty array is valid] PASSED [ 58%] tests/json_schema/test_draft07.py::test[items.json / items and subitems / valid items] PASSED [ 58%] tests/json_schema/test_draft07.py::test[items.json / items and subitems / too many items] PASSED [ 58%] tests/json_schema/test_draft07.py::test[items.json / items and subitems / too many sub-items] PASSED [ 58%] tests/json_schema/test_draft07.py::test[items.json / items and subitems / wrong item] PASSED [ 58%] tests/json_schema/test_draft07.py::test[items.json / items and subitems / wrong sub-item] PASSED [ 58%] tests/json_schema/test_draft07.py::test[items.json / items and subitems / fewer items is valid] PASSED [ 58%] tests/json_schema/test_draft07.py::test[items.json / nested items / valid nested array] PASSED [ 58%] tests/json_schema/test_draft07.py::test[items.json / nested items / nested array with invalid type] PASSED [ 58%] tests/json_schema/test_draft07.py::test[items.json / nested items / not deep enough] PASSED [ 58%] tests/json_schema/test_draft07.py::test[maxItems.json / maxItems validation / shorter is valid] PASSED [ 58%] tests/json_schema/test_draft07.py::test[maxItems.json / maxItems validation / exact length is valid] PASSED [ 58%] tests/json_schema/test_draft07.py::test[maxItems.json / maxItems validation / too long is invalid] PASSED [ 58%] tests/json_schema/test_draft07.py::test[maxItems.json / maxItems validation / ignores non-arrays] PASSED [ 58%] tests/json_schema/test_draft07.py::test[maxLength.json / maxLength validation / shorter is valid] PASSED [ 58%] tests/json_schema/test_draft07.py::test[maxLength.json / maxLength validation / exact length is valid] PASSED [ 58%] tests/json_schema/test_draft07.py::test[maxLength.json / maxLength validation / too long is invalid] PASSED [ 58%] tests/json_schema/test_draft07.py::test[maxLength.json / maxLength validation / ignores non-strings] PASSED [ 58%] tests/json_schema/test_draft07.py::test[maxLength.json / maxLength validation / two supplementary Unicode code points is long enough] PASSED [ 58%] tests/json_schema/test_draft07.py::test[maxProperties.json / maxProperties validation / shorter is valid] PASSED [ 58%] tests/json_schema/test_draft07.py::test[maxProperties.json / maxProperties validation / exact length is valid] PASSED [ 58%] tests/json_schema/test_draft07.py::test[maxProperties.json / maxProperties validation / too long is invalid] PASSED [ 59%] tests/json_schema/test_draft07.py::test[maxProperties.json / maxProperties validation / ignores arrays] PASSED [ 59%] tests/json_schema/test_draft07.py::test[maxProperties.json / maxProperties validation / ignores strings] PASSED [ 59%] tests/json_schema/test_draft07.py::test[maxProperties.json / maxProperties validation / ignores other non-objects] PASSED [ 59%] tests/json_schema/test_draft07.py::test[maximum.json / maximum validation / below the maximum is valid] PASSED [ 59%] tests/json_schema/test_draft07.py::test[maximum.json / maximum validation / boundary point is valid] PASSED [ 59%] tests/json_schema/test_draft07.py::test[maximum.json / maximum validation / above the maximum is invalid] PASSED [ 59%] tests/json_schema/test_draft07.py::test[maximum.json / maximum validation / ignores non-numbers] PASSED [ 59%] tests/json_schema/test_draft07.py::test[minItems.json / minItems validation / longer is valid] PASSED [ 59%] tests/json_schema/test_draft07.py::test[minItems.json / minItems validation / exact length is valid] PASSED [ 59%] tests/json_schema/test_draft07.py::test[minItems.json / minItems validation / too short is invalid] PASSED [ 59%] tests/json_schema/test_draft07.py::test[minItems.json / minItems validation / ignores non-arrays] PASSED [ 59%] tests/json_schema/test_draft07.py::test[minLength.json / minLength validation / longer is valid] PASSED [ 59%] tests/json_schema/test_draft07.py::test[minLength.json / minLength validation / exact length is valid] PASSED [ 59%] tests/json_schema/test_draft07.py::test[minLength.json / minLength validation / too short is invalid] PASSED [ 59%] tests/json_schema/test_draft07.py::test[minLength.json / minLength validation / ignores non-strings] PASSED [ 59%] tests/json_schema/test_draft07.py::test[minLength.json / minLength validation / one supplementary Unicode code point is not long enough] PASSED [ 59%] tests/json_schema/test_draft07.py::test[minProperties.json / minProperties validation / longer is valid] PASSED [ 59%] tests/json_schema/test_draft07.py::test[minProperties.json / minProperties validation / exact length is valid] PASSED [ 59%] tests/json_schema/test_draft07.py::test[minProperties.json / minProperties validation / too short is invalid] PASSED [ 59%] tests/json_schema/test_draft07.py::test[minProperties.json / minProperties validation / ignores arrays] PASSED [ 59%] tests/json_schema/test_draft07.py::test[minProperties.json / minProperties validation / ignores strings] PASSED [ 60%] tests/json_schema/test_draft07.py::test[minProperties.json / minProperties validation / ignores other non-objects] PASSED [ 60%] tests/json_schema/test_draft07.py::test[minimum.json / minimum validation / above the minimum is valid] PASSED [ 60%] tests/json_schema/test_draft07.py::test[minimum.json / minimum validation / boundary point is valid] PASSED [ 60%] tests/json_schema/test_draft07.py::test[minimum.json / minimum validation / below the minimum is invalid] PASSED [ 60%] tests/json_schema/test_draft07.py::test[minimum.json / minimum validation / ignores non-numbers] PASSED [ 60%] tests/json_schema/test_draft07.py::test[minimum.json / minimum validation with signed integer / negative above the minimum is valid] PASSED [ 60%] tests/json_schema/test_draft07.py::test[minimum.json / minimum validation with signed integer / positive above the minimum is valid] PASSED [ 60%] tests/json_schema/test_draft07.py::test[minimum.json / minimum validation with signed integer / boundary point is valid] PASSED [ 60%] tests/json_schema/test_draft07.py::test[minimum.json / minimum validation with signed integer / below the minimum is invalid] PASSED [ 60%] tests/json_schema/test_draft07.py::test[minimum.json / minimum validation with signed integer / ignores non-numbers] PASSED [ 60%] tests/json_schema/test_draft07.py::test[multipleOf.json / by int / int by int] PASSED [ 60%] tests/json_schema/test_draft07.py::test[multipleOf.json / by int / int by int fail] PASSED [ 60%] tests/json_schema/test_draft07.py::test[multipleOf.json / by int / ignores non-numbers] PASSED [ 60%] tests/json_schema/test_draft07.py::test[multipleOf.json / by number / zero is multiple of anything] PASSED [ 60%] tests/json_schema/test_draft07.py::test[multipleOf.json / by number / 4.5 is multiple of 1.5] PASSED [ 60%] tests/json_schema/test_draft07.py::test[multipleOf.json / by number / 35 is not multiple of 1.5] PASSED [ 60%] tests/json_schema/test_draft07.py::test[multipleOf.json / by small number / 0.0075 is multiple of 0.0001] PASSED [ 60%] tests/json_schema/test_draft07.py::test[multipleOf.json / by small number / 0.00751 is not multiple of 0.0001] PASSED [ 60%] tests/json_schema/test_draft07.py::test[not.json / not / allowed] PASSED [ 60%] tests/json_schema/test_draft07.py::test[not.json / not / disallowed] PASSED [ 60%] tests/json_schema/test_draft07.py::test[not.json / not multiple types / valid] PASSED [ 61%] tests/json_schema/test_draft07.py::test[not.json / not multiple types / mismatch] PASSED [ 61%] tests/json_schema/test_draft07.py::test[not.json / not multiple types / other mismatch] PASSED [ 61%] tests/json_schema/test_draft07.py::test[not.json / not more complex schema / match] PASSED [ 61%] tests/json_schema/test_draft07.py::test[not.json / not more complex schema / other match] PASSED [ 61%] tests/json_schema/test_draft07.py::test[not.json / not more complex schema / mismatch] PASSED [ 61%] tests/json_schema/test_draft07.py::test[not.json / forbidden property / property present] PASSED [ 61%] tests/json_schema/test_draft07.py::test[not.json / forbidden property / property absent] PASSED [ 61%] tests/json_schema/test_draft07.py::test[not.json / not with boolean schema true / any value is invalid] PASSED [ 61%] tests/json_schema/test_draft07.py::test[not.json / not with boolean schema false / any value is valid] PASSED [ 61%] tests/json_schema/test_draft07.py::test[oneOf.json / oneOf / first oneOf valid] PASSED [ 61%] tests/json_schema/test_draft07.py::test[oneOf.json / oneOf / second oneOf valid] PASSED [ 61%] tests/json_schema/test_draft07.py::test[oneOf.json / oneOf / both oneOf valid] PASSED [ 61%] tests/json_schema/test_draft07.py::test[oneOf.json / oneOf / neither oneOf valid] PASSED [ 61%] tests/json_schema/test_draft07.py::test[oneOf.json / oneOf with base schema / mismatch base schema] PASSED [ 61%] tests/json_schema/test_draft07.py::test[oneOf.json / oneOf with base schema / one oneOf valid] PASSED [ 61%] tests/json_schema/test_draft07.py::test[oneOf.json / oneOf with base schema / both oneOf valid] PASSED [ 61%] tests/json_schema/test_draft07.py::test[oneOf.json / oneOf with boolean schemas, all true / any value is invalid] PASSED [ 61%] tests/json_schema/test_draft07.py::test[oneOf.json / oneOf with boolean schemas, one true / any value is valid] PASSED [ 61%] tests/json_schema/test_draft07.py::test[oneOf.json / oneOf with boolean schemas, more than one true / any value is invalid] PASSED [ 61%] tests/json_schema/test_draft07.py::test[oneOf.json / oneOf with boolean schemas, all false / any value is invalid] PASSED [ 62%] tests/json_schema/test_draft07.py::test[oneOf.json / oneOf complex types / first oneOf valid (complex)] PASSED [ 62%] tests/json_schema/test_draft07.py::test[oneOf.json / oneOf complex types / second oneOf valid (complex)] PASSED [ 62%] tests/json_schema/test_draft07.py::test[oneOf.json / oneOf complex types / both oneOf valid (complex)] PASSED [ 62%] tests/json_schema/test_draft07.py::test[oneOf.json / oneOf complex types / neither oneOf valid (complex)] PASSED [ 62%] tests/json_schema/test_draft07.py::test[oneOf.json / oneOf with empty schema / one valid - valid] PASSED [ 62%] tests/json_schema/test_draft07.py::test[oneOf.json / oneOf with empty schema / both valid - invalid] PASSED [ 62%] tests/json_schema/test_draft07.py::test[oneOf.json / oneOf with required / both invalid - invalid] PASSED [ 62%] tests/json_schema/test_draft07.py::test[oneOf.json / oneOf with required / first valid - valid] PASSED [ 62%] tests/json_schema/test_draft07.py::test[oneOf.json / oneOf with required / second valid - valid] PASSED [ 62%] tests/json_schema/test_draft07.py::test[oneOf.json / oneOf with required / both valid - invalid] PASSED [ 62%] tests/json_schema/test_draft07.py::test[bignum.json / integer / a bignum is an integer] PASSED [ 62%] tests/json_schema/test_draft07.py::test[bignum.json / number / a bignum is a number] PASSED [ 62%] tests/json_schema/test_draft07.py::test[bignum.json / integer / a negative bignum is an integer] PASSED [ 62%] tests/json_schema/test_draft07.py::test[bignum.json / number / a negative bignum is a number] PASSED [ 62%] tests/json_schema/test_draft07.py::test[bignum.json / string / a bignum is not a string] PASSED [ 62%] tests/json_schema/test_draft07.py::test[bignum.json / integer comparison / comparison works for high numbers] PASSED [ 62%] tests/json_schema/test_draft07.py::test[bignum.json / float comparison with high precision / comparison works for high numbers] PASSED [ 62%] tests/json_schema/test_draft07.py::test[bignum.json / integer comparison / comparison works for very negative numbers] PASSED [ 62%] tests/json_schema/test_draft07.py::test[bignum.json / float comparison with high precision on negative numbers / comparison works for very negative numbers] PASSED [ 62%] tests/json_schema/test_draft07.py::test[content.json / validation of string-encoded content based on media type / a valid JSON document] PASSED [ 62%] tests/json_schema/test_draft07.py::test[content.json / validation of string-encoded content based on media type / an invalid JSON document] PASSED [ 63%] tests/json_schema/test_draft07.py::test[content.json / validation of string-encoded content based on media type / ignores non-strings] PASSED [ 63%] tests/json_schema/test_draft07.py::test[content.json / validation of binary string-encoding / a valid base64 string] PASSED [ 63%] tests/json_schema/test_draft07.py::test[content.json / validation of binary string-encoding / an invalid base64 string (% is not a valid character)] PASSED [ 63%] tests/json_schema/test_draft07.py::test[content.json / validation of binary string-encoding / ignores non-strings] PASSED [ 63%] tests/json_schema/test_draft07.py::test[content.json / validation of binary-encoded media type documents / a valid base64-encoded JSON document] PASSED [ 63%] tests/json_schema/test_draft07.py::test[content.json / validation of binary-encoded media type documents / a validly-encoded invalid JSON document] PASSED [ 63%] tests/json_schema/test_draft07.py::test[content.json / validation of binary-encoded media type documents / an invalid base64 string that is valid JSON] PASSED [ 63%] tests/json_schema/test_draft07.py::test[content.json / validation of binary-encoded media type documents / ignores non-strings] PASSED [ 63%] tests/json_schema/test_draft07.py::test[ecmascript-regex.json / ECMA 262 regex non-compliance / ECMA 262 has no support for \\Z anchor from .NET] XFAIL [ 63%] tests/json_schema/test_draft07.py::test[date-time.json / validation of date-time strings / a valid date-time string] XPASS [ 63%] tests/json_schema/test_draft07.py::test[date-time.json / validation of date-time strings / a valid date-time string without second fraction] XPASS [ 63%] tests/json_schema/test_draft07.py::test[date-time.json / validation of date-time strings / a valid date-time string with plus offset] XPASS [ 63%] tests/json_schema/test_draft07.py::test[date-time.json / validation of date-time strings / a valid date-time string with minus offset] XPASS [ 63%] tests/json_schema/test_draft07.py::test[date-time.json / validation of date-time strings / a invalid day in date-time string] XPASS [ 63%] tests/json_schema/test_draft07.py::test[date-time.json / validation of date-time strings / an invalid offset in date-time string] XPASS [ 63%] tests/json_schema/test_draft07.py::test[date-time.json / validation of date-time strings / an invalid date-time string] XPASS [ 63%] tests/json_schema/test_draft07.py::test[date-time.json / validation of date-time strings / case-insensitive T and Z] XPASS [ 63%] tests/json_schema/test_draft07.py::test[date-time.json / validation of date-time strings / only RFC3339 not all of ISO 8601 are valid] XPASS [ 63%] tests/json_schema/test_draft07.py::test[date.json / validation of date strings / a valid date string] XPASS [ 63%] tests/json_schema/test_draft07.py::test[date.json / validation of date strings / an invalid date-time string] XPASS [ 63%] tests/json_schema/test_draft07.py::test[date.json / validation of date strings / only RFC3339 not all of ISO 8601 are valid] XPASS [ 64%] tests/json_schema/test_draft07.py::test[email.json / validation of e-mail addresses / a valid e-mail address] PASSED [ 64%] tests/json_schema/test_draft07.py::test[email.json / validation of e-mail addresses / an invalid e-mail address] PASSED [ 64%] tests/json_schema/test_draft07.py::test[hostname.json / validation of host names / a valid host name] PASSED [ 64%] tests/json_schema/test_draft07.py::test[hostname.json / validation of host names / a valid punycoded IDN hostname] PASSED [ 64%] tests/json_schema/test_draft07.py::test[hostname.json / validation of host names / a host name starting with an illegal character] PASSED [ 64%] tests/json_schema/test_draft07.py::test[hostname.json / validation of host names / a host name containing illegal characters] PASSED [ 64%] tests/json_schema/test_draft07.py::test[hostname.json / validation of host names / a host name with a component too long] PASSED [ 64%] tests/json_schema/test_draft07.py::test[idn-email.json / validation of an internationalized e-mail addresses / a valid idn e-mail (example@example.test in Hangul)] PASSED [ 64%] tests/json_schema/test_draft07.py::test[idn-email.json / validation of an internationalized e-mail addresses / an invalid idn e-mail address] PASSED [ 64%] tests/json_schema/test_draft07.py::test[idn-hostname.json / validation of internationalized host names / a valid host name (example.test in Hangul)] XFAIL [ 64%] tests/json_schema/test_draft07.py::test[idn-hostname.json / validation of internationalized host names / illegal first char U+302E Hangul single dot tone mark] XPASS [ 64%] tests/json_schema/test_draft07.py::test[idn-hostname.json / validation of internationalized host names / contains illegal char U+302E Hangul single dot tone mark] XPASS [ 64%] tests/json_schema/test_draft07.py::test[idn-hostname.json / validation of internationalized host names / a host name with a component too long] XPASS [ 64%] tests/json_schema/test_draft07.py::test[ipv4.json / validation of IP addresses / a valid IP address] PASSED [ 64%] tests/json_schema/test_draft07.py::test[ipv4.json / validation of IP addresses / an IP address with too many components] PASSED [ 64%] tests/json_schema/test_draft07.py::test[ipv4.json / validation of IP addresses / an IP address with out-of-range values] PASSED [ 64%] tests/json_schema/test_draft07.py::test[ipv4.json / validation of IP addresses / an IP address without 4 components] PASSED [ 64%] tests/json_schema/test_draft07.py::test[ipv4.json / validation of IP addresses / an IP address as an integer] PASSED [ 64%] tests/json_schema/test_draft07.py::test[ipv6.json / validation of IPv6 addresses / a valid IPv6 address] XPASS [ 64%] tests/json_schema/test_draft07.py::test[ipv6.json / validation of IPv6 addresses / an IPv6 address with out-of-range values] XPASS [ 64%] tests/json_schema/test_draft07.py::test[ipv6.json / validation of IPv6 addresses / an IPv6 address with too many components] XPASS [ 65%] tests/json_schema/test_draft07.py::test[ipv6.json / validation of IPv6 addresses / an IPv6 address containing illegal characters] XPASS [ 65%] tests/json_schema/test_draft07.py::test[iri-reference.json / validation of IRI References / a valid IRI] PASSED [ 65%] tests/json_schema/test_draft07.py::test[iri-reference.json / validation of IRI References / a valid protocol-relative IRI Reference] PASSED [ 65%] tests/json_schema/test_draft07.py::test[iri-reference.json / validation of IRI References / a valid relative IRI Reference] PASSED [ 65%] tests/json_schema/test_draft07.py::test[iri-reference.json / validation of IRI References / an invalid IRI Reference] PASSED [ 65%] tests/json_schema/test_draft07.py::test[iri-reference.json / validation of IRI References / a valid IRI Reference] PASSED [ 65%] tests/json_schema/test_draft07.py::test[iri-reference.json / validation of IRI References / a valid IRI fragment] PASSED [ 65%] tests/json_schema/test_draft07.py::test[iri-reference.json / validation of IRI References / an invalid IRI fragment] PASSED [ 65%] tests/json_schema/test_draft07.py::test[iri.json / validation of IRIs / a valid IRI with anchor tag] XPASS [ 65%] tests/json_schema/test_draft07.py::test[iri.json / validation of IRIs / a valid IRI with anchor tag and parantheses] XPASS [ 65%] tests/json_schema/test_draft07.py::test[iri.json / validation of IRIs / a valid IRI with URL-encoded stuff] XPASS [ 65%] tests/json_schema/test_draft07.py::test[iri.json / validation of IRIs / a valid IRI with many special characters] XPASS [ 65%] tests/json_schema/test_draft07.py::test[iri.json / validation of IRIs / a valid IRI based on IPv6] XPASS [ 65%] tests/json_schema/test_draft07.py::test[iri.json / validation of IRIs / an invalid IRI based on IPv6] XFAIL [ 65%] tests/json_schema/test_draft07.py::test[iri.json / validation of IRIs / an invalid relative IRI Reference] XPASS [ 65%] tests/json_schema/test_draft07.py::test[iri.json / validation of IRIs / an invalid IRI] XPASS [ 65%] tests/json_schema/test_draft07.py::test[iri.json / validation of IRIs / an invalid IRI though valid IRI reference] XPASS [ 65%] tests/json_schema/test_draft07.py::test[json-pointer.json / validation of JSON-pointers (JSON String Representation) / a valid JSON-pointer] PASSED [ 65%] tests/json_schema/test_draft07.py::test[json-pointer.json / validation of JSON-pointers (JSON String Representation) / not a valid JSON-pointer (~ not escaped)] PASSED [ 65%] tests/json_schema/test_draft07.py::test[json-pointer.json / validation of JSON-pointers (JSON String Representation) / valid JSON-pointer with empty segment] PASSED [ 65%] tests/json_schema/test_draft07.py::test[json-pointer.json / validation of JSON-pointers (JSON String Representation) / valid JSON-pointer with the last empty segment] PASSED [ 66%] tests/json_schema/test_draft07.py::test[json-pointer.json / validation of JSON-pointers (JSON String Representation) / valid JSON-pointer as stated in RFC 6901 #1] PASSED [ 66%] tests/json_schema/test_draft07.py::test[json-pointer.json / validation of JSON-pointers (JSON String Representation) / valid JSON-pointer as stated in RFC 6901 #2] PASSED [ 66%] tests/json_schema/test_draft07.py::test[json-pointer.json / validation of JSON-pointers (JSON String Representation) / valid JSON-pointer as stated in RFC 6901 #3] PASSED [ 66%] tests/json_schema/test_draft07.py::test[json-pointer.json / validation of JSON-pointers (JSON String Representation) / valid JSON-pointer as stated in RFC 6901 #4] PASSED [ 66%] tests/json_schema/test_draft07.py::test[json-pointer.json / validation of JSON-pointers (JSON String Representation) / valid JSON-pointer as stated in RFC 6901 #5] PASSED [ 66%] tests/json_schema/test_draft07.py::test[json-pointer.json / validation of JSON-pointers (JSON String Representation) / valid JSON-pointer as stated in RFC 6901 #6] PASSED [ 66%] tests/json_schema/test_draft07.py::test[json-pointer.json / validation of JSON-pointers (JSON String Representation) / valid JSON-pointer as stated in RFC 6901 #7] PASSED [ 66%] tests/json_schema/test_draft07.py::test[json-pointer.json / validation of JSON-pointers (JSON String Representation) / valid JSON-pointer as stated in RFC 6901 #8] PASSED [ 66%] tests/json_schema/test_draft07.py::test[json-pointer.json / validation of JSON-pointers (JSON String Representation) / valid JSON-pointer as stated in RFC 6901 #9] PASSED [ 66%] tests/json_schema/test_draft07.py::test[json-pointer.json / validation of JSON-pointers (JSON String Representation) / valid JSON-pointer as stated in RFC 6901 #10] PASSED [ 66%] tests/json_schema/test_draft07.py::test[json-pointer.json / validation of JSON-pointers (JSON String Representation) / valid JSON-pointer as stated in RFC 6901 #11] PASSED [ 66%] tests/json_schema/test_draft07.py::test[json-pointer.json / validation of JSON-pointers (JSON String Representation) / valid JSON-pointer as stated in RFC 6901 #12] PASSED [ 66%] tests/json_schema/test_draft07.py::test[json-pointer.json / validation of JSON-pointers (JSON String Representation) / valid JSON-pointer used adding to the last array position] PASSED [ 66%] tests/json_schema/test_draft07.py::test[json-pointer.json / validation of JSON-pointers (JSON String Representation) / valid JSON-pointer (- used as object member name)] PASSED [ 66%] tests/json_schema/test_draft07.py::test[json-pointer.json / validation of JSON-pointers (JSON String Representation) / valid JSON-pointer (multiple escaped characters)] PASSED [ 66%] tests/json_schema/test_draft07.py::test[json-pointer.json / validation of JSON-pointers (JSON String Representation) / valid JSON-pointer (escaped with fraction part) #1] PASSED [ 66%] tests/json_schema/test_draft07.py::test[json-pointer.json / validation of JSON-pointers (JSON String Representation) / valid JSON-pointer (escaped with fraction part) #2] PASSED [ 66%] tests/json_schema/test_draft07.py::test[json-pointer.json / validation of JSON-pointers (JSON String Representation) / not a valid JSON-pointer (URI Fragment Identifier) #1] PASSED [ 66%] tests/json_schema/test_draft07.py::test[json-pointer.json / validation of JSON-pointers (JSON String Representation) / not a valid JSON-pointer (URI Fragment Identifier) #2] PASSED [ 66%] tests/json_schema/test_draft07.py::test[json-pointer.json / validation of JSON-pointers (JSON String Representation) / not a valid JSON-pointer (URI Fragment Identifier) #3] PASSED [ 67%] tests/json_schema/test_draft07.py::test[json-pointer.json / validation of JSON-pointers (JSON String Representation) / not a valid JSON-pointer (some escaped, but not all) #1] PASSED [ 67%] tests/json_schema/test_draft07.py::test[json-pointer.json / validation of JSON-pointers (JSON String Representation) / not a valid JSON-pointer (some escaped, but not all) #2] PASSED [ 67%] tests/json_schema/test_draft07.py::test[json-pointer.json / validation of JSON-pointers (JSON String Representation) / not a valid JSON-pointer (wrong escape character) #1] PASSED [ 67%] tests/json_schema/test_draft07.py::test[json-pointer.json / validation of JSON-pointers (JSON String Representation) / not a valid JSON-pointer (wrong escape character) #2] PASSED [ 67%] tests/json_schema/test_draft07.py::test[json-pointer.json / validation of JSON-pointers (JSON String Representation) / not a valid JSON-pointer (multiple characters not escaped)] PASSED [ 67%] tests/json_schema/test_draft07.py::test[json-pointer.json / validation of JSON-pointers (JSON String Representation) / not a valid JSON-pointer (isn't empty nor starts with /) #1] PASSED [ 67%] tests/json_schema/test_draft07.py::test[json-pointer.json / validation of JSON-pointers (JSON String Representation) / not a valid JSON-pointer (isn't empty nor starts with /) #2] PASSED [ 67%] tests/json_schema/test_draft07.py::test[json-pointer.json / validation of JSON-pointers (JSON String Representation) / not a valid JSON-pointer (isn't empty nor starts with /) #3] PASSED [ 67%] tests/json_schema/test_draft07.py::test[regex.json / validation of regular expressions / a valid regular expression] PASSED [ 67%] tests/json_schema/test_draft07.py::test[regex.json / validation of regular expressions / a regular expression with unclosed parens is invalid] PASSED [ 67%] tests/json_schema/test_draft07.py::test[relative-json-pointer.json / validation of Relative JSON Pointers (RJP) / a valid upwards RJP] PASSED [ 67%] tests/json_schema/test_draft07.py::test[relative-json-pointer.json / validation of Relative JSON Pointers (RJP) / a valid downwards RJP] PASSED [ 67%] tests/json_schema/test_draft07.py::test[relative-json-pointer.json / validation of Relative JSON Pointers (RJP) / a valid up and then down RJP, with array index] PASSED [ 67%] tests/json_schema/test_draft07.py::test[relative-json-pointer.json / validation of Relative JSON Pointers (RJP) / a valid RJP taking the member or index name] PASSED [ 67%] tests/json_schema/test_draft07.py::test[relative-json-pointer.json / validation of Relative JSON Pointers (RJP) / an invalid RJP that is a valid JSON Pointer] PASSED [ 67%] tests/json_schema/test_draft07.py::test[time.json / validation of time strings / a valid time string] XPASS [ 67%] tests/json_schema/test_draft07.py::test[time.json / validation of time strings / an invalid time string] XPASS [ 67%] tests/json_schema/test_draft07.py::test[time.json / validation of time strings / only RFC3339 not all of ISO 8601 are valid] XPASS [ 67%] tests/json_schema/test_draft07.py::test[uri-reference.json / validation of URI References / a valid URI] PASSED [ 67%] tests/json_schema/test_draft07.py::test[uri-reference.json / validation of URI References / a valid protocol-relative URI Reference] PASSED [ 67%] tests/json_schema/test_draft07.py::test[uri-reference.json / validation of URI References / a valid relative URI Reference] PASSED [ 68%] tests/json_schema/test_draft07.py::test[uri-reference.json / validation of URI References / an invalid URI Reference] PASSED [ 68%] tests/json_schema/test_draft07.py::test[uri-reference.json / validation of URI References / a valid URI Reference] PASSED [ 68%] tests/json_schema/test_draft07.py::test[uri-reference.json / validation of URI References / a valid URI fragment] PASSED [ 68%] tests/json_schema/test_draft07.py::test[uri-reference.json / validation of URI References / an invalid URI fragment] PASSED [ 68%] tests/json_schema/test_draft07.py::test[uri-template.json / format: uri-template / a valid uri-template] PASSED [ 68%] tests/json_schema/test_draft07.py::test[uri-template.json / format: uri-template / an invalid uri-template] PASSED [ 68%] tests/json_schema/test_draft07.py::test[uri-template.json / format: uri-template / a valid uri-template without variables] PASSED [ 68%] tests/json_schema/test_draft07.py::test[uri-template.json / format: uri-template / a valid relative uri-template] PASSED [ 68%] tests/json_schema/test_draft07.py::test[uri.json / validation of URIs / a valid URL with anchor tag] PASSED [ 68%] tests/json_schema/test_draft07.py::test[uri.json / validation of URIs / a valid URL with anchor tag and parantheses] PASSED [ 68%] tests/json_schema/test_draft07.py::test[uri.json / validation of URIs / a valid URL with URL-encoded stuff] PASSED [ 68%] tests/json_schema/test_draft07.py::test[uri.json / validation of URIs / a valid puny-coded URL ] PASSED [ 68%] tests/json_schema/test_draft07.py::test[uri.json / validation of URIs / a valid URL with many special characters] PASSED [ 68%] tests/json_schema/test_draft07.py::test[uri.json / validation of URIs / a valid URL based on IPv4] PASSED [ 68%] tests/json_schema/test_draft07.py::test[uri.json / validation of URIs / a valid URL with ftp scheme] PASSED [ 68%] tests/json_schema/test_draft07.py::test[uri.json / validation of URIs / a valid URL for a simple text file] PASSED [ 68%] tests/json_schema/test_draft07.py::test[uri.json / validation of URIs / a valid URL ] PASSED [ 68%] tests/json_schema/test_draft07.py::test[uri.json / validation of URIs / a valid mailto URI] PASSED [ 68%] tests/json_schema/test_draft07.py::test[uri.json / validation of URIs / a valid newsgroup URI] PASSED [ 68%] tests/json_schema/test_draft07.py::test[uri.json / validation of URIs / a valid tel URI] PASSED [ 68%] tests/json_schema/test_draft07.py::test[uri.json / validation of URIs / a valid URN] PASSED [ 69%] tests/json_schema/test_draft07.py::test[uri.json / validation of URIs / an invalid protocol-relative URI Reference] PASSED [ 69%] tests/json_schema/test_draft07.py::test[uri.json / validation of URIs / an invalid relative URI Reference] PASSED [ 69%] tests/json_schema/test_draft07.py::test[uri.json / validation of URIs / an invalid URI] PASSED [ 69%] tests/json_schema/test_draft07.py::test[uri.json / validation of URIs / an invalid URI though valid URI reference] PASSED [ 69%] tests/json_schema/test_draft07.py::test[uri.json / validation of URIs / an invalid URI with spaces] PASSED [ 69%] tests/json_schema/test_draft07.py::test[uri.json / validation of URIs / an invalid URI with spaces and missing scheme] PASSED [ 69%] tests/json_schema/test_draft07.py::test[zeroTerminatedFloats.json / some languages do not distinguish between different types of numeric value / a float without fractional part is an integer] PASSED [ 69%] tests/json_schema/test_draft07.py::test[pattern.json / pattern validation / a matching pattern is valid] PASSED [ 69%] tests/json_schema/test_draft07.py::test[pattern.json / pattern validation / a non-matching pattern is invalid] PASSED [ 69%] tests/json_schema/test_draft07.py::test[pattern.json / pattern validation / ignores non-strings] PASSED [ 69%] tests/json_schema/test_draft07.py::test[pattern.json / pattern is not anchored / matches a substring] PASSED [ 69%] tests/json_schema/test_draft07.py::test[patternProperties.json / patternProperties validates properties matching a regex / a single valid match is valid] PASSED [ 69%] tests/json_schema/test_draft07.py::test[patternProperties.json / patternProperties validates properties matching a regex / multiple valid matches is valid] PASSED [ 69%] tests/json_schema/test_draft07.py::test[patternProperties.json / patternProperties validates properties matching a regex / a single invalid match is invalid] PASSED [ 69%] tests/json_schema/test_draft07.py::test[patternProperties.json / patternProperties validates properties matching a regex / multiple invalid matches is invalid] PASSED [ 69%] tests/json_schema/test_draft07.py::test[patternProperties.json / patternProperties validates properties matching a regex / ignores arrays] PASSED [ 69%] tests/json_schema/test_draft07.py::test[patternProperties.json / patternProperties validates properties matching a regex / ignores strings] PASSED [ 69%] tests/json_schema/test_draft07.py::test[patternProperties.json / patternProperties validates properties matching a regex / ignores other non-objects] PASSED [ 69%] tests/json_schema/test_draft07.py::test[patternProperties.json / multiple simultaneous patternProperties are validated / a single valid match is valid] PASSED [ 69%] tests/json_schema/test_draft07.py::test[patternProperties.json / multiple simultaneous patternProperties are validated / a simultaneous match is valid] PASSED [ 69%] tests/json_schema/test_draft07.py::test[patternProperties.json / multiple simultaneous patternProperties are validated / multiple matches is valid] PASSED [ 70%] tests/json_schema/test_draft07.py::test[patternProperties.json / multiple simultaneous patternProperties are validated / an invalid due to one is invalid] PASSED [ 70%] tests/json_schema/test_draft07.py::test[patternProperties.json / multiple simultaneous patternProperties are validated / an invalid due to the other is invalid] PASSED [ 70%] tests/json_schema/test_draft07.py::test[patternProperties.json / multiple simultaneous patternProperties are validated / an invalid due to both is invalid] PASSED [ 70%] tests/json_schema/test_draft07.py::test[patternProperties.json / regexes are not anchored by default and are case sensitive / non recognized members are ignored] PASSED [ 70%] tests/json_schema/test_draft07.py::test[patternProperties.json / regexes are not anchored by default and are case sensitive / recognized members are accounted for] PASSED [ 70%] tests/json_schema/test_draft07.py::test[patternProperties.json / regexes are not anchored by default and are case sensitive / regexes are case sensitive] PASSED [ 70%] tests/json_schema/test_draft07.py::test[patternProperties.json / regexes are not anchored by default and are case sensitive / regexes are case sensitive, 2] PASSED [ 70%] tests/json_schema/test_draft07.py::test[patternProperties.json / patternProperties with boolean schemas / object with property matching schema true is valid] PASSED [ 70%] tests/json_schema/test_draft07.py::test[patternProperties.json / patternProperties with boolean schemas / object with property matching schema false is invalid] PASSED [ 70%] tests/json_schema/test_draft07.py::test[patternProperties.json / patternProperties with boolean schemas / object with both properties is invalid] PASSED [ 70%] tests/json_schema/test_draft07.py::test[patternProperties.json / patternProperties with boolean schemas / empty object is valid] PASSED [ 70%] tests/json_schema/test_draft07.py::test[properties.json / object properties validation / both properties present and valid is valid] PASSED [ 70%] tests/json_schema/test_draft07.py::test[properties.json / object properties validation / one property invalid is invalid] PASSED [ 70%] tests/json_schema/test_draft07.py::test[properties.json / object properties validation / both properties invalid is invalid] PASSED [ 70%] tests/json_schema/test_draft07.py::test[properties.json / object properties validation / doesn't invalidate other properties] PASSED [ 70%] tests/json_schema/test_draft07.py::test[properties.json / object properties validation / ignores arrays] PASSED [ 70%] tests/json_schema/test_draft07.py::test[properties.json / object properties validation / ignores other non-objects] PASSED [ 70%] tests/json_schema/test_draft07.py::test[properties.json / properties, patternProperties, additionalProperties interaction / property validates property] PASSED [ 70%] tests/json_schema/test_draft07.py::test[properties.json / properties, patternProperties, additionalProperties interaction / property invalidates property] PASSED [ 70%] tests/json_schema/test_draft07.py::test[properties.json / properties, patternProperties, additionalProperties interaction / patternProperty invalidates property] PASSED [ 70%] tests/json_schema/test_draft07.py::test[properties.json / properties, patternProperties, additionalProperties interaction / patternProperty validates nonproperty] PASSED [ 71%] tests/json_schema/test_draft07.py::test[properties.json / properties, patternProperties, additionalProperties interaction / patternProperty invalidates nonproperty] PASSED [ 71%] tests/json_schema/test_draft07.py::test[properties.json / properties, patternProperties, additionalProperties interaction / additionalProperty ignores property] PASSED [ 71%] tests/json_schema/test_draft07.py::test[properties.json / properties, patternProperties, additionalProperties interaction / additionalProperty validates others] PASSED [ 71%] tests/json_schema/test_draft07.py::test[properties.json / properties, patternProperties, additionalProperties interaction / additionalProperty invalidates others] PASSED [ 71%] tests/json_schema/test_draft07.py::test[properties.json / properties with boolean schema / no property present is valid] PASSED [ 71%] tests/json_schema/test_draft07.py::test[properties.json / properties with boolean schema / only 'true' property present is valid] PASSED [ 71%] tests/json_schema/test_draft07.py::test[properties.json / properties with boolean schema / only 'false' property present is invalid] PASSED [ 71%] tests/json_schema/test_draft07.py::test[properties.json / properties with boolean schema / both properties present is invalid] PASSED [ 71%] tests/json_schema/test_draft07.py::test[properties.json / properties with escaped characters / object with all numbers is valid] PASSED [ 71%] tests/json_schema/test_draft07.py::test[properties.json / properties with escaped characters / object with strings is invalid] PASSED [ 71%] tests/json_schema/test_draft07.py::test[propertyNames.json / propertyNames validation / all property names valid] PASSED [ 71%] tests/json_schema/test_draft07.py::test[propertyNames.json / propertyNames validation / some property names invalid] PASSED [ 71%] tests/json_schema/test_draft07.py::test[propertyNames.json / propertyNames validation / object without properties is valid] PASSED [ 71%] tests/json_schema/test_draft07.py::test[propertyNames.json / propertyNames validation / ignores arrays] PASSED [ 71%] tests/json_schema/test_draft07.py::test[propertyNames.json / propertyNames validation / ignores strings] PASSED [ 71%] tests/json_schema/test_draft07.py::test[propertyNames.json / propertyNames validation / ignores other non-objects] PASSED [ 71%] tests/json_schema/test_draft07.py::test[propertyNames.json / propertyNames with boolean schema true / object with any properties is valid] PASSED [ 71%] tests/json_schema/test_draft07.py::test[propertyNames.json / propertyNames with boolean schema true / empty object is valid] PASSED [ 71%] tests/json_schema/test_draft07.py::test[propertyNames.json / propertyNames with boolean schema false / object with any properties is invalid] PASSED [ 71%] tests/json_schema/test_draft07.py::test[propertyNames.json / propertyNames with boolean schema false / empty object is valid] PASSED [ 72%] tests/json_schema/test_draft07.py::test[ref.json / root pointer ref / match] XPASS [ 72%] tests/json_schema/test_draft07.py::test[ref.json / root pointer ref / recursive match] XPASS [ 72%] tests/json_schema/test_draft07.py::test[ref.json / root pointer ref / mismatch] XPASS [ 72%] tests/json_schema/test_draft07.py::test[ref.json / root pointer ref / recursive mismatch] XPASS [ 72%] tests/json_schema/test_draft07.py::test[ref.json / relative pointer ref to object / match] XPASS [ 72%] tests/json_schema/test_draft07.py::test[ref.json / relative pointer ref to object / mismatch] XPASS [ 72%] tests/json_schema/test_draft07.py::test[ref.json / relative pointer ref to array / match array] XPASS [ 72%] tests/json_schema/test_draft07.py::test[ref.json / relative pointer ref to array / mismatch array] XPASS [ 72%] tests/json_schema/test_draft07.py::test[ref.json / escaped pointer ref / slash invalid] XPASS [ 72%] tests/json_schema/test_draft07.py::test[ref.json / escaped pointer ref / tilda invalid] XPASS [ 72%] tests/json_schema/test_draft07.py::test[ref.json / escaped pointer ref / percent invalid] XPASS [ 72%] tests/json_schema/test_draft07.py::test[ref.json / escaped pointer ref / slash valid] XPASS [ 72%] tests/json_schema/test_draft07.py::test[ref.json / escaped pointer ref / tilda valid] XPASS [ 72%] tests/json_schema/test_draft07.py::test[ref.json / escaped pointer ref / percent valid] XPASS [ 72%] tests/json_schema/test_draft07.py::test[ref.json / nested refs / nested ref valid] XPASS [ 72%] tests/json_schema/test_draft07.py::test[ref.json / nested refs / nested ref invalid] XPASS [ 72%] tests/json_schema/test_draft07.py::test[ref.json / ref overrides any sibling keywords / ref valid] XPASS [ 72%] tests/json_schema/test_draft07.py::test[ref.json / ref overrides any sibling keywords / ref valid, maxItems ignored] XPASS [ 72%] tests/json_schema/test_draft07.py::test[ref.json / ref overrides any sibling keywords / ref invalid] XPASS [ 72%] tests/json_schema/test_draft07.py::test[ref.json / remote ref, containing refs itself / remote ref valid] XFAIL [ 72%] tests/json_schema/test_draft07.py::test[ref.json / remote ref, containing refs itself / remote ref invalid] XFAIL [ 73%] tests/json_schema/test_draft07.py::test[ref.json / property named $ref that is not a reference / property named $ref valid] XPASS [ 73%] tests/json_schema/test_draft07.py::test[ref.json / property named $ref that is not a reference / property named $ref invalid] XPASS [ 73%] tests/json_schema/test_draft07.py::test[ref.json / $ref to boolean schema true / any value is valid] XPASS [ 73%] tests/json_schema/test_draft07.py::test[ref.json / $ref to boolean schema false / any value is invalid] XPASS [ 73%] tests/json_schema/test_draft07.py::test[ref.json / Recursive references between schemas / valid tree] XPASS [ 73%] tests/json_schema/test_draft07.py::test[ref.json / Recursive references between schemas / invalid tree] XPASS [ 73%] tests/json_schema/test_draft07.py::test[ref.json / refs with quote / object with numbers is valid] XPASS [ 73%] tests/json_schema/test_draft07.py::test[ref.json / refs with quote / object with strings is invalid] XPASS [ 73%] tests/json_schema/test_draft07.py::test[refRemote.json / remote ref / remote ref valid] XPASS [ 73%] tests/json_schema/test_draft07.py::test[refRemote.json / remote ref / remote ref invalid] XPASS [ 73%] tests/json_schema/test_draft07.py::test[refRemote.json / fragment within remote ref / remote fragment valid] XPASS [ 73%] tests/json_schema/test_draft07.py::test[refRemote.json / fragment within remote ref / remote fragment invalid] XPASS [ 73%] tests/json_schema/test_draft07.py::test[refRemote.json / ref within remote ref / ref within ref valid] XPASS [ 73%] tests/json_schema/test_draft07.py::test[refRemote.json / ref within remote ref / ref within ref invalid] XPASS [ 73%] tests/json_schema/test_draft07.py::test[refRemote.json / base URI change / base URI change ref valid] XPASS [ 73%] tests/json_schema/test_draft07.py::test[refRemote.json / base URI change / base URI change ref invalid] XPASS [ 73%] tests/json_schema/test_draft07.py::test[refRemote.json / base URI change - change folder / number is valid] XPASS [ 73%] tests/json_schema/test_draft07.py::test[refRemote.json / base URI change - change folder / string is invalid] XPASS [ 73%] tests/json_schema/test_draft07.py::test[refRemote.json / base URI change - change folder in subschema / number is valid] XPASS [ 73%] tests/json_schema/test_draft07.py::test[refRemote.json / base URI change - change folder in subschema / string is invalid] XPASS [ 73%] tests/json_schema/test_draft07.py::test[refRemote.json / root ref in remote ref / string is valid] XPASS [ 74%] tests/json_schema/test_draft07.py::test[refRemote.json / root ref in remote ref / null is valid] XPASS [ 74%] tests/json_schema/test_draft07.py::test[refRemote.json / root ref in remote ref / object is invalid] XPASS [ 74%] tests/json_schema/test_draft07.py::test[required.json / required validation / present required property is valid] PASSED [ 74%] tests/json_schema/test_draft07.py::test[required.json / required validation / non-present required property is invalid] PASSED [ 74%] tests/json_schema/test_draft07.py::test[required.json / required validation / ignores arrays] PASSED [ 74%] tests/json_schema/test_draft07.py::test[required.json / required validation / ignores strings] PASSED [ 74%] tests/json_schema/test_draft07.py::test[required.json / required validation / ignores other non-objects] PASSED [ 74%] tests/json_schema/test_draft07.py::test[required.json / required default validation / not required by default] PASSED [ 74%] tests/json_schema/test_draft07.py::test[required.json / required with empty array / property not required] PASSED [ 74%] tests/json_schema/test_draft07.py::test[required.json / required with escaped characters / object with all properties present is valid] PASSED [ 74%] tests/json_schema/test_draft07.py::test[required.json / required with escaped characters / object with some properties missing is invalid] PASSED [ 74%] tests/json_schema/test_draft07.py::test[type.json / integer type matches integers / an integer is an integer] PASSED [ 74%] tests/json_schema/test_draft07.py::test[type.json / integer type matches integers / a float is not an integer] PASSED [ 74%] tests/json_schema/test_draft07.py::test[type.json / integer type matches integers / a string is not an integer] PASSED [ 74%] tests/json_schema/test_draft07.py::test[type.json / integer type matches integers / a string is still not an integer, even if it looks like one] PASSED [ 74%] tests/json_schema/test_draft07.py::test[type.json / integer type matches integers / an object is not an integer] PASSED [ 74%] tests/json_schema/test_draft07.py::test[type.json / integer type matches integers / an array is not an integer] PASSED [ 74%] tests/json_schema/test_draft07.py::test[type.json / integer type matches integers / a boolean is not an integer] PASSED [ 74%] tests/json_schema/test_draft07.py::test[type.json / integer type matches integers / null is not an integer] PASSED [ 74%] tests/json_schema/test_draft07.py::test[type.json / number type matches numbers / an integer is a number] PASSED [ 74%] tests/json_schema/test_draft07.py::test[type.json / number type matches numbers / a float is a number] PASSED [ 75%] tests/json_schema/test_draft07.py::test[type.json / number type matches numbers / a string is not a number] PASSED [ 75%] tests/json_schema/test_draft07.py::test[type.json / number type matches numbers / a string is still not a number, even if it looks like one] PASSED [ 75%] tests/json_schema/test_draft07.py::test[type.json / number type matches numbers / an object is not a number] PASSED [ 75%] tests/json_schema/test_draft07.py::test[type.json / number type matches numbers / an array is not a number] PASSED [ 75%] tests/json_schema/test_draft07.py::test[type.json / number type matches numbers / a boolean is not a number] PASSED [ 75%] tests/json_schema/test_draft07.py::test[type.json / number type matches numbers / null is not a number] PASSED [ 75%] tests/json_schema/test_draft07.py::test[type.json / string type matches strings / 1 is not a string] PASSED [ 75%] tests/json_schema/test_draft07.py::test[type.json / string type matches strings / a float is not a string] PASSED [ 75%] tests/json_schema/test_draft07.py::test[type.json / string type matches strings / a string is a string] PASSED [ 75%] tests/json_schema/test_draft07.py::test[type.json / string type matches strings / a string is still a string, even if it looks like a number] PASSED [ 75%] tests/json_schema/test_draft07.py::test[type.json / string type matches strings / an empty string is still a string] PASSED [ 75%] tests/json_schema/test_draft07.py::test[type.json / string type matches strings / an object is not a string] PASSED [ 75%] tests/json_schema/test_draft07.py::test[type.json / string type matches strings / an array is not a string] PASSED [ 75%] tests/json_schema/test_draft07.py::test[type.json / string type matches strings / a boolean is not a string] PASSED [ 75%] tests/json_schema/test_draft07.py::test[type.json / string type matches strings / null is not a string] PASSED [ 75%] tests/json_schema/test_draft07.py::test[type.json / object type matches objects / an integer is not an object] PASSED [ 75%] tests/json_schema/test_draft07.py::test[type.json / object type matches objects / a float is not an object] PASSED [ 75%] tests/json_schema/test_draft07.py::test[type.json / object type matches objects / a string is not an object] PASSED [ 75%] tests/json_schema/test_draft07.py::test[type.json / object type matches objects / an object is an object] PASSED [ 75%] tests/json_schema/test_draft07.py::test[type.json / object type matches objects / an array is not an object] PASSED [ 75%] tests/json_schema/test_draft07.py::test[type.json / object type matches objects / a boolean is not an object] PASSED [ 76%] tests/json_schema/test_draft07.py::test[type.json / object type matches objects / null is not an object] PASSED [ 76%] tests/json_schema/test_draft07.py::test[type.json / array type matches arrays / an integer is not an array] PASSED [ 76%] tests/json_schema/test_draft07.py::test[type.json / array type matches arrays / a float is not an array] PASSED [ 76%] tests/json_schema/test_draft07.py::test[type.json / array type matches arrays / a string is not an array] PASSED [ 76%] tests/json_schema/test_draft07.py::test[type.json / array type matches arrays / an object is not an array] PASSED [ 76%] tests/json_schema/test_draft07.py::test[type.json / array type matches arrays / an array is an array] PASSED [ 76%] tests/json_schema/test_draft07.py::test[type.json / array type matches arrays / a boolean is not an array] PASSED [ 76%] tests/json_schema/test_draft07.py::test[type.json / array type matches arrays / null is not an array] PASSED [ 76%] tests/json_schema/test_draft07.py::test[type.json / boolean type matches booleans / an integer is not a boolean] PASSED [ 76%] tests/json_schema/test_draft07.py::test[type.json / boolean type matches booleans / zero is not a boolean] PASSED [ 76%] tests/json_schema/test_draft07.py::test[type.json / boolean type matches booleans / a float is not a boolean] PASSED [ 76%] tests/json_schema/test_draft07.py::test[type.json / boolean type matches booleans / a string is not a boolean] PASSED [ 76%] tests/json_schema/test_draft07.py::test[type.json / boolean type matches booleans / an empty string is not a boolean] PASSED [ 76%] tests/json_schema/test_draft07.py::test[type.json / boolean type matches booleans / an object is not a boolean] PASSED [ 76%] tests/json_schema/test_draft07.py::test[type.json / boolean type matches booleans / an array is not a boolean] PASSED [ 76%] tests/json_schema/test_draft07.py::test[type.json / boolean type matches booleans / true is a boolean] PASSED [ 76%] tests/json_schema/test_draft07.py::test[type.json / boolean type matches booleans / false is a boolean] PASSED [ 76%] tests/json_schema/test_draft07.py::test[type.json / boolean type matches booleans / null is not a boolean] PASSED [ 76%] tests/json_schema/test_draft07.py::test[type.json / null type matches only the null object / an integer is not null] PASSED [ 76%] tests/json_schema/test_draft07.py::test[type.json / null type matches only the null object / a float is not null] PASSED [ 77%] tests/json_schema/test_draft07.py::test[type.json / null type matches only the null object / zero is not null] PASSED [ 77%] tests/json_schema/test_draft07.py::test[type.json / null type matches only the null object / a string is not null] PASSED [ 77%] tests/json_schema/test_draft07.py::test[type.json / null type matches only the null object / an empty string is not null] PASSED [ 77%] tests/json_schema/test_draft07.py::test[type.json / null type matches only the null object / an object is not null] PASSED [ 77%] tests/json_schema/test_draft07.py::test[type.json / null type matches only the null object / an array is not null] PASSED [ 77%] tests/json_schema/test_draft07.py::test[type.json / null type matches only the null object / true is not null] PASSED [ 77%] tests/json_schema/test_draft07.py::test[type.json / null type matches only the null object / false is not null] PASSED [ 77%] tests/json_schema/test_draft07.py::test[type.json / null type matches only the null object / null is null] PASSED [ 77%] tests/json_schema/test_draft07.py::test[type.json / multiple types can be specified in an array / an integer is valid] PASSED [ 77%] tests/json_schema/test_draft07.py::test[type.json / multiple types can be specified in an array / a string is valid] PASSED [ 77%] tests/json_schema/test_draft07.py::test[type.json / multiple types can be specified in an array / a float is invalid] PASSED [ 77%] tests/json_schema/test_draft07.py::test[type.json / multiple types can be specified in an array / an object is invalid] PASSED [ 77%] tests/json_schema/test_draft07.py::test[type.json / multiple types can be specified in an array / an array is invalid] PASSED [ 77%] tests/json_schema/test_draft07.py::test[type.json / multiple types can be specified in an array / a boolean is invalid] PASSED [ 77%] tests/json_schema/test_draft07.py::test[type.json / multiple types can be specified in an array / null is invalid] PASSED [ 77%] tests/json_schema/test_draft07.py::test[type.json / type as array with one item / string is valid] PASSED [ 77%] tests/json_schema/test_draft07.py::test[type.json / type as array with one item / number is invalid] PASSED [ 77%] tests/json_schema/test_draft07.py::test[type.json / type: array or object / array is valid] PASSED [ 77%] tests/json_schema/test_draft07.py::test[type.json / type: array or object / object is valid] PASSED [ 77%] tests/json_schema/test_draft07.py::test[type.json / type: array or object / number is invalid] PASSED [ 77%] tests/json_schema/test_draft07.py::test[type.json / type: array or object / string is invalid] PASSED [ 78%] tests/json_schema/test_draft07.py::test[type.json / type: array or object / null is invalid] PASSED [ 78%] tests/json_schema/test_draft07.py::test[type.json / type: array, object or null / array is valid] PASSED [ 78%] tests/json_schema/test_draft07.py::test[type.json / type: array, object or null / object is valid] PASSED [ 78%] tests/json_schema/test_draft07.py::test[type.json / type: array, object or null / null is valid] PASSED [ 78%] tests/json_schema/test_draft07.py::test[type.json / type: array, object or null / number is invalid] PASSED [ 78%] tests/json_schema/test_draft07.py::test[type.json / type: array, object or null / string is invalid] PASSED [ 78%] tests/json_schema/test_draft07.py::test[uniqueItems.json / uniqueItems validation / unique array of integers is valid] PASSED [ 78%] tests/json_schema/test_draft07.py::test[uniqueItems.json / uniqueItems validation / non-unique array of integers is invalid] PASSED [ 78%] tests/json_schema/test_draft07.py::test[uniqueItems.json / uniqueItems validation / numbers are unique if mathematically unequal] PASSED [ 78%] tests/json_schema/test_draft07.py::test[uniqueItems.json / uniqueItems validation / unique array of objects is valid] PASSED [ 78%] tests/json_schema/test_draft07.py::test[uniqueItems.json / uniqueItems validation / non-unique array of objects is invalid] PASSED [ 78%] tests/json_schema/test_draft07.py::test[uniqueItems.json / uniqueItems validation / unique array of nested objects is valid] PASSED [ 78%] tests/json_schema/test_draft07.py::test[uniqueItems.json / uniqueItems validation / non-unique array of nested objects is invalid] PASSED [ 78%] tests/json_schema/test_draft07.py::test[uniqueItems.json / uniqueItems validation / unique array of arrays is valid] PASSED [ 78%] tests/json_schema/test_draft07.py::test[uniqueItems.json / uniqueItems validation / non-unique array of arrays is invalid] PASSED [ 78%] tests/json_schema/test_draft07.py::test[uniqueItems.json / uniqueItems validation / 1 and true are unique] PASSED [ 78%] tests/json_schema/test_draft07.py::test[uniqueItems.json / uniqueItems validation / 0 and false are unique] PASSED [ 78%] tests/json_schema/test_draft07.py::test[uniqueItems.json / uniqueItems validation / unique heterogeneous types are valid] PASSED [ 78%] tests/json_schema/test_draft07.py::test[uniqueItems.json / uniqueItems validation / non-unique heterogeneous types are invalid] PASSED [ 78%] tests/json_schema/test_draft2019.py::test[schema_version0-schema0-data0-is_valid0] SKIPPED [ 78%] tests/test_array.py::test_array[0-expected0] PASSED [ 79%] tests/test_array.py::test_array[None-expected1] PASSED [ 79%] tests/test_array.py::test_array[True-expected2] PASSED [ 79%] tests/test_array.py::test_array[False-expected3] PASSED [ 79%] tests/test_array.py::test_array[abc-expected4] PASSED [ 79%] tests/test_array.py::test_array[value5-expected5] PASSED [ 79%] tests/test_array.py::test_array[value6-expected6] PASSED [ 79%] tests/test_array.py::test_array[value7-expected7] PASSED [ 79%] tests/test_array.py::test_max_items[value0-expected0] PASSED [ 79%] tests/test_array.py::test_max_items[value1-expected1] PASSED [ 79%] tests/test_array.py::test_max_items[value2-expected2] PASSED [ 79%] tests/test_array.py::test_max_items[value3-expected3] PASSED [ 79%] tests/test_array.py::test_min_items[value0-expected0] PASSED [ 79%] tests/test_array.py::test_min_items[value1-expected1] PASSED [ 79%] tests/test_array.py::test_min_items[value2-expected2] PASSED [ 79%] tests/test_array.py::test_min_items[value3-expected3] PASSED [ 79%] tests/test_array.py::test_unique_items[value0-expected0] PASSED [ 79%] tests/test_array.py::test_unique_items[value1-expected1] PASSED [ 79%] tests/test_array.py::test_unique_items[value2-expected2] PASSED [ 79%] tests/test_array.py::test_unique_items[value3-expected3] PASSED [ 79%] tests/test_array.py::test_unique_items[value4-expected4] PASSED [ 79%] tests/test_array.py::test_unique_items[value5-expected5] PASSED [ 80%] tests/test_array.py::test_unique_items[value6-expected6] PASSED [ 80%] tests/test_array.py::test_unique_items[value7-expected7] PASSED [ 80%] tests/test_array.py::test_unique_items[value8-expected8] PASSED [ 80%] tests/test_array.py::test_unique_items[value9-expected9] PASSED [ 80%] tests/test_array.py::test_unique_items[value10-expected10] PASSED [ 80%] tests/test_array.py::test_unique_items[value11-expected11] PASSED [ 80%] tests/test_array.py::test_unique_items[value12-expected12] PASSED [ 80%] tests/test_array.py::test_unique_items[value13-expected13] PASSED [ 80%] tests/test_array.py::test_unique_items[value14-expected14] PASSED [ 80%] tests/test_array.py::test_unique_items[value15-expected15] PASSED [ 80%] tests/test_array.py::test_unique_items[value16-expected16] PASSED [ 80%] tests/test_array.py::test_unique_items[value17-expected17] PASSED [ 80%] tests/test_array.py::test_not_unique_items PASSED [ 80%] tests/test_array.py::test_min_and_unique_items PASSED [ 80%] tests/test_array.py::test_items_all_same[value0-expected0] PASSED [ 80%] tests/test_array.py::test_items_all_same[value1-expected1] PASSED [ 80%] tests/test_array.py::test_items_all_same[value2-expected2] PASSED [ 80%] tests/test_array.py::test_different_items[value0-expected0] PASSED [ 80%] tests/test_array.py::test_different_items[value1-expected1] PASSED [ 80%] tests/test_array.py::test_different_items[value2-expected2] PASSED [ 81%] tests/test_array.py::test_different_items[value3-expected3] PASSED [ 81%] tests/test_array.py::test_different_items[value4-expected4] PASSED [ 81%] tests/test_array.py::test_different_items[value5-expected5] PASSED [ 81%] tests/test_array.py::test_different_items_with_additional_items[value0-expected0] PASSED [ 81%] tests/test_array.py::test_different_items_with_additional_items[value1-expected1] PASSED [ 81%] tests/test_array.py::test_different_items_with_additional_items[value2-expected2] PASSED [ 81%] tests/test_array.py::test_different_items_with_additional_items[value3-expected3] PASSED [ 81%] tests/test_array.py::test_different_items_with_additional_items[value4-expected4] PASSED [ 81%] tests/test_array.py::test_different_items_with_additional_items[value5-expected5] PASSED [ 81%] tests/test_array.py::test_different_items_without_additional_items[value0-expected0] PASSED [ 81%] tests/test_array.py::test_different_items_without_additional_items[value1-expected1] PASSED [ 81%] tests/test_array.py::test_different_items_without_additional_items[value2-expected2] PASSED [ 81%] tests/test_array.py::test_different_items_without_additional_items[value3-expected3] PASSED [ 81%] tests/test_array.py::test_different_items_without_additional_items[value4-expected4] PASSED [ 81%] tests/test_array.py::test_different_items_without_additional_items[value5-expected5] PASSED [ 81%] tests/test_array.py::test_tuples_as_arrays[value0-expected0] PASSED [ 81%] tests/test_array.py::test_tuples_as_arrays[value1-expected1] PASSED [ 81%] tests/test_array.py::test_tuples_as_arrays[value2-expected2] PASSED [ 81%] tests/test_array.py::test_tuples_as_arrays[value3-expected3] PASSED [ 81%] tests/test_array.py::test_mixed_arrays[value0-expected0] PASSED [ 81%] tests/test_array.py::test_mixed_arrays[value1-expected1] PASSED [ 82%] tests/test_array.py::test_issue_114 PASSED [ 82%] tests/test_boolean.py::test_boolean[0-expected0] PASSED [ 82%] tests/test_boolean.py::test_boolean[None-expected1] PASSED [ 82%] tests/test_boolean.py::test_boolean[True-True] PASSED [ 82%] tests/test_boolean.py::test_boolean[False-False] PASSED [ 82%] tests/test_boolean.py::test_boolean[abc-expected4] PASSED [ 82%] tests/test_boolean.py::test_boolean[value5-expected5] PASSED [ 82%] tests/test_boolean.py::test_boolean[value6-expected6] PASSED [ 82%] tests/test_boolean_schema.py::test_boolean_schema_true_in_then[1-1] PASSED [ 82%] tests/test_boolean_schema.py::test_boolean_schema_true_in_then[2-2] PASSED [ 82%] tests/test_boolean_schema.py::test_boolean_schema_false_in_then[1-expected0] PASSED [ 82%] tests/test_boolean_schema.py::test_boolean_schema_false_in_then[2-2] PASSED [ 82%] tests/test_boolean_schema.py::test_boolean_schema_true_in_else[1-1] PASSED [ 82%] tests/test_boolean_schema.py::test_boolean_schema_true_in_else[2-2] PASSED [ 82%] tests/test_boolean_schema.py::test_boolean_schema_false_in_else[1-1] PASSED [ 82%] tests/test_boolean_schema.py::test_boolean_schema_false_in_else[2-expected1] PASSED [ 82%] tests/test_common.py::test_enum[1-1] PASSED [ 82%] tests/test_common.py::test_enum[2-2] PASSED [ 82%] tests/test_common.py::test_enum[12-expected2] PASSED [ 82%] tests/test_common.py::test_enum[a-a] PASSED [ 82%] tests/test_common.py::test_enum[aa-expected4] PASSED [ 83%] tests/test_common.py::test_types[0-0] PASSED [ 83%] tests/test_common.py::test_types[None-expected1] PASSED [ 83%] tests/test_common.py::test_types[True-expected2] PASSED [ 83%] tests/test_common.py::test_types[abc-abc] PASSED [ 83%] tests/test_common.py::test_types[value4-expected4] PASSED [ 83%] tests/test_common.py::test_types[value5-expected5] PASSED [ 83%] tests/test_common.py::test_all_of[qwert-qwert] PASSED [ 83%] tests/test_common.py::test_all_of[qwertz-expected1] PASSED [ 83%] tests/test_common.py::test_any_of[0-0] PASSED [ 83%] tests/test_common.py::test_any_of[None-expected1] PASSED [ 83%] tests/test_common.py::test_any_of[True-expected2] PASSED [ 83%] tests/test_common.py::test_any_of[abc-abc] PASSED [ 83%] tests/test_common.py::test_any_of[value4-expected4] PASSED [ 83%] tests/test_common.py::test_any_of[value5-expected5] PASSED [ 83%] tests/test_common.py::test_one_of[0-expected0] PASSED [ 83%] tests/test_common.py::test_one_of[2-expected1] PASSED [ 83%] tests/test_common.py::test_one_of[9-9] PASSED [ 83%] tests/test_common.py::test_one_of[10-10] PASSED [ 83%] tests/test_common.py::test_one_of[15-expected4] PASSED [ 83%] tests/test_common.py::test_one_of_factorized[0-expected0] PASSED [ 83%] tests/test_common.py::test_one_of_factorized[2-expected1] PASSED [ 84%] tests/test_common.py::test_one_of_factorized[9-9] PASSED [ 84%] tests/test_common.py::test_one_of_factorized[10-10] PASSED [ 84%] tests/test_common.py::test_one_of_factorized[15-expected4] PASSED [ 84%] tests/test_common.py::test_not[0-expected0] PASSED [ 84%] tests/test_common.py::test_not[True-True] PASSED [ 84%] tests/test_common.py::test_not[abc-abc] PASSED [ 84%] tests/test_common.py::test_not[value3-expected3] PASSED [ 84%] tests/test_common.py::test_not[value4-expected4] PASSED [ 84%] tests/test_compile_to_code.py::test_compile_to_code PASSED [ 84%] tests/test_compile_to_code.py::test_compile_to_code_ipv6_regex PASSED [ 84%] tests/test_compile_to_code.py::test_compile_complex_one_of_all_of PASSED [ 84%] tests/test_compile_to_code.py::test_compile_to_code_custom_format PASSED [ 84%] tests/test_compile_to_code.py::test_compile_to_code_custom_format_with_refs PASSED [ 84%] tests/test_composition.py::test_composition[oneOf-10] PASSED [ 84%] tests/test_composition.py::test_composition[allOf-15] PASSED [ 84%] tests/test_composition.py::test_composition[anyOf-9] PASSED [ 84%] tests/test_composition.py::test_ref_is_expanded_on_composition_error[oneOf-2] PASSED [ 84%] tests/test_composition.py::test_ref_is_expanded_on_composition_error[anyOf-2] PASSED [ 84%] tests/test_composition.py::test_ref_is_expanded_on_composition_error[allOf-3] PASSED [ 84%] tests/test_composition.py::test_ref_is_expanded_with_resolver[oneOf-2] PASSED [ 84%] tests/test_composition.py::test_ref_is_expanded_with_resolver[anyOf-2] PASSED [ 85%] tests/test_composition.py::test_ref_is_expanded_with_resolver[allOf-3] PASSED [ 85%] tests/test_composition.py::test_ref_in_conditional PASSED [ 85%] tests/test_const.py::test_const[foo-False] PASSED [ 85%] tests/test_const.py::test_const[42-False] PASSED [ 85%] tests/test_const.py::test_const[False-False] PASSED [ 85%] tests/test_const.py::test_const[value3-False] PASSED [ 85%] tests/test_const.py::test_const['"-False0] PASSED [ 85%] tests/test_const.py::test_const[foo-True] PASSED [ 85%] tests/test_const.py::test_const['"-False1] PASSED [ 85%] tests/test_default.py::test_default_in_object[None-expected0] PASSED [ 85%] tests/test_default.py::test_default_in_object[value1-expected1] PASSED [ 85%] tests/test_default.py::test_default_in_object[value2-expected2] PASSED [ 85%] tests/test_default.py::test_default_in_object[value3-expected3] PASSED [ 85%] tests/test_default.py::test_default_in_object[value4-expected4] PASSED [ 85%] tests/test_default.py::test_default_in_array[None-expected0] PASSED [ 85%] tests/test_default.py::test_default_in_array[value1-expected1] PASSED [ 85%] tests/test_default.py::test_default_in_array[value2-expected2] PASSED [ 85%] tests/test_default.py::test_default_in_array[value3-expected3] PASSED [ 85%] tests/test_default.py::test_default_turned_off PASSED [ 85%] tests/test_examples.py::test_validate[conditional] PASSED [ 86%] tests/test_examples.py::test_validate[issue-109-regex-only] PASSED [ 86%] tests/test_examples.py::test_validate[issue-109] PASSED [ 86%] tests/test_examples.py::test_validate[path_with_definition] PASSED [ 86%] tests/test_exceptions.py::test_exception_variable_path[data-expected0] PASSED [ 86%] tests/test_exceptions.py::test_exception_variable_path[data[0]-expected1] PASSED [ 86%] tests/test_exceptions.py::test_exception_variable_path[data.foo-expected2] PASSED [ 86%] tests/test_exceptions.py::test_exception_variable_path[data[1].bar-expected3] PASSED [ 86%] tests/test_exceptions.py::test_exception_variable_path[data.foo[2]-expected4] PASSED [ 86%] tests/test_exceptions.py::test_exception_variable_path[data.foo.bar[1][2]-expected5] PASSED [ 86%] tests/test_exceptions.py::test_exception_variable_path[data[1][2].foo.bar-expected6] PASSED [ 86%] tests/test_exceptions.py::test_exception_rule_definition[None-None-None] PASSED [ 86%] tests/test_exceptions.py::test_exception_rule_definition[definition1-None-None] PASSED [ 86%] tests/test_exceptions.py::test_exception_rule_definition[definition2-None-None] PASSED [ 86%] tests/test_exceptions.py::test_exception_rule_definition[definition3-unique-None] PASSED [ 86%] tests/test_exceptions.py::test_exception_rule_definition[definition4-type-string] PASSED [ 86%] tests/test_exceptions.py::test_exception_rule_definition[None-type-None] PASSED [ 86%] tests/test_format.py::test_datetime[-expected0] PASSED [ 86%] tests/test_format.py::test_datetime[bla-expected1] PASSED [ 86%] tests/test_format.py::test_datetime[2018-02-05T14:17:10.00-expected2] PASSED [ 86%] tests/test_format.py::test_datetime[2018-02-05T14:17:10.00Z\n-expected3] PASSED [ 86%] tests/test_format.py::test_datetime[2018-02-05T14:17:10.00Z-2018-02-05T14:17:10.00Z] PASSED [ 87%] tests/test_format.py::test_datetime[2018-02-05T14:17:10Z-2018-02-05T14:17:10Z] PASSED [ 87%] tests/test_format.py::test_datetime[2020-09-09T01:01:01+0100-2020-09-09T01:01:01+0100] PASSED [ 87%] tests/test_format.py::test_hostname[-expected0] PASSED [ 87%] tests/test_format.py::test_hostname[LDhsjf878&d-expected1] PASSED [ 87%] tests/test_format.py::test_hostname[bla.bla--expected2] PASSED [ 87%] tests/test_format.py::test_hostname[example.example.com--expected3] PASSED [ 87%] tests/test_format.py::test_hostname[example.example.com\n-expected4] PASSED [ 87%] tests/test_format.py::test_hostname[localhost-localhost] PASSED [ 87%] tests/test_format.py::test_hostname[example.com-example.com] PASSED [ 87%] tests/test_format.py::test_hostname[example.de-example.de] PASSED [ 87%] tests/test_format.py::test_hostname[example.fr-example.fr] PASSED [ 87%] tests/test_format.py::test_hostname[example.example.com-example.example.com] PASSED [ 87%] tests/test_format.py::test_date[-expected0] PASSED [ 87%] tests/test_format.py::test_date[bla-expected1] PASSED [ 87%] tests/test_format.py::test_date[2018-2-5-expected2] PASSED [ 87%] tests/test_format.py::test_date[2018-02-05-2018-02-05] PASSED [ 87%] tests/test_format.py::test_date[2018-10-31-2018-10-31] PASSED [ 87%] tests/test_format.py::test_custom_format[-expected0-^[ab]$] PASSED [ 87%] tests/test_format.py::test_custom_format[-expected1-] PASSED [ 87%] tests/test_format.py::test_custom_format[a-a-^[ab]$] PASSED [ 87%] tests/test_format.py::test_custom_format[a-a-] PASSED [ 88%] tests/test_format.py::test_custom_format[c-expected4-^[ab]$] PASSED [ 88%] tests/test_format.py::test_custom_format[c-expected5-] PASSED [ 88%] tests/test_format.py::test_custom_format_override PASSED [ 88%] tests/test_format.py::test_disable_formats PASSED [ 88%] tests/test_integration.py::test_integration[value0-expected0] PASSED [ 88%] tests/test_integration.py::test_integration[value1-expected1] PASSED [ 88%] tests/test_integration.py::test_integration[value2-expected2] PASSED [ 88%] tests/test_integration.py::test_integration[value3-expected3] PASSED [ 88%] tests/test_integration.py::test_integration[value4-expected4] PASSED [ 88%] tests/test_integration.py::test_integration[value5-expected5] PASSED [ 88%] tests/test_integration.py::test_integration[value6-expected6] PASSED [ 88%] tests/test_integration.py::test_integration[value7-expected7] PASSED [ 88%] tests/test_integration.py::test_integration[value8-expected8] PASSED [ 88%] tests/test_integration.py::test_integration[value9-expected9] PASSED [ 88%] tests/test_integration.py::test_integration[value10-expected10] PASSED [ 88%] tests/test_integration.py::test_integration[value11-expected11] PASSED [ 88%] tests/test_integration.py::test_integration[value12-expected12] PASSED [ 88%] tests/test_integration.py::test_integration[value13-expected13] PASSED [ 88%] tests/test_integration.py::test_integration[value14-expected14] PASSED [ 88%] tests/test_integration.py::test_any_of_with_patterns PASSED [ 88%] tests/test_integration.py::test_swap_handlers PASSED [ 89%] tests/test_null.py::test_null[0-expected0] PASSED [ 89%] tests/test_null.py::test_null[None-None] PASSED [ 89%] tests/test_null.py::test_null[True-expected2] PASSED [ 89%] tests/test_null.py::test_null[abc-expected3] PASSED [ 89%] tests/test_null.py::test_null[value4-expected4] PASSED [ 89%] tests/test_null.py::test_null[value5-expected5] PASSED [ 89%] tests/test_number.py::test_number[number--5--5] PASSED [ 89%] tests/test_number.py::test_number[number-0-0] PASSED [ 89%] tests/test_number.py::test_number[number-5-5] PASSED [ 89%] tests/test_number.py::test_number[number-None-expected3] PASSED [ 89%] tests/test_number.py::test_number[number-True-expected4] PASSED [ 89%] tests/test_number.py::test_number[number-abc-expected5] PASSED [ 89%] tests/test_number.py::test_number[number-value6-expected6] PASSED [ 89%] tests/test_number.py::test_number[number-value7-expected7] PASSED [ 89%] tests/test_number.py::test_number[integer--5--5] PASSED [ 89%] tests/test_number.py::test_number[integer-0-0] PASSED [ 89%] tests/test_number.py::test_number[integer-5-5] PASSED [ 89%] tests/test_number.py::test_number[integer-None-expected3] PASSED [ 89%] tests/test_number.py::test_number[integer-True-expected4] PASSED [ 89%] tests/test_number.py::test_number[integer-abc-expected5] PASSED [ 89%] tests/test_number.py::test_number[integer-value6-expected6] PASSED [ 90%] tests/test_number.py::test_number[integer-value7-expected7] PASSED [ 90%] tests/test_number.py::test_maximum[number--5--5] PASSED [ 90%] tests/test_number.py::test_maximum[number-5-5] PASSED [ 90%] tests/test_number.py::test_maximum[number-9-9] PASSED [ 90%] tests/test_number.py::test_maximum[number-10-10] PASSED [ 90%] tests/test_number.py::test_maximum[number-11-expected4] PASSED [ 90%] tests/test_number.py::test_maximum[number-20-expected5] PASSED [ 90%] tests/test_number.py::test_maximum[integer--5--5] PASSED [ 90%] tests/test_number.py::test_maximum[integer-5-5] PASSED [ 90%] tests/test_number.py::test_maximum[integer-9-9] PASSED [ 90%] tests/test_number.py::test_maximum[integer-10-10] PASSED [ 90%] tests/test_number.py::test_maximum[integer-11-expected4] PASSED [ 90%] tests/test_number.py::test_maximum[integer-20-expected5] PASSED [ 90%] tests/test_number.py::test_exclusive_maximum[number--5--5] PASSED [ 90%] tests/test_number.py::test_exclusive_maximum[number-5-5] PASSED [ 90%] tests/test_number.py::test_exclusive_maximum[number-9-9] PASSED [ 90%] tests/test_number.py::test_exclusive_maximum[number-10-expected3] PASSED [ 90%] tests/test_number.py::test_exclusive_maximum[number-11-expected4] PASSED [ 90%] tests/test_number.py::test_exclusive_maximum[number-20-expected5] PASSED [ 90%] tests/test_number.py::test_exclusive_maximum[integer--5--5] PASSED [ 91%] tests/test_number.py::test_exclusive_maximum[integer-5-5] PASSED [ 91%] tests/test_number.py::test_exclusive_maximum[integer-9-9] PASSED [ 91%] tests/test_number.py::test_exclusive_maximum[integer-10-expected3] PASSED [ 91%] tests/test_number.py::test_exclusive_maximum[integer-11-expected4] PASSED [ 91%] tests/test_number.py::test_exclusive_maximum[integer-20-expected5] PASSED [ 91%] tests/test_number.py::test_minimum[number--5-expected0] PASSED [ 91%] tests/test_number.py::test_minimum[number-9-expected1] PASSED [ 91%] tests/test_number.py::test_minimum[number-10-10] PASSED [ 91%] tests/test_number.py::test_minimum[number-11-11] PASSED [ 91%] tests/test_number.py::test_minimum[number-20-20] PASSED [ 91%] tests/test_number.py::test_minimum[integer--5-expected0] PASSED [ 91%] tests/test_number.py::test_minimum[integer-9-expected1] PASSED [ 91%] tests/test_number.py::test_minimum[integer-10-10] PASSED [ 91%] tests/test_number.py::test_minimum[integer-11-11] PASSED [ 91%] tests/test_number.py::test_minimum[integer-20-20] PASSED [ 91%] tests/test_number.py::test_exclusive_minimum[number--5-expected0] PASSED [ 91%] tests/test_number.py::test_exclusive_minimum[number-9-expected1] PASSED [ 91%] tests/test_number.py::test_exclusive_minimum[number-10-expected2] PASSED [ 91%] tests/test_number.py::test_exclusive_minimum[number-11-11] PASSED [ 91%] tests/test_number.py::test_exclusive_minimum[number-20-20] PASSED [ 91%] tests/test_number.py::test_exclusive_minimum[integer--5-expected0] PASSED [ 92%] tests/test_number.py::test_exclusive_minimum[integer-9-expected1] PASSED [ 92%] tests/test_number.py::test_exclusive_minimum[integer-10-expected2] PASSED [ 92%] tests/test_number.py::test_exclusive_minimum[integer-11-11] PASSED [ 92%] tests/test_number.py::test_exclusive_minimum[integer-20-20] PASSED [ 92%] tests/test_number.py::test_multiple_of[number--4-expected0] PASSED [ 92%] tests/test_number.py::test_multiple_of[number--3--3] PASSED [ 92%] tests/test_number.py::test_multiple_of[number--2-expected2] PASSED [ 92%] tests/test_number.py::test_multiple_of[number--1-expected3] PASSED [ 92%] tests/test_number.py::test_multiple_of[number-0-0] PASSED [ 92%] tests/test_number.py::test_multiple_of[number-1-expected5] PASSED [ 92%] tests/test_number.py::test_multiple_of[number-2-expected6] PASSED [ 92%] tests/test_number.py::test_multiple_of[number-3-3] PASSED [ 92%] tests/test_number.py::test_multiple_of[number-4-expected8] PASSED [ 92%] tests/test_number.py::test_multiple_of[number-5-expected9] PASSED [ 92%] tests/test_number.py::test_multiple_of[number-6-6] PASSED [ 92%] tests/test_number.py::test_multiple_of[number-7-expected11] PASSED [ 92%] tests/test_number.py::test_multiple_of[integer--4-expected0] PASSED [ 92%] tests/test_number.py::test_multiple_of[integer--3--3] PASSED [ 92%] tests/test_number.py::test_multiple_of[integer--2-expected2] PASSED [ 92%] tests/test_number.py::test_multiple_of[integer--1-expected3] PASSED [ 92%] tests/test_number.py::test_multiple_of[integer-0-0] PASSED [ 93%] tests/test_number.py::test_multiple_of[integer-1-expected5] PASSED [ 93%] tests/test_number.py::test_multiple_of[integer-2-expected6] PASSED [ 93%] tests/test_number.py::test_multiple_of[integer-3-3] PASSED [ 93%] tests/test_number.py::test_multiple_of[integer-4-expected8] PASSED [ 93%] tests/test_number.py::test_multiple_of[integer-5-expected9] PASSED [ 93%] tests/test_number.py::test_multiple_of[integer-6-6] PASSED [ 93%] tests/test_number.py::test_multiple_of[integer-7-expected11] PASSED [ 93%] tests/test_number.py::test_multiple_of_float[0.00751-expected0] PASSED [ 93%] tests/test_number.py::test_multiple_of_float[0.0075-0.0075] PASSED [ 93%] tests/test_number.py::test_multiple_of_float_1_5[0-0] PASSED [ 93%] tests/test_number.py::test_multiple_of_float_1_5[0.01-0.01] PASSED [ 93%] tests/test_number.py::test_multiple_of_float_1_5[0.1-0.1] PASSED [ 93%] tests/test_number.py::test_multiple_of_float_1_5[19.01-19.01] PASSED [ 93%] tests/test_number.py::test_multiple_of_float_1_5[0.001-expected4] PASSED [ 93%] tests/test_number.py::test_multiple_of_float_1_5[19.001-expected5] PASSED [ 93%] tests/test_number.py::test_integer_is_not_number[1.0] PASSED [ 93%] tests/test_number.py::test_integer_is_not_number[0.1] PASSED [ 93%] tests/test_number.py::test_integer_is_not_number[0.01] PASSED [ 93%] tests/test_number.py::test_integer_is_not_number[0.001] PASSED [ 93%] tests/test_number.py::test_number_allows_float[1.0] PASSED [ 93%] tests/test_number.py::test_number_allows_float[0.1] PASSED [ 94%] tests/test_number.py::test_number_allows_float[0.01] PASSED [ 94%] tests/test_number.py::test_number_allows_float[0.001] PASSED [ 94%] tests/test_number.py::test_number_allows_decimal[value0] PASSED [ 94%] tests/test_number.py::test_number_allows_decimal[value1] PASSED [ 94%] tests/test_number.py::test_number_allows_decimal[value2] PASSED [ 94%] tests/test_number.py::test_number_allows_decimal[value3] PASSED [ 94%] tests/test_object.py::test_object[0-expected0] PASSED [ 94%] tests/test_object.py::test_object[None-expected1] PASSED [ 94%] tests/test_object.py::test_object[True-expected2] PASSED [ 94%] tests/test_object.py::test_object[False-expected3] PASSED [ 94%] tests/test_object.py::test_object[abc-expected4] PASSED [ 94%] tests/test_object.py::test_object[value5-expected5] PASSED [ 94%] tests/test_object.py::test_object[value6-expected6] PASSED [ 94%] tests/test_object.py::test_object[value7-expected7] PASSED [ 94%] tests/test_object.py::test_max_properties[value0-expected0] PASSED [ 94%] tests/test_object.py::test_max_properties[value1-expected1] PASSED [ 94%] tests/test_object.py::test_max_properties[value2-expected2] PASSED [ 94%] tests/test_object.py::test_min_properties[value0-expected0] PASSED [ 94%] tests/test_object.py::test_min_properties[value1-expected1] PASSED [ 94%] tests/test_object.py::test_min_properties[value2-expected2] PASSED [ 94%] tests/test_object.py::test_required[value0-expected0] PASSED [ 95%] tests/test_object.py::test_required[value1-expected1] PASSED [ 95%] tests/test_object.py::test_required[value2-expected2] PASSED [ 95%] tests/test_object.py::test_properties[value0-expected0] PASSED [ 95%] tests/test_object.py::test_properties[value1-expected1] PASSED [ 95%] tests/test_object.py::test_properties[value2-expected2] PASSED [ 95%] tests/test_object.py::test_properties[value3-expected3] PASSED [ 95%] tests/test_object.py::test_properties[value4-expected4] PASSED [ 95%] tests/test_object.py::test_invalid_properties[definition0] PASSED [ 95%] tests/test_object.py::test_invalid_properties[definition1] PASSED [ 95%] tests/test_object.py::test_invalid_properties[definition2] PASSED [ 95%] tests/test_object.py::test_valid_properties[definition0] PASSED [ 95%] tests/test_object.py::test_properties_with_additional_properties[value0-expected0] PASSED [ 95%] tests/test_object.py::test_properties_with_additional_properties[value1-expected1] PASSED [ 95%] tests/test_object.py::test_properties_with_additional_properties[value2-expected2] PASSED [ 95%] tests/test_object.py::test_properties_with_additional_properties[value3-expected3] PASSED [ 95%] tests/test_object.py::test_properties_with_additional_properties[value4-expected4] PASSED [ 95%] tests/test_object.py::test_properties_with_additional_properties[value5-expected5] PASSED [ 95%] tests/test_object.py::test_properties_without_additional_properties[value0-expected0] PASSED [ 95%] tests/test_object.py::test_properties_without_additional_properties[value1-expected1] PASSED [ 95%] tests/test_object.py::test_properties_without_additional_properties[value2-expected2] PASSED [ 96%] tests/test_object.py::test_properties_without_additional_properties[value3-expected3] PASSED [ 96%] tests/test_object.py::test_properties_without_additional_properties[value4-expected4] PASSED [ 96%] tests/test_object.py::test_properties_without_additional_properties[value5-expected5] PASSED [ 96%] tests/test_object.py::test_properties_without_additional_properties[value6-expected6] PASSED [ 96%] tests/test_object.py::test_pattern_properties[value0-expected0] PASSED [ 96%] tests/test_object.py::test_pattern_properties[value1-expected1] PASSED [ 96%] tests/test_object.py::test_pattern_properties[value2-expected2] PASSED [ 96%] tests/test_object.py::test_pattern_properties[value3-expected3] PASSED [ 96%] tests/test_object.py::test_pattern_properties[value4-expected4] PASSED [ 96%] tests/test_object.py::test_additional_properties[value0-expected0] PASSED [ 96%] tests/test_object.py::test_additional_properties[value1-expected1] PASSED [ 96%] tests/test_object.py::test_additional_properties[value2-expected2] PASSED [ 96%] tests/test_object.py::test_additional_properties[value3-expected3] PASSED [ 96%] tests/test_object.py::test_additional_properties[value4-expected4] PASSED [ 96%] tests/test_object.py::test_any_additional_properties[value0-expected0] PASSED [ 96%] tests/test_object.py::test_any_additional_properties[value1-expected1] PASSED [ 96%] tests/test_object.py::test_any_additional_properties[value2-expected2] PASSED [ 96%] tests/test_object.py::test_any_additional_properties[value3-expected3] PASSED [ 96%] tests/test_object.py::test_any_additional_properties[value4-expected4] PASSED [ 96%] tests/test_object.py::test_any_additional_properties[value5-expected5] PASSED [ 96%] tests/test_object.py::test_any_additional_properties[value6-expected6] PASSED [ 97%] tests/test_object.py::test_any_additional_properties[value7-expected7] PASSED [ 97%] tests/test_object.py::test_object_with_id_property[value0-expected0] PASSED [ 97%] tests/test_object.py::test_object_with_id_property[value1-expected1] PASSED [ 97%] tests/test_object.py::test_object_with_ref_property[value0-expected0] PASSED [ 97%] tests/test_object.py::test_object_with_ref_property[value1-expected1] PASSED [ 97%] tests/test_object.py::test_dependencies[value0-expected0] PASSED [ 97%] tests/test_object.py::test_dependencies[value1-expected1] PASSED [ 97%] tests/test_object.py::test_dependencies[value2-expected2] PASSED [ 97%] tests/test_object.py::test_full_name_after_ref[value0-expected0] PASSED [ 97%] tests/test_pattern_properties.py::test_dont_override_variable_names PASSED [ 97%] tests/test_pattern_properties.py::test_clear_variables PASSED [ 97%] tests/test_pattern_properties.py::test_pattern_with_escape PASSED [ 97%] tests/test_pattern_properties.py::test_pattern_with_escape_no_warnings PASSED [ 97%] tests/test_pattern_serialization.py::test_serialize_regexes PASSED [ 97%] tests/test_security.py::test_not_generate_code_from_definition[schema0] PASSED [ 97%] tests/test_security.py::test_not_generate_code_from_definition[schema1] PASSED [ 97%] tests/test_security.py::test_not_generate_code_from_definition[schema2] PASSED [ 97%] tests/test_security.py::test_not_generate_code_from_definition[schema3] PASSED [ 97%] tests/test_security.py::test_not_generate_code_from_definition[schema4] PASSED [ 97%] tests/test_security.py::test_not_generate_code_from_definition[schema5] PASSED [ 97%] tests/test_security.py::test_not_generate_code_from_definition[schema6] PASSED [ 98%] tests/test_security.py::test_not_generate_code_from_definition[schema7] PASSED [ 98%] tests/test_security.py::test_not_generate_code_from_definition[schema8] PASSED [ 98%] tests/test_security.py::test_not_generate_code_from_definition[schema9] PASSED [ 98%] tests/test_security.py::test_not_generate_code_from_definition[schema10] PASSED [ 98%] tests/test_security.py::test_not_generate_code_from_definition[schema11] PASSED [ 98%] tests/test_security.py::test_not_generate_code_from_definition[schema12] PASSED [ 98%] tests/test_security.py::test_not_generate_code_from_definition[schema13] PASSED [ 98%] tests/test_security.py::test_generate_code_with_proper_variable_names[schema0-validate(10)] PASSED [ 98%] tests/test_security.py::test_generate_code_with_proper_variable_names[schema1-" validate"10" "] PASSED [ 98%] tests/test_security.py::test_generate_code_with_proper_variable_names[schema2-' validate'10' '] PASSED [ 98%] tests/test_security.py::test_generate_code_with_proper_variable_names[schema3-' validate"10" '] PASSED [ 98%] tests/test_security.py::test_generate_code_with_proper_variable_names[schema4-value4] PASSED [ 98%] tests/test_security.py::test_generate_code_with_proper_variable_names[schema5-value5] PASSED [ 98%] tests/test_security.py::test_generate_code_without_overriding_variables PASSED [ 98%] tests/test_string.py::test_string[0-expected0] PASSED [ 98%] tests/test_string.py::test_string[None-expected1] PASSED [ 98%] tests/test_string.py::test_string[True-expected2] PASSED [ 98%] tests/test_string.py::test_string[-] PASSED [ 98%] tests/test_string.py::test_string[abc-abc] PASSED [ 98%] tests/test_string.py::test_string[value5-expected5] PASSED [ 98%] tests/test_string.py::test_string[value6-expected6] PASSED [ 99%] tests/test_string.py::test_max_length[-] PASSED [ 99%] tests/test_string.py::test_max_length[qwer-qwer] PASSED [ 99%] tests/test_string.py::test_max_length[qwert-qwert] PASSED [ 99%] tests/test_string.py::test_max_length[qwertz-expected3] PASSED [ 99%] tests/test_string.py::test_max_length[qwertzuiop-expected4] PASSED [ 99%] tests/test_string.py::test_min_length[-expected0] PASSED [ 99%] tests/test_string.py::test_min_length[qwer-expected1] PASSED [ 99%] tests/test_string.py::test_min_length[qwert-qwert] PASSED [ 99%] tests/test_string.py::test_min_length[qwertz-qwertz] PASSED [ 99%] tests/test_string.py::test_min_length[qwertzuiop-qwertzuiop] PASSED [ 99%] tests/test_string.py::test_pattern[-expected0] PASSED [ 99%] tests/test_string.py::test_pattern[aacc-expected1] PASSED [ 99%] tests/test_string.py::test_pattern[aaccc-aaccc] PASSED [ 99%] tests/test_string.py::test_pattern[aacd-aacd] PASSED [ 99%] tests/test_string.py::test_pattern[aacd\n-expected4] PASSED [ 99%] tests/test_string.py::test_pattern_with_space[ ] PASSED [ 99%] tests/test_string.py::test_pattern_with_space[\\x20] PASSED [ 99%] tests/test_string.py::test_pattern_with_escape_no_warnings PASSED [ 99%] tests/test_string.py::test_regex_pattern[[a-z]-[a-z]] PASSED [ 99%] tests/test_string.py::test_regex_pattern[[a-z-expected1] PASSED [100%] =================================== XPASSES ==================================== _____ test[enum.json / simple enum validation / one of the enum is valid] ______ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data not in [1, 2, 3]: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be one of [1, 2, 3]", value=data, name="" + (name_prefix or "data") + "", definition={'enum': [1, 2, 3]}, rule='enum') return data Validate result: 1 _____ test[enum.json / simple enum validation / something else is invalid] _____ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data not in [1, 2, 3]: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be one of [1, 2, 3]", value=data, name="" + (name_prefix or "data") + "", definition={'enum': [1, 2, 3], '$schema': 'http://json-schema.org/draft-04/schema'}, rule='enum') return data __ test[enum.json / heterogeneous enum validation / one of the enum is valid] __ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data not in [6, 'foo', [], True, {'foo': 12}]: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be one of [6, 'foo', [], True, {'foo': 12}]", value=data, name="" + (name_prefix or "data") + "", definition={'enum': [6, 'foo', [], True, {'foo': 12}]}, rule='enum') return data Validate result: [] _ test[enum.json / heterogeneous enum validation / something else is invalid] __ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data not in [6, 'foo', [], True, {'foo': 12}]: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be one of [6, 'foo', [], True, {'foo': 12}]", value=data, name="" + (name_prefix or "data") + "", definition={'enum': [6, 'foo', [], True, {'foo': 12}], '$schema': 'http://json-schema.org/draft-04/schema'}, rule='enum') return data _ test[enum.json / heterogeneous enum validation / objects are deep compared] __ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data not in [6, 'foo', [], True, {'foo': 12}]: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be one of [6, 'foo', [], True, {'foo': 12}]", value=data, name="" + (name_prefix or "data") + "", definition={'enum': [6, 'foo', [], True, {'foo': 12}], '$schema': 'http://json-schema.org/draft-04/schema'}, rule='enum') return data ______ test[enum.json / enums in properties / both properties are valid] _______ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'object', 'properties': {'foo': {'enum': ['foo']}, 'bar': {'enum': ['bar']}}, 'required': ['bar']}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data__missing_keys = set(['bar']) - data.keys() if data__missing_keys: raise JsonSchemaValueException("" + (name_prefix or "data") + " must contain " + (str(sorted(data__missing_keys)) + " properties"), value=data, name="" + (name_prefix or "data") + "", definition={'type': 'object', 'properties': {'foo': {'enum': ['foo']}, 'bar': {'enum': ['bar']}}, 'required': ['bar']}, rule='required') data_keys = set(data.keys()) if "foo" in data_keys: data_keys.remove("foo") data__foo = data["foo"] if data__foo not in ['foo']: raise JsonSchemaValueException("" + (name_prefix or "data") + ".foo must be one of ['foo']", value=data__foo, name="" + (name_prefix or "data") + ".foo", definition={'enum': ['foo']}, rule='enum') if "bar" in data_keys: data_keys.remove("bar") data__bar = data["bar"] if data__bar not in ['bar']: raise JsonSchemaValueException("" + (name_prefix or "data") + ".bar must be one of ['bar']", value=data__bar, name="" + (name_prefix or "data") + ".bar", definition={'enum': ['bar']}, rule='enum') return data Validate result: {'foo': 'foo', 'bar': 'bar'} __ test[enum.json / enums in properties / missing optional property is valid] __ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'object', 'properties': {'foo': {'enum': ['foo']}, 'bar': {'enum': ['bar']}}, 'required': ['bar'], '$schema': 'http://json-schema.org/draft-04/schema'}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data__missing_keys = set(['bar']) - data.keys() if data__missing_keys: raise JsonSchemaValueException("" + (name_prefix or "data") + " must contain " + (str(sorted(data__missing_keys)) + " properties"), value=data, name="" + (name_prefix or "data") + "", definition={'type': 'object', 'properties': {'foo': {'enum': ['foo']}, 'bar': {'enum': ['bar']}}, 'required': ['bar'], '$schema': 'http://json-schema.org/draft-04/schema'}, rule='required') data_keys = set(data.keys()) if "foo" in data_keys: data_keys.remove("foo") data__foo = data["foo"] if data__foo not in ['foo']: raise JsonSchemaValueException("" + (name_prefix or "data") + ".foo must be one of ['foo']", value=data__foo, name="" + (name_prefix or "data") + ".foo", definition={'enum': ['foo']}, rule='enum') if "bar" in data_keys: data_keys.remove("bar") data__bar = data["bar"] if data__bar not in ['bar']: raise JsonSchemaValueException("" + (name_prefix or "data") + ".bar must be one of ['bar']", value=data__bar, name="" + (name_prefix or "data") + ".bar", definition={'enum': ['bar']}, rule='enum') return data Validate result: {'bar': 'bar'} _ test[enum.json / enums in properties / missing required property is invalid] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'object', 'properties': {'foo': {'enum': ['foo']}, 'bar': {'enum': ['bar']}}, 'required': ['bar'], '$schema': 'http://json-schema.org/draft-04/schema'}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data__missing_keys = set(['bar']) - data.keys() if data__missing_keys: raise JsonSchemaValueException("" + (name_prefix or "data") + " must contain " + (str(sorted(data__missing_keys)) + " properties"), value=data, name="" + (name_prefix or "data") + "", definition={'type': 'object', 'properties': {'foo': {'enum': ['foo']}, 'bar': {'enum': ['bar']}}, 'required': ['bar'], '$schema': 'http://json-schema.org/draft-04/schema'}, rule='required') data_keys = set(data.keys()) if "foo" in data_keys: data_keys.remove("foo") data__foo = data["foo"] if data__foo not in ['foo']: raise JsonSchemaValueException("" + (name_prefix or "data") + ".foo must be one of ['foo']", value=data__foo, name="" + (name_prefix or "data") + ".foo", definition={'enum': ['foo']}, rule='enum') if "bar" in data_keys: data_keys.remove("bar") data__bar = data["bar"] if data__bar not in ['bar']: raise JsonSchemaValueException("" + (name_prefix or "data") + ".bar must be one of ['bar']", value=data__bar, name="" + (name_prefix or "data") + ".bar", definition={'enum': ['bar']}, rule='enum') return data __ test[enum.json / enums in properties / missing all properties is invalid] ___ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'object', 'properties': {'foo': {'enum': ['foo']}, 'bar': {'enum': ['bar']}}, 'required': ['bar'], '$schema': 'http://json-schema.org/draft-04/schema'}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data__missing_keys = set(['bar']) - data.keys() if data__missing_keys: raise JsonSchemaValueException("" + (name_prefix or "data") + " must contain " + (str(sorted(data__missing_keys)) + " properties"), value=data, name="" + (name_prefix or "data") + "", definition={'type': 'object', 'properties': {'foo': {'enum': ['foo']}, 'bar': {'enum': ['bar']}}, 'required': ['bar'], '$schema': 'http://json-schema.org/draft-04/schema'}, rule='required') data_keys = set(data.keys()) if "foo" in data_keys: data_keys.remove("foo") data__foo = data["foo"] if data__foo not in ['foo']: raise JsonSchemaValueException("" + (name_prefix or "data") + ".foo must be one of ['foo']", value=data__foo, name="" + (name_prefix or "data") + ".foo", definition={'enum': ['foo']}, rule='enum') if "bar" in data_keys: data_keys.remove("bar") data__bar = data["bar"] if data__bar not in ['bar']: raise JsonSchemaValueException("" + (name_prefix or "data") + ".bar must be one of ['bar']", value=data__bar, name="" + (name_prefix or "data") + ".bar", definition={'enum': ['bar']}, rule='enum') return data ______ test[enum.json / enum with escaped characters / member 1 is valid] ______ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data not in ['foo\nbar', 'foo\rbar']: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be one of ['foo\nbar', 'foo\rbar']", value=data, name="" + (name_prefix or "data") + "", definition={'enum': ['foo\nbar', 'foo\rbar']}, rule='enum') return data Validate result: foo bar ______ test[enum.json / enum with escaped characters / member 2 is valid] ______ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data not in ['foo\nbar', 'foo\rbar']: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be one of ['foo\nbar', 'foo\rbar']", value=data, name="" + (name_prefix or "data") + "", definition={'enum': ['foo\nbar', 'foo\rbar'], '$schema': 'http://json-schema.org/draft-04/schema'}, rule='enum') return data Validate result: foo bar __ test[enum.json / enum with escaped characters / another string is invalid] __ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data not in ['foo\nbar', 'foo\rbar']: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be one of ['foo\nbar', 'foo\rbar']", value=data, name="" + (name_prefix or "data") + "", definition={'enum': ['foo\nbar', 'foo\rbar'], '$schema': 'http://json-schema.org/draft-04/schema'}, rule='enum') return data __________________ test[ref.json / root pointer ref / match] ___________________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "foo" in data_keys: data_keys.remove("foo") data__foo = data["foo"] validate(data__foo, custom_formats, (name_prefix or "data") + ".foo") if data_keys: raise JsonSchemaValueException("" + (name_prefix or "data") + " must not contain "+str(data_keys)+" properties", value=data, name="" + (name_prefix or "data") + "", definition={'properties': {'foo': {'properties': {'foo': {'$ref': '#'}}, 'additionalProperties': False}}, 'additionalProperties': False}, rule='additionalProperties') return data Validate result: {'foo': False} _____________ test[ref.json / root pointer ref / recursive match] ______________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "foo" in data_keys: data_keys.remove("foo") data__foo = data["foo"] validate(data__foo, custom_formats, (name_prefix or "data") + ".foo") if data_keys: raise JsonSchemaValueException("" + (name_prefix or "data") + " must not contain "+str(data_keys)+" properties", value=data, name="" + (name_prefix or "data") + "", definition={'properties': {'foo': {'properties': {'foo': {'$ref': '#'}}, 'additionalProperties': False, '$schema': 'http://json-schema.org/draft-04/schema'}}, 'additionalProperties': False, '$schema': 'http://json-schema.org/draft-04/schema'}, rule='additionalProperties') return data Validate result: {'foo': {'foo': False}} _________________ test[ref.json / root pointer ref / mismatch] _________________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "foo" in data_keys: data_keys.remove("foo") data__foo = data["foo"] validate(data__foo, custom_formats, (name_prefix or "data") + ".foo") if data_keys: raise JsonSchemaValueException("" + (name_prefix or "data") + " must not contain "+str(data_keys)+" properties", value=data, name="" + (name_prefix or "data") + "", definition={'properties': {'foo': {'properties': {'foo': {'$ref': '#'}}, 'additionalProperties': False, '$schema': 'http://json-schema.org/draft-04/schema'}}, 'additionalProperties': False, '$schema': 'http://json-schema.org/draft-04/schema'}, rule='additionalProperties') return data ____________ test[ref.json / root pointer ref / recursive mismatch] ____________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "foo" in data_keys: data_keys.remove("foo") data__foo = data["foo"] validate(data__foo, custom_formats, (name_prefix or "data") + ".foo") if data_keys: raise JsonSchemaValueException("" + (name_prefix or "data") + " must not contain "+str(data_keys)+" properties", value=data, name="" + (name_prefix or "data") + "", definition={'properties': {'foo': {'properties': {'foo': {'$ref': '#'}}, 'additionalProperties': False, '$schema': 'http://json-schema.org/draft-04/schema'}}, 'additionalProperties': False, '$schema': 'http://json-schema.org/draft-04/schema'}, rule='additionalProperties') return data ___________ test[ref.json / relative pointer ref to object / match] ____________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "foo" in data_keys: data_keys.remove("foo") data__foo = data["foo"] if not isinstance(data__foo, (int)) and not (isinstance(data__foo, float) and data__foo.is_integer()) or isinstance(data__foo, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + ".foo must be integer", value=data__foo, name="" + (name_prefix or "data") + ".foo", definition={'type': 'integer'}, rule='type') if "bar" in data_keys: data_keys.remove("bar") data__bar = data["bar"] validate___properties_foo(data__bar, custom_formats, (name_prefix or "data") + ".bar") return data def validate___properties_foo(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data Validate result: {'bar': 3} __________ test[ref.json / relative pointer ref to object / mismatch] __________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "foo" in data_keys: data_keys.remove("foo") data__foo = data["foo"] if not isinstance(data__foo, (int)) and not (isinstance(data__foo, float) and data__foo.is_integer()) or isinstance(data__foo, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + ".foo must be integer", value=data__foo, name="" + (name_prefix or "data") + ".foo", definition={'type': 'integer'}, rule='type') if "bar" in data_keys: data_keys.remove("bar") data__bar = data["bar"] validate___properties_foo(data__bar, custom_formats, (name_prefix or "data") + ".bar") return data def validate___properties_foo(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data _________ test[ref.json / relative pointer ref to array / match array] _________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_list = isinstance(data, (list, tuple)) if data_is_list: data_len = len(data) if data_len > 0: data__0 = data[0] if not isinstance(data__0, (int)) and not (isinstance(data__0, float) and data__0.is_integer()) or isinstance(data__0, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + "[0] must be integer", value=data__0, name="" + (name_prefix or "data") + "[0]", definition={'type': 'integer'}, rule='type') if data_len > 1: data__1 = data[1] validate___items_0(data__1, custom_formats, (name_prefix or "data") + "[1]") return data def validate___items_0(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data Validate result: [1, 2] _______ test[ref.json / relative pointer ref to array / mismatch array] ________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_list = isinstance(data, (list, tuple)) if data_is_list: data_len = len(data) if data_len > 0: data__0 = data[0] if not isinstance(data__0, (int)) and not (isinstance(data__0, float) and data__0.is_integer()) or isinstance(data__0, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + "[0] must be integer", value=data__0, name="" + (name_prefix or "data") + "[0]", definition={'type': 'integer'}, rule='type') if data_len > 1: data__1 = data[1] validate___items_0(data__1, custom_formats, (name_prefix or "data") + "[1]") return data def validate___items_0(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data _____________ test[ref.json / escaped pointer ref / slash invalid] _____________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "tilda" in data_keys: data_keys.remove("tilda") data__tilda = data["tilda"] validate___tilda_field(data__tilda, custom_formats, (name_prefix or "data") + ".tilda") if "slash" in data_keys: data_keys.remove("slash") data__slash = data["slash"] validate___slash_field(data__slash, custom_formats, (name_prefix or "data") + ".slash") if "percent" in data_keys: data_keys.remove("percent") data__percent = data["percent"] validate___percent_field(data__percent, custom_formats, (name_prefix or "data") + ".percent") return data def validate___percent_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data def validate___slash_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data def validate___tilda_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data _____________ test[ref.json / escaped pointer ref / tilda invalid] _____________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "tilda" in data_keys: data_keys.remove("tilda") data__tilda = data["tilda"] validate___tilda_field(data__tilda, custom_formats, (name_prefix or "data") + ".tilda") if "slash" in data_keys: data_keys.remove("slash") data__slash = data["slash"] validate___slash_field(data__slash, custom_formats, (name_prefix or "data") + ".slash") if "percent" in data_keys: data_keys.remove("percent") data__percent = data["percent"] validate___percent_field(data__percent, custom_formats, (name_prefix or "data") + ".percent") return data def validate___percent_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data def validate___slash_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data def validate___tilda_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data ____________ test[ref.json / escaped pointer ref / percent invalid] ____________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "tilda" in data_keys: data_keys.remove("tilda") data__tilda = data["tilda"] validate___tilda_field(data__tilda, custom_formats, (name_prefix or "data") + ".tilda") if "slash" in data_keys: data_keys.remove("slash") data__slash = data["slash"] validate___slash_field(data__slash, custom_formats, (name_prefix or "data") + ".slash") if "percent" in data_keys: data_keys.remove("percent") data__percent = data["percent"] validate___percent_field(data__percent, custom_formats, (name_prefix or "data") + ".percent") return data def validate___percent_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data def validate___slash_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data def validate___tilda_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data ______________ test[ref.json / escaped pointer ref / slash valid] ______________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "tilda" in data_keys: data_keys.remove("tilda") data__tilda = data["tilda"] validate___tilda_field(data__tilda, custom_formats, (name_prefix or "data") + ".tilda") if "slash" in data_keys: data_keys.remove("slash") data__slash = data["slash"] validate___slash_field(data__slash, custom_formats, (name_prefix or "data") + ".slash") if "percent" in data_keys: data_keys.remove("percent") data__percent = data["percent"] validate___percent_field(data__percent, custom_formats, (name_prefix or "data") + ".percent") return data def validate___percent_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data def validate___slash_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data def validate___tilda_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data Validate result: {'slash': 123} ______________ test[ref.json / escaped pointer ref / tilda valid] ______________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "tilda" in data_keys: data_keys.remove("tilda") data__tilda = data["tilda"] validate___tilda_field(data__tilda, custom_formats, (name_prefix or "data") + ".tilda") if "slash" in data_keys: data_keys.remove("slash") data__slash = data["slash"] validate___slash_field(data__slash, custom_formats, (name_prefix or "data") + ".slash") if "percent" in data_keys: data_keys.remove("percent") data__percent = data["percent"] validate___percent_field(data__percent, custom_formats, (name_prefix or "data") + ".percent") return data def validate___percent_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data def validate___slash_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data def validate___tilda_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data Validate result: {'tilda': 123} _____________ test[ref.json / escaped pointer ref / percent valid] _____________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "tilda" in data_keys: data_keys.remove("tilda") data__tilda = data["tilda"] validate___tilda_field(data__tilda, custom_formats, (name_prefix or "data") + ".tilda") if "slash" in data_keys: data_keys.remove("slash") data__slash = data["slash"] validate___slash_field(data__slash, custom_formats, (name_prefix or "data") + ".slash") if "percent" in data_keys: data_keys.remove("percent") data__percent = data["percent"] validate___percent_field(data__percent, custom_formats, (name_prefix or "data") + ".percent") return data def validate___percent_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data def validate___slash_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data def validate___tilda_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data Validate result: {'percent': 123} _______________ test[ref.json / nested refs / nested ref valid] ________________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): validate___definitions_c(data, custom_formats, (name_prefix or "data") + "") return data def validate___definitions_c(data, custom_formats={}, name_prefix=None): validate___definitions_b(data, custom_formats, (name_prefix or "data") + "") return data def validate___definitions_b(data, custom_formats={}, name_prefix=None): validate___definitions_a(data, custom_formats, (name_prefix or "data") + "") return data def validate___definitions_a(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data Validate result: 5 ______________ test[ref.json / nested refs / nested ref invalid] _______________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): validate___definitions_c(data, custom_formats, (name_prefix or "data") + "") return data def validate___definitions_c(data, custom_formats={}, name_prefix=None): validate___definitions_b(data, custom_formats, (name_prefix or "data") + "") return data def validate___definitions_b(data, custom_formats={}, name_prefix=None): validate___definitions_a(data, custom_formats, (name_prefix or "data") + "") return data def validate___definitions_a(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data _______ test[ref.json / ref overrides any sibling keywords / ref valid] ________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "foo" in data_keys: data_keys.remove("foo") data__foo = data["foo"] validate___definitions_reffed(data__foo, custom_formats, (name_prefix or "data") + ".foo") return data def validate___definitions_reffed(data, custom_formats={}, name_prefix=None): if not isinstance(data, (list, tuple)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be array", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'array'}, rule='type') return data Validate result: {'foo': []} _ test[ref.json / ref overrides any sibling keywords / ref valid, maxItems ignored] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "foo" in data_keys: data_keys.remove("foo") data__foo = data["foo"] validate___definitions_reffed(data__foo, custom_formats, (name_prefix or "data") + ".foo") return data def validate___definitions_reffed(data, custom_formats={}, name_prefix=None): if not isinstance(data, (list, tuple)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be array", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'array'}, rule='type') return data Validate result: {'foo': [1, 2, 3]} ______ test[ref.json / ref overrides any sibling keywords / ref invalid] _______ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "foo" in data_keys: data_keys.remove("foo") data__foo = data["foo"] validate___definitions_reffed(data__foo, custom_formats, (name_prefix or "data") + ".foo") return data def validate___definitions_reffed(data, custom_formats={}, name_prefix=None): if not isinstance(data, (list, tuple)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be array", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'array'}, rule='type') return data _ test[ref.json / property named $ref that is not a reference / property named $ref valid] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "$ref" in data_keys: data_keys.remove("$ref") data__ref = data["$ref"] if not isinstance(data__ref, (str)): raise JsonSchemaValueException("" + (name_prefix or "data") + ".$ref must be string", value=data__ref, name="" + (name_prefix or "data") + ".$ref", definition={'type': 'string'}, rule='type') return data Validate result: {'$ref': 'a'} _ test[ref.json / property named $ref that is not a reference / property named $ref invalid] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "$ref" in data_keys: data_keys.remove("$ref") data__ref = data["$ref"] if not isinstance(data__ref, (str)): raise JsonSchemaValueException("" + (name_prefix or "data") + ".$ref must be string", value=data__ref, name="" + (name_prefix or "data") + ".$ref", definition={'type': 'string'}, rule='type') return data ______ test[ref.json / Recursive references between schemas / valid tree] ______ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate_http___localhost_1234_tree(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'id': 'http://localhost:1234/tree', 'description': 'tree of nodes', 'type': 'object', 'properties': {'meta': {'type': 'string'}, 'nodes': {'type': 'array', 'items': {'id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}}, 'required': ['meta', 'nodes'], 'definitions': {'node': {'id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'id': 'http://localhost:1234/tree', 'description': 'tree of nodes', 'type': 'object', 'properties': {'meta': {'type': 'string'}, 'nodes': {'type': 'array', 'items': {'$ref': 'http://localhost:1234/node'}}}, 'required': ['meta', 'nodes'], 'definitions': {'node': {'id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}}}, 'required': ['value']}}}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data__missing_keys = set(['meta', 'nodes']) - data.keys() if data__missing_keys: raise JsonSchemaValueException("" + (name_prefix or "data") + " must contain " + (str(sorted(data__missing_keys)) + " properties"), value=data, name="" + (name_prefix or "data") + "", definition={'id': 'http://localhost:1234/tree', 'description': 'tree of nodes', 'type': 'object', 'properties': {'meta': {'type': 'string'}, 'nodes': {'type': 'array', 'items': {'id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}}, 'required': ['meta', 'nodes'], 'definitions': {'node': {'id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'id': 'http://localhost:1234/tree', 'description': 'tree of nodes', 'type': 'object', 'properties': {'meta': {'type': 'string'}, 'nodes': {'type': 'array', 'items': {'$ref': 'http://localhost:1234/node'}}}, 'required': ['meta', 'nodes'], 'definitions': {'node': {'id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}}}, 'required': ['value']}}}, rule='required') data_keys = set(data.keys()) if "meta" in data_keys: data_keys.remove("meta") data__meta = data["meta"] if not isinstance(data__meta, (str)): raise JsonSchemaValueException("" + (name_prefix or "data") + ".meta must be string", value=data__meta, name="" + (name_prefix or "data") + ".meta", definition={'type': 'string'}, rule='type') if "nodes" in data_keys: data_keys.remove("nodes") data__nodes = data["nodes"] if not isinstance(data__nodes, (list, tuple)): raise JsonSchemaValueException("" + (name_prefix or "data") + ".nodes must be array", value=data__nodes, name="" + (name_prefix or "data") + ".nodes", definition={'type': 'array', 'items': {'id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}, rule='type') data__nodes_is_list = isinstance(data__nodes, (list, tuple)) if data__nodes_is_list: data__nodes_len = len(data__nodes) for data__nodes_x, data__nodes_item in enumerate(data__nodes): validate_http___localhost_1234_node(data__nodes_item, custom_formats, (name_prefix or "data") + ".nodes[{data__nodes_x}]".format(**locals())) return data def validate_http___localhost_1234_node(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'id': 'http://localhost:1234/tree', 'description': 'tree of nodes', 'type': 'object', 'properties': {'meta': {'type': 'string'}, 'nodes': {'type': 'array', 'items': {'$ref': 'http://localhost:1234/node'}}}, 'required': ['meta', 'nodes'], 'definitions': {'node': {'id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}}}, 'required': ['value']}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data__missing_keys = set(['value']) - data.keys() if data__missing_keys: raise JsonSchemaValueException("" + (name_prefix or "data") + " must contain " + (str(sorted(data__missing_keys)) + " properties"), value=data, name="" + (name_prefix or "data") + "", definition={'id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'id': 'http://localhost:1234/tree', 'description': 'tree of nodes', 'type': 'object', 'properties': {'meta': {'type': 'string'}, 'nodes': {'type': 'array', 'items': {'$ref': 'http://localhost:1234/node'}}}, 'required': ['meta', 'nodes'], 'definitions': {'node': {'id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}}}, 'required': ['value']}, rule='required') data_keys = set(data.keys()) if "value" in data_keys: data_keys.remove("value") data__value = data["value"] if not isinstance(data__value, (int, float, Decimal)) or isinstance(data__value, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + ".value must be number", value=data__value, name="" + (name_prefix or "data") + ".value", definition={'type': 'number'}, rule='type') if "subtree" in data_keys: data_keys.remove("subtree") data__subtree = data["subtree"] validate_http___localhost_1234_tree(data__subtree, custom_formats, (name_prefix or "data") + ".subtree") return data Validate result: {'meta': 'root', 'nodes': [{'value': 1, 'subtree': {'meta': 'child', 'nodes': [{'value': 1.1}, {'value': 1.2}]}}, {'value': 2, 'subtree': {'meta': 'child', 'nodes': [{'value': 2.1}, {'value': 2.2}]}}]} _____ test[ref.json / Recursive references between schemas / invalid tree] _____ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate_http___localhost_1234_tree(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'id': 'http://localhost:1234/tree', 'description': 'tree of nodes', 'type': 'object', 'properties': {'meta': {'type': 'string'}, 'nodes': {'type': 'array', 'items': {'id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}}, 'required': ['meta', 'nodes'], 'definitions': {'node': {'id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'id': 'http://localhost:1234/tree', 'description': 'tree of nodes', 'type': 'object', 'properties': {'meta': {'type': 'string'}, 'nodes': {'type': 'array', 'items': {'$ref': 'http://localhost:1234/node'}}}, 'required': ['meta', 'nodes'], 'definitions': {'node': {'id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}, '$schema': 'http://json-schema.org/draft-04/schema'}}, 'required': ['value']}}, '$schema': 'http://json-schema.org/draft-04/schema'}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data__missing_keys = set(['meta', 'nodes']) - data.keys() if data__missing_keys: raise JsonSchemaValueException("" + (name_prefix or "data") + " must contain " + (str(sorted(data__missing_keys)) + " properties"), value=data, name="" + (name_prefix or "data") + "", definition={'id': 'http://localhost:1234/tree', 'description': 'tree of nodes', 'type': 'object', 'properties': {'meta': {'type': 'string'}, 'nodes': {'type': 'array', 'items': {'id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}}, 'required': ['meta', 'nodes'], 'definitions': {'node': {'id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'id': 'http://localhost:1234/tree', 'description': 'tree of nodes', 'type': 'object', 'properties': {'meta': {'type': 'string'}, 'nodes': {'type': 'array', 'items': {'$ref': 'http://localhost:1234/node'}}}, 'required': ['meta', 'nodes'], 'definitions': {'node': {'id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}, '$schema': 'http://json-schema.org/draft-04/schema'}}, 'required': ['value']}}, '$schema': 'http://json-schema.org/draft-04/schema'}, rule='required') data_keys = set(data.keys()) if "meta" in data_keys: data_keys.remove("meta") data__meta = data["meta"] if not isinstance(data__meta, (str)): raise JsonSchemaValueException("" + (name_prefix or "data") + ".meta must be string", value=data__meta, name="" + (name_prefix or "data") + ".meta", definition={'type': 'string'}, rule='type') if "nodes" in data_keys: data_keys.remove("nodes") data__nodes = data["nodes"] if not isinstance(data__nodes, (list, tuple)): raise JsonSchemaValueException("" + (name_prefix or "data") + ".nodes must be array", value=data__nodes, name="" + (name_prefix or "data") + ".nodes", definition={'type': 'array', 'items': {'id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}, rule='type') data__nodes_is_list = isinstance(data__nodes, (list, tuple)) if data__nodes_is_list: data__nodes_len = len(data__nodes) for data__nodes_x, data__nodes_item in enumerate(data__nodes): validate_http___localhost_1234_node(data__nodes_item, custom_formats, (name_prefix or "data") + ".nodes[{data__nodes_x}]".format(**locals())) return data def validate_http___localhost_1234_node(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'id': 'http://localhost:1234/tree', 'description': 'tree of nodes', 'type': 'object', 'properties': {'meta': {'type': 'string'}, 'nodes': {'type': 'array', 'items': {'$ref': 'http://localhost:1234/node'}}}, 'required': ['meta', 'nodes'], 'definitions': {'node': {'id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}, '$schema': 'http://json-schema.org/draft-04/schema'}}, 'required': ['value']}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data__missing_keys = set(['value']) - data.keys() if data__missing_keys: raise JsonSchemaValueException("" + (name_prefix or "data") + " must contain " + (str(sorted(data__missing_keys)) + " properties"), value=data, name="" + (name_prefix or "data") + "", definition={'id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'id': 'http://localhost:1234/tree', 'description': 'tree of nodes', 'type': 'object', 'properties': {'meta': {'type': 'string'}, 'nodes': {'type': 'array', 'items': {'$ref': 'http://localhost:1234/node'}}}, 'required': ['meta', 'nodes'], 'definitions': {'node': {'id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}, '$schema': 'http://json-schema.org/draft-04/schema'}}, 'required': ['value']}, rule='required') data_keys = set(data.keys()) if "value" in data_keys: data_keys.remove("value") data__value = data["value"] if not isinstance(data__value, (int, float, Decimal)) or isinstance(data__value, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + ".value must be number", value=data__value, name="" + (name_prefix or "data") + ".value", definition={'type': 'number'}, rule='type') if "subtree" in data_keys: data_keys.remove("subtree") data__subtree = data["subtree"] validate_http___localhost_1234_tree(data__subtree, custom_formats, (name_prefix or "data") + ".subtree") return data _______ test[ref.json / refs with quote / object with numbers is valid] ________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "foo\"bar" in data_keys: data_keys.remove("foo\"bar") data__foobar = data["foo\"bar"] validate___definitions_foobar(data__foobar, custom_formats, (name_prefix or "data") + ".foo\"bar") return data def validate___definitions_foobar(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int, float, Decimal)) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be number", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'number'}, rule='type') return data Validate result: {'foo"bar': 1} ______ test[ref.json / refs with quote / object with strings is invalid] _______ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "foo\"bar" in data_keys: data_keys.remove("foo\"bar") data__foobar = data["foo\"bar"] validate___definitions_foobar(data__foobar, custom_formats, (name_prefix or "data") + ".foo\"bar") return data def validate___definitions_foobar(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int, float, Decimal)) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be number", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'number'}, rule='type') return data _____________ test[refRemote.json / remote ref / remote ref valid] _____________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): validate_http___localhost_1234_integer_json(data, custom_formats, (name_prefix or "data") + "") return data def validate_http___localhost_1234_integer_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data Validate result: 1 ____________ test[refRemote.json / remote ref / remote ref invalid] ____________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): validate_http___localhost_1234_integer_json(data, custom_formats, (name_prefix or "data") + "") return data def validate_http___localhost_1234_integer_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data __ test[refRemote.json / fragment within remote ref / remote fragment valid] ___ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): validate_http___localhost_1234_subschemas_json__integer(data, custom_formats, (name_prefix or "data") + "") return data def validate_http___localhost_1234_subschemas_json__integer(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data Validate result: 1 _ test[refRemote.json / fragment within remote ref / remote fragment invalid] __ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): validate_http___localhost_1234_subschemas_json__integer(data, custom_formats, (name_prefix or "data") + "") return data def validate_http___localhost_1234_subschemas_json__integer(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data _____ test[refRemote.json / ref within remote ref / ref within ref valid] ______ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): validate_http___localhost_1234_subschemas_json__reftointeger(data, custom_formats, (name_prefix or "data") + "") return data def validate_http___localhost_1234_subschemas_json__reftointeger(data, custom_formats={}, name_prefix=None): validate_http___localhost_1234_subschemas_json__integer(data, custom_formats, (name_prefix or "data") + "") return data def validate_http___localhost_1234_subschemas_json__integer(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data Validate result: 1 ____ test[refRemote.json / ref within remote ref / ref within ref invalid] _____ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): validate_http___localhost_1234_subschemas_json__reftointeger(data, custom_formats, (name_prefix or "data") + "") return data def validate_http___localhost_1234_subschemas_json__reftointeger(data, custom_formats={}, name_prefix=None): validate_http___localhost_1234_subschemas_json__integer(data, custom_formats, (name_prefix or "data") + "") return data def validate_http___localhost_1234_subschemas_json__integer(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data ______ test[refRemote.json / base URI change / base URI change ref valid] ______ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate_http___localhost_1234(data, custom_formats={}, name_prefix=None): data_is_list = isinstance(data, (list, tuple)) if data_is_list: data_len = len(data) for data_x, data_item in enumerate(data): data_item_is_list = isinstance(data_item, (list, tuple)) if data_item_is_list: data_item_len = len(data_item) for data_item_x, data_item_item in enumerate(data_item): validate_http___localhost_1234_folder_folderinteger_json(data_item_item, custom_formats, (name_prefix or "data") + "[{data_x}][{data_item_x}]".format(**locals())) return data def validate_http___localhost_1234_folder_folderinteger_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data Validate result: [[1]] _____ test[refRemote.json / base URI change / base URI change ref invalid] _____ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate_http___localhost_1234(data, custom_formats={}, name_prefix=None): data_is_list = isinstance(data, (list, tuple)) if data_is_list: data_len = len(data) for data_x, data_item in enumerate(data): data_item_is_list = isinstance(data_item, (list, tuple)) if data_item_is_list: data_item_len = len(data_item) for data_item_x, data_item_item in enumerate(data_item): validate_http___localhost_1234_folder_folderinteger_json(data_item_item, custom_formats, (name_prefix or "data") + "[{data_x}][{data_item_x}]".format(**locals())) return data def validate_http___localhost_1234_folder_folderinteger_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data ___ test[refRemote.json / base URI change - change folder / number is valid] ___ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate_http___localhost_1234_scope_change_defs1_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'id': 'http://localhost:1234/scope_change_defs1.json', 'type': 'object', 'properties': {'list': {'id': 'folder/', 'type': 'array', 'items': {'$ref': 'http://localhost:1234/folder/folderInteger.json'}}}, 'definitions': {'baz': {'id': 'folder/', 'type': 'array', 'items': {'type': 'integer'}}}}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "list" in data_keys: data_keys.remove("list") data__list = data["list"] validate_http___localhost_1234_scope_change_defs1_json__definitions_baz(data__list, custom_formats, (name_prefix or "data") + ".list") return data def validate_http___localhost_1234_scope_change_defs1_json__definitions_baz(data, custom_formats={}, name_prefix=None): if not isinstance(data, (list, tuple)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be array", value=data, name="" + (name_prefix or "data") + "", definition={'id': 'folder/', 'type': 'array', 'items': {'type': 'integer'}}, rule='type') data_is_list = isinstance(data, (list, tuple)) if data_is_list: data_len = len(data) for data_x, data_item in enumerate(data): validate_http___localhost_1234_folder_folderinteger_json(data_item, custom_formats, (name_prefix or "data") + "[{data_x}]".format(**locals())) return data def validate_http___localhost_1234_folder_folderinteger_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data Validate result: {'list': [1]} __ test[refRemote.json / base URI change - change folder / string is invalid] __ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate_http___localhost_1234_scope_change_defs1_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'id': 'http://localhost:1234/scope_change_defs1.json', 'type': 'object', 'properties': {'list': {'id': 'folder/', 'type': 'array', 'items': {'$ref': 'http://localhost:1234/folder/folderInteger.json'}}}, 'definitions': {'baz': {'id': 'folder/', 'type': 'array', 'items': {'type': 'integer'}}}, '$schema': 'http://json-schema.org/draft-04/schema'}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "list" in data_keys: data_keys.remove("list") data__list = data["list"] validate_http___localhost_1234_scope_change_defs1_json__definitions_baz(data__list, custom_formats, (name_prefix or "data") + ".list") return data def validate_http___localhost_1234_scope_change_defs1_json__definitions_baz(data, custom_formats={}, name_prefix=None): if not isinstance(data, (list, tuple)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be array", value=data, name="" + (name_prefix or "data") + "", definition={'id': 'folder/', 'type': 'array', 'items': {'type': 'integer'}}, rule='type') data_is_list = isinstance(data, (list, tuple)) if data_is_list: data_len = len(data) for data_x, data_item in enumerate(data): validate_http___localhost_1234_folder_folderinteger_json(data_item, custom_formats, (name_prefix or "data") + "[{data_x}]".format(**locals())) return data def validate_http___localhost_1234_folder_folderinteger_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data _ test[refRemote.json / base URI change - change folder in subschema / number is valid] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate_http___localhost_1234_scope_change_defs2_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'id': 'http://localhost:1234/scope_change_defs2.json', 'type': 'object', 'properties': {'list': {'type': 'array', 'items': {'$ref': 'http://localhost:1234/folder/folderInteger.json'}}}, 'definitions': {'baz': {'id': 'folder/', 'definitions': {'bar': {'type': 'array', 'items': {'type': 'integer'}}}}}}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "list" in data_keys: data_keys.remove("list") data__list = data["list"] validate_http___localhost_1234_scope_change_defs2_json__definitions_baz_definitions_bar(data__list, custom_formats, (name_prefix or "data") + ".list") return data def validate_http___localhost_1234_scope_change_defs2_json__definitions_baz_definitions_bar(data, custom_formats={}, name_prefix=None): if not isinstance(data, (list, tuple)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be array", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'array', 'items': {'type': 'integer'}}, rule='type') data_is_list = isinstance(data, (list, tuple)) if data_is_list: data_len = len(data) for data_x, data_item in enumerate(data): validate_http___localhost_1234_folder_folderinteger_json(data_item, custom_formats, (name_prefix or "data") + "[{data_x}]".format(**locals())) return data def validate_http___localhost_1234_folder_folderinteger_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data Validate result: {'list': [1]} _ test[refRemote.json / base URI change - change folder in subschema / string is invalid] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate_http___localhost_1234_scope_change_defs2_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'id': 'http://localhost:1234/scope_change_defs2.json', 'type': 'object', 'properties': {'list': {'type': 'array', 'items': {'$ref': 'http://localhost:1234/folder/folderInteger.json'}}}, 'definitions': {'baz': {'id': 'folder/', 'definitions': {'bar': {'type': 'array', 'items': {'type': 'integer'}}}}}, '$schema': 'http://json-schema.org/draft-04/schema'}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "list" in data_keys: data_keys.remove("list") data__list = data["list"] validate_http___localhost_1234_scope_change_defs2_json__definitions_baz_definitions_bar(data__list, custom_formats, (name_prefix or "data") + ".list") return data def validate_http___localhost_1234_scope_change_defs2_json__definitions_baz_definitions_bar(data, custom_formats={}, name_prefix=None): if not isinstance(data, (list, tuple)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be array", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'array', 'items': {'type': 'integer'}}, rule='type') data_is_list = isinstance(data, (list, tuple)) if data_is_list: data_len = len(data) for data_x, data_item in enumerate(data): validate_http___localhost_1234_folder_folderinteger_json(data_item, custom_formats, (name_prefix or "data") + "[{data_x}]".format(**locals())) return data def validate_http___localhost_1234_folder_folderinteger_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data _______ test[refRemote.json / root ref in remote ref / string is valid] ________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate_http___localhost_1234_object(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'id': 'http://localhost:1234/object', 'type': 'object', 'properties': {'name': {'anyOf': [{'type': 'null'}, {'$ref': '#'}]}}}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "name" in data_keys: data_keys.remove("name") data__name = data["name"] validate_http___localhost_1234_name_json__definitions_ornull(data__name, custom_formats, (name_prefix or "data") + ".name") return data def validate_http___localhost_1234_name_json__definitions_ornull(data, custom_formats={}, name_prefix=None): data_any_of_count1 = 0 if not data_any_of_count1: try: if not isinstance(data, (NoneType)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be null", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'null'}, rule='type') data_any_of_count1 += 1 except JsonSchemaValueException: pass if not data_any_of_count1: try: validate_http___localhost_1234_name_json(data, custom_formats, (name_prefix or "data") + "") data_any_of_count1 += 1 except JsonSchemaValueException: pass if not data_any_of_count1: raise JsonSchemaValueException("" + (name_prefix or "data") + " cannot be validated by any definition", value=data, name="" + (name_prefix or "data") + "", definition={'anyOf': [{'type': 'null'}, {'type': 'string', 'definitions': {'orNull': {'anyOf': [{'type': 'null'}, {'$ref': '#'}]}}}]}, rule='anyOf') return data def validate_http___localhost_1234_name_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (str)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be string", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'string', 'definitions': {'orNull': {'anyOf': [{'type': 'null'}, {'type': 'string', 'definitions': {'orNull': {'anyOf': [{'type': 'null'}, {'$ref': '#'}]}}}]}}}, rule='type') return data Validate result: {'name': 'foo'} ________ test[refRemote.json / root ref in remote ref / null is valid] _________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate_http___localhost_1234_object(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'id': 'http://localhost:1234/object', 'type': 'object', 'properties': {'name': {'anyOf': [{'type': 'null'}, {'$ref': '#'}]}}, '$schema': 'http://json-schema.org/draft-04/schema'}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "name" in data_keys: data_keys.remove("name") data__name = data["name"] validate_http___localhost_1234_name_json__definitions_ornull(data__name, custom_formats, (name_prefix or "data") + ".name") return data def validate_http___localhost_1234_name_json__definitions_ornull(data, custom_formats={}, name_prefix=None): data_any_of_count1 = 0 if not data_any_of_count1: try: if not isinstance(data, (NoneType)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be null", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'null'}, rule='type') data_any_of_count1 += 1 except JsonSchemaValueException: pass if not data_any_of_count1: try: validate_http___localhost_1234_name_json(data, custom_formats, (name_prefix or "data") + "") data_any_of_count1 += 1 except JsonSchemaValueException: pass if not data_any_of_count1: raise JsonSchemaValueException("" + (name_prefix or "data") + " cannot be validated by any definition", value=data, name="" + (name_prefix or "data") + "", definition={'anyOf': [{'type': 'null'}, {'type': 'string', 'definitions': {'orNull': {'anyOf': [{'type': 'null'}, {'$ref': '#'}]}}}]}, rule='anyOf') return data def validate_http___localhost_1234_name_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (str)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be string", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'string', 'definitions': {'orNull': {'anyOf': [{'type': 'null'}, {'type': 'string', 'definitions': {'orNull': {'anyOf': [{'type': 'null'}, {'$ref': '#'}]}}}]}}}, rule='type') return data Validate result: {'name': None} ______ test[refRemote.json / root ref in remote ref / object is invalid] _______ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate_http___localhost_1234_object(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'id': 'http://localhost:1234/object', 'type': 'object', 'properties': {'name': {'anyOf': [{'type': 'null'}, {'$ref': '#'}]}}, '$schema': 'http://json-schema.org/draft-04/schema'}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "name" in data_keys: data_keys.remove("name") data__name = data["name"] validate_http___localhost_1234_name_json__definitions_ornull(data__name, custom_formats, (name_prefix or "data") + ".name") return data def validate_http___localhost_1234_name_json__definitions_ornull(data, custom_formats={}, name_prefix=None): data_any_of_count1 = 0 if not data_any_of_count1: try: if not isinstance(data, (NoneType)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be null", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'null'}, rule='type') data_any_of_count1 += 1 except JsonSchemaValueException: pass if not data_any_of_count1: try: validate_http___localhost_1234_name_json(data, custom_formats, (name_prefix or "data") + "") data_any_of_count1 += 1 except JsonSchemaValueException: pass if not data_any_of_count1: raise JsonSchemaValueException("" + (name_prefix or "data") + " cannot be validated by any definition", value=data, name="" + (name_prefix or "data") + "", definition={'anyOf': [{'type': 'null'}, {'type': 'string', 'definitions': {'orNull': {'anyOf': [{'type': 'null'}, {'$ref': '#'}]}}}]}, rule='anyOf') return data def validate_http___localhost_1234_name_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (str)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be string", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'string', 'definitions': {'orNull': {'anyOf': [{'type': 'null'}, {'type': 'string', 'definitions': {'orNull': {'anyOf': [{'type': 'null'}, {'$ref': '#'}]}}}]}}}, rule='type') return data __________ test[const.json / const validation / same value is valid] ___________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data != 2: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be same as const definition: 2", value=data, name="" + (name_prefix or "data") + "", definition={'const': 2}, rule='const') return data Validate result: 2 ________ test[const.json / const validation / another value is invalid] ________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data != 2: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be same as const definition: 2", value=data, name="" + (name_prefix or "data") + "", definition={'const': 2, '$schema': 'http://json-schema.org/draft-06/schema'}, rule='const') return data ________ test[const.json / const validation / another type is invalid] _________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data != 2: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be same as const definition: 2", value=data, name="" + (name_prefix or "data") + "", definition={'const': 2, '$schema': 'http://json-schema.org/draft-06/schema'}, rule='const') return data _________ test[const.json / const with object / same object is valid] __________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data != {'foo': 'bar', 'baz': 'bax'}: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be same as const definition: {'foo': 'bar', 'baz': 'bax'}", value=data, name="" + (name_prefix or "data") + "", definition={'const': {'foo': 'bar', 'baz': 'bax'}}, rule='const') return data Validate result: {'foo': 'bar', 'baz': 'bax'} _ test[const.json / const with object / same object with different property order is valid] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data != {'foo': 'bar', 'baz': 'bax'}: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be same as const definition: {'foo': 'bar', 'baz': 'bax'}", value=data, name="" + (name_prefix or "data") + "", definition={'const': {'foo': 'bar', 'baz': 'bax'}, '$schema': 'http://json-schema.org/draft-06/schema'}, rule='const') return data Validate result: {'baz': 'bax', 'foo': 'bar'} _______ test[const.json / const with object / another object is invalid] _______ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data != {'foo': 'bar', 'baz': 'bax'}: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be same as const definition: {'foo': 'bar', 'baz': 'bax'}", value=data, name="" + (name_prefix or "data") + "", definition={'const': {'foo': 'bar', 'baz': 'bax'}, '$schema': 'http://json-schema.org/draft-06/schema'}, rule='const') return data ________ test[const.json / const with object / another type is invalid] ________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data != {'foo': 'bar', 'baz': 'bax'}: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be same as const definition: {'foo': 'bar', 'baz': 'bax'}", value=data, name="" + (name_prefix or "data") + "", definition={'const': {'foo': 'bar', 'baz': 'bax'}, '$schema': 'http://json-schema.org/draft-06/schema'}, rule='const') return data __________ test[const.json / const with array / same array is valid] ___________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data != [{'foo': 'bar'}]: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be same as const definition: [{'foo': 'bar'}]", value=data, name="" + (name_prefix or "data") + "", definition={'const': [{'foo': 'bar'}]}, rule='const') return data Validate result: [{'foo': 'bar'}] _____ test[const.json / const with array / another array item is invalid] ______ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data != [{'foo': 'bar'}]: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be same as const definition: [{'foo': 'bar'}]", value=data, name="" + (name_prefix or "data") + "", definition={'const': [{'foo': 'bar'}], '$schema': 'http://json-schema.org/draft-06/schema'}, rule='const') return data _ test[const.json / const with array / array with additional items is invalid] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data != [{'foo': 'bar'}]: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be same as const definition: [{'foo': 'bar'}]", value=data, name="" + (name_prefix or "data") + "", definition={'const': [{'foo': 'bar'}], '$schema': 'http://json-schema.org/draft-06/schema'}, rule='const') return data ______________ test[const.json / const with null / null is valid] ______________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data != None: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be same as const definition: None", value=data, name="" + (name_prefix or "data") + "", definition={'const': None}, rule='const') return data Validate result: None ___________ test[const.json / const with null / not null is invalid] ___________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data != None: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be same as const definition: None", value=data, name="" + (name_prefix or "data") + "", definition={'const': None, '$schema': 'http://json-schema.org/draft-06/schema'}, rule='const') return data _____ test[enum.json / simple enum validation / one of the enum is valid] ______ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data not in [1, 2, 3]: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be one of [1, 2, 3]", value=data, name="" + (name_prefix or "data") + "", definition={'enum': [1, 2, 3]}, rule='enum') return data Validate result: 1 _____ test[enum.json / simple enum validation / something else is invalid] _____ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data not in [1, 2, 3]: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be one of [1, 2, 3]", value=data, name="" + (name_prefix or "data") + "", definition={'enum': [1, 2, 3], '$schema': 'http://json-schema.org/draft-06/schema'}, rule='enum') return data __ test[enum.json / heterogeneous enum validation / one of the enum is valid] __ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data not in [6, 'foo', [], True, {'foo': 12}]: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be one of [6, 'foo', [], True, {'foo': 12}]", value=data, name="" + (name_prefix or "data") + "", definition={'enum': [6, 'foo', [], True, {'foo': 12}]}, rule='enum') return data Validate result: [] _ test[enum.json / heterogeneous enum validation / something else is invalid] __ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data not in [6, 'foo', [], True, {'foo': 12}]: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be one of [6, 'foo', [], True, {'foo': 12}]", value=data, name="" + (name_prefix or "data") + "", definition={'enum': [6, 'foo', [], True, {'foo': 12}], '$schema': 'http://json-schema.org/draft-06/schema'}, rule='enum') return data _ test[enum.json / heterogeneous enum validation / objects are deep compared] __ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data not in [6, 'foo', [], True, {'foo': 12}]: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be one of [6, 'foo', [], True, {'foo': 12}]", value=data, name="" + (name_prefix or "data") + "", definition={'enum': [6, 'foo', [], True, {'foo': 12}], '$schema': 'http://json-schema.org/draft-06/schema'}, rule='enum') return data ______ test[enum.json / enums in properties / both properties are valid] _______ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'object', 'properties': {'foo': {'enum': ['foo']}, 'bar': {'enum': ['bar']}}, 'required': ['bar']}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data__missing_keys = set(['bar']) - data.keys() if data__missing_keys: raise JsonSchemaValueException("" + (name_prefix or "data") + " must contain " + (str(sorted(data__missing_keys)) + " properties"), value=data, name="" + (name_prefix or "data") + "", definition={'type': 'object', 'properties': {'foo': {'enum': ['foo']}, 'bar': {'enum': ['bar']}}, 'required': ['bar']}, rule='required') data_keys = set(data.keys()) if "foo" in data_keys: data_keys.remove("foo") data__foo = data["foo"] if data__foo not in ['foo']: raise JsonSchemaValueException("" + (name_prefix or "data") + ".foo must be one of ['foo']", value=data__foo, name="" + (name_prefix or "data") + ".foo", definition={'enum': ['foo']}, rule='enum') if "bar" in data_keys: data_keys.remove("bar") data__bar = data["bar"] if data__bar not in ['bar']: raise JsonSchemaValueException("" + (name_prefix or "data") + ".bar must be one of ['bar']", value=data__bar, name="" + (name_prefix or "data") + ".bar", definition={'enum': ['bar']}, rule='enum') return data Validate result: {'foo': 'foo', 'bar': 'bar'} __ test[enum.json / enums in properties / missing optional property is valid] __ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'object', 'properties': {'foo': {'enum': ['foo']}, 'bar': {'enum': ['bar']}}, 'required': ['bar'], '$schema': 'http://json-schema.org/draft-06/schema'}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data__missing_keys = set(['bar']) - data.keys() if data__missing_keys: raise JsonSchemaValueException("" + (name_prefix or "data") + " must contain " + (str(sorted(data__missing_keys)) + " properties"), value=data, name="" + (name_prefix or "data") + "", definition={'type': 'object', 'properties': {'foo': {'enum': ['foo']}, 'bar': {'enum': ['bar']}}, 'required': ['bar'], '$schema': 'http://json-schema.org/draft-06/schema'}, rule='required') data_keys = set(data.keys()) if "foo" in data_keys: data_keys.remove("foo") data__foo = data["foo"] if data__foo not in ['foo']: raise JsonSchemaValueException("" + (name_prefix or "data") + ".foo must be one of ['foo']", value=data__foo, name="" + (name_prefix or "data") + ".foo", definition={'enum': ['foo']}, rule='enum') if "bar" in data_keys: data_keys.remove("bar") data__bar = data["bar"] if data__bar not in ['bar']: raise JsonSchemaValueException("" + (name_prefix or "data") + ".bar must be one of ['bar']", value=data__bar, name="" + (name_prefix or "data") + ".bar", definition={'enum': ['bar']}, rule='enum') return data Validate result: {'bar': 'bar'} _ test[enum.json / enums in properties / missing required property is invalid] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'object', 'properties': {'foo': {'enum': ['foo']}, 'bar': {'enum': ['bar']}}, 'required': ['bar'], '$schema': 'http://json-schema.org/draft-06/schema'}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data__missing_keys = set(['bar']) - data.keys() if data__missing_keys: raise JsonSchemaValueException("" + (name_prefix or "data") + " must contain " + (str(sorted(data__missing_keys)) + " properties"), value=data, name="" + (name_prefix or "data") + "", definition={'type': 'object', 'properties': {'foo': {'enum': ['foo']}, 'bar': {'enum': ['bar']}}, 'required': ['bar'], '$schema': 'http://json-schema.org/draft-06/schema'}, rule='required') data_keys = set(data.keys()) if "foo" in data_keys: data_keys.remove("foo") data__foo = data["foo"] if data__foo not in ['foo']: raise JsonSchemaValueException("" + (name_prefix or "data") + ".foo must be one of ['foo']", value=data__foo, name="" + (name_prefix or "data") + ".foo", definition={'enum': ['foo']}, rule='enum') if "bar" in data_keys: data_keys.remove("bar") data__bar = data["bar"] if data__bar not in ['bar']: raise JsonSchemaValueException("" + (name_prefix or "data") + ".bar must be one of ['bar']", value=data__bar, name="" + (name_prefix or "data") + ".bar", definition={'enum': ['bar']}, rule='enum') return data __ test[enum.json / enums in properties / missing all properties is invalid] ___ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'object', 'properties': {'foo': {'enum': ['foo']}, 'bar': {'enum': ['bar']}}, 'required': ['bar'], '$schema': 'http://json-schema.org/draft-06/schema'}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data__missing_keys = set(['bar']) - data.keys() if data__missing_keys: raise JsonSchemaValueException("" + (name_prefix or "data") + " must contain " + (str(sorted(data__missing_keys)) + " properties"), value=data, name="" + (name_prefix or "data") + "", definition={'type': 'object', 'properties': {'foo': {'enum': ['foo']}, 'bar': {'enum': ['bar']}}, 'required': ['bar'], '$schema': 'http://json-schema.org/draft-06/schema'}, rule='required') data_keys = set(data.keys()) if "foo" in data_keys: data_keys.remove("foo") data__foo = data["foo"] if data__foo not in ['foo']: raise JsonSchemaValueException("" + (name_prefix or "data") + ".foo must be one of ['foo']", value=data__foo, name="" + (name_prefix or "data") + ".foo", definition={'enum': ['foo']}, rule='enum') if "bar" in data_keys: data_keys.remove("bar") data__bar = data["bar"] if data__bar not in ['bar']: raise JsonSchemaValueException("" + (name_prefix or "data") + ".bar must be one of ['bar']", value=data__bar, name="" + (name_prefix or "data") + ".bar", definition={'enum': ['bar']}, rule='enum') return data ______ test[enum.json / enum with escaped characters / member 1 is valid] ______ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data not in ['foo\nbar', 'foo\rbar']: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be one of ['foo\nbar', 'foo\rbar']", value=data, name="" + (name_prefix or "data") + "", definition={'enum': ['foo\nbar', 'foo\rbar']}, rule='enum') return data Validate result: foo bar ______ test[enum.json / enum with escaped characters / member 2 is valid] ______ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data not in ['foo\nbar', 'foo\rbar']: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be one of ['foo\nbar', 'foo\rbar']", value=data, name="" + (name_prefix or "data") + "", definition={'enum': ['foo\nbar', 'foo\rbar'], '$schema': 'http://json-schema.org/draft-06/schema'}, rule='enum') return data Validate result: foo bar __ test[enum.json / enum with escaped characters / another string is invalid] __ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data not in ['foo\nbar', 'foo\rbar']: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be one of ['foo\nbar', 'foo\rbar']", value=data, name="" + (name_prefix or "data") + "", definition={'enum': ['foo\nbar', 'foo\rbar'], '$schema': 'http://json-schema.org/draft-06/schema'}, rule='enum') return data __________________ test[ref.json / root pointer ref / match] ___________________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "foo" in data_keys: data_keys.remove("foo") data__foo = data["foo"] validate(data__foo, custom_formats, (name_prefix or "data") + ".foo") if data_keys: raise JsonSchemaValueException("" + (name_prefix or "data") + " must not contain "+str(data_keys)+" properties", value=data, name="" + (name_prefix or "data") + "", definition={'properties': {'foo': {'properties': {'foo': {'$ref': '#'}}, 'additionalProperties': False}}, 'additionalProperties': False}, rule='additionalProperties') return data Validate result: {'foo': False} _____________ test[ref.json / root pointer ref / recursive match] ______________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "foo" in data_keys: data_keys.remove("foo") data__foo = data["foo"] validate(data__foo, custom_formats, (name_prefix or "data") + ".foo") if data_keys: raise JsonSchemaValueException("" + (name_prefix or "data") + " must not contain "+str(data_keys)+" properties", value=data, name="" + (name_prefix or "data") + "", definition={'properties': {'foo': {'properties': {'foo': {'$ref': '#'}}, 'additionalProperties': False, '$schema': 'http://json-schema.org/draft-06/schema'}}, 'additionalProperties': False, '$schema': 'http://json-schema.org/draft-06/schema'}, rule='additionalProperties') return data Validate result: {'foo': {'foo': False}} _________________ test[ref.json / root pointer ref / mismatch] _________________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "foo" in data_keys: data_keys.remove("foo") data__foo = data["foo"] validate(data__foo, custom_formats, (name_prefix or "data") + ".foo") if data_keys: raise JsonSchemaValueException("" + (name_prefix or "data") + " must not contain "+str(data_keys)+" properties", value=data, name="" + (name_prefix or "data") + "", definition={'properties': {'foo': {'properties': {'foo': {'$ref': '#'}}, 'additionalProperties': False, '$schema': 'http://json-schema.org/draft-06/schema'}}, 'additionalProperties': False, '$schema': 'http://json-schema.org/draft-06/schema'}, rule='additionalProperties') return data ____________ test[ref.json / root pointer ref / recursive mismatch] ____________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "foo" in data_keys: data_keys.remove("foo") data__foo = data["foo"] validate(data__foo, custom_formats, (name_prefix or "data") + ".foo") if data_keys: raise JsonSchemaValueException("" + (name_prefix or "data") + " must not contain "+str(data_keys)+" properties", value=data, name="" + (name_prefix or "data") + "", definition={'properties': {'foo': {'properties': {'foo': {'$ref': '#'}}, 'additionalProperties': False, '$schema': 'http://json-schema.org/draft-06/schema'}}, 'additionalProperties': False, '$schema': 'http://json-schema.org/draft-06/schema'}, rule='additionalProperties') return data ___________ test[ref.json / relative pointer ref to object / match] ____________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "foo" in data_keys: data_keys.remove("foo") data__foo = data["foo"] if not isinstance(data__foo, (int)) and not (isinstance(data__foo, float) and data__foo.is_integer()) or isinstance(data__foo, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + ".foo must be integer", value=data__foo, name="" + (name_prefix or "data") + ".foo", definition={'type': 'integer'}, rule='type') if "bar" in data_keys: data_keys.remove("bar") data__bar = data["bar"] validate___properties_foo(data__bar, custom_formats, (name_prefix or "data") + ".bar") return data def validate___properties_foo(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data Validate result: {'bar': 3} __________ test[ref.json / relative pointer ref to object / mismatch] __________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "foo" in data_keys: data_keys.remove("foo") data__foo = data["foo"] if not isinstance(data__foo, (int)) and not (isinstance(data__foo, float) and data__foo.is_integer()) or isinstance(data__foo, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + ".foo must be integer", value=data__foo, name="" + (name_prefix or "data") + ".foo", definition={'type': 'integer'}, rule='type') if "bar" in data_keys: data_keys.remove("bar") data__bar = data["bar"] validate___properties_foo(data__bar, custom_formats, (name_prefix or "data") + ".bar") return data def validate___properties_foo(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data _________ test[ref.json / relative pointer ref to array / match array] _________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_list = isinstance(data, (list, tuple)) if data_is_list: data_len = len(data) if data_len > 0: data__0 = data[0] if not isinstance(data__0, (int)) and not (isinstance(data__0, float) and data__0.is_integer()) or isinstance(data__0, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + "[0] must be integer", value=data__0, name="" + (name_prefix or "data") + "[0]", definition={'type': 'integer'}, rule='type') if data_len > 1: data__1 = data[1] validate___items_0(data__1, custom_formats, (name_prefix or "data") + "[1]") return data def validate___items_0(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data Validate result: [1, 2] _______ test[ref.json / relative pointer ref to array / mismatch array] ________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_list = isinstance(data, (list, tuple)) if data_is_list: data_len = len(data) if data_len > 0: data__0 = data[0] if not isinstance(data__0, (int)) and not (isinstance(data__0, float) and data__0.is_integer()) or isinstance(data__0, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + "[0] must be integer", value=data__0, name="" + (name_prefix or "data") + "[0]", definition={'type': 'integer'}, rule='type') if data_len > 1: data__1 = data[1] validate___items_0(data__1, custom_formats, (name_prefix or "data") + "[1]") return data def validate___items_0(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data _____________ test[ref.json / escaped pointer ref / slash invalid] _____________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "tilda" in data_keys: data_keys.remove("tilda") data__tilda = data["tilda"] validate___tilda_field(data__tilda, custom_formats, (name_prefix or "data") + ".tilda") if "slash" in data_keys: data_keys.remove("slash") data__slash = data["slash"] validate___slash_field(data__slash, custom_formats, (name_prefix or "data") + ".slash") if "percent" in data_keys: data_keys.remove("percent") data__percent = data["percent"] validate___percent_field(data__percent, custom_formats, (name_prefix or "data") + ".percent") return data def validate___percent_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data def validate___slash_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data def validate___tilda_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data _____________ test[ref.json / escaped pointer ref / tilda invalid] _____________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "tilda" in data_keys: data_keys.remove("tilda") data__tilda = data["tilda"] validate___tilda_field(data__tilda, custom_formats, (name_prefix or "data") + ".tilda") if "slash" in data_keys: data_keys.remove("slash") data__slash = data["slash"] validate___slash_field(data__slash, custom_formats, (name_prefix or "data") + ".slash") if "percent" in data_keys: data_keys.remove("percent") data__percent = data["percent"] validate___percent_field(data__percent, custom_formats, (name_prefix or "data") + ".percent") return data def validate___percent_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data def validate___slash_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data def validate___tilda_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data ____________ test[ref.json / escaped pointer ref / percent invalid] ____________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "tilda" in data_keys: data_keys.remove("tilda") data__tilda = data["tilda"] validate___tilda_field(data__tilda, custom_formats, (name_prefix or "data") + ".tilda") if "slash" in data_keys: data_keys.remove("slash") data__slash = data["slash"] validate___slash_field(data__slash, custom_formats, (name_prefix or "data") + ".slash") if "percent" in data_keys: data_keys.remove("percent") data__percent = data["percent"] validate___percent_field(data__percent, custom_formats, (name_prefix or "data") + ".percent") return data def validate___percent_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data def validate___slash_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data def validate___tilda_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data ______________ test[ref.json / escaped pointer ref / slash valid] ______________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "tilda" in data_keys: data_keys.remove("tilda") data__tilda = data["tilda"] validate___tilda_field(data__tilda, custom_formats, (name_prefix or "data") + ".tilda") if "slash" in data_keys: data_keys.remove("slash") data__slash = data["slash"] validate___slash_field(data__slash, custom_formats, (name_prefix or "data") + ".slash") if "percent" in data_keys: data_keys.remove("percent") data__percent = data["percent"] validate___percent_field(data__percent, custom_formats, (name_prefix or "data") + ".percent") return data def validate___percent_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data def validate___slash_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data def validate___tilda_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data Validate result: {'slash': 123} ______________ test[ref.json / escaped pointer ref / tilda valid] ______________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "tilda" in data_keys: data_keys.remove("tilda") data__tilda = data["tilda"] validate___tilda_field(data__tilda, custom_formats, (name_prefix or "data") + ".tilda") if "slash" in data_keys: data_keys.remove("slash") data__slash = data["slash"] validate___slash_field(data__slash, custom_formats, (name_prefix or "data") + ".slash") if "percent" in data_keys: data_keys.remove("percent") data__percent = data["percent"] validate___percent_field(data__percent, custom_formats, (name_prefix or "data") + ".percent") return data def validate___percent_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data def validate___slash_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data def validate___tilda_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data Validate result: {'tilda': 123} _____________ test[ref.json / escaped pointer ref / percent valid] _____________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "tilda" in data_keys: data_keys.remove("tilda") data__tilda = data["tilda"] validate___tilda_field(data__tilda, custom_formats, (name_prefix or "data") + ".tilda") if "slash" in data_keys: data_keys.remove("slash") data__slash = data["slash"] validate___slash_field(data__slash, custom_formats, (name_prefix or "data") + ".slash") if "percent" in data_keys: data_keys.remove("percent") data__percent = data["percent"] validate___percent_field(data__percent, custom_formats, (name_prefix or "data") + ".percent") return data def validate___percent_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data def validate___slash_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data def validate___tilda_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data Validate result: {'percent': 123} _______________ test[ref.json / nested refs / nested ref valid] ________________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): validate___definitions_c(data, custom_formats, (name_prefix or "data") + "") return data def validate___definitions_c(data, custom_formats={}, name_prefix=None): validate___definitions_b(data, custom_formats, (name_prefix or "data") + "") return data def validate___definitions_b(data, custom_formats={}, name_prefix=None): validate___definitions_a(data, custom_formats, (name_prefix or "data") + "") return data def validate___definitions_a(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data Validate result: 5 ______________ test[ref.json / nested refs / nested ref invalid] _______________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): validate___definitions_c(data, custom_formats, (name_prefix or "data") + "") return data def validate___definitions_c(data, custom_formats={}, name_prefix=None): validate___definitions_b(data, custom_formats, (name_prefix or "data") + "") return data def validate___definitions_b(data, custom_formats={}, name_prefix=None): validate___definitions_a(data, custom_formats, (name_prefix or "data") + "") return data def validate___definitions_a(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data _______ test[ref.json / ref overrides any sibling keywords / ref valid] ________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "foo" in data_keys: data_keys.remove("foo") data__foo = data["foo"] validate___definitions_reffed(data__foo, custom_formats, (name_prefix or "data") + ".foo") return data def validate___definitions_reffed(data, custom_formats={}, name_prefix=None): if not isinstance(data, (list, tuple)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be array", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'array'}, rule='type') return data Validate result: {'foo': []} _ test[ref.json / ref overrides any sibling keywords / ref valid, maxItems ignored] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "foo" in data_keys: data_keys.remove("foo") data__foo = data["foo"] validate___definitions_reffed(data__foo, custom_formats, (name_prefix or "data") + ".foo") return data def validate___definitions_reffed(data, custom_formats={}, name_prefix=None): if not isinstance(data, (list, tuple)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be array", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'array'}, rule='type') return data Validate result: {'foo': [1, 2, 3]} ______ test[ref.json / ref overrides any sibling keywords / ref invalid] _______ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "foo" in data_keys: data_keys.remove("foo") data__foo = data["foo"] validate___definitions_reffed(data__foo, custom_formats, (name_prefix or "data") + ".foo") return data def validate___definitions_reffed(data, custom_formats={}, name_prefix=None): if not isinstance(data, (list, tuple)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be array", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'array'}, rule='type') return data _ test[ref.json / property named $ref that is not a reference / property named $ref valid] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "$ref" in data_keys: data_keys.remove("$ref") data__ref = data["$ref"] if not isinstance(data__ref, (str)): raise JsonSchemaValueException("" + (name_prefix or "data") + ".$ref must be string", value=data__ref, name="" + (name_prefix or "data") + ".$ref", definition={'type': 'string'}, rule='type') return data Validate result: {'$ref': 'a'} _ test[ref.json / property named $ref that is not a reference / property named $ref invalid] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "$ref" in data_keys: data_keys.remove("$ref") data__ref = data["$ref"] if not isinstance(data__ref, (str)): raise JsonSchemaValueException("" + (name_prefix or "data") + ".$ref must be string", value=data__ref, name="" + (name_prefix or "data") + ".$ref", definition={'type': 'string'}, rule='type') return data ______ test[ref.json / $ref to boolean schema true / any value is valid] _______ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): validate___definitions_bool(data, custom_formats, (name_prefix or "data") + "") return data def validate___definitions_bool(data, custom_formats={}, name_prefix=None): pass return data Validate result: foo _____ test[ref.json / $ref to boolean schema false / any value is invalid] _____ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): validate___definitions_bool(data, custom_formats, (name_prefix or "data") + "") return data def validate___definitions_bool(data, custom_formats={}, name_prefix=None): raise JsonSchemaValueException("" + (name_prefix or "data") + " must not be there", value=data, name="" + (name_prefix or "data") + "", definition=False, rule=None) return data ______ test[ref.json / Recursive references between schemas / valid tree] ______ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate_http___localhost_1234_tree(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'$id': 'http://localhost:1234/tree', 'description': 'tree of nodes', 'type': 'object', 'properties': {'meta': {'type': 'string'}, 'nodes': {'type': 'array', 'items': {'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}}, 'required': ['meta', 'nodes'], 'definitions': {'node': {'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$id': 'http://localhost:1234/tree', 'description': 'tree of nodes', 'type': 'object', 'properties': {'meta': {'type': 'string'}, 'nodes': {'type': 'array', 'items': {'$ref': 'http://localhost:1234/node'}}}, 'required': ['meta', 'nodes'], 'definitions': {'node': {'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}}}, 'required': ['value']}}}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data__missing_keys = set(['meta', 'nodes']) - data.keys() if data__missing_keys: raise JsonSchemaValueException("" + (name_prefix or "data") + " must contain " + (str(sorted(data__missing_keys)) + " properties"), value=data, name="" + (name_prefix or "data") + "", definition={'$id': 'http://localhost:1234/tree', 'description': 'tree of nodes', 'type': 'object', 'properties': {'meta': {'type': 'string'}, 'nodes': {'type': 'array', 'items': {'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}}, 'required': ['meta', 'nodes'], 'definitions': {'node': {'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$id': 'http://localhost:1234/tree', 'description': 'tree of nodes', 'type': 'object', 'properties': {'meta': {'type': 'string'}, 'nodes': {'type': 'array', 'items': {'$ref': 'http://localhost:1234/node'}}}, 'required': ['meta', 'nodes'], 'definitions': {'node': {'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}}}, 'required': ['value']}}}, rule='required') data_keys = set(data.keys()) if "meta" in data_keys: data_keys.remove("meta") data__meta = data["meta"] if not isinstance(data__meta, (str)): raise JsonSchemaValueException("" + (name_prefix or "data") + ".meta must be string", value=data__meta, name="" + (name_prefix or "data") + ".meta", definition={'type': 'string'}, rule='type') if "nodes" in data_keys: data_keys.remove("nodes") data__nodes = data["nodes"] if not isinstance(data__nodes, (list, tuple)): raise JsonSchemaValueException("" + (name_prefix or "data") + ".nodes must be array", value=data__nodes, name="" + (name_prefix or "data") + ".nodes", definition={'type': 'array', 'items': {'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}, rule='type') data__nodes_is_list = isinstance(data__nodes, (list, tuple)) if data__nodes_is_list: data__nodes_len = len(data__nodes) for data__nodes_x, data__nodes_item in enumerate(data__nodes): validate_http___localhost_1234_node(data__nodes_item, custom_formats, (name_prefix or "data") + ".nodes[{data__nodes_x}]".format(**locals())) return data def validate_http___localhost_1234_node(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$id': 'http://localhost:1234/tree', 'description': 'tree of nodes', 'type': 'object', 'properties': {'meta': {'type': 'string'}, 'nodes': {'type': 'array', 'items': {'$ref': 'http://localhost:1234/node'}}}, 'required': ['meta', 'nodes'], 'definitions': {'node': {'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}}}, 'required': ['value']}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data__missing_keys = set(['value']) - data.keys() if data__missing_keys: raise JsonSchemaValueException("" + (name_prefix or "data") + " must contain " + (str(sorted(data__missing_keys)) + " properties"), value=data, name="" + (name_prefix or "data") + "", definition={'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$id': 'http://localhost:1234/tree', 'description': 'tree of nodes', 'type': 'object', 'properties': {'meta': {'type': 'string'}, 'nodes': {'type': 'array', 'items': {'$ref': 'http://localhost:1234/node'}}}, 'required': ['meta', 'nodes'], 'definitions': {'node': {'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}}}, 'required': ['value']}, rule='required') data_keys = set(data.keys()) if "value" in data_keys: data_keys.remove("value") data__value = data["value"] if not isinstance(data__value, (int, float, Decimal)) or isinstance(data__value, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + ".value must be number", value=data__value, name="" + (name_prefix or "data") + ".value", definition={'type': 'number'}, rule='type') if "subtree" in data_keys: data_keys.remove("subtree") data__subtree = data["subtree"] validate_http___localhost_1234_tree(data__subtree, custom_formats, (name_prefix or "data") + ".subtree") return data Validate result: {'meta': 'root', 'nodes': [{'value': 1, 'subtree': {'meta': 'child', 'nodes': [{'value': 1.1}, {'value': 1.2}]}}, {'value': 2, 'subtree': {'meta': 'child', 'nodes': [{'value': 2.1}, {'value': 2.2}]}}]} _____ test[ref.json / Recursive references between schemas / invalid tree] _____ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate_http___localhost_1234_tree(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'$id': 'http://localhost:1234/tree', 'description': 'tree of nodes', 'type': 'object', 'properties': {'meta': {'type': 'string'}, 'nodes': {'type': 'array', 'items': {'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}}, 'required': ['meta', 'nodes'], 'definitions': {'node': {'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$id': 'http://localhost:1234/tree', 'description': 'tree of nodes', 'type': 'object', 'properties': {'meta': {'type': 'string'}, 'nodes': {'type': 'array', 'items': {'$ref': 'http://localhost:1234/node'}}}, 'required': ['meta', 'nodes'], 'definitions': {'node': {'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}, '$schema': 'http://json-schema.org/draft-06/schema'}}, 'required': ['value']}}, '$schema': 'http://json-schema.org/draft-06/schema'}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data__missing_keys = set(['meta', 'nodes']) - data.keys() if data__missing_keys: raise JsonSchemaValueException("" + (name_prefix or "data") + " must contain " + (str(sorted(data__missing_keys)) + " properties"), value=data, name="" + (name_prefix or "data") + "", definition={'$id': 'http://localhost:1234/tree', 'description': 'tree of nodes', 'type': 'object', 'properties': {'meta': {'type': 'string'}, 'nodes': {'type': 'array', 'items': {'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}}, 'required': ['meta', 'nodes'], 'definitions': {'node': {'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$id': 'http://localhost:1234/tree', 'description': 'tree of nodes', 'type': 'object', 'properties': {'meta': {'type': 'string'}, 'nodes': {'type': 'array', 'items': {'$ref': 'http://localhost:1234/node'}}}, 'required': ['meta', 'nodes'], 'definitions': {'node': {'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}, '$schema': 'http://json-schema.org/draft-06/schema'}}, 'required': ['value']}}, '$schema': 'http://json-schema.org/draft-06/schema'}, rule='required') data_keys = set(data.keys()) if "meta" in data_keys: data_keys.remove("meta") data__meta = data["meta"] if not isinstance(data__meta, (str)): raise JsonSchemaValueException("" + (name_prefix or "data") + ".meta must be string", value=data__meta, name="" + (name_prefix or "data") + ".meta", definition={'type': 'string'}, rule='type') if "nodes" in data_keys: data_keys.remove("nodes") data__nodes = data["nodes"] if not isinstance(data__nodes, (list, tuple)): raise JsonSchemaValueException("" + (name_prefix or "data") + ".nodes must be array", value=data__nodes, name="" + (name_prefix or "data") + ".nodes", definition={'type': 'array', 'items': {'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}, rule='type') data__nodes_is_list = isinstance(data__nodes, (list, tuple)) if data__nodes_is_list: data__nodes_len = len(data__nodes) for data__nodes_x, data__nodes_item in enumerate(data__nodes): validate_http___localhost_1234_node(data__nodes_item, custom_formats, (name_prefix or "data") + ".nodes[{data__nodes_x}]".format(**locals())) return data def validate_http___localhost_1234_node(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$id': 'http://localhost:1234/tree', 'description': 'tree of nodes', 'type': 'object', 'properties': {'meta': {'type': 'string'}, 'nodes': {'type': 'array', 'items': {'$ref': 'http://localhost:1234/node'}}}, 'required': ['meta', 'nodes'], 'definitions': {'node': {'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}, '$schema': 'http://json-schema.org/draft-06/schema'}}, 'required': ['value']}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data__missing_keys = set(['value']) - data.keys() if data__missing_keys: raise JsonSchemaValueException("" + (name_prefix or "data") + " must contain " + (str(sorted(data__missing_keys)) + " properties"), value=data, name="" + (name_prefix or "data") + "", definition={'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$id': 'http://localhost:1234/tree', 'description': 'tree of nodes', 'type': 'object', 'properties': {'meta': {'type': 'string'}, 'nodes': {'type': 'array', 'items': {'$ref': 'http://localhost:1234/node'}}}, 'required': ['meta', 'nodes'], 'definitions': {'node': {'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}, '$schema': 'http://json-schema.org/draft-06/schema'}}, 'required': ['value']}, rule='required') data_keys = set(data.keys()) if "value" in data_keys: data_keys.remove("value") data__value = data["value"] if not isinstance(data__value, (int, float, Decimal)) or isinstance(data__value, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + ".value must be number", value=data__value, name="" + (name_prefix or "data") + ".value", definition={'type': 'number'}, rule='type') if "subtree" in data_keys: data_keys.remove("subtree") data__subtree = data["subtree"] validate_http___localhost_1234_tree(data__subtree, custom_formats, (name_prefix or "data") + ".subtree") return data _______ test[ref.json / refs with quote / object with numbers is valid] ________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "foo\"bar" in data_keys: data_keys.remove("foo\"bar") data__foobar = data["foo\"bar"] validate___definitions_foobar(data__foobar, custom_formats, (name_prefix or "data") + ".foo\"bar") return data def validate___definitions_foobar(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int, float, Decimal)) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be number", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'number'}, rule='type') return data Validate result: {'foo"bar': 1} ______ test[ref.json / refs with quote / object with strings is invalid] _______ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "foo\"bar" in data_keys: data_keys.remove("foo\"bar") data__foobar = data["foo\"bar"] validate___definitions_foobar(data__foobar, custom_formats, (name_prefix or "data") + ".foo\"bar") return data def validate___definitions_foobar(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int, float, Decimal)) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be number", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'number'}, rule='type') return data _____________ test[refRemote.json / remote ref / remote ref valid] _____________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): validate_http___localhost_1234_integer_json(data, custom_formats, (name_prefix or "data") + "") return data def validate_http___localhost_1234_integer_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data Validate result: 1 ____________ test[refRemote.json / remote ref / remote ref invalid] ____________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): validate_http___localhost_1234_integer_json(data, custom_formats, (name_prefix or "data") + "") return data def validate_http___localhost_1234_integer_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data __ test[refRemote.json / fragment within remote ref / remote fragment valid] ___ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): validate_http___localhost_1234_subschemas_json__integer(data, custom_formats, (name_prefix or "data") + "") return data def validate_http___localhost_1234_subschemas_json__integer(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data Validate result: 1 _ test[refRemote.json / fragment within remote ref / remote fragment invalid] __ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): validate_http___localhost_1234_subschemas_json__integer(data, custom_formats, (name_prefix or "data") + "") return data def validate_http___localhost_1234_subschemas_json__integer(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data _____ test[refRemote.json / ref within remote ref / ref within ref valid] ______ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): validate_http___localhost_1234_subschemas_json__reftointeger(data, custom_formats, (name_prefix or "data") + "") return data def validate_http___localhost_1234_subschemas_json__reftointeger(data, custom_formats={}, name_prefix=None): validate_http___localhost_1234_subschemas_json__integer(data, custom_formats, (name_prefix or "data") + "") return data def validate_http___localhost_1234_subschemas_json__integer(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data Validate result: 1 ____ test[refRemote.json / ref within remote ref / ref within ref invalid] _____ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): validate_http___localhost_1234_subschemas_json__reftointeger(data, custom_formats, (name_prefix or "data") + "") return data def validate_http___localhost_1234_subschemas_json__reftointeger(data, custom_formats={}, name_prefix=None): validate_http___localhost_1234_subschemas_json__integer(data, custom_formats, (name_prefix or "data") + "") return data def validate_http___localhost_1234_subschemas_json__integer(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data ______ test[refRemote.json / base URI change / base URI change ref valid] ______ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate_http___localhost_1234(data, custom_formats={}, name_prefix=None): data_is_list = isinstance(data, (list, tuple)) if data_is_list: data_len = len(data) for data_x, data_item in enumerate(data): data_item_is_list = isinstance(data_item, (list, tuple)) if data_item_is_list: data_item_len = len(data_item) for data_item_x, data_item_item in enumerate(data_item): validate_http___localhost_1234_folder_folderinteger_json(data_item_item, custom_formats, (name_prefix or "data") + "[{data_x}][{data_item_x}]".format(**locals())) return data def validate_http___localhost_1234_folder_folderinteger_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data Validate result: [[1]] _____ test[refRemote.json / base URI change / base URI change ref invalid] _____ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate_http___localhost_1234(data, custom_formats={}, name_prefix=None): data_is_list = isinstance(data, (list, tuple)) if data_is_list: data_len = len(data) for data_x, data_item in enumerate(data): data_item_is_list = isinstance(data_item, (list, tuple)) if data_item_is_list: data_item_len = len(data_item) for data_item_x, data_item_item in enumerate(data_item): validate_http___localhost_1234_folder_folderinteger_json(data_item_item, custom_formats, (name_prefix or "data") + "[{data_x}][{data_item_x}]".format(**locals())) return data def validate_http___localhost_1234_folder_folderinteger_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data ___ test[refRemote.json / base URI change - change folder / number is valid] ___ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate_http___localhost_1234_scope_change_defs1_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'$id': 'http://localhost:1234/scope_change_defs1.json', 'type': 'object', 'properties': {'list': {'$id': 'folder/', 'type': 'array', 'items': {'$ref': 'http://localhost:1234/folder/folderInteger.json'}}}, 'definitions': {'baz': {'$id': 'folder/', 'type': 'array', 'items': {'type': 'integer'}}}}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "list" in data_keys: data_keys.remove("list") data__list = data["list"] validate_http___localhost_1234_scope_change_defs1_json__definitions_baz(data__list, custom_formats, (name_prefix or "data") + ".list") return data def validate_http___localhost_1234_scope_change_defs1_json__definitions_baz(data, custom_formats={}, name_prefix=None): if not isinstance(data, (list, tuple)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be array", value=data, name="" + (name_prefix or "data") + "", definition={'$id': 'folder/', 'type': 'array', 'items': {'type': 'integer'}}, rule='type') data_is_list = isinstance(data, (list, tuple)) if data_is_list: data_len = len(data) for data_x, data_item in enumerate(data): validate_http___localhost_1234_folder_folderinteger_json(data_item, custom_formats, (name_prefix or "data") + "[{data_x}]".format(**locals())) return data def validate_http___localhost_1234_folder_folderinteger_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data Validate result: {'list': [1]} __ test[refRemote.json / base URI change - change folder / string is invalid] __ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate_http___localhost_1234_scope_change_defs1_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'$id': 'http://localhost:1234/scope_change_defs1.json', 'type': 'object', 'properties': {'list': {'$id': 'folder/', 'type': 'array', 'items': {'$ref': 'http://localhost:1234/folder/folderInteger.json'}}}, 'definitions': {'baz': {'$id': 'folder/', 'type': 'array', 'items': {'type': 'integer'}}}, '$schema': 'http://json-schema.org/draft-06/schema'}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "list" in data_keys: data_keys.remove("list") data__list = data["list"] validate_http___localhost_1234_scope_change_defs1_json__definitions_baz(data__list, custom_formats, (name_prefix or "data") + ".list") return data def validate_http___localhost_1234_scope_change_defs1_json__definitions_baz(data, custom_formats={}, name_prefix=None): if not isinstance(data, (list, tuple)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be array", value=data, name="" + (name_prefix or "data") + "", definition={'$id': 'folder/', 'type': 'array', 'items': {'type': 'integer'}}, rule='type') data_is_list = isinstance(data, (list, tuple)) if data_is_list: data_len = len(data) for data_x, data_item in enumerate(data): validate_http___localhost_1234_folder_folderinteger_json(data_item, custom_formats, (name_prefix or "data") + "[{data_x}]".format(**locals())) return data def validate_http___localhost_1234_folder_folderinteger_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data _ test[refRemote.json / base URI change - change folder in subschema / number is valid] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate_http___localhost_1234_scope_change_defs2_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'$id': 'http://localhost:1234/scope_change_defs2.json', 'type': 'object', 'properties': {'list': {'type': 'array', 'items': {'$ref': 'http://localhost:1234/folder/folderInteger.json'}}}, 'definitions': {'baz': {'$id': 'folder/', 'definitions': {'bar': {'type': 'array', 'items': {'type': 'integer'}}}}}}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "list" in data_keys: data_keys.remove("list") data__list = data["list"] validate_http___localhost_1234_scope_change_defs2_json__definitions_baz_definitions_bar(data__list, custom_formats, (name_prefix or "data") + ".list") return data def validate_http___localhost_1234_scope_change_defs2_json__definitions_baz_definitions_bar(data, custom_formats={}, name_prefix=None): if not isinstance(data, (list, tuple)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be array", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'array', 'items': {'type': 'integer'}}, rule='type') data_is_list = isinstance(data, (list, tuple)) if data_is_list: data_len = len(data) for data_x, data_item in enumerate(data): validate_http___localhost_1234_folder_folderinteger_json(data_item, custom_formats, (name_prefix or "data") + "[{data_x}]".format(**locals())) return data def validate_http___localhost_1234_folder_folderinteger_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data Validate result: {'list': [1]} _ test[refRemote.json / base URI change - change folder in subschema / string is invalid] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate_http___localhost_1234_scope_change_defs2_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'$id': 'http://localhost:1234/scope_change_defs2.json', 'type': 'object', 'properties': {'list': {'type': 'array', 'items': {'$ref': 'http://localhost:1234/folder/folderInteger.json'}}}, 'definitions': {'baz': {'$id': 'folder/', 'definitions': {'bar': {'type': 'array', 'items': {'type': 'integer'}}}}}, '$schema': 'http://json-schema.org/draft-06/schema'}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "list" in data_keys: data_keys.remove("list") data__list = data["list"] validate_http___localhost_1234_scope_change_defs2_json__definitions_baz_definitions_bar(data__list, custom_formats, (name_prefix or "data") + ".list") return data def validate_http___localhost_1234_scope_change_defs2_json__definitions_baz_definitions_bar(data, custom_formats={}, name_prefix=None): if not isinstance(data, (list, tuple)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be array", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'array', 'items': {'type': 'integer'}}, rule='type') data_is_list = isinstance(data, (list, tuple)) if data_is_list: data_len = len(data) for data_x, data_item in enumerate(data): validate_http___localhost_1234_folder_folderinteger_json(data_item, custom_formats, (name_prefix or "data") + "[{data_x}]".format(**locals())) return data def validate_http___localhost_1234_folder_folderinteger_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data _______ test[refRemote.json / root ref in remote ref / string is valid] ________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate_http___localhost_1234_object(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'$id': 'http://localhost:1234/object', 'type': 'object', 'properties': {'name': {'anyOf': [{'type': 'null'}, {'$ref': '#'}]}}}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "name" in data_keys: data_keys.remove("name") data__name = data["name"] validate_http___localhost_1234_name_json__definitions_ornull(data__name, custom_formats, (name_prefix or "data") + ".name") return data def validate_http___localhost_1234_name_json__definitions_ornull(data, custom_formats={}, name_prefix=None): data_any_of_count1 = 0 if not data_any_of_count1: try: if not isinstance(data, (NoneType)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be null", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'null'}, rule='type') data_any_of_count1 += 1 except JsonSchemaValueException: pass if not data_any_of_count1: try: validate_http___localhost_1234_name_json(data, custom_formats, (name_prefix or "data") + "") data_any_of_count1 += 1 except JsonSchemaValueException: pass if not data_any_of_count1: raise JsonSchemaValueException("" + (name_prefix or "data") + " cannot be validated by any definition", value=data, name="" + (name_prefix or "data") + "", definition={'anyOf': [{'type': 'null'}, {'type': 'string', 'definitions': {'orNull': {'anyOf': [{'type': 'null'}, {'$ref': '#'}]}}}]}, rule='anyOf') return data def validate_http___localhost_1234_name_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (str)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be string", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'string', 'definitions': {'orNull': {'anyOf': [{'type': 'null'}, {'type': 'string', 'definitions': {'orNull': {'anyOf': [{'type': 'null'}, {'$ref': '#'}]}}}]}}}, rule='type') return data Validate result: {'name': 'foo'} ________ test[refRemote.json / root ref in remote ref / null is valid] _________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate_http___localhost_1234_object(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'$id': 'http://localhost:1234/object', 'type': 'object', 'properties': {'name': {'anyOf': [{'type': 'null'}, {'$ref': '#'}]}}, '$schema': 'http://json-schema.org/draft-06/schema'}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "name" in data_keys: data_keys.remove("name") data__name = data["name"] validate_http___localhost_1234_name_json__definitions_ornull(data__name, custom_formats, (name_prefix or "data") + ".name") return data def validate_http___localhost_1234_name_json__definitions_ornull(data, custom_formats={}, name_prefix=None): data_any_of_count1 = 0 if not data_any_of_count1: try: if not isinstance(data, (NoneType)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be null", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'null'}, rule='type') data_any_of_count1 += 1 except JsonSchemaValueException: pass if not data_any_of_count1: try: validate_http___localhost_1234_name_json(data, custom_formats, (name_prefix or "data") + "") data_any_of_count1 += 1 except JsonSchemaValueException: pass if not data_any_of_count1: raise JsonSchemaValueException("" + (name_prefix or "data") + " cannot be validated by any definition", value=data, name="" + (name_prefix or "data") + "", definition={'anyOf': [{'type': 'null'}, {'type': 'string', 'definitions': {'orNull': {'anyOf': [{'type': 'null'}, {'$ref': '#'}]}}}]}, rule='anyOf') return data def validate_http___localhost_1234_name_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (str)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be string", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'string', 'definitions': {'orNull': {'anyOf': [{'type': 'null'}, {'type': 'string', 'definitions': {'orNull': {'anyOf': [{'type': 'null'}, {'$ref': '#'}]}}}]}}}, rule='type') return data Validate result: {'name': None} ______ test[refRemote.json / root ref in remote ref / object is invalid] _______ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate_http___localhost_1234_object(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'$id': 'http://localhost:1234/object', 'type': 'object', 'properties': {'name': {'anyOf': [{'type': 'null'}, {'$ref': '#'}]}}, '$schema': 'http://json-schema.org/draft-06/schema'}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "name" in data_keys: data_keys.remove("name") data__name = data["name"] validate_http___localhost_1234_name_json__definitions_ornull(data__name, custom_formats, (name_prefix or "data") + ".name") return data def validate_http___localhost_1234_name_json__definitions_ornull(data, custom_formats={}, name_prefix=None): data_any_of_count1 = 0 if not data_any_of_count1: try: if not isinstance(data, (NoneType)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be null", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'null'}, rule='type') data_any_of_count1 += 1 except JsonSchemaValueException: pass if not data_any_of_count1: try: validate_http___localhost_1234_name_json(data, custom_formats, (name_prefix or "data") + "") data_any_of_count1 += 1 except JsonSchemaValueException: pass if not data_any_of_count1: raise JsonSchemaValueException("" + (name_prefix or "data") + " cannot be validated by any definition", value=data, name="" + (name_prefix or "data") + "", definition={'anyOf': [{'type': 'null'}, {'type': 'string', 'definitions': {'orNull': {'anyOf': [{'type': 'null'}, {'$ref': '#'}]}}}]}, rule='anyOf') return data def validate_http___localhost_1234_name_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (str)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be string", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'string', 'definitions': {'orNull': {'anyOf': [{'type': 'null'}, {'type': 'string', 'definitions': {'orNull': {'anyOf': [{'type': 'null'}, {'$ref': '#'}]}}}]}}}, rule='type') return data __________ test[const.json / const validation / same value is valid] ___________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data != 2: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be same as const definition: 2", value=data, name="" + (name_prefix or "data") + "", definition={'const': 2}, rule='const') return data Validate result: 2 ________ test[const.json / const validation / another value is invalid] ________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data != 2: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be same as const definition: 2", value=data, name="" + (name_prefix or "data") + "", definition={'const': 2, '$schema': 'http://json-schema.org/draft-07/schema'}, rule='const') return data ________ test[const.json / const validation / another type is invalid] _________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data != 2: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be same as const definition: 2", value=data, name="" + (name_prefix or "data") + "", definition={'const': 2, '$schema': 'http://json-schema.org/draft-07/schema'}, rule='const') return data _________ test[const.json / const with object / same object is valid] __________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data != {'foo': 'bar', 'baz': 'bax'}: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be same as const definition: {'foo': 'bar', 'baz': 'bax'}", value=data, name="" + (name_prefix or "data") + "", definition={'const': {'foo': 'bar', 'baz': 'bax'}}, rule='const') return data Validate result: {'foo': 'bar', 'baz': 'bax'} _ test[const.json / const with object / same object with different property order is valid] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data != {'foo': 'bar', 'baz': 'bax'}: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be same as const definition: {'foo': 'bar', 'baz': 'bax'}", value=data, name="" + (name_prefix or "data") + "", definition={'const': {'foo': 'bar', 'baz': 'bax'}, '$schema': 'http://json-schema.org/draft-07/schema'}, rule='const') return data Validate result: {'baz': 'bax', 'foo': 'bar'} _______ test[const.json / const with object / another object is invalid] _______ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data != {'foo': 'bar', 'baz': 'bax'}: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be same as const definition: {'foo': 'bar', 'baz': 'bax'}", value=data, name="" + (name_prefix or "data") + "", definition={'const': {'foo': 'bar', 'baz': 'bax'}, '$schema': 'http://json-schema.org/draft-07/schema'}, rule='const') return data ________ test[const.json / const with object / another type is invalid] ________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data != {'foo': 'bar', 'baz': 'bax'}: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be same as const definition: {'foo': 'bar', 'baz': 'bax'}", value=data, name="" + (name_prefix or "data") + "", definition={'const': {'foo': 'bar', 'baz': 'bax'}, '$schema': 'http://json-schema.org/draft-07/schema'}, rule='const') return data __________ test[const.json / const with array / same array is valid] ___________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data != [{'foo': 'bar'}]: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be same as const definition: [{'foo': 'bar'}]", value=data, name="" + (name_prefix or "data") + "", definition={'const': [{'foo': 'bar'}]}, rule='const') return data Validate result: [{'foo': 'bar'}] _____ test[const.json / const with array / another array item is invalid] ______ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data != [{'foo': 'bar'}]: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be same as const definition: [{'foo': 'bar'}]", value=data, name="" + (name_prefix or "data") + "", definition={'const': [{'foo': 'bar'}], '$schema': 'http://json-schema.org/draft-07/schema'}, rule='const') return data _ test[const.json / const with array / array with additional items is invalid] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data != [{'foo': 'bar'}]: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be same as const definition: [{'foo': 'bar'}]", value=data, name="" + (name_prefix or "data") + "", definition={'const': [{'foo': 'bar'}], '$schema': 'http://json-schema.org/draft-07/schema'}, rule='const') return data ______________ test[const.json / const with null / null is valid] ______________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data != None: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be same as const definition: None", value=data, name="" + (name_prefix or "data") + "", definition={'const': None}, rule='const') return data Validate result: None ___________ test[const.json / const with null / not null is invalid] ___________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data != None: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be same as const definition: None", value=data, name="" + (name_prefix or "data") + "", definition={'const': None, '$schema': 'http://json-schema.org/draft-07/schema'}, rule='const') return data _____ test[enum.json / simple enum validation / one of the enum is valid] ______ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data not in [1, 2, 3]: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be one of [1, 2, 3]", value=data, name="" + (name_prefix or "data") + "", definition={'enum': [1, 2, 3]}, rule='enum') return data Validate result: 1 _____ test[enum.json / simple enum validation / something else is invalid] _____ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data not in [1, 2, 3]: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be one of [1, 2, 3]", value=data, name="" + (name_prefix or "data") + "", definition={'enum': [1, 2, 3], '$schema': 'http://json-schema.org/draft-07/schema'}, rule='enum') return data __ test[enum.json / heterogeneous enum validation / one of the enum is valid] __ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data not in [6, 'foo', [], True, {'foo': 12}]: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be one of [6, 'foo', [], True, {'foo': 12}]", value=data, name="" + (name_prefix or "data") + "", definition={'enum': [6, 'foo', [], True, {'foo': 12}]}, rule='enum') return data Validate result: [] _ test[enum.json / heterogeneous enum validation / something else is invalid] __ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data not in [6, 'foo', [], True, {'foo': 12}]: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be one of [6, 'foo', [], True, {'foo': 12}]", value=data, name="" + (name_prefix or "data") + "", definition={'enum': [6, 'foo', [], True, {'foo': 12}], '$schema': 'http://json-schema.org/draft-07/schema'}, rule='enum') return data _ test[enum.json / heterogeneous enum validation / objects are deep compared] __ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data not in [6, 'foo', [], True, {'foo': 12}]: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be one of [6, 'foo', [], True, {'foo': 12}]", value=data, name="" + (name_prefix or "data") + "", definition={'enum': [6, 'foo', [], True, {'foo': 12}], '$schema': 'http://json-schema.org/draft-07/schema'}, rule='enum') return data ______ test[enum.json / enums in properties / both properties are valid] _______ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'object', 'properties': {'foo': {'enum': ['foo']}, 'bar': {'enum': ['bar']}}, 'required': ['bar']}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data__missing_keys = set(['bar']) - data.keys() if data__missing_keys: raise JsonSchemaValueException("" + (name_prefix or "data") + " must contain " + (str(sorted(data__missing_keys)) + " properties"), value=data, name="" + (name_prefix or "data") + "", definition={'type': 'object', 'properties': {'foo': {'enum': ['foo']}, 'bar': {'enum': ['bar']}}, 'required': ['bar']}, rule='required') data_keys = set(data.keys()) if "foo" in data_keys: data_keys.remove("foo") data__foo = data["foo"] if data__foo not in ['foo']: raise JsonSchemaValueException("" + (name_prefix or "data") + ".foo must be one of ['foo']", value=data__foo, name="" + (name_prefix or "data") + ".foo", definition={'enum': ['foo']}, rule='enum') if "bar" in data_keys: data_keys.remove("bar") data__bar = data["bar"] if data__bar not in ['bar']: raise JsonSchemaValueException("" + (name_prefix or "data") + ".bar must be one of ['bar']", value=data__bar, name="" + (name_prefix or "data") + ".bar", definition={'enum': ['bar']}, rule='enum') return data Validate result: {'foo': 'foo', 'bar': 'bar'} __ test[enum.json / enums in properties / missing optional property is valid] __ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'object', 'properties': {'foo': {'enum': ['foo']}, 'bar': {'enum': ['bar']}}, 'required': ['bar'], '$schema': 'http://json-schema.org/draft-07/schema'}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data__missing_keys = set(['bar']) - data.keys() if data__missing_keys: raise JsonSchemaValueException("" + (name_prefix or "data") + " must contain " + (str(sorted(data__missing_keys)) + " properties"), value=data, name="" + (name_prefix or "data") + "", definition={'type': 'object', 'properties': {'foo': {'enum': ['foo']}, 'bar': {'enum': ['bar']}}, 'required': ['bar'], '$schema': 'http://json-schema.org/draft-07/schema'}, rule='required') data_keys = set(data.keys()) if "foo" in data_keys: data_keys.remove("foo") data__foo = data["foo"] if data__foo not in ['foo']: raise JsonSchemaValueException("" + (name_prefix or "data") + ".foo must be one of ['foo']", value=data__foo, name="" + (name_prefix or "data") + ".foo", definition={'enum': ['foo']}, rule='enum') if "bar" in data_keys: data_keys.remove("bar") data__bar = data["bar"] if data__bar not in ['bar']: raise JsonSchemaValueException("" + (name_prefix or "data") + ".bar must be one of ['bar']", value=data__bar, name="" + (name_prefix or "data") + ".bar", definition={'enum': ['bar']}, rule='enum') return data Validate result: {'bar': 'bar'} _ test[enum.json / enums in properties / missing required property is invalid] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'object', 'properties': {'foo': {'enum': ['foo']}, 'bar': {'enum': ['bar']}}, 'required': ['bar'], '$schema': 'http://json-schema.org/draft-07/schema'}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data__missing_keys = set(['bar']) - data.keys() if data__missing_keys: raise JsonSchemaValueException("" + (name_prefix or "data") + " must contain " + (str(sorted(data__missing_keys)) + " properties"), value=data, name="" + (name_prefix or "data") + "", definition={'type': 'object', 'properties': {'foo': {'enum': ['foo']}, 'bar': {'enum': ['bar']}}, 'required': ['bar'], '$schema': 'http://json-schema.org/draft-07/schema'}, rule='required') data_keys = set(data.keys()) if "foo" in data_keys: data_keys.remove("foo") data__foo = data["foo"] if data__foo not in ['foo']: raise JsonSchemaValueException("" + (name_prefix or "data") + ".foo must be one of ['foo']", value=data__foo, name="" + (name_prefix or "data") + ".foo", definition={'enum': ['foo']}, rule='enum') if "bar" in data_keys: data_keys.remove("bar") data__bar = data["bar"] if data__bar not in ['bar']: raise JsonSchemaValueException("" + (name_prefix or "data") + ".bar must be one of ['bar']", value=data__bar, name="" + (name_prefix or "data") + ".bar", definition={'enum': ['bar']}, rule='enum') return data __ test[enum.json / enums in properties / missing all properties is invalid] ___ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'object', 'properties': {'foo': {'enum': ['foo']}, 'bar': {'enum': ['bar']}}, 'required': ['bar'], '$schema': 'http://json-schema.org/draft-07/schema'}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data__missing_keys = set(['bar']) - data.keys() if data__missing_keys: raise JsonSchemaValueException("" + (name_prefix or "data") + " must contain " + (str(sorted(data__missing_keys)) + " properties"), value=data, name="" + (name_prefix or "data") + "", definition={'type': 'object', 'properties': {'foo': {'enum': ['foo']}, 'bar': {'enum': ['bar']}}, 'required': ['bar'], '$schema': 'http://json-schema.org/draft-07/schema'}, rule='required') data_keys = set(data.keys()) if "foo" in data_keys: data_keys.remove("foo") data__foo = data["foo"] if data__foo not in ['foo']: raise JsonSchemaValueException("" + (name_prefix or "data") + ".foo must be one of ['foo']", value=data__foo, name="" + (name_prefix or "data") + ".foo", definition={'enum': ['foo']}, rule='enum') if "bar" in data_keys: data_keys.remove("bar") data__bar = data["bar"] if data__bar not in ['bar']: raise JsonSchemaValueException("" + (name_prefix or "data") + ".bar must be one of ['bar']", value=data__bar, name="" + (name_prefix or "data") + ".bar", definition={'enum': ['bar']}, rule='enum') return data ______ test[enum.json / enum with escaped characters / member 1 is valid] ______ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data not in ['foo\nbar', 'foo\rbar']: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be one of ['foo\nbar', 'foo\rbar']", value=data, name="" + (name_prefix or "data") + "", definition={'enum': ['foo\nbar', 'foo\rbar']}, rule='enum') return data Validate result: foo bar ______ test[enum.json / enum with escaped characters / member 2 is valid] ______ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data not in ['foo\nbar', 'foo\rbar']: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be one of ['foo\nbar', 'foo\rbar']", value=data, name="" + (name_prefix or "data") + "", definition={'enum': ['foo\nbar', 'foo\rbar'], '$schema': 'http://json-schema.org/draft-07/schema'}, rule='enum') return data Validate result: foo bar __ test[enum.json / enum with escaped characters / another string is invalid] __ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if data not in ['foo\nbar', 'foo\rbar']: raise JsonSchemaValueException("" + (name_prefix or "data") + " must be one of ['foo\nbar', 'foo\rbar']", value=data, name="" + (name_prefix or "data") + "", definition={'enum': ['foo\nbar', 'foo\rbar'], '$schema': 'http://json-schema.org/draft-07/schema'}, rule='enum') return data _ test[date-time.json / validation of date-time strings / a valid date-time string] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal import re from fastjsonschema import JsonSchemaValueException REGEX_PATTERNS = { 'date-time_re_pattern': re.compile('^\\d{4}-[01]\\d-[0-3]\\d(t|T)[0-2]\\d:[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:[+-][0-2]\\d:[0-5]\\d|[+-][0-2]\\d[0-5]\\d|z|Z)\\Z') } NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if isinstance(data, str): if not REGEX_PATTERNS["date-time_re_pattern"].match(data): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be date-time", value=data, name="" + (name_prefix or "data") + "", definition={'format': 'date-time'}, rule='format') return data Validate result: 1963-06-19T08:30:06.283185Z _ test[date-time.json / validation of date-time strings / a valid date-time string without second fraction] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal import re from fastjsonschema import JsonSchemaValueException REGEX_PATTERNS = { 'date-time_re_pattern': re.compile('^\\d{4}-[01]\\d-[0-3]\\d(t|T)[0-2]\\d:[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:[+-][0-2]\\d:[0-5]\\d|[+-][0-2]\\d[0-5]\\d|z|Z)\\Z') } NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if isinstance(data, str): if not REGEX_PATTERNS["date-time_re_pattern"].match(data): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be date-time", value=data, name="" + (name_prefix or "data") + "", definition={'format': 'date-time', '$schema': 'http://json-schema.org/draft-07/schema'}, rule='format') return data Validate result: 1963-06-19T08:30:06Z _ test[date-time.json / validation of date-time strings / a valid date-time string with plus offset] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal import re from fastjsonschema import JsonSchemaValueException REGEX_PATTERNS = { 'date-time_re_pattern': re.compile('^\\d{4}-[01]\\d-[0-3]\\d(t|T)[0-2]\\d:[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:[+-][0-2]\\d:[0-5]\\d|[+-][0-2]\\d[0-5]\\d|z|Z)\\Z') } NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if isinstance(data, str): if not REGEX_PATTERNS["date-time_re_pattern"].match(data): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be date-time", value=data, name="" + (name_prefix or "data") + "", definition={'format': 'date-time', '$schema': 'http://json-schema.org/draft-07/schema'}, rule='format') return data Validate result: 1937-01-01T12:00:27.87+00:20 _ test[date-time.json / validation of date-time strings / a valid date-time string with minus offset] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal import re from fastjsonschema import JsonSchemaValueException REGEX_PATTERNS = { 'date-time_re_pattern': re.compile('^\\d{4}-[01]\\d-[0-3]\\d(t|T)[0-2]\\d:[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:[+-][0-2]\\d:[0-5]\\d|[+-][0-2]\\d[0-5]\\d|z|Z)\\Z') } NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if isinstance(data, str): if not REGEX_PATTERNS["date-time_re_pattern"].match(data): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be date-time", value=data, name="" + (name_prefix or "data") + "", definition={'format': 'date-time', '$schema': 'http://json-schema.org/draft-07/schema'}, rule='format') return data Validate result: 1990-12-31T15:59:50.123-08:00 _ test[date-time.json / validation of date-time strings / a invalid day in date-time string] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal import re from fastjsonschema import JsonSchemaValueException REGEX_PATTERNS = { 'date-time_re_pattern': re.compile('^\\d{4}-[01]\\d-[0-3]\\d(t|T)[0-2]\\d:[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:[+-][0-2]\\d:[0-5]\\d|[+-][0-2]\\d[0-5]\\d|z|Z)\\Z') } NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if isinstance(data, str): if not REGEX_PATTERNS["date-time_re_pattern"].match(data): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be date-time", value=data, name="" + (name_prefix or "data") + "", definition={'format': 'date-time', '$schema': 'http://json-schema.org/draft-07/schema'}, rule='format') return data _ test[date-time.json / validation of date-time strings / an invalid offset in date-time string] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal import re from fastjsonschema import JsonSchemaValueException REGEX_PATTERNS = { 'date-time_re_pattern': re.compile('^\\d{4}-[01]\\d-[0-3]\\d(t|T)[0-2]\\d:[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:[+-][0-2]\\d:[0-5]\\d|[+-][0-2]\\d[0-5]\\d|z|Z)\\Z') } NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if isinstance(data, str): if not REGEX_PATTERNS["date-time_re_pattern"].match(data): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be date-time", value=data, name="" + (name_prefix or "data") + "", definition={'format': 'date-time', '$schema': 'http://json-schema.org/draft-07/schema'}, rule='format') return data _ test[date-time.json / validation of date-time strings / an invalid date-time string] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal import re from fastjsonschema import JsonSchemaValueException REGEX_PATTERNS = { 'date-time_re_pattern': re.compile('^\\d{4}-[01]\\d-[0-3]\\d(t|T)[0-2]\\d:[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:[+-][0-2]\\d:[0-5]\\d|[+-][0-2]\\d[0-5]\\d|z|Z)\\Z') } NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if isinstance(data, str): if not REGEX_PATTERNS["date-time_re_pattern"].match(data): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be date-time", value=data, name="" + (name_prefix or "data") + "", definition={'format': 'date-time', '$schema': 'http://json-schema.org/draft-07/schema'}, rule='format') return data _ test[date-time.json / validation of date-time strings / case-insensitive T and Z] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal import re from fastjsonschema import JsonSchemaValueException REGEX_PATTERNS = { 'date-time_re_pattern': re.compile('^\\d{4}-[01]\\d-[0-3]\\d(t|T)[0-2]\\d:[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:[+-][0-2]\\d:[0-5]\\d|[+-][0-2]\\d[0-5]\\d|z|Z)\\Z') } NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if isinstance(data, str): if not REGEX_PATTERNS["date-time_re_pattern"].match(data): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be date-time", value=data, name="" + (name_prefix or "data") + "", definition={'format': 'date-time', '$schema': 'http://json-schema.org/draft-07/schema'}, rule='format') return data Validate result: 1963-06-19t08:30:06.283185z _ test[date-time.json / validation of date-time strings / only RFC3339 not all of ISO 8601 are valid] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal import re from fastjsonschema import JsonSchemaValueException REGEX_PATTERNS = { 'date-time_re_pattern': re.compile('^\\d{4}-[01]\\d-[0-3]\\d(t|T)[0-2]\\d:[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:[+-][0-2]\\d:[0-5]\\d|[+-][0-2]\\d[0-5]\\d|z|Z)\\Z') } NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if isinstance(data, str): if not REGEX_PATTERNS["date-time_re_pattern"].match(data): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be date-time", value=data, name="" + (name_prefix or "data") + "", definition={'format': 'date-time', '$schema': 'http://json-schema.org/draft-07/schema'}, rule='format') return data ______ test[date.json / validation of date strings / a valid date string] ______ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal import re from fastjsonschema import JsonSchemaValueException REGEX_PATTERNS = { 'date_re_pattern': re.compile('^(?P\\d{4})-(?P(0[1-9]|1[0-2]))-(?P(0[1-9]|[12]\\d|3[01]))\\Z') } NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if isinstance(data, str): if not REGEX_PATTERNS["date_re_pattern"].match(data): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be date", value=data, name="" + (name_prefix or "data") + "", definition={'format': 'date'}, rule='format') return data Validate result: 1963-06-19 __ test[date.json / validation of date strings / an invalid date-time string] __ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal import re from fastjsonschema import JsonSchemaValueException REGEX_PATTERNS = { 'date_re_pattern': re.compile('^(?P\\d{4})-(?P(0[1-9]|1[0-2]))-(?P(0[1-9]|[12]\\d|3[01]))\\Z') } NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if isinstance(data, str): if not REGEX_PATTERNS["date_re_pattern"].match(data): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be date", value=data, name="" + (name_prefix or "data") + "", definition={'format': 'date', '$schema': 'http://json-schema.org/draft-07/schema'}, rule='format') return data _ test[date.json / validation of date strings / only RFC3339 not all of ISO 8601 are valid] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal import re from fastjsonschema import JsonSchemaValueException REGEX_PATTERNS = { 'date_re_pattern': re.compile('^(?P\\d{4})-(?P(0[1-9]|1[0-2]))-(?P(0[1-9]|[12]\\d|3[01]))\\Z') } NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if isinstance(data, str): if not REGEX_PATTERNS["date_re_pattern"].match(data): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be date", value=data, name="" + (name_prefix or "data") + "", definition={'format': 'date', '$schema': 'http://json-schema.org/draft-07/schema'}, rule='format') return data _ test[idn-hostname.json / validation of internationalized host names / illegal first char U+302E Hangul single dot tone mark] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal import re from fastjsonschema import JsonSchemaValueException REGEX_PATTERNS = { 'idn-hostname_re_pattern': re.compile('^(?!-)(xn--)?[a-zA-Z0-9][a-zA-Z0-9-_]{0,61}[a-zA-Z0-9]{0,1}\\.(?!-)(xn--)?([a-zA-Z0-9\\-]{1,50}|[a-zA-Z0-9-]{1,30}\\.[a-zA-Z]{2,})$') } NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if isinstance(data, str): if not REGEX_PATTERNS["idn-hostname_re_pattern"].match(data): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be idn-hostname", value=data, name="" + (name_prefix or "data") + "", definition={'format': 'idn-hostname', '$schema': 'http://json-schema.org/draft-07/schema'}, rule='format') return data _ test[idn-hostname.json / validation of internationalized host names / contains illegal char U+302E Hangul single dot tone mark] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal import re from fastjsonschema import JsonSchemaValueException REGEX_PATTERNS = { 'idn-hostname_re_pattern': re.compile('^(?!-)(xn--)?[a-zA-Z0-9][a-zA-Z0-9-_]{0,61}[a-zA-Z0-9]{0,1}\\.(?!-)(xn--)?([a-zA-Z0-9\\-]{1,50}|[a-zA-Z0-9-]{1,30}\\.[a-zA-Z]{2,})$') } NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if isinstance(data, str): if not REGEX_PATTERNS["idn-hostname_re_pattern"].match(data): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be idn-hostname", value=data, name="" + (name_prefix or "data") + "", definition={'format': 'idn-hostname', '$schema': 'http://json-schema.org/draft-07/schema'}, rule='format') return data _ test[idn-hostname.json / validation of internationalized host names / a host name with a component too long] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal import re from fastjsonschema import JsonSchemaValueException REGEX_PATTERNS = { 'idn-hostname_re_pattern': re.compile('^(?!-)(xn--)?[a-zA-Z0-9][a-zA-Z0-9-_]{0,61}[a-zA-Z0-9]{0,1}\\.(?!-)(xn--)?([a-zA-Z0-9\\-]{1,50}|[a-zA-Z0-9-]{1,30}\\.[a-zA-Z]{2,})$') } NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if isinstance(data, str): if not REGEX_PATTERNS["idn-hostname_re_pattern"].match(data): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be idn-hostname", value=data, name="" + (name_prefix or "data") + "", definition={'format': 'idn-hostname', '$schema': 'http://json-schema.org/draft-07/schema'}, rule='format') return data ____ test[ipv6.json / validation of IPv6 addresses / a valid IPv6 address] _____ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal import re from fastjsonschema import JsonSchemaValueException REGEX_PATTERNS = { 'ipv6_re_pattern': re.compile('^(?:(?:[0-9A-Fa-f]{1,4}:){6}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\\\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|::(?:[0-9A-Fa-f]{1,4}:){5}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\\\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(?:[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:){4}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\\\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:){3}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\\\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(?:(?:[0-9A-Fa-f]{1,4}:){,2}[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:){2}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\\\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(?:(?:[0-9A-Fa-f]{1,4}:){,3}[0-9A-Fa-f]{1,4})?::[0-9A-Fa-f]{1,4}:(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\\\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(?:(?:[0-9A-Fa-f]{1,4}:){,4}[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\\\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(?:(?:[0-9A-Fa-f]{1,4}:){,5}[0-9A-Fa-f]{1,4})?::[0-9A-Fa-f]{1,4}|(?:(?:[0-9A-Fa-f]{1,4}:){,6}[0-9A-Fa-f]{1,4})?::)\\Z') } NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if isinstance(data, str): if not REGEX_PATTERNS["ipv6_re_pattern"].match(data): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be ipv6", value=data, name="" + (name_prefix or "data") + "", definition={'format': 'ipv6'}, rule='format') return data Validate result: ::1 _ test[ipv6.json / validation of IPv6 addresses / an IPv6 address with out-of-range values] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal import re from fastjsonschema import JsonSchemaValueException REGEX_PATTERNS = { 'ipv6_re_pattern': re.compile('^(?:(?:[0-9A-Fa-f]{1,4}:){6}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\\\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|::(?:[0-9A-Fa-f]{1,4}:){5}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\\\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(?:[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:){4}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\\\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:){3}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\\\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(?:(?:[0-9A-Fa-f]{1,4}:){,2}[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:){2}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\\\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(?:(?:[0-9A-Fa-f]{1,4}:){,3}[0-9A-Fa-f]{1,4})?::[0-9A-Fa-f]{1,4}:(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\\\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(?:(?:[0-9A-Fa-f]{1,4}:){,4}[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\\\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(?:(?:[0-9A-Fa-f]{1,4}:){,5}[0-9A-Fa-f]{1,4})?::[0-9A-Fa-f]{1,4}|(?:(?:[0-9A-Fa-f]{1,4}:){,6}[0-9A-Fa-f]{1,4})?::)\\Z') } NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if isinstance(data, str): if not REGEX_PATTERNS["ipv6_re_pattern"].match(data): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be ipv6", value=data, name="" + (name_prefix or "data") + "", definition={'format': 'ipv6', '$schema': 'http://json-schema.org/draft-07/schema'}, rule='format') return data _ test[ipv6.json / validation of IPv6 addresses / an IPv6 address with too many components] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal import re from fastjsonschema import JsonSchemaValueException REGEX_PATTERNS = { 'ipv6_re_pattern': re.compile('^(?:(?:[0-9A-Fa-f]{1,4}:){6}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\\\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|::(?:[0-9A-Fa-f]{1,4}:){5}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\\\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(?:[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:){4}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\\\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:){3}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\\\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(?:(?:[0-9A-Fa-f]{1,4}:){,2}[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:){2}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\\\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(?:(?:[0-9A-Fa-f]{1,4}:){,3}[0-9A-Fa-f]{1,4})?::[0-9A-Fa-f]{1,4}:(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\\\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(?:(?:[0-9A-Fa-f]{1,4}:){,4}[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\\\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(?:(?:[0-9A-Fa-f]{1,4}:){,5}[0-9A-Fa-f]{1,4})?::[0-9A-Fa-f]{1,4}|(?:(?:[0-9A-Fa-f]{1,4}:){,6}[0-9A-Fa-f]{1,4})?::)\\Z') } NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if isinstance(data, str): if not REGEX_PATTERNS["ipv6_re_pattern"].match(data): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be ipv6", value=data, name="" + (name_prefix or "data") + "", definition={'format': 'ipv6', '$schema': 'http://json-schema.org/draft-07/schema'}, rule='format') return data _ test[ipv6.json / validation of IPv6 addresses / an IPv6 address containing illegal characters] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal import re from fastjsonschema import JsonSchemaValueException REGEX_PATTERNS = { 'ipv6_re_pattern': re.compile('^(?:(?:[0-9A-Fa-f]{1,4}:){6}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\\\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|::(?:[0-9A-Fa-f]{1,4}:){5}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\\\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(?:[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:){4}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\\\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:){3}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\\\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(?:(?:[0-9A-Fa-f]{1,4}:){,2}[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:){2}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\\\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(?:(?:[0-9A-Fa-f]{1,4}:){,3}[0-9A-Fa-f]{1,4})?::[0-9A-Fa-f]{1,4}:(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\\\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(?:(?:[0-9A-Fa-f]{1,4}:){,4}[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\\\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(?:(?:[0-9A-Fa-f]{1,4}:){,5}[0-9A-Fa-f]{1,4})?::[0-9A-Fa-f]{1,4}|(?:(?:[0-9A-Fa-f]{1,4}:){,6}[0-9A-Fa-f]{1,4})?::)\\Z') } NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if isinstance(data, str): if not REGEX_PATTERNS["ipv6_re_pattern"].match(data): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be ipv6", value=data, name="" + (name_prefix or "data") + "", definition={'format': 'ipv6', '$schema': 'http://json-schema.org/draft-07/schema'}, rule='format') return data ______ test[iri.json / validation of IRIs / a valid IRI with anchor tag] _______ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal import re from fastjsonschema import JsonSchemaValueException REGEX_PATTERNS = { 'iri_re_pattern': re.compile('^\\w+:(\\/?\\/?)[^\\s]+\\Z') } NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if isinstance(data, str): if not REGEX_PATTERNS["iri_re_pattern"].match(data): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be iri", value=data, name="" + (name_prefix or "data") + "", definition={'format': 'iri'}, rule='format') return data Validate result: http://ƒøø.ßår/?∂éœ=πîx#πîüx _ test[iri.json / validation of IRIs / a valid IRI with anchor tag and parantheses] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal import re from fastjsonschema import JsonSchemaValueException REGEX_PATTERNS = { 'iri_re_pattern': re.compile('^\\w+:(\\/?\\/?)[^\\s]+\\Z') } NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if isinstance(data, str): if not REGEX_PATTERNS["iri_re_pattern"].match(data): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be iri", value=data, name="" + (name_prefix or "data") + "", definition={'format': 'iri', '$schema': 'http://json-schema.org/draft-07/schema'}, rule='format') return data Validate result: http://ƒøø.com/blah_(wîkïpédiå)_blah#ßité-1 ___ test[iri.json / validation of IRIs / a valid IRI with URL-encoded stuff] ___ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal import re from fastjsonschema import JsonSchemaValueException REGEX_PATTERNS = { 'iri_re_pattern': re.compile('^\\w+:(\\/?\\/?)[^\\s]+\\Z') } NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if isinstance(data, str): if not REGEX_PATTERNS["iri_re_pattern"].match(data): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be iri", value=data, name="" + (name_prefix or "data") + "", definition={'format': 'iri', '$schema': 'http://json-schema.org/draft-07/schema'}, rule='format') return data Validate result: http://ƒøø.ßår/?q=Test%20URL-encoded%20stuff _ test[iri.json / validation of IRIs / a valid IRI with many special characters] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal import re from fastjsonschema import JsonSchemaValueException REGEX_PATTERNS = { 'iri_re_pattern': re.compile('^\\w+:(\\/?\\/?)[^\\s]+\\Z') } NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if isinstance(data, str): if not REGEX_PATTERNS["iri_re_pattern"].match(data): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be iri", value=data, name="" + (name_prefix or "data") + "", definition={'format': 'iri', '$schema': 'http://json-schema.org/draft-07/schema'}, rule='format') return data Validate result: http://-.~_!$&'()*+,;=:%40:80%2f::::::@example.com _______ test[iri.json / validation of IRIs / a valid IRI based on IPv6] ________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal import re from fastjsonschema import JsonSchemaValueException REGEX_PATTERNS = { 'iri_re_pattern': re.compile('^\\w+:(\\/?\\/?)[^\\s]+\\Z') } NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if isinstance(data, str): if not REGEX_PATTERNS["iri_re_pattern"].match(data): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be iri", value=data, name="" + (name_prefix or "data") + "", definition={'format': 'iri', '$schema': 'http://json-schema.org/draft-07/schema'}, rule='format') return data Validate result: http://[2001:0db8:85a3:0000:0000:8a2e:0370:7334] ___ test[iri.json / validation of IRIs / an invalid relative IRI Reference] ____ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal import re from fastjsonschema import JsonSchemaValueException REGEX_PATTERNS = { 'iri_re_pattern': re.compile('^\\w+:(\\/?\\/?)[^\\s]+\\Z') } NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if isinstance(data, str): if not REGEX_PATTERNS["iri_re_pattern"].match(data): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be iri", value=data, name="" + (name_prefix or "data") + "", definition={'format': 'iri', '$schema': 'http://json-schema.org/draft-07/schema'}, rule='format') return data _____________ test[iri.json / validation of IRIs / an invalid IRI] _____________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal import re from fastjsonschema import JsonSchemaValueException REGEX_PATTERNS = { 'iri_re_pattern': re.compile('^\\w+:(\\/?\\/?)[^\\s]+\\Z') } NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if isinstance(data, str): if not REGEX_PATTERNS["iri_re_pattern"].match(data): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be iri", value=data, name="" + (name_prefix or "data") + "", definition={'format': 'iri', '$schema': 'http://json-schema.org/draft-07/schema'}, rule='format') return data _ test[iri.json / validation of IRIs / an invalid IRI though valid IRI reference] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal import re from fastjsonschema import JsonSchemaValueException REGEX_PATTERNS = { 'iri_re_pattern': re.compile('^\\w+:(\\/?\\/?)[^\\s]+\\Z') } NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if isinstance(data, str): if not REGEX_PATTERNS["iri_re_pattern"].match(data): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be iri", value=data, name="" + (name_prefix or "data") + "", definition={'format': 'iri', '$schema': 'http://json-schema.org/draft-07/schema'}, rule='format') return data ______ test[time.json / validation of time strings / a valid time string] ______ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal import re from fastjsonschema import JsonSchemaValueException REGEX_PATTERNS = { 'time_re_pattern': re.compile('^(?P\\d{1,2}):(?P\\d{1,2})(?::(?P\\d{1,2})(?:\\.(?P\\d{1,6}))?([zZ]|[+-]\\d\\d:\\d\\d)?)?\\Z') } NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if isinstance(data, str): if not REGEX_PATTERNS["time_re_pattern"].match(data): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be time", value=data, name="" + (name_prefix or "data") + "", definition={'format': 'time'}, rule='format') return data Validate result: 08:30:06.283185Z ____ test[time.json / validation of time strings / an invalid time string] _____ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal import re from fastjsonschema import JsonSchemaValueException REGEX_PATTERNS = { 'time_re_pattern': re.compile('^(?P\\d{1,2}):(?P\\d{1,2})(?::(?P\\d{1,2})(?:\\.(?P\\d{1,6}))?([zZ]|[+-]\\d\\d:\\d\\d)?)?\\Z') } NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if isinstance(data, str): if not REGEX_PATTERNS["time_re_pattern"].match(data): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be time", value=data, name="" + (name_prefix or "data") + "", definition={'format': 'time', '$schema': 'http://json-schema.org/draft-07/schema'}, rule='format') return data _ test[time.json / validation of time strings / only RFC3339 not all of ISO 8601 are valid] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal import re from fastjsonschema import JsonSchemaValueException REGEX_PATTERNS = { 'time_re_pattern': re.compile('^(?P\\d{1,2}):(?P\\d{1,2})(?::(?P\\d{1,2})(?:\\.(?P\\d{1,6}))?([zZ]|[+-]\\d\\d:\\d\\d)?)?\\Z') } NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): if isinstance(data, str): if not REGEX_PATTERNS["time_re_pattern"].match(data): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be time", value=data, name="" + (name_prefix or "data") + "", definition={'format': 'time', '$schema': 'http://json-schema.org/draft-07/schema'}, rule='format') return data __________________ test[ref.json / root pointer ref / match] ___________________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "foo" in data_keys: data_keys.remove("foo") data__foo = data["foo"] validate(data__foo, custom_formats, (name_prefix or "data") + ".foo") if data_keys: raise JsonSchemaValueException("" + (name_prefix or "data") + " must not contain "+str(data_keys)+" properties", value=data, name="" + (name_prefix or "data") + "", definition={'properties': {'foo': {'properties': {'foo': {'$ref': '#'}}, 'additionalProperties': False}}, 'additionalProperties': False}, rule='additionalProperties') return data Validate result: {'foo': False} _____________ test[ref.json / root pointer ref / recursive match] ______________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "foo" in data_keys: data_keys.remove("foo") data__foo = data["foo"] validate(data__foo, custom_formats, (name_prefix or "data") + ".foo") if data_keys: raise JsonSchemaValueException("" + (name_prefix or "data") + " must not contain "+str(data_keys)+" properties", value=data, name="" + (name_prefix or "data") + "", definition={'properties': {'foo': {'properties': {'foo': {'$ref': '#'}}, 'additionalProperties': False, '$schema': 'http://json-schema.org/draft-07/schema'}}, 'additionalProperties': False, '$schema': 'http://json-schema.org/draft-07/schema'}, rule='additionalProperties') return data Validate result: {'foo': {'foo': False}} _________________ test[ref.json / root pointer ref / mismatch] _________________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "foo" in data_keys: data_keys.remove("foo") data__foo = data["foo"] validate(data__foo, custom_formats, (name_prefix or "data") + ".foo") if data_keys: raise JsonSchemaValueException("" + (name_prefix or "data") + " must not contain "+str(data_keys)+" properties", value=data, name="" + (name_prefix or "data") + "", definition={'properties': {'foo': {'properties': {'foo': {'$ref': '#'}}, 'additionalProperties': False, '$schema': 'http://json-schema.org/draft-07/schema'}}, 'additionalProperties': False, '$schema': 'http://json-schema.org/draft-07/schema'}, rule='additionalProperties') return data ____________ test[ref.json / root pointer ref / recursive mismatch] ____________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "foo" in data_keys: data_keys.remove("foo") data__foo = data["foo"] validate(data__foo, custom_formats, (name_prefix or "data") + ".foo") if data_keys: raise JsonSchemaValueException("" + (name_prefix or "data") + " must not contain "+str(data_keys)+" properties", value=data, name="" + (name_prefix or "data") + "", definition={'properties': {'foo': {'properties': {'foo': {'$ref': '#'}}, 'additionalProperties': False, '$schema': 'http://json-schema.org/draft-07/schema'}}, 'additionalProperties': False, '$schema': 'http://json-schema.org/draft-07/schema'}, rule='additionalProperties') return data ___________ test[ref.json / relative pointer ref to object / match] ____________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "foo" in data_keys: data_keys.remove("foo") data__foo = data["foo"] if not isinstance(data__foo, (int)) and not (isinstance(data__foo, float) and data__foo.is_integer()) or isinstance(data__foo, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + ".foo must be integer", value=data__foo, name="" + (name_prefix or "data") + ".foo", definition={'type': 'integer'}, rule='type') if "bar" in data_keys: data_keys.remove("bar") data__bar = data["bar"] validate___properties_foo(data__bar, custom_formats, (name_prefix or "data") + ".bar") return data def validate___properties_foo(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data Validate result: {'bar': 3} __________ test[ref.json / relative pointer ref to object / mismatch] __________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "foo" in data_keys: data_keys.remove("foo") data__foo = data["foo"] if not isinstance(data__foo, (int)) and not (isinstance(data__foo, float) and data__foo.is_integer()) or isinstance(data__foo, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + ".foo must be integer", value=data__foo, name="" + (name_prefix or "data") + ".foo", definition={'type': 'integer'}, rule='type') if "bar" in data_keys: data_keys.remove("bar") data__bar = data["bar"] validate___properties_foo(data__bar, custom_formats, (name_prefix or "data") + ".bar") return data def validate___properties_foo(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data _________ test[ref.json / relative pointer ref to array / match array] _________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_list = isinstance(data, (list, tuple)) if data_is_list: data_len = len(data) if data_len > 0: data__0 = data[0] if not isinstance(data__0, (int)) and not (isinstance(data__0, float) and data__0.is_integer()) or isinstance(data__0, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + "[0] must be integer", value=data__0, name="" + (name_prefix or "data") + "[0]", definition={'type': 'integer'}, rule='type') if data_len > 1: data__1 = data[1] validate___items_0(data__1, custom_formats, (name_prefix or "data") + "[1]") return data def validate___items_0(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data Validate result: [1, 2] _______ test[ref.json / relative pointer ref to array / mismatch array] ________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_list = isinstance(data, (list, tuple)) if data_is_list: data_len = len(data) if data_len > 0: data__0 = data[0] if not isinstance(data__0, (int)) and not (isinstance(data__0, float) and data__0.is_integer()) or isinstance(data__0, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + "[0] must be integer", value=data__0, name="" + (name_prefix or "data") + "[0]", definition={'type': 'integer'}, rule='type') if data_len > 1: data__1 = data[1] validate___items_0(data__1, custom_formats, (name_prefix or "data") + "[1]") return data def validate___items_0(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data _____________ test[ref.json / escaped pointer ref / slash invalid] _____________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "tilda" in data_keys: data_keys.remove("tilda") data__tilda = data["tilda"] validate___tilda_field(data__tilda, custom_formats, (name_prefix or "data") + ".tilda") if "slash" in data_keys: data_keys.remove("slash") data__slash = data["slash"] validate___slash_field(data__slash, custom_formats, (name_prefix or "data") + ".slash") if "percent" in data_keys: data_keys.remove("percent") data__percent = data["percent"] validate___percent_field(data__percent, custom_formats, (name_prefix or "data") + ".percent") return data def validate___percent_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data def validate___slash_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data def validate___tilda_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data _____________ test[ref.json / escaped pointer ref / tilda invalid] _____________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "tilda" in data_keys: data_keys.remove("tilda") data__tilda = data["tilda"] validate___tilda_field(data__tilda, custom_formats, (name_prefix or "data") + ".tilda") if "slash" in data_keys: data_keys.remove("slash") data__slash = data["slash"] validate___slash_field(data__slash, custom_formats, (name_prefix or "data") + ".slash") if "percent" in data_keys: data_keys.remove("percent") data__percent = data["percent"] validate___percent_field(data__percent, custom_formats, (name_prefix or "data") + ".percent") return data def validate___percent_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data def validate___slash_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data def validate___tilda_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data ____________ test[ref.json / escaped pointer ref / percent invalid] ____________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "tilda" in data_keys: data_keys.remove("tilda") data__tilda = data["tilda"] validate___tilda_field(data__tilda, custom_formats, (name_prefix or "data") + ".tilda") if "slash" in data_keys: data_keys.remove("slash") data__slash = data["slash"] validate___slash_field(data__slash, custom_formats, (name_prefix or "data") + ".slash") if "percent" in data_keys: data_keys.remove("percent") data__percent = data["percent"] validate___percent_field(data__percent, custom_formats, (name_prefix or "data") + ".percent") return data def validate___percent_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data def validate___slash_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data def validate___tilda_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data ______________ test[ref.json / escaped pointer ref / slash valid] ______________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "tilda" in data_keys: data_keys.remove("tilda") data__tilda = data["tilda"] validate___tilda_field(data__tilda, custom_formats, (name_prefix or "data") + ".tilda") if "slash" in data_keys: data_keys.remove("slash") data__slash = data["slash"] validate___slash_field(data__slash, custom_formats, (name_prefix or "data") + ".slash") if "percent" in data_keys: data_keys.remove("percent") data__percent = data["percent"] validate___percent_field(data__percent, custom_formats, (name_prefix or "data") + ".percent") return data def validate___percent_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data def validate___slash_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data def validate___tilda_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data Validate result: {'slash': 123} ______________ test[ref.json / escaped pointer ref / tilda valid] ______________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "tilda" in data_keys: data_keys.remove("tilda") data__tilda = data["tilda"] validate___tilda_field(data__tilda, custom_formats, (name_prefix or "data") + ".tilda") if "slash" in data_keys: data_keys.remove("slash") data__slash = data["slash"] validate___slash_field(data__slash, custom_formats, (name_prefix or "data") + ".slash") if "percent" in data_keys: data_keys.remove("percent") data__percent = data["percent"] validate___percent_field(data__percent, custom_formats, (name_prefix or "data") + ".percent") return data def validate___percent_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data def validate___slash_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data def validate___tilda_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data Validate result: {'tilda': 123} _____________ test[ref.json / escaped pointer ref / percent valid] _____________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "tilda" in data_keys: data_keys.remove("tilda") data__tilda = data["tilda"] validate___tilda_field(data__tilda, custom_formats, (name_prefix or "data") + ".tilda") if "slash" in data_keys: data_keys.remove("slash") data__slash = data["slash"] validate___slash_field(data__slash, custom_formats, (name_prefix or "data") + ".slash") if "percent" in data_keys: data_keys.remove("percent") data__percent = data["percent"] validate___percent_field(data__percent, custom_formats, (name_prefix or "data") + ".percent") return data def validate___percent_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data def validate___slash_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data def validate___tilda_field(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data Validate result: {'percent': 123} _______________ test[ref.json / nested refs / nested ref valid] ________________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): validate___definitions_c(data, custom_formats, (name_prefix or "data") + "") return data def validate___definitions_c(data, custom_formats={}, name_prefix=None): validate___definitions_b(data, custom_formats, (name_prefix or "data") + "") return data def validate___definitions_b(data, custom_formats={}, name_prefix=None): validate___definitions_a(data, custom_formats, (name_prefix or "data") + "") return data def validate___definitions_a(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data Validate result: 5 ______________ test[ref.json / nested refs / nested ref invalid] _______________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): validate___definitions_c(data, custom_formats, (name_prefix or "data") + "") return data def validate___definitions_c(data, custom_formats={}, name_prefix=None): validate___definitions_b(data, custom_formats, (name_prefix or "data") + "") return data def validate___definitions_b(data, custom_formats={}, name_prefix=None): validate___definitions_a(data, custom_formats, (name_prefix or "data") + "") return data def validate___definitions_a(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data _______ test[ref.json / ref overrides any sibling keywords / ref valid] ________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "foo" in data_keys: data_keys.remove("foo") data__foo = data["foo"] validate___definitions_reffed(data__foo, custom_formats, (name_prefix or "data") + ".foo") return data def validate___definitions_reffed(data, custom_formats={}, name_prefix=None): if not isinstance(data, (list, tuple)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be array", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'array'}, rule='type') return data Validate result: {'foo': []} _ test[ref.json / ref overrides any sibling keywords / ref valid, maxItems ignored] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "foo" in data_keys: data_keys.remove("foo") data__foo = data["foo"] validate___definitions_reffed(data__foo, custom_formats, (name_prefix or "data") + ".foo") return data def validate___definitions_reffed(data, custom_formats={}, name_prefix=None): if not isinstance(data, (list, tuple)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be array", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'array'}, rule='type') return data Validate result: {'foo': [1, 2, 3]} ______ test[ref.json / ref overrides any sibling keywords / ref invalid] _______ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "foo" in data_keys: data_keys.remove("foo") data__foo = data["foo"] validate___definitions_reffed(data__foo, custom_formats, (name_prefix or "data") + ".foo") return data def validate___definitions_reffed(data, custom_formats={}, name_prefix=None): if not isinstance(data, (list, tuple)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be array", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'array'}, rule='type') return data _ test[ref.json / property named $ref that is not a reference / property named $ref valid] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "$ref" in data_keys: data_keys.remove("$ref") data__ref = data["$ref"] if not isinstance(data__ref, (str)): raise JsonSchemaValueException("" + (name_prefix or "data") + ".$ref must be string", value=data__ref, name="" + (name_prefix or "data") + ".$ref", definition={'type': 'string'}, rule='type') return data Validate result: {'$ref': 'a'} _ test[ref.json / property named $ref that is not a reference / property named $ref invalid] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "$ref" in data_keys: data_keys.remove("$ref") data__ref = data["$ref"] if not isinstance(data__ref, (str)): raise JsonSchemaValueException("" + (name_prefix or "data") + ".$ref must be string", value=data__ref, name="" + (name_prefix or "data") + ".$ref", definition={'type': 'string'}, rule='type') return data ______ test[ref.json / $ref to boolean schema true / any value is valid] _______ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): validate___definitions_bool(data, custom_formats, (name_prefix or "data") + "") return data def validate___definitions_bool(data, custom_formats={}, name_prefix=None): pass return data Validate result: foo _____ test[ref.json / $ref to boolean schema false / any value is invalid] _____ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): validate___definitions_bool(data, custom_formats, (name_prefix or "data") + "") return data def validate___definitions_bool(data, custom_formats={}, name_prefix=None): raise JsonSchemaValueException("" + (name_prefix or "data") + " must not be there", value=data, name="" + (name_prefix or "data") + "", definition=False, rule=None) return data ______ test[ref.json / Recursive references between schemas / valid tree] ______ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate_http___localhost_1234_tree(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'$id': 'http://localhost:1234/tree', 'description': 'tree of nodes', 'type': 'object', 'properties': {'meta': {'type': 'string'}, 'nodes': {'type': 'array', 'items': {'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}}, 'required': ['meta', 'nodes'], 'definitions': {'node': {'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$id': 'http://localhost:1234/tree', 'description': 'tree of nodes', 'type': 'object', 'properties': {'meta': {'type': 'string'}, 'nodes': {'type': 'array', 'items': {'$ref': 'http://localhost:1234/node'}}}, 'required': ['meta', 'nodes'], 'definitions': {'node': {'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}}}, 'required': ['value']}}}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data__missing_keys = set(['meta', 'nodes']) - data.keys() if data__missing_keys: raise JsonSchemaValueException("" + (name_prefix or "data") + " must contain " + (str(sorted(data__missing_keys)) + " properties"), value=data, name="" + (name_prefix or "data") + "", definition={'$id': 'http://localhost:1234/tree', 'description': 'tree of nodes', 'type': 'object', 'properties': {'meta': {'type': 'string'}, 'nodes': {'type': 'array', 'items': {'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}}, 'required': ['meta', 'nodes'], 'definitions': {'node': {'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$id': 'http://localhost:1234/tree', 'description': 'tree of nodes', 'type': 'object', 'properties': {'meta': {'type': 'string'}, 'nodes': {'type': 'array', 'items': {'$ref': 'http://localhost:1234/node'}}}, 'required': ['meta', 'nodes'], 'definitions': {'node': {'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}}}, 'required': ['value']}}}, rule='required') data_keys = set(data.keys()) if "meta" in data_keys: data_keys.remove("meta") data__meta = data["meta"] if not isinstance(data__meta, (str)): raise JsonSchemaValueException("" + (name_prefix or "data") + ".meta must be string", value=data__meta, name="" + (name_prefix or "data") + ".meta", definition={'type': 'string'}, rule='type') if "nodes" in data_keys: data_keys.remove("nodes") data__nodes = data["nodes"] if not isinstance(data__nodes, (list, tuple)): raise JsonSchemaValueException("" + (name_prefix or "data") + ".nodes must be array", value=data__nodes, name="" + (name_prefix or "data") + ".nodes", definition={'type': 'array', 'items': {'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}, rule='type') data__nodes_is_list = isinstance(data__nodes, (list, tuple)) if data__nodes_is_list: data__nodes_len = len(data__nodes) for data__nodes_x, data__nodes_item in enumerate(data__nodes): validate_http___localhost_1234_node(data__nodes_item, custom_formats, (name_prefix or "data") + ".nodes[{data__nodes_x}]".format(**locals())) return data def validate_http___localhost_1234_node(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$id': 'http://localhost:1234/tree', 'description': 'tree of nodes', 'type': 'object', 'properties': {'meta': {'type': 'string'}, 'nodes': {'type': 'array', 'items': {'$ref': 'http://localhost:1234/node'}}}, 'required': ['meta', 'nodes'], 'definitions': {'node': {'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}}}, 'required': ['value']}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data__missing_keys = set(['value']) - data.keys() if data__missing_keys: raise JsonSchemaValueException("" + (name_prefix or "data") + " must contain " + (str(sorted(data__missing_keys)) + " properties"), value=data, name="" + (name_prefix or "data") + "", definition={'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$id': 'http://localhost:1234/tree', 'description': 'tree of nodes', 'type': 'object', 'properties': {'meta': {'type': 'string'}, 'nodes': {'type': 'array', 'items': {'$ref': 'http://localhost:1234/node'}}}, 'required': ['meta', 'nodes'], 'definitions': {'node': {'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}}}, 'required': ['value']}, rule='required') data_keys = set(data.keys()) if "value" in data_keys: data_keys.remove("value") data__value = data["value"] if not isinstance(data__value, (int, float, Decimal)) or isinstance(data__value, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + ".value must be number", value=data__value, name="" + (name_prefix or "data") + ".value", definition={'type': 'number'}, rule='type') if "subtree" in data_keys: data_keys.remove("subtree") data__subtree = data["subtree"] validate_http___localhost_1234_tree(data__subtree, custom_formats, (name_prefix or "data") + ".subtree") return data Validate result: {'meta': 'root', 'nodes': [{'value': 1, 'subtree': {'meta': 'child', 'nodes': [{'value': 1.1}, {'value': 1.2}]}}, {'value': 2, 'subtree': {'meta': 'child', 'nodes': [{'value': 2.1}, {'value': 2.2}]}}]} _____ test[ref.json / Recursive references between schemas / invalid tree] _____ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate_http___localhost_1234_tree(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'$id': 'http://localhost:1234/tree', 'description': 'tree of nodes', 'type': 'object', 'properties': {'meta': {'type': 'string'}, 'nodes': {'type': 'array', 'items': {'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}}, 'required': ['meta', 'nodes'], 'definitions': {'node': {'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$id': 'http://localhost:1234/tree', 'description': 'tree of nodes', 'type': 'object', 'properties': {'meta': {'type': 'string'}, 'nodes': {'type': 'array', 'items': {'$ref': 'http://localhost:1234/node'}}}, 'required': ['meta', 'nodes'], 'definitions': {'node': {'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}, '$schema': 'http://json-schema.org/draft-07/schema'}}, 'required': ['value']}}, '$schema': 'http://json-schema.org/draft-07/schema'}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data__missing_keys = set(['meta', 'nodes']) - data.keys() if data__missing_keys: raise JsonSchemaValueException("" + (name_prefix or "data") + " must contain " + (str(sorted(data__missing_keys)) + " properties"), value=data, name="" + (name_prefix or "data") + "", definition={'$id': 'http://localhost:1234/tree', 'description': 'tree of nodes', 'type': 'object', 'properties': {'meta': {'type': 'string'}, 'nodes': {'type': 'array', 'items': {'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}}, 'required': ['meta', 'nodes'], 'definitions': {'node': {'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$id': 'http://localhost:1234/tree', 'description': 'tree of nodes', 'type': 'object', 'properties': {'meta': {'type': 'string'}, 'nodes': {'type': 'array', 'items': {'$ref': 'http://localhost:1234/node'}}}, 'required': ['meta', 'nodes'], 'definitions': {'node': {'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}, '$schema': 'http://json-schema.org/draft-07/schema'}}, 'required': ['value']}}, '$schema': 'http://json-schema.org/draft-07/schema'}, rule='required') data_keys = set(data.keys()) if "meta" in data_keys: data_keys.remove("meta") data__meta = data["meta"] if not isinstance(data__meta, (str)): raise JsonSchemaValueException("" + (name_prefix or "data") + ".meta must be string", value=data__meta, name="" + (name_prefix or "data") + ".meta", definition={'type': 'string'}, rule='type') if "nodes" in data_keys: data_keys.remove("nodes") data__nodes = data["nodes"] if not isinstance(data__nodes, (list, tuple)): raise JsonSchemaValueException("" + (name_prefix or "data") + ".nodes must be array", value=data__nodes, name="" + (name_prefix or "data") + ".nodes", definition={'type': 'array', 'items': {'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}, rule='type') data__nodes_is_list = isinstance(data__nodes, (list, tuple)) if data__nodes_is_list: data__nodes_len = len(data__nodes) for data__nodes_x, data__nodes_item in enumerate(data__nodes): validate_http___localhost_1234_node(data__nodes_item, custom_formats, (name_prefix or "data") + ".nodes[{data__nodes_x}]".format(**locals())) return data def validate_http___localhost_1234_node(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$id': 'http://localhost:1234/tree', 'description': 'tree of nodes', 'type': 'object', 'properties': {'meta': {'type': 'string'}, 'nodes': {'type': 'array', 'items': {'$ref': 'http://localhost:1234/node'}}}, 'required': ['meta', 'nodes'], 'definitions': {'node': {'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}, '$schema': 'http://json-schema.org/draft-07/schema'}}, 'required': ['value']}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data__missing_keys = set(['value']) - data.keys() if data__missing_keys: raise JsonSchemaValueException("" + (name_prefix or "data") + " must contain " + (str(sorted(data__missing_keys)) + " properties"), value=data, name="" + (name_prefix or "data") + "", definition={'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$id': 'http://localhost:1234/tree', 'description': 'tree of nodes', 'type': 'object', 'properties': {'meta': {'type': 'string'}, 'nodes': {'type': 'array', 'items': {'$ref': 'http://localhost:1234/node'}}}, 'required': ['meta', 'nodes'], 'definitions': {'node': {'$id': 'http://localhost:1234/node', 'description': 'node', 'type': 'object', 'properties': {'value': {'type': 'number'}, 'subtree': {'$ref': 'http://localhost:1234/tree'}}, 'required': ['value']}}, '$schema': 'http://json-schema.org/draft-07/schema'}}, 'required': ['value']}, rule='required') data_keys = set(data.keys()) if "value" in data_keys: data_keys.remove("value") data__value = data["value"] if not isinstance(data__value, (int, float, Decimal)) or isinstance(data__value, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + ".value must be number", value=data__value, name="" + (name_prefix or "data") + ".value", definition={'type': 'number'}, rule='type') if "subtree" in data_keys: data_keys.remove("subtree") data__subtree = data["subtree"] validate_http___localhost_1234_tree(data__subtree, custom_formats, (name_prefix or "data") + ".subtree") return data _______ test[ref.json / refs with quote / object with numbers is valid] ________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "foo\"bar" in data_keys: data_keys.remove("foo\"bar") data__foobar = data["foo\"bar"] validate___definitions_foobar(data__foobar, custom_formats, (name_prefix or "data") + ".foo\"bar") return data def validate___definitions_foobar(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int, float, Decimal)) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be number", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'number'}, rule='type') return data Validate result: {'foo"bar': 1} ______ test[ref.json / refs with quote / object with strings is invalid] _______ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "foo\"bar" in data_keys: data_keys.remove("foo\"bar") data__foobar = data["foo\"bar"] validate___definitions_foobar(data__foobar, custom_formats, (name_prefix or "data") + ".foo\"bar") return data def validate___definitions_foobar(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int, float, Decimal)) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be number", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'number'}, rule='type') return data _____________ test[refRemote.json / remote ref / remote ref valid] _____________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): validate_http___localhost_1234_integer_json(data, custom_formats, (name_prefix or "data") + "") return data def validate_http___localhost_1234_integer_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data Validate result: 1 ____________ test[refRemote.json / remote ref / remote ref invalid] ____________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): validate_http___localhost_1234_integer_json(data, custom_formats, (name_prefix or "data") + "") return data def validate_http___localhost_1234_integer_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data __ test[refRemote.json / fragment within remote ref / remote fragment valid] ___ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): validate_http___localhost_1234_subschemas_json__integer(data, custom_formats, (name_prefix or "data") + "") return data def validate_http___localhost_1234_subschemas_json__integer(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data Validate result: 1 _ test[refRemote.json / fragment within remote ref / remote fragment invalid] __ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): validate_http___localhost_1234_subschemas_json__integer(data, custom_formats, (name_prefix or "data") + "") return data def validate_http___localhost_1234_subschemas_json__integer(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data _____ test[refRemote.json / ref within remote ref / ref within ref valid] ______ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): validate_http___localhost_1234_subschemas_json__reftointeger(data, custom_formats, (name_prefix or "data") + "") return data def validate_http___localhost_1234_subschemas_json__reftointeger(data, custom_formats={}, name_prefix=None): validate_http___localhost_1234_subschemas_json__integer(data, custom_formats, (name_prefix or "data") + "") return data def validate_http___localhost_1234_subschemas_json__integer(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data Validate result: 1 ____ test[refRemote.json / ref within remote ref / ref within ref invalid] _____ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate(data, custom_formats={}, name_prefix=None): validate_http___localhost_1234_subschemas_json__reftointeger(data, custom_formats, (name_prefix or "data") + "") return data def validate_http___localhost_1234_subschemas_json__reftointeger(data, custom_formats={}, name_prefix=None): validate_http___localhost_1234_subschemas_json__integer(data, custom_formats, (name_prefix or "data") + "") return data def validate_http___localhost_1234_subschemas_json__integer(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data ______ test[refRemote.json / base URI change / base URI change ref valid] ______ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate_http___localhost_1234(data, custom_formats={}, name_prefix=None): data_is_list = isinstance(data, (list, tuple)) if data_is_list: data_len = len(data) for data_x, data_item in enumerate(data): data_item_is_list = isinstance(data_item, (list, tuple)) if data_item_is_list: data_item_len = len(data_item) for data_item_x, data_item_item in enumerate(data_item): validate_http___localhost_1234_folder_folderinteger_json(data_item_item, custom_formats, (name_prefix or "data") + "[{data_x}][{data_item_x}]".format(**locals())) return data def validate_http___localhost_1234_folder_folderinteger_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data Validate result: [[1]] _____ test[refRemote.json / base URI change / base URI change ref invalid] _____ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate_http___localhost_1234(data, custom_formats={}, name_prefix=None): data_is_list = isinstance(data, (list, tuple)) if data_is_list: data_len = len(data) for data_x, data_item in enumerate(data): data_item_is_list = isinstance(data_item, (list, tuple)) if data_item_is_list: data_item_len = len(data_item) for data_item_x, data_item_item in enumerate(data_item): validate_http___localhost_1234_folder_folderinteger_json(data_item_item, custom_formats, (name_prefix or "data") + "[{data_x}][{data_item_x}]".format(**locals())) return data def validate_http___localhost_1234_folder_folderinteger_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data ___ test[refRemote.json / base URI change - change folder / number is valid] ___ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate_http___localhost_1234_scope_change_defs1_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'$id': 'http://localhost:1234/scope_change_defs1.json', 'type': 'object', 'properties': {'list': {'$id': 'folder/', 'type': 'array', 'items': {'$ref': 'http://localhost:1234/folder/folderInteger.json'}}}, 'definitions': {'baz': {'$id': 'folder/', 'type': 'array', 'items': {'type': 'integer'}}}}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "list" in data_keys: data_keys.remove("list") data__list = data["list"] validate_http___localhost_1234_scope_change_defs1_json__definitions_baz(data__list, custom_formats, (name_prefix or "data") + ".list") return data def validate_http___localhost_1234_scope_change_defs1_json__definitions_baz(data, custom_formats={}, name_prefix=None): if not isinstance(data, (list, tuple)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be array", value=data, name="" + (name_prefix or "data") + "", definition={'$id': 'folder/', 'type': 'array', 'items': {'type': 'integer'}}, rule='type') data_is_list = isinstance(data, (list, tuple)) if data_is_list: data_len = len(data) for data_x, data_item in enumerate(data): validate_http___localhost_1234_folder_folderinteger_json(data_item, custom_formats, (name_prefix or "data") + "[{data_x}]".format(**locals())) return data def validate_http___localhost_1234_folder_folderinteger_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data Validate result: {'list': [1]} __ test[refRemote.json / base URI change - change folder / string is invalid] __ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate_http___localhost_1234_scope_change_defs1_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'$id': 'http://localhost:1234/scope_change_defs1.json', 'type': 'object', 'properties': {'list': {'$id': 'folder/', 'type': 'array', 'items': {'$ref': 'http://localhost:1234/folder/folderInteger.json'}}}, 'definitions': {'baz': {'$id': 'folder/', 'type': 'array', 'items': {'type': 'integer'}}}, '$schema': 'http://json-schema.org/draft-07/schema'}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "list" in data_keys: data_keys.remove("list") data__list = data["list"] validate_http___localhost_1234_scope_change_defs1_json__definitions_baz(data__list, custom_formats, (name_prefix or "data") + ".list") return data def validate_http___localhost_1234_scope_change_defs1_json__definitions_baz(data, custom_formats={}, name_prefix=None): if not isinstance(data, (list, tuple)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be array", value=data, name="" + (name_prefix or "data") + "", definition={'$id': 'folder/', 'type': 'array', 'items': {'type': 'integer'}}, rule='type') data_is_list = isinstance(data, (list, tuple)) if data_is_list: data_len = len(data) for data_x, data_item in enumerate(data): validate_http___localhost_1234_folder_folderinteger_json(data_item, custom_formats, (name_prefix or "data") + "[{data_x}]".format(**locals())) return data def validate_http___localhost_1234_folder_folderinteger_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data _ test[refRemote.json / base URI change - change folder in subschema / number is valid] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate_http___localhost_1234_scope_change_defs2_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'$id': 'http://localhost:1234/scope_change_defs2.json', 'type': 'object', 'properties': {'list': {'type': 'array', 'items': {'$ref': 'http://localhost:1234/folder/folderInteger.json'}}}, 'definitions': {'baz': {'$id': 'folder/', 'definitions': {'bar': {'type': 'array', 'items': {'type': 'integer'}}}}}}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "list" in data_keys: data_keys.remove("list") data__list = data["list"] validate_http___localhost_1234_scope_change_defs2_json__definitions_baz_definitions_bar(data__list, custom_formats, (name_prefix or "data") + ".list") return data def validate_http___localhost_1234_scope_change_defs2_json__definitions_baz_definitions_bar(data, custom_formats={}, name_prefix=None): if not isinstance(data, (list, tuple)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be array", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'array', 'items': {'type': 'integer'}}, rule='type') data_is_list = isinstance(data, (list, tuple)) if data_is_list: data_len = len(data) for data_x, data_item in enumerate(data): validate_http___localhost_1234_folder_folderinteger_json(data_item, custom_formats, (name_prefix or "data") + "[{data_x}]".format(**locals())) return data def validate_http___localhost_1234_folder_folderinteger_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data Validate result: {'list': [1]} _ test[refRemote.json / base URI change - change folder in subschema / string is invalid] _ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate_http___localhost_1234_scope_change_defs2_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'$id': 'http://localhost:1234/scope_change_defs2.json', 'type': 'object', 'properties': {'list': {'type': 'array', 'items': {'$ref': 'http://localhost:1234/folder/folderInteger.json'}}}, 'definitions': {'baz': {'$id': 'folder/', 'definitions': {'bar': {'type': 'array', 'items': {'type': 'integer'}}}}}, '$schema': 'http://json-schema.org/draft-07/schema'}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "list" in data_keys: data_keys.remove("list") data__list = data["list"] validate_http___localhost_1234_scope_change_defs2_json__definitions_baz_definitions_bar(data__list, custom_formats, (name_prefix or "data") + ".list") return data def validate_http___localhost_1234_scope_change_defs2_json__definitions_baz_definitions_bar(data, custom_formats={}, name_prefix=None): if not isinstance(data, (list, tuple)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be array", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'array', 'items': {'type': 'integer'}}, rule='type') data_is_list = isinstance(data, (list, tuple)) if data_is_list: data_len = len(data) for data_x, data_item in enumerate(data): validate_http___localhost_1234_folder_folderinteger_json(data_item, custom_formats, (name_prefix or "data") + "[{data_x}]".format(**locals())) return data def validate_http___localhost_1234_folder_folderinteger_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (int)) and not (isinstance(data, float) and data.is_integer()) or isinstance(data, bool): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be integer", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'integer'}, rule='type') return data _______ test[refRemote.json / root ref in remote ref / string is valid] ________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate_http___localhost_1234_object(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'$id': 'http://localhost:1234/object', 'type': 'object', 'properties': {'name': {'anyOf': [{'type': 'null'}, {'$ref': '#'}]}}}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "name" in data_keys: data_keys.remove("name") data__name = data["name"] validate_http___localhost_1234_name_json__definitions_ornull(data__name, custom_formats, (name_prefix or "data") + ".name") return data def validate_http___localhost_1234_name_json__definitions_ornull(data, custom_formats={}, name_prefix=None): data_any_of_count1 = 0 if not data_any_of_count1: try: if not isinstance(data, (NoneType)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be null", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'null'}, rule='type') data_any_of_count1 += 1 except JsonSchemaValueException: pass if not data_any_of_count1: try: validate_http___localhost_1234_name_json(data, custom_formats, (name_prefix or "data") + "") data_any_of_count1 += 1 except JsonSchemaValueException: pass if not data_any_of_count1: raise JsonSchemaValueException("" + (name_prefix or "data") + " cannot be validated by any definition", value=data, name="" + (name_prefix or "data") + "", definition={'anyOf': [{'type': 'null'}, {'type': 'string', 'definitions': {'orNull': {'anyOf': [{'type': 'null'}, {'$ref': '#'}]}}}]}, rule='anyOf') return data def validate_http___localhost_1234_name_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (str)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be string", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'string', 'definitions': {'orNull': {'anyOf': [{'type': 'null'}, {'type': 'string', 'definitions': {'orNull': {'anyOf': [{'type': 'null'}, {'$ref': '#'}]}}}]}}}, rule='type') return data Validate result: {'name': 'foo'} ________ test[refRemote.json / root ref in remote ref / null is valid] _________ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate_http___localhost_1234_object(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'$id': 'http://localhost:1234/object', 'type': 'object', 'properties': {'name': {'anyOf': [{'type': 'null'}, {'$ref': '#'}]}}, '$schema': 'http://json-schema.org/draft-07/schema'}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "name" in data_keys: data_keys.remove("name") data__name = data["name"] validate_http___localhost_1234_name_json__definitions_ornull(data__name, custom_formats, (name_prefix or "data") + ".name") return data def validate_http___localhost_1234_name_json__definitions_ornull(data, custom_formats={}, name_prefix=None): data_any_of_count1 = 0 if not data_any_of_count1: try: if not isinstance(data, (NoneType)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be null", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'null'}, rule='type') data_any_of_count1 += 1 except JsonSchemaValueException: pass if not data_any_of_count1: try: validate_http___localhost_1234_name_json(data, custom_formats, (name_prefix or "data") + "") data_any_of_count1 += 1 except JsonSchemaValueException: pass if not data_any_of_count1: raise JsonSchemaValueException("" + (name_prefix or "data") + " cannot be validated by any definition", value=data, name="" + (name_prefix or "data") + "", definition={'anyOf': [{'type': 'null'}, {'type': 'string', 'definitions': {'orNull': {'anyOf': [{'type': 'null'}, {'$ref': '#'}]}}}]}, rule='anyOf') return data def validate_http___localhost_1234_name_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (str)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be string", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'string', 'definitions': {'orNull': {'anyOf': [{'type': 'null'}, {'type': 'string', 'definitions': {'orNull': {'anyOf': [{'type': 'null'}, {'$ref': '#'}]}}}]}}}, rule='type') return data Validate result: {'name': None} ______ test[refRemote.json / root ref in remote ref / object is invalid] _______ ----------------------------- Captured stdout call ----------------------------- from decimal import Decimal from fastjsonschema import JsonSchemaValueException NoneType = type(None) def validate_http___localhost_1234_object(data, custom_formats={}, name_prefix=None): if not isinstance(data, (dict)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be object", value=data, name="" + (name_prefix or "data") + "", definition={'$id': 'http://localhost:1234/object', 'type': 'object', 'properties': {'name': {'anyOf': [{'type': 'null'}, {'$ref': '#'}]}}, '$schema': 'http://json-schema.org/draft-07/schema'}, rule='type') data_is_dict = isinstance(data, dict) if data_is_dict: data_keys = set(data.keys()) if "name" in data_keys: data_keys.remove("name") data__name = data["name"] validate_http___localhost_1234_name_json__definitions_ornull(data__name, custom_formats, (name_prefix or "data") + ".name") return data def validate_http___localhost_1234_name_json__definitions_ornull(data, custom_formats={}, name_prefix=None): data_any_of_count1 = 0 if not data_any_of_count1: try: if not isinstance(data, (NoneType)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be null", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'null'}, rule='type') data_any_of_count1 += 1 except JsonSchemaValueException: pass if not data_any_of_count1: try: validate_http___localhost_1234_name_json(data, custom_formats, (name_prefix or "data") + "") data_any_of_count1 += 1 except JsonSchemaValueException: pass if not data_any_of_count1: raise JsonSchemaValueException("" + (name_prefix or "data") + " cannot be validated by any definition", value=data, name="" + (name_prefix or "data") + "", definition={'anyOf': [{'type': 'null'}, {'type': 'string', 'definitions': {'orNull': {'anyOf': [{'type': 'null'}, {'$ref': '#'}]}}}]}, rule='anyOf') return data def validate_http___localhost_1234_name_json(data, custom_formats={}, name_prefix=None): if not isinstance(data, (str)): raise JsonSchemaValueException("" + (name_prefix or "data") + " must be string", value=data, name="" + (name_prefix or "data") + "", definition={'type': 'string', 'definitions': {'orNull': {'anyOf': [{'type': 'null'}, {'type': 'string', 'definitions': {'orNull': {'anyOf': [{'type': 'null'}, {'$ref': '#'}]}}}]}}}, rule='type') return data =========================== short test summary info ============================ SKIPPED [1] tests/json_schema/utils.py: got empty parameter set ['schema_version', 'schema', 'data', 'is_valid'], function template_test at /usr/src/RPM/BUILD/python3-module-fastjsonschema-2.21.1/tests/json_schema/utils.py:71 XFAIL tests/json_schema/test_draft04.py::test[definitions.json / valid definition / valid definition schema] XFAIL tests/json_schema/test_draft04.py::test[definitions.json / invalid definition / invalid definition schema] XFAIL tests/json_schema/test_draft04.py::test[ecmascript-regex.json / ECMA 262 regex non-compliance / ECMA 262 has no support for \\Z anchor from .NET] XFAIL tests/json_schema/test_draft04.py::test[ref.json / remote ref, containing refs itself / remote ref valid] XFAIL tests/json_schema/test_draft04.py::test[ref.json / remote ref, containing refs itself / remote ref invalid] XFAIL tests/json_schema/test_draft06.py::test[definitions.json / valid definition / valid definition schema] XFAIL tests/json_schema/test_draft06.py::test[definitions.json / invalid definition / invalid definition schema] XFAIL tests/json_schema/test_draft06.py::test[ecmascript-regex.json / ECMA 262 regex non-compliance / ECMA 262 has no support for \\Z anchor from .NET] XFAIL tests/json_schema/test_draft06.py::test[ref.json / remote ref, containing refs itself / remote ref valid] XFAIL tests/json_schema/test_draft06.py::test[ref.json / remote ref, containing refs itself / remote ref invalid] XFAIL tests/json_schema/test_draft07.py::test[definitions.json / valid definition / valid definition schema] XFAIL tests/json_schema/test_draft07.py::test[definitions.json / invalid definition / invalid definition schema] XFAIL tests/json_schema/test_draft07.py::test[ecmascript-regex.json / ECMA 262 regex non-compliance / ECMA 262 has no support for \\Z anchor from .NET] XFAIL tests/json_schema/test_draft07.py::test[idn-hostname.json / validation of internationalized host names / a valid host name (example.test in Hangul)] XFAIL tests/json_schema/test_draft07.py::test[iri.json / validation of IRIs / an invalid IRI based on IPv6] XFAIL tests/json_schema/test_draft07.py::test[ref.json / remote ref, containing refs itself / remote ref valid] XFAIL tests/json_schema/test_draft07.py::test[ref.json / remote ref, containing refs itself / remote ref invalid] XPASS tests/json_schema/test_draft04.py::test[enum.json / simple enum validation / one of the enum is valid] XPASS tests/json_schema/test_draft04.py::test[enum.json / simple enum validation / something else is invalid] XPASS tests/json_schema/test_draft04.py::test[enum.json / heterogeneous enum validation / one of the enum is valid] XPASS tests/json_schema/test_draft04.py::test[enum.json / heterogeneous enum validation / something else is invalid] XPASS tests/json_schema/test_draft04.py::test[enum.json / heterogeneous enum validation / objects are deep compared] XPASS tests/json_schema/test_draft04.py::test[enum.json / enums in properties / both properties are valid] XPASS tests/json_schema/test_draft04.py::test[enum.json / enums in properties / missing optional property is valid] XPASS tests/json_schema/test_draft04.py::test[enum.json / enums in properties / missing required property is invalid] XPASS tests/json_schema/test_draft04.py::test[enum.json / enums in properties / missing all properties is invalid] XPASS tests/json_schema/test_draft04.py::test[enum.json / enum with escaped characters / member 1 is valid] XPASS tests/json_schema/test_draft04.py::test[enum.json / enum with escaped characters / member 2 is valid] XPASS tests/json_schema/test_draft04.py::test[enum.json / enum with escaped characters / another string is invalid] XPASS tests/json_schema/test_draft04.py::test[ref.json / root pointer ref / match] XPASS tests/json_schema/test_draft04.py::test[ref.json / root pointer ref / recursive match] XPASS tests/json_schema/test_draft04.py::test[ref.json / root pointer ref / mismatch] XPASS tests/json_schema/test_draft04.py::test[ref.json / root pointer ref / recursive mismatch] XPASS tests/json_schema/test_draft04.py::test[ref.json / relative pointer ref to object / match] XPASS tests/json_schema/test_draft04.py::test[ref.json / relative pointer ref to object / mismatch] XPASS tests/json_schema/test_draft04.py::test[ref.json / relative pointer ref to array / match array] XPASS tests/json_schema/test_draft04.py::test[ref.json / relative pointer ref to array / mismatch array] XPASS tests/json_schema/test_draft04.py::test[ref.json / escaped pointer ref / slash invalid] XPASS tests/json_schema/test_draft04.py::test[ref.json / escaped pointer ref / tilda invalid] XPASS tests/json_schema/test_draft04.py::test[ref.json / escaped pointer ref / percent invalid] XPASS tests/json_schema/test_draft04.py::test[ref.json / escaped pointer ref / slash valid] XPASS tests/json_schema/test_draft04.py::test[ref.json / escaped pointer ref / tilda valid] XPASS tests/json_schema/test_draft04.py::test[ref.json / escaped pointer ref / percent valid] XPASS tests/json_schema/test_draft04.py::test[ref.json / nested refs / nested ref valid] XPASS tests/json_schema/test_draft04.py::test[ref.json / nested refs / nested ref invalid] XPASS tests/json_schema/test_draft04.py::test[ref.json / ref overrides any sibling keywords / ref valid] XPASS tests/json_schema/test_draft04.py::test[ref.json / ref overrides any sibling keywords / ref valid, maxItems ignored] XPASS tests/json_schema/test_draft04.py::test[ref.json / ref overrides any sibling keywords / ref invalid] XPASS tests/json_schema/test_draft04.py::test[ref.json / property named $ref that is not a reference / property named $ref valid] XPASS tests/json_schema/test_draft04.py::test[ref.json / property named $ref that is not a reference / property named $ref invalid] XPASS tests/json_schema/test_draft04.py::test[ref.json / Recursive references between schemas / valid tree] XPASS tests/json_schema/test_draft04.py::test[ref.json / Recursive references between schemas / invalid tree] XPASS tests/json_schema/test_draft04.py::test[ref.json / refs with quote / object with numbers is valid] XPASS tests/json_schema/test_draft04.py::test[ref.json / refs with quote / object with strings is invalid] XPASS tests/json_schema/test_draft04.py::test[refRemote.json / remote ref / remote ref valid] XPASS tests/json_schema/test_draft04.py::test[refRemote.json / remote ref / remote ref invalid] XPASS tests/json_schema/test_draft04.py::test[refRemote.json / fragment within remote ref / remote fragment valid] XPASS tests/json_schema/test_draft04.py::test[refRemote.json / fragment within remote ref / remote fragment invalid] XPASS tests/json_schema/test_draft04.py::test[refRemote.json / ref within remote ref / ref within ref valid] XPASS tests/json_schema/test_draft04.py::test[refRemote.json / ref within remote ref / ref within ref invalid] XPASS tests/json_schema/test_draft04.py::test[refRemote.json / base URI change / base URI change ref valid] XPASS tests/json_schema/test_draft04.py::test[refRemote.json / base URI change / base URI change ref invalid] XPASS tests/json_schema/test_draft04.py::test[refRemote.json / base URI change - change folder / number is valid] XPASS tests/json_schema/test_draft04.py::test[refRemote.json / base URI change - change folder / string is invalid] XPASS tests/json_schema/test_draft04.py::test[refRemote.json / base URI change - change folder in subschema / number is valid] XPASS tests/json_schema/test_draft04.py::test[refRemote.json / base URI change - change folder in subschema / string is invalid] XPASS tests/json_schema/test_draft04.py::test[refRemote.json / root ref in remote ref / string is valid] XPASS tests/json_schema/test_draft04.py::test[refRemote.json / root ref in remote ref / null is valid] XPASS tests/json_schema/test_draft04.py::test[refRemote.json / root ref in remote ref / object is invalid] XPASS tests/json_schema/test_draft06.py::test[const.json / const validation / same value is valid] XPASS tests/json_schema/test_draft06.py::test[const.json / const validation / another value is invalid] XPASS tests/json_schema/test_draft06.py::test[const.json / const validation / another type is invalid] XPASS tests/json_schema/test_draft06.py::test[const.json / const with object / same object is valid] XPASS tests/json_schema/test_draft06.py::test[const.json / const with object / same object with different property order is valid] XPASS tests/json_schema/test_draft06.py::test[const.json / const with object / another object is invalid] XPASS tests/json_schema/test_draft06.py::test[const.json / const with object / another type is invalid] XPASS tests/json_schema/test_draft06.py::test[const.json / const with array / same array is valid] XPASS tests/json_schema/test_draft06.py::test[const.json / const with array / another array item is invalid] XPASS tests/json_schema/test_draft06.py::test[const.json / const with array / array with additional items is invalid] XPASS tests/json_schema/test_draft06.py::test[const.json / const with null / null is valid] XPASS tests/json_schema/test_draft06.py::test[const.json / const with null / not null is invalid] XPASS tests/json_schema/test_draft06.py::test[enum.json / simple enum validation / one of the enum is valid] XPASS tests/json_schema/test_draft06.py::test[enum.json / simple enum validation / something else is invalid] XPASS tests/json_schema/test_draft06.py::test[enum.json / heterogeneous enum validation / one of the enum is valid] XPASS tests/json_schema/test_draft06.py::test[enum.json / heterogeneous enum validation / something else is invalid] XPASS tests/json_schema/test_draft06.py::test[enum.json / heterogeneous enum validation / objects are deep compared] XPASS tests/json_schema/test_draft06.py::test[enum.json / enums in properties / both properties are valid] XPASS tests/json_schema/test_draft06.py::test[enum.json / enums in properties / missing optional property is valid] XPASS tests/json_schema/test_draft06.py::test[enum.json / enums in properties / missing required property is invalid] XPASS tests/json_schema/test_draft06.py::test[enum.json / enums in properties / missing all properties is invalid] XPASS tests/json_schema/test_draft06.py::test[enum.json / enum with escaped characters / member 1 is valid] XPASS tests/json_schema/test_draft06.py::test[enum.json / enum with escaped characters / member 2 is valid] XPASS tests/json_schema/test_draft06.py::test[enum.json / enum with escaped characters / another string is invalid] XPASS tests/json_schema/test_draft06.py::test[ref.json / root pointer ref / match] XPASS tests/json_schema/test_draft06.py::test[ref.json / root pointer ref / recursive match] XPASS tests/json_schema/test_draft06.py::test[ref.json / root pointer ref / mismatch] XPASS tests/json_schema/test_draft06.py::test[ref.json / root pointer ref / recursive mismatch] XPASS tests/json_schema/test_draft06.py::test[ref.json / relative pointer ref to object / match] XPASS tests/json_schema/test_draft06.py::test[ref.json / relative pointer ref to object / mismatch] XPASS tests/json_schema/test_draft06.py::test[ref.json / relative pointer ref to array / match array] XPASS tests/json_schema/test_draft06.py::test[ref.json / relative pointer ref to array / mismatch array] XPASS tests/json_schema/test_draft06.py::test[ref.json / escaped pointer ref / slash invalid] XPASS tests/json_schema/test_draft06.py::test[ref.json / escaped pointer ref / tilda invalid] XPASS tests/json_schema/test_draft06.py::test[ref.json / escaped pointer ref / percent invalid] XPASS tests/json_schema/test_draft06.py::test[ref.json / escaped pointer ref / slash valid] XPASS tests/json_schema/test_draft06.py::test[ref.json / escaped pointer ref / tilda valid] XPASS tests/json_schema/test_draft06.py::test[ref.json / escaped pointer ref / percent valid] XPASS tests/json_schema/test_draft06.py::test[ref.json / nested refs / nested ref valid] XPASS tests/json_schema/test_draft06.py::test[ref.json / nested refs / nested ref invalid] XPASS tests/json_schema/test_draft06.py::test[ref.json / ref overrides any sibling keywords / ref valid] XPASS tests/json_schema/test_draft06.py::test[ref.json / ref overrides any sibling keywords / ref valid, maxItems ignored] XPASS tests/json_schema/test_draft06.py::test[ref.json / ref overrides any sibling keywords / ref invalid] XPASS tests/json_schema/test_draft06.py::test[ref.json / property named $ref that is not a reference / property named $ref valid] XPASS tests/json_schema/test_draft06.py::test[ref.json / property named $ref that is not a reference / property named $ref invalid] XPASS tests/json_schema/test_draft06.py::test[ref.json / $ref to boolean schema true / any value is valid] XPASS tests/json_schema/test_draft06.py::test[ref.json / $ref to boolean schema false / any value is invalid] XPASS tests/json_schema/test_draft06.py::test[ref.json / Recursive references between schemas / valid tree] XPASS tests/json_schema/test_draft06.py::test[ref.json / Recursive references between schemas / invalid tree] XPASS tests/json_schema/test_draft06.py::test[ref.json / refs with quote / object with numbers is valid] XPASS tests/json_schema/test_draft06.py::test[ref.json / refs with quote / object with strings is invalid] XPASS tests/json_schema/test_draft06.py::test[refRemote.json / remote ref / remote ref valid] XPASS tests/json_schema/test_draft06.py::test[refRemote.json / remote ref / remote ref invalid] XPASS tests/json_schema/test_draft06.py::test[refRemote.json / fragment within remote ref / remote fragment valid] XPASS tests/json_schema/test_draft06.py::test[refRemote.json / fragment within remote ref / remote fragment invalid] XPASS tests/json_schema/test_draft06.py::test[refRemote.json / ref within remote ref / ref within ref valid] XPASS tests/json_schema/test_draft06.py::test[refRemote.json / ref within remote ref / ref within ref invalid] XPASS tests/json_schema/test_draft06.py::test[refRemote.json / base URI change / base URI change ref valid] XPASS tests/json_schema/test_draft06.py::test[refRemote.json / base URI change / base URI change ref invalid] XPASS tests/json_schema/test_draft06.py::test[refRemote.json / base URI change - change folder / number is valid] XPASS tests/json_schema/test_draft06.py::test[refRemote.json / base URI change - change folder / string is invalid] XPASS tests/json_schema/test_draft06.py::test[refRemote.json / base URI change - change folder in subschema / number is valid] XPASS tests/json_schema/test_draft06.py::test[refRemote.json / base URI change - change folder in subschema / string is invalid] XPASS tests/json_schema/test_draft06.py::test[refRemote.json / root ref in remote ref / string is valid] XPASS tests/json_schema/test_draft06.py::test[refRemote.json / root ref in remote ref / null is valid] XPASS tests/json_schema/test_draft06.py::test[refRemote.json / root ref in remote ref / object is invalid] XPASS tests/json_schema/test_draft07.py::test[const.json / const validation / same value is valid] XPASS tests/json_schema/test_draft07.py::test[const.json / const validation / another value is invalid] XPASS tests/json_schema/test_draft07.py::test[const.json / const validation / another type is invalid] XPASS tests/json_schema/test_draft07.py::test[const.json / const with object / same object is valid] XPASS tests/json_schema/test_draft07.py::test[const.json / const with object / same object with different property order is valid] XPASS tests/json_schema/test_draft07.py::test[const.json / const with object / another object is invalid] XPASS tests/json_schema/test_draft07.py::test[const.json / const with object / another type is invalid] XPASS tests/json_schema/test_draft07.py::test[const.json / const with array / same array is valid] XPASS tests/json_schema/test_draft07.py::test[const.json / const with array / another array item is invalid] XPASS tests/json_schema/test_draft07.py::test[const.json / const with array / array with additional items is invalid] XPASS tests/json_schema/test_draft07.py::test[const.json / const with null / null is valid] XPASS tests/json_schema/test_draft07.py::test[const.json / const with null / not null is invalid] XPASS tests/json_schema/test_draft07.py::test[enum.json / simple enum validation / one of the enum is valid] XPASS tests/json_schema/test_draft07.py::test[enum.json / simple enum validation / something else is invalid] XPASS tests/json_schema/test_draft07.py::test[enum.json / heterogeneous enum validation / one of the enum is valid] XPASS tests/json_schema/test_draft07.py::test[enum.json / heterogeneous enum validation / something else is invalid] XPASS tests/json_schema/test_draft07.py::test[enum.json / heterogeneous enum validation / objects are deep compared] XPASS tests/json_schema/test_draft07.py::test[enum.json / enums in properties / both properties are valid] XPASS tests/json_schema/test_draft07.py::test[enum.json / enums in properties / missing optional property is valid] XPASS tests/json_schema/test_draft07.py::test[enum.json / enums in properties / missing required property is invalid] XPASS tests/json_schema/test_draft07.py::test[enum.json / enums in properties / missing all properties is invalid] XPASS tests/json_schema/test_draft07.py::test[enum.json / enum with escaped characters / member 1 is valid] XPASS tests/json_schema/test_draft07.py::test[enum.json / enum with escaped characters / member 2 is valid] XPASS tests/json_schema/test_draft07.py::test[enum.json / enum with escaped characters / another string is invalid] XPASS tests/json_schema/test_draft07.py::test[date-time.json / validation of date-time strings / a valid date-time string] XPASS tests/json_schema/test_draft07.py::test[date-time.json / validation of date-time strings / a valid date-time string without second fraction] XPASS tests/json_schema/test_draft07.py::test[date-time.json / validation of date-time strings / a valid date-time string with plus offset] XPASS tests/json_schema/test_draft07.py::test[date-time.json / validation of date-time strings / a valid date-time string with minus offset] XPASS tests/json_schema/test_draft07.py::test[date-time.json / validation of date-time strings / a invalid day in date-time string] XPASS tests/json_schema/test_draft07.py::test[date-time.json / validation of date-time strings / an invalid offset in date-time string] XPASS tests/json_schema/test_draft07.py::test[date-time.json / validation of date-time strings / an invalid date-time string] XPASS tests/json_schema/test_draft07.py::test[date-time.json / validation of date-time strings / case-insensitive T and Z] XPASS tests/json_schema/test_draft07.py::test[date-time.json / validation of date-time strings / only RFC3339 not all of ISO 8601 are valid] XPASS tests/json_schema/test_draft07.py::test[date.json / validation of date strings / a valid date string] XPASS tests/json_schema/test_draft07.py::test[date.json / validation of date strings / an invalid date-time string] XPASS tests/json_schema/test_draft07.py::test[date.json / validation of date strings / only RFC3339 not all of ISO 8601 are valid] XPASS tests/json_schema/test_draft07.py::test[idn-hostname.json / validation of internationalized host names / illegal first char U+302E Hangul single dot tone mark] XPASS tests/json_schema/test_draft07.py::test[idn-hostname.json / validation of internationalized host names / contains illegal char U+302E Hangul single dot tone mark] XPASS tests/json_schema/test_draft07.py::test[idn-hostname.json / validation of internationalized host names / a host name with a component too long] XPASS tests/json_schema/test_draft07.py::test[ipv6.json / validation of IPv6 addresses / a valid IPv6 address] XPASS tests/json_schema/test_draft07.py::test[ipv6.json / validation of IPv6 addresses / an IPv6 address with out-of-range values] XPASS tests/json_schema/test_draft07.py::test[ipv6.json / validation of IPv6 addresses / an IPv6 address with too many components] XPASS tests/json_schema/test_draft07.py::test[ipv6.json / validation of IPv6 addresses / an IPv6 address containing illegal characters] XPASS tests/json_schema/test_draft07.py::test[iri.json / validation of IRIs / a valid IRI with anchor tag] XPASS tests/json_schema/test_draft07.py::test[iri.json / validation of IRIs / a valid IRI with anchor tag and parantheses] XPASS tests/json_schema/test_draft07.py::test[iri.json / validation of IRIs / a valid IRI with URL-encoded stuff] XPASS tests/json_schema/test_draft07.py::test[iri.json / validation of IRIs / a valid IRI with many special characters] XPASS tests/json_schema/test_draft07.py::test[iri.json / validation of IRIs / a valid IRI based on IPv6] XPASS tests/json_schema/test_draft07.py::test[iri.json / validation of IRIs / an invalid relative IRI Reference] XPASS tests/json_schema/test_draft07.py::test[iri.json / validation of IRIs / an invalid IRI] XPASS tests/json_schema/test_draft07.py::test[iri.json / validation of IRIs / an invalid IRI though valid IRI reference] XPASS tests/json_schema/test_draft07.py::test[time.json / validation of time strings / a valid time string] XPASS tests/json_schema/test_draft07.py::test[time.json / validation of time strings / an invalid time string] XPASS tests/json_schema/test_draft07.py::test[time.json / validation of time strings / only RFC3339 not all of ISO 8601 are valid] XPASS tests/json_schema/test_draft07.py::test[ref.json / root pointer ref / match] XPASS tests/json_schema/test_draft07.py::test[ref.json / root pointer ref / recursive match] XPASS tests/json_schema/test_draft07.py::test[ref.json / root pointer ref / mismatch] XPASS tests/json_schema/test_draft07.py::test[ref.json / root pointer ref / recursive mismatch] XPASS tests/json_schema/test_draft07.py::test[ref.json / relative pointer ref to object / match] XPASS tests/json_schema/test_draft07.py::test[ref.json / relative pointer ref to object / mismatch] XPASS tests/json_schema/test_draft07.py::test[ref.json / relative pointer ref to array / match array] XPASS tests/json_schema/test_draft07.py::test[ref.json / relative pointer ref to array / mismatch array] XPASS tests/json_schema/test_draft07.py::test[ref.json / escaped pointer ref / slash invalid] XPASS tests/json_schema/test_draft07.py::test[ref.json / escaped pointer ref / tilda invalid] XPASS tests/json_schema/test_draft07.py::test[ref.json / escaped pointer ref / percent invalid] XPASS tests/json_schema/test_draft07.py::test[ref.json / escaped pointer ref / slash valid] XPASS tests/json_schema/test_draft07.py::test[ref.json / escaped pointer ref / tilda valid] XPASS tests/json_schema/test_draft07.py::test[ref.json / escaped pointer ref / percent valid] XPASS tests/json_schema/test_draft07.py::test[ref.json / nested refs / nested ref valid] XPASS tests/json_schema/test_draft07.py::test[ref.json / nested refs / nested ref invalid] XPASS tests/json_schema/test_draft07.py::test[ref.json / ref overrides any sibling keywords / ref valid] XPASS tests/json_schema/test_draft07.py::test[ref.json / ref overrides any sibling keywords / ref valid, maxItems ignored] XPASS tests/json_schema/test_draft07.py::test[ref.json / ref overrides any sibling keywords / ref invalid] XPASS tests/json_schema/test_draft07.py::test[ref.json / property named $ref that is not a reference / property named $ref valid] XPASS tests/json_schema/test_draft07.py::test[ref.json / property named $ref that is not a reference / property named $ref invalid] XPASS tests/json_schema/test_draft07.py::test[ref.json / $ref to boolean schema true / any value is valid] XPASS tests/json_schema/test_draft07.py::test[ref.json / $ref to boolean schema false / any value is invalid] XPASS tests/json_schema/test_draft07.py::test[ref.json / Recursive references between schemas / valid tree] XPASS tests/json_schema/test_draft07.py::test[ref.json / Recursive references between schemas / invalid tree] XPASS tests/json_schema/test_draft07.py::test[ref.json / refs with quote / object with numbers is valid] XPASS tests/json_schema/test_draft07.py::test[ref.json / refs with quote / object with strings is invalid] XPASS tests/json_schema/test_draft07.py::test[refRemote.json / remote ref / remote ref valid] XPASS tests/json_schema/test_draft07.py::test[refRemote.json / remote ref / remote ref invalid] XPASS tests/json_schema/test_draft07.py::test[refRemote.json / fragment within remote ref / remote fragment valid] XPASS tests/json_schema/test_draft07.py::test[refRemote.json / fragment within remote ref / remote fragment invalid] XPASS tests/json_schema/test_draft07.py::test[refRemote.json / ref within remote ref / ref within ref valid] XPASS tests/json_schema/test_draft07.py::test[refRemote.json / ref within remote ref / ref within ref invalid] XPASS tests/json_schema/test_draft07.py::test[refRemote.json / base URI change / base URI change ref valid] XPASS tests/json_schema/test_draft07.py::test[refRemote.json / base URI change / base URI change ref invalid] XPASS tests/json_schema/test_draft07.py::test[refRemote.json / base URI change - change folder / number is valid] XPASS tests/json_schema/test_draft07.py::test[refRemote.json / base URI change - change folder / string is invalid] XPASS tests/json_schema/test_draft07.py::test[refRemote.json / base URI change - change folder in subschema / number is valid] XPASS tests/json_schema/test_draft07.py::test[refRemote.json / base URI change - change folder in subschema / string is invalid] XPASS tests/json_schema/test_draft07.py::test[refRemote.json / root ref in remote ref / string is valid] XPASS tests/json_schema/test_draft07.py::test[refRemote.json / root ref in remote ref / null is valid] XPASS tests/json_schema/test_draft07.py::test[refRemote.json / root ref in remote ref / object is invalid] === 1847 passed, 1 skipped, 12 deselected, 17 xfailed, 214 xpassed in 17.02s === INFO : Command's result: OK + exit 0 Processing files: python3-module-fastjsonschema-2.21.1-alt1 Executing(%doc): /bin/sh -e /usr/src/tmp/rpm-tmp.32017 + umask 022 + /bin/mkdir -p /usr/src/RPM/BUILD + cd /usr/src/RPM/BUILD + cd python3-module-fastjsonschema-2.21.1 + DOCDIR=/usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/share/doc/python3-module-fastjsonschema-2.21.1 + export DOCDIR + rm -rf /usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/share/doc/python3-module-fastjsonschema-2.21.1 + /bin/mkdir -p /usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/share/doc/python3-module-fastjsonschema-2.21.1 + cp -prL README.rst AUTHORS CHANGELOG.txt /usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/share/doc/python3-module-fastjsonschema-2.21.1 + chmod -R go-w /usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/share/doc/python3-module-fastjsonschema-2.21.1 + chmod -R a+rX /usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/share/doc/python3-module-fastjsonschema-2.21.1 + exit 0 Finding Provides (using /usr/lib/rpm/find-provides) Executing: /bin/sh -e /usr/src/tmp/rpm-tmp.RA2Yd0 find-provides: running scripts (alternatives,debuginfo,lib,pam,perl,pkgconfig,python,python3,shell) Finding Requires (using /usr/lib/rpm/find-requires) Executing: /bin/sh -e /usr/src/tmp/rpm-tmp.BS7Q6G find-requires: running scripts (cpp,debuginfo,files,lib,pam,perl,pkgconfig,pkgconfiglib,python,python3,rpmlib,shebang,shell,static,symlinks,systemd-services) py3prov: detected potential module:fastjsonschema py3prov: detected potential module:fastjsonschema py3req:/usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/__init__.py: "fastjsonschema.draft04" lines:[110] is possibly a self-providing dependency, skip it py3req:/usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/__init__.py: "fastjsonschema.draft06" lines:[111] is possibly a self-providing dependency, skip it py3req:/usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/__init__.py: "fastjsonschema.draft07" lines:[112] is possibly a self-providing dependency, skip it py3req:/usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/__init__.py: "fastjsonschema.exceptions" lines:[113] is possibly a self-providing dependency, skip it py3req:/usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/__init__.py: "fastjsonschema.ref_resolver" lines:[114] is possibly a self-providing dependency, skip it py3req:/usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/__init__.py: "fastjsonschema.version" lines:[115] is possibly a self-providing dependency, skip it py3req:/usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/__main__.py: skipping "sys" lines:[2] py3req:/usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/__main__.py: "fastjsonschema" lines:[4] is possibly a self-providing dependency, skip it py3req:/usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/draft04.py: "fastjsonschema.exceptions" lines:[4] is possibly a self-providing dependency, skip it py3req:/usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/draft04.py: "fastjsonschema.generator" lines:[5] is possibly a self-providing dependency, skip it py3req:/usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/draft06.py: "fastjsonschema.draft04" lines:[2] is possibly a self-providing dependency, skip it py3req:/usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/draft06.py: "fastjsonschema.exceptions" lines:[3] is possibly a self-providing dependency, skip it py3req:/usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/draft06.py: "fastjsonschema.generator" lines:[4] is possibly a self-providing dependency, skip it py3req:/usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/draft07.py: "fastjsonschema.draft06" lines:[1] is possibly a self-providing dependency, skip it py3req:/usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/generator.py: "fastjsonschema.exceptions" lines:[5] is possibly a self-providing dependency, skip it py3req:/usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/generator.py: "fastjsonschema.indent" lines:[6] is possibly a self-providing dependency, skip it py3req:/usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/generator.py: "fastjsonschema.ref_resolver" lines:[7] is possibly a self-providing dependency, skip it py3req:/usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/ref_resolver.py: "fastjsonschema.exceptions" lines:[15] is possibly a self-providing dependency, skip it py3req:/usr/src/tmp/python3-module-fastjsonschema-buildroot/usr/lib/python3/site-packages/fastjsonschema/ref_resolver.py: "urllib.request" lines:[[[61]]]: Ignore for REQ:slight Provides: python3(fastjsonschema), python3(fastjsonschema.__main__), python3(fastjsonschema.draft04), python3(fastjsonschema.draft06), python3(fastjsonschema.draft07), python3(fastjsonschema.exceptions), python3(fastjsonschema.generator), python3(fastjsonschema.indent), python3(fastjsonschema.ref_resolver), python3(fastjsonschema.version) Requires: /usr/lib/python3/site-packages, python3(collections) < 0, python3(contextlib) < 0, python3(decimal) < 0, python3(functools) < 0, python3(json) < 0, python3(re) < 0, python3(urllib) < 0, python3(urllib.parse) < 0 Wrote: /usr/src/RPM/RPMS/noarch/python3-module-fastjsonschema-2.21.1-alt1.noarch.rpm (w2.lzdio) 17.97user 3.05system 0:22.58elapsed 93%CPU (0avgtext+0avgdata 2684088maxresident)k 0inputs+0outputs (0major+1054420minor)pagefaults 0swaps 5.95user 4.17system 0:44.66elapsed 22%CPU (0avgtext+0avgdata 131456maxresident)k 0inputs+0outputs (0major+302697minor)pagefaults 0swaps