importurllib.parseclassPackageIndex:"""Represents a Package Index and provides easier access to endpoints """__slots__=['url','netloc','simple_url','pypi_url','file_storage_domain']def__init__(self,url,file_storage_domain):# type: (str, str) -> Nonesuper().__init__()self.url=urlself.netloc=urllib.parse.urlsplit(url).netlocself.simple_url=self._url_for_path('simple')self.pypi_url=self._url_for_path('pypi')# This is part of a temporary hack used to block installs of PyPI# packages which depend on external urls only necessary until PyPI can# block such packages themselvesself.file_storage_domain=file_storage_domaindef_url_for_path(self,path):# type: (str) -> strreturnurllib.parse.urljoin(self.url,path)PyPI=PackageIndex('https://pypi.org/',file_storage_domain='files.pythonhosted.org')TestPyPI=PackageIndex('https://test.pypi.org/',file_storage_domain='test-files.pythonhosted.org')