def package_versions_json(context, request): """Render the package versions in JSON format""" pkgs = _package_versions(context, request) if not isinstance(pkgs, dict): return pkgs response = { "info": { "name": context.name, "license": "", "classifiers": [], }, "releases": {}, } max_version = None for filename, pkg in pkgs["pkgs"].items(): try: name, version_str = parse_filename(filename) except PackageParseError: continue version = pkg_resources.parse_version(version_str) if max_version is None or version > max_version: max_version = version release = { "filename": filename, "packagetype": get_packagetype(filename), "url": pkg.get("non_hashed_url", pkg["url"]), "requires_python": pkg["requires_python"], } if pkg.get("hash_sha256"): release["digests"] = { "md5": pkg["hash_md5"], "sha256": pkg["hash_sha256"] } release["md5_digest"] = pkg["hash_md5"] response["releases"].setdefault(version_str, []).append(release) if max_version is not None: response["info"]["version"] = str(max_version) response["urls"] = response["releases"].get(str(max_version), []) return response
def test_invalid(self): """get package type for invalid file name""" packagetype = util.get_packagetype("mypkg-1.1.tar") self.assertEqual(packagetype, "")
def test_wheel(self): """get package type for bdist_wheel""" packagetype = util.get_packagetype( "mypkg-1.1-cp38-cp38-manylinux2010_x86_64.whl") self.assertEqual(packagetype, "bdist_wheel")
def test_egg(self): """get package type for bdist_egg""" packagetype = util.get_packagetype("mypkg-1.1-py3.7-linux-x86_64.egg") self.assertEqual(packagetype, "bdist_egg")
def test_sdist(self): """get package type for sdist""" packagetype = util.get_packagetype("mypkg-1.1.tar.gz") self.assertEqual(packagetype, "sdist")