Skip to main content

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, or manifest.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 Markdown is available
  • Creates deploy bundles containing extension archives, docs output, and install notes
  • Exposes the workflow through both the beb CLI 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 build creates a single extension archive.
  • beb install builds the archive and installs it into a Blender instance.
  • beb deploy builds the configured deploy variants and assembles a distributable bundle.

Manifest Highlights

Core sections:

  • id, version, name, blender_version_min: extension metadata
  • paths.include, paths.exclude: file selection for the package
  • requires: dependency wheels resolved from pip
  • embedded_wheels: explicit wheels to include from disk or local builds
  • docs: Markdown-to-HTML build settings
  • deploy: deploy variants and install instructions

Deploy Variants

Each deploy.variants[] entry can adjust build-shaping fields without redefining the whole manifest.

Supported variant fields:

  • suffix
  • description
  • platforms
  • blender_version_min
  • blender_version_max
  • paths.include
  • paths.exclude
  • requires
  • wheels
  • docs

Variant behavior:

  • paths.include and paths.exclude are additive. Variant patterns are appended after the base manifest patterns.
  • requires updates 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: false skips pip-resolved wheels from requires, but explicit embedded_wheels are still included.
  • docs: true embeds generated HTML docs into that variant archive at docs.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[].docs to true to embed generated HTML in that variant archive.
  • Leave docs unset or false for 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 package
  • cli: repository helper entry points
  • examples: sample manifests for common workflows
  • docs: user and developer guides
  • tests: 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

beb-0.2.0.tar.gz (26.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

beb-0.2.0-py3-none-any.whl (26.3 kB view details)

Uploaded Python 3

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

Hashes for beb-0.2.0.tar.gz
Algorithm Hash digest
SHA256 d6ea1c670951a1c73778009131520293d7e0f7584a46749b007f8a5dee788657
MD5 addef93036195977e92b8ee44a9828d2
BLAKE2b-256 e042c5e90269fc437eb9b061bc947d34bc68a48e7c199e450e5d3a1a4d5c3bdd

See more details on using hashes here.

Provenance

The following attestation bundles were made for beb-0.2.0.tar.gz:

Publisher: publish.yml on minimalefforttech/beb

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for beb-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 efc012248e725224fc4dec8ff179b15f06a5df5a29056f6619431435ae895383
MD5 4ed54ba563a9737e0bb69a6abd456988
BLAKE2b-256 d03d2005c0bfa30454852e5fa7dd3b5bea46f0697adcf667e0297940d1ad1519

See more details on using hashes here.

Provenance

The following attestation bundles were made for beb-0.2.0-py3-none-any.whl:

Publisher: publish.yml on minimalefforttech/beb

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page