{ "info": { "author": "Jason Simeone", "author_email": "jay@classless.net", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Framework :: Pytest", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Software Development", "Topic :: Software Development :: Quality Assurance", "Topic :: Software Development :: Testing" ], "description": "******\nTidyPy\n******\n\n.. image:: https://img.shields.io/pypi/v/tidypy.svg\n :target: https://pypi.org/project/tidypy\n.. image:: https://img.shields.io/pypi/l/tidypy.svg\n :target: https://pypi.org/project/tidypy\n.. image:: https://readthedocs.org/projects/tidypy/badge/?version=latest\n :target: https://tidypy.readthedocs.io\n.. image:: https://github.com/jayclassless/tidypy/workflows/Test/badge.svg\n :target: https://github.com/jayclassless/tidypy/actions\n.. image:: https://img.shields.io/docker/build/tidypy/tidypy.svg\n :target: https://hub.docker.com/r/tidypy/tidypy\n.. image:: https://requires.io/github/jayclassless/tidypy/requirements.svg?branch=master\n :target: https://requires.io/github/jayclassless/tidypy/requirements/?branch=master\n\n\n.. contents:: Contents\n\n\nOverview\n--------\nTidyPy is a tool that encapsulates a number of other static analysis tools and\nmakes it easy to configure, execute, and review their results.\n\n\nFeatures\n--------\n* It's a consolidated tool for performing static analysis on an entire Python\n project -- not just your ``*.py`` source files. In addition to executing a\n number of different `tools`_ on your code, it can also check your YAML, JSON,\n PO, POT, and RST files.\n\n* Rather than putting yet another specialized configuration file in your\n project, TidyPy uses the ``pyproject.toml`` file defined by `PEP 518`_. All\n options for all the tools TidyPy uses are declared in one place, rather than\n requiring that you configure each tool in a different way.\n\n .. _PEP 518: https://www.python.org/dev/peps/pep-0518/\n\n* Honors the pseudo-standard ``# noqa`` comment in your Python source to easily\n ignore issues reported by any tool.\n\n* Includes a number of `integrations`_ so you can use it with your favorite\n toolchain.\n\n* Includes a variety of `reporters`_ that allow you to view or use the results\n of TidyPy's analysis in whatever way works best for you.\n\n* Provides a simple API for you to implement your own tool or reporter and\n include it in the analysis of your project.\n\n* Supports both Python 2 and 3, as well as PyPy. Even runs on Windows.\n\n\nUsage\n-----\nWhen TidyPy is installed (``pip install tidypy``), the ``tidypy`` command\nshould become available in your environment::\n\n $ tidypy --help\n Usage: tidypy [OPTIONS] COMMAND [ARGS]...\n\n A tool that executes several static analysis tools upon a Python project\n and aggregates the results.\n\n Options:\n --version Show the version and exit.\n --help Show this message and exit.\n\n Commands:\n check Executes the tools upon the project files.\n default-config Outputs a default configuration that can be used to\n bootstrap your own configuration file.\n extensions Outputs a listing of all available TidyPy extensions.\n install-vcs Installs TidyPy as a pre-commit hook into the specified\n VCS.\n list-codes Outputs a listing of all known issue codes that tools\n may report.\n purge-config-cache Deletes the cache of configurations retrieved from\n outside the primary configuration.\n remove-vcs Removes the TidyPy pre-commit hook from the specified\n VCS.\n\nTo have TidyPy analyze your project, use the ``check`` subcommand::\n\n $ tidypy check --help\n Usage: tidypy check [OPTIONS] [PATH]\n\n Executes the tools upon the project files.\n\n Accepts one argument, which is the path to the base of the Python project.\n If not specified, defaults to the current working directory.\n\n Options:\n -x, --exclude REGEX Specifies a regular expression matched\n against paths that you want to exclude from\n the examination. Can be specified multiple\n times. Overrides the expressions specified\n in the configuration file.\n -t, --tool [2to3|bandit|dlint|eradicate|jsonlint|manifest|mccabe|polint|pycodestyle|pydiatra|pydocstyle|pyflakes|pylint|pyroma|rstlint|secrets|vulture|yamllint]\n Specifies the name of a tool to use during\n the examination. Can be specified multiple\n times. Overrides the configuration file.\n -r, --report [console,csv,custom,json,null,pycodestyle,pylint,pylint-parseable,toml,yaml][:filename]\n Specifies the name of a report to execute\n after the examination. Can specify an\n optional output file name using the form -r\n report:filename. If filename is unset, the\n report will be written on stdout. Can be\n specified multiple times. Overrides the\n configuration file.\n --workers NUM_WORKERS The number of workers to use to concurrently\n execute the tools. Overrides the\n configuration file.\n --disable-merge Disable the merging of issues from various\n tools when TidyPy considers them equivalent.\n Overrides the configuration file.\n --disable-progress Disable the display of the progress bar.\n --disable-noqa Disable the ability to ignore issues using\n the \"# noqa\" comment in Python files.\n --disable-config-cache Disable the use of the cache when retrieving\n configurations referenced by the \"extends\"\n option.\n --help Show this message and exit.\n\nIf you need to generate a skeleton configuration file with the default options,\nuse the ``default-config`` subcommand::\n\n $ tidypy default-config --help\n Usage: tidypy default-config [OPTIONS]\n\n Outputs a default configuration that can be used to bootstrap your own\n configuration file.\n\n Options:\n --pyproject Output the config so that it can be used in a pyproject.toml\n file.\n --help Show this message and exit.\n\nIf you'd like to see a list of the possible issue codes that could be returned,\nuse the ``list-codes`` subcommand::\n\n $ tidypy list-codes --help\n Usage: tidypy list-codes [OPTIONS]\n\n Outputs a listing of all known issue codes that tools may report.\n\n Options:\n -t, --tool [2to3|bandit|dlint|eradicate|jsonlint|manifest|mccabe|polint|pycodestyle|pydiatra|pydocstyle|pyflakes|pylint|pyroma|rstlint|secrets|vulture|yamllint]\n Specifies the name of a tool whose codes\n should be output. If not specified, defaults\n to all tools.\n -f, --format [toml|json|yaml|csv]\n Specifies the format in which the tools\n should be output. If not specified, defaults\n to TOML.\n --help Show this message and exit.\n\nIf you want to install or remove TidyPy as a pre-commit hook in your project's\nVCS, use the ``install-vcs``/``remove-vcs`` subcommands::\n\n $ tidypy install-vcs --help\n Usage: tidypy install-vcs [OPTIONS] VCS [PATH]\n\n Installs TidyPy as a pre-commit hook into the specified VCS.\n\n Accepts two arguments:\n\n VCS: The version control system to install the hook into. Choose from:\n git, hg\n\n PATH: The path to the base of the repository to install the hook into.\n If not specified, defaults to the current working directory.\n\n Options:\n --strict Whether or not the hook should prevent the commit if TidyPy finds\n issues.\n --help Show this message and exit.\n\n $ tidypy remove-vcs --help\n Usage: tidypy remove-vcs [OPTIONS] VCS [PATH]\n\n Removes the TidyPy pre-commit hook from the specified VCS.\n\n Accepts two arguments:\n\n VCS: The version control system to remove the hook from. Choose from:\n git, hg\n\n PATH: The path to the base of the repository to remove the hook from. If\n not specified, defaults to the current working directory.\n\n Options:\n --help Show this message and exit.\n\nIf you'd like to enable bash completion for TidyPy, run the following in your\nshell (or put it in your bash startup scripts)::\n\n $ eval \"$(_TIDYPY_COMPLETE=source tidypy)\"\n\n\nDocker\n------\nIf you don't want to install TidyPy locally on your system or in your\nvirtualenv, you can use the `published Docker\n`_ image::\n\n $ docker run --rm --tty --volume=`pwd`:/project tidypy/tidypy\n\nThe command above will run ``tidypy check`` on the contents of the current\ndirectory. If you want to run it on a different directory, then change the\n```pwd``` to whatever path you need (the goal being to mount your project\ndirectory to the container's ``/project`` volume).\n\nRunning TidyPy in this manner has a few limitiations, mostly around the fact\nthat since TidyPy is running in its own, isolated Python environment, tools\nlike pylint won't be able to introspect the packages your project installed\nlocally, so it may report false positives around \"import-error\",\n\"no-name-in-module\", \"no-member\", etc.\n\nIf you want to run a command other than ``check``, just pass that along when\nyou invoke docker::\n\n $ docker run --rm --tty --volume=`pwd`:/project tidypy/tidypy tidypy list-codes\n\n\nConfiguration\n-------------\nTODO\n\n\nIgnoring Issues\n---------------\nIn addition to ignoring entire files, tools, or specific issue types from tools\nvia your configuration file, you can also use comments in your Python source\nfiles to ignore issues on specific lines. Some tools have their own built-in\nsupport and notation for doing this:\n\n* `pylint will respect `_ comments that look like: ``# pylint``\n* `bandit will respect `_\n comments that look like: ``# nosec``\n* `pycodestyle will respect `_ comments that look like: ``# noqa``\n* `pydocstyle will also respect `_ comments that look like: ``# noqa``\n* `detect-secrets will respect `_ comments that look like: ``# pragma: whitelist\n secret``\n\nTidyPy goes beyond these tool-specific flags to implement ``# noqa`` on a\nglobal scale for Python source files. It will ignore issues for lines that have\nthe ``# noqa`` comment, regardless of what tools raise the issues. If you only\nwant to ignore a particular type of issue on a line, you can use syntax like\nthe following::\n\n # noqa: CODE1,CODE2\n\nOr, if a particular code is used in multiple tools, you can specify the exact\ntool in the comment::\n\n # noqa: pycodestyle:CODE1,pylint:CODE2\n\nOr, if you want to ignore any issue a specific tool raises on a line, you can\nspecify the tool::\n\n # noqa: @pycodestyle,@pylint\n\nYou can, of course, mix and match all three notations in a single comment if\nyou need to::\n\n # noqa: CODE1,pylint:CODE2,@pycodestyle\n\nYou can disable TidyPy's NOQA behavior by specifying the ``--disable-noqa``\noption on the command line, or by setting the ``noqa`` option to ``false`` in\nyour configuration file. A caveat, though: currently pycodestyle and pydocstyle\ndo not respect this option and will always honor any ``# noqa`` comments they\nfind.\n\n\n.. _tools:\n\nIncluded Tools\n--------------\nOut of the box, TidyPy includes support for a number of tools:\n\npylint\n `Pylint`_ is a Python source code analyzer which looks for programming\n errors, helps enforcing a coding standard and sniffs for some code smells.\n\n .. _Pylint: https://github.com/PyCQA/pylint\n\npycodestyle\n `pycodestyle`_ is a tool to check your Python code against some of the\n style conventions in `PEP 8`_.\n\n .. _pycodestyle: https://github.com/PyCQA/pycodestyle\n .. _PEP 8: https://www.python.org/dev/peps/pep-0008/\n\npydocstyle\n `pydocstyle`_ is a static analysis tool for checking compliance with Python\n docstring conventions (e.g., `PEP 257`_).\n\n .. _pydocstyle: https://github.com/PyCQA/pydocstyle\n .. _PEP 257: https://www.python.org/dev/peps/pep-0257/\n\npyroma\n `Pyroma`_ tests your project's packaging friendliness.\n\n .. _Pyroma: https://github.com/regebro/pyroma\n\nvulture\n `Vulture`_ finds unused code in Python programs.\n\n .. _Vulture: https://github.com/jendrikseipp/vulture\n\nbandit\n `Bandit`_ is a security linter for Python source code.\n\n .. _Bandit: https://wiki.openstack.org/wiki/Security/Projects/Bandit\n\neradicate\n `Eradicate`_ finds commented-out code in Python files.\n\n .. _Eradicate: https://github.com/myint/eradicate\n\npyflakes\n `Pyflakes`_ is a simple program which checks Python source files for\n errors.\n\n .. _Pyflakes: https://github.com/PyCQA/pyflakes\n\nmccabe\n Ned Batchelder's script to check the `McCabe`_ cyclomatic complexity of\n Python code.\n\n .. _McCabe: https://github.com/pycqa/mccabe\n\njsonlint\n A part of the `demjson`_ package, this tool validates your JSON documents\n for strict conformance to the JSON specification, and to detect potential\n data portability issues.\n\n .. _demjson: https://github.com/dmeranda/demjson\n\nyamllint\n The `yamllint`_ tool, as its name implies, is a linter for YAML files.\n\n .. _yamllint: https://github.com/adrienverge/yamllint\n\nrstlint\n The `restructuredtext-lint`_ tool, as its name implies, is a linter for\n reStructuredText files.\n\n .. _restructuredtext-lint: https://github.com/twolfson/restructuredtext-lint\n\npolint\n A part of the `dennis`_ package, this tool lints PO and POT files for\n problems.\n\n .. _dennis: https://github.com/willkg/dennis\n\n2to3\n Uses Python's `lib2to3`_ module to find code that should be changed in\n order to be compatible with Python 3. This tool is disabled by default when\n executing on Python 3, but you can forcefully enable it in your\n configuration if you want.\n\n .. _lib2to3: https://docs.python.org/2/library/2to3.html\n\nmanifest\n Uses the `check-manifest`_ script to detect discrepancies or problems with\n your project's MANIFEST.in file.\n\n .. _check-manifest: https://github.com/mgedmin/check-manifest\n\npydiatra\n `pydiatra`_ is yet another static checker for Python code.\n\n .. _pydiatra: https://github.com/jwilk/pydiatra\n\nsecrets\n The `detect-secrets`_ tool attempts to find secrets (keys, passwords, etc)\n within a code base.\n\n .. _detect-secrets: https://github.com/Yelp/detect-secrets\n\ndlint\n `Dlint`_ is a tool for encouraging best coding practices and helping ensure\n we're writing secure Python code.\n\n .. _Dlint: https://github.com/duo-labs/dlint\n\n.. _reporters:\n\nIncluded Reporters\n------------------\nTidyPy includes a number of different methods to present and/or export the\nresults of the analysis of a project. Out of the box, it provides the\nfollowing:\n\nconsole\n The default reporter. Prints a colored report to the console that groups\n issues by the file they were found in.\n\npylint\n Prints a report to the console that is in the same format as `Pylint`_'s\n default output.\n\npylint-parseable\n Prints a report to the console that is in roughly the same format as\n `Pylint`_'s \"parseable\" output.\n\npycodestyle\n Prints a report to the console that is in the same format as\n `pycodestyle`_'s default output.\n\njson\n Generates a JSON-serialized object that contains the results of the\n analysis.\n\nyaml\n Generates a YAML-serialized object that contains the results of the\n analysis.\n\ntoml\n Generates a TOML-serialized object that contains the results of the\n analysis.\n\ncsv\n Generates a set of CSV records that contains the results of the analysis.\n\ncustom\n Prints ouput to the console that is in the format defined by a template\n string specified in the project configuration. The template string is\n expected to be one allowed by the `str.format()`_ Python method. It will\n receive the following arguments: ``filename``, ``line``, ``character``,\n ``tool``, ``code``, ``message``.\n\n .. _str.format(): https://docs.python.org/3/library/stdtypes.html#str.format\n\n\n.. _integrations:\n\nIncluded Integrations\n---------------------\nTidyPy includes a handful of plugins/integrations that hook it into other\ntools.\n\npytest\n TidyPy can be run during execution of your `pytest`_ test suite. To enable\n it, you need to specify ``--tidypy`` on the command line when you run\n pytest, or include it as part of the ``addopts`` property in your pytest\n config.\n\n .. _pytest: https://docs.pytest.org\n\nnose\n TidyPy can be run during execution of your `nose`_ test suite. To enable\n it, you can either specify ``--with-tidypy`` on the command line when you\n run nose, or set the ``with-tidypy`` property to ``1`` in your\n ``setup.cfg``.\n\n .. _nose: https://nose.readthedocs.io\n\npbbt\n TidyPy can be included in your `PBBT`_ scripts using the ``tidypy`` test.\n To enable it, you can either specify ``--extend=tidypy.plugin.pbbt`` on the\n command line when you run PBBT, or set the ``extend`` property in your\n ``setup.cfg`` or ``pbbt.yaml`` to ``tidypy.plugin.pbbt``.\n\n .. _PBBT: https://bitbucket.org/prometheus/pbbt\n\nsetuptools\n TidyPy can be invoked via the ``setup.py`` of your project. Just execute\n ``python setup.py tidypy``.\n\n\nExtending TidyPy\n----------------\nA simple interface exists for extending TidyPy to include more and different\ntools and reporters. When the API settles down, I'll document it here.\n\nTODO\n\n\nFAQs\n----\nAren't there already tools like this?\n Yup. There's `prospector`_, `pylama`_, `flake8`_, and `ciocheck`_ just to\n name a few. But, as is customary in the world of software development, if\n the wheel isn't as round as you'd like it to be, you must spend countless\n hours to reinvent it. I've tried a number of these tools (and even\n contributed to some), but in the end, I always found something lacking or\n annoying. Thus, TidyPy was born.\n\n .. _prospector: https://github.com/landscapeio/prospector\n .. _pylama: https://github.com/klen/pylama\n .. _flake8: https://gitlab.com/pycqa/flake8\n .. _ciocheck: https://github.com/ContinuumIO/ciocheck\n\nHow do I run TidyPy on a single file?\n The short answer is, you don't (at the moment, anyway). It wasn't designed\n with that use case in mind. TidyPy was built to analyze a whole project,\n and show you everything.\n\nI tried TidyPy out on my project and it reported hundreds/thousands of issues. My ego is now bruised.\n Yea, that happens. The philosophy I chose to follow with this tool is that\n I didn't want it to hide anything from me. I wanted its default behavior to\n execute every tool in its suite using their most obnoxious setting. Then,\n when I can see the full scope of damage, I can then decide to disable\n specific tools or issues via a project-level configuration. I figured if\n someone took the time to implement a check for a particular issue, they\n must think it has some value. If my tooling hides that from me by default,\n then I won't be able to gain any benefits from it.\n\n In general, I don't recommend starting to use linters or other sorts of\n static analyzers when you think you're \"done\". You should incorporate them\n into your workflow right at the beginning of a project -- just as you would\n (or should) your unit tests. That way you find things early and learn from\n them (or disable them). It's much less daunting a task to deal with when\n you address them incrementally.\n\n\nContributing\n------------\nContributions are most welcome. Particularly if they're bug fixes! To hack on\nthis code, simply clone it, make sure you have `Pipenv`_ installed (it's a\ngreat tool, you should use it even if you're not working on this project), and\nthen run ``make setup``. This will create a virtualenv with all the tools\nyou'll need. The ``Makefile`` also has a ``test`` target for running the pytest\nsuite, and a ``lint`` target for running TidyPy on itself.\n\n.. _Pipenv: https://github.com/kennethreitz/pipenv\n\n\nLicense\n-------\nTidyPy is released under the terms of the `MIT License`_.\n\n.. _MIT License: https://opensource.org/licenses/MIT\n\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/jayclassless/tidypy", "keywords": "tidypy lint linter static analysis pep8 pep257 pylint", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "tidypy", "package_url": "https://pypi.org/project/tidypy/", "platform": "", "project_url": "https://pypi.org/project/tidypy/", "project_urls": { "Homepage": "https://github.com/jayclassless/tidypy" }, "release_url": "https://pypi.org/project/tidypy/0.11.0/", "requires_dist": [ "six", "click (<8,>=6)", "tqdm (<5,>=4.11)", "pytoml (<0.2,>=0.1)", "pyyaml (<6,>=3.12)", "requests (<3,>=2)", "basicserial (<0.3,>=0.1)", "pycodestyle (<2.6,>=2.4)", "pep8-naming (<0.9,>=0.4)", "pyroma (<3,>=2.2)", "vulture (<2,>=1.1)", "bandit (<2,>=1.4)", "pyflakes (<3,>=1.5)", "mccabe (<0.7,>=0.6)", "demjson (<3,>=2.2.4)", "yamllint (<2,>=1.8)", "restructuredtext-lint (<2,>=1.1)", "dennis (<1,>=0.9)", "check-manifest (<0.40,>=0.37)", "pydiatra (<0.13,>=0.12.2)", "detect-secrets (<0.13,>=0.11.3)", "eradicate (<2,>=1)", "dlint (<0.9,>=0.8)", "pathlib2 ; python_version<\"3.4\"", "backports.csv ; python_version<\"3.4\"", "pylint (<2,>=1.7) ; python_version<\"3.4\"", "pydocstyle (<4,>=2) ; python_version<\"3.4\"", "pylint (<2.5,>=2) ; python_version>=\"3.4\"", "pydocstyle (<5,>=4) ; python_version>=\"3.4\"" ], "requires_python": "", "summary": "A tool that executes a suite of static analysis tools upon a Python project.", "version": "0.11.0" }, "last_serial": 5903535, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "65b2be16ed6869be8bc0f984de7dce23", "sha256": "d6cb4a5bb32d0843e4a242c8b3f36eea743f59dd8a91410727f68ba45c30bff4" }, "downloads": -1, "filename": "tidypy-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "65b2be16ed6869be8bc0f984de7dce23", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 41001, "upload_time": "2017-10-15T17:13:23", "url": "https://files.pythonhosted.org/packages/10/85/6787e2fcd42ae8f3b320232b73a6eca69d7acba6b590f197bbb07134157d/tidypy-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c44fca67979ac4ecea615f89c9e42b11", "sha256": "14f47d6b2f30f2ea0e9ca1f5c32563b174e7761c3e91d6a1a1afb5a4e816fa21" }, "downloads": -1, "filename": "tidypy-0.1.0.tar.gz", "has_sig": false, "md5_digest": "c44fca67979ac4ecea615f89c9e42b11", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32505, "upload_time": "2017-10-15T17:13:25", "url": "https://files.pythonhosted.org/packages/d0/87/4a43a4dd40e7db6523d885f6c31ccf49d553b8d5b7aad3bc86baad9ccf92/tidypy-0.1.0.tar.gz" } ], "0.10.0": [ { "comment_text": "", "digests": { "md5": "dbe003cfb6294c97eba839a405034dc6", "sha256": "ddde6bd32bea1fb93085f702b6fd595f36c95356d50931921b2e67a0b2fe2325" }, "downloads": -1, "filename": "tidypy-0.10.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "dbe003cfb6294c97eba839a405034dc6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 63515, "upload_time": "2019-05-18T19:08:23", "url": "https://files.pythonhosted.org/packages/5e/62/7d7d61d9d9ca1b2376ff22fc3c007e0ae498c2bba13afed70718f17c1008/tidypy-0.10.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4a1cf1cc03082a07765fffdfd6295dd4", "sha256": "a212608eb2d30f7ddcd4c44d188277b70d799ad88bd25197daa0676b44699a0e" }, "downloads": -1, "filename": "tidypy-0.10.0.tar.gz", "has_sig": false, "md5_digest": "4a1cf1cc03082a07765fffdfd6295dd4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 52543, "upload_time": "2019-05-18T19:08:25", "url": "https://files.pythonhosted.org/packages/6b/d6/a01ea53fe82828f4958242d6dcc60f3d040f1e9e436dbc1eccf9e3a1ce70/tidypy-0.10.0.tar.gz" } ], "0.10.1": [ { "comment_text": "", "digests": { "md5": "dac3c4d37dbcb43ca73d9e50b84b2c37", "sha256": "6aa82c730440d99bd699766082335bbe48cdeb7055d7532bea4a7fa09f6f8a7e" }, "downloads": -1, "filename": "tidypy-0.10.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "dac3c4d37dbcb43ca73d9e50b84b2c37", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 63606, "upload_time": "2019-06-02T13:32:18", "url": "https://files.pythonhosted.org/packages/e9/a1/9ceed3b35f1bf81c3d071cb842e7be632dfe3630f581b320d21b64d8d749/tidypy-0.10.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8263c7012b5e9c89e17021afde3c2d06", "sha256": "7985c0e2a27cd31e9e35fe7f1c0db075770c33b32e762be2c67b05a13672e736" }, "downloads": -1, "filename": "tidypy-0.10.1.tar.gz", "has_sig": false, "md5_digest": "8263c7012b5e9c89e17021afde3c2d06", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 52654, "upload_time": "2019-06-02T13:32:20", "url": "https://files.pythonhosted.org/packages/08/09/38bba5b3153945f181593300880447794cfd0a856bde283797961a95244e/tidypy-0.10.1.tar.gz" } ], "0.11.0": [ { "comment_text": "", "digests": { "md5": "b79fd2fd3003608dbc3fcc7c79a24610", "sha256": "cdf14e40a47e8e9970536d545ff0ee8554cdbd9bb99e6853a9841c31e992ebfc" }, "downloads": -1, "filename": "tidypy-0.11.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b79fd2fd3003608dbc3fcc7c79a24610", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 64463, "upload_time": "2019-09-29T19:16:14", "url": "https://files.pythonhosted.org/packages/bc/38/a06271b65bde1efdf408920f464fd9296d971c5635dfa9467537288a33c9/tidypy-0.11.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c8e80ccd8090c448fd66f646c0c612c8", "sha256": "0ab2f616c5228c0a271b4096f4080f282728d322f33a775e4dbe04bbee0b0c7c" }, "downloads": -1, "filename": "tidypy-0.11.0.tar.gz", "has_sig": false, "md5_digest": "c8e80ccd8090c448fd66f646c0c612c8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 54399, "upload_time": "2019-09-29T19:16:17", "url": "https://files.pythonhosted.org/packages/29/28/6019a605f55dc77391ad9960475e29577ea3fa92321c4715e5b0e3e28911/tidypy-0.11.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "e1cfe167916f30cc05f41031962f967f", "sha256": "e50909af397c296f668c385765e4323b7a0518d9d8f65f43a637f68903229b09" }, "downloads": -1, "filename": "tidypy-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e1cfe167916f30cc05f41031962f967f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 52955, "upload_time": "2017-11-04T17:34:59", "url": "https://files.pythonhosted.org/packages/16/e7/cc76508fff4e28e155abe46f4beb44db73ac608908168d4d821ffaab15e6/tidypy-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ac68d8fbbeea3743a52c3d33f631ec69", "sha256": "5917ebe1a0c5a2828c0015e88cbe8661b8aca8e55c7067ccc972a03d3ed6a3ec" }, "downloads": -1, "filename": "tidypy-0.2.0.tar.gz", "has_sig": false, "md5_digest": "ac68d8fbbeea3743a52c3d33f631ec69", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 45679, "upload_time": "2017-11-04T17:35:01", "url": "https://files.pythonhosted.org/packages/9f/50/3f19c8c456a46cf795db7856b5e75cda324533e6d6ab2be33319b2dc0b03/tidypy-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "5119e6bdc53241a776a827abd340f018", "sha256": "0cc27cc28619fee8dac67ca63ba1af3b06ed82228f9f1f58e87cb58f298d71f8" }, "downloads": -1, "filename": "tidypy-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5119e6bdc53241a776a827abd340f018", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 57677, "upload_time": "2017-11-18T17:39:02", "url": "https://files.pythonhosted.org/packages/6c/19/717a769a3a581ce8107dcf968118837944353f4045a42c95898942d7b16d/tidypy-0.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "50912befd44f0e988abff056930b447a", "sha256": "b0120a11b2a99d7fda62c386242fbbee0417c407cb102497fecee4e1a2e15aae" }, "downloads": -1, "filename": "tidypy-0.3.0.tar.gz", "has_sig": false, "md5_digest": "50912befd44f0e988abff056930b447a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50919, "upload_time": "2017-11-18T17:39:03", "url": "https://files.pythonhosted.org/packages/89/e1/55702bfd27b73c2b90b00b6a980becbe024e6a14269dc8354ff8e6f6c7aa/tidypy-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "869be19deaf6400538b984257b520700", "sha256": "b1b0e85ce9eebda3ce5cb4ee57be5560b6b563b8f873c7e22ddd5c3d671983bb" }, "downloads": -1, "filename": "tidypy-0.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "869be19deaf6400538b984257b520700", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 58455, "upload_time": "2017-12-02T20:50:16", "url": "https://files.pythonhosted.org/packages/06/78/6a102b009323434b4f13f69876f552b6d746924f3d636e58c60caea7f110/tidypy-0.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c252ada87c213bd0a91b25f955c494e0", "sha256": "4a606b819bda54bffdb3acf12b475f55658574fb173d99a2fbaa0b745ad076de" }, "downloads": -1, "filename": "tidypy-0.4.0.tar.gz", "has_sig": false, "md5_digest": "c252ada87c213bd0a91b25f955c494e0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 52941, "upload_time": "2017-12-02T20:50:18", "url": "https://files.pythonhosted.org/packages/e8/a3/ce98ea1dab8f74f6637d11a5c21b48f002572875489637e3667cabdd3cc9/tidypy-0.4.0.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "b419264e544485de5372713808e02a29", "sha256": "1813f2786c43eb4663f7e1aa0aca205edf27ad19e0136a3eeb8fcc1091b5e0a2" }, "downloads": -1, "filename": "tidypy-0.5.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b419264e544485de5372713808e02a29", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 59686, "upload_time": "2018-05-05T18:36:12", "url": "https://files.pythonhosted.org/packages/39/d3/2c13f2b68cd318bda359bc681114c60f98585e2bddb1a15663cfa49163ed/tidypy-0.5.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "26645b6a1634e510f65a1ecce2c31dc6", "sha256": "d5c30eb8aa3b1fc8a2c621ba6350b3bfa41f8073151d810aa94693fe217200a1" }, "downloads": -1, "filename": "tidypy-0.5.0.tar.gz", "has_sig": false, "md5_digest": "26645b6a1634e510f65a1ecce2c31dc6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46602, "upload_time": "2018-05-05T18:36:13", "url": "https://files.pythonhosted.org/packages/ea/25/192171eaf6efb0b2978ccee13d1cefd32ced469c3ec374f137855134bc57/tidypy-0.5.0.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "0952a64b08334d0816ad1b43162d92e2", "sha256": "f0e21da826c95ca0b92e218c917481522c0501e5e242de1d60495c14041ff4b2" }, "downloads": -1, "filename": "tidypy-0.6.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0952a64b08334d0816ad1b43162d92e2", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 61470, "upload_time": "2018-09-30T17:48:23", "url": "https://files.pythonhosted.org/packages/80/ef/4d74ccf0db57ee619cede7c4672d59551b4d0bf283a4fd7fa7877443a514/tidypy-0.6.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7fb2b441591d9715e1083f60075ccf21", "sha256": "bf2fb216fe8cd91411746e8bee602e8f525015d2951caa95a90434e642648df3" }, "downloads": -1, "filename": "tidypy-0.6.0.tar.gz", "has_sig": false, "md5_digest": "7fb2b441591d9715e1083f60075ccf21", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47765, "upload_time": "2018-09-30T17:48:25", "url": "https://files.pythonhosted.org/packages/b0/a3/fcbd397946768cc796ea57c06ee21eef55b20a76e08e62b6491022c5a1df/tidypy-0.6.0.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "1f41b5b9ac57071ae2e3394ba8e5a048", "sha256": "9eb39482ae3e61801ed4dcaf0035193a912bbec134e7570a28b73312cc2b24d4" }, "downloads": -1, "filename": "tidypy-0.7.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1f41b5b9ac57071ae2e3394ba8e5a048", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 61570, "upload_time": "2018-10-24T23:13:17", "url": "https://files.pythonhosted.org/packages/41/bf/2b4ed1eadbbe756abb4c3dafd1d6d34343da706d2a439f0d6e3752c93c5f/tidypy-0.7.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "781b91303d56253cd8a9b5a44d0e0852", "sha256": "c93dee866e6d03f749a4aecc2f7a51894495918d4e8a75a4dbbb2511e4382357" }, "downloads": -1, "filename": "tidypy-0.7.0.tar.gz", "has_sig": false, "md5_digest": "781b91303d56253cd8a9b5a44d0e0852", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49990, "upload_time": "2018-10-24T23:13:20", "url": "https://files.pythonhosted.org/packages/34/de/69ce952390aa38498caee2d4f6c9405421e7177968682070c802ac2bbbd1/tidypy-0.7.0.tar.gz" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "3deac324e29dfc1337a0d937989e8ce1", "sha256": "3884390406fb15b578623da531d63036bceea54b2ec83238cf81f5f8a53b55e3" }, "downloads": -1, "filename": "tidypy-0.8.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3deac324e29dfc1337a0d937989e8ce1", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 62375, "upload_time": "2019-01-31T01:28:18", "url": "https://files.pythonhosted.org/packages/87/5b/f6dd3193a63907281fe0754fa205fb0080f8f44bd23bd868b9cd306cfcd2/tidypy-0.8.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5b046958ce3b84ec5051905254fdb175", "sha256": "d6580dc33f1bd2fba9278abf46ab5cc8e7e3780be10b075dfb1b827ba5e8c217" }, "downloads": -1, "filename": "tidypy-0.8.0.tar.gz", "has_sig": false, "md5_digest": "5b046958ce3b84ec5051905254fdb175", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50450, "upload_time": "2019-01-31T01:28:20", "url": "https://files.pythonhosted.org/packages/a1/98/ee93b15ba2b7ed60961090700077bcc4058a0bbcc868b3569f82206f71d7/tidypy-0.8.0.tar.gz" } ], "0.9.0": [ { "comment_text": "", "digests": { "md5": "9cc6cad47b14be081e7680ff6a1207d1", "sha256": "8f361787e3ec4bf9fc87f54213c0fd4c14751c84cbf6820da23f1381258290e8" }, "downloads": -1, "filename": "tidypy-0.9.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9cc6cad47b14be081e7680ff6a1207d1", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 63546, "upload_time": "2019-03-16T21:48:16", "url": "https://files.pythonhosted.org/packages/3c/91/e6bdf44107b715c341869becbf3b20dafed5b41bb5f77d72dfbab5c9b3a7/tidypy-0.9.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "90abdbd95557803e436b24289c9d7271", "sha256": "a57b6ba98498315bb7a9e8acf0634f8a2b26c9ff9f2f8c1f304492e2d35efe06" }, "downloads": -1, "filename": "tidypy-0.9.0.tar.gz", "has_sig": false, "md5_digest": "90abdbd95557803e436b24289c9d7271", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 53849, "upload_time": "2019-03-16T21:48:18", "url": "https://files.pythonhosted.org/packages/1b/11/733834bc9965240f2a4f1d0c6128c4642be4f470ea0e60542f71bef3baf1/tidypy-0.9.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b79fd2fd3003608dbc3fcc7c79a24610", "sha256": "cdf14e40a47e8e9970536d545ff0ee8554cdbd9bb99e6853a9841c31e992ebfc" }, "downloads": -1, "filename": "tidypy-0.11.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b79fd2fd3003608dbc3fcc7c79a24610", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 64463, "upload_time": "2019-09-29T19:16:14", "url": "https://files.pythonhosted.org/packages/bc/38/a06271b65bde1efdf408920f464fd9296d971c5635dfa9467537288a33c9/tidypy-0.11.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c8e80ccd8090c448fd66f646c0c612c8", "sha256": "0ab2f616c5228c0a271b4096f4080f282728d322f33a775e4dbe04bbee0b0c7c" }, "downloads": -1, "filename": "tidypy-0.11.0.tar.gz", "has_sig": false, "md5_digest": "c8e80ccd8090c448fd66f646c0c612c8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 54399, "upload_time": "2019-09-29T19:16:17", "url": "https://files.pythonhosted.org/packages/29/28/6019a605f55dc77391ad9960475e29577ea3fa92321c4715e5b0e3e28911/tidypy-0.11.0.tar.gz" } ] }