Short answer: yes, I think it will make up the API gap and thus potentially increase the major version number. Please see the warnings below.
When you open the public / external API, you take the additional “responsibility to take care” to think carefully about the changes to the interface. This includes, for example, removing potential improvements to avoid backward compatibility *. Any changes that may affect any code legally ** using your interface should be considered very carefully when you support the API.
The specification for semantic versioning is unambiguous:
The major version of X (Xyz | X> 0) MUST be incremented if any backward incompatible changes are introduced into the open API.
Changing parameter names, as you determined in the question, introduces backward incompatibility for passing code by keywords.
However, instead of saying that this change should increase the main version, I will instead conclude that the change should not be made , or at least not in isolation - this is too small a change to justify the main gain, potentially violating the existing one valid code. Except when:
- This is part of a larger package of important changes; or
- There is a really good reason for changes that are not shown in your example (some show stop errors or other functions that rely on it);
I would completely abandon this change. It is better to move slower and make sure that you continue to fulfill your semantic version contract, making such changes only with convincing reasons for this.
* Since we are in the Python tag, consider integer division, which, despite being recognized by the BDFL error , remains at 2.x to this day.
** I say “legal” to exclude the use of code that does not use it as officially documented, for example, by accessing the private-by-convention attributes — they should count on inconvenience on occasion! Therefore, if you predicted this change, and it was clearly stated that only positional arguments should be used, this change would be OK, but it would be a strange choice.