{
"info": {
"author": "Artur Barseghyan",
"author_email": "artur.barseghyan@gmail.com",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Topic :: Software Development :: Libraries"
],
"description": "================\ngraphene-elastic\n================\n`Elasticsearch (DSL) `__\nintegration for `Graphene `__.\n\n.. image:: https://img.shields.io/pypi/v/graphene-elastic.svg\n :target: https://pypi.python.org/pypi/graphene-elastic\n :alt: PyPI Version\n\n.. image:: https://img.shields.io/pypi/pyversions/graphene-elastic.svg\n :target: https://pypi.python.org/pypi/graphene-elastic/\n :alt: Supported Python versions\n\n.. image:: https://travis-ci.org/barseghyanartur/graphene-elastic.svg?branch=master\n :target: https://travis-ci.org/barseghyanartur/graphene-elastic\n :alt: Build Status\n\n.. image:: https://readthedocs.org/projects/graphene-elastic/badge/?version=latest\n :target: http://graphene-elastic.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n\n.. image:: https://img.shields.io/badge/license-GPL--2.0--only%20OR%20LGPL--2.1--or--later-blue.svg\n :target: https://github.com/barseghyanartur/graphene-elastic/#License\n :alt: GPL-2.0-only OR LGPL-2.1-or-later\n\n.. image:: https://coveralls.io/repos/github/barseghyanartur/graphene-elastic/badge.svg?branch=master\n :target: https://coveralls.io/github/barseghyanartur/graphene-elastic?branch=master\n :alt: Coverage\n\n.. note::\n\n Project status is alpha.\n\nPrerequisites\n=============\n- Graphene 2.x. *Support for Graphene 1.x is not planned, but might be considered.*\n- Python 3.6, 3.7. *Support for Python 2 is not intended.*\n- Elasticsearch 6.x, 7.x. *Support for Elasticsearch 5.x is not intended.*\n\nMain features and highlights\n============================\n- Implemented ``ElasticsearchConnectionField`` and ``ElasticsearchObjectType``\n are the core classes to work with ``graphene``.\n- Pluggable backends for searching, filtering, ordering, etc. Don't like\n existing ones? Override, extend or write your own.\n- Search backend.\n- Filter backend.\n- Ordering backend.\n- Pagination.\n- Highlighting backend.\n- Source filter backend.\n- Faceted search backend (including global aggregations).\n- Post filter backend.\n\nSee the `Road-map`_ for what's yet planned to implemented.\n\nDo you need a similar tool for Django REST Framework? Check\n`django-elasticsearch-dsl-drf\n`__.\n\nDocumentation\n=============\nDocumentation is available on `Read the Docs\n`_.\n\nInstallation\n============\nInstall latest stable version from PyPI:\n\n.. code-block:: bash\n\n pip install graphene-elastic\n\nOr latest development version from GitHub:\n\n.. code-block:: bash\n\n pip install https://github.com/barseghyanartur/graphene-elastic/archive/master.zip\n\nExamples\n========\nInstall requirements\n--------------------\n.. code-block:: sh\n\n pip install -r requirements.txt\n\nPopulate sample data\n--------------------\nThe following command will create indexes for ``User`` and ``Post`` documents\nand populate them with sample data:\n\n.. code-block:: sh\n\n ./scripts/populate_elasticsearch_data.sh\n\nSample document definition\n--------------------------\n*search_index/documents/post.py*\n\nSee `examples/search_index/documents/post.py\n`_\nfor full example.\n\n.. code-block:: python\n\n import datetime\n from elasticsearch_dsl import (\n Boolean,\n Date,\n Document,\n InnerDoc,\n Keyword,\n Nested,\n Text,\n Integer,\n )\n\n class Comment(InnerDoc):\n\n author = Text(fields={'raw': Keyword()})\n content = Text(analyzer='snowball')\n created_at = Date()\n\n def age(self):\n return datetime.datetime.now() - self.created_at\n\n\n class Post(Document):\n\n title = Text(\n fields={'raw': Keyword()}\n )\n content = Text()\n created_at = Date()\n published = Boolean()\n category = Text(\n fields={'raw': Keyword()}\n )\n comments = Nested(Comment)\n tags = Text(\n analyzer=html_strip,\n fields={'raw': Keyword(multi=True)},\n multi=True\n )\n num_views = Integer()\n\n class Index:\n name = 'blog_post'\n settings = {\n 'number_of_shards': 1,\n 'number_of_replicas': 1,\n 'blocks': {'read_only_allow_delete': None},\n }\n\nSample apps\n-----------\nSample Flask app\n~~~~~~~~~~~~~~~~\n**Run the sample Flask app:**\n\n.. code-block:: sh\n\n ./scripts/run_flask.sh\n\n**Open Flask graphiql client**\n\n.. code-block:: text\n\n http://127.0.0.1:8001/graphql\n\nSample Django app\n~~~~~~~~~~~~~~~~~\n**Run the sample Django app:**\n\n.. code-block:: sh\n\n ./scripts/run_django.sh runserver\n\n**Open Django graphiql client**\n\n.. code-block:: text\n\n http://127.0.0.1:8000/graphql\n\nConnectionField example\n~~~~~~~~~~~~~~~~~~~~~~~\nConnectionField is the most flexible and feature rich solution you have. It\nuses filter backends which you can tie to your needs the way you want in a\ndeclarative manner.\n\n**Sample schema definition**\n\n.. code-block:: python\n\n import graphene\n from graphene_elastic import (\n ElasticsearchObjectType,\n ElasticsearchConnectionField,\n )\n from graphene_elastic.filter_backends import (\n FilteringFilterBackend,\n SearchFilterBackend,\n HighlightFilterBackend,\n OrderingFilterBackend,\n DefaultOrderingFilterBackend,\n )\n from graphene_elastic.constants import (\n LOOKUP_FILTER_PREFIX,\n LOOKUP_FILTER_TERM,\n LOOKUP_FILTER_TERMS,\n LOOKUP_FILTER_WILDCARD,\n LOOKUP_QUERY_EXCLUDE,\n LOOKUP_QUERY_IN,\n )\n\n # Object type definition\n class Post(ElasticsearchObjectType):\n\n class Meta(object):\n document = PostDocument\n interfaces = (Node,)\n filter_backends = [\n FilteringFilterBackend,\n SearchFilterBackend,\n HighlightFilterBackend,\n OrderingFilterBackend,\n DefaultOrderingFilterBackend,\n ]\n\n # For `FilteringFilterBackend` backend\n filter_fields = {\n # The dictionary key (in this case `title`) is the name of\n # the corresponding GraphQL query argument. The dictionary\n # value could be simple or complex structure (in this case\n # complex). The `field` key points to the `title.raw`, which\n # is the field name in the Elasticsearch document\n # (`PostDocument`). Since `lookups` key is provided, number\n # of lookups is limited to the given set, while term is the\n # default lookup (as specified in `default_lookup`).\n 'title': {\n 'field': 'title.raw',\n # Available lookups\n 'lookups': [\n LOOKUP_FILTER_TERM,\n LOOKUP_FILTER_TERMS,\n LOOKUP_FILTER_PREFIX,\n LOOKUP_FILTER_WILDCARD,\n LOOKUP_QUERY_IN,\n LOOKUP_QUERY_EXCLUDE,\n ],\n # Default lookup\n 'default_lookup': LOOKUP_FILTER_TERM,\n },\n\n # The dictionary key (in this case `category`) is the name of\n # the corresponding GraphQL query argument. Since no lookups\n # or default_lookup is provided, defaults are used (all lookups\n # available, term is the default lookup). The dictionary value\n # (in this case `category.raw`) is the field name in the\n # Elasticsearch document (`PostDocument`).\n 'category': 'category.raw',\n\n # The dictionary key (in this case `tags`) is the name of\n # the corresponding GraphQL query argument. Since no lookups\n # or default_lookup is provided, defaults are used (all lookups\n # available, term is the default lookup). The dictionary value\n # (in this case `tags.raw`) is the field name in the\n # Elasticsearch document (`PostDocument`).\n 'tags': 'tags.raw',\n\n # The dictionary key (in this case `num_views`) is the name of\n # the corresponding GraphQL query argument. Since no lookups\n # or default_lookup is provided, defaults are used (all lookups\n # available, term is the default lookup). The dictionary value\n # (in this case `num_views`) is the field name in the\n # Elasticsearch document (`PostDocument`).\n 'num_views': 'num_views',\n }\n\n # For `SearchFilterBackend` backend\n search_fields = {\n 'title': {'boost': 4},\n 'content': {'boost': 2},\n 'category': None,\n }\n\n # For `OrderingFilterBackend` backend\n ordering_fields = {\n # The dictionary key (in this case `tags`) is the name of\n # the corresponding GraphQL query argument. The dictionary\n # value (in this case `tags.raw`) is the field name in the\n # Elasticsearch document (`PostDocument`).\n 'title': 'title.raw',\n\n # The dictionary key (in this case `created_at`) is the name of\n # the corresponding GraphQL query argument. The dictionary\n # value (in this case `created_at`) is the field name in the\n # Elasticsearch document (`PostDocument`).\n 'created_at': 'created_at',\n\n # The dictionary key (in this case `num_views`) is the name of\n # the corresponding GraphQL query argument. The dictionary\n # value (in this case `num_views`) is the field name in the\n # Elasticsearch document (`PostDocument`).\n 'num_views': 'num_views',\n }\n\n # For `DefaultOrderingFilterBackend` backend\n ordering_defaults = (\n '-num_views', # Field name in the Elasticsearch document\n 'title.raw', # Field name in the Elasticsearch document\n )\n\n # For `HighlightFilterBackend` backend\n highlight_fields = {\n 'title': {\n 'enabled': True,\n 'options': {\n 'pre_tags': [\"\"],\n 'post_tags': [\"\"],\n }\n },\n 'content': {\n 'options': {\n 'fragment_size': 50,\n 'number_of_fragments': 3\n }\n },\n 'category': {},\n }\n\n # Query definition\n class Query(graphene.ObjectType):\n all_post_documents = ElasticsearchConnectionField(Post)\n\n # Schema definition\n schema = graphene.Schema(query=Query)\n\nFilter\n^^^^^^\n\nSample queries\n++++++++++++++\n\nSince we didn't specify any lookups on `category`, by default all lookups\nare available and the default lookup would be ``term``. Note, that in the\n``{value:\"Elastic\"}`` part, the ``value`` stands for default lookup, whatever\nit has been set to.\n\n.. code-block:: javascript\n\n query PostsQuery {\n allPostDocuments(filter:{category:{value:\"Elastic\"}}) {\n edges {\n node {\n id\n title\n category\n content\n createdAt\n comments\n }\n }\n }\n }\n\nBut, we could use another lookup (in example below - ``terms``). Note, that\nin the ``{terms:[\"Elastic\", \"Python\"]}`` part, the ``terms`` is the lookup\nname.\n\n.. code-block:: javascript\n\n query PostsQuery {\n allPostDocuments(\n filter:{category:{terms:[\"Elastic\", \"Python\"]}}\n ) {\n edges {\n node {\n id\n title\n category\n content\n createdAt\n comments\n }\n }\n }\n }\n\nOr apply a ``gt`` (``range``) query in addition to filtering:\n\n.. code-block:: javascript\n\n {\n allPostDocuments(filter:{\n category:{term:\"Python\"},\n numViews:{gt:\"700\"}\n }) {\n edges {\n node {\n category\n title\n comments\n numViews\n }\n }\n }\n }\n\nImplemented filter lookups\n++++++++++++++++++++++++++\nThe following lookups are available:\n\n- ``contains``\n- ``ends_with`` (or ``endsWith`` for camelCase)\n- ``exclude``\n- ``exists``\n- ``gt``\n- ``gte``\n- ``in``\n- ``is_null`` (or ``isNull`` for camelCase)\n- ``lt``\n- ``lte``\n- ``prefix``\n- ``range``\n- ``starts_with`` (or ``startsWith`` for camelCase)\n- ``term``\n- ``terms``\n- ``wildcard``\n\nSee `dedicated documentation on filter lookups\n`__ for\nmore information.\n\nSearch\n^^^^^^\nSearch in all fields:\n\n.. code-block:: javascript\n\n query {\n allPostDocuments(\n search:{query:\"Release Box\"}\n ) {\n edges {\n node {\n category\n title\n content\n }\n }\n }\n }\n\nSearch in specific fields:\n\n.. code-block:: javascript\n\n query {\n allPostDocuments(\n search:{\n title:{value:\"Release\", boost:2},\n content:{value:\"Box\"}\n }\n ) {\n edges {\n node {\n category\n title\n content\n }\n }\n }\n }\n\nOrdering\n^^^^^^^^\nPossible choices are ``ASC`` and ``DESC``.\n\n.. code-block:: javascript\n\n query {\n allPostDocuments(\n filter:{category:{term:\"Photography\"}},\n ordering:{title:ASC}\n ) {\n edges {\n node {\n category\n title\n content\n numViews\n tags\n }\n }\n }\n }\n\nPagination\n^^^^^^^^^^\nThe ``first``, ``last``, ``before`` and ``after`` arguments are supported.\nBy default number of results is limited to 100.\n\n.. code-block:: javascript\n\n query {\n allPostDocuments(first:12) {\n pageInfo {\n startCursor\n endCursor\n hasNextPage\n hasPreviousPage\n }\n edges {\n cursor\n node {\n category\n title\n content\n numViews\n }\n }\n }\n }\n\nHighlighting\n^^^^^^^^^^^^\nSimply, list the fields you want to highlight. This works only in combination\nwith search.\n\n.. code-block:: javascript\n\n query {\n allPostDocuments(\n search:{content:{value:\"alice\"}, title:{value:\"alice\"}},\n highlight:[category, content]\n ) {\n edges {\n node {\n title\n content\n highlight\n }\n cursor\n }\n }\n }\n\nRoad-map\n========\nRoad-map and development plans.\n\nThis package was designed after `django-elasticsearch-dsl-drf\n`__.\nIt's intended to offer similar functionality in ``graphene-elastic`` (this\npackage).\n\nLots of features are planned to be released in the upcoming Beta releases:\n\n- Suggester backend.\n- Nested backend.\n- Geo-spatial backend.\n- Filter lookup ``geo_bounding_box`` (or ``geoBoundingBox`` for camelCase).\n- Filter lookup ``geo_distance`` (or ``geoDistance`` for camelCase).\n- Filter lookup ``geo_polygon`` (or ``geoPolygon`` for camelCase).\n- More-like-this backend.\n- Complex search backends, such as Simple query search.\n\nStay tuned or reach out if you want to help.\n\nTesting\n=======\nProject is covered with tests.\n\nRunning tests\n-------------\nBy defaults tests are executed against the Elasticsearch 7.x.\n\n**Run Elasticsearch 7.x with Docker**\n\n.. code-block:: bash\n\n docker-compose up elasticsearch\n\n**Install test requirements**\n\n.. code-block:: sh\n\n pip install -r requirements/test.txt\n\nTo test with all supported Python versions type:\n\n.. code-block:: sh\n\n tox\n\nTo test against specific environment, type:\n\n.. code-block:: sh\n\n tox -e py37\n\nTo test just your working environment type:\n\n.. code-block:: sh\n\n ./runtests.py\n\nTo run a single test module in your working environment type:\n\n.. code-block:: sh\n\n ./runtests.py src/graphene_elastic/tests/test_filter_backend.py\n\nTo run a single test class in a given test module in your working environment\ntype:\n\n.. code-block:: sh\n\n ./runtests.py src/graphene_elastic/tests/test_filter_backend.py::FilterBackendElasticTestCase\n\nTesting with Docker\n-------------------\n.. code-block:: sh\n\n docker-compose -f docker-compose.yml -f docker-compose-test.yml up --build test\n\nDebugging\n=========\nFor development purposes, you could use the flask app (easy to debug). Standard\n``pdb`` works (``import pdb; pdb.set_trace()``). If ``ipdb`` does not work\nwell for you, use ``ptpdb``.\n\nWriting documentation\n=====================\nKeep the following hierarchy.\n\n.. code-block:: text\n\n =====\n title\n =====\n\n header\n ======\n\n sub-header\n ----------\n\n sub-sub-header\n ~~~~~~~~~~~~~~\n\n sub-sub-sub-header\n ^^^^^^^^^^^^^^^^^^\n\n sub-sub-sub-sub-header\n ++++++++++++++++++++++\n\n sub-sub-sub-sub-sub-header\n **************************\n\nLicense\n=======\nGPL-2.0-only OR LGPL-2.1-or-later\n\nSupport\n=======\nFor any issues contact me at the e-mail given in the `Author`_ section.\n\nAuthor\n======\nArtur Barseghyan \n\n\n",
"description_content_type": "",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/barseghyanartur/graphene-elastic",
"keywords": "api graphql protocol rest relay graphene elasticsearch elasticsearch-dsl",
"license": "GPL 2.0/LGPL 2.1",
"maintainer": "",
"maintainer_email": "",
"name": "graphene-elastic",
"package_url": "https://pypi.org/project/graphene-elastic/",
"platform": "",
"project_url": "https://pypi.org/project/graphene-elastic/",
"project_urls": {
"Homepage": "https://github.com/barseghyanartur/graphene-elastic"
},
"release_url": "https://pypi.org/project/graphene-elastic/0.6/",
"requires_dist": [
"graphene (<3,>=2.1.3)",
"elasticsearch (>=6.0)",
"elasticsearch-dsl (>=6.0)",
"singledispatch (>=3.4.0.3)",
"iso8601 (>=0.1.12)"
],
"requires_python": ">=3.6",
"summary": "Graphene Elasticsearch (DSL) integration",
"version": "0.6"
},
"last_serial": 5957519,
"releases": {
"0.0.10": [
{
"comment_text": "",
"digests": {
"md5": "3229d3f4ec2498c3b8a4e66d2a4d7c80",
"sha256": "f3363c4e0e16296247e492a2210f101233c75885f9a857965489ca4184507454"
},
"downloads": -1,
"filename": "graphene_elastic-0.0.10-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "3229d3f4ec2498c3b8a4e66d2a4d7c80",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=2.7",
"size": 104410,
"upload_time": "2019-09-03T22:34:29",
"url": "https://files.pythonhosted.org/packages/0b/72/fc43bb78e4a6c936682321c269838825bee3529852b1181237f3e0850390/graphene_elastic-0.0.10-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "1c833610503e1ec04ddeac7401ff672e",
"sha256": "44ff470bad5d52e71ebc99aa3e24f16c66952e96cbbd70541041cd76d5f5233d"
},
"downloads": -1,
"filename": "graphene-elastic-0.0.10.tar.gz",
"has_sig": false,
"md5_digest": "1c833610503e1ec04ddeac7401ff672e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=2.7",
"size": 73825,
"upload_time": "2019-09-03T22:34:36",
"url": "https://files.pythonhosted.org/packages/94/26/6ee6d4e77f76757d0b9ab56804f44da1d82393096ecc75f52a99245a7454/graphene-elastic-0.0.10.tar.gz"
}
],
"0.0.11": [
{
"comment_text": "",
"digests": {
"md5": "e205d2827d6c30ae1cf6c7f59c4cec87",
"sha256": "a5636004f9693ca0881b49ac4be62da7c2f30c92548173f2118ad202667516dc"
},
"downloads": -1,
"filename": "graphene_elastic-0.0.11-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "e205d2827d6c30ae1cf6c7f59c4cec87",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=2.7",
"size": 104669,
"upload_time": "2019-09-04T22:42:12",
"url": "https://files.pythonhosted.org/packages/d8/68/397a9361376f5bec86a376a04c1804b3ba751121f4b7050ec189475441ce/graphene_elastic-0.0.11-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "393ac5f47621d69e488338a3d3d4977e",
"sha256": "dcb8c54be6a57259a9b82a88c00e4e3a47e1e09a1fa1ce9328a1b06fba03c02a"
},
"downloads": -1,
"filename": "graphene-elastic-0.0.11.tar.gz",
"has_sig": false,
"md5_digest": "393ac5f47621d69e488338a3d3d4977e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=2.7",
"size": 74646,
"upload_time": "2019-09-04T22:42:15",
"url": "https://files.pythonhosted.org/packages/18/e1/0d1bb696ae431b12b7cd0c7a303b91fa84ae9656d7657c689b7563a9fe2e/graphene-elastic-0.0.11.tar.gz"
}
],
"0.0.12": [
{
"comment_text": "",
"digests": {
"md5": "86d2ba0a87b10d9fa73aeaba85d59850",
"sha256": "5c54c272459791ecba53c3ab6db66a25af69b7a2be9517c482406fe02e5108a7"
},
"downloads": -1,
"filename": "graphene_elastic-0.0.12-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "86d2ba0a87b10d9fa73aeaba85d59850",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=2.7",
"size": 105382,
"upload_time": "2019-09-05T23:35:37",
"url": "https://files.pythonhosted.org/packages/56/39/043c1eeb35a13534edb52daf1e5fd6e358cfe591bfbec4e8c681c8dbe1c4/graphene_elastic-0.0.12-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "3c213e3710a7a18101945a73283440c3",
"sha256": "91e125f2b616654e60f04b200175eaf82eb2f988803e735ad1ca2869ac13b707"
},
"downloads": -1,
"filename": "graphene-elastic-0.0.12.tar.gz",
"has_sig": false,
"md5_digest": "3c213e3710a7a18101945a73283440c3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=2.7",
"size": 75215,
"upload_time": "2019-09-05T23:35:41",
"url": "https://files.pythonhosted.org/packages/ed/9d/bd0acee4ff1978fd114a388417d50328dca1e12bd3ae292e7035b2121085/graphene-elastic-0.0.12.tar.gz"
}
],
"0.0.13": [
{
"comment_text": "",
"digests": {
"md5": "68f00e4ba51c2d9f05c9bec2de405432",
"sha256": "02d894595d012814efa90d9efa4e1e05c3b5edbb267fee240a94acd56be58b70"
},
"downloads": -1,
"filename": "graphene_elastic-0.0.13-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "68f00e4ba51c2d9f05c9bec2de405432",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=2.7",
"size": 105495,
"upload_time": "2019-09-06T23:05:19",
"url": "https://files.pythonhosted.org/packages/3c/39/8ac9ccd15626c3b6815fa9029082adaddd6a6257c038e5e1b0b3ff3b5097/graphene_elastic-0.0.13-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "ff6483d7ebf1e69bf0a0b6099ffc693e",
"sha256": "762a609bfb12df40bf43abb552e78fad16c992e5e967a00ffa7ae3284edeefe7"
},
"downloads": -1,
"filename": "graphene-elastic-0.0.13.tar.gz",
"has_sig": false,
"md5_digest": "ff6483d7ebf1e69bf0a0b6099ffc693e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=2.7",
"size": 75796,
"upload_time": "2019-09-06T23:05:21",
"url": "https://files.pythonhosted.org/packages/91/c9/6617f675aaee94cfc7ff4190c88ba5aca3e232592830c6be7440df85b5bc/graphene-elastic-0.0.13.tar.gz"
}
],
"0.0.4": [
{
"comment_text": "",
"digests": {
"md5": "7f718c0f2722045da1f9072ef76c7dc5",
"sha256": "18e187e9bb86e5aa4cd123e616c275849b5071407921a1d3b291ce607847e9c6"
},
"downloads": -1,
"filename": "graphene_elastic-0.0.4-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "7f718c0f2722045da1f9072ef76c7dc5",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=2.7",
"size": 86152,
"upload_time": "2019-08-28T20:45:18",
"url": "https://files.pythonhosted.org/packages/70/d9/4242ec51170c176515bdb06db4210493d93b8ed2f753189d5c58a91c544d/graphene_elastic-0.0.4-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "f04a8fe490fc6aff75bdad01475c3245",
"sha256": "6f84083bde36d011d6a35e0c9022f51403e43cece53e9bdb39836c92f5651753"
},
"downloads": -1,
"filename": "graphene-elastic-0.0.4.tar.gz",
"has_sig": false,
"md5_digest": "f04a8fe490fc6aff75bdad01475c3245",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=2.7",
"size": 60796,
"upload_time": "2019-08-28T20:45:20",
"url": "https://files.pythonhosted.org/packages/ec/a9/cf1a62eddd90bdc3db9e1b8c7053b5c1b7a931b4f81246d5ec80cf11e121/graphene-elastic-0.0.4.tar.gz"
}
],
"0.0.5": [
{
"comment_text": "",
"digests": {
"md5": "80a3a0570320372ca8a993195e329cf0",
"sha256": "4a1962f616e45e546b9dcfb3d58af570fab56a3cadf5c20235457087ce990d82"
},
"downloads": -1,
"filename": "graphene_elastic-0.0.5-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "80a3a0570320372ca8a993195e329cf0",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=2.7",
"size": 88763,
"upload_time": "2019-08-30T02:13:39",
"url": "https://files.pythonhosted.org/packages/88/0c/1b4f3f98ead6f7f9ddb561f1d1e88402f401ff277ce1b6339e2f2f69f23b/graphene_elastic-0.0.5-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "d154a19408a8b19509bc16adeac3c355",
"sha256": "df4c3591c4f4dbed671b21ad9017f10011a097d0b40373edbe6bcdd76bd7f9dd"
},
"downloads": -1,
"filename": "graphene-elastic-0.0.5.tar.gz",
"has_sig": false,
"md5_digest": "d154a19408a8b19509bc16adeac3c355",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=2.7",
"size": 63296,
"upload_time": "2019-08-30T02:13:42",
"url": "https://files.pythonhosted.org/packages/e3/cd/2c4abd1e8378c130b3f39f3f71556513eba5e1ea26eab110544d45e39574/graphene-elastic-0.0.5.tar.gz"
}
],
"0.0.6": [
{
"comment_text": "",
"digests": {
"md5": "814cd478de2f9279b13c7a82f695dace",
"sha256": "652ea4c214f71c1d3f158cda8c7756d5361e9b22b76551ab460a58caa9e0efea"
},
"downloads": -1,
"filename": "graphene_elastic-0.0.6-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "814cd478de2f9279b13c7a82f695dace",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=2.7",
"size": 90236,
"upload_time": "2019-08-30T14:05:59",
"url": "https://files.pythonhosted.org/packages/7e/f8/cd6fadc7ed6d135786e860e69472077a57f03c88eaf84fa34d2053914072/graphene_elastic-0.0.6-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "35278c1c302709d844b1922d7f1b28b7",
"sha256": "c93f5ee904998579acb0f15d9cbf8a25c5dac475c4d2a73d15811ccfa8de5a2b"
},
"downloads": -1,
"filename": "graphene-elastic-0.0.6.tar.gz",
"has_sig": false,
"md5_digest": "35278c1c302709d844b1922d7f1b28b7",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=2.7",
"size": 65463,
"upload_time": "2019-08-30T14:06:01",
"url": "https://files.pythonhosted.org/packages/02/30/d960d74abe57dc71a81a539e1e022a6f6340993a9f0d86da43b5fbcf4e6a/graphene-elastic-0.0.6.tar.gz"
}
],
"0.0.7": [
{
"comment_text": "",
"digests": {
"md5": "5402353e742139fc206a3bca5047544f",
"sha256": "7fb38e01589913927b061c690eedfc80b6a3dc15ff0fbce90879861a6d067dfa"
},
"downloads": -1,
"filename": "graphene_elastic-0.0.7-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "5402353e742139fc206a3bca5047544f",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=2.7",
"size": 101870,
"upload_time": "2019-08-31T23:54:37",
"url": "https://files.pythonhosted.org/packages/c5/44/201a9e0d034ba476e2ea5940f354b1db97f03e0f1023e2802cf569a44069/graphene_elastic-0.0.7-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "f786a28ef5fb96d67b3895d06ccd20db",
"sha256": "b9a2bce4efd8e6296ce9992f436c5cdfa03ed70abe349ffbc1591534d9168b13"
},
"downloads": -1,
"filename": "graphene-elastic-0.0.7.tar.gz",
"has_sig": false,
"md5_digest": "f786a28ef5fb96d67b3895d06ccd20db",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=2.7",
"size": 72188,
"upload_time": "2019-08-31T23:54:39",
"url": "https://files.pythonhosted.org/packages/bd/26/f15e5d1f41dce2dfe333aa9dc0b7e07b4769ae6878955eed113893312c1e/graphene-elastic-0.0.7.tar.gz"
}
],
"0.0.8": [
{
"comment_text": "",
"digests": {
"md5": "c959161ca832e70795d09bdd8649b119",
"sha256": "57b888add454afea2d6ec2f802ed419d87023a444557b7a9b1b5fbf1cbd3a118"
},
"downloads": -1,
"filename": "graphene_elastic-0.0.8-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "c959161ca832e70795d09bdd8649b119",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=2.7",
"size": 102248,
"upload_time": "2019-09-01T22:08:51",
"url": "https://files.pythonhosted.org/packages/68/3a/e8e4cd625e22051bcbc2d79b200940e8fe9fd2607ef527b114025ee70550/graphene_elastic-0.0.8-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "2ec8920ed35afc388540d84b6185a88f",
"sha256": "3fb332465f8dd977802d0fc9c8a0353826663027a9a9f77b423a9d0c540c21df"
},
"downloads": -1,
"filename": "graphene-elastic-0.0.8.tar.gz",
"has_sig": false,
"md5_digest": "2ec8920ed35afc388540d84b6185a88f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=2.7",
"size": 72436,
"upload_time": "2019-09-01T22:08:53",
"url": "https://files.pythonhosted.org/packages/36/a9/04e76ea223557ef29ff554c0441986d0bce11849c192494fb255fd602e3f/graphene-elastic-0.0.8.tar.gz"
}
],
"0.0.9": [
{
"comment_text": "",
"digests": {
"md5": "cbb82c516d52adb11185673b90996e0a",
"sha256": "e72acc0ef9349860400b588fbfd2d1124ebfb46fa6c6d3b0ef1334aecefe10d5"
},
"downloads": -1,
"filename": "graphene_elastic-0.0.9-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "cbb82c516d52adb11185673b90996e0a",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=2.7",
"size": 108233,
"upload_time": "2019-09-02T23:42:35",
"url": "https://files.pythonhosted.org/packages/88/f9/160e804b53e11146279130f09518cb5150c50907b188320bcd90a636e7a4/graphene_elastic-0.0.9-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "4a7a940f7eae4926105167cf185da074",
"sha256": "5fdf431b72ab29e0e12c80e15cd8b03bfa3f79756a21d9d62489333064cad156"
},
"downloads": -1,
"filename": "graphene-elastic-0.0.9.tar.gz",
"has_sig": false,
"md5_digest": "4a7a940f7eae4926105167cf185da074",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=2.7",
"size": 76841,
"upload_time": "2019-09-02T23:42:39",
"url": "https://files.pythonhosted.org/packages/7e/43/ec3d83b56fbd916c15c35334243e257443153bb069b32371a3d395220a82/graphene-elastic-0.0.9.tar.gz"
}
],
"0.1": [
{
"comment_text": "",
"digests": {
"md5": "d300bbc22878792a8390b7b9ba0f67ae",
"sha256": "8901e1b5d145ccaefe363841bc5cbe5c7bddd9ae89e4488791fab9c127ba888c"
},
"downloads": -1,
"filename": "graphene_elastic-0.1-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "d300bbc22878792a8390b7b9ba0f67ae",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=2.7",
"size": 105991,
"upload_time": "2019-09-07T22:22:12",
"url": "https://files.pythonhosted.org/packages/41/72/0b68d7e1950b700bf93c3eee059504bff74f0610e1ebb3889f0d502b5ea1/graphene_elastic-0.1-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "0c17e9238f88eabc091be5ff5bd3472d",
"sha256": "fa87c013071666edba46f169eb1c09c40fe8ed9c308d76883a71a829ab76f4f6"
},
"downloads": -1,
"filename": "graphene-elastic-0.1.tar.gz",
"has_sig": false,
"md5_digest": "0c17e9238f88eabc091be5ff5bd3472d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=2.7",
"size": 76138,
"upload_time": "2019-09-07T22:22:14",
"url": "https://files.pythonhosted.org/packages/f6/5a/7da66809a80275a3dd7679a7c9e00a72f00c5604db382c02512050721dc5/graphene-elastic-0.1.tar.gz"
}
],
"0.2": [
{
"comment_text": "",
"digests": {
"md5": "b1a686b21c1bcee0094d21146e2604a7",
"sha256": "da98af68e8a05140b220950cb88dd07cc48eff7887c2ad9c94e6447b71034486"
},
"downloads": -1,
"filename": "graphene_elastic-0.2-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "b1a686b21c1bcee0094d21146e2604a7",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=2.7",
"size": 114679,
"upload_time": "2019-09-18T00:04:25",
"url": "https://files.pythonhosted.org/packages/ac/62/58d5983ac03f09581e395ae6fd647f64ae312640aa59623fda7ab77b1bfa/graphene_elastic-0.2-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "d74163b777c6eb9d8fbaf2dd6c5e6eda",
"sha256": "eabaaf7e6e278459cc4e0a7536e886bd766f6064c74b1a857ee24c4ce7705bfb"
},
"downloads": -1,
"filename": "graphene-elastic-0.2.tar.gz",
"has_sig": false,
"md5_digest": "d74163b777c6eb9d8fbaf2dd6c5e6eda",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=2.7",
"size": 82396,
"upload_time": "2019-09-18T00:04:28",
"url": "https://files.pythonhosted.org/packages/78/1f/98730afc9456f9d4b3750a9e50a4904356df8f2bfba958ec8d96418fa7f1/graphene-elastic-0.2.tar.gz"
}
],
"0.3": [
{
"comment_text": "",
"digests": {
"md5": "40acc9c5cc44d333d139ae09b677fc4c",
"sha256": "e02927ca8ccb4f7732e8d5720be539dba60b46abd286cc9a1d564e630ee86e70"
},
"downloads": -1,
"filename": "graphene_elastic-0.3-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "40acc9c5cc44d333d139ae09b677fc4c",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=3.6",
"size": 118408,
"upload_time": "2019-09-20T00:15:07",
"url": "https://files.pythonhosted.org/packages/71/2c/3e2c3119f275fa3858320853541756d66bd9adbeea4e7d5dad3884ad326c/graphene_elastic-0.3-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "acf59ec1beb540ba029b304527da3ad5",
"sha256": "7a2c52d9773bc31bd1e0a844591f6a39a45ad590f7a8a9cd60cb67183b7a559a"
},
"downloads": -1,
"filename": "graphene-elastic-0.3.tar.gz",
"has_sig": false,
"md5_digest": "acf59ec1beb540ba029b304527da3ad5",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 83102,
"upload_time": "2019-09-20T00:15:10",
"url": "https://files.pythonhosted.org/packages/08/cd/c661e9eb5684f18dd0319ac73314b01ce0dbcc8deae5dccba5c25fdd9f98/graphene-elastic-0.3.tar.gz"
}
],
"0.4": [
{
"comment_text": "",
"digests": {
"md5": "450bf6605bdc30359c5370f6c6326180",
"sha256": "cd8afa3ab7197ddbcb9e811ae7c8042d0d228516d1b0972a32e72b7a4e1f9802"
},
"downloads": -1,
"filename": "graphene_elastic-0.4-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "450bf6605bdc30359c5370f6c6326180",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=3.6",
"size": 83035,
"upload_time": "2019-09-22T22:32:08",
"url": "https://files.pythonhosted.org/packages/a7/1c/5a6b98c953ba488046627c6c9472663d51ab441c4cf9a3f5d0970c22f3d4/graphene_elastic-0.4-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "7e81eb27f43cf5fc18922b818bc79829",
"sha256": "f8b216834429d33cb5286a5f851653ac65165f34c694b95805ae0e161c35a8bb"
},
"downloads": -1,
"filename": "graphene-elastic-0.4.tar.gz",
"has_sig": false,
"md5_digest": "7e81eb27f43cf5fc18922b818bc79829",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 63229,
"upload_time": "2019-09-22T22:32:10",
"url": "https://files.pythonhosted.org/packages/d7/a6/cdfdaf2ed510809d436ec5a69287cee3e7754418c87902d88e41cee04e44/graphene-elastic-0.4.tar.gz"
}
],
"0.5": [
{
"comment_text": "",
"digests": {
"md5": "73b0364ecc826b7d7ffd2d6b98b5307c",
"sha256": "ec4cbcbbb68ded904d3260d6db0c98db0371c4a31f690c2ad6c0ed08e77cdbdf"
},
"downloads": -1,
"filename": "graphene_elastic-0.5-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "73b0364ecc826b7d7ffd2d6b98b5307c",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=3.6",
"size": 90443,
"upload_time": "2019-09-28T23:53:20",
"url": "https://files.pythonhosted.org/packages/37/a4/df5e18f006b09cd7e4beb37923678c50ccd2a2b25e1a885c872a274cbab9/graphene_elastic-0.5-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "8b84e334e85ce4a409088b4403ba19d0",
"sha256": "bada996607f7c047456f31de1086382a7f0bef26f9e405bb8ad550ed6bb8369b"
},
"downloads": -1,
"filename": "graphene-elastic-0.5.tar.gz",
"has_sig": false,
"md5_digest": "8b84e334e85ce4a409088b4403ba19d0",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 65928,
"upload_time": "2019-09-28T23:53:23",
"url": "https://files.pythonhosted.org/packages/7a/89/92c3f110c43a792b94eb48d2d84cd5d698bc91f2f190fc5601655115ecd2/graphene-elastic-0.5.tar.gz"
}
],
"0.6": [
{
"comment_text": "",
"digests": {
"md5": "604b5f32915a0f90d4dfaee7fa0660e3",
"sha256": "8c1f869aa126788fe07e8ba44ec34b9dd3cac2ee9cb34cdc6b60590d10d58f1e"
},
"downloads": -1,
"filename": "graphene_elastic-0.6-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "604b5f32915a0f90d4dfaee7fa0660e3",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=3.6",
"size": 91243,
"upload_time": "2019-10-10T23:32:26",
"url": "https://files.pythonhosted.org/packages/15/c2/b35a629553f8e5c64eedc7ae030eaa906799f5e22474123358b0ef072f56/graphene_elastic-0.6-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "489c00af411dfaacc3afd0488afe986d",
"sha256": "0a94fbffac83cdb744bbd0922738c7b463fffccb0da47adc7547d6293838181f"
},
"downloads": -1,
"filename": "graphene-elastic-0.6.tar.gz",
"has_sig": false,
"md5_digest": "489c00af411dfaacc3afd0488afe986d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 66737,
"upload_time": "2019-10-10T23:32:29",
"url": "https://files.pythonhosted.org/packages/27/15/ce069e6e1cdf5fd37c4c39ebcb0731f872ca3455d1cb801ce138d1d13628/graphene-elastic-0.6.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "604b5f32915a0f90d4dfaee7fa0660e3",
"sha256": "8c1f869aa126788fe07e8ba44ec34b9dd3cac2ee9cb34cdc6b60590d10d58f1e"
},
"downloads": -1,
"filename": "graphene_elastic-0.6-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "604b5f32915a0f90d4dfaee7fa0660e3",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=3.6",
"size": 91243,
"upload_time": "2019-10-10T23:32:26",
"url": "https://files.pythonhosted.org/packages/15/c2/b35a629553f8e5c64eedc7ae030eaa906799f5e22474123358b0ef072f56/graphene_elastic-0.6-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "489c00af411dfaacc3afd0488afe986d",
"sha256": "0a94fbffac83cdb744bbd0922738c7b463fffccb0da47adc7547d6293838181f"
},
"downloads": -1,
"filename": "graphene-elastic-0.6.tar.gz",
"has_sig": false,
"md5_digest": "489c00af411dfaacc3afd0488afe986d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 66737,
"upload_time": "2019-10-10T23:32:29",
"url": "https://files.pythonhosted.org/packages/27/15/ce069e6e1cdf5fd37c4c39ebcb0731f872ca3455d1cb801ce138d1d13628/graphene-elastic-0.6.tar.gz"
}
]
}