{ "info": { "author": "mongkok", "author_email": "domake.io@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 1 - Planning", "Environment :: Web Environment", "Framework :: Django", "Framework :: Django :: 1.11", "Framework :: Django :: 2.0", "Framework :: Django :: 2.1", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "Django GraphQL Persist\n======================\n\n|Pypi| |Wheel| |Build Status| |Codecov| |Code Climate|\n\n\n**Persisted queries** for `Django GraphQL`_\n\n.. _Django GraphQL: https://github.com/graphql-python/graphene-django\n\n\nDependencies\n------------\n\n* Django \u2265 1.11\n* Python \u2265 3.4\n\n\nInstallation\n------------\n\nInstall last stable version from Pypi.\n\n.. code:: sh\n\n pip install django-graphql-persist\n\n\nInclude the ``PersistMiddleware`` middleware in your *MIDDLEWARE* settings:\n\n.. code:: python\n\n MIDDLEWARE = [\n ...\n 'graphql_persist.middleware.PersistMiddleware',\n ...\n ]\n\n\nLoaders\n-------\n\n*Django-graphql-persist* searches for documents directories in a number of places, depending on your ``DEFAULT_LOADER_CLASSES`` variable.\n\nBy default, *Django-graphql-persist* uses these document loaders:\n\n* **AppDirectoriesLoader**\n\nLoads documents from Django apps on the filesystem. For each app in ``INSTALLED_APPS``, the loader looks for a ``documents/`` subdirectory defined by ``APP_DOCUMENT_DIR`` variable.\n\n* **FilesystemLoader**\n\nLoads documents from the filesystem, according to ``DOCUMENTS_DIRS`` variable.\n\n* **URLLoader**\n\nLoads documents from urls, according to ``DOCUMENTS_DIRS``.\n\n.. code:: python\n\n GRAPHQL_PERSIST = {\n 'DOCUMENTS_DIRS': [\n '/app/documents', # FilesystemLoader\n 'https:// ... /documents', # URLLoader\n ],\n }\n\n**Cached Loader**\n\nBy default, the document system reads your documents every time they're rendered.\n\nConfigure the ``CachedEngine`` engine for caching documents.\n\n\n.. code:: python\n\n GRAPHQL_PERSIST = {\n 'DEFAULT_LOADER_ENGINE_CLASS': [\n graphql_persist.loaders.CachedEngine',\n ],\n }\n\nPersisted Query definition\n--------------------------\n\nYou can split schemas into separate files...\n\n``documents/fragments.graphql``\n\n.. code::\n\n fragment userFields on UserType {\n id\n email\n }\n\nand define Pythonic imports prefixed with ``#``.\n\n``documents/GetViewer.graphql``\n\n.. code::\n\n # from fragments import userFields\n\n {\n viewer {\n ...userFields\n }\n }\n\n\n**Persisted Query by** ``id``\n\n.. code:: json\n\n {\n \"id\": \"GetViewer\",\n \"variables\": {}\n }\n\n\nMultiple Operations\n-------------------\n\n``documents/users.graphql``\n\n.. code::\n\n # from fragments import userFields\n\n query GetViewer {\n viewer {\n ...userFields\n }\n }\n\n query GetUsers($last: Int!) {\n users(last: $last) {\n ...userFields\n }\n }\n\n\n**Persisted Query by** ``id`` and ``operationName``\n\n.. code:: json\n\n {\n \"id\": \"users\",\n \"operationName\": \"GetUsers\",\n \"variables\": {\n \"last\": 2\n }\n }\n\n\n\u270b Versioning\n-------------\n\nThe versioning scheme is defined by the ``DEFAULT_VERSIONING_CLASS`` setting variable.\n\n.. code:: python\n\n GRAPHQL_PERSIST = {\n 'DEFAULT_VERSIONING_CLASS': 'graphql_persist.versioning.AcceptHeaderVersioning'\n }\n\nThis is the full **list of versioning classes**.\n\n+--------------------------+-------------------------------------+\n| DEFAULT_VERSIONING_CLASS | Example |\n+==========================+=====================================+\n| AcceptHeaderVersioning | ``application/json; version=v1`` |\n+--------------------------+-------------------------------------+\n| VendorTreeVersioning | ``application/vnd.example.v1+json`` |\n+--------------------------+-------------------------------------+\n| QueryParameterVersioning | ``?version=v1`` |\n+--------------------------+-------------------------------------+\n| HostNameVersioning | ``v1.example.com`` |\n+--------------------------+-------------------------------------+\n\nConfigure the versioning scheme and storage the GraphQL documents according to the version.\n\n\ud83d\udc47 **Example**\n\n.. code::\n\n POST /graphql HTTP/1.1\n Accept: application/json; version=v1.full\n\n {\n \"id\": \"GetViewer\",\n \"variables\": {}\n }\n\n.. code::\n\n documents/\n |\n \u251c\u2500\u2500 v1/\n \u2502 \u251c\u2500\u2500 full/\n \u2502 | \u2514\u2500\u2500 GetViewer.graphql \ud83d\udc48\n \u2502 \u2514\u2500\u2500 basic/\n | | \u2514\u2500\u2500 GetViewer.graphql\n | \u2514\u2500\u2500 fragments/\n | \u2514\u2500\u2500 users.graphql\n \u2514\u2500\u2500 v2/\n \u2514\u2500\u2500 full/\n \u2514\u2500\u2500 basic/\n\n\ud83d\udc49 ``documents/v1/full/GetViewer.graphql``\n\n.. code::\n\n # from ..fragments.users import userFields\n\n {\n viewer {\n ...userFields\n }\n }\n\n\nSettings\n--------\n\nHere's a **list of settings** available in *Django-graphql-persist* and their default values.\n\n**DOCUMENTS_DIRS**\n\n::\n\n List of directories or urls searched for GraphQL SDL definitions\n Default: () \n\n**CACHE_NAME**\n\n::\n\n Cache key name `CACHES[name]` to cache the queries results\n Default: 'default'\n\n**QUERY_KEY_HANDLER**\n\n::\n\n A custom function `f(query_id, request)` to generate the persisted query keys\n Default: 'graphql_persist.query.query_key_handler'\n\n\n**DEFAULT_VERSIONING_CLASS**\n\n::\n\n A versioning class to determine the `request.version` attribute\n Default: None\n\n**DEFAULT_LOADER_ENGINE_CLASS**\n\n::\n\n Class that takes a list of template loaders and attempts to load templates from them in order\n Default: 'graphql_persist.loaders.Engine'\n Note: Set variable to 'graphql_persist.loaders.CachedEngine' for caching documents\n\n**DEFAULT_LOADER_CLASSES**\n\n::\n\n A list of loader classes to import documents from a particular source\n Default: (\n 'graphql_persist.loaders.AppDirectoriesLoader',\n 'graphql_persist.loaders.FilesystemLoader',\n 'graphql_persist.loaders.URLLoader',\n )\n\n**APP_DOCUMENT_DIR**\n\n::\n\n Subdirectory of installed applications for searches documents\n Default: 'documents'\n\n**DOCUMENTS_EXT**\n\n::\n\n GraphQL document file extension\n Default: '.graphql'\n\n**DEFAULT_RENDERER_CLASSES**\n\n::\n\n A list of renderer classes that may be used when returning a persisted query response\n Default: ()\n\n\n.. |Pypi| image:: https://img.shields.io/pypi/v/django-graphql-persist.svg\n :target: https://pypi.python.org/pypi/django-graphql-persist\n\n.. |Wheel| image:: https://img.shields.io/pypi/wheel/django-graphql-persist.svg\n :target: https://pypi.python.org/pypi/django-graphql-persist\n\n.. |Build Status| image:: https://travis-ci.org/flavors/django-graphql-persist.svg?branch=master\n :target: https://travis-ci.org/flavors/django-graphql-persist\n\n.. |Codecov| image:: https://img.shields.io/codecov/c/github/flavors/django-graphql-persist.svg\n :target: https://codecov.io/gh/flavors/django-graphql-persist\n\n.. |Code Climate| image:: https://api.codeclimate.com/v1/badges/46eaf45a95441d5470a4/maintainability\n :target: https://codeclimate.com/github/flavors/django-graphql-persist\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/flavors/django-graphql-persist/", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "django-graphql-persist", "package_url": "https://pypi.org/project/django-graphql-persist/", "platform": "", "project_url": "https://pypi.org/project/django-graphql-persist/", "project_urls": { "Homepage": "https://github.com/flavors/django-graphql-persist/" }, "release_url": "https://pypi.org/project/django-graphql-persist/0.1.1/", "requires_dist": null, "requires_python": "", "summary": "Persisted queries for Django GraphQL", "version": "0.1.1" }, "last_serial": 4335872, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "0d1cfca4ac6e7442d596d87053cb1d4b", "sha256": "b88228109287938b22e14b461a3ba0dd567d9daa40ecfe4adce59be8dce7dafd" }, "downloads": -1, "filename": "django_graphql_persist-0.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0d1cfca4ac6e7442d596d87053cb1d4b", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 14599, "upload_time": "2018-04-13T19:44:57", "url": "https://files.pythonhosted.org/packages/89/86/44db39caf4c5ab68ee03f2abd3023c49997c391e8cb87da5b4c7bdd443de/django_graphql_persist-0.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5ea7b9a5b5d8243170427911c08e2c7d", "sha256": "fa43a2d31113901c57d29dd3ac9fc3197bd44bddc8527962ecefdaa26446d4d9" }, "downloads": -1, "filename": "django-graphql-persist-0.0.1.tar.gz", "has_sig": false, "md5_digest": "5ea7b9a5b5d8243170427911c08e2c7d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12937, "upload_time": "2018-04-13T19:44:53", "url": "https://files.pythonhosted.org/packages/fa/da/50ee39c1b68d85dc13f7ba63a92e2b49216b5127759a321753f3fa53300e/django-graphql-persist-0.0.1.tar.gz" } ], "0.0.1.dev0": [ { "comment_text": "", "digests": { "md5": "01aa359e240ccf1e01b346054c73290d", "sha256": "a438bb597689655b2989c75d580f3660f41e3b8979e15a60b01a4d134b69df87" }, "downloads": -1, "filename": "django_graphql_persist-0.0.1.dev0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "01aa359e240ccf1e01b346054c73290d", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 5168, "upload_time": "2018-04-04T20:57:01", "url": "https://files.pythonhosted.org/packages/91/8a/e22955bca8b1c1b9754200ec2646c94725c92812826d58736c7b1258c0be/django_graphql_persist-0.0.1.dev0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e27945d824f682ac9ffd6091dd7e151c", "sha256": "a66a788991f0b72e8cc830c1ff597e29578689749f57da047b7fcbe675267e73" }, "downloads": -1, "filename": "django-graphql-persist-0.0.1.dev0.tar.gz", "has_sig": false, "md5_digest": "e27945d824f682ac9ffd6091dd7e151c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5527, "upload_time": "2018-04-04T20:56:58", "url": "https://files.pythonhosted.org/packages/64/7c/7379d87813794e628ae0c076ab428dafdf6d495924c97f2a6c141bba1593/django-graphql-persist-0.0.1.dev0.tar.gz" } ], "0.0.1.dev1": [ { "comment_text": "", "digests": { "md5": "002d79c9128d9fd2d55f4c569bc495ad", "sha256": "5b3bd8aded544eb92cb352e5d60f5eb440c0a0ace74823856f8e6e19cae08d33" }, "downloads": -1, "filename": "django_graphql_persist-0.0.1.dev1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "002d79c9128d9fd2d55f4c569bc495ad", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 7241, "upload_time": "2018-04-05T16:48:35", "url": "https://files.pythonhosted.org/packages/2c/02/ed28c0d09817e444916b200a4eef7fa30c3611229171ec211445085b39d0/django_graphql_persist-0.0.1.dev1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6d086b5e75e6fd7318bb96f8c6f4f4e3", "sha256": "5c9ea0bcedf843828befe49d55218e5c656441f00ec02f5837711a713dab9203" }, "downloads": -1, "filename": "django-graphql-persist-0.0.1.dev1.tar.gz", "has_sig": false, "md5_digest": "6d086b5e75e6fd7318bb96f8c6f4f4e3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6239, "upload_time": "2018-04-05T16:48:31", "url": "https://files.pythonhosted.org/packages/44/2c/38318d6e4ee3794594c7e9a44c23bb3c4534b82bfe4f9cfb3ff1abe31314/django-graphql-persist-0.0.1.dev1.tar.gz" } ], "0.0.1.dev2": [ { "comment_text": "", "digests": { "md5": "a4cc664f6a624c4af005ffd49ab0d582", "sha256": "c4440de7405c5775255190138693d911853f3b5a271c62ae2c1c621d05cc8439" }, "downloads": -1, "filename": "django_graphql_persist-0.0.1.dev2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a4cc664f6a624c4af005ffd49ab0d582", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 12080, "upload_time": "2018-04-08T19:08:55", "url": "https://files.pythonhosted.org/packages/ee/26/8a1b4e1fc78ace4d662377f5007a483a552894fc323ee992286985fe37d8/django_graphql_persist-0.0.1.dev2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ad7cead01d2a3fda6c4230ed6daf0c03", "sha256": "b67100bad0fa8166abff42fbb072ada6d4ba332f4644daa4b275dff8c02ba6cb" }, "downloads": -1, "filename": "django-graphql-persist-0.0.1.dev2.tar.gz", "has_sig": false, "md5_digest": "ad7cead01d2a3fda6c4230ed6daf0c03", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10025, "upload_time": "2018-04-08T19:08:51", "url": "https://files.pythonhosted.org/packages/52/81/b04cd81dc5b24772f5ff947808a0cff541ad5d6fa93ac395007748592a31/django-graphql-persist-0.0.1.dev2.tar.gz" } ], "0.0.1.dev3": [ { "comment_text": "", "digests": { "md5": "5be5f376f01740d0ed8f19faca3cf461", "sha256": "ac8eb0364455c154fde09f3d56c4bf11b2e5e8cdcd647b021db4afea401a7e3e" }, "downloads": -1, "filename": "django_graphql_persist-0.0.1.dev3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5be5f376f01740d0ed8f19faca3cf461", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 14399, "upload_time": "2018-04-10T18:30:00", "url": "https://files.pythonhosted.org/packages/80/7c/9b316db1ebfd6bf6286a26e7ba9487a641e4fb022d749eebd439dc11cebd/django_graphql_persist-0.0.1.dev3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9986fd49632ea6e3c15b5a0944bfe4ad", "sha256": "eb76d825cde02932aa0244fbab522d86274a721967402b0b812406d1a8111d1b" }, "downloads": -1, "filename": "django-graphql-persist-0.0.1.dev3.tar.gz", "has_sig": false, "md5_digest": "9986fd49632ea6e3c15b5a0944bfe4ad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12482, "upload_time": "2018-04-10T18:29:55", "url": "https://files.pythonhosted.org/packages/63/e2/91b4fa2743e4ff9e533a65deaff71ad66599a0d09a9756f03a41fcc477ed/django-graphql-persist-0.0.1.dev3.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "e99d3d642f4f94c75ab6fe3686ab6ecd", "sha256": "1ec0781b985436a146150d62eb992e57393c64a9b339d2e025e5e32b0e54264c" }, "downloads": -1, "filename": "django_graphql_persist-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e99d3d642f4f94c75ab6fe3686ab6ecd", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 14827, "upload_time": "2018-09-23T19:12:17", "url": "https://files.pythonhosted.org/packages/af/00/41e8ea2ca847ce34f582a5c2026a51a0d504df0694be0841cdb75b397cd7/django_graphql_persist-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "af04dcb363630e7435677861ece8a236", "sha256": "bc58e715844b8f6a59d59e23df17892237fd686ed125aebd263e5dce9a59113d" }, "downloads": -1, "filename": "django-graphql-persist-0.1.0.tar.gz", "has_sig": false, "md5_digest": "af04dcb363630e7435677861ece8a236", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13051, "upload_time": "2018-09-23T19:12:04", "url": "https://files.pythonhosted.org/packages/b4/bd/cae0deb46378fd507d727d43c6e1eae1d34e6650382c985599322224a7c5/django-graphql-persist-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "9bcdcb785870fbdd4bc152a05b36ed80", "sha256": "3d6b49b19de0ef1dbef4faef58a7bb856a3df06f2513ea537390b14236e0adcb" }, "downloads": -1, "filename": "django_graphql_persist-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9bcdcb785870fbdd4bc152a05b36ed80", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 18172, "upload_time": "2018-10-03T09:21:16", "url": "https://files.pythonhosted.org/packages/33/61/32416c8746b8812a28a68b8697a22c91aa30f081cb3be55a9cb8b29ccf94/django_graphql_persist-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "78ff666497f112de9bbeed46c7e545e1", "sha256": "ea1d459e680f4e7d42fa562c87426ea1a38b66c09975217b1368e6330b612725" }, "downloads": -1, "filename": "django-graphql-persist-0.1.1.tar.gz", "has_sig": false, "md5_digest": "78ff666497f112de9bbeed46c7e545e1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13249, "upload_time": "2018-10-03T09:21:07", "url": "https://files.pythonhosted.org/packages/e0/72/54fb3b78a11028749927d59787461aef891029de7d3e8d3caa206665dbba/django-graphql-persist-0.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9bcdcb785870fbdd4bc152a05b36ed80", "sha256": "3d6b49b19de0ef1dbef4faef58a7bb856a3df06f2513ea537390b14236e0adcb" }, "downloads": -1, "filename": "django_graphql_persist-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9bcdcb785870fbdd4bc152a05b36ed80", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 18172, "upload_time": "2018-10-03T09:21:16", "url": "https://files.pythonhosted.org/packages/33/61/32416c8746b8812a28a68b8697a22c91aa30f081cb3be55a9cb8b29ccf94/django_graphql_persist-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "78ff666497f112de9bbeed46c7e545e1", "sha256": "ea1d459e680f4e7d42fa562c87426ea1a38b66c09975217b1368e6330b612725" }, "downloads": -1, "filename": "django-graphql-persist-0.1.1.tar.gz", "has_sig": false, "md5_digest": "78ff666497f112de9bbeed46c7e545e1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13249, "upload_time": "2018-10-03T09:21:07", "url": "https://files.pythonhosted.org/packages/e0/72/54fb3b78a11028749927d59787461aef891029de7d3e8d3caa206665dbba/django-graphql-persist-0.1.1.tar.gz" } ] }