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.1.tar.gz (8.7 kB view details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

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

File metadata

  • Download URL: encryptpy-1.0.1.tar.gz
  • Upload date:
  • Size: 8.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.10

File hashes

Hashes for encryptpy-1.0.1.tar.gz
Algorithm Hash digest
SHA256 f07e70997295c9d86d08159eb3440da126355c5872e021bc1b463463ecfb75e5
MD5 10eb8c57dc8c3e2c27c63bf7a1e55733
BLAKE2b-256 41014760c35a268e3b6d2a617d86c1de0fed2128b40024059e92b6d0c8c634b1

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: encryptpy-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 9.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.10

File hashes

Hashes for encryptpy-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1220d4f33d47b9aeb5cd69fbd1fb607958ee0aa6636065d5b3769136d51d6a71
MD5 e715d752256e6a961b337f024a5f5048
BLAKE2b-256 3f25b1006dea55ab7bb98f383ad293d9a70eddc95be33059f82cab7a246010ea

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