@@ -807,9 +807,16 @@ def open_url(self, url, warning=None): # noqa: C901 # is too complex (12)
807
807
else :
808
808
raise DistutilsError (f"Download error for { url } : { v } " ) from v
809
809
810
- def _download_url (self , url , tmpdir ):
811
- # Determine download filename
812
- #
810
+ @staticmethod
811
+ def _resolve_download_filename (url , tmpdir ):
812
+ """
813
+ >>> du = PackageIndex._resolve_download_filename
814
+ >>> root = getfixture('tmp_path')
815
+ >>> url = 'https://files.pythonhosted.org/packages/a9/5a/0db.../setuptools-78.1.0.tar.gz'
816
+ >>> import pathlib
817
+ >>> str(pathlib.Path(du(url, root)).relative_to(root))
818
+ 'setuptools-78.1.0.tar.gz'
819
+ """
813
820
name , _fragment = egg_info_for_url (url )
814
821
if name :
815
822
while '..' in name :
@@ -820,8 +827,13 @@ def _download_url(self, url, tmpdir):
820
827
if name .endswith ('.egg.zip' ):
821
828
name = name [:- 4 ] # strip the extra .zip before download
822
829
823
- filename = os .path .join (tmpdir , name )
830
+ return os .path .join (tmpdir , name )
824
831
832
+ def _download_url (self , url , tmpdir ):
833
+ """
834
+ Determine the download filename.
835
+ """
836
+ filename = self ._resolve_download_filename (url , tmpdir )
825
837
return self ._download_vcs (url , filename ) or self ._download_other (url , filename )
826
838
827
839
@staticmethod
0 commit comments