@@ -363,17 +363,24 @@ def escape_path(path: str) -> str:
363
363
364
364
365
365
def 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
369
376
370
- value = v [0 ]
371
- if len (v ) > 1 :
377
+ if date :
372
378
# 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 )
375
382
else :
376
- escaped_ver = escape_path (value )
383
+ escaped_ver = escape_path (version )
377
384
response = get_response (
378
385
url = f"https://proxy.golang.org/{ escaped_pkg } /@v/{ escaped_ver } .info" ,
379
386
content_type = "json" ,
@@ -386,7 +393,7 @@ def fetch_version_info(version_info: str, escaped_pkg: str) -> Optional[PackageV
386
393
)
387
394
release_date = dateparser .parse (response .get ("Time" , "" )) if response else None
388
395
389
- return PackageVersion (value = value , release_date = release_date )
396
+ return PackageVersion (value = version , release_date = release_date )
390
397
391
398
392
399
def composer_extract_versions (resp : dict , pkg : str ) -> Iterable [PackageVersion ]:
@@ -489,9 +496,10 @@ def get_pypi_latest_date(downloads):
489
496
490
497
491
498
def 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
+ """
495
503
try :
496
504
resp = requests .get (url = url , headers = headers )
497
505
except :
@@ -513,7 +521,18 @@ def get_response(url, content_type="json", headers=None):
513
521
514
522
515
523
def 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
+ """
517
536
return version and version .replace ("0:" , "" )
518
537
519
538
0 commit comments