Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Factory
python-visvis
use-importlib.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File use-importlib.patch of Package python-visvis
commit 75a2ccb272c654493db7551ac1e16db484e4ce70 Author: Steve Kowalik <steven@wedontsleep.org> Date: Thu Mar 14 10:28:18 2024 +1100 Limit use of imp module, prefer importlib Python 3.12 removes the imp module entirely, which causes most backend imports to fail. Switch to using importlib machinery to load modules, and retain Python 2.7 compatibility, since the importlib implementation should work for Pyton 3.5+. diff --git a/backends/__init__.py b/backends/__init__.py index 5911b2a..bcbf04c 100644 --- a/backends/__init__.py +++ b/backends/__init__.py @@ -50,10 +50,24 @@ The backend is chosen/selected as follows: import os import sys -import imp import visvis from visvis.core.misc import isFrozen, getExceptionInstance + +try: + import importlib.util + import importlib.machinery + def load_source(modname, filename): + loader = importlib.machinery.SourceFileLoader(modname, filename) + spec = importlib.util.spec_from_file_location( + modname, filename, loader=loader) + module = importlib.util.module_from_spec(spec) + loader.exec_module(module) + return module +except ImportError: + from imp import load_source + + # The order in which to try loading a backend (foo is a dummy backend) backendOrder = ['glfw', 'pyside6', 'pyqt5', 'pyside2', 'pyside', 'pyqt4', 'wx', 'gtk', 'fltk'] backendMap = {'glfw': 'glfw', @@ -161,7 +175,7 @@ def _loadBackend(name): if modFileName.endswith('.pyc'): module = __import__(modNameFull, fromlist=[modName]) else: - module = imp.load_source(modNameFull, modFileName) + module = load_source(modNameFull, modFileName) globals()[modName] = module except Exception: if not isFrozen():
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor