NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #2775 most downloaded on PyPI
Plugin for Poetry to enable dynamic versioning based on VCS tags
Last release 7 months ago
15 Feb 2026
Release timing varies
gaps range from 1 weeks to 8 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
70 releases · first in 2019
Option tool.poetry-dynamic-versioning.highest-tag , to select the numerically highest version even if it is not the chronologically latest tag.
tool.poetry-dynamic-versioning.highest-tag, to select the numerically highest version even if it is not the chronologically latest tag.File paths in tool.poetry-dynamic-versioning.files were not resolved the same way as paths in tool.poetry-dynamic-versioning.substitution.files , whic
tool.poetry-dynamic-versioning.files were not resolved the same way as paths in tool.poetry-dynamic-versioning.substitution.files, which could cause incorrect behavior with different styles of relative paths. (Contributed by egelja)One column per quarter.
Option tool.poetry-dynamic-versioning.commit-prefix .
tool.poetry-dynamic-versioning.commit-prefix.tool.poetry-dynamic-versioning.escape-with.Possible object has no attribute 'poetry' error in some projects.
object has no attribute 'poetry' error in some projects.NameError exception with Python 3.7.
NameError exception with Python 3.7.The bump config may now be set to a table, which supports an index field.
bump config may now be set to a table, which supports an index field.commit-length option to set a fixed length for commit hashes.{major}, {minor}, and {patch} format placeholders.poetry-monoranger-plugin) that replace the ConsoleCommandEvent.command.poetry instance. (Contributed by stevapple)There was an intermittent ValueError in PEP 621 mode, related to trying to remove "version" from project.dynamic when it had already been removed.
ValueError in PEP 621 mode, related to trying to remove "version" from project.dynamic when it had already been removed.The enable command now supports the bypass/override environment variables to use a different placeholder version than 0.0.0.
enable command now supports the bypass/override environment variables to use a different placeholder version than 0.0.0.enable command would add "version" to project.dynamic even if it were already present. (Contributed by waketzheng)enable command would set tool.poetry.version to "0.0.0" even if the field were already present with a different value.CLI: show command to print the version without changing any files.
show command to print the version without changing any files.The formatting of project.dynamic and tool.poetry.version could be changed when triggering the plugin via poetry dynamic-versioning or pip install (bu
project.dynamic and tool.poetry.version could be changed when triggering the plugin via poetry dynamic-versioning or pip install (but not via poetry build or poetry-dynamic-versioning).Array formatting was not preserved when changing project.dynamic in pyproject.toml. (Contributed by edgarrmondragon)
project.dynamic in pyproject.toml.
(Contributed by edgarrmondragon)CLI: When pyproject.toml contains the project section, the enable command will add the required fields for Poetry 2.0.0+.
project section,
the enable command will add the required fields for Poetry 2.0.0+.^1.2.0 to >=1.2.0.project.version and tool.poetry.version at the same time.UnboundLocalError could happen when pyproject.toml was misconfigured.The enable command would fail when the pyproject.toml tables were out of order.
enable command would fail when the pyproject.toml tables were out of order.The plugin now supports Poetry's upcoming PEP-621 functionality. More info here: https://github.com/python-poetry/poetry/issues/3332
The plugin now supports Poetry's upcoming PEP-621 functionality. More info here: https://github.com/python-poetry/poetry/issues/3332
If your pyproject.toml defines tool.poetry.name,
then the plugin will preserve its existing behavior.
However, if your pyproject.toml:
tool.poetry.nameproject.nameproject.dynamic to include "version"project.version...then the plugin will enable its PEP-621 functionality.
Because PEP-621 support is not yet released and finalized in Poetry itself, it is also subject to change in the plugin.
pattern-prefix option to add a prefix to the version tag pattern.
pattern-prefix option to add a prefix to the version tag pattern.ignore-untracked option to control the detection of dirty state.from-file config section to read a version from a file instead of the VCS.POETRY_DYNAMIC_VERSIONING_DEBUG environment variable for some logging.initial-content-jinja option in tool.poetry-dynamic-versioning.files section.
initial-content-jinja option in tool.poetry-dynamic-versioning.files section.pathlib.Path.read_text.
To avoid this, pathlib.Path.read_bytes is used instead now.
(Contributed by nardi)Custom substitutions in pyproject.toml weren't cleaned up correctly. This was because the plugin would record the "original" content of the file after
version and enable fields had already been changed.
Now, substitutions are reverted first before reverting version and enable.tool.poetry-dynamic-versioning.files config section. This allows you to create a file in a default state before applying substitutions to it. You can
tool.poetry-dynamic-versioning.files config section.
This allows you to create a file in a default state before applying substitutions to it.
You can also leave the substitutions in place when the plugin deactivates.Compatibility with poetry-core 1.7.0, which removed the poetry.core.semver module.
poetry.core.semver module.enable command now constrains the plugin version to >=1.0.0,<2.0.0
to protect against any potential API changes.Running poetry dynamic-versioning followed by poetry build would leave the plugin enabled in the sdist's pyproject.toml.
poetry dynamic-versioning followed by poetry build
would leave the plugin enabled in the sdist's pyproject.toml.The plugin can now update versions for dependencies that also use the plugin.
The plugin maintained its own copy of the default pattern, which meant that it could fall behind the copy in Dunamai and lead to surprising behavior.
pattern, which meant that
it could fall behind the copy in Dunamai and lead to surprising behavior.
The plugin now automatically uses the latest default from Dunamai directly
when you do not customize it in the plugin settings.Implemented the official Poetry plugin interface.
fix-shallow-repository option to attempt to automatically fix shallow repositories. Currently, this only supports Git and will run git fetch --unshall
fix-shallow-repository option to attempt to automatically fix shallow repositories.
Currently, this only supports Git and will run git fetch --unshallow.Nothing published for this version
Nothing published for this version
POETRY_DYNAMIC_VERSIONING_COMMANDS_NO_IO environment variable to prevent the plugin from modifying files during certain commands. The plugin still set
POETRY_DYNAMIC_VERSIONING_COMMANDS_NO_IO
environment variable to prevent the plugin from modifying files during certain commands.
The plugin still sets the dynamic version in memory so that Poetry itself can write it as needed.poetry version, the plugin still activates, but no longer modifies pyproject.toml.CLI enable subcommand to enable the plugin in pyproject.toml.
enable subcommand to enable the plugin in pyproject.toml.POETRY_DYNAMIC_VERSIONING_OVERRIDE environment variable.mode option for substitution to support __version_tuple__ style.poetry dynamic-versioning now outputs a summary of the changes,
the same way that poetry-dynamic-versioning already did.The plugin will print a warning for shallow Git repositories (and any other Concerns reported by Dunamai in the future). This becomes an error with st
Concerns reported by Dunamai in the future).
This becomes an error with strict = true.Compatibility with poetry-core 1.6.0+.
CHANGELOG.md and tests are now included in sdists.In the Poetry CLI mode and standalone script mode, path dependencies received the same dynamic version as the active project. This issue did not affec
path dependencies received the same dynamic version as the active project.
This issue did not affect the build backend mode.Resolved a deprecation warning when used with Poetry Core 1.3.0+. (Contributed by edgarrmondragon)
Line endings were not necessarily preserved because of the default behavior of pathlib.Path.write_text. To avoid this, pathlib.Path.write_bytes is use
pathlib.Path.write_text.
To avoid this, pathlib.Path.write_bytes is used instead now.Warning for invalid config was printed to stdout instead of stderr.
The plugin now prints a warning if its configuration is invalid. Right now, this just checks for unknown keys.
strict option to prevent falling back to 0.0.0 when there are no tags.git archive and hg archive.
Refer to the Dunamai documentation for more info.Updated Dunamai to 1.13.2+ for the latest features and bug fixes. In particular, this fixes an error when parsing Git output with showSignature = true
showSignature = true configured.When using poetry build, the plugin did not properly disable itself in the copy of pyproject.toml included in source distributions, causing failures w
poetry build, the plugin did not properly disable itself in the
copy of pyproject.toml included in source distributions, causing failures
when trying to install them.POETRY_DYNAMIC_VERSIONING_COMMANDS).The minimum supported Python version is now 3.7.
plugin feature.CLI mode failed when pyproject.toml did not specify enable = true.
enable = true.Option tool.poetry-dynamic-versioning.substitution.folders.
tool.poetry-dynamic-versioning.substitution.folders.Option tool.poetry-dynamic-versioning.subversion.tag-dir is now tool.poetry-dynamic-versioning.tag-dir.
tool.poetry-dynamic-versioning.subversion.tag-dir is now tool.poetry-dynamic-versioning.tag-dir.tool.poetry-dynamic-versioning.tag-branch.tool.poetry-dynamic-versioning.full-commit.Internal improvements/refactoring to unify code base with poetry-dynamic-versioning-plugin, which is released as a separate package. These changes sho
poetry-dynamic-versioning-plugin,
which is released as a separate package. These changes should not affect
users of poetry-dynamic-versioning.The plugin maintained its own copy of the default pattern, which meant that it could fall behind the copy in Dunamai and lead to surprising behavior.
pattern, which meant that
it could fall behind the copy in Dunamai and lead to surprising behavior.
The plugin now automatically uses the latest default from Dunamai directly
when you do not customize it in the plugin settings.The build backend is now poetry-core. (Contributed by fabaff)
substitution.patterns now handles __version__
when it has a type annotation.
(Draft by da2ce7)POETRY_DYNAMIC_VERSIONING_BYPASS.
(Draft by jonringer)branch, branch_escaped, and timestamp formatting variables.Fixed an oversight where the default version tag pattern would only find tags with exactly three parts in the base (e.g., v1.0.0 and v1.2.3). This is
v1.0.0 and v1.2.3).
This is now relaxed so that v1, v1.2.3.4, and so on are also recognized.Broadened version range of Jinja2 dependency to support projects that need a newer version.
Parsing files containing special UTF-8 characters would result in an error. Files are now assumed to be UTF-8. (Contributed by rhorenov)
The previous bump fix only applied to format-jinja. It has now been fixed for other scenarios as well.
bump fix only applied to format-jinja. It has now been
fixed for other scenarios as well.When the bump option was enabled, the version would be bumped even when on a commit with a version tag. Now, no bumping occurs when on such a commit.
bump option was enabled, the version would be bumped even when on
a commit with a version tag. Now, no bumping occurs when on such a commit.An incompatibility with tox-poetry-installer where the working directory was received as a str instead of a Path. (Contributed by cburgess)
tox-poetry-installer where the working directory
was received as a str instead of a Path.
(Contributed by cburgess)Previously, when building a source distribution with poetry build, the plugin's config section would retain the enable = true setting, which would the
Previously, when building a source distribution with poetry build, the
plugin's config section would retain the enable = true setting, which
would then cause an error when installing the artifact since the VCS info
would not be available.
(This was not an issue for wheels generated by poetry build.)
The dynamic version from build time is still present in the source
distribution, so there is no need for the plugin at install time.
Therefore, the plugin now temporarily sets enable = false so that that
value will be placed in the source distribution, then restores the original
setting for development purposes.
Another possible exception when applying patches if only poetry-core was installed and not the Poetry tool, particularly combined with Tox.
poetry-core was
installed and not the Poetry tool, particularly combined with Tox.Possible exception when applying patches if only poetry-core was installed and not the Poetry tool.
poetry-core was
installed and not the Poetry tool.tagged-metadata option, for the corresponding Dunamai feature. (Contributed by mariusvniekerk)
tagged-metadata option, for the corresponding Dunamai feature.
(Contributed by mariusvniekerk)poetry shell did not clean up after itself.
bump option.poetry shell did not clean up after itself.Support for patching poetry-core when used as a standalone build system.
poetry-core when used as a standalone build system.Dropped support for pip wheel . and bumped the minimum Poetry version to 1.0.2 in order to enable fixing the following issue.
pip wheel . and bumped the minimum Poetry version to
1.0.2 in order to enable fixing the following issue.poetry run did not always clean up after itself.poetry.semver.version could not be imported because it was moved to
poetry.core.semver.version starting in Poetry 1.1.0a1. The plugin can now
handle either location.Fixed a possible issue with string interning in glob handling. (Contributed by mariusvniekerk)
Fixed an issue with Python 3.5 compatibility. (Contributed by gsemet)
Fixed an issue where CLI mode did not persist the change to pyproject.toml. This problem was missed because of an issue in the integration tests, whic
Your coding agent can read these notes before it upgrades. Set up the MCP server →