{ "info": { "author": "SimLeek", "author_email": "josh.miklos@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy" ], "description": "# CVPubSubs\n\nA threaded PubSub OpenCV interfaceREADME.md. Webcam and video feeds to multiple windows is supported.\n\n## Installation\n\nCVPubSubs is distributed on `PyPI `_ as a universal\nwheel and is available on Linux/macOS and Windows and supports\nPython 2.7/3.5+ and PyPy.\n\n $ pip install CVPubSubs\n \n## Usage\n\n### Video Editing and Publishing\n\n#### Display your webcam\n import cvpubsubs.webcam_pub as w\n \n w.VideoHandlerThread().display()\n \n#### Change Display Arguments\n import cvpubsubs.webcam_pub as w\n \n video_thread = w.VideoHandlerThread(video_source=0,\n callbacks = w.display_callbacks,\n request_size=(800, 600),\n high_speed = False,\n fps_limit = 8\n )\n\n#### handle mouse input\n import cvpubsubs.webcam_pub as w\n from cvpubsubs.input import mouse_loop\n \n @mouse_loop\n def print_mouse(mouse_event):\n print(mouse_event)\n\n w.VideoHandlerThread().display()\n\n#### take in key input\n import cvpubsubs.webcam_pub as w\n from cvpubsubs.input import key_loop\n\n @key_loop\n def print_key_thread(key_chr):\n print(\"key pressed: \" + str(key_chr))\n\n w.VideoHandlerThread().display()\n\n#### Run your own functions on the frames\n import cvpubsubs.webcam_pub as w\n \n def redden_frame_print_spam(frame, cam_id):\n frame[:, :, 0] = 0\n frame[:, :, 1] = 0\n print(\"Spam!\")\n\n w.VideoHandlerThread(callbacks=[redden_frame_print_spam] + w.display_callbacks).display()\n\n#### Display a tensor\n\n def tensor_from_image(frame, cam_id):\n ten = tensor_from_pytorch_or_tensorflow(frame)\n return ten\n \n t = wp.VideoHandlerThread(video_source=cam, callbacks=[tensor_from_image] + wp.display_callbacks)\n\n t.display()\n\n#### Display multiple windows from one source\n import cvpubsubs.webcam_pub as w\n from cvpubsubs.window_sub import SubscriberWindows\n\n def cam_handler(frame, cam_id):\n SubscriberWindows.set_global_frame_dict(cam_id, frame, frame)\n\n t = w.VideoHandlerThread(0, [cam_handler],\n request_size=(1280, 720),\n high_speed=True,\n fps_limit=240\n )\n\n t.start()\n\n SubscriberWindows(window_names=['cammy', 'cammy2'],\n video_sources=[str(0)]\n ).loop()\n\n t.join()\n \n#### Display multiple windows from multiple sources\n iport cvpubsubs.webcam_pub as w\n from cvpubsubs.window_sub import SubscriberWindows\n\n t1 = w.VideoHandlerThread(0)\n t2 = w.VideoHandlerThread(1)\n\n t1.start()\n t2.start()\n\n SubscriberWindows(window_names=['cammy', 'cammy2'],\n video_sources=[0,1]\n ).loop()\n\n t1.join()\n t1.join()\n \n#### Run a function on each pixel\n from cvpubsubs.webcam_pub import VideoHandlerThread\n from cvpubsubs.webcam_pub.callbacks import function_display_callback\n img = np.zeros((50, 50, 1))\n img[0:5, 0:5, :] = 1\n\n def conway_game_of_life(array, coords, finished):\n neighbors = np.sum(array[max(coords[0] - 1, 0):min(coords[0] + 2, 50),\n max(coords[1] - 1, 0):min(coords[1] + 2, 50)])\n neighbors = max(neighbors - np.sum(array[coords[0:2]]), 0.0)\n if array[coords] == 1.0:\n if neighbors < 2 or neighbors > 3:\n array[coords] = 0.0\n elif 2 <= neighbors <= 3:\n array[coords] = 1.0\n else:\n if neighbors == 3:\n array[coords] = 1.0\n\n VideoHandlerThread(video_source=img, callbacks=function_display_callback(conway_game_of_life)).display()\n\n## License\n\nCVPubSubs is distributed under the terms of both\n\n- `MIT License `_\n- `Apache License, Version 2.0 `_\n\nat your option.", "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/SimLeek/CV_PubSubs", "keywords": "opencv,camera", "license": "MIT/Apache-2.0", "maintainer": "SimLeek", "maintainer_email": "josh.miklos@gmail.com", "name": "CVPubSubs", "package_url": "https://pypi.org/project/CVPubSubs/", "platform": "", "project_url": "https://pypi.org/project/CVPubSubs/", "project_urls": { "Homepage": "https://github.com/SimLeek/CV_PubSubs" }, "release_url": "https://pypi.org/project/CVPubSubs/0.6.5/", "requires_dist": null, "requires_python": "", "summary": "", "version": "0.6.5" }, "last_serial": 5904962, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "73e4f88a3f79815c1262ffb89104946d", "sha256": "b5b1f24abaf80d64b8b93aa5fac4501ca89cd5e26e893013102f0547162986a1" }, "downloads": -1, "filename": "CVPubSubs-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "73e4f88a3f79815c1262ffb89104946d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8127, "upload_time": "2018-08-09T03:18:38", "url": "https://files.pythonhosted.org/packages/99/5c/25cc604dc0375e551d871c0c8dde9eb211abf5586c42ae4808270f256efb/CVPubSubs-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "84db6a05262f12d4db3e263184c642a0", "sha256": "2cf87ff7704e415e632ce98f288b0a8da4c63f32b8ce68328015f25873a339f8" }, "downloads": -1, "filename": "CVPubSubs-0.1.0.tar.gz", "has_sig": false, "md5_digest": "84db6a05262f12d4db3e263184c642a0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9380, "upload_time": "2018-08-09T03:18:39", "url": "https://files.pythonhosted.org/packages/6c/8c/bcf50030c1d81470e7964e2df37ca779eb986070b0b199d16ad58ab50cf6/CVPubSubs-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "49be740499f6e8e3b6e3d924c5f747f7", "sha256": "7bf8eb0b06a025f2f38901e8480f9ad0eaad535df29978b11c00a859d56d43d3" }, "downloads": -1, "filename": "CVPubSubs-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "49be740499f6e8e3b6e3d924c5f747f7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9700, "upload_time": "2018-08-10T04:49:33", "url": "https://files.pythonhosted.org/packages/3a/b7/d9f24060c2f97af9615967dbc8c3ee26a98a2437a8285e5ad62a4dcb4d15/CVPubSubs-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "85d9e64b9fc0b90133fd4616c1c16991", "sha256": "bc1ae0d98b43b2fd9657674511c10a6130e746a21902ecb5aafe95f3929c758f" }, "downloads": -1, "filename": "CVPubSubs-0.2.0.tar.gz", "has_sig": false, "md5_digest": "85d9e64b9fc0b90133fd4616c1c16991", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10756, "upload_time": "2018-08-10T04:49:34", "url": "https://files.pythonhosted.org/packages/fb/76/95e5f070803fcba9d6bfb1fbf0ae5df064cd2009a158836671a2669a733a/CVPubSubs-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "147bbfc0c0fc15f8b3974c6d505e5f80", "sha256": "bbf2242ac07e4fbc01122279a3afe450e4b71fe298d934d82edf1bd06cea9878" }, "downloads": -1, "filename": "CVPubSubs-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "147bbfc0c0fc15f8b3974c6d505e5f80", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9701, "upload_time": "2018-08-10T04:55:59", "url": "https://files.pythonhosted.org/packages/9c/f9/dd936016443592e0057672391f7537244c91d4b6fb2e4ed6b54e77efe167/CVPubSubs-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a0abe7302922edc4eb300a25f1342df5", "sha256": "0d3990f66fa62acf1baf1884e05aaf12a21ed97dc34637de9564df844acf39be" }, "downloads": -1, "filename": "CVPubSubs-0.2.1.tar.gz", "has_sig": false, "md5_digest": "a0abe7302922edc4eb300a25f1342df5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10748, "upload_time": "2018-08-10T04:56:01", "url": "https://files.pythonhosted.org/packages/87/cc/c50c57adebd92e73849cba7294a06c556ccc9e95e836f493fe7a0cf70f78/CVPubSubs-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "8339f11210eb41b30f96955d82f29f02", "sha256": "3718c330ee9e1d939f95be6e4eaa002bbb0ac9db076724efca6cf472cf679721" }, "downloads": -1, "filename": "CVPubSubs-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "8339f11210eb41b30f96955d82f29f02", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9747, "upload_time": "2018-11-15T23:35:29", "url": "https://files.pythonhosted.org/packages/c7/96/a44c5c84625de2425a8deddc3a5b54264bc72b1ae9a106d467739cdfe6fb/CVPubSubs-0.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "19401a2a410eb129fc64757374a00b1b", "sha256": "4e3a8cb2683f7a198beb9bee1c4fa0c1aad3009633220a74cf5e06c04a53e5ed" }, "downloads": -1, "filename": "CVPubSubs-0.2.2.tar.gz", "has_sig": false, "md5_digest": "19401a2a410eb129fc64757374a00b1b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10892, "upload_time": "2018-11-15T23:35:30", "url": "https://files.pythonhosted.org/packages/75/10/9a74112a9c3d680e52c295cb8b8147428623d7a2aaa26f848b7b8fc98181/CVPubSubs-0.2.2.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "a599a5b70a0aa1887749d8187a8a3842", "sha256": "a023fdddd8d072fefc946e17752b9e76f1395a456c70b866ccb5ab3904b70a43" }, "downloads": -1, "filename": "CVPubSubs-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "a599a5b70a0aa1887749d8187a8a3842", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10826, "upload_time": "2019-01-22T05:16:03", "url": "https://files.pythonhosted.org/packages/3a/9b/d8fd866a4ffe6132c8b49f1f8b131e9f486a128ab91813ee742ffb807a54/CVPubSubs-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "09f331a3d381b1254dbc255f44ada0f0", "sha256": "d81bb6b10e225a792b67c6118156e48a8d61ae038d01a22cb7997ff66cfe1977" }, "downloads": -1, "filename": "CVPubSubs-0.3.0.tar.gz", "has_sig": false, "md5_digest": "09f331a3d381b1254dbc255f44ada0f0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11571, "upload_time": "2019-01-22T05:16:05", "url": "https://files.pythonhosted.org/packages/09/4f/fa5b76e5d1c9a773120b53156426eaea98434f87acd2c47030519dfee98a/CVPubSubs-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "29065551d2e7ca0b133cd2b8771c226a", "sha256": "37ffca6098fd0b76582d006b9bf3f0221cf0464cfd3238dd20656abe6107d636" }, "downloads": -1, "filename": "CVPubSubs-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "29065551d2e7ca0b133cd2b8771c226a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10827, "upload_time": "2019-01-22T05:20:33", "url": "https://files.pythonhosted.org/packages/9c/3e/c989570272022408f719a7d5089b4d161607350364ea4fd333ccdadfa7bc/CVPubSubs-0.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "63bdb167d0175478b1eec7106987d828", "sha256": "4e2f4125995db7575b34a1aea8bac23a3a1b2f7ce0734add4238833344e48d65" }, "downloads": -1, "filename": "CVPubSubs-0.3.1.tar.gz", "has_sig": false, "md5_digest": "63bdb167d0175478b1eec7106987d828", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11570, "upload_time": "2019-01-22T05:20:35", "url": "https://files.pythonhosted.org/packages/41/f2/90e877d14570e82a170db0a7d5635aa8bde25f3491571a3d35332a99e6b2/CVPubSubs-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "54527cec8cbb972d9052c381ab06af7b", "sha256": "aec68c82376496d406fe92b0acadb71c1484d471af5d009a5544ee35ff87777f" }, "downloads": -1, "filename": "CVPubSubs-0.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "54527cec8cbb972d9052c381ab06af7b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11318, "upload_time": "2019-01-23T05:02:13", "url": "https://files.pythonhosted.org/packages/ed/95/42cff757b277d27dbc4e78d7fa796902e316773932580349fd9fd04741ec/CVPubSubs-0.3.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "76dad5bf007f245310cd044191f2e665", "sha256": "19e7d72ad0ef68a2d99bcbf6c785acdfc372a84ae952b93a54b10d4d5dddf74f" }, "downloads": -1, "filename": "CVPubSubs-0.3.2.tar.gz", "has_sig": false, "md5_digest": "76dad5bf007f245310cd044191f2e665", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11833, "upload_time": "2019-01-23T05:02:14", "url": "https://files.pythonhosted.org/packages/0e/7b/659c7ea686c72616d5a32ee9f9534bc8fe10991faf4f7b05d5ed9a5a604c/CVPubSubs-0.3.2.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "3fe84d1b0e5141ab0743017e442d8ffe", "sha256": "32ba1ad09e23f2a887196a22c9d569870abef73b5da4f53afb0f9780c9144e5d" }, "downloads": -1, "filename": "CVPubSubs-0.3.3-py3-none-any.whl", "has_sig": false, "md5_digest": "3fe84d1b0e5141ab0743017e442d8ffe", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11325, "upload_time": "2019-01-23T05:12:37", "url": "https://files.pythonhosted.org/packages/4b/08/c2a5d45b683d5e0f7d27d5e07ea3477abf06d0fda2ca5808e72fe48e54dc/CVPubSubs-0.3.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ce33f690050277ffb7204b3f7ca7adc2", "sha256": "20a07488645240974cf027de14bf2c3dc428752d19f41f0e9f6f84df1a21f68a" }, "downloads": -1, "filename": "CVPubSubs-0.3.3.tar.gz", "has_sig": false, "md5_digest": "ce33f690050277ffb7204b3f7ca7adc2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11825, "upload_time": "2019-01-23T05:12:39", "url": "https://files.pythonhosted.org/packages/93/49/d82e1eba5b46ead6d41e027e035cda4506a02f77e74efbe7b353fec25494/CVPubSubs-0.3.3.tar.gz" } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "b3bc13ffe0775860b3c3129e63e76949", "sha256": "3e6a59cf29ad1e1cb5eb9f0398e4c86d53e6f7bf3e481b6161a59ef52ebd8f12" }, "downloads": -1, "filename": "CVPubSubs-0.3.4.tar.gz", "has_sig": false, "md5_digest": "b3bc13ffe0775860b3c3129e63e76949", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12087, "upload_time": "2019-02-20T08:21:31", "url": "https://files.pythonhosted.org/packages/86/32/197f478fe79f9b2ae73d3f2f3eddb21a2a67ba2558437b4c31b96695fc05/CVPubSubs-0.3.4.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "42fa47909b16a41e1607945b676ee5d6", "sha256": "4bd7108f3431cc8f6b5b6b547ff0ab90c3570cb49811f20fd94900e1ad4c41fa" }, "downloads": -1, "filename": "CVPubSubs-0.4.0.tar.gz", "has_sig": false, "md5_digest": "42fa47909b16a41e1607945b676ee5d6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12339, "upload_time": "2019-02-21T05:20:40", "url": "https://files.pythonhosted.org/packages/63/c7/fdb903c2ce7b674798c25a156383535c2e3cfd3d6f2fb980ef66410926cc/CVPubSubs-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "9915312eaeae9c2c0fcd4f2ff8be159e", "sha256": "8fcd54eae1896339405b2a014736d909b3c434de4c8f6da90a0a3eb1d0bbb014" }, "downloads": -1, "filename": "CVPubSubs-0.4.1.tar.gz", "has_sig": false, "md5_digest": "9915312eaeae9c2c0fcd4f2ff8be159e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12411, "upload_time": "2019-02-21T05:52:35", "url": "https://files.pythonhosted.org/packages/bb/22/bd479bd70ac9ce7b31efee2647ee5183b66540ca726a9a7a1f027ba38fc6/CVPubSubs-0.4.1.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "6b642cb69ca708873722ae3fc437c3f0", "sha256": "156471a82d118b8d42a828ff9a1dec90c8376b2d2c31d073f5824d4ca06ca7bd" }, "downloads": -1, "filename": "CVPubSubs-0.5.0.tar.gz", "has_sig": false, "md5_digest": "6b642cb69ca708873722ae3fc437c3f0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13379, "upload_time": "2019-02-24T08:51:09", "url": "https://files.pythonhosted.org/packages/a6/17/e37735d43342e0278a17ca55696ce51ad6f405dcd98782da784530063d6c/CVPubSubs-0.5.0.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "3ef880b35e2257423b022298883b3235", "sha256": "781da50ceeac27c2c9f2a23fe279b632bf028ea4c71114906c4466d12feedddc" }, "downloads": -1, "filename": "CVPubSubs-0.6.0.tar.gz", "has_sig": false, "md5_digest": "3ef880b35e2257423b022298883b3235", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13672, "upload_time": "2019-02-26T03:24:07", "url": "https://files.pythonhosted.org/packages/b5/33/121493b108ba426b0bc8037897bb1dda21630bc4602d9314344727b67ccd/CVPubSubs-0.6.0.tar.gz" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "49eed2a6afa2a9cc227e28b428cdb9ef", "sha256": "4571dd6266ec8c7904e92f6cc89aa54fd56238a8ca3187e2fa5b27ee4eb8d8ce" }, "downloads": -1, "filename": "CVPubSubs-0.6.1.tar.gz", "has_sig": false, "md5_digest": "49eed2a6afa2a9cc227e28b428cdb9ef", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14392, "upload_time": "2019-02-26T05:19:01", "url": "https://files.pythonhosted.org/packages/2a/07/8ab66d17f72d38f0cd45b06a1884edc0b790a300c58cd4919ec3730f6769/CVPubSubs-0.6.1.tar.gz" } ], "0.6.2": [ { "comment_text": "", "digests": { "md5": "6707188625a4fb373b9093d4bfa47265", "sha256": "a9bbc4b1714c9b952ac15d4067fa565b1a07e704120fdf6f8ddf142a2b3b6edb" }, "downloads": -1, "filename": "CVPubSubs-0.6.2.tar.gz", "has_sig": false, "md5_digest": "6707188625a4fb373b9093d4bfa47265", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14438, "upload_time": "2019-02-26T06:20:16", "url": "https://files.pythonhosted.org/packages/e6/1e/e986de4256d6ae1c0e905ca8c851cdb8bb1784a14371fedfed32c2b0e539/CVPubSubs-0.6.2.tar.gz" } ], "0.6.3": [ { "comment_text": "", "digests": { "md5": "f87139afe8e2e6f2606e9f77a8ab8c73", "sha256": "953e203deb776ec882ee892c3548b5903b04f9858ee2081f7dd078e539c0fcfe" }, "downloads": -1, "filename": "CVPubSubs-0.6.3.tar.gz", "has_sig": false, "md5_digest": "f87139afe8e2e6f2606e9f77a8ab8c73", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14516, "upload_time": "2019-03-11T00:17:44", "url": "https://files.pythonhosted.org/packages/47/95/8aad65993dd4419b39dd9d077e8f8eb36871d077a96092f396f7f9c41e15/CVPubSubs-0.6.3.tar.gz" } ], "0.6.4": [ { "comment_text": "", "digests": { "md5": "c64e91e4ae630addcfc0b9c96e31ae65", "sha256": "3c841f85443548c839bfe4db12fb619ecd7f6f283383387b6a672bdf17e80b0f" }, "downloads": -1, "filename": "CVPubSubs-0.6.4.tar.gz", "has_sig": false, "md5_digest": "c64e91e4ae630addcfc0b9c96e31ae65", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14525, "upload_time": "2019-03-11T00:34:45", "url": "https://files.pythonhosted.org/packages/20/e6/b6f49664a21460f9737be1ab256e82a4ffaacb85cedac34442a370e7ef63/CVPubSubs-0.6.4.tar.gz" } ], "0.6.5": [ { "comment_text": "", "digests": { "md5": "deb5ff2c4dcf4c293b29f491a06be316", "sha256": "282f5ff3bf6ff271848b396511b183535e2578c6ce8b6b8d21eb8255add1f032" }, "downloads": -1, "filename": "CVPubSubs-0.6.5.tar.gz", "has_sig": false, "md5_digest": "deb5ff2c4dcf4c293b29f491a06be316", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15790, "upload_time": "2019-09-30T06:00:18", "url": "https://files.pythonhosted.org/packages/52/78/51f011bd5d3e432991ffad0e412f8c2f5e73d854f352a61a8352fd672105/CVPubSubs-0.6.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "deb5ff2c4dcf4c293b29f491a06be316", "sha256": "282f5ff3bf6ff271848b396511b183535e2578c6ce8b6b8d21eb8255add1f032" }, "downloads": -1, "filename": "CVPubSubs-0.6.5.tar.gz", "has_sig": false, "md5_digest": "deb5ff2c4dcf4c293b29f491a06be316", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15790, "upload_time": "2019-09-30T06:00:18", "url": "https://files.pythonhosted.org/packages/52/78/51f011bd5d3e432991ffad0e412f8c2f5e73d854f352a61a8352fd672105/CVPubSubs-0.6.5.tar.gz" } ] }