mirror of https://github.com/python/cpython
bpo-33537: Add an __all__ to importlib.resources (#6920)
This commit is contained in:
parent
dff46758f2
commit
0ed66df524
|
@ -2,7 +2,6 @@ import os
|
|||
import tempfile
|
||||
|
||||
from . import abc as resources_abc
|
||||
from builtins import open as builtins_open
|
||||
from contextlib import contextmanager, suppress
|
||||
from importlib import import_module
|
||||
from importlib.abc import ResourceLoader
|
||||
|
@ -15,6 +14,19 @@ from typing.io import BinaryIO, TextIO
|
|||
from zipimport import ZipImportError
|
||||
|
||||
|
||||
__all__ = [
|
||||
'Package',
|
||||
'Resource',
|
||||
'contents',
|
||||
'is_resource',
|
||||
'open_binary',
|
||||
'open_text',
|
||||
'path',
|
||||
'read_binary',
|
||||
'read_text',
|
||||
]
|
||||
|
||||
|
||||
Package = Union[str, ModuleType]
|
||||
Resource = Union[str, os.PathLike]
|
||||
|
||||
|
@ -82,7 +94,7 @@ def open_binary(package: Package, resource: Resource) -> BinaryIO:
|
|||
package_path = os.path.dirname(absolute_package_path)
|
||||
full_path = os.path.join(package_path, resource)
|
||||
try:
|
||||
return builtins_open(full_path, mode='rb')
|
||||
return open(full_path, mode='rb')
|
||||
except OSError:
|
||||
# Just assume the loader is a resource loader; all the relevant
|
||||
# importlib.machinery loaders are and an AttributeError for
|
||||
|
@ -116,8 +128,7 @@ def open_text(package: Package,
|
|||
package_path = os.path.dirname(absolute_package_path)
|
||||
full_path = os.path.join(package_path, resource)
|
||||
try:
|
||||
return builtins_open(
|
||||
full_path, mode='r', encoding=encoding, errors=errors)
|
||||
return open(full_path, mode='r', encoding=encoding, errors=errors)
|
||||
except OSError:
|
||||
# Just assume the loader is a resource loader; all the relevant
|
||||
# importlib.machinery loaders are and an AttributeError for
|
||||
|
@ -248,10 +259,10 @@ def contents(package: Package) -> Iterable[str]:
|
|||
return os.listdir(package_directory)
|
||||
|
||||
|
||||
# Private implementation of ResourceReader and get_resource_reader() for
|
||||
# zipimport. Don't use these directly! We're implementing these in Python
|
||||
# because 1) it's easier, 2) zipimport will likely get rewritten in Python
|
||||
# itself at some point, so doing this all in C would just be a waste of
|
||||
# Private implementation of ResourceReader and get_resource_reader() called
|
||||
# from zipimport.c. Don't use these directly! We're implementing these in
|
||||
# Python because 1) it's easier, 2) zipimport may get rewritten in Python
|
||||
# itself at some point, so doing this all in C would difficult and a waste of
|
||||
# effort.
|
||||
|
||||
class _ZipImportResourceReader(resources_abc.ResourceReader):
|
||||
|
@ -322,6 +333,7 @@ class _ZipImportResourceReader(resources_abc.ResourceReader):
|
|||
yield parent_name
|
||||
|
||||
|
||||
# Called from zipimport.c
|
||||
def _zipimport_get_resource_reader(zipimporter, fullname):
|
||||
try:
|
||||
if not zipimporter.is_package(fullname):
|
||||
|
|
Loading…
Reference in New Issue