5
5
import contextlib
6
6
import types
7
7
import importlib
8
+ import inspect
8
9
9
10
from typing import Union , Optional
10
11
from .abc import ResourceReader , Traversable
11
12
12
13
from ._compat import wrap_spec
13
14
14
- Package = Union [types .ModuleType , str ]
15
+ Package = Union [types .ModuleType , str , None ]
15
16
16
17
17
- def files (package ):
18
+ def files (package = None ):
18
19
# type: (Package) -> Traversable
19
20
"""
20
21
Get a Traversable resource from a package
21
22
"""
22
- return from_package (resolve (package ))
23
+ context = inspect .currentframe ().f_back .f_globals # type: ignore
24
+ return from_package (resolve (package , context ))
23
25
24
26
25
27
def get_resource_reader (package ):
@@ -39,9 +41,10 @@ def get_resource_reader(package):
39
41
return reader (spec .name ) # type: ignore
40
42
41
43
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 )
45
48
46
49
47
50
def from_package (package ):
0 commit comments