twblue/src/fixes/fix_libloader.py

42 lines
964 B
Python
Raw Normal View History

# -*- coding: utf-8 -*-
2019-06-06 11:52:23 -05:00
from __future__ import unicode_literals
2019-02-20 10:40:08 -06:00
import logging
import win32com
import paths
win32com.__build_path__=paths.com_path()
import sys
import os
sys.path.append(os.path.join(win32com.__gen_path__, "."))
from win32com.client import gencache
from pywintypes import com_error
from libloader import com
2019-02-20 10:40:08 -06:00
log = logging.getLogger("fixes.fix_libloader")
fixed=False
def patched_getmodule(modname):
mod=__import__(modname)
return sys.modules[modname]
def load_com(*names):
global fixed
if fixed==False:
gencache._GetModule=patched_getmodule
com.prepare_gencache()
fixed=True
result = None
for name in names:
try:
result = gencache.EnsureDispatch(name)
break
except com_error:
continue
if result is None:
raise com_error("Unable to load any of the provided com objects.")
return result
def fix():
2019-02-20 10:40:08 -06:00
log.debug("Applying fix for Libloader...")
com.load_com = load_com
log.debug("Load_com has been mapped correctly.")