Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/utils/resourceutil.py @ 47911:08f16b3331df
resources: narrow the try:except clause to minimum
Otherwise this mind hides other import or attribute errors.
Differential Revision: https://phab.mercurial-scm.org/D11312
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Thu, 19 Aug 2021 17:42:55 +0200 |
parents | df94c13ddf60 |
children | c0588d389c5f |
comparison
equal
deleted
inserted
replaced
47910:155a2ec8a9dc | 47911:08f16b3331df |
---|---|
57 try: | 57 try: |
58 # importlib.resources exists from Python 3.7; see fallback in except clause | 58 # importlib.resources exists from Python 3.7; see fallback in except clause |
59 # further down | 59 # further down |
60 from importlib import resources | 60 from importlib import resources |
61 | 61 |
62 from .. import encoding | |
63 | |
64 # Force loading of the resources module | 62 # Force loading of the resources module |
65 resources.open_binary # pytype: disable=module-attr | 63 resources.open_binary # pytype: disable=module-attr |
66 | |
67 def open_resource(package, name): | |
68 return resources.open_binary( # pytype: disable=module-attr | |
69 pycompat.sysstr(package), pycompat.sysstr(name) | |
70 ) | |
71 | |
72 def is_resource(package, name): | |
73 return resources.is_resource( # pytype: disable=module-attr | |
74 pycompat.sysstr(package), encoding.strfromlocal(name) | |
75 ) | |
76 | |
77 def contents(package): | |
78 # pytype: disable=module-attr | |
79 for r in resources.contents(pycompat.sysstr(package)): | |
80 # pytype: enable=module-attr | |
81 yield encoding.strtolocal(r) | |
82 | |
83 | 64 |
84 except (ImportError, AttributeError): | 65 except (ImportError, AttributeError): |
85 # importlib.resources was not found (almost definitely because we're on a | 66 # importlib.resources was not found (almost definitely because we're on a |
86 # Python version before 3.7) | 67 # Python version before 3.7) |
87 | 68 |
100 def contents(package): | 81 def contents(package): |
101 path = pycompat.fsdecode(_package_path(package)) | 82 path = pycompat.fsdecode(_package_path(package)) |
102 | 83 |
103 for p in os.listdir(path): | 84 for p in os.listdir(path): |
104 yield pycompat.fsencode(p) | 85 yield pycompat.fsencode(p) |
86 | |
87 | |
88 else: | |
89 from .. import encoding | |
90 | |
91 def open_resource(package, name): | |
92 return resources.open_binary( # pytype: disable=module-attr | |
93 pycompat.sysstr(package), pycompat.sysstr(name) | |
94 ) | |
95 | |
96 def is_resource(package, name): | |
97 return resources.is_resource( # pytype: disable=module-attr | |
98 pycompat.sysstr(package), encoding.strfromlocal(name) | |
99 ) | |
100 | |
101 def contents(package): | |
102 # pytype: disable=module-attr | |
103 for r in resources.contents(pycompat.sysstr(package)): | |
104 # pytype: enable=module-attr | |
105 yield encoding.strtolocal(r) |