{ "info": { "author": "Marius Gedminas", "author_email": "marius@gedmin.as", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License (GPL)", "Operating System :: OS Independent", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy" ], "description": "check-python-versions\n=====================\n\n.. image:: https://img.shields.io/pypi/v/check-python-versions.svg\n :target: https://pypi.org/project/check-python-versions/\n :alt: Latest release\n\n.. image:: https://img.shields.io/pypi/pyversions/check-python-versions.svg\n :target: https://pypi.org/project/check-python-versions/\n :alt: Supported Python versions\n\n.. image:: https://travis-ci.org/mgedmin/check-python-versions.svg?branch=master\n :target: https://travis-ci.org/mgedmin/check-python-versions\n :alt: Build status\n\n.. image:: https://coveralls.io/repos/mgedmin/check-python-versions/badge.svg?branch=master\n :target: https://coveralls.io/r/mgedmin/check-python-versions\n :alt: Test coverage\n\n\nThis is a tool for Python package maintainers who want to explicitly state\nwhich Python versions they support.\n\n\n**The problem**: to properly support e.g. Python 2.7 and 3.4+ you have to\nrun tests with these Pythons. This means\n\n- you need a tox.ini with envlist = py27, py34, py35, py36, py37\n- you need a .travis.yml with python: [ 2.7, 3.4, 3.5, 3.6, 3.7 ]\n- if you support Windows, you need an appveyor.yml with %PYTHON% set to\n C:\\\\Python2.7, C:\\\\Python3.4, and so on\n- if you're building manylinux wheels you need to ... you get the idea\n- you have to tell the users which Python versions you support by specifying\n trove classifiers like \"Programming Language :: Python :: 2.7\"\n- you probably also want to tell pip which versions you support by specifying\n python_requires=\">= 2.7, !=3.0.* ...\" because AFAIU PyPI classifiers are\n not fine-grained enough\n\nKeeping all these lists consistent is a pain.\n\n**The solution**: ``check-python-versions`` will compare these lists and warn\nyou if they don't match ::\n\n $ check-python-versions ~/projects/*\n /home/mg/projects/check-manifest:\n\n setup.py says: 2.7, 3.4, 3.5, 3.6, 3.7, PyPy\n - python_requires says: 2.7, 3.4, 3.5, 3.6, 3.7\n tox.ini says: 2.7, 3.4, 3.5, 3.6, 3.7, PyPy, PyPy3\n .travis.yml says: 2.7, 3.4, 3.5, 3.6, 3.7, PyPy, PyPy3\n appveyor.yml says: 2.7, 3.4, 3.5, 3.6, 3.7\n\n\n /home/mg/projects/dozer:\n\n setup.py says: 2.7, 3.4, 3.5, 3.6, 3.7\n tox.ini says: 2.7, 3.4, 3.5, 3.6, 3.7\n .travis.yml says: 2.7, 3.4, 3.5, 3.6, 3.7\n appveyor.yml says: 2.7, 3.4, 3.5, 3.6, 3.7\n\n\n /home/mg/projects/eazysvn:\n\n setup.py says: 2.7, 3.4, 3.5, 3.6, 3.7, PyPy\n tox.ini says: 2.7, 3.4, 3.5, 3.6, 3.7, PyPy, PyPy3\n .travis.yml says: 2.7, 3.4, 3.5, 3.6, 3.7, PyPy, PyPy3\n appveyor.yml says: 2.7, 3.4, 3.5, 3.6, 3.7\n\n ...\n\n all ok!\n\n\nInstallation\n------------\n\nYou need Python 3.6 or newer (f-strings!) to run check-python-versions.\nInstall it with ::\n\n python3 -m pip install check-python-versions\n\n\nUsage\n-----\n\n::\n\n $ check-python-versions --help\n usage: check-python-versions [-h] [--version] [--expect VERSIONS]\n [--skip-non-packages] [--only FILES]\n [--add VERSIONS] [--drop VERSIONS]\n [--update VERSIONS] [--diff] [--dry-run]\n [where [where ...]]\n\n verify that supported Python versions are the same in setup.py, tox.ini,\n .travis.yml and appveyor.yml\n\n positional arguments:\n where directory where a Python package with a setup.py and\n other files is located\n\n optional arguments:\n -h, --help show this help message and exit\n --version show program's version number and exit\n --expect VERSIONS expect these versions to be supported, e.g. --expect\n 2.7,3.5-3.7\n --skip-non-packages skip arguments that are not Python packages without\n warning about them\n --only FILES check only the specified files (comma-separated list,\n e.g. --only tox.ini,appveyor.yml)\n\n updating supported version lists (EXPERIMENTAL):\n --add VERSIONS add these versions to supported ones, e.g --add 3.8\n --drop VERSIONS drop these versions from supported ones, e.g --drop\n 2.6,3.4\n --update VERSIONS update the set of supported versions, e.g. --update\n 2.7,3.5-3.7\n --diff show a diff of proposed changes\n --dry-run verify proposed changes without writing them to disk\n\nIf run without any arguments, check-python-versions will look for a setup.py in\nthe current working directory.\n\nExit status is 0 if all Python packages had consistent version numbers (and, if\n--expect is specified, those numbers match your stated expectations).\n\nIf you specify multiple directories on the command line, then all packages\nthat failed a check will be listed at the end of the run, separated with\nspaces, for easier copying and pasting onto shell command lines. This is\nhelpful when, e.g. you want to run ::\n\n check-python-versions ~/src/zopefoundation/*\n\nto check all 380+ packages, and then want re-run the checks only on the failed\nones, for a faster turnabout.\n\nThere's also experimental support for updating supported Python versions\nso you can do things like ::\n\n check-python-versions ~/projects/* --add 3.8 --dry-run --expect 2.7,3.5-3.8\n check-python-versions ~/projects/* --drop 3.4 --diff\n check-python-versions ~/projects/* --update 2.7,3.4- --dry-run --diff\n check-python-versions ~/projects/* --add 3.8 --drop=-2.6,-3.4\n\n(the last one will show a diff for each file and ask for interactive\nconfirmation before making any changes.)\n\nProgrammatically updating human-writable files is difficult, so expect\nbugs (and please file issues).\n\n\nFiles\n-----\n\n**setup.py** is the only required file; if any of the others are missing,\nthey'll be ignored (and this will not considered a failure).\n\n- **setup.py**: the ``classifiers`` argument passed to ``setup()`` is expected\n to have classifiers of the form::\n\n classifiers=[\n ...\n \"Programming Language :: Python :: x.y\",\n ...\n ],\n\n check-python-versions will attempt to parse the file and walk the AST to\n extract classifiers, but if that fails, it'll execute\n ``python setup.py --classifiers`` and parse the output.\n\n There's rudimentary support for dynamically-computed classifiers if at\n least one part is a list literal, e.g. this can work and can even be\n updated ::\n\n classifiers=[\n ...\n \"Programming Language :: Python :: x.y\",\n ...\n ] + ... expression that computes extra classifiers ...,\n\n- **setup.py**: the ``python_requires`` argument passed to ``setup()``, if\n present::\n\n python_requires=\">=2.7, !=3.0.*, !=3.1.*\",\n\n check-python-versions will attempt to parse the file and walk the AST to\n extract the ``python_requires`` value. It expects to find a string literal\n or a simple expression of the form ``\"literal\".join([\"...\", \"...\"])``.\n\n- **tox.ini**: if present, it's expected to have ::\n\n [tox]\n envlist = pyXY, ...\n\n Environment names like pyXY-ZZZ are also accepted; the suffix is ignored.\n\n- **.travis.yml**: if present, it's expected to have ::\n\n python:\n - X.Y\n - ...\n\n and/or ::\n\n matrix:\n include:\n - python: X.Y\n ...\n - ...\n\n and/or ::\n\n jobs:\n include:\n - python: X.Y\n ...\n - ...\n\n and/or ::\n\n env:\n - TOXENV=...\n\n (but not all of these forms are supported for updates)\n\n- **appveyor.yml**: if present, it's expected to have ::\n\n environment:\n matrix:\n - PYTHON: C:\\\\PythonX.Y\n - ...\n\n The environment variable name is assumed to be ``PYTHON`` (case-insensitive).\n The values should be one of\n\n - ``X.Y``\n - ``C:\\\\PythonX.Y`` (case-insensitive)\n - ``C:\\\\PythonX.Y-x64`` (case-insensitive)\n\n Alternatively, you can use ``TOXENV`` with the usual values (pyXY).\n\n (``TOXENV`` is currently not supported for updates.)\n\n- **.manylinux-install.sh**: if present, it's expected to contain a loop like\n ::\n\n for PYBIN in /opt/python/*/bin; do\n if [[ \"${PYBIN}\" == *\"cp27\"* ]] || \\\n [[ \"${PYBIN}\" == *\"cp34\"* ]] || \\\n [[ \"${PYBIN}\" == *\"cp35\"* ]] || \\\n [[ \"${PYBIN}\" == *\"cp36\"* ]] || \\\n [[ \"${PYBIN}\" == *\"cp37\"* ]]; then\n \"${PYBIN}/pip\" install -e /io/\n \"${PYBIN}/pip\" wheel /io/ -w wheelhouse/\n rm -rf /io/build /io/*.egg-info\n fi\n done\n\n check-python-versions will look for $PYBIN tests of the form ::\n\n [[ \"${PYBIN}\" == *\"cpXY\"* ]]\n\n where X and Y are arbitrary digits.\n\n These scripts are used in several zopefoundation repositories like\n zopefoundation/zope.interface. It's the least standartized format.\n\n\nPython versions\n---------------\n\nIn addition to CPython X.Y, check-python-versions will recognize PyPy and PyPy3\nin some of the files:\n\n- **setup.py** may have a ::\n\n 'Programming Language :: Python :: Implementation :: PyPy',\n\n classifier\n\n- **tox.ini** may have pypy[-suffix] and pypy3[-suffix] environments\n\n- **.travis.yml** may have pypy and pypy3 jobs with optional version suffixes\n (e.g. pypy2.7-6.0.0, pypy3.5-6.0.0)\n\n- **appveyor.yml** and **.manylinux-install.sh** do not usually have pypy tests,\n so check-python-versions cannot recognize them.\n\nThese extra Pythons are shown, but not compared for consistency.\n\nUpcoming Python releases (such as 3.8 in setup.py or 3.8-dev in a .travis.yml)\nare also shown but do not cause mismatch errors.\n\nIn addition, ``python_requires`` in setup.py usually has a lower limit, but no\nupper limit. check-python-versions will assume this means support up to the\ncurrent Python 3.x release (3.7 at the moment).\n\nWhen you're specifying Python version ranges for --expect, --add, --drop or\n--update, you can use\n\n- ``X.Y`` (e.g. ``--add 3.8``)\n- ``X.Y-U.V`` for an inclusive range (e.g. ``--add 3.5-3.8``)\n- ``X.Y-``, which means from X.Y until the latest known release from the X series\n (e.g. ``--add 3.5-`` is equivalent to ``--add 3.5-3.7``)\n- ``-X.Y``, which is the same as ``X.0-X.Y``\n (e.g. ``--drop -3.4`` is equivalent to ``--drop 3.0-3.4``)\n\nor a comma-separated list of the above (e.g. ``--expect 2.7,3.5-``,\n``--drop -2.6,-3.4``).\n\nYou may have to take extra care when using ranges with no explicit lower limit,\nas they look like command-line flags, so instead of ::\n\n --drop -2.6\n\nyou may need to write ::\n\n --drop=-2.6\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/mgedmin/check-python-versions", "keywords": "python packaging version checker linter setup.py tox travis appveyor", "license": "GPL", "maintainer": "", "maintainer_email": "", "name": "check-python-versions", "package_url": "https://pypi.org/project/check-python-versions/", "platform": "", "project_url": "https://pypi.org/project/check-python-versions/", "project_urls": { "Homepage": "https://github.com/mgedmin/check-python-versions" }, "release_url": "https://pypi.org/project/check-python-versions/0.13.0/", "requires_dist": [ "pyyaml" ], "requires_python": ">=3.6", "summary": "Compare supported Python versions in setup.py vs tox.ini et al.", "version": "0.13.0" }, "last_serial": 5975159, "releases": { "0.10.0": [ { "comment_text": "", "digests": { "md5": "3c845d68f40a3943f738f6ced98e394b", "sha256": "869e6e0c53d5a154e05c30d908b106c5ce8d820c427173f6f5b2d3130bb73510" }, "downloads": -1, "filename": "check_python_versions-0.10.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3c845d68f40a3943f738f6ced98e394b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6", "size": 21269, "upload_time": "2018-12-11T17:26:20", "url": "https://files.pythonhosted.org/packages/fb/5c/d8e2fe65820ebe2a0d4ff95e8d79ac90b5a4fc8abeca19c8e3833f8b1a26/check_python_versions-0.10.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c0d826d3d11e84f9bc9085ac5ec2acad", "sha256": "e809ab78b2901d2fe8a7272af19ff643dbf632f44cd19d3a0985b82f0e48495f" }, "downloads": -1, "filename": "check-python-versions-0.10.0.tar.gz", "has_sig": false, "md5_digest": "c0d826d3d11e84f9bc9085ac5ec2acad", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 30768, "upload_time": "2018-12-11T17:26:22", "url": "https://files.pythonhosted.org/packages/77/81/c562a9ad93e2d9e0530a741a48a57feae7c973fff9c2938290eb9583c608/check-python-versions-0.10.0.tar.gz" } ], "0.12.0": [ { "comment_text": "", "digests": { "md5": "c27dd08d298a5d0ac859c15dc8b62bff", "sha256": "22cbf0eb9eeb1c79910c2a7ec78e354ac01cc57c8a1a49efaeaf476f6076881b" }, "downloads": -1, "filename": "check_python_versions-0.12.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c27dd08d298a5d0ac859c15dc8b62bff", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6", "size": 37640, "upload_time": "2019-04-18T07:52:23", "url": "https://files.pythonhosted.org/packages/21/53/69da0342996e9ee33450203a400c1c401a27f2e42537ad78fe0046d03dba/check_python_versions-0.12.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "08689a2552668a4ba82f846fc74e26f4", "sha256": "b3d9e1731afa5762ba0338ee5dde187dbefabb6b410918efe5145311e26da96e" }, "downloads": -1, "filename": "check-python-versions-0.12.0.tar.gz", "has_sig": false, "md5_digest": "08689a2552668a4ba82f846fc74e26f4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 50590, "upload_time": "2019-04-18T07:52:24", "url": "https://files.pythonhosted.org/packages/f5/0b/f0fea6c69b5253780c426a829a1ccc197d42ffa5a1a5f471081f4e5778cc/check-python-versions-0.12.0.tar.gz" } ], "0.12.1": [ { "comment_text": "", "digests": { "md5": "3dc9a9de52d9731100da7fc6f6c8122d", "sha256": "be01ea1874599694118d922bf75cdede01243392f8bfb2f164d48d7e0c33bb18" }, "downloads": -1, "filename": "check_python_versions-0.12.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3dc9a9de52d9731100da7fc6f6c8122d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6", "size": 33290, "upload_time": "2019-05-02T11:26:53", "url": "https://files.pythonhosted.org/packages/82/f8/e9fbfca3572861774e7f55e8dc25b7e818a7ed91cf625ce17253488e328f/check_python_versions-0.12.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1132c62293cae325d0584f996561cb58", "sha256": "8ba7d39f1f074b95dbe4414b8ccdb525f3b50aa5848568e23db95de9aa3a839e" }, "downloads": -1, "filename": "check-python-versions-0.12.1.tar.gz", "has_sig": false, "md5_digest": "1132c62293cae325d0584f996561cb58", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 51206, "upload_time": "2019-05-02T11:26:55", "url": "https://files.pythonhosted.org/packages/51/3f/1d6acd0c001a19ce72a1aec561903935f9db34ecfb0912af3a36fd073b45/check-python-versions-0.12.1.tar.gz" } ], "0.13.0": [ { "comment_text": "", "digests": { "md5": "2009408b1f9303cde8ff5fe4d4fa3dde", "sha256": "f4e07f87e11be9ab35919606d0c637e0a6ec957a42ebdc55223f3bd6744ce42c" }, "downloads": -1, "filename": "check_python_versions-0.13.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2009408b1f9303cde8ff5fe4d4fa3dde", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6", "size": 33288, "upload_time": "2019-10-15T06:55:32", "url": "https://files.pythonhosted.org/packages/93/00/65858147d44f3e6e5a32319daba7005f31cb28c176113d1f34d840357556/check_python_versions-0.13.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1d9738d7d221e8c0672f8721fcbf342a", "sha256": "d8bd17c287f07d439871bab8a1c8b2b77afddd46ed625c10d75915c732a45196" }, "downloads": -1, "filename": "check-python-versions-0.13.0.tar.gz", "has_sig": false, "md5_digest": "1d9738d7d221e8c0672f8721fcbf342a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 53353, "upload_time": "2019-10-15T06:55:35", "url": "https://files.pythonhosted.org/packages/53/f0/75369f3cf2cb3b4cd6272b17bd917a17c3c9a1578774e092f6d0ae0becd5/check-python-versions-0.13.0.tar.gz" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "e7d3a0e7f8731d098b80923e98871b1e", "sha256": "a0c64500b8389a241199ad2f8b4bd72cae2591060b2ae5fb6579f6db3c7a9150" }, "downloads": -1, "filename": "check_python_versions-0.8.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e7d3a0e7f8731d098b80923e98871b1e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6", "size": 20378, "upload_time": "2018-11-16T16:19:09", "url": "https://files.pythonhosted.org/packages/fc/cd/84cfb13940fd05703e9d8ba36398926b22de7aca4c38f4e08e790d8d050f/check_python_versions-0.8.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d6575e6031ad683e514afaf8d5eb42ba", "sha256": "da9949289cae7e9505c888f139084f331fe96fcbd415747f579de027d51f7a3e" }, "downloads": -1, "filename": "check-python-versions-0.8.0.tar.gz", "has_sig": false, "md5_digest": "d6575e6031ad683e514afaf8d5eb42ba", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 24736, "upload_time": "2018-11-16T16:19:11", "url": "https://files.pythonhosted.org/packages/99/03/a96a074c8873d4e73ca186f2aa57754c086382a0153939f770fe198d173b/check-python-versions-0.8.0.tar.gz" } ], "0.9.0": [ { "comment_text": "", "digests": { "md5": "255a50c47aa91add0c1bccb4d2cd5ca9", "sha256": "0a4f2af469760611bdfbeb937594260e86833b0e7149f8b5eacdae15d0a30980" }, "downloads": -1, "filename": "check_python_versions-0.9.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "255a50c47aa91add0c1bccb4d2cd5ca9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6", "size": 20512, "upload_time": "2018-11-19T09:50:09", "url": "https://files.pythonhosted.org/packages/e2/99/646da64f58825ec7053981435b555144e9022b2c246fa9275959c4ea0d47/check_python_versions-0.9.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d937167cfdbb28b37ab0ceea86b44937", "sha256": "61c63af01323e756c8b184a05f8675765743ec30a44235169d712cc22fd84c8f" }, "downloads": -1, "filename": "check-python-versions-0.9.0.tar.gz", "has_sig": false, "md5_digest": "d937167cfdbb28b37ab0ceea86b44937", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 24870, "upload_time": "2018-11-19T09:50:11", "url": "https://files.pythonhosted.org/packages/d5/7c/4c78a84b33189953169fafd65dfc2011cdeb33a456072cd86a00800b6768/check-python-versions-0.9.0.tar.gz" } ], "0.9.1": [ { "comment_text": "", "digests": { "md5": "413378e2927126b908e2b81340bdd5d3", "sha256": "f324222b1a2899fc5b7bb674e6e81690ea9ba18c11f2b9b792d3694bae87fe6c" }, "downloads": -1, "filename": "check_python_versions-0.9.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "413378e2927126b908e2b81340bdd5d3", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6", "size": 20594, "upload_time": "2018-11-30T16:47:49", "url": "https://files.pythonhosted.org/packages/a5/3b/685ecf6430274a842d773bfb2855775ea59aa13db03f2cbd85e4f6229b7f/check_python_versions-0.9.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c83ee5fa59ec1642120cd78e87ce786f", "sha256": "49c5d3a1da35b19017286082f880829c57795068f28ae4ef4c9106fbc9c11987" }, "downloads": -1, "filename": "check-python-versions-0.9.1.tar.gz", "has_sig": false, "md5_digest": "c83ee5fa59ec1642120cd78e87ce786f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 25025, "upload_time": "2018-11-30T16:47:50", "url": "https://files.pythonhosted.org/packages/96/e5/d4f6cccd2860ac24360e3c32049cf4c8e957284067a753c8094db4783712/check-python-versions-0.9.1.tar.gz" } ], "0.9.2": [ { "comment_text": "", "digests": { "md5": "f99856baee2d6c1db46de266802bb338", "sha256": "75c26515e5fbe49bf0f11da8dcd4c7fdc0ddd64254913281ef111597d61df1ba" }, "downloads": -1, "filename": "check_python_versions-0.9.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f99856baee2d6c1db46de266802bb338", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6", "size": 20600, "upload_time": "2018-12-03T20:51:18", "url": "https://files.pythonhosted.org/packages/1a/cb/69ec8a10d74b4eed62f4ba109afd9fb6961cf1d04017fdb0d601c4f63e19/check_python_versions-0.9.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e7f1ed86ec62ee993f3c8541e2e6cb2f", "sha256": "a6aa38932df12349a9eaf6dc8ac1f444a400726946e7f874e2b4a07ac5e8f0ed" }, "downloads": -1, "filename": "check-python-versions-0.9.2.tar.gz", "has_sig": false, "md5_digest": "e7f1ed86ec62ee993f3c8541e2e6cb2f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 25057, "upload_time": "2018-12-03T20:51:20", "url": "https://files.pythonhosted.org/packages/b6/bb/9b773c73dd7083c06a33dbe1f42a1f882585cc27a7fa313ab1a0743cf146/check-python-versions-0.9.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "2009408b1f9303cde8ff5fe4d4fa3dde", "sha256": "f4e07f87e11be9ab35919606d0c637e0a6ec957a42ebdc55223f3bd6744ce42c" }, "downloads": -1, "filename": "check_python_versions-0.13.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2009408b1f9303cde8ff5fe4d4fa3dde", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6", "size": 33288, "upload_time": "2019-10-15T06:55:32", "url": "https://files.pythonhosted.org/packages/93/00/65858147d44f3e6e5a32319daba7005f31cb28c176113d1f34d840357556/check_python_versions-0.13.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1d9738d7d221e8c0672f8721fcbf342a", "sha256": "d8bd17c287f07d439871bab8a1c8b2b77afddd46ed625c10d75915c732a45196" }, "downloads": -1, "filename": "check-python-versions-0.13.0.tar.gz", "has_sig": false, "md5_digest": "1d9738d7d221e8c0672f8721fcbf342a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 53353, "upload_time": "2019-10-15T06:55:35", "url": "https://files.pythonhosted.org/packages/53/f0/75369f3cf2cb3b4cd6272b17bd917a17c3c9a1578774e092f6d0ae0becd5/check-python-versions-0.13.0.tar.gz" } ] }