44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
"""
|
|
This module contains a list of item conversions that need to be done for pyfa.
|
|
|
|
Each file in this module must contain a dictionary named CONVERSIONS in the
|
|
format of convertFrom: convertTo, with both key and value being a string of the
|
|
item's name. The name of the file is usually arbitrary unless it's used in logic
|
|
elsewhere (in which case can be accessed with packs[name])
|
|
"""
|
|
|
|
import pkgutil
|
|
|
|
# init parent dict
|
|
all = {}
|
|
|
|
# init container to store the separate conversion packs in case we need them
|
|
packs = {}
|
|
|
|
prefix = __name__ + "."
|
|
|
|
# load modules to work based with and without pyinstaller
|
|
# from: https://github.com/webcomics/dosage/blob/master/dosagelib/loader.py
|
|
# see: https://github.com/pyinstaller/pyinstaller/issues/1905
|
|
|
|
# load modules using iter_modules()
|
|
# (should find all filters in normal build, but not pyinstaller)
|
|
module_names = [m[1] for m in pkgutil.iter_modules(__path__, prefix)]
|
|
|
|
# special handling for PyInstaller
|
|
importers = map(pkgutil.get_importer, __path__)
|
|
toc = set()
|
|
for i in importers:
|
|
if hasattr(i, 'toc'):
|
|
toc |= i.toc
|
|
|
|
for elm in toc:
|
|
if elm.startswith(prefix):
|
|
module_names.append(elm)
|
|
|
|
for modname in module_names:
|
|
conversionPack = __import__(modname, fromlist="dummy")
|
|
all.update(conversionPack.CONVERSIONS)
|
|
modname_tail = modname.rsplit('.', 1)[-1]
|
|
packs[modname_tail] = conversionPack.CONVERSIONS
|