Skip to content

--new-version with search/replace modifies file incorrectly when current_version == new_version #260

Open
@christokur

Description

@christokur

bump2version --new-version 0.3.1 patch

.bumpversion.cfg:

[bumpversion]
current_version = 0.3.1

[bumpversion:file:pyproject.toml]
parse = ^version\s+=\s+['"]*(?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)['"]*
search = version = "{current_version}"
replace = version = "{new_version}"

pyproject.toml BEFORE:

[tool.poetry]
name = "project"
version = "0.3.1"
...

pyproject.toml AFTER:

[tool.poetry]
name = "project"
version = "version = "0.3.1""
...

The bug is here:

file_content_after = file_content_before.replace(

The fix is something like this:

            file_content_after = file_content_before.replace(
                self._versionconfig.search.format(**{**context, "current_version": current_version.original}), replace_with
            )

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions