def __init__(self, package: Package, format_desc: Optional[Callable[..., Any]] = None): super().__init__(package) self._meta: dict = utils.get_package_meta(str(self.package), self.package.pretty_specs) self.format_desc = format_desc or (lambda n: n)
def test_get_package_meta(mocker): """should get package meta""" mock_req = mocker.patch.object(utils.helpers, 'requests') mock_data = { "releases": { "0.0.0": [{ "url": "early-version.tar.gz" }], "0.1.0": [{ "url": "do-not-return-me", }, { "url": "return-me.tar.gz" }], } } mock_req.get.return_value.json.return_value = mock_data result = utils.get_package_meta("foobar") assert result == {"url": "return-me.tar.gz"} mock_req.get.assert_called_once_with("https://pypi.org/pypi/foobar/json") result = utils.get_package_meta("foobar", spec="==0.0.0") assert result == {"url": "early-version.tar.gz"}
def test_get_package_meta(mocker, requests_mock): """should get package meta""" mock_data = { "releases": { "0.0.0": [{ "url": "early-version.tar.gz" }], "0.1.0": [{ "url": "do-not-return-me", }, { "url": "return-me.tar.gz" }], } } requests_mock.get("https://pypi.org/pypi/foobar/json", json=mock_data) result = utils.get_package_meta("foobar", "https://pypi.org/pypi/foobar/json") assert result == {"url": "return-me.tar.gz"} result = utils.get_package_meta("foobar==0.0.0", "https://pypi.org/pypi/foobar/json") assert result == {"url": "early-version.tar.gz"}
def __init__(self, package: Package, format_desc: Optional[Callable[..., Any]] = None): super().__init__(package) try: utils.ensure_valid_url(self.repo_url) except Exception: raise RequirementNotFound(f"{self.repo_url} is not a valid url!", package=self.package) else: self._meta: dict = utils.get_package_meta(str(self.package), self.repo_url) self.format_desc = format_desc or (lambda n: n)
def load_packages(self): """Retrieves and stubs project requirements""" pkg_keys = set(self.packages.keys()) pkg_cache = self._get_cache('pkg_loaded') new_pkgs = pkg_keys.copy() if pkg_cache: new_pkgs = new_pkgs - set(pkg_cache) pkgs = [(name, s) for name, s in self.packages.items() if name in new_pkgs] if pkgs and not self._loaded: self.log.title("Fetching Requirements") for name, spec in pkgs: meta = utils.get_package_meta(name, spec=spec) tar_url = meta['url'] self._fetch_package(tar_url) self.update_all() self._set_cache('pkg_loaded', list(pkg_keys))