Commit b61a4ddb by David Hotham Committed by GitHub

Avoid the deprecated JSON API (#6081)

Resolves #6076 

I've taken the JSON version of the simple API and converted it into a
`LinkSource` so that the package-finding logic in the `PyPiRepository`
is very similar to - but annoyingly not quite the same as! - the
`LegacyRepository`.

I've also taken the opportunity to refactor the `LegacyRepository` ever
so slightly to emphasise that similarity. I think I've probably fixed a
small bug re caching and pre-releases: previously the processing for
ignored pre-releases was skipped when reading from the cache.

I believe this change will tend to be a modest performance hit. Eg
consider a package like `cryptography`, for which there are maybe a
couple of dozen downloads available at each release: to get the
available versions we now have to iterate over each of those files and
parse their names, rather than simply reading the answer.

However if the API that poetry currently uses is truly deprecated I see
little choice but to suck that up - or risk being in an awkward spot
when it is turned off. cf #5970, but worse.

Most of the changes are in the test fixtures:
- unversioned fixtures were generated from the existing fixtures: I
didn't want to download fresh data and start getting different answers
than the tests were expecting
- new versioned fixtures were downloaded fresh
parent 714c09dd
from __future__ import annotations
from collections import defaultdict
from typing import TYPE_CHECKING
from typing import Any
from poetry.core.packages.utils.link import Link
from poetry.repositories.link_sources.base import LinkSource
from poetry.utils._compat import cached_property
if TYPE_CHECKING:
from poetry.repositories.link_sources.base import LinkCache
class SimpleJsonPage(LinkSource):
"""Links as returned by PEP 691 compatible JSON-based Simple API."""
def __init__(self, url: str, content: dict[str, Any]) -> None:
super().__init__(url=url)
self.content = content
@cached_property
def _link_cache(self) -> LinkCache:
links: LinkCache = defaultdict(lambda: defaultdict(list))
for file in self.content["files"]:
url = file["url"]
requires_python = file.get("requires-python")
yanked = file.get("yanked", False)
link = Link(url, requires_python=requires_python, yanked=yanked)
if link.ext not in self.SUPPORTED_FORMATS:
continue
pkg = self.link_package_data(link)
if pkg:
links[pkg.name][pkg.version].append(link)
return links
...@@ -12,11 +12,11 @@ from cachecontrol.controller import logger as cache_control_logger ...@@ -12,11 +12,11 @@ from cachecontrol.controller import logger as cache_control_logger
from html5lib.html5parser import parse from html5lib.html5parser import parse
from poetry.core.packages.package import Package from poetry.core.packages.package import Package
from poetry.core.packages.utils.link import Link from poetry.core.packages.utils.link import Link
from poetry.core.semver.version import Version
from poetry.core.version.exceptions import InvalidVersion from poetry.core.version.exceptions import InvalidVersion
from poetry.repositories.exceptions import PackageNotFound from poetry.repositories.exceptions import PackageNotFound
from poetry.repositories.http import HTTPRepository from poetry.repositories.http import HTTPRepository
from poetry.repositories.link_sources.json import SimpleJsonPage
from poetry.utils._compat import to_str from poetry.utils._compat import to_str
from poetry.utils.constants import REQUESTS_TIMEOUT from poetry.utils.constants import REQUESTS_TIMEOUT
...@@ -27,6 +27,7 @@ logger = logging.getLogger(__name__) ...@@ -27,6 +27,7 @@ logger = logging.getLogger(__name__)
if TYPE_CHECKING: if TYPE_CHECKING:
from packaging.utils import NormalizedName from packaging.utils import NormalizedName
from poetry.core.semver.version import Version
from poetry.core.semver.version_constraint import VersionConstraint from poetry.core.semver.version_constraint import VersionConstraint
SUPPORTED_PACKAGE_TYPES = {"sdist", "bdist_wheel"} SUPPORTED_PACKAGE_TYPES = {"sdist", "bdist_wheel"}
...@@ -114,50 +115,44 @@ class PyPiRepository(HTTPRepository): ...@@ -114,50 +115,44 @@ class PyPiRepository(HTTPRepository):
Find packages on the remote server. Find packages on the remote server.
""" """
try: try:
info = self.get_package_info(name) json_page = self.get_json_page(name)
except PackageNotFound: except PackageNotFound:
self._log( self._log(
f"No packages found for {name} {constraint!s}", f"No packages found for {name}",
level="debug", level="debug",
) )
return [] return []
packages = [] versions: list[tuple[Version, str | bool]]
for version_string, release in info["releases"].items(): key: str = name
if not release: if not constraint.is_any():
# Bad release key = f"{key}:{constraint!s}"
self._log(
f"No release information found for {name}-{version_string},"
" skipping",
level="debug",
)
continue
try: if self._cache.store("matches").has(key):
version = Version.parse(version_string) versions = self._cache.store("matches").get(key)
except InvalidVersion: else:
self._log( versions = [
f'Unable to parse version "{version_string}" for the' (version, json_page.yanked(name, version))
f" {name} package, skipping", for version in json_page.versions(name)
level="debug", if constraint.allows(version)
) ]
continue self._cache.store("matches").put(key, versions, 5)
if constraint.allows(version): pretty_name = json_page.content["name"]
# PEP 592: PyPI always yanks entire releases, not individual files, packages = [
# so we just have to look for the first file Package(pretty_name, version, yanked=yanked) for version, yanked in versions
yanked = self._get_yanked(release[0]) ]
packages.append(Package(info["info"]["name"], version, yanked=yanked))
return packages return packages
def _get_package_info(self, name: NormalizedName) -> dict[str, Any]: def _get_package_info(self, name: str) -> dict[str, Any]:
data = self._get(f"pypi/{name}/json") headers = {"Accept": "application/vnd.pypi.simple.v1+json"}
if data is None: info = self._get(f"simple/{name}/", headers=headers)
if info is None:
raise PackageNotFound(f"Package [{name}] not found.") raise PackageNotFound(f"Package [{name}] not found.")
return data return info
def find_links_for_package(self, package: Package) -> list[Link]: def find_links_for_package(self, package: Package) -> list[Link]:
json_data = self._get(f"pypi/{package.name}/{package.version}/json") json_data = self._get(f"pypi/{package.name}/{package.version}/json")
...@@ -239,12 +234,20 @@ class PyPiRepository(HTTPRepository): ...@@ -239,12 +234,20 @@ class PyPiRepository(HTTPRepository):
return data.asdict() return data.asdict()
def _get(self, endpoint: str) -> dict[str, Any] | None: def get_json_page(self, name: NormalizedName) -> SimpleJsonPage:
source = self._base_url + f"simple/{name}/"
info = self.get_package_info(name)
return SimpleJsonPage(source, info)
def _get(
self, endpoint: str, headers: dict[str, str] | None = None
) -> dict[str, Any] | None:
try: try:
json_response = self.session.get( json_response = self.session.get(
self._base_url + endpoint, self._base_url + endpoint,
raise_for_status=False, raise_for_status=False,
timeout=REQUESTS_TIMEOUT, timeout=REQUESTS_TIMEOUT,
headers=headers,
) )
except requests.exceptions.TooManyRedirects: except requests.exceptions.TooManyRedirects:
# Cache control redirect loop. # Cache control redirect loop.
...@@ -254,6 +257,7 @@ class PyPiRepository(HTTPRepository): ...@@ -254,6 +257,7 @@ class PyPiRepository(HTTPRepository):
self._base_url + endpoint, self._base_url + endpoint,
raise_for_status=False, raise_for_status=False,
timeout=REQUESTS_TIMEOUT, timeout=REQUESTS_TIMEOUT,
headers=headers,
) )
if json_response.status_code != 200: if json_response.status_code != 200:
......
...@@ -206,7 +206,8 @@ class Authenticator: ...@@ -206,7 +206,8 @@ class Authenticator:
def request( def request(
self, method: str, url: str, raise_for_status: bool = True, **kwargs: Any self, method: str, url: str, raise_for_status: bool = True, **kwargs: Any
) -> requests.Response: ) -> requests.Response:
request = requests.Request(method, url) headers = kwargs.get("headers")
request = requests.Request(method, url, headers=headers)
credential = self.get_credentials_for_url(url) credential = self.get_credentials_for_url(url)
if credential.username is not None or credential.password is not None: if credential.username is not None or credential.password is not None:
......
...@@ -147,7 +147,7 @@ def test_execute_executes_a_batch_of_operations( ...@@ -147,7 +147,7 @@ def test_execute_executes_a_batch_of_operations(
return_code = executor.execute( return_code = executor.execute(
[ [
Install(Package("pytest", "3.5.2")), Install(Package("pytest", "3.5.1")),
Uninstall(Package("attrs", "17.4.0")), Uninstall(Package("attrs", "17.4.0")),
Update(Package("requests", "2.18.3"), Package("requests", "2.18.4")), Update(Package("requests", "2.18.3"), Package("requests", "2.18.4")),
Uninstall(Package("clikit", "0.2.3")).skip("Not currently installed"), Uninstall(Package("clikit", "0.2.3")).skip("Not currently installed"),
...@@ -160,7 +160,7 @@ def test_execute_executes_a_batch_of_operations( ...@@ -160,7 +160,7 @@ def test_execute_executes_a_batch_of_operations(
expected = f""" expected = f"""
Package operations: 4 installs, 1 update, 1 removal Package operations: 4 installs, 1 update, 1 removal
• Installing pytest (3.5.2) • Installing pytest (3.5.1)
• Removing attrs (17.4.0) • Removing attrs (17.4.0)
• Updating requests (2.18.3 -> 2.18.4) • Updating requests (2.18.3 -> 2.18.4)
• Installing demo (0.1.0 {file_package.source_url}) • Installing demo (0.1.0 {file_package.source_url})
...@@ -182,20 +182,20 @@ Package operations: 4 installs, 1 update, 1 removal ...@@ -182,20 +182,20 @@ Package operations: 4 installs, 1 update, 1 removal
"operations, has_warning", "operations, has_warning",
[ [
( (
[Install(Package("black", "21.11b0")), Install(Package("pytest", "3.5.2"))], [Install(Package("black", "21.11b0")), Install(Package("pytest", "3.5.1"))],
True, True,
), ),
( (
[ [
Uninstall(Package("black", "21.11b0")), Uninstall(Package("black", "21.11b0")),
Uninstall(Package("pytest", "3.5.2")), Uninstall(Package("pytest", "3.5.1")),
], ],
False, False,
), ),
( (
[ [
Update(Package("black", "19.10b0"), Package("black", "21.11b0")), Update(Package("black", "19.10b0"), Package("black", "21.11b0")),
Update(Package("pytest", "3.5.1"), Package("pytest", "3.5.2")), Update(Package("pytest", "3.5.0"), Package("pytest", "3.5.1")),
], ],
True, True,
), ),
...@@ -299,7 +299,7 @@ def test_execute_works_with_ansi_output( ...@@ -299,7 +299,7 @@ def test_execute_works_with_ansi_output(
mocker.patch.object(env, "_run", return_value=install_output) mocker.patch.object(env, "_run", return_value=install_output)
return_code = executor.execute( return_code = executor.execute(
[ [
Install(Package("pytest", "3.5.2")), Install(Package("pytest", "3.5.1")),
] ]
) )
env._run.assert_called_once() env._run.assert_called_once()
...@@ -307,10 +307,10 @@ def test_execute_works_with_ansi_output( ...@@ -307,10 +307,10 @@ def test_execute_works_with_ansi_output(
# fmt: off # fmt: off
expected = [ expected = [
"\x1b[39;1mPackage operations\x1b[39;22m: \x1b[34m1\x1b[39m install, \x1b[34m0\x1b[39m updates, \x1b[34m0\x1b[39m removals", # noqa: E501 "\x1b[39;1mPackage operations\x1b[39;22m: \x1b[34m1\x1b[39m install, \x1b[34m0\x1b[39m updates, \x1b[34m0\x1b[39m removals", # noqa: E501
"\x1b[34;1m•\x1b[39;22m \x1b[39mInstalling \x1b[39m\x1b[36mpytest\x1b[39m\x1b[39m (\x1b[39m\x1b[39;1m3.5.2\x1b[39;22m\x1b[39m)\x1b[39m: \x1b[34mPending...\x1b[39m", # noqa: E501 "\x1b[34;1m•\x1b[39;22m \x1b[39mInstalling \x1b[39m\x1b[36mpytest\x1b[39m\x1b[39m (\x1b[39m\x1b[39;1m3.5.1\x1b[39;22m\x1b[39m)\x1b[39m: \x1b[34mPending...\x1b[39m", # noqa: E501
"\x1b[34;1m•\x1b[39;22m \x1b[39mInstalling \x1b[39m\x1b[36mpytest\x1b[39m\x1b[39m (\x1b[39m\x1b[39;1m3.5.2\x1b[39;22m\x1b[39m)\x1b[39m: \x1b[34mDownloading...\x1b[39m", # noqa: E501 "\x1b[34;1m•\x1b[39;22m \x1b[39mInstalling \x1b[39m\x1b[36mpytest\x1b[39m\x1b[39m (\x1b[39m\x1b[39;1m3.5.1\x1b[39;22m\x1b[39m)\x1b[39m: \x1b[34mDownloading...\x1b[39m", # noqa: E501
"\x1b[34;1m•\x1b[39;22m \x1b[39mInstalling \x1b[39m\x1b[36mpytest\x1b[39m\x1b[39m (\x1b[39m\x1b[39;1m3.5.2\x1b[39;22m\x1b[39m)\x1b[39m: \x1b[34mInstalling...\x1b[39m", # noqa: E501 "\x1b[34;1m•\x1b[39;22m \x1b[39mInstalling \x1b[39m\x1b[36mpytest\x1b[39m\x1b[39m (\x1b[39m\x1b[39;1m3.5.1\x1b[39;22m\x1b[39m)\x1b[39m: \x1b[34mInstalling...\x1b[39m", # noqa: E501
"\x1b[32;1m•\x1b[39;22m \x1b[39mInstalling \x1b[39m\x1b[36mpytest\x1b[39m\x1b[39m (\x1b[39m\x1b[32m3.5.2\x1b[39m\x1b[39m)\x1b[39m", # finished # noqa: E501 "\x1b[32;1m•\x1b[39;22m \x1b[39mInstalling \x1b[39m\x1b[36mpytest\x1b[39m\x1b[39m (\x1b[39m\x1b[32m3.5.1\x1b[39m\x1b[39m)\x1b[39m", # finished # noqa: E501
] ]
# fmt: on # fmt: on
...@@ -341,7 +341,7 @@ def test_execute_works_with_no_ansi_output( ...@@ -341,7 +341,7 @@ def test_execute_works_with_no_ansi_output(
mocker.patch.object(env, "_run", return_value=install_output) mocker.patch.object(env, "_run", return_value=install_output)
return_code = executor.execute( return_code = executor.execute(
[ [
Install(Package("pytest", "3.5.2")), Install(Package("pytest", "3.5.1")),
] ]
) )
env._run.assert_called_once() env._run.assert_called_once()
...@@ -349,7 +349,7 @@ def test_execute_works_with_no_ansi_output( ...@@ -349,7 +349,7 @@ def test_execute_works_with_no_ansi_output(
expected = """ expected = """
Package operations: 1 install, 0 updates, 0 removals Package operations: 1 install, 0 updates, 0 removals
• Installing pytest (3.5.2) • Installing pytest (3.5.1)
""" """
expected = set(expected.splitlines()) expected = set(expected.splitlines())
output = set(io_not_decorated.fetch_output().splitlines()) output = set(io_not_decorated.fetch_output().splitlines())
......
{ {
"info": { "name": "attrs",
"author": "Hynek Schlawack", "files": [
"author_email": "hs@ox.cx",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Natural Language :: English",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 2",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
"Topic :: Software Development :: Libraries :: Python Modules"
],
"description": "",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "http://www.attrs.org/",
"keywords": "class,attribute,boilerplate",
"license": "MIT",
"maintainer": "",
"maintainer_email": "",
"name": "attrs",
"package_url": "https://pypi.org/project/attrs/",
"platform": "",
"project_url": "https://pypi.org/project/attrs/",
"release_url": "https://pypi.org/project/attrs/17.4.0/",
"requires_dist": [
"coverage; extra == 'dev'",
"hypothesis; extra == 'dev'",
"pympler; extra == 'dev'",
"pytest; extra == 'dev'",
"six; extra == 'dev'",
"zope.interface; extra == 'dev'",
"sphinx; extra == 'dev'",
"zope.interface; extra == 'dev'",
"sphinx; extra == 'docs'",
"zope.interface; extra == 'docs'",
"coverage; extra == 'tests'",
"hypothesis; extra == 'tests'",
"pympler; extra == 'tests'",
"pytest; extra == 'tests'",
"six; extra == 'tests'",
"zope.interface; extra == 'tests'"
],
"requires_python": "",
"summary": "Classes Without Boilerplate",
"version": "17.4.0"
},
"last_serial": 3451237,
"releases": {
"17.4.0": [
{
"comment_text": "",
"digests": {
"md5": "5835a573b3f0316e1602dac3fd9c1daf",
"sha256": "a17a9573a6f475c99b551c0e0a812707ddda1ec9653bed04c13841404ed6f450"
},
"downloads": -1,
"filename": "attrs-17.4.0-py2.py3-none-any.whl",
"has_sig": true,
"md5_digest": "5835a573b3f0316e1602dac3fd9c1daf",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"size": 31658,
"upload_time": "2017-12-30T08:20:05",
"url": "https://files.pythonhosted.org/packages/b5/60/4e178c1e790fd60f1229a9b3cb2f8bc2f4cc6ff2c8838054c142c70b5adc/attrs-17.4.0-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "d7a89063b2e0fd36bd82389c4d82821d",
"sha256": "1c7960ccfd6a005cd9f7ba884e6316b5e430a3f1a6c37c5f87d8b43f83b54ec9"
},
"downloads": -1,
"filename": "attrs-17.4.0.tar.gz",
"has_sig": true,
"md5_digest": "d7a89063b2e0fd36bd82389c4d82821d",
"packagetype": "sdist",
"python_version": "source",
"size": 97071,
"upload_time": "2017-12-30T08:20:08",
"url": "https://files.pythonhosted.org/packages/8b/0b/a06cfcb69d0cb004fde8bc6f0fd192d96d565d1b8aa2829f0f20adb796e5/attrs-17.4.0.tar.gz"
}
]
},
"urls": [
{ {
"comment_text": "", "filename": "attrs-17.4.0-py2.py3-none-any.whl",
"digests": { "url": "https://files.pythonhosted.org/packages/b5/60/4e178c1e790fd60f1229a9b3cb2f8bc2f4cc6ff2c8838054c142c70b5adc/attrs-17.4.0-py2.py3-none-any.whl",
"hashes": {
"md5": "5835a573b3f0316e1602dac3fd9c1daf", "md5": "5835a573b3f0316e1602dac3fd9c1daf",
"sha256": "a17a9573a6f475c99b551c0e0a812707ddda1ec9653bed04c13841404ed6f450" "sha256": "a17a9573a6f475c99b551c0e0a812707ddda1ec9653bed04c13841404ed6f450"
}, }
"downloads": -1,
"filename": "attrs-17.4.0-py2.py3-none-any.whl",
"has_sig": true,
"md5_digest": "5835a573b3f0316e1602dac3fd9c1daf",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"size": 31658,
"upload_time": "2017-12-30T08:20:05",
"url": "https://files.pythonhosted.org/packages/b5/60/4e178c1e790fd60f1229a9b3cb2f8bc2f4cc6ff2c8838054c142c70b5adc/attrs-17.4.0-py2.py3-none-any.whl"
}, },
{ {
"comment_text": "", "filename": "attrs-17.4.0.tar.gz",
"digests": { "url": "https://files.pythonhosted.org/packages/8b/0b/a06cfcb69d0cb004fde8bc6f0fd192d96d565d1b8aa2829f0f20adb796e5/attrs-17.4.0.tar.gz",
"hashes": {
"md5": "d7a89063b2e0fd36bd82389c4d82821d", "md5": "d7a89063b2e0fd36bd82389c4d82821d",
"sha256": "1c7960ccfd6a005cd9f7ba884e6316b5e430a3f1a6c37c5f87d8b43f83b54ec9" "sha256": "1c7960ccfd6a005cd9f7ba884e6316b5e430a3f1a6c37c5f87d8b43f83b54ec9"
}, }
"downloads": -1,
"filename": "attrs-17.4.0.tar.gz",
"has_sig": true,
"md5_digest": "d7a89063b2e0fd36bd82389c4d82821d",
"packagetype": "sdist",
"python_version": "source",
"size": 97071,
"upload_time": "2017-12-30T08:20:08",
"url": "https://files.pythonhosted.org/packages/8b/0b/a06cfcb69d0cb004fde8bc6f0fd192d96d565d1b8aa2829f0f20adb796e5/attrs-17.4.0.tar.gz"
} }
] ],
"meta": {
"api-version": "1.0",
"_last-serial": 3451237
}
} }
{ {
"info": { "files": [
"author": "Łukasz Langa",
"author_email": "lukasz@langa.pl",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 4 - Beta",
"Environment :: Console",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3 :: Only",
"Topic :: Software Development :: Libraries :: Python Modules",
"Topic :: Software Development :: Quality Assurance"
],
"description": "",
"description_content_type": "text/markdown",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/psf/black",
"keywords": "automation formatter yapf autopep8 pyfmt gofmt rustfmt",
"license": "MIT",
"maintainer": "",
"maintainer_email": "",
"name": "black",
"package_url": "https://pypi.org/project/black/",
"platform": "",
"project_url": "https://pypi.org/project/black/",
"project_urls": {
"Homepage": "https://github.com/psf/black"
},
"release_url": "https://pypi.org/project/black/19.10b0/",
"requires_dist": [
"click (>=6.5)",
"attrs (>=18.1.0)",
"appdirs",
"toml (>=0.9.4)",
"typed-ast (>=1.4.0)",
"regex",
"pathspec (<1,>=0.6)",
"aiohttp (>=3.3.2) ; extra == 'd'",
"aiohttp-cors ; extra == 'd'"
],
"requires_python": ">=3.6",
"summary": "The uncompromising code formatter.",
"version": "19.10b0",
"yanked": false,
"yanked_reason": null
},
"last_serial": 6044498,
"releases": {
"19.10b0": [
{
"comment_text": "",
"digests": {
"md5": "067efd0498107b5fb2299fbfb000b0b6",
"sha256": "1b30e59be925fafc1ee4565e5e08abef6b03fe455102883820fe5ee2e4734e0b"
},
"downloads": -1,
"filename": "black-19.10b0-py36-none-any.whl",
"has_sig": true,
"md5_digest": "067efd0498107b5fb2299fbfb000b0b6",
"packagetype": "bdist_wheel",
"python_version": "py36",
"requires_python": ">=3.6",
"size": 97525,
"upload_time": "2019-10-28T23:53:54",
"upload_time_iso_8601": "2019-10-28T23:53:54.000711Z",
"url": "https://files.pythonhosted.org/packages/fd/bb/ad34bbc93d1bea3de086d7c59e528d4a503ac8fe318bd1fa48605584c3d2/black-19.10b0-py36-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "496632a95b73b8f5c5081d795a4e6af1",
"sha256": "c2edb73a08e9e0e6f65a0e6af18b059b8b1cdd5bef997d7a0b181df93dc81539"
},
"downloads": -1,
"filename": "black-19.10b0.tar.gz",
"has_sig": true,
"md5_digest": "496632a95b73b8f5c5081d795a4e6af1",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 1019740,
"upload_time": "2019-10-28T23:54:05",
"upload_time_iso_8601": "2019-10-28T23:54:05.455213Z",
"url": "https://files.pythonhosted.org/packages/b0/dc/ecd83b973fb7b82c34d828aad621a6e5865764d52375b8ac1d7a45e23c8d/black-19.10b0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"21.11b0": [
{
"comment_text": "",
"digests": {
"md5": "945da11b34c11738560fc6698cffa425",
"sha256": "0b1f66cbfadcd332ceeaeecf6373d9991d451868d2e2219ad0ac1213fb701117"
},
"downloads": -1,
"filename": "black-21.11b0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "945da11b34c11738560fc6698cffa425",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6.2",
"size": 155131,
"upload_time": "2021-11-17T02:32:14",
"upload_time_iso_8601": "2021-11-17T02:32:14.551680Z",
"url": "https://files.pythonhosted.org/packages/3d/ad/1cf514e7f9ee4c3d8df7c839d7977f7605ad76557f3fca741ec67f76dba6/black-21.11b0-py3-none-any.whl",
"yanked": true,
"yanked_reason": "Broken regex dependency. Use 21.11b1 instead."
},
{
"comment_text": "",
"digests": {
"md5": "6040b4e4c6ccc4e7eb81bb2634ef299a",
"sha256": "83f3852301c8dcb229e9c444dd79f573c8d31c7c2dad9bbaaa94c808630e32aa"
},
"downloads": -1,
"filename": "black-21.11b0.tar.gz",
"has_sig": false,
"md5_digest": "6040b4e4c6ccc4e7eb81bb2634ef299a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6.2",
"size": 593164,
"upload_time": "2021-11-17T02:32:16",
"upload_time_iso_8601": "2021-11-17T02:32:16.396821Z",
"url": "https://files.pythonhosted.org/packages/2f/db/03e8cef689ab0ff857576ee2ee288d1ff2110ef7f3a77cac62e61f18acaf/black-21.11b0.tar.gz",
"yanked": true,
"yanked_reason": "Broken regex dependency. Use 21.11b1 instead."
}
]
},
"urls": [
{ {
"comment_text": "", "filename": "black-19.10b0-py36-none-any.whl",
"digests": { "hashes": {
"md5": "067efd0498107b5fb2299fbfb000b0b6",
"sha256": "1b30e59be925fafc1ee4565e5e08abef6b03fe455102883820fe5ee2e4734e0b" "sha256": "1b30e59be925fafc1ee4565e5e08abef6b03fe455102883820fe5ee2e4734e0b"
}, },
"downloads": -1, "requires-python": ">=3.6",
"filename": "black-19.10b0-py36-none-any.whl",
"has_sig": true,
"md5_digest": "067efd0498107b5fb2299fbfb000b0b6",
"packagetype": "bdist_wheel",
"python_version": "py36",
"requires_python": ">=3.6",
"size": 97525,
"upload_time": "2019-10-28T23:53:54",
"upload_time_iso_8601": "2019-10-28T23:53:54.000711Z",
"url": "https://files.pythonhosted.org/packages/fd/bb/ad34bbc93d1bea3de086d7c59e528d4a503ac8fe318bd1fa48605584c3d2/black-19.10b0-py36-none-any.whl", "url": "https://files.pythonhosted.org/packages/fd/bb/ad34bbc93d1bea3de086d7c59e528d4a503ac8fe318bd1fa48605584c3d2/black-19.10b0-py36-none-any.whl",
"yanked": false, "yanked": false
"yanked_reason": null
}, },
{ {
"comment_text": "", "filename": "black-19.10b0.tar.gz",
"digests": { "hashes": {
"md5": "496632a95b73b8f5c5081d795a4e6af1",
"sha256": "c2edb73a08e9e0e6f65a0e6af18b059b8b1cdd5bef997d7a0b181df93dc81539" "sha256": "c2edb73a08e9e0e6f65a0e6af18b059b8b1cdd5bef997d7a0b181df93dc81539"
}, },
"downloads": -1, "requires-python": ">=3.6",
"filename": "black-19.10b0.tar.gz",
"has_sig": true,
"md5_digest": "496632a95b73b8f5c5081d795a4e6af1",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 1019740,
"upload_time": "2019-10-28T23:54:05",
"upload_time_iso_8601": "2019-10-28T23:54:05.455213Z",
"url": "https://files.pythonhosted.org/packages/b0/dc/ecd83b973fb7b82c34d828aad621a6e5865764d52375b8ac1d7a45e23c8d/black-19.10b0.tar.gz", "url": "https://files.pythonhosted.org/packages/b0/dc/ecd83b973fb7b82c34d828aad621a6e5865764d52375b8ac1d7a45e23c8d/black-19.10b0.tar.gz",
"yanked": false, "yanked": false
"yanked_reason": null },
{
"filename": "black-21.11b0-py3-none-any.whl",
"hashes": {
"sha256": "0b1f66cbfadcd332ceeaeecf6373d9991d451868d2e2219ad0ac1213fb701117"
},
"requires-python": ">=3.6.2",
"url": "https://files.pythonhosted.org/packages/3d/ad/1cf514e7f9ee4c3d8df7c839d7977f7605ad76557f3fca741ec67f76dba6/black-21.11b0-py3-none-any.whl",
"yanked": "Broken regex dependency. Use 21.11b1 instead."
},
{
"filename": "black-21.11b0.tar.gz",
"hashes": {
"sha256": "83f3852301c8dcb229e9c444dd79f573c8d31c7c2dad9bbaaa94c808630e32aa"
},
"requires-python": ">=3.6.2",
"url": "https://files.pythonhosted.org/packages/2f/db/03e8cef689ab0ff857576ee2ee288d1ff2110ef7f3a77cac62e61f18acaf/black-21.11b0.tar.gz",
"yanked": "Broken regex dependency. Use 21.11b1 instead."
} }
] ],
"meta": {
"_last-serial": 14955312,
"api-version": "1.0"
},
"name": "black"
} }
{ {
"info": { "name": "CacheControl",
"author": "Eric Larson", "files": [
"author_email": "eric@ionrock.org", {
"bugtrack_url": null, "filename": "CacheControl-0.12.0.tar.gz",
"classifiers": [ "url": "https://files.pythonhosted.org/packages/41/ae/b9c375b001f13d73c0d8eba2264f6de955769f7cef9140d7fc192814255e/CacheControl-0.12.0.tar.gz",
"Development Status :: 4 - Beta", "hashes": {
"Environment :: Web Environment", "md5": "807c457b3b7df9d1f23b1aad7f9c9a22",
"License :: OSI Approved :: Apache Software License", "sha256": "ce479e88e697dc088297a5781daa2e812aa0dc888dc439602a308af6f4ff09e8"
"Operating System :: OS Independent",
"Programming Language :: Python :: 2",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Topic :: Internet :: WWW/HTTP"
],
"description": "",
"description_content_type": "",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/ionrock/cachecontrol",
"keywords": "requests http caching web",
"license": "",
"maintainer": "",
"maintainer_email": "",
"name": "CacheControl",
"package_url": "https://pypi.org/project/CacheControl/",
"platform": "",
"project_url": "https://pypi.org/project/CacheControl/",
"project_urls": {
"Homepage": "https://github.com/ionrock/cachecontrol"
},
"release_url": "https://pypi.org/project/CacheControl/0.12.5/",
"requires_dist": null,
"requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*",
"summary": "httplib2 caching for requests",
"version": "0.12.5"
},
"last_serial": 3939938,
"releases": {
"0.12.0": [
{
"comment_text": "",
"digests": {
"md5": "807c457b3b7df9d1f23b1aad7f9c9a22",
"sha256": "ce479e88e697dc088297a5781daa2e812aa0dc888dc439602a308af6f4ff09e8"
},
"downloads": -1,
"filename": "CacheControl-0.12.0.tar.gz",
"has_sig": false,
"md5_digest": "807c457b3b7df9d1f23b1aad7f9c9a22",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 13815,
"upload_time": "2017-01-30T05:05:38",
"url": "https://files.pythonhosted.org/packages/41/ae/b9c375b001f13d73c0d8eba2264f6de955769f7cef9140d7fc192814255e/CacheControl-0.12.0.tar.gz"
}
],
"0.12.1": [
{
"comment_text": "",
"digests": {
"md5": "c6c5944d3a6f73bb752a4b4e2e1ffca5",
"sha256": "99c1506b98d53c222493e0ff65904c91aaedd7c8e235cb4f00287ddbbb597072"
},
"downloads": -1,
"filename": "CacheControl-0.12.1.tar.gz",
"has_sig": false,
"md5_digest": "c6c5944d3a6f73bb752a4b4e2e1ffca5",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 13939,
"upload_time": "2017-03-14T21:42:44",
"url": "https://files.pythonhosted.org/packages/3a/f7/075de886ad249f4ca08615ebd8bec9ce995ed6852790b6d9df38ae059e43/CacheControl-0.12.1.tar.gz"
} }
], },
"0.12.2": [ {
{ "filename": "CacheControl-0.12.1.tar.gz",
"comment_text": "", "url": "https://files.pythonhosted.org/packages/3a/f7/075de886ad249f4ca08615ebd8bec9ce995ed6852790b6d9df38ae059e43/CacheControl-0.12.1.tar.gz",
"digests": { "hashes": {
"md5": "38667f538f36c641eb0b00d0db145823", "md5": "c6c5944d3a6f73bb752a4b4e2e1ffca5",
"sha256": "d7d919830d7edc5f4b355fa678a2ea49e9ccb67966abc373ec20f93f3f471265" "sha256": "99c1506b98d53c222493e0ff65904c91aaedd7c8e235cb4f00287ddbbb597072"
},
"downloads": -1,
"filename": "CacheControl-0.12.2.tar.gz",
"has_sig": false,
"md5_digest": "38667f538f36c641eb0b00d0db145823",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 14327,
"upload_time": "2017-03-27T15:49:21",
"url": "https://files.pythonhosted.org/packages/d2/6c/221f699710a6a643bd9a4324cf22ffb9fb73a089d2bfbed5fe4694f3caaf/CacheControl-0.12.2.tar.gz"
} }
], },
"0.12.3": [ {
{ "filename": "CacheControl-0.12.2.tar.gz",
"comment_text": "", "url": "https://files.pythonhosted.org/packages/d2/6c/221f699710a6a643bd9a4324cf22ffb9fb73a089d2bfbed5fe4694f3caaf/CacheControl-0.12.2.tar.gz",
"digests": { "hashes": {
"md5": "45bf98a2e3435438dcee89e519b34195", "md5": "38667f538f36c641eb0b00d0db145823",
"sha256": "a9fc50e216c7c101f4ec4312f012dea501c2859cb256c7a68186a172ab71f632" "sha256": "d7d919830d7edc5f4b355fa678a2ea49e9ccb67966abc373ec20f93f3f471265"
},
"downloads": -1,
"filename": "CacheControl-0.12.3.tar.gz",
"has_sig": false,
"md5_digest": "45bf98a2e3435438dcee89e519b34195",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 14345,
"upload_time": "2017-05-25T13:49:06",
"url": "https://files.pythonhosted.org/packages/a3/b3/6bb6c1535a283f01fe0c4e9644784756fee2ec080e2a6097f1c59325609e/CacheControl-0.12.3.tar.gz"
} }
], },
"0.12.4": [ {
{ "filename": "CacheControl-0.12.3.tar.gz",
"comment_text": "", "url": "https://files.pythonhosted.org/packages/a3/b3/6bb6c1535a283f01fe0c4e9644784756fee2ec080e2a6097f1c59325609e/CacheControl-0.12.3.tar.gz",
"digests": { "hashes": {
"md5": "464675fc575b3a0b841598cb916be516", "md5": "45bf98a2e3435438dcee89e519b34195",
"sha256": "a7d21ba4e3633d95ac9fed5be205ee6d1da36bdc4b8914eb7a57ff50b7e5628c" "sha256": "a9fc50e216c7c101f4ec4312f012dea501c2859cb256c7a68186a172ab71f632"
},
"downloads": -1,
"filename": "CacheControl-0.12.4.tar.gz",
"has_sig": false,
"md5_digest": "464675fc575b3a0b841598cb916be516",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 14471,
"upload_time": "2018-01-27T06:24:40",
"url": "https://files.pythonhosted.org/packages/98/f5/76619a63f0e4a1d2f5a1792ebc233a395c648c63d3461dc0331479ef120a/CacheControl-0.12.4.tar.gz"
} }
], },
"0.12.5": [ {
{ "filename": "CacheControl-0.12.4.tar.gz",
"comment_text": "", "url": "https://files.pythonhosted.org/packages/98/f5/76619a63f0e4a1d2f5a1792ebc233a395c648c63d3461dc0331479ef120a/CacheControl-0.12.4.tar.gz",
"digests": { "hashes": {
"md5": "f1baef403e8dd68c5a203e2eb23a0f2e", "md5": "464675fc575b3a0b841598cb916be516",
"sha256": "cef77effdf51b43178f6a2d3b787e3734f98ade253fa3187f3bb7315aaa42ff7" "sha256": "a7d21ba4e3633d95ac9fed5be205ee6d1da36bdc4b8914eb7a57ff50b7e5628c"
},
"downloads": -1,
"filename": "CacheControl-0.12.5.tar.gz",
"has_sig": false,
"md5_digest": "f1baef403e8dd68c5a203e2eb23a0f2e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*",
"size": 14383,
"upload_time": "2018-06-07T14:53:13",
"url": "https://files.pythonhosted.org/packages/5e/f0/2c193ed1f17c97ae539da7e1c2d48b80d8cccb1917163b26a91ca4355aa6/CacheControl-0.12.5.tar.gz"
} }
] },
},
"urls": [
{ {
"comment_text": "", "filename": "CacheControl-0.12.5.tar.gz",
"digests": { "url": "https://files.pythonhosted.org/packages/5e/f0/2c193ed1f17c97ae539da7e1c2d48b80d8cccb1917163b26a91ca4355aa6/CacheControl-0.12.5.tar.gz",
"hashes": {
"md5": "f1baef403e8dd68c5a203e2eb23a0f2e", "md5": "f1baef403e8dd68c5a203e2eb23a0f2e",
"sha256": "cef77effdf51b43178f6a2d3b787e3734f98ade253fa3187f3bb7315aaa42ff7" "sha256": "cef77effdf51b43178f6a2d3b787e3734f98ade253fa3187f3bb7315aaa42ff7"
}, },
"downloads": -1, "requires-python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
"filename": "CacheControl-0.12.5.tar.gz",
"has_sig": false,
"md5_digest": "f1baef403e8dd68c5a203e2eb23a0f2e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*",
"size": 14383,
"upload_time": "2018-06-07T14:53:13",
"url": "https://files.pythonhosted.org/packages/5e/f0/2c193ed1f17c97ae539da7e1c2d48b80d8cccb1917163b26a91ca4355aa6/CacheControl-0.12.5.tar.gz"
} }
] ],
"meta": {
"api-version": "1.0",
"_last-serial": 3939938
}
} }
{ {
"info": { "name": "clikit",
"author": "Sébastien Eustace", "files": [
"author_email": "sebastien@eustace.io",
"bugtrack_url": null,
"classifiers": [
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 2",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7"
],
"description": "",
"description_content_type": "text/markdown",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/sdispater/clikit",
"keywords": "packaging,dependency,poetry",
"license": "MIT",
"maintainer": "Sébastien Eustace",
"maintainer_email": "sebastien@eustace.io",
"name": "clikit",
"package_url": "https://pypi.org/project/clikit/",
"platform": "",
"project_url": "https://pypi.org/project/clikit/",
"project_urls": {
"Homepage": "https://github.com/sdispater/clikit",
"Repository": "https://github.com/sdispater/clikit"
},
"release_url": "https://pypi.org/project/clikit/0.2.4/",
"requires_dist": [
"pastel (>=0.1.0,<0.2.0)",
"pylev (>=1.3,<2.0)"
],
"requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*",
"summary": "CliKit is a group of utilities to build beautiful and testable command line interfaces.",
"version": "0.2.4"
},
"last_serial": 5256718,
"releases": {
"0.2.4": [
{
"comment_text": "",
"digests": {
"md5": "280f18c82d0810c9b5ca11380529c04c",
"sha256": "a7597999555aeb2ce9946f07187f690ab6864213f337e51250178c4bd19bd810"
},
"downloads": -1,
"filename": "clikit-0.2.4-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "280f18c82d0810c9b5ca11380529c04c",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*",
"size": 85786,
"upload_time": "2019-05-11T17:09:23",
"url": "https://files.pythonhosted.org/packages/7b/0d/bb4c8a2d0edca8c300373ed736fb4680cf73be5be2ff84544dee5f979c14/clikit-0.2.4-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "2543daad83b072e960ded5f68074a443",
"sha256": "d6807cf4a41e6b981b056075c0aefca2db1dabc597ed18fa4d92b8b2e2678835"
},
"downloads": -1,
"filename": "clikit-0.2.4.tar.gz",
"has_sig": false,
"md5_digest": "2543daad83b072e960ded5f68074a443",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*",
"size": 50980,
"upload_time": "2019-05-11T17:09:25",
"url": "https://files.pythonhosted.org/packages/c5/33/14fad4c82f256b0ef60dd25d4b6d8145b463da5274fd9cd842f06af318ed/clikit-0.2.4.tar.gz"
}
]
},
"urls": [
{ {
"comment_text": "", "filename": "clikit-0.2.4-py2.py3-none-any.whl",
"digests": { "url": "https://files.pythonhosted.org/packages/7b/0d/bb4c8a2d0edca8c300373ed736fb4680cf73be5be2ff84544dee5f979c14/clikit-0.2.4-py2.py3-none-any.whl",
"hashes": {
"md5": "280f18c82d0810c9b5ca11380529c04c", "md5": "280f18c82d0810c9b5ca11380529c04c",
"sha256": "a7597999555aeb2ce9946f07187f690ab6864213f337e51250178c4bd19bd810" "sha256": "a7597999555aeb2ce9946f07187f690ab6864213f337e51250178c4bd19bd810"
}, },
"downloads": -1, "requires-python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
"filename": "clikit-0.2.4-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "280f18c82d0810c9b5ca11380529c04c",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*",
"size": 85786,
"upload_time": "2019-05-11T17:09:23",
"url": "https://files.pythonhosted.org/packages/7b/0d/bb4c8a2d0edca8c300373ed736fb4680cf73be5be2ff84544dee5f979c14/clikit-0.2.4-py2.py3-none-any.whl"
}, },
{ {
"comment_text": "", "filename": "clikit-0.2.4.tar.gz",
"digests": { "url": "https://files.pythonhosted.org/packages/c5/33/14fad4c82f256b0ef60dd25d4b6d8145b463da5274fd9cd842f06af318ed/clikit-0.2.4.tar.gz",
"hashes": {
"md5": "2543daad83b072e960ded5f68074a443", "md5": "2543daad83b072e960ded5f68074a443",
"sha256": "d6807cf4a41e6b981b056075c0aefca2db1dabc597ed18fa4d92b8b2e2678835" "sha256": "d6807cf4a41e6b981b056075c0aefca2db1dabc597ed18fa4d92b8b2e2678835"
}, },
"downloads": -1, "requires-python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
"filename": "clikit-0.2.4.tar.gz",
"has_sig": false,
"md5_digest": "2543daad83b072e960ded5f68074a443",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*",
"size": 50980,
"upload_time": "2019-05-11T17:09:25",
"url": "https://files.pythonhosted.org/packages/c5/33/14fad4c82f256b0ef60dd25d4b6d8145b463da5274fd9cd842f06af318ed/clikit-0.2.4.tar.gz"
} }
] ],
"meta": {
"api-version": "1.0",
"_last-serial": 5256718
}
} }
{
"info": {
"author": "Sébastien Eustace",
"author_email": "sebastien@eustace.io",
"bugtrack_url": null,
"classifiers": [
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 2",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7"
],
"description": "# CliKit\n\nCliKit is a group of utilities to build beautiful and testable command line interfaces.\n\nThis is at the core of [Cleo](https://github.com/sdispater/cleo).\n",
"description_content_type": "text/markdown",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/sdispater/clikit",
"keywords": "packaging,dependency,poetry",
"license": "MIT",
"maintainer": "Sébastien Eustace",
"maintainer_email": "sebastien@eustace.io",
"name": "clikit",
"package_url": "https://pypi.org/project/clikit/",
"platform": "",
"project_url": "https://pypi.org/project/clikit/",
"project_urls": {
"Homepage": "https://github.com/sdispater/clikit",
"Repository": "https://github.com/sdispater/clikit"
},
"release_url": "https://pypi.org/project/clikit/0.2.4/",
"requires_dist": [
"enum34 (>=1.1,<2.0); python_version >= \"2.7\" and python_version < \"2.8\"",
"typing (>=3.6,<4.0); python_version >= \"2.7\" and python_version < \"2.8\" or python_version >= \"3.4\" and python_version < \"3.5\"",
"pylev (>=1.3,<2.0)",
"pastel (>=0.1.0,<0.2.0)"
],
"requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*",
"summary": "CliKit is a group of utilities to build beautiful and testable command line interfaces.",
"version": "0.2.4",
"yanked": false,
"yanked_reason": null
},
"last_serial": 7436676,
"urls": [
{
"comment_text": "",
"digests": {
"md5": "280f18c82d0810c9b5ca11380529c04c",
"sha256": "a7597999555aeb2ce9946f07187f690ab6864213f337e51250178c4bd19bd810"
},
"downloads": -1,
"filename": "clikit-0.2.4-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "280f18c82d0810c9b5ca11380529c04c",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*",
"size": 85786,
"upload_time": "2019-05-11T17:09:23",
"upload_time_iso_8601": "2019-05-11T17:09:23.516387Z",
"url": "https://files.pythonhosted.org/packages/7b/0d/bb4c8a2d0edca8c300373ed736fb4680cf73be5be2ff84544dee5f979c14/clikit-0.2.4-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "2543daad83b072e960ded5f68074a443",
"sha256": "d6807cf4a41e6b981b056075c0aefca2db1dabc597ed18fa4d92b8b2e2678835"
},
"downloads": -1,
"filename": "clikit-0.2.4.tar.gz",
"has_sig": false,
"md5_digest": "2543daad83b072e960ded5f68074a443",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*",
"size": 50980,
"upload_time": "2019-05-11T17:09:25",
"upload_time_iso_8601": "2019-05-11T17:09:25.865051Z",
"url": "https://files.pythonhosted.org/packages/c5/33/14fad4c82f256b0ef60dd25d4b6d8145b463da5274fd9cd842f06af318ed/clikit-0.2.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"vulnerabilities": []
}
{ {
"info": { "name": "colorama",
"author": "Arnon Yaari", "files": [
"author_email": "tartley@tartley.com",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 5 - Production/Stable",
"Environment :: Console",
"Intended Audience :: Developers",
"License :: OSI Approved :: BSD License",
"Operating System :: OS Independent",
"Programming Language :: Python :: 2",
"Programming Language :: Python :: 2.5",
"Programming Language :: Python :: 2.6",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.1",
"Programming Language :: Python :: 3.2",
"Programming Language :: Python :: 3.3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Topic :: Terminals"
],
"description": "",
"docs_url": null,
"download_url": "UNKNOWN",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/tartley/colorama",
"keywords": "color colour terminal text ansi windows crossplatform xplatform",
"license": "BSD",
"maintainer": null,
"maintainer_email": null,
"name": "colorama",
"package_url": "https://pypi.org/project/colorama/",
"platform": "UNKNOWN",
"project_url": "https://pypi.org/project/colorama/",
"release_url": "https://pypi.org/project/colorama/0.3.9/",
"requires_dist": null,
"requires_python": null,
"summary": "Cross-platform colored terminal text.",
"version": "0.3.9"
},
"last_serial": 2833818,
"releases": {
"0.3.9": [
{
"comment_text": "",
"digests": {
"md5": "cc0c01c7b3b34d0354d813e9ab26aca3",
"sha256": "463f8483208e921368c9f306094eb6f725c6ca42b0f97e313cb5d5512459feda"
},
"downloads": -1,
"filename": "colorama-0.3.9-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "cc0c01c7b3b34d0354d813e9ab26aca3",
"packagetype": "bdist_wheel",
"python_version": "2.7",
"size": 20181,
"upload_time": "2017-04-27T07:12:36",
"url": "https://files.pythonhosted.org/packages/db/c8/7dcf9dbcb22429512708fe3a547f8b6101c0d02137acbd892505aee57adf/colorama-0.3.9-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "3a0e415259690f4dd7455c2683ee5850",
"sha256": "48eb22f4f8461b1df5734a074b57042430fb06e1d61bd1e11b078c0fe6d7a1f1"
},
"downloads": -1,
"filename": "colorama-0.3.9.tar.gz",
"has_sig": false,
"md5_digest": "3a0e415259690f4dd7455c2683ee5850",
"packagetype": "sdist",
"python_version": "source",
"size": 25053,
"upload_time": "2017-04-27T07:12:12",
"url": "https://files.pythonhosted.org/packages/e6/76/257b53926889e2835355d74fec73d82662100135293e17d382e2b74d1669/colorama-0.3.9.tar.gz"
}
]
},
"urls": [
{ {
"comment_text": "", "filename": "colorama-0.3.9-py2.py3-none-any.whl",
"digests": { "url": "https://files.pythonhosted.org/packages/db/c8/7dcf9dbcb22429512708fe3a547f8b6101c0d02137acbd892505aee57adf/colorama-0.3.9-py2.py3-none-any.whl",
"hashes": {
"md5": "cc0c01c7b3b34d0354d813e9ab26aca3", "md5": "cc0c01c7b3b34d0354d813e9ab26aca3",
"sha256": "463f8483208e921368c9f306094eb6f725c6ca42b0f97e313cb5d5512459feda" "sha256": "463f8483208e921368c9f306094eb6f725c6ca42b0f97e313cb5d5512459feda"
}, }
"downloads": -1,
"filename": "colorama-0.3.9-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "cc0c01c7b3b34d0354d813e9ab26aca3",
"packagetype": "bdist_wheel",
"python_version": "2.7",
"size": 20181,
"upload_time": "2017-04-27T07:12:36",
"url": "https://files.pythonhosted.org/packages/db/c8/7dcf9dbcb22429512708fe3a547f8b6101c0d02137acbd892505aee57adf/colorama-0.3.9-py2.py3-none-any.whl"
}, },
{ {
"comment_text": "", "filename": "colorama-0.3.9.tar.gz",
"digests": { "url": "https://files.pythonhosted.org/packages/e6/76/257b53926889e2835355d74fec73d82662100135293e17d382e2b74d1669/colorama-0.3.9.tar.gz",
"hashes": {
"md5": "3a0e415259690f4dd7455c2683ee5850", "md5": "3a0e415259690f4dd7455c2683ee5850",
"sha256": "48eb22f4f8461b1df5734a074b57042430fb06e1d61bd1e11b078c0fe6d7a1f1" "sha256": "48eb22f4f8461b1df5734a074b57042430fb06e1d61bd1e11b078c0fe6d7a1f1"
}, }
"downloads": -1,
"filename": "colorama-0.3.9.tar.gz",
"has_sig": false,
"md5_digest": "3a0e415259690f4dd7455c2683ee5850",
"packagetype": "sdist",
"python_version": "source",
"size": 25053,
"upload_time": "2017-04-27T07:12:12",
"url": "https://files.pythonhosted.org/packages/e6/76/257b53926889e2835355d74fec73d82662100135293e17d382e2b74d1669/colorama-0.3.9.tar.gz"
} }
] ],
"meta": {
"api-version": "1.0",
"_last-serial": 2833818
}
} }
{ {
"info": { "name": "funcsigs",
"author": "Testing Cabal", "files": [
"author_email": "testing-in-python@lists.idyll.org",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"License :: OSI Approved :: Apache Software License",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 2",
"Programming Language :: Python :: 2.6",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
"Topic :: Software Development :: Libraries :: Python Modules"
],
"description": "",
"docs_url": null,
"download_url": "UNKNOWN",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "http://funcsigs.readthedocs.org",
"keywords": null,
"license": "ASL",
"maintainer": null,
"maintainer_email": null,
"name": "funcsigs",
"package_url": "https://pypi.org/project/funcsigs/",
"platform": "UNKNOWN",
"project_url": "https://pypi.org/project/funcsigs/",
"release_url": "https://pypi.org/project/funcsigs/1.0.2/",
"requires_dist": null,
"requires_python": null,
"summary": "Python function signatures from PEP362 for Python 2.6, 2.7 and 3.2+",
"version": "1.0.2"
},
"last_serial": 2083703,
"releases": {
"1.0.2": [
{
"comment_text": "",
"digests": {
"md5": "701d58358171f34b6d1197de2923a35a",
"sha256": "330cc27ccbf7f1e992e69fef78261dc7c6569012cf397db8d3de0234e6c937ca"
},
"downloads": -1,
"filename": "funcsigs-1.0.2-py2.py3-none-any.whl",
"has_sig": true,
"md5_digest": "701d58358171f34b6d1197de2923a35a",
"packagetype": "bdist_wheel",
"python_version": "2.7",
"size": 17697,
"upload_time": "2016-04-25T22:22:05",
"url": "https://files.pythonhosted.org/packages/69/cb/f5be453359271714c01b9bd06126eaf2e368f1fddfff30818754b5ac2328/funcsigs-1.0.2-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "7e583285b1fb8a76305d6d68f4ccc14e",
"sha256": "a7bb0f2cf3a3fd1ab2732cb49eba4252c2af4240442415b4abce3b87022a8f50"
},
"downloads": -1,
"filename": "funcsigs-1.0.2.tar.gz",
"has_sig": true,
"md5_digest": "7e583285b1fb8a76305d6d68f4ccc14e",
"packagetype": "sdist",
"python_version": "source",
"size": 27947,
"upload_time": "2016-04-25T22:22:33",
"url": "https://files.pythonhosted.org/packages/94/4a/db842e7a0545de1cdb0439bb80e6e42dfe82aaeaadd4072f2263a4fbed23/funcsigs-1.0.2.tar.gz"
}
]
},
"urls": [
{ {
"comment_text": "", "filename": "funcsigs-1.0.2-py2.py3-none-any.whl",
"digests": { "url": "https://files.pythonhosted.org/packages/69/cb/f5be453359271714c01b9bd06126eaf2e368f1fddfff30818754b5ac2328/funcsigs-1.0.2-py2.py3-none-any.whl",
"hashes": {
"md5": "701d58358171f34b6d1197de2923a35a", "md5": "701d58358171f34b6d1197de2923a35a",
"sha256": "330cc27ccbf7f1e992e69fef78261dc7c6569012cf397db8d3de0234e6c937ca" "sha256": "330cc27ccbf7f1e992e69fef78261dc7c6569012cf397db8d3de0234e6c937ca"
}, }
"downloads": -1,
"filename": "funcsigs-1.0.2-py2.py3-none-any.whl",
"has_sig": true,
"md5_digest": "701d58358171f34b6d1197de2923a35a",
"packagetype": "bdist_wheel",
"python_version": "2.7",
"size": 17697,
"upload_time": "2016-04-25T22:22:05",
"url": "https://files.pythonhosted.org/packages/69/cb/f5be453359271714c01b9bd06126eaf2e368f1fddfff30818754b5ac2328/funcsigs-1.0.2-py2.py3-none-any.whl"
}, },
{ {
"comment_text": "", "filename": "funcsigs-1.0.2.tar.gz",
"digests": { "url": "https://files.pythonhosted.org/packages/94/4a/db842e7a0545de1cdb0439bb80e6e42dfe82aaeaadd4072f2263a4fbed23/funcsigs-1.0.2.tar.gz",
"hashes": {
"md5": "7e583285b1fb8a76305d6d68f4ccc14e", "md5": "7e583285b1fb8a76305d6d68f4ccc14e",
"sha256": "a7bb0f2cf3a3fd1ab2732cb49eba4252c2af4240442415b4abce3b87022a8f50" "sha256": "a7bb0f2cf3a3fd1ab2732cb49eba4252c2af4240442415b4abce3b87022a8f50"
}, }
"downloads": -1,
"filename": "funcsigs-1.0.2.tar.gz",
"has_sig": true,
"md5_digest": "7e583285b1fb8a76305d6d68f4ccc14e",
"packagetype": "sdist",
"python_version": "source",
"size": 27947,
"upload_time": "2016-04-25T22:22:33",
"url": "https://files.pythonhosted.org/packages/94/4a/db842e7a0545de1cdb0439bb80e6e42dfe82aaeaadd4072f2263a4fbed23/funcsigs-1.0.2.tar.gz"
} }
] ],
"meta": {
"api-version": "1.0",
"_last-serial": 2083703
}
} }
{
"info": {
"author": "Nicolas Jouanin",
"author_email": "nico@beerfactory.org",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Operating System :: MacOS",
"Operating System :: Microsoft :: Windows",
"Operating System :: POSIX",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Topic :: Communications",
"Topic :: Internet"
],
"description": "",
"description_content_type": "",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/beerfactory/hbmqtt",
"keywords": "",
"license": "MIT",
"maintainer": "",
"maintainer_email": "",
"name": "hbmqtt",
"package_url": "https://pypi.org/project/hbmqtt/",
"platform": "all",
"project_url": "https://pypi.org/project/hbmqtt/",
"project_urls": {
"Homepage": "https://github.com/beerfactory/hbmqtt"
},
"release_url": "https://pypi.org/project/hbmqtt/0.9.6/",
"requires_dist": null,
"requires_python": "",
"summary": "MQTT client/broker using Python 3.4 asyncio library",
"version": "0.9.6",
"yanked": false,
"yanked_reason": null
},
"last_serial": 6518769,
"urls": [
{
"comment_text": "",
"digests": {
"md5": "e7ecbb2bf3aa2b3b5b2a47dc5289039a",
"sha256": "c83ba91dc5cf9a01f83afb5380701504f69bdf9ea1c071f4dfdc1cba412fcd63"
},
"downloads": -1,
"filename": "hbmqtt-0.9.6.linux-x86_64.tar.gz",
"has_sig": false,
"md5_digest": "e7ecbb2bf3aa2b3b5b2a47dc5289039a",
"packagetype": "bdist_dumb",
"python_version": "any",
"requires_python": null,
"size": 126180,
"upload_time": "2020-01-25T14:12:53",
"upload_time_iso_8601": "2020-01-25T14:12:53.948778Z",
"url": "https://files.pythonhosted.org/packages/ee/27/912d1d8c307a72985edf0b6ad9fc1c32e22bfc42efbd0244902c43bd9307/hbmqtt-0.9.6.linux-x86_64.tar.gz",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "d7896681b8d7d27b53302350b5b3c9c2",
"sha256": "57799a933500caadb472000ba0c1e043d4768608cd8142104f89c53930d8613c"
},
"downloads": -1,
"filename": "hbmqtt-0.9.6-py3.8.egg",
"has_sig": false,
"md5_digest": "d7896681b8d7d27b53302350b5b3c9c2",
"packagetype": "bdist_egg",
"python_version": "3.8",
"requires_python": null,
"size": 186560,
"upload_time": "2020-01-25T14:13:44",
"upload_time_iso_8601": "2020-01-25T14:13:44.484402Z",
"url": "https://files.pythonhosted.org/packages/4f/4b/69014d0fd585b45bfdb77ef0e70bcf035fc8fc798c2a0610fd7cfae56cfd/hbmqtt-0.9.6-py3.8.egg",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "cc1f010f129465cc396339640fcffed9",
"sha256": "6764d3c7cf6d056238c04709c23dbb72e2b0227495efd871c2f1da10a4472cd9"
},
"downloads": -1,
"filename": "hbmqtt-0.9.6.tar.gz",
"has_sig": false,
"md5_digest": "cc1f010f129465cc396339640fcffed9",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 74727,
"upload_time": "2020-01-25T14:12:45",
"upload_time_iso_8601": "2020-01-25T14:12:45.640961Z",
"url": "https://files.pythonhosted.org/packages/b4/7c/7e1d47e740915bd628f4038083469c5919e759a638f45abab01e09e933cb/hbmqtt-0.9.6.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"vulnerabilities": []
}
{ {
"info": { "name": "isort",
"author": "Timothy Crosley", "files": [
"author_email": "timothy.crosley@gmail.com",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 6 - Mature",
"Environment :: Console",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Natural Language :: English",
"Programming Language :: Python",
"Programming Language :: Python :: 2",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
"Topic :: Software Development :: Libraries",
"Topic :: Utilities"
],
"description": "",
"description_content_type": null,
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/timothycrosley/isort",
"keywords": "Refactor",
"license": "MIT",
"maintainer": "",
"maintainer_email": "",
"name": "isort",
"package_url": "https://pypi.org/project/isort/",
"platform": "",
"project_url": "https://pypi.org/project/isort/",
"project_urls": {
"Homepage": "https://github.com/timothycrosley/isort"
},
"release_url": "https://pypi.org/project/isort/4.3.4/",
"requires_dist": null,
"requires_python": "",
"summary": "A Python utility / library to sort Python imports.",
"version": "4.3.4"
},
"last_serial": 3575149,
"releases": {
"4.3.4": [
{
"comment_text": "",
"digests": {
"md5": "f0ad7704b6dc947073398ba290c3517f",
"sha256": "ec9ef8f4a9bc6f71eec99e1806bfa2de401650d996c59330782b89a5555c1497"
},
"downloads": -1,
"filename": "isort-4.3.4-py2-none-any.whl",
"has_sig": false,
"md5_digest": "f0ad7704b6dc947073398ba290c3517f",
"packagetype": "bdist_wheel",
"python_version": "2.7",
"requires_python": null,
"size": 45393,
"upload_time": "2018-02-12T15:06:38",
"url": "https://files.pythonhosted.org/packages/41/d8/a945da414f2adc1d9e2f7d6e7445b27f2be42766879062a2e63616ad4199/isort-4.3.4-py2-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "fbaac4cd669ac21ea9e21ab1ea3180db",
"sha256": "1153601da39a25b14ddc54955dbbacbb6b2d19135386699e2ad58517953b34af"
},
"downloads": -1,
"filename": "isort-4.3.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "fbaac4cd669ac21ea9e21ab1ea3180db",
"packagetype": "bdist_wheel",
"python_version": "3.6",
"requires_python": null,
"size": 45352,
"upload_time": "2018-02-12T15:06:20",
"url": "https://files.pythonhosted.org/packages/1f/2c/22eee714d7199ae0464beda6ad5fedec8fee6a2f7ffd1e8f1840928fe318/isort-4.3.4-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "fb554e9c8f9aa76e333a03d470a5cf52",
"sha256": "b9c40e9750f3d77e6e4d441d8b0266cf555e7cdabdcff33c4fd06366ca761ef8"
},
"downloads": -1,
"filename": "isort-4.3.4.tar.gz",
"has_sig": false,
"md5_digest": "fb554e9c8f9aa76e333a03d470a5cf52",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 56070,
"upload_time": "2018-02-12T15:06:16",
"url": "https://files.pythonhosted.org/packages/b1/de/a628d16fdba0d38cafb3d7e34d4830f2c9cb3881384ce5c08c44762e1846/isort-4.3.4.tar.gz"
}
]
},
"urls": [
{ {
"comment_text": "", "filename": "isort-4.3.4-py2-none-any.whl",
"digests": { "url": "https://files.pythonhosted.org/packages/41/d8/a945da414f2adc1d9e2f7d6e7445b27f2be42766879062a2e63616ad4199/isort-4.3.4-py2-none-any.whl",
"hashes": {
"md5": "f0ad7704b6dc947073398ba290c3517f", "md5": "f0ad7704b6dc947073398ba290c3517f",
"sha256": "ec9ef8f4a9bc6f71eec99e1806bfa2de401650d996c59330782b89a5555c1497" "sha256": "ec9ef8f4a9bc6f71eec99e1806bfa2de401650d996c59330782b89a5555c1497"
}, }
"downloads": -1,
"filename": "isort-4.3.4-py2-none-any.whl",
"has_sig": false,
"md5_digest": "f0ad7704b6dc947073398ba290c3517f",
"packagetype": "bdist_wheel",
"python_version": "2.7",
"requires_python": null,
"size": 45393,
"upload_time": "2018-02-12T15:06:38",
"url": "https://files.pythonhosted.org/packages/41/d8/a945da414f2adc1d9e2f7d6e7445b27f2be42766879062a2e63616ad4199/isort-4.3.4-py2-none-any.whl"
}, },
{ {
"comment_text": "", "filename": "isort-4.3.4-py3-none-any.whl",
"digests": { "url": "https://files.pythonhosted.org/packages/1f/2c/22eee714d7199ae0464beda6ad5fedec8fee6a2f7ffd1e8f1840928fe318/isort-4.3.4-py3-none-any.whl",
"hashes": {
"md5": "fbaac4cd669ac21ea9e21ab1ea3180db", "md5": "fbaac4cd669ac21ea9e21ab1ea3180db",
"sha256": "1153601da39a25b14ddc54955dbbacbb6b2d19135386699e2ad58517953b34af" "sha256": "1153601da39a25b14ddc54955dbbacbb6b2d19135386699e2ad58517953b34af"
}, }
"downloads": -1,
"filename": "isort-4.3.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "fbaac4cd669ac21ea9e21ab1ea3180db",
"packagetype": "bdist_wheel",
"python_version": "3.6",
"requires_python": null,
"size": 45352,
"upload_time": "2018-02-12T15:06:20",
"url": "https://files.pythonhosted.org/packages/1f/2c/22eee714d7199ae0464beda6ad5fedec8fee6a2f7ffd1e8f1840928fe318/isort-4.3.4-py3-none-any.whl"
}, },
{ {
"comment_text": "", "filename": "isort-4.3.4.tar.gz",
"digests": { "url": "https://files.pythonhosted.org/packages/b1/de/a628d16fdba0d38cafb3d7e34d4830f2c9cb3881384ce5c08c44762e1846/isort-4.3.4.tar.gz",
"hashes": {
"md5": "fb554e9c8f9aa76e333a03d470a5cf52", "md5": "fb554e9c8f9aa76e333a03d470a5cf52",
"sha256": "b9c40e9750f3d77e6e4d441d8b0266cf555e7cdabdcff33c4fd06366ca761ef8" "sha256": "b9c40e9750f3d77e6e4d441d8b0266cf555e7cdabdcff33c4fd06366ca761ef8"
}, }
"downloads": -1,
"filename": "isort-4.3.4.tar.gz",
"has_sig": false,
"md5_digest": "fb554e9c8f9aa76e333a03d470a5cf52",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 56070,
"upload_time": "2018-02-12T15:06:16",
"url": "https://files.pythonhosted.org/packages/b1/de/a628d16fdba0d38cafb3d7e34d4830f2c9cb3881384ce5c08c44762e1846/isort-4.3.4.tar.gz"
} }
] ],
"meta": {
"api-version": "1.0",
"_last-serial": 3575149
}
} }
{ {
"info": { "name": "jupyter",
"author": "Jupyter Development Team", "files": [
"author_email": "jupyter@googlegroups.org",
"bugtrack_url": null,
"classifiers": [
"Intended Audience :: Developers",
"Intended Audience :: Science/Research",
"Intended Audience :: System Administrators",
"License :: OSI Approved :: BSD License",
"Programming Language :: Python",
"Programming Language :: Python :: 2",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.3",
"Programming Language :: Python :: 3.4"
],
"description": "Install the Jupyter system, including the notebook, qtconsole, and the IPython kernel.",
"description_content_type": null,
"docs_url": null,
"download_url": "UNKNOWN",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "http://jupyter.org",
"keywords": null,
"license": "BSD",
"maintainer": null,
"maintainer_email": null,
"name": "jupyter",
"package_url": "https://pypi.org/project/jupyter/",
"platform": "UNKNOWN",
"project_url": "https://pypi.org/project/jupyter/",
"project_urls": {
"Download": "UNKNOWN",
"Homepage": "http://jupyter.org"
},
"release_url": "https://pypi.org/project/jupyter/1.0.0/",
"requires_dist": null,
"requires_python": null,
"summary": "Jupyter metapackage. Install all the Jupyter components in one go.",
"version": "1.0.0"
},
"last_serial": 1673841,
"releases": {
"0.0.0": [],
"1.0.0": [
{
"comment_text": "",
"digests": {
"md5": "f81d039e084c2c0c4da9e4a86446b863",
"sha256": "5b290f93b98ffbc21c0c7e749f054b3267782166d72fa5e3ed1ed4eaf34a2b78"
},
"downloads": -1,
"filename": "jupyter-1.0.0-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "f81d039e084c2c0c4da9e4a86446b863",
"packagetype": "bdist_wheel",
"python_version": "3.4",
"requires_python": null,
"size": 2736,
"upload_time": "2015-08-12T00:42:58",
"url": "https://files.pythonhosted.org/packages/83/df/0f5dd132200728a86190397e1ea87cd76244e42d39ec5e88efd25b2abd7e/jupyter-1.0.0-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "c6030444c7eb6c05a4d7b1768c72aed7",
"sha256": "d9dc4b3318f310e34c82951ea5d6683f67bed7def4b259fafbfe4f1beb1d8e5f"
},
"downloads": -1,
"filename": "jupyter-1.0.0.tar.gz",
"has_sig": false,
"md5_digest": "c6030444c7eb6c05a4d7b1768c72aed7",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 12916,
"upload_time": "2015-08-12T00:43:08",
"url": "https://files.pythonhosted.org/packages/c9/a9/371d0b8fe37dd231cf4b2cff0a9f0f25e98f3a73c3771742444be27f2944/jupyter-1.0.0.tar.gz"
},
{
"comment_text": "",
"digests": {
"md5": "25142b08e2ad7142b6f920bc8cc8dfeb",
"sha256": "3e1f86076bbb7c8c207829390305a2b1fe836d471ed54be66a3b8c41e7f46cc7"
},
"downloads": -1,
"filename": "jupyter-1.0.0.zip",
"has_sig": false,
"md5_digest": "25142b08e2ad7142b6f920bc8cc8dfeb",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 16690,
"upload_time": "2015-08-12T00:43:12",
"url": "https://files.pythonhosted.org/packages/fc/21/a372b73e3a498b41b92ed915ada7de2ad5e16631546329c03e484c3bf4e9/jupyter-1.0.0.zip"
}
]
},
"urls": [
{ {
"comment_text": "", "filename": "jupyter-1.0.0-py2.py3-none-any.whl",
"digests": { "url": "https://files.pythonhosted.org/packages/83/df/0f5dd132200728a86190397e1ea87cd76244e42d39ec5e88efd25b2abd7e/jupyter-1.0.0-py2.py3-none-any.whl",
"hashes": {
"md5": "f81d039e084c2c0c4da9e4a86446b863", "md5": "f81d039e084c2c0c4da9e4a86446b863",
"sha256": "5b290f93b98ffbc21c0c7e749f054b3267782166d72fa5e3ed1ed4eaf34a2b78" "sha256": "5b290f93b98ffbc21c0c7e749f054b3267782166d72fa5e3ed1ed4eaf34a2b78"
}, }
"downloads": -1,
"filename": "jupyter-1.0.0-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "f81d039e084c2c0c4da9e4a86446b863",
"packagetype": "bdist_wheel",
"python_version": "3.4",
"requires_python": null,
"size": 2736,
"upload_time": "2015-08-12T00:42:58",
"url": "https://files.pythonhosted.org/packages/83/df/0f5dd132200728a86190397e1ea87cd76244e42d39ec5e88efd25b2abd7e/jupyter-1.0.0-py2.py3-none-any.whl"
}, },
{ {
"comment_text": "", "filename": "jupyter-1.0.0.tar.gz",
"digests": { "url": "https://files.pythonhosted.org/packages/c9/a9/371d0b8fe37dd231cf4b2cff0a9f0f25e98f3a73c3771742444be27f2944/jupyter-1.0.0.tar.gz",
"hashes": {
"md5": "c6030444c7eb6c05a4d7b1768c72aed7", "md5": "c6030444c7eb6c05a4d7b1768c72aed7",
"sha256": "d9dc4b3318f310e34c82951ea5d6683f67bed7def4b259fafbfe4f1beb1d8e5f" "sha256": "d9dc4b3318f310e34c82951ea5d6683f67bed7def4b259fafbfe4f1beb1d8e5f"
}, }
"downloads": -1,
"filename": "jupyter-1.0.0.tar.gz",
"has_sig": false,
"md5_digest": "c6030444c7eb6c05a4d7b1768c72aed7",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 12916,
"upload_time": "2015-08-12T00:43:08",
"url": "https://files.pythonhosted.org/packages/c9/a9/371d0b8fe37dd231cf4b2cff0a9f0f25e98f3a73c3771742444be27f2944/jupyter-1.0.0.tar.gz"
}, },
{ {
"comment_text": "", "filename": "jupyter-1.0.0.zip",
"digests": { "url": "https://files.pythonhosted.org/packages/fc/21/a372b73e3a498b41b92ed915ada7de2ad5e16631546329c03e484c3bf4e9/jupyter-1.0.0.zip",
"hashes": {
"md5": "25142b08e2ad7142b6f920bc8cc8dfeb", "md5": "25142b08e2ad7142b6f920bc8cc8dfeb",
"sha256": "3e1f86076bbb7c8c207829390305a2b1fe836d471ed54be66a3b8c41e7f46cc7" "sha256": "3e1f86076bbb7c8c207829390305a2b1fe836d471ed54be66a3b8c41e7f46cc7"
}, }
"downloads": -1,
"filename": "jupyter-1.0.0.zip",
"has_sig": false,
"md5_digest": "25142b08e2ad7142b6f920bc8cc8dfeb",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 16690,
"upload_time": "2015-08-12T00:43:12",
"url": "https://files.pythonhosted.org/packages/fc/21/a372b73e3a498b41b92ed915ada7de2ad5e16631546329c03e484c3bf4e9/jupyter-1.0.0.zip"
} }
] ],
"meta": {
"api-version": "1.0",
"_last-serial": 1673841
}
} }
{
"info": {
"author": "Jupyter Development Team",
"author_email": "jupyter@googlegroups.org",
"bugtrack_url": null,
"classifiers": [
"Intended Audience :: Developers",
"Intended Audience :: Science/Research",
"Intended Audience :: System Administrators",
"License :: OSI Approved :: BSD License",
"Programming Language :: Python",
"Programming Language :: Python :: 2",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.3",
"Programming Language :: Python :: 3.4"
],
"description": "Install the Jupyter system, including the notebook, qtconsole, and the IPython kernel.",
"description_content_type": null,
"docs_url": null,
"download_url": "UNKNOWN",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "http://jupyter.org",
"keywords": null,
"license": "BSD",
"maintainer": null,
"maintainer_email": null,
"name": "jupyter",
"package_url": "https://pypi.org/project/jupyter/",
"platform": "UNKNOWN",
"project_url": "https://pypi.org/project/jupyter/",
"project_urls": {
"Download": "UNKNOWN",
"Homepage": "http://jupyter.org"
},
"release_url": "https://pypi.org/project/jupyter/1.0.0/",
"requires_dist": null,
"requires_python": null,
"summary": "Jupyter metapackage. Install all the Jupyter components in one go.",
"version": "1.0.0",
"yanked": false,
"yanked_reason": null
},
"last_serial": 1673841,
"urls": [
{
"comment_text": "",
"digests": {
"md5": "f81d039e084c2c0c4da9e4a86446b863",
"sha256": "5b290f93b98ffbc21c0c7e749f054b3267782166d72fa5e3ed1ed4eaf34a2b78"
},
"downloads": -1,
"filename": "jupyter-1.0.0-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "f81d039e084c2c0c4da9e4a86446b863",
"packagetype": "bdist_wheel",
"python_version": "3.4",
"requires_python": null,
"size": 2736,
"upload_time": "2015-08-12T00:42:58",
"upload_time_iso_8601": "2015-08-12T00:42:58.951595Z",
"url": "https://files.pythonhosted.org/packages/83/df/0f5dd132200728a86190397e1ea87cd76244e42d39ec5e88efd25b2abd7e/jupyter-1.0.0-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "c6030444c7eb6c05a4d7b1768c72aed7",
"sha256": "d9dc4b3318f310e34c82951ea5d6683f67bed7def4b259fafbfe4f1beb1d8e5f"
},
"downloads": -1,
"filename": "jupyter-1.0.0.tar.gz",
"has_sig": false,
"md5_digest": "c6030444c7eb6c05a4d7b1768c72aed7",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 12916,
"upload_time": "2015-08-12T00:43:08",
"upload_time_iso_8601": "2015-08-12T00:43:08.537857Z",
"url": "https://files.pythonhosted.org/packages/c9/a9/371d0b8fe37dd231cf4b2cff0a9f0f25e98f3a73c3771742444be27f2944/jupyter-1.0.0.tar.gz",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "25142b08e2ad7142b6f920bc8cc8dfeb",
"sha256": "3e1f86076bbb7c8c207829390305a2b1fe836d471ed54be66a3b8c41e7f46cc7"
},
"downloads": -1,
"filename": "jupyter-1.0.0.zip",
"has_sig": false,
"md5_digest": "25142b08e2ad7142b6f920bc8cc8dfeb",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 16690,
"upload_time": "2015-08-12T00:43:12",
"upload_time_iso_8601": "2015-08-12T00:43:12.460314Z",
"url": "https://files.pythonhosted.org/packages/fc/21/a372b73e3a498b41b92ed915ada7de2ad5e16631546329c03e484c3bf4e9/jupyter-1.0.0.zip",
"yanked": false,
"yanked_reason": null
}
],
"vulnerabilities": []
}
{ {
"info": { "name": "lockfile",
"author": "OpenStack", "files": [
"author_email": "openstack-dev@lists.openstack.org",
"bugtrack_url": null,
"classifiers": [
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Operating System :: MacOS",
"Operating System :: Microsoft :: Windows :: Windows NT/2000",
"Operating System :: POSIX",
"Operating System :: POSIX :: Linux",
"Programming Language :: Python",
"Programming Language :: Python :: 2",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.3",
"Topic :: Software Development :: Libraries :: Python Modules"
],
"description": "",
"description_content_type": null,
"docs_url": "https://pythonhosted.org/lockfile/",
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "http://launchpad.net/pylockfile",
"keywords": "",
"license": "",
"maintainer": "",
"maintainer_email": "",
"name": "lockfile",
"package_url": "https://pypi.org/project/lockfile/",
"platform": "UNKNOWN",
"project_url": "https://pypi.org/project/lockfile/",
"project_urls": {
"Homepage": "http://launchpad.net/pylockfile"
},
"release_url": "https://pypi.org/project/lockfile/0.12.2/",
"requires_dist": null,
"requires_python": "",
"summary": "Platform-independent file locking module",
"version": "0.12.2"
},
"last_serial": 2139845,
"releases": {
"0.12.2": [
{
"comment_text": "",
"digests": {
"md5": "07b04864472c90cdf4452cf250687334",
"sha256": "6c3cb24f344923d30b2785d5ad75182c8ea7ac1b6171b08657258ec7429d50fa"
},
"downloads": -1,
"filename": "lockfile-0.12.2-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "07b04864472c90cdf4452cf250687334",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 13564,
"upload_time": "2015-11-25T18:29:51",
"url": "https://files.pythonhosted.org/packages/c8/22/9460e311f340cb62d26a38c419b1381b8593b0bb6b5d1f056938b086d362/lockfile-0.12.2-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "a6a1a82957a23afdf44cfdd039b65ff9",
"sha256": "6aed02de03cba24efabcd600b30540140634fc06cfa603822d508d5361e9f799"
},
"downloads": -1,
"filename": "lockfile-0.12.2.tar.gz",
"has_sig": false,
"md5_digest": "a6a1a82957a23afdf44cfdd039b65ff9",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 20874,
"upload_time": "2015-11-25T18:29:58",
"url": "https://files.pythonhosted.org/packages/17/47/72cb04a58a35ec495f96984dddb48232b551aafb95bde614605b754fe6f7/lockfile-0.12.2.tar.gz"
}
]
},
"urls": [
{ {
"comment_text": "", "filename": "lockfile-0.12.2-py2.py3-none-any.whl",
"digests": { "url": "https://files.pythonhosted.org/packages/c8/22/9460e311f340cb62d26a38c419b1381b8593b0bb6b5d1f056938b086d362/lockfile-0.12.2-py2.py3-none-any.whl",
"hashes": {
"md5": "07b04864472c90cdf4452cf250687334", "md5": "07b04864472c90cdf4452cf250687334",
"sha256": "6c3cb24f344923d30b2785d5ad75182c8ea7ac1b6171b08657258ec7429d50fa" "sha256": "6c3cb24f344923d30b2785d5ad75182c8ea7ac1b6171b08657258ec7429d50fa"
}, }
"downloads": -1,
"filename": "lockfile-0.12.2-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "07b04864472c90cdf4452cf250687334",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 13564,
"upload_time": "2015-11-25T18:29:51",
"url": "https://files.pythonhosted.org/packages/c8/22/9460e311f340cb62d26a38c419b1381b8593b0bb6b5d1f056938b086d362/lockfile-0.12.2-py2.py3-none-any.whl"
}, },
{ {
"comment_text": "", "filename": "lockfile-0.12.2.tar.gz",
"digests": { "url": "https://files.pythonhosted.org/packages/17/47/72cb04a58a35ec495f96984dddb48232b551aafb95bde614605b754fe6f7/lockfile-0.12.2.tar.gz",
"hashes": {
"md5": "a6a1a82957a23afdf44cfdd039b65ff9", "md5": "a6a1a82957a23afdf44cfdd039b65ff9",
"sha256": "6aed02de03cba24efabcd600b30540140634fc06cfa603822d508d5361e9f799" "sha256": "6aed02de03cba24efabcd600b30540140634fc06cfa603822d508d5361e9f799"
}, }
"downloads": -1,
"filename": "lockfile-0.12.2.tar.gz",
"has_sig": false,
"md5_digest": "a6a1a82957a23afdf44cfdd039b65ff9",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 20874,
"upload_time": "2015-11-25T18:29:58",
"url": "https://files.pythonhosted.org/packages/17/47/72cb04a58a35ec495f96984dddb48232b551aafb95bde614605b754fe6f7/lockfile-0.12.2.tar.gz"
} }
] ],
"meta": {
"api-version": "1.0",
"_last-serial": 2139845
}
} }
{ {
"info": { "name": "more-itertools",
"author": "Erik Rose", "files": [
"author_email": "erikrose@grinchcentral.com",
"bugtrack_url": "",
"classifiers": [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Natural Language :: English",
"Programming Language :: Python :: 2",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.2",
"Programming Language :: Python :: 3.3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Topic :: Software Development :: Libraries"
],
"description": "",
"docs_url": "https://pythonhosted.org/more-itertools/",
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/erikrose/more-itertools",
"keywords": "itertools,iterator,iteration,filter,peek,peekable,collate,chunk,chunked",
"license": "MIT",
"maintainer": "",
"maintainer_email": "",
"name": "more-itertools",
"package_url": "https://pypi.org/project/more-itertools/",
"platform": "",
"project_url": "https://pypi.org/project/more-itertools/",
"release_url": "https://pypi.org/project/more-itertools/4.1.0/",
"requires_dist": [
"six (<2.0.0,>=1.0.0)"
],
"requires_python": "",
"summary": "More routines for operating on iterables, beyond itertools",
"version": "4.1.0"
},
"last_serial": 3508946,
"releases": {
"4.1.0": [
{
"comment_text": "",
"digests": {
"md5": "2a6a4b9abf941edf6d190fc995c0c935",
"sha256": "11a625025954c20145b37ff6309cd54e39ca94f72f6bb9576d1195db6fa2442e"
},
"downloads": -1,
"filename": "more_itertools-4.1.0-py2-none-any.whl",
"has_sig": false,
"md5_digest": "2a6a4b9abf941edf6d190fc995c0c935",
"packagetype": "bdist_wheel",
"python_version": "py2",
"size": 47987,
"upload_time": "2018-01-21T15:34:19",
"url": "https://files.pythonhosted.org/packages/4a/88/c28e2a2da8f3dc3a391d9c97ad949f2ea0c05198222e7e6af176e5bf9b26/more_itertools-4.1.0-py2-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "3229d872f8d193e36119ec76e1b0c097",
"sha256": "0dd8f72eeab0d2c3bd489025bb2f6a1b8342f9b198f6fc37b52d15cfa4531fea"
},
"downloads": -1,
"filename": "more_itertools-4.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "3229d872f8d193e36119ec76e1b0c097",
"packagetype": "bdist_wheel",
"python_version": "py3",
"size": 47988,
"upload_time": "2018-01-21T15:34:20",
"url": "https://files.pythonhosted.org/packages/7a/46/886917c6a4ce49dd3fff250c01c5abac5390d57992751384fe61befc4877/more_itertools-4.1.0-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "246f46686d95879fbad37855c115dc52",
"sha256": "c9ce7eccdcb901a2c75d326ea134e0886abfbea5f93e91cc95de9507c0816c44"
},
"downloads": -1,
"filename": "more-itertools-4.1.0.tar.gz",
"has_sig": false,
"md5_digest": "246f46686d95879fbad37855c115dc52",
"packagetype": "sdist",
"python_version": "source",
"size": 51310,
"upload_time": "2018-01-21T15:34:22",
"url": "https://files.pythonhosted.org/packages/db/0b/f5660bf6299ec5b9f17bd36096fa8148a1c843fa77ddfddf9bebac9301f7/more-itertools-4.1.0.tar.gz"
}
]
},
"urls": [
{ {
"comment_text": "", "filename": "more_itertools-4.1.0-py2-none-any.whl",
"digests": { "url": "https://files.pythonhosted.org/packages/4a/88/c28e2a2da8f3dc3a391d9c97ad949f2ea0c05198222e7e6af176e5bf9b26/more_itertools-4.1.0-py2-none-any.whl",
"hashes": {
"md5": "2a6a4b9abf941edf6d190fc995c0c935", "md5": "2a6a4b9abf941edf6d190fc995c0c935",
"sha256": "11a625025954c20145b37ff6309cd54e39ca94f72f6bb9576d1195db6fa2442e" "sha256": "11a625025954c20145b37ff6309cd54e39ca94f72f6bb9576d1195db6fa2442e"
}, }
"downloads": -1,
"filename": "more_itertools-4.1.0-py2-none-any.whl",
"has_sig": false,
"md5_digest": "2a6a4b9abf941edf6d190fc995c0c935",
"packagetype": "bdist_wheel",
"python_version": "py2",
"size": 47987,
"upload_time": "2018-01-21T15:34:19",
"url": "https://files.pythonhosted.org/packages/4a/88/c28e2a2da8f3dc3a391d9c97ad949f2ea0c05198222e7e6af176e5bf9b26/more_itertools-4.1.0-py2-none-any.whl"
}, },
{ {
"comment_text": "", "filename": "more_itertools-4.1.0-py3-none-any.whl",
"digests": { "url": "https://files.pythonhosted.org/packages/7a/46/886917c6a4ce49dd3fff250c01c5abac5390d57992751384fe61befc4877/more_itertools-4.1.0-py3-none-any.whl",
"hashes": {
"md5": "3229d872f8d193e36119ec76e1b0c097", "md5": "3229d872f8d193e36119ec76e1b0c097",
"sha256": "0dd8f72eeab0d2c3bd489025bb2f6a1b8342f9b198f6fc37b52d15cfa4531fea" "sha256": "0dd8f72eeab0d2c3bd489025bb2f6a1b8342f9b198f6fc37b52d15cfa4531fea"
}, }
"downloads": -1,
"filename": "more_itertools-4.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "3229d872f8d193e36119ec76e1b0c097",
"packagetype": "bdist_wheel",
"python_version": "py3",
"size": 47988,
"upload_time": "2018-01-21T15:34:20",
"url": "https://files.pythonhosted.org/packages/7a/46/886917c6a4ce49dd3fff250c01c5abac5390d57992751384fe61befc4877/more_itertools-4.1.0-py3-none-any.whl"
}, },
{ {
"comment_text": "", "filename": "more-itertools-4.1.0.tar.gz",
"digests": { "url": "https://files.pythonhosted.org/packages/db/0b/f5660bf6299ec5b9f17bd36096fa8148a1c843fa77ddfddf9bebac9301f7/more-itertools-4.1.0.tar.gz",
"hashes": {
"md5": "246f46686d95879fbad37855c115dc52", "md5": "246f46686d95879fbad37855c115dc52",
"sha256": "c9ce7eccdcb901a2c75d326ea134e0886abfbea5f93e91cc95de9507c0816c44" "sha256": "c9ce7eccdcb901a2c75d326ea134e0886abfbea5f93e91cc95de9507c0816c44"
}, }
"downloads": -1,
"filename": "more-itertools-4.1.0.tar.gz",
"has_sig": false,
"md5_digest": "246f46686d95879fbad37855c115dc52",
"packagetype": "sdist",
"python_version": "source",
"size": 51310,
"upload_time": "2018-01-21T15:34:22",
"url": "https://files.pythonhosted.org/packages/db/0b/f5660bf6299ec5b9f17bd36096fa8148a1c843fa77ddfddf9bebac9301f7/more-itertools-4.1.0.tar.gz"
} }
] ],
"meta": {
"api-version": "1.0",
"_last-serial": 3508946
}
} }
{ {
"info": { "name": "pluggy",
"author": "Holger Krekel", "files": [
"author_email": "holger@merlinux.eu",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Operating System :: MacOS :: MacOS X",
"Operating System :: Microsoft :: Windows",
"Operating System :: POSIX",
"Programming Language :: Python :: 2",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
"Topic :: Software Development :: Libraries",
"Topic :: Software Development :: Testing",
"Topic :: Utilities"
],
"description": "",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/pytest-dev/pluggy",
"keywords": "",
"license": "MIT license",
"maintainer": "",
"maintainer_email": "",
"name": "pluggy",
"package_url": "https://pypi.org/project/pluggy/",
"platform": "unix",
"project_url": "https://pypi.org/project/pluggy/",
"release_url": "https://pypi.org/project/pluggy/0.6.0/",
"requires_dist": null,
"requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*",
"summary": "plugin and hook calling mechanisms for python",
"version": "0.6.0"
},
"last_serial": 3361295,
"releases": {
"0.6.0": [
{
"comment_text": "",
"digests": {
"md5": "ffdde7c3a5ba9a440404570366ffb6d5",
"sha256": "7f8ae7f5bdf75671a718d2daf0a64b7885f74510bcd98b1a0bb420eb9a9d0cff"
},
"downloads": -1,
"filename": "pluggy-0.6.0.tar.gz",
"has_sig": false,
"md5_digest": "ffdde7c3a5ba9a440404570366ffb6d5",
"packagetype": "sdist",
"python_version": "source",
"size": 19678,
"upload_time": "2017-11-24T16:33:11",
"url": "https://files.pythonhosted.org/packages/11/bf/cbeb8cdfaffa9f2ea154a30ae31a9d04a1209312e2919138b4171a1f8199/pluggy-0.6.0.tar.gz"
}
]
},
"urls": [
{ {
"comment_text": "", "filename": "pluggy-0.6.0.tar.gz",
"digests": { "url": "https://files.pythonhosted.org/packages/11/bf/cbeb8cdfaffa9f2ea154a30ae31a9d04a1209312e2919138b4171a1f8199/pluggy-0.6.0.tar.gz",
"hashes": {
"md5": "ffdde7c3a5ba9a440404570366ffb6d5", "md5": "ffdde7c3a5ba9a440404570366ffb6d5",
"sha256": "7f8ae7f5bdf75671a718d2daf0a64b7885f74510bcd98b1a0bb420eb9a9d0cff" "sha256": "7f8ae7f5bdf75671a718d2daf0a64b7885f74510bcd98b1a0bb420eb9a9d0cff"
}, }
"downloads": -1,
"filename": "pluggy-0.6.0.tar.gz",
"has_sig": false,
"md5_digest": "ffdde7c3a5ba9a440404570366ffb6d5",
"packagetype": "sdist",
"python_version": "source",
"size": 19678,
"upload_time": "2017-11-24T16:33:11",
"url": "https://files.pythonhosted.org/packages/11/bf/cbeb8cdfaffa9f2ea154a30ae31a9d04a1209312e2919138b4171a1f8199/pluggy-0.6.0.tar.gz"
} }
] ],
"meta": {
"api-version": "1.0",
"_last-serial": 3361295
}
} }
{ {
"info": { "name": "py",
"author": "holger krekel, Ronny Pfannschmidt, Benjamin Peterson and others", "files": [
"author_email": "pytest-dev@python.org",
"bugtrack_url": "https://github.com/pytest-dev/py/issues",
"classifiers": [
"Development Status :: 6 - Mature",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Operating System :: MacOS :: MacOS X",
"Operating System :: Microsoft :: Windows",
"Operating System :: POSIX",
"Programming Language :: Python",
"Programming Language :: Python :: 2",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
"Topic :: Software Development :: Libraries",
"Topic :: Software Development :: Testing",
"Topic :: Utilities"
],
"description": "",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "http://py.readthedocs.io/",
"keywords": "",
"license": "MIT license",
"maintainer": "",
"maintainer_email": "",
"name": "py",
"package_url": "https://pypi.org/project/py/",
"platform": "unix",
"project_url": "https://pypi.org/project/py/",
"release_url": "https://pypi.org/project/py/1.5.3/",
"requires_dist": null,
"requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*",
"summary": "library with cross-python path, ini-parsing, io, code, log facilities",
"version": "1.5.3"
},
"last_serial": 3694828,
"releases": {
"1.5.3": [
{
"comment_text": "",
"digests": {
"md5": "3184fb17d224b073117a25336040d7c7",
"sha256": "983f77f3331356039fdd792e9220b7b8ee1aa6bd2b25f567a963ff1de5a64f6a"
},
"downloads": -1,
"filename": "py-1.5.3-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "3184fb17d224b073117a25336040d7c7",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"size": 84903,
"upload_time": "2018-03-22T10:06:50",
"url": "https://files.pythonhosted.org/packages/67/a5/f77982214dd4c8fd104b066f249adea2c49e25e8703d284382eb5e9ab35a/py-1.5.3-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "667d37a148ad9fb81266492903f2d880",
"sha256": "29c9fab495d7528e80ba1e343b958684f4ace687327e6f789a94bf3d1915f881"
},
"downloads": -1,
"filename": "py-1.5.3.tar.gz",
"has_sig": false,
"md5_digest": "667d37a148ad9fb81266492903f2d880",
"packagetype": "sdist",
"python_version": "source",
"size": 202335,
"upload_time": "2018-03-22T10:06:52",
"url": "https://files.pythonhosted.org/packages/f7/84/b4c6e84672c4ceb94f727f3da8344037b62cee960d80e999b1cd9b832d83/py-1.5.3.tar.gz"
}
]
},
"urls": [
{ {
"comment_text": "", "filename": "py-1.5.3-py2.py3-none-any.whl",
"digests": { "url": "https://files.pythonhosted.org/packages/67/a5/f77982214dd4c8fd104b066f249adea2c49e25e8703d284382eb5e9ab35a/py-1.5.3-py2.py3-none-any.whl",
"hashes": {
"md5": "3184fb17d224b073117a25336040d7c7", "md5": "3184fb17d224b073117a25336040d7c7",
"sha256": "983f77f3331356039fdd792e9220b7b8ee1aa6bd2b25f567a963ff1de5a64f6a" "sha256": "983f77f3331356039fdd792e9220b7b8ee1aa6bd2b25f567a963ff1de5a64f6a"
}, }
"downloads": -1,
"filename": "py-1.5.3-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "3184fb17d224b073117a25336040d7c7",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"size": 84903,
"upload_time": "2018-03-22T10:06:50",
"url": "https://files.pythonhosted.org/packages/67/a5/f77982214dd4c8fd104b066f249adea2c49e25e8703d284382eb5e9ab35a/py-1.5.3-py2.py3-none-any.whl"
}, },
{ {
"comment_text": "", "filename": "py-1.5.3.tar.gz",
"digests": { "url": "https://files.pythonhosted.org/packages/f7/84/b4c6e84672c4ceb94f727f3da8344037b62cee960d80e999b1cd9b832d83/py-1.5.3.tar.gz",
"hashes": {
"md5": "667d37a148ad9fb81266492903f2d880", "md5": "667d37a148ad9fb81266492903f2d880",
"sha256": "29c9fab495d7528e80ba1e343b958684f4ace687327e6f789a94bf3d1915f881" "sha256": "29c9fab495d7528e80ba1e343b958684f4ace687327e6f789a94bf3d1915f881"
}, }
"downloads": -1,
"filename": "py-1.5.3.tar.gz",
"has_sig": false,
"md5_digest": "667d37a148ad9fb81266492903f2d880",
"packagetype": "sdist",
"python_version": "source",
"size": 202335,
"upload_time": "2018-03-22T10:06:52",
"url": "https://files.pythonhosted.org/packages/f7/84/b4c6e84672c4ceb94f727f3da8344037b62cee960d80e999b1cd9b832d83/py-1.5.3.tar.gz"
} }
] ],
"meta": {
"api-version": "1.0",
"_last-serial": 3694828
}
} }
{ {
"info": { "name": "pygame-music-grid",
"author": "eric dexter", "files": [
"author_email": "irc.dexter@gmail.com", {
"bugtrack_url": null, "filename": "pygame_music_grid-.9-cp27-cp27m-win32.whl",
"classifiers": [ "url": "https://files.pythonhosted.org/packages/12/9b/efdbaa3c9694b6315a4410e0d494ad50c5ade22ce33f4b482bfaea3930fd/pygame_music_grid-.9-cp27-cp27m-win32.whl",
"Topic :: Multimedia :: Sound/Audio :: Editors" "hashes": {
], "md5": "76e2c2e8adea20377d9a7e6b6713c952",
"description": "a clickable grid for drum machines, piano rolls that is customizble from an init \r\nfile)or will be) that will include the script to be ran when a definable button is \r\nhit written in pygame and tested with python 2.5", "sha256": "8d6d96001aa7f0a6a4a95e8143225b5d06e41b1131044913fecb8f85a125714b"
"description_content_type": null,
"docs_url": null,
"download_url": "http://www.ziddu.com/download/5498230/pygamepianorollbeta.90.zip.html",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "http://dexrowem.blogspot.com/search?q=pygame+music+grid",
"keywords": "python, pygame, drum machine, piano roll",
"license": "",
"maintainer": "",
"maintainer_email": "",
"name": "pygame-music-grid",
"package_url": "https://pypi.org/project/pygame-music-grid/",
"platform": "",
"project_url": "https://pypi.org/project/pygame-music-grid/",
"project_urls": {
"Download": "http://www.ziddu.com/download/5498230/pygamepianorollbeta.90.zip.html",
"Homepage": "http://dexrowem.blogspot.com/search?q=pygame+music+grid"
},
"release_url": "https://pypi.org/project/pygame-music-grid/.9/",
"requires_dist": null,
"requires_python": null,
"summary": "a grid for music programs",
"version": ".9"
},
"last_serial": 710340,
"releases": {
".9": [
{
"comment_text": "",
"digests": {
"md5": "76e2c2e8adea20377d9a7e6b6713c952",
"sha256": "8d6d96001aa7f0a6a4a95e8143225b5d06e41b1131044913fecb8f85a125714b"
},
"downloads": -1,
"filename": "PyYAML-4.2b4-cp27-cp27m-win32.whl",
"has_sig": false,
"md5_digest": "76e2c2e8adea20377d9a7e6b6713c952",
"packagetype": "bdist_wheel",
"python_version": "cp27",
"requires_python": null,
"size": 104988,
"upload_time": "2018-07-02T03:17:55",
"url": "https://files.pythonhosted.org/packages/12/9b/efdbaa3c9694b6315a4410e0d494ad50c5ade22ce33f4b482bfaea3930fd/PyYAML-4.2b4-cp27-cp27m-win32.whl"
} }
], },
"1.0": [ {
{ "filename": "pygame_music_grid-3.13-cp27-cp27m-win32.whl",
"comment_text": "", "url": "https://files.pythonhosted.org/packages/b8/2e/9c2285870c9de070a1fa5ede702ab5fb329901b3cc4028c24f44eda27c5f/pygame_music_grid-3.13-cp27-cp27m-win32.whl",
"digests": { "hashes": {
"md5": "a83441aa7004e474bed6f6daeb61f27a", "md5": "a83441aa7004e474bed6f6daeb61f27a",
"sha256": "d5eef459e30b09f5a098b9cea68bebfeb268697f78d647bd255a085371ac7f3f" "sha256": "d5eef459e30b09f5a098b9cea68bebfeb268697f78d647bd255a085371ac7f3f"
},
"downloads": -1,
"filename": "PyYAML-3.13-cp27-cp27m-win32.whl",
"has_sig": false,
"md5_digest": "a83441aa7004e474bed6f6daeb61f27a",
"packagetype": "bdist_wheel",
"python_version": "cp27",
"requires_python": null,
"size": 191712,
"upload_time": "2018-07-05T22:53:15",
"url": "https://files.pythonhosted.org/packages/b8/2e/9c2285870c9de070a1fa5ede702ab5fb329901b3cc4028c24f44eda27c5f/PyYAML-3.13-cp27-cp27m-win32.whl"
} }
] }
}, ],
"urls": [] "meta": {
"api-version": "1.0",
"_last-serial": 710340
}
} }
{ {
"info": { "name": "pylev",
"author": "Daniel Lindsley", "files": [
"author_email": "daniel@toastdriven.com",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"License :: OSI Approved :: BSD License",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3"
],
"description": "",
"description_content_type": null,
"docs_url": null,
"download_url": "UNKNOWN",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "http://github.com/toastdriven/pylev",
"keywords": null,
"license": "UNKNOWN",
"maintainer": null,
"maintainer_email": null,
"name": "pylev",
"package_url": "https://pypi.org/project/pylev/",
"platform": "UNKNOWN",
"project_url": "https://pypi.org/project/pylev/",
"project_urls": {
"Download": "UNKNOWN",
"Homepage": "http://github.com/toastdriven/pylev"
},
"release_url": "https://pypi.org/project/pylev/1.3.0/",
"requires_dist": null,
"requires_python": null,
"summary": "A pure Python Levenshtein implementation that's not freaking GPL'd.",
"version": "1.3.0"
},
"last_serial": 1279536,
"releases": {
"1.3.0": [
{
"comment_text": "",
"digests": {
"md5": "6da14dfce5034873fc5c2d7a6e83dc29",
"sha256": "1d29a87beb45ebe1e821e7a3b10da2b6b2f4c79b43f482c2df1a1f748a6e114e"
},
"downloads": -1,
"filename": "pylev-1.3.0-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "6da14dfce5034873fc5c2d7a6e83dc29",
"packagetype": "bdist_wheel",
"python_version": "2.7",
"requires_python": null,
"size": 4927,
"upload_time": "2014-10-23T00:24:34",
"url": "https://files.pythonhosted.org/packages/40/1c/7dff1d242bf1e19f9c6202f0ba4e6fd18cc7ecb8bc85b17b2d16c806e228/pylev-1.3.0-py2.py3-none-any.whl"
}
]
},
"urls": [
{ {
"comment_text": "", "filename": "pylev-1.3.0-py2.py3-none-any.whl",
"digests": { "url": "https://files.pythonhosted.org/packages/40/1c/7dff1d242bf1e19f9c6202f0ba4e6fd18cc7ecb8bc85b17b2d16c806e228/pylev-1.3.0-py2.py3-none-any.whl",
"hashes": {
"md5": "6da14dfce5034873fc5c2d7a6e83dc29", "md5": "6da14dfce5034873fc5c2d7a6e83dc29",
"sha256": "1d29a87beb45ebe1e821e7a3b10da2b6b2f4c79b43f482c2df1a1f748a6e114e" "sha256": "1d29a87beb45ebe1e821e7a3b10da2b6b2f4c79b43f482c2df1a1f748a6e114e"
}, }
"downloads": -1,
"filename": "pylev-1.3.0-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "6da14dfce5034873fc5c2d7a6e83dc29",
"packagetype": "bdist_wheel",
"python_version": "2.7",
"requires_python": null,
"size": 4927,
"upload_time": "2014-10-23T00:24:34",
"url": "https://files.pythonhosted.org/packages/40/1c/7dff1d242bf1e19f9c6202f0ba4e6fd18cc7ecb8bc85b17b2d16c806e228/pylev-1.3.0-py2.py3-none-any.whl"
} }
] ],
"meta": {
"api-version": "1.0",
"_last-serial": 1279536
}
} }
{
"info": {
"author": "Daniel Lindsley",
"author_email": "daniel@toastdriven.com",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"License :: OSI Approved :: BSD License",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3"
],
"description": "pylev\n=====\n\nA pure Python Levenshtein implementation that's not freaking GPL'd.\n\nBased off the Wikipedia code samples at\nhttp://en.wikipedia.org/wiki/Levenshtein_distance.\n\n\nRequirements\n------------\n\n* Python 2.7.X, Python 3.3+ or PyPy 1.6.0+\n\n\nUsage\n-----\n\nUsage is fairly straightforward.::\n\n import pylev\n distance = pylev.levenshtein('kitten', 'sitting')\n assert(distance, 3)\n\n\nLicense\n-------\n\nNew BSD.\n\n\nTests\n-----\n\nSetup::\n\n $ git clone https://github.com/toastdriven/pylev.git\n $ cd pylev\n\nRunning::\n\n $ python -m unittest tests\n\n[![Build Status](https://travis-ci.org/toastdriven/pylev.png)](https://travis-ci.org/toastdriven/pylev)\n\n\nVersion History\n---------------\n\n* v1.3.0\n\n * Implemented a considerably faster variants (orders of magnitude).\n * Tested & working on Python 2.7.4, Python 3.3.1 & PyPy 1.9.0.\n\n* v1.2.0\n\n * Fixed all incorrect spellings of \"Levenshtein\" (there's no \"c\" in it).\n * Old methods are aliased for backward-compatibility.\n\n* v1.1.0\n\n * Implemented a much faster variant (several orders of magnitude).\n * The older variant was renamed to ``classic_levenschtein``.\n * Tested & working on Python 3.3 & PyPy 1.6.0 as well.\n\n* v1.0.2\n\n * Python packaging is **REALLY** hard. Including the README *this time*.\n\n* v1.0.1\n\n * Python packaging is hard. Including the README this time.\n\n* v1.0.0\n\n * Initial release, just the naive implementation of Levenshtein.",
"description_content_type": null,
"docs_url": null,
"download_url": "UNKNOWN",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "http://github.com/toastdriven/pylev",
"keywords": null,
"license": "UNKNOWN",
"maintainer": null,
"maintainer_email": null,
"name": "pylev",
"package_url": "https://pypi.org/project/pylev/",
"platform": "UNKNOWN",
"project_url": "https://pypi.org/project/pylev/",
"project_urls": {
"Download": "UNKNOWN",
"Homepage": "http://github.com/toastdriven/pylev"
},
"release_url": "https://pypi.org/project/pylev/1.3.0/",
"requires_dist": null,
"requires_python": null,
"summary": "A pure Python Levenshtein implementation that's not freaking GPL'd.",
"version": "1.3.0",
"yanked": false,
"yanked_reason": null
},
"last_serial": 10513237,
"urls": [
{
"comment_text": "",
"digests": {
"md5": "6da14dfce5034873fc5c2d7a6e83dc29",
"sha256": "1d29a87beb45ebe1e821e7a3b10da2b6b2f4c79b43f482c2df1a1f748a6e114e"
},
"downloads": -1,
"filename": "pylev-1.3.0-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "6da14dfce5034873fc5c2d7a6e83dc29",
"packagetype": "bdist_wheel",
"python_version": "2.7",
"requires_python": null,
"size": 4927,
"upload_time": "2014-10-23T00:24:34",
"upload_time_iso_8601": "2014-10-23T00:24:34.125905Z",
"url": "https://files.pythonhosted.org/packages/40/1c/7dff1d242bf1e19f9c6202f0ba4e6fd18cc7ecb8bc85b17b2d16c806e228/pylev-1.3.0-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "3be579cfc32ce5140cc04001f898741b",
"sha256": "063910098161199b81e453025653ec53556c1be7165a9b7c50be2f4d57eae1c3"
},
"downloads": -1,
"filename": "pylev-1.3.0.tar.gz",
"has_sig": false,
"md5_digest": "3be579cfc32ce5140cc04001f898741b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 3193,
"upload_time": "2014-10-23T00:24:19",
"upload_time_iso_8601": "2014-10-23T00:24:19.460779Z",
"url": "https://files.pythonhosted.org/packages/cc/61/dab2081d3d86dcf0b9f5dcfb11b256d76cd14aad7ccdd7c8dd5e7f7e41a0/pylev-1.3.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"vulnerabilities": []
}
{ {
"info": { "name": "pytest",
"author": "Holger Krekel, Bruno Oliveira, Ronny Pfannschmidt, Floris Bruynooghe, Brianna Laugher, Florian Bruhin and others", "files": [
"author_email": "",
"bugtrack_url": "https://github.com/pytest-dev/pytest/issues",
"classifiers": [
"Development Status :: 6 - Mature",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Operating System :: MacOS :: MacOS X",
"Operating System :: Microsoft :: Windows",
"Operating System :: POSIX",
"Programming Language :: Python :: 2",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Topic :: Software Development :: Libraries",
"Topic :: Software Development :: Testing",
"Topic :: Utilities"
],
"description": ".. image:: http://docs.pytest.org/en/latest/_static/pytest1.png\n :target: http://docs.pytest.org\n :align: center\n :alt: pytest\n\n------\n\n.. image:: https://img.shields.io/pypi/v/pytest.svg\n :target: https://pypi.python.org/pypi/pytest\n\n.. image:: https://anaconda.org/conda-forge/pytest/badges/version.svg\n :target: https://anaconda.org/conda-forge/pytest\n\n.. image:: https://img.shields.io/pypi/pyversions/pytest.svg\n :target: https://pypi.python.org/pypi/pytest\n\n.. image:: https://img.shields.io/coveralls/pytest-dev/pytest/master.svg\n :target: https://coveralls.io/r/pytest-dev/pytest\n\n.. image:: https://travis-ci.org/pytest-dev/pytest.svg?branch=master\n :target: https://travis-ci.org/pytest-dev/pytest\n\n.. image:: https://ci.appveyor.com/api/projects/status/mrgbjaua7t33pg6b?svg=true\n :target: https://ci.appveyor.com/project/pytestbot/pytest\n\n.. image:: https://www.codetriage.com/pytest-dev/pytest/badges/users.svg\n :target: https://www.codetriage.com/pytest-dev/pytest\n\nThe ``pytest`` framework makes it easy to write small tests, yet\nscales to support complex functional testing for applications and libraries.\n\nAn example of a simple test:\n\n.. code-block:: python\n\n # content of test_sample.py\n def inc(x):\n return x + 1\n\n def test_answer():\n assert inc(3) == 5\n\n\nTo execute it::\n\n $ pytest\n ============================= test session starts =============================\n collected 1 items\n\n test_sample.py F\n\n ================================== FAILURES ===================================\n _________________________________ test_answer _________________________________\n\n def test_answer():\n > assert inc(3) == 5\n E assert 4 == 5\n E + where 4 = inc(3)\n\n test_sample.py:5: AssertionError\n ========================== 1 failed in 0.04 seconds ===========================\n\n\nDue to ``pytest``'s detailed assertion introspection, only plain ``assert`` statements are used. See `getting-started <http://docs.pytest.org/en/latest/getting-started.html#our-first-test-run>`_ for more examples.\n\n\nFeatures\n--------\n\n- Detailed info on failing `assert statements <http://docs.pytest.org/en/latest/assert.html>`_ (no need to remember ``self.assert*`` names);\n\n- `Auto-discovery\n <http://docs.pytest.org/en/latest/goodpractices.html#python-test-discovery>`_\n of test modules and functions;\n\n- `Modular fixtures <http://docs.pytest.org/en/latest/fixture.html>`_ for\n managing small or parametrized long-lived test resources;\n\n- Can run `unittest <http://docs.pytest.org/en/latest/unittest.html>`_ (or trial),\n `nose <http://docs.pytest.org/en/latest/nose.html>`_ test suites out of the box;\n\n- Python 2.7, Python 3.4+, PyPy 2.3, Jython 2.5 (untested);\n\n- Rich plugin architecture, with over 315+ `external plugins <http://plugincompat.herokuapp.com>`_ and thriving community;\n\n\nDocumentation\n-------------\n\nFor full documentation, including installation, tutorials and PDF documents, please see http://docs.pytest.org.\n\n\nBugs/Requests\n-------------\n\nPlease use the `GitHub issue tracker <https://github.com/pytest-dev/pytest/issues>`_ to submit bugs or request features.\n\n\nChangelog\n---------\n\nConsult the `Changelog <http://docs.pytest.org/en/latest/changelog.html>`__ page for fixes and enhancements of each version.\n\n\nLicense\n-------\n\nCopyright Holger Krekel and others, 2004-2017.\n\nDistributed under the terms of the `MIT`_ license, pytest is free and open source software.\n\n.. _`MIT`: https://github.com/pytest-dev/pytest/blob/master/LICENSE\n\n\n",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "http://pytest.org",
"keywords": "test unittest",
"license": "MIT license",
"maintainer": "",
"maintainer_email": "",
"name": "pytest",
"package_url": "https://pypi.org/project/pytest/",
"platform": "unix",
"project_url": "https://pypi.org/project/pytest/",
"release_url": "https://pypi.org/project/pytest/3.5.0/",
"requires_dist": [
"py (>=1.5.0)",
"six (>=1.10.0)",
"setuptools",
"attrs (>=17.4.0)",
"more-itertools (>=4.0.0)",
"pluggy (<0.7,>=0.5)",
"funcsigs; python_version < \"3.0\"",
"colorama; sys_platform == \"win32\""
],
"requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*",
"summary": "pytest: simple powerful testing with Python",
"version": "3.5.0"
},
"last_serial": 3697219,
"releases": {
"3.5.0": [
{
"comment_text": "",
"digests": {
"md5": "c0b6697b7130c495aba71cdfcf939cc9",
"sha256": "6266f87ab64692112e5477eba395cfedda53b1933ccd29478e671e73b420c19c"
},
"downloads": -1,
"filename": "pytest-3.5.0-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "c0b6697b7130c495aba71cdfcf939cc9",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"size": 194247,
"upload_time": "2018-03-22T23:47:54",
"url": "https://files.pythonhosted.org/packages/ed/96/271c93f75212c06e2a7ec3e2fa8a9c90acee0a4838dc05bf379ea09aae31/pytest-3.5.0-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "b8e13a4091f07ff1fda081cf40ff99f1",
"sha256": "fae491d1874f199537fd5872b5e1f0e74a009b979df9d53d1553fd03da1703e1"
},
"downloads": -1,
"filename": "pytest-3.5.0.tar.gz",
"has_sig": false,
"md5_digest": "b8e13a4091f07ff1fda081cf40ff99f1",
"packagetype": "sdist",
"python_version": "source",
"size": 830816,
"upload_time": "2018-03-22T23:47:56",
"url": "https://files.pythonhosted.org/packages/2d/56/6019153cdd743300c5688ab3b07702355283e53c83fbf922242c053ffb7b/pytest-3.5.0.tar.gz"
}
]
},
"urls": [
{ {
"comment_text": "", "filename": "pytest-3.5.0-py2.py3-none-any.whl",
"digests": { "url": "https://files.pythonhosted.org/packages/ed/96/271c93f75212c06e2a7ec3e2fa8a9c90acee0a4838dc05bf379ea09aae31/pytest-3.5.0-py2.py3-none-any.whl",
"hashes": {
"md5": "c0b6697b7130c495aba71cdfcf939cc9", "md5": "c0b6697b7130c495aba71cdfcf939cc9",
"sha256": "6266f87ab64692112e5477eba395cfedda53b1933ccd29478e671e73b420c19c" "sha256": "6266f87ab64692112e5477eba395cfedda53b1933ccd29478e671e73b420c19c"
}, }
"downloads": -1,
"filename": "pytest-3.5.0-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "c0b6697b7130c495aba71cdfcf939cc9",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"size": 194247,
"upload_time": "2018-03-22T23:47:54",
"url": "https://files.pythonhosted.org/packages/ed/96/271c93f75212c06e2a7ec3e2fa8a9c90acee0a4838dc05bf379ea09aae31/pytest-3.5.0-py2.py3-none-any.whl"
}, },
{ {
"comment_text": "", "filename": "pytest-3.5.0.tar.gz",
"digests": { "url": "https://files.pythonhosted.org/packages/2d/56/6019153cdd743300c5688ab3b07702355283e53c83fbf922242c053ffb7b/pytest-3.5.0.tar.gz",
"hashes": {
"md5": "b8e13a4091f07ff1fda081cf40ff99f1", "md5": "b8e13a4091f07ff1fda081cf40ff99f1",
"sha256": "fae491d1874f199537fd5872b5e1f0e74a009b979df9d53d1553fd03da1703e1" "sha256": "fae491d1874f199537fd5872b5e1f0e74a009b979df9d53d1553fd03da1703e1"
}, }
"downloads": -1,
"filename": "pytest-3.5.0.tar.gz",
"has_sig": false,
"md5_digest": "b8e13a4091f07ff1fda081cf40ff99f1",
"packagetype": "sdist",
"python_version": "source",
"size": 830816,
"upload_time": "2018-03-22T23:47:56",
"url": "https://files.pythonhosted.org/packages/2d/56/6019153cdd743300c5688ab3b07702355283e53c83fbf922242c053ffb7b/pytest-3.5.0.tar.gz"
} }
] ],
"meta": {
"api-version": "1.0",
"_last-serial": 3697219
}
} }
{
"info": {
"author": "Holger Krekel, Bruno Oliveira, Ronny Pfannschmidt, Floris Bruynooghe, Brianna Laugher, Florian Bruhin and others",
"author_email": "",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 6 - Mature",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Operating System :: MacOS :: MacOS X",
"Operating System :: Microsoft :: Windows",
"Operating System :: POSIX",
"Programming Language :: Python :: 2",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Topic :: Software Development :: Libraries",
"Topic :: Software Development :: Testing",
"Topic :: Utilities"
],
"description": ".. image:: http://docs.pytest.org/en/latest/_static/pytest1.png\n :target: http://docs.pytest.org\n :align: center\n :alt: pytest\n\n------\n\n.. image:: https://img.shields.io/pypi/v/pytest.svg\n :target: https://pypi.python.org/pypi/pytest\n\n.. image:: https://anaconda.org/conda-forge/pytest/badges/version.svg\n :target: https://anaconda.org/conda-forge/pytest\n\n.. image:: https://img.shields.io/pypi/pyversions/pytest.svg\n :target: https://pypi.python.org/pypi/pytest\n\n.. image:: https://img.shields.io/coveralls/pytest-dev/pytest/master.svg\n :target: https://coveralls.io/r/pytest-dev/pytest\n\n.. image:: https://travis-ci.org/pytest-dev/pytest.svg?branch=master\n :target: https://travis-ci.org/pytest-dev/pytest\n\n.. image:: https://ci.appveyor.com/api/projects/status/mrgbjaua7t33pg6b?svg=true\n :target: https://ci.appveyor.com/project/pytestbot/pytest\n\n.. image:: https://www.codetriage.com/pytest-dev/pytest/badges/users.svg\n :target: https://www.codetriage.com/pytest-dev/pytest\n\nThe ``pytest`` framework makes it easy to write small tests, yet\nscales to support complex functional testing for applications and libraries.\n\nAn example of a simple test:\n\n.. code-block:: python\n\n # content of test_sample.py\n def inc(x):\n return x + 1\n\n def test_answer():\n assert inc(3) == 5\n\n\nTo execute it::\n\n $ pytest\n ============================= test session starts =============================\n collected 1 items\n\n test_sample.py F\n\n ================================== FAILURES ===================================\n _________________________________ test_answer _________________________________\n\n def test_answer():\n > assert inc(3) == 5\n E assert 4 == 5\n E + where 4 = inc(3)\n\n test_sample.py:5: AssertionError\n ========================== 1 failed in 0.04 seconds ===========================\n\n\nDue to ``pytest``'s detailed assertion introspection, only plain ``assert`` statements are used. See `getting-started <http://docs.pytest.org/en/latest/getting-started.html#our-first-test-run>`_ for more examples.\n\n\nFeatures\n--------\n\n- Detailed info on failing `assert statements <http://docs.pytest.org/en/latest/assert.html>`_ (no need to remember ``self.assert*`` names);\n\n- `Auto-discovery\n <http://docs.pytest.org/en/latest/goodpractices.html#python-test-discovery>`_\n of test modules and functions;\n\n- `Modular fixtures <http://docs.pytest.org/en/latest/fixture.html>`_ for\n managing small or parametrized long-lived test resources;\n\n- Can run `unittest <http://docs.pytest.org/en/latest/unittest.html>`_ (or trial),\n `nose <http://docs.pytest.org/en/latest/nose.html>`_ test suites out of the box;\n\n- Python 2.7, Python 3.4+, PyPy 2.3, Jython 2.5 (untested);\n\n- Rich plugin architecture, with over 315+ `external plugins <http://plugincompat.herokuapp.com>`_ and thriving community;\n\n\nDocumentation\n-------------\n\nFor full documentation, including installation, tutorials and PDF documents, please see http://docs.pytest.org.\n\n\nBugs/Requests\n-------------\n\nPlease use the `GitHub issue tracker <https://github.com/pytest-dev/pytest/issues>`_ to submit bugs or request features.\n\n\nChangelog\n---------\n\nConsult the `Changelog <http://docs.pytest.org/en/latest/changelog.html>`__ page for fixes and enhancements of each version.\n\n\nLicense\n-------\n\nCopyright Holger Krekel and others, 2004-2017.\n\nDistributed under the terms of the `MIT`_ license, pytest is free and open source software.\n\n.. _`MIT`: https://github.com/pytest-dev/pytest/blob/master/LICENSE\n\n\n",
"description_content_type": "",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "http://pytest.org",
"keywords": "test unittest",
"license": "MIT license",
"maintainer": "",
"maintainer_email": "",
"name": "pytest",
"package_url": "https://pypi.org/project/pytest/",
"platform": "unix",
"project_url": "https://pypi.org/project/pytest/",
"project_urls": {
"Homepage": "http://pytest.org",
"Source": "https://github.com/pytest-dev/pytest",
"Tracker": "https://github.com/pytest-dev/pytest/issues"
},
"release_url": "https://pypi.org/project/pytest/3.5.1/",
"requires_dist": [
"py (>=1.5.0)",
"six (>=1.10.0)",
"setuptools",
"attrs (>=17.4.0)",
"more-itertools (>=4.0.0)",
"pluggy (<0.7,>=0.5)",
"funcsigs; python_version < \"3.0\"",
"colorama; sys_platform == \"win32\""
],
"requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*",
"summary": "pytest: simple powerful testing with Python",
"version": "3.5.1",
"yanked": false,
"yanked_reason": null
},
"last_serial": 13600682,
"urls": [
{
"comment_text": "",
"digests": {
"md5": "01b206fe1d54f5255c360743ac9a044d",
"sha256": "829230122facf05a5f81a6d4dfe6454a04978ea3746853b2b84567ecf8e5c526"
},
"downloads": -1,
"filename": "pytest-3.5.1-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "01b206fe1d54f5255c360743ac9a044d",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*",
"size": 192143,
"upload_time": "2018-04-24T21:37:43",
"upload_time_iso_8601": "2018-04-24T21:37:43.104462Z",
"url": "https://files.pythonhosted.org/packages/76/52/fc48d02492d9e6070cb672d9133382e83084f567f88eff1c27bd2c6c27a8/pytest-3.5.1-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "ffd870ee3ca561695d2f916f0f0f3c0b",
"sha256": "54713b26c97538db6ff0703a12b19aeaeb60b5e599de542e7fca0ec83b9038e8"
},
"downloads": -1,
"filename": "pytest-3.5.1.tar.gz",
"has_sig": false,
"md5_digest": "ffd870ee3ca561695d2f916f0f0f3c0b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*",
"size": 830571,
"upload_time": "2018-04-24T21:37:44",
"upload_time_iso_8601": "2018-04-24T21:37:44.492084Z",
"url": "https://files.pythonhosted.org/packages/b2/85/24954df0ea8156599563b753de54383a5d702081093b7953334e4701b8d8/pytest-3.5.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"vulnerabilities": []
}
This source diff could not be displayed because it is too large. You can view the blob instead.
{ {
"info": { "name": "setuptools",
"author": "Python Packaging Authority", "files": [
"author_email": "distutils-sig@python.org",
"bugtrack_url": "",
"classifiers": [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python :: 2",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Topic :: Software Development :: Libraries :: Python Modules",
"Topic :: System :: Archiving :: Packaging",
"Topic :: System :: Systems Administration",
"Topic :: Utilities"
],
"description": "",
"description_content_type": "text/x-rst; charset=UTF-8",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/pypa/setuptools",
"keywords": "CPAN PyPI distutils eggs package management",
"license": "",
"maintainer": "",
"maintainer_email": "",
"name": "setuptools",
"package_url": "https://pypi.org/project/setuptools/",
"platform": "",
"project_url": "https://pypi.org/project/setuptools/",
"release_url": "https://pypi.org/project/setuptools/39.2.0/",
"requires_dist": [
"wincertstore (==0.2); (sys_platform=='win32') and extra == 'ssl'",
"certifi (==2016.9.26); extra == 'certs'"
],
"requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*",
"summary": "Easily download, build, install, upgrade, and uninstall Python packages",
"version": "39.2.0"
},
"last_serial": 3879671,
"releases": {
"39.2.0": [
{
"comment_text": "",
"digests": {
"md5": "8d066d2201311ed30be535b473e32fed",
"sha256": "8fca9275c89964f13da985c3656cb00ba029d7f3916b37990927ffdf264e7926"
},
"downloads": -1,
"filename": "setuptools-39.2.0-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "8d066d2201311ed30be535b473e32fed",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"size": 567556,
"upload_time": "2018-05-19T19:19:22",
"url": "https://files.pythonhosted.org/packages/7f/e1/820d941153923aac1d49d7fc37e17b6e73bfbd2904959fffbad77900cf92/setuptools-39.2.0-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "dd4e3fa83a21bf7bf9c51026dc8a4e59",
"sha256": "f7cddbb5f5c640311eb00eab6e849f7701fa70bf6a183fc8a2c33dd1d1672fb2"
},
"downloads": -1,
"filename": "setuptools-39.2.0.zip",
"has_sig": false,
"md5_digest": "dd4e3fa83a21bf7bf9c51026dc8a4e59",
"packagetype": "sdist",
"python_version": "source",
"size": 851112,
"upload_time": "2018-05-19T19:19:24",
"url": "https://files.pythonhosted.org/packages/1a/04/d6f1159feaccdfc508517dba1929eb93a2854de729fa68da9d5c6b48fa00/setuptools-39.2.0.zip"
}
]
},
"urls": [
{ {
"comment_text": "", "filename": "setuptools-39.2.0-py2.py3-none-any.whl",
"digests": { "url": "https://files.pythonhosted.org/packages/7f/e1/820d941153923aac1d49d7fc37e17b6e73bfbd2904959fffbad77900cf92/setuptools-39.2.0-py2.py3-none-any.whl",
"hashes": {
"md5": "8d066d2201311ed30be535b473e32fed", "md5": "8d066d2201311ed30be535b473e32fed",
"sha256": "8fca9275c89964f13da985c3656cb00ba029d7f3916b37990927ffdf264e7926" "sha256": "8fca9275c89964f13da985c3656cb00ba029d7f3916b37990927ffdf264e7926"
}, }
"downloads": -1,
"filename": "setuptools-39.2.0-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "8d066d2201311ed30be535b473e32fed",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"size": 567556,
"upload_time": "2018-05-19T19:19:22",
"url": "https://files.pythonhosted.org/packages/7f/e1/820d941153923aac1d49d7fc37e17b6e73bfbd2904959fffbad77900cf92/setuptools-39.2.0-py2.py3-none-any.whl"
}, },
{ {
"comment_text": "", "filename": "setuptools-39.2.0.zip",
"digests": { "url": "https://files.pythonhosted.org/packages/1a/04/d6f1159feaccdfc508517dba1929eb93a2854de729fa68da9d5c6b48fa00/setuptools-39.2.0.zip",
"hashes": {
"md5": "dd4e3fa83a21bf7bf9c51026dc8a4e59", "md5": "dd4e3fa83a21bf7bf9c51026dc8a4e59",
"sha256": "f7cddbb5f5c640311eb00eab6e849f7701fa70bf6a183fc8a2c33dd1d1672fb2" "sha256": "f7cddbb5f5c640311eb00eab6e849f7701fa70bf6a183fc8a2c33dd1d1672fb2"
}, }
"downloads": -1,
"filename": "setuptools-39.2.0.zip",
"has_sig": false,
"md5_digest": "dd4e3fa83a21bf7bf9c51026dc8a4e59",
"packagetype": "sdist",
"python_version": "source",
"size": 851112,
"upload_time": "2018-05-19T19:19:24",
"url": "https://files.pythonhosted.org/packages/1a/04/d6f1159feaccdfc508517dba1929eb93a2854de729fa68da9d5c6b48fa00/setuptools-39.2.0.zip"
} }
] ],
"meta": {
"api-version": "1.0",
"_last-serial": 3879671
}
} }
{
"info": {
"author": "Python Packaging Authority",
"author_email": "distutils-sig@python.org",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python :: 2",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Topic :: Software Development :: Libraries :: Python Modules",
"Topic :: System :: Archiving :: Packaging",
"Topic :: System :: Systems Administration",
"Topic :: Utilities"
],
"description": ".. image:: https://img.shields.io/pypi/v/setuptools.svg\n :target: https://pypi.org/project/setuptools\n\n.. image:: https://readthedocs.org/projects/setuptools/badge/?version=latest\n :target: https://setuptools.readthedocs.io\n\n.. image:: https://img.shields.io/travis/pypa/setuptools/master.svg?label=Linux%20build%20%40%20Travis%20CI\n :target: https://travis-ci.org/pypa/setuptools\n\n.. image:: https://img.shields.io/appveyor/ci/pypa/setuptools/master.svg?label=Windows%20build%20%40%20Appveyor\n :target: https://ci.appveyor.com/project/pypa/setuptools/branch/master\n\n.. image:: https://img.shields.io/codecov/c/github/pypa/setuptools/master.svg\n :target: https://codecov.io/gh/pypa/setuptools\n\n.. image:: https://img.shields.io/pypi/pyversions/setuptools.svg\n\nSee the `Installation Instructions\n<https://packaging.python.org/installing/>`_ in the Python Packaging\nUser's Guide for instructions on installing, upgrading, and uninstalling\nSetuptools.\n\nThe project is `maintained at GitHub <https://github.com/pypa/setuptools>`_.\n\nQuestions and comments should be directed to the `distutils-sig\nmailing list <http://mail.python.org/pipermail/distutils-sig/>`_.\nBug reports and especially tested patches may be\nsubmitted directly to the `bug tracker\n<https://github.com/pypa/setuptools/issues>`_.\n\n\nCode of Conduct\n---------------\n\nEveryone interacting in the setuptools project's codebases, issue trackers,\nchat rooms, and mailing lists is expected to follow the\n`PyPA Code of Conduct <https://www.pypa.io/en/latest/code-of-conduct/>`_.\n\n\n",
"description_content_type": "text/x-rst; charset=UTF-8",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/pypa/setuptools",
"keywords": "CPAN PyPI distutils eggs package management",
"license": "",
"maintainer": "",
"maintainer_email": "",
"name": "setuptools",
"package_url": "https://pypi.org/project/setuptools/",
"platform": "",
"project_url": "https://pypi.org/project/setuptools/",
"project_urls": {
"Documentation": "https://setuptools.readthedocs.io/",
"Homepage": "https://github.com/pypa/setuptools"
},
"release_url": "https://pypi.org/project/setuptools/39.2.0/",
"requires_dist": [
"certifi (==2016.9.26); extra == 'certs'",
"wincertstore (==0.2); (sys_platform=='win32') and extra == 'ssl'"
],
"requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*",
"summary": "Easily download, build, install, upgrade, and uninstall Python packages",
"version": "39.2.0",
"yanked": false,
"yanked_reason": null
},
"last_serial": 14429235,
"urls": [
{
"comment_text": "",
"digests": {
"md5": "8d066d2201311ed30be535b473e32fed",
"sha256": "8fca9275c89964f13da985c3656cb00ba029d7f3916b37990927ffdf264e7926"
},
"downloads": -1,
"filename": "setuptools-39.2.0-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "8d066d2201311ed30be535b473e32fed",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*",
"size": 567556,
"upload_time": "2018-05-19T19:19:22",
"upload_time_iso_8601": "2018-05-19T19:19:22.625819Z",
"url": "https://files.pythonhosted.org/packages/7f/e1/820d941153923aac1d49d7fc37e17b6e73bfbd2904959fffbad77900cf92/setuptools-39.2.0-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "dd4e3fa83a21bf7bf9c51026dc8a4e59",
"sha256": "f7cddbb5f5c640311eb00eab6e849f7701fa70bf6a183fc8a2c33dd1d1672fb2"
},
"downloads": -1,
"filename": "setuptools-39.2.0.zip",
"has_sig": false,
"md5_digest": "dd4e3fa83a21bf7bf9c51026dc8a4e59",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*",
"size": 851112,
"upload_time": "2018-05-19T19:19:24",
"upload_time_iso_8601": "2018-05-19T19:19:24.480740Z",
"url": "https://files.pythonhosted.org/packages/1a/04/d6f1159feaccdfc508517dba1929eb93a2854de729fa68da9d5c6b48fa00/setuptools-39.2.0.zip",
"yanked": false,
"yanked_reason": null
}
],
"vulnerabilities": []
}
{ {
"info": { "name": "six",
"author": "Benjamin Peterson", "files": [
"author_email": "benjamin@python.org",
"bugtrack_url": null,
"classifiers": [
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 2",
"Programming Language :: Python :: 3",
"Topic :: Software Development :: Libraries",
"Topic :: Utilities"
],
"description": "",
"docs_url": "https://pythonhosted.org/six/",
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "http://pypi.python.org/pypi/six/",
"keywords": "",
"license": "MIT",
"maintainer": "",
"maintainer_email": "",
"name": "six",
"package_url": "https://pypi.org/project/six/",
"platform": "",
"project_url": "https://pypi.org/project/six/",
"release_url": "https://pypi.org/project/six/1.11.0/",
"requires_dist": null,
"requires_python": "",
"summary": "Python 2 and 3 compatibility utilities",
"version": "1.11.0"
},
"last_serial": 3180827,
"releases": {
"1.11.0": [
{
"comment_text": "",
"digests": {
"md5": "866ab722be6bdfed6830f3179af65468",
"sha256": "832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb"
},
"downloads": -1,
"filename": "six-1.11.0-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "866ab722be6bdfed6830f3179af65468",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"size": 10702,
"upload_time": "2017-09-17T18:46:53",
"url": "https://files.pythonhosted.org/packages/67/4b/141a581104b1f6397bfa78ac9d43d8ad29a7ca43ea90a2d863fe3056e86a/six-1.11.0-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "d12789f9baf7e9fb2524c0c64f1773f8",
"sha256": "70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9"
},
"downloads": -1,
"filename": "six-1.11.0.tar.gz",
"has_sig": false,
"md5_digest": "d12789f9baf7e9fb2524c0c64f1773f8",
"packagetype": "sdist",
"python_version": "source",
"size": 29860,
"upload_time": "2017-09-17T18:46:54",
"url": "https://files.pythonhosted.org/packages/16/d8/bc6316cf98419719bd59c91742194c111b6f2e85abac88e496adefaf7afe/six-1.11.0.tar.gz"
}
]
},
"urls": [
{ {
"comment_text": "", "filename": "six-1.11.0-py2.py3-none-any.whl",
"digests": { "url": "https://files.pythonhosted.org/packages/67/4b/141a581104b1f6397bfa78ac9d43d8ad29a7ca43ea90a2d863fe3056e86a/six-1.11.0-py2.py3-none-any.whl",
"hashes": {
"md5": "866ab722be6bdfed6830f3179af65468", "md5": "866ab722be6bdfed6830f3179af65468",
"sha256": "832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb" "sha256": "832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb"
}, }
"downloads": -1,
"filename": "six-1.11.0-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "866ab722be6bdfed6830f3179af65468",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"size": 10702,
"upload_time": "2017-09-17T18:46:53",
"url": "https://files.pythonhosted.org/packages/67/4b/141a581104b1f6397bfa78ac9d43d8ad29a7ca43ea90a2d863fe3056e86a/six-1.11.0-py2.py3-none-any.whl"
}, },
{ {
"comment_text": "", "filename": "six-1.11.0.tar.gz",
"digests": { "url": "https://files.pythonhosted.org/packages/16/d8/bc6316cf98419719bd59c91742194c111b6f2e85abac88e496adefaf7afe/six-1.11.0.tar.gz",
"hashes": {
"md5": "d12789f9baf7e9fb2524c0c64f1773f8", "md5": "d12789f9baf7e9fb2524c0c64f1773f8",
"sha256": "70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9" "sha256": "70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9"
}, }
"downloads": -1,
"filename": "six-1.11.0.tar.gz",
"has_sig": false,
"md5_digest": "d12789f9baf7e9fb2524c0c64f1773f8",
"packagetype": "sdist",
"python_version": "source",
"size": 29860,
"upload_time": "2017-09-17T18:46:54",
"url": "https://files.pythonhosted.org/packages/16/d8/bc6316cf98419719bd59c91742194c111b6f2e85abac88e496adefaf7afe/six-1.11.0.tar.gz"
} }
] ],
"meta": {
"api-version": "1.0",
"_last-serial": 3180827
}
} }
{ {
"info": { "name": "SQLAlchemy",
"author": "Mike Bayer", "files": [
"author_email": "mike_mp@zzzcomputing.com",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
"Topic :: Database :: Front-Ends"
],
"description": "",
"description_content_type": "",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "http://www.sqlalchemy.org",
"keywords": "",
"license": "MIT License",
"maintainer": "",
"maintainer_email": "",
"name": "SQLAlchemy",
"package_url": "https://pypi.org/project/SQLAlchemy/",
"platform": "",
"project_url": "https://pypi.org/project/SQLAlchemy/",
"project_urls": {
"Homepage": "http://www.sqlalchemy.org"
},
"release_url": "https://pypi.org/project/SQLAlchemy/1.2.12/",
"requires_dist": null,
"requires_python": "",
"summary": "Database Abstraction Library",
"version": "1.2.12"
},
"last_serial": 4289618,
"releases": {
"1.2.12": [
{
"comment_text": "",
"digests": {
"md5": "3baca105a1e49798d6bc99eb2738cb3b",
"sha256": "c5951d9ef1d5404ed04bae5a16b60a0779087378928f997a294d1229c6ca4d3e"
},
"downloads": -1,
"filename": "SQLAlchemy-1.2.12.tar.gz",
"has_sig": true,
"md5_digest": "3baca105a1e49798d6bc99eb2738cb3b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5634807,
"upload_time": "2018-09-19T18:14:55",
"url": "https://files.pythonhosted.org/packages/25/c9/b0552098cee325425a61efdf380c51b5c721e459081c85bbb860f501c091/SQLAlchemy-1.2.12.tar.gz"
}
]
},
"urls": [
{ {
"comment_text": "", "filename": "SQLAlchemy-1.2.12.tar.gz",
"digests": { "url": "https://files.pythonhosted.org/packages/25/c9/b0552098cee325425a61efdf380c51b5c721e459081c85bbb860f501c091/SQLAlchemy-1.2.12.tar.gz",
"hashes": {
"md5": "3baca105a1e49798d6bc99eb2738cb3b", "md5": "3baca105a1e49798d6bc99eb2738cb3b",
"sha256": "c5951d9ef1d5404ed04bae5a16b60a0779087378928f997a294d1229c6ca4d3e" "sha256": "c5951d9ef1d5404ed04bae5a16b60a0779087378928f997a294d1229c6ca4d3e"
}, }
"downloads": -1,
"filename": "SQLAlchemy-1.2.12.tar.gz",
"has_sig": true,
"md5_digest": "3baca105a1e49798d6bc99eb2738cb3b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5634807,
"upload_time": "2018-09-19T18:14:55",
"url": "https://files.pythonhosted.org/packages/25/c9/b0552098cee325425a61efdf380c51b5c721e459081c85bbb860f501c091/SQLAlchemy-1.2.12.tar.gz"
} }
] ],
"meta": {
"api-version": "1.0",
"_last-serial": 4289618
}
} }
{
"info": {
"author": "Mike Bayer",
"author_email": "mike_mp@zzzcomputing.com",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
"Topic :: Database :: Front-Ends"
],
"description": "SQLAlchemy\n==========\n\nThe Python SQL Toolkit and Object Relational Mapper\n\nIntroduction\n-------------\n\nSQLAlchemy is the Python SQL toolkit and Object Relational Mapper\nthat gives application developers the full power and\nflexibility of SQL. SQLAlchemy provides a full suite\nof well known enterprise-level persistence patterns,\ndesigned for efficient and high-performing database\naccess, adapted into a simple and Pythonic domain\nlanguage.\n\nMajor SQLAlchemy features include:\n\n* An industrial strength ORM, built \n from the core on the identity map, unit of work,\n and data mapper patterns. These patterns\n allow transparent persistence of objects \n using a declarative configuration system.\n Domain models\n can be constructed and manipulated naturally,\n and changes are synchronized with the\n current transaction automatically.\n* A relationally-oriented query system, exposing\n the full range of SQL's capabilities \n explicitly, including joins, subqueries, \n correlation, and most everything else, \n in terms of the object model.\n Writing queries with the ORM uses the same \n techniques of relational composition you use \n when writing SQL. While you can drop into\n literal SQL at any time, it's virtually never\n needed.\n* A comprehensive and flexible system \n of eager loading for related collections and objects.\n Collections are cached within a session,\n and can be loaded on individual access, all \n at once using joins, or by query per collection\n across the full result set.\n* A Core SQL construction system and DBAPI \n interaction layer. The SQLAlchemy Core is\n separate from the ORM and is a full database\n abstraction layer in its own right, and includes\n an extensible Python-based SQL expression \n language, schema metadata, connection pooling, \n type coercion, and custom types.\n* All primary and foreign key constraints are \n assumed to be composite and natural. Surrogate\n integer primary keys are of course still the \n norm, but SQLAlchemy never assumes or hardcodes\n to this model.\n* Database introspection and generation. Database\n schemas can be \"reflected\" in one step into\n Python structures representing database metadata;\n those same structures can then generate \n CREATE statements right back out - all within\n the Core, independent of the ORM.\n\nSQLAlchemy's philosophy:\n\n* SQL databases behave less and less like object\n collections the more size and performance start to\n matter; object collections behave less and less like\n tables and rows the more abstraction starts to matter.\n SQLAlchemy aims to accommodate both of these\n principles.\n* An ORM doesn't need to hide the \"R\". A relational\n database provides rich, set-based functionality\n that should be fully exposed. SQLAlchemy's\n ORM provides an open-ended set of patterns\n that allow a developer to construct a custom\n mediation layer between a domain model and \n a relational schema, turning the so-called\n \"object relational impedance\" issue into\n a distant memory.\n* The developer, in all cases, makes all decisions\n regarding the design, structure, and naming conventions\n of both the object model as well as the relational\n schema. SQLAlchemy only provides the means\n to automate the execution of these decisions.\n* With SQLAlchemy, there's no such thing as \n \"the ORM generated a bad query\" - you \n retain full control over the structure of \n queries, including how joins are organized,\n how subqueries and correlation is used, what \n columns are requested. Everything SQLAlchemy\n does is ultimately the result of a developer-\n initiated decision.\n* Don't use an ORM if the problem doesn't need one.\n SQLAlchemy consists of a Core and separate ORM\n component. The Core offers a full SQL expression\n language that allows Pythonic construction \n of SQL constructs that render directly to SQL\n strings for a target database, returning\n result sets that are essentially enhanced DBAPI\n cursors.\n* Transactions should be the norm. With SQLAlchemy's\n ORM, nothing goes to permanent storage until\n commit() is called. SQLAlchemy encourages applications\n to create a consistent means of delineating\n the start and end of a series of operations.\n* Never render a literal value in a SQL statement.\n Bound parameters are used to the greatest degree\n possible, allowing query optimizers to cache \n query plans effectively and making SQL injection\n attacks a non-issue.\n\nDocumentation\n-------------\n\nLatest documentation is at:\n\nhttp://www.sqlalchemy.org/docs/\n\nInstallation / Requirements\n---------------------------\n\nFull documentation for installation is at \n`Installation <http://www.sqlalchemy.org/docs/intro.html#installation>`_.\n\nGetting Help / Development / Bug reporting\n------------------------------------------\n\nPlease refer to the `SQLAlchemy Community Guide <http://www.sqlalchemy.org/support.html>`_.\n\nLicense\n-------\n\nSQLAlchemy is distributed under the `MIT license\n<http://www.opensource.org/licenses/mit-license.php>`_.",
"description_content_type": "",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "http://www.sqlalchemy.org",
"keywords": "",
"license": "MIT License",
"maintainer": "",
"maintainer_email": "",
"name": "SQLAlchemy",
"package_url": "https://pypi.org/project/SQLAlchemy/",
"platform": "",
"project_url": "https://pypi.org/project/SQLAlchemy/",
"project_urls": {
"Homepage": "http://www.sqlalchemy.org"
},
"release_url": "https://pypi.org/project/SQLAlchemy/1.2.12/",
"requires_dist": null,
"requires_python": "",
"summary": "Database Abstraction Library",
"version": "1.2.12",
"yanked": false,
"yanked_reason": null
},
"last_serial": 14239243,
"urls": [
{
"comment_text": "",
"digests": {
"md5": "3baca105a1e49798d6bc99eb2738cb3b",
"sha256": "c5951d9ef1d5404ed04bae5a16b60a0779087378928f997a294d1229c6ca4d3e"
},
"downloads": -1,
"filename": "SQLAlchemy-1.2.12.tar.gz",
"has_sig": true,
"md5_digest": "3baca105a1e49798d6bc99eb2738cb3b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5634807,
"upload_time": "2018-09-19T18:14:55",
"upload_time_iso_8601": "2018-09-19T18:14:55.299706Z",
"url": "https://files.pythonhosted.org/packages/25/c9/b0552098cee325425a61efdf380c51b5c721e459081c85bbb860f501c091/SQLAlchemy-1.2.12.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"vulnerabilities": [
{
"aliases": [
"CVE-2019-7548"
],
"details": "SQLAlchemy 1.2.17 has SQL Injection when the group_by parameter can be controlled.",
"fixed_in": [
"1.2.18"
],
"id": "PYSEC-2019-124",
"link": "https://osv.dev/vulnerability/PYSEC-2019-124",
"source": "osv",
"summary": null
},
{
"aliases": [
"CVE-2019-7164"
],
"details": "SQLAlchemy through 1.2.17 and 1.3.x through 1.3.0b2 allows SQL Injection via the order_by parameter.",
"fixed_in": [
"1.2.18"
],
"id": "PYSEC-2019-123",
"link": "https://osv.dev/vulnerability/PYSEC-2019-123",
"source": "osv",
"summary": null
},
{
"aliases": [
"CVE-2019-7548"
],
"details": "SQLAlchemy 1.2.17 has SQL Injection when the group_by parameter can be controlled.",
"fixed_in": [
"1.3.0"
],
"id": "GHSA-38fc-9xqv-7f7q",
"link": "https://osv.dev/vulnerability/GHSA-38fc-9xqv-7f7q",
"source": "osv",
"summary": null
},
{
"aliases": [
"CVE-2019-7164"
],
"details": "SQLAlchemy through 1.2.17 and 1.3.x through 1.3.0b2 allows SQL Injection via the order_by parameter.",
"fixed_in": [
"1.3.0"
],
"id": "GHSA-887w-45rq-vxgf",
"link": "https://osv.dev/vulnerability/GHSA-887w-45rq-vxgf",
"source": "osv",
"summary": null
}
]
}
{ {
"info": { "name": "tomlkit",
"author": "Sébastien Eustace", "files": [
"author_email": "sebastien@eustace.io", {
"bugtrack_url": null, "filename": "tomlkit-0.5.2-py2.py3-none-any.whl",
"classifiers": [ "url": "https://files.pythonhosted.org/packages/9b/ca/8b60a94c01ee655ffb81d11c11396cb6fff89459317aa1fe3e98ee80f055/tomlkit-0.5.2-py2.py3-none-any.whl",
"License :: OSI Approved :: MIT License", "hashes": {
"Programming Language :: Python :: 2", "md5": "7a7ef7c16a0e9b374933c116a7bb2f9f",
"Programming Language :: Python :: 2.7", "sha256": "82a8fbb8d8c6af72e96ba00b9db3e20ef61be6c79082552c9363f4559702258b"
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7"
],
"description": "",
"description_content_type": "text/markdown",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/sdispater/tomlkit",
"keywords": "",
"license": "MIT",
"maintainer": "Sébastien Eustace",
"maintainer_email": "sebastien@eustace.io",
"name": "tomlkit",
"package_url": "https://pypi.org/project/tomlkit/",
"platform": "",
"project_url": "https://pypi.org/project/tomlkit/",
"project_urls": {
"Homepage": "https://github.com/sdispater/tomlkit",
"Repository": "https://github.com/sdispater/tomlkit"
},
"release_url": "https://pypi.org/project/tomlkit/0.5.3/",
"requires_dist": [
"enum34 (>=1.1,<2.0); python_version >= \"2.7\" and python_version < \"2.8\"",
"functools32 (>=3.2.3,<4.0.0); python_version >= \"2.7\" and python_version < \"2.8\"",
"typing (>=3.6,<4.0); python_version >= \"2.7\" and python_version < \"2.8\" or python_version >= \"3.4\" and python_version < \"3.5\""
],
"requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*",
"summary": "Style preserving TOML library",
"version": "0.5.3"
},
"last_serial": 4504211,
"releases": {
"0.5.2": [
{
"comment_text": "",
"digests": {
"md5": "7a7ef7c16a0e9b374933c116a7bb2f9f",
"sha256": "82a8fbb8d8c6af72e96ba00b9db3e20ef61be6c79082552c9363f4559702258b"
},
"downloads": -1,
"filename": "tomlkit-0.5.2-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "7a7ef7c16a0e9b374933c116a7bb2f9f",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*",
"size": 116499,
"upload_time": "2018-11-09T17:09:28",
"url": "https://files.pythonhosted.org/packages/9b/ca/8b60a94c01ee655ffb81d11c11396cb6fff89459317aa1fe3e98ee80f055/tomlkit-0.5.2-py2.py3-none-any.whl"
}, },
{ "requires-python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
"comment_text": "", },
"digests": { {
"md5": "7abb629acee08fd77bafe858f4706f47", "filename": "tomlkit-0.5.2.tar.gz",
"sha256": "a43e0195edc9b3c198cd4b5f0f3d427a395d47c4a76ceba7cc875ed030756c39" "url": "https://files.pythonhosted.org/packages/f6/8c/c27d292cf7c0f04f0e1b5c75ab95dc328542ccbe9a809a1eada66c897bd2/tomlkit-0.5.2.tar.gz",
}, "hashes": {
"downloads": -1, "md5": "7abb629acee08fd77bafe858f4706f47",
"filename": "tomlkit-0.5.2.tar.gz", "sha256": "a43e0195edc9b3c198cd4b5f0f3d427a395d47c4a76ceba7cc875ed030756c39"
"has_sig": false,
"md5_digest": "7abb629acee08fd77bafe858f4706f47",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*",
"size": 29813,
"upload_time": "2018-11-09T17:09:29",
"url": "https://files.pythonhosted.org/packages/f6/8c/c27d292cf7c0f04f0e1b5c75ab95dc328542ccbe9a809a1eada66c897bd2/tomlkit-0.5.2.tar.gz"
}
],
"0.5.3": [
{
"comment_text": "",
"digests": {
"md5": "0a6cf417df5d0fc911f89447c9a662a9",
"sha256": "f077456d35303e7908cc233b340f71e0bec96f63429997f38ca9272b7d64029e"
},
"downloads": -1,
"filename": "tomlkit-0.5.3-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "0a6cf417df5d0fc911f89447c9a662a9",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*",
"size": 116796,
"upload_time": "2018-11-19T20:05:37",
"url": "https://files.pythonhosted.org/packages/71/c6/06c014b92cc48270765d6a9418d82239b158d8a9b69e031b0e2c6598740b/tomlkit-0.5.3-py2.py3-none-any.whl"
}, },
{ "requires-python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
"comment_text": "", },
"digests": {
"md5": "a708470b53d689013f2fc9f0a7902adf",
"sha256": "d6506342615d051bc961f70bfcfa3d29b6616cc08a3ddfd4bc24196f16fd4ec2"
},
"downloads": -1,
"filename": "tomlkit-0.5.3.tar.gz",
"has_sig": false,
"md5_digest": "a708470b53d689013f2fc9f0a7902adf",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*",
"size": 29864,
"upload_time": "2018-11-19T20:05:39",
"url": "https://files.pythonhosted.org/packages/f7/f7/bbd9213bfe76cb7821c897f9ed74877fd74993b4ca2fe9513eb5a31030f9/tomlkit-0.5.3.tar.gz"
}
]
},
"urls": [
{ {
"comment_text": "", "filename": "tomlkit-0.5.3-py2.py3-none-any.whl",
"digests": { "url": "https://files.pythonhosted.org/packages/71/c6/06c014b92cc48270765d6a9418d82239b158d8a9b69e031b0e2c6598740b/tomlkit-0.5.3-py2.py3-none-any.whl",
"hashes": {
"md5": "0a6cf417df5d0fc911f89447c9a662a9", "md5": "0a6cf417df5d0fc911f89447c9a662a9",
"sha256": "f077456d35303e7908cc233b340f71e0bec96f63429997f38ca9272b7d64029e" "sha256": "f077456d35303e7908cc233b340f71e0bec96f63429997f38ca9272b7d64029e"
}, },
"downloads": -1, "requires-python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
"filename": "tomlkit-0.5.3-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "0a6cf417df5d0fc911f89447c9a662a9",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*",
"size": 116796,
"upload_time": "2018-11-19T20:05:37",
"url": "https://files.pythonhosted.org/packages/71/c6/06c014b92cc48270765d6a9418d82239b158d8a9b69e031b0e2c6598740b/tomlkit-0.5.3-py2.py3-none-any.whl"
}, },
{ {
"comment_text": "", "filename": "tomlkit-0.5.3.tar.gz",
"digests": { "url": "https://files.pythonhosted.org/packages/f7/f7/bbd9213bfe76cb7821c897f9ed74877fd74993b4ca2fe9513eb5a31030f9/tomlkit-0.5.3.tar.gz",
"hashes": {
"md5": "a708470b53d689013f2fc9f0a7902adf", "md5": "a708470b53d689013f2fc9f0a7902adf",
"sha256": "d6506342615d051bc961f70bfcfa3d29b6616cc08a3ddfd4bc24196f16fd4ec2" "sha256": "d6506342615d051bc961f70bfcfa3d29b6616cc08a3ddfd4bc24196f16fd4ec2"
}, },
"downloads": -1, "requires-python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
"filename": "tomlkit-0.5.3.tar.gz",
"has_sig": false,
"md5_digest": "a708470b53d689013f2fc9f0a7902adf",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*",
"size": 29864,
"upload_time": "2018-11-19T20:05:39",
"url": "https://files.pythonhosted.org/packages/f7/f7/bbd9213bfe76cb7821c897f9ed74877fd74993b4ca2fe9513eb5a31030f9/tomlkit-0.5.3.tar.gz"
} }
] ],
"meta": {
"api-version": "1.0",
"_last-serial": 4504211
}
} }
{ {
"info": { "name": "trackpy",
"author": "Trackpy Contributors", "files": [
"author_email": "daniel.b.allan@gmail.com",
"bugtrack_url": null,
"classifiers": [],
"description": "",
"description_content_type": "",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/soft-matter/trackpy",
"keywords": "",
"license": "",
"maintainer": "",
"maintainer_email": "",
"name": "trackpy",
"package_url": "https://pypi.org/project/trackpy/",
"platform": "",
"project_url": "https://pypi.org/project/trackpy/",
"project_urls": {
"Homepage": "https://github.com/soft-matter/trackpy"
},
"release_url": "https://pypi.org/project/trackpy/0.4.1/",
"requires_dist": null,
"requires_python": "",
"summary": "particle-tracking toolkit",
"version": "0.4.1"
},
"last_serial": 3786947,
"releases": {
"0.4.1": [
{
"comment_text": "",
"digests": {
"md5": "4c92e8b74840f57c6047f56a4a4412c4",
"sha256": "f682f75e99f6c29c65e8531899b957c67d9d5a027b28b44258fa2c4a18e851cd"
},
"downloads": -1,
"filename": "trackpy-0.4.1.tar.gz",
"has_sig": false,
"md5_digest": "4c92e8b74840f57c6047f56a4a4412c4",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 121998,
"upload_time": "2018-04-21T09:59:50",
"url": "https://files.pythonhosted.org/packages/62/31/797febf2ea8ea316c345c1d0f10503c3901f3fca5c3ffdc6e92717efdcad/trackpy-0.4.1.tar.gz"
}
],
"unknown": [
{
"comment_text": "",
"digests": {
"md5": "6a879fe7871bd5c62d41b5a2ed84a5cd",
"sha256": "88fedb53b03451a56422d4ecb393ea6bb043e821b3ee1e6518485b303e3bddf5"
},
"downloads": -1,
"filename": "trackpy-unknown.tar.gz",
"has_sig": false,
"md5_digest": "6a879fe7871bd5c62d41b5a2ed84a5cd",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 63292,
"upload_time": "2014-10-13T17:33:16",
"url": "https://files.pythonhosted.org/packages/35/23/3b6422d3c006251e2ad857f5fe520b193d473154f88d1f27de50798f2c6c/trackpy-unknown.tar.gz"
}
]
},
"urls": [
{ {
"comment_text": "", "filename": "trackpy-0.4.1.tar.gz",
"digests": { "url": "https://files.pythonhosted.org/packages/62/31/797febf2ea8ea316c345c1d0f10503c3901f3fca5c3ffdc6e92717efdcad/trackpy-0.4.1.tar.gz",
"hashes": {
"md5": "4c92e8b74840f57c6047f56a4a4412c4", "md5": "4c92e8b74840f57c6047f56a4a4412c4",
"sha256": "f682f75e99f6c29c65e8531899b957c67d9d5a027b28b44258fa2c4a18e851cd" "sha256": "f682f75e99f6c29c65e8531899b957c67d9d5a027b28b44258fa2c4a18e851cd"
}, }
"downloads": -1, },
"filename": "trackpy-0.4.1.tar.gz", {
"has_sig": false, "filename": "trackpy-unknown.tar.gz",
"md5_digest": "4c92e8b74840f57c6047f56a4a4412c4", "url": "https://files.pythonhosted.org/packages/35/23/3b6422d3c006251e2ad857f5fe520b193d473154f88d1f27de50798f2c6c/trackpy-unknown.tar.gz",
"packagetype": "sdist", "hashes": {
"python_version": "source", "md5": "6a879fe7871bd5c62d41b5a2ed84a5cd",
"requires_python": null, "sha256": "88fedb53b03451a56422d4ecb393ea6bb043e821b3ee1e6518485b303e3bddf5"
"size": 121998, }
"upload_time": "2018-04-21T09:59:50",
"url": "https://files.pythonhosted.org/packages/62/31/797febf2ea8ea316c345c1d0f10503c3901f3fca5c3ffdc6e92717efdcad/trackpy-0.4.1.tar.gz"
} }
] ],
"meta": {
"api-version": "1.0",
"_last-serial": 3786947
}
} }
{
"info": {
"author": "Trackpy Contributors",
"author_email": "daniel.b.allan@gmail.com",
"bugtrack_url": null,
"classifiers": [],
"description": "trackpy\n=======\n\n|build status| |Build status| |DOI|\n\nWhat is it?\n-----------\n\n**trackpy** is a Python package for particle tracking in 2D, 3D, and\nhigher dimensions. `**Read the\nwalkthrough** <http://soft-matter.github.io/trackpy/dev/tutorial/walkthrough.html>`__\nto skim or study an example project from start to finish.\n\nDocumentation\n-------------\n\n`**Read the documentation** <http://soft-matter.github.io/trackpy/>`__\nfor\n\n- an introduction\n- tutorials on the basics, 3D tracking, and much, much more\n- easy `installation\n instructions <http://soft-matter.github.io/trackpy/dev/installation.html>`__\n- the reference guide\n\nIf you use trackpy for published research, please `cite the\nrelease <http://soft-matter.github.io/trackpy/dev/introduction.html#citing-trackpy>`__\nboth to credit the contributors, and to direct your readers to the exact\nversion of trackpy they could use to reproduce your results.\n\n.. |build status| image:: https://travis-ci.org/soft-matter/trackpy.png?branch=master\n :target: https://travis-ci.org/soft-matter/trackpy\n.. |Build status| image:: https://ci.appveyor.com/api/projects/status/bc5umcboh3elm8oh?svg=true\n :target: https://ci.appveyor.com/project/caspervdw/trackpy\n.. |DOI| image:: https://zenodo.org/badge/doi/10.5281/zenodo.1213240.svg\n :target: http://dx.doi.org/10.5281/zenodo.1213240",
"description_content_type": "",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/soft-matter/trackpy",
"keywords": "",
"license": "",
"maintainer": "",
"maintainer_email": "",
"name": "trackpy",
"package_url": "https://pypi.org/project/trackpy/",
"platform": "",
"project_url": "https://pypi.org/project/trackpy/",
"project_urls": {
"Homepage": "https://github.com/soft-matter/trackpy"
},
"release_url": "https://pypi.org/project/trackpy/0.4.1/",
"requires_dist": null,
"requires_python": "",
"summary": "particle-tracking toolkit",
"version": "0.4.1",
"yanked": false,
"yanked_reason": null
},
"last_serial": 10042261,
"urls": [
{
"comment_text": "",
"digests": {
"md5": "4c92e8b74840f57c6047f56a4a4412c4",
"sha256": "f682f75e99f6c29c65e8531899b957c67d9d5a027b28b44258fa2c4a18e851cd"
},
"downloads": -1,
"filename": "trackpy-0.4.1.tar.gz",
"has_sig": false,
"md5_digest": "4c92e8b74840f57c6047f56a4a4412c4",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 121998,
"upload_time": "2018-04-21T09:59:50",
"upload_time_iso_8601": "2018-04-21T09:59:50.546774Z",
"url": "https://files.pythonhosted.org/packages/62/31/797febf2ea8ea316c345c1d0f10503c3901f3fca5c3ffdc6e92717efdcad/trackpy-0.4.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"vulnerabilities": []
}
{ {
"info": { "name": "Twisted",
"author": "Twisted Matrix Laboratories", "files": [
"author_email": "twisted-python@twistedmatrix.com",
"bugtrack_url": null,
"classifiers": [
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7"
],
"description": "description",
"description_content_type": "",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "http://twistedmatrix.com/",
"keywords": "",
"license": "MIT",
"maintainer": "Glyph Lefkowitz",
"maintainer_email": "glyph@twistedmatrix.com",
"name": "Twisted",
"package_url": "https://pypi.org/project/Twisted/",
"platform": "",
"project_url": "https://pypi.org/project/Twisted/",
"project_urls": {
"Homepage": "http://twistedmatrix.com/"
},
"release_url": "https://pypi.org/project/Twisted/18.9.0/",
"requires_dist": null,
"requires_python": "",
"summary": "An asynchronous networking framework written in Python",
"version": "18.9.0"
},
"last_serial": 4376865,
"releases": {
"18.9.0": [
{
"comment_text": "",
"digests": {
"md5": "20fe2ec156e6e45b0b0d2ff06d9e828f",
"sha256": "294be2c6bf84ae776df2fc98e7af7d6537e1c5e60a46d33c3ce2a197677da395"
},
"downloads": -1,
"filename": "Twisted-18.9.0.tar.bz2",
"has_sig": false,
"md5_digest": "20fe2ec156e6e45b0b0d2ff06d9e828f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 3088398,
"upload_time": "2018-10-15T09:11:22",
"url": "https://files.pythonhosted.org/packages/5d/0e/a72d85a55761c2c3ff1cb968143a2fd5f360220779ed90e0fadf4106d4f2/Twisted-18.9.0.tar.bz2"
}
]
},
"urls": [
{ {
"comment_text": "", "filename": "Twisted-18.9.0.tar.bz2",
"digests": { "url": "https://files.pythonhosted.org/packages/5d/0e/a72d85a55761c2c3ff1cb968143a2fd5f360220779ed90e0fadf4106d4f2/Twisted-18.9.0.tar.bz2",
"hashes": {
"md5": "20fe2ec156e6e45b0b0d2ff06d9e828f", "md5": "20fe2ec156e6e45b0b0d2ff06d9e828f",
"sha256": "294be2c6bf84ae776df2fc98e7af7d6537e1c5e60a46d33c3ce2a197677da395" "sha256": "294be2c6bf84ae776df2fc98e7af7d6537e1c5e60a46d33c3ce2a197677da395"
}, }
"downloads": -1,
"filename": "Twisted-18.9.0.tar.bz2",
"has_sig": false,
"md5_digest": "20fe2ec156e6e45b0b0d2ff06d9e828f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 3088398,
"upload_time": "2018-10-15T09:11:22",
"url": "https://files.pythonhosted.org/packages/5d/0e/a72d85a55761c2c3ff1cb968143a2fd5f360220779ed90e0fadf4106d4f2/Twisted-18.9.0.tar.bz2"
} }
] ],
"meta": {
"api-version": "1.0",
"_last-serial": 4376865
}
} }
...@@ -6,6 +6,7 @@ import shutil ...@@ -6,6 +6,7 @@ import shutil
from io import BytesIO from io import BytesIO
from pathlib import Path from pathlib import Path
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
from typing import Any
import pytest import pytest
...@@ -35,7 +36,9 @@ class MockRepository(PyPiRepository): ...@@ -35,7 +36,9 @@ class MockRepository(PyPiRepository):
def __init__(self, fallback: bool = False) -> None: def __init__(self, fallback: bool = False) -> None:
super().__init__(url="http://foo.bar", disable_cache=True, fallback=fallback) super().__init__(url="http://foo.bar", disable_cache=True, fallback=fallback)
def _get(self, url: str) -> dict | None: def _get(
self, url: str, headers: dict[str, str] | None = None
) -> dict[str, Any] | None:
parts = url.split("/")[1:] parts = url.split("/")[1:]
name = parts[0] name = parts[0]
if len(parts) == 3: if len(parts) == 3:
...@@ -47,8 +50,6 @@ class MockRepository(PyPiRepository): ...@@ -47,8 +50,6 @@ class MockRepository(PyPiRepository):
fixture = self.JSON_FIXTURES / (name + ".json") fixture = self.JSON_FIXTURES / (name + ".json")
else: else:
fixture = self.JSON_FIXTURES / name / (version + ".json") fixture = self.JSON_FIXTURES / name / (version + ".json")
if not fixture.exists():
fixture = self.JSON_FIXTURES / (name + ".json")
if not fixture.exists(): if not fixture.exists():
return None return None
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment