diff options
| author | CoprDistGit <infra@openeuler.org> | 2023-05-18 04:27:43 +0000 |
|---|---|---|
| committer | CoprDistGit <infra@openeuler.org> | 2023-05-18 04:27:43 +0000 |
| commit | 81c8c9a579b12952c8a142c382a2d03a74c95235 (patch) | |
| tree | ac5092ce919ff3eef8537e446e76b048e20a12a8 /python-api-watchdog.spec | |
| parent | fa66cf966bd0b9174c56606218dcff1a473819fa (diff) | |
automatic import of python-api-watchdog
Diffstat (limited to 'python-api-watchdog.spec')
| -rw-r--r-- | python-api-watchdog.spec | 469 |
1 files changed, 469 insertions, 0 deletions
diff --git a/python-api-watchdog.spec b/python-api-watchdog.spec new file mode 100644 index 0000000..0f25651 --- /dev/null +++ b/python-api-watchdog.spec @@ -0,0 +1,469 @@ +%global _empty_manifest_terminate_build 0 +Name: python-api-watchdog +Version: 0.6.0 +Release: 1 +Summary: API watchdog +License: MIT +URL: https://pypi.org/project/api-watchdog/ +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/36/10/998688ce6ea7b1f8ee50771e831395ed978f47484cb8044d9fdfc0cc15fc/api_watchdog-0.6.0.tar.gz +BuildArch: noarch + +Requires: python3-pydantic +Requires: python3-jq +Requires: python3-requests +Requires: python3-reasoner-pydantic + +%description +# API Watchdog + +## Usage +``` +api-watchdog discover path/to/test/files +``` +Will output the abbreviated result of the tests to stdout. + +``` +api-watchdog discover --email path/to/test/files +``` +Will email the results of the tests to the relevant addresses +(as determined by the `email_to=` field of the test. Test results +are grouped so that only one email per address is sent per run. + +Whjen using the CLI, these environment variables must be set to email results +- MAILGUN_API_URL +- MAILGUN_API_TOKEN +- MAILGUN_FROM + +``` +api-watchdog discover -o results_file.json path/to/test/files +``` +Will serialize the `WatchdogResultGroup` object to the path specified +by the `-o` flag. + +## Installation +API watchdog handles validation support through extra requirements. +This means that to install it with TRAPI validation you invoke +``` +pip install api-watchdog[TRAPI] +``` + +If you are using `zsh` you will run affoul of bracket globbing and should use +``` +pip install 'api-watchdog[TRAPI]' +``` + +See this [stackoverflow question](https://stackoverflow.com/questions/30539798/zsh-no-matches-found-requestssecurity) for context. + +Available extensions are: +- TRAPI + +If you do not want any validation support you can use the bare `pip install api-watchdog` command. + +## WatchdogTest format +The main way you'll interface with API Watchdog is through `WatchdogTest`s. +Each `WatchdogTest` has +- name (str): The name of the test +- target (url): The endpoint that the test targets +- expectations (Array[Expectation]): A list of requirements that the response must meet for the test to pass. +- payload (object): The json passed to the endpoint. + +## Expectation format +An `Expectation` describes where to find a piece of data in the response and what that piece of data should be in order for the test to pass. +Each `Expectation` has + +- selector (jq program): A string describing a jq program that selects the one or more elements to test against +- value (Any): a value to test equality against +- validation_type (ValidationType): An API Watchdog validation type used to validate the value/response. The value/response will be implicitly converted to this type. For example, if you specify 'float' and the value is an integer it will be implicitly converted to a float. +- level (Optional[ExpectationLevel]): How important an expectation is. Defaults to "critical" + +## ExpectationLevel +One of the strings: +- critical +- warning +- info +Only "critical" expectations affect the success or failure of a `WatchdogTest`. + + +The selector format is a string that is a [jq program](https://stedolan.github.io/jq/). This allows for rich selection capabilities. +For example: + +``` + { + "selector": ".message.knowledge_graph.nodes[\"MONDO:0005148\"].name", + "value": "type 2 diabetes mellitus", + "validation_type": "string" + }, +``` + +Is an `Expectation` that checks if a node is present in the knowledge graph of a TRAPI response. + +The possible validation types are +- "string", +- "int", +- "float", +- "object", +- "bool", +- "null", +- "trapi.knowledge_graph", +- "trapi.node", +- "trapi.edge", +- "trapi.query_graph", +- "trapi.q_node", +- "trapi.q_edge", +- "trapi.query_constraint", +- "trapi.result", +- "trapi.node_binding", +- "trapi.edge_binding", +- "trapi.message", +- "trapi.query", +- "trapi.response", +- "trapi.async_query", +- "trapi.operation", +- "trapi.workflow", +- "trapi.attribute", +- "trapi.biolink_entity", +- "trapi.biolink_predicate", +- "trapi.curie", +- "trapi.log_entry", +- "trapi.log_level", +- "trapi.meta_edge", +- "trapi.meta_node", +- "trapi.meta_knowledge_graph", +- "trapi.meta_attribute" + + +## What it is +An API monitoring utility that aspires to support: +- [ ] Validation +- [ ] Continuous Integration +- [ ] Multiple input and output formats +- [ ] Test discovery / minimal configuration + +## What it is not +- A way to regularly schedule tests against an endpoint, eg. [cron](https://en.wikipedia.org/wiki/Cron), [celery](https://docs.celeryproject.org/en/stable/getting-started/introduction.html) +- A way to specify api schemas eg. [marshmallow](https://marshmallow.readthedocs.io/en/stable/), [pydantic](https://pydantic-docs.helpmanual.io/) + + + + + +%package -n python3-api-watchdog +Summary: API watchdog +Provides: python-api-watchdog +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-api-watchdog +# API Watchdog + +## Usage +``` +api-watchdog discover path/to/test/files +``` +Will output the abbreviated result of the tests to stdout. + +``` +api-watchdog discover --email path/to/test/files +``` +Will email the results of the tests to the relevant addresses +(as determined by the `email_to=` field of the test. Test results +are grouped so that only one email per address is sent per run. + +Whjen using the CLI, these environment variables must be set to email results +- MAILGUN_API_URL +- MAILGUN_API_TOKEN +- MAILGUN_FROM + +``` +api-watchdog discover -o results_file.json path/to/test/files +``` +Will serialize the `WatchdogResultGroup` object to the path specified +by the `-o` flag. + +## Installation +API watchdog handles validation support through extra requirements. +This means that to install it with TRAPI validation you invoke +``` +pip install api-watchdog[TRAPI] +``` + +If you are using `zsh` you will run affoul of bracket globbing and should use +``` +pip install 'api-watchdog[TRAPI]' +``` + +See this [stackoverflow question](https://stackoverflow.com/questions/30539798/zsh-no-matches-found-requestssecurity) for context. + +Available extensions are: +- TRAPI + +If you do not want any validation support you can use the bare `pip install api-watchdog` command. + +## WatchdogTest format +The main way you'll interface with API Watchdog is through `WatchdogTest`s. +Each `WatchdogTest` has +- name (str): The name of the test +- target (url): The endpoint that the test targets +- expectations (Array[Expectation]): A list of requirements that the response must meet for the test to pass. +- payload (object): The json passed to the endpoint. + +## Expectation format +An `Expectation` describes where to find a piece of data in the response and what that piece of data should be in order for the test to pass. +Each `Expectation` has + +- selector (jq program): A string describing a jq program that selects the one or more elements to test against +- value (Any): a value to test equality against +- validation_type (ValidationType): An API Watchdog validation type used to validate the value/response. The value/response will be implicitly converted to this type. For example, if you specify 'float' and the value is an integer it will be implicitly converted to a float. +- level (Optional[ExpectationLevel]): How important an expectation is. Defaults to "critical" + +## ExpectationLevel +One of the strings: +- critical +- warning +- info +Only "critical" expectations affect the success or failure of a `WatchdogTest`. + + +The selector format is a string that is a [jq program](https://stedolan.github.io/jq/). This allows for rich selection capabilities. +For example: + +``` + { + "selector": ".message.knowledge_graph.nodes[\"MONDO:0005148\"].name", + "value": "type 2 diabetes mellitus", + "validation_type": "string" + }, +``` + +Is an `Expectation` that checks if a node is present in the knowledge graph of a TRAPI response. + +The possible validation types are +- "string", +- "int", +- "float", +- "object", +- "bool", +- "null", +- "trapi.knowledge_graph", +- "trapi.node", +- "trapi.edge", +- "trapi.query_graph", +- "trapi.q_node", +- "trapi.q_edge", +- "trapi.query_constraint", +- "trapi.result", +- "trapi.node_binding", +- "trapi.edge_binding", +- "trapi.message", +- "trapi.query", +- "trapi.response", +- "trapi.async_query", +- "trapi.operation", +- "trapi.workflow", +- "trapi.attribute", +- "trapi.biolink_entity", +- "trapi.biolink_predicate", +- "trapi.curie", +- "trapi.log_entry", +- "trapi.log_level", +- "trapi.meta_edge", +- "trapi.meta_node", +- "trapi.meta_knowledge_graph", +- "trapi.meta_attribute" + + +## What it is +An API monitoring utility that aspires to support: +- [ ] Validation +- [ ] Continuous Integration +- [ ] Multiple input and output formats +- [ ] Test discovery / minimal configuration + +## What it is not +- A way to regularly schedule tests against an endpoint, eg. [cron](https://en.wikipedia.org/wiki/Cron), [celery](https://docs.celeryproject.org/en/stable/getting-started/introduction.html) +- A way to specify api schemas eg. [marshmallow](https://marshmallow.readthedocs.io/en/stable/), [pydantic](https://pydantic-docs.helpmanual.io/) + + + + + +%package help +Summary: Development documents and examples for api-watchdog +Provides: python3-api-watchdog-doc +%description help +# API Watchdog + +## Usage +``` +api-watchdog discover path/to/test/files +``` +Will output the abbreviated result of the tests to stdout. + +``` +api-watchdog discover --email path/to/test/files +``` +Will email the results of the tests to the relevant addresses +(as determined by the `email_to=` field of the test. Test results +are grouped so that only one email per address is sent per run. + +Whjen using the CLI, these environment variables must be set to email results +- MAILGUN_API_URL +- MAILGUN_API_TOKEN +- MAILGUN_FROM + +``` +api-watchdog discover -o results_file.json path/to/test/files +``` +Will serialize the `WatchdogResultGroup` object to the path specified +by the `-o` flag. + +## Installation +API watchdog handles validation support through extra requirements. +This means that to install it with TRAPI validation you invoke +``` +pip install api-watchdog[TRAPI] +``` + +If you are using `zsh` you will run affoul of bracket globbing and should use +``` +pip install 'api-watchdog[TRAPI]' +``` + +See this [stackoverflow question](https://stackoverflow.com/questions/30539798/zsh-no-matches-found-requestssecurity) for context. + +Available extensions are: +- TRAPI + +If you do not want any validation support you can use the bare `pip install api-watchdog` command. + +## WatchdogTest format +The main way you'll interface with API Watchdog is through `WatchdogTest`s. +Each `WatchdogTest` has +- name (str): The name of the test +- target (url): The endpoint that the test targets +- expectations (Array[Expectation]): A list of requirements that the response must meet for the test to pass. +- payload (object): The json passed to the endpoint. + +## Expectation format +An `Expectation` describes where to find a piece of data in the response and what that piece of data should be in order for the test to pass. +Each `Expectation` has + +- selector (jq program): A string describing a jq program that selects the one or more elements to test against +- value (Any): a value to test equality against +- validation_type (ValidationType): An API Watchdog validation type used to validate the value/response. The value/response will be implicitly converted to this type. For example, if you specify 'float' and the value is an integer it will be implicitly converted to a float. +- level (Optional[ExpectationLevel]): How important an expectation is. Defaults to "critical" + +## ExpectationLevel +One of the strings: +- critical +- warning +- info +Only "critical" expectations affect the success or failure of a `WatchdogTest`. + + +The selector format is a string that is a [jq program](https://stedolan.github.io/jq/). This allows for rich selection capabilities. +For example: + +``` + { + "selector": ".message.knowledge_graph.nodes[\"MONDO:0005148\"].name", + "value": "type 2 diabetes mellitus", + "validation_type": "string" + }, +``` + +Is an `Expectation` that checks if a node is present in the knowledge graph of a TRAPI response. + +The possible validation types are +- "string", +- "int", +- "float", +- "object", +- "bool", +- "null", +- "trapi.knowledge_graph", +- "trapi.node", +- "trapi.edge", +- "trapi.query_graph", +- "trapi.q_node", +- "trapi.q_edge", +- "trapi.query_constraint", +- "trapi.result", +- "trapi.node_binding", +- "trapi.edge_binding", +- "trapi.message", +- "trapi.query", +- "trapi.response", +- "trapi.async_query", +- "trapi.operation", +- "trapi.workflow", +- "trapi.attribute", +- "trapi.biolink_entity", +- "trapi.biolink_predicate", +- "trapi.curie", +- "trapi.log_entry", +- "trapi.log_level", +- "trapi.meta_edge", +- "trapi.meta_node", +- "trapi.meta_knowledge_graph", +- "trapi.meta_attribute" + + +## What it is +An API monitoring utility that aspires to support: +- [ ] Validation +- [ ] Continuous Integration +- [ ] Multiple input and output formats +- [ ] Test discovery / minimal configuration + +## What it is not +- A way to regularly schedule tests against an endpoint, eg. [cron](https://en.wikipedia.org/wiki/Cron), [celery](https://docs.celeryproject.org/en/stable/getting-started/introduction.html) +- A way to specify api schemas eg. [marshmallow](https://marshmallow.readthedocs.io/en/stable/), [pydantic](https://pydantic-docs.helpmanual.io/) + + + + + +%prep +%autosetup -n api-watchdog-0.6.0 + +%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-api-watchdog -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Thu May 18 2023 Python_Bot <Python_Bot@openeuler.org> - 0.6.0-1 +- Package Spec generated |
