%global _empty_manifest_terminate_build 0 Name: python-grpc-requests Version: 0.1.10 Release: 1 Summary: grpc for Humans. grpc reflection support client License: Apache License 2.0 URL: https://github.com/wesky93/grpc_requests Source0: https://mirrors.nju.edu.cn/pypi/web/packages/73/14/ce8787e44e1e320c4efc014652e387a31ee8ae35e01060be6501e0d50cce/grpc_requests-0.1.10.tar.gz BuildArch: noarch Requires: python3-grpcio Requires: python3-grpcio-reflection Requires: python3-google-api-core Requires: python3-cryptography Requires: python3-protobuf %description # grpc requests [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/grpc-requests?style=flat-square)](https://pypi.org/project/grpc-requests) [![PyPI](https://img.shields.io/pypi/v/grpc-requests?style=flat-square)](https://pypi.org/project/grpc-requests) [![PyPI download month](https://img.shields.io/pypi/dm/grpc-requests?style=flat-square)](https://pypi.org/project/grpc-requests) [![codecov](https://codecov.io/gh/spaceone-dev/grpc_requests/branch/master/graph/badge.svg)](https://codecov.io/gh/spaceone-dev/grpc_requests) ![Views](https://views.whatilearened.today/views/github/spaceone-dev/grpc_requests.svg) ## GRPC for Humans ```python from grpc_requests import Client client = Client.get_by_endpoint("localhost:50051") assert client.service_names == ["helloworld.Greeter"] request_data = {"name": 'sinsky'} result = client.request("helloworld.Greeter", "SayHello", request_data) print(result) # {"message":"Hello sinsky"} ``` ## Features - supports creating clients easily when connecting to servers implementing grpc reflection - supports implementing stub clients for connecting to servers that do not implement reflection - support all unary and stream methods - supports both TLS and compression connections - supports AsyncIO API ## Install ```shell script pip install grpc_requests ``` ## Use it like RPC If your server supports reflection, use the `Client` class: ```python from grpc_requests import Client client = Client.get_by_endpoint("localhost:50051") # if you want a TLS connection # client = Client.get_by_endpoint("localhost:443",ssl=True) # or if you want a compression enabled connection # client = Client.get_by_endpoint("localhost:443",compression=grpc.Compression.Gzip) assert client.service_names == ["helloworld.Greeter",'grpc.health.v1.Health'] health = client.service('grpc.health.v1.Health') assert health.method_names == ('Check', 'Watch') result = health.Check() assert result == {'status': 'SERVING'} ``` If not, use the `StubClient` class: ```python from grpc_requests import StubClient from .helloworld_pb2 import Descriptor service_descriptor = DESCRIPTOR.services_by_name['Greeter'] # or you can just use _GREETER client = StubClient.get_by_endpoint("localhost:50051",service_descriptors=[service_descriptor,]) assert client.service_names == ["helloworld.Greeter"] ``` In both cases, the same methods are used to interact with the server. ```python greeter = client.service("helloworld.Greeter") request_data = {"name": 'sinsky'} result = greeter.SayHello(request_data) results = greeter.SayHelloGroup(request_data) requests_data = [{"name": 'sinsky'}] result = greeter.HelloEveryone(requests_data) results = greeter.SayHelloOneByOne(requests_data) ``` ## Examples - [helloworld reflection client](src/examples/helloworld_reflection.py) ### Reflection Client but you can send message by stub ```python from grpc_requests import Client from helloworld_pb2 import HelloRequest port = '50051' host = "localhost" endpoint = f"{host}:{port}" client = Client.get_by_endpoint(endpoint) print(client.service_names) # ["helloworld.Greeter"] service = "helloworld.Greeter" method = 'SayHello' result = client.unary_unary(service, method, HelloRequest(name='sinsky')) print(type(result)) # result is dict Type!!! not Stub Object! print(result) # {"message":"Hellow sinsky"} # or get raw response data result = client.unary_unary(service, method, HelloRequest(name='sinsky'),raw_output=True) print(type(result)) # HelloReply stub class ``` ### AsyncIO API ```python from grpc_requests.aio import AsyncClient client = AsyncClient("localhost:50051") health = await client.service('grpc.health.v1.Health') assert health.method_names == ('Check', 'Watch') result = await health.Check() assert result == {'status': 'SERVING'} greeter = await client.service("helloworld.Greeter") request_data = {"name": 'sinsky'} result = await greeter.SayHello(request_data) results =[x async for x in await greeter.SayHelloGroup(request_data)] requests_data = [{"name": 'sinsky'}] result = await greeter.HelloEveryone(requests_data) results = [x async for x in await greeter.SayHelloOneByOne(requests_data)] ``` ## Road map - [x] support no reflection server(Stub Client) - [x] support async API! - [ ] Document! - [ ] pluggable interceptor ## Maintainers - sinsky - [wesky93](https://github.com/wesky93) - Wayne Manselle - [ViridianForge](https://github.com/ViridianForge) # ChangeLog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [0.1.10](https://github.com/wesky93/grpc_requests/releases/tag/v0.1.10) - 2023-03-07 ## Fixed - Corrected pin of `protobuf` version in `requirements.txt` ## [0.1.9](https://github.com/wesky93/grpc_requests/releases/tag/v0.1.9) - 2023-02-14 ### Changes - Reimplementation of test case framework - Restoration of reflection client test cases - Updates to continuous integration pipeline ## [0.1.8](https://github.com/wesky93/grpc_requests/releases/tag/v0.1.8) - 2023-01-24 ### Changes - Update project and dev dependencies to versions that require Python >= 3.7 - Update project documentation and examples ## [0.1.7](https://github.com/wesky93/grpc_requests/releases/tag/v0.1.7) - 2022-12-16 ### Deprecated - homi dependency, as the project has been archived - homi dependent test code ## [0.1.6](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.1.6) - 2022-11-10 ### Fixed - Ignore repeat imports of protobufs and reflecting against a server ## [0.1.3](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.1.3) - 2022-7-14 ### Fixed - remove click ### Issues - ignore test before deploy ## [0.1.2](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.1.2) - 2022-7-7 ## [0.1.1](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.1.1) - 2022-6-13 ### Changes - remove unused package : click #35 ## [0.1.0](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.1.0) - 2021-8-21 ### Added - Full TLS connection support ### Fixed - Ignore reflection if service already registered ### Changed - Update grpcio version ## [0.0.10](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.0.10) - 2021-2-27 ### Fixed - Fix 3.6 compatibility issue : await is in f-string ## [0.0.9](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.0.9) - 2020-12-25 ### Added - Support AsyncIO API ## [0.0.8](https://github.com/spaceone-dev/grpc_requests/releases/tag/0.0.8) - 2020-11-24 ### Added - Add StubClient ### Fixed - Bypasss kwargs to base client ## [0.0.7](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.0.7) - 2020-10-4 ### Added - Support Compression ## [0.0.6](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.0.6) - 2020-10-3 ### Added - Support TLS connections ## [0.0.5](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.0.5) - 2020-9-9 ### Changed - Response filled gets original proto field name rather than(before returned lowerCamelCase) ## [0.0.4](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.0.4) - 2020-7-21 ## [0.0.3](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.0.3) - 2020-7-21 ### Added - Dynamic request method - Service client ## [0.0.2](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.0.2) - 2020-7-20 ### Added - Support all method types - Add request test case ## [0.0.1](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.0.1) - 2020-7-20 ### Added - Sync proto using reflection - Auto convert request(response) from(to) dict - Support unary-unary %package -n python3-grpc-requests Summary: grpc for Humans. grpc reflection support client Provides: python-grpc-requests BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-grpc-requests # grpc requests [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/grpc-requests?style=flat-square)](https://pypi.org/project/grpc-requests) [![PyPI](https://img.shields.io/pypi/v/grpc-requests?style=flat-square)](https://pypi.org/project/grpc-requests) [![PyPI download month](https://img.shields.io/pypi/dm/grpc-requests?style=flat-square)](https://pypi.org/project/grpc-requests) [![codecov](https://codecov.io/gh/spaceone-dev/grpc_requests/branch/master/graph/badge.svg)](https://codecov.io/gh/spaceone-dev/grpc_requests) ![Views](https://views.whatilearened.today/views/github/spaceone-dev/grpc_requests.svg) ## GRPC for Humans ```python from grpc_requests import Client client = Client.get_by_endpoint("localhost:50051") assert client.service_names == ["helloworld.Greeter"] request_data = {"name": 'sinsky'} result = client.request("helloworld.Greeter", "SayHello", request_data) print(result) # {"message":"Hello sinsky"} ``` ## Features - supports creating clients easily when connecting to servers implementing grpc reflection - supports implementing stub clients for connecting to servers that do not implement reflection - support all unary and stream methods - supports both TLS and compression connections - supports AsyncIO API ## Install ```shell script pip install grpc_requests ``` ## Use it like RPC If your server supports reflection, use the `Client` class: ```python from grpc_requests import Client client = Client.get_by_endpoint("localhost:50051") # if you want a TLS connection # client = Client.get_by_endpoint("localhost:443",ssl=True) # or if you want a compression enabled connection # client = Client.get_by_endpoint("localhost:443",compression=grpc.Compression.Gzip) assert client.service_names == ["helloworld.Greeter",'grpc.health.v1.Health'] health = client.service('grpc.health.v1.Health') assert health.method_names == ('Check', 'Watch') result = health.Check() assert result == {'status': 'SERVING'} ``` If not, use the `StubClient` class: ```python from grpc_requests import StubClient from .helloworld_pb2 import Descriptor service_descriptor = DESCRIPTOR.services_by_name['Greeter'] # or you can just use _GREETER client = StubClient.get_by_endpoint("localhost:50051",service_descriptors=[service_descriptor,]) assert client.service_names == ["helloworld.Greeter"] ``` In both cases, the same methods are used to interact with the server. ```python greeter = client.service("helloworld.Greeter") request_data = {"name": 'sinsky'} result = greeter.SayHello(request_data) results = greeter.SayHelloGroup(request_data) requests_data = [{"name": 'sinsky'}] result = greeter.HelloEveryone(requests_data) results = greeter.SayHelloOneByOne(requests_data) ``` ## Examples - [helloworld reflection client](src/examples/helloworld_reflection.py) ### Reflection Client but you can send message by stub ```python from grpc_requests import Client from helloworld_pb2 import HelloRequest port = '50051' host = "localhost" endpoint = f"{host}:{port}" client = Client.get_by_endpoint(endpoint) print(client.service_names) # ["helloworld.Greeter"] service = "helloworld.Greeter" method = 'SayHello' result = client.unary_unary(service, method, HelloRequest(name='sinsky')) print(type(result)) # result is dict Type!!! not Stub Object! print(result) # {"message":"Hellow sinsky"} # or get raw response data result = client.unary_unary(service, method, HelloRequest(name='sinsky'),raw_output=True) print(type(result)) # HelloReply stub class ``` ### AsyncIO API ```python from grpc_requests.aio import AsyncClient client = AsyncClient("localhost:50051") health = await client.service('grpc.health.v1.Health') assert health.method_names == ('Check', 'Watch') result = await health.Check() assert result == {'status': 'SERVING'} greeter = await client.service("helloworld.Greeter") request_data = {"name": 'sinsky'} result = await greeter.SayHello(request_data) results =[x async for x in await greeter.SayHelloGroup(request_data)] requests_data = [{"name": 'sinsky'}] result = await greeter.HelloEveryone(requests_data) results = [x async for x in await greeter.SayHelloOneByOne(requests_data)] ``` ## Road map - [x] support no reflection server(Stub Client) - [x] support async API! - [ ] Document! - [ ] pluggable interceptor ## Maintainers - sinsky - [wesky93](https://github.com/wesky93) - Wayne Manselle - [ViridianForge](https://github.com/ViridianForge) # ChangeLog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [0.1.10](https://github.com/wesky93/grpc_requests/releases/tag/v0.1.10) - 2023-03-07 ## Fixed - Corrected pin of `protobuf` version in `requirements.txt` ## [0.1.9](https://github.com/wesky93/grpc_requests/releases/tag/v0.1.9) - 2023-02-14 ### Changes - Reimplementation of test case framework - Restoration of reflection client test cases - Updates to continuous integration pipeline ## [0.1.8](https://github.com/wesky93/grpc_requests/releases/tag/v0.1.8) - 2023-01-24 ### Changes - Update project and dev dependencies to versions that require Python >= 3.7 - Update project documentation and examples ## [0.1.7](https://github.com/wesky93/grpc_requests/releases/tag/v0.1.7) - 2022-12-16 ### Deprecated - homi dependency, as the project has been archived - homi dependent test code ## [0.1.6](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.1.6) - 2022-11-10 ### Fixed - Ignore repeat imports of protobufs and reflecting against a server ## [0.1.3](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.1.3) - 2022-7-14 ### Fixed - remove click ### Issues - ignore test before deploy ## [0.1.2](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.1.2) - 2022-7-7 ## [0.1.1](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.1.1) - 2022-6-13 ### Changes - remove unused package : click #35 ## [0.1.0](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.1.0) - 2021-8-21 ### Added - Full TLS connection support ### Fixed - Ignore reflection if service already registered ### Changed - Update grpcio version ## [0.0.10](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.0.10) - 2021-2-27 ### Fixed - Fix 3.6 compatibility issue : await is in f-string ## [0.0.9](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.0.9) - 2020-12-25 ### Added - Support AsyncIO API ## [0.0.8](https://github.com/spaceone-dev/grpc_requests/releases/tag/0.0.8) - 2020-11-24 ### Added - Add StubClient ### Fixed - Bypasss kwargs to base client ## [0.0.7](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.0.7) - 2020-10-4 ### Added - Support Compression ## [0.0.6](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.0.6) - 2020-10-3 ### Added - Support TLS connections ## [0.0.5](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.0.5) - 2020-9-9 ### Changed - Response filled gets original proto field name rather than(before returned lowerCamelCase) ## [0.0.4](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.0.4) - 2020-7-21 ## [0.0.3](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.0.3) - 2020-7-21 ### Added - Dynamic request method - Service client ## [0.0.2](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.0.2) - 2020-7-20 ### Added - Support all method types - Add request test case ## [0.0.1](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.0.1) - 2020-7-20 ### Added - Sync proto using reflection - Auto convert request(response) from(to) dict - Support unary-unary %package help Summary: Development documents and examples for grpc-requests Provides: python3-grpc-requests-doc %description help # grpc requests [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/grpc-requests?style=flat-square)](https://pypi.org/project/grpc-requests) [![PyPI](https://img.shields.io/pypi/v/grpc-requests?style=flat-square)](https://pypi.org/project/grpc-requests) [![PyPI download month](https://img.shields.io/pypi/dm/grpc-requests?style=flat-square)](https://pypi.org/project/grpc-requests) [![codecov](https://codecov.io/gh/spaceone-dev/grpc_requests/branch/master/graph/badge.svg)](https://codecov.io/gh/spaceone-dev/grpc_requests) ![Views](https://views.whatilearened.today/views/github/spaceone-dev/grpc_requests.svg) ## GRPC for Humans ```python from grpc_requests import Client client = Client.get_by_endpoint("localhost:50051") assert client.service_names == ["helloworld.Greeter"] request_data = {"name": 'sinsky'} result = client.request("helloworld.Greeter", "SayHello", request_data) print(result) # {"message":"Hello sinsky"} ``` ## Features - supports creating clients easily when connecting to servers implementing grpc reflection - supports implementing stub clients for connecting to servers that do not implement reflection - support all unary and stream methods - supports both TLS and compression connections - supports AsyncIO API ## Install ```shell script pip install grpc_requests ``` ## Use it like RPC If your server supports reflection, use the `Client` class: ```python from grpc_requests import Client client = Client.get_by_endpoint("localhost:50051") # if you want a TLS connection # client = Client.get_by_endpoint("localhost:443",ssl=True) # or if you want a compression enabled connection # client = Client.get_by_endpoint("localhost:443",compression=grpc.Compression.Gzip) assert client.service_names == ["helloworld.Greeter",'grpc.health.v1.Health'] health = client.service('grpc.health.v1.Health') assert health.method_names == ('Check', 'Watch') result = health.Check() assert result == {'status': 'SERVING'} ``` If not, use the `StubClient` class: ```python from grpc_requests import StubClient from .helloworld_pb2 import Descriptor service_descriptor = DESCRIPTOR.services_by_name['Greeter'] # or you can just use _GREETER client = StubClient.get_by_endpoint("localhost:50051",service_descriptors=[service_descriptor,]) assert client.service_names == ["helloworld.Greeter"] ``` In both cases, the same methods are used to interact with the server. ```python greeter = client.service("helloworld.Greeter") request_data = {"name": 'sinsky'} result = greeter.SayHello(request_data) results = greeter.SayHelloGroup(request_data) requests_data = [{"name": 'sinsky'}] result = greeter.HelloEveryone(requests_data) results = greeter.SayHelloOneByOne(requests_data) ``` ## Examples - [helloworld reflection client](src/examples/helloworld_reflection.py) ### Reflection Client but you can send message by stub ```python from grpc_requests import Client from helloworld_pb2 import HelloRequest port = '50051' host = "localhost" endpoint = f"{host}:{port}" client = Client.get_by_endpoint(endpoint) print(client.service_names) # ["helloworld.Greeter"] service = "helloworld.Greeter" method = 'SayHello' result = client.unary_unary(service, method, HelloRequest(name='sinsky')) print(type(result)) # result is dict Type!!! not Stub Object! print(result) # {"message":"Hellow sinsky"} # or get raw response data result = client.unary_unary(service, method, HelloRequest(name='sinsky'),raw_output=True) print(type(result)) # HelloReply stub class ``` ### AsyncIO API ```python from grpc_requests.aio import AsyncClient client = AsyncClient("localhost:50051") health = await client.service('grpc.health.v1.Health') assert health.method_names == ('Check', 'Watch') result = await health.Check() assert result == {'status': 'SERVING'} greeter = await client.service("helloworld.Greeter") request_data = {"name": 'sinsky'} result = await greeter.SayHello(request_data) results =[x async for x in await greeter.SayHelloGroup(request_data)] requests_data = [{"name": 'sinsky'}] result = await greeter.HelloEveryone(requests_data) results = [x async for x in await greeter.SayHelloOneByOne(requests_data)] ``` ## Road map - [x] support no reflection server(Stub Client) - [x] support async API! - [ ] Document! - [ ] pluggable interceptor ## Maintainers - sinsky - [wesky93](https://github.com/wesky93) - Wayne Manselle - [ViridianForge](https://github.com/ViridianForge) # ChangeLog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [0.1.10](https://github.com/wesky93/grpc_requests/releases/tag/v0.1.10) - 2023-03-07 ## Fixed - Corrected pin of `protobuf` version in `requirements.txt` ## [0.1.9](https://github.com/wesky93/grpc_requests/releases/tag/v0.1.9) - 2023-02-14 ### Changes - Reimplementation of test case framework - Restoration of reflection client test cases - Updates to continuous integration pipeline ## [0.1.8](https://github.com/wesky93/grpc_requests/releases/tag/v0.1.8) - 2023-01-24 ### Changes - Update project and dev dependencies to versions that require Python >= 3.7 - Update project documentation and examples ## [0.1.7](https://github.com/wesky93/grpc_requests/releases/tag/v0.1.7) - 2022-12-16 ### Deprecated - homi dependency, as the project has been archived - homi dependent test code ## [0.1.6](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.1.6) - 2022-11-10 ### Fixed - Ignore repeat imports of protobufs and reflecting against a server ## [0.1.3](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.1.3) - 2022-7-14 ### Fixed - remove click ### Issues - ignore test before deploy ## [0.1.2](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.1.2) - 2022-7-7 ## [0.1.1](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.1.1) - 2022-6-13 ### Changes - remove unused package : click #35 ## [0.1.0](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.1.0) - 2021-8-21 ### Added - Full TLS connection support ### Fixed - Ignore reflection if service already registered ### Changed - Update grpcio version ## [0.0.10](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.0.10) - 2021-2-27 ### Fixed - Fix 3.6 compatibility issue : await is in f-string ## [0.0.9](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.0.9) - 2020-12-25 ### Added - Support AsyncIO API ## [0.0.8](https://github.com/spaceone-dev/grpc_requests/releases/tag/0.0.8) - 2020-11-24 ### Added - Add StubClient ### Fixed - Bypasss kwargs to base client ## [0.0.7](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.0.7) - 2020-10-4 ### Added - Support Compression ## [0.0.6](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.0.6) - 2020-10-3 ### Added - Support TLS connections ## [0.0.5](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.0.5) - 2020-9-9 ### Changed - Response filled gets original proto field name rather than(before returned lowerCamelCase) ## [0.0.4](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.0.4) - 2020-7-21 ## [0.0.3](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.0.3) - 2020-7-21 ### Added - Dynamic request method - Service client ## [0.0.2](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.0.2) - 2020-7-20 ### Added - Support all method types - Add request test case ## [0.0.1](https://github.com/spaceone-dev/grpc_requests/releases/tag/v0.0.1) - 2020-7-20 ### Added - Sync proto using reflection - Auto convert request(response) from(to) dict - Support unary-unary %prep %autosetup -n grpc-requests-0.1.10 %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-grpc-requests -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Wed May 31 2023 Python_Bot - 0.1.10-1 - Package Spec generated