diff options
author | CoprDistGit <infra@openeuler.org> | 2023-05-05 14:54:41 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2023-05-05 14:54:41 +0000 |
commit | ce36e74930f1466a604b1d60099761d07c72f74f (patch) | |
tree | 4053ec0b6b9b3358608b866373d3a27cf803d896 | |
parent | 25ccc6c9f5799702e421f799b14286caf75d4434 (diff) |
automatic import of python-hypothesis-pbopeneuler20.03
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-hypothesis-pb.spec | 462 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 464 insertions, 0 deletions
@@ -0,0 +1 @@ +/hypothesis-pb-1.2.0.tar.gz diff --git a/python-hypothesis-pb.spec b/python-hypothesis-pb.spec new file mode 100644 index 0000000..99ae802 --- /dev/null +++ b/python-hypothesis-pb.spec @@ -0,0 +1,462 @@ +%global _empty_manifest_terminate_build 0 +Name: python-hypothesis-pb +Version: 1.2.0 +Release: 1 +Summary: Hypothesis extension to allow generating protobuf messages matching a schema. +License: MIT +URL: https://github.com/hchasestevens/hypothesis-protobuf +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/00/9b/837eef75deb3d517bb0c2cf7373884bc98e67065278bfa0c01ae66bd5edc/hypothesis-pb-1.2.0.tar.gz +BuildArch: noarch + + +%description +# hypothesis-protobuf +[](https://travis-ci.org/hchasestevens/hypothesis-protobuf) +[](https://pypi.org/project/hypothesis-pb) + + +[Hypothesis](http://hypothesis.works/) extension to allow generating [protobuf](https://developers.google.com/protocol-buffers/) messages matching a schema. + +## Installation +``` +pip install hypothesis-pb +``` + +## Usage +Given a compiled protobuf schema module, `hypothesis-protobuf` allows for hypothesis strategies to be generated which match the types of the protobuf messages. + +### Simple example +Using an example protobuf schema for an instant messaging application: +```proto +syntax = "proto3"; +package im; + +enum Client { + CLIENT_UNKNOWN = 0; + CLIENT_NATIVE_APP = 1; + CLIENT_WEB_APP = 2; + CLIENT_API = 3; +} + +message User { + uint64 id = 1; + string screen_name = 2; +} + +message InstantMessage { + uint64 timestamp = 1; + Client client = 2; + fixed32 sender_ip = 3; + User sender = 4; + User recipient = 5; + string message = 6; + repeated bytes image_attachments = 7; +} +``` +a strategy for `InstantMessage` can be generated from the compiled schema (`im_pb2.py`) by executing: +```python +from hypothesis_protobuf import modules_to_strategies +import im_pb2 + +protobuf_strategies = modules_to_strategies(im_pb2) +instant_message_strategy = protobuf_strategies[im_pb2.InstantMessage] +``` +which in turn can be used to generate `InstantMessage` examples: +```python +>>> instant_message_strategy.example() +timestamp: 14420265017158477352 +client: CLIENT_NATIVE_APP +sender_ip: 1465109037 +sender { + id: 9509488734701077048 + screen_name: "\364\210\240\2233\007\352\212\222i\354\217\251" +} +recipient { + id: 14863054719025962687 + screen_name: "\351\274\240" +} +message: "M\361\265\247\224\310\224\362\202\r\347\227\245\n\352\202M]\361\253\237\2700" +image_attachments: "\236rN\267\252\363-s\235" +image_attachments: "\256\376ZP-" +image_attachments: "\340" + +``` +or as a strategy for use in testing (see the [hypothesis quick-start guide](https://hypothesis.readthedocs.io/en/latest/quickstart.html)): +```python +from hypothesis import given + +@given(instant_message=protobuf_strategies[im_pb2.InstantMessage]) +def test_instant_message_processor(instant_message): + assert process_message(instant_message) # will be run using multiple InstantMessage examples +``` + +### Overriding strategies +When generating strategies for a given protobuf module, field-specific overrides can be provided. These overrides must be mappings from full field names to strategies, like so: +```python +from hypothesis_protobuf import modules_to_strategies +from hypothesis import strategies as st +import im_pb2 + +strategy_overrides = { + 'im.InstantMessage.timestamp': st.floats( + min_value=0, + max_value=2e9 + ) +} +protobuf_strategies = modules_to_strategies(im_pb2, **strategy_overrides) +instant_message_strategy = protobuf_strategies[im_pb2.InstantMessage] +``` +`hypothesis-protobuf` also offers a `full_field_name` utility, allowing the above override to be specified as: +```python +from hypothesis_protobuf import full_field_name +from hypothesis import strategies as st +import im_pb2 + +strategy_overrides = { + full_field_name(im_pb2.InstantMessage, 'timestamp'): st.floats( + min_value=0, + max_value=2e9 + ) +} +``` +In cases where the message strategy should choose either from the override provided or from the default field value, the `optional` function can be used: +```python +from hypothesis_protobuf import optional +from hypothesis import strategies as st + +strategy_overrides = { + 'im.InstantMessage.timestamp': optional( + st.floats(min_value=0, max_value=2e9) + ) +} +``` +Finally, overrides can also be provided as functions, taking the field's default strategy and returning a new strategy. Using this method, the above can be rewritten as: +```python +strategy_overrides = { + 'im.InstantMessage.timestamp': ( + lambda strategy: strategy.filter(lambda value: value <= 2e9) + ) +} +``` + +## License +`hypothesis-protobuf` is available under the MIT license. + +%package -n python3-hypothesis-pb +Summary: Hypothesis extension to allow generating protobuf messages matching a schema. +Provides: python-hypothesis-pb +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-hypothesis-pb +# hypothesis-protobuf +[](https://travis-ci.org/hchasestevens/hypothesis-protobuf) +[](https://pypi.org/project/hypothesis-pb) + + +[Hypothesis](http://hypothesis.works/) extension to allow generating [protobuf](https://developers.google.com/protocol-buffers/) messages matching a schema. + +## Installation +``` +pip install hypothesis-pb +``` + +## Usage +Given a compiled protobuf schema module, `hypothesis-protobuf` allows for hypothesis strategies to be generated which match the types of the protobuf messages. + +### Simple example +Using an example protobuf schema for an instant messaging application: +```proto +syntax = "proto3"; +package im; + +enum Client { + CLIENT_UNKNOWN = 0; + CLIENT_NATIVE_APP = 1; + CLIENT_WEB_APP = 2; + CLIENT_API = 3; +} + +message User { + uint64 id = 1; + string screen_name = 2; +} + +message InstantMessage { + uint64 timestamp = 1; + Client client = 2; + fixed32 sender_ip = 3; + User sender = 4; + User recipient = 5; + string message = 6; + repeated bytes image_attachments = 7; +} +``` +a strategy for `InstantMessage` can be generated from the compiled schema (`im_pb2.py`) by executing: +```python +from hypothesis_protobuf import modules_to_strategies +import im_pb2 + +protobuf_strategies = modules_to_strategies(im_pb2) +instant_message_strategy = protobuf_strategies[im_pb2.InstantMessage] +``` +which in turn can be used to generate `InstantMessage` examples: +```python +>>> instant_message_strategy.example() +timestamp: 14420265017158477352 +client: CLIENT_NATIVE_APP +sender_ip: 1465109037 +sender { + id: 9509488734701077048 + screen_name: "\364\210\240\2233\007\352\212\222i\354\217\251" +} +recipient { + id: 14863054719025962687 + screen_name: "\351\274\240" +} +message: "M\361\265\247\224\310\224\362\202\r\347\227\245\n\352\202M]\361\253\237\2700" +image_attachments: "\236rN\267\252\363-s\235" +image_attachments: "\256\376ZP-" +image_attachments: "\340" + +``` +or as a strategy for use in testing (see the [hypothesis quick-start guide](https://hypothesis.readthedocs.io/en/latest/quickstart.html)): +```python +from hypothesis import given + +@given(instant_message=protobuf_strategies[im_pb2.InstantMessage]) +def test_instant_message_processor(instant_message): + assert process_message(instant_message) # will be run using multiple InstantMessage examples +``` + +### Overriding strategies +When generating strategies for a given protobuf module, field-specific overrides can be provided. These overrides must be mappings from full field names to strategies, like so: +```python +from hypothesis_protobuf import modules_to_strategies +from hypothesis import strategies as st +import im_pb2 + +strategy_overrides = { + 'im.InstantMessage.timestamp': st.floats( + min_value=0, + max_value=2e9 + ) +} +protobuf_strategies = modules_to_strategies(im_pb2, **strategy_overrides) +instant_message_strategy = protobuf_strategies[im_pb2.InstantMessage] +``` +`hypothesis-protobuf` also offers a `full_field_name` utility, allowing the above override to be specified as: +```python +from hypothesis_protobuf import full_field_name +from hypothesis import strategies as st +import im_pb2 + +strategy_overrides = { + full_field_name(im_pb2.InstantMessage, 'timestamp'): st.floats( + min_value=0, + max_value=2e9 + ) +} +``` +In cases where the message strategy should choose either from the override provided or from the default field value, the `optional` function can be used: +```python +from hypothesis_protobuf import optional +from hypothesis import strategies as st + +strategy_overrides = { + 'im.InstantMessage.timestamp': optional( + st.floats(min_value=0, max_value=2e9) + ) +} +``` +Finally, overrides can also be provided as functions, taking the field's default strategy and returning a new strategy. Using this method, the above can be rewritten as: +```python +strategy_overrides = { + 'im.InstantMessage.timestamp': ( + lambda strategy: strategy.filter(lambda value: value <= 2e9) + ) +} +``` + +## License +`hypothesis-protobuf` is available under the MIT license. + +%package help +Summary: Development documents and examples for hypothesis-pb +Provides: python3-hypothesis-pb-doc +%description help +# hypothesis-protobuf +[](https://travis-ci.org/hchasestevens/hypothesis-protobuf) +[](https://pypi.org/project/hypothesis-pb) + + +[Hypothesis](http://hypothesis.works/) extension to allow generating [protobuf](https://developers.google.com/protocol-buffers/) messages matching a schema. + +## Installation +``` +pip install hypothesis-pb +``` + +## Usage +Given a compiled protobuf schema module, `hypothesis-protobuf` allows for hypothesis strategies to be generated which match the types of the protobuf messages. + +### Simple example +Using an example protobuf schema for an instant messaging application: +```proto +syntax = "proto3"; +package im; + +enum Client { + CLIENT_UNKNOWN = 0; + CLIENT_NATIVE_APP = 1; + CLIENT_WEB_APP = 2; + CLIENT_API = 3; +} + +message User { + uint64 id = 1; + string screen_name = 2; +} + +message InstantMessage { + uint64 timestamp = 1; + Client client = 2; + fixed32 sender_ip = 3; + User sender = 4; + User recipient = 5; + string message = 6; + repeated bytes image_attachments = 7; +} +``` +a strategy for `InstantMessage` can be generated from the compiled schema (`im_pb2.py`) by executing: +```python +from hypothesis_protobuf import modules_to_strategies +import im_pb2 + +protobuf_strategies = modules_to_strategies(im_pb2) +instant_message_strategy = protobuf_strategies[im_pb2.InstantMessage] +``` +which in turn can be used to generate `InstantMessage` examples: +```python +>>> instant_message_strategy.example() +timestamp: 14420265017158477352 +client: CLIENT_NATIVE_APP +sender_ip: 1465109037 +sender { + id: 9509488734701077048 + screen_name: "\364\210\240\2233\007\352\212\222i\354\217\251" +} +recipient { + id: 14863054719025962687 + screen_name: "\351\274\240" +} +message: "M\361\265\247\224\310\224\362\202\r\347\227\245\n\352\202M]\361\253\237\2700" +image_attachments: "\236rN\267\252\363-s\235" +image_attachments: "\256\376ZP-" +image_attachments: "\340" + +``` +or as a strategy for use in testing (see the [hypothesis quick-start guide](https://hypothesis.readthedocs.io/en/latest/quickstart.html)): +```python +from hypothesis import given + +@given(instant_message=protobuf_strategies[im_pb2.InstantMessage]) +def test_instant_message_processor(instant_message): + assert process_message(instant_message) # will be run using multiple InstantMessage examples +``` + +### Overriding strategies +When generating strategies for a given protobuf module, field-specific overrides can be provided. These overrides must be mappings from full field names to strategies, like so: +```python +from hypothesis_protobuf import modules_to_strategies +from hypothesis import strategies as st +import im_pb2 + +strategy_overrides = { + 'im.InstantMessage.timestamp': st.floats( + min_value=0, + max_value=2e9 + ) +} +protobuf_strategies = modules_to_strategies(im_pb2, **strategy_overrides) +instant_message_strategy = protobuf_strategies[im_pb2.InstantMessage] +``` +`hypothesis-protobuf` also offers a `full_field_name` utility, allowing the above override to be specified as: +```python +from hypothesis_protobuf import full_field_name +from hypothesis import strategies as st +import im_pb2 + +strategy_overrides = { + full_field_name(im_pb2.InstantMessage, 'timestamp'): st.floats( + min_value=0, + max_value=2e9 + ) +} +``` +In cases where the message strategy should choose either from the override provided or from the default field value, the `optional` function can be used: +```python +from hypothesis_protobuf import optional +from hypothesis import strategies as st + +strategy_overrides = { + 'im.InstantMessage.timestamp': optional( + st.floats(min_value=0, max_value=2e9) + ) +} +``` +Finally, overrides can also be provided as functions, taking the field's default strategy and returning a new strategy. Using this method, the above can be rewritten as: +```python +strategy_overrides = { + 'im.InstantMessage.timestamp': ( + lambda strategy: strategy.filter(lambda value: value <= 2e9) + ) +} +``` + +## License +`hypothesis-protobuf` is available under the MIT license. + +%prep +%autosetup -n hypothesis-pb-1.2.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-hypothesis-pb -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Fri May 05 2023 Python_Bot <Python_Bot@openeuler.org> - 1.2.0-1 +- Package Spec generated @@ -0,0 +1 @@ +aea1fad77fcb4995fcd3088f1e1694fe hypothesis-pb-1.2.0.tar.gz |