OXIESEC PANEL
- Current Dir:
/
/
usr
/
local
/
lib
/
python3.6
/
dist-packages
/
importlib_resources
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
10/28/2024 06:26:52 AM
rwxrwxr-x
📄
__init__.py
525 bytes
05/09/2024 06:58:26 AM
rw-r--r--
📁
__pycache__
-
05/09/2024 06:58:27 AM
rwxr-xr-x
📄
_adapters.py
4.4 KB
05/09/2024 06:58:26 AM
rw-r--r--
📄
_common.py
2.68 KB
05/09/2024 06:58:26 AM
rw-r--r--
📄
_compat.py
2.64 KB
05/09/2024 06:58:26 AM
rw-r--r--
📄
_itertools.py
884 bytes
05/09/2024 06:58:26 AM
rw-r--r--
📄
_legacy.py
3.41 KB
05/09/2024 06:58:26 AM
rw-r--r--
📄
abc.py
3.79 KB
05/09/2024 06:58:26 AM
rw-r--r--
📄
py.typed
0 bytes
05/09/2024 06:58:26 AM
rw-r--r--
📄
readers.py
3.48 KB
05/09/2024 06:58:26 AM
rw-r--r--
📄
simple.py
2.77 KB
05/09/2024 06:58:26 AM
rw-r--r--
📁
tests
-
05/09/2024 06:58:27 AM
rwxr-xr-x
Editing: _common.py
Close
import os import pathlib import tempfile import functools import contextlib import types import importlib from typing import Union, Optional from .abc import ResourceReader, Traversable from ._compat import wrap_spec Package = Union[types.ModuleType, str] def files(package): # type: (Package) -> Traversable """ Get a Traversable resource from a package """ return from_package(get_package(package)) def get_resource_reader(package): # type: (types.ModuleType) -> Optional[ResourceReader] """ Return the package's loader if it's a ResourceReader. """ # We can't use # a issubclass() check here because apparently abc.'s __subclasscheck__() # hook wants to create a weak reference to the object, but # zipimport.zipimporter does not support weak references, resulting in a # TypeError. That seems terrible. spec = package.__spec__ reader = getattr(spec.loader, 'get_resource_reader', None) # type: ignore if reader is None: return None return reader(spec.name) # type: ignore def resolve(cand): # type: (Package) -> types.ModuleType return cand if isinstance(cand, types.ModuleType) else importlib.import_module(cand) def get_package(package): # type: (Package) -> types.ModuleType """Take a package name or module object and return the module. Raise an exception if the resolved module is not a package. """ resolved = resolve(package) if wrap_spec(resolved).submodule_search_locations is None: raise TypeError(f'{package!r} is not a package') return resolved def from_package(package): """ Return a Traversable object for the given package. """ spec = wrap_spec(package) reader = spec.loader.get_resource_reader(spec.name) return reader.files() @contextlib.contextmanager def _tempfile(reader, suffix=''): # Not using tempfile.NamedTemporaryFile as it leads to deeper 'try' # blocks due to the need to close the temporary file to work on Windows # properly. fd, raw_path = tempfile.mkstemp(suffix=suffix) try: try: os.write(fd, reader()) finally: os.close(fd) del reader yield pathlib.Path(raw_path) finally: try: os.remove(raw_path) except FileNotFoundError: pass @functools.singledispatch def as_file(path): """ Given a Traversable object, return that object as a path on the local file system in a context manager. """ return _tempfile(path.read_bytes, suffix=path.name) @as_file.register(pathlib.Path) @contextlib.contextmanager def _(path): """ Degenerate behavior for pathlib.Path objects. """ yield path