# HG changeset patch # User Pierre-Yves David # Date 1618473056 -7200 # Node ID c029b35565dd37ad3f9c26dfcccf6ab384e13c84 # Parent 20eba5cef2e0ff234160468f1a97a471316d6943 url_util: introduce a `try_path` function That function… try a build a path, returning None on failure. This helps us to simplify various part of the existing code. Differential Revision: https://phab.mercurial-scm.org/D10437 diff -r 20eba5cef2e0 -r c029b35565dd mercurial/utils/urlutil.py --- a/mercurial/utils/urlutil.py Tue Apr 20 11:22:35 2021 -0700 +++ b/mercurial/utils/urlutil.py Thu Apr 15 09:50:56 2021 +0200 @@ -445,6 +445,18 @@ return bytes(u) +def try_path(ui, url): + """try to build a path from a url + + Return None if no Path could built. + """ + try: + # we pass the ui instance are warning might need to be issued + return path(ui, None, rawloc=url) + except ValueError: + return None + + def get_push_paths(repo, ui, dests): """yields all the `path` selected as push destination by `dests`""" if not dests: @@ -471,10 +483,10 @@ url = ui.paths[source].rawloc else: # Try to resolve as a local path or URI. - try: - # we pass the ui instance are warning might need to be issued - url = path(ui, None, rawloc=source).rawloc - except ValueError: + path = try_path(ui, source) + if path is not None: + url = path.rawloc + else: url = source yield parseurl(url, default_branches) @@ -520,10 +532,10 @@ url = ui.paths[source].rawloc else: # Try to resolve as a local path or URI. - try: - # we pass the ui instance are warning might need to be issued - url = path(ui, None, rawloc=source).rawloc - except ValueError: + path = try_path(ui, source) + if path is not None: + url = path.rawloc + else: url = source return parseurl(url, default_branches) @@ -542,10 +554,10 @@ url = ui.paths[source].rawloc else: # Try to resolve as a local path or URI. - try: - # we pass the ui instance are warning might need to be issued - url = path(ui, None, rawloc=source).rawloc - except ValueError: + path = try_path(ui, source) + if path is not None: + url = path.rawloc + else: url = source clone_path, branch = parseurl(url, default_branches) return url, clone_path, branch @@ -607,16 +619,14 @@ # This may need to raise in the future. if not name: return None - - try: + if name in self: return self[name] - except KeyError: + else: # Try to resolve as a local path or URI. - try: - # we pass the ui instance are warning might need to be issued - return path(ui, None, rawloc=name) - except ValueError: + path = try_path(ui, name) + if path is None: raise error.RepoError(_(b'repository %s does not exist') % name) + return path.rawloc _pathsuboptions = {}