Skip to content

Commit a34ce52

Browse files
committed
Allow a package to resolve its own resources without having to pass a reference to itself. Fixes #259.
1 parent 421db9c commit a34ce52

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

importlib_resources/_common.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,23 @@
55
import contextlib
66
import types
77
import importlib
8+
import inspect
89

910
from typing import Union, Optional
1011
from .abc import ResourceReader, Traversable
1112

1213
from ._compat import wrap_spec
1314

14-
Package = Union[types.ModuleType, str]
15+
Package = Union[types.ModuleType, str, None]
1516

1617

17-
def files(package):
18+
def files(package=None):
1819
# type: (Package) -> Traversable
1920
"""
2021
Get a Traversable resource from a package
2122
"""
22-
return from_package(resolve(package))
23+
context = inspect.currentframe().f_back.f_globals # type: ignore
24+
return from_package(resolve(package, context))
2325

2426

2527
def get_resource_reader(package):
@@ -39,9 +41,10 @@ def get_resource_reader(package):
3941
return reader(spec.name) # type: ignore
4042

4143

42-
def resolve(cand):
43-
# type: (Package) -> types.ModuleType
44-
return cand if isinstance(cand, types.ModuleType) else importlib.import_module(cand)
44+
def resolve(candidate, context):
45+
# type: (Package, dict[str, str]) -> types.ModuleType
46+
impl = candidate or context['__name__'] # type: ignore
47+
return impl if isinstance(impl, types.ModuleType) else importlib.import_module(impl)
4548

4649

4750
def from_package(package):

0 commit comments

Comments
 (0)