%global _empty_manifest_terminate_build 0 Name: python-swiftype-app-search Version: 0.6.2 Release: 1 Summary: A Deprecated API client for Swiftype App Search - Use new elastic-app-search package instead. License: MIT URL: https://github.com/swiftype/swiftype-app-search-python Source0: https://mirrors.aliyun.com/pypi/web/packages/68/b4/595939b06f0f5cee6d3fdbdda3f2cf3c46d23c9ce2246a6972e3a4e98f02/swiftype_app_search-0.6.2.tar.gz BuildArch: noarch %description

Elastic App Search Logo

> **⚠️ This repository is deprecated ⚠️** > > **Please visit [https://github.com/elastic/app-search-python](https://github.com/elastic/app-search-python) for the up to date version. Thank you! - Elastic**

GitHub release

> A first-party Python client for building excellent, relevant search experiences with [Elastic App Search](https://www.elastic.co/cloud/app-search-service). ## Contents + [Getting started](#getting-started-) + [Dependencies](#dependencies) + [Usage](#usage) + [Running tests](#running-tests) + [FAQ](#faq-) + [Contribute](#contribute-) + [License](#license-) *** ## Getting started 🐣 To install the client, use pip: ```python python -m pip install swiftype_app_search ``` You can also download the project source and run:: ```python python setup.py install ``` ## Dependencies + Python 2.7 / Python 3.3 + [Requests](https://github.com/requests/requests) + [PyJWT](https://github.com/jpadilla/pyjwt) ## Usage ### Instantiating a client ```python >>> from swiftype_app_search import Client >>> host_identifier = 'host-c5s2mj' >>> api_key = 'private-mu75psc5egt9ppzuycnc2mc3' >>> client = Client(host_identifier, api_key) ``` ### Using with App Search Managed Deploys The client can be configured to use a managed deploy by adjusting the `base_endpoint` and `use_https` parameters. Since managed deploys do not rely on a `host_identifier`, it can be omitted. ```python >>> from swiftype_app_search import Client >>> client = Client( api_key='private-mu75psc5egt9ppzuycnc2mc3', base_endpoint='localhost:3002/api/as/v1', use_https=False ) ``` ### Indexing: Creating or Updating a Single Document ```python >>> engine_name = 'favorite-videos' >>> document = { 'id': 'INscMGmhmX4', 'url': 'https://www.youtube.com/watch?v=INscMGmhmX4', 'title': 'The Original Grumpy Cat', 'body': 'A wonderful video of a magnificent cat.' } >>> client.index_document(engine_name, document) {'id': 'INscMGmhmX4'} ``` ### Indexing: Creating or Updating Multiple Documents ```python >>> engine_name = 'favorite-videos' >>> documents = [ { 'id': 'INscMGmhmX4', 'url': 'https://www.youtube.com/watch?v=INscMGmhmX4', 'title': 'The Original Grumpy Cat', 'body': 'A wonderful video of a magnificent cat.' }, { 'id': 'JNDFojsd02', 'url': 'https://www.youtube.com/watch?v=dQw4w9WgXcQ', 'title': 'Another Grumpy Cat', 'body': 'A great video of another cool cat.' } ] >>> client.index_documents(engine_name, documents) [{'id': 'INscMGmhmX4', 'errors': []}, {'id': 'JNDFojsd02', 'errors': []}] ``` ### Indexing: Updating documents (Partial Updates) ```python >>> engine_name = 'favorite-videos' >>> documents = [ { 'id': 'INscMGmhmX4', 'title': 'Updated title' } ] >>> client.update_documents(engine_name, documents) ``` ### Get Documents ```python >>> engine_name = 'favorite-videos' >>> client.get_documents(engine_name, ['INscMGmhmX4']) [{'id': 'INscMGmhmX4','url': 'https://www.youtube.com/watch?v=INscMGmhmX4','title': 'The Original Grumpy Cat','body': 'A wonderful video of a magnificent cat.'}] ``` ### List Documents ```python >>> engine_name = 'favorite-videos' >>> client.list_documents(engine_name, current=1, size=20) { 'meta': { 'page': { 'current': 1, 'total_pages': 1, 'total_results': 2, 'size': 20 } }, 'results': [{'id': 'INscMGmhmX4','url': 'https://www.youtube.com/watch?v=INscMGmhmX4','title': 'The Original Grumpy Cat','body': 'A wonderful video of a magnificent cat.'}] } ``` ### Destroy Documents ```python >>> engine_name = 'favorite-videos' >>> client.destroy_documents(engine_name, ['INscMGmhmX4']) [{'id': 'INscMGmhmX4','result': True}] ``` ### Get Schema ```python >>> engine_name = 'favorite-videos' >>> client.get_schema(engine_name) {'name':'text', 'square_km': 'number', 'square_mi': 'text'} ``` ### Create/Update Schema ```python >>> engine_name = 'favorite-videos' >>> client.update_schema(engine_name, {'square_km': 'text'}) {'square_km': 'text'} >>> client.update_schema(engine_name, {'square_mi': 'text'}) {'square_km': 'text', 'square_mi': 'text'} >>> client.update_schema(engine_name, {'square_km': 'number'}) {'square_km': 'number', 'square_mi': 'text'} ``` ### List Engines ```python >>> client.list_engines(current=1, size=20) { 'meta': { 'page': { 'current': 1, 'total_pages': 1, 'total_results': 2, 'size': 20 } }, 'results': [{'name': 'favorite-videos'}, {'name': 'another-engine'}] } ``` ### Get an Engine ```python >>> client.get_engine('favorite-videos') {'name': 'favorite-videos'} ``` ### Create an Engine ```python >>> client.create_engine('favorite-videos', 'en') {'name': 'favorite-videos', 'type': 'default', 'language': 'en'} ``` ### Destroy an Engine ```python >>> client.destroy_engine('favorite-videos') {'deleted': True} ``` ### Searching ```python >>> client.search('favorite-videos', 'grumpy cat', {}) {'meta': {'page': {'current': 1, 'total_pages': 1, 'total_results': 2, 'size': 10}, ...}, 'results': [...]} ``` ### Multi-Search ```python >>> client.multi_search('favorite-videos', [{ 'query': 'cat', 'options': { 'search_fields': { 'title': {} }} },{ 'query': 'dog', 'options': { 'search_fields': { 'body': {} }} }]) [{'meta': {...}, 'results': [...]}, {'meta': {...}, 'results': [...]}] ``` ### Query Suggestion ```python >>> client.query_suggestion('favorite-videos', 'cat', { 'size': 10, 'types': { 'documents': { 'fields': ['title'] } } }) {'results': {'documents': [{'suggestion': 'cat'}]}, 'meta': {'request_id': '390be384ad5888353e1b32adcfaaf1c9'}} ``` ### Clickthrough Tracking ```python >>> client.click(engine_name, {'query': 'cat', 'document_id': 'INscMGmhmX4'}) ``` ### Create a Signed Search Key Creating a search key that will only search over the body field. ```python >>> api_key = 'private-mu75psc5egt9ppzuycnc2mc3' >>> api_key_name = 'my-api-token' >>> signed_search_key = Client.create_signed_search_key(api_key, api_key_name, {'search_fields': { 'body': {}}}) >>> client = Client(host_identifier, signed_search_key) ``` ## Running tests ```python python setup.py test ``` ## FAQ 🔮 ### Where do I report issues with the client? If something is not working as expected, please open an [issue](https://github.com/swiftype/swiftype-app-search-python/issues/new). ### Where can I learn more about App Search? Your best bet is to read the [documentation](https://swiftype.com/documentation/app-search). ### Where else can I go to get help? You can checkout the [Elastic App Search community discuss forums](https://discuss.elastic.co/c/app-search). ## Contribute 🚀 We welcome contributors to the project. Before you begin, a couple notes: + Prior to opening a pull request, please create an issue to [discuss the scope of your proposal](https://github.com/swiftype/swiftype-app-search-python/issues). + Please write simple code and concise documentation, when appropriate. ## License 📗 [MIT](https://github.com/swiftype/swiftype-app-search-python/blob/master/LICENSE.txt) © [Elastic](https://github.com/elastic) Thank you to all the [contributors](https://github.com/swiftype/swiftype-app-search-python/graphs/contributors)! %package -n python3-swiftype-app-search Summary: A Deprecated API client for Swiftype App Search - Use new elastic-app-search package instead. Provides: python-swiftype-app-search BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-swiftype-app-search

Elastic App Search Logo

> **⚠️ This repository is deprecated ⚠️** > > **Please visit [https://github.com/elastic/app-search-python](https://github.com/elastic/app-search-python) for the up to date version. Thank you! - Elastic**

GitHub release

> A first-party Python client for building excellent, relevant search experiences with [Elastic App Search](https://www.elastic.co/cloud/app-search-service). ## Contents + [Getting started](#getting-started-) + [Dependencies](#dependencies) + [Usage](#usage) + [Running tests](#running-tests) + [FAQ](#faq-) + [Contribute](#contribute-) + [License](#license-) *** ## Getting started 🐣 To install the client, use pip: ```python python -m pip install swiftype_app_search ``` You can also download the project source and run:: ```python python setup.py install ``` ## Dependencies + Python 2.7 / Python 3.3 + [Requests](https://github.com/requests/requests) + [PyJWT](https://github.com/jpadilla/pyjwt) ## Usage ### Instantiating a client ```python >>> from swiftype_app_search import Client >>> host_identifier = 'host-c5s2mj' >>> api_key = 'private-mu75psc5egt9ppzuycnc2mc3' >>> client = Client(host_identifier, api_key) ``` ### Using with App Search Managed Deploys The client can be configured to use a managed deploy by adjusting the `base_endpoint` and `use_https` parameters. Since managed deploys do not rely on a `host_identifier`, it can be omitted. ```python >>> from swiftype_app_search import Client >>> client = Client( api_key='private-mu75psc5egt9ppzuycnc2mc3', base_endpoint='localhost:3002/api/as/v1', use_https=False ) ``` ### Indexing: Creating or Updating a Single Document ```python >>> engine_name = 'favorite-videos' >>> document = { 'id': 'INscMGmhmX4', 'url': 'https://www.youtube.com/watch?v=INscMGmhmX4', 'title': 'The Original Grumpy Cat', 'body': 'A wonderful video of a magnificent cat.' } >>> client.index_document(engine_name, document) {'id': 'INscMGmhmX4'} ``` ### Indexing: Creating or Updating Multiple Documents ```python >>> engine_name = 'favorite-videos' >>> documents = [ { 'id': 'INscMGmhmX4', 'url': 'https://www.youtube.com/watch?v=INscMGmhmX4', 'title': 'The Original Grumpy Cat', 'body': 'A wonderful video of a magnificent cat.' }, { 'id': 'JNDFojsd02', 'url': 'https://www.youtube.com/watch?v=dQw4w9WgXcQ', 'title': 'Another Grumpy Cat', 'body': 'A great video of another cool cat.' } ] >>> client.index_documents(engine_name, documents) [{'id': 'INscMGmhmX4', 'errors': []}, {'id': 'JNDFojsd02', 'errors': []}] ``` ### Indexing: Updating documents (Partial Updates) ```python >>> engine_name = 'favorite-videos' >>> documents = [ { 'id': 'INscMGmhmX4', 'title': 'Updated title' } ] >>> client.update_documents(engine_name, documents) ``` ### Get Documents ```python >>> engine_name = 'favorite-videos' >>> client.get_documents(engine_name, ['INscMGmhmX4']) [{'id': 'INscMGmhmX4','url': 'https://www.youtube.com/watch?v=INscMGmhmX4','title': 'The Original Grumpy Cat','body': 'A wonderful video of a magnificent cat.'}] ``` ### List Documents ```python >>> engine_name = 'favorite-videos' >>> client.list_documents(engine_name, current=1, size=20) { 'meta': { 'page': { 'current': 1, 'total_pages': 1, 'total_results': 2, 'size': 20 } }, 'results': [{'id': 'INscMGmhmX4','url': 'https://www.youtube.com/watch?v=INscMGmhmX4','title': 'The Original Grumpy Cat','body': 'A wonderful video of a magnificent cat.'}] } ``` ### Destroy Documents ```python >>> engine_name = 'favorite-videos' >>> client.destroy_documents(engine_name, ['INscMGmhmX4']) [{'id': 'INscMGmhmX4','result': True}] ``` ### Get Schema ```python >>> engine_name = 'favorite-videos' >>> client.get_schema(engine_name) {'name':'text', 'square_km': 'number', 'square_mi': 'text'} ``` ### Create/Update Schema ```python >>> engine_name = 'favorite-videos' >>> client.update_schema(engine_name, {'square_km': 'text'}) {'square_km': 'text'} >>> client.update_schema(engine_name, {'square_mi': 'text'}) {'square_km': 'text', 'square_mi': 'text'} >>> client.update_schema(engine_name, {'square_km': 'number'}) {'square_km': 'number', 'square_mi': 'text'} ``` ### List Engines ```python >>> client.list_engines(current=1, size=20) { 'meta': { 'page': { 'current': 1, 'total_pages': 1, 'total_results': 2, 'size': 20 } }, 'results': [{'name': 'favorite-videos'}, {'name': 'another-engine'}] } ``` ### Get an Engine ```python >>> client.get_engine('favorite-videos') {'name': 'favorite-videos'} ``` ### Create an Engine ```python >>> client.create_engine('favorite-videos', 'en') {'name': 'favorite-videos', 'type': 'default', 'language': 'en'} ``` ### Destroy an Engine ```python >>> client.destroy_engine('favorite-videos') {'deleted': True} ``` ### Searching ```python >>> client.search('favorite-videos', 'grumpy cat', {}) {'meta': {'page': {'current': 1, 'total_pages': 1, 'total_results': 2, 'size': 10}, ...}, 'results': [...]} ``` ### Multi-Search ```python >>> client.multi_search('favorite-videos', [{ 'query': 'cat', 'options': { 'search_fields': { 'title': {} }} },{ 'query': 'dog', 'options': { 'search_fields': { 'body': {} }} }]) [{'meta': {...}, 'results': [...]}, {'meta': {...}, 'results': [...]}] ``` ### Query Suggestion ```python >>> client.query_suggestion('favorite-videos', 'cat', { 'size': 10, 'types': { 'documents': { 'fields': ['title'] } } }) {'results': {'documents': [{'suggestion': 'cat'}]}, 'meta': {'request_id': '390be384ad5888353e1b32adcfaaf1c9'}} ``` ### Clickthrough Tracking ```python >>> client.click(engine_name, {'query': 'cat', 'document_id': 'INscMGmhmX4'}) ``` ### Create a Signed Search Key Creating a search key that will only search over the body field. ```python >>> api_key = 'private-mu75psc5egt9ppzuycnc2mc3' >>> api_key_name = 'my-api-token' >>> signed_search_key = Client.create_signed_search_key(api_key, api_key_name, {'search_fields': { 'body': {}}}) >>> client = Client(host_identifier, signed_search_key) ``` ## Running tests ```python python setup.py test ``` ## FAQ 🔮 ### Where do I report issues with the client? If something is not working as expected, please open an [issue](https://github.com/swiftype/swiftype-app-search-python/issues/new). ### Where can I learn more about App Search? Your best bet is to read the [documentation](https://swiftype.com/documentation/app-search). ### Where else can I go to get help? You can checkout the [Elastic App Search community discuss forums](https://discuss.elastic.co/c/app-search). ## Contribute 🚀 We welcome contributors to the project. Before you begin, a couple notes: + Prior to opening a pull request, please create an issue to [discuss the scope of your proposal](https://github.com/swiftype/swiftype-app-search-python/issues). + Please write simple code and concise documentation, when appropriate. ## License 📗 [MIT](https://github.com/swiftype/swiftype-app-search-python/blob/master/LICENSE.txt) © [Elastic](https://github.com/elastic) Thank you to all the [contributors](https://github.com/swiftype/swiftype-app-search-python/graphs/contributors)! %package help Summary: Development documents and examples for swiftype-app-search Provides: python3-swiftype-app-search-doc %description help

Elastic App Search Logo

> **⚠️ This repository is deprecated ⚠️** > > **Please visit [https://github.com/elastic/app-search-python](https://github.com/elastic/app-search-python) for the up to date version. Thank you! - Elastic**

GitHub release

> A first-party Python client for building excellent, relevant search experiences with [Elastic App Search](https://www.elastic.co/cloud/app-search-service). ## Contents + [Getting started](#getting-started-) + [Dependencies](#dependencies) + [Usage](#usage) + [Running tests](#running-tests) + [FAQ](#faq-) + [Contribute](#contribute-) + [License](#license-) *** ## Getting started 🐣 To install the client, use pip: ```python python -m pip install swiftype_app_search ``` You can also download the project source and run:: ```python python setup.py install ``` ## Dependencies + Python 2.7 / Python 3.3 + [Requests](https://github.com/requests/requests) + [PyJWT](https://github.com/jpadilla/pyjwt) ## Usage ### Instantiating a client ```python >>> from swiftype_app_search import Client >>> host_identifier = 'host-c5s2mj' >>> api_key = 'private-mu75psc5egt9ppzuycnc2mc3' >>> client = Client(host_identifier, api_key) ``` ### Using with App Search Managed Deploys The client can be configured to use a managed deploy by adjusting the `base_endpoint` and `use_https` parameters. Since managed deploys do not rely on a `host_identifier`, it can be omitted. ```python >>> from swiftype_app_search import Client >>> client = Client( api_key='private-mu75psc5egt9ppzuycnc2mc3', base_endpoint='localhost:3002/api/as/v1', use_https=False ) ``` ### Indexing: Creating or Updating a Single Document ```python >>> engine_name = 'favorite-videos' >>> document = { 'id': 'INscMGmhmX4', 'url': 'https://www.youtube.com/watch?v=INscMGmhmX4', 'title': 'The Original Grumpy Cat', 'body': 'A wonderful video of a magnificent cat.' } >>> client.index_document(engine_name, document) {'id': 'INscMGmhmX4'} ``` ### Indexing: Creating or Updating Multiple Documents ```python >>> engine_name = 'favorite-videos' >>> documents = [ { 'id': 'INscMGmhmX4', 'url': 'https://www.youtube.com/watch?v=INscMGmhmX4', 'title': 'The Original Grumpy Cat', 'body': 'A wonderful video of a magnificent cat.' }, { 'id': 'JNDFojsd02', 'url': 'https://www.youtube.com/watch?v=dQw4w9WgXcQ', 'title': 'Another Grumpy Cat', 'body': 'A great video of another cool cat.' } ] >>> client.index_documents(engine_name, documents) [{'id': 'INscMGmhmX4', 'errors': []}, {'id': 'JNDFojsd02', 'errors': []}] ``` ### Indexing: Updating documents (Partial Updates) ```python >>> engine_name = 'favorite-videos' >>> documents = [ { 'id': 'INscMGmhmX4', 'title': 'Updated title' } ] >>> client.update_documents(engine_name, documents) ``` ### Get Documents ```python >>> engine_name = 'favorite-videos' >>> client.get_documents(engine_name, ['INscMGmhmX4']) [{'id': 'INscMGmhmX4','url': 'https://www.youtube.com/watch?v=INscMGmhmX4','title': 'The Original Grumpy Cat','body': 'A wonderful video of a magnificent cat.'}] ``` ### List Documents ```python >>> engine_name = 'favorite-videos' >>> client.list_documents(engine_name, current=1, size=20) { 'meta': { 'page': { 'current': 1, 'total_pages': 1, 'total_results': 2, 'size': 20 } }, 'results': [{'id': 'INscMGmhmX4','url': 'https://www.youtube.com/watch?v=INscMGmhmX4','title': 'The Original Grumpy Cat','body': 'A wonderful video of a magnificent cat.'}] } ``` ### Destroy Documents ```python >>> engine_name = 'favorite-videos' >>> client.destroy_documents(engine_name, ['INscMGmhmX4']) [{'id': 'INscMGmhmX4','result': True}] ``` ### Get Schema ```python >>> engine_name = 'favorite-videos' >>> client.get_schema(engine_name) {'name':'text', 'square_km': 'number', 'square_mi': 'text'} ``` ### Create/Update Schema ```python >>> engine_name = 'favorite-videos' >>> client.update_schema(engine_name, {'square_km': 'text'}) {'square_km': 'text'} >>> client.update_schema(engine_name, {'square_mi': 'text'}) {'square_km': 'text', 'square_mi': 'text'} >>> client.update_schema(engine_name, {'square_km': 'number'}) {'square_km': 'number', 'square_mi': 'text'} ``` ### List Engines ```python >>> client.list_engines(current=1, size=20) { 'meta': { 'page': { 'current': 1, 'total_pages': 1, 'total_results': 2, 'size': 20 } }, 'results': [{'name': 'favorite-videos'}, {'name': 'another-engine'}] } ``` ### Get an Engine ```python >>> client.get_engine('favorite-videos') {'name': 'favorite-videos'} ``` ### Create an Engine ```python >>> client.create_engine('favorite-videos', 'en') {'name': 'favorite-videos', 'type': 'default', 'language': 'en'} ``` ### Destroy an Engine ```python >>> client.destroy_engine('favorite-videos') {'deleted': True} ``` ### Searching ```python >>> client.search('favorite-videos', 'grumpy cat', {}) {'meta': {'page': {'current': 1, 'total_pages': 1, 'total_results': 2, 'size': 10}, ...}, 'results': [...]} ``` ### Multi-Search ```python >>> client.multi_search('favorite-videos', [{ 'query': 'cat', 'options': { 'search_fields': { 'title': {} }} },{ 'query': 'dog', 'options': { 'search_fields': { 'body': {} }} }]) [{'meta': {...}, 'results': [...]}, {'meta': {...}, 'results': [...]}] ``` ### Query Suggestion ```python >>> client.query_suggestion('favorite-videos', 'cat', { 'size': 10, 'types': { 'documents': { 'fields': ['title'] } } }) {'results': {'documents': [{'suggestion': 'cat'}]}, 'meta': {'request_id': '390be384ad5888353e1b32adcfaaf1c9'}} ``` ### Clickthrough Tracking ```python >>> client.click(engine_name, {'query': 'cat', 'document_id': 'INscMGmhmX4'}) ``` ### Create a Signed Search Key Creating a search key that will only search over the body field. ```python >>> api_key = 'private-mu75psc5egt9ppzuycnc2mc3' >>> api_key_name = 'my-api-token' >>> signed_search_key = Client.create_signed_search_key(api_key, api_key_name, {'search_fields': { 'body': {}}}) >>> client = Client(host_identifier, signed_search_key) ``` ## Running tests ```python python setup.py test ``` ## FAQ 🔮 ### Where do I report issues with the client? If something is not working as expected, please open an [issue](https://github.com/swiftype/swiftype-app-search-python/issues/new). ### Where can I learn more about App Search? Your best bet is to read the [documentation](https://swiftype.com/documentation/app-search). ### Where else can I go to get help? You can checkout the [Elastic App Search community discuss forums](https://discuss.elastic.co/c/app-search). ## Contribute 🚀 We welcome contributors to the project. Before you begin, a couple notes: + Prior to opening a pull request, please create an issue to [discuss the scope of your proposal](https://github.com/swiftype/swiftype-app-search-python/issues). + Please write simple code and concise documentation, when appropriate. ## License 📗 [MIT](https://github.com/swiftype/swiftype-app-search-python/blob/master/LICENSE.txt) © [Elastic](https://github.com/elastic) Thank you to all the [contributors](https://github.com/swiftype/swiftype-app-search-python/graphs/contributors)! %prep %autosetup -n swiftype_app_search-0.6.2 %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-swiftype-app-search -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Tue Jun 20 2023 Python_Bot - 0.6.2-1 - Package Spec generated