NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #3547 most downloaded on PyPI
Zephyr RTOS Project meta-tool
Last release 1 years ago
23 Sep 2025
Release timing varies
gaps range from 8 days to 12 months
Most releases are documented
notes for 26 of 38 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
78 releases · first in 2018
Add support for auto-caching #829 Pass the --auto-cache <directory> argument to west update . Run west update --help for more details.
Major changes
--auto-cache <directory> argument to west update.west update --help for more details.Other changes
--name-cache and --path-cache for west update #831Bug fixes
Major changes:
Add support for auto-caching. Pass the --auto-cache <directory> argument to west update .
Other changes:
Allow combining --name-cache and --path-cache for west update .
Document default revision value in the manifest schema.
Bug fixes:
Allow empty or missing manifest projects list.
Make manifest.group-filter list order deterministic when freezing or resolving manifest files.
One column per quarter.
Add support for auto-caching #829 Pass the --auto-cache argument to west update. Run west update --help for more details.
Major changes
--auto-cache <directory> argument to west update.
Run west update --help for more details.Other changes
--name-cache and --path-cache for west update #831Bug fixes
projects list #823 #825manifest.group-filter list order deterministic. #824 #827Allow appending data to configuration strings #768 To append to a value for <name> , type: west config -a <name> <value>
Major changes
<name>, type: west config -a <name> <value>--untracked argument option to west manifest to display untracked files and directories #786west manifest --untracked in a workspace to print all files and directories that are not tracked or managed by west.--inactive argument option to west list to support printing inactive projects #794--active-only argument option for the --resolve and --freeze manifest commands #808Other changes
ruff linter #762, #763, #764, #765, #766, #770argparse action to a mutually exclusive group for the configuration command'ssetuptools dependency #814Bug fixes
Changes:
Allow appending data to configuration strings. To append to a value for <name> , type: west config -a <name> <value> .
Add --untracked argument option to west manifest . Run west manifest --untracked in a workspace to print all files and directories that are not tracked or managed by west.
Add --inactive argument option to west list to support printing inactive projects.
Support --active-only argument option for the west manifest --resolve and west manifest --freeze commands. This allows freezing workspaces with active project or group filters.
API changes:
west.manifest.Manifest methods as_dict() , as_frozen_dict() , as_yaml() and as_frozen_yaml() now have an optional active_only argument (defaults to False ) to return an object containing all projects or only the active ones.
Allow appending data to configuration strings #768 To append to a value for , type: west config -a
Major changes
<name>, type: west config -a <name> <value>--untracked argument option to west manifest to display untracked files and directories #786
Run west manifest --untracked in a workspace to print all files and directories that are not tracked or managed by west.--inactive argument option to west list to support printing inactive projects #794--active-only argument option for the --resolve and --freeze manifest commands #808Other changes
ruff linter #762, #763, #764, #765, #766, #770argparse action to a mutually exclusive group for the configuration command's
local/global/system argument #769setuptools dependency #814Bug fixes
global/nonlocal declaration #798Added support for alias commands #716 Alias commands can be added using the configuration west config alias.<name> "<command>"
Major changes
west config alias.<name> "<command>"pyproject.toml package format in accordance to PEP 621 #715Other changes
west diff and west status to underlying git commands #718--manifest argument to west diff to allow comparingwest forall #721west help forall for details-q to reduce verbosity #723--clone-opt argument to west init to pass to git clone #744.west directory #754--rename-delay for west init #756die in debug -vvv #757Bug fixes
Same as v1.3.0 Alpha2 with:
Other changes:
--clone-opt argument to west init to pass to git clone #744Bug fixes:
west diff --manifest now compares to manifest-rev #748Major changes:
Added support for West aliases commands.
Adopt the pyproject TOML specification for packaging.
Other changes:
Add cache support for submodules.
Decode manifest files as UTF-8 by default.
Pass unknown arguments for west diff and west status to underlying git commands.
Added --manifest argument to west diff to allow comparing the current workspace to the manifest revisions.
Environment variables can be used with west forall The following are defined:
WEST_PROJECT_NAME
WEST_PROJECT_PATH
WEST_PROJECT_ABSPATH
WEST_PROJECT_REVISION
WEST_PROJECT_URL
WEST_PROJECT_REMOTE
Added support for early argument -q/--quiet to reduce verbosity.
Added -o/--clone-opt argument to west init to pass to git clone .
Support Python 3.13 and drop support for Python 3.8.
Prevent manifests from having projects in the .west directory.
Add NTFS workarounds and --rename-delay for west init .
Print a stack trace when calling die in debug -vvv .
Bug fixes:
Use 'backslashreplace' not to crash on malformed UTF from subprocess.
Fix handling in west diff for repositories with merge conflicts. Additionally improve error printing and handle git diff return codes.
Fix --freeze and --resolve for the west manifest command when git submodules are used.
Support python 3.13 and drop support for python 3.8 #752
Same as v1.3.0 Alpha3 with:
Other changes:
.west directory #754--rename-delay for west init #756die in debug -vvv #757Added --clone-opt argument to west init to pass to git clone #744
Same as v1.3.0 Alpha2 with:
Other changes:
--clone-opt argument to west init to pass to git clone #744Bug fixes:
west diff --manifest now compares to manifest-rev #748Fixed release workflow when downloading artifacts #745
New 'west grep' command for running a "grep tool" in your west workspace's repositories. Currently, 'git grep', 'ripgrep', and standard 'grep' are sup
Major changes:
New 'west grep' command for running a "grep tool" in your west workspace's
repositories. Currently, 'git grep', 'ripgrep', and standard 'grep' are
supported grep tools.
To run this command to get 'git grep foo' results from all cloned,
active repositories, run:
west grep foo
For more details, run 'west help grep'.
Other changes:
The manifest file format now supports a 'description' field in each
'projects:' element.
'west list --format' now accepts '{description}' in the format
string, which prints the project's 'description:' value.
'west compare' now always prints information about
the manifest-rev branch
Bug fixes:
API changes:
'west.commands.WestCommand' methods 'check_call()' and
'check_output()' now take any kwargs that can be passed on
to the underlying subprocess function.
'west.commands.WestCommand.run_subprocess()': new wrapper
around 'subprocess.run()'. This could not be named 'run()'
because 'WestCommand' already had a method by this name.
'west.commands.WestCommand' methods 'dbg()', 'inf()',
'wrn()', and 'err()' now all take an 'end' kwarg, which
is passed on to the call to 'print()'.
'west.manifest.Project' now has a 'description' attribute,
which contains the parsed value of the 'description:' field
in the manifest data.
Major changes:
New west grep command for running a “grep tool” in your west workspace’s repositories. Currently, git grep , ripgrep , and standard grep are supported grep tools.
To run this command to get git grep foo results from all cloned, active repositories, run:
west grep foo
Here are some other examples for running different grep commands with west grep :
git grep --untracked
west grep --untracked foo
ripgrep
west grep --tool ripgrep foo
grep --recursive
west grep --tool grep foo
To switch the default grep tool in your workspace, run the appropriate command in this table:
ripgrep
west config grep.tool ripgrep
grep
west config grep.tool grep
For more details, run west help grep .
Other changes:
The manifest file format now supports a description field in each projects: element. See Projects for examples.
west list --format now accepts {description} in the format string, which prints the project’s description: value.
west compare now always prints information about The manifest-rev branch .
Bug fixes:
west init aborts if the destination directory already exists.
API changes:
west.commands.WestCommand methods check_call() and check_output() now take any kwargs that can be passed on to the underlying subprocess function.
west.commands.WestCommand.run_subprocess() : new wrapper around subprocess.run() . This could not be named run() because WestCommand already had a method by this name.
west.commands.WestCommand methods dbg() , inf() , wrn() , and err() now all take an end kwarg, which is passed on to the call to print() .
west.manifest.Project now has a description attribute, which contains the parsed value of the description: field in the manifest data.
Nothing published for this version
- west compare : new command that compares the state of the workspace against the manifest.
Major changes:
west compare : new command that compares the state of the workspace against the manifest.
Support for a new manifest.project-filter configuration option. See Built-in Configuration Options for details. The west manifest --freeze and west manifest --resolve commands currently cannot be used when this option is set. This restriction can be removed in a later release.
Project names which contain comma ( , ) or whitespace now generate warnings. These warnings are errors if the new manifest.project-filter configuration option is set. The warnings may be promoted to errors in a future major version of west.
Other changes:
west forall now takese a --group argument that can be used to restrict the command to only run in one or more groups. Run west help forall for details.
All west commands will now output log messages from west API modules at warning level or higher. In addition, the --verbose argument to west can be used once to include informational messages, or twice to include debug messages, from all commands.
Bug fixes:
Various improvements to error messages, debug logging, and error handling.
API changes:
west.manifest.Manifest.is_active() now respects the manifest.project-filter configuration option’s value.
Nothing published for this version
- Manifest schema version “1.0” is now available for use in this release. This is identical to the “0.13” schema version in terms of features, but can
Major changes:
Manifest schema version “1.0” is now available for use in this release. This is identical to the “0.13” schema version in terms of features, but can be used by applications that do not wish to use a “0.x” manifest “version:” field. See Version for details on this feature.
Bug fixes:
West no longer exits with a successful error code when sent an interrupt signal. Instead, it exits with a platform-specific error code and signals to the calling environment that the process was interrupted.
The APIs are now declared stable. Any breaking changes will be communicated by a major version bump from v1.x.y to v2.x.y.
Major changes in this release:
The APIs are now declared stable. Any breaking changes will be communicated by a major version bump from v1.x.y to v2.x.y.
West v1.0 no longer works with the Zephyr v1.14 LTS releases. This LTS has long been obsoleted by Zephyr v2.7 LTS. If you need to use Zephyr v1.14, you must use west v0.14 or earlier.
Like the rest of Zephyr, west now requires Python v3.8 or later
West commands no longer accept abbreviated command line arguments. For example, you must now specify "west update --keep-descendants" instead of using an abbreviation like "west update --keep-d". This is part of a change applied to all of Zephyr's Python scripts' command-line interfaces. The abbreviations were causing problems in practice when commands were updated to add new options with similar names but different behavior to existing ones.
Other changes:
All built-in west functions have stopped using "west.log"
"west update": new "--submodule-init-config" option. See commit 9ba92b05 for details.
Bug fixes:
West extension commands that failed to load properly sometimes dumped stack. This has been fixed and west now prints a sensible error message in this case.
"west config" now fails on malformed configuration option arguments which lack a "." in the option name
API changes:
The west package now contains the metadata files necessary for some static analyzers (such as mypy) to auto-detect its type annotations. See commit d9f00e24 for details.
the deprecated "west.build" module used for Zephyr v1.14 LTS compatibility was removed
the deprecated "west.cmake" module used for Zephyr v1.14 LTS compatibility was removed
the "west.log" module is now deprecated. This module's uses global state, which can make it awkward to use it as an API which multiple different python modules may rely on.
The west.commands module got some new APIs which lay groundwork for a future change to add a global verbosity control to a command's output, and work to remove global state from the "west" package's API:
Nothing published for this version
https://docs.zephyrproject.org/latest/develop/west/release-notes.html#v0-14-0
For release notes, see:
https://docs.zephyrproject.org/latest/develop/west/release-notes.html#v0-14-0
Bug fixes:
West commands that were run with a bad local configuration file dumped stack in a confusing way. This has been fixed and west now prints a sensible error message in this case.
A bug in the way west looks for the zephyr repository was fixed. The bug itself usually appeared when running an extension command like west build in a new workspace for the first time; this used to fail (just for the first time, not on subsequent command invocations) unless you ran the command in the workspace’s top level directory.
West now prints sensible error messages when the user lacks permission to open the manifest file instead of dumping stack traces.
API changes:
The west.manifest.MalformedConfig exception type has been moved to the west.configuration module
The west.manifest.MalformedConfig exception type has been moved to the west.configuration module
The west.configuration.Configuration class now raises MalformedConfig instead of RuntimeError in some cases
Nothing published for this version
When calling west.manifest.Manifest.from_file() when outside of a workspace, west again falls back on the ZEPHYR_BASE environment variable to locate t
Bug fix:
- When calling west.manifest.Manifest.from_file() when outside of a
workspace, west again falls back on the ZEPHYR_BASE environment
variable to locate the workspace.
The following APIs are now deprecated in favor of using a Configuration object. Usually this will be done via self.config from a WestCommand instance,…
New features:
You can now associate arbitrary user data with the manifest repository itself in the manifest: self: userdata: value, like so:
manifest:
self:
userdata: <any YAML value can go here>
Bug fixes:
The path to the manifest repository reported by west could be incorrect in certain circumstances detailed in [issue #572](https://github.com/zephyrproject-rtos/west/issues/572). This has been fixed as part of a larger overhaul of path handling support in the west.manifest [API](https://docs.zephyrproject.org/latest/develop/west/west-apis.html#west-apis) module.
The west.Manifest.ManifestProject.__repr__ return value was fixed
API changes:
west.configuration.Configuration: new object-oriented interface to the current configuration. This reflects the system, global, and workspace-local configuration values, and allows you to read, write, and delete configuration options from any or all of these locations.
west.commands.WestCommand:
config: new attribute, returns a Configuration object or aborts the program if none is set. This is always usable from within extension command do_run() implementations.
has_config: new boolean attribute, which is True if and only if reading self.config will abort the program.
The path handling in the west.manifest package has been overhauled in a backwards-incompatible way. For more details, see commit [56cfe8d1d1](https://github.com/zephyrproject-rtos/west/commit/56cfe8d1d1f3c9b45de3e793c738acd62db52aca).
west.manifest.Manifest.validate(): this now returns the validated data as a Python dict. This can be useful if the value passed to this function was a str, and the dict is desired.
west.manifest.Manifest: new:
path attributes abspath, posixpath, relative_path, yaml_path, repo_path, repo_posixpath
userdata attribute, which contains the parsed value from manifest: self: userdata:, or is None
from_topdir() factory method
west.manifest.ManifestProject: new userdata attribute, which also contains the parsed value from manifest: self: userdata:, or is None
west.manifest.ManifestImportFailed: the constructor can now take any value; this can be used to reflect failed imports from a [map](https://docs.zephyrproject.org/latest/develop/west/manifest.html#west-manifest-import-map) or other compound value.
Deprecated configuration APIs:
The following APIs are now deprecated in favor of using a Configuration object. Usually this will be done via self.config from a WestCommand instance, but this can be done directly by instantiating a Configuration object for other usages.
west.configuration.config
west.configuration.read_config
west.configuration.update_config
west.configuration.delete_config
Nothing published for this version
- West now works on the MSYS2 platform.
New features:
West now works on the MSYS2 platform.
West manifest files can now contain arbitrary user data associated with each project. See Repository user data for details.
Bug fixes:
The west list command’s {sha} format key has been fixed for the manifest repository; it now prints N/A (“not applicable”) as expected.
API changes:
The west.manifest.Project.userdata attribute was added to support project user data.
Nothing published for this version
Nothing published for this version
west status now only prints output for projects which have a nonempty status.
New features:
Bug fixes:
The manifest file parser was incorrectly allowing project names which contain the path separator characters / and . These invalid characters are now rejected.
Note: if you need to place a project within a subdirectory of the workspace topdir, use the 'path:' key. If you need to customize a project's fetch URL relative to its remote 'url-base:', use 'repo-path:'.
The changes made in west v0.10.1 to the 'west init --manifest-rev' option which selected the default branch name were leaving the manifest repository in a detached HEAD state. This has been fixed by using 'git clone' internally instead of 'git init' and 'git fetch'. See issue #522 for details.
The WEST_CONFIG_LOCAL environment variable now correctly overrides the default location, <workspace topdir>/.west/config.
west update --fetch=smart (smart is the default) now correclty skips fetches for project revisions which are lightweight tags (it already worked correctly for annotated tags; only lightweight tags were unnecessarily fetched).
Other changes:
API changes:
west.manifest.Manifest.get_projects() avoids incorrect results in some edge cases described in issue #523.
west.manifest.Project.sha() now works correctly for tag revisions. (This applies to both lightweight and annotated tags.)
Nothing published for this version
- west update now supports --narrow , --name-cache , and --path-cache options. These can be influenced by the update.narrow , update.name-cache , and
New features:
west update now supports --narrow , --name-cache , and --path-cache options. These can be influenced by the update.narrow , update.name-cache , and update.path-cache Configuration options. These can be used to optimize the speed of the update.
west update now supports a --fetch-opt option that will be passed to the git fetch command used to fetch remote revisions when updating each project.
Bug fixes:
west update now synchronizes Git submodules in projects by default. This avoids issues if the URL changes in the manifest file from when the submodule was first initialized. This behavior can be disabled by setting the update.sync-submodules configuration option to false .
Other changes:
the west.manifest module has fixed docstrings for the Project class
Nothing published for this version
Nothing published for this version
- The west init command’s --manifest-rev ( --mr ) option no longer defaults to master . Instead, the command will query the repository for its default
New features:
The west init command’s --manifest-rev ( --mr ) option no longer defaults to master . Instead, the command will query the repository for its default branch name and use that instead. This allows users to move from master to main without breaking scripts that do not provide this option.
Nothing published for this version
Nothing published for this version
- The name key in a project’s submodules list is now optional.
New features:
The name key in a project’s submodules list is now optional.
Bug fixes:
West now checks that the manifest schema version is one of the explicitly allowed values documented in Version . The old behavior was just to check that the schema version was newer than the west version where the manifest: version: key was introduced. This incorrectly allowed invalid schema versions, like 0.8.2 .
Other changes:
A manifest file’s group-filter is now propagated through an import . This is a change from how west v0.9.x handled this. In west v0.9.x, only the top level manifest file’s group-filter had any effect; the group filter lists from any imported manifests were ignored.
Starting with west v0.10.0, the group filter lists from imported manifests are also imported. For details, see Group Filters and Imports .
The new behavior will take effect if manifest: version: is not given or is at least 0.10 . The old behavior is still available in the top level manifest file only with an explicit manifest: version: 0.9 . See Version for more information on schema versions.
See west pull request #482 for the motivation for this change and additional context.
Nothing published for this version
- Commands like west manifest --resolve now correctly include group and group filter information.
Bug fixes:
Commands like west manifest --resolve now correctly include group and group filter information.
Other changes:
West now warns if you combine import with group-filter . Semantics for this combination have changed starting with v0.10.x. See the v0.10.0 release notes above for more information.
Nothing published for this version
The west config fix described below comes at a cost: any comments or other manual edits in configuration files will be removed when setting a configur
Warning
The west config fix described below comes at a cost: any comments or other manual edits in configuration files will be removed when setting a configuration option via that command or the west.configuration API.
Warning
Combining the group-filter feature introduced in this release with manifest imports is discouraged. The resulting behavior has changed in west v0.10.
New features:
West manifests now support Git Submodules in Projects . This allows you to clone Git submodules into a west project repository in addition to the project repository itself.
West manifests now support Project Groups . Project groups can be enabled and disabled to determine what projects are “active”, and therefore will be acted upon by the following commands: west update , west list , west diff , west status , west forall .
west update no longer updates inactive projects by default. It now supports a --group-filter option which allows for one-time modifications to the set of enabled and disabled project groups.
Running west list , west diff , west status , or west forall with no arguments does not print information for inactive projects by default. If the user specifies a list of projects explicitly at the command line, output for them is included regardless of whether they are active.
These commands also now support --all arguments to include all projects, even inactive ones.
west list now supports a {groups} format string key in its --format argument.
Bug fixes:
The west config command and west.configuration API did not correctly store some configuration values, such as strings which contain commas. This has been fixed; see commit 36f3f91e for details.
A manifest file with an empty manifest: self: path: value is invalid, but west used to let it pass silently. West now rejects such manifests.
A bug affecting the behavior of the west init -l . command was fixed; see issue #435 .
API changes:
added west.manifest.Manifest.is_active()
added west.manifest.Manifest.group_filter
added submodules attribute to west.manifest.Project , which has newly added type west.manifest.Submodule
Other changes:
The Manifest Imports feature now supports the terms allowlist and blocklist instead of whitelist and blacklist , respectively.
The old terms are still supported for compatibility, but the documentation has been updated to use the new ones exclusively.
Nothing published for this version
Nothing published for this version
This is a feature release which changes the manifest schema by adding support for a path-prefix: key in an import: mapping, along with some other feat
This is a feature release which changes the manifest schema by adding support for a path-prefix: key in an import: mapping, along with some other features and fixes.
Manifest import mappings now support a path-prefix: key, which places the project and its imported repositories in a subdirectory of the workspace. See Example 3.4: Import into a subdirectory for an example.
The west command line application can now also be run using python3 -m west . This makes it easier to run west under a particular Python interpreter without modifying the PATH environment variable.
west manifest –path prints the absolute path to west.yml
west init now supports an --mf foo.yml option, which initializes the workspace using foo.yml instead of west.yml .
west list now prints the manifest repository’s path using the manifest.path configuration option , which may differ from the self: path: value in the manifest data. The old behavior is still available, but requires passing a new --manifest-path-from-yaml option.
Various Python API changes; see West APIs for details.
Nothing published for this version
Nothing published for this version
- Fix an error where a failed import could leave the workspace in an unusable state (see PR #415 for details)
This is a bugfix release.
Fix an error where a failed import could leave the workspace in an unusable state (see PR #415 for details)
Nothing published for this version
This is a bugfix and minor feature release.
This is a bugfix and minor feature release.
Filter out duplicate extension commands brought in by manifest imports
Fix west.Manifest.get_projects() when finding the manifest repository by path
Nothing published for this version
This is a bugfix and minor feature release.
This is a bugfix and minor feature release.
west update --stats now prints timing for operations which invoke a subprocess, time spent in west’s Python process for each project, and total time updating each project.
west topdir always prints a POSIX style path
minor console output changes
- west.build and west.cmake: deprecated; this is Zephyr-specific functionality and should never have been part of west. Since Zephyr v1.14 LTS relies…
The main user-visible feature in west 0.7 is the Manifest Imports feature. This allows users to load west manifest data from multiple different files, resolving the results into a single logical manifest.
Additional user-visible changes:
The idea of a “west installation” has been renamed to “west workspace” in this documentation and in the west API documentation. The new term seems to be easier for most people to work with than the old one.
West manifests now support a schema version .
The “west config” command can now be run outside of a workspace, e.g. to run west config --global section.key value to set a configuration option’s value globally.
There is a new west topdir command, which prints the root directory of the current west workspace.
The west -vv init command now prints the git operations being performed, and their results.
The restriction that no project can be named “manifest” is now enforced; the name “manifest” is reserved for the manifest repository, and is usable as such in commands like west list manifest , instead of west list path-to-manifest-repository being the only way to say that
It’s no longer an error if there is no project named “zephyr”. This is part of an effort to make west generally usable for non-Zephyr use cases.
Various bug fixes.
The developer-visible changes to the West APIs are:
west.build and west.cmake: deprecated; this is Zephyr-specific functionality and should never have been part of west. Since Zephyr v1.14 LTS relies on it, it will continue to be included in the distribution, but will be removed when that version of Zephyr is obsoleted.
west.commands:
WestCommand.requires_installation: deprecated; use requires_workspace instead
WestCommand.requires_workspace: new
WestCommand.has_manifest: new
WestCommand.manifest: this is now settable
west.configuration: callers can now identify the workspace directory when reading and writing configuration files
west.log:
msg(): new
west.manifest:
The module now uses the standard logging module instead of west.log
QUAL_REFS_WEST: new
SCHEMA_VERSION: new
Defaults: removed
Manifest.as_dict(): new
Manifest.as_frozen_yaml(): new
Manifest.as_yaml(): new
Manifest.from_file() and from_data(): these factory methods are more flexible to use and less reliant on global state
Manifest.validate(): new
ManifestImportFailed: new
ManifestProject: semi-deprecated and will likely be removed later.
Project: the constructor now takes a topdir argument
Project.format() and its callers are removed. Use f-strings instead.
Project.name_and_path: new
Project.remote_name: new
Project.sha() now captures stderr
Remote: removed
West now requires Python 3.6 or later. Additionally, some features may rely on Python dictionaries being insertion-ordered; this is only an implementation detail in CPython 3.6, but it is part of the language specification as of Python 3.7.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
This point release fixes an error in the behavior of the deprecated west.cmake module.
This point release fixes an error in the behavior of the deprecated west.cmake module.
This point release fixes an error in the behavior of west update --fetch=smart , introduced in v0.6.1.
This point release fixes an error in the behavior of west update --fetch=smart , introduced in v0.6.1.
All v0.6.1 users must upgrade.
Do not use this point release. Make sure to use v0.6.2 instead.
Warning
Do not use this point release. Make sure to use v0.6.2 instead.
The user-visible features in this point release are:
The west update command has a new --fetch command line flag and update.fetch configuration option . The default value, “smart”, skips fetching SHAs and tags which are available locally.
Better and more consistent error-handling in the west diff , west status , west forall , and west update commands. Each of these commands can operate on multiple projects; if a subprocess related to one project fails, these commands now continue to operate on the rest of the projects. All of them also now report a nonzero error code from the west process if any of these subprocesses fails (this was previously not true of west forall in particular).
The west manifest command also handles errors better.
The west list command now works even when the projects are not cloned, as long as its format string only requires information which can be read from the manifest file. It still fails if the format string requires data stored in the project repository, e.g. if it includes the {sha} format string key.
Commands and options which operate on git revisions now accept abbreviated SHAs. For example, west init --mr SHA_PREFIX now works. Previously, the --mr argument needed to be the entire 40 character SHA if it wasn’t a branch or a tag.
The developer-visible changes to the West APIs are:
west.log.banner(): new
west.log.small_banner(): new
west.manifest.Manifest.get_projects(): new
west.manifest.Project.is_cloned(): new
west.commands.WestCommand instances can now access the parsed Manifest object via a new self.manifest property during the do_run() call. If read, it returns the Manifest object or aborts the command if it could not be parsed.
west.manifest.Project.git() now has a capture_stderr kwarg
In west v0.5.x, the program was split into two components, a bootstrapper and a per-installation clone. See Multiple Repository Management in the v1.1
No separate bootstrapper
In west v0.5.x, the program was split into two components, a bootstrapper and a per-installation clone. See Multiple Repository Management in the v1.14 documentation for more details.
This is similar to how Google’s Repo tool works, and lets west iterate quickly at first. It caused confusion, however, and west is now stable enough to be distributed entirely as one piece via PyPI.
From v0.6.x onwards, all of the core west commands and helper classes are part of the west package distributed via PyPI. This eliminates complexity and makes it possible to import west modules from anywhere in the system, not just extension commands.
The selfupdate command still exists for backwards compatibility, but now simply exits after printing an error message.
Manifest syntax changes
A west manifest file’s projects elements can now specify their fetch URLs directly, like so:
manifest : projects : - name : example-project-name url : https://github.com/example/example-project
Project elements with url attributes set in this way may not also have remote attributes.
Project names must be unique: this restriction is needed to support future work, but was not possible in west v0.5.x because distinct projects may have URLs with the same final pathname component, like so:
manifest : remotes : - name : remote-1 url-base : https://github.com/remote-1 - name : remote-2 url-base : https://github.com/remote-2 projects : - name : project remote : remote-1 path : remote-1-project - name : project remote : remote-2 path : remote-2-project
These manifests can now be written with projects that use url instead of remote , like so:
manifest : projects : - name : remote-1-project url : https://github.com/remote-1/project - name : remote-2-project url : https://github.com/remote-2/project
The west list command now supports a {sha} format string key
The default format string for west list was changed to "{name:12} {path:28} {revision:40} {url}" .
The command west manifest --validate can now be run to load and validate the current manifest file, among other error-handling fixes related to manifest parsing.
Incompatible API changes were made to west’s APIs. Further changes are expected until API stability is declared in west v1.0.
The west.manifest.Project constructor’s remote and defaults positional arguments are now kwargs. A new url kwarg was also added; if given, the Project URL is set to that value, and the remote kwarg is ignored.
west.manifest.MANIFEST_SECTIONS was removed. There is only one section now, namely manifest . The sections kwargs in the west.manifest.Manifest factory methods and constructor were also removed.
The west.manifest.SpecialProject class was removed. Use west.manifest.ManifestProject instead.
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →