Transform Python source code into it's most compact representation
Project description
Python Minifier
Transforms Python source code into it's most compact representation.
python-minifier supports Python 2.6 to 2.7 and Python 3.3 to 3.7.
As an example, the following python source:
import ast
from python_minifier.miniprinter import MiniPrinter
from python_minifier.ast_compare import AstCompare
class UnstableMinification(Exception):
def __init__(self, original, minified, exception):
self.original = original
self.minified = minified
self.exception = exception
def __str__(self):
return str(self.exception)
def minify(source):
code = ast.parse(source)
minifier = MiniPrinter()
minifier.visit(code)
try:
# Check that the minified code is identical to the original
minified_code = ast.parse(minifier.code)
comparer = AstCompare()
comparer.compare(code, minified_code)
except Exception as exception:
raise UnstableMinification(source, minifier.code, exception)
return minifier.code
Becomes:
import ast
from python_minifier.miniprinter import MiniPrinter
from python_minifier.ast_compare import AstCompare
class UnstableMinification(Exception):
def __init__(self,original,minified,exception):
self.original=original;self.minified=minified;self.exception=exception
def __str__(self):return str(self.exception)
def minify(source):
code=ast.parse(source);minifier=MiniPrinter();minifier.visit(code)
try:
minified_code=ast.parse(minifier.code);comparer=AstCompare();comparer.compare(code,minified_code)
except Exception as exception:
raise UnstableMinification(source,minifier.code,exception)
return minifier.code
Why?
AWS Cloudformation templates may have AWS lambda function source code embedded in them, but only if the function is less than 4KiB. I wrote this package so I could write python normally and still embed the module in a template.
Installation
To install python-minifier use pip:
$ pip install python-minifier
Note that python-minifier depends on the python interpreter for parsing source code, so install using a version of python appropriate for your source.
python-minifier runs with and can minify code written for Python 2.6 to 2.7 and Python 3.3 to 3.7.
Usage
To minify a source file, and write the minified module to stdout:
$ pyminify hello.py
There is also an API. The same example would look like:
import python_minifier
with open('hello.py') as f:
print(python_minifier.minify(f.read()))
License
Available under the MIT License. Full text is in the LICENSE file.
Copyright (c) 2018 Daniel Flook
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for python_minifier-1.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0898d8d240448dac8dfaa66c9c0acfd96f988cbd3cf12fd07ce4a4fa6b9e1ba9 |
|
MD5 | b1a7e051b4c11b7814a86192411f3f4f |
|
BLAKE2b-256 | 33ef01a6f42084fb3c969080ed134678a3550ce0cab47f2fa9ce14eb9c5caba0 |