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
,cython
and,nuitka
pycompile benchmark -i src/examples -vvv
[!IMPORTANT] The python package must have a
test_module.py
because both benchmark types are invoked withpytest
runs
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
pycompile-0.2.3.tar.gz
(12.4 kB
view details)
Built Distribution
pycompile-0.2.3-py3-none-any.whl
(15.4 kB
view details)
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 |