edk2-pytool-extensions
Python tools supporting UEFI EDK2 firmware development
What it is and what it does
edk2-pytool-extensions is a Tianocore-maintained toolkit for building and maintaining EDK2-based UEFI firmware projects. It provides command-line interfaces (known as "stuart") and a plugin-based environment that handles build orchestration, CI integration, test execution, and dependency downloading. The package is designed to support multi-repository firmware projects where each repository can contribute build tools and steps through a plugin mechanism.
The toolkit includes loggers, binary dependency resolution (nuget, URLs, git repos), environment management, pre/post-build hooks, and utilities like nuget publishing and omnicache for git repository caching. Built on edk2-pytool-library, it is a supplemental package not required for basic EDK2 builds but provides infrastructure for scalable, multi-repository firmware development workflows.
Use it for:
- Orchestrating multi-repository EDK2 firmware builds with plugin-based contribution from each repository.
- Setting up CI/CD pipelines for UEFI firmware projects with automated dependency resolution and build validation.
- Managing binary dependencies (NuGet packages, external URLs, git repositories) for firmware builds.
- Running pre- and post-build hooks and custom build steps through the plugin framework.
- Caching and reusing git repositories across multiple firmware workspaces using omnicache.
- Publishing firmware build artifacts and dependencies via NuGet from a centralized build environment.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Provides command-line tools and a plugin-based environment for building and maintaining EDK2-based UEFI firmware code trees, including build orchestration, dependency resolution, and multi-repository project support.
Yes, if you are developing or maintaining EDK2-based UEFI firmware. The package is actively maintained, has low install friction, and passes integration tests on Python 3.12–3.14 across Windows and Linux. Verify the license treatment (BSD-2-Clause Plus Patent) against your project's requirements, and note that it is a supplemental tool—not required for basic EDK2 builds.
Install
edk2-pytool-extensions on PyPI
pip
pip install edk2-pytool-extensionsuv
uv add edk2-pytool-extensionspoetry
poetry add edk2-pytool-extensionsInstalling edk2-pytool-extensions
Before you install
Low friction installation as a pure Python wheel. Actively maintained with recent commits and passing integration tests across Python 3.12–3.14 on Windows and Linux. Requires Python 3.10 or later.
License in practice
License treatment is unclear in the fact sheet; the description mentions BSD-2-Clause Plus Patent License in the repository, but this is not formally declared in package metadata. Verify the actual license terms before adopting in proprietary or restricted environments.
Quickstart
pip install edk2-pytool-extensions
from edk2toolext import <module>
# Use tools for EDK2 build orchestration, dependency resolution, or plugin-based workflows
Requires Python 3.10 or later; pywin32 is a runtime dependency that may require system configuration on Windows.
Verify before relying
- Exact scope and API surface of the plugin framework and how to write custom tools.
- Whether omnicache and nuget publishing tools are fully documented and production-ready.
- Compatibility and tested workflows with specific EDK2 platform configurations beyond the integration test matrix.
- Complete module structure and import paths available from edk2-pytool-extensions.
Package facts
| License | not declared (unclear) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 9 — edk2-pytool-library, pyyaml, pefile, semantic_version, GitPython, openpyxl, XlsxWriter, pywin32, setuptools |
| Maintenance | actively maintained — 137 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 375,707/month — #7,135 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: edk2_pytool_extensions-0.31.0-py3-none-any.whl
Tags
More Build Tools packages
Provides reusable utilities for Python…
permissive · top 100 on PyPI
tqdmWraps any iterable to display a real-time…
copyleft · top 100 on PyPI
pippip is the standard installer for Python…
permissive · top 100 on PyPI
hatchlingHatchling is a standards-compliant Python build…
permissive · top 100 on PyPI
grpcio-toolsGenerates Python gRPC service stubs and message…
permissive · top 1,000 on PyPI
pre-commitpre-commit is a framework for installing and…
permissive · top 1,000 on PyPI
edk2-pytool-libraryProvides Python classes and utilities for UEFI…
unclear · top 15,000 on PyPI
pwntoolsPwntools is a CTF framework and exploit…
permissive · top 5,000 on PyPI
uefi-firmwareParses, extracts, and recreates UEFI firmware…
permissive · top 15,000 on PyPI
akracerAKRacer provides precompiled dynamic libraries…
permissive · top 5,000 on PyPI
colcon-metadataExtends colcon-core to fetch and manage package…
permissive · top 15,000 on PyPI
winrt-Windows.Devices.BluetoothProvides Python bindings to Windows Runtime…
permissive · top 15,000 on PyPI
winrt-Windows.Devices.EnumerationProvides Python bindings to Windows Runtime…
permissive · top 15,000 on PyPI
pyjoulescope-driverPython bindings for the Joulescope DC energy…
permissive · top 15,000 on PyPI
scikit-learn-extraExtends scikit-learn with additional machine…
permissive · top 15,000 on PyPI
winrt-Windows.Devices.Bluetooth.AdvertisementProvides Python bindings to access Windows…
permissive · top 15,000 on PyPI