{"id":28444526,"url":"https://github.com/tianocore/edk2-pytool-extensions","last_synced_at":"2025-11-21T02:05:09.521Z","repository":{"id":37611958,"uuid":"194339659","full_name":"tianocore/edk2-pytool-extensions","owner":"tianocore","description":"Extensions to the edk2 build system allowing for a more robust and plugin based build system and tool execution environment ","archived":false,"fork":false,"pushed_at":"2025-11-20T21:38:36.000Z","size":2479,"stargazers_count":72,"open_issues_count":12,"forks_count":53,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-11-20T23:30:01.990Z","etag":null,"topics":["edk2","python","pytools"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tianocore.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-06-28T22:19:38.000Z","updated_at":"2025-11-20T21:38:21.000Z","dependencies_parsed_at":"2023-12-18T17:45:16.430Z","dependency_job_id":"355c35b1-e31a-42a1-8102-7a0cda722e17","html_url":"https://github.com/tianocore/edk2-pytool-extensions","commit_stats":{"total_commits":286,"total_committers":21,"mean_commits":"13.619047619047619","dds":0.7692307692307692,"last_synced_commit":"572f020c4315a603667dd3ef73379b98ce999a9e"},"previous_names":[],"tags_count":117,"template":false,"template_full_name":null,"purl":"pkg:github/tianocore/edk2-pytool-extensions","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tianocore%2Fedk2-pytool-extensions","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tianocore%2Fedk2-pytool-extensions/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tianocore%2Fedk2-pytool-extensions/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tianocore%2Fedk2-pytool-extensions/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tianocore","download_url":"https://codeload.github.com/tianocore/edk2-pytool-extensions/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tianocore%2Fedk2-pytool-extensions/sbom","scorecard":{"id":884325,"data":{"date":"2025-08-11","repo":{"name":"github.com/tianocore/edk2-pytool-extensions","commit":"8d94a8b1d4d1b3d32208094f57bad8c37fa18dca"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":6.4,"checks":[{"name":"Code-Review","score":10,"reason":"all changesets reviewed","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":9,"reason":"11 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 9","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'actions' permission set to 'read': .github/workflows/codeql.yml:28","Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql.yml:29","Warn: no topLevel permission defined: .github/workflows/CIRunner.yml:1","Warn: no topLevel permission defined: .github/workflows/UnitTestRunner.yml:1","Warn: no topLevel permission defined: .github/workflows/VariableProducer.yml:1","Warn: no topLevel permission defined: .github/workflows/codeql.yml:1","Warn: no topLevel permission defined: .github/workflows/doc-release.yml:1","Warn: no topLevel permission defined: .github/workflows/run-ci.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/CIRunner.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/tianocore/edk2-pytool-extensions/CIRunner.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/CIRunner.yml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/tianocore/edk2-pytool-extensions/CIRunner.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/CIRunner.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/tianocore/edk2-pytool-extensions/CIRunner.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/UnitTestRunner.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/tianocore/edk2-pytool-extensions/UnitTestRunner.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/UnitTestRunner.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/tianocore/edk2-pytool-extensions/UnitTestRunner.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/UnitTestRunner.yml:53: update your workflow using https://app.stepsecurity.io/secureworkflow/tianocore/edk2-pytool-extensions/UnitTestRunner.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/UnitTestRunner.yml:57: update your workflow using https://app.stepsecurity.io/secureworkflow/tianocore/edk2-pytool-extensions/UnitTestRunner.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/tianocore/edk2-pytool-extensions/codeql.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/tianocore/edk2-pytool-extensions/codeql.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:59: update your workflow using https://app.stepsecurity.io/secureworkflow/tianocore/edk2-pytool-extensions/codeql.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:72: update your workflow using https://app.stepsecurity.io/secureworkflow/tianocore/edk2-pytool-extensions/codeql.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/doc-release.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/tianocore/edk2-pytool-extensions/doc-release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/doc-release.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/tianocore/edk2-pytool-extensions/doc-release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/doc-release.yml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/tianocore/edk2-pytool-extensions/doc-release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/doc-release.yml:61: update your workflow using https://app.stepsecurity.io/secureworkflow/tianocore/edk2-pytool-extensions/doc-release.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/CIRunner.yml:42","Warn: pipCommand not pinned by hash: .github/workflows/CIRunner.yml:43","Warn: npmCommand not pinned by hash: .github/workflows/CIRunner.yml:52","Warn: npmCommand not pinned by hash: .github/workflows/CIRunner.yml:53","Warn: pipCommand not pinned by hash: .github/workflows/UnitTestRunner.yml:37","Warn: pipCommand not pinned by hash: .github/workflows/UnitTestRunner.yml:38","Warn: pipCommand not pinned by hash: .github/workflows/doc-release.yml:35","Warn: pipCommand not pinned by hash: .github/workflows/doc-release.yml:36","Info:   0 out of  14 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned","Info:   0 out of   6 pipCommand dependencies pinned","Info:   0 out of   2 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":10,"reason":"SAST tool is run on all commits","details":["Info: SAST configuration detected: CodeQL","Info: all commits (30) are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-24T09:27:47.318Z","repository_id":37611958,"created_at":"2025-08-24T09:27:47.318Z","updated_at":"2025-08-24T09:27:47.318Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":285543732,"owners_count":27189594,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-11-21T02:00:06.175Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["edk2","python","pytools"],"created_at":"2025-06-06T09:09:34.599Z","updated_at":"2025-11-21T02:05:09.516Z","avatar_url":"https://github.com/tianocore.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Tianocore Edk2 PyTool Extensions (edk2toolext)\n\n[![pypi]][_pypi]\n[![codecov]][_codecov]\n[![ci]][_ci]\n[![docs]][_docs]\n\nGetting Started? Check out our documentation at [https://www.tianocore.org/edk2-pytool-extensions](https://www.tianocore.org/edk2-pytool-extensions/)!\n\nThis is a Tianocore maintained project consisting of command line and other\npython tools and extensions for building and maintaining an Edk2 based UEFI\nfirmware code tree. Part of these tools include \"invocables\" that can be used to\nbuild EDK2 Platforms and these tools are known as \"stuart\". This package's\nintent is to provide tools, scripts, and a plugin based environment for use\nwithin the tools and scripts. This environment has command line interfaces to\nsupport building a product, building CI, running tests, and downloading\ndependencies. This environment also provides the building blocks for developers\nto write their own tools to launch in the environment and leverage the\ncapabilities provided by the environment. The unique capabilities provided help\nsupport building products with multiple repositories and having each repository\ncontribute/plugin to the build process in a scalable way. The environment will\nscan the files in the code tree (multiple repos) and discover plugins,\ndependencies, path adjustments, environment variable settings, etc. This\nprovides easy methods for common repositories to share build tools/steps.\n\nInclusion of this package is best managed using Pip/Pypi.  This package makes\nuse of edk2-pytool-library.\n\nThis is a supplemental package and is not required to be used for edk2 builds.\n\n![stuart himself](stuart_logo.png \"Stuart\")\n\n## Current Status\n\n[![codecov]][_codecov]\n[![ci]][_ci]\n\nThe code coverage and CI badges represent unit test status and the code\ncoverage of those unit tests. We require 100% unit test success\n(Hence the pass / fail) and that code coverage percentage does not lower.\n\nMaintained Versions\n\n| Host Type           | Toolchain   | Project    | Integration Tests\n| :------------------ | :---------  | :--------- | :----------------\n| Windows Server 2019 | Python 3.12 | Edk2       | [![ewt1]][_it]\n| Windows Server 2019 | Python 3.13 | Edk2       | [![ewt2]][_it]\n| Windows Server 2019 | Python 3.14 | Edk2       | [![ewt3]][_it]\n| Linux Ubuntu 20.04  | Python 3.12 | Edk2       | [![eut1]][_it]\n| Linux Ubuntu 20.04  | Python 3.13 | Edk2       | [![eut2]][_it]\n| Linux Ubuntu 20.04  | Python 3.14 | Edk2       | [![eut3]][_it]\n| Windows Server 2022 | Python 3.12 | Project Mu | [![mwt1]][_it]\n| Windows Server 2022 | Python 3.13 | Project Mu | [![mwt2]][_it]\n| Windows Server 2022 | Python 3.14 | Project Mu | [![mwt3]][_it]\n| Linux Ubuntu 22.04  | Python 3.12 | Project Mu | [![mut1]][_it]\n| Linux Ubuntu 22.04  | Python 3.13 | Project Mu | [![mut2]][_it]\n| Linux Ubuntu 22.04  | Python 3.14 | Project Mu | [![mut3]][_it]\n\nMinimum Supported Version\n\n|  Host Type         |  Toolchain    |  Status\n|  :---------------  |  :----------  |  :-----------\n|  [Windows-Latest]  |  Python 3.10  |  [![ci]][_ci]\n|  [Ubuntu-Latest]   |  Python 3.10  |  [![ci]][_ci]\n\n### Current Release\n\n[![PyPI](https://img.shields.io/pypi/v/edk2_pytool_extensions.svg)](https://pypi.org/project/edk2-pytool-extensions/)\n\nAll release information is now tracked with Github\n [tags](https://github.com/tianocore/edk2-pytool-extensions/tags),\n [releases](https://github.com/tianocore/edk2-pytool-extensions/releases) and\n [milestones](https://github.com/tianocore/edk2-pytool-extensions/milestones).\n\n## Content\n\nThe package contains cli tools and a basic common environment for running tools.\nThis common environment supports extensions, sub-classing, and plugin to allow\ngreat flexibility for building and maintaining a code tree.\n\nExamples:\n\n* CI build support with plugin\n* Binary dependency resolution (nuget, urls, git repos)\n* Loggers (file, memory, and colored console)\n* Plugins (pre/post build, function injection)\n* Wrapper around edk2 build\n* VarDict and ShellEnvrionment to manage key/value pairs consistently across\n  entire process\n* Nuget Publishing tool to push new packages\n* Omnicache - Support a super cache of git repos to speed up creating and\n  updating multiple work spaces and minimizing filesystem impact\n\n## License\n\nAll content in this repository is licensed under [BSD-2-Clause Plus Patent\nLicense](https://github.com/tianocore/edk2-pytool-extensions/blob/master/LICENSE).\n\n[![PyPI -\nLicense](https://img.shields.io/pypi/l/edk2_pytool_extensions.svg)](https://pypi.org/project/edk2-pytool-extensions/)\n\n## Usage\n\nNOTE: It is strongly recommended that you use python virtual environments.\nVirtual environments avoid changing the global python workspace and causing\nconflicting dependencies.  Virtual environments are lightweight and easy to use.\n[Learn more](https://docs.python.org/3/library/venv.html)\n\n* To install run `pip install --upgrade edk2-pytool-extensions`\n* To use in your python code\n\n    ```python\n    from edk2toolext.\u003cmodule\u003e import \u003cclass\u003e\n    ```\n\n## History\n\nThis project and functionality was ported from Project Mu. For history and\ndocumentation prior to this see the original Project Mu projects\n\u003chttps://github.com/microsoft/mu_pip_environment\u003e and\n\u003chttps://github.com/microsoft/mu_pip_build\u003e\n\n## Contribution Process\n\nThis project welcomes all types of contributions. For issues, bugs, and\nquestions it is best to open a [github\nissue](https://github.com/tianocore/edk2-pytool-extensions/issues).\n\n### Code Contributions\n\nFor code contributions this project leverages github pull requests.  See github\ntutorials, help, and documentation for complete descriptions. For best success\nplease follow the below process.\n\n1. Contributor opens an issue describing problem or new desired functionality\n2. Contributor forks repository in github\n3. Contributor creates branch for work in their fork\n4. Contributor makes code changes, writes relevant unit tests, authors\n   documentation and release notes as necessary.\n5. Contributor runs tests locally\n6. Contributor submits PR to master branch of tianocore/edk2-pytool-extensions\n    1. PR reviewers will provide feedback on change.  If any modifications are\n       required, contributor will make changes and push updates.\n    2. PR automation will run and validate tests pass\n    3. If all comments resolved, maintainers approved, and tests pass the PR\n       will be squash merged and closed by the maintainers.\n\n## Maintainers\n\nSee the [github\nteam](https://github.com/orgs/tianocore/teams/edk-ii-tool-maintainers) for more\ndetails.\n\nDocumentation for maintainers on how to publish a release can be found [here](https://github.com/tianocore/edk2-pytool-extensions/blob/master/docs/contributor/publishing.md)\n\n## Documentation\n\n[![docs]][_docs]\n\nDocumentation for the most recent release of edk2-pytool-extensions is hosted on\n[tianocore.org/edk2-pytool-extensions](https://www.tianocore.org/edk2-pytool-extensions/).\nRaw documentation is located in the ```docs/``` folder and is split into two\nseparate categories. The first is located at ```docs/user/``` and is\ndocumentation and API references for those that are using this package in their\nown project. Users can generate a local copy of the documentation by executing the\nfollowing command from the root of the project:\n\n```cmd\npip install --upgrade -e .[docs]\nmkdocs serve\n```\n\nThe second is located at ```docs/contributor/``` and is documentation for\ncontributing to the edk2-pytool-extensions repository.\n\n[codecov]: https://codecov.io/gh/tianocore/edk2-pytool-extensions/branch/master/graph/badge.svg?token=vVJxZexcTI\n[_codecov]: https://codecov.io/gh/tianocore/edk2-pytool-extensions\n[pypi]: https://img.shields.io/pypi/v/edk2_pytool_extensions.svg\n[_pypi]: https://pypi.org/project/edk2-pytool-extensions/\n[docs]: https://img.shields.io/website?label=docs\u0026url=https%3A%2F%2Fwww.tianocore.org%2Fedk2-pytool-extensions%2F\n[_docs]: https://www.tianocore.org/edk2-pytool-extensions/\n[ci]: https://github.com/tianocore/edk2-pytool-extensions/actions/workflows/run-ci.yml/badge.svg?branch=master\u0026event=push\n[_ci]: https://github.com/tianocore/edk2-pytool-extensions/actions/workflows/run-ci.yml\n\n[_it]: https://dev.azure.com/tianocore/edk2-pytool-extensions/_build?definitionId=52\u0026_a=summary\u0026repositoryFilter=2\u0026branchFilter=14\n[ewt1]: https://dev.azure.com/tianocore/edk2-pytool-extensions/_apis/build/status/Integration%20Tests?branchName=master\u0026configuration=Edk2_Windows_Python312\n[ewt2]: https://dev.azure.com/tianocore/edk2-pytool-extensions/_apis/build/status/Integration%20Tests?branchName=master\u0026configuration=Edk2_Windows_Python313\n[ewt3]: https://dev.azure.com/tianocore/edk2-pytool-extensions/_apis/build/status/Integration%20Tests?branchName=master\u0026configuration=Edk2_Windows_Python314\n\n[eut1]: https://dev.azure.com/tianocore/edk2-pytool-extensions/_apis/build/status/Integration%20Tests?branchName=master\u0026configuration=Edk2_Ubuntu_Python312\n[eut2]: https://dev.azure.com/tianocore/edk2-pytool-extensions/_apis/build/status/Integration%20Tests?branchName=master\u0026configuration=Edk2_Ubuntu_Python313\n[eut3]: https://dev.azure.com/tianocore/edk2-pytool-extensions/_apis/build/status/Integration%20Tests?branchName=master\u0026configuration=Edk2_Ubuntu_Python314\n\n[mwt1]: https://dev.azure.com/tianocore/edk2-pytool-extensions/_apis/build/status/Integration%20Tests?branchName=master\u0026configuration=ProjectMu_Windows_Python312\n[mwt2]: https://dev.azure.com/tianocore/edk2-pytool-extensions/_apis/build/status/Integration%20Tests?branchName=master\u0026configuration=ProjectMu_Windows_Python313\n[mwt3]: https://dev.azure.com/tianocore/edk2-pytool-extensions/_apis/build/status/Integration%20Tests?branchName=master\u0026configuration=ProjectMu_Windows_Python314\n\n[mut1]: https://dev.azure.com/tianocore/edk2-pytool-extensions/_apis/build/status/Integration%20Tests?branchName=master\u0026configuration=ProjectMu_Ubuntu_Python312\n[mut2]: https://dev.azure.com/tianocore/edk2-pytool-extensions/_apis/build/status/Integration%20Tests?branchName=master\u0026configuration=ProjectMu_Ubuntu_Python313\n[mut3]: https://dev.azure.com/tianocore/edk2-pytool-extensions/_apis/build/status/Integration%20Tests?branchName=master\u0026configuration=ProjectMu_Ubuntu_Python314\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftianocore%2Fedk2-pytool-extensions","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftianocore%2Fedk2-pytool-extensions","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftianocore%2Fedk2-pytool-extensions/lists"}