{ "info": { "author": "Miguel \u00c1ngel Alarcos Torrecillas", "author_email": "miguel.alarcos@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# SDP: Subscription Data Protocol\n\n```python\nimport asyncio\nimport websockets\nfrom rethinkdb import r\nfrom subsdata.sdp import sdp, method, sub, get_connection, is_logged, has_role\n\n@method\n@is_logged\nasync def add(user, a, b):\n return a + b\n\n@method\n@has_role('admin')\nasync def create(user):\n connection = await get_connection()\n await r.table('test').insert({'x': 0}).run(connection)\n\n@method\nasync def increment(user, id, value):\n connection = await get_connection()\n await r.table('test').get(id).update({\"x\": r.row[\"x\"]+value}).run(connection)\n\n@sub\ndef x_less_than(user, max):\n return r.table('test').filter(lambda row: (row['x'] < max))\n\ndef main(): \n loop = asyncio.get_event_loop()\n loop.run_until_complete(websockets.serve(sdp, '0.0.0.0', 8888))\n print(\"Real time server started at port 8888\")\n loop.run_forever()\n loop.close()\n```\n\n```yml\n#example of a docker-compose.yml\nversion: '3'\nservices:\n ws:\n build: .\n stdin_open: true\n tty: true\n ports:\n - \"8888:8888\"\n volumes:\n - ./:/usr/src/app\n environment:\n - RT=rdb\n - DEBUG=1\n - SECRET=secret\n command: python -m watchgod app.main \n rdb:\n image: rethinkdb\n ports:\n - \"8080:8080\"\n - \"28015:28015\"\n volumes:\n - './data:/data'\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://gitlab.com/miguel.alarcos/subsdata", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "subsdata", "package_url": "https://pypi.org/project/subsdata/", "platform": "", "project_url": "https://pypi.org/project/subsdata/", "project_urls": { "Homepage": "https://gitlab.com/miguel.alarcos/subsdata" }, "release_url": "https://pypi.org/project/subsdata/0.1.2/", "requires_dist": [ "PyJWT (>=1.6.4)", "rethinkdb (>=2.3.0.post6)" ], "requires_python": "", "summary": "SDP: Subscription Data Protocol", "version": "0.1.2" }, "last_serial": 4570798, "releases": { "0.0.2": [ { "comment_text": "", "digests": { "md5": "7782a8e9aaae0eac2dabf19c316e2a51", "sha256": "9ab1ff90d6a27c22d574ff8f402d9298331067268210de124956b92d7b241e92" }, "downloads": -1, "filename": "subsdata-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "7782a8e9aaae0eac2dabf19c316e2a51", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5389, "upload_time": "2018-10-22T13:29:09", "url": "https://files.pythonhosted.org/packages/ab/c4/212c7d9369f8e7cd3fca391a3f66bfbff3ea476210a13639fd1def82b676/subsdata-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "58a07029c5792a6deead92526df1d3e3", "sha256": "f8ba67c5a38c5e7611871f05d9c18ba0a8d688368731fab1264d8f0ca1844ef6" }, "downloads": -1, "filename": "subsdata-0.0.2.tar.gz", "has_sig": false, "md5_digest": "58a07029c5792a6deead92526df1d3e3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3710, "upload_time": "2018-10-22T13:29:10", "url": "https://files.pythonhosted.org/packages/44/b7/fe0672573e8f76aefd315b89651c12800e320c696dbc84e82751950a88c3/subsdata-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "eacacb265b69a8ab3f2ea53ea47a66f0", "sha256": "8b2aec099d170da50fbafbbe7fa236e383db57d4a62936c68fbf0f8261678437" }, "downloads": -1, "filename": "subsdata-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "eacacb265b69a8ab3f2ea53ea47a66f0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6346, "upload_time": "2018-10-22T13:52:22", "url": "https://files.pythonhosted.org/packages/71/9f/303f70b7bf65eeb4355c8ef22ac22338bb6a3a522b33cf0e2071df3c600b/subsdata-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "399e7b1087202fb0a36ed129d31ee73f", "sha256": "9b78a19545e4ff3f803f571fdd0369f39ef0b2dd622e737aee34baf20e922772" }, "downloads": -1, "filename": "subsdata-0.0.3.tar.gz", "has_sig": false, "md5_digest": "399e7b1087202fb0a36ed129d31ee73f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3724, "upload_time": "2018-10-22T13:52:24", "url": "https://files.pythonhosted.org/packages/31/61/872fc8d1ee4b648368aa727f18776769c13e76085b1f9ba66dfa5fd5656d/subsdata-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "da0858bb0924f50136c694f448c5f6f2", "sha256": "d877bbedf1b03206862be91f4096a7438a63c915aad022e6767c7754424afe2c" }, "downloads": -1, "filename": "subsdata-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "da0858bb0924f50136c694f448c5f6f2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6348, "upload_time": "2018-10-22T16:01:56", "url": "https://files.pythonhosted.org/packages/6a/58/0e8245cdfb5e2abec23211f1a23870c88a102ade47a22b17ece661ef22dc/subsdata-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "13aa1b05bef0a139948f6ed75af9cb3d", "sha256": "4ec70c5d53c8d23294ccb41180cef3fb56b01eb45bf5adb0ba515eecbffe6e3f" }, "downloads": -1, "filename": "subsdata-0.0.4.tar.gz", "has_sig": false, "md5_digest": "13aa1b05bef0a139948f6ed75af9cb3d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3747, "upload_time": "2018-10-22T16:01:57", "url": "https://files.pythonhosted.org/packages/1e/dc/edc4f5ff50f575b5006cee44cc149a8df031dc54e1f1123b4128681a89e8/subsdata-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "f40c2f45d048d1506d177fb7f56940c9", "sha256": "c4df8b8593c2a8207551119b68d69540cff191f7d914acd686849ddc7f909c95" }, "downloads": -1, "filename": "subsdata-0.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "f40c2f45d048d1506d177fb7f56940c9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6359, "upload_time": "2018-10-29T12:56:19", "url": "https://files.pythonhosted.org/packages/43/cd/c8c0349aacb12fd8f627e3b3a1476fbd0f2ccb79be628d960679aabad7d5/subsdata-0.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "09d90a56687a00084f2e6600a4cf2eca", "sha256": "fbbd388a2c1abd73b41914fdd4a2546a5ee54e131e69e5040f0852b988d693fd" }, "downloads": -1, "filename": "subsdata-0.0.5.tar.gz", "has_sig": false, "md5_digest": "09d90a56687a00084f2e6600a4cf2eca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3755, "upload_time": "2018-10-29T12:56:21", "url": "https://files.pythonhosted.org/packages/cd/3c/59a1af72681fd10ad8ef5d3ad6da0783094f4a6cd29f6ccc15e1c855a09d/subsdata-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "abc8f4d889bd88df824987e57b05332e", "sha256": "c6d0d654381118f1248b672a135177cd3bbe335b1504641e25716144b2a76d25" }, "downloads": -1, "filename": "subsdata-0.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "abc8f4d889bd88df824987e57b05332e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4287, "upload_time": "2018-10-30T17:41:51", "url": "https://files.pythonhosted.org/packages/60/ed/512af221c26326ace8d5f72240728d841c6d4304acffbb93f6bb940673ba/subsdata-0.0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e420178d0bcb625925deec74d364e1d9", "sha256": "215f21d4531f1e673f54dd0b15e1f885ba64cd305bbe8b26d26b75c4194ffc64" }, "downloads": -1, "filename": "subsdata-0.0.6.tar.gz", "has_sig": false, "md5_digest": "e420178d0bcb625925deec74d364e1d9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3139, "upload_time": "2018-10-30T17:41:53", "url": "https://files.pythonhosted.org/packages/62/51/3cb28b1f305659eebf9b4ae8f16c85ea6343b394a332d5bf15494094a9d7/subsdata-0.0.6.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "2f050dc88686854011c9e7f184c8970c", "sha256": "83a0bfa00141141b79caef388dc456139538ae3b9bd53672f5038d5bea5f77c6" }, "downloads": -1, "filename": "subsdata-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "2f050dc88686854011c9e7f184c8970c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4579, "upload_time": "2018-11-23T10:55:27", "url": "https://files.pythonhosted.org/packages/d0/99/3e23549f8191f6dde3193d934c230bbea6406e6a804ad127c98b6a4840b2/subsdata-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4e5d6ddc22ab3f70183e5a7d224fdbaf", "sha256": "978f68b08c27733012e2bc8adbc77a99231a55b96a76759b721efd4c083e7633" }, "downloads": -1, "filename": "subsdata-0.1.0.tar.gz", "has_sig": false, "md5_digest": "4e5d6ddc22ab3f70183e5a7d224fdbaf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3501, "upload_time": "2018-11-23T10:55:29", "url": "https://files.pythonhosted.org/packages/28/85/f2fab35b5ec431c90cc0e1abd253c1db17bb76215f7ec3cd5b9b956d6ccf/subsdata-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "c430488e274f7591c3d257ce8fda70b0", "sha256": "1196a08c5308d758e632740f25e134d745f8d64fc8408553f0d4f4e7ab53fc83" }, "downloads": -1, "filename": "subsdata-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "c430488e274f7591c3d257ce8fda70b0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4692, "upload_time": "2018-12-06T11:42:54", "url": "https://files.pythonhosted.org/packages/12/f0/fecba265df97a4c0b278fd821f5705e8ad0888b73c7ab2f31a40fce46141/subsdata-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ffd7b294e798a407a0b8da35c6d97b96", "sha256": "bf8de707ef296fa53f5a1f82a5e6f2e84672d996a2e04e79b61ec1470d64cc7d" }, "downloads": -1, "filename": "subsdata-0.1.1.tar.gz", "has_sig": false, "md5_digest": "ffd7b294e798a407a0b8da35c6d97b96", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3621, "upload_time": "2018-12-06T11:42:55", "url": "https://files.pythonhosted.org/packages/b9/fa/47a751dd516ef3bf25e3779c4c6e788ff2eb3f8862fe35772155de08fff4/subsdata-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "a97519f7bb22383f07517cda089540e6", "sha256": "13824c9a8ebd5e75dcb43da940bfd7519828ac72d539f0a78f5c388b3e25c2c6" }, "downloads": -1, "filename": "subsdata-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "a97519f7bb22383f07517cda089540e6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4773, "upload_time": "2018-12-07T06:47:24", "url": "https://files.pythonhosted.org/packages/e2/f2/b650176f4c518812b598f56c0a8f61bc895195e315805f6babe2673f4cae/subsdata-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "87079a064b28cae2a127c3c9b7ffe5f1", "sha256": "967aeaa0efd56f973932490a9f18593d0431d17809c879c20d1337cb7d9dd589" }, "downloads": -1, "filename": "subsdata-0.1.2.tar.gz", "has_sig": false, "md5_digest": "87079a064b28cae2a127c3c9b7ffe5f1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3687, "upload_time": "2018-12-07T06:47:25", "url": "https://files.pythonhosted.org/packages/6a/ce/7abb1a0c084c143fbb52f082a705fe9e1a450d10e175d44873dd98bb9977/subsdata-0.1.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a97519f7bb22383f07517cda089540e6", "sha256": "13824c9a8ebd5e75dcb43da940bfd7519828ac72d539f0a78f5c388b3e25c2c6" }, "downloads": -1, "filename": "subsdata-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "a97519f7bb22383f07517cda089540e6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4773, "upload_time": "2018-12-07T06:47:24", "url": "https://files.pythonhosted.org/packages/e2/f2/b650176f4c518812b598f56c0a8f61bc895195e315805f6babe2673f4cae/subsdata-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "87079a064b28cae2a127c3c9b7ffe5f1", "sha256": "967aeaa0efd56f973932490a9f18593d0431d17809c879c20d1337cb7d9dd589" }, "downloads": -1, "filename": "subsdata-0.1.2.tar.gz", "has_sig": false, "md5_digest": "87079a064b28cae2a127c3c9b7ffe5f1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3687, "upload_time": "2018-12-07T06:47:25", "url": "https://files.pythonhosted.org/packages/6a/ce/7abb1a0c084c143fbb52f082a705fe9e1a450d10e175d44873dd98bb9977/subsdata-0.1.2.tar.gz" } ] }