{ "info": { "author": "Jeffrey McAteer", "author_email": "jeffrey.p.mcateer@outlook.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: GNU General Public License v2 (GPLv2)", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "\n# Blackboard Unsucked\n\n_crummy name for a fix of crummy software_\n\nIf you are a student or faculty at ODU I'm sure you're no stranger\nto wasting 2-3 hours a day trying to find or post assignments via BlackBoard.\n\nI am concerned with the student's view, but I hope this experiment can\nprove useful for professors as well. The goal is to wrap around existing\nBlackBoard infrastructure and provide a CLI API to access all the important functions\nwhich usually are trapped behind 4-5 links and a total 20-30 second browser load time.\n\n# Specific Goals\n\n - [x] Login to BB\n - [x] List classes for the current semester only (hide irrelevant ones)\n - [x] List all announcements\n - [x] List assignments for a given class\n - This will have to be sort of intelligent as professors put assignments in different places\n - [ ] Submit files for assignments\n - [ ] View/Post to discussion boards\n - [ ] Caching and Daemon operation, to prevent having to hit the network for most data access\n\n\n# Dependencies\n\nPython3 `requests`, and `BeautifulSoup`, both of which can be \ninstalled via `pip3`\n\n# Usage\n\nThe fastest setup is to save a `.har` file of a recent Blackboard session someplace,\nthen run\n\n```bash\n# Install the package\npip3 install --user bb_unsucked\n# Read authentication details from .har\npython3 -m bb_unsucked build-cache downloads/my-session.har\n# use the __main__.py program to list all of your classes\npython3 -m bb_unsucked ls\n```\n\n## in a script\n\nthe file `demo_usage_in_script.py` has more examples, but the hello world is:\n\n```python\nimport bb_unsucked\n\nbb = bb_unsucked.BBUnsucked()\n\nfor my_class in bb.classes():\n print(f\"I am in {my_class.course_id}\")\n\n```\n\n## authentication\n\nTo perform the authentication step the most reliable method is to\nsave a `.har` file of a recent blackboard session. `bb_unsucked` is\ncapable of parsing authentication session cookies out of the file `recent_request.har`.\n\n![how to save a .har from a browser](howto-save-har.jpg \"Saving .HAR\")\n\n\n## Config\n\n`bb-unsucked` reads from config directives first from `/etc/bb-unsucked/config.ini`\nand then from `$HOME/.bb-unsucked/config.ini`. Neither file need to be present,\nbut should you want to override a parameter the default config contents would be\n\n```\n[DEFAULT]\nbase_domain = https://www.blackboard.odu.edu\ncookies_file = /j/.bb-unsucked/cookies.bin\nagressive_caching = False\ncourses_cache_file = /j/.bb-unsucked/courses-cache.bin\ncourses_max_cache_s = 604800\nannouncements_cache_file = /j/.bb-unsucked/announcements-cache.bin\nannouncements_max_cache_s = 21600\n\n```\n\nAs you can see, the `base_domain` defaults to ODU's blackboard instance,\nbut this can be changed to point to any blackboard instance.\n\nMy config lists various cache files as being under `/j/` (my home dir)\nbecause when using defaults `bb-unsucked` will dynamically generate the\nvalues of `cookies_file`, `courses_cache_file`, and `announcements_cache_file`.\n\n# Compiling cython binary\n\nSome speed demons will want to optimize performance as much as possible, esp.\nif `bb-unsucked` is going to be used in other scripts. This repo contains\na makefile which will build the binary `bb-unsucked` when you execute `make bb-unsucked`.\n\nThe binary outperforms the python module most effectively when reading\ncached data which requires no network access. It does this by inserting some code,\n`cython_main_interpose.c`, in the generated `.c` file that Cython outputs.\n\nThis code is responsible for trying to perform simple tasks without\nthe need to jump into a python runtime. good examples are printing help text and listing classes,\nwhich the module takes 200ms doing and the binary takes 2ms to do.\n\n\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://git-community.cs.odu.edu/jmcateer/blackboard-unsucked", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "bb-unsucked", "package_url": "https://pypi.org/project/bb-unsucked/", "platform": "", "project_url": "https://pypi.org/project/bb-unsucked/", "project_urls": { "Homepage": "https://git-community.cs.odu.edu/jmcateer/blackboard-unsucked" }, "release_url": "https://pypi.org/project/bb-unsucked/0.0.14/", "requires_dist": null, "requires_python": "", "summary": "A solution to Blackboard misery for college students and professors", "version": "0.0.14" }, "last_serial": 4736964, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "fe6e8a66ad7b5b685ede285b14018278", "sha256": "ffa469b7869c5d62415f8955bd0069223c4d42ac2f3950d0af6812fa56f2122d" }, "downloads": -1, "filename": "bb_unsucked-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "fe6e8a66ad7b5b685ede285b14018278", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13126, "upload_time": "2019-01-18T23:45:16", "url": "https://files.pythonhosted.org/packages/e5/77/f89a2680d6d95bb21f88a85de7544292ba18d16f6005668a0d4f544e70c6/bb_unsucked-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0d951bcf5bd8f9de77c736a1100fe94c", "sha256": "0a01b6394a0f8ee8c4123e845d17fc52997cfdefb82234469312bd5777b014a7" }, "downloads": -1, "filename": "bb_unsucked-0.0.1.tar.gz", "has_sig": false, "md5_digest": "0d951bcf5bd8f9de77c736a1100fe94c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6280, "upload_time": "2019-01-18T23:45:17", "url": "https://files.pythonhosted.org/packages/54/17/d334581043857bbe51ec4631356d478a0a8170935c70fc347d7fe8a1777b/bb_unsucked-0.0.1.tar.gz" } ], "0.0.10": [ { "comment_text": "", "digests": { "md5": "a9f5dc458c67f60bf5294bf395e80b21", "sha256": "b65a90083b79fdd741b9aff7a9970c65398c0ea5ea85651e85d9f1dc28d7c6d0" }, "downloads": -1, "filename": "bb_unsucked-0.0.10-py3-none-any.whl", "has_sig": false, "md5_digest": "a9f5dc458c67f60bf5294bf395e80b21", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20514, "upload_time": "2019-01-19T20:56:22", "url": "https://files.pythonhosted.org/packages/99/b1/38f65688a9046e92607f99b0fd0da6703b1a03975c576f66d5886d48c50c/bb_unsucked-0.0.10-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "742da969f5f524d5860ec8b815ea3b6d", "sha256": "4f2099d717ba8965a168da4cd97d9f95482fa980022826ce07395d1c56e074f8" }, "downloads": -1, "filename": "bb_unsucked-0.0.10.tar.gz", "has_sig": false, "md5_digest": "742da969f5f524d5860ec8b815ea3b6d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14724, "upload_time": "2019-01-19T20:56:24", "url": "https://files.pythonhosted.org/packages/e6/9e/e45d8fef21c90feb9836a45e932219e473336ae4e6051506f42277e2fb15/bb_unsucked-0.0.10.tar.gz" } ], "0.0.11": [ { "comment_text": "", "digests": { "md5": "49d25628d9a148d7beb5703d08791f43", "sha256": "186f46c5cd656e77f8328ef6dc1503a730935297fd29a933d8efbbbe9b36fc41" }, "downloads": -1, "filename": "bb_unsucked-0.0.11-py3-none-any.whl", "has_sig": false, "md5_digest": "49d25628d9a148d7beb5703d08791f43", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20517, "upload_time": "2019-01-19T20:59:36", "url": "https://files.pythonhosted.org/packages/a8/4b/41973de4acf8e47edd92f448f4ad9755f1a5fe37fad8c533ea3b93488f7e/bb_unsucked-0.0.11-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d2106a6e0f4236401393d17d82a85a62", "sha256": "eaf5e05e57aa0acc04b77840d5c2f732ce4f97da18d0f8957ee3fd647a812a0d" }, "downloads": -1, "filename": "bb_unsucked-0.0.11.tar.gz", "has_sig": false, "md5_digest": "d2106a6e0f4236401393d17d82a85a62", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14730, "upload_time": "2019-01-19T20:59:37", "url": "https://files.pythonhosted.org/packages/4f/fd/b8f3f976ea02b0c6ada9586b9837b492ceb6b798bad6b0ded869db3c35e3/bb_unsucked-0.0.11.tar.gz" } ], "0.0.12": [ { "comment_text": "", "digests": { "md5": "ce46af9fd68a076e12134433fd8362ac", "sha256": "a7cdd18830bc4133c9b0bd02262a8dc0c2e19e42e443f13b4aac67eee5695429" }, "downloads": -1, "filename": "bb_unsucked-0.0.12-py3-none-any.whl", "has_sig": false, "md5_digest": "ce46af9fd68a076e12134433fd8362ac", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 22903, "upload_time": "2019-01-20T02:28:56", "url": "https://files.pythonhosted.org/packages/56/b0/946776280f679fe3f3de6ac42c03490bd5e9b64b331582d13ef4ff319b60/bb_unsucked-0.0.12-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9091b68f776b47fb666895eb3e9f9bc3", "sha256": "f4478374aa8643e0a49970e27c9fb3e5b24ea0ef8205680c19d4f033c1807a2b" }, "downloads": -1, "filename": "bb_unsucked-0.0.12.tar.gz", "has_sig": false, "md5_digest": "9091b68f776b47fb666895eb3e9f9bc3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16759, "upload_time": "2019-01-20T02:28:58", "url": "https://files.pythonhosted.org/packages/85/06/402c4ceb2ef316161e191833b78dd6847474b519d372c04938a2270dc240/bb_unsucked-0.0.12.tar.gz" } ], "0.0.13": [ { "comment_text": "", "digests": { "md5": "c88bf15305a45be027f47d5c003a3d63", "sha256": "b960b64fd4d4b09271f28118e37df68d5ad8feb8ed3e2ba02a4ff5e4b7fbb514" }, "downloads": -1, "filename": "bb_unsucked-0.0.13-py3-none-any.whl", "has_sig": false, "md5_digest": "c88bf15305a45be027f47d5c003a3d63", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 26611, "upload_time": "2019-01-22T02:40:59", "url": "https://files.pythonhosted.org/packages/fc/0b/0ff0adf36cf31ae4ff517849323f843a55465acc956232339cb759b28a21/bb_unsucked-0.0.13-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b2b45ee0a8e754c8e18901e66a1202ed", "sha256": "13e7980886e54a5734a13fe0080c2fa1adeaa84405b3c12c4fe498a463ef5d4e" }, "downloads": -1, "filename": "bb_unsucked-0.0.13.tar.gz", "has_sig": false, "md5_digest": "b2b45ee0a8e754c8e18901e66a1202ed", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19133, "upload_time": "2019-01-22T02:41:01", "url": "https://files.pythonhosted.org/packages/28/af/bbf79a32ed681845d1f84c5254baead1fdc3af54c0bcc1446ddea9e2b827/bb_unsucked-0.0.13.tar.gz" } ], "0.0.14": [ { "comment_text": "", "digests": { "md5": "70e1ea91281da145f971fb49c2064663", "sha256": "aaa2cba6726af61d6649bb4d46959251a11daac3fcdfe398b354dc7e5e90acd3" }, "downloads": -1, "filename": "bb_unsucked-0.0.14-py3-none-any.whl", "has_sig": false, "md5_digest": "70e1ea91281da145f971fb49c2064663", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 27245, "upload_time": "2019-01-24T18:50:48", "url": "https://files.pythonhosted.org/packages/e2/f6/4e71ffc7dfb98d8bffa9afc263fb2696e3ccf656f48b5deff5a15aeebd46/bb_unsucked-0.0.14-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "963469ce42145481dcfc80b5ba415b02", "sha256": "73c2c81dc642e4cb5f22cc22f031bbad3ab8e3b3c97e1e7aa9ebd237fee61915" }, "downloads": -1, "filename": "bb_unsucked-0.0.14.tar.gz", "has_sig": false, "md5_digest": "963469ce42145481dcfc80b5ba415b02", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19429, "upload_time": "2019-01-24T18:50:49", "url": "https://files.pythonhosted.org/packages/14/14/406a4659657d0744791dd20e151894d572c29a876abfdc9b11f5f9eedca3/bb_unsucked-0.0.14.tar.gz" } ], "0.0.1a0": [ { "comment_text": "", "digests": { "md5": "12cfde9579036bed0d0bb7b2eef309ae", "sha256": "925faf8fbf9a52aea7f7ea45aa86f07e5a5a9d928ef7f9e7aa7126267fcfa119" }, "downloads": -1, "filename": "bb_unsucked-0.0.1a0-py3-none-any.whl", "has_sig": false, "md5_digest": "12cfde9579036bed0d0bb7b2eef309ae", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13150, "upload_time": "2019-01-18T23:55:39", "url": "https://files.pythonhosted.org/packages/40/41/0de87aeeaa6cf47ea7092ac4407dbc810b88d212932ace65e9fdac239301/bb_unsucked-0.0.1a0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "faf2b7797c8d7282be1479cbae3ead9a", "sha256": "f9d27d033fe3c7650cf0e5491ff069cc3eb9c7a002b109e37cb8693a335a8fcb" }, "downloads": -1, "filename": "bb_unsucked-0.0.1a0.tar.gz", "has_sig": false, "md5_digest": "faf2b7797c8d7282be1479cbae3ead9a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6455, "upload_time": "2019-01-18T23:55:41", "url": "https://files.pythonhosted.org/packages/62/34/7af2ca4bc3dc93f8f4a95c4095c1199def29210565b4b2c6f87f4e157ded/bb_unsucked-0.0.1a0.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "8560e6fc48e0e3c095b0c2c5226bf703", "sha256": "4d329cac674974c9de3070309a3fd7fc0a2b8fa50639f8b0b8fc6df0711901a1" }, "downloads": -1, "filename": "bb_unsucked-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "8560e6fc48e0e3c095b0c2c5226bf703", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13123, "upload_time": "2019-01-18T23:58:35", "url": "https://files.pythonhosted.org/packages/a8/67/9559d7795d2c097761b0a962761c11e4ba3e44173bd96c1ba46d5e765440/bb_unsucked-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6dbf83df9b844a24e44eb54f79c2196e", "sha256": "932d699dbb3337786fe471ef575340b512b1921555833ba85aa1dd1aefe25d5b" }, "downloads": -1, "filename": "bb_unsucked-0.0.2.tar.gz", "has_sig": false, "md5_digest": "6dbf83df9b844a24e44eb54f79c2196e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6453, "upload_time": "2019-01-18T23:58:37", "url": "https://files.pythonhosted.org/packages/5c/f3/1129c4f51b886ae2c48ac4563aaa968b14dbf5c7e5646e5296ba353c6655/bb_unsucked-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "dc13bfb3c25fce90727c8cb3b1293ed6", "sha256": "257e00003f2d137718012c433742d3934aa17e257e3efbe326af0badba7741cc" }, "downloads": -1, "filename": "bb_unsucked-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "dc13bfb3c25fce90727c8cb3b1293ed6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13316, "upload_time": "2019-01-19T00:11:59", "url": "https://files.pythonhosted.org/packages/66/0d/cd854933f80213df92faad1385953f33998c01dec3c5f2fb317c04e04416/bb_unsucked-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6ca61a8ed2caeff79747ce89fc89c377", "sha256": "835ab9739468ed7d376b87c7123a2747ae36d4937954c52612a70e9f0e2d60fe" }, "downloads": -1, "filename": "bb_unsucked-0.0.3.tar.gz", "has_sig": false, "md5_digest": "6ca61a8ed2caeff79747ce89fc89c377", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6656, "upload_time": "2019-01-19T00:12:01", "url": "https://files.pythonhosted.org/packages/14/5a/bf32fb6e8af5e11564a3f63c1e0e5a779c9f0d33e7248da60dcf996b1f4f/bb_unsucked-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "f5c000924f04d95a79589ee0f86c575c", "sha256": "8b51b8a8d866286fdba36b0b3c2eeb690c07583e2bc3a8f5b9359e42e2749e85" }, "downloads": -1, "filename": "bb_unsucked-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "f5c000924f04d95a79589ee0f86c575c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16075, "upload_time": "2019-01-19T07:12:46", "url": "https://files.pythonhosted.org/packages/b5/90/0372f0fe770f321ded4df14c5b9aed4599de3f383b9f5a37a5cb892e8602/bb_unsucked-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7493f1a6a8a2350c38d84b7244604699", "sha256": "14f7a43b70bbf367324c79920cb2b3497b5b03f3ae442819dfbdbab90326f0f7" }, "downloads": -1, "filename": "bb_unsucked-0.0.4.tar.gz", "has_sig": false, "md5_digest": "7493f1a6a8a2350c38d84b7244604699", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8967, "upload_time": "2019-01-19T07:12:49", "url": "https://files.pythonhosted.org/packages/7f/9d/a644a49688bfaaed4a0c4eb69de18844b921ce669e7e36769f888b548a2f/bb_unsucked-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "313cf9ba811c8a0e89a66c3240abd54d", "sha256": "584cb2a5c0ee658346f3d341931e187f59fba95c4cca2d72e062689bc80620c9" }, "downloads": -1, "filename": "bb_unsucked-0.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "313cf9ba811c8a0e89a66c3240abd54d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17348, "upload_time": "2019-01-19T10:38:51", "url": "https://files.pythonhosted.org/packages/92/ee/b0b358f92734768440ceb122f2b3515038b3028390c6b6fecc0d367449cc/bb_unsucked-0.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a11f415a4dd35413d024a1b486d3d927", "sha256": "6d9aeb6c18f63ce3f719f21bd36ed1479bfcf15301d626f35a5076afa8add0d4" }, "downloads": -1, "filename": "bb_unsucked-0.0.5.tar.gz", "has_sig": false, "md5_digest": "a11f415a4dd35413d024a1b486d3d927", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10714, "upload_time": "2019-01-19T10:38:54", "url": "https://files.pythonhosted.org/packages/eb/b1/2c6ddd267c88d67149651393bc8fd5a069714c9a9542dee3b94da5e58a31/bb_unsucked-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "31b86a09eb81aad374903753f97dafe9", "sha256": "a6c2ece91bc7a025e8db4ce99212f99ce40f10e61dde15e4a7757a08bfca2fa3" }, "downloads": -1, "filename": "bb_unsucked-0.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "31b86a09eb81aad374903753f97dafe9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20501, "upload_time": "2019-01-19T20:30:52", "url": "https://files.pythonhosted.org/packages/4a/a3/18c0eeabffd223c374bd2a6ed4ec8683c498c705e5abdb36572ae106befb/bb_unsucked-0.0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "99c1354ced0913fa70c203a1c2d81909", "sha256": "046c0ad915927911830ef4b8b6b5da72dab56ed71470206b537f76e13a033f3b" }, "downloads": -1, "filename": "bb_unsucked-0.0.6.tar.gz", "has_sig": false, "md5_digest": "99c1354ced0913fa70c203a1c2d81909", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14720, "upload_time": "2019-01-19T20:30:56", "url": "https://files.pythonhosted.org/packages/2f/60/9ef99a0a432e093b624aa6afa79a8bfd11e0435aed13fbb4b0422a47aa99/bb_unsucked-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "44ed2a4f6997a3a4846191dcace62324", "sha256": "6b7e3a39ee408bad9520ad63ef2d60ca64456ef51a7fb707eb4fdfacfe836b6b" }, "downloads": -1, "filename": "bb_unsucked-0.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "44ed2a4f6997a3a4846191dcace62324", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20533, "upload_time": "2019-01-19T20:39:54", "url": "https://files.pythonhosted.org/packages/ae/e8/0add292bf89a652aea135fc67dace11010904c3c40cda5af8399d69b520a/bb_unsucked-0.0.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b4c50210b7420fc799ab9c2f17e596fc", "sha256": "6430aa3e7bd77a9e2a2b6dc9b950d3ee808171dd2f7bf1bf0b33212a55efa022" }, "downloads": -1, "filename": "bb_unsucked-0.0.7.tar.gz", "has_sig": false, "md5_digest": "b4c50210b7420fc799ab9c2f17e596fc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14756, "upload_time": "2019-01-19T20:39:55", "url": "https://files.pythonhosted.org/packages/8b/f3/ec26519ddb13378a5cab111e74bcc53b051f91f26e22df5e54efd2aafb03/bb_unsucked-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "f9411653ea04ea2b89c2bb89f552b35f", "sha256": "f255c2787c0c20afc91d5b07d767a2ef78d22e33ca437f087becea72d90a77ef" }, "downloads": -1, "filename": "bb_unsucked-0.0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "f9411653ea04ea2b89c2bb89f552b35f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20525, "upload_time": "2019-01-19T20:50:53", "url": "https://files.pythonhosted.org/packages/25/31/64d5c3b3d4a2da352b806abf30ca4cffbd40541685a255c99a9edba6d383/bb_unsucked-0.0.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "37130f579f140309e7a0b56c0ac9e845", "sha256": "3c39eae43690c7f8e6474b742c554f374a8ec0d7b2a1989613f0a2f462c70296" }, "downloads": -1, "filename": "bb_unsucked-0.0.8.tar.gz", "has_sig": false, "md5_digest": "37130f579f140309e7a0b56c0ac9e845", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14740, "upload_time": "2019-01-19T20:50:55", "url": "https://files.pythonhosted.org/packages/a9/d4/cab2a2e2b960bece651b415f8ffbf6093c94561e5aa084c0d95919fa69c1/bb_unsucked-0.0.8.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "28e53ec54b0d22e1207b228aee4c75f0", "sha256": "97330c2fe1976c9f42a5259fb55cef20782e2160411c3c8d7ba0447701abaea2" }, "downloads": -1, "filename": "bb_unsucked-0.0.9-py3-none-any.whl", "has_sig": false, "md5_digest": "28e53ec54b0d22e1207b228aee4c75f0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20519, "upload_time": "2019-01-19T20:53:39", "url": "https://files.pythonhosted.org/packages/04/cf/b09e9fca326ca080306c72db89990c1367ac01618d4adbfd26037cb0ff25/bb_unsucked-0.0.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "86b878e058ea167fe5b9f8486b2ec94c", "sha256": "6e0c951c844ad9cdd0ecd6de732300d88956628de7038dda8c8b804393b8f58a" }, "downloads": -1, "filename": "bb_unsucked-0.0.9.tar.gz", "has_sig": false, "md5_digest": "86b878e058ea167fe5b9f8486b2ec94c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14741, "upload_time": "2019-01-19T20:53:40", "url": "https://files.pythonhosted.org/packages/c3/07/2af820ef24834201f6fbfe800f99bf21752f7af1909070d1423297fc5a78/bb_unsucked-0.0.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "70e1ea91281da145f971fb49c2064663", "sha256": "aaa2cba6726af61d6649bb4d46959251a11daac3fcdfe398b354dc7e5e90acd3" }, "downloads": -1, "filename": "bb_unsucked-0.0.14-py3-none-any.whl", "has_sig": false, "md5_digest": "70e1ea91281da145f971fb49c2064663", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 27245, "upload_time": "2019-01-24T18:50:48", "url": "https://files.pythonhosted.org/packages/e2/f6/4e71ffc7dfb98d8bffa9afc263fb2696e3ccf656f48b5deff5a15aeebd46/bb_unsucked-0.0.14-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "963469ce42145481dcfc80b5ba415b02", "sha256": "73c2c81dc642e4cb5f22cc22f031bbad3ab8e3b3c97e1e7aa9ebd237fee61915" }, "downloads": -1, "filename": "bb_unsucked-0.0.14.tar.gz", "has_sig": false, "md5_digest": "963469ce42145481dcfc80b5ba415b02", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19429, "upload_time": "2019-01-24T18:50:49", "url": "https://files.pythonhosted.org/packages/14/14/406a4659657d0744791dd20e151894d572c29a876abfdc9b11f5f9eedca3/bb_unsucked-0.0.14.tar.gz" } ] }