From 6a5b54e1250f958adabc981e36875db4baf80077 Mon Sep 17 00:00:00 2001 From: Wangjunqi123 Date: Tue, 1 Nov 2022 14:04:22 +0800 Subject: [PATCH] update version to 2.0.1 --- python-warlock.spec | 172 ++++--------------------------------------- warlock-1.3.3.tar.gz | Bin 11602 -> 0 bytes warlock-2.0.1.tar.gz | Bin 0 -> 8298 bytes 3 files changed, 13 insertions(+), 159 deletions(-) delete mode 100644 warlock-1.3.3.tar.gz create mode 100644 warlock-2.0.1.tar.gz diff --git a/python-warlock.spec b/python-warlock.spec index 7f8d0ff..09e38bc 100644 --- a/python-warlock.spec +++ b/python-warlock.spec @@ -1,186 +1,36 @@ %global _empty_manifest_terminate_build 0 Name: python-warlock -Version: 1.3.3 +Version: 2.0.1 Release: 1 Summary: Python object model built on JSON schema and JSON patch. License: Apache-2.0 URL: http://github.com/bcwaldon/warlock -Source0: https://files.pythonhosted.org/packages/c2/36/178b26a338cd6d30523246da4721b1114306f588deb813f3f503052825ee/warlock-1.3.3.tar.gz +Source0: https://files.pythonhosted.org/packages/de/cf/ba9ac96d09b797c377e2c12c0eb6b19565f3b2a2efb55932d319e319b622/warlock-2.0.1.tar.gz BuildArch: noarch - %description Warlock — self-validating Python objects using JSON schema - %package -n python3-warlock Summary: Python object model built on JSON schema and JSON patch. Provides: python-warlock +Requires: python3-jsonpatch +Requires: python3-jsonschema BuildRequires: python3-devel BuildRequires: python3-setuptools + %description -n python3-warlock -# Warlock — 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] -[![Coverage Status](https://coveralls.io/repos/github/bcwaldon/warlock/badge.svg?branch=master)][coveralls] - -## Installation - -Warlock is [available on PyPI][warlock]: - -```shell -pip install warlock -``` - -## Usage - -1) Create your schema - - ```python - >>> schema = { - 'name': 'Country', - 'properties': { - 'name': {'type': 'string'}, - 'abbreviation': {'type': 'string'}, - 'population': {'type': 'integer'}, - }, - 'additionalProperties': False, - } - ``` - -2) Create a model - - ```python - >>> import warlock - >>> Country = warlock.model_factory(schema) - ``` - -3) Create an object using your model - - ```python - >>> sweden = Country(name='Sweden', abbreviation='SE') - ``` - -4) Let the object validate itself - - ```python - >>> sweden.name = 5 - Traceback (most recent call last): - File "", line 1, in - File "warlock/core.py", line 53, in __setattr__ - raise InvalidOperation(msg) - warlock.core.InvalidOperation: Unable to set 'name' to '5' - - >>> sweden.overlord = 'Bears' - Traceback (most recent call last): - File "", line 1, in - File "warlock/core.py", line 53, in __setattr__ - raise InvalidOperation(msg) - warlock.core.InvalidOperation: Unable to set 'overlord' to 'Bears' - ``` - -5) Generate a [JSON Patch document](http://tools.ietf.org/html/draft-ietf-appsawg-json-patch) to track changes - - ```python - >>> sweden.population=9453000 - >>> sweden.patch - '[{"path": "/population", "value": 9453000, "op": "add"}]' - ``` - -[warlock]: https://pypi.org/project/warlock/ -[pip]: https://pip.pypa.io/en/stable/ -[ci-builds]: https://travis-ci.org/bcwaldon/warlock -[coveralls]: https://coveralls.io/github/bcwaldon/warlock?branch=master -[pypistats]: https://pypistats.org/packages/warlock +Warlock — self-validating Python objects using JSON schema %package help Summary: Development documents and examples for warlock Provides: python3-warlock-doc + %description help -# Warlock — 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] -[![Coverage Status](https://coveralls.io/repos/github/bcwaldon/warlock/badge.svg?branch=master)][coveralls] - -## Installation - -Warlock is [available on PyPI][warlock]: - -```shell -pip install warlock -``` - -## Usage - -1) Create your schema - - ```python - >>> schema = { - 'name': 'Country', - 'properties': { - 'name': {'type': 'string'}, - 'abbreviation': {'type': 'string'}, - 'population': {'type': 'integer'}, - }, - 'additionalProperties': False, - } - ``` - -2) Create a model - - ```python - >>> import warlock - >>> Country = warlock.model_factory(schema) - ``` - -3) Create an object using your model - - ```python - >>> sweden = Country(name='Sweden', abbreviation='SE') - ``` - -4) Let the object validate itself - - ```python - >>> sweden.name = 5 - Traceback (most recent call last): - File "", line 1, in - File "warlock/core.py", line 53, in __setattr__ - raise InvalidOperation(msg) - warlock.core.InvalidOperation: Unable to set 'name' to '5' - - >>> sweden.overlord = 'Bears' - Traceback (most recent call last): - File "", line 1, in - File "warlock/core.py", line 53, in __setattr__ - raise InvalidOperation(msg) - warlock.core.InvalidOperation: Unable to set 'overlord' to 'Bears' - ``` - -5) Generate a [JSON Patch document](http://tools.ietf.org/html/draft-ietf-appsawg-json-patch) to track changes - - ```python - >>> sweden.population=9453000 - >>> sweden.patch - '[{"path": "/population", "value": 9453000, "op": "add"}]' - ``` - -[warlock]: https://pypi.org/project/warlock/ -[pip]: https://pip.pypa.io/en/stable/ -[ci-builds]: https://travis-ci.org/bcwaldon/warlock -[coveralls]: https://coveralls.io/github/bcwaldon/warlock?branch=master -[pypistats]: https://pypistats.org/packages/warlock +Warlock — self-validating Python objects using JSON schema %prep -%autosetup -n warlock-1.3.3 +%autosetup -n warlock-%{version} %build %py3_build @@ -220,5 +70,9 @@ mv %{buildroot}/doclist.lst . %{_docdir}/* %changelog +* Tue Nov 01 2022 wangjunqi - 2.0.1-1 +- Update package to version 2.0.1 + * Mon Nov 23 2020 Python_Bot - Package Spec generated + diff --git a/warlock-1.3.3.tar.gz b/warlock-1.3.3.tar.gz deleted file mode 100644 index d0adbccc2a87e4f5a825c975cd69a2d97320069b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11602 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 literal 0 HcmV?d00001