ยปCore Development>Code coverage>Lib/packaging/pypi/base.py

Python code coverage for Lib/packaging/pypi/base.py

#countcontent
1n/a"""Base class for index crawlers."""
2n/a
3n/afrom packaging.pypi.dist import ReleasesList
4n/a
5n/a
6n/aclass BaseClient:
7n/a """Base class containing common methods for the index crawlers/clients"""
8n/a
9n/a def __init__(self, prefer_final, prefer_source):
10n/a self._prefer_final = prefer_final
11n/a self._prefer_source = prefer_source
12n/a self._index = self
13n/a
14n/a def _get_prefer_final(self, prefer_final=None):
15n/a """Return the prefer_final internal parameter or the specified one if
16n/a provided"""
17n/a if prefer_final:
18n/a return prefer_final
19n/a else:
20n/a return self._prefer_final
21n/a
22n/a def _get_prefer_source(self, prefer_source=None):
23n/a """Return the prefer_source internal parameter or the specified one if
24n/a provided"""
25n/a if prefer_source:
26n/a return prefer_source
27n/a else:
28n/a return self._prefer_source
29n/a
30n/a def _get_project(self, project_name):
31n/a """Return an project instance, create it if necessary"""
32n/a return self._projects.setdefault(project_name.lower(),
33n/a ReleasesList(project_name, index=self._index))
34n/a
35n/a def download_distribution(self, requirements, temp_path=None,
36n/a prefer_source=None, prefer_final=None):
37n/a """Download a distribution from the last release according to the
38n/a requirements.
39n/a
40n/a If temp_path is provided, download to this path, otherwise, create a
41n/a temporary location for the download and return it.
42n/a """
43n/a prefer_final = self._get_prefer_final(prefer_final)
44n/a prefer_source = self._get_prefer_source(prefer_source)
45n/a release = self.get_release(requirements, prefer_final)
46n/a if release:
47n/a dist = release.get_distribution(prefer_source=prefer_source)
48n/a return dist.download(temp_path)