summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-04-11 05:34:50 +0000
committerCoprDistGit <infra@openeuler.org>2023-04-11 05:34:50 +0000
commit00cbb2ad92e65453dadae5c52da5d62e71912f65 (patch)
tree314a48aae4db4f26939c9c7e24bd80bb557501ba
parent3803be67b4f8c14829ed137413c26c4c27104d0e (diff)
automatic import of python-elasticmock
-rw-r--r--.gitignore1
-rw-r--r--python-elasticmock.spec915
-rw-r--r--sources1
3 files changed, 917 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..3b9284f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/ElasticMock-1.8.1.tar.gz
diff --git a/python-elasticmock.spec b/python-elasticmock.spec
new file mode 100644
index 0000000..f6dc9e0
--- /dev/null
+++ b/python-elasticmock.spec
@@ -0,0 +1,915 @@
+%global _empty_manifest_terminate_build 0
+Name: python-ElasticMock
+Version: 1.8.1
+Release: 1
+Summary: Python Elasticsearch Mock for test purposes
+License: MIT License
+URL: https://github.com/vrcmarcos/elasticmock
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/6a/2b/82213b57b3426b94cadcc5bc1ced471626e3f21153dd7506fc3b8c568324/ElasticMock-1.8.1.tar.gz
+BuildArch: noarch
+
+
+%description
+# ElasticMock
+
+Python Elasticsearch Mock for test purposes
+
+[![Build Status](https://travis-ci.org/vrcmarcos/elasticmock.svg?branch=master)](https://travis-ci.org/vrcmarcos/elasticmock) [![Coverage Status](https://coveralls.io/repos/github/vrcmarcos/elasticmock/badge.svg?branch=master)](https://coveralls.io/github/vrcmarcos/elasticmock?branch=master) [![PyPI version](https://badge.fury.io/py/ElasticMock.svg)](https://badge.fury.io/py/ElasticMock) [![GitHub license](https://img.shields.io/github/license/vrcmarcos/elasticmock)](https://github.com/vrcmarcos/elasticmock/blob/master/LICENSE) ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/ElasticMock) ![ElasticSearch Version](https://img.shields.io/badge/elasticsearch-1%20%7C%202%20%7C%205%20%7C%206%20%7C%207-blue)
+
+![Libraries.io dependency status for latest release](https://img.shields.io/librariesio/release/pypi/elasticmock) [![Downloads](https://pepy.tech/badge/elasticmock/month)](https://pepy.tech/project/elasticmock/month)
+
+## Installation
+
+```shell
+pip install ElasticMock
+```
+
+## Usage
+
+To use ElasticMock, decorate your test method with **@elasticmock** decorator:
+
+```python
+from unittest import TestCase
+
+from elasticmock import elasticmock
+
+
+class TestClass(TestCase):
+
+ @elasticmock
+ def test_should_return_something_from_elasticsearch(self):
+ self.assertIsNotNone(some_function_that_uses_elasticsearch())
+```
+
+### Custom Behaviours
+
+You can also force the behaviour of the ElasticSearch instance by importing the `elasticmock.behaviour` module:
+
+```python
+from unittest import TestCase
+
+from elasticmock import behaviour
+
+
+class TestClass(TestCase):
+
+ ...
+
+ def test_should_return_internal_server_error_when_simulate_server_error_is_true(self):
+ behaviour.server_failure.enable()
+ ...
+ behaviour.server_failure.disable()
+```
+
+You can also disable all behaviours by calling `behaviour.disable_all()` (Consider put this in your `def tearDown(self)` method)
+
+#### Available Behaviours
+
+* `server_failure`: Will make all calls to ElasticSearch returns the following error message:
+ ```python
+ {
+ 'status_code': 500,
+ 'error': 'Internal Server Error'
+ }
+ ```
+
+## Code example
+
+Let's say you have a prod code snippet like this one:
+
+```python
+import elasticsearch
+
+class FooService:
+
+ def __init__(self):
+ self.es = elasticsearch.Elasticsearch(hosts=[{'host': 'localhost', 'port': 9200}])
+
+ def create(self, index, body):
+ es_object = self.es.index(index, body)
+ return es_object.get('_id')
+
+ def read(self, index, id):
+ es_object = self.es.get(index, id)
+ return es_object.get('_source')
+
+```
+
+Than you should be able to test this class by mocking ElasticSearch using the following test class:
+
+```python
+from unittest import TestCase
+from elasticmock import elasticmock
+from foo.bar import FooService
+
+class FooServiceTest(TestCase):
+
+ @elasticmock
+ def should_create_and_read_object(self):
+ # Variables used to test
+ index = 'test-index'
+ expected_document = {
+ 'foo': 'bar'
+ }
+
+ # Instantiate service
+ service = FooService()
+
+ # Index document on ElasticSearch
+ id = service.create(index, expected_document)
+ self.assertIsNotNone(id)
+
+ # Retrive dpcument from ElasticSearch
+ document = service.read(index, id)
+ self.assertEquals(expected_document, document)
+
+```
+
+## Notes:
+
+- The mocked **search** method returns **all available documents** indexed on the index with the requested document type.
+- The mocked **suggest** method returns the exactly suggestions dictionary passed as body serialized in Elasticsearch.suggest response. **Atention:** If the term is an *int*, the suggestion will be ```python term + 1```. If not, the suggestion will be formatted as ```python {0}_suggestion.format(term) ```.
+Example:
+ - **Suggestion Body**:
+ ```python
+ suggestion_body = {
+ 'suggestion-string': {
+ 'text': 'test_text',
+ 'term': {
+ 'field': 'string'
+ }
+ },
+ 'suggestion-id': {
+ 'text': 1234567,
+ 'term': {
+ 'field': 'id'
+ }
+ }
+ }
+ ```
+ - **Suggestion Response**:
+ ```python
+ {
+ 'suggestion-string': [
+ {
+ 'text': 'test_text',
+ 'length': 1,
+ 'options': [
+ {
+ 'text': 'test_text_suggestion',
+ 'freq': 1,
+ 'score': 1.0
+ }
+ ],
+ 'offset': 0
+ }
+ ],
+ 'suggestion-id': [
+ {
+ 'text': 1234567,
+ 'length': 1,
+ 'options': [
+ {
+ 'text': 1234568,
+ 'freq': 1,
+ 'score': 1.0
+ }
+ ],
+ 'offset': 0
+ }
+ ],
+ }
+ ```
+
+## Testing
+
+```bash
+python setup.py test
+```
+
+## Changelog
+
+#### 1.8.1:
+- [Add support for Python 3.9](https://github.com/vrcmarcos/elasticmock/pull/72) (Thanks [@singingwolfboy](https://github.com/singingwolfboy))
+- [use unittest.mock instead of mock](https://github.com/vrcmarcos/elasticmock/pull/71) (Thanks [@singingwolfboy](https://github.com/singingwolfboy))
+- [Add must_not for bool search query](https://github.com/vrcmarcos/elasticmock/pull/70) (Thanks [@t-bittarn](https://github.com/t-bittarn))
+
+
+#### 1.8.0:
+- [Add multi_match](https://github.com/vrcmarcos/elasticmock/pull/63) (Thanks [@carlosgalvez-tiendeo](https://github.com/carlosgalvez-tiendeo))
+- [Add mget](https://github.com/vrcmarcos/elasticmock/pull/64) (Thanks [@carlosgalvez-tiendeo](https://github.com/carlosgalvez-tiendeo))
+- [Add create, update, and delete to bulk API](https://github.com/vrcmarcos/elasticmock/pull/65) (Thanks [@fenimore](https://github.com/fenimore))
+- [Add Should to bool Query](https://github.com/vrcmarcos/elasticmock/pull/67) (Thanks [@fenimore](https://github.com/fenimore))
+- [Update Search API return result](https://github.com/vrcmarcos/elasticmock/pull/68) (Thanks [@fenimore](https://github.com/fenimore))
+
+#### 1.7.0:
+- [Add shards skipped to search and count](https://github.com/vrcmarcos/elasticmock/pull/56) (Thanks [@philtweir](https://github.com/philtweir))
+- [Allow 'match_all' queries in FakeSearch](https://github.com/vrcmarcos/elasticmock/pull/54) (Thanks [@jankislinger](https://github.com/jankislinger))
+- [Query using nested attributes](https://github.com/vrcmarcos/elasticmock/pull/55) (Thanks [@jankislinger](https://github.com/jankislinger))
+- [New features: range, size, aggregations](https://github.com/vrcmarcos/elasticmock/pull/57) (Thanks [@jankislinger](https://github.com/jankislinger))
+- [Adding "should" and "minimum_should_match" to QueryType](https://github.com/vrcmarcos/elasticmock/pull/62) (Thanks [@lunarie16](https://github.com/lunarie16))
+
+#### 1.6.2:
+- [Add must to query type](https://github.com/vrcmarcos/elasticmock/pull/47) (Thanks [@cuent](https://github.com/cuent))
+- [Add match all query type](https://github.com/vrcmarcos/elasticmock/pull/48) (Thanks [@cuent](https://github.com/cuent))
+
+#### 1.6.1:
+- Fix Twine README.md
+
+#### 1.6.0:
+- [Implements several basic search types](https://github.com/vrcmarcos/elasticmock/pull/42) (Thanks [@KyKoPho](https://github.com/KyKoPho))
+- [Allow ignoring of missing documents (404) for get and delete](https://github.com/vrcmarcos/elasticmock/pull/44) (Thanks [@joosterman](https://github.com/joosterman))
+
+#### 1.5.1:
+- [Fix tests for es > 7](https://github.com/vrcmarcos/elasticmock/pull/38) (Thanks [@chesstrian](https://github.com/chesstrian))
+
+#### 1.5.0:
+- [**FakeElasticSearch**: Mocked **indices** property](https://github.com/vrcmarcos/elasticmock/issues/22)
+ - **FakeIndicesClient**: Mocked **create**, **exists**, **refresh** and **delete** methods
+- [**FakeElasticSearch**: Mocked **cluster** property](https://github.com/vrcmarcos/elasticmock/issues/8)
+ - **FakeClusterClient**: Mocked **health** method
+
+#### 1.4.0
+
+- [Fix es.index regression issue](https://github.com/vrcmarcos/elasticmock/issues/34)
+- [Add 'Force Server Failure' feature as requested](https://github.com/vrcmarcos/elasticmock/issues/28)
+- Reformat code to be compliant with PEP8
+- Add support to Python 3.8
+
+#### 1.3.7
+
+- [Adding fix for updating existing doc using index](https://github.com/vrcmarcos/elasticmock/pull/32) (Thanks [@adityaghosh](https://github.com/adityaghosh))
+- [Added bulk method](https://github.com/vrcmarcos/elasticmock/pull/30) (Thanks [@charl-van-niekerk](https://github.com/charl-van-niekerk))
+- [Add default value to doc_type in index method as it is by default set to '\_doc'](https://github.com/vrcmarcos/elasticmock/pull/27) (Thanks [@mohantyashish109](https://github.com/mohantyashish109))
+- [Add support for Python 3.7](https://github.com/vrcmarcos/elasticmock/pull/25) (Thanks [@asherf](https://github.com/asherf))
+
+#### 1.3.6
+
+- [Fix installation issue](https://github.com/vrcmarcos/elasticmock/pull/20) (Thanks [@tdhopper](https://github.com/tdhopper))
+
+#### 1.3.5
+
+- [Fix 1.3.4 release](https://github.com/vrcmarcos/elasticmock/pull/19) (Thanks [@infinite-Joy](https://github.com/infinite-Joy))
+
+#### 1.3.4
+
+- [Added aggregations to response if requested](https://github.com/vrcmarcos/elasticmock/pull/15) (Thanks [@snakeye](https://github.com/snakeye))
+- [Implementing new methods for scrolling](https://github.com/vrcmarcos/elasticmock/pull/17) (Thanks [@tcatrain](https://github.com/tcatrain))
+
+#### 1.3.3
+
+- [Search: doc_type can be a list](https://github.com/vrcmarcos/elasticmock/pull/16) (Thanks [@garncarz](https://github.com/garncarz))
+- [Exclude tests package](https://github.com/vrcmarcos/elasticmock/pull/13) (Thanks [@jmlw](https://github.com/jmlw))
+- [Make the FakeElasticsearch __init__ signature match the one from Elasticsearch](https://github.com/vrcmarcos/elasticmock/pull/10) (Thanks [@xrmx](https://github.com/xrmx))
+- [Improve search and count](https://github.com/vrcmarcos/elasticmock/pull/7) (Thanks [@frivoire](https://github.com/frivoire))
+
+#### 1.3.2
+
+- **elasticmock**: Python 3 fixes (Thanks [@barseghyanartur](https://github.com/barseghyanartur))
+- **test**: Add information on testing (Thanks [@barseghyanartur](https://github.com/barseghyanartur))
+- **README.md**: Fixed typo (Thanks [@bowlofstew](https://github.com/bowlofstew))
+
+#### 1.3.1
+
+- **elasticmock**: Allow the same arguments to the mock that elasticsearch.Elasticsearch allows (Thanks [@mattbreeden](https://github.com/mattbreeden))
+
+#### 1.3.0:
+- **FakeElasticSearch**: Mocked **count** method (Thanks [@TheoResources](https://github.com/TheoResources))
+
+#### 1.2.0:
+- **FakeElasticSearch**: Mocked **suggest** method
+
+#### 1.1.1:
+- **elasticmock**: Changing the cleanup older FakeElasticSearch's instances order
+- **FakeElasticSearch.index**: Changing the method signature to correctly overrides the Elasticsearch.index method
+
+#### 1.1.0:
+- **FakeElasticSearch**: Mocked **delete** method
+
+#### 1.0.1:
+- **setup.py**: Fixed GitHub link
+
+#### 1.0.0:
+- **elasticmock**: Created **@elasticmock** decorator
+- **FakeElasticSearch**: Mocked **exists**, **get**, **get_source**, **index**, **info**, **search** and **ping** method
+
+%package -n python3-ElasticMock
+Summary: Python Elasticsearch Mock for test purposes
+Provides: python-ElasticMock
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-ElasticMock
+# ElasticMock
+
+Python Elasticsearch Mock for test purposes
+
+[![Build Status](https://travis-ci.org/vrcmarcos/elasticmock.svg?branch=master)](https://travis-ci.org/vrcmarcos/elasticmock) [![Coverage Status](https://coveralls.io/repos/github/vrcmarcos/elasticmock/badge.svg?branch=master)](https://coveralls.io/github/vrcmarcos/elasticmock?branch=master) [![PyPI version](https://badge.fury.io/py/ElasticMock.svg)](https://badge.fury.io/py/ElasticMock) [![GitHub license](https://img.shields.io/github/license/vrcmarcos/elasticmock)](https://github.com/vrcmarcos/elasticmock/blob/master/LICENSE) ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/ElasticMock) ![ElasticSearch Version](https://img.shields.io/badge/elasticsearch-1%20%7C%202%20%7C%205%20%7C%206%20%7C%207-blue)
+
+![Libraries.io dependency status for latest release](https://img.shields.io/librariesio/release/pypi/elasticmock) [![Downloads](https://pepy.tech/badge/elasticmock/month)](https://pepy.tech/project/elasticmock/month)
+
+## Installation
+
+```shell
+pip install ElasticMock
+```
+
+## Usage
+
+To use ElasticMock, decorate your test method with **@elasticmock** decorator:
+
+```python
+from unittest import TestCase
+
+from elasticmock import elasticmock
+
+
+class TestClass(TestCase):
+
+ @elasticmock
+ def test_should_return_something_from_elasticsearch(self):
+ self.assertIsNotNone(some_function_that_uses_elasticsearch())
+```
+
+### Custom Behaviours
+
+You can also force the behaviour of the ElasticSearch instance by importing the `elasticmock.behaviour` module:
+
+```python
+from unittest import TestCase
+
+from elasticmock import behaviour
+
+
+class TestClass(TestCase):
+
+ ...
+
+ def test_should_return_internal_server_error_when_simulate_server_error_is_true(self):
+ behaviour.server_failure.enable()
+ ...
+ behaviour.server_failure.disable()
+```
+
+You can also disable all behaviours by calling `behaviour.disable_all()` (Consider put this in your `def tearDown(self)` method)
+
+#### Available Behaviours
+
+* `server_failure`: Will make all calls to ElasticSearch returns the following error message:
+ ```python
+ {
+ 'status_code': 500,
+ 'error': 'Internal Server Error'
+ }
+ ```
+
+## Code example
+
+Let's say you have a prod code snippet like this one:
+
+```python
+import elasticsearch
+
+class FooService:
+
+ def __init__(self):
+ self.es = elasticsearch.Elasticsearch(hosts=[{'host': 'localhost', 'port': 9200}])
+
+ def create(self, index, body):
+ es_object = self.es.index(index, body)
+ return es_object.get('_id')
+
+ def read(self, index, id):
+ es_object = self.es.get(index, id)
+ return es_object.get('_source')
+
+```
+
+Than you should be able to test this class by mocking ElasticSearch using the following test class:
+
+```python
+from unittest import TestCase
+from elasticmock import elasticmock
+from foo.bar import FooService
+
+class FooServiceTest(TestCase):
+
+ @elasticmock
+ def should_create_and_read_object(self):
+ # Variables used to test
+ index = 'test-index'
+ expected_document = {
+ 'foo': 'bar'
+ }
+
+ # Instantiate service
+ service = FooService()
+
+ # Index document on ElasticSearch
+ id = service.create(index, expected_document)
+ self.assertIsNotNone(id)
+
+ # Retrive dpcument from ElasticSearch
+ document = service.read(index, id)
+ self.assertEquals(expected_document, document)
+
+```
+
+## Notes:
+
+- The mocked **search** method returns **all available documents** indexed on the index with the requested document type.
+- The mocked **suggest** method returns the exactly suggestions dictionary passed as body serialized in Elasticsearch.suggest response. **Atention:** If the term is an *int*, the suggestion will be ```python term + 1```. If not, the suggestion will be formatted as ```python {0}_suggestion.format(term) ```.
+Example:
+ - **Suggestion Body**:
+ ```python
+ suggestion_body = {
+ 'suggestion-string': {
+ 'text': 'test_text',
+ 'term': {
+ 'field': 'string'
+ }
+ },
+ 'suggestion-id': {
+ 'text': 1234567,
+ 'term': {
+ 'field': 'id'
+ }
+ }
+ }
+ ```
+ - **Suggestion Response**:
+ ```python
+ {
+ 'suggestion-string': [
+ {
+ 'text': 'test_text',
+ 'length': 1,
+ 'options': [
+ {
+ 'text': 'test_text_suggestion',
+ 'freq': 1,
+ 'score': 1.0
+ }
+ ],
+ 'offset': 0
+ }
+ ],
+ 'suggestion-id': [
+ {
+ 'text': 1234567,
+ 'length': 1,
+ 'options': [
+ {
+ 'text': 1234568,
+ 'freq': 1,
+ 'score': 1.0
+ }
+ ],
+ 'offset': 0
+ }
+ ],
+ }
+ ```
+
+## Testing
+
+```bash
+python setup.py test
+```
+
+## Changelog
+
+#### 1.8.1:
+- [Add support for Python 3.9](https://github.com/vrcmarcos/elasticmock/pull/72) (Thanks [@singingwolfboy](https://github.com/singingwolfboy))
+- [use unittest.mock instead of mock](https://github.com/vrcmarcos/elasticmock/pull/71) (Thanks [@singingwolfboy](https://github.com/singingwolfboy))
+- [Add must_not for bool search query](https://github.com/vrcmarcos/elasticmock/pull/70) (Thanks [@t-bittarn](https://github.com/t-bittarn))
+
+
+#### 1.8.0:
+- [Add multi_match](https://github.com/vrcmarcos/elasticmock/pull/63) (Thanks [@carlosgalvez-tiendeo](https://github.com/carlosgalvez-tiendeo))
+- [Add mget](https://github.com/vrcmarcos/elasticmock/pull/64) (Thanks [@carlosgalvez-tiendeo](https://github.com/carlosgalvez-tiendeo))
+- [Add create, update, and delete to bulk API](https://github.com/vrcmarcos/elasticmock/pull/65) (Thanks [@fenimore](https://github.com/fenimore))
+- [Add Should to bool Query](https://github.com/vrcmarcos/elasticmock/pull/67) (Thanks [@fenimore](https://github.com/fenimore))
+- [Update Search API return result](https://github.com/vrcmarcos/elasticmock/pull/68) (Thanks [@fenimore](https://github.com/fenimore))
+
+#### 1.7.0:
+- [Add shards skipped to search and count](https://github.com/vrcmarcos/elasticmock/pull/56) (Thanks [@philtweir](https://github.com/philtweir))
+- [Allow 'match_all' queries in FakeSearch](https://github.com/vrcmarcos/elasticmock/pull/54) (Thanks [@jankislinger](https://github.com/jankislinger))
+- [Query using nested attributes](https://github.com/vrcmarcos/elasticmock/pull/55) (Thanks [@jankislinger](https://github.com/jankislinger))
+- [New features: range, size, aggregations](https://github.com/vrcmarcos/elasticmock/pull/57) (Thanks [@jankislinger](https://github.com/jankislinger))
+- [Adding "should" and "minimum_should_match" to QueryType](https://github.com/vrcmarcos/elasticmock/pull/62) (Thanks [@lunarie16](https://github.com/lunarie16))
+
+#### 1.6.2:
+- [Add must to query type](https://github.com/vrcmarcos/elasticmock/pull/47) (Thanks [@cuent](https://github.com/cuent))
+- [Add match all query type](https://github.com/vrcmarcos/elasticmock/pull/48) (Thanks [@cuent](https://github.com/cuent))
+
+#### 1.6.1:
+- Fix Twine README.md
+
+#### 1.6.0:
+- [Implements several basic search types](https://github.com/vrcmarcos/elasticmock/pull/42) (Thanks [@KyKoPho](https://github.com/KyKoPho))
+- [Allow ignoring of missing documents (404) for get and delete](https://github.com/vrcmarcos/elasticmock/pull/44) (Thanks [@joosterman](https://github.com/joosterman))
+
+#### 1.5.1:
+- [Fix tests for es > 7](https://github.com/vrcmarcos/elasticmock/pull/38) (Thanks [@chesstrian](https://github.com/chesstrian))
+
+#### 1.5.0:
+- [**FakeElasticSearch**: Mocked **indices** property](https://github.com/vrcmarcos/elasticmock/issues/22)
+ - **FakeIndicesClient**: Mocked **create**, **exists**, **refresh** and **delete** methods
+- [**FakeElasticSearch**: Mocked **cluster** property](https://github.com/vrcmarcos/elasticmock/issues/8)
+ - **FakeClusterClient**: Mocked **health** method
+
+#### 1.4.0
+
+- [Fix es.index regression issue](https://github.com/vrcmarcos/elasticmock/issues/34)
+- [Add 'Force Server Failure' feature as requested](https://github.com/vrcmarcos/elasticmock/issues/28)
+- Reformat code to be compliant with PEP8
+- Add support to Python 3.8
+
+#### 1.3.7
+
+- [Adding fix for updating existing doc using index](https://github.com/vrcmarcos/elasticmock/pull/32) (Thanks [@adityaghosh](https://github.com/adityaghosh))
+- [Added bulk method](https://github.com/vrcmarcos/elasticmock/pull/30) (Thanks [@charl-van-niekerk](https://github.com/charl-van-niekerk))
+- [Add default value to doc_type in index method as it is by default set to '\_doc'](https://github.com/vrcmarcos/elasticmock/pull/27) (Thanks [@mohantyashish109](https://github.com/mohantyashish109))
+- [Add support for Python 3.7](https://github.com/vrcmarcos/elasticmock/pull/25) (Thanks [@asherf](https://github.com/asherf))
+
+#### 1.3.6
+
+- [Fix installation issue](https://github.com/vrcmarcos/elasticmock/pull/20) (Thanks [@tdhopper](https://github.com/tdhopper))
+
+#### 1.3.5
+
+- [Fix 1.3.4 release](https://github.com/vrcmarcos/elasticmock/pull/19) (Thanks [@infinite-Joy](https://github.com/infinite-Joy))
+
+#### 1.3.4
+
+- [Added aggregations to response if requested](https://github.com/vrcmarcos/elasticmock/pull/15) (Thanks [@snakeye](https://github.com/snakeye))
+- [Implementing new methods for scrolling](https://github.com/vrcmarcos/elasticmock/pull/17) (Thanks [@tcatrain](https://github.com/tcatrain))
+
+#### 1.3.3
+
+- [Search: doc_type can be a list](https://github.com/vrcmarcos/elasticmock/pull/16) (Thanks [@garncarz](https://github.com/garncarz))
+- [Exclude tests package](https://github.com/vrcmarcos/elasticmock/pull/13) (Thanks [@jmlw](https://github.com/jmlw))
+- [Make the FakeElasticsearch __init__ signature match the one from Elasticsearch](https://github.com/vrcmarcos/elasticmock/pull/10) (Thanks [@xrmx](https://github.com/xrmx))
+- [Improve search and count](https://github.com/vrcmarcos/elasticmock/pull/7) (Thanks [@frivoire](https://github.com/frivoire))
+
+#### 1.3.2
+
+- **elasticmock**: Python 3 fixes (Thanks [@barseghyanartur](https://github.com/barseghyanartur))
+- **test**: Add information on testing (Thanks [@barseghyanartur](https://github.com/barseghyanartur))
+- **README.md**: Fixed typo (Thanks [@bowlofstew](https://github.com/bowlofstew))
+
+#### 1.3.1
+
+- **elasticmock**: Allow the same arguments to the mock that elasticsearch.Elasticsearch allows (Thanks [@mattbreeden](https://github.com/mattbreeden))
+
+#### 1.3.0:
+- **FakeElasticSearch**: Mocked **count** method (Thanks [@TheoResources](https://github.com/TheoResources))
+
+#### 1.2.0:
+- **FakeElasticSearch**: Mocked **suggest** method
+
+#### 1.1.1:
+- **elasticmock**: Changing the cleanup older FakeElasticSearch's instances order
+- **FakeElasticSearch.index**: Changing the method signature to correctly overrides the Elasticsearch.index method
+
+#### 1.1.0:
+- **FakeElasticSearch**: Mocked **delete** method
+
+#### 1.0.1:
+- **setup.py**: Fixed GitHub link
+
+#### 1.0.0:
+- **elasticmock**: Created **@elasticmock** decorator
+- **FakeElasticSearch**: Mocked **exists**, **get**, **get_source**, **index**, **info**, **search** and **ping** method
+
+%package help
+Summary: Development documents and examples for ElasticMock
+Provides: python3-ElasticMock-doc
+%description help
+# ElasticMock
+
+Python Elasticsearch Mock for test purposes
+
+[![Build Status](https://travis-ci.org/vrcmarcos/elasticmock.svg?branch=master)](https://travis-ci.org/vrcmarcos/elasticmock) [![Coverage Status](https://coveralls.io/repos/github/vrcmarcos/elasticmock/badge.svg?branch=master)](https://coveralls.io/github/vrcmarcos/elasticmock?branch=master) [![PyPI version](https://badge.fury.io/py/ElasticMock.svg)](https://badge.fury.io/py/ElasticMock) [![GitHub license](https://img.shields.io/github/license/vrcmarcos/elasticmock)](https://github.com/vrcmarcos/elasticmock/blob/master/LICENSE) ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/ElasticMock) ![ElasticSearch Version](https://img.shields.io/badge/elasticsearch-1%20%7C%202%20%7C%205%20%7C%206%20%7C%207-blue)
+
+![Libraries.io dependency status for latest release](https://img.shields.io/librariesio/release/pypi/elasticmock) [![Downloads](https://pepy.tech/badge/elasticmock/month)](https://pepy.tech/project/elasticmock/month)
+
+## Installation
+
+```shell
+pip install ElasticMock
+```
+
+## Usage
+
+To use ElasticMock, decorate your test method with **@elasticmock** decorator:
+
+```python
+from unittest import TestCase
+
+from elasticmock import elasticmock
+
+
+class TestClass(TestCase):
+
+ @elasticmock
+ def test_should_return_something_from_elasticsearch(self):
+ self.assertIsNotNone(some_function_that_uses_elasticsearch())
+```
+
+### Custom Behaviours
+
+You can also force the behaviour of the ElasticSearch instance by importing the `elasticmock.behaviour` module:
+
+```python
+from unittest import TestCase
+
+from elasticmock import behaviour
+
+
+class TestClass(TestCase):
+
+ ...
+
+ def test_should_return_internal_server_error_when_simulate_server_error_is_true(self):
+ behaviour.server_failure.enable()
+ ...
+ behaviour.server_failure.disable()
+```
+
+You can also disable all behaviours by calling `behaviour.disable_all()` (Consider put this in your `def tearDown(self)` method)
+
+#### Available Behaviours
+
+* `server_failure`: Will make all calls to ElasticSearch returns the following error message:
+ ```python
+ {
+ 'status_code': 500,
+ 'error': 'Internal Server Error'
+ }
+ ```
+
+## Code example
+
+Let's say you have a prod code snippet like this one:
+
+```python
+import elasticsearch
+
+class FooService:
+
+ def __init__(self):
+ self.es = elasticsearch.Elasticsearch(hosts=[{'host': 'localhost', 'port': 9200}])
+
+ def create(self, index, body):
+ es_object = self.es.index(index, body)
+ return es_object.get('_id')
+
+ def read(self, index, id):
+ es_object = self.es.get(index, id)
+ return es_object.get('_source')
+
+```
+
+Than you should be able to test this class by mocking ElasticSearch using the following test class:
+
+```python
+from unittest import TestCase
+from elasticmock import elasticmock
+from foo.bar import FooService
+
+class FooServiceTest(TestCase):
+
+ @elasticmock
+ def should_create_and_read_object(self):
+ # Variables used to test
+ index = 'test-index'
+ expected_document = {
+ 'foo': 'bar'
+ }
+
+ # Instantiate service
+ service = FooService()
+
+ # Index document on ElasticSearch
+ id = service.create(index, expected_document)
+ self.assertIsNotNone(id)
+
+ # Retrive dpcument from ElasticSearch
+ document = service.read(index, id)
+ self.assertEquals(expected_document, document)
+
+```
+
+## Notes:
+
+- The mocked **search** method returns **all available documents** indexed on the index with the requested document type.
+- The mocked **suggest** method returns the exactly suggestions dictionary passed as body serialized in Elasticsearch.suggest response. **Atention:** If the term is an *int*, the suggestion will be ```python term + 1```. If not, the suggestion will be formatted as ```python {0}_suggestion.format(term) ```.
+Example:
+ - **Suggestion Body**:
+ ```python
+ suggestion_body = {
+ 'suggestion-string': {
+ 'text': 'test_text',
+ 'term': {
+ 'field': 'string'
+ }
+ },
+ 'suggestion-id': {
+ 'text': 1234567,
+ 'term': {
+ 'field': 'id'
+ }
+ }
+ }
+ ```
+ - **Suggestion Response**:
+ ```python
+ {
+ 'suggestion-string': [
+ {
+ 'text': 'test_text',
+ 'length': 1,
+ 'options': [
+ {
+ 'text': 'test_text_suggestion',
+ 'freq': 1,
+ 'score': 1.0
+ }
+ ],
+ 'offset': 0
+ }
+ ],
+ 'suggestion-id': [
+ {
+ 'text': 1234567,
+ 'length': 1,
+ 'options': [
+ {
+ 'text': 1234568,
+ 'freq': 1,
+ 'score': 1.0
+ }
+ ],
+ 'offset': 0
+ }
+ ],
+ }
+ ```
+
+## Testing
+
+```bash
+python setup.py test
+```
+
+## Changelog
+
+#### 1.8.1:
+- [Add support for Python 3.9](https://github.com/vrcmarcos/elasticmock/pull/72) (Thanks [@singingwolfboy](https://github.com/singingwolfboy))
+- [use unittest.mock instead of mock](https://github.com/vrcmarcos/elasticmock/pull/71) (Thanks [@singingwolfboy](https://github.com/singingwolfboy))
+- [Add must_not for bool search query](https://github.com/vrcmarcos/elasticmock/pull/70) (Thanks [@t-bittarn](https://github.com/t-bittarn))
+
+
+#### 1.8.0:
+- [Add multi_match](https://github.com/vrcmarcos/elasticmock/pull/63) (Thanks [@carlosgalvez-tiendeo](https://github.com/carlosgalvez-tiendeo))
+- [Add mget](https://github.com/vrcmarcos/elasticmock/pull/64) (Thanks [@carlosgalvez-tiendeo](https://github.com/carlosgalvez-tiendeo))
+- [Add create, update, and delete to bulk API](https://github.com/vrcmarcos/elasticmock/pull/65) (Thanks [@fenimore](https://github.com/fenimore))
+- [Add Should to bool Query](https://github.com/vrcmarcos/elasticmock/pull/67) (Thanks [@fenimore](https://github.com/fenimore))
+- [Update Search API return result](https://github.com/vrcmarcos/elasticmock/pull/68) (Thanks [@fenimore](https://github.com/fenimore))
+
+#### 1.7.0:
+- [Add shards skipped to search and count](https://github.com/vrcmarcos/elasticmock/pull/56) (Thanks [@philtweir](https://github.com/philtweir))
+- [Allow 'match_all' queries in FakeSearch](https://github.com/vrcmarcos/elasticmock/pull/54) (Thanks [@jankislinger](https://github.com/jankislinger))
+- [Query using nested attributes](https://github.com/vrcmarcos/elasticmock/pull/55) (Thanks [@jankislinger](https://github.com/jankislinger))
+- [New features: range, size, aggregations](https://github.com/vrcmarcos/elasticmock/pull/57) (Thanks [@jankislinger](https://github.com/jankislinger))
+- [Adding "should" and "minimum_should_match" to QueryType](https://github.com/vrcmarcos/elasticmock/pull/62) (Thanks [@lunarie16](https://github.com/lunarie16))
+
+#### 1.6.2:
+- [Add must to query type](https://github.com/vrcmarcos/elasticmock/pull/47) (Thanks [@cuent](https://github.com/cuent))
+- [Add match all query type](https://github.com/vrcmarcos/elasticmock/pull/48) (Thanks [@cuent](https://github.com/cuent))
+
+#### 1.6.1:
+- Fix Twine README.md
+
+#### 1.6.0:
+- [Implements several basic search types](https://github.com/vrcmarcos/elasticmock/pull/42) (Thanks [@KyKoPho](https://github.com/KyKoPho))
+- [Allow ignoring of missing documents (404) for get and delete](https://github.com/vrcmarcos/elasticmock/pull/44) (Thanks [@joosterman](https://github.com/joosterman))
+
+#### 1.5.1:
+- [Fix tests for es > 7](https://github.com/vrcmarcos/elasticmock/pull/38) (Thanks [@chesstrian](https://github.com/chesstrian))
+
+#### 1.5.0:
+- [**FakeElasticSearch**: Mocked **indices** property](https://github.com/vrcmarcos/elasticmock/issues/22)
+ - **FakeIndicesClient**: Mocked **create**, **exists**, **refresh** and **delete** methods
+- [**FakeElasticSearch**: Mocked **cluster** property](https://github.com/vrcmarcos/elasticmock/issues/8)
+ - **FakeClusterClient**: Mocked **health** method
+
+#### 1.4.0
+
+- [Fix es.index regression issue](https://github.com/vrcmarcos/elasticmock/issues/34)
+- [Add 'Force Server Failure' feature as requested](https://github.com/vrcmarcos/elasticmock/issues/28)
+- Reformat code to be compliant with PEP8
+- Add support to Python 3.8
+
+#### 1.3.7
+
+- [Adding fix for updating existing doc using index](https://github.com/vrcmarcos/elasticmock/pull/32) (Thanks [@adityaghosh](https://github.com/adityaghosh))
+- [Added bulk method](https://github.com/vrcmarcos/elasticmock/pull/30) (Thanks [@charl-van-niekerk](https://github.com/charl-van-niekerk))
+- [Add default value to doc_type in index method as it is by default set to '\_doc'](https://github.com/vrcmarcos/elasticmock/pull/27) (Thanks [@mohantyashish109](https://github.com/mohantyashish109))
+- [Add support for Python 3.7](https://github.com/vrcmarcos/elasticmock/pull/25) (Thanks [@asherf](https://github.com/asherf))
+
+#### 1.3.6
+
+- [Fix installation issue](https://github.com/vrcmarcos/elasticmock/pull/20) (Thanks [@tdhopper](https://github.com/tdhopper))
+
+#### 1.3.5
+
+- [Fix 1.3.4 release](https://github.com/vrcmarcos/elasticmock/pull/19) (Thanks [@infinite-Joy](https://github.com/infinite-Joy))
+
+#### 1.3.4
+
+- [Added aggregations to response if requested](https://github.com/vrcmarcos/elasticmock/pull/15) (Thanks [@snakeye](https://github.com/snakeye))
+- [Implementing new methods for scrolling](https://github.com/vrcmarcos/elasticmock/pull/17) (Thanks [@tcatrain](https://github.com/tcatrain))
+
+#### 1.3.3
+
+- [Search: doc_type can be a list](https://github.com/vrcmarcos/elasticmock/pull/16) (Thanks [@garncarz](https://github.com/garncarz))
+- [Exclude tests package](https://github.com/vrcmarcos/elasticmock/pull/13) (Thanks [@jmlw](https://github.com/jmlw))
+- [Make the FakeElasticsearch __init__ signature match the one from Elasticsearch](https://github.com/vrcmarcos/elasticmock/pull/10) (Thanks [@xrmx](https://github.com/xrmx))
+- [Improve search and count](https://github.com/vrcmarcos/elasticmock/pull/7) (Thanks [@frivoire](https://github.com/frivoire))
+
+#### 1.3.2
+
+- **elasticmock**: Python 3 fixes (Thanks [@barseghyanartur](https://github.com/barseghyanartur))
+- **test**: Add information on testing (Thanks [@barseghyanartur](https://github.com/barseghyanartur))
+- **README.md**: Fixed typo (Thanks [@bowlofstew](https://github.com/bowlofstew))
+
+#### 1.3.1
+
+- **elasticmock**: Allow the same arguments to the mock that elasticsearch.Elasticsearch allows (Thanks [@mattbreeden](https://github.com/mattbreeden))
+
+#### 1.3.0:
+- **FakeElasticSearch**: Mocked **count** method (Thanks [@TheoResources](https://github.com/TheoResources))
+
+#### 1.2.0:
+- **FakeElasticSearch**: Mocked **suggest** method
+
+#### 1.1.1:
+- **elasticmock**: Changing the cleanup older FakeElasticSearch's instances order
+- **FakeElasticSearch.index**: Changing the method signature to correctly overrides the Elasticsearch.index method
+
+#### 1.1.0:
+- **FakeElasticSearch**: Mocked **delete** method
+
+#### 1.0.1:
+- **setup.py**: Fixed GitHub link
+
+#### 1.0.0:
+- **elasticmock**: Created **@elasticmock** decorator
+- **FakeElasticSearch**: Mocked **exists**, **get**, **get_source**, **index**, **info**, **search** and **ping** method
+
+%prep
+%autosetup -n ElasticMock-1.8.1
+
+%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-ElasticMock -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Tue Apr 11 2023 Python_Bot <Python_Bot@openeuler.org> - 1.8.1-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..2bc8bad
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+25006bf6fa46d98353c3849a3080bd23 ElasticMock-1.8.1.tar.gz