skillfed

edk2-pytool-extensions

Python tools supporting UEFI EDK2 firmware development

edk2-pytool-extensions v0.31.0 375.7K downloads/30d#7,135 on PyPI77
License unclear Active released

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-extensions

uv

uv add edk2-pytool-extensions

poetry

poetry add edk2-pytool-extensions

Installing 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

Development Status :: 4 - BetaIntended Audience :: DevelopersOperating System :: OS IndependentProgramming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14

Tags

EDK2 UEFI firmware build toolsfirmware development environmentmulti-repository build orchestrationUEFI build systemfirmware CI build supportEDK2 plugin frameworkfirmware dependency management
firmware-developmentuefi-edk2build-orchestration

More Build Tools packages

packaging

Provides reusable utilities for Python…

permissive · top 100 on PyPI

tqdm

Wraps any iterable to display a real-time…

copyleft · top 100 on PyPI

pip

pip is the standard installer for Python…

permissive · top 100 on PyPI

hatchling

Hatchling is a standards-compliant Python build…

permissive · top 100 on PyPI

grpcio-tools

Generates Python gRPC service stubs and message…

permissive · top 1,000 on PyPI

pre-commit

pre-commit is a framework for installing and…

permissive · top 1,000 on PyPI

edk2-pytool-library

Provides Python classes and utilities for UEFI…

unclear · top 15,000 on PyPI

pwntools

Pwntools is a CTF framework and exploit…

permissive · top 5,000 on PyPI

uefi-firmware

Parses, extracts, and recreates UEFI firmware…

permissive · top 15,000 on PyPI

akracer

AKRacer provides precompiled dynamic libraries…

permissive · top 5,000 on PyPI

colcon-metadata

Extends colcon-core to fetch and manage package…

permissive · top 15,000 on PyPI

winrt-Windows.Devices.Bluetooth

Provides Python bindings to Windows Runtime…

permissive · top 15,000 on PyPI

winrt-Windows.Devices.Enumeration

Provides Python bindings to Windows Runtime…

permissive · top 15,000 on PyPI

pyjoulescope-driver

Python bindings for the Joulescope DC energy…

permissive · top 15,000 on PyPI

scikit-learn-extra

Extends scikit-learn with additional machine…

permissive · top 15,000 on PyPI

winrt-Windows.Devices.Bluetooth.Advertisement

Provides Python bindings to access Windows…

permissive · top 15,000 on PyPI