effectual
/ɪˈfek.tʃu.əl/ meaning effective and successful
Why?
Sometimes you want a single portable python file without having to make a platform specific executable or a dependency-less .pyz! Basically me trying to make Vite for python (badly) :(
When not to use this
- The python package requires access to specific files like CustomTkinter and Pillow
- Incredibly version specific code, for example something that won't run on a slightly different python version or operating system
- The output bundle needs to include packages that aren't mostly written in python
Setup
Template
If you want a simple minimal setup process then just use the effectual-template
DIY
First make sure you have uv installed and updated:
uv self update
Furthermore if you haven't already created a project run:
uv init
Then to install effectual run:
uv add effectual --dev
Finally add the following lines to your pyproject.toml and configure to your heart's desire
[tool.effectual]
sourceDirectory = "./src/"
outputDirectory = "./dist/"
outputFileName = "bundle.pyz"
minification = true
compressionLevel = 5
Note you must have a __main__.py entrypoint in the source directory for this to work
Bundling
Development
To bundle in dev mode use:
uv run efec dev
This is like what esBuild does for vite
Production
To build a distributable .pyz file run:
uv run efec dist
This is like what what Rollup does for vite
To be added
- Treeshaking
- Rewriting some time critical parts in Rust
- Cross platform compatibility (multiple output bundles)
- Bundling python version shebang and bytecode compilation
- Plugin and loader system (like rollup and webpack)
- Python based config file for more granular builds rather then using the pyproject.toml
Contributions
All contributions are welcome, I'm not the best in the world at project management but if you think you can add a feature or improve anything please send over a pull request!
Building the project from source
Requirements
To build the project from source you need two tools:
Process
-
CD to project directory and run:
task setup -
Then to build a distributable tar.gz and wheel:
task build
Metadata
Release files for effectual 0.8.13
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| effectual-0.8.13.tar.gz | 66.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| effectual-0.8.13-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 75.7 kB
Release files / effectual-0.8.13.tar.gz
| Download URL | effectual-0.8.13.tar.gz |
|---|---|
| Size | 66.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
883ab8eac61e4e05de459b3eeb00fc77e2213f992315291d6ccee99cdbf6943e
|
|
BLAKE2b-256 checksum How to use checksums |
133148de7c2f9c7ec60970e4af58c4a6db939ccd4de747c08068bbf10000b001
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
Hatch/1.18.1 {"ci":null,"cpu":"AMD64","implementation":{"name":"CPython","version":"3.11.10"},"installer":{"name":"hatch","version":"1.18.1"},"openssl_version":"OpenSSL 3.0.15 3 Sep 2024","python":"3.11.10","system":{"name":"Windows","release":"10"}} HTTPX2/2.13.1
|
Release files / effectual-0.8.13-py3-none-any.whl
| Download URL | effectual-0.8.13-py3-none-any.whl |
|---|---|
| Size | 9.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0d0b4a7bfa1cb8356258007984c83983253753958dac03d3d77878c2dbc0b6e6
|
|
BLAKE2b-256 checksum How to use checksums |
5eddf11f4eead3183fca6aab52af597c0b6c24cf1ff512c91c64a76cb1aa9c7d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
Hatch/1.18.1 {"ci":null,"cpu":"AMD64","implementation":{"name":"CPython","version":"3.11.10"},"installer":{"name":"hatch","version":"1.18.1"},"openssl_version":"OpenSSL 3.0.15 3 Sep 2024","python":"3.11.10","system":{"name":"Windows","release":"10"}} HTTPX2/2.13.1
|