frompip._vendor.six.moves.urllibimportparseasurllib_parseclassPackageIndex(object):"""Represents a Package Index and provides easier access to endpoints """def__init__(self,url,file_storage_domain):# type: (str, str) -> Nonesuper(PackageIndex,self).__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')