Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/utils/resourceutil.py @ 43960:75ec46c63657
resourceutil: use `from importlib import resources`
Without this patch, we get the following error from when trying to run
hg with PyOxidizer:
module 'importlib' has no attribute 'resources'
I don't know what why that happens, but `from importlib import
resources` is the form I would prefer anyway, so let's use that now
that the impoort-checker has been fixed.
Differential Revision: https://phab.mercurial-scm.org/D7701
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Wed, 18 Dec 2019 13:30:48 -0800 |
parents | 4d59cc8bda65 |
children | 52f0140c2604 |
comparison
equal
deleted
inserted
replaced
43959:303576116ac1 | 43960:75ec46c63657 |
---|---|
35 datapath = os.path.dirname(pycompat.sysexecutable) | 35 datapath = os.path.dirname(pycompat.sysexecutable) |
36 else: | 36 else: |
37 datapath = os.path.dirname(os.path.dirname(pycompat.fsencode(__file__))) | 37 datapath = os.path.dirname(os.path.dirname(pycompat.fsencode(__file__))) |
38 | 38 |
39 try: | 39 try: |
40 import importlib | 40 from importlib import resources |
41 | 41 |
42 # Force loading of the resources module | 42 # Force loading of the resources module |
43 importlib.resources.open_binary # pytype: disable=module-attr | 43 resources.open_binary # pytype: disable=module-attr |
44 | 44 |
45 def open_resource(package, name): | 45 def open_resource(package, name): |
46 package = b'mercurial.' + package | 46 package = b'mercurial.' + package |
47 return importlib.resources.open_binary( # pytype: disable=module-attr | 47 return resources.open_binary( # pytype: disable=module-attr |
48 pycompat.sysstr(package), pycompat.sysstr(name) | 48 pycompat.sysstr(package), pycompat.sysstr(name) |
49 ) | 49 ) |
50 | 50 |
51 | 51 |
52 except AttributeError: | 52 except (ImportError, AttributeError): |
53 | 53 |
54 def _package_path(package): | 54 def _package_path(package): |
55 return os.path.join(datapath, *package.split(b'.')) | 55 return os.path.join(datapath, *package.split(b'.')) |
56 | 56 |
57 def open_resource(package, name): | 57 def open_resource(package, name): |