セマンティック バージョニングの重要性を友人に説明しようとしたとき、次のようなジレンマに直面しました。
次の関数を公開するlibfoo
versionの library があるとします。1.2.3
def foo(x, y):
"""
Compute the sum of the operands.
:param x: The first argument.
:param y: The second argument.
:returns: The sum of `x` and `y`.
"""
return x + y
ここで、この関数とそのドキュメントが次のように変更されたとします。
def foo(a, b):
"""
Compute the sum of the operands.
:param a: The first argument.
:param b: The second argument.
:returns: The sum of `a` and `b`.
"""
return a + b
私の第一印象は1.2.4
、パブリック インターフェイスが変更されていないため、次のバージョンは になるだろうということでした。たとえば、次のように関数を呼び出す人は、変更にまったく気付かないでしょう。
foo(3, 4)
しかし、もう少し考えてみると、Python では名前でパラメーターを指定できるため、これはAPI の中断である可能性が非常に高いです。誰かが私の関数を次のように呼び出すとしたら:
foo(y=4, x=3)
これは version1.2.4
では機能しなくなり、セマンティック バージョニング コントラクトが破られます。
一方で、このような変更は非常に小さいため、バージョンを に上げるのは気が引け2.0.0
ます。
要約すると、これは API の中断を構成しますか? この場合、次のバージョン番号は何にする必要がありますか?