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 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)
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 your effectual directory and run:
task setup -
Then to build a distributable tar.gz and wheel:
task build
Metadata
Release files for effectual 0.8.12
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.12.tar.gz | 102.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| effectual-0.8.12-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 111.8 kB
Release files / effectual-0.8.12.tar.gz
| Download URL | effectual-0.8.12.tar.gz |
|---|---|
| Size | 102.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d9495ab1bef3af028f32b9015197f7dd02003fe653c9e7b739a19bc823c482a7
|
|
BLAKE2b-256 checksum How to use checksums |
d70a085d56fac13556f57c8b781eaafb38f6f6befc6c2bd6c55c44d5d98402e9
|
| 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.12-py3-none-any.whl
| Download URL | effectual-0.8.12-py3-none-any.whl |
|---|---|
| Size | 9.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ee788c940d80d06afdf11e2fc6cd53b313ad489141e6a8fecf7d17365f4a4908
|
|
BLAKE2b-256 checksum How to use checksums |
063fb17f7f9d183413c81751c485953f458019468d64884296a09593c7e5b480
|
| 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
|