Skip to content

Commit

Permalink
Merge pull request #533 from eriknw/python3.11
Browse files Browse the repository at this point in the history
Fix Tlz error in Python 3.11 (alpha)
  • Loading branch information
eriknw committed Jun 15, 2022
2 parents 03a7efd + dfbc3d6 commit 32135de
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 16 deletions.
13 changes: 12 additions & 1 deletion .github/workflows/test.yml
Expand Up @@ -12,7 +12,18 @@ jobs:
fail-fast: false
matrix:
os: ["ubuntu-latest"]
python-version: [3.5, 3.6, 3.7, 3.8, 3.9, "3.10", "pypy-3.6", "pypy-3.7", "pypy-3.8"]
python-version:
- "3.5"
- "3.6"
- "3.7"
- "3.8"
- "3.9"
- "3.10"
- "3.11.0-alpha - 3.11.0"
- "pypy-3.6"
- "pypy-3.7"
- "pypy-3.8"
- "pypy-3.9"
steps:
- name: Checkout
uses: actions/checkout@v2
Expand Down
19 changes: 4 additions & 15 deletions tlz/_build_tlz.py
Expand Up @@ -2,9 +2,10 @@
import types
import toolz
from importlib import import_module
from importlib.machinery import ModuleSpec


class TlzLoader(object):
class TlzLoader:
""" Finds and loads ``tlz`` modules when added to sys.meta_path"""
def __init__(self):
self.always_from_toolz = {
Expand Down Expand Up @@ -36,7 +37,7 @@ def find_module(self, fullname, path=None): # pragma: py3 no cover
def load_module(self, fullname): # pragma: py3 no cover
if fullname in sys.modules: # pragma: no cover
return sys.modules[fullname]
spec = TlzSpec(fullname, self)
spec = ModuleSpec(fullname, self)
module = self.create_module(spec)
sys.modules[fullname] = module
self.exec_module(module)
Expand All @@ -45,7 +46,7 @@ def load_module(self, fullname): # pragma: py3 no cover
def find_spec(self, fullname, path, target=None): # pragma: no cover
package, dot, submodules = fullname.partition('.')
if package == 'tlz':
return TlzSpec(fullname, self)
return ModuleSpec(fullname, self)

def create_module(self, spec):
return types.ModuleType(spec.name)
Expand Down Expand Up @@ -86,18 +87,6 @@ def exec_module(self, module):
module.__dict__[k] = submodule


class TlzSpec(object):
def __init__(self, name, loader):
self.name = name
self.loader = loader
self.origin = None
self.submodule_search_locations = []
self.loader_state = None
self.cached = None
self.parent = None
self.has_location = False


tlz_loader = TlzLoader()
sys.meta_path.append(tlz_loader)
tlz_loader.exec_module(sys.modules['tlz'])

0 comments on commit 32135de

Please sign in to comment.