Bolt Pipeliner Documentation
GitHub

Self contained projects

After this page, you will understand why a scaffolded project can run without a separate pip install bolt-pipeliner. You will also know when to keep vendoring enabled and when --no-vendor is the better choice.

By default, bolt init writes a full copy of the framework under _boltpipeliner/ inside your project. The root scripts then load that local copy first.

What gets scaffolded

With the default --vendor mode, bolt init creates these project root files:

  • _boltpipeliner/ with bolt_pipeliner/ source code
  • bolt.py
  • main.py
  • generate.py

Those three scripts are thin shims around the normal CLI surface.

The three shims and what they map to

Use these equivalences:

  • python bolt.py <subcommand> ... is the same entry point as bolt <subcommand> ...
  • python main.py ... maps to bolt run ...
  • python generate.py <targets> ... maps to bolt generate <targets> ...

Examples:

python main.py --silver python generate.py documentation python bolt.py test

Why the vendored copy wins

Each shim does this at startup:

_VENDOR = pathlib.Path(__file__).resolve().parent / "_boltpipeliner" if _VENDOR.is_dir(): sys.path.insert(0, str(_VENDOR))

sys.path.insert(0, ...) puts _boltpipeliner/ before site packages. Python imports bolt_pipeliner from your project first, so your run is pinned to that vendored version.

This makes projects more reproducible. A teammate can clone and run the project even if their global environment has a different package version.

Using --no-vendor

If you do not want to copy framework source into each project, scaffold with --no-vendor:

bolt init my_project --preset pandas --no-vendor

The three shim files are still generated. They check for _boltpipeliner/, then fall back to the installed package when that directory is missing.

In no-vendor mode, install the package in your environment before running shims:

pip install bolt-pipeliner==0.2.6 python main.py

Behavior note for 0.2.6

In 0.2.6, bolt init --help says vendoring uses _vendor/. The scaffolder code and generated projects use _boltpipeliner/. Trust the generated project structure.