Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-warlock for openSUSE:Factory checked in at 2022-10-15 16:38:22 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-warlock (Old) and /work/SRC/openSUSE:Factory/.python-warlock.new.2275 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-warlock" Sat Oct 15 16:38:22 2022 rev:19 rq:1011101 version:2.0.1 Changes: -------- --- /work/SRC/openSUSE:Factory/python-warlock/python-warlock.changes 2022-05-25 20:35:52.112337015 +0200 +++ /work/SRC/openSUSE:Factory/.python-warlock.new.2275/python-warlock.changes 2022-10-15 16:40:58.934661639 +0200 @@ -1,0 +2,23 @@ +Fri Oct 14 18:58:16 UTC 2022 - pgaj...@suse.com + +- version update to 2.0.1 + Added + * Meta: Locked dependencies via poetry.lock file in version control. #44 + * Meta: Add pre-commit config to enforce code styling and file formatting. #43 + * Meta: Add tox config for test automation across Python versions. #47 + * Tests for DeprecationWarnings issued for Model.changes. #46 + * Cache the validator instance to speedup schema validation process. #55 + * Support for jsonschema 4.x. #65 + * Support for Python 3.9, 3.10. #65 + Fixed + * Fixed DeprecationWarnings for using assertEquals in tests. #45 + Changed + * Meta: Replace setuptools with poetry for packaging and dependency management. #35 + * Changed behavior of model_factory back to pre-1.3 call signature. #39 + * Meta: Switched build backend from poetry to poetry-core. #66 + Removed + * Support for Python 3.4 (EOL). #44 + * Support for Python 3.5, 3.6 (EOL). #65 + * Support for Python 2.7 (EOL by 2019-01-01). #48 + +------------------------------------------------------------------- Old: ---- warlock-1.3.3.tar.gz New: ---- warlock-2.0.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-warlock.spec ++++++ --- /var/tmp/diff_new_pack.Ht0GwF/_old 2022-10-15 16:40:59.434662840 +0200 +++ /var/tmp/diff_new_pack.Ht0GwF/_new 2022-10-15 16:40:59.434662840 +0200 @@ -18,7 +18,7 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} Name: python-warlock -Version: 1.3.3 +Version: 2.0.1 Release: 0 Summary: Python object model built on top of JSON schema License: Apache-2.0 @@ -27,14 +27,14 @@ Source: https://github.com/bcwaldon/warlock/archive/%{version}.tar.gz#/warlock-%{version}.tar.gz BuildRequires: %{python_module jsonpatch >= 0.7} BuildRequires: %{python_module jsonschema >= 0.10} +BuildRequires: %{python_module pip} +BuildRequires: %{python_module poetry} BuildRequires: %{python_module pytest} BuildRequires: %{python_module setuptools} -BuildRequires: %{python_module six} BuildRequires: fdupes BuildRequires: python-rpm-macros Requires: python-jsonpatch >= 0.7 Requires: python-jsonschema >= 0.10 -Requires: python-six BuildArch: noarch %python_subpackages @@ -46,15 +46,14 @@ rm pytest.ini %build -%python_build +%pyproject_wheel %install -%python_install +%pyproject_install %python_expand %fdupes %{buildroot}%{$python_sitelib} %check -# Skipped because of gh#bcwaldon/warlock#64 (the package is incompatible with jsonschema < 4) -%pytest -k 'not test_recursive_models' +%pytest %files %{python_files} %doc README.md ++++++ warlock-1.3.3.tar.gz -> warlock-2.0.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/warlock-1.3.3/.coveragerc new/warlock-2.0.1/.coveragerc --- old/warlock-1.3.3/.coveragerc 2019-05-20 12:07:50.000000000 +0200 +++ new/warlock-2.0.1/.coveragerc 2022-06-17 14:53:49.000000000 +0200 @@ -16,4 +16,4 @@ raise NotImplementedError # Don't complain if non-runnable code isn't run: - if __name__ == .__main__.: \ No newline at end of file + if __name__ == .__main__.: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/warlock-1.3.3/.flake8 new/warlock-2.0.1/.flake8 --- old/warlock-1.3.3/.flake8 2019-05-20 12:07:50.000000000 +0200 +++ new/warlock-2.0.1/.flake8 2022-06-17 14:53:49.000000000 +0200 @@ -6,4 +6,4 @@ __pycache__ locale/ htmlcov/ -max-complexity = 10 \ No newline at end of file +max-complexity = 10 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/warlock-1.3.3/.github/workflows/ci.yaml new/warlock-2.0.1/.github/workflows/ci.yaml --- old/warlock-1.3.3/.github/workflows/ci.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/warlock-2.0.1/.github/workflows/ci.yaml 2022-06-17 14:53:49.000000000 +0200 @@ -0,0 +1,47 @@ +--- +name: CI +on: + - push + - pull_request +jobs: + test: + name: Run unit tests + runs-on: ubuntu-latest + strategy: + matrix: + python: ['3.7', '3.8', '3.9', '3.10'] + steps: + - name: Checkout source code + uses: actions/checkout@v2 + - name: Set up Python ${{ matrix.python }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python }} + - name: Install dependencies + run: python -m pip install tox + - name: Run unit tests (via tox) + # Run tox using the version of Python in `PATH` + run: tox -e py + release: + name: Upload release artifacts + runs-on: ubuntu-latest + needs: test + if: github.event_name == 'push' + steps: + - name: Checkout source code + uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: '3.10' + - name: Install dependencies + run: python -m pip install build + - name: Build a binary wheel and a source tarball + run: python -m build --sdist --wheel --outdir dist/ . + - name: Publish distribution to PyPI + if: startsWith(github.ref, 'refs/tags') + uses: pypa/gh-action-pypi-publish@master + with: + password: ${{ secrets.PYPI_API_TOKEN }} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/warlock-1.3.3/.gitignore new/warlock-2.0.1/.gitignore --- old/warlock-1.3.3/.gitignore 2019-05-20 12:07:50.000000000 +0200 +++ new/warlock-2.0.1/.gitignore 2022-06-17 14:53:49.000000000 +0200 @@ -9,4 +9,4 @@ .pytest_cache/ .python-version htmlcov/ -.vscode/ \ No newline at end of file +.vscode/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/warlock-1.3.3/.pre-commit-config.yaml new/warlock-2.0.1/.pre-commit-config.yaml --- old/warlock-1.3.3/.pre-commit-config.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/warlock-2.0.1/.pre-commit-config.yaml 2022-06-17 14:53:49.000000000 +0200 @@ -0,0 +1,45 @@ +default_language_version: + python: python3.7 + +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: "v2.4.0" + hooks: + # General file-formatting + - id: trailing-whitespace + args: [--markdown-linebreak-ext=md] + - id: end-of-file-fixer + - id: check-json + - id: check-toml + + # Python-related + - id: debug-statements + - id: name-tests-test + args: ["--django"] # Required to match on test*.py + + # Git-related + - id: check-merge-conflict + + - repo: https://gitlab.com/pycqa/flake8 + rev: "3.7.9" + hooks: + - id: flake8 + additional_dependencies: + - flake8-bugbear # Finds common application design anti-patterns + + - repo: https://github.com/pre-commit/pygrep-hooks + rev: "v1.4.2" + hooks: + - id: python-check-blanket-noqa + + - repo: https://github.com/pre-commit/mirrors-isort + rev: "v4.3.21" + hooks: + - id: isort + additional_dependencies: + - toml # Required for loading config from pyproject.toml + + - repo: https://github.com/ambv/black + rev: "19.10b0" + hooks: + - id: black diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/warlock-1.3.3/.travis.yml new/warlock-2.0.1/.travis.yml --- old/warlock-1.3.3/.travis.yml 2019-05-20 12:07:50.000000000 +0200 +++ new/warlock-2.0.1/.travis.yml 1970-01-01 01:00:00.000000000 +0100 @@ -1,41 +0,0 @@ -dist: xenial -language: python -python: 3.7 -cache: pip - -env: -- TEST_CMD="pytest" - -install: - - pip install pytest pytest-cov - - if [[ $TRAVIS_PYTHON_VERSION == 3.7 ]] && [[ "$TEST_CMD" == pytest* ]]; then - pip install pytest pytest-cov coveralls; fi - - if [[ $TEST_CMD == black* ]]; then pip install black; fi - - if [[ $TEST_CMD == flake8* ]]; then pip install flake8 flake8-bugbear flake8-todo; fi - -script: -- python setup.py develop -- $TEST_CMD - -after_success: - - if [[ $TRAVIS_PYTHON_VERSION == 3.7 ]] && [[ "$TEST_CMD" == pytest* ]]; - then coveralls; fi - -matrix: - include: - - name: "black" - env: - - TEST_CMD="black --check --verbose ." - - name: "flake8" - env: - - TEST_CMD="flake8 warlock" - - name: "pytest-py2.7" - python: 2.7 - - name: "pytest-py3.4" - python: 3.4 - - name: "pytest-py3.5" - python: 3.5 - - name: "pytest-py3.6" - python: 3.6 - - name: "pytest-py3.7" - python: 3.7 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/warlock-1.3.3/CHANGELOG.md new/warlock-2.0.1/CHANGELOG.md --- old/warlock-1.3.3/CHANGELOG.md 2019-05-20 12:07:50.000000000 +0200 +++ new/warlock-2.0.1/CHANGELOG.md 2022-06-17 14:53:49.000000000 +0200 @@ -6,6 +6,32 @@ ## [Unreleased] +## [2.0.1] - 2022-06-17 +### Changed +- Meta: Switched build backend from poetry to poetry-core. #66 + +## [2.0.0] - 2022-06-16 +### Added +- Meta: Locked dependencies via `poetry.lock` file in version control. #44 +- Meta: Add [pre-commit](https://pre-commit.com) config to enforce code styling and file formatting. #43 +- Meta: Add [tox](https://tox.readthedocs.io/en/latest/index.html) config for test automation across Python versions. #47 +- Tests for DeprecationWarnings issued for `Model.changes`. #46 +- Cache the validator instance to speedup schema validation process. #55 +- Support for jsonschema 4.x. #65 +- Support for Python 3.9, 3.10. #65 + +### Fixed +- Fixed DeprecationWarnings for using `assertEquals` in tests. #45 + +### Changed +- Meta: Replace setuptools with poetry for packaging and dependency management. #35 +- Changed behavior of `model_factory` back to pre-1.3 call signature. #39 + +### Removed +- Support for Python 3.4 (EOL). #44 +- Support for Python 3.5, 3.6 (EOL). #65 +- Support for Python 2.7 (EOL by 2019-01-01). #48 + ## [1.3.3] - 2019-05-20 ### Fixed - setup.py failing for Python 2.7. #41 @@ -50,7 +76,9 @@ ## [0.8.0] - 2013-01-21 ## [0.7.0] - 2012-11-26 -[Unreleased]: https://github.com/bcwaldon/warlock/compare/v1.3.3...HEAD + +[Unreleased]: https://github.com/bcwaldon/warlock/compare/v2.0.0...HEAD +[2.0.0]: https://github.com/bcwaldon/warlock/compare/v1.3.3...v2.0.0 [1.3.3]: https://github.com/bcwaldon/warlock/compare/v1.3.2...v1.3.3 [1.3.2]: https://github.com/bcwaldon/warlock/compare/v1.3.1...v1.3.2 [1.3.1]: https://github.com/bcwaldon/warlock/compare/v1.3.0...v1.3.1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/warlock-1.3.3/CONTRIBUTING.md new/warlock-2.0.1/CONTRIBUTING.md --- old/warlock-1.3.3/CONTRIBUTING.md 2019-05-20 12:07:50.000000000 +0200 +++ new/warlock-2.0.1/CONTRIBUTING.md 2022-06-17 14:53:49.000000000 +0200 @@ -3,5 +3,5 @@ Pull Requests are greatly welcome from everyone! Please make sure to fulfill the following criteria when proposing changes to Warlock: - Write unit tests, and run them through pytest; test coverage must not decrease -- Make sure to support Python 2.7 -- 3.7; Travis CI will check all non-EOL version of Python +- Make sure to test against different Python versions; CI will check all non-EOL version of Python - Run flake8 without warnings; including flake8-bugbear plugin diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/warlock-1.3.3/MANIFEST.in new/warlock-2.0.1/MANIFEST.in --- old/warlock-1.3.3/MANIFEST.in 2019-05-20 12:07:50.000000000 +0200 +++ new/warlock-2.0.1/MANIFEST.in 1970-01-01 01:00:00.000000000 +0100 @@ -1,4 +0,0 @@ -include LICENSE -include README.md -include requirements.txt -include setup.py diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/warlock-1.3.3/README.md new/warlock-2.0.1/README.md --- old/warlock-1.3.3/README.md 2019-05-20 12:07:50.000000000 +0200 +++ new/warlock-2.0.1/README.md 2022-06-17 14:53:49.000000000 +0200 @@ -1,11 +1,17 @@ -# Warlock ??? self-validating Python objects using JSON schema +# Warlock ????????????? + +**Create self-validating Python objects using JSON schema.** [![PyPI](https://img.shields.io/pypi/v/warlock.svg)][warlock] [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/warlock.svg)][warlock] [![PyPI - Downloads](https://img.shields.io/pypi/dw/warlock.svg)][pypistats] -[![Build Status](https://travis-ci.org/bcwaldon/warlock.svg?branch=master)][ci-builds] +[![Build Status](https://github.com/bcwaldon/warlock/actions/workflows/ci.yaml/badge.svg)][ci-builds] [![Coverage Status](https://coveralls.io/repos/github/bcwaldon/warlock/badge.svg?branch=master)][coveralls] +![GitHub commits since latest release (branch)](https://img.shields.io/github/commits-since/bcwaldon/warlock/latest/master.svg) + +[![Package management: poetry](https://img.shields.io/badge/deps-poetry-blueviolet.svg)][poetry] +[![Code Style Black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black/) ## Installation @@ -72,6 +78,7 @@ [warlock]: https://pypi.org/project/warlock/ [pip]: https://pip.pypa.io/en/stable/ -[ci-builds]: https://travis-ci.org/bcwaldon/warlock +[ci-builds]: https://github.com/bcwaldon/warlock/actions/workflows/ci.yaml [coveralls]: https://coveralls.io/github/bcwaldon/warlock?branch=master +[poetry]: https://poetry.eustace.io/docs/ [pypistats]: https://pypistats.org/packages/warlock diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/warlock-1.3.3/poetry.lock new/warlock-2.0.1/poetry.lock --- old/warlock-1.3.3/poetry.lock 1970-01-01 01:00:00.000000000 +0100 +++ new/warlock-2.0.1/poetry.lock 2022-06-17 14:53:49.000000000 +0200 @@ -0,0 +1,396 @@ +[[package]] +name = "atomicwrites" +version = "1.4.0" +description = "Atomic file writes." +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[[package]] +name = "attrs" +version = "21.4.0" +description = "Classes Without Boilerplate" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[package.extras] +dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"] +docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"] +tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] +tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "cloudpickle"] + +[[package]] +name = "colorama" +version = "0.4.5" +description = "Cross-platform colored terminal text." +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "coverage" +version = "6.4.1" +description = "Code coverage measurement for Python" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +tomli = {version = "*", optional = true, markers = "python_full_version <= \"3.11.0a6\" and extra == \"toml\""} + +[package.extras] +toml = ["tomli"] + +[[package]] +name = "importlib-metadata" +version = "4.11.4" +description = "Read metadata from Python packages" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""} +zipp = ">=0.5" + +[package.extras] +docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] +perf = ["ipython"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "importlib-resources (>=1.3)"] + +[[package]] +name = "importlib-resources" +version = "5.8.0" +description = "Read resources from Python packages" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} + +[package.extras] +docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] + +[[package]] +name = "iniconfig" +version = "1.1.1" +description = "iniconfig: brain-dead simple config-ini parsing" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "jsonpatch" +version = "1.32" +description = "Apply JSON-Patches (RFC 6902)" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[package.dependencies] +jsonpointer = ">=1.9" + +[[package]] +name = "jsonpointer" +version = "2.3" +description = "Identify specific nodes in a JSON document (RFC 6901)" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[[package]] +name = "jsonschema" +version = "4.6.0" +description = "An implementation of JSON Schema validation for Python" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +attrs = ">=17.4.0" +importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} +importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""} +pyrsistent = ">=0.14.0,<0.17.0 || >0.17.0,<0.17.1 || >0.17.1,<0.17.2 || >0.17.2" +typing-extensions = {version = "*", markers = "python_version < \"3.8\""} + +[package.extras] +format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] +format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"] + +[[package]] +name = "packaging" +version = "21.3" +description = "Core utilities for Python packages" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" + +[[package]] +name = "pluggy" +version = "1.0.0" +description = "plugin and hook calling mechanisms for python" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] + +[[package]] +name = "py" +version = "1.11.0" +description = "library with cross-python path, ini-parsing, io, code, log facilities" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "pyparsing" +version = "3.0.9" +description = "pyparsing module - Classes and methods to define and execute parsing grammars" +category = "dev" +optional = false +python-versions = ">=3.6.8" + +[package.extras] +diagrams = ["railroad-diagrams", "jinja2"] + +[[package]] +name = "pyrsistent" +version = "0.18.1" +description = "Persistent/Functional/Immutable data structures" +category = "main" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "pytest" +version = "6.2.5" +description = "pytest: simple powerful testing with Python" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} +attrs = ">=19.2.0" +colorama = {version = "*", markers = "sys_platform == \"win32\""} +importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=0.12,<2.0" +py = ">=1.8.2" +toml = "*" + +[package.extras] +testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] + +[[package]] +name = "pytest-cov" +version = "3.0.0" +description = "Pytest plugin for measuring coverage." +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +coverage = {version = ">=5.2.1", extras = ["toml"]} +pytest = ">=4.6" + +[package.extras] +testing = ["fields", "hunter", "process-tests", "six", "pytest-xdist", "virtualenv"] + +[[package]] +name = "toml" +version = "0.10.2" +description = "Python Library for Tom's Obvious, Minimal Language" +category = "dev" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" + +[[package]] +name = "tomli" +version = "2.0.1" +description = "A lil' TOML parser" +category = "dev" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "typing-extensions" +version = "4.2.0" +description = "Backported and Experimental Type Hints for Python 3.7+" +category = "main" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "zipp" +version = "3.8.0" +description = "Backport of pathlib-compatible object wrapper for zip files" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] + +[metadata] +lock-version = "1.1" +python-versions = "^3.7" +content-hash = "522d884f572779dc37518150b5451de574501979fdbf7f0f58ba6da21ac0f0e1" + +[metadata.files] +atomicwrites = [ + {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, + {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"}, +] +attrs = [ + {file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"}, + {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"}, +] +colorama = [ + {file = "colorama-0.4.5-py2.py3-none-any.whl", hash = "sha256:854bf444933e37f5824ae7bfc1e98d5bce2ebe4160d46b5edf346a89358e99da"}, + {file = "colorama-0.4.5.tar.gz", hash = "sha256:e6c6b4334fc50988a639d9b98aa429a0b57da6e17b9a44f0451f930b6967b7a4"}, +] +coverage = [ + {file = "coverage-6.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f1d5aa2703e1dab4ae6cf416eb0095304f49d004c39e9db1d86f57924f43006b"}, + {file = "coverage-6.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4ce1b258493cbf8aec43e9b50d89982346b98e9ffdfaae8ae5793bc112fb0068"}, + {file = "coverage-6.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83c4e737f60c6936460c5be330d296dd5b48b3963f48634c53b3f7deb0f34ec4"}, + {file = "coverage-6.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:84e65ef149028516c6d64461b95a8dbcfce95cfd5b9eb634320596173332ea84"}, + {file = "coverage-6.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f69718750eaae75efe506406c490d6fc5a6161d047206cc63ce25527e8a3adad"}, + {file = "coverage-6.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e57816f8ffe46b1df8f12e1b348f06d164fd5219beba7d9433ba79608ef011cc"}, + {file = "coverage-6.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:01c5615d13f3dd3aa8543afc069e5319cfa0c7d712f6e04b920431e5c564a749"}, + {file = "coverage-6.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:75ab269400706fab15981fd4bd5080c56bd5cc07c3bccb86aab5e1d5a88dc8f4"}, + {file = "coverage-6.4.1-cp310-cp310-win32.whl", hash = "sha256:a7f3049243783df2e6cc6deafc49ea123522b59f464831476d3d1448e30d72df"}, + {file = "coverage-6.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:ee2ddcac99b2d2aec413e36d7a429ae9ebcadf912946b13ffa88e7d4c9b712d6"}, + {file = "coverage-6.4.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:fb73e0011b8793c053bfa85e53129ba5f0250fdc0392c1591fd35d915ec75c46"}, + {file = "coverage-6.4.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:106c16dfe494de3193ec55cac9640dd039b66e196e4641fa8ac396181578b982"}, + {file = "coverage-6.4.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:87f4f3df85aa39da00fd3ec4b5abeb7407e82b68c7c5ad181308b0e2526da5d4"}, + {file = "coverage-6.4.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:961e2fb0680b4f5ad63234e0bf55dfb90d302740ae9c7ed0120677a94a1590cb"}, + {file = "coverage-6.4.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:cec3a0f75c8f1031825e19cd86ee787e87cf03e4fd2865c79c057092e69e3a3b"}, + {file = "coverage-6.4.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:129cd05ba6f0d08a766d942a9ed4b29283aff7b2cccf5b7ce279d50796860bb3"}, + {file = "coverage-6.4.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:bf5601c33213d3cb19d17a796f8a14a9eaa5e87629a53979a5981e3e3ae166f6"}, + {file = "coverage-6.4.1-cp37-cp37m-win32.whl", hash = "sha256:269eaa2c20a13a5bf17558d4dc91a8d078c4fa1872f25303dddcbba3a813085e"}, + {file = "coverage-6.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:f02cbbf8119db68455b9d763f2f8737bb7db7e43720afa07d8eb1604e5c5ae28"}, + {file = "coverage-6.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ffa9297c3a453fba4717d06df579af42ab9a28022444cae7fa605af4df612d54"}, + {file = "coverage-6.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:145f296d00441ca703a659e8f3eb48ae39fb083baba2d7ce4482fb2723e050d9"}, + {file = "coverage-6.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d44996140af8b84284e5e7d398e589574b376fb4de8ccd28d82ad8e3bea13"}, + {file = "coverage-6.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2bd9a6fc18aab8d2e18f89b7ff91c0f34ff4d5e0ba0b33e989b3cd4194c81fd9"}, + {file = "coverage-6.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3384f2a3652cef289e38100f2d037956194a837221edd520a7ee5b42d00cc605"}, + {file = "coverage-6.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9b3e07152b4563722be523e8cd0b209e0d1a373022cfbde395ebb6575bf6790d"}, + {file = "coverage-6.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1480ff858b4113db2718848d7b2d1b75bc79895a9c22e76a221b9d8d62496428"}, + {file = "coverage-6.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:865d69ae811a392f4d06bde506d531f6a28a00af36f5c8649684a9e5e4a85c83"}, + {file = "coverage-6.4.1-cp38-cp38-win32.whl", hash = "sha256:664a47ce62fe4bef9e2d2c430306e1428ecea207ffd68649e3b942fa8ea83b0b"}, + {file = "coverage-6.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:26dff09fb0d82693ba9e6231248641d60ba606150d02ed45110f9ec26404ed1c"}, + {file = "coverage-6.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d9c80df769f5ec05ad21ea34be7458d1dc51ff1fb4b2219e77fe24edf462d6df"}, + {file = "coverage-6.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:39ee53946bf009788108b4dd2894bf1349b4e0ca18c2016ffa7d26ce46b8f10d"}, + {file = "coverage-6.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f5b66caa62922531059bc5ac04f836860412f7f88d38a476eda0a6f11d4724f4"}, + {file = "coverage-6.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd180ed867e289964404051a958f7cccabdeed423f91a899829264bb7974d3d3"}, + {file = "coverage-6.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84631e81dd053e8a0d4967cedab6db94345f1c36107c71698f746cb2636c63e3"}, + {file = "coverage-6.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8c08da0bd238f2970230c2a0d28ff0e99961598cb2e810245d7fc5afcf1254e8"}, + {file = "coverage-6.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:d42c549a8f41dc103a8004b9f0c433e2086add8a719da00e246e17cbe4056f72"}, + {file = "coverage-6.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:309ce4a522ed5fca432af4ebe0f32b21d6d7ccbb0f5fcc99290e71feba67c264"}, + {file = "coverage-6.4.1-cp39-cp39-win32.whl", hash = "sha256:fdb6f7bd51c2d1714cea40718f6149ad9be6a2ee7d93b19e9f00934c0f2a74d9"}, + {file = "coverage-6.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:342d4aefd1c3e7f620a13f4fe563154d808b69cccef415415aece4c786665397"}, + {file = "coverage-6.4.1-pp36.pp37.pp38-none-any.whl", hash = "sha256:4803e7ccf93230accb928f3a68f00ffa80a88213af98ed338a57ad021ef06815"}, + {file = "coverage-6.4.1.tar.gz", hash = "sha256:4321f075095a096e70aff1d002030ee612b65a205a0a0f5b815280d5dc58100c"}, +] +importlib-metadata = [ + {file = "importlib_metadata-4.11.4-py3-none-any.whl", hash = "sha256:c58c8eb8a762858f49e18436ff552e83914778e50e9d2f1660535ffb364552ec"}, + {file = "importlib_metadata-4.11.4.tar.gz", hash = "sha256:5d26852efe48c0a32b0509ffbc583fda1a2266545a78d104a6f4aff3db17d700"}, +] +importlib-resources = [ + {file = "importlib_resources-5.8.0-py3-none-any.whl", hash = "sha256:7952325ffd516c05a8ad0858c74dff2c3343f136fe66a6002b2623dd1d43f223"}, + {file = "importlib_resources-5.8.0.tar.gz", hash = "sha256:568c9f16cb204f9decc8d6d24a572eeea27dacbb4cee9e6b03a8025736769751"}, +] +iniconfig = [ + {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, + {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, +] +jsonpatch = [ + {file = "jsonpatch-1.32-py2.py3-none-any.whl", hash = "sha256:26ac385719ac9f54df8a2f0827bb8253aa3ea8ab7b3368457bcdb8c14595a397"}, + {file = "jsonpatch-1.32.tar.gz", hash = "sha256:b6ddfe6c3db30d81a96aaeceb6baf916094ffa23d7dd5fa2c13e13f8b6e600c2"}, +] +jsonpointer = [ + {file = "jsonpointer-2.3-py2.py3-none-any.whl", hash = "sha256:51801e558539b4e9cd268638c078c6c5746c9ac96bc38152d443400e4f3793e9"}, + {file = "jsonpointer-2.3.tar.gz", hash = "sha256:97cba51526c829282218feb99dab1b1e6bdf8efd1c43dc9d57be093c0d69c99a"}, +] +jsonschema = [ + {file = "jsonschema-4.6.0-py3-none-any.whl", hash = "sha256:1c92d2db1900b668201f1797887d66453ab1fbfea51df8e4b46236689c427baf"}, + {file = "jsonschema-4.6.0.tar.gz", hash = "sha256:9d6397ba4a6c0bf0300736057f649e3e12ecbc07d3e81a0dacb72de4e9801957"}, +] +packaging = [ + {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, + {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, +] +pluggy = [ + {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, + {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, +] +py = [ + {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, + {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, +] +pyparsing = [ + {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, + {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, +] +pyrsistent = [ + {file = "pyrsistent-0.18.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:df46c854f490f81210870e509818b729db4488e1f30f2a1ce1698b2295a878d1"}, + {file = "pyrsistent-0.18.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d45866ececf4a5fff8742c25722da6d4c9e180daa7b405dc0a2a2790d668c26"}, + {file = "pyrsistent-0.18.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4ed6784ceac462a7d6fcb7e9b663e93b9a6fb373b7f43594f9ff68875788e01e"}, + {file = "pyrsistent-0.18.1-cp310-cp310-win32.whl", hash = "sha256:e4f3149fd5eb9b285d6bfb54d2e5173f6a116fe19172686797c056672689daf6"}, + {file = "pyrsistent-0.18.1-cp310-cp310-win_amd64.whl", hash = "sha256:636ce2dc235046ccd3d8c56a7ad54e99d5c1cd0ef07d9ae847306c91d11b5fec"}, + {file = "pyrsistent-0.18.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e92a52c166426efbe0d1ec1332ee9119b6d32fc1f0bbfd55d5c1088070e7fc1b"}, + {file = "pyrsistent-0.18.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7a096646eab884bf8bed965bad63ea327e0d0c38989fc83c5ea7b8a87037bfc"}, + {file = "pyrsistent-0.18.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cdfd2c361b8a8e5d9499b9082b501c452ade8bbf42aef97ea04854f4a3f43b22"}, + {file = "pyrsistent-0.18.1-cp37-cp37m-win32.whl", hash = "sha256:7ec335fc998faa4febe75cc5268a9eac0478b3f681602c1f27befaf2a1abe1d8"}, + {file = "pyrsistent-0.18.1-cp37-cp37m-win_amd64.whl", hash = "sha256:6455fc599df93d1f60e1c5c4fe471499f08d190d57eca040c0ea182301321286"}, + {file = "pyrsistent-0.18.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:fd8da6d0124efa2f67d86fa70c851022f87c98e205f0594e1fae044e7119a5a6"}, + {file = "pyrsistent-0.18.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7bfe2388663fd18bd8ce7db2c91c7400bf3e1a9e8bd7d63bf7e77d39051b85ec"}, + {file = "pyrsistent-0.18.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e3e1fcc45199df76053026a51cc59ab2ea3fc7c094c6627e93b7b44cdae2c8c"}, + {file = "pyrsistent-0.18.1-cp38-cp38-win32.whl", hash = "sha256:b568f35ad53a7b07ed9b1b2bae09eb15cdd671a5ba5d2c66caee40dbf91c68ca"}, + {file = "pyrsistent-0.18.1-cp38-cp38-win_amd64.whl", hash = "sha256:d1b96547410f76078eaf66d282ddca2e4baae8964364abb4f4dcdde855cd123a"}, + {file = "pyrsistent-0.18.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f87cc2863ef33c709e237d4b5f4502a62a00fab450c9e020892e8e2ede5847f5"}, + {file = "pyrsistent-0.18.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bc66318fb7ee012071b2792024564973ecc80e9522842eb4e17743604b5e045"}, + {file = "pyrsistent-0.18.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:914474c9f1d93080338ace89cb2acee74f4f666fb0424896fcfb8d86058bf17c"}, + {file = "pyrsistent-0.18.1-cp39-cp39-win32.whl", hash = "sha256:1b34eedd6812bf4d33814fca1b66005805d3640ce53140ab8bbb1e2651b0d9bc"}, + {file = "pyrsistent-0.18.1-cp39-cp39-win_amd64.whl", hash = "sha256:e24a828f57e0c337c8d8bb9f6b12f09dfdf0273da25fda9e314f0b684b415a07"}, + {file = "pyrsistent-0.18.1.tar.gz", hash = "sha256:d4d61f8b993a7255ba714df3aca52700f8125289f84f704cf80916517c46eb96"}, +] +pytest = [ + {file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"}, + {file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"}, +] +pytest-cov = [ + {file = "pytest-cov-3.0.0.tar.gz", hash = "sha256:e7f0f5b1617d2210a2cabc266dfe2f4c75a8d32fb89eafb7ad9d06f6d076d470"}, + {file = "pytest_cov-3.0.0-py3-none-any.whl", hash = "sha256:578d5d15ac4a25e5f961c938b85a05b09fdaae9deef3bb6de9a6e766622ca7a6"}, +] +toml = [ + {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, + {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, +] +tomli = [ + {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, +] +typing-extensions = [ + {file = "typing_extensions-4.2.0-py3-none-any.whl", hash = "sha256:6657594ee297170d19f67d55c05852a874e7eb634f4f753dbd667855e07c1708"}, + {file = "typing_extensions-4.2.0.tar.gz", hash = "sha256:f1c24655a0da0d1b67f07e17a5e6b2a105894e6824b92096378bb3668ef02376"}, +] +zipp = [ + {file = "zipp-3.8.0-py3-none-any.whl", hash = "sha256:c4f6e5bbf48e74f7a38e7cc5b0480ff42b0ae5178957d564d18932525d5cf099"}, + {file = "zipp-3.8.0.tar.gz", hash = "sha256:56bf8aadb83c24db6c4b577e13de374ccfb67da2078beba1d037c17980bf43ad"}, +] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/warlock-1.3.3/pyproject.toml new/warlock-2.0.1/pyproject.toml --- old/warlock-1.3.3/pyproject.toml 2019-05-20 12:07:50.000000000 +0200 +++ new/warlock-2.0.1/pyproject.toml 2022-06-17 14:53:49.000000000 +0200 @@ -1,3 +1,41 @@ +[tool.poetry] +name = "warlock" +version = "2.0.1" +description = "Python object model built on JSON schema and JSON patch." +readme = "README.md" +authors = ["Brian Waldon <bcwal...@gmail.com>"] +maintainers = ["Jan Willhaus <m...@janwillhaus.de>"] +homepage = "http://github.com/bcwaldon/warlock" +repository = "http://github.com/bcwaldon/warlock" +license = "Apache-2.0" +keywords=["JSON schema", "JSON patch", "model validation"] +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "Operating System :: MacOS :: MacOS X", + "Operating System :: Microsoft :: Windows", + "Operating System :: POSIX", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Topic :: Software Development :: Libraries :: Python Modules", +] +packages = [ + { include = "warlock" }, +] + +[tool.poetry.dependencies] +python = "^3.7" +jsonschema = "^4" +jsonpatch = "^1" + +[tool.poetry.dev-dependencies] +pytest = "^6.0" +pytest-cov = "^3.0" + [tool.black] line-length = 88 include = '\.pyi?$' @@ -9,3 +47,11 @@ | __pycache__ )/ ''' + +[tool.isort] +known_third_party = ["jsonpatch","jsonschema"] +known_first_party=["warlock"] + +[build-system] +requires = ["poetry-core"] +build-backend = "poetry.core.masonry.api" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/warlock-1.3.3/pytest.ini new/warlock-2.0.1/pytest.ini --- old/warlock-1.3.3/pytest.ini 2019-05-20 12:07:50.000000000 +0200 +++ new/warlock-2.0.1/pytest.ini 2022-06-17 14:53:49.000000000 +0200 @@ -6,4 +6,4 @@ --cov-config=.coveragerc --cov-report html --cov-report term - --verbose \ No newline at end of file + --verbose diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/warlock-1.3.3/requirements.txt new/warlock-2.0.1/requirements.txt --- old/warlock-1.3.3/requirements.txt 2019-05-20 12:07:50.000000000 +0200 +++ new/warlock-2.0.1/requirements.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1,3 +0,0 @@ -jsonschema>=0.7,<4 -jsonpatch>=0.10,<2 -six diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/warlock-1.3.3/setup.cfg new/warlock-2.0.1/setup.cfg --- old/warlock-1.3.3/setup.cfg 2019-05-20 12:07:50.000000000 +0200 +++ new/warlock-2.0.1/setup.cfg 1970-01-01 01:00:00.000000000 +0100 @@ -1,2 +0,0 @@ -[bdist_wheel] -universal = 1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/warlock-1.3.3/setup.py new/warlock-2.0.1/setup.py --- old/warlock-1.3.3/setup.py 2019-05-20 12:07:50.000000000 +0200 +++ new/warlock-2.0.1/setup.py 1970-01-01 01:00:00.000000000 +0100 @@ -1,65 +0,0 @@ -# Copyright 2012 Brian Waldon -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import setuptools -import io -import os - - -def parse_requirements(): - fap = io.open("requirements.txt", "r", encoding="utf-8") - raw_req = fap.read() - fap.close() - return raw_req.split("\n") - - -def read(fname): - with io.open( - os.path.join(os.path.dirname(__file__), fname), "r", encoding="utf-8" - ) as fp: - return fp.read() - - -setuptools.setup( - name="warlock", - version="1.3.3", - description="Python object model built on JSON schema and JSON patch.", - long_description=read("README.md"), - long_description_content_type="text/markdown", - keywords=["JSON schema", "JSON patch", "model validation"], - author="Brian Waldon", - author_email="bcwal...@gmail.com", - maintainer="Jan Willhaus", - maintainer_email="m...@janwillhaus.de", - url="http://github.com/bcwaldon/warlock", - packages=["warlock"], - install_requires=parse_requirements(), - license="Apache-2.0", - classifiers=[ - "Development Status :: 5 - Production/Stable", - "Intended Audience :: Developers", - "Operating System :: MacOS :: MacOS X", - "Operating System :: Microsoft :: Windows", - "Operating System :: POSIX", - "Programming Language :: Python", - "Programming Language :: Python :: 2", - "Programming Language :: Python :: 2.7", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.4", - "Programming Language :: Python :: 3.5", - "Programming Language :: Python :: 3.6", - "Programming Language :: Python :: 3.7", - "Topic :: Software Development :: Libraries :: Python Modules", - ], -) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/warlock-1.3.3/tests/schemas/country.json new/warlock-2.0.1/tests/schemas/country.json --- old/warlock-1.3.3/tests/schemas/country.json 2019-05-20 12:07:50.000000000 +0200 +++ new/warlock-2.0.1/tests/schemas/country.json 2022-06-17 14:53:49.000000000 +0200 @@ -7,4 +7,4 @@ "overlord": { "$ref": "person.json#" } }, "additionalProperties": false -} \ No newline at end of file +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/warlock-1.3.3/tests/schemas/person.json new/warlock-2.0.1/tests/schemas/person.json --- old/warlock-1.3.3/tests/schemas/person.json 2019-05-20 12:07:50.000000000 +0200 +++ new/warlock-2.0.1/tests/schemas/person.json 2022-06-17 14:53:49.000000000 +0200 @@ -7,4 +7,4 @@ "firstname": { "type": "string" }, "lastname": { "type": "string" } } -} \ No newline at end of file +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/warlock-1.3.3/tests/test_core.py new/warlock-2.0.1/tests/test_core.py --- old/warlock-1.3.3/tests/test_core.py 2019-05-20 12:07:50.000000000 +0200 +++ new/warlock-2.0.1/tests/test_core.py 2022-06-17 14:53:49.000000000 +0200 @@ -13,16 +13,13 @@ # limitations under the License. import copy -import unittest -import os - import json - -import six +import os +import unittest +import warnings import warlock - fixture = { "name": "Country", "properties": {"name": {"type": "string"}, "population": {"type": "integer"}}, @@ -41,7 +38,7 @@ "name": "Parent", "properties": { "name": {"type": "string"}, - "children": {"type": "array", "items": [{"type": "object"}]}, + "children": {"type": "array", "items": {"type": "object"}}, }, "required": ["name", "children"], } @@ -64,13 +61,6 @@ Country = warlock.model_factory(fixture) self.assertRaises(ValueError, Country, name=1) - def test_class_name_from_unicode_schema_name(self): - fixture_copy = copy.deepcopy(fixture) - fixture_copy["name"] = six.text_type(fixture_copy["name"]) - # Can't set class.__name__ to a unicode object, ensure warlock - # does some magic to make it possible - warlock.model_factory(fixture_copy) - def test_invalid_operations(self): Country = warlock.model_factory(fixture) sweden = Country(name="Sweden", population=9379116) @@ -104,7 +94,7 @@ Country = warlock.model_factory(fixture) sweden = Country(name="Sweden", population=9379116) self.assertEqual( - set(list(six.iteritems(sweden))), + set(list(sweden.items())), set([("name", "Sweden"), ("population", 9379116)]), ) self.assertEqual( @@ -136,27 +126,19 @@ Mixmaster = warlock.model_factory(complex_fixture) mike = Mixmaster(sub={"foo": "mike"}) - self.assertEquals("mike", mike.sub["foo"]) + self.assertEqual("mike", mike.sub["foo"]) mike_1 = mike.copy() mike_1["sub"]["foo"] = "james" - self.assertEquals("mike", mike.sub["foo"]) - - mike_2 = dict(six.iteritems(mike)) - mike_2["sub"]["foo"] = "james" - self.assertEquals("mike", mike.sub["foo"]) + self.assertEqual("mike", mike.sub["foo"]) mike_2 = dict(mike.items()) mike_2["sub"]["foo"] = "james" - self.assertEquals("mike", mike.sub["foo"]) - - mike_3_sub = list(six.itervalues(mike))[0] - mike_3_sub["foo"] = "james" - self.assertEquals("mike", mike.sub["foo"]) + self.assertEqual("mike", mike.sub["foo"]) mike_3_sub = list(mike.values())[0] mike_3_sub["foo"] = "james" - self.assertEquals("mike", mike.sub["foo"]) + self.assertEqual("mike", mike.sub["foo"]) def test_forbidden_methods(self): Country = warlock.model_factory(fixture) @@ -189,11 +171,20 @@ def test_changes(self): Country = warlock.model_factory(fixture) sweden = Country(name="Sweden", population=9379116) - self.assertEqual(sweden.changes, {}) + with warnings.catch_warnings(record=True) as w: + warnings.simplefilter("always") + self.assertEqual(sweden.changes, {}) + assert w[0].category == DeprecationWarning sweden["name"] = "Finland" - self.assertEqual(sweden.changes, {"name": "Finland"}) + with warnings.catch_warnings(record=True) as w: + warnings.simplefilter("always") + self.assertEqual(sweden.changes, {"name": "Finland"}) + assert w[0].category == DeprecationWarning sweden["name"] = "Norway" - self.assertEqual(sweden.changes, {"name": "Norway"}) + with warnings.catch_warnings(record=True) as w: + warnings.simplefilter("always") + self.assertEqual(sweden.changes, {"name": "Norway"}) + assert w[0].category == DeprecationWarning def test_patch_no_changes(self): Country = warlock.model_factory(fixture) @@ -262,8 +253,8 @@ country_schema = json.load(country_schema_file) person_schema = json.load(person_schema_file) - Country = warlock.model_factory(country_schema, resolver) - Person = warlock.model_factory(person_schema, resolver) + Country = warlock.model_factory(country_schema, resolver=resolver) + Person = warlock.model_factory(person_schema, resolver=resolver) england = Country( name="England", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/warlock-1.3.3/tox.ini new/warlock-2.0.1/tox.ini --- old/warlock-1.3.3/tox.ini 1970-01-01 01:00:00.000000000 +0100 +++ new/warlock-2.0.1/tox.ini 2022-06-17 14:53:49.000000000 +0200 @@ -0,0 +1,11 @@ +[tox] +skipsdist = True +envlist = py37,py38,py39,py310 + +[testenv] +skip_install = true +deps = + poetry +commands = + poetry install -v + poetry run pytest diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/warlock-1.3.3/warlock/__init__.py new/warlock-2.0.1/warlock/__init__.py --- old/warlock-1.3.3/warlock/__init__.py 2019-05-20 12:07:50.000000000 +0200 +++ new/warlock-2.0.1/warlock/__init__.py 2022-06-17 14:53:49.000000000 +0200 @@ -14,5 +14,5 @@ """Public-facing Warlock API""" -from warlock.core import model_factory # NOQA -from warlock.exceptions import InvalidOperation # NOQA +from warlock.core import model_factory # noqa: F401 +from warlock.exceptions import InvalidOperation # noqa: F401 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/warlock-1.3.3/warlock/core.py new/warlock-2.0.1/warlock/core.py --- old/warlock-1.3.3/warlock/core.py 2019-05-20 12:07:50.000000000 +0200 +++ new/warlock-2.0.1/warlock/core.py 2022-06-17 14:53:49.000000000 +0200 @@ -17,9 +17,10 @@ import copy from . import model +from jsonschema.validators import validator_for -def model_factory(schema, resolver=None, base_class=model.Model, name=None): +def model_factory(schema, base_class=model.Model, name=None, resolver=None): """Generate a model class based on the provided JSON Schema :param schema: dict representing valid JSON schema @@ -32,6 +33,13 @@ def __init__(self, *args, **kwargs): self.__dict__["schema"] = schema self.__dict__["resolver"] = resolver + + cls = validator_for(self.schema) + if resolver is not None: + self.__dict__["validator_instance"] = cls(schema, resolver=resolver) + else: + self.__dict__["validator_instance"] = cls(schema) + base_class.__init__(self, *args, **kwargs) if resolver is not None: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/warlock-1.3.3/warlock/model.py new/warlock-2.0.1/warlock/model.py --- old/warlock-1.3.3/warlock/model.py 2019-05-20 12:07:50.000000000 +0200 +++ new/warlock-2.0.1/warlock/model.py 2022-06-17 14:53:49.000000000 +0200 @@ -19,7 +19,6 @@ import jsonpatch import jsonschema -import six from . import exceptions @@ -104,15 +103,9 @@ raise exceptions.InvalidOperation(str(exc)) dict.update(self, other) - def iteritems(self): - return six.iteritems(copy.deepcopy(dict(self))) - def items(self): return copy.deepcopy(dict(self)).items() - def itervalues(self): - return six.itervalues(copy.deepcopy(dict(self))) - def values(self): return copy.deepcopy(dict(self)).values() @@ -134,9 +127,7 @@ def validate(self, obj): """Apply a JSON schema to an object""" try: - if self.resolver is not None: - jsonschema.validate(obj, self.schema, resolver=self.resolver) - else: - jsonschema.validate(obj, self.schema) + self.validator_instance.validate(obj) + except jsonschema.ValidationError as exc: raise exceptions.ValidationError(str(exc))