#!/usr/bin/env python3 import urllib.parse # Fix the issue # urllib.parse.uses_netloc.append('scgi') # I have encountered a couple of projects in the wild that use this pattern for # ensuring that a URL is well formed. Unfortunately it seems to improperly handle # the case where the netloc is empty. print("Testing urlparse/urlunparse") print("-" * 27) url = 'scgi:///path/to/unix/domain/socket' scheme, netloc, path, params, query, fragment = urllib.parse.urlparse(url, 'http') clean_url = urllib.parse.urlunparse((scheme, netloc, path, params, query, fragment)) print("Expected result: %s" % url) print("Actual result: %s" % clean_url) print() print("Testing urlsplit/urlunsplit") print("-" * 27) url = 'scgi:///path/to/unix/domain/socket' scheme, netloc, path, query, fragment = urllib.parse.urlsplit(url, 'http') clean_url = urllib.parse.urlunsplit((scheme, netloc, path, query, fragment)) print("Expected result: %s" % url) print("Actual result: %s" % clean_url)