@@ -363,17 +363,24 @@ def escape_path(path: str) -> str:
363363
364364
365365def fetch_version_info (version_info : str , escaped_pkg : str ) -> Optional [PackageVersion ]:
366- v = version_info .split ()
367- if not v :
368- return None
366+ # Example version_info:
367+ # "v1.3.0 2019-04-19T01:47:04Z"
368+ # "v1.3.0"
369+ version_parts = version_info .split ()
370+ if not version_parts :
371+ return
372+
373+ # Extract version and date if available
374+ version = version_parts [0 ]
375+ date = version_parts [1 ] if len (version_parts ) > 1 else None
369376
370- value = v [0 ]
371- if len (v ) > 1 :
377+ if date :
372378 # get release date from the second part. see
373- # https://github.com/golang/go/blob/master/src/cmd/go/internal/modfetch/proxy.go#latest()
374- release_date = dateparser .parse (v [1 ])
379+ # https://github.com/golang/go/blob/ac02fdec7cd16ea8d3de1fc33def9cfabec5170d/src/cmd/go/internal/modfetch/proxy.go#L136-L147
380+
381+ release_date = dateparser .parse (date )
375382 else :
376- escaped_ver = escape_path (value )
383+ escaped_ver = escape_path (version )
377384 response = get_response (
378385 url = f"https://proxy.golang.org/{ escaped_pkg } /@v/{ escaped_ver } .info" ,
379386 content_type = "json" ,
@@ -386,7 +393,7 @@ def fetch_version_info(version_info: str, escaped_pkg: str) -> Optional[PackageV
386393 )
387394 release_date = dateparser .parse (response .get ("Time" , "" )) if response else None
388395
389- return PackageVersion (value = value , release_date = release_date )
396+ return PackageVersion (value = version , release_date = release_date )
390397
391398
392399def composer_extract_versions (resp : dict , pkg : str ) -> Iterable [PackageVersion ]:
@@ -489,9 +496,10 @@ def get_pypi_latest_date(downloads):
489496
490497
491498def get_response (url , content_type = "json" , headers = None ):
492- """Fetch ``url`` and return its content as ``content_type`` which is one of binary, text or json."""
493- assert content_type in ("binary" , "text" , "json" , "yaml" )
494-
499+ """
500+ Fetch ``url`` and return its content as ``content_type`` which is
501+ one of binary, text, yaml or json.
502+ """
495503 try :
496504 resp = requests .get (url = url , headers = headers )
497505 except :
@@ -513,7 +521,18 @@ def get_response(url, content_type="json", headers=None):
513521
514522
515523def remove_debian_default_epoch (version ):
516- """Remove the default epoch from a Debian ``version`` string."""
524+ """
525+ Remove the default epoch from a Debian ``version`` string.
526+
527+ For Example::
528+ >>> remove_debian_default_epoch("0:1.2.3-4")
529+ '1.2.3-4'
530+ >>> remove_debian_default_epoch("1.2.3-4")
531+ '1.2.3-4'
532+ >>> remove_debian_default_epoch(None)
533+ >>> remove_debian_default_epoch("")
534+ ''
535+ """
517536 return version and version .replace ("0:" , "" )
518537
519538
0 commit comments