mercurial/utils/resourceutil.py
changeset 50928 d718eddf01d9
parent 50756 847f703a4d13
equal deleted inserted replaced
50927:7a8ea1397816 50928:d718eddf01d9
    20 
    20 
    21     The code supports py2exe (most common, Windows only) and tools/freeze
    21     The code supports py2exe (most common, Windows only) and tools/freeze
    22     (portable, not much used).
    22     (portable, not much used).
    23     """
    23     """
    24     return (
    24     return (
    25         pycompat.safehasattr(sys, "frozen")  # new py2exe
    25         hasattr(sys, "frozen")  # new py2exe
    26         or pycompat.safehasattr(sys, "importers")  # old py2exe
    26         or hasattr(sys, "importers")  # old py2exe
    27         or _imp.is_frozen("__main__")  # tools/freeze
    27         or _imp.is_frozen("__main__")  # tools/freeze
    28     )
    28     )
    29 
    29 
    30 
    30 
    31 # the location of data files matching the source code
    31 # the location of data files matching the source code
    57     # importlib.resources exists from Python 3.7; see fallback in except clause
    57     # importlib.resources exists from Python 3.7; see fallback in except clause
    58     # further down
    58     # further down
    59     from importlib import resources  # pytype: disable=import-error
    59     from importlib import resources  # pytype: disable=import-error
    60 
    60 
    61     # Force loading of the resources module
    61     # Force loading of the resources module
    62     if pycompat.safehasattr(resources, 'files'):
    62     if hasattr(resources, 'files'):
    63         resources.files  # pytype: disable=module-attr
    63         resources.files  # pytype: disable=module-attr
    64     else:
    64     else:
    65         resources.open_binary  # pytype: disable=module-attr
    65         resources.open_binary  # pytype: disable=module-attr
    66 
    66 
    67     # py2exe raises an AssertionError if uses importlib.resources
    67     # py2exe raises an AssertionError if uses importlib.resources
    93 
    93 
    94 else:
    94 else:
    95     from .. import encoding
    95     from .. import encoding
    96 
    96 
    97     def open_resource(package, name):
    97     def open_resource(package, name):
    98         if pycompat.safehasattr(resources, 'files'):
    98         if hasattr(resources, 'files'):
    99             return (
    99             return (
   100                 resources.files(  # pytype: disable=module-attr
   100                 resources.files(  # pytype: disable=module-attr
   101                     pycompat.sysstr(package)
   101                     pycompat.sysstr(package)
   102                 )
   102                 )
   103                 .joinpath(pycompat.sysstr(name))
   103                 .joinpath(pycompat.sysstr(name))