A CLI tool for compiling python
Project description
pycompile
""" _ _
_ __ _ _ ___ ___ _ __ ___ _ __ (_) | ___
| '_ \| | | |/ __/ _ \| '_ ` _ \| '_ \| | |/ _ \
| |_) | |_| | (_| (_) | | | | | | |_) | | | __/
| .__/ \__, |\___\___/|_| |_| |_| .__/|_|_|\___|
|_| |___/ |_|
"""
A CLI tool for compiling python source code using Cython or Nuitka.
Latest docs 📝
Table of contents
- Installation 🔨
- Compile
- Benchmark
- [Dry run](#dry run)
- Local-development 💻🏭
Installation
pip install pycompile
Compile
Usage: pycompile compile [OPTIONS]
Compile the python files using `cython` or `nuitka`.
Options:
-i, --input-path PATH Specify the file/folder input path, by
default it will exclude any `test` and
`__init__.py` files [required]
-ex, --exclude-glob-paths TEXT glob files patterns of the files to be
excluded, example: **/ignore_this_module.py
-v, --verbose verbose level
-e, --engine [cython|nuitka] CompilerWrapper to be used, defaults to:
`cython`
-cs, --clean-source Clean source (.py) files
-kb, --keep-builds Keep temporary build files
-ce, --clean-executables Clean final executables (.so) files
--help Show this message and exit.
pycompile compile -i your_python_files --clean-source --engine nuitka
or
After the compilation the input dir will have the following structure.
examples
├── fib.py.py
├── fib.cpython-310-darwin.so
├── test_fib.py
Benchmark
Usage: pycompile benchmark [OPTIONS]
Run a memory and cpu benchmark.
Options:
-i, --input-path PATH Specify the file/folder input path
[required]
-e, --engine [cython|nuitka|both|none]
compiler wrapper(s) to be used for the
benchmark, defaults to `both`.
-t, --type [memory|cpu|both] type of benchmark to execute, defaults to
`both`.
-p, --profile_func_pattern TEXT
function name pattern for profiling,
defaults to `benchmark`. All the functions
with a name that matches this pattern will
be decorated with `@profile` from: `memory-
profiler`, in addition their module needs to
follow the pattern
(`something_prof_func_name.py` to be
excluded from compilation).
-v, --verbose verbose level
--help Show this message and exit.
It starts a memory and a cpu benchmark, starting with
python,cythonand,nuitka
pycompile benchmark -i src/examples -vvv
[!IMPORTANT] The python package must have a
test_module.pybecause both benchmark types are invoked withpytestruns
The following structure is required for the benchmark subcommand.
module
├── sample_funcs.py # implementation
├── main.py # entrypoint with a `main` function, during compilation will be excluded
├── test_sample_funcs.py # test cases
dry run
pycompile dry_run -i ./src
Local-development
For local development run the following command
make setup-local-dev
All available make commands
make help
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pycompile-0.2.3.tar.gz.
File metadata
- Download URL: pycompile-0.2.3.tar.gz
- Upload date:
- Size: 12.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.4 CPython/3.10.9 Linux/6.5.0-1025-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8971604e17cdab2cae8fab954cd4ba40d5db1125de8eaf9c75fa755d66a77ae3
|
|
| MD5 |
143fe1c4d87a1f1c418acd919739cbea
|
|
| BLAKE2b-256 |
aa4a7739feab96fdbe37c3d5497a9b874cca2b7bbb33b42403000831d7077d66
|
File details
Details for the file pycompile-0.2.3-py3-none-any.whl.
File metadata
- Download URL: pycompile-0.2.3-py3-none-any.whl
- Upload date:
- Size: 15.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.4 CPython/3.10.9 Linux/6.5.0-1025-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aaea0d7614b7a13f1944c314e0c08dddf0d748ebbf5d19303357398214e070ba
|
|
| MD5 |
7dcf9361645eea493432db691fc97199
|
|
| BLAKE2b-256 |
5ef5f9ecb7244e99b67f970a658b4b1ea8850399908dac93a14cfa96ca06c35f
|