Goldenmask is a tool to protect your python source code easily. It has two methods at the moment: using Compileall or using Cython. It has a corresponding option named --layer/-l
, you can choose your favorite method by yourself. Meanwhile, it can protect different file types: python files end with .py
, wheel packages end with .whl
and source package end with .tar.gz
.
Goldenmask is a name derived from a Chinese kungfu named "JinZhongZhao". Because it is not a qualified phrase in a sense, this name is so unique that can be used as a temporary compilation directory named __goldenmask__
and a compilation information file named .goldenmask
which contains the detailed python version string (from sys.version
) and the platform string (from platform.unmae()
) .
Let's try to goldenmask now!
$ pip install goldenmask
# The default method is Compileall
$ goldenmask yourpythonfile.py
All done! ✨ 🍰 ✨
$ tree -a .
.
├── __goldenmask__
│ ├── .goldenmask
│ └── yourpythonfile.pyc
└── yourpythonfile.py
1 directory, 3 files
# Use Cython to generate .so file and replace the source python file
$ goldenmask -i -l 2 yourpythonfile.py
All done! ✨ 🍰 ✨
$ tree -a .
.
├── .goldenmask
└── yourpythonfile.so
0 directories, 2 files
Goldenmask is distributed on PyPI and supports Python 3.6+. You can simply install goldenmask as below:
$ pip install -U goldenmask
However, it's a better choice to use a virtual environment:
$ python -m venv env
# On Windows:
$ .\venv\Scripts\activate
# On Linux:
$ source env/bin/activate
$ pip install goldenmask --upgrade
Because goldenmask depends on Cython, you should make sure that there is an appropriate C compiler on your machine. You can see the detailed guide on Cython's documentation. By the way, if you works on a Linux system, you can easily fetch everything you need with one command sudo apt-get install build-essential
on Ubuntu and yum groupinstall "Development Tools"
on Centos. However, If you are using Mac OS X or Windows, you may spend quite some time installing this compilers.
You can get everything using option --help
:
$ goldenmask --help
Usage: goldenmask [OPTIONS] [FILES_OR_DIRS]...
Goldenmask is a tool to protect your python source code easily.
FILES_OR_DIRS can be python files, wheel packages,source packages or dirs
contain python files.
Options:
-l, --layer <int> Level of protection: 1 - compileall; 2 - cython.
-i, --inplace Whether compile python files in place.
--no_smart This will copy and compile everything you specified.
--help Show this message and exit.
portect the wheel package:
$ goldenmask goldenmask-0.2.1-py3-none-any.whl
All done! ✨ 🍰 ✨
$ tree -a .
.
├── __goldenmask__
│ ├── .goldenmask
│ └── goldenmask-0.2.1-py3-none-any.whl
├── .goldenmask
└── goldenmask-0.2.1-py3-none-any.whl
1 directory, 4 files
protect the source packege:
$ goldenmask -l 2 --inplace goldenmask-0.1.2.tar.gz
running build_ext
building 'goldenmask.cli' extension
...
All done! ✨ 🍰 ✨
$ tree -a .
.
├── .goldenmask
└── goldenmask-0.1.2.tar.gz
protect the dir contians python files:
$ goldenmask pip-download/
All done! ✨ 🍰 ✨
Goldenmask uses Poetry to develop, you can follow these steps to get involved:
- fork the project goldenmask
- clone the forked project
- install Poetry
- run
poetry install
to install dependencies,modify the code, run the tests and finally submit pull requests