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):