Skip to content

Commit 441b1c6

Browse files
committed
Move _SixMetaPathImporter to using find_spec()
Python 3.12 seems to have completely done away with find_module(), which the _SixMetaPathImporter still uses. This commit added support for 3.12 through the find_spec() finder approach. Credit: This delta was borrowed from kafka-python project https://github.com/dpkp/kafka-python/blob/master/kafka/vendor/six.py
1 parent 4fc23c4 commit 441b1c6

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

flye/six.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,10 @@ def __len__(self):
7171
MAXSIZE = int((1 << 63) - 1)
7272
del X
7373

74+
if PY34:
75+
from importlib.util import spec_from_loader
76+
else:
77+
spec_from_loader = None
7478

7579
def _add_doc(func, doc):
7680
"""Add documentation to a function."""
@@ -186,6 +190,11 @@ def find_module(self, fullname, path=None):
186190
return self
187191
return None
188192

193+
def find_spec(self, fullname, path, target=None):
194+
if fullname in self.known_modules:
195+
return spec_from_loader(fullname, self)
196+
return None
197+
189198
def __get_module(self, fullname):
190199
try:
191200
return self.known_modules[fullname]
@@ -223,6 +232,12 @@ def get_code(self, fullname):
223232
return None
224233
get_source = get_code # same as get_code
225234

235+
def create_module(self, spec):
236+
return self.load_module(spec.name)
237+
238+
def exec_module(self, module):
239+
pass
240+
226241
_importer = _SixMetaPathImporter(__name__)
227242

228243

0 commit comments

Comments
 (0)