Skip to main content

Minify python

Project description

pymini

Python minifier. Built to operate on entire libraries, persisting and supporting minification across files.

Installation

pip install pymini

Usage

pymini [options] <file>

To uglify a library, use the following options to preserve your ability to import and use the library's publicly-facing utilities.

pymini --keep-module-names --keep-global-variables <file>

Comparison

We run comparisons against the following:

To repeat our results, run the following to setup.

pip install python-minifier
pip install setuptools==57.5.0 && pip install pyminifier  # hack to get pyminifer to install
pip install mnfy  # if you're running python3.4
pip install pymini  # ours

Then, run the following to get mini'd versions of the sample file sample/test.py, which comes from pyminifer's repository.

mkdir -p out
pyminify --rename-globals --remove-literal-statements sample/test.py > out/pyminify.py
pyminifier --obfuscate sample/test.py > out/pyminifier.py
python -m mnfy sample/test.py > out/mnfy.py
uglipy sample/test.py > out/pyminiest.py

Then, run ls -lh out. You should see the following.

total 24
-rw-r--r--  1 alvinwan  staff   414B Nov 25 01:22 pyminiest.py
-rw-r--r--  1 alvinwan  staff   602B Nov 25 01:19 pyminifier.py
-rw-r--r--  1 alvinwan  staff   490B Nov 25 01:18 pyminify.py

By comparison, the original file size was 1355B; uglipy achieves the smallest file size, 16% smaller than pyminify and 30% smaller than pyminifier, improving the best possible obfuscated file size reduction from 64% to 71%. We can also test against test2.py, which comes from pyminify's repository.

-rw-r--r--  1 alvinwan  staff   914B Nov 25 02:09 pyminiest.py
-rw-r--r--  1 alvinwan  staff   1.4K Nov 25 01:32 pyminifier.py
-rw-r--r--  1 alvinwan  staff   977B Nov 25 01:32 pyminify.py

By comparison, the original file size was 1990B. uglipy's file size is 6% smaller than pyminify and 34% smaller than pyminifier, improving the best possible obfuscated file size reduction from 51% to 54%.

Develop

Run tests using the following, from the root directory

py.test --doctest-modules

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pymini-0.1.1.tar.gz (14.7 kB view hashes)

Uploaded Source

Built Distribution

pymini-0.1.1-py3-none-any.whl (14.3 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page