{ "info": { "author": "Florimond Manca", "author_email": "florimond.manca@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Operating System :: OS Independent", "Programming Language :: Python :: 3 :: Only", "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 :: Software Development :: Libraries" ], "description": "
\n \"tartiflette-asgi\n
\n\n

\n \n \"Build\n \n \n \"Package\n \n \n \"Code\n \n

\n\n`tartiflette-asgi` is a wrapper that provides ASGI support for the [Tartiflette](https://tartiflette.io) Python GraphQL engine.\n\nIt is ideal for serving a GraphQL API over HTTP, or adding a GraphQL API endpoint to an existing ASGI application (e.g. FastAPI, Starlette, Quart, etc).\n\nFull documentation is available at: https://tartiflette.github.io/tartiflette-asgi\n\n## Requirements\n\n`tartiflette-asgi` is compatible with:\n\n- Python 3.6+.\n- Tartiflette 1.x.\n\n## Quickstart\n\nFirst, install Tartiflette's external dependencies, as explained in the [Tartiflette tutorial](https://tartiflette.io/docs/tutorial/install-tartiflette).\n\nThen, you can install Tartiflette and `tartiflette-asgi` using `pip`:\n\n```bash\npip install tartiflette \"tartiflette-asgi==0.*\"\n```\n\nYou'll also need an [ASGI web server](https://github.com/florimondmanca/awesome-asgi#servers). We'll use [Uvicorn](http://www.uvicorn.org/) here:\n\n```bash\npip install uvicorn\n```\n\nCreate an application that exposes a `TartifletteApp` instance:\n\n```python\nfrom tartiflette import Resolver\nfrom tartiflette_asgi import TartifletteApp\n\n@Resolver(\"Query.hello\")\nasync def hello(parent, args, context, info):\n name = args[\"name\"]\n return f\"Hello, {name}!\"\n\nsdl = \"type Query { hello(name: String): String }\"\napp = TartifletteApp(sdl=sdl, path=\"/graphql\")\n```\n\nSave this file as `graphql.py`, then start the server:\n\n```bash\nuvicorn graphql:app\n```\n\nMake an HTTP request containing a GraphQL query:\n\n```bash\ncurl http://localhost:8000/graphql -d '{ hello(name: \"Chuck\") }' -H \"Content-Type: application/graphql\"\n```\n\nYou should get the following JSON response:\n\n```json\n{ \"data\": { \"hello\": \"Hello, Chuck!\" } }\n```\n\nTo learn more about using `tartiflette-asgi`, head to the documentation: https://tartiflette.github.io/tartiflette-asgi\n\n## Contributing\n\nWant to contribute? Awesome! Be sure to read our [Contributing guidelines](https://github.com/tartiflette/tartiflette-asgi/tree/master/CONTRIBUTING.md).\n\n## Changelog\n\nChanges to this project are recorded in the [changelog](https://github.com/tartiflette/tartiflette-asgi/tree/master/CHANGELOG.md).\n\n## License\n\nMIT\n\n\n# Changelog\n\nAll notable changes to this project will be documented in this file.\n\nThe format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),\nand this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).\n\n## 0.11.0 - 2021-09-03\n\n### Added\n\n- Add official compatibility with Tartiflette 1.4.x. (Pull #153)\n\n### Changed\n\n- Update dependency on Starlette to `0.16.*`. (Pull #154)\n- Update httpx requirement to `0.19.*` (Pull #159)\n\n## 0.10.0 - 2021-01-19\n\n### Added\n\n- Add official compatibility with Tartiflette 1.3.x. (Pull #132)\n\n## 0.9.0 - 2020-06-10\n\n### Removed\n\n- Drop deprecated `mount` helpers module. Prefer using the mounting mechanism of your ASGI framework. (Pull #119)\n\n### Changed\n\n- Update dependency on Starlette to `0.13.*`. (Pull #106)\n- Convert internal modules to private naming. All public API should be accessed from the top-level `tartiflette_asgi` package. (Pull #117)\n\n### Added\n\n- Add compatibility with Starlette `0.13.*`. (Pull #106)\n\n## 0.8.0 - 2020-06-04\n\n### Added\n\n- Add support for Tartiflette 1.2.x. (Pull #115)\n\n### Fixed\n\n- Fix GraphiQL subscriptions endpoint when using ASGI sub-mounting. (Pull #98)\n- Fix protocol mismatch error when serving GraphiQL over HTTPS. (Pull #114)\n\n## 0.7.1 - 2019-10-28\n\n### Fixed\n\n- Requests containing malformed JSON now return a 400 Bad Request error response instead of 500 Internal Server Error. (Pull #81)\n\n## 0.7.0 - 2019-10-27\n\n### Changed\n\n- Renamed project to `tartiflette-asgi`.\n\n## 0.6.0 - 2019-10-18\n\n### Added\n\n- Add support for Tartiflette 1.x. (Pull #58)\n- Officialize support for Python 3.8. (Pull #80)\n\n### Removed\n\n- Drop support for Tartiflette 0.x. (Pull #58)\n\n## 0.5.2 - 2019-10-09\n\n### Added\n\n- Add support for Python 3.8. (Pull #55)\n\n### Fixed\n\n- Type annotations are now correctly detected by `mypy`. (Pull #66)\n- Fix a bug that prevented the GraphiQL web interface from making queries when the application was mounted on a parent ASGI app. (Pull #51)\n\n## 0.5.1 - 2019-07-16\n\n### Fixed\n\n- Fixed a bug that prevented accessing the GraphiQL interface when subscriptions were not enabled.\n\n## 0.5.0 - 2019-07-12\n\n### Added\n\n- WebSocket subscriptions, configurable with the new `subscriptions` option on `TartifletteApp`.\n- Pass extra context to resolvers using the new `context` option on `TartifletteApp`.\n\n## 0.4.0 - 2019-07-04\n\n### Added\n\n- Support for Tartiflette 0.12.x.\n- Add a `mount` module with submounting helpers.\n- Add `mount.starlette()`.\n\n### Changed\n\n- Due to the new [engine cooking API](https://tartiflette.io/docs/api/engine#cook-your-tartiflette) in Tartiflette 0.12, `TartifletteApp` now includes a startup event handler responsible for building the GraphQL engine. If submounting, it **must** be registered on the parent ASGI app. Helpers in the `mount` module take care of this for you.\n\n### Removed\n\n- Drop support for Tartiflette 0.11.x and below.\n\n## 0.3.0 - 2019-07-03\n\n### Added\n\n- GraphiQL configuration via the `GraphiQL` helper. Options: `path`, `default_query`, `default_headers`, `default_variables`, `template`.\n\n### Changed\n\n- Internal refactoring that leverages more of Starlette's capabilities.\n- Documentation improvements.\n\n## 0.2.0 - 2019-06-10\n\n### Added\n\n- Support for `starlette>=0.12` (previously `>=0.12.0b3`).\n- Tartiflette is now installed too when installing `tartiflette-asgi`.\n\n### Changed\n\n- The default `path` is now `\"\"` (previously `\"/\"`).\n- The request is now accessible in the GraphQL context via `context[\"req\"]` (previously `context[\"request\"]`).\n- If no error occurred, the `errors` field is not present in the response anymore (previously was `None`).\n\n### Fixed\n\n- More robust URL matching on `TartifletteApp`.\n\n## 0.1.1 - 2019-04-28\n\n### Fixed\n\n- Add missing `graphiql.html` package asset.\n\n## 0.1.0 - 2019-04-26\n\n### Added\n\nFeatures:\n\n- `TartifletteApp` ASGI application.\n- Built-in GraphiQL client.\n\nProject-related additions:\n\n- Package setup.\n- Changelog.\n- Contributing guide.\n- README and documentation.\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": "https://github.com/tartiflette/tartiflette-asgi", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "tartiflette-asgi", "package_url": "https://pypi.org/project/tartiflette-asgi/", "platform": "", "project_url": "https://pypi.org/project/tartiflette-asgi/", "project_urls": { "Homepage": "https://github.com/tartiflette/tartiflette-asgi" }, "release_url": "https://pypi.org/project/tartiflette-asgi/0.11.0/", "requires_dist": [ "starlette (<1.0,>=0.13)", "tartiflette (<1.5,>=1.0)", "typing-extensions ; python_version < \"3.8\"" ], "requires_python": ">=3.6", "summary": "ASGI support for the Tartiflette Python GraphQL engine", "version": "0.11.0", "yanked": false, "yanked_reason": null }, "last_serial": 11859209, "releases": { "0.10.0": [ { "comment_text": "", "digests": { "md5": "40c548f47293850988b1af871097360b", "sha256": "2a047319bee963302bfb73af037078a63871772cc1fd1b5c21ddc920b12795e8" }, "downloads": -1, "filename": "tartiflette_asgi-0.10.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "40c548f47293850988b1af871097360b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6", "size": 14450, "upload_time": "2021-01-19T12:29:36", "upload_time_iso_8601": "2021-01-19T12:29:36.462045Z", "url": "https://files.pythonhosted.org/packages/b8/1f/deafb544f58dcfc124596405cb6ae83392cf59eeec8c9ea72fabe1a49043/tartiflette_asgi-0.10.0-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "5d8bbb93cd6d9069f8832708ff58ba4a", "sha256": "3bea008a2d2fb34eef6298592c1fb77c9d68fb9c150fd519d158644ffa53d21a" }, "downloads": -1, "filename": "tartiflette-asgi-0.10.0.tar.gz", "has_sig": false, "md5_digest": "5d8bbb93cd6d9069f8832708ff58ba4a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 15164, "upload_time": "2021-01-19T12:29:37", "upload_time_iso_8601": "2021-01-19T12:29:37.719472Z", "url": "https://files.pythonhosted.org/packages/c0/7d/6174253e41a9b0cc14929305047f11327da6b0d0cde7fb139e3960c0501f/tartiflette-asgi-0.10.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.11.0": [ { "comment_text": "", "digests": { "md5": "39db19045f41dd5837aa7b5c8a3ac93d", "sha256": "5fea6871af175a8a97d6ef4b3c05f27b398b68e1709938e5baea6534ba6d1ac2" }, "downloads": -1, "filename": "tartiflette_asgi-0.11.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "39db19045f41dd5837aa7b5c8a3ac93d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6", "size": 28481, "upload_time": "2021-10-28T16:32:41", "upload_time_iso_8601": "2021-10-28T16:32:41.435631Z", "url": "https://files.pythonhosted.org/packages/7f/4d/63d94cda4d4642527f7a5af0cd31dea6fa6f3766024442936c3bc5f602fe/tartiflette_asgi-0.11.0-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e3a8eefc82bb2233f913d33ddb865854", "sha256": "559d0773fdd0a0b18c34649aacfc2594efa1edadea6856f406e6495bf62bb418" }, "downloads": -1, "filename": "tartiflette-asgi-0.11.0.tar.gz", "has_sig": false, "md5_digest": "e3a8eefc82bb2233f913d33ddb865854", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 25118, "upload_time": "2021-10-28T16:32:43", "upload_time_iso_8601": "2021-10-28T16:32:43.856140Z", "url": "https://files.pythonhosted.org/packages/8d/0b/f83e22f9454af5732d2d2f082b6f16aa4abcbd775a27cfb0f1853abc9e60/tartiflette-asgi-0.11.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "6f48d1f596867da2ec001c5325fc9be0", "sha256": "971f55b6b488441ec3786fe248733f5a2f6b8b0ada488e3e81f5c15e8e2ead2c" }, "downloads": -1, "filename": "tartiflette_asgi-0.7.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6f48d1f596867da2ec001c5325fc9be0", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6", "size": 18856, "upload_time": "2019-10-27T14:28:36", "upload_time_iso_8601": "2019-10-27T14:28:36.287376Z", "url": "https://files.pythonhosted.org/packages/f5/9a/ba16e5a323a8e8b0625f2898017f8a4d8c6ff64a441db08a5e2c2e30e619/tartiflette_asgi-0.7.0-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "1a6d9141774aba5f61da302759793926", "sha256": "6e78073a7f7599fe9c6e911f56b602e46d8907011eddbe20cb2d6e63bbd06e95" }, "downloads": -1, "filename": "tartiflette-asgi-0.7.0.tar.gz", "has_sig": false, "md5_digest": "1a6d9141774aba5f61da302759793926", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 23788, "upload_time": "2019-10-27T14:28:39", "upload_time_iso_8601": "2019-10-27T14:28:39.431634Z", "url": "https://files.pythonhosted.org/packages/c2/14/71c37764f7e9b067a78aff103238573311dadd67e94c59bf010dbb8123a1/tartiflette-asgi-0.7.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "e79e41e54cfba308cf6fb6c03cfdc9a0", "sha256": "a186d455ab63e3b147f4bcea6efdd6856d099b5c65691738d09e5b64386dc341" }, "downloads": -1, "filename": "tartiflette_asgi-0.7.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e79e41e54cfba308cf6fb6c03cfdc9a0", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6", "size": 18960, "upload_time": "2019-10-28T18:36:36", "upload_time_iso_8601": "2019-10-28T18:36:36.370709Z", "url": "https://files.pythonhosted.org/packages/ff/d7/86063781723740d6dca36c9dfe8888e7d46c120e9b445c8c09cf4f434d8f/tartiflette_asgi-0.7.1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "0111586b3dc3bbb0d35db02b12c08346", "sha256": "a0f3eb1bc7b98c6d5357b1f894e0dfcf9767241ca55dc2fe1ad066a01672f6bb" }, "downloads": -1, "filename": "tartiflette-asgi-0.7.1.tar.gz", "has_sig": false, "md5_digest": "0111586b3dc3bbb0d35db02b12c08346", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 23944, "upload_time": "2019-10-28T18:36:38", "upload_time_iso_8601": "2019-10-28T18:36:38.233456Z", "url": "https://files.pythonhosted.org/packages/2c/97/2244959fef487c364c1eee79d5aba29c45b257e2ec5110b2e86aa252e3ca/tartiflette-asgi-0.7.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "6af99cb8843204eb6cdf463bf2c5af6f", "sha256": "68e155c998502da936a7f7be2123837fbaca4a5f753fdb56f52de88fa73ee60d" }, "downloads": -1, "filename": "tartiflette_asgi-0.8.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6af99cb8843204eb6cdf463bf2c5af6f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6", "size": 14574, "upload_time": "2020-06-04T20:31:45", "upload_time_iso_8601": "2020-06-04T20:31:45.837001Z", "url": "https://files.pythonhosted.org/packages/a0/41/6bf8672cf3896df5d87a0c7e880c0717f94ac064515705ff16e6b5e577ff/tartiflette_asgi-0.8.0-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "feaed73448d2be2cf438a4e9136a450d", "sha256": "609b1ae57faae4c1130fd4fb38ff1f38c15d58dc2226456fb51a08171d1ab350" }, "downloads": -1, "filename": "tartiflette-asgi-0.8.0.tar.gz", "has_sig": false, "md5_digest": "feaed73448d2be2cf438a4e9136a450d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 14974, "upload_time": "2020-06-04T20:31:47", "upload_time_iso_8601": "2020-06-04T20:31:47.786171Z", "url": "https://files.pythonhosted.org/packages/35/0c/cd786f5423a22dd844a60fdb622ab0929d09d29f14cd014b1f451e69d2f7/tartiflette-asgi-0.8.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.0": [ { "comment_text": "", "digests": { "md5": "c7b0b65d37fc2112cd9f3dd77ee8fe1b", "sha256": "20353c398bdabe179c37f2f7dfff002ddd1e2ec7c5c71673b428a48faded55c4" }, "downloads": -1, "filename": "tartiflette_asgi-0.9.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c7b0b65d37fc2112cd9f3dd77ee8fe1b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6", "size": 14456, "upload_time": "2020-06-10T20:24:54", "upload_time_iso_8601": "2020-06-10T20:24:54.116975Z", "url": "https://files.pythonhosted.org/packages/5e/14/98c8bce5e6b352489a49ac92504af89afa44591a4b4d7bef5746eccc9d62/tartiflette_asgi-0.9.0-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "c2ca3fe60efcb07e7c4720091e7e78d6", "sha256": "c8324305e9170b1096df58636ff58d6085a6853c3bfc151702a3a48a12497e52" }, "downloads": -1, "filename": "tartiflette-asgi-0.9.0.tar.gz", "has_sig": false, "md5_digest": "c2ca3fe60efcb07e7c4720091e7e78d6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 15273, "upload_time": "2020-06-10T20:24:55", "upload_time_iso_8601": "2020-06-10T20:24:55.705630Z", "url": "https://files.pythonhosted.org/packages/c4/38/1133782f06765a56073b170f8fb3dc94c7c97af9bc129e7a36852073768d/tartiflette-asgi-0.9.0.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "39db19045f41dd5837aa7b5c8a3ac93d", "sha256": "5fea6871af175a8a97d6ef4b3c05f27b398b68e1709938e5baea6534ba6d1ac2" }, "downloads": -1, "filename": "tartiflette_asgi-0.11.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "39db19045f41dd5837aa7b5c8a3ac93d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6", "size": 28481, "upload_time": "2021-10-28T16:32:41", "upload_time_iso_8601": "2021-10-28T16:32:41.435631Z", "url": "https://files.pythonhosted.org/packages/7f/4d/63d94cda4d4642527f7a5af0cd31dea6fa6f3766024442936c3bc5f602fe/tartiflette_asgi-0.11.0-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e3a8eefc82bb2233f913d33ddb865854", "sha256": "559d0773fdd0a0b18c34649aacfc2594efa1edadea6856f406e6495bf62bb418" }, "downloads": -1, "filename": "tartiflette-asgi-0.11.0.tar.gz", "has_sig": false, "md5_digest": "e3a8eefc82bb2233f913d33ddb865854", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 25118, "upload_time": "2021-10-28T16:32:43", "upload_time_iso_8601": "2021-10-28T16:32:43.856140Z", "url": "https://files.pythonhosted.org/packages/8d/0b/f83e22f9454af5732d2d2f082b6f16aa4abcbd775a27cfb0f1853abc9e60/tartiflette-asgi-0.11.0.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }