@@ -31,11 +31,11 @@ def build_md(self):
3131 self .sort ()
3232 buffer = []
3333 if self .features :
34- _build_md (self .features , "**Features**" , buffer )
34+ _build_md (sorted ( set ( self .features ), key = self . features . index ) , "**Features**" , buffer )
3535 if self .breaking_changes :
36- _build_md (self .breaking_changes , "**Breaking changes**" , buffer )
36+ _build_md (sorted ( set ( self .breaking_changes ), key = self . breaking_changes . index ) , "**Breaking changes**" , buffer )
3737 if not (self .features or self .breaking_changes ) and self .optional_features :
38- _build_md (self .optional_features , "**Features**" , buffer )
38+ _build_md (sorted ( set ( self .optional_features ), key = self . optional_features . index ) , "**Features**" , buffer )
3939
4040 return "\n " .join (buffer ).strip ()
4141
@@ -79,8 +79,18 @@ def operation(self, diff_entry):
7979 # Ignore change in metadata for now, they have no impact
8080 return
8181
82- # So method signaure changed. Be vague for now
83- self .breaking_changes .append (_SIGNATURE_CHANGE .format (operation_name , function_name ))
82+ if remaining_path [0 ] == "parameters" :
83+ old_parameters_list = self ._old_report ["operations" ][operation_name ]["functions" ][function_name ]['parameters' ]
84+ new_parameters_list = self ._new_report ["operations" ][operation_name ]["functions" ][function_name ]['parameters' ]
85+ old_parameters = {param_name ['name' ] for param_name in old_parameters_list }
86+ new_parameters = {param_name ['name' ] for param_name in new_parameters_list }
87+ # The new parameter is optional or not. Be breaking change for now.
88+ for removed_parameter in old_parameters - new_parameters :
89+ self .breaking_changes .append (_REMOVE_OPERATION_PARAM .format (operation_name , function_name , removed_parameter ))
90+ for added_parameter in new_parameters - old_parameters :
91+ self .breaking_changes .append (_ADD_OPERATION_PARAM .format (operation_name , function_name ,added_parameter ))
92+ return
93+ raise NotImplementedError (f"Other situations. Be err for now: { str (remaining_path )} " )
8494
8595 def models (self , diff_entry ):
8696 path , is_deletion = self ._unpack_diff_entry (diff_entry )
@@ -138,13 +148,14 @@ def models(self, diff_entry):
138148## Features
139149_ADD_OPERATION_GROUP = "Added operation group {}"
140150_ADD_OPERATION = "Added operation {}.{}"
151+ _ADD_OPERATION_PARAM = "Operation {}.{} has a new parameter {}"
141152_MODEL_PARAM_ADD = "Model {} has a new parameter {}"
142153_MODEL_ADD = "Added model {}"
143154
144155## Breaking Changes
145156_REMOVE_OPERATION_GROUP = "Removed operation group {}"
146157_REMOVE_OPERATION = "Removed operation {}.{}"
147- _SIGNATURE_CHANGE = "Operation {}.{} has a new signature "
158+ _REMOVE_OPERATION_PARAM = "Operation {}.{} no longer has parameter {} "
148159_MODEL_SIGNATURE_CHANGE = "Model {} has a new signature"
149160_MODEL_PARAM_DELETE = "Model {} no longer has parameter {}"
150161_MODEL_PARAM_ADD_REQUIRED = "Model {} has a new required parameter {}"
0 commit comments