{ "info": { "author": "Ken", "author_email": "kenjyco@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 3.5", "Topic :: Software Development :: Libraries" ], "description": "Install\n-------\n\nInstall Redis and start server\n\n::\n\n % sudo apt-get install -y redis-server\n\n or\n\n % brew install redis@3.2\n % brew services start redis@3.2\n\nInstall with ``pip``\n\n::\n\n % pip3 install chloop\n\n Optionally install ipython with ``pip3 install ipython`` to enable\n ``:ipython`` colon command on a GetCharLoop instance. Also\n ``pip3 install pdbpp`` for an improved debug experience when using\n ``:pdb`` colon command.\n\nUsage\n-----\n\nThe ``GetCharLoop`` class is provided by the ``chloop`` package. Calling\nan **instance** of this class starts a REPL session, which the user can\nend by pressing ``Ctrl`` + ``d`` or ``Ctrl`` + ``c``.\n\n See the **Example** section below.\n\nThe **first** character you type at the REPL prompt is significant.\n\nThe colon\n^^^^^^^^^\n\nHitting the ``:`` key at the prompt will allow you to enter a command\nand any arguments you need to pass to that command.\n\n- ``:docstrings`` to view docstrings of methods defined on the class\n- ``:errors`` to view colon commands that raised exceptions\n- ``:history`` view colon commands issued\n- ``:pdb`` to start a pdb session (debugging/inspection)\n- ``:ipython`` to start ipython shell\n- ``:shortcuts`` to view hotkey shortcuts\n\nAny methods added to your sub-class of ``GetCharLoop`` are callable as\n**colon commands**, as long as they do not start with an underscore\n(``_``). Methods should **only accept ``*args``**, if anything.\n\nFor any methods/commands that should not be logged to the history,\nappend the method name to the end of the ``self._DONT_LOG_CMDS`` list.\n\nThe dash\n^^^^^^^^\n\nHitting the ``-`` key at the prompt will allow you to type a note.\n\nThe question mark\n^^^^^^^^^^^^^^^^^\n\nHitting the ``?`` key at the prompt will display the class docstring(s)\nand the startup message.\n\nOther keys\n^^^^^^^^^^\n\nHitting any other key at the prompt will do one of the following:\n\n- call a **registered shortcut function** bound to the key (use\n ``:shortcuts`` command to see what is available)\n- display the character and its integer ordinal\n\nA hotkey can be bound to any callable object that accepts no arguments.\n\n Use ``functools.partial`` (if necessary) to create a callable\n accepting no arguments.\n\nAdding hotkeys (simple)\n\n- call the ``_add_hotkey`` method on your instance of ``GetCharLoop``\n (or sub-class) with the following args\n\n - ``ch``: character hotkey\n - ``func``: callable object that accepts no arguments\n - ``help_string``: a string containing short help text for hotkey\n\nAdding hotkeys (when using callables on ``self``)\n\n- call the ``self._chfunc_dict_update`` method in the ``__init__``\n method of your subclass with a list of tuples or a dict.\n\n - the keys of the dict (or first items in list of tuples) are the\n hotkey characters\n - the values of the dict (or second items in list of tuples) are\n 2-item tuples\n\n - 1st item is a **callable** that accepts no arguments\n - 2nd item is a short help string\n\n Note: when passing a dict, the items will be inserted in the\n alphabetical order of the help string.\n\nBasic example\n-------------\n\n::\n\n % python3 -c 'from chloop import GetCharLoop; GetCharLoop()()'\n\n > :docstrings\n ======================================================================\n Loop forever, receiving character input from user and performing actions\n\n - ^d or ^c to break the loop\n - ':' to enter a command (and any arguments)\n - the name of the command should be monkeypatched on the GetCharLoop\n instance, or be a defined method on a GetCharLoop sub-class\n - the function bound to `:command` should accept `*args` only\n - '-' to receive an input line from user (a note)\n - '?' to show the class docstring(s) and the startup message\n\n .:: docstrings ::.\n Print/return the docstrings of methods defined on this class\n\n .:: errors ::.\n Print/return any colon commands that raised exceptions (w/ traceback)\n\n .:: history ::.\n Print/return colon commands used\n\n .:: ipython ::.\n Start ipython shell. To continue back to the input loop, use 'ctrl + d'\n\n .:: pdb ::.\n Start pdb (debugger). To continue back to the input loop, use 'c'\n\n .:: shortcuts ::.\n Print/return any hotkey shortcuts defined on this class\n\n\n\n > :pdb\n [10] > /tmp/ch/venv/lib/python3.5/site-packages/chloop/__init__.py(90)__call__()\n -> continue\n (Pdb++) l\n 85 cmd = user_input.split()[0]\n 86 args = user_input.split()[1:]\n 87\n 88 if cmd == 'pdb':\n 89 import pdb; pdb.set_trace()\n 90 -> continue\n 91\n 92 if cmd == 'ipython':\n 93 from IPython import embed; embed()\n 94 continue\n 95\n (Pdb++) self._collection\n Collection('chloop-log', 'default', index_fields='cmd,status,error_type', json_fields='args,value')\n (Pdb++) self._collection.keyspace\n []\n (Pdb++) c\n\n > :ipython\n Python 3.5.1+ (default, Mar 30 2016, 22:46:26)\n Type \"copyright\", \"credits\" or \"license\" for more information.\n\n IPython 5.2.2 -- An enhanced Interactive Python.\n ? -> Introduction and overview of IPython's features.\n %quickref -> Quick reference.\n help -> Python's own help system.\n object? -> Details about 'object', use 'object??' for extra details.\n\n\n In [1]: self._collection\n Out[1]: Collection('chloop-log', 'default', index_fields='cmd,status,error_type', json_fields='args,value')\n\n In [2]: self.shortcuts\n Out[2]: >\n\n In [3]: self.docstrings\n Out[3]: >\n\n In [4]:\n Do you really want to exit ([y]/n)? y\n\n\n > :shortcuts\n\n\n > - there are no shortcuts defined by default\n\n >\n\nSub-class example\n-----------------\n\n- Import ``GetCharLoop`` and sub-class it\n- Initialize the sub-class and call it\n\n Save the following to ``mine.py``\n\n::\n\n from functools import partial\n from chloop import GetCharLoop\n\n\n class Mine(GetCharLoop):\n \"\"\"A sub-class of GetCharLoop\"\"\"\n def __init__(self, *args, **kwargs):\n # Process any extra/custom kwargs here and set some attributes\n self._mything = kwargs.pop('mything', 'some default value')\n\n super(Mine, self).__init__(*args, **kwargs)\n\n # Add some single-key shorcuts that call methods on `self`\n self._chfunc_dict_update([\n ('h', (self.history,\n 'display recent command history')),\n ('e', (self.errors,\n 'display recent errors')),\n ])\n\n\n def somefunc(self, *args):\n \"\"\"Joins the args passed to it into a string\"\"\"\n args_as_one = ' '.join(args)\n print(repr(args_as_one))\n return args_as_one\n\n def lame(self):\n \"\"\"raise exception\"\"\"\n return 1/0\n\n\n if __name__ == '__main__':\n m = Mine(prompt='\\nmyprompt> ')\n m._add_hotkey('a', lambda: print('hello'), 'say hello')\n m()\n\nInteract with the REPL\n^^^^^^^^^^^^^^^^^^^^^^\n\n Assuming the above code is in a file called ``mine.py``\n\n::\n\n % python mine.py\n\n myprompt> :somefunc here are some args\n u'here are some args'\n\n myprompt> :shortcuts\n 'e' -- display recent errors\n 'h' -- display recent command history\n 'a' -- say hello\n\n myprompt> a\n hello\n\n myprompt> :lame\n ======================================================================\n Traceback (most recent call last):\n File \"/home/ken/chloop/chloop/__init__.py\", line 232, in __call__\n value = cmd_func()\n File \"main.py\", line 33, in lame\n return 1/0\n ZeroDivisionError: integer division or modulo by zero\n\n cmd: u'lame'\n args: []\n\n myprompt> :pdb\n ...\n\n myprompt> e\n (errors output)\n\n myprompt> - here is a note\n\n myprompt> - here is another note\n\n myprompt>\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "https://github.com/kenjyco/chloop/tarball/v0.2.21", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/kenjyco/chloop", "keywords": "repl,redis,command,history", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "chloop", "package_url": "https://pypi.org/project/chloop/", "platform": "", "project_url": "https://pypi.org/project/chloop/", "project_urls": { "Download": "https://github.com/kenjyco/chloop/tarball/v0.2.21", "Homepage": "https://github.com/kenjyco/chloop" }, "release_url": "https://pypi.org/project/chloop/0.2.21/", "requires_dist": [ "click (>=6.0)", "redis-helper", "bg-helper", "fs-helper" ], "requires_python": "", "summary": "A Redis-backed REPL that saves command history, output, & errors", "version": "0.2.21" }, "last_serial": 5828121, "releases": { "0.2.0": [ { "comment_text": "", "digests": { "md5": "24fc2447db61c3391f0c9246c3570d3b", "sha256": "89821c9c6d8465505efd8f1c813e83ea1753dff1dc5e78851afca73cdd01cb4a" }, "downloads": -1, "filename": "chloop-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "24fc2447db61c3391f0c9246c3570d3b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9758, "upload_time": "2017-02-09T15:46:08", "url": "https://files.pythonhosted.org/packages/68/0f/0214ce7bbc40bef25b4b63107c916e1efe42c82849493f57724460528927/chloop-0.2.0-py3-none-any.whl" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "c57ffe4c8a5977c362306002f0c47379", "sha256": "2990e32ee6ad23d44c93f8767985ca2e47f18022a34604dba786db61b675c623" }, "downloads": -1, "filename": "chloop-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "c57ffe4c8a5977c362306002f0c47379", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9818, "upload_time": "2017-03-13T14:33:58", "url": "https://files.pythonhosted.org/packages/1e/72/3089a2b78ecbb385c00e9a5d7fd5a4a0f0aefd04429e3feb79a2bc4134b5/chloop-0.2.1-py3-none-any.whl" } ], "0.2.10": [ { "comment_text": "", "digests": { "md5": "3c4b31a3a38736f5a183da7d769eec7e", "sha256": "4f7686cd936adc5ca9ee699a31b29f2d2add25f9b8bf90153b09cf1c1d417270" }, "downloads": -1, "filename": "chloop-0.2.10-py3-none-any.whl", "has_sig": false, "md5_digest": "3c4b31a3a38736f5a183da7d769eec7e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10834, "upload_time": "2017-10-21T18:37:45", "url": "https://files.pythonhosted.org/packages/6d/c9/ece436544584ab0a03ca5275235f74b8f2f2e4b6bb229994abdeb53e6b6c/chloop-0.2.10-py3-none-any.whl" } ], "0.2.11": [ { "comment_text": "", "digests": { "md5": "3bd4d7ae5a9afa60a2a3fa2869723f44", "sha256": "e73a259c53531a0677396d99cf7e224ff2fa044a8d9100fec9d76eaf9f699d6c" }, "downloads": -1, "filename": "chloop-0.2.11-py3-none-any.whl", "has_sig": false, "md5_digest": "3bd4d7ae5a9afa60a2a3fa2869723f44", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11107, "upload_time": "2017-10-23T06:14:03", "url": "https://files.pythonhosted.org/packages/07/1c/1e17a9c8fbbe97725943d91b3b319759a5243e671cc6d98fad1522b261e0/chloop-0.2.11-py3-none-any.whl" } ], "0.2.12": [ { "comment_text": "", "digests": { "md5": "4ecc06181084619bba19c3efe8059abd", "sha256": "10bef41fb85af438e3749e3926303cd32ad513f27459a58d99491375f6112ce1" }, "downloads": -1, "filename": "chloop-0.2.12-py3-none-any.whl", "has_sig": false, "md5_digest": "4ecc06181084619bba19c3efe8059abd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11144, "upload_time": "2017-10-30T05:28:44", "url": "https://files.pythonhosted.org/packages/98/a6/dafc84649e283771803a5dd05c3f965fb841f8def818b659f0a174f08003/chloop-0.2.12-py3-none-any.whl" } ], "0.2.13": [ { "comment_text": "", "digests": { "md5": "4c6cb9d60dd556fc8c209e3c9c7aa2ad", "sha256": "32270ee3a0febefa64f68d6bbf88a37692d07b4329dddf2790449ab80a517e24" }, "downloads": -1, "filename": "chloop-0.2.13-py3-none-any.whl", "has_sig": false, "md5_digest": "4c6cb9d60dd556fc8c209e3c9c7aa2ad", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11118, "upload_time": "2017-10-31T13:16:04", "url": "https://files.pythonhosted.org/packages/b0/28/6d080f69cf34b9fe0455f1f7a98f0d9313c15758ad505a95122547e649e1/chloop-0.2.13-py3-none-any.whl" } ], "0.2.14": [ { "comment_text": "", "digests": { "md5": "4c1ee14258f002f56772a1f1107162af", "sha256": "db934f7c06c3d1ac4105c459fbf39f202100888a271c4a51779ab5cf5bc015f6" }, "downloads": -1, "filename": "chloop-0.2.14-py3-none-any.whl", "has_sig": false, "md5_digest": "4c1ee14258f002f56772a1f1107162af", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11236, "upload_time": "2017-11-02T12:49:17", "url": "https://files.pythonhosted.org/packages/87/94/36364682bf44196f48a3744eeda15b9c867126cda42734d8318b7a98148b/chloop-0.2.14-py3-none-any.whl" } ], "0.2.15": [ { "comment_text": "", "digests": { "md5": "e6ccf47f73729b476b55d604298e0290", "sha256": "7537fdbeacad699a4b46191bdb02b33f4e5fb2be1ad2a743c501b20e0b2a08a7" }, "downloads": -1, "filename": "chloop-0.2.15-py3-none-any.whl", "has_sig": false, "md5_digest": "e6ccf47f73729b476b55d604298e0290", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11236, "upload_time": "2017-11-08T07:17:59", "url": "https://files.pythonhosted.org/packages/e9/0f/20b03598c239a89f7d206eb42e66142691dbbd585568d3ae49184822b1e1/chloop-0.2.15-py3-none-any.whl" } ], "0.2.16": [ { "comment_text": "", "digests": { "md5": "c7d8391a6a9c595b2fc29f70623cbc8c", "sha256": "11982fead019d440bfb016d1045273e2ce0c1cdc1c4c2c9d83e4bbf4b48bb090" }, "downloads": -1, "filename": "chloop-0.2.16-py3-none-any.whl", "has_sig": false, "md5_digest": "c7d8391a6a9c595b2fc29f70623cbc8c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11257, "upload_time": "2017-11-12T16:22:01", "url": "https://files.pythonhosted.org/packages/7f/f5/84999ea6a5432a9940564266c44dc2ef8bd100aad8b6c09576cf0ee18188/chloop-0.2.16-py3-none-any.whl" } ], "0.2.17": [ { "comment_text": "", "digests": { "md5": "c0cfde5d096fbd88ad03c796771dd632", "sha256": "ebbcda1e7c8f8c767e97dc9812acf569fab7a5c921ed0d4ac7144a2d0e495d8c" }, "downloads": -1, "filename": "chloop-0.2.17-py3-none-any.whl", "has_sig": false, "md5_digest": "c0cfde5d096fbd88ad03c796771dd632", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11667, "upload_time": "2018-01-31T15:04:49", "url": "https://files.pythonhosted.org/packages/bd/51/208ba44085ce19b0dd1c87cc9027f2b11c767e066cfe79028a8afa9ece4d/chloop-0.2.17-py3-none-any.whl" } ], "0.2.18": [ { "comment_text": "", "digests": { "md5": "eb8decdef22034d4fda83b8be511a6b0", "sha256": "ee1db6af1d5d4ba9d8a5e492425a3072f3810df3a7e206009cec63fac59b54fa" }, "downloads": -1, "filename": "chloop-0.2.18-py3-none-any.whl", "has_sig": false, "md5_digest": "eb8decdef22034d4fda83b8be511a6b0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11713, "upload_time": "2018-07-23T10:41:50", "url": "https://files.pythonhosted.org/packages/db/cf/cda06f201cdf68eaa8092fe0c2604f5124f6d1b957984bba8f48fad88929/chloop-0.2.18-py3-none-any.whl" } ], "0.2.19": [ { "comment_text": "", "digests": { "md5": "d430b90594a086a12ade306d55a195fd", "sha256": "a397910bc345f88a19c797abe289629c335648ac7b1f39da1c65e89b2d3b9d11" }, "downloads": -1, "filename": "chloop-0.2.19-py3-none-any.whl", "has_sig": false, "md5_digest": "d430b90594a086a12ade306d55a195fd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8375, "upload_time": "2018-12-13T14:48:10", "url": "https://files.pythonhosted.org/packages/f1/f2/2dd720aeb70c3be3209b98585bc575678e3387b144fd2a2653d3eab2b162/chloop-0.2.19-py3-none-any.whl" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "06896796249dc2e58006854cd8d9409d", "sha256": "8a0807a61e358f45043f33f21fcf1040434768406c446e5c223dd1208b3b4100" }, "downloads": -1, "filename": "chloop-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "06896796249dc2e58006854cd8d9409d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10044, "upload_time": "2017-03-20T10:55:52", "url": "https://files.pythonhosted.org/packages/12/01/36608f8abb13295962c45b93faef0bd9ca2d72ccfe74cdd6cac0ae596956/chloop-0.2.2-py3-none-any.whl" } ], "0.2.20": [ { "comment_text": "", "digests": { "md5": "310b92ee7c82c7fdd25c59966849b1c2", "sha256": "33e11127e6cba2dc65326b0e44a8ed96c4efffc817699d1b5a8fc35ff595db68" }, "downloads": -1, "filename": "chloop-0.2.20-py3-none-any.whl", "has_sig": false, "md5_digest": "310b92ee7c82c7fdd25c59966849b1c2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8206, "upload_time": "2018-12-13T20:44:09", "url": "https://files.pythonhosted.org/packages/5c/f9/bff499a1b5c26093d0c4f3ba44643059d0dbbf5cec1c54389e25297fdcef/chloop-0.2.20-py3-none-any.whl" } ], "0.2.21": [ { "comment_text": "", "digests": { "md5": "c9478abe8b596ac28a5d7d978ece5c29", "sha256": "38594399ab48b6e099496eeab2eaec276207ea5b90a380c97b757c02c570a1a9" }, "downloads": -1, "filename": "chloop-0.2.21-py3-none-any.whl", "has_sig": false, "md5_digest": "c9478abe8b596ac28a5d7d978ece5c29", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8272, "upload_time": "2019-09-13T23:14:56", "url": "https://files.pythonhosted.org/packages/a8/b8/afc778a775a85effe425e122ca77a57ecc07569630b777f9556b6bb2c45c/chloop-0.2.21-py3-none-any.whl" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "91560232cf1ee641946a6709e2730639", "sha256": "4fcf55bb064d0f0f8b9d0888891812eb562265160ddcad8aa1c886fe882862be" }, "downloads": -1, "filename": "chloop-0.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "91560232cf1ee641946a6709e2730639", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9883, "upload_time": "2017-03-30T06:15:49", "url": "https://files.pythonhosted.org/packages/9c/a4/f5d310c9269df5efe505f6be324415e577861e247000b630df9ee495fde8/chloop-0.2.3-py3-none-any.whl" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "ed5b1d98605fcc458079fc2459ee160a", "sha256": "1ecfe7778782a258b564bf47d82ca3e3f2676fd7ac8b889d6de8dafb5ed17b9e" }, "downloads": -1, "filename": "chloop-0.2.4-py3-none-any.whl", "has_sig": false, "md5_digest": "ed5b1d98605fcc458079fc2459ee160a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9849, "upload_time": "2017-03-30T19:12:55", "url": "https://files.pythonhosted.org/packages/84/9a/30d39e116d5e0e1c5e6c7ff3b01b5ca39fa3c9f2ab91ec02268355a3c9ff/chloop-0.2.4-py3-none-any.whl" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "9ec22b1d855648e1b46a7d09836cbdaa", "sha256": "917f6893c894ab62a371f86a85ec75f82e89ba9735a29920db6316ecc1f91a62" }, "downloads": -1, "filename": "chloop-0.2.5-py3-none-any.whl", "has_sig": false, "md5_digest": "9ec22b1d855648e1b46a7d09836cbdaa", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9902, "upload_time": "2017-04-14T05:09:58", "url": "https://files.pythonhosted.org/packages/b2/c9/b1429f50c783fd9649df97e28a93ff51d3eb0ff1f16975e21d54764eb029/chloop-0.2.5-py3-none-any.whl" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "ac86c0181bcca5c6fa10b8823a9caa5e", "sha256": "db861b0937d38b5c0bb2941cceaabcb2d8cca367434f918010a650de5d609582" }, "downloads": -1, "filename": "chloop-0.2.6-py3-none-any.whl", "has_sig": false, "md5_digest": "ac86c0181bcca5c6fa10b8823a9caa5e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10809, "upload_time": "2017-10-07T20:56:34", "url": "https://files.pythonhosted.org/packages/4d/85/a207ad560c348c9a3b66777b4dfffb60179207416bac1e1639ddc201b46e/chloop-0.2.6-py3-none-any.whl" } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "2dccb1919808aafcceb4e46137a439da", "sha256": "3695e06b5be7854175ac01c4cccd9e2f55bf4eba8ebbb4e13582a5de75d1ba0c" }, "downloads": -1, "filename": "chloop-0.2.7-py3-none-any.whl", "has_sig": false, "md5_digest": "2dccb1919808aafcceb4e46137a439da", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10806, "upload_time": "2017-10-07T21:19:09", "url": "https://files.pythonhosted.org/packages/c1/52/2e60afbe3b2747e93a7b1230de92f1306ebfcaac83007fe984195d161daa/chloop-0.2.7-py3-none-any.whl" } ], "0.2.8": [ { "comment_text": "", "digests": { "md5": "8cb3028a24ee5744f6e4af878ef7b1cd", "sha256": "9cfd878e6b685b33ade17bf66bb56176bf9f022dbbe8fbc59a535c44b89e0438" }, "downloads": -1, "filename": "chloop-0.2.8-py3-none-any.whl", "has_sig": false, "md5_digest": "8cb3028a24ee5744f6e4af878ef7b1cd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10811, "upload_time": "2017-10-08T12:33:09", "url": "https://files.pythonhosted.org/packages/b3/a6/b66628d2a51c178f685575b5b8053ec892d3ebe74aee9dfb8ba75943060d/chloop-0.2.8-py3-none-any.whl" } ], "0.2.9": [ { "comment_text": "", "digests": { "md5": "fe391b23f6a92ca515b4129d4a044180", "sha256": "825fc4b92465a364f7d59b19a47ab1b76d23883a333b1f6ed1d286bea591743d" }, "downloads": -1, "filename": "chloop-0.2.9-py3-none-any.whl", "has_sig": false, "md5_digest": "fe391b23f6a92ca515b4129d4a044180", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10819, "upload_time": "2017-10-08T23:02:13", "url": "https://files.pythonhosted.org/packages/ac/7c/e6fae215ac6d103950bccaf976e0f9c7fb200f309b8952cf4f45aa8b02f8/chloop-0.2.9-py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c9478abe8b596ac28a5d7d978ece5c29", "sha256": "38594399ab48b6e099496eeab2eaec276207ea5b90a380c97b757c02c570a1a9" }, "downloads": -1, "filename": "chloop-0.2.21-py3-none-any.whl", "has_sig": false, "md5_digest": "c9478abe8b596ac28a5d7d978ece5c29", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8272, "upload_time": "2019-09-13T23:14:56", "url": "https://files.pythonhosted.org/packages/a8/b8/afc778a775a85effe425e122ca77a57ecc07569630b777f9556b6bb2c45c/chloop-0.2.21-py3-none-any.whl" } ] }