95 return delattr(object.__getattribute__(self, "_finder")) |
95 return delattr(object.__getattribute__(self, "_finder")) |
96 |
96 |
97 def __setattr__(self, name, value): |
97 def __setattr__(self, name, value): |
98 return setattr(object.__getattribute__(self, "_finder"), name, value) |
98 return setattr(object.__getattribute__(self, "_finder"), name, value) |
99 |
99 |
100 def find_spec(self, *args, **kwargs): |
100 def find_spec(self, fullname, path, target=None): |
101 finder = object.__getattribute__(self, "_finder") |
101 finder = object.__getattribute__(self, "_finder") |
102 spec = finder.find_spec(*args, **kwargs) |
102 try: |
|
103 find_spec = finder.find_spec |
|
104 except AttributeError: |
|
105 loader = finder.find_module(fullname, path) |
|
106 if loader is None: |
|
107 spec = None |
|
108 else: |
|
109 spec = importlib.util.spec_from_loader(fullname, loader) |
|
110 else: |
|
111 spec = find_spec(fullname, path, target) |
103 |
112 |
104 # Lazy loader requires exec_module(). |
113 # Lazy loader requires exec_module(). |
105 if ( |
114 if ( |
106 spec is not None |
115 spec is not None |
107 and spec.loader is not None |
116 and spec.loader is not None |