Python tree-shaking for dependencies to reduce the size of packaging.
Project description
Python Tree Shaking
English README is under construction.
Install
pip install tree-shaking
Be noted tree-shaking requires Python >= 3.12.
Usage
Project tree (before):
# my example project
/workspace/hello-world
|= .venv
|= hello_world
|- __init__.py
|- __main__.py
|- ...
|= dist
|- pyprojet.toml
|- tree_shaking.yaml
|- ...
"tree_shaking.yaml" content:
root: .
search_paths:
- <root>/.venv/Lib/site-packages
- <root>
entries:
- <root>/hello_world/__main__.py
Create a temporary script (e.g. "build.py"), code like this:
import tree_shaking
tree_shaking.build_graph_modules("./tree_shaking.yaml")
tree_shaking.dump_tree("./tree_shaking.yaml", "./dist/minified_libs")
After running, the project tree changes:
# my example project
/workspace/hello-world
|= .venv
|= hello_world
|- __init__.py
|- __main__.py
|- ...
|= dist
|= minified_libs # updated
|= ...
|- pyprojet.toml
|- tree_shaking.yaml
|- ...
You can temporarily exclude ".venv/Lib/site-packages", and add "dist/minified_libs" to Python's sys.path (put it at the first place) to test if worked.
After testing, compress "dist/minified_libs" to zip, and compare its size with ".venv/Lib/site-packages" -- the more heavy dependencies you have, the more notable changes on size reduction.
Incremental Updates
Just rerun "build.py", outputs results to the same path as last time, tree-shaking will find the changed parts and do only necessary adding/deleting operations to the target directory.
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 Distributions
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 tree_shaking-0.2.3-py3-none-any.whl.
File metadata
- Download URL: tree_shaking-0.2.3-py3-none-any.whl
- Upload date:
- Size: 27.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.2.1 CPython/3.14.0 Windows/11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a083cb4c818dcd376a95425793971838ce6c7b631204192bd5856184cafd353a
|
|
| MD5 |
3f6b6a984d1a809ff31580af4c9c7cb4
|
|
| BLAKE2b-256 |
76650c0f01f8fdebbeb58656668f19f84f26465339226c374d4149003b0752df
|