From e7f9d1619d2451ce1ed759bb6d6268ce228160f0 Mon Sep 17 00:00:00 2001 From: Jiashuo Li Date: Tue, 25 Aug 2020 17:09:07 +0800 Subject: [PATCH 1/4] Stop importing pkg_resources --- src/azure-cli-core/azure/cli/core/util.py | 22 +++++++++++++++++-- .../azure/cli/telemetry/__init__.py | 2 ++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/azure-cli-core/azure/cli/core/util.py b/src/azure-cli-core/azure/cli/core/util.py index 37bb88cd0e6..8d6cb31e7fb 100644 --- a/src/azure-cli-core/azure/cli/core/util.py +++ b/src/azure-cli-core/azure/cli/core/util.py @@ -128,8 +128,26 @@ def truncate_text(str_to_shorten, width=70, placeholder=' [...]'): def get_installed_cli_distributions(): - from pkg_resources import working_set - return [d for d in list(working_set) if d.key == CLI_PACKAGE_NAME or d.key.startswith(COMPONENT_PREFIX)] + # Stop importing pkg_resources, because importing it is slow (~200ms). + # from pkg_resources import working_set + # return [d for d in list(working_set) if d.key == CLI_PACKAGE_NAME or d.key.startswith(COMPONENT_PREFIX)] + + # Use the hard-coded version instead of querying all modules under site-packages. + from azure.cli.__main__ import __version__ as azure_cli_version + from azure.cli.core import __version__ as azure_cli_core_version + from azure.cli.telemetry import __version__ as azure_cli_telemetry_version + + class VersionItem: # pylint: disable=too-few-public-methods + """A mock of pkg_resources.EggInfoDistribution to maintain backward compatibility.""" + def __init__(self, key, version): + self.key = key + self.version = version + + return [ + VersionItem('azure-cli', azure_cli_version), + VersionItem('azure-cli-core', azure_cli_core_version), + VersionItem('azure-cli-telemetry', azure_cli_telemetry_version) + ] def _update_latest_from_pypi(versions): diff --git a/src/azure-cli-telemetry/azure/cli/telemetry/__init__.py b/src/azure-cli-telemetry/azure/cli/telemetry/__init__.py index 1c1c06da50c..9c025bf7cd5 100644 --- a/src/azure-cli-telemetry/azure/cli/telemetry/__init__.py +++ b/src/azure-cli-telemetry/azure/cli/telemetry/__init__.py @@ -10,6 +10,8 @@ from azure.cli.telemetry.util import save_payload +__version__ = "1.0.5" + def _start(config_dir): from azure.cli.telemetry.components.telemetry_logging import get_logger From b638ac1b2ce53c88c4dc3f9b464e01d9787731ec Mon Sep 17 00:00:00 2001 From: Jiashuo Li Date: Wed, 26 Aug 2020 13:23:19 +0800 Subject: [PATCH 2/4] Use core version as command_modules version --- src/azure-cli-core/azure/cli/core/util.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/azure-cli-core/azure/cli/core/util.py b/src/azure-cli-core/azure/cli/core/util.py index 8d6cb31e7fb..c0903ebb963 100644 --- a/src/azure-cli-core/azure/cli/core/util.py +++ b/src/azure-cli-core/azure/cli/core/util.py @@ -133,7 +133,6 @@ def get_installed_cli_distributions(): # return [d for d in list(working_set) if d.key == CLI_PACKAGE_NAME or d.key.startswith(COMPONENT_PREFIX)] # Use the hard-coded version instead of querying all modules under site-packages. - from azure.cli.__main__ import __version__ as azure_cli_version from azure.cli.core import __version__ as azure_cli_core_version from azure.cli.telemetry import __version__ as azure_cli_telemetry_version @@ -144,7 +143,7 @@ def __init__(self, key, version): self.version = version return [ - VersionItem('azure-cli', azure_cli_version), + VersionItem('azure-cli', azure_cli_core_version), VersionItem('azure-cli-core', azure_cli_core_version), VersionItem('azure-cli-telemetry', azure_cli_telemetry_version) ] From 2cffc028ef9169f55444adbb893df67741b82472 Mon Sep 17 00:00:00 2001 From: Jiashuo Li Date: Wed, 26 Aug 2020 14:20:53 +0800 Subject: [PATCH 3/4] Fix test --- .../command_modules/resource/tests/latest/test_cli_version.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/azure-cli/azure/cli/command_modules/resource/tests/latest/test_cli_version.py b/src/azure-cli/azure/cli/command_modules/resource/tests/latest/test_cli_version.py index e7e5f4524c0..cc39f53986e 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/tests/latest/test_cli_version.py +++ b/src/azure-cli/azure/cli/command_modules/resource/tests/latest/test_cli_version.py @@ -16,7 +16,6 @@ def test_version(self): self.assertIn('azure-cli', output) self.assertIn('azure-cli-core', output) self.assertIn('azure-cli-telemetry', output) - self.assertIn('azure-cli-testsdk', output) self.assertIn('extensions', output) self.assertIsInstance(output['extensions'], Dict) From 86d8ecccce10c9052ded5d03bd60ef673f5f976d Mon Sep 17 00:00:00 2001 From: Jiashuo Li Date: Thu, 27 Aug 2020 13:16:32 +0800 Subject: [PATCH 4/4] Move test_cli_version.py to util --- .../test_cli_version.py => util/tests/latest/test_version.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/azure-cli/azure/cli/command_modules/{resource/tests/latest/test_cli_version.py => util/tests/latest/test_version.py} (100%) diff --git a/src/azure-cli/azure/cli/command_modules/resource/tests/latest/test_cli_version.py b/src/azure-cli/azure/cli/command_modules/util/tests/latest/test_version.py similarity index 100% rename from src/azure-cli/azure/cli/command_modules/resource/tests/latest/test_cli_version.py rename to src/azure-cli/azure/cli/command_modules/util/tests/latest/test_version.py