Skip to main content

Use Cython to compile Python code to binary and support git-diff to get changed files conveniently.

Project description

简体中文

Encrypt your Python project

Use Cython to compile Python code to binary and support git-diff to get changed files conveniently.

Installation

$ pip install encryptpy

Basic Usage

Usage: encryptpy [OPTIONS] COMMAND [ARGS]...

  Encrypt your Python code

Options:
  --config TEXT  The config file, ignore if given is invalid  [default:
                 .encryptpy.cfg]
  --help         Show this message and exit.

Commands:
  clean     Simply clean `build` and `__pycache__` directory in DIRS
  git-diff  Compile files between two COMMITS, see `git-diff`: `--name-only`
  init      Copy src to build-dir and do compile, usually used for the...
  run       Compile given Python code files

For the subcommand info, use encryptpy <subcommand> --help.

Examples

For example, there is a package named package_a (notice the work directory):

$ tree -a .

.
├── .encryptpy.cfg
└── package_a
    ├── __init__.py
    ├── main.py
    ├── README.md
    ├── setup.py
    └── utils.py

1 directory, 6 files

The .encryptpy.cfg's contents are as follow:

[encryptpy]
; Files will be compiled
paths =
    package_a
; Files will be ignored when compiling, support Regex
ignores =
    setup.py
; For command `init`, files will be ignored when copying, Glob-style
copy_ignores =
    *.pyc
    *.md
; The build directory
build_dir = build
; For commands `run` and `git-diff`, whether the source .py will be removed
clean_py = 0

1. Use in the first time

$ encryptpy init .

Look the build directory:

$ tree -a build

build
├── .encryptpy.cfg
└── package_a
    ├── __init__.cpython-38-x86_64-linux-gnu.so
    ├── main.cpython-38-x86_64-linux-gnu.so
    ├── setup.py
    └── utils.cpython-38-x86_64-linux-gnu.so

1 directory, 5 files

2. Use normally by run

$ encryptpy run package_a/main.py

The package_a/main.py will be recompiled to package_amain.cpython-38-x86_64-linux-gnu.so

3. Use normally by git-diff

$ encryptpy git-diff 0.1 0.2

The changed files between tag(or commit, or branch) 0.1 and 0.2 will be compiled.

Detect

The defects mainly come from Cython - some Python code can not be compiled correctly. Here are known issues:

  1. Assignment Expressions :=: Implement PEP 572: Assignment Expressions #2636

  2. @dataclass: Implement @dataclass for cdef classes #2903

  3. Class method decorators combination: Combining @staticmethod with other decorators is broken #1434

    e.g.

    class C:
        @staticmethod
        @some_decorator
        def f():
            pass
    

    but this can be rewrite to f = staticmethod(some_decorator(f)), it's ok.

If you have some code like the above, you can refactor or just ignore them, it is safe enough for most projects.

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

encryptpy-1.0.4.tar.gz (8.8 kB view details)

Uploaded Source

Built Distribution

encryptpy-1.0.4-py3-none-any.whl (9.0 kB view details)

Uploaded Python 3

File details

Details for the file encryptpy-1.0.4.tar.gz.

File metadata

  • Download URL: encryptpy-1.0.4.tar.gz
  • Upload date:
  • Size: 8.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.2

File hashes

Hashes for encryptpy-1.0.4.tar.gz
Algorithm Hash digest
SHA256 0a5d52716d92b899c2a6e43e2f2d20994b76d5d14295d0da1e4fc77c0b1641d3
MD5 47fbfe9fc39be537f167eea551efbc7d
BLAKE2b-256 9b1e34080ca042a2a58a3a7dbfadcdb96274cf13c8724ef69da6366cc76ca8d8

See more details on using hashes here.

Provenance

File details

Details for the file encryptpy-1.0.4-py3-none-any.whl.

File metadata

  • Download URL: encryptpy-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 9.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.2

File hashes

Hashes for encryptpy-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 751c3d9c726ce7a24c75e3ecb88df10186119a781e5bc2c2104a8d271099ceea
MD5 248a333080043e5f4f22ec7209e01c9e
BLAKE2b-256 6394904bfd88b99df21bd03a38fdc512da3d6386f47d596cc6d3240ee5a2df6c

See more details on using hashes here.

Provenance

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