{ "info": { "author": "M. Hancock", "author_email": "mhancock@archangelic.space", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "\n# pinhook\n\n[![Supported Python versions](https://img.shields.io/pypi/pyversions/pinhook.svg)](https://pypi.org/project/pinhook) [![Package License](https://img.shields.io/pypi/l/pinhook.svg)](https://github.com/archangelic/pinhook/blob/master/LICENSE) [![PyPI package format](https://img.shields.io/pypi/format/pinhook.svg)](https://pypi.org/project/pinhook) [![Package development status](https://img.shields.io/pypi/status/pinhook.svg)](https://pypi.org/project/pinhook) [![With love from tilde.town](https://img.shields.io/badge/with%20love%20from-tilde%20town-e0b0ff.svg)](https://tilde.town)\n\nThe pluggable python framework for IRC bots and Twitch bots\n\n* [Installation](#installation)\n* [Creating an IRC Bot](#creating-an-irc-bot)\n * [From Config File](#from-config-file)\n * [From Python File](#from-python-file)\n* [Creating a Twitch Bot](#creating-a-twitch-bot)\n* [Creating plugins](#creating-plugins)\n* [Examples](#examples)\n\n## Installation\n\nPinhook can be installed from PyPI:\n\n``` bash\npip install pinhook\n```\n\n## Creating an IRC Bot\n\nA pinhook bot can be initialized using the command line tool `pinhook` with a config file, or by importing it into a python file to extend the base class.\n\n### From Config File\n\nPinhook supports configuration files in YAML, TOML, and JSON formats.\n\nExample YAML config:\n\n```YAML\nnickname: \"ph-bot\"\nserver: \"irc.somewhere.net\"\nchannels:\n - \"#foo\"\n - \"#bar\"\n```\n\nRequired configuration keys:\n\n* `nickname`: (string) nickname for your bot\n* `server`: (string) server for the bot to connect\n* `channels`: (array of strings) list of channels to connect to once connected\n\nOptional keys:\n\n* `port`: (default: `6667`) choose a custom port to connect to the server\n* `ops`: (default: empty list) list of operators who can do things like make the bot join other channels or quit\n* `plugin_dir`: (default: `\"plugins\"`) directory where the bot should look for plugins\n* `log_level`: (default: `\"info\"`) string indicating logging level. Logging can be disabled by setting this to `\"off\"`\n* `ns_pass`: this is the password to identify with nickserv\n* `server_pass`: password for the server\n* `ssl_required`: (default: `False`) boolean to turn ssl on or off\n\nOnce you have your configuration file ready and your plugins in place, you can start your bot from the command line:\n\n```bash\npinhook config.yaml\n```\n\nPinhook will try to detect the config format from the file extension, but the format can also be supplied using the `--format` option.\n\n```bash\n$ pinhook --help\nUsage: pinhook [OPTIONS] CONFIG\n\nOptions:\n -f, --format [json|yaml|toml]\n --help Show this message and exit.\n```\n\n### From Python File\n\nTo create the bot, just create a python file with the following:\n\n```python\nfrom pinhook.bot import Bot\n\nbot = Bot(\n channels=['#foo', '#bar'],\n nickname='ph-bot',\n server='irc.freenode.net'\n)\nbot.start()\n```\n\nThis will start a basic bot and look for plugins in the 'plugins' directory to add functionality.\n\nOptional arguments are:\n\n* `port`: (default: `6667`) choose a custom port to connect to the server\n* `ops`: (default: empty list) list of operators who can do things like make the bot join other channels or quit\n* `plugin_dir`: (default: `\"plugins\"`) directory where the bot should look for plugins\n* `log_level`: (default: `\"info\"`) string indicating logging level. Logging can be disabled by setting this to `\"off\"`\n* `ns_pass`: this is the password to identify with nickserv\n* `server_pass`: password for the server\n* `ssl_required`: (default: `False`) boolean to turn ssl on or off\n\n## Creating a Twitch Bot\n\nPinhook has a baked in way to connect directly to a twitch channel\n\n```python\nfrom pinhook.bot import TwitchBot\n\nbot = TwitchBot(\n nickname='ph-bot',\n channel='#channel',\n token='super-secret-oauth-token'\n)\nbot.start()\n```\n\nThis function has far less options, as the server, port, and ssl are already handled by twitch.\n\nOptional aguments are:\n\n* `ops`\n* `plugin_dir`\n* `log_level`\n\nThese options are the same for both IRC and Twitch\n\n## Creating plugins\n\nThere are two types of plugins, commands and listeners. Commands only activate if a message starts with the command word, while listeners receive all messages and are parsed by the plugin for maximum flexibility.\n\nIn your chosen plugins directory (\"plugins\" by default) make a python file with a function. You use the `@pinhook.plugin.register` decorator to create command plugins, or `@pinhook.plugin.listener` to create listeners.\n\nThe function will need to be structured as such:\n\n```python\nimport pinhook.plugin\n\n@pinhook.plugin.register('!test')\ndef test_plugin(msg):\n message = '{}: this is a test!'.format(msg.nick)\n return pinhook.plugin.message(message)\n```\n\nThe function will need to accept a single argument in order to accept a `Message` object from the bot.\n\nThe `Message` object has the following attributes:\n\n* `cmd`: (for command plugins) the command that triggered the function\n* `nick`: the user who triggered the command\n* `arg`: (for command plugins) all the trailing text after the command. This is what you will use to get optional information for the command\n* `text`: (for listener plugins) the entire text of the message\n* `channel`: the channel where the command was initiated\n* `ops`: the list of bot operators\n* `botnick`: the nickname of the bot\n* `logger`: instance of `Bot`'s logger\n* `datetime`: aware `datetime.datetime` object when the `Message` object was created\n* `timestamp`: float for the unix timestamp when the `Message` object was created\n* `bot`: the initialized Bot class\n\nIt also contains the following IRC functions:\n\n* `privmsg`: send a message to an arbitrary channel or user\n* `action`: same as privmsg, but does a CTCP action. (i.e., `/me does a thing`)\n* `notice`: send a notice\n\nYou can optionally use the `@pinhook.plugin.ops` decorator to denote that a command should only be executable by a bot op.\n\n* If you specify the optional second argument, it will be displayed when a non-op attempts to execute the command\n\nThe function will need to be structured as such:\n\n```python\n@pinhook.plugin.register('!test')\n@pinhook.plugin.ops('!test', 'Only ops can run this command!')\ndef test_plugin(msg):\n return pinhook.plugin.message('This was run by an op!')\n```\n\nThe plugin function can return one of the following in order to give a response to the command:\n\n* `pinhook.plugin.message`: basic message in channel where command was triggered\n* `pinhook.plugin.action`: CTCP action in the channel where command was triggered (basically like using `/me does a thing`)\n\n## Examples\n\nThere are some basic examples in the `examples` directory in this repository.\n\nHere is a list of live bots using pinhook:\n\n* [pinhook-tilde](https://github.com/archangelic/pinhook-tilde) - fun bot for tilde.town\n* [adminbot](https://github.com/tildetown/adminbot) - admin helper bot for tilde.town, featuring some of the ways you can change the Bot class to suit your needs\n* [lucibot](https://github.com/Lucidiot/lucibot)\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://github.com/archangelic/pinhook", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pinhook", "package_url": "https://pypi.org/project/pinhook/", "platform": "", "project_url": "https://pypi.org/project/pinhook/", "project_urls": { "Homepage": "https://github.com/archangelic/pinhook" }, "release_url": "https://pypi.org/project/pinhook/1.9.2/", "requires_dist": [ "irc", "enum34", "click", "marshmallow", "toml ; extra == 'toml'", "pyyaml ; extra == 'yaml'" ], "requires_python": "", "summary": "a pluggable irc bot framework in python", "version": "1.9.2" }, "last_serial": 5973220, "releases": { "1.0.1": [ { "comment_text": "", "digests": { "md5": "c91c4d03645dd41937b34b1c4d73f73e", "sha256": "79b3f5c104e51b72a6e4260f63d1cc95f05a854687ba6cd8ff6623d4805187c8" }, "downloads": -1, "filename": "pinhook-1.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c91c4d03645dd41937b34b1c4d73f73e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 4058, "upload_time": "2017-10-10T21:51:25", "url": "https://files.pythonhosted.org/packages/5b/20/c6c7238bfdd8bfd481fa85162ccfcca5227e5984af05c1a47257000fd6ac/pinhook-1.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a19961787ffe0bb8eec03e365fa9f049", "sha256": "01e3da593592ee0abe3040403f81cf143dc7cccd6d613c56173458c597b757bb" }, "downloads": -1, "filename": "pinhook-1.0.1.tar.gz", "has_sig": false, "md5_digest": "a19961787ffe0bb8eec03e365fa9f049", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3280, "upload_time": "2017-10-10T21:51:26", "url": "https://files.pythonhosted.org/packages/45/3b/d6ce13ab755d89c213935fae75d212fe416e420ce3ec2848041f2d8f1bd5/pinhook-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "8a5bf02a873426f9f5f0148be210d38c", "sha256": "bfa1e8d15e04771ab1907f0a7ea1d48d924f641931a049ffca741752288c7e25" }, "downloads": -1, "filename": "pinhook-1.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8a5bf02a873426f9f5f0148be210d38c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5837, "upload_time": "2017-10-10T22:16:27", "url": "https://files.pythonhosted.org/packages/f6/f0/8514a221e7ac254b69680e9b871b621e1ed1e56a3f96766a50b8e3048247/pinhook-1.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "28bea4ad4bb2b8333e0df79ca09350fd", "sha256": "1a2e1b859c178ebbf08c1383d315d16d5e078b7c465f76194711d451abb81979" }, "downloads": -1, "filename": "pinhook-1.0.2.tar.gz", "has_sig": false, "md5_digest": "28bea4ad4bb2b8333e0df79ca09350fd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4511, "upload_time": "2017-10-10T22:16:27", "url": "https://files.pythonhosted.org/packages/e5/3e/b2e8601a6de1ccab43e22ff0eb58f6b4c63565e9c56334ae48589c32d232/pinhook-1.0.2.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "278851b43fe6bcb2e7f1acffc709c10d", "sha256": "3e343cefb1e02f2ac7b6023b8c3bdd890694680bf0487de4a67838bd74c094d5" }, "downloads": -1, "filename": "pinhook-1.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "278851b43fe6bcb2e7f1acffc709c10d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5921, "upload_time": "2017-10-16T17:41:31", "url": "https://files.pythonhosted.org/packages/15/94/cc2650db2dbfc74382beedcc55a1406c231d5cd872ceda4bda8c63443eee/pinhook-1.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "40ec3cc649248b7569915b9f9e80be7a", "sha256": "2fe919e08065d8c945487c7568017ae5be3bafc44863f886e64ec93aede09351" }, "downloads": -1, "filename": "pinhook-1.1.0.tar.gz", "has_sig": false, "md5_digest": "40ec3cc649248b7569915b9f9e80be7a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4594, "upload_time": "2017-10-16T17:41:32", "url": "https://files.pythonhosted.org/packages/10/b2/8b526c5675180aef08076dc1b50308a7d01bea60f2b51fd54a3acf2d2eea/pinhook-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "ac6e478028a2297a850cbcda5268d600", "sha256": "2922c02886633757b5ced8d62406c062e31bac4fb20da2d2899d1d88a4041994" }, "downloads": -1, "filename": "pinhook-1.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ac6e478028a2297a850cbcda5268d600", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5962, "upload_time": "2017-11-27T19:09:29", "url": "https://files.pythonhosted.org/packages/89/06/36418453271651ac5028dc73cf50df44de7a52e4323307a14df0bcbd80fb/pinhook-1.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9726351ee33b1123af116cb3015405a6", "sha256": "3641c06ca57bc7387219e47bd7b6ca84aea6822b67a4361c6286cb1d1cffaba4" }, "downloads": -1, "filename": "pinhook-1.1.1.tar.gz", "has_sig": false, "md5_digest": "9726351ee33b1123af116cb3015405a6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4686, "upload_time": "2017-11-27T19:09:31", "url": "https://files.pythonhosted.org/packages/2c/0d/1c0ba061868aa54373cedfb456a5c708bf31d35a7f499827f0a6cae4f6a6/pinhook-1.1.1.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "80a477815ae49bf2c0ef5ad275bd4d9a", "sha256": "ec1bc54d984a20c7fdd2da93c6296fca15f9ece68e932560f779f9585aee93e0" }, "downloads": -1, "filename": "pinhook-1.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "80a477815ae49bf2c0ef5ad275bd4d9a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6291, "upload_time": "2017-12-06T19:23:41", "url": "https://files.pythonhosted.org/packages/85/69/dfe6320739844f9646b566811a75f4efd8037109454d55e9c1e888befd99/pinhook-1.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3f627d202c27cb90ad71655ce9e0836d", "sha256": "a67b322d312c19fe2a14490d67cc53ec79188001166bce4790ea1e1e025706f9" }, "downloads": -1, "filename": "pinhook-1.2.0.tar.gz", "has_sig": false, "md5_digest": "3f627d202c27cb90ad71655ce9e0836d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4996, "upload_time": "2017-12-06T19:23:41", "url": "https://files.pythonhosted.org/packages/bd/3a/8f75d2857089aeb298aa15ab082d6b52264a329b6a38b89ad242a6922c98/pinhook-1.2.0.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "860878793240124469bbbbf7bd7a1869", "sha256": "b5ae882829c5ca56014c06d010965bcf736c07ad0bd0d53938d25ac3cf160b84" }, "downloads": -1, "filename": "pinhook-1.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "860878793240124469bbbbf7bd7a1869", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6991, "upload_time": "2018-01-10T22:51:03", "url": "https://files.pythonhosted.org/packages/b9/ee/00c045f50a41af480a3274b5c4861b16e48b22f19308d6bd5388dae80b20/pinhook-1.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "571eefb5711973df12bf6104056e88d2", "sha256": "ea5f2e96c399b664e396628da450ab2d0e4e91acf659d945c6f75e100e54172f" }, "downloads": -1, "filename": "pinhook-1.3.0.tar.gz", "has_sig": false, "md5_digest": "571eefb5711973df12bf6104056e88d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5603, "upload_time": "2018-01-10T22:51:10", "url": "https://files.pythonhosted.org/packages/36/c5/b2290bb7759b7e05a784fef763263061ce3f203d89d7eedcfedfc6e47156/pinhook-1.3.0.tar.gz" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "7706023e361b27bd5c2e2fb159125d9a", "sha256": "765994f7791863c6caee26e1ad6c05908992405d6d2b60b3b10d14da2012a577" }, "downloads": -1, "filename": "pinhook-1.3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7706023e361b27bd5c2e2fb159125d9a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6990, "upload_time": "2018-01-10T23:00:45", "url": "https://files.pythonhosted.org/packages/d5/56/8ba3d1e5c3208513c68170e70ca67684606af5e758b0e115d521363a789b/pinhook-1.3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5b38c0a4c2df1abfa063afab2334f1eb", "sha256": "1251197a19de0be5f9187320ae5782d418da1b56c8a622a7ffdcd0522f0dcbf4" }, "downloads": -1, "filename": "pinhook-1.3.1.tar.gz", "has_sig": false, "md5_digest": "5b38c0a4c2df1abfa063afab2334f1eb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5600, "upload_time": "2018-01-10T23:00:52", "url": "https://files.pythonhosted.org/packages/b7/cc/989d8bbf7d495a95cee193dbbc0092d55a712259adaa6629dc177972c656/pinhook-1.3.1.tar.gz" } ], "1.3.2": [ { "comment_text": "", "digests": { "md5": "8a624c5b2737025d47aa13552917ec81", "sha256": "2d237e9616e098fedd88edd437550f8702a941b5d41b0c9e4c7589a62844a543" }, "downloads": -1, "filename": "pinhook-1.3.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8a624c5b2737025d47aa13552917ec81", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6985, "upload_time": "2018-01-10T23:26:45", "url": "https://files.pythonhosted.org/packages/67/fd/99a840c7867323029ee3df8aad8d0810c71d963ae6db1c009c999c3dfce5/pinhook-1.3.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1b2b0d388edc5fd3493faa55948faf85", "sha256": "1935b0aa4026fb3a2d69587905d48c597421f5e177674cf876bfc117635bc37d" }, "downloads": -1, "filename": "pinhook-1.3.2.tar.gz", "has_sig": false, "md5_digest": "1b2b0d388edc5fd3493faa55948faf85", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5598, "upload_time": "2018-01-10T23:26:46", "url": "https://files.pythonhosted.org/packages/88/3a/acb68e3a1fd1000dd1ef239e163743585e2142760f32f24c00bffba508c3/pinhook-1.3.2.tar.gz" } ], "1.3.3": [ { "comment_text": "", "digests": { "md5": "3f7763ff7175d1286d4d9f7bdf12a4e2", "sha256": "ceeb13297cc2789bc1b6c854aea324e51d2296722af0acc13f174c1df39cda98" }, "downloads": -1, "filename": "pinhook-1.3.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3f7763ff7175d1286d4d9f7bdf12a4e2", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6980, "upload_time": "2018-01-11T18:35:04", "url": "https://files.pythonhosted.org/packages/93/02/b9fec7a02a43de5f78601afd419e71c83b06b2e44ae037225a72f327566a/pinhook-1.3.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "868e4691dcf3a8650f6225232de94e2d", "sha256": "197d7f5c41f3b95477f6e29f1e95ae8ecb5e1a85b93a8f30385dba9698ca0fa2" }, "downloads": -1, "filename": "pinhook-1.3.3.tar.gz", "has_sig": false, "md5_digest": "868e4691dcf3a8650f6225232de94e2d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5598, "upload_time": "2018-01-11T18:35:05", "url": "https://files.pythonhosted.org/packages/18/37/6ed077d1e3d1e33b76ccf856776f9105d2f94bf22de368166c7e04018fb0/pinhook-1.3.3.tar.gz" } ], "1.3.4": [ { "comment_text": "", "digests": { "md5": "d73fc8c38bc427f7af07b5eb7b927dc9", "sha256": "6c50efd08abd785af6d70790b33263b8879ecd138b0b1b30ac3a9d0d7112ee98" }, "downloads": -1, "filename": "pinhook-1.3.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d73fc8c38bc427f7af07b5eb7b927dc9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7010, "upload_time": "2018-01-12T19:19:37", "url": "https://files.pythonhosted.org/packages/39/09/198594953a1d98dda82728bdd9dedcd92a5cb99ff6caca5c30879fa13ce8/pinhook-1.3.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0cffd1a59a719c12ecbf5f94a6be3ab0", "sha256": "d90c126ae3de82e0da79b2c6f8ce45de88f87a2462400b544792745d9fb22693" }, "downloads": -1, "filename": "pinhook-1.3.4.tar.gz", "has_sig": false, "md5_digest": "0cffd1a59a719c12ecbf5f94a6be3ab0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5622, "upload_time": "2018-01-12T19:19:38", "url": "https://files.pythonhosted.org/packages/de/e5/c4dcc9d576d54f3b28499de9e1060bc2e9da212f075926abe4a10af0da4b/pinhook-1.3.4.tar.gz" } ], "1.4.0": [ { "comment_text": "", "digests": { "md5": "0a8a7fc57989e7ed44ee7962ba56bcf3", "sha256": "ccb730a7f948a5fb9d0ba781f1a907b2ffe36a2e16aa74760294cec58464c796" }, "downloads": -1, "filename": "pinhook-1.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0a8a7fc57989e7ed44ee7962ba56bcf3", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7231, "upload_time": "2018-02-06T00:01:31", "url": "https://files.pythonhosted.org/packages/24/d4/5a3eac2af031aad1f509a3748af8d3d6bdb62c4b7956dba38e21eec7e8ba/pinhook-1.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c30758a3539e5dc2836dbfc277215309", "sha256": "f212e8e6954a894805431a35a09abebae2c41d46cde75f855670c5b6075f55c2" }, "downloads": -1, "filename": "pinhook-1.4.0.tar.gz", "has_sig": false, "md5_digest": "c30758a3539e5dc2836dbfc277215309", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5834, "upload_time": "2018-02-06T00:01:32", "url": "https://files.pythonhosted.org/packages/4c/09/592a3ac42ad7de5a6d882ca66865ceaee447bfa2ef68a1f5639b10eb8107/pinhook-1.4.0.tar.gz" } ], "1.4.1": [ { "comment_text": "", "digests": { "md5": "df6909f44ebedcdbb4635063155c028e", "sha256": "5d7f890c5de9156d220a13c80fd20721666e64318cc7b638cd5e77468d3d8102" }, "downloads": -1, "filename": "pinhook-1.4.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "df6909f44ebedcdbb4635063155c028e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7663, "upload_time": "2018-03-15T19:20:08", "url": "https://files.pythonhosted.org/packages/0e/55/fd924030b850197fbd819674fd23d566bbddfb3e3a2dde057175e7d709d3/pinhook-1.4.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c06507344da00df5286e9375fe0eec9c", "sha256": "1a3f9aef271343df337675b5cd04ee3a922b15f52b7bb15fe4e455e416e12584" }, "downloads": -1, "filename": "pinhook-1.4.1.tar.gz", "has_sig": false, "md5_digest": "c06507344da00df5286e9375fe0eec9c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6080, "upload_time": "2018-03-15T19:20:12", "url": "https://files.pythonhosted.org/packages/c7/91/7a54758ff122bdba8569972dbc18c7f211b4927e428b99d0f098d8d21fdb/pinhook-1.4.1.tar.gz" } ], "1.4.2": [ { "comment_text": "", "digests": { "md5": "45e6124cd1ba944bb903ed8cf5c8e246", "sha256": "1882a0cfea8ee9976c950277f0c690aa3d471a3e3ec4bac003aa95559e04d83e" }, "downloads": -1, "filename": "pinhook-1.4.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "45e6124cd1ba944bb903ed8cf5c8e246", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7661, "upload_time": "2018-03-15T22:16:49", "url": "https://files.pythonhosted.org/packages/3b/19/6952ea9fa747106200a80c953445623d917edf572b6e6abe3fb803446973/pinhook-1.4.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "80dc1a582e19a59b2730b8339d11f70a", "sha256": "e6b5ede84315362d217503e42df9d9ab18d237b6d7ff838d5e9f9de0bd6e0871" }, "downloads": -1, "filename": "pinhook-1.4.2.tar.gz", "has_sig": false, "md5_digest": "80dc1a582e19a59b2730b8339d11f70a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6080, "upload_time": "2018-03-15T22:16:50", "url": "https://files.pythonhosted.org/packages/b0/43/9df6ff86109765e632090d0ac3fa4e1c5d72d2320df6268f96741f179950/pinhook-1.4.2.tar.gz" } ], "1.4.3": [ { "comment_text": "", "digests": { "md5": "851157ac0f2e9b343e032bf7d9a835cd", "sha256": "08ab159e1ad598e120ee5528d033bb1b2ef6c09b137d05cb68d8b1ed311c9973" }, "downloads": -1, "filename": "pinhook-1.4.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "851157ac0f2e9b343e032bf7d9a835cd", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7670, "upload_time": "2018-04-10T17:06:25", "url": "https://files.pythonhosted.org/packages/23/e1/4a3c3e3d9551c68dd788149bca5db90e9d694b703b801a193a900823ea9b/pinhook-1.4.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cd9e174dbf4afdb375f67e9befcb3aa8", "sha256": "684be99f57d12c7e44a9f15022d100b1eae2f783404dc804aa1fa1c32064270f" }, "downloads": -1, "filename": "pinhook-1.4.3.tar.gz", "has_sig": false, "md5_digest": "cd9e174dbf4afdb375f67e9befcb3aa8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6085, "upload_time": "2018-04-10T17:06:26", "url": "https://files.pythonhosted.org/packages/4a/2a/a81d1e4ae503c6426b6ce5b19d7dc51a3cdff508783f28db3f0e990bfc3f/pinhook-1.4.3.tar.gz" } ], "1.4.4": [ { "comment_text": "", "digests": { "md5": "7a42726b4ce79d85e6a2b7b44224559f", "sha256": "3a8e4b6c94e327f613f47e169ead4d925263386f2d39efb7cfdc31fd664a63e1" }, "downloads": -1, "filename": "pinhook-1.4.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7a42726b4ce79d85e6a2b7b44224559f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5711, "upload_time": "2018-10-07T01:13:51", "url": "https://files.pythonhosted.org/packages/1a/f1/74e2df478a5bfafa022a38509cc7923be53a5e46e5dc0018491e4a8e9cb1/pinhook-1.4.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1d3d7c6b4ddedb86f64e7d8d125643ae", "sha256": "2a8da8ba29900fddbecc106eace86a4fd2d52edc3b0e42174e005b038b26d362" }, "downloads": -1, "filename": "pinhook-1.4.4.tar.gz", "has_sig": false, "md5_digest": "1d3d7c6b4ddedb86f64e7d8d125643ae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6289, "upload_time": "2018-10-07T01:13:52", "url": "https://files.pythonhosted.org/packages/a8/be/3f846ea5730700ff1b8f875d3c52a8929726389274658a588c8c8b7341ac/pinhook-1.4.4.tar.gz" } ], "1.4.5": [ { "comment_text": "", "digests": { "md5": "a08ff2f00e3b78e1da5a5a1298d3c76c", "sha256": "ba13eb36010bb486c812b457fc3669161973e2dd4a9c65b9a0cd56de0b434fdd" }, "downloads": -1, "filename": "pinhook-1.4.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a08ff2f00e3b78e1da5a5a1298d3c76c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8449, "upload_time": "2018-10-10T17:55:47", "url": "https://files.pythonhosted.org/packages/9e/0a/962982c466983e8b7426e25f23d8a635886dff672ca64229cc4305097de7/pinhook-1.4.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "777ed8af96159600f028d9efcfb207b9", "sha256": "45a9f483d6e7767e4375b2c5f5a47fdfac1601f99263ae35ad21cd2f4f4537d8" }, "downloads": -1, "filename": "pinhook-1.4.5.tar.gz", "has_sig": false, "md5_digest": "777ed8af96159600f028d9efcfb207b9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6666, "upload_time": "2018-10-10T17:55:48", "url": "https://files.pythonhosted.org/packages/d5/f7/e48e2ab794060ee562d3ac0fd9213d3609101f8e6601d8e3944e00af2137/pinhook-1.4.5.tar.gz" } ], "1.5.0": [ { "comment_text": "", "digests": { "md5": "23a9c565dd433f994c01442536249c0f", "sha256": "07ef258d952f3eff5b99e12e95045ca8a948811993f246cddccb60aa077c608c" }, "downloads": -1, "filename": "pinhook-1.5.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "23a9c565dd433f994c01442536249c0f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6950, "upload_time": "2018-10-24T22:05:26", "url": "https://files.pythonhosted.org/packages/03/8d/5ec8246823a389e9c621bde4f2e3d96823732db98cf852610f6c520a3caf/pinhook-1.5.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a9dea5d44dfcd2197816b7d0a7d4d5e3", "sha256": "a780b99e8b09af92c3feed94c01e459cec9853ec75c0355455794c40443ccbc1" }, "downloads": -1, "filename": "pinhook-1.5.0.tar.gz", "has_sig": false, "md5_digest": "a9dea5d44dfcd2197816b7d0a7d4d5e3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6786, "upload_time": "2018-10-24T22:05:27", "url": "https://files.pythonhosted.org/packages/26/b4/9faab2e56c51bf4816e98a1f309b4a0aea8ef4e8b62cedc39ac0d7a89b5c/pinhook-1.5.0.tar.gz" } ], "1.5.1": [ { "comment_text": "", "digests": { "md5": "632319e01bbfd545ba157087a222291e", "sha256": "e56e6dd5ea0bb95841f97b47ac8eaf322055f1df27c815cb10da62d9a3aa5155" }, "downloads": -1, "filename": "pinhook-1.5.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "632319e01bbfd545ba157087a222291e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6991, "upload_time": "2018-11-02T20:57:48", "url": "https://files.pythonhosted.org/packages/fb/51/1579da005ad9ae1b3707ff080372bce4de4349c6eb35a29d806e24a3c5c8/pinhook-1.5.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c5598a308635dd977be4460f0696e52f", "sha256": "601ea9d305832ae07654cb428193be7b93582b75f78bcc3ad8ad65e3e9505afe" }, "downloads": -1, "filename": "pinhook-1.5.1.tar.gz", "has_sig": false, "md5_digest": "c5598a308635dd977be4460f0696e52f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6835, "upload_time": "2018-11-02T20:57:50", "url": "https://files.pythonhosted.org/packages/7f/75/eef77927b47a909d99583d878c70e5bab6c842529e1f2ed141b136089eb3/pinhook-1.5.1.tar.gz" } ], "1.5.2": [ { "comment_text": "", "digests": { "md5": "9e13ceb55652f0b92d7d083799a7bfe4", "sha256": "3070519ff46e989cdd2c62b491062ea099526ebb34acda6e00beed8d09a1ce9a" }, "downloads": -1, "filename": "pinhook-1.5.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9e13ceb55652f0b92d7d083799a7bfe4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8616, "upload_time": "2018-12-28T19:23:06", "url": "https://files.pythonhosted.org/packages/c4/87/2b0f87022798672697f1e26195e58b5d0ee36bd0565b83a0f802c1063070/pinhook-1.5.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1a26a0433d9d99cd7f7a4ae2547f09c1", "sha256": "d096e030288514a5769f266e978c11f595310ae7087845fcc260e0b7901bac27" }, "downloads": -1, "filename": "pinhook-1.5.2.tar.gz", "has_sig": false, "md5_digest": "1a26a0433d9d99cd7f7a4ae2547f09c1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6815, "upload_time": "2018-12-28T19:23:08", "url": "https://files.pythonhosted.org/packages/cd/09/94d8d3c8451759a3ebec253c2b04e8819a22d225f62aed9bb58a84a6d31b/pinhook-1.5.2.tar.gz" } ], "1.5.3": [ { "comment_text": "", "digests": { "md5": "a097f98df11725e4a0d80d73d6535b8f", "sha256": "46accf287c876923f475c42248125f6e21a5b7c469cda106d14abb4dbdae7467" }, "downloads": -1, "filename": "pinhook-1.5.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a097f98df11725e4a0d80d73d6535b8f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9155, "upload_time": "2019-01-25T21:21:27", "url": "https://files.pythonhosted.org/packages/b6/29/35b52f75d34672e2d54d7015846b870c540ae43052083c3f53422c6549f1/pinhook-1.5.3-py2.py3-none-any.whl" } ], "1.6.0": [ { "comment_text": "", "digests": { "md5": "594dc5f353a62bbea89647827d3b3523", "sha256": "0e5c0cf5a552396568362e3906024de65129d07fd01dfd923c047c0feddc00c7" }, "downloads": -1, "filename": "pinhook-1.6.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "594dc5f353a62bbea89647827d3b3523", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9610, "upload_time": "2019-02-16T18:55:04", "url": "https://files.pythonhosted.org/packages/61/b1/d17c4422e154ded4a9a407c1f319ba678319bd2c7e559e6fdbd66ecad9cc/pinhook-1.6.0-py2.py3-none-any.whl" } ], "1.6.2": [ { "comment_text": "", "digests": { "md5": "fa020e0aa9e413abed0e4dd04713c85d", "sha256": "e2c5cd72d11be97827153a60f44d7ace37b84c35c3aa7b715b125d52aaa0d0e9" }, "downloads": -1, "filename": "pinhook-1.6.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "fa020e0aa9e413abed0e4dd04713c85d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9680, "upload_time": "2019-02-22T22:00:42", "url": "https://files.pythonhosted.org/packages/25/f6/da969ca47710e2f7a8597a80f892373bde361882c176432cf10910395825/pinhook-1.6.2-py2.py3-none-any.whl" } ], "1.7.0": [ { "comment_text": "", "digests": { "md5": "fa91200c6950c9dfb202449633cdfa10", "sha256": "bcf4452781bc4104f6eda55041b1ea3638fcdb65c6bab15acde683bcae38f23d" }, "downloads": -1, "filename": "pinhook-1.7.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "fa91200c6950c9dfb202449633cdfa10", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9883, "upload_time": "2019-03-01T00:42:58", "url": "https://files.pythonhosted.org/packages/2a/2f/50655be7cbcf1590533789f698a25bf093062fc636ccd2f80decaaf061b7/pinhook-1.7.0-py2.py3-none-any.whl" } ], "1.7.1": [ { "comment_text": "", "digests": { "md5": "e9d9304708492217b40c0ee3e81313ed", "sha256": "2e0ec953d1709819a6762d8485ce8c850d60d8a73bea503d2e1384f10ef8e547" }, "downloads": -1, "filename": "pinhook-1.7.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e9d9304708492217b40c0ee3e81313ed", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10122, "upload_time": "2019-03-02T20:28:00", "url": "https://files.pythonhosted.org/packages/0f/92/c662a1de44b248421512fbbae5b2c7dcfd4966823efe1f8309c13b0d8746/pinhook-1.7.1-py2.py3-none-any.whl" } ], "1.8.0": [ { "comment_text": "", "digests": { "md5": "a2b36479f341f029374c7b1fe72d923b", "sha256": "6fd15af1e09c6fa26cbcb8ba2dafe4e34d465f4379fc93f78f7c4af2cd3a5e2a" }, "downloads": -1, "filename": "pinhook-1.8.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a2b36479f341f029374c7b1fe72d923b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9700, "upload_time": "2019-08-30T20:34:52", "url": "https://files.pythonhosted.org/packages/5d/2d/966966704b0457a02673c43789480a037370c2fe0bde7dd30df2d42bcfec/pinhook-1.8.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b21a424591803efbf64d69f27ad25c72", "sha256": "a46982e3bf76ec15a31c5f0f9fb1492f72cddd6d9edd3f098555dc9cd57657a3" }, "downloads": -1, "filename": "pinhook-1.8.0.tar.gz", "has_sig": false, "md5_digest": "b21a424591803efbf64d69f27ad25c72", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12175, "upload_time": "2019-08-30T20:34:55", "url": "https://files.pythonhosted.org/packages/5a/55/07712b9b2a245a5be0dc3caf855a3ebb3914024c35285b0f900d2eeee682/pinhook-1.8.0.tar.gz" } ], "1.9.0": [ { "comment_text": "", "digests": { "md5": "9837ed234fe71054d9af9e03068f52f1", "sha256": "356335ba60ef1a5338f8234d3179018758b7640349816910924c06faf451766a" }, "downloads": -1, "filename": "pinhook-1.9.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9837ed234fe71054d9af9e03068f52f1", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10188, "upload_time": "2019-09-18T17:12:10", "url": "https://files.pythonhosted.org/packages/7b/57/afe2004708d8c999eb4d1dbcefcc45e3d1d1db4b93cdadbd8204d152ee95/pinhook-1.9.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d24f03c7fc7e6c0f39f4bfac45a3ce12", "sha256": "4de3adae32de8493af1fa0df4e901938597475987dbfe6485f66bc93d556fbd2" }, "downloads": -1, "filename": "pinhook-1.9.0.tar.gz", "has_sig": false, "md5_digest": "d24f03c7fc7e6c0f39f4bfac45a3ce12", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12251, "upload_time": "2019-09-18T17:12:11", "url": "https://files.pythonhosted.org/packages/17/e7/eb0e0d7a417d2177b66f76dd042e7785c599e1b84a843f88cfdf486367bc/pinhook-1.9.0.tar.gz" } ], "1.9.2": [ { "comment_text": "", "digests": { "md5": "b31cda807225703ce1eb020ff87906a6", "sha256": "bea0ba2499e8ce6b20591ade467eeb1dac79df0f7b045103d350fe1e48922973" }, "downloads": -1, "filename": "pinhook-1.9.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b31cda807225703ce1eb020ff87906a6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11258, "upload_time": "2019-10-14T20:00:21", "url": "https://files.pythonhosted.org/packages/16/68/335c2ec740f715f8f0b2ab4cd6ff34251c794e6746d3a23b48be36a4d6e7/pinhook-1.9.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f6cd82500fcb6a92ec941d8ae146f9f2", "sha256": "c3f827ec582ddda11310c488dfbf8139a8a6a478db8893ab43369bcf9df3685e" }, "downloads": -1, "filename": "pinhook-1.9.2.tar.gz", "has_sig": false, "md5_digest": "f6cd82500fcb6a92ec941d8ae146f9f2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13082, "upload_time": "2019-10-14T20:00:23", "url": "https://files.pythonhosted.org/packages/94/26/fb9ffbce0df96231ff1b84f04188e660f0b2b008151f4792a92b8c14d0d2/pinhook-1.9.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b31cda807225703ce1eb020ff87906a6", "sha256": "bea0ba2499e8ce6b20591ade467eeb1dac79df0f7b045103d350fe1e48922973" }, "downloads": -1, "filename": "pinhook-1.9.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b31cda807225703ce1eb020ff87906a6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11258, "upload_time": "2019-10-14T20:00:21", "url": "https://files.pythonhosted.org/packages/16/68/335c2ec740f715f8f0b2ab4cd6ff34251c794e6746d3a23b48be36a4d6e7/pinhook-1.9.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f6cd82500fcb6a92ec941d8ae146f9f2", "sha256": "c3f827ec582ddda11310c488dfbf8139a8a6a478db8893ab43369bcf9df3685e" }, "downloads": -1, "filename": "pinhook-1.9.2.tar.gz", "has_sig": false, "md5_digest": "f6cd82500fcb6a92ec941d8ae146f9f2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13082, "upload_time": "2019-10-14T20:00:23", "url": "https://files.pythonhosted.org/packages/94/26/fb9ffbce0df96231ff1b84f04188e660f0b2b008151f4792a92b8c14d0d2/pinhook-1.9.2.tar.gz" } ] }