{ "info": { "author": "Igor Kasianov", "author_email": "super.hang.glider@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Libraries" ], "description": "# graphene-federation\nFederation support for graphene\n\nBuild: [![CircleCI](https://circleci.com/gh/erebus1/graphene-federation.svg?style=svg)](https://circleci.com/gh/erebus1/graphene-federation)\n\n\nDraft version, of federation specs implementation on top of Python graphene lib \nhttps://www.apollographql.com/docs/apollo-server/federation/federation-spec/\n\nUse at your own risk\n\nBased on discussion: https://github.com/graphql-python/graphene/issues/953#issuecomment-508481652\n\nSupports now:\n* sdl (_service fields) # make possible to add schema in federation (as is)\n* @key decorator (entity support) # to perform Queries across service boundaries\n* extend # extend remote types\n* external # mark field as external \n\nTodo implement:\n* @requires\n* @provides\n\n\n```python\nimport graphene\nfrom graphene_federation import build_schema, key\n\n@key(fields='id') # mark File as Entity and add in EntityUnion https://www.apollographql.com/docs/apollo-server/federation/federation-spec/#key\nclass File(graphene.ObjectType):\n id = graphene.Int(required=True)\n name = graphene.String()\n\n def resolve_id(self, info, **kwargs):\n return 1\n\n def resolve_name(self, info, **kwargs):\n return self.name\n\n def __resolve_reference(self, info, **kwargs): # https://www.apollographql.com/docs/apollo-server/api/apollo-federation/#__resolvereference\n return get_file_by_id(self.id)\n```\n\n\n```python\nimport graphene\nfrom graphene_federation import build_schema\n\n\nclass Query(graphene.ObjectType):\n ...\n pass\n\nschema = build_schema(Query) # add _service{sdl} field in Query\n```\n\n\n```python\nimport graphene\nfrom graphene_federation import external, extend\n\n@extend(fields='id')\nclass Message(graphene.ObjectType):\n id = external(graphene.Int(required=True))\n\n def resolve_id(self, **kwargs):\n return 1\n\n```\nFor more details see [examples](examples/)\n\nOr better check [integration_tests](integration_tests/)\n\nAlso cool [example](https://github.com/erebus1/graphene-federation/issues/1) of integration with Mongoengine\n\n\n### For contribution:\n#### Run tests:\n* `make test`\n* if you've changed Dockerfile or requirements run `make build` before `make test`", "description_content_type": "text/markdown", "docs_url": null, "download_url": "https://github.com/erebus1/graphene-federation/archive/0.0.2.tar.gz", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/erebus1/graphene-federation", "keywords": "graphene,gql,federation", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "graphene-federation", "package_url": "https://pypi.org/project/graphene-federation/", "platform": "", "project_url": "https://pypi.org/project/graphene-federation/", "project_urls": { "Download": "https://github.com/erebus1/graphene-federation/archive/0.0.2.tar.gz", "Homepage": "https://github.com/erebus1/graphene-federation" }, "release_url": "https://pypi.org/project/graphene-federation/0.0.3/", "requires_dist": null, "requires_python": "", "summary": "Federation implementation for graphene", "version": "0.0.3" }, "last_serial": 5986135, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "b1afa2932d419ddffc31f3a435021099", "sha256": "082d328f6c9a7905a5aa0ff71af60c49d872fb44af500f8666e2672a61ddba5f" }, "downloads": -1, "filename": "graphene-federation-0.0.1.tar.gz", "has_sig": false, "md5_digest": "b1afa2932d419ddffc31f3a435021099", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2281, "upload_time": "2019-08-12T00:09:42", "url": "https://files.pythonhosted.org/packages/29/49/24e64e56cad0c54c3ad8e1c8e6cb3582349440d09194a086c31f1203baab/graphene-federation-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "88f2885602164213607765b2029fabd9", "sha256": "a960d920952b540a5f543c66b2de0f5a45d5a6d50d16e41e43c42ea665dd8791" }, "downloads": -1, "filename": "graphene-federation-0.0.2.tar.gz", "has_sig": false, "md5_digest": "88f2885602164213607765b2029fabd9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4455, "upload_time": "2019-08-12T13:45:38", "url": "https://files.pythonhosted.org/packages/a9/cf/6f74d9b1e39cd54c8b305fe5add2564b994fa3849f83f371dd2e2c41929b/graphene-federation-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "29b7819a481432ab100ac79838cf6bad", "sha256": "74b393daf8811fdd10e4b8395f33e3be667e0e4f6f9508c372758f6fd38f03c1" }, "downloads": -1, "filename": "graphene-federation-0.0.3.tar.gz", "has_sig": false, "md5_digest": "29b7819a481432ab100ac79838cf6bad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4496, "upload_time": "2019-10-16T19:56:54", "url": "https://files.pythonhosted.org/packages/f5/fa/0d121060c30cc716e61e6b66af7b9dc94e7a4adf13995dc52dfee9c87a5a/graphene-federation-0.0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "29b7819a481432ab100ac79838cf6bad", "sha256": "74b393daf8811fdd10e4b8395f33e3be667e0e4f6f9508c372758f6fd38f03c1" }, "downloads": -1, "filename": "graphene-federation-0.0.3.tar.gz", "has_sig": false, "md5_digest": "29b7819a481432ab100ac79838cf6bad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4496, "upload_time": "2019-10-16T19:56:54", "url": "https://files.pythonhosted.org/packages/f5/fa/0d121060c30cc716e61e6b66af7b9dc94e7a4adf13995dc52dfee9c87a5a/graphene-federation-0.0.3.tar.gz" } ] }