Python Minifier doesn't rename functions from imported minified modules when --rename-globals is on
veryheavypickle opened this issue · comments
Say I have a local module called utilities.py
with the function
def loadFile(path):
try:
with open(path, "r") as file:
return file.read()
except FileNotFoundError as e:
print(e)
It's minified version would be
F=FileNotFoundError
def S(path):
try:
with open(path,'r')as A:return A.read()
except F as B:print(B)
However when using loadFile
in another file that imports utilities.py
, it still tries to call it as loadFile
even though it has been renamed to S
It may have something to do with the way I import my modules or my project layout which is
project/
├──script.sh
├──file.txt
└──python/
├──main.py
└──utilities/
├──__init__.py
└──utilities.py
Where main.py
before minifying is
import utilities.utilities as utils
utils.loadFile("file.txt")
main.py
after minifying
B='file.text'
import utilities.utilities as A
A.loadFile(B)
and script.sh
pyminify python/ --in-place --rename-globals
I would assume that it would be complicated to detect importing local modules, then replacing the called function names with the updated names.
My usage of this module was to combine it with stickytape
and pyarmor
to reduce the project size to below 32 KB so I could still use the free version of pyarmor
, the --rename-globals option reduces the size by about a further 15%. So as you can imagine the example above is a simplification of the actual situation.
python-minifier operates on a single module at a time. If a module is imported by anyone, you can't use --rename-globals