Mercurial > hg-stable
view mercurial/utils/resourceutil.py @ 43911:4d59cc8bda65
pytype: suppress warnings about no 'open_binary' on importlib.resources
Fixes these pytype warnings:
line 43, in <module>: No attribute 'open_binary' on module 'importlib.resources' [module-attr]
line 47, in open_resource: No attribute 'open_binary' on module 'importlib.resources' [module-attr]
For some reason, I can't upgrade from 3.6.8 in my WSL environment.
Differential Revision: https://phab.mercurial-scm.org/D7681
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Sun, 15 Dec 2019 23:46:10 -0500 |
parents | 1390bb81163e |
children | 75ec46c63657 |
line wrap: on
line source
# resourceutil.py - utility for looking up resources # # Copyright 2005 K. Thananchayan <thananck@yahoo.com> # Copyright 2005-2007 Matt Mackall <mpm@selenic.com> # Copyright 2006 Vadim Gelfer <vadim.gelfer@gmail.com> # # This software may be used and distributed according to the terms of the # GNU General Public License version 2 or any later version. from __future__ import absolute_import import imp import os import sys from .. import pycompat def mainfrozen(): """return True if we are a frozen executable. The code supports py2exe (most common, Windows only) and tools/freeze (portable, not much used). """ return ( pycompat.safehasattr(sys, "frozen") or pycompat.safehasattr(sys, "importers") # new py2exe or imp.is_frozen("__main__") # old py2exe ) # tools/freeze # the location of data files matching the source code if mainfrozen() and getattr(sys, 'frozen', None) != 'macosx_app': # executable version (py2exe) doesn't support __file__ datapath = os.path.dirname(pycompat.sysexecutable) else: datapath = os.path.dirname(os.path.dirname(pycompat.fsencode(__file__))) try: import importlib # Force loading of the resources module importlib.resources.open_binary # pytype: disable=module-attr def open_resource(package, name): package = b'mercurial.' + package return importlib.resources.open_binary( # pytype: disable=module-attr pycompat.sysstr(package), pycompat.sysstr(name) ) except AttributeError: def _package_path(package): return os.path.join(datapath, *package.split(b'.')) def open_resource(package, name): path = os.path.join(_package_path(package), name) return open(path, 'rb')