bump2version icon indicating copy to clipboard operation
bump2version copied to clipboard

Support for segment aliases?

Open bsolomon1124 opened this issue 4 years ago • 5 comments

From PEP 440:

Pre-releases allow the additional spellings of alpha, beta, c, pre, and preview for a, b, rc, rc, and rc respectively. This allows versions such as 1.1alpha1, 1.1beta2, or 1.1c3 which normalize to 1.1a1, 1.1b2, and 1.1rc3. In every case the additional spelling should be considered equivalent to their normal forms.

In other words, here:

  • beta/b are aliases
  • alpha/a are aliases
  • rc/r are aliases

in this scheme.

I realize bump2version is not designed to cater to PEP440's schema, per se, but this concept of aliasing certain parts (rather than requiring that values is sequential) extends to other slightly different schemes also.

I have a half-baked feature branch that partially implements the ability to specify aliases in bumpversion values config. For instance, it allows

values = 
  dev
  alpha,a
  beta,b
  rc,c

What I have actually found challenging, because there is a good deal of ambiguity involved, is how optional_value and first_value would need to be/allowed to be specified.

Questions for @c4urself and @ekohl

  • Thoughts on usefulness of adding this feature?
  • Does there seem to be any more intuitive way to allow the user to specify aliases versus the example shown above?
  • Thoughts on how strict you'd want to be about what correspondingly would be accepted as optional_value/first_value?

It would come down to something like setting section_config["values"] in cli.py to have some list/tuple elements rather than just str, with some corresponding changes in version_part.py and functions.py.

bsolomon1124 avatar Dec 18 '20 00:12 bsolomon1124

Do you have other examples of part aliases (outside of PEP440)?

florisla avatar Jan 19 '21 21:01 florisla

Do you have other examples of part aliases (outside of PEP440)?

One example shows that Maven also allows this.

the "alpha", "beta" and "milestone" qualifiers can respectively be shortened to "a", "b" and "m" when directly followed by a number.

Googling for examples is a little tricky, but I have a hunch aliasing occurs with node projects also.

bsolomon1124 avatar Jan 20 '21 02:01 bsolomon1124

* Does there seem to be any more intuitive way to allow the user to specify aliases versus the example shown above?

You could consider leaving values as-is showing the canonical (or preferred) names, and introducing another keyword aliases.

values = 
  dev
  alpha
  beta
  rc
aliases =
  alpha: a, alph
  beta: b
  rc: r, gamma
  dev: d

florisla avatar Jan 20 '21 11:01 florisla

@florisla I like that idea; it seems cleaner than the messy business of picking a separator for values.

bsolomon1124 avatar Jan 20 '21 12:01 bsolomon1124

I have a half-baked feature branch that partially implements the ability to specify aliases in bumpversion values config.

Do you support serializing with aliases as well?

If you only care about parsing the aliases, then bump2version will never put an alias in a file? You would need to manually edit the version to introduce them, and they would disappear on the next bump.

Edit: just found #174, which might be relevant for context.

florisla avatar Jan 20 '21 13:01 florisla