opt
/
alt
/
python310
/
lib64
/
python3.10
/
importlib
/
Go to Home Directory
+
Upload
Create File
root@0UT1S:~$
Execute
By Order of Mr.0UT1S
[DIR] ..
N/A
[DIR] __pycache__
N/A
[DIR] metadata
N/A
__init__.py
5.95 KB
Rename
Delete
_abc.py
1.81 KB
Rename
Delete
_adapters.py
1.86 KB
Rename
Delete
_bootstrap.py
40.50 KB
Rename
Delete
_bootstrap_external.py
63.33 KB
Rename
Delete
_common.py
3.15 KB
Rename
Delete
abc.py
14.08 KB
Rename
Delete
machinery.py
831 bytes
Rename
Delete
readers.py
3.50 KB
Rename
Delete
resources.py
5.57 KB
Rename
Delete
util.py
11.22 KB
Rename
Delete
from contextlib import suppress from . import abc class SpecLoaderAdapter: """ Adapt a package spec to adapt the underlying loader. """ def __init__(self, spec, adapter=lambda spec: spec.loader): self.spec = spec self.loader = adapter(spec) def __getattr__(self, name): return getattr(self.spec, name) class TraversableResourcesLoader: """ Adapt a loader to provide TraversableResources. """ def __init__(self, spec): self.spec = spec def get_resource_reader(self, name): return DegenerateFiles(self.spec)._native() class DegenerateFiles: """ Adapter for an existing or non-existant resource reader to provide a degenerate .files(). """ class Path(abc.Traversable): def iterdir(self): return iter(()) def is_dir(self): return False is_file = exists = is_dir # type: ignore def joinpath(self, other): return DegenerateFiles.Path() @property def name(self): return '' def open(self, mode='rb', *args, **kwargs): raise ValueError() def __init__(self, spec): self.spec = spec @property def _reader(self): with suppress(AttributeError): return self.spec.loader.get_resource_reader(self.spec.name) def _native(self): """ Return the native reader if it supports files(). """ reader = self._reader return reader if hasattr(reader, 'files') else self def __getattr__(self, attr): return getattr(self._reader, attr) def files(self): return DegenerateFiles.Path() def wrap_spec(package): """ Construct a package spec with traversable compatibility on the spec/loader/reader. """ return SpecLoaderAdapter(package.__spec__, TraversableResourcesLoader)
Save