{ "info": { "author": "Expo Team", "author_email": "exponent.team@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "# aioexponent\n\nIf you have problems with the code in this repository, please file an issue or a pull-request. Thanks!\n\n## Installation\n\n```\npip install aioexponent\n```\n\n## Usage\n\nUse to send push notifications to Exponent Experiences from a Python server.\n\n[Full documentation](https://docs.expo.io/versions/latest/guides/push-notifications.html#http2-api) on the API is available if you want to dive into the details.\n\nHere's an example on how to use this with retries and reporting via [pyrollbar](https://github.com/rollbar/pyrollbar).\n```python\nfrom aioexponent import DeviceNotRegisteredError\nfrom aioexponent import PushClient\nfrom aioexponent import PushMessage\nfrom aioexponent import PushResponseError\nfrom aioexponent import PushServerError\nfrom aiohttp import ClientError\n\n\n# Basic arguments. You should extend this function with the push features you\n# want to use, or simply pass in a `PushMessage` object.\nasync def send_push_message(tokens, message, extra=None):\n client = PushClient()\n try:\n response = await client.publish_multiple([\n PushMessage(to=token,\n body=message,\n data=extra) for token in tokens])\n except PushServerError as exc:\n # Encountered some likely formatting/validation error.\n rollbar.report_exc_info(\n extra_data={\n 'tokens': tokens, 'message': message, 'extra': extra\n 'errors': exc.errors,\n 'response_data': exc.response_data,\n })\n raise\n except (ClientError) as exc:\n # Encountered some Connection or HTTP error - retry a few times in\n # case it is transient.\n rollbar.report_exc_info(\n extra_data={'tokens': tokens, 'message': message, 'extra': extra})\n raise retry(exc=exc)\n\n try:\n # We got a response back, but we don't know whether it's an error yet.\n # This call raises errors so we can handle them with normal exception\n # flows.\n response.validate_response()\n except DeviceNotRegisteredError:\n # Mark the push token as inactive\n from notifications.models import PushToken\n PushToken.objects.filter(token=token).update(active=False)\n except PushResponseError as exc:\n # Encountered some other per-notification error.\n rollbar.report_exc_info(\n extra_data={\n 'tokens': tokens,\n 'message': message,\n 'extra': extra,\n 'push_response': exc.push_response._asdict(),\n })\n raise retry(exc=exc)\n```\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/Chefclub/expo-server-sdk-asyncio", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "aioexponent", "package_url": "https://pypi.org/project/aioexponent/", "platform": "", "project_url": "https://pypi.org/project/aioexponent/", "project_urls": { "Homepage": "https://github.com/Chefclub/expo-server-sdk-asyncio" }, "release_url": "https://pypi.org/project/aioexponent/0.5.2/", "requires_dist": [ "aiohttp" ], "requires_python": "", "summary": "Expo Server SDK for Python Asyncio", "version": "0.5.2" }, "last_serial": 4758889, "releases": { "0.3.0": [ { "comment_text": "", "digests": { "md5": "1d0dda99fa605b76c01ebac02836379d", "sha256": "f238aa6bc8e35ba3aad47580694fad213afdbaab146f8015b60685301f86d7a0" }, "downloads": -1, "filename": "aioexponent-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "1d0dda99fa605b76c01ebac02836379d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8447, "upload_time": "2018-11-09T14:51:13", "url": "https://files.pythonhosted.org/packages/5f/a4/12facfeece3bc17ce4666bb01c2a4a8192628149205b926cdd8666a1211b/aioexponent-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ab739d17d355d6566c5d7691a233271a", "sha256": "46ca487a1976ebb2a830d43281060eea383bb68184d9109aab5d7ab68fd51aac" }, "downloads": -1, "filename": "aioexponent-0.3.0.tar.gz", "has_sig": false, "md5_digest": "ab739d17d355d6566c5d7691a233271a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5953, "upload_time": "2018-11-09T14:51:15", "url": "https://files.pythonhosted.org/packages/69/8d/9e50e58b97fb2f9eeeadd689baf3747c0f261b3ec78180f47bf233c8f62a/aioexponent-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "005c2b181d45878566abcc5b0b869cf2", "sha256": "8b8ab3251b3b3ac8e7f479ceca3c7148f17fe0884ee83cdbd07fcb51265fa659" }, "downloads": -1, "filename": "aioexponent-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "005c2b181d45878566abcc5b0b869cf2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8469, "upload_time": "2019-01-29T19:29:08", "url": "https://files.pythonhosted.org/packages/2c/f1/19abc68b7a0dbd4b5734e3033bcda302931df57a2933e64315b81a622a7d/aioexponent-0.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "43c97d268c68b37ee3e57a937042eb63", "sha256": "2e2c832f0edfda5133cdc8dde23df84bc65451a4139e212edcfce020d591e081" }, "downloads": -1, "filename": "aioexponent-0.4.0.tar.gz", "has_sig": false, "md5_digest": "43c97d268c68b37ee3e57a937042eb63", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5993, "upload_time": "2019-01-29T19:29:10", "url": "https://files.pythonhosted.org/packages/28/87/e5ccf5e6b48dad89eacc9f7c3b8361c960f1003c4bd77a2409d388670741/aioexponent-0.4.0.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "5a34d18d0b2e175129433acd5effd95c", "sha256": "c61f48ba1a0e72212061b687f6170893b0e82f291c940bf696eecbdd3377b7f2" }, "downloads": -1, "filename": "aioexponent-0.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "5a34d18d0b2e175129433acd5effd95c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8427, "upload_time": "2019-01-30T09:10:48", "url": "https://files.pythonhosted.org/packages/0b/ab/5e08227f06a1b03f6ac216cd5ca7c978662960fd3d85fbe73935af40e644/aioexponent-0.5.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "320a1957b3aa795c910aaaf1fe7d7264", "sha256": "1ecbc02be2983a22d4dc9cae96ee22e8345a3f095caa53570a1b6ddad42ba122" }, "downloads": -1, "filename": "aioexponent-0.5.0.tar.gz", "has_sig": false, "md5_digest": "320a1957b3aa795c910aaaf1fe7d7264", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5946, "upload_time": "2019-01-30T09:10:49", "url": "https://files.pythonhosted.org/packages/67/24/6cfa984e59190089e109ffdcffbdd9865adfc482b0db2f9d85b7bbbf02f7/aioexponent-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "01c827d515bcd5ae7ff2a377213644ae", "sha256": "0d0cbad53dd20d1418f5747cb6eafb71af58b3e94a55fd0205406d32c6439508" }, "downloads": -1, "filename": "aioexponent-0.5.1-py3-none-any.whl", "has_sig": false, "md5_digest": "01c827d515bcd5ae7ff2a377213644ae", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8431, "upload_time": "2019-01-30T09:34:29", "url": "https://files.pythonhosted.org/packages/90/3c/d1f4c45da492ad06334f16963026ab20e57e77af36928c8e9358f9d65569/aioexponent-0.5.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "761d5caa2bb8950fba76fc43e7f238fb", "sha256": "2e341065fac25860cbdc578aa951451d50903141806ba65091c2c59b8f77b730" }, "downloads": -1, "filename": "aioexponent-0.5.1.tar.gz", "has_sig": false, "md5_digest": "761d5caa2bb8950fba76fc43e7f238fb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5953, "upload_time": "2019-01-30T09:34:30", "url": "https://files.pythonhosted.org/packages/3a/0e/d305e335da4896422e66a7fd887f744ad2a31854aa075735aaf5b3320259/aioexponent-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "1387c11bdc90f508bfccff4383f77184", "sha256": "335d7cbb83c22ab5bfeb34c89800a86fc845af55f0bbcdf0cbe5e9bb98df96ef" }, "downloads": -1, "filename": "aioexponent-0.5.2-py3-none-any.whl", "has_sig": false, "md5_digest": "1387c11bdc90f508bfccff4383f77184", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7479, "upload_time": "2019-01-30T09:37:50", "url": "https://files.pythonhosted.org/packages/41/76/3f8e9001758f694b7d0fafa2735be3c9027caf80e1efec06ce79617e8305/aioexponent-0.5.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0935691bb562ee1cb9391ca40d670890", "sha256": "20aa0724f0e1370f770142995556b3cd1b4a8b30800cc0a1e2485230ce30815a" }, "downloads": -1, "filename": "aioexponent-0.5.2.tar.gz", "has_sig": false, "md5_digest": "0935691bb562ee1cb9391ca40d670890", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5945, "upload_time": "2019-01-30T09:37:51", "url": "https://files.pythonhosted.org/packages/fe/a7/3bfb4177dea1872b390dda0a30abea36abf72eb21729dc6a39992013740b/aioexponent-0.5.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "1387c11bdc90f508bfccff4383f77184", "sha256": "335d7cbb83c22ab5bfeb34c89800a86fc845af55f0bbcdf0cbe5e9bb98df96ef" }, "downloads": -1, "filename": "aioexponent-0.5.2-py3-none-any.whl", "has_sig": false, "md5_digest": "1387c11bdc90f508bfccff4383f77184", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7479, "upload_time": "2019-01-30T09:37:50", "url": "https://files.pythonhosted.org/packages/41/76/3f8e9001758f694b7d0fafa2735be3c9027caf80e1efec06ce79617e8305/aioexponent-0.5.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0935691bb562ee1cb9391ca40d670890", "sha256": "20aa0724f0e1370f770142995556b3cd1b4a8b30800cc0a1e2485230ce30815a" }, "downloads": -1, "filename": "aioexponent-0.5.2.tar.gz", "has_sig": false, "md5_digest": "0935691bb562ee1cb9391ca40d670890", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5945, "upload_time": "2019-01-30T09:37:51", "url": "https://files.pythonhosted.org/packages/fe/a7/3bfb4177dea1872b390dda0a30abea36abf72eb21729dc6a39992013740b/aioexponent-0.5.2.tar.gz" } ] }