Build Blender extension archives from JSON or YAML manifests
Project description
Blender Extension Builder
Blender Extension Builder packages Blender extensions from a repository manifest.
Source repository: https://github.com/minimalefforttech/beb
What It Does
- Builds Blender extension zip archives from
manifest.json,manifest.yaml, ormanifest.yml - Downloads and caches dependency wheels per target platform
- Embeds explicit custom wheels from disk, glob patterns, or local builds
- Generates HTML docs from Markdown when
Markdownis available - Creates deploy bundles containing extension archives, docs output, and install notes
- Exposes the workflow through both the
bebCLI and the Python API
Installation
pip install beb
The published package name is beb, and the top-level import package is also beb.
PyYAML and Markdown are standard dependencies, but the builder still handles JSON-only or non-docs workflows when those optional features are unavailable at runtime.
CLI Workflow
beb validate
beb build
beb install
beb deploy
beb buildcreates a single extension archive.beb installbuilds the archive and installs it into a Blender instance.beb deploybuilds the configured deploy variants and assembles a distributable bundle.
Manifest Highlights
Core sections:
id,version,name,blender_version_min: extension metadatapaths.include,paths.exclude: file selection for the packagerequires: dependency wheels resolved from pipembedded_wheels: explicit wheels to include from disk or local buildsdocs: Markdown-to-HTML build settingsdeploy: deploy variants and install instructions
Deploy Variants
Each deploy.variants[] entry can adjust build-shaping fields without redefining the whole manifest.
Supported variant fields:
suffixdescriptionplatformsblender_version_minblender_version_maxpaths.includepaths.excluderequireswheelsdocs
Variant behavior:
paths.includeandpaths.excludeare additive. Variant patterns are appended after the base manifest patterns.requiresupdates the base requirement list by package name.- Prefix a requirement with
!to remove that base package for the variant, for example!pillow. - A non-
!requirement replaces any base requirement with the same package name and then adds the new entry. wheels: falseskips pip-resolved wheels fromrequires, but explicitembedded_wheelsare still included.docs: trueembeds generated HTML docs into that variant archive atdocs.output_dir.
If a variant uses platforms: ["all"], the generated blender_manifest.toml omits the platforms field instead of writing platforms = ["all"].
Docs Output
When docs.enabled is true, docs can be emitted in two ways:
- Set
deploy.variants[].docstotrueto embed generated HTML in that variant archive. - Leave
docsunset orfalsefor all variants to generate one separate documentation folder in the deploy bundle.
Python API
from beb import build_extension, build_deploy_bundle, load_manifest
result = build_extension("manifest.json")
archives = build_deploy_bundle("manifest.json").archive_paths
manifest = load_manifest("manifest.json")
Repository Layout
beb: importable packagecli: repository helper entry pointsexamples: sample manifests for common workflowsdocs: user and developer guidestests: automated coverage for manifests, wheels, builder behavior, and docs
Documentation
- User guide:
docs/user_guide.md - Developer guide:
docs/developer_guide.md
Releases
GitHub Actions builds wheels and source distributions on pushes and publishes tagged releases to PyPI.
License
This project is licensed under the MIT License. See LICENSE.
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 Distribution
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 beb-0.2.0.tar.gz.
File metadata
- Download URL: beb-0.2.0.tar.gz
- Upload date:
- Size: 26.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d6ea1c670951a1c73778009131520293d7e0f7584a46749b007f8a5dee788657
|
|
| MD5 |
addef93036195977e92b8ee44a9828d2
|
|
| BLAKE2b-256 |
e042c5e90269fc437eb9b061bc947d34bc68a48e7c199e450e5d3a1a4d5c3bdd
|
Provenance
The following attestation bundles were made for beb-0.2.0.tar.gz:
Publisher:
publish.yml on minimalefforttech/beb
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
beb-0.2.0.tar.gz -
Subject digest:
d6ea1c670951a1c73778009131520293d7e0f7584a46749b007f8a5dee788657 - Sigstore transparency entry: 1361826737
- Sigstore integration time:
-
Permalink:
minimalefforttech/beb@81cc05c8781e375ee877aa8a66c732fdcd99a05c -
Branch / Tag:
refs/heads/main - Owner: https://github.com/minimalefforttech
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@81cc05c8781e375ee877aa8a66c732fdcd99a05c -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file beb-0.2.0-py3-none-any.whl.
File metadata
- Download URL: beb-0.2.0-py3-none-any.whl
- Upload date:
- Size: 26.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
efc012248e725224fc4dec8ff179b15f06a5df5a29056f6619431435ae895383
|
|
| MD5 |
4ed54ba563a9737e0bb69a6abd456988
|
|
| BLAKE2b-256 |
d03d2005c0bfa30454852e5fa7dd3b5bea46f0697adcf667e0297940d1ad1519
|
Provenance
The following attestation bundles were made for beb-0.2.0-py3-none-any.whl:
Publisher:
publish.yml on minimalefforttech/beb
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
beb-0.2.0-py3-none-any.whl -
Subject digest:
efc012248e725224fc4dec8ff179b15f06a5df5a29056f6619431435ae895383 - Sigstore transparency entry: 1361826783
- Sigstore integration time:
-
Permalink:
minimalefforttech/beb@81cc05c8781e375ee877aa8a66c732fdcd99a05c -
Branch / Tag:
refs/heads/main - Owner: https://github.com/minimalefforttech
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@81cc05c8781e375ee877aa8a66c732fdcd99a05c -
Trigger Event:
workflow_dispatch
-
Statement type: