Files
aufbau2csv/venv3_12/Lib/site-packages/auto_py_to_exe/shims.py

46 lines
1.4 KiB
Python

import sys
from . import utils
def install_shims():
"""Install shims to fix version incompatibility"""
install_bottle_import_redirect_shim()
def install_bottle_import_redirect_shim():
"""
https://github.com/brentvollebregt/auto-py-to-exe/issues/433 explains that a ModuleNotFoundError is raised when trying
to import bottle extensions using Python 3.12.
This shim will patch this issue with some code that is currently on bottle's main branch.
This shim is only needed on Python versions >=3.12 and bottle versions <=0.12.25 (hoping the next version fixes this issue)
"""
# First check if setting this shim is needed
if sys.version_info < (3, 12):
return
import bottle
if utils.parse_version_tuple(bottle.__version__) > (0, 12, 25):
return
if hasattr(bottle._ImportRedirect, "find_spec"):
return
print(
f"Info: Installing shim for bottle import redirects (using Python={sys.version_info[0]}.{sys.version_info[1]}.{sys.version_info[2]} and bottle={bottle.__version__})"
)
# Add the shim
def find_spec(self, fullname, path, target=None):
if "." not in fullname:
return
if fullname.rsplit(".", 1)[0] != self.name:
return
from importlib.util import spec_from_loader
return spec_from_loader(fullname, self)
bottle._ImportRedirect.find_spec = find_spec