{ "info": { "author": "", "author_email": "", "bugtrack_url": null, "classifiers": [], "description": "lazycli\n=======\nlazycli is a module which provides a decorator which will generate cli\nscripts from function signatures. The intention is to allow the creation\nof cli-scripts with as little extra work as possible. It was originally\ngoing to be called ``sig2cli``, but someone else already `had the same\nidea`_ and got the name on PyPI in ten months before I did.\n\nThe one and only goal of lazycli is to facilitate the creation of CLI\ninterfaces with *minimum effort*.\n\nlazycli wraps ``argparse`` from the Python standard library and exposes\nsome parts of the `argparse api`_. The abstraction it provides is a\nlittle leaky, but it's not too bad, because it's relatively simple and\nis not intended to provide the full range functionality. If you need\nflexibility, use ``argparse`` directly or something more powerful like\nclick_.\n\n.. _had the same idea: https://github.com/PaoloSarti/sig2cli\n.. _argparse api: https://docs.python.org/3/library/argparse.html\n.. _click: https://click.palletsprojects.com/\n\n.. contents::\n\nBasics\n------\nConsider this simple clone of the ``cp`` command, ``cp.py``:\n\n.. code:: Python\n\n #!/usr/bin/env python3\n import lazycli\n import shutil\n import sys\n\n\n @lazycli.script\n def cp(*src, dst, recursive=False):\n \"\"\"copy around files\"\"\"\n for path in src:\n try:\n shutil.copy2(path, dst)\n except IsADirectoryError as err:\n if recursive:\n shutil.copytree(path, dst)\n else:\n print(err, file=sys.stderr)\n\n\n if __name__ == '__main__':\n cp.run()\n\n.. code:: sh\n\n $ ./cp.py -h\n usage: cp.py [-h] [-r] [src [src ...]] dst\n\n copy around files\n\n positional arguments:\n src\n dst\n\n optional arguments:\n -h, --help show this help message and exit\n -r, --recursive\n\nIt works like you'd expect. I chose ``cp`` because shutil_ can do all\nthe heavy lifting, and the body of the function isn't important. The\nimportant thing in this script are these three lines:\n\n.. code:: python\n\n @lazycli.script\n def cp(*src, dst, recursive=False):\n\n # ... and ...\n\n cp.run()\n\n- All parameters without defaults become positional arguments.\n- All parameters with defaults become optional arguments.\n- ``*args`` arguments will translate into variadic arguments at the\n command line as well. *There can always be zero of them.*\n- Parameters with boolean default values are treated as boolean flags\n and don't accept arguments.\n- Short versions of flags are generated automatically from the first\n letter of the parameter.\n- A ``.run`` function is tacked on to the ``cp`` function which\n triggers argument parsing and applies the results to ``cp``. The\n ``cp`` function itself is unaltered and can be called elsewhere if\n desired.\n\nI'm not entirely sure how useful this last point is, since script\nentry-point functions tend not to be very general-purpose, but, eh, who\nknows.\n\nBe aware that, presently, ``**kwargs``-style parameters are ignored\nby lazycli.\n\n**Note on short flags:**\n Short flags are generated for optional arguments based on the first\n letter of parameter names. If that flag has been used by a previous\n parameter, the flag will be uppercased. If that has already been used,\n no short flag is generated. Because of this, changing the order of\n arguments can potentially break the backward compatibility of your\n CLI.\n\n**Note on boolean defaults:**\n A boolean default set to ``False`` produces the output seen above. If\n we change the parameter default to ``recursive=True``, the name of the\n flag is inverted:\n\n .. code::\n\n optional arguments:\n -h, --help show this help message and exit\n -r, --no-recursive\n\n.. _shutil: https://docs.python.org/3/library/shutil.html\n\nTypes\n-----\nlazycli attempts to determine argument types based first on type\nannotations in the function signature and then based on the type of the\ndefault argument.\n\n- If the type of parameter is an iterable (besides mappings, strings and\n files), it will become a variadic when interpreted. If it's a\n subscripted type from the typing_ module, like\n ``typing.Iterable[int]``, the subscript will be used as the type.\n- If the type is determined to be a mapping or is annotated as\n ``object``, the argument should be a json literal (though it could\n theoretically be a string, number, array or object).\n\nThe inferred type is then used as a constructor to parse the argument\nstring. This means only constructors that can take strings as input may\nbe used.\n\n.. code:: python\n\n #!/usr/bin/env python3\n import typing as t\n import lazycli\n\n @lazycli.script\n def mysum(numbers: t.Iterable[float]):\n return sum(numbers)\n\n if __name__ == '__main__':\n mysum.run()\n\n\n.. code:: sh\n\n $ ./sum.py -h\n usage: sum.py [-h] [numbers [numbers ...]]\n\n positional arguments:\n numbers type: float\n\n optional arguments:\n -h, --help show this help message and exit\n\n $ ./sum.py 5 8\n 13.0\n\nThough the style is questionable, this means you can use arbitrary\ncallables as type annotations:\n\n.. code:: python\n\n\n #!/usr/bin/env python3\n import sys\n import lazycli\n\n\n @lazycli.script\n def upcat(\n infile: open = sys.stdin,\n outfile: lambda f: open(f, 'w') = sys.stdout\n ):\n \"\"\"cat, but upper-cases everything.\"\"\"\n for line in infile:\n outfile.write(line.upper())\n\n\n if __name__ == '__main__':\n upcat.run()\n\n.. code:: sh\n\n usage: upcat.py [-h] [-i INFILE] [-o OUTFILE]\n\n cat, but upper-cases everything.\n\n optional arguments:\n -h, --help show this help message and exit\n -i INFILE, --infile INFILE\n type: open; default: \n -o OUTFILE, --outfile OUTFILE\n type: ; default: \n\nThis looks pretty bad, and mypy_ is going to hate it. A better way to\ndo this is probably just parsing the string inside the script.\n\nHowever, because the pattern of having an optional file argument and\nfalling back to standard streams is so common, ``lazycli`` provides\nspecial classes for making this less ugly:\n\n.. code:: Python\n\n #!/usr/bin/env python3\n import sys\n from lazycli import script, ReadFile, WriteFile\n\n\n @script\n def upcat2(infile:ReadFile=sys.stdin, outfile:WriteFile=sys.stdout):\n \"\"\"cat, but upper-cases everything.\"\"\"\n for line in infile:\n outfile.write(line.upper())\n\n\n if __name__ == '__main__':\n upcat2.run()\n\n\nThese classes will provide users more helpful type information and will\nreturn true if used in instance checks of text file types (including\n``sys.{stdin,stdout,stderr}`` and non-bytes output of the ``open``\nbuiltin function). These classes don't create instances of themselves,\nbut rather instances of ``io.TextIOWrapper``. However, they still break\nmypy. Funny how metaclasses will do that.\n\nIn addition to ReadFile and WriteFile, there is also an AppendFile\nconstructor.\n\n.. _typing: https://docs.python.org/3/library/typing.html\n.. _mypy: http://mypy-lang.org/\n\nOutput\n------\nSo far, output has simply been printed. However, If the function has a\nreturn value, that will also be printed. If it is an iterable (besides a\nstring or mapping), each item will be printed on a new line.\n\nSubcommands\n-----------\nI'll expand this section of the documentation later, but here's a sample\nscript, modeled on info in this `blog post`_\n\n.. code:: Python\n\n #!/usr/bin/env python3\n import lazycli\n\n\n @lazycli.script\n def main(version=False):\n if version:\n return 1.0\n\n\n @main.subcommand\n def hello(name, greeting=\"Hello\", caps=False):\n return greet(name, greeting, caps)\n\n\n @main.subcommand\n def goodbye(name, greeting=\"Goodbye\", caps=False):\n return greet(name, greeting, caps)\n\n\n def greet(name, greeting, caps):\n if caps:\n return f'{greeting}, {name}!'.upper()\n return f'{greeting}, {name}!'\n\n\n if __name__ == '__main__':\n script.run()\n\n\nAny parameters definied on the script function (main, in this case)\nwill be passed to the script function, and parameters definied on the\nsubcommands are parsed to them. If one wishes to pass values from the\ntop-level function to subcommands, and external mechanism must be used.\n(e.g. a global variable)\n\n.. code:: shell\n\n $ ./test_sub.py -h\n usage: test_sub.py [-h] [-v] {hello,goodbye} ...\n\n positional arguments:\n {hello,goodbye}\n\n optional arguments:\n -h, --help show this help message and exit\n -v, --version\n $\n $\n $ ./test_sub.py hello -h\n usage: test_sub.py hello [-h] [-c] [-g GREETING] name\n\n positional arguments:\n name\n\n optional arguments:\n -h, --help show this help message and exit\n -c, --caps\n -g GREETING, --greeting GREETING\n default: Hello\n\n.. _blog post:\n https://realpython.com/comparing-python-command-line-parsing-libraries-argparse-docopt-click/\n\n\n", "description_content_type": "text/x-rst", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/ninjaaron/lazycli", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "lazycli", "package_url": "https://pypi.org/project/lazycli/", "platform": "", "project_url": "https://pypi.org/project/lazycli/", "project_urls": { "Homepage": "https://github.com/ninjaaron/lazycli" }, "release_url": "https://pypi.org/project/lazycli/0.2.5/", "requires_dist": [ "libaaron" ], "requires_python": ">=3.5", "summary": "generate command-line interfaces from function signatures", "version": "0.2.5" }, "last_serial": 4618779, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "730ea9ca0814c7ddacff87eaeffafd85", "sha256": "4e7027024bf70bdeda3b0ba7b684b22e04737c0e48608daf0d775e549020ec5f" }, "downloads": -1, "filename": "lazycli-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "730ea9ca0814c7ddacff87eaeffafd85", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 8176, "upload_time": "2018-10-08T08:48:07", "url": "https://files.pythonhosted.org/packages/7b/75/6f4cf8561f6d9e442d665667d2097b24cfd3682af13fbb4d75424fef2f29/lazycli-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1f82bb8e6e6fa388746d7f118c768bb1", "sha256": "8280d423fd2d9789c74ed018bec78a7baa16647d85e17ecea1b136ed671cdc56" }, "downloads": -1, "filename": "lazycli-0.1.0.tar.gz", "has_sig": false, "md5_digest": "1f82bb8e6e6fa388746d7f118c768bb1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 2164, "upload_time": "2018-10-08T08:48:08", "url": "https://files.pythonhosted.org/packages/6c/76/85c01f549d849bc65c4782f053386525b4bffb76815a1ce4b4b0648a1426/lazycli-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "8426ede71f03139c991790ecdd065ce3", "sha256": "9f4502b00f03b8a9f687d2a3354b70b83ee7891c83dd297e8c87a8050f87e164" }, "downloads": -1, "filename": "lazycli-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "8426ede71f03139c991790ecdd065ce3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 10964, "upload_time": "2018-10-22T15:24:58", "url": "https://files.pythonhosted.org/packages/f1/63/0c67d72973f63c06b65b59651b89c2b4ede3929413ed6dae2c3cfff842d3/lazycli-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4088b7a7c6e46d7d1da6f78ea999cb6a", "sha256": "5d64c956da68c2161d6d93fa216e9ac0c5acef6ce8dfb8f443b2b746974baec2" }, "downloads": -1, "filename": "lazycli-0.1.1.tar.gz", "has_sig": false, "md5_digest": "4088b7a7c6e46d7d1da6f78ea999cb6a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 5623, "upload_time": "2018-10-22T15:24:59", "url": "https://files.pythonhosted.org/packages/0e/30/133e58a16fb8d5ac6ea20a54b620cb5368f8fddc8164e1f0e5fe0d1a5395/lazycli-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "80b05a561a522a80ecedaaa69f920b4e", "sha256": "538852358d0b52a65f7c440b6260cab8a8cd1016204b6428c23f91ea11a708b2" }, "downloads": -1, "filename": "lazycli-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "80b05a561a522a80ecedaaa69f920b4e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 10963, "upload_time": "2018-10-23T14:25:33", "url": "https://files.pythonhosted.org/packages/a0/a7/7906582b2b40dd98af7319cceae17f1a49947accaf7f4f66fd70b0dccf09/lazycli-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2fd07243f65c97aac56421fcc176090f", "sha256": "5e38035052ce6cd2e6290ad59dd8324125b6862475d97639565110c3e269441f" }, "downloads": -1, "filename": "lazycli-0.1.2.tar.gz", "has_sig": false, "md5_digest": "2fd07243f65c97aac56421fcc176090f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 5613, "upload_time": "2018-10-23T14:25:34", "url": "https://files.pythonhosted.org/packages/d2/ca/880e457d90f50a9c1366456561c52f6220a9a1bcdfa8bc91efa0012043cc/lazycli-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "02e7c373943fdf108e15432e5df41b1a", "sha256": "47ba2cae59fa9788d631babc26d13cf7aefcd0c09deec521b16029255a67eefc" }, "downloads": -1, "filename": "lazycli-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "02e7c373943fdf108e15432e5df41b1a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 10970, "upload_time": "2018-10-23T14:28:27", "url": "https://files.pythonhosted.org/packages/b4/ec/0ecb3a9ea256df34f7d2036674200e2af646949df3c06e0980d44b3470a0/lazycli-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "455423a153211c354c24eaf9ad724e01", "sha256": "387eeeeee6208c1c3be38394e982f04011f83aa9ca9e2507477d853b5223daba" }, "downloads": -1, "filename": "lazycli-0.1.3.tar.gz", "has_sig": false, "md5_digest": "455423a153211c354c24eaf9ad724e01", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 5623, "upload_time": "2018-10-23T14:28:29", "url": "https://files.pythonhosted.org/packages/a5/c6/1ad6dbff2bd0589c6e4363a26b1124df106c2a889dee24d3c89e2d3d14de/lazycli-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "90606c16ecc5e19b12754ae544c60e7b", "sha256": "6b790746d7d0fca6044c558b6bc4a5a71b819c4cb7ae64daa47af2ca66f3ae7e" }, "downloads": -1, "filename": "lazycli-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "90606c16ecc5e19b12754ae544c60e7b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 10958, "upload_time": "2018-10-23T14:43:05", "url": "https://files.pythonhosted.org/packages/1a/f8/415a4ecc989197d195577fb5af36be9b018c21f471e3531a9c52f45ef867/lazycli-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "805a8d87f4b17583aaf34cc32d2d0016", "sha256": "8c3ed6333d6af25382a409c41fea6d77c66fb14301c74b1fc87bc1cfd072b718" }, "downloads": -1, "filename": "lazycli-0.1.4.tar.gz", "has_sig": false, "md5_digest": "805a8d87f4b17583aaf34cc32d2d0016", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 5612, "upload_time": "2018-10-23T14:43:07", "url": "https://files.pythonhosted.org/packages/e0/40/2645771b1fa4c4ccba6f4769632996e3c53b0ca1e46d51a2484e72ef3f9c/lazycli-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "85b83b47c1ca66fd237535d445c3f074", "sha256": "738390b8f336a93f0cd5d9951ac1e62b1692efadc6b75dffc3319b6241414047" }, "downloads": -1, "filename": "lazycli-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "85b83b47c1ca66fd237535d445c3f074", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 10963, "upload_time": "2018-10-23T14:48:10", "url": "https://files.pythonhosted.org/packages/b4/dd/20d96c78695345e470eb2922b40d6a841aad12a9b240e0f286bf33222194/lazycli-0.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2a7dd5ef77a1df7fc061cae2bd01dbc4", "sha256": "2e60496fadb9f847eaaf0581b2ac7d822fae0eaddeab32bfbc26fb4cdbe21e3c" }, "downloads": -1, "filename": "lazycli-0.1.5.tar.gz", "has_sig": false, "md5_digest": "2a7dd5ef77a1df7fc061cae2bd01dbc4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 5614, "upload_time": "2018-10-23T14:48:12", "url": "https://files.pythonhosted.org/packages/8b/90/79cf4dbc0b0698ff01c030d7d0d7e7a5ab374edb99d304e71abba3d7b27f/lazycli-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "7793f5fcbe340cf6e0e80f6e55229b11", "sha256": "213c7a21b77062e1c558ed24b24f460b0c97cf81a2a2819e887bdb605a723dcc" }, "downloads": -1, "filename": "lazycli-0.1.6-py3-none-any.whl", "has_sig": false, "md5_digest": "7793f5fcbe340cf6e0e80f6e55229b11", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 10956, "upload_time": "2018-10-23T14:55:27", "url": "https://files.pythonhosted.org/packages/8e/be/4507814dc77209250eb3d1490837ce2b3529cfc2318d7e520fa7f5c53eff/lazycli-0.1.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3a4c69fc131142fde985d9083213fda4", "sha256": "f36ca2ab242fe39694860bdbced53fa95074cc7e6bf13ab585eccf93932a1dee" }, "downloads": -1, "filename": "lazycli-0.1.6.tar.gz", "has_sig": false, "md5_digest": "3a4c69fc131142fde985d9083213fda4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 5605, "upload_time": "2018-10-23T14:55:28", "url": "https://files.pythonhosted.org/packages/c6/7e/db6fd27f0ed189d16cc51059fd456d9fff19c67c5729195d83dd121c957e/lazycli-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "bc49e5cb1d7b3bf28e8539d452d1120e", "sha256": "5726d74ed5a625c6f2c776c2a8b97a79c3921b19118ef649df0dc8e2aac33181" }, "downloads": -1, "filename": "lazycli-0.1.7-py3-none-any.whl", "has_sig": false, "md5_digest": "bc49e5cb1d7b3bf28e8539d452d1120e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 11078, "upload_time": "2018-10-26T22:10:09", "url": "https://files.pythonhosted.org/packages/54/ea/efbbaf797a06e04ea28748130307190d6d5cf1245a58b6b07a46e3769138/lazycli-0.1.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "815e06077065bd657e9a9955af6a738b", "sha256": "11ae181c36fa84ad542748ebeb687c54fc7de67876f64941ab51a8386bf334a8" }, "downloads": -1, "filename": "lazycli-0.1.7.tar.gz", "has_sig": false, "md5_digest": "815e06077065bd657e9a9955af6a738b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 5726, "upload_time": "2018-10-26T22:10:11", "url": "https://files.pythonhosted.org/packages/34/50/889b0fda5bbb00cb3df4a619d270c1fcaaa9590da0a2f33320f95e2ba133/lazycli-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "c7069d6814add20ca82d8c79b4508940", "sha256": "4758a5ec40e16caf51f10782b4e2f39fb583a52ee53537257d03fee38a354a3c" }, "downloads": -1, "filename": "lazycli-0.1.8-py3-none-any.whl", "has_sig": false, "md5_digest": "c7069d6814add20ca82d8c79b4508940", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 11576, "upload_time": "2018-10-29T10:37:20", "url": "https://files.pythonhosted.org/packages/5d/06/107c848f4a23699d2af29a30f89fa3a3926c9154f42292c6eedd2aa6b413/lazycli-0.1.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "73cb6baba99307dd6481370d2bbf9908", "sha256": "1189a054a28f5a5e48356d1e6e31798a0e0c8d73ff394de6e60d4eefd3468c0b" }, "downloads": -1, "filename": "lazycli-0.1.8.tar.gz", "has_sig": false, "md5_digest": "73cb6baba99307dd6481370d2bbf9908", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 6315, "upload_time": "2018-10-29T10:37:21", "url": "https://files.pythonhosted.org/packages/aa/b8/ea0e74ad5ec0573cfe6078b9e0a3aae20290ad980e787949dea7ea5c2bd1/lazycli-0.1.8.tar.gz" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "a237eb6e142a1a5c081ecc67ab1d0063", "sha256": "e7c505086454a486a4006b0becb2263b88f62e91d0921af5f3facfb913b55017" }, "downloads": -1, "filename": "lazycli-0.1.9-py3-none-any.whl", "has_sig": false, "md5_digest": "a237eb6e142a1a5c081ecc67ab1d0063", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 12159, "upload_time": "2018-10-29T16:16:53", "url": "https://files.pythonhosted.org/packages/97/49/87c1936065755f4fda5d2e6281b08544c950be258b542ad4736ee0ce97e3/lazycli-0.1.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3c5dcf77c77a60d2462c1d6478ccd0c1", "sha256": "101dfaac4e2f41a6707bf7c4497693ee6b0f6a789998da86db7afaacdf0f908f" }, "downloads": -1, "filename": "lazycli-0.1.9.tar.gz", "has_sig": false, "md5_digest": "3c5dcf77c77a60d2462c1d6478ccd0c1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 7008, "upload_time": "2018-10-29T16:16:55", "url": "https://files.pythonhosted.org/packages/f1/61/01043565c4122e2d013cd7535decc4156902ab9f3d8fdcb90ce023d2fa1e/lazycli-0.1.9.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "e91816853a5d81c3d78821d915fb36b0", "sha256": "9c8903cbe0f70c3a496819ff811257b61cd82ebaf042e0343f6efce5fd2928c1" }, "downloads": -1, "filename": "lazycli-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "e91816853a5d81c3d78821d915fb36b0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 12167, "upload_time": "2018-10-30T20:58:18", "url": "https://files.pythonhosted.org/packages/a5/63/8fb8fcef8495bacaee1a6c445c1af84fc4837047bbc88fcb7c7a7b40c548/lazycli-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8571f73080f1a5174c63dd37283504b8", "sha256": "3f7ab7a1f1252e4eb423ceccd6293f83ad2d987e692ad9b5d6201acc302a0099" }, "downloads": -1, "filename": "lazycli-0.2.0.tar.gz", "has_sig": false, "md5_digest": "8571f73080f1a5174c63dd37283504b8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 7092, "upload_time": "2018-10-30T20:58:20", "url": "https://files.pythonhosted.org/packages/73/35/a682811bab4e9fc9748e042a09760da23ec283118397f1abe2b528d08be3/lazycli-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "4ffc5d199deb88977640751c4b8f6194", "sha256": "b7a585b5da64cb8b6707afa9b2515fbd1f5681414fb7ee0022a968880106854d" }, "downloads": -1, "filename": "lazycli-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "4ffc5d199deb88977640751c4b8f6194", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 12275, "upload_time": "2018-10-31T09:45:48", "url": "https://files.pythonhosted.org/packages/76/32/066411eb4412e509c000c1d0ed9566991c37f8199bcd591efb4857f612de/lazycli-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "73c2675b2b2981d825f0550d81455411", "sha256": "ce0d94367ce8ca9e2a0ede895f3f2639b07ac5391a0360dcfc988a3dac0c3e21" }, "downloads": -1, "filename": "lazycli-0.2.1.tar.gz", "has_sig": false, "md5_digest": "73c2675b2b2981d825f0550d81455411", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 7215, "upload_time": "2018-10-31T09:45:50", "url": "https://files.pythonhosted.org/packages/88/46/f0735c5f9f7b633185624d6f6de77972d9f98e98c24008571aaca98e5f2d/lazycli-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "85b2258e4ee9fd6c681fa5116a75e565", "sha256": "8e53ad28bbff1498564b997d02ace58a1af26b07c44844618a6ae9413ed83a3f" }, "downloads": -1, "filename": "lazycli-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "85b2258e4ee9fd6c681fa5116a75e565", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 12395, "upload_time": "2018-11-02T13:34:28", "url": "https://files.pythonhosted.org/packages/7b/c2/30bbc813c8238283ac2733cc6cafc1a9cdb4abeb3a10d65386483637bf21/lazycli-0.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a13a7ccea0a7ef37095210be7f654819", "sha256": "59ac89c65460c8387be61905134d0774bc54e3b006e5fb51d5222e6df8ee31c6" }, "downloads": -1, "filename": "lazycli-0.2.2.tar.gz", "has_sig": false, "md5_digest": "a13a7ccea0a7ef37095210be7f654819", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 7365, "upload_time": "2018-11-02T13:34:31", "url": "https://files.pythonhosted.org/packages/b8/cb/3e9b9874838610ce7e350f0f8402c4ca484a8c80983bb2b0b684b9333be7/lazycli-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "5c8932c1c81af1e3beaac755392a2b9d", "sha256": "7fa1a78012b7e61fc684b2703f57f063b30f48ecace95ffb74c00be120af22bd" }, "downloads": -1, "filename": "lazycli-0.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "5c8932c1c81af1e3beaac755392a2b9d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 13286, "upload_time": "2018-11-19T17:48:51", "url": "https://files.pythonhosted.org/packages/f9/eb/924556bb1c755a52b33d4d55f00f8377e6816c1e322f065ec39ba7cae013/lazycli-0.2.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3919da323368949cc8d2f215e868763a", "sha256": "86d7dbacae6c790b3e742c36e876e96bb6bca2a90985cf8ecced022e16ba0a17" }, "downloads": -1, "filename": "lazycli-0.2.3.tar.gz", "has_sig": false, "md5_digest": "3919da323368949cc8d2f215e868763a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 9178, "upload_time": "2018-11-19T17:48:54", "url": "https://files.pythonhosted.org/packages/4d/2e/37d29dbb15963b6ac8e2db0e692e0e21fdf81e38640419a5dc21b5038df0/lazycli-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "67c6ace99f04ff2029d670fbe23bfd5e", "sha256": "ffa8c8d9e7b614eee514f891e446322ae0fb2ef26cabe33c49a4ca4706e93a3f" }, "downloads": -1, "filename": "lazycli-0.2.4-py3-none-any.whl", "has_sig": false, "md5_digest": "67c6ace99f04ff2029d670fbe23bfd5e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 13319, "upload_time": "2018-12-19T23:42:46", "url": "https://files.pythonhosted.org/packages/29/a4/cd70728239803b03c14a21e4653e8c513365da2f9e48e443cc8497c12777/lazycli-0.2.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6189352931143be4b10d64e23d165d00", "sha256": "0324395ec7b5d625f7a05d84b148701a7a11e7d77873fc8e0f4ce12494d7b1e8" }, "downloads": -1, "filename": "lazycli-0.2.4.tar.gz", "has_sig": false, "md5_digest": "6189352931143be4b10d64e23d165d00", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 9211, "upload_time": "2018-12-19T23:42:49", "url": "https://files.pythonhosted.org/packages/c8/01/4b6fb37e657477810853798477eaf94223b25e2e14727d351483aed41230/lazycli-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "93bd7f50345fa31ad4581d0c8849a3d7", "sha256": "f38041b94dc92658c3b2466e265357865b400d6592e3254223cddb9698a80dd7" }, "downloads": -1, "filename": "lazycli-0.2.5-py3-none-any.whl", "has_sig": false, "md5_digest": "93bd7f50345fa31ad4581d0c8849a3d7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 13315, "upload_time": "2018-12-20T00:02:05", "url": "https://files.pythonhosted.org/packages/c8/91/f003efec951c3c721dcf204d3f8ef89c37519c5c6ce3867357c730e29c4f/lazycli-0.2.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e211847b3ec65de58d9e6f9201cbcd17", "sha256": "ae93913996c1a8dc0882a74a74f6964ec43da8d70444d21059839d796d1a0b18" }, "downloads": -1, "filename": "lazycli-0.2.5.tar.gz", "has_sig": false, "md5_digest": "e211847b3ec65de58d9e6f9201cbcd17", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 9211, "upload_time": "2018-12-20T00:02:07", "url": "https://files.pythonhosted.org/packages/64/ec/64b00dae660e643e5cf4d9bd75c99da5784f7fdad4207623f7b03e37f9ce/lazycli-0.2.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "93bd7f50345fa31ad4581d0c8849a3d7", "sha256": "f38041b94dc92658c3b2466e265357865b400d6592e3254223cddb9698a80dd7" }, "downloads": -1, "filename": "lazycli-0.2.5-py3-none-any.whl", "has_sig": false, "md5_digest": "93bd7f50345fa31ad4581d0c8849a3d7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 13315, "upload_time": "2018-12-20T00:02:05", "url": "https://files.pythonhosted.org/packages/c8/91/f003efec951c3c721dcf204d3f8ef89c37519c5c6ce3867357c730e29c4f/lazycli-0.2.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e211847b3ec65de58d9e6f9201cbcd17", "sha256": "ae93913996c1a8dc0882a74a74f6964ec43da8d70444d21059839d796d1a0b18" }, "downloads": -1, "filename": "lazycli-0.2.5.tar.gz", "has_sig": false, "md5_digest": "e211847b3ec65de58d9e6f9201cbcd17", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 9211, "upload_time": "2018-12-20T00:02:07", "url": "https://files.pythonhosted.org/packages/64/ec/64b00dae660e643e5cf4d9bd75c99da5784f7fdad4207623f7b03e37f9ce/lazycli-0.2.5.tar.gz" } ] }