mercurial/utils/resourceutil.py
changeset 44027 52f0140c2604
parent 43955 75ec46c63657
child 44028 42a897bf678c
equal deleted inserted replaced
44026:44b03c0313aa 44027:52f0140c2604
    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     _rootpath = os.path.dirname(datapath)
    38 
    39 
    39 try:
    40 try:
    40     from importlib import resources
    41     from importlib import resources
    41 
    42 
    42     # Force loading of the resources module
    43     # Force loading of the resources module
    43     resources.open_binary  # pytype: disable=module-attr
    44     resources.open_binary  # pytype: disable=module-attr
    44 
    45 
    45     def open_resource(package, name):
    46     def open_resource(package, name):
    46         package = b'mercurial.' + package
       
    47         return 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 (ImportError, 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(_rootpath, *package.split(b'.'))
    56 
    56 
    57     def open_resource(package, name):
    57     def open_resource(package, name):
    58         path = os.path.join(_package_path(package), name)
    58         path = os.path.join(_package_path(package), name)
    59         return open(path, 'rb')
    59         return open(path, 'rb')