Skip to content

Commit 202fd8a

Browse files
authored
add deprecate diff support (#438)
* add deprecate diff and test data
1 parent 4705b15 commit 202fd8a

12 files changed

Lines changed: 643 additions & 93 deletions

File tree

HISTORY.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
33
Release History
44
===============
5+
0.1.65
6+
++++++
7+
* `azdev command-change meta-diff`: Add diff support for deprecate_info in subgroup, cmd, parameters and options.
8+
59
0.1.64
610
++++++
711
* `azdev extension cal-next-version`: Fix module name when querying extension modules from index.

azdev/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@
44
# license information.
55
# -----------------------------------------------------------------------------
66

7-
__VERSION__ = '0.1.64'
7+
__VERSION__ = '0.1.65'

azure-cli-diff-tool/HISTORY.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
33
Release History
44
===============
5+
0.0.6
6+
++++++
7+
* Add diff support for deprecate_info in subgroup, cmd, parameters and options
8+
59
0.0.5
610
++++++
711
* Add `DiffLevel` to meta comparison

azure-cli-diff-tool/azure_cli_diff_tool/__init__.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@
1616
from .meta_change_detect import MetaChangeDetect
1717
from .utils import get_blob_config, load_blob_config_file, get_target_version_modules, get_target_version_module, \
1818
extract_module_name_from_meta_file, export_meta_changes_to_csv, export_meta_changes_to_json, \
19-
export_meta_changes_to_dict
19+
export_meta_changes_to_dict, expand_deprecate_obj
2020

21-
__VERSION__ = '0.0.5'
21+
__VERSION__ = '0.0.6'
2222

2323
logger = logging.getLogger(__name__)
2424

@@ -61,7 +61,8 @@ def meta_diff(base_meta_file, diff_meta_file, only_break=False, output_type="tex
6161
if command_tree_after.get("compat_version", None) \
6262
and check_meta_tool_compatibility(command_tree_after["compat_version"]):
6363
raise Exception("Please update your azure cli diff tool")
64-
64+
expand_deprecate_obj(command_tree_before)
65+
expand_deprecate_obj(command_tree_after)
6566
diff = DeepDiff(command_tree_before, command_tree_after)
6667
if not diff:
6768
print(f"No meta diffs from {diff_meta_file} to {base_meta_file}")
@@ -116,7 +117,8 @@ def version_diff(base_version, diff_version, only_break=False, version_diff_file
116117
if command_tree_after.get("compat_version", None) \
117118
and check_meta_tool_compatibility(command_tree_after["compat_version"]):
118119
raise Exception("Please update your azure cli diff tool")
119-
120+
expand_deprecate_obj(command_tree_before)
121+
expand_deprecate_obj(command_tree_after)
120122
diff = DeepDiff(command_tree_before, command_tree_after)
121123
if not diff:
122124
print(f"No meta diffs from version: {diff_version}/{base_meta_file} for module: {module_name}")

azure-cli-diff-tool/azure_cli_diff_tool/_const.py

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,25 +19,37 @@
1919

2020
CMD_REMOVE_SUFFIX_WARN_LIST = ["wait"]
2121

22+
SUBGROUP_PROPERTY_REMOVE_BREAK_LIST = []
23+
SUBGROUP_PROPERTY_REMOVE_WARN_LIST = ["deprecate_info_redirect"]
24+
25+
SUBGROUP_PROPERTY_ADD_BREAK_LIST = []
26+
SUBGROUP_PROPERTY_ADD_WARN_LIST = ["deprecate_info_hide", "deprecate_info_expiration"]
27+
28+
SUBGROUP_PROPERTY_UPDATE_BREAK_LIST = []
29+
SUBGROUP_PROPERTY_UPDATE_WARN_LIST = ["deprecate_info_expiration"]
30+
31+
SUBGROUP_PROPERTY_IGNORED_LIST = []
32+
2233
CMD_PROPERTY_REMOVE_BREAK_LIST = []
23-
CMD_PROPERTY_REMOVE_WARN_LIST = []
34+
CMD_PROPERTY_REMOVE_WARN_LIST = ["deprecate_info_redirect"]
2435

2536
CMD_PROPERTY_ADD_BREAK_LIST = ["confirmation"]
26-
CMD_PROPERTY_ADD_WARN_LIST = []
37+
CMD_PROPERTY_ADD_WARN_LIST = ["deprecate_info_hide", "deprecate_info_expiration"]
2738

2839
CMD_PROPERTY_UPDATE_BREAK_LIST = []
29-
CMD_PROPERTY_UPDATE_WARN_LIST = []
40+
CMD_PROPERTY_UPDATE_WARN_LIST = ["deprecate_info_expiration", "deprecate_info_redirect"]
3041

3142
CMD_PROPERTY_IGNORED_LIST = ["is_aaz", "supports_no_wait"]
3243

3344
PARA_PROPERTY_REMOVE_BREAK_LIST = ["options"]
34-
PARA_PROPERTY_REMOVE_WARN_LIST = ["id_part", "nargs"]
45+
PARA_PROPERTY_REMOVE_WARN_LIST = ["id_part", "nargs", "deprecate_info_redirect"]
3546

3647
PARA_PROPERTY_ADD_BREAK_LIST = ["required"]
37-
PARA_PROPERTY_ADD_WARN_LIST = ["choices"]
48+
PARA_PROPERTY_ADD_WARN_LIST = ["choices", "deprecate_info_expiration", "deprecate_info_hide", "options_deprecate_info"]
3849

3950
PARA_PROPERTY_UPDATE_BREAK_LIST = ["default", "aaz_default"]
40-
PARA_PROPERTY_UPDATE_WARN_LIST = ["type", "aaz_type", "choices", "nargs"]
51+
PARA_PROPERTY_UPDATE_WARN_LIST = ["type", "aaz_type", "choices", "nargs",
52+
"deprecate_info_expiration", "deprecate_info_redirect", "options_deprecate_info"]
4153

4254
PARA_NAME_IGNORED_LIST = ["force_string"]
4355
PARA_PROPERTY_IGNORED_LIST = []
@@ -61,6 +73,9 @@
6173
"1010": "cmd `{0}` update parameter `{1}`: updated property `{2}` from `{3}` to `{4}`",
6274
"1011": "sub group `{0}` added",
6375
"1012": "sub group `{0}` removed",
76+
"1013": "sub group `{0}` added property `{1}`",
77+
"1014": "sub group `{0}` removed property `{1}`",
78+
"1015": "sub group `{0}` updated property `{1}` from `{2}` to `{3}`",
6479
}
6580

6681
CHANGE_SUGGEST_MESSAGE_MAPPING = {
@@ -77,5 +92,8 @@
7792
"1010": "please change property `{0}` from `{1}` to `{2}` for parameter `{3}` of cmd `{4}`",
7893
"1011": "please confirm sub group `{0}` added",
7994
"1012": "please confirm sub group `{0}` removed",
95+
"1013": "please remove property `{0}` for sub group `{1}`",
96+
"1014": "please add back property `{0}` for sub group `{1}`",
97+
"1015": "please change property `{0}` from `{1}` to `{2}` for sub group `{3}`",
8098
}
8199

azure-cli-diff-tool/azure_cli_diff_tool/meta_change.py

Lines changed: 80 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66

77
from .utils import get_change_rule_template, get_change_suggest_template, DiffLevel
88
from ._const import BREAKING_CHANE_RULE_LINK_URL_PREFIX, BREAKING_CHANE_RULE_LINK_URL_SUFFIX, \
9-
CMD_PROPERTY_IGNORED_LIST, PARA_NAME_IGNORED_LIST, PARA_PROPERTY_IGNORED_LIST, PARA_VALUE_IGNORED_LIST
9+
SUBGROUP_PROPERTY_IGNORED_LIST, CMD_PROPERTY_IGNORED_LIST, PARA_NAME_IGNORED_LIST, \
10+
PARA_PROPERTY_IGNORED_LIST, PARA_VALUE_IGNORED_LIST
1011

1112

1213
class MetaChange:
@@ -58,6 +59,84 @@ def __init__(self, subgroup_name, is_break=True, diff_level=DiffLevel.BREAK):
5859
super().__init__(self.rule_id, is_break, diff_level, self.rule_message, self.suggest_message)
5960

6061

62+
class SubgroupPropAdd(MetaChange):
63+
def __init__(self, subgroup_name, subgroup_property, is_break=False, diff_level=DiffLevel.INFO):
64+
if not subgroup_name or not subgroup_property:
65+
raise Exception("sub group name needed")
66+
self.rule_id = "1013"
67+
self.is_ignore = False
68+
self.subgroup_name = subgroup_name
69+
self.subgroup_property = subgroup_property
70+
self.is_break = is_break
71+
self.diff_level = diff_level
72+
self.rule_message = get_change_rule_template(self.rule_id).format(self.subgroup_name, self.subgroup_property)
73+
self.suggest_message = get_change_suggest_template(self.rule_id).format(self.subgroup_property, self.subgroup_name) \
74+
if self.is_break else ""
75+
if subgroup_property in SUBGROUP_PROPERTY_IGNORED_LIST:
76+
self.is_ignore = True
77+
self.filter_key = [self.rule_id, self.subgroup_name, self.subgroup_property]
78+
super().__init__(self.rule_id, is_break, diff_level, self.rule_message, self.suggest_message, self.is_ignore,
79+
self.filter_key)
80+
81+
82+
class SubgroupPropRemove(MetaChange):
83+
def __init__(self, subgroup_name, subgroup_property, is_break=False, diff_level=DiffLevel.BREAK):
84+
if not subgroup_name or not subgroup_property:
85+
raise Exception("sub group name needed")
86+
self.rule_id = "1014"
87+
self.is_ignore = False
88+
self.subgroup_name = subgroup_name
89+
self.subgroup_property = subgroup_property
90+
self.is_break = is_break
91+
self.diff_level = diff_level
92+
self.rule_message = get_change_rule_template(self.rule_id).format(self.subgroup_name, self.subgroup_property)
93+
if self.is_break:
94+
self.suggest_message = get_change_suggest_template(self.rule_id).format(self.subgroup_property,
95+
self.subgroup_name)
96+
else:
97+
self.suggest_message = ""
98+
if subgroup_property in CMD_PROPERTY_IGNORED_LIST:
99+
self.is_ignore = True
100+
self.filter_key = [self.rule_id, self.subgroup_name, self.subgroup_property]
101+
super().__init__(self.rule_id, is_break, diff_level, self.rule_message, self.suggest_message,
102+
self.is_ignore, self.filter_key)
103+
104+
105+
class SubgroupPropUpdate(MetaChange):
106+
107+
def __init__(self, subgroup_name, subgroup_property, is_break=False, diff_level=DiffLevel.INFO,
108+
old_value=None, new_value=None):
109+
if not subgroup_name or not subgroup_property:
110+
raise Exception("sub group name and sub group prop needed")
111+
self.rule_id = "1015"
112+
self.is_ignore = False
113+
self.subgroup_name = subgroup_name
114+
self.is_break = is_break
115+
self.diff_level = diff_level
116+
self.subgroup_prop_updated = subgroup_property
117+
self.old_value = ""
118+
self.new_value = ""
119+
120+
if old_value is not None:
121+
self.old_value = old_value
122+
if new_value is not None:
123+
self.new_value = new_value
124+
self.rule_message = get_change_rule_template(self.rule_id).format(self.subgroup_name,
125+
self.subgroup_prop_updated,
126+
self.old_value, self.new_value)
127+
if self.is_break:
128+
self.suggest_message = get_change_suggest_template(self.rule_id).format(self.subgroup_prop_updated,
129+
self.new_value, self.old_value,
130+
self.subgroup_name)
131+
else:
132+
self.suggest_message = ""
133+
if subgroup_property in SUBGROUP_PROPERTY_IGNORED_LIST:
134+
self.is_ignore = True
135+
self.filter_key = [self.rule_id, self.subgroup_name, self.subgroup_prop_updated]
136+
super().__init__(self.rule_id, is_break, diff_level, self.rule_message, self.suggest_message,
137+
self.is_ignore, self.filter_key)
138+
139+
61140
class CmdAdd(MetaChange):
62141
def __init__(self, cmd_name, is_break=False, diff_level=DiffLevel.INFO):
63142
if not cmd_name:

0 commit comments

Comments
 (0)