2
2
import types
3
3
import toolz
4
4
from importlib import import_module
5
+ from importlib .machinery import ModuleSpec
5
6
6
7
7
- class TlzLoader ( object ) :
8
+ class TlzLoader :
8
9
""" Finds and loads ``tlz`` modules when added to sys.meta_path"""
9
10
def __init__ (self ):
10
11
self .always_from_toolz = {
@@ -36,7 +37,7 @@ def find_module(self, fullname, path=None): # pragma: py3 no cover
36
37
def load_module (self , fullname ): # pragma: py3 no cover
37
38
if fullname in sys .modules : # pragma: no cover
38
39
return sys .modules [fullname ]
39
- spec = TlzSpec (fullname , self )
40
+ spec = ModuleSpec (fullname , self )
40
41
module = self .create_module (spec )
41
42
sys .modules [fullname ] = module
42
43
self .exec_module (module )
@@ -45,7 +46,7 @@ def load_module(self, fullname): # pragma: py3 no cover
45
46
def find_spec (self , fullname , path , target = None ): # pragma: no cover
46
47
package , dot , submodules = fullname .partition ('.' )
47
48
if package == 'tlz' :
48
- return TlzSpec (fullname , self )
49
+ return ModuleSpec (fullname , self )
49
50
50
51
def create_module (self , spec ):
51
52
return types .ModuleType (spec .name )
@@ -86,20 +87,6 @@ def exec_module(self, module):
86
87
module .__dict__ [k ] = submodule
87
88
88
89
89
- class TlzSpec (object ):
90
- def __init__ (self , name , loader ):
91
- self .name = name
92
- self .loader = loader
93
- self .origin = None
94
- self .submodule_search_locations = []
95
- self .loader_state = None
96
- self .cached = None
97
- self .parent = None
98
- self .has_location = False
99
- # Added in Python 3.11 (to improve circular imports or their errors?)
100
- self ._uninitialized_submodules = []
101
-
102
-
103
90
tlz_loader = TlzLoader ()
104
91
sys .meta_path .append (tlz_loader )
105
92
tlz_loader .exec_module (sys .modules ['tlz' ])
0 commit comments