{ "info": { "author": "Tobias Kunze", "author_email": "tobias.kunze@ax-semantics.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Web Environment", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Internet :: WWW/HTTP" ], "description": "rohrpost |travis| |coveralls| |pypi|\n====================================\n\n`rohrpost` is a simple WebSocket protocol that works well with Django_ using\nChannels_. It will interface with every service implementing the ASGI_\nspecification (which, at the moment, is primarily Channels_ with Daphne_).\n\nThe client implementation is rohrpost-js_.\n\n**NOTE:** The master branch of this repo represents our work towards rohrpost 2.\nYou can find the code for the stable release in branch `1.x`.\n\nCapabilities\n------------\n\n`rohrpost` specifies a very simple protocol with messages looking like this:\n\n.. code:: JSON\n\n {\n \"id\": 123,\n \"type\": \"ping\",\n \"data\": \"something\",\n }\n\nThis message will be handled by the ping handler (which rohrpost provides out\nof the box). You can add custom handlers using a method decorator. Please see\n`our documentation`_ for details on the protocol and handler implementation.\n\n`rohrpost` also provides a mixin for Django_ models to push notifications on\nchanges (create, update, delete).\n\nInstallation\n------------\n\nFrom the command line::\n\n pip install rohrpost\n\nOr add this line to your `requirements.txt`::\n\n rohrpost==1.x\n\nDevelopment\n-----------\n\nFor development you'll need to have the test environment installed. This is\nrather large since `rohrpost` works mainly in conjunction with Channels_,\nDaphne_, Django_ and so on. ::\n\n pip install -r requirements/dev.txt\n\nRun tests and style checks in this directory::\n\n py.test\n pylava\n isort -rc .\n black rohrpost tests\n\n\n.. _ASGI: https://channels.readthedocs.io/en/latest/asgi.html\n.. _Channels: https://github.com/django/channels\n.. _Daphne: https://github.com/django/daphne/\n.. _Django: https://www.djangoproject.com/\n.. _rohrpost-js: https://github.com/axsemantics/rohrpost-js\n.. _our documentation: https://rohrpost.readthedocs.io\n.. |travis| image:: https://travis-ci.org/axsemantics/rohrpost.svg?branch=master\n :target: https://travis-ci.org/axsemantics/rohrpost\n.. |coveralls| image:: https://coveralls.io/repos/github/axsemantics/rohrpost/badge.svg?branch=master\n :target: https://coveralls.io/github/axsemantics/rohrpost?branch=master\n.. |pypi| image:: https://img.shields.io/pypi/v/rohrpost.svg\n :target: https://pypi.python.org/pypi/rohrpost/\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/axsemantics/rohrpost", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "rohrpost", "package_url": "https://pypi.org/project/rohrpost/", "platform": "", "project_url": "https://pypi.org/project/rohrpost/", "project_urls": { "Homepage": "https://github.com/axsemantics/rohrpost" }, "release_url": "https://pypi.org/project/rohrpost/2.0.0/", "requires_dist": [ "channels (>=2.0)" ], "requires_python": ">=3.5", "summary": "rohrpost WebSocket protocol for ASGI", "version": "2.0.0" }, "last_serial": 4319351, "releases": { "0.0.0": [], "1.0.0": [ { "comment_text": "", "digests": { "md5": "872402ef0fa9c1465dda8e1478b67bac", "sha256": "4a54bcb11e7c5289a7b8b13edd8309e4c72c5e94268ab86f8cb6e69667c8debb" }, "downloads": -1, "filename": "rohrpost-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "872402ef0fa9c1465dda8e1478b67bac", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5911, "upload_time": "2018-08-29T10:59:01", "url": "https://files.pythonhosted.org/packages/37/b4/0d71589cafc49448f521324e8f77014a5e109f07f7fac884bf37faffa85b/rohrpost-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c2335cc404de93ab000915800a7f0a29", "sha256": "cba9760bc820c8152fbd3ed038fb32b480c8432af4462f566c37f766ea8a2b92" }, "downloads": -1, "filename": "rohrpost-1.0.0.tar.gz", "has_sig": false, "md5_digest": "c2335cc404de93ab000915800a7f0a29", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5009, "upload_time": "2018-08-29T10:59:02", "url": "https://files.pythonhosted.org/packages/25/e8/e7d73b261637253b43c29a602575b0cec5bc630016120d98e808d8432f50/rohrpost-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "e902c45558a2e8cad94d611d4a97cc77", "sha256": "26bc8d768d5101cdf1864fe876ab79daa1aaa86c646103a3305d37d95c6b5254" }, "downloads": -1, "filename": "rohrpost-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "e902c45558a2e8cad94d611d4a97cc77", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6780, "upload_time": "2018-08-29T13:46:47", "url": "https://files.pythonhosted.org/packages/f8/91/398934d03bd73776aa883bd669a68bb7ca74670f13ecc122ceb56f1c56b4/rohrpost-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "edb762e32573cadb5d9322f6efa7a9af", "sha256": "6089231c6c964a6d63825f2218c7e680b6b66470905ea2250cd9d1fbccb1030f" }, "downloads": -1, "filename": "rohrpost-1.0.1.tar.gz", "has_sig": false, "md5_digest": "edb762e32573cadb5d9322f6efa7a9af", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5319, "upload_time": "2018-08-29T13:46:48", "url": "https://files.pythonhosted.org/packages/8a/62/c9db43fc2c03c68493b69b7b76f07d5a7d4afe082ac726e720333b1cde84/rohrpost-1.0.1.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "82c57adeaeb7383e40db86fe74b164e0", "sha256": "465a428d72258b657bafc59c7532e37d16d7820ef547df1ab9ec4275e15f89e7" }, "downloads": -1, "filename": "rohrpost-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "82c57adeaeb7383e40db86fe74b164e0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 7105, "upload_time": "2018-08-29T16:40:54", "url": "https://files.pythonhosted.org/packages/f1/59/e2959834f5ac5fabb57e314821c4819090d1e3edac5d9ecd1115fa08d9d9/rohrpost-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f45a028d84c873cab2e48c153c9ecd1c", "sha256": "4b390ce1e0b77e6f0fd6a16f1105466d1c1c875e3bb9bda7b616bffce454d922" }, "downloads": -1, "filename": "rohrpost-1.1.0.tar.gz", "has_sig": false, "md5_digest": "f45a028d84c873cab2e48c153c9ecd1c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 5657, "upload_time": "2018-08-29T16:40:56", "url": "https://files.pythonhosted.org/packages/f5/8a/14b8ead47c505b0984ba927f8ddb53615a2af9f44f24ed71918ff3ed0c8c/rohrpost-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "d8497c6d517e20063e7f7a9f67626904", "sha256": "17b8d8aeec71c8462a2c659e33774a41e296619a0397124f6f7a23f6fdb2be1f" }, "downloads": -1, "filename": "rohrpost-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "d8497c6d517e20063e7f7a9f67626904", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 7094, "upload_time": "2018-08-31T09:16:14", "url": "https://files.pythonhosted.org/packages/df/6a/d3fe501b290931056613e9a3deee3de2a6beb7fac14ec22d60340ebd99a8/rohrpost-1.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7ec3b2129874bc79c889fe6745722acb", "sha256": "093ed1fcf399b134a133e78b1dd72175ac4b11e5c603f7b0842074a50d6df444" }, "downloads": -1, "filename": "rohrpost-1.1.1.tar.gz", "has_sig": false, "md5_digest": "7ec3b2129874bc79c889fe6745722acb", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 5652, "upload_time": "2018-08-31T09:16:16", "url": "https://files.pythonhosted.org/packages/e2/08/5c654f17b1a294a6b935d2404df3e6f734d1193696455b2d2d0511cb909b/rohrpost-1.1.1.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "d9874eefc87e308b6918aa90239f189a", "sha256": "6179677e265f4d9aedd971c69cb9f95aa851e5e8a27b77e62fa0375b187b134a" }, "downloads": -1, "filename": "rohrpost-2.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d9874eefc87e308b6918aa90239f189a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 8095, "upload_time": "2018-09-28T09:48:46", "url": "https://files.pythonhosted.org/packages/08/93/08d6f8df14088931683e358aa982faf382ad991ffba91a63dc1e11896ca2/rohrpost-2.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "535bb3011ffa62c389aae5f7b82e047d", "sha256": "de7a9e481c47306339cbec82888713452c682e3118912298099e8410d0040beb" }, "downloads": -1, "filename": "rohrpost-2.0.0.tar.gz", "has_sig": false, "md5_digest": "535bb3011ffa62c389aae5f7b82e047d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 6245, "upload_time": "2018-09-28T09:48:47", "url": "https://files.pythonhosted.org/packages/c1/88/822ba4ace13c0c2fb9d74f91e8ff99e5d19f5b4e2e6409619f8ec121ac40/rohrpost-2.0.0.tar.gz" } ], "2.0.0a1": [ { "comment_text": "", "digests": { "md5": "3d863298380b30b344f8f4394172274d", "sha256": "a208c0f7c9e502caa2782d864e093c3a97abe52d0e021714aa41d369d7ea5a1f" }, "downloads": -1, "filename": "rohrpost-2.0.0a1-py3-none-any.whl", "has_sig": false, "md5_digest": "3d863298380b30b344f8f4394172274d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 7719, "upload_time": "2018-09-03T15:30:14", "url": "https://files.pythonhosted.org/packages/12/f1/5b4f006fc39991f4b4777704c938b242238a18b50e172c6b4e38f9df30c9/rohrpost-2.0.0a1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "18c6c22a4a0822780367e92281555ce8", "sha256": "ca1beed8bbd7bc91bc95e68bec8ffff76ec7e4ac5a632e27239ace588e5ed877" }, "downloads": -1, "filename": "rohrpost-2.0.0a1.tar.gz", "has_sig": false, "md5_digest": "18c6c22a4a0822780367e92281555ce8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 5929, "upload_time": "2018-09-03T15:30:15", "url": "https://files.pythonhosted.org/packages/f1/93/413fa3c7549e8fe5e4f3458ae92ee8f442b404f52ec159a8983ebef3afff/rohrpost-2.0.0a1.tar.gz" } ], "2.0.0a2": [ { "comment_text": "", "digests": { "md5": "2666f111655567ec9790ee017feb5f95", "sha256": "b18ed74e729aa663ca9c9735bb148bdf350cd22907975beeb42fbcb109777758" }, "downloads": -1, "filename": "rohrpost-2.0.0a2-py3-none-any.whl", "has_sig": false, "md5_digest": "2666f111655567ec9790ee017feb5f95", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 8115, "upload_time": "2018-09-03T16:16:19", "url": "https://files.pythonhosted.org/packages/34/b3/9039c01ee1800a35ca31dfe9e99bc65aef0fc923ad9eba4cef19e87999ee/rohrpost-2.0.0a2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8ec3b2d7730213119e81e9cf8f8d8437", "sha256": "d5c4ac897be72aa64a044bebf0783ae71bc2a0c1095de12b41c09523d2a319c0" }, "downloads": -1, "filename": "rohrpost-2.0.0a2.tar.gz", "has_sig": false, "md5_digest": "8ec3b2d7730213119e81e9cf8f8d8437", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 6245, "upload_time": "2018-09-03T16:16:20", "url": "https://files.pythonhosted.org/packages/4b/0f/277e9f500effd58bb49d44ac21b054dcf639b0206e9d107b332e262db3ea/rohrpost-2.0.0a2.tar.gz" } ], "2.0.0a3": [ { "comment_text": "", "digests": { "md5": "1dd3d79c5abb66099c58ed5f663922e1", "sha256": "3e745aa004d4c7ad194067fe4b8a1db13b05b420b2b06381db638ac6089a183b" }, "downloads": -1, "filename": "rohrpost-2.0.0a3-py3-none-any.whl", "has_sig": false, "md5_digest": "1dd3d79c5abb66099c58ed5f663922e1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 8117, "upload_time": "2018-09-04T16:02:19", "url": "https://files.pythonhosted.org/packages/25/11/2a0dcee5194e295118f03b06eeb7f95fb0ab3904aa8f9eb806de06049542/rohrpost-2.0.0a3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f0885a3a063fac202117aa7823fad2aa", "sha256": "f52294dd39817ed2044df86a292d12d37d2f9deeb35accb1edc6f28bfc118b8e" }, "downloads": -1, "filename": "rohrpost-2.0.0a3.tar.gz", "has_sig": false, "md5_digest": "f0885a3a063fac202117aa7823fad2aa", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 6246, "upload_time": "2018-09-04T16:02:20", "url": "https://files.pythonhosted.org/packages/78/93/ca88f5b0f169b16eaf0540b57182b0ff3e00852516e8596dc03b09605714/rohrpost-2.0.0a3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d9874eefc87e308b6918aa90239f189a", "sha256": "6179677e265f4d9aedd971c69cb9f95aa851e5e8a27b77e62fa0375b187b134a" }, "downloads": -1, "filename": "rohrpost-2.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d9874eefc87e308b6918aa90239f189a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 8095, "upload_time": "2018-09-28T09:48:46", "url": "https://files.pythonhosted.org/packages/08/93/08d6f8df14088931683e358aa982faf382ad991ffba91a63dc1e11896ca2/rohrpost-2.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "535bb3011ffa62c389aae5f7b82e047d", "sha256": "de7a9e481c47306339cbec82888713452c682e3118912298099e8410d0040beb" }, "downloads": -1, "filename": "rohrpost-2.0.0.tar.gz", "has_sig": false, "md5_digest": "535bb3011ffa62c389aae5f7b82e047d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 6245, "upload_time": "2018-09-28T09:48:47", "url": "https://files.pythonhosted.org/packages/c1/88/822ba4ace13c0c2fb9d74f91e8ff99e5d19f5b4e2e6409619f8ec121ac40/rohrpost-2.0.0.tar.gz" } ] }