Skip to main content

A fast, convenient project manager for Blender extensions.

Project description

blext

NOTE: This software should be considered alpha aka. unstable. It is not ready for production use. The feature-set is incomplete. The documentation is still very sparse.

With that said, we already find it quite useful. We hope you'll consider sharing your experiences with us, good and bad - for example, in the Discussions / Issues sections!

A project manager for Blender extensions, facilitating rapid and reliable development.

Features

  • All You Need is uv: The absolute only prerequisite is uv and blender. Another opinionated Python packager? Trust me, it's great.
  • Intuitive and Fast: uvx blext dev runs Blender with your extension. If you only changed some code, it runs nearly instantly!
  • Effortless Deps: Need a Python package for your addon? Just uv add <pkgname>. The next time you run blext dev, your package will be available from your extension code.
  • Single Source of Truth: Manage your Blender extension entirely from pyproject.toml, using the new table [tool.blext]. blext is explicit about any mistakes you might make, and for your trouble, generates a correct blender_manifest.toml when making the addon.
  • Extension Analysis: "Look inside" your extension with ease. Need to check the generated blender_manifest.toml? Re-run Blender's own extension validation? Or just check a platform-specific deduction? Just use blext show!

Running blext

If you have uv, just run:

uvx blext

This relies on uv tools, which is similar to pipx.

This is the recommended way of using blext.

Using blext

For now, see examples/simple in this repository for an example of a working Blender extension.

Particular attention should be paid to the [tool.blext] section of pyproject.toml.

More in-depth documentation TBD.

Installing blext

Apart from uvx, installation can be one more or less as with any Python package:

  • pip install --user blext: The standard pip package manager should work fine. It is strongly suggested to use a venv.
  • uv tool install blext: This allows running blext without prepending uvx blext.
  • uv add --dev blext: This enables running uv run blext from any other uv project.
  • Install from Source: See the Contributing section.

Documentation

For now, run blext alone, or run blext --help explicitly.

Subcommands also have help text available. For example, blext dev --help.

More documentation TBD

Contributing to blext

How do I...

Get Started?

# Install uv.

# Clone the Repository
git clone URL
cd blext

# Install pre-commit hooks
uvx pre-commit install

# That's it! Change some code!

Test some Local Changes?

# Run the Local 'blext'
## - Add any CLI options you want!
uv run blext

Make a Commit?

# Stage Files for the Commit
## - Generally, make sure that "one commit is one change".
git add ...  ## 'git add -A' works too, due to thorough .gitignores.

# Use 'commitizen' for Semantic Commits
## - Commit messages **are** CHANGELOG messages, and can also ref/close issues.
## - So make them good! `cz c` makes that easy.
uv run cz c  ## 'git commit' always works, but is less convenient.

# When pre-commit Makes Changes
## - For example, adding a license header or reformatting something.
## - Just re-stage and re-commit - `cz c` will remember the commit message.
git add ...  ## 'git add -A' works too, due to thorough .gitignores.
uv run cz c

Overview of Tools

Development of blext relies on the following tools:

  • uv: Package and project manager. Required.
  • pre-commit: Enforces conventions at commit-time. Strongly suggested.
  • commitizen: Commit and release manager. Enforced by pre-commit.
  • ruff fmt: Deterministic code formatter. Enforced by pre-commit.
  • ruff lint: Code linter. Not enforced (planned).
  • mypy: Static type analysis. Not enforced (planned).

Making Commits

Commits are subject to pre-commit hooks, if installed. To set this up, simply run:

uvx pre-commit install

Then, all pre-commit hooks will run after each commit.

Sometimes it's nice to run all of the pre-commit hooks manually:

uvx pre-commit run --all-files

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

blext-0.3.0.tar.gz (115.0 kB view details)

Uploaded Source

Built Distribution

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

blext-0.3.0-py3-none-any.whl (35.9 kB view details)

Uploaded Python 3

File details

Details for the file blext-0.3.0.tar.gz.

File metadata

  • Download URL: blext-0.3.0.tar.gz
  • Upload date:
  • Size: 115.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.5.18

File hashes

Hashes for blext-0.3.0.tar.gz
Algorithm Hash digest
SHA256 2f3871e4384728816ba2297f04633d089b5dc6e43105182cd4b95a75f7a179e0
MD5 1a72bd5f4134abfd5599ee158a46faf1
BLAKE2b-256 a014d7217ce50873ff63087d9a5958ca53cabab2d500dea5606afc1809a6a55c

See more details on using hashes here.

File details

Details for the file blext-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: blext-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 35.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.5.18

File hashes

Hashes for blext-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5b05e3c39a91d4605a470f4f363cd54cd6815e3fc14c965180d2f5deb0e6201f
MD5 9631837d170b51c9b7fc390fe55ea899
BLAKE2b-256 ed4cdf37762c5448a43b79c223e4b77c2e81445f5321b0990683579ca2236f64

See more details on using hashes here.

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