global _backends, _forced_backend if _forced_backend: return _forced_backend(pu) elif not pu.scheme in _backends: raise UnsupportedBackendScheme(url_string) else: try: return _backends[pu.scheme](pu) except ImportError: raise BackendException(_("Could not initialize backend: %s") % str(sys.exc_info()[1])) _urlparser_initialized = False _urlparser_initialized_lock = dup_threading.threading_module().Lock() def _ensure_urlparser_initialized(): """ Ensure that the appropriate clobbering of variables in the urlparser module has been done. In the future, the need for this clobbering to begin with should preferably be eliminated. """ def init(): global _urlparser_initialized if not _urlparser_initialized: # These URL schemes have a backend with a notion of an RFC "network location". # The 'file' and 's3+http' schemes should not be in this list. # 'http' and 'https' are not actually used for duplicity backend urls, but are needed # in order to properly support urls returned from some webdav servers. adding them here
# Implicit local path assert pu.scheme, "should be a backend url according to is_backend_url" global _backends, _forced_backend if _forced_backend: return _forced_backend(pu) elif not pu.scheme in _backends: raise UnsupportedBackendScheme(url_string) else: return _backends[pu.scheme](pu) _urlparser_initialized = False _urlparser_initialized_lock = dup_threading.threading_module().Lock() def _ensure_urlparser_initialized(): """ Ensure that the appropriate clobbering of variables in the urlparser module has been done. In the future, the need for this clobbering to begin with should preferably be eliminated. """ def init(): global _urlparser_initialized if not _urlparser_initialized: # These URL schemes have a backend with a notion of an RFC "network location". # The 'file' and 's3+http' schemes should not be in this list. # 'http' and 'https' are not actually used for duplicity backend urls, but are needed