{ "info": { "author": "Cadel Watson", "author_email": "cadel@cadelwatson.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "===============================\nBoomerang\n===============================\n\n\n.. image:: https://img.shields.io/pypi/v/boomerang.svg\n :target: https://pypi.python.org/pypi/boomerang\n\n.. image:: https://img.shields.io/travis/kdelwat/boomerang.svg\n :target: https://travis-ci.org/kdelwat/boomerang\n\n.. image:: https://readthedocs.org/projects/boomerang/badge/?version=latest\n :target: https://boomerang.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n\n.. image:: https://pyup.io/repos/github/kdelwat/boomerang/shield.svg\n :target: https://pyup.io/repos/github/kdelwat/boomerang/\n :alt: Updates\n\n\nBoomerang is an asynchronous Python library for building services on the\nFacebook Messenger Platform. See the documentation at `ReadTheDocs`_!\n\nWhy should I use Boomerang?\n---------------------------\n* Requests are handled *asynchronously*, allowing for rapid handling of\n callbacks and messages. Boomerang is built on the incredibly fast `Sanic`_\n webserver, `uvloop`_ replacement for ``asyncio``'s event loop, and `aiohttp`_\n for asynchronous HTTP requests.\n* Boomerang has *100% test coverage* and extensive documentation for learners.\n* There are two options for interfacing with the Messenger Platform: use the\n high-level API which introduces abstractions like ``acknowledge``, which\n marks a received message as *seen* and displays a 'typing' icon while\n preparing the actual response; or use the low-level API for more flexibility\n and send actions individually.\n* The library is open-source under the MIT License, and can be used for\n commercial purposes.\n\nWhy shouldn't I use Boomerang?\n------------------------------\n* The library uses Python 3.5's ``async`` and ``await`` syntax, as does the\n underlying Sanic server. If support for older versions is required, Boomerang\n isn't a great fit.\n* Boomerang hosts its own server (Sanic), which allows for tightly-integrated\n and rapid handling. However, if you want to use a different server (like\n Flask), Boomerang isn't suitable.\n\nExample\n-------\n\nThe following example is a simple echo server. When a user sends a message to\nthe bot, the bot echoes the message back::\n\n from boomerang import Messenger, messages, events\n\n # Set the app's API access tokens, provided by Facebook\n VERIFY_TOKEN = 'your_webhook_token_here'\n PAGE_TOKEN = 'your_page_access_token_here'\n\n # Initialise the server\n app = Messenger(VERIFY_TOKEN, PAGE_TOKEN)\n\n @app.handle(events.MESSAGE_RECEIVED)\n async def message_received(self, message):\n\n # Print the received message\n print('Received message from {0}'.format(message.user_id))\n print('> {0}'.format(message.text))\n\n # Inform the sender that their message is being processed\n await self.acknowledge(message)\n\n # Return the message's text to respond\n return message.text\n\n app.run(hostname='0.0.0.0', debug=True)\n\nFeatures\n--------\n\n* Support for the Webhook, Send, Thread Settings, and User Profile APIs.\n* Full support for message templates.\n* High- or low-level interface for sending messages.\n* Automatic attachment hosting: the library can send a local file by serving\n it statically with a unique URL, which is passed to Messenger. This is\n cached meaning files are only served once, helping performance.\n\nCredits\n---------\n\nThis package was created with Cookiecutter_ and the\n`audreyr/cookiecutter-pypackage`_ project template. Cookiecutter is really cool\nand you should check it out!\n\n.. _Sanic: https://github.com/channelcat/sanic\n.. _uvloop: https://github.com/MagicStack/uvloop\n.. _aiohttp: https://github.com/KeepSafe/aiohttp\n.. _ReadTheDocs: https://boomerang.readthedocs.io.\n.. _Cookiecutter: https://github.com/audreyr/cookiecutter\n.. _`audreyr/cookiecutter-pypackage`: https://github.com/audreyr/cookiecutter-pypackage\n\n\n=======\nHistory\n=======\n\n0.6.0 (12-2-2017)\n-----------------\n\n- **BREAKING CHANGE:** Handler functions are no longer overridden in the\n ``Messenger`` class; instead, the ``@app.handle`` decorator is used. See the\n documentation for more details.\n- Handler functions can now simply return responses in a variety of formats,\n which are interpreted and sent as a reply.\n\n0.5.0 (5-2-2017)\n----------------\n\n- Implement the User Profile API.\n\n0.4.0 (5-2-2017)\n----------------\n\n- Implement the Thread Settings API.\n\n0.3.0 (4-2-2017)\n----------------\n\n- Add automatic attachment hosting using the internal server\n- Add proper handling of Messenger API errors\n\n0.2.1 (1-2-2017)\n----------------\n\n- Update dependency versions to fix VersionConflict in Travis CI.\n\n0.2.0 (1-2-2017)\n----------------\n\n- Implement the Send API. All non-beta templates and messages are supported\n (except for the airline templates).\n\n0.1.0 (25-12-2016)\n------------------\n\n- Implement the Webhook API, with handling of all non-beta event types\n excepting the 'message echo' event, which will be added upon completion of\n the Send API implementation.\n\n0.0.0 (22-12-2016)\n------------------\n\n- Initial development version.", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/kdelwat/boomerang", "keywords": "boomerang", "license": "MIT license", "maintainer": "", "maintainer_email": "", "name": "boomerang", "package_url": "https://pypi.org/project/boomerang/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/boomerang/", "project_urls": { "Homepage": "https://github.com/kdelwat/boomerang" }, "release_url": "https://pypi.org/project/boomerang/0.6.0/", "requires_dist": [ "aiohttp", "sanic" ], "requires_python": "", "summary": "An asynchronous Python library for building services on the Facebook Messenger Platform", "version": "0.6.0" }, "last_serial": 2568394, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "87e98c1b18917abc929cd2fca40af3a8", "sha256": "4cc43f3c65f7e97812fa46cc90800acf9bd7cb3895df54dc2d383cbab45122af" }, "downloads": -1, "filename": "boomerang-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "87e98c1b18917abc929cd2fca40af3a8", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 7741, "upload_time": "2016-12-25T05:27:10", "url": "https://files.pythonhosted.org/packages/eb/ef/8fa81b8814b1ff71227a6f130355ca376157906024e86385e6f5015d162b/boomerang-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "59b95f6a92fb907df4b0e3db02f269f6", "sha256": "e80f50df3d0e1b5257372fd1951cf43b1578685cf7ee82c34a95377b47cb7ea6" }, "downloads": -1, "filename": "boomerang-0.1.0.tar.gz", "has_sig": false, "md5_digest": "59b95f6a92fb907df4b0e3db02f269f6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23403, "upload_time": "2016-12-25T05:27:07", "url": "https://files.pythonhosted.org/packages/b2/65/99b9adadafe15c2252414b901ef160c893a97692fc094b557053525e955c/boomerang-0.1.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "165df6b38d396f98fba184e82280a97a", "sha256": "4c186feaca319e6a215aebb2f9e0f596ba90759ff44a3c23316f4e2de490483c" }, "downloads": -1, "filename": "boomerang-0.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "165df6b38d396f98fba184e82280a97a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 12469, "upload_time": "2017-01-02T05:34:08", "url": "https://files.pythonhosted.org/packages/10/02/7a6e46fa7996c5b6aa0a94da8e958befdebd66b840a5988cbcd037b3170c/boomerang-0.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "53413202016753c951e39140d798df6b", "sha256": "1b2e63442656d22d8c964b984a138dc10af14982795c2d906bbfcffa0c804b47" }, "downloads": -1, "filename": "boomerang-0.2.1.tar.gz", "has_sig": false, "md5_digest": "53413202016753c951e39140d798df6b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24057, "upload_time": "2017-01-02T05:34:09", "url": "https://files.pythonhosted.org/packages/d7/76/a432bd005cc122afc63c3ad2257e3496d57c0bb7d241d4b77a235192b72b/boomerang-0.2.1.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "81a7b96fd1accd042d323f04f3fd6255", "sha256": "4649181d84967c818ef8c0f8a483411e15cce43a5c0ff6750955e17c04f67eb4" }, "downloads": -1, "filename": "boomerang-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "81a7b96fd1accd042d323f04f3fd6255", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13457, "upload_time": "2017-01-03T23:46:47", "url": "https://files.pythonhosted.org/packages/c6/26/7c12c21cd6d8ff2cd80710a8050c2ba4962f4b03d2733f2e2f63f6254fbf/boomerang-0.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a8780a0d11bc874d38b3a0cb0ce2da94", "sha256": "b1fb0f0f6ef6c43ce6a12d72f75114ed67a812e6cef8fd447a7323fa6cfa1041" }, "downloads": -1, "filename": "boomerang-0.3.0.tar.gz", "has_sig": false, "md5_digest": "a8780a0d11bc874d38b3a0cb0ce2da94", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25542, "upload_time": "2017-01-03T23:46:49", "url": "https://files.pythonhosted.org/packages/54/51/d8dbb9d1fcc12d8417e6ecc78f3b9d602b71824884d7168f862f1d6d9751/boomerang-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "4c0d40ae9d5b68df06f1987e2c36a4d4", "sha256": "a04da5db07b57c60fa2a7bd981ec3850d6db20e3cb668c06a4924f310cbf0cb5" }, "downloads": -1, "filename": "boomerang-0.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4c0d40ae9d5b68df06f1987e2c36a4d4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14145, "upload_time": "2017-01-05T01:00:42", "url": "https://files.pythonhosted.org/packages/44/45/32adf466352079a39356f8e45abe020fcac563faf638c59ff1cea52ccfc9/boomerang-0.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0a6ca2389dbe77704b7ed9c540adc969", "sha256": "f2ce49828481bc3c314f4d3fad2515bf03307f2411a6191958c6da7f3772b55d" }, "downloads": -1, "filename": "boomerang-0.4.0.tar.gz", "has_sig": false, "md5_digest": "0a6ca2389dbe77704b7ed9c540adc969", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26766, "upload_time": "2017-01-05T01:00:44", "url": "https://files.pythonhosted.org/packages/06/ff/80d7675669325c42a4c0b1d1a9233424fda5a5374ba5499257000d04e5d3/boomerang-0.4.0.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "2faca9e9ad648a9f5eb8059ad2f6f2d6", "sha256": "c3f6eec04aeae5de718711fe659aced8ca9409e52ebe1dbf488756e8ef74bad8" }, "downloads": -1, "filename": "boomerang-0.5.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2faca9e9ad648a9f5eb8059ad2f6f2d6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14461, "upload_time": "2017-01-05T02:13:05", "url": "https://files.pythonhosted.org/packages/ce/12/060e8f5c923d8591988caa0febc55b8eb0bb3bf0a1adeff02419404ca59e/boomerang-0.5.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f43d1c71351adc697270bd1fcee167b3", "sha256": "7117fb651f50ce3f34198031221e5076bf8d86541ea93046e394400c5fccd650" }, "downloads": -1, "filename": "boomerang-0.5.0.tar.gz", "has_sig": false, "md5_digest": "f43d1c71351adc697270bd1fcee167b3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27543, "upload_time": "2017-01-05T02:13:09", "url": "https://files.pythonhosted.org/packages/30/86/58521a0e8e0fa111ed5376cd651333ae4a3a5bbb32de67cc8895473390f2/boomerang-0.5.0.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "29b4ef4426739d68b628cd90dc7f4e79", "sha256": "7958f5fa204e5a05d0545020016507cc34371abe37773aad84d12422e0955dda" }, "downloads": -1, "filename": "boomerang-0.6.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "29b4ef4426739d68b628cd90dc7f4e79", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 18001, "upload_time": "2017-01-11T23:16:48", "url": "https://files.pythonhosted.org/packages/6a/71/bdeaddd9673754a0bf3d76d3fea59a91bd7b045bb1de1fb85040299cdd1b/boomerang-0.6.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c8c5a89839f8cedbb34dbf320feebefc", "sha256": "bc610d2b166172dab99fbc99269efe78028ccef573fd705a7aa249d62f9f19c9" }, "downloads": -1, "filename": "boomerang-0.6.0.tar.gz", "has_sig": false, "md5_digest": "c8c5a89839f8cedbb34dbf320feebefc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33250, "upload_time": "2017-01-11T23:16:49", "url": "https://files.pythonhosted.org/packages/80/44/c7cfeb9dcacc87708520782a30f4c9f03584129b0506de65d3aba78b2607/boomerang-0.6.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "29b4ef4426739d68b628cd90dc7f4e79", "sha256": "7958f5fa204e5a05d0545020016507cc34371abe37773aad84d12422e0955dda" }, "downloads": -1, "filename": "boomerang-0.6.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "29b4ef4426739d68b628cd90dc7f4e79", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 18001, "upload_time": "2017-01-11T23:16:48", "url": "https://files.pythonhosted.org/packages/6a/71/bdeaddd9673754a0bf3d76d3fea59a91bd7b045bb1de1fb85040299cdd1b/boomerang-0.6.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c8c5a89839f8cedbb34dbf320feebefc", "sha256": "bc610d2b166172dab99fbc99269efe78028ccef573fd705a7aa249d62f9f19c9" }, "downloads": -1, "filename": "boomerang-0.6.0.tar.gz", "has_sig": false, "md5_digest": "c8c5a89839f8cedbb34dbf320feebefc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33250, "upload_time": "2017-01-11T23:16:49", "url": "https://files.pythonhosted.org/packages/80/44/c7cfeb9dcacc87708520782a30f4c9f03584129b0506de65d3aba78b2607/boomerang-0.6.0.tar.gz" } ] }