summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-05-31 07:56:24 +0000
committerCoprDistGit <infra@openeuler.org>2023-05-31 07:56:24 +0000
commit1fcf0f277555702f59476f217cd82c28240e4f28 (patch)
tree571bbb6026ec21fb392543b28541cd0fa9499ff9
parent8b94dca48cfb04980b7a488be2a0c4a836d5d3a8 (diff)
automatic import of python-aok
-rw-r--r--.gitignore1
-rw-r--r--python-aok.spec410
-rw-r--r--sources1
3 files changed, 412 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..f83658b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/aok-0.3.4.tar.gz
diff --git a/python-aok.spec b/python-aok.spec
new file mode 100644
index 0000000..26b012c
--- /dev/null
+++ b/python-aok.spec
@@ -0,0 +1,410 @@
+%global _empty_manifest_terminate_build 0
+Name: python-aok
+Version: 0.3.4
+Release: 1
+Summary: Complex dictionary comparisons to simplify testing.
+License: MIT
+URL: https://gitlab.com/rocket-boosters/a-ok
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/c4/c2/ac47cd8a93b3a5d3bf0233d5db9c0073c521a3cea3268d66753df7f204e2/aok-0.3.4.tar.gz
+BuildArch: noarch
+
+Requires: python3-PyYAML
+Requires: python3-toml
+
+%description
+# A-OK
+
+[![PyPI version](https://badge.fury.io/py/aok.svg)](https://pypi.org/project/aok/)
+[![build status](https://gitlab.com/rocket-boosters/a-ok/badges/main/pipeline.svg)](https://gitlab.com/rocket-boosters/a-ok/commits/main)
+[![coverage report](https://gitlab.com/rocket-boosters/a-ok/badges/main/coverage.svg)](https://gitlab.com/rocket-boosters/a-ok/commits/main)
+[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
+[![Code style: flake8](https://img.shields.io/badge/code%20style-flake8-white)](https://gitlab.com/pycqa/flake8)
+[![Code style: mypy](https://img.shields.io/badge/code%20style-mypy-white)](http://mypy-lang.org/)
+[![PyPI - License](https://img.shields.io/pypi/l/aok)](https://pypi.org/project/aok/)
+
+*aok* is a library for simplifying the assertions of complex dictionary returns,
+which can be used within Python code or loaded via YAML files.
+
+```python
+import aok
+
+import my_application
+
+
+def test_call():
+ """Should return the expected dictionary from my application call."""
+ result: dict = my_application.get_family("Jane Doe")
+ ok = aok.Okay({
+ "mother": {
+ "age": aok.greater_or_equal(50),
+ "full_name": aok.like("* Doe"),
+ },
+ "father": {
+ "age": aok.greater_or_equal(50),
+ "full_name": aok.like("* Doe"),
+ },
+ "younger_brother": {
+ "age": aok.less(10),
+ "full_name": aok.like("* Doe"),
+ }
+ })
+
+ # Dictionary "result" must be an exact match with the ok expected values.
+ ok.assert_all(result)
+
+ # Dictionary "result" is asserted against ok expected values as a subset, such
+ # that other keys/values may exist within the "result" structure.
+ ok.assert_subset(result)
+```
+
+The same thing can be archived from a YAML file:
+
+```yaml
+ok: !aok
+ mother:
+ age: !aok.greater_or_equal 50
+ full_name: !aok.like '* Doe'
+ father:
+ age: !aok.greater_or_equal 50
+ full_name: !aok.like '* Doe'
+ younger_brother:
+ age: !aok.less 10
+ full_name: !aok.like '* Doe'
+```
+
+and this can be loaded into a test:
+
+```python
+import aok
+import yaml
+import pathlib
+
+import my_application
+
+
+def test_call():
+ """Should return the expected dictionary from my application call."""
+ result: dict = my_application.get_family("Jane Doe")
+ data: dict = yaml.full_load(pathlib.Path("expectations.yaml").read_text())
+ ok: aok.Okay = data["ok"]
+ ok.assert_all(result)
+```
+
+It is also possible to do a comparison on lists with `aok.OkayList` and the `!aok_list`
+class replacing the `aok.Okay` and `!aok` values like shown in the example above.
+
+The available comparators are:
+- `aok.anything()` will always succeed, no matter what the observed value is.
+- `aok.between(min, max)` must be greater than or equal to min and less than or equal
+ to the specified min and max values. This can be a numeric or string value.
+- `aok.equals(value)` must be an exact match between the values.
+- `aok.unequals(value)` must not be equal to the expected value.
+- `aok.greater(value)` must be greater than the specified value.
+- `aok.greater_or_equal(value)` must be greater than or equal to the specified value.
+- `aok.less(value)` must be less than the specified value.
+- `aok.less_or_equal(value)` must be less than or equal to the specified value.
+- `aok.contains(string_value)` must be a string that contains the specified substring
+ exactly.
+- `aok.not_contains(string_value)` must be a string that does not contain the exact
+ specified string value.
+- `aok.like(string_value)` string compares against case-insensitive, unix-shell-style
+ wildcard expressions, e.g. "foo*" would match "foo-bar".
+- `aok.not_like(string_vlaue)` string compares against case-insensitive,
+ unix-shell-style wildcard expressions, e.g. "*bar*", and expects not to find a match.
+- `aok.like_case(string_value)` string compares against case-sensitive,
+ unix-shell-style wildcard expressions, e.g. "Foo*" would match "Foo-Bar".
+- `aok.match(string_regex_pattern)` matches the string against the specified regex
+ pattern.
+- `aok.not_null(value)` must not be null/None, but can be anything else.
+- `aok.optional(value)` must equal the specified value or be null/None.
+- `aok.one_of(value)` must match one of the values in the specified list. Any of the
+- `aok.none_of(value)` must not match one of the values in the specified list. Any of
+ the list items can also be a comparator that will be negated.
+- `aok.json_dict(dict)` parses a JSON-serialized string attribute and compares it to
+ the dictionary/object in the same fashion as the `!aok` root object.
+- `aok.json_list(list)` parses a JSON-serialized string attribute nad compares it to
+ the list object in the same fashion as the `!aok_list` root object.
+
+
+%package -n python3-aok
+Summary: Complex dictionary comparisons to simplify testing.
+Provides: python-aok
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-aok
+# A-OK
+
+[![PyPI version](https://badge.fury.io/py/aok.svg)](https://pypi.org/project/aok/)
+[![build status](https://gitlab.com/rocket-boosters/a-ok/badges/main/pipeline.svg)](https://gitlab.com/rocket-boosters/a-ok/commits/main)
+[![coverage report](https://gitlab.com/rocket-boosters/a-ok/badges/main/coverage.svg)](https://gitlab.com/rocket-boosters/a-ok/commits/main)
+[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
+[![Code style: flake8](https://img.shields.io/badge/code%20style-flake8-white)](https://gitlab.com/pycqa/flake8)
+[![Code style: mypy](https://img.shields.io/badge/code%20style-mypy-white)](http://mypy-lang.org/)
+[![PyPI - License](https://img.shields.io/pypi/l/aok)](https://pypi.org/project/aok/)
+
+*aok* is a library for simplifying the assertions of complex dictionary returns,
+which can be used within Python code or loaded via YAML files.
+
+```python
+import aok
+
+import my_application
+
+
+def test_call():
+ """Should return the expected dictionary from my application call."""
+ result: dict = my_application.get_family("Jane Doe")
+ ok = aok.Okay({
+ "mother": {
+ "age": aok.greater_or_equal(50),
+ "full_name": aok.like("* Doe"),
+ },
+ "father": {
+ "age": aok.greater_or_equal(50),
+ "full_name": aok.like("* Doe"),
+ },
+ "younger_brother": {
+ "age": aok.less(10),
+ "full_name": aok.like("* Doe"),
+ }
+ })
+
+ # Dictionary "result" must be an exact match with the ok expected values.
+ ok.assert_all(result)
+
+ # Dictionary "result" is asserted against ok expected values as a subset, such
+ # that other keys/values may exist within the "result" structure.
+ ok.assert_subset(result)
+```
+
+The same thing can be archived from a YAML file:
+
+```yaml
+ok: !aok
+ mother:
+ age: !aok.greater_or_equal 50
+ full_name: !aok.like '* Doe'
+ father:
+ age: !aok.greater_or_equal 50
+ full_name: !aok.like '* Doe'
+ younger_brother:
+ age: !aok.less 10
+ full_name: !aok.like '* Doe'
+```
+
+and this can be loaded into a test:
+
+```python
+import aok
+import yaml
+import pathlib
+
+import my_application
+
+
+def test_call():
+ """Should return the expected dictionary from my application call."""
+ result: dict = my_application.get_family("Jane Doe")
+ data: dict = yaml.full_load(pathlib.Path("expectations.yaml").read_text())
+ ok: aok.Okay = data["ok"]
+ ok.assert_all(result)
+```
+
+It is also possible to do a comparison on lists with `aok.OkayList` and the `!aok_list`
+class replacing the `aok.Okay` and `!aok` values like shown in the example above.
+
+The available comparators are:
+- `aok.anything()` will always succeed, no matter what the observed value is.
+- `aok.between(min, max)` must be greater than or equal to min and less than or equal
+ to the specified min and max values. This can be a numeric or string value.
+- `aok.equals(value)` must be an exact match between the values.
+- `aok.unequals(value)` must not be equal to the expected value.
+- `aok.greater(value)` must be greater than the specified value.
+- `aok.greater_or_equal(value)` must be greater than or equal to the specified value.
+- `aok.less(value)` must be less than the specified value.
+- `aok.less_or_equal(value)` must be less than or equal to the specified value.
+- `aok.contains(string_value)` must be a string that contains the specified substring
+ exactly.
+- `aok.not_contains(string_value)` must be a string that does not contain the exact
+ specified string value.
+- `aok.like(string_value)` string compares against case-insensitive, unix-shell-style
+ wildcard expressions, e.g. "foo*" would match "foo-bar".
+- `aok.not_like(string_vlaue)` string compares against case-insensitive,
+ unix-shell-style wildcard expressions, e.g. "*bar*", and expects not to find a match.
+- `aok.like_case(string_value)` string compares against case-sensitive,
+ unix-shell-style wildcard expressions, e.g. "Foo*" would match "Foo-Bar".
+- `aok.match(string_regex_pattern)` matches the string against the specified regex
+ pattern.
+- `aok.not_null(value)` must not be null/None, but can be anything else.
+- `aok.optional(value)` must equal the specified value or be null/None.
+- `aok.one_of(value)` must match one of the values in the specified list. Any of the
+- `aok.none_of(value)` must not match one of the values in the specified list. Any of
+ the list items can also be a comparator that will be negated.
+- `aok.json_dict(dict)` parses a JSON-serialized string attribute and compares it to
+ the dictionary/object in the same fashion as the `!aok` root object.
+- `aok.json_list(list)` parses a JSON-serialized string attribute nad compares it to
+ the list object in the same fashion as the `!aok_list` root object.
+
+
+%package help
+Summary: Development documents and examples for aok
+Provides: python3-aok-doc
+%description help
+# A-OK
+
+[![PyPI version](https://badge.fury.io/py/aok.svg)](https://pypi.org/project/aok/)
+[![build status](https://gitlab.com/rocket-boosters/a-ok/badges/main/pipeline.svg)](https://gitlab.com/rocket-boosters/a-ok/commits/main)
+[![coverage report](https://gitlab.com/rocket-boosters/a-ok/badges/main/coverage.svg)](https://gitlab.com/rocket-boosters/a-ok/commits/main)
+[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
+[![Code style: flake8](https://img.shields.io/badge/code%20style-flake8-white)](https://gitlab.com/pycqa/flake8)
+[![Code style: mypy](https://img.shields.io/badge/code%20style-mypy-white)](http://mypy-lang.org/)
+[![PyPI - License](https://img.shields.io/pypi/l/aok)](https://pypi.org/project/aok/)
+
+*aok* is a library for simplifying the assertions of complex dictionary returns,
+which can be used within Python code or loaded via YAML files.
+
+```python
+import aok
+
+import my_application
+
+
+def test_call():
+ """Should return the expected dictionary from my application call."""
+ result: dict = my_application.get_family("Jane Doe")
+ ok = aok.Okay({
+ "mother": {
+ "age": aok.greater_or_equal(50),
+ "full_name": aok.like("* Doe"),
+ },
+ "father": {
+ "age": aok.greater_or_equal(50),
+ "full_name": aok.like("* Doe"),
+ },
+ "younger_brother": {
+ "age": aok.less(10),
+ "full_name": aok.like("* Doe"),
+ }
+ })
+
+ # Dictionary "result" must be an exact match with the ok expected values.
+ ok.assert_all(result)
+
+ # Dictionary "result" is asserted against ok expected values as a subset, such
+ # that other keys/values may exist within the "result" structure.
+ ok.assert_subset(result)
+```
+
+The same thing can be archived from a YAML file:
+
+```yaml
+ok: !aok
+ mother:
+ age: !aok.greater_or_equal 50
+ full_name: !aok.like '* Doe'
+ father:
+ age: !aok.greater_or_equal 50
+ full_name: !aok.like '* Doe'
+ younger_brother:
+ age: !aok.less 10
+ full_name: !aok.like '* Doe'
+```
+
+and this can be loaded into a test:
+
+```python
+import aok
+import yaml
+import pathlib
+
+import my_application
+
+
+def test_call():
+ """Should return the expected dictionary from my application call."""
+ result: dict = my_application.get_family("Jane Doe")
+ data: dict = yaml.full_load(pathlib.Path("expectations.yaml").read_text())
+ ok: aok.Okay = data["ok"]
+ ok.assert_all(result)
+```
+
+It is also possible to do a comparison on lists with `aok.OkayList` and the `!aok_list`
+class replacing the `aok.Okay` and `!aok` values like shown in the example above.
+
+The available comparators are:
+- `aok.anything()` will always succeed, no matter what the observed value is.
+- `aok.between(min, max)` must be greater than or equal to min and less than or equal
+ to the specified min and max values. This can be a numeric or string value.
+- `aok.equals(value)` must be an exact match between the values.
+- `aok.unequals(value)` must not be equal to the expected value.
+- `aok.greater(value)` must be greater than the specified value.
+- `aok.greater_or_equal(value)` must be greater than or equal to the specified value.
+- `aok.less(value)` must be less than the specified value.
+- `aok.less_or_equal(value)` must be less than or equal to the specified value.
+- `aok.contains(string_value)` must be a string that contains the specified substring
+ exactly.
+- `aok.not_contains(string_value)` must be a string that does not contain the exact
+ specified string value.
+- `aok.like(string_value)` string compares against case-insensitive, unix-shell-style
+ wildcard expressions, e.g. "foo*" would match "foo-bar".
+- `aok.not_like(string_vlaue)` string compares against case-insensitive,
+ unix-shell-style wildcard expressions, e.g. "*bar*", and expects not to find a match.
+- `aok.like_case(string_value)` string compares against case-sensitive,
+ unix-shell-style wildcard expressions, e.g. "Foo*" would match "Foo-Bar".
+- `aok.match(string_regex_pattern)` matches the string against the specified regex
+ pattern.
+- `aok.not_null(value)` must not be null/None, but can be anything else.
+- `aok.optional(value)` must equal the specified value or be null/None.
+- `aok.one_of(value)` must match one of the values in the specified list. Any of the
+- `aok.none_of(value)` must not match one of the values in the specified list. Any of
+ the list items can also be a comparator that will be negated.
+- `aok.json_dict(dict)` parses a JSON-serialized string attribute and compares it to
+ the dictionary/object in the same fashion as the `!aok` root object.
+- `aok.json_list(list)` parses a JSON-serialized string attribute nad compares it to
+ the list object in the same fashion as the `!aok_list` root object.
+
+
+%prep
+%autosetup -n aok-0.3.4
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-aok -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Wed May 31 2023 Python_Bot <Python_Bot@openeuler.org> - 0.3.4-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..5c1c1b6
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+6ad87e4cafabc214e498c2f7bb05773a aok-0.3.4.tar.gz