From 1dc08985a9a2eab40231624f34afca5cec197f61 Mon Sep 17 00:00:00 2001 From: Daniel Languiller Date: Mon, 17 Nov 2025 14:46:35 +1100 Subject: [PATCH 1/2] refactor: lazy imports of expensive libs --- .vscode/launch.json | 27 ++++++----------------- src/azure-cli-core/azure/cli/core/util.py | 4 ++-- 2 files changed, 9 insertions(+), 22 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index c2a47d74891..ae16514a298 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -3,42 +3,34 @@ "configurations": [ { "name": "Azure CLI Debug (Integrated Console)", - "type": "python", + "type": "debugpy", "request": "launch", "python": "${command:python.interpreterPath}", "program": "${workspaceRoot}/src/azure-cli/azure/cli/__main__.py", "cwd": "${workspaceRoot}", "args": [ - "--help" + "Version" ], "console": "integratedTerminal", - "debugOptions": [ - "WaitOnAbnormalExit", - "WaitOnNormalExit", - "RedirectOutput" - ], "justMyCode": false }, { "name": "Azure CLI Debug (External Console)", - "type": "python", + "type": "debugpy", "request": "launch", "stopOnEntry": true, "python": "${command:python.interpreterPath}", "program": "${workspaceRoot}/src/azure-cli/azure/cli/__main__.py", "cwd": "${workspaceRoot}", "args": [ - "--help" + "VERSION" ], "console": "externalTerminal", - "debugOptions": [ - "WaitOnAbnormalExit", - "WaitOnNormalExit" - ] + "justMyCode": false }, { "name": "Azdev Scripts", - "type": "python", + "type": "debugpy", "request": "launch", "python": "${command:python.interpreterPath}", "program": "${workspaceRoot}/tools/automation/__main__.py", @@ -47,11 +39,6 @@ "--help" ], "console": "integratedTerminal", - "debugOptions": [ - "WaitOnAbnormalExit", - "WaitOnNormalExit", - "RedirectOutput" - ] } ] -} +} \ No newline at end of file diff --git a/src/azure-cli-core/azure/cli/core/util.py b/src/azure-cli-core/azure/cli/core/util.py index 05f96a575c3..b3c09db185c 100644 --- a/src/azure-cli-core/azure/cli/core/util.py +++ b/src/azure-cli-core/azure/cli/core/util.py @@ -8,14 +8,12 @@ import binascii import getpass import json -import yaml import logging import os import platform import re import ssl import sys -from urllib.request import urlopen from knack.log import get_logger from knack.util import CLIError, to_snake_case, to_camel_case @@ -534,6 +532,7 @@ def get_file_json(file_path, throw_on_empty=True, preserve_order=False): def get_file_yaml(file_path, throw_on_empty=True): + import yaml content = read_file_content(file_path) if not content: if throw_on_empty: @@ -1168,6 +1167,7 @@ def _ssl_context(): def urlretrieve(url): + from urllib.request import urlopen req = urlopen(url, context=_ssl_context()) return req.read() From d363dd0971bd2cf35c1c39d2bfe84f535badcce7 Mon Sep 17 00:00:00 2001 From: Daniel Languiller Date: Mon, 17 Nov 2025 15:27:56 +1100 Subject: [PATCH 2/2] refactor: direct return --- src/azure-cli/azure/cli/command_modules/util/custom.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/azure-cli/azure/cli/command_modules/util/custom.py b/src/azure-cli/azure/cli/command_modules/util/custom.py index ea2f2ea0bd0..17aa71787e9 100644 --- a/src/azure-cli/azure/cli/command_modules/util/custom.py +++ b/src/azure-cli/azure/cli/command_modules/util/custom.py @@ -35,8 +35,7 @@ def rest_call(cmd, url, method=None, headers=None, uri_parameters=None, def show_version(cmd): # pylint: disable=unused-argument from azure.cli.core.util import get_az_version_json - versions = get_az_version_json() - return versions + return get_az_version_json() def upgrade_version(cmd, update_all=None, yes=None, allow_preview=None): # pylint: disable=too-many-locals, too-many-statements, too-many-branches, no-member, unused-argument