diff --git a/tools/azure-sdk-tools/packaging_tools/change_log.py b/tools/azure-sdk-tools/packaging_tools/change_log.py index 7afb3f0d71d8..c446fb5233aa 100644 --- a/tools/azure-sdk-tools/packaging_tools/change_log.py +++ b/tools/azure-sdk-tools/packaging_tools/change_log.py @@ -144,6 +144,11 @@ def models(self, diff_entry): self.breaking_changes.append(_MODEL_PARAM_CHANGE_REQUIRED.format(parameter_name, model_name)) return + def client(self): + self.breaking_changes.append(_CLIENT_SIGNATURE_CHANGE) + return + + ## Features _ADD_OPERATION_GROUP = "Added operation group {}" @@ -156,6 +161,7 @@ def models(self, diff_entry): _REMOVE_OPERATION_GROUP = "Removed operation group {}" _REMOVE_OPERATION = "Removed operation {}.{}" _REMOVE_OPERATION_PARAM = "Operation {}.{} no longer has parameter {}" +_CLIENT_SIGNATURE_CHANGE = "Client name changed the original name" _MODEL_SIGNATURE_CHANGE = "Model {} has a new signature" _MODEL_PARAM_DELETE = "Model {} no longer has parameter {}" _MODEL_PARAM_ADD_REQUIRED = "Model {} has a new required parameter {}" @@ -174,6 +180,8 @@ def build_change_log(old_report, new_report): change_log.operation(diff_line) else: change_log.models(diff_line) + if diff_line[0][0] == 'client': + change_log.client() return change_log diff --git a/tools/azure-sdk-tools/packaging_tools/code_report.py b/tools/azure-sdk-tools/packaging_tools/code_report.py index 35ac4c48ab17..c8df7fad8919 100644 --- a/tools/azure-sdk-tools/packaging_tools/code_report.py +++ b/tools/azure-sdk-tools/packaging_tools/code_report.py @@ -20,7 +20,6 @@ # If I'm started by my main directly from venvtools import create_venv_with_package - _LOGGER = logging.getLogger(__name__) @@ -37,15 +36,20 @@ def parse_input(input_parameter): def create_empty_report(): - return {"models": {"enums": {}, "exceptions": {}, "models": {}}, "operations": {}} + return {"client": {}, "models": {"enums": {}, "exceptions": {}, "models": {}}, "operations": {}} def create_report(module_name: str) -> Dict[str, Any]: module_to_generate = importlib.import_module(module_name) + client_name = getattr(module_to_generate, '__all__') report = create_empty_report() # Look for models first + try: + report["client"] = client_name + except: + report["client"] = [] model_names = [model_name for model_name in dir(module_to_generate.models) if model_name[0].isupper()] for model_name in model_names: model_cls = getattr(module_to_generate.models, model_name) @@ -160,15 +164,14 @@ def merge_report(report_paths): def main( - input_parameter: str, - version: Optional[str] = None, - no_venv: bool = False, - pypi: bool = False, - last_pypi: bool = False, - output: Optional[str] = None, - metadata_path: Optional[str] = None, + input_parameter: str, + version: Optional[str] = None, + no_venv: bool = False, + pypi: bool = False, + last_pypi: bool = False, + output: Optional[str] = None, + metadata_path: Optional[str] = None, ): - output_msg = output if output else "default folder" _LOGGER.info( f"Building code report of {input_parameter} for version {version} in {output_msg} ({no_venv}/{pypi}/{last_pypi})" @@ -195,7 +198,7 @@ def main( for version in versions: _LOGGER.info(f"Installing version {version} of {package_name} in a venv") with create_venv_with_package( - [f"{package_name}=={version}"] + [f"{package_name}=={version}"] ) as venv, tempfile.TemporaryDirectory() as temp_dir: metadata_path = str(Path(temp_dir, f"metadata_{version}.json")) args = [ @@ -304,7 +307,7 @@ def get_sub_module_part(package_name, module_name): if not module_name.startswith(sub_module_from_package): _LOGGER.warning(f"Submodule {module_name} does not start with package name {package_name}") return - return module_name[len(sub_module_from_package) + 1 :] + return module_name[len(sub_module_from_package) + 1:] if __name__ == "__main__":