Skip to main content
Pre-release

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.

  • plan and snippet produce review drafts with no apply operation.
  • modularize and refine write 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)

Source distribution for funcloom 0.10.3a0
File Size Uploaded
funcloom-0.10.3a0.tar.gz 260.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for funcloom 0.10.3a0
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

0.10.3a0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page