{ "info": { "author": "Christophe Gabard / papernest", "author_email": "christophe.gabard@papernest.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: CPython" ], "description": "\naio-sf-streaming\n================\n\n.. image:: https://badge.fury.io/py/aio-sf-streaming.svg\n :target: https://badge.fury.io/py/aio-sf-streaming\n :alt: Last release\n\n.. image:: https://readthedocs.org/projects/aio-sf-streaming/badge/?version=latest\n :target: http://aio-sf-streaming.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n\n.. image:: https://travis-ci.org/papernest-public/aio_sf_streaming.svg?branch=master\n :target: https://travis-ci.org/papernest-public/aio_sf_streaming\n :alt: Build\n\n.. image:: https://coveralls.io/repos/github/papernest-public/aio_sf_streaming/badge.svg\n :target: https://coveralls.io/github/papernest-public/aio_sf_streaming\n :alt: Coverage\n\n.. image:: https://api.codeclimate.com/v1/badges/e0c891514893bdd4c22f/maintainability\n :target: https://codeclimate.com/github/papernest-public/aio_sf_streaming/maintainability\n :alt: Maintainability\n\n.. image:: https://requires.io/github/papernest-public/aio_sf_streaming/requirements.svg?branch=master\n :target: https://requires.io/github/papernest-public/aio_sf_streaming/requirements/?branch=master\n :alt: Requirements Status\n\n.. image:: https://img.shields.io/badge/License-MIT-yellow.svg\n :target: https://opensource.org/licenses/MIT\n :alt: MIT license\n\n*aio-sf-streaming* is a simple Python 3.6 asyncio library allowing to connect\nand receive live notifications from Salesforce. This library is provided to\nyou by `papernest `_.\n\nSee `The Force.com streaming API developer guide `_\nfor more information about the different uses cases and how configure your\nSalesforce organization.\n\n\nFeature\n-------\n\n- `asyncio `_ compatible library\n- Authentication with username/password or refresh token\n- Subscribe to push topics and custom events\n- Receive events pushed by Salesforce\n- Auto-reconnect after too many time of inactivity\n- Replay support: replay events missed while your client is disconnected (see\n `Force.com documentation `_\n for more information).\n\n*aio-sf-streaming* only support Python 3.6.\n\n\nGetting started\n---------------\n\nSimple use case:\n\n.. code-block:: python\n\n import asyncio\n from aio_sf_streaming import SimpleSalesforceStreaming\n\n async def print_event():\n # Create client and connect\n async with SimpleSalesforceStreaming(\n username='my-username',\n password='my-password',\n client_id='my-client-id',\n client_secret='my-client-secret') as client:\n # Subscribe to some push topics\n await client.subscribe('/topic/Foo')\n await client.subscribe('/topic/Bar')\n async for message in client.events():\n print(message)\n # client will wait indefinitely, you can ask to exit\n if message['channel'] == '/topic/Bar':\n break\n else:\n # You can unsubscribe when you want, too\n await client.unsubscribe('/topic/Foo')\n\n loop = asyncio.get_event_loop()\n loop.run_until_complete(print_event())\n\n\nInstallation\n------------\n\nSimply use ``pip``:\n\n.. code-block:: bash\n\n $ pip install aio-sf-streaming\n\n\nDocumentation\n-------------\n\nAn `online documentation is available `_.\n\n\nEvolution\n---------\n\nThe library work well for our use-case then we does not plan a lot of new\nfeatures.\n\n\nContributing\n------------\n\nIf you find any problem, feel free to fill an issue. Pull-Request are also\nwelcomed.\n\nYou can install development dependencies with:\n\n.. code-block:: bash\n\n $ pip install -e .[tests,docs]\n\nRelease history\n---------------\n\n- **v. 0.3.0**: Remove date-time parsing of the replay mixin, allow client to\n customize ``ReSubscribeMixin`` retry conditions, allow retry conditions to\n extend duration.\n- **v. 0.2.0**: Add refresh token authentication\n- **v. 0.1.1**: Add documentation and initial typing information.\n- **v. 0.1.0**: Initial release.\n\n\nLicense\n=======\n\n``aio-sf-streaming`` is offered under the MIT license.\n\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/papernest-public/aio_sf_streaming", "keywords": "asyncio aiohttp streaming saleforce push notification", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "aio-sf-streaming", "package_url": "https://pypi.org/project/aio-sf-streaming/", "platform": "", "project_url": "https://pypi.org/project/aio-sf-streaming/", "project_urls": { "Homepage": "https://github.com/papernest-public/aio_sf_streaming" }, "release_url": "https://pypi.org/project/aio-sf-streaming/0.3.4/", "requires_dist": [ "aiohttp (<4,>=3)", "sphinx; extra == 'docs'", "sphinx-autobuild; extra == 'docs'", "sphinxcontrib-asyncio; extra == 'docs'", "sphinx-autodoc-typehints; extra == 'docs'", "pytest (<4,>=3); extra == 'tests'", "pytest-cov; extra == 'tests'", "pytest-asyncio; extra == 'tests'", "asynctest; extra == 'tests'", "coverage; extra == 'tests'" ], "requires_python": ">=3.6.0", "summary": "aio_sf_streaming is a simple Python 3.6 asyncio library allowing to connect and receive live notifications from Salesforce.", "version": "0.3.4" }, "last_serial": 4292122, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "2c97cb52b700f05b5cb41e620ba74cce", "sha256": "eeb993486fccacade21cdb1702ec6ec0b4c6816b115ee8be1972af6b7df7780c" }, "downloads": -1, "filename": "aio_sf_streaming-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "2c97cb52b700f05b5cb41e620ba74cce", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 23331, "upload_time": "2018-03-15T19:14:28", "url": "https://files.pythonhosted.org/packages/c2/4e/b1f71de410dbd3c5fa074191185419432a215e1e713bf068a141f3478427/aio_sf_streaming-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f0700f8110fc13a9a153b9154244ba2a", "sha256": "8dbda31b2b4d33ca0849383ae6438204358fcec925582390c0d915f08b99cc4d" }, "downloads": -1, "filename": "aio_sf_streaming-0.1.0.tar.gz", "has_sig": false, "md5_digest": "f0700f8110fc13a9a153b9154244ba2a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 18171, "upload_time": "2018-03-15T19:14:31", "url": "https://files.pythonhosted.org/packages/f6/8d/dbf894f0a4b6f01dc9639a2e891fc88d4d231d8fc9061a00ac52acfad302/aio_sf_streaming-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "4875b637d357964eb9a13cbb0158d58b", "sha256": "efe2a0ca0f12e3cd3b7fd3dccd02967d4ea7198aa7282e18ef025ff569c74f1f" }, "downloads": -1, "filename": "aio_sf_streaming-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "4875b637d357964eb9a13cbb0158d58b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 26491, "upload_time": "2018-03-17T17:17:50", "url": "https://files.pythonhosted.org/packages/72/3f/0108a5367ffb2976a6cf23c18a78c194f5b3fa2cede92052ba46466393d6/aio_sf_streaming-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e32f8c26dc099f583b0b0e88c8702d38", "sha256": "01052870816251beb358c39416dd9c9b2e0e8d8c010f1b75b2b11e99233086ef" }, "downloads": -1, "filename": "aio_sf_streaming-0.1.1.tar.gz", "has_sig": false, "md5_digest": "e32f8c26dc099f583b0b0e88c8702d38", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 21300, "upload_time": "2018-03-17T17:17:52", "url": "https://files.pythonhosted.org/packages/af/69/418357aa68eb39176675d5d58785b9a8df34ff306f6f7d0f5c84562af6b5/aio_sf_streaming-0.1.1.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "373631c211fe1eeef3c3405d90fee57d", "sha256": "d96c54ebb6116ca5098745a06edc92c2ceaa2c0cb9f7cd342c5742160eda5cd8" }, "downloads": -1, "filename": "aio_sf_streaming-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "373631c211fe1eeef3c3405d90fee57d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 26816, "upload_time": "2018-03-28T21:02:05", "url": "https://files.pythonhosted.org/packages/1b/d3/4b3c5697672dd141d2d15c33e44ef1283be318f6321fc1c5aec6d9bf56fa/aio_sf_streaming-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "404a1965b54611aedcf3f9e18b4bc69f", "sha256": "0f92857f0f04ad8eda163c78fdb4fc607af9540cd3701b3660e22d325ab160da" }, "downloads": -1, "filename": "aio_sf_streaming-0.2.0.tar.gz", "has_sig": false, "md5_digest": "404a1965b54611aedcf3f9e18b4bc69f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 21683, "upload_time": "2018-03-28T21:02:06", "url": "https://files.pythonhosted.org/packages/3b/57/ff06380e517052322ebf613620278a3432114912a6d1f4b0a1641d82e73f/aio_sf_streaming-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "6fe001138b54a181aefb3cb050edad5a", "sha256": "94573ddf6b23a370e52d48bb6bada7b06e1095dcc3df872511ac2662f4b3d11a" }, "downloads": -1, "filename": "aio_sf_streaming-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "6fe001138b54a181aefb3cb050edad5a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 27596, "upload_time": "2018-06-13T17:25:20", "url": "https://files.pythonhosted.org/packages/f8/44/9f962438ba2286892359fcca76db9cc0c957278b9c1095d59533bd24d98c/aio_sf_streaming-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d064e0b9ba514b645929d918ed24a24d", "sha256": "fb8e4c52c1037ef1817b8128de4cef2e7e4d1ab7409fb988bff326af02d88fff" }, "downloads": -1, "filename": "aio_sf_streaming-0.3.0.tar.gz", "has_sig": false, "md5_digest": "d064e0b9ba514b645929d918ed24a24d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 22186, "upload_time": "2018-06-13T17:25:21", "url": "https://files.pythonhosted.org/packages/17/8e/66390ce2370b8c9968b466839c502874a8f83a9f8d130efd01be8f59bc64/aio_sf_streaming-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "1cfa54e1576958d5375ba17f7fee3174", "sha256": "c92106222932badf3f97670c959862999ac649d874659ffa3e00462f4693c386" }, "downloads": -1, "filename": "aio_sf_streaming-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "1cfa54e1576958d5375ba17f7fee3174", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 27758, "upload_time": "2018-06-20T17:40:45", "url": "https://files.pythonhosted.org/packages/35/dd/cee1396497b5d61d69abd6333426ce8fe6787f8d02d318ea32f4842a5660/aio_sf_streaming-0.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f4e23872e578643c540cb91d188a1295", "sha256": "caf334e7bdccb7672176f82f388268326180e8fe8cc8ea41cbe6cff4700b2c53" }, "downloads": -1, "filename": "aio_sf_streaming-0.3.1.tar.gz", "has_sig": false, "md5_digest": "f4e23872e578643c540cb91d188a1295", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 22239, "upload_time": "2018-06-20T17:40:46", "url": "https://files.pythonhosted.org/packages/40/6d/586d84d5024f03e3a2ef1261526a6eeb2838c23472c3ab3a8f660ac37bd7/aio_sf_streaming-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "32b1e811a3338e708decb06b52164f89", "sha256": "ed6c6bde4a956941ad4c608531b3d3d4654747224104697048ad0444fb2207cd" }, "downloads": -1, "filename": "aio_sf_streaming-0.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "32b1e811a3338e708decb06b52164f89", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 25048, "upload_time": "2018-07-30T15:24:49", "url": "https://files.pythonhosted.org/packages/85/85/8533ea80b7e4ff95be5c70fb6c7d8bb377f569b0d2dd5e612ea740b3d8c8/aio_sf_streaming-0.3.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "22db39f695cf3aee4e81136b54bfe685", "sha256": "7d00bcd27c44abb0fab8bfaf4372a8fcccccc5c59035d6135a24ee3be6253510" }, "downloads": -1, "filename": "aio_sf_streaming-0.3.2.tar.gz", "has_sig": false, "md5_digest": "22db39f695cf3aee4e81136b54bfe685", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 22252, "upload_time": "2018-07-30T15:24:51", "url": "https://files.pythonhosted.org/packages/6a/b9/0a2ce43a9f8732e2dcca0b49d09e599af8343857c256204374e240ba629c/aio_sf_streaming-0.3.2.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "95a0aae557309a082d6c96ed009e5c7b", "sha256": "ff8d6f0776795c20c0b4789fcee4e94fadca6fb40f0f4d227df48fbebea87c85" }, "downloads": -1, "filename": "aio_sf_streaming-0.3.3-py3-none-any.whl", "has_sig": false, "md5_digest": "95a0aae557309a082d6c96ed009e5c7b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 25057, "upload_time": "2018-08-07T12:32:10", "url": "https://files.pythonhosted.org/packages/04/c0/ba4dd318e562377f02b1a777ae06ea7ff74f6a9bc8755d60f18cfc6d57dc/aio_sf_streaming-0.3.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5feca14f76c67c8b3a669e3d2156b926", "sha256": "f7004a68c12d8e33467126ef950ba469be2b94facfc348b85c2bc7a2f9d6d259" }, "downloads": -1, "filename": "aio_sf_streaming-0.3.3.tar.gz", "has_sig": false, "md5_digest": "5feca14f76c67c8b3a669e3d2156b926", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 22249, "upload_time": "2018-08-07T12:32:12", "url": "https://files.pythonhosted.org/packages/87/4d/3ae7038088b24ba033142b5effa64c126edafb3adba570141c1b8ed8de6d/aio_sf_streaming-0.3.3.tar.gz" } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "3b913128e361a031704991ec26cdbe80", "sha256": "fe7c943b1b28e987c34ee5044ec86db484150da8486738dff426a49089d0c3e4" }, "downloads": -1, "filename": "aio_sf_streaming-0.3.4-py3-none-any.whl", "has_sig": false, "md5_digest": "3b913128e361a031704991ec26cdbe80", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 25085, "upload_time": "2018-09-20T10:26:24", "url": "https://files.pythonhosted.org/packages/6c/cc/2a486278cccefb06de277e4972e17b83539895de03f00e98b71ec7ba8356/aio_sf_streaming-0.3.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a2b00be947e6ccf381533eb1bead8392", "sha256": "7dac273ab02b39873a30526b4ce20849ae25c5d95ca1d4f212f417c77116b30b" }, "downloads": -1, "filename": "aio_sf_streaming-0.3.4.tar.gz", "has_sig": false, "md5_digest": "a2b00be947e6ccf381533eb1bead8392", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 22320, "upload_time": "2018-09-20T10:26:26", "url": "https://files.pythonhosted.org/packages/43/7c/8d0a90abf24cf1e7223e049a645589cd2c749dea1e8c5822a712c62a193d/aio_sf_streaming-0.3.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3b913128e361a031704991ec26cdbe80", "sha256": "fe7c943b1b28e987c34ee5044ec86db484150da8486738dff426a49089d0c3e4" }, "downloads": -1, "filename": "aio_sf_streaming-0.3.4-py3-none-any.whl", "has_sig": false, "md5_digest": "3b913128e361a031704991ec26cdbe80", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 25085, "upload_time": "2018-09-20T10:26:24", "url": "https://files.pythonhosted.org/packages/6c/cc/2a486278cccefb06de277e4972e17b83539895de03f00e98b71ec7ba8356/aio_sf_streaming-0.3.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a2b00be947e6ccf381533eb1bead8392", "sha256": "7dac273ab02b39873a30526b4ce20849ae25c5d95ca1d4f212f417c77116b30b" }, "downloads": -1, "filename": "aio_sf_streaming-0.3.4.tar.gz", "has_sig": false, "md5_digest": "a2b00be947e6ccf381533eb1bead8392", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 22320, "upload_time": "2018-09-20T10:26:26", "url": "https://files.pythonhosted.org/packages/43/7c/8d0a90abf24cf1e7223e049a645589cd2c749dea1e8c5822a712c62a193d/aio_sf_streaming-0.3.4.tar.gz" } ] }