diff mercurial/templater.py @ 45320:4aa484efc926

templater: add exception-raising version of open_template() I'm about to add another caller of `open_template()` (in the template loader). That caller will want to get exceptions instead of `(None, None)` if the template doesn't exist. This patch therefore changes `open_template()` to raise exceptions and adds a new `try_open_template()` that returns the `(None, None)` value. Differential Revision: https://phab.mercurial-scm.org/D8905
author Martin von Zweigbergk <martinvonz@google.com>
date Thu, 06 Aug 2020 09:50:10 -0700
parents 6e6fe826ba69
children 735756ecda8c
line wrap: on
line diff
--- a/mercurial/templater.py	Wed Aug 05 22:13:51 2020 -0700
+++ b/mercurial/templater.py	Thu Aug 06 09:50:10 2020 -0700
@@ -1095,17 +1095,18 @@
         templatepath = templatedir()
     if templatepath is not None or os.path.isabs(name):
         f = os.path.join(templatepath, name)
-        try:
-            return f, open(f, mode='rb')
-        except EnvironmentError:
-            return None, None
+        return f, open(f, mode='rb')
     else:
         name_parts = pycompat.sysstr(name).split('/')
         package_name = '.'.join(['mercurial', 'templates'] + name_parts[:-1])
-        try:
-            return (
-                name,
-                resourceutil.open_resource(package_name, name_parts[-1]),
-            )
-        except (ImportError, OSError):
-            return None, None
+        return (
+            name,
+            resourceutil.open_resource(package_name, name_parts[-1]),
+        )
+
+
+def try_open_template(name, templatepath=None):
+    try:
+        return open_template(name, templatepath)
+    except (EnvironmentError, ImportError):
+        return None, None