{ "info": { "author": "RedisLabs", "author_email": "oss@redislabs.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Topic :: Database" ], "description": "[![license](https://img.shields.io/github/license/RediSearch/redisearch-py.svg)](https://github.com/RediSearch/redisearch-py/blob/master/LICENSE)\n[![PyPI version](https://badge.fury.io/py/redisearch.svg)](https://badge.fury.io/py/redisearch)\n[![CircleCI](https://circleci.com/gh/RediSearch/redisearch-py/tree/master.svg?style=svg)](https://circleci.com/gh/RediSearch/redisearch-py/tree/master)\n[![GitHub issues](https://img.shields.io/github/release/RediSearch/redisearch-py.svg)](https://github.com/RediSearch/redisearch-py/releases/latest)\n[![Codecov](https://codecov.io/gh/RediSearch/redisearch-py/branch/master/graph/badge.svg)](https://codecov.io/gh/RediSearch/redisearch-py)\n[![Known Vulnerabilities](https://snyk.io/test/github/RediSearch/redisearch-py/badge.svg?targetFile=pyproject.toml)](https://snyk.io/test/github/RediSearch/redisearch-py?targetFile=pyproject.toml)\n[![Total alerts](https://img.shields.io/lgtm/alerts/g/RediSearch/redisearch-py.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/RediSearch/redisearch-py/alerts/)\n\n# RediSearch Python Client\n[![Forum](https://img.shields.io/badge/Forum-RediSearch-blue)](https://forum.redislabs.com/c/modules/redisearch/)\n[![Discord](https://img.shields.io/discord/697882427875393627?style=flat-square)](https://discord.gg/xTbqgTB)\n\n## Deprecation notice\n\nAs of [redis-py 4.0.0](https://pypi.org/project/redis/4.0.0) this library is deprecated. It's features have been merged into redis-py. Please either install it [from pypy](https://pypi.org/project/redis) or [the repo](https://github.com/redis/redis-py).\n\n--------------------------------\n\nThis is a Python search engine library that utilizes the [RediSearch Redis Module](http://redisearch.io) API.\n\nIt is the \"official\" client of RediSearch, and should be regarded as its canonical client implementation.\n\n## Features\n\nRediSearch is a source avaliable ([RSAL](https://raw.githubusercontent.com/RediSearch/RediSearch/master/LICENSE)), high performance search engine implemented as a [Redis Module](https://redis.io/topics/modules-intro).\nIt uses custom data types to allow fast, stable and feature rich full-text search inside Redis.\n\nThis client is a wrapper around the RediSearch API protocol, that allows you to utilize its features easily.\n\n### RediSearch's features include:\n\n* Full-Text indexing of multiple fields in documents.\n* Incremental indexing without performance loss.\n* Document ranking (provided manually by the user at index time) and field weights.\n* Auto-complete suggestions (with fuzzy prefix suggestions).\n* Exact Phrase Search.\n* Stemming based query expansion in [many languages](http://redisearch.io/Stemming/) (using [Snowball](http://snowballstem.org/)).\n* Limiting searches to specific document fields (up to 8 fields supported).\n* Numeric filters and ranges.\n* Automatically index existing HASH keys as documents.\n\nFor more details, visit [http://redisearch.io](http://redisearch.io)\n\n## Examples\n\n### Creating a client instance\n\nWhen you create a redisearch-py client instance, the only required argument\nis the name of the index.\n\n```py\nfrom redisearch import Client\n\nclient = Client(\"my-index\")\n```\n\nTo connect with a username and/or password, pass those options to the client\ninitializer.\n\n```py\nclient = Client(\"my-index\", password=\"my-password\")\n```\n\n### Using core Redis commands\n\nEvery instance of `Client` contains an instance of the redis-py `Client` as\nwell. Use this object to run core Redis commands.\n\n```py\nimport datetime\n\nfrom redisearch import Client\n\nSTART_TIME = datetime.datetime.now().strftime(\"%Y-%m-%d-%H:%M.%S\")\n\nclient = Client(\"my-index\")\n\nclient.redis.set(\"start-time\", START_TIME)\n```\n\n### Checking if a RediSearch index exists\n\nTo check if a RediSearch index exists, use the `FT.INFO` command and catch\nthe `ResponseError` raised if the index does not exist.\n\n```py\nfrom redis import ResponseError\nfrom redisearch import Client\n\nclient = Client(\"my-index\")\n\ntry:\n client.info()\nexcept ResponseError:\n # Index does not exist. We need to create it!\n```\n\n### Defining a search index\n\nUse an instance of `IndexDefinition` to define a search index. You only need\nto do this when you create an index.\n\nRediSearch indexes follow Hashes in your Redis databases by watching *key\nprefixes*. If a Hash whose key starts with one of the search index's\nconfigured key prefixes is added, updated, or deleted from Redis, RediSearch\nwill make those changes in the index. You configure a search index's key\nprefixes using the `prefix` parameter of the `IndexDefinition` initializer.\n\n**NOTE**: Once you create an index, RediSearch will continuously index these\nkeys when their Hashes change.\n\n`IndexDefinition` also takes a *schema*. The schema specifies which fields to\nindex from within the Hashes that the index follows. The field types are:\n\n* TextField\n* TagField\n* NumericField\n* GeoField\n\nFor more information on what these field types mean, consult the [RediSearch\ndocumentation](https://oss.redislabs.com/redisearch/Commands/#ftcreate) on\nthe `FT.CREATE` command.\n\nWith redisearch-py, the schema is an iterable of `Field` instances. Once you\nhave an `IndexDefinition` instance, you can create the instance by passing a\nschema iterable to the `create_index()` method.\n\n```py\nfrom redis import ResponseError\nfrom redisearch import Client, IndexDefinition, TextField\n\nSCHEMA = (\n TextField(\"title\", weight=5.0),\n TextField(\"body\")\n)\n\nclient = Client(\"my-index\")\n\ndefinition = IndexDefinition(prefix=['blog:'])\n\ntry:\n client.info()\nexcept ResponseError:\n # Index does not exist. We need to create it!\n client.create_index(SCHEMA, definition=definition)\n```\n\n### Indexing a document\n\nA RediSearch 2.0 index continually follows Hashes with the key prefixes you\ndefined, so if you want to add a document to the index, you only need to\ncreate a Hash with one of those prefixes.\n\n```py\n# Indexing a document with RediSearch 2.0.\ndoc = {\n 'title': 'RediSearch',\n 'body': 'Redisearch adds querying, indexing, and full-text search to Redis'\n}\nclient.redis.hset('doc:1', mapping=doc)\n```\n\nPast versions of RediSearch required that you call the `add_document()`\nmethod. This method is deprecated, but we include its usage here for\nreference.\n\n```py\n# Indexing a document for RediSearch 1.x\nclient.add_document(\n \"doc:2\",\n title=\"RediSearch\",\n body=\"Redisearch implements a search engine on top of redis\",\n)\n```\n\n### Querying\n\n#### Basic queries\n\nUse the `search()` method to perform basic full-text and field-specific\nsearches. This method doesn't take many of the options available to the\nRediSearch `FT.SEARCH` command -- read the section on building complex\nqueries later in this document for information on how to use those.\n\n```py\nres = client.search(\"evil wizards\")\n```\n#### Result objects\n\nResults are wrapped in a `Result` object that includes the number of results\nand a list of matching documents.\n\n```py\n>>> print(res.total)\n2\n>>> print(res.docs[0].title)\n\"Wizard Story 2: Evil Wizards Strike Back\"\n```\n\n#### Building complex queries\n\nYou can use the `Query` object to build complex queries:\n\n```py\nq = Query(\"evil wizards\").verbatim().no_content().with_scores().paging(0, 5)\nres = client.search(q)\n```\n\n For an explanation of these options, see the [RediSearch\n documentation](https://oss.redislabs.com/redisearch/Commands/#ftsearch) for\n the `FT.SEARCH` command.\n\n#### Query syntax\n\nThe default behavior of queries is to run a full-text search across all\n`TEXT` fields in the index for the intersection of all terms in the query.\n\nSo the example given in the \"Basic queries\" section of this README,\n`client.search(\"evil wizards\")`, run a full-text search for the intersection\nof \"evil\" and \"wizard\" in all `TEXT` fields.\n\nMany more types of queries are possible, however! The string you pass into\nthe `search()` method or `Query()` initializer has the full range of query\nsyntax available in RediSearch.\n\nFor example, a full-text search against a specific `TEXT` field in the index\nlooks like this:\n\n```py\n# Full-text search\nres = client.search(\"@title:evil wizards\")\n```\n\nFinding books published in 2020 or 2021 looks like this:\n\n```python\nclient.search(\"@published_year:[2020 2021]\")\n```\n\nTo learn more, see the [RediSearch\ndocumentation](https://oss.redislabs.com/redisearch/Query_Syntax/) on query\nsyntax.\n\n### Aggregations\n\nThis library contains a programmatic interface to run [aggregation\nqueries](https://oss.redislabs.com/redisearch/Aggregations/) with RediSearch.\n\n#### Making an aggregation query\n\nTo make an aggregation query, pass an instance of the `AggregateRequest`\nclass to the `search()` method of an instance of `Client`.\n\nFor example, here is what finding the most books published in a single year\nlooks like:\n\n```py\nfrom redisearch import Client\nfrom redisearch import reducers\nfrom redisearch.aggregation import AggregateRequest\n\nclient = Client('books-idx')\n\nrequest = AggregateRequest('*').group_by(\n '@published_year', reducers.count().alias(\"num_published\")\n).group_by(\n [], reducers.max(\"@num_published\").alias(\"max_books_published_per_year\")\n)\n\nresult = client.aggregate(request)\n```\n\n#### A redis-cli equivalent query\n\nThe aggregation query just given is equivalent to the following\n`FT.AGGREGATE` command entered directly into the redis-cli:\n\n```sql\nFT.AGGREGATE books-idx *\n GROUPBY 1 @published_year\n REDUCE COUNT 0 AS num_published\n GROUPBY 0\n REDUCE MAX 1 @num_published AS max_books_published_per_year\n```\n\n#### The AggregateResult object\n\nAggregation queries return an `AggregateResult` object that contains the rows\nreturned for the query and a cursor if you're using the [cursor\nAPI](https://oss.redislabs.com/redisearch/Aggregations/#cursor_api).\n\n```py\nfrom redisearch.aggregation import AggregateRequest, Asc\n\nrequest = AggregateRequest('*').group_by(\n ['@published_year'], reducers.avg('average_rating').alias('average_rating_for_year')\n).sort_by(\n Asc('@average_rating_for_year')\n).limit(\n 0, 10\n).filter('@published_year > 0')\n\n...\n\n\nIn [53]: resp = c.aggregate(request)\nIn [54]: resp.rows\nOut[54]:\n[['published_year', '1914', 'average_rating_for_year', '0'],\n ['published_year', '2009', 'average_rating_for_year', '1.39166666667'],\n ['published_year', '2011', 'average_rating_for_year', '2.046'],\n ['published_year', '2010', 'average_rating_for_year', '3.125'],\n ['published_year', '2012', 'average_rating_for_year', '3.41'],\n ['published_year', '1967', 'average_rating_for_year', '3.603'],\n ['published_year', '1970', 'average_rating_for_year', '3.71875'],\n ['published_year', '1966', 'average_rating_for_year', '3.72666666667'],\n ['published_year', '1927', 'average_rating_for_year', '3.77']]\n```\n\n#### Reducer functions\n\nNotice from the example that we used an object from the `reducers` module.\nSee the [RediSearch documentation](https://oss.redislabs.com/redisearch/Aggregations/#groupby_reducers)\nfor more examples of reducer functions you can use when grouping results.\n\nReducer functions include an `alias()` method that gives the result of the\nreducer a specific name. If you don't supply a name, RediSearch will generate\none.\n\n#### Grouping by zero, one, or multiple fields\n\nThe `group_by` statement can take a single field name as a string, or multiple\nfield names as a list of strings.\n\n```py\nAggregateRequest('*').group_by('@published_year', reducers.count())\n\nAggregateRequest('*').group_by(\n ['@published_year', '@average_rating'],\n reducers.count())\n```\n\nTo run a reducer function on every result from an aggregation query, pass an\nempty list to `group_by()`, which is equivalent to passing the option\n`GROUPBY 0` when writing an aggregation in the redis-cli.\n\n```py\nAggregateRequest('*').group_by([], reducers.max(\"@num_published\"))\n```\n\n**NOTE**: Aggregation queries require at least one `group_by()` method call.\n\n#### Sorting and limiting\n\nUsing an `AggregateRequest` instance, you can sort with the `sort_by()` method\nand limit with the `limit()` method.\n\nFor example, finding the average rating of books published each year, sorting\nby the average rating for the year, and returning only the first ten results:\n\n```py\nfrom redisearch import Client\nfrom redisearch.aggregation import AggregateRequest, Asc\n\nc = Client()\n\nrequest = AggregateRequest('*').group_by(\n ['@published_year'], reducers.avg('average_rating').alias('average_rating_for_year')\n).sort_by(\n Asc('@average_rating_for_year')\n).limit(0, 10)\n\nc.aggregate(request)\n```\n\n**NOTE**: The first option to `limit()` is a zero-based offset, and the second\noption is the number of results to return.\n\n#### Filtering\n\nUse filtering to reject results of an aggregation query after your reducer\nfunctions run. For example, calculating the average rating of books published\neach year and only returning years with an average rating higher than 3:\n\n```py\nfrom redisearch.aggregation import AggregateRequest, Asc\n\nreq = AggregateRequest('*').group_by(\n ['@published_year'], reducers.avg('average_rating').alias('average_rating_for_year')\n).sort_by(\n Asc('@average_rating_for_year')\n).filter('@average_rating_for_year > 3')\n```\n\n## Installing\n\n1. [Install RediSearch](http://redisearch.io/Quick_Start)\n2. Install the Python client:\n\n```sh\n$ pip install redisearch\n```\n\n## Developing\n\n1. Create a virtualenv to manage your python dependencies, and ensure it's active.\n ```virtualenv -v venv```\n2. Install [pypoetry](https://python-poetry.org/) to manage your dependencies.\n ```pip install --user poetry```\n3. Install dependencies.\n ```poetry install```\n\nNote: Due to an [interaction between](https://github.com/python-poetry/poetry/issues/4210) and python 3.10, you *may* need to run the following, if you receive a JSONError while installing packages.\n```\npoetry config experimental.new-installer false\n```\n\n## Testing\n\nTesting can easily be performed using using Docker.\nRun the following:\n\n```\nmake -C test/docker test PYTHON_VER=3\n```\n\n(Replace `PYTHON_VER=3` with `PYTHON_VER=2` to test with Python 2.7.)\n\nAlternatively, use the following procedure:\n\nFirst, run:\n\n```\nPYTHON_VER=3 ./test/test-setup.sh\n```\n\nThis will set up a Python virtual environment in `venv3` (or in `venv2` if `PYTHON_VER=2` is used).\n\nAfterwards, run RediSearch in a container as a daemon:\n\n```\ndocker run -d -p 6379:6379 redislabs/redisearch:2.0.0\n```\n\nFinally, invoke the virtual environment and run the tests:\n\n```\n. ./venv3/bin/activate\nREDIS_PORT=6379 python test/test.py\nREDIS_PORT=6379 python test/test_builder.py\n```\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "", "keywords": "Redis Search Extension", "license": "BSD-3-Clause", "maintainer": "", "maintainer_email": "", "name": "redisearch", "package_url": "https://pypi.org/project/redisearch/", "platform": "", "project_url": "https://pypi.org/project/redisearch/", "project_urls": { "repository": "https://github.com/RedisSearch/redisearch-py", "url": "https://redisearch.io" }, "release_url": "https://pypi.org/project/redisearch/2.1.1/", "requires_dist": [ "hiredis (>=2.0.0,<3.0.0); python_version >= \"3.6\" and python_version < \"4.0\"", "redis (==3.5.3)", "rejson (>=0.5.4,<0.6.0)", "six (>=1.16.0,<2.0.0)" ], "requires_python": ">=3.6.0,<4.0.0", "summary": "RedisSearch Python Client", "version": "2.1.1", "yanked": false, "yanked_reason": null }, "last_serial": 12047028, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "5f8efe7a1910ee318ca46b44f134f324", "sha256": "23a0ea515b02a93d5c5e6272df3b98132a6d205edd242773bcc3dc928fbf6088" }, "downloads": -1, "filename": "redisearch-0.1.tar.gz", "has_sig": false, "md5_digest": "5f8efe7a1910ee318ca46b44f134f324", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5050, "upload_time": "2017-01-10T13:57:05", "upload_time_iso_8601": "2017-01-10T13:57:05.586818Z", "url": "https://files.pythonhosted.org/packages/69/eb/01ee7f0a31eb8994e611dac971603c3fd404bfa8da0def454b377e7571bd/redisearch-0.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "9f07e413959e987d71361ccf48f7bbf5", "sha256": "49b1d128335709f19fc4247ad80cd2350bcc876adc53709712ac7a78f36a2131" }, "downloads": -1, "filename": "redisearch-0.1.1.tar.gz", "has_sig": false, "md5_digest": "9f07e413959e987d71361ccf48f7bbf5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5724, "upload_time": "2017-01-11T14:33:27", "upload_time_iso_8601": "2017-01-11T14:33:27.704193Z", "url": "https://files.pythonhosted.org/packages/34/a3/4ddc997811ccbd3ac4d7844f83990e6b51a2b5d30423150e044083ceab7f/redisearch-0.1.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2": [ { "comment_text": "", "digests": { "md5": "88cb76f7d0ab5842ac4fc9d83af337e5", "sha256": "2e3ebcf0d893a97b3708b99bd5440247b387ebf5eb6ee28cf7b3595f7f7b88c4" }, "downloads": -1, "filename": "redisearch-0.2.tar.gz", "has_sig": false, "md5_digest": "88cb76f7d0ab5842ac4fc9d83af337e5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7334, "upload_time": "2017-01-11T16:34:12", "upload_time_iso_8601": "2017-01-11T16:34:12.065415Z", "url": "https://files.pythonhosted.org/packages/9e/ed/83cbc4a3c9b298f0e6743d7c316a120360edc657a3bf0e0fdfc7f1b8845f/redisearch-0.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "027265147ab0ae62347b7b05877e91f5", "sha256": "4a25976fc91b8aa49413e7e8cb1a87772b16b7ea5c29e9b32f70e18f92a6905d" }, "downloads": -1, "filename": "redisearch-0.2.1.tar.gz", "has_sig": false, "md5_digest": "027265147ab0ae62347b7b05877e91f5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7531, "upload_time": "2017-01-13T18:22:01", "upload_time_iso_8601": "2017-01-13T18:22:01.154428Z", "url": "https://files.pythonhosted.org/packages/e4/a2/294e64e932ab7eb7f48ebb94c88162048c75761b880893044a0c1436ebd7/redisearch-0.2.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3": [ { "comment_text": "", "digests": { "md5": "ce3a8b4e767093513b737a1c1a53d531", "sha256": "e64e471d7c5704255afc5ad3cebd61ab64deadec7447bedce6e677c50d111d10" }, "downloads": -1, "filename": "redisearch-0.3.tar.gz", "has_sig": false, "md5_digest": "ce3a8b4e767093513b737a1c1a53d531", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8882, "upload_time": "2017-01-25T13:25:02", "upload_time_iso_8601": "2017-01-25T13:25:02.197709Z", "url": "https://files.pythonhosted.org/packages/18/ff/6391e3fe7d301ca7ad3a83371becd592061341384ec019a1bca42acf764a/redisearch-0.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4": [ { "comment_text": "", "digests": { "md5": "9b35697866224ac0a17042618c08532c", "sha256": "39fd1b718bd8fe8369a8e04b7a0bc65c76ac3356dbe66b10cb66efc44e0ecc87" }, "downloads": -1, "filename": "redisearch-0.4.tar.gz", "has_sig": false, "md5_digest": "9b35697866224ac0a17042618c08532c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9378, "upload_time": "2017-02-07T13:03:11", "upload_time_iso_8601": "2017-02-07T13:03:11.297628Z", "url": "https://files.pythonhosted.org/packages/13/d7/aa735be04bdcee6670c4d339fd19a82d809a7a78600290c31224282141d3/redisearch-0.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "42b1501ace9102b29013ea02bfbbdca5", "sha256": "f33bb1a3112dfac6f9d427e2ebdac69de97b8cf2ad274cd391cd593142a57921" }, "downloads": -1, "filename": "redisearch-0.4.1.tar.gz", "has_sig": false, "md5_digest": "42b1501ace9102b29013ea02bfbbdca5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9382, "upload_time": "2017-02-07T14:04:15", "upload_time_iso_8601": "2017-02-07T14:04:15.636010Z", "url": "https://files.pythonhosted.org/packages/7f/59/7d1abe61dcbc1261b3a4932d664132d2faa1d2dc39b030d54a743ecc2956/redisearch-0.4.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.5": [ { "comment_text": "", "digests": { "md5": "f88cd344e25cd01d882a0d2c2c2cfc65", "sha256": "98f35f9c79b3c788cb9c6b58a9716eb2bb511b7dbd090565b10db2d199d07a84" }, "downloads": -1, "filename": "redisearch-0.5.tar.gz", "has_sig": false, "md5_digest": "f88cd344e25cd01d882a0d2c2c2cfc65", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9908, "upload_time": "2017-03-02T10:10:40", "upload_time_iso_8601": "2017-03-02T10:10:40.980484Z", "url": "https://files.pythonhosted.org/packages/33/c5/69f806862a2ca9020129124970da2ccb6261ec5062137bec54a2d8e26069/redisearch-0.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.6": [ { "comment_text": "", "digests": { "md5": "ec1982a7ced8796b526d4429222d5b35", "sha256": "b7ba62603c3172ac3d02faefe8e03c4d5291a92cbb8f9c4c7a65be5f3605f69a" }, "downloads": -1, "filename": "redisearch-0.6.tar.gz", "has_sig": false, "md5_digest": "ec1982a7ced8796b526d4429222d5b35", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10128, "upload_time": "2017-06-18T09:35:16", "upload_time_iso_8601": "2017-06-18T09:35:16.916498Z", "url": "https://files.pythonhosted.org/packages/da/98/6cb3d1792fffb130da2ec799ac977d8110e67644ad66e34643c37d1723e3/redisearch-0.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "847b23da3c3e93da9774fcb35ec6f435", "sha256": "76c5d0e503560f7c55f2f33e9066c6f8fae9903128fb854e4674161bbab0c13d" }, "downloads": -1, "filename": "redisearch-0.6.1.tar.gz", "has_sig": false, "md5_digest": "847b23da3c3e93da9774fcb35ec6f435", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10404, "upload_time": "2017-06-26T12:36:01", "upload_time_iso_8601": "2017-06-26T12:36:01.704696Z", "url": "https://files.pythonhosted.org/packages/af/6c/7b1ec3bff6a220ad24ab5b4ba099a2a6ec116ae6baeae96f21fc6a5fe7d0/redisearch-0.6.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.6.2": [ { "comment_text": "", "digests": { "md5": "58ca2c6171982d374644d58e6ae7b060", "sha256": "aa27401c8f515d044b0ca84993cafbe5d167409329f5a0053298389d9294b9da" }, "downloads": -1, "filename": "redisearch-0.6.2.tar.gz", "has_sig": false, "md5_digest": "58ca2c6171982d374644d58e6ae7b060", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10908, "upload_time": "2017-07-17T10:32:54", "upload_time_iso_8601": "2017-07-17T10:32:54.778952Z", "url": "https://files.pythonhosted.org/packages/e5/49/1c22874cf826617394bdcff531ffcfc6b0b4d8b11fcf2782e90b7cac47e5/redisearch-0.6.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.6.3": [ { "comment_text": "", "digests": { "md5": "016de530201bcd8225c6d7c3fc48cdb7", "sha256": "48fdcbb5041893cd58ab75be399034db8bceee48daf70bd591571aabcdf779cd" }, "downloads": -1, "filename": "redisearch-0.6.3.tar.gz", "has_sig": false, "md5_digest": "016de530201bcd8225c6d7c3fc48cdb7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11185, "upload_time": "2017-08-13T14:01:02", "upload_time_iso_8601": "2017-08-13T14:01:02.222582Z", "url": "https://files.pythonhosted.org/packages/e9/d2/807c5db7efd99a769279e79af8ebab707631b6d270f1b2780e16f59ba276/redisearch-0.6.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "c66b176168fbff323b32498879824906", "sha256": "901b4ec95a30b8c1b21cc5dc9df7cdc0857c2aff40de39ace55b0e162ab946b3" }, "downloads": -1, "filename": "redisearch-0.7.0.tar.gz", "has_sig": false, "md5_digest": "c66b176168fbff323b32498879824906", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12489, "upload_time": "2017-11-12T10:22:24", "upload_time_iso_8601": "2017-11-12T10:22:24.717874Z", "url": "https://files.pythonhosted.org/packages/c4/b9/856e7a16722e1c3a962655b820bfc201ba18b292e736b4bd7392166ce40e/redisearch-0.7.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "c0619cdef723faf8ab494a14ec561a59", "sha256": "677657e4f0df130a8864b956f58286bab14ec6f8397727f87a1ea58974e0a56c" }, "downloads": -1, "filename": "redisearch-0.7.1.tar.gz", "has_sig": false, "md5_digest": "c0619cdef723faf8ab494a14ec561a59", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17321, "upload_time": "2018-05-07T19:57:38", "upload_time_iso_8601": "2018-05-07T19:57:38.102582Z", "url": "https://files.pythonhosted.org/packages/8b/86/27afb885aac7849f221f72153ecc46f6b2084ad476e459f1c818aa932ddc/redisearch-0.7.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "684721684f7ca904ceee1e6400f7adcd", "sha256": "63c37d709249920b68a82d992b00b22301aaa1a665078de9fd8c3f7c950bdfe4" }, "downloads": -1, "filename": "redisearch-0.8.0.tar.gz", "has_sig": false, "md5_digest": "684721684f7ca904ceee1e6400f7adcd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21741, "upload_time": "2019-10-29T15:01:49", "upload_time_iso_8601": "2019-10-29T15:01:49.832908Z", "url": "https://files.pythonhosted.org/packages/ac/6c/d04946eeb11637189d214e6bd86a96109ed27c5423dc7cad43d5095b83f4/redisearch-0.8.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "42c90b7d9aa1e7cd16498deb177a353f", "sha256": "7553bf267a40e6493395b904458202424e29beae638084fad710f02b04f2f3e6" }, "downloads": -1, "filename": "redisearch-0.8.1.tar.gz", "has_sig": false, "md5_digest": "42c90b7d9aa1e7cd16498deb177a353f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24298, "upload_time": "2019-12-26T08:43:02", "upload_time_iso_8601": "2019-12-26T08:43:02.810996Z", "url": "https://files.pythonhosted.org/packages/7d/74/07a30c02fb06b3f7c5a108713abf9179f89a2a641f79667ccf970a544a18/redisearch-0.8.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.8.2": [ { "comment_text": "", "digests": { "md5": "5d98116a2353eb01030f7c66bdbad8f3", "sha256": "36d1de207a3d5c61acf9612dc95c3dd6231d4e672ef0e59e28b277060a1c4afa" }, "downloads": -1, "filename": "redisearch-0.8.2.tar.gz", "has_sig": false, "md5_digest": "5d98116a2353eb01030f7c66bdbad8f3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24305, "upload_time": "2020-01-05T15:05:52", "upload_time_iso_8601": "2020-01-05T15:05:52.135832Z", "url": "https://files.pythonhosted.org/packages/6d/d8/6fc12a1e8ea6c67eec0ecd451e14b30b7e08c62d48da56083c4ccd76c58a/redisearch-0.8.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.8.3": [ { "comment_text": "", "digests": { "md5": "a86ab0c51cb65fee5bfd5e8f59f3075b", "sha256": "19a51815c04b8abded18fd314264a28102349d4795567c0cc363108ab0f83065" }, "downloads": -1, "filename": "redisearch-0.8.3.tar.gz", "has_sig": false, "md5_digest": "a86ab0c51cb65fee5bfd5e8f59f3075b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24323, "upload_time": "2020-01-05T15:21:35", "upload_time_iso_8601": "2020-01-05T15:21:35.486967Z", "url": "https://files.pythonhosted.org/packages/7a/72/096baaf68b5b96aaf264548a713a81c896909c210e703315b584834c83ec/redisearch-0.8.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.0": [ { "comment_text": "", "digests": { "md5": "db5b16a12f66f0553ff302bfe0eba2e0", "sha256": "380407aa41666f60a698ae7cc0de6efc3bd0b132a949ab7c17d491abd890bd51" }, "downloads": -1, "filename": "redisearch-0.9.0.tar.gz", "has_sig": false, "md5_digest": "db5b16a12f66f0553ff302bfe0eba2e0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2100513, "upload_time": "2020-03-05T13:29:27", "upload_time_iso_8601": "2020-03-05T13:29:27.523682Z", "url": "https://files.pythonhosted.org/packages/b0/3e/d71a9770fc397b5ac24d636ae46bbf03899bc82a5259e56b9e2c0c452b00/redisearch-0.9.0.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "925b4019757fcbe352ee215bc6da360d", "sha256": "30a4602299ae3c0d2c37f71c5c8ac09b07f7e8ca839cd789e3a6d1a394268948" }, "downloads": -1, "filename": "redisearch-1.0.0.tar.gz", "has_sig": false, "md5_digest": "925b4019757fcbe352ee215bc6da360d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2102074, "upload_time": "2020-07-10T12:55:22", "upload_time_iso_8601": "2020-07-10T12:55:22.087834Z", "url": "https://files.pythonhosted.org/packages/7c/c3/1b540027b6c0cba506414fc34f04018971cf956b9dad7295bf259eb41446/redisearch-1.0.0.tar.gz", "yanked": false, "yanked_reason": null } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "502da20e312be97c82da257694b540e5", "sha256": "49cb5ed2834e4be331434c56bb66121b6e89a768dc0554f7b4d75f6e3902abce" }, "downloads": -1, "filename": "redisearch-2.0.0.tar.gz", "has_sig": false, "md5_digest": "502da20e312be97c82da257694b540e5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2105807, "upload_time": "2020-10-22T17:20:24", "upload_time_iso_8601": "2020-10-22T17:20:24.678649Z", "url": "https://files.pythonhosted.org/packages/8c/83/3b69da8c935918aef761d4c2ccdd55b6e92b0cff5063618305597b1ed4a0/redisearch-2.0.0.tar.gz", "yanked": false, "yanked_reason": null } ], "2.1.1": [ { "comment_text": "", "digests": { "md5": "8ce7486f3e0999ac3f0d326e060f2e8c", "sha256": "6bbfb6a199222b5398a34b1af8392a8fae5efcb6cc860f52bfd3814cd0d216a2" }, "downloads": -1, "filename": "redisearch-2.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "8ce7486f3e0999ac3f0d326e060f2e8c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0,<4.0.0", "size": 26790, "upload_time": "2021-11-17T10:43:40", "upload_time_iso_8601": "2021-11-17T10:43:40.045797Z", "url": "https://files.pythonhosted.org/packages/ba/7d/2ae672b176e675519c0f5d2cb46f023e37be3754a59f7307756e3fdf7552/redisearch-2.1.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "fc86a18e19c78af69721788f23210099", "sha256": "575acd5a13a107ff005d4572a136b503b12fa5bf26afc37bd11f6a923f1ec73c" }, "downloads": -1, "filename": "redisearch-2.1.1.tar.gz", "has_sig": false, "md5_digest": "fc86a18e19c78af69721788f23210099", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0,<4.0.0", "size": 29652, "upload_time": "2021-11-17T10:43:41", "upload_time_iso_8601": "2021-11-17T10:43:41.720885Z", "url": "https://files.pythonhosted.org/packages/a7/40/f0fe3b7d6af6d63a58efa40a7aa62dbc5684249a8ad7a6d6f46c695724de/redisearch-2.1.1.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8ce7486f3e0999ac3f0d326e060f2e8c", "sha256": "6bbfb6a199222b5398a34b1af8392a8fae5efcb6cc860f52bfd3814cd0d216a2" }, "downloads": -1, "filename": "redisearch-2.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "8ce7486f3e0999ac3f0d326e060f2e8c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0,<4.0.0", "size": 26790, "upload_time": "2021-11-17T10:43:40", "upload_time_iso_8601": "2021-11-17T10:43:40.045797Z", "url": "https://files.pythonhosted.org/packages/ba/7d/2ae672b176e675519c0f5d2cb46f023e37be3754a59f7307756e3fdf7552/redisearch-2.1.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "fc86a18e19c78af69721788f23210099", "sha256": "575acd5a13a107ff005d4572a136b503b12fa5bf26afc37bd11f6a923f1ec73c" }, "downloads": -1, "filename": "redisearch-2.1.1.tar.gz", "has_sig": false, "md5_digest": "fc86a18e19c78af69721788f23210099", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0,<4.0.0", "size": 29652, "upload_time": "2021-11-17T10:43:41", "upload_time_iso_8601": "2021-11-17T10:43:41.720885Z", "url": "https://files.pythonhosted.org/packages/a7/40/f0fe3b7d6af6d63a58efa40a7aa62dbc5684249a8ad7a6d6f46c695724de/redisearch-2.1.1.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }