This release is a pre-release and may not be stable for production use.
FuncLoom
The Python functionizer. Turn Python snippets, scripts and Jupyter notebooks into reviewable functions and modular packages; every transformation is verified or refused with a reason and source location.
Part of a family of standalone Python tools: FuncLoom (functionizer), RefacTrail (refactorizer) and RepoContour (architect, planned). Each installs and works on its own.
0.10.3a0 is an unpublished experimental alpha. It has no runtime dependencies and does not need an LLM, account or network connection. Python 3.12 or newer is required. CI tests CPython 3.12-3.14 on Windows, Linux and macOS, and verifies the built packages on all three.
Quick start
pip install funcloom
That is all: FuncLoom has no dependencies. Python 3.12 or newer is
required. Until the first PyPI release, install from GitHub instead:
pip install git+https://github.com/SAMtheROCKET/funcloom.git.
Then, in any project:
funcloom # the most useful commands
funcloom check script.py # long functions, structure
funcloom snippet code.py # draft a reusable function
funcloom modularize notebook.ipynb --output my_package
funcloom refine script.py --output script_refined.py
Your original files are never changed: results go to a new file or an
empty folder, and anything that cannot be proven safe is refused with a
reason and line number. If your system blocks the funcloom command, use
python -m funcloom instead.
In VS Code, install the FuncLoom extension and run FuncLoom: ... from the Command Palette. It uses the Python interpreter selected in VS Code and offers to install FuncLoom there with one click.
On every commit, add the hook to .pre-commit-config.yaml:
repos:
- repo: https://github.com/SAMtheROCKET/funcloom
rev: v0.10.3a0
hooks:
- id: funcloom-check
From source (development)
python -m venv .venv
.venv/bin/python -m pip install -e . # Windows: .venv\Scripts\python.exe
.venv/bin/python -m funcloom doctor
Capabilities
| Command | Input | Output |
|---|---|---|
snippet |
Python text or one notebook cell | Function/caller drafts with optional context, naming proposals, type evidence and questions |
plan |
An explicit module-level line selection | Extraction contract, draft function/caller, source hashes, effects and refusal reasons |
modularize |
Script, stdin, notebook or project folder | New modules, step functions, a Pipeline class and entry scripts |
refine |
Python file or project folder | New copies with supported long functions/blocks split, lines wrapped and optional docstring skeletons |
scan / check |
Python file or project folder | Inventory and configured line, size, annotation, documentation and naming findings |
doctor |
Installed environment | Runtime version, interpreter, package location and capabilities |
The tools parse and compile source without importing or executing target projects. Generated files require review and the target project's tests. Structural checks and regression results do not prove that arbitrary programs retain their behavior. Unknown types and meanings remain explicit; domain context is supplied by the user, not guessed from names.
Try the workflows
Use your environment's Python in place of python below.
python -m funcloom snippet examples/snippet_tax.py --no-context
python -m funcloom snippet examples/snippet_tax.py --context profiles/snippet_tax.toml
python -m funcloom snippet examples/snippet_generic.py --interactive
python -m funcloom snippet examples/snippet_generic.py --naming mathematical
python -m funcloom snippet examples/snippet_tax.ipynb --cell 2 --no-context
python -m funcloom modularize examples/modular_sales_report.py --output demo_sales
python demo_sales/main.py
python -m funcloom refine examples/long_functions.py --output demo_refined.py --document
python demo_refined.py
python -m funcloom check examples/clean_module.py --fail-on warning
snippet --interactive offers no context or a small project description,
then optional naming/type/meaning information. It does not translate
pseudocode or natural-language instructions into executable Python.
Noninteractive commands work without domain context.
For whole repositories:
python -m funcloom modularize path/to/project --output path/to/project_modular
python -m funcloom refine path/to/project --output path/to/project_refined
Outputs must be new; modularization also accepts an empty destination
folder. Folder outputs must be outside the input tree. Input files are
preserved. Run a generated package from its output folder. modularize
without --output only plans; --show-files includes the generated text.
--format json exposes the corresponding report contract.
Generated package and limits
A typical package has config.py, functions.py/models.py, steps.py,
pipeline.py and main.py. Its initial imports are retained once, in source
order, in _imports.py; later imports stay where they occurred. Folder
mode retains library paths and data and adds entry-script shims.
planandsnippetproduce review drafts with no apply operation.modularizeandrefinewrite new copies. Known unsupported cases are refused or left unchanged with a reason; not every behavior difference can be detected statically.- Wildcard imports are refused for modularization; use explicit imports. Dynamic namespaces, serialization, module identity, reflection and file paths need particular review.
- Notebook cells run in document order without kernel state. Magics and shell escapes may be omitted, with notes; outputs do not establish types or hidden dependencies.
- Unsupported functions/blocks stay whole, even over the size target. Type hints are narrow static proposals and documentation is a skeleton.
- Line length defaults to 79, configurable from 40 to 200. Existing tool directives are retained or refused. Wrapping that would create a new directive is refused too.
- No performance comparison with Ruff or Black has been established. Natural-language code generation and architecture diagrams remain future work. A local VSIX now supplies explicit check, snippet, modularize and refine commands; see editor setup.
See snippet context, generic variable names, extraction planning, modularization, refinement, rule coverage, and local/editor setup.
Development and release checks
.\.venv\Scripts\python.exe scripts/verify.py
.\.venv\Scripts\python.exe -m pip install -e ".[release]"
.\.venv\Scripts\python.exe scripts/release_check.py --output dist/0.10.2a0-final
The release check requires a new output directory. It builds a wheel and
source archive, checks metadata and contents, installs into fresh
environments, runs full verification against installed packages, and checks
uninstallation. It writes logs, checksums and verification.json, with no
upload step. See release preparation.
Python APIs and report schemas may change during the alpha. FuncLoom, RefacTrail and RepoContour remain separately releasable projects.
License
MIT, copyright 2026 Sambit Supriya Dash.
Metadata
Release files for funcloom 0.10.3a0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| funcloom-0.10.3a0.tar.gz | 260.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| funcloom-0.10.3a0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 422.9 kB
Release files / funcloom-0.10.3a0.tar.gz
| Download URL | funcloom-0.10.3a0.tar.gz |
|---|---|
| Size | 260.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
383334182d77a5092b6b62d1da5c2e6c76bab832484c0589f3942b1a5acca5a6
|
|
BLAKE2b-256 checksum How to use checksums |
b139022fca065535da700f7b3050dfbbb791da36832365c36dfa394c459e0976
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.
Transparency logRelease files / funcloom-0.10.3a0-py3-none-any.whl
| Download URL | funcloom-0.10.3a0-py3-none-any.whl |
|---|---|
| Size | 162.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5a200a92b9229aeb838cac38ba12b01ca54836416e399610f3c0733fd56de24d
|
|
BLAKE2b-256 checksum How to use checksums |
99b35756375331fd58582ca2d61214f537945c2a259ddf786c9feeef4a0741dc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.
Transparency log