Description
Notes
  • In the constraints, means pairwise APIs, means pairwise parameters of pairwise functions.
  • In the grading, we only give the level for breaking changes on public APIs, since breaking changes on private APIs are always 🟡 Low breaking.

Module (2)

AddModule

Add a new module.

  • 🟢 Compatible

RemoveModule

Remove an old module.

  • 🔴 High

Class (7)

AddClass

Add a new class.

  • 🟢 Compatible

RemoveClass

Remove an old class.

  • 🔴 High

ChangeInheritance

In this case, the following basic constraint is omitted.

AddBaseClass

Add a class to base classes.

  • 🟢 Compatible

RemoveBaseClass

Remove a class from base classes.

  • 🔴 High

ImplementAbstractBaseClass

Implement a new (builtin) abstract base class.

  • 🟢 Compatible

DeimplementAbstractBaseClass

Deimplement a (builtin) abstract base class.

  • 🔴 High

ChangeMethodResolutionOrder

Change method resolution order of a class.

  • 🟠 Medium

Function (5)

AddFunction

In this case, the following basic constraint is omitted.

AddFunction

Add a new function, which is not bound to a class/instance.

  • 🟢 Compatible

AddMethod

Add a new method, which is bound to a class/instance.

  • 🟢 Compatible

RemoveFunction

In this case, the following basic constraint is omitted.

RemoveFunction

Remove an old function, which is not bound to a class/instance.

  • 🔴 High

RemoveMethod

Remove an old method, which is bound to a class/instance.

  • 🔴 High

ChangeReturnType

Change type of return value for a function.

  • 🟠 Medium if

Attribute (5)

AddAttribute

In this case, the following basic constraint is omitted.

AddAttribute

Add a new attribute, which is not bound to an instance.

  • 🟢 Compatible

AddInstanceAttribute

Add a new attribute, which is bound to an instance.

  • 🟢 Compatible

RemoveAttribute

In this case, the following basic constraint is omitted.

RemoveAttribute

Remove an old attribute, which is not bound to an instance.

  • 🔴 High

RemoveInstanceAttribute

Remove an old attribute, which is bound to an instance.

  • 🔴 High

ChangeAttributeType

Change type of an attribute.

  • 🟠 Medium if

Parameter (17)

AddParameter

In this case, the following basic constraint is omitted.

AddRequiredParameter

Add a new required parameter.

  • 🔴 High

AddOptionalParameter

Add a new optional parameter.

  • 🟠 Medium if , i.e. the parameter is from an instance method.

AddVarPositional

Add VarPositional parameter.

  • 🟢 Compatible

AddVarKeyword

Add VarKeyword parameter.

  • 🟢 Compatible

AddRequiredCandidate

Add a new required keyword candidate parameter.

  • 🟠 Medium

AddOptionalCandidate

Add a new optional keyword candidate parameter.

  • 🟢 Compatible

RemoveParameter

In this case, the following basic constraint is omitted.

RemoveRequiredParameter

Remove a required parameter.

  • 🔴 High

RemoveOptionalParameter

Remove an optional parameter.

  • 🔴 High

RemoveVarPositional

Remove VarPositional parameter.

  • 🔴 High

RemoveVarKeyword

Remove VarKeyword parameter.

  • 🔴 High

RemoveRequiredCandidate

Remove a required keyword candidate parameter.

  • 🟠 Medium

RemoveOptionalCandidate

Reove an optional keyword candidate parameter.

  • 🟠 Medium

ChangeParameter

In this case, the following basic constraint is omitted.

AddParameterDefault

Add default value of a parameter (making it optional).

  • 🟠 Medium if , i.e. the parameter is from an instance method.

RemoveParameterDefault

Remove default value of a parameter (making it required).

  • 🔴 High

ChangeParameterDefault

Change default value of a parameter.

  • 🟠 Medium if , i.e. the parameter is from an instance method.

MoveParameter

Change a positional parameter's position.

  • 🔴 High

ChangeParameterType

Change type of a parameter.

  • 🟠 Medium if

Alias (6)

In this case, the following basic constraint is omitted.

AddAlias

AddAlias

Add an alias to an API in the package.

  • 🟢 Compatible

AddExternalAlias

Add an alias to an API out of the package.

  • 🟢 Compatible

RemoveAlias

RemoveAlias

Remove an alias from an API in the package.

  • 🔴 High

RemoveExternalAlias

Remove an alias from an API out of the package.

  • 🟡 Low

ChangeAlias

ChangeAlias

Change the target in the package of an alias.

  • 🟢 Compatible

ChangeExternalAlias

Change the external target of an alias.

  • 🟢 Compatible