@@ -50,17 +50,15 @@ def safe_urlparse(href: str) -> URLParseResult:
5050 Returns:
5151 urllib.parse.ParseResult : The named tuple representing the parsed HREF.
5252 """
53- print ("href:" , href )
5453 parsed = urlparse (href )
55- print (parsed .scheme , parsed .netloc , parsed .path )
5654 if parsed .scheme != "" and (
5755 href .lower ().startswith (f"{ parsed .scheme } :\\ " )
5856 or (
5957 href .lower ().startswith (f"{ parsed .scheme } :/" )
6058 and not href .lower ().startswith (f"{ parsed .scheme } ://" )
6159 )
6260 ):
63- output = URLParseResult (
61+ return URLParseResult (
6462 scheme = "" ,
6563 netloc = "" ,
6664 path = "{}:{}" .format (
@@ -73,19 +71,22 @@ def safe_urlparse(href: str) -> URLParseResult:
7371 query = parsed .query ,
7472 fragment = parsed .fragment ,
7573 )
76- print ("non-file scheme gives:" , output .path )
77- return output
78- if parsed .scheme == "file" and parsed .netloc :
79- output = URLParseResult (
74+ if parsed .scheme == "file" :
75+ # Windows drives sometimes get parsed as the netloc and sometimes
76+ # as part of the parsed.path.
77+ if parsed .netloc :
78+ path = f"{ parsed .netloc } { parsed .path } "
79+ elif parsed .path .startswith ("/" ) and os .name == "nt" :
80+ path = parsed .path [1 :]
81+
82+ return URLParseResult (
8083 scheme = parsed .scheme ,
8184 netloc = "" ,
82- path = f" { parsed . netloc } { parsed . path } " ,
85+ path = path ,
8386 params = parsed .params ,
8487 query = parsed .query ,
8588 fragment = parsed .fragment ,
8689 )
87- print ("file scheme gives:" , output .path )
88- return output
8990 else :
9091 return parsed
9192
0 commit comments