Eric J Ma's Website

How to ensure that bump2version only updates the correct string

written by Eric J. Ma on 2023-10-18 | tags: bump2version version control pyproject.toml configuration pattern matching patch release dependencies llamabot pyds-cli problem solving


In this blog post, I share a solution to a problem I encountered with bump2version, where it was incorrectly updating all pattern-matched strings instead of just the version number. I found that by modifying the .bumpversion.cfg file, I could ensure only the version number was updated. This has been a game-changer for me and I'm excited to implement it into my pyds-cli default project templates. Curious about how this could streamline your own version control process? Read on to find out more!

I recently discovered how to ensure that bump2version only bumps the exact version number and not other pattern-matched strings.

Within a pyproject.toml file, I had the following configuration:

[project]
...
version = "0.0.8"
dependencies = [
    ...
    "llamabot>=0.0.80",
    ...
]

If I wanted to do a patch release, bump2version would pattern-match on the exact string 0.0.8 and give me the following updated pyproject.toml file:

[project]
...
version = "0.0.9"
dependencies = [
    ...
    "llamabot>=0.0.90",
    ...
]

This is undesirable; really, we should be only updating the string version = "{version_number}".

Turns out, the configuration that we need within .bumpversion.cfg is:

[bumpversion:file:pyproject.toml]
search = version = "{current_version}"
replace = version = "{new_version}"

With this configuration, we get:

[project]
...
version = "0.0.9"
dependencies = [
    ...
    "llamabot>=0.0.80",
    ...
]

Which is correct!

I am going to add this to the pyds-cli configuration to make sure I never encounter the same problem again.


Cite this blog post:
@article{
    ericmjl-2023-how-string,
    author = {Eric J. Ma},
    title = {How to ensure that bump2version only updates the correct string},
    year = {2023},
    month = {10},
    day = {18},
    howpublished = {\url{https://ericmjl.github.io}},
    journal = {Eric J. Ma's Blog},
    url = {https://ericmjl.github.io/blog/2023/10/18/how-to-ensure-that-bump2version-only-updates-the-correct-string},
}
  

I send out a newsletter with tips and tools for data scientists. Come check it out at Substack.

If you would like to sponsor the coffee that goes into making my posts, please consider GitHub Sponsors!

Finally, I do free 30-minute GenAI strategy calls for teams that are looking to leverage GenAI for maximum impact. Consider booking a call on Calendly if you're interested!