{ "info": { "author": "Max Gurela", "author_email": "maxpowa@outlook.com", "bugtrack_url": null, "classifiers": [], "description": "# Sopel GitHub\n\nGitHub plugin for [Sopel](https://sopel.chat/) IRC bots.\n\n\n## Installation\n\nThe easy (and recommended) way: `pip install sopel_modules.github`\n\nThe less-easy way; you must already have Sopel installed to use this method.\n```\ngit clone https://github.com/sopel-irc/sopel-github\ncd sopel-github\npip install .\n```\n\n## Out-of-the-box Functionality\n\nDetects when GitHub URLs are posted and takes over URL handling of them, pretty\nprinting details of:\n\n * Commits\n * Issues\n * Issue Comments\n * Pull Requests\n * Repositories\n\nPretty prints repository details on command, using `.gh user/repo` or `.github\nuser/repo`. If you omit the user, it will assume your IRC nick is the user. For\nexample:\n\n```\n<@maxpowa> .gh sopel-github\n [GitHub] maxpowa/sopel-github - GitHub module for Sopel | 100.0% Python\n | Last Push: 2015-10-16 - 04:00:32UTC | Stargazers: 0 | Watchers: 0 |\n Forks: 0 | Network: 8 | Open Issues: 0 |\n https://github.com/maxpowa/sopel-github\n\n<+salty> .gh sopel-irc/sopel-github\n [GitHub] sopel-irc/sopel-github - GitHub module for Sopel | 100.0%\n Python | Last Push: Sunday, May 12, 2019 17:05:43 (CDT) | Stargazers: 3\n | Watchers: 1 | Forks: 8 | Network: 8 | Open Issues: 18 |\n https://github.com/sopel-irc/sopel-github\n```\nIf you have [the `emoji` package](https://pypi.org/project/emoji/) installed, `:emoji_name:`s will be converted to Unicode emoji in the output.\n\n\n### API Keys & Usage\n\nGitHub APIs have some fairly lenient unauthorized request limits, but you may\nfind yourself hitting them. In order to prevent yourself from hitting these\nlimits (and potentially being blacklisted), you should generate GitHub API keys\nfor yourself. Fill out the information at\nhttps://github.com/settings/applications/new and then populate your\nconfiguration with your newly generated client key and secret.\n\n__IF YOU PLAN ON USING WEBHOOK FUNCTIONALITY:__ You _must_ properly fill out the\n\"Authorization callback URL\" to match the external URL you plan to use for the\nwebhook.\n\n\n## Webhook Functionality\n\nWebhook functionality is __disabled__ by default. It requires slightly more\ntechnical knowledge and configuration may vary depending on your system. There's\ntwo ways this may be configured, behind a proxy or exposed to the web.\n\n\n#### Configuring behind a proxy\n\nThis is the __recommended__ way of configuring the webhook functionality, as\nthere may be security flaws in the other method.\n\nFirst, configure the GitHub module. You may do so by running `sopel\n--configure-modules` or changing the config file directly.\n```\n[github]\nwebhook = True\nwebhook_host = 127.0.0.1\nwebhook_port = 3333\nexternal_url = http://bad.code.brought.to.you.by.maxpowa.us/webhook\n```\nThe above configuration is only listening on `localhost (127.0.0.1)`, because\nI'm using a reverse proxy in nginx to proxy `/webhook` to port 3333. The reverse\nproxy configuration would be fairly simple, as shown below. Auth must be\nincluded, to match the \"Authorization callback URL\" you included in generating\nthe API keys.\n```\nlocation ~ /(webhook|auth) {\n proxy_pass http://127.0.0.1:3333;\n}\n``` \n\n#### Configuring exposed to the web\n\nIf you're not using a proxy, your config will look something like the below\nconfig.\n```\n[github]\nwebhook = True\nwebhook_host = 0.0.0.0 # Or a specific interface\nwebhook_port = 3333\nexternal_url = http://your.ip.here:3333/webhook\n```\n\n### Creating hooks\n\nAs an OP+ in a channel, you may type `.gh-hook user/repo`. You will see some\ninformational text on what you need to do to finalize the hook, including a link\nto click to authorize the creation of the webhook. You will be required to\nauthorize the GitHub application to read/write your webhooks (see\n[L163-164](https://github.com/sopel-irc/sopel-github/blob/9afaf1e51d9c28a1bbba7b442f6e7dea7db74018/sopel_modules/github/webhook.py#L163-L164))\nbut this should be the _only_ permissions we need.\n\n```\n<@maxpowa> .gh-hook maxpowa/sopel-github\n Successfully enabled listening for maxpowa/sopel-github's events in\n #inumuta.\n Great! Please allow me to create my webhook by authorizing via this\n link: \n Once that webhook is successfully created, I'll post a message in here.\n Give me about a minute or so to set it up after you authorize. You can\n configure the colors that I use to display webhooks with .gh-hook-color\n```\n\nAfter you've authorized the webhook creation, you will be redirected to a simple\npage informing you that the bot succeeded/failed creating your hook. Assuming it\nsucceeded, you should see a generic message appear in the channel you activated\nit in.\n\n\n### Customizing hooks\n\nYou may customize the colors that each part of the hook takes on. After setting\nthe new colors, Sopel will reply with a sample of the new colors, e.g.:\n```\n<@maxpowa> .help gh-hook-color\n .gh-hook-color \n\n<@maxpowa> .gh-hook-color maxpowa/Inumuta 13 15 6 6 14 2\n [maxpowa/inumuta] Example name: maxpowa tag: tag commit: c0mm17 branch: master url: http://git.io/\n<@maxpowa> Unfortunately, IRC colors don't show up on GitHub.\n```\n\n\nChanges in 0.2.2\n================\n\nChanged:\n* Comment bodies will be shortened to approx. 250 characters, to try and stay\n within the length limit of one IRC line (#45)\n\nFixed:\n* Repo URLs can be detected even with leading text on the line (#44)\n\n\nChanges in 0.2.1\n================\n\nFixed:\n* Comments containing blank lines would cause errors (#43)\n\n\nChanges in 0.2.0\n================\n\nAdded:\n* Handling for several new event types:\n * Pull request reviews (#20)\n * Pull request assignments (#23)\n * Pull request labels (#23)\n * Pull request milestones (#35)\n * Issue & pull request title edits (#36)\n * Releases (#21)\n* Handling of draft pull requests (#34)\n* Handling for draft pull requests marked ready for review (#34)\n* Converting `:emoji:` to Unicode emoji in most text output (#17)\n * Requires optional dependency: https://pypi.org/project/emoji/\n\nChanged:\n* `secret` setting is now called `client_secret` (#42)\n * The plugin will automatically migrate configs to use the new name, but\n manual editing is encouraged in advanced setups (e.g. if the user Sopel\n runs as cannot write to the config file)\n* Quoted text is ignored when generating comment output (#41)\n* Unicode ellipsis now used instead of three periods (#31)\n* Oxford comma now used in generated lists (#40)\n* Webhook payload processing is handed off to a separate thread (#22)\n * Bottle can handle only one request at a time; doing this should minimize\n the potential for failed deliveries, as GitHub's webhook delivery service\n times out very quickly\n\nFixed:\n* GitHub URL regexes should match all possible usernames & repo names (#38)\n * Of particular note: dots (`.`) are now recognized in repository links,\n such as Sopel's website repo: https://github.com/sopel-irc/sopel.chat\n\n\nChanges in 0.1.7\n================\n\nFixed:\n* Error with empty issue/PR description or commit message (#39)\n\n\nChanges in 0.1.6\n================\n\nChanged:\n* Webhook now says \"merged\" instead of \"closed\" for merged PRs (#18)\n* Re-opened issues/PRs will also trigger the webhook now (#27)\n\nFixed:\n* Webhook ignores issue, PR, and review comments that were edited (#16, #24)\n* Commit summary correctly says \"1 file\" instead of \"1 files\" (#37)\n* Some webhook output grammar fixed (#15)\n* Handle comments submitted via email correctly WRT line-endings (#30)\n* Replace uses of long-deprecated `SopelMemory` method (#33)\n\n\nChanges in 0.1.5\n================\n\nFixed:\n* Refactoring unintentionally broke registering new repo webhooks (#14)\n\nMeta:\n* PyPI package description should be rendered to HTML now (fixed content-type)\n\n\nChanges in 0.1.4\n================\n\nChanged:\n* \"GitHub\" is now properly capitalized everywhere in text output (#9)\n* Usage output uses `help_prefix` from config instead of hardcoded `.` (#12)\n\nFixed:\n* git.io shortening was cutting off GET parameters of input links. (#11)\n\n\nChanges in 0.1.3\n================\n\nMeta:\n* Moved to Sopel organization on GitHub; new maintainer\n\nChanged:\n* Uses requests instead of deprecated sopel.web functions (Sopel itself\n requires requests, so we don't have to.)\n* Fetched git.io links use HTTPS now", "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/sopel-irc/sopel-github", "keywords": "", "license": "Eiffel Forum License, version 2", "maintainer": "dgw", "maintainer_email": "dgw@technobabbl.es", "name": "sopel-modules.github", "package_url": "https://pypi.org/project/sopel-modules.github/", "platform": "", "project_url": "https://pypi.org/project/sopel-modules.github/", "project_urls": { "Homepage": "https://github.com/sopel-irc/sopel-github" }, "release_url": "https://pypi.org/project/sopel-modules.github/0.2.2/", "requires_dist": null, "requires_python": "", "summary": "GitHub module for Sopel", "version": "0.2.2" }, "last_serial": 5750900, "releases": { "0.1.2": [ { "comment_text": "", "digests": { "md5": "b54cf0899ec13f43737c789c732db1d6", "sha256": "8c1c09c2cdb9dcb68c29889709aac901c6bd2efe4a3a54b21200051e25bfc1eb" }, "downloads": -1, "filename": "sopel_modules.github-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "b54cf0899ec13f43737c789c732db1d6", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 17795, "upload_time": "2015-10-26T16:43:12", "url": "https://files.pythonhosted.org/packages/03/b5/dd69c22e6abf67001d0b806887f8ed85817cec415b10483fe616a8b6d1e9/sopel_modules.github-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f219de7f58ef76c1bb785e9df1b2512f", "sha256": "0e6d8256187453905509c1803063f9ed78994c8e2d98314f65d8157f6945bda6" }, "downloads": -1, "filename": "sopel_modules.github-0.1.2.tar.gz", "has_sig": false, "md5_digest": "f219de7f58ef76c1bb785e9df1b2512f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14788, "upload_time": "2015-10-26T16:42:46", "url": "https://files.pythonhosted.org/packages/71/24/f0aa7c6e80f3e7dcac62a124cb410f64f7025c4c0921133d96d526a20c9c/sopel_modules.github-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "996311a45e7cc82d80ff3340d810fab6", "sha256": "abacb28fca050ff3dab107217d54062696ae0138295ce1f648382e4ea0843dc6" }, "downloads": -1, "filename": "sopel_modules.github-0.1.3.tar.gz", "has_sig": false, "md5_digest": "996311a45e7cc82d80ff3340d810fab6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15519, "upload_time": "2018-04-04T23:33:30", "url": "https://files.pythonhosted.org/packages/bd/ec/d8b2067d5974e61a0d0d6aa8b99248a43f10d1df674d2992afec2259ed1e/sopel_modules.github-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "0ea2187b9e9f4e27a1c1f3e4d4c8fc0b", "sha256": "f9f3f6ff23249ee946b50c9ecbfe4604895dc9ac3ff758287fa583cde64f3842" }, "downloads": -1, "filename": "sopel_modules.github-0.1.4.tar.gz", "has_sig": false, "md5_digest": "0ea2187b9e9f4e27a1c1f3e4d4c8fc0b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15200, "upload_time": "2019-02-16T08:43:41", "url": "https://files.pythonhosted.org/packages/c6/dd/56f965b85a6da6753c696d7a12bd349b36423596db2f0115622809fc639c/sopel_modules.github-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "749464d1e85f09849ce53d9347661dd1", "sha256": "e0929f812f2d7acc858d1ff099dd86133236949eb157aa0c6aad5493c9d146dd" }, "downloads": -1, "filename": "sopel_modules.github-0.1.5.tar.gz", "has_sig": false, "md5_digest": "749464d1e85f09849ce53d9347661dd1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15353, "upload_time": "2019-03-26T19:31:36", "url": "https://files.pythonhosted.org/packages/0c/da/acdaa86d7deca4b9792cf08266ce44359edea3bbafca882d0bdf524dd34a/sopel_modules.github-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "515057bff23b0fb960d2e38906b40556", "sha256": "73c3637e9b5142f8fd5fec674d61a20570a04b3d1d423a0e44f8185746f28a07" }, "downloads": -1, "filename": "sopel_modules.github-0.1.6.tar.gz", "has_sig": false, "md5_digest": "515057bff23b0fb960d2e38906b40556", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16094, "upload_time": "2019-05-12T23:34:35", "url": "https://files.pythonhosted.org/packages/b9/8e/c3818ff03fed3a1d637542eb3bb40dd27cb20af71a54e400ebdf5f1f221a/sopel_modules.github-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "65481021fffddeee1a53ff3efad0a5c1", "sha256": "01d2c73737e99fcb69b9af4c78c729010d96906b91716a37dd948cdcf9c2446d" }, "downloads": -1, "filename": "sopel_modules.github-0.1.7.tar.gz", "has_sig": false, "md5_digest": "65481021fffddeee1a53ff3efad0a5c1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16144, "upload_time": "2019-05-22T19:32:24", "url": "https://files.pythonhosted.org/packages/d2/bc/7254f2c5c067e95cd6ab99d5615aeeadda5d1b7840653753a7f1badfce45/sopel_modules.github-0.1.7.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "b46f736c050eeda718755665d0e3126a", "sha256": "baa16cc033a61db2455b526616554fc0b909efb84c3ccd5c9e556cc556e35989" }, "downloads": -1, "filename": "sopel_modules.github-0.2.0.tar.gz", "has_sig": false, "md5_digest": "b46f736c050eeda718755665d0e3126a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20427, "upload_time": "2019-08-15T17:33:10", "url": "https://files.pythonhosted.org/packages/b3/c1/855ab7baa833c3c5ffab72a5ce449ec0570a44700b3c331075e8c47f6a1a/sopel_modules.github-0.2.0.tar.gz" } ], "0.2.0a0": [ { "comment_text": "", "digests": { "md5": "bcacf19f56634e8d61fc8c4117907bd0", "sha256": "16efc3a9d6084ced95dd1992ad2ff4b30f06562189d1fba54b20e8047544e21e" }, "downloads": -1, "filename": "sopel_modules.github-0.2.0a0.tar.gz", "has_sig": false, "md5_digest": "bcacf19f56634e8d61fc8c4117907bd0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17236, "upload_time": "2019-03-28T22:59:16", "url": "https://files.pythonhosted.org/packages/b3/46/02e521361324ba9542b9a56ec4963f3a4ba0034ef1f6d3d50f1d3dfa675d/sopel_modules.github-0.2.0a0.tar.gz" } ], "0.2.0a1": [ { "comment_text": "", "digests": { "md5": "811f69203e9f905e22914a9ff78c73fc", "sha256": "1866e056c91f0b046f71e10a2c50337347cfc2e6a936b4aa6f53fc52a93f0f2f" }, "downloads": -1, "filename": "sopel_modules.github-0.2.0a1.tar.gz", "has_sig": false, "md5_digest": "811f69203e9f905e22914a9ff78c73fc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17403, "upload_time": "2019-04-03T21:59:13", "url": "https://files.pythonhosted.org/packages/68/4a/3fa9eee72fad494b832bf72dabdbe14766a8099c24a2f3bb5889e2b6d3af/sopel_modules.github-0.2.0a1.tar.gz" } ], "0.2.0a10": [ { "comment_text": "", "digests": { "md5": "eb427e82011b4daeb3fc9a1314490c22", "sha256": "05cc8a461ec8fba2f36c480aca54b1daa1095519ed033ff5bca5296917fc39eb" }, "downloads": -1, "filename": "sopel_modules.github-0.2.0a10.tar.gz", "has_sig": false, "md5_digest": "eb427e82011b4daeb3fc9a1314490c22", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17922, "upload_time": "2019-05-10T05:34:24", "url": "https://files.pythonhosted.org/packages/0f/4e/39828e04386a9b8331f7b18902857ec2d10f5e4b71462c20b742e29b435b/sopel_modules.github-0.2.0a10.tar.gz" } ], "0.2.0a11": [ { "comment_text": "", "digests": { "md5": "bc7f4b5f3728b4a2680885dabd0918fd", "sha256": "9741a0087143c336559a702ae0ff0532c54bd356272d48b4c4cca4ea9283d267" }, "downloads": -1, "filename": "sopel_modules.github-0.2.0a11.tar.gz", "has_sig": false, "md5_digest": "bc7f4b5f3728b4a2680885dabd0918fd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18073, "upload_time": "2019-05-12T05:11:22", "url": "https://files.pythonhosted.org/packages/9b/f8/c345fb278c44654574504e9d89cde715a2d038b972a15841fb85ea1d3d14/sopel_modules.github-0.2.0a11.tar.gz" } ], "0.2.0a12": [ { "comment_text": "", "digests": { "md5": "9d6e6522d418d9312371a7973828f288", "sha256": "faa1caea891fa736f01e5495b9d7e5176193d0bb53a45569f9eabc7af825b830" }, "downloads": -1, "filename": "sopel_modules.github-0.2.0a12.tar.gz", "has_sig": false, "md5_digest": "9d6e6522d418d9312371a7973828f288", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18105, "upload_time": "2019-05-12T05:21:44", "url": "https://files.pythonhosted.org/packages/97/59/2ff0bcb23ddb151bc3aaec7092b2cb3cea2abe4729bb092992a7a4d7c094/sopel_modules.github-0.2.0a12.tar.gz" } ], "0.2.0a13": [ { "comment_text": "", "digests": { "md5": "5f6cb1d5ecdc7a32efd9aec412dd85af", "sha256": "4c5323d9a4690c4e124126fad7c47433a49fd5730a72e0bbebee5299e8c59ed5" }, "downloads": -1, "filename": "sopel_modules.github-0.2.0a13.tar.gz", "has_sig": false, "md5_digest": "5f6cb1d5ecdc7a32efd9aec412dd85af", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19182, "upload_time": "2019-05-13T00:27:00", "url": "https://files.pythonhosted.org/packages/05/43/a18149c2c71350e543a20231bfcf84f0222f1cdbd9f7962e80cb3177f11e/sopel_modules.github-0.2.0a13.tar.gz" } ], "0.2.0a14": [ { "comment_text": "", "digests": { "md5": "819ff7b8f5246c1225cca4ffca70e00d", "sha256": "46e543d11fef48511c0cb5c560851c2a7a3e0b7586698511c9684b70a85d2d91" }, "downloads": -1, "filename": "sopel_modules.github-0.2.0a14.tar.gz", "has_sig": false, "md5_digest": "819ff7b8f5246c1225cca4ffca70e00d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19244, "upload_time": "2019-05-19T06:51:31", "url": "https://files.pythonhosted.org/packages/50/9f/ef87c88ffebbac22417ce869c27275ab2fed40852831f77f32328f5f990c/sopel_modules.github-0.2.0a14.tar.gz" } ], "0.2.0a15": [ { "comment_text": "", "digests": { "md5": "186c2c481bbadc45efddb06533608f3b", "sha256": "136817c20ee433dcb4666a6127d2242b3817239a5b8d07629ef7599cca0e604e" }, "downloads": -1, "filename": "sopel_modules.github-0.2.0a15.tar.gz", "has_sig": false, "md5_digest": "186c2c481bbadc45efddb06533608f3b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21287, "upload_time": "2019-06-02T19:59:02", "url": "https://files.pythonhosted.org/packages/44/30/5f07d14cd86117a70ba29cf99b3fa07b402808c5b249028930daaf34e543/sopel_modules.github-0.2.0a15.tar.gz" } ], "0.2.0a16": [ { "comment_text": "", "digests": { "md5": "82cd2ced1b964c1d199852507f70dad2", "sha256": "964c9fa467db07531f2dcf7a93fcdd55387afc1f2421802ec470ad9359a08e50" }, "downloads": -1, "filename": "sopel_modules.github-0.2.0a16.tar.gz", "has_sig": false, "md5_digest": "82cd2ced1b964c1d199852507f70dad2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21677, "upload_time": "2019-08-14T19:20:44", "url": "https://files.pythonhosted.org/packages/29/ad/7931679e3ce739a88e86c68c236b62963ddfb0aad522ddd63f630faca38d/sopel_modules.github-0.2.0a16.tar.gz" } ], "0.2.0a2": [ { "comment_text": "", "digests": { "md5": "7cef7a074bdefd9369d45e0ba1a5bdc1", "sha256": "2ec4f6b15a5941299fb08f52106d0736f8d356e83c47a92c203d24b0bc3437da" }, "downloads": -1, "filename": "sopel_modules.github-0.2.0a2.tar.gz", "has_sig": false, "md5_digest": "7cef7a074bdefd9369d45e0ba1a5bdc1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16696, "upload_time": "2019-04-04T22:37:14", "url": "https://files.pythonhosted.org/packages/b2/94/a530e1ad012224b694439a90bcef5cb230c36e45fc02d8c95652dcf59be6/sopel_modules.github-0.2.0a2.tar.gz" } ], "0.2.0a3": [ { "comment_text": "", "digests": { "md5": "3490f89408f7dbc6938a2134c5998b21", "sha256": "91cff87d143d6342615cbfaa2e2a077faff9cbeab92fd1976c16e82b9041b5bf" }, "downloads": -1, "filename": "sopel_modules.github-0.2.0a3.tar.gz", "has_sig": false, "md5_digest": "3490f89408f7dbc6938a2134c5998b21", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16760, "upload_time": "2019-04-12T00:13:45", "url": "https://files.pythonhosted.org/packages/e9/f4/8bc3c89d2c5dbc74911c239b9a31583f278daf792626387bb318e138d645/sopel_modules.github-0.2.0a3.tar.gz" } ], "0.2.0a4": [ { "comment_text": "", "digests": { "md5": "2bf42a9ca064783db43d08a77849f213", "sha256": "4e75fb4ca226340df424bd585ca07f6576efb3239a6083221cb9191a1383ff52" }, "downloads": -1, "filename": "sopel_modules.github-0.2.0a4.tar.gz", "has_sig": false, "md5_digest": "2bf42a9ca064783db43d08a77849f213", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16838, "upload_time": "2019-04-23T05:19:11", "url": "https://files.pythonhosted.org/packages/2d/f8/a84eab94d7fd318e0fad4c441982f70793929a3eef80f730ef94b54ed697/sopel_modules.github-0.2.0a4.tar.gz" } ], "0.2.0a5": [ { "comment_text": "", "digests": { "md5": "bd5db07a8a3c3225f42156dfbd4b0baf", "sha256": "f71bd71d1aa99a0c90df8d03bb43bde1d9f3575de606fae38b1b52ed94bd6735" }, "downloads": -1, "filename": "sopel_modules.github-0.2.0a5.tar.gz", "has_sig": false, "md5_digest": "bd5db07a8a3c3225f42156dfbd4b0baf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18032, "upload_time": "2019-04-27T02:59:32", "url": "https://files.pythonhosted.org/packages/b0/18/ce456ae9db1da6b0e5981c3c2b63bf68c5ce17345084ffa46286402d8eef/sopel_modules.github-0.2.0a5.tar.gz" } ], "0.2.0a6": [ { "comment_text": "", "digests": { "md5": "e7d37fa647df4a4e7a2c8abff3b6215c", "sha256": "b19cf53895b8d3743c4ac39f0bc67a5a28948ea31021074d6cfa3d1679caf778" }, "downloads": -1, "filename": "sopel_modules.github-0.2.0a6.tar.gz", "has_sig": false, "md5_digest": "e7d37fa647df4a4e7a2c8abff3b6215c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18254, "upload_time": "2019-04-29T23:04:04", "url": "https://files.pythonhosted.org/packages/bc/d0/19f706b4b2383c55a76aaac8ef2930ca65ee18f6c1ede87bfddc2e7d0daf/sopel_modules.github-0.2.0a6.tar.gz" } ], "0.2.0a7": [ { "comment_text": "", "digests": { "md5": "ab639bf965133c6d10dd7bf4bbe7d141", "sha256": "5c6871a9fb6cfab74fae9f9fe034063cdc2745424e2f329ba0cb4e568a57c5f8" }, "downloads": -1, "filename": "sopel_modules.github-0.2.0a7.tar.gz", "has_sig": false, "md5_digest": "ab639bf965133c6d10dd7bf4bbe7d141", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18331, "upload_time": "2019-04-29T23:10:02", "url": "https://files.pythonhosted.org/packages/27/0d/0baa7d1abd8745018e5148fe0afe3f1f00199deb33c22110d87d333a4765/sopel_modules.github-0.2.0a7.tar.gz" } ], "0.2.0a8": [ { "comment_text": "", "digests": { "md5": "d6fb1491e6e4904fc1ed56b0b589e32c", "sha256": "59dc65750ac9181e38c4cd222adcf77ea845001ac3181c9003b55e86499c1e0e" }, "downloads": -1, "filename": "sopel_modules.github-0.2.0a8.tar.gz", "has_sig": false, "md5_digest": "d6fb1491e6e4904fc1ed56b0b589e32c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18359, "upload_time": "2019-04-29T23:20:39", "url": "https://files.pythonhosted.org/packages/9f/75/9c97047a3ad8fd15e06912caaa03856e7cb5390f26a6a825e9cb8a2b88ae/sopel_modules.github-0.2.0a8.tar.gz" } ], "0.2.0a9": [ { "comment_text": "", "digests": { "md5": "6c63531e977430bff2490bb0678c5b4e", "sha256": "a62d67ff921d1d56ffe6b229ab52f78a2ac555d5bde2fbb6c111396c280be6e1" }, "downloads": -1, "filename": "sopel_modules.github-0.2.0a9.tar.gz", "has_sig": false, "md5_digest": "6c63531e977430bff2490bb0678c5b4e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19172, "upload_time": "2019-04-30T22:46:16", "url": "https://files.pythonhosted.org/packages/47/c9/ba2944de2685bbe69330938ca0db320b97468e101be75d752ce4dd016da8/sopel_modules.github-0.2.0a9.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "03d40cea9cf1e7e6fcde0114a72ae5c7", "sha256": "0e79b7a69a258d1b0613db57802d81a48443c5271545d9bb6bf84ff516a13e20" }, "downloads": -1, "filename": "sopel_modules.github-0.2.1.tar.gz", "has_sig": false, "md5_digest": "03d40cea9cf1e7e6fcde0114a72ae5c7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18937, "upload_time": "2019-08-18T18:10:13", "url": "https://files.pythonhosted.org/packages/d6/d2/b31ac94a5b02ffd5704f8cf07c11b7d4a0200d68f46b9c76996e12d95900/sopel_modules.github-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "3e97bc2dd90279ba6326e217053e114d", "sha256": "3ad7105765ffde40f4fca4f4504b54903688327ac54dc6fe45ad2396eddd2647" }, "downloads": -1, "filename": "sopel_modules.github-0.2.2.tar.gz", "has_sig": false, "md5_digest": "3e97bc2dd90279ba6326e217053e114d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20739, "upload_time": "2019-08-29T10:07:34", "url": "https://files.pythonhosted.org/packages/14/d4/aadb1b66b13b0ee12f1251f7b388269b27044e428fc19d37dc9501387d91/sopel_modules.github-0.2.2.tar.gz" } ], "0.2.2b1": [ { "comment_text": "", "digests": { "md5": "46bb00adef6cb2de9ed613c644112e0e", "sha256": "082569b98a46e818b8acad3bc282a7054526f9dd8b88be9cc7f42abd1413775c" }, "downloads": -1, "filename": "sopel_modules.github-0.2.2b1.tar.gz", "has_sig": false, "md5_digest": "46bb00adef6cb2de9ed613c644112e0e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23145, "upload_time": "2019-08-20T22:04:52", "url": "https://files.pythonhosted.org/packages/a5/23/2f956a539fdfcb090638214d754db56af3c88246b736910ed7e4e51b3c76/sopel_modules.github-0.2.2b1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3e97bc2dd90279ba6326e217053e114d", "sha256": "3ad7105765ffde40f4fca4f4504b54903688327ac54dc6fe45ad2396eddd2647" }, "downloads": -1, "filename": "sopel_modules.github-0.2.2.tar.gz", "has_sig": false, "md5_digest": "3e97bc2dd90279ba6326e217053e114d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20739, "upload_time": "2019-08-29T10:07:34", "url": "https://files.pythonhosted.org/packages/14/d4/aadb1b66b13b0ee12f1251f7b388269b27044e428fc19d37dc9501387d91/sopel_modules.github-0.2.2.tar.gz" } ] }