mercurial/utils/resourceutil.py
changeset 43871 1390bb81163e
parent 43862 5606e1cb4685
child 43905 4d59cc8bda65
equal deleted inserted replaced
43870:66af68d4c751 43871:1390bb81163e
    33 if mainfrozen() and getattr(sys, 'frozen', None) != 'macosx_app':
    33 if mainfrozen() and getattr(sys, 'frozen', None) != 'macosx_app':
    34     # executable version (py2exe) doesn't support __file__
    34     # executable version (py2exe) doesn't support __file__
    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 
       
    39 try:
       
    40     import importlib
       
    41 
       
    42     # Force loading of the resources module
       
    43     importlib.resources.open_binary
       
    44 
       
    45     def open_resource(package, name):
       
    46         package = b'mercurial.' + package
       
    47         return importlib.resources.open_binary(
       
    48             pycompat.sysstr(package), pycompat.sysstr(name)
       
    49         )
       
    50 
       
    51 
       
    52 except AttributeError:
       
    53 
       
    54     def _package_path(package):
       
    55         return os.path.join(datapath, *package.split(b'.'))
       
    56 
       
    57     def open_resource(package, name):
       
    58         path = os.path.join(_package_path(package), name)
       
    59         return open(path, 'rb')