Cant use aksarc 1.5.113 with CLI v2.88.0
- Dominant language
- Python
- Stars
- 4.6k
- Forks
- 3.5k
- Avg merge
- 3d 2h
- Merged PRs (30d)
- 60
Description
### Describe the bug
I can reproduce this on windows and ubuntu
I would like to not have to use any workarounds like playing around with python dependency versions or anything if possible
### Related command
az aksarc --help
### Errors
```
$ az --version
azure-cli 2.88.0
core 2.88.0
telemetry 1.1.0
Extensions:
aksarc 1.5.113
Python location '/opt/az/bin/python3'
Python (Linux) 3.14.5 (main, Jun 30 2026, 10:53:27) [GCC 12.2.0]
Legal docs and information: aka.ms/AzureCliLegal
Your CLI is up-to-date.
$ az aksarc --help
The command failed with an unexpected error. Here is the traceback:
cannot import name 'mlkem' from 'cryptography.hazmat.primitives.asymmetric' (/opt/az/lib/python3.14/site-packages/cryptography/hazmat/primitives/asymmetric/__init__.py)
Traceback (most recent call last):
File "/opt/az/lib/python3.14/site-packages/knack/cli.py", line 233, in invoke
cmd_result = self.invocation.execute(args)
File "/opt/az/lib/python3.14/site-packages/azure/cli/core/commands/__init__.py", line 602, in execute
parsed_args = self.parser.parse_args(args)
File "/opt/az/lib/python3.14/site-packages/knack/parser.py", line 278, in parse_args
return super().parse_args(args)
~~~~~~~~~~~~~~~~~~^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 2005, in parse_args
args, argv = self.parse_known_args(args, namespace)
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/site-packages/azure/cli/core/parser.py", line 282, in parse_known_args
self._namespace, self._raw_arguments = super().parse_known_args(args=args, namespace=namespace)
~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 2015, in parse_known_args
return self._parse_known_args2(args, namespace, intermixed=False)
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 2044, in _parse_known_args2
namespace, args = self._parse_known_args(args, namespace, intermixed)
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 2276, in _parse_known_args
positionals_end_index = consume_positionals(start_index)
File "/opt/az/lib/python3.14/argparse.py", line 2251, in consume_positionals
take_action(action, args)
~~~~~~~~~~~^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 2120, in take_action
action(self, namespace, argument_values, option_string)
~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 1318, in __call__
subnamespace, arg_strings = subparser.parse_known_args(arg_strings, None)
~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/site-packages/azure/cli/core/parser.py", line 282, in parse_known_args
self._namespace, self._raw_arguments = super().parse_known_args(args=args, namespace=namespace)
~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 2015, in parse_known_args
return self._parse_known_args2(args, namespace, intermixed=False)
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 2044, in _parse_known_args2
namespace, args = self._parse_known_args(args, namespace, intermixed)
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 2295, in _parse_known_args
start_index = consume_optional(start_index)
File "/opt/az/lib/python3.14/argparse.py", line 2219, in consume_optional
take_action(action, args, option_string)
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 2120, in take_action
action(self, namespace, argument_values, option_string)
~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 1176, in __call__
parser.print_help()
~~~~~~~~~~~~~~~~~^^
File "/opt/az/lib/python3.14/argparse.py", line 2752, in print_help
self._print_message(self.format_help(), file)
~~~~~~~~~~~~~~~~^^
File "/opt/az/lib/python3.14/site-packages/azure/cli/core/parser.py", line 193, in format_help
super().format_help()
~~~~~~~~~~~~~~~~~~~^^
File "/opt/az/lib/python3.14/site-packages/knack/parser.py", line 265, in format_help
self.cli_help.show_help(self.prog.split()[0],
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
self.prog.split()[1:],
^^^^^^^^^^^^^^^^^^^^^^
self._actions[-1] if is_group else self,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
is_group)
^^^^^^^^^
File "/opt/az/lib/python3.14/site-packages/azure/cli/core/_help.py", line 224, in show_help
else self.group_help_cls(self, delimiters, parser)
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/site-packages/knack/help.py", line 253, in __init__
child.load(options)
~~~~~~~~~~^^^^^^^^^
File "/opt/az/lib/python3.14/site-packages/azure/cli/core/_help.py", line 523, in load
loader.versioned_load(self, options)
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/site-packages/azure/cli/core/_help_loaders.py", line 154, in versioned_load
super(CliHelpFile, help_obj).load(parser) # pylint:disable=bad-super-call
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^
File "/opt/az/lib/python3.14/site-packages/knack/help.py", line 198, in load
description = getattr(options, 'description', None)
File "/opt/az/lib/python3.14/site-packages/knack/parser.py", line 258, in __getattribute__
self.description = self._description() \
~~~~~~~~~~~~~~~~~^^
File "/opt/az/lib/python3.14/site-packages/azure/cli/core/commands/command_operation.py", line 132, in description_loader
op = self.get_op_handler(self.op_path)
File "/opt/az/lib/python3.14/site-packages/azure/cli/core/commands/command_operation.py", line 59, in get_op_handler
handler = import_module(mod_to_import)
File "/opt/az/lib/python3.14/importlib/__init__.py", line 88, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "", line 1406, in _gcd_import
File "", line 1371, in _find_and_load
File "", line 1342, in _find_and_load_unlocked
File "", line 938, in _load_unlocked
File "", line 759, in exec_module
File "", line 491, in _call_with_frames_removed
File "/home/bacef/.azure/cliextensions/aksarc/azext_aksarc/custom.py", line 136, in
import asyncssh
File "/home/bacef/.azure/cliextensions/aksarc/asyncssh/__init__.py", line 31, in
from .agent import SSHAgentClient, SSHAgentKeyPair, connect_agent
File "/home/bacef/.azure/cliextensions/aksarc/asyncssh/agent.py", line 33, in
from .public_key import KeyPairListArg, SSHCertificate, SSHKeyPair
File "/home/bacef/.azure/cliextensions/aksarc/asyncssh/public_key.py", line 36, in
from .crypto import ed25519_available, ed448_available
File "/home/bacef/.azure/cliextensions/aksarc/asyncssh/crypto/__init__.py", line 43, in
from .pq import mlkem_available, sntrup_available, PQClass, MLKEM, SNTRUP
File "/home/bacef/.azure/cliextensions/aksarc/asyncssh/crypto/pq.py", line 28, in
from cryptography.hazmat.primitives.asymmetric import mlkem
ImportError: cannot import name 'mlkem' from 'cryptography.hazmat.primitives.asymmetric' (/opt/az/lib/python3.14/site-packages/cryptography/hazmat/primitives/asymmetric/__init__.py)
To check existing issues, please visit: https://github.com/Azure/azure-cli/issues
$
```
### Issue script & Debug output
$ az aksarc --help --debug
cli.knack.cli: Command arguments: ['aksarc', '--help', '--debug']
cli.knack.cli: __init__ debug log:
Enable color in terminal.
cli.knack.cli: Event: Cli.PreExecute []
cli.knack.cli: Event: CommandParser.OnGlobalArgumentsCreate [, , ]
cli.knack.cli: Event: CommandInvoker.OnPreCommandTableCreate []
cli.azure.cli.core: Using packaged command index for profile 'latest'.
cli.azure.cli.core: Found installed extension 'aksarc' (azext_aksarc).
cli.azure.cli.core: Blending packaged core index with local extension index.
cli.azure.cli.core: Modules found from index for 'aksarc': ['azext_aksarc']
cli.azure.cli.core: Loading command modules...
cli.azure.cli.core: Name Load Time Groups Commands
cli.azure.cli.core: Loaded command modules:
cli.azure.cli.core: Total (0) 0.000 0 0
cli.azure.cli.core: These extensions are not installed and will be skipped: ['azext_ai_examples', 'azext_next']
cli.azure.cli.core: Loading extensions:
cli.azure.cli.core: Name Load Time Groups Commands Directory
cli.azure.cli.core: aksarc 0.136 6 25 /home/bacef/.azure/cliextensions/aksarc
cli.azure.cli.core: Total (1) 0.136 6 25
cli.azure.cli.core: Loaded 6 groups, 25 commands.
cli.azure.cli.core: Found a match in the command group table for 'aksarc'.
cli.knack.cli: Event: CommandInvoker.OnPreCommandTableTruncate []
cli.azure.cli.core.azlogging: metadata file logging enabled - writing logs to '/home/bacef/.azure/commands/2026-07-15.18-32-49.aksarc.52965.log'.
az_command_data_logger: command args: aksarc --help --debug
cli.knack.cli: Event: CommandInvoker.OnPreArgumentLoad [.add_subscription_parameter at 0x78e09c881900>]
cli.knack.cli: Event: CommandInvoker.OnPostArgumentLoad []
cli.knack.cli: Event: CommandInvoker.OnPostCommandTableCreate [.add_ids_arguments at 0x78e09c8819b0>, .add_global_policy_argument at 0x78e09c644b40>, .add_cache_arguments at 0x78e09c644ca0>, .update_breaking_change_info at 0x78e09c644d50>]
cli.knack.cli: Event: CommandInvoker.OnCommandTableLoaded []
cli.knack.cli: Event: CommandInvoker.OnPreParseArgs []
cli.azure.cli.core.azclierror: Traceback (most recent call last):
File "/opt/az/lib/python3.14/site-packages/knack/cli.py", line 233, in invoke
cmd_result = self.invocation.execute(args)
File "/opt/az/lib/python3.14/site-packages/azure/cli/core/commands/__init__.py", line 602, in execute
parsed_args = self.parser.parse_args(args)
File "/opt/az/lib/python3.14/site-packages/knack/parser.py", line 278, in parse_args
return super().parse_args(args)
~~~~~~~~~~~~~~~~~~^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 2005, in parse_args
args, argv = self.parse_known_args(args, namespace)
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/site-packages/azure/cli/core/parser.py", line 282, in parse_known_args
self._namespace, self._raw_arguments = super().parse_known_args(args=args, namespace=namespace)
~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 2015, in parse_known_args
return self._parse_known_args2(args, namespace, intermixed=False)
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 2044, in _parse_known_args2
namespace, args = self._parse_known_args(args, namespace, intermixed)
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 2276, in _parse_known_args
positionals_end_index = consume_positionals(start_index)
File "/opt/az/lib/python3.14/argparse.py", line 2251, in consume_positionals
take_action(action, args)
~~~~~~~~~~~^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 2120, in take_action
action(self, namespace, argument_values, option_string)
~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 1318, in __call__
subnamespace, arg_strings = subparser.parse_known_args(arg_strings, None)
~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/site-packages/azure/cli/core/parser.py", line 282, in parse_known_args
self._namespace, self._raw_arguments = super().parse_known_args(args=args, namespace=namespace)
~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 2015, in parse_known_args
return self._parse_known_args2(args, namespace, intermixed=False)
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 2044, in _parse_known_args2
namespace, args = self._parse_known_args(args, namespace, intermixed)
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 2295, in _parse_known_args
start_index = consume_optional(start_index)
File "/opt/az/lib/python3.14/argparse.py", line 2219, in consume_optional
take_action(action, args, option_string)
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 2120, in take_action
action(self, namespace, argument_values, option_string)
~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 1176, in __call__
parser.print_help()
~~~~~~~~~~~~~~~~~^^
File "/opt/az/lib/python3.14/argparse.py", line 2752, in print_help
self._print_message(self.format_help(), file)
~~~~~~~~~~~~~~~~^^
File "/opt/az/lib/python3.14/site-packages/azure/cli/core/parser.py", line 193, in format_help
super().format_help()
~~~~~~~~~~~~~~~~~~~^^
File "/opt/az/lib/python3.14/site-packages/knack/parser.py", line 265, in format_help
self.cli_help.show_help(self.prog.split()[0],
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
self.prog.split()[1:],
^^^^^^^^^^^^^^^^^^^^^^
self._actions[-1] if is_group else self,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
is_group)
^^^^^^^^^
File "/opt/az/lib/python3.14/site-packages/azure/cli/core/_help.py", line 224, in show_help
else self.group_help_cls(self, delimiters, parser)
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/site-packages/knack/help.py", line 253, in __init__
child.load(options)
~~~~~~~~~~^^^^^^^^^
File "/opt/az/lib/python3.14/site-packages/azure/cli/core/_help.py", line 523, in load
loader.versioned_load(self, options)
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/site-packages/azure/cli/core/_help_loaders.py", line 154, in versioned_load
super(CliHelpFile, help_obj).load(parser) # pylint:disable=bad-super-call
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^
File "/opt/az/lib/python3.14/site-packages/knack/help.py", line 198, in load
description = getattr(options, 'description', None)
File "/opt/az/lib/python3.14/site-packages/knack/parser.py", line 258, in __getattribute__
self.description = self._description() \
~~~~~~~~~~~~~~~~~^^
File "/opt/az/lib/python3.14/site-packages/azure/cli/core/commands/command_operation.py", line 132, in description_loader
op = self.get_op_handler(self.op_path)
File "/opt/az/lib/python3.14/site-packages/azure/cli/core/commands/command_operation.py", line 59, in get_op_handler
handler = import_module(mod_to_import)
File "/opt/az/lib/python3.14/importlib/__init__.py", line 88, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "", line 1406, in _gcd_import
File "", line 1371, in _find_and_load
File "", line 1342, in _find_and_load_unlocked
File "", line 938, in _load_unlocked
File "", line 759, in exec_module
File "", line 491, in _call_with_frames_removed
File "/home/bacef/.azure/cliextensions/aksarc/azext_aksarc/custom.py", line 136, in
import asyncssh
File "/home/bacef/.azure/cliextensions/aksarc/asyncssh/__init__.py", line 31, in
from .agent import SSHAgentClient, SSHAgentKeyPair, connect_agent
File "/home/bacef/.azure/cliextensions/aksarc/asyncssh/agent.py", line 33, in
from .public_key import KeyPairListArg, SSHCertificate, SSHKeyPair
File "/home/bacef/.azure/cliextensions/aksarc/asyncssh/public_key.py", line 36, in
from .crypto import ed25519_available, ed448_available
File "/home/bacef/.azure/cliextensions/aksarc/asyncssh/crypto/__init__.py", line 43, in
from .pq import mlkem_available, sntrup_available, PQClass, MLKEM, SNTRUP
File "/home/bacef/.azure/cliextensions/aksarc/asyncssh/crypto/pq.py", line 28, in
from cryptography.hazmat.primitives.asymmetric import mlkem
ImportError: cannot import name 'mlkem' from 'cryptography.hazmat.primitives.asymmetric' (/opt/az/lib/python3.14/site-packages/cryptography/hazmat/primitives/asymmetric/__init__.py)
cli.azure.cli.core.azclierror: The command failed with an unexpected error. Here is the traceback:
az_command_data_logger: The command failed with an unexpected error. Here is the traceback:
cli.azure.cli.core.azclierror: cannot import name 'mlkem' from 'cryptography.hazmat.primitives.asymmetric' (/opt/az/lib/python3.14/site-packages/cryptography/hazmat/primitives/asymmetric/__init__.py)
Traceback (most recent call last):
File "/opt/az/lib/python3.14/site-packages/knack/cli.py", line 233, in invoke
cmd_result = self.invocation.execute(args)
File "/opt/az/lib/python3.14/site-packages/azure/cli/core/commands/__init__.py", line 602, in execute
parsed_args = self.parser.parse_args(args)
File "/opt/az/lib/python3.14/site-packages/knack/parser.py", line 278, in parse_args
return super().parse_args(args)
~~~~~~~~~~~~~~~~~~^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 2005, in parse_args
args, argv = self.parse_known_args(args, namespace)
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/site-packages/azure/cli/core/parser.py", line 282, in parse_known_args
self._namespace, self._raw_arguments = super().parse_known_args(args=args, namespace=namespace)
~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 2015, in parse_known_args
return self._parse_known_args2(args, namespace, intermixed=False)
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 2044, in _parse_known_args2
namespace, args = self._parse_known_args(args, namespace, intermixed)
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 2276, in _parse_known_args
positionals_end_index = consume_positionals(start_index)
File "/opt/az/lib/python3.14/argparse.py", line 2251, in consume_positionals
take_action(action, args)
~~~~~~~~~~~^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 2120, in take_action
action(self, namespace, argument_values, option_string)
~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 1318, in __call__
subnamespace, arg_strings = subparser.parse_known_args(arg_strings, None)
~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/site-packages/azure/cli/core/parser.py", line 282, in parse_known_args
self._namespace, self._raw_arguments = super().parse_known_args(args=args, namespace=namespace)
~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 2015, in parse_known_args
return self._parse_known_args2(args, namespace, intermixed=False)
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 2044, in _parse_known_args2
namespace, args = self._parse_known_args(args, namespace, intermixed)
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 2295, in _parse_known_args
start_index = consume_optional(start_index)
File "/opt/az/lib/python3.14/argparse.py", line 2219, in consume_optional
take_action(action, args, option_string)
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 2120, in take_action
action(self, namespace, argument_values, option_string)
~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 1176, in __call__
parser.print_help()
~~~~~~~~~~~~~~~~~^^
File "/opt/az/lib/python3.14/argparse.py", line 2752, in print_help
self._print_message(self.format_help(), file)
~~~~~~~~~~~~~~~~^^
File "/opt/az/lib/python3.14/site-packages/azure/cli/core/parser.py", line 193, in format_help
super().format_help()
~~~~~~~~~~~~~~~~~~~^^
File "/opt/az/lib/python3.14/site-packages/knack/parser.py", line 265, in format_help
self.cli_help.show_help(self.prog.split()[0],
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
self.prog.split()[1:],
^^^^^^^^^^^^^^^^^^^^^^
self._actions[-1] if is_group else self,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
is_group)
^^^^^^^^^
File "/opt/az/lib/python3.14/site-packages/azure/cli/core/_help.py", line 224, in show_help
else self.group_help_cls(self, delimiters, parser)
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/site-packages/knack/help.py", line 253, in __init__
child.load(options)
~~~~~~~~~~^^^^^^^^^
File "/opt/az/lib/python3.14/site-packages/azure/cli/core/_help.py", line 523, in load
loader.versioned_load(self, options)
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/site-packages/azure/cli/core/_help_loaders.py", line 154, in versioned_load
super(CliHelpFile, help_obj).load(parser) # pylint:disable=bad-super-call
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^
File "/opt/az/lib/python3.14/site-packages/knack/help.py", line 198, in load
description = getattr(options, 'description', None)
File "/opt/az/lib/python3.14/site-packages/knack/parser.py", line 258, in __getattribute__
self.description = self._description() \
~~~~~~~~~~~~~~~~~^^
File "/opt/az/lib/python3.14/site-packages/azure/cli/core/commands/command_operation.py", line 132, in description_loader
op = self.get_op_handler(self.op_path)
File "/opt/az/lib/python3.14/site-packages/azure/cli/core/commands/command_operation.py", line 59, in get_op_handler
handler = import_module(mod_to_import)
File "/opt/az/lib/python3.14/importlib/__init__.py", line 88, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "", line 1406, in _gcd_import
File "", line 1371, in _find_and_load
File "", line 1342, in _find_and_load_unlocked
File "", line 938, in _load_unlocked
File "", line 759, in exec_module
File "", line 491, in _call_with_frames_removed
File "/home/bacef/.azure/cliextensions/aksarc/azext_aksarc/custom.py", line 136, in
import asyncssh
File "/home/bacef/.azure/cliextensions/aksarc/asyncssh/__init__.py", line 31, in
from .agent import SSHAgentClient, SSHAgentKeyPair, connect_agent
File "/home/bacef/.azure/cliextensions/aksarc/asyncssh/agent.py", line 33, in
from .public_key import KeyPairListArg, SSHCertificate, SSHKeyPair
File "/home/bacef/.azure/cliextensions/aksarc/asyncssh/public_key.py", line 36, in
from .crypto import ed25519_available, ed448_available
File "/home/bacef/.azure/cliextensions/aksarc/asyncssh/crypto/__init__.py", line 43, in
from .pq import mlkem_available, sntrup_available, PQClass, MLKEM, SNTRUP
File "/home/bacef/.azure/cliextensions/aksarc/asyncssh/crypto/pq.py", line 28, in
from cryptography.hazmat.primitives.asymmetric import mlkem
ImportError: cannot import name 'mlkem' from 'cryptography.hazmat.primitives.asymmetric' (/opt/az/lib/python3.14/site-packages/cryptography/hazmat/primitives/asymmetric/__init__.py)
az_command_data_logger: cannot import name 'mlkem' from 'cryptography.hazmat.primitives.asymmetric' (/opt/az/lib/python3.14/site-packages/cryptography/hazmat/primitives/asymmetric/__init__.py)
Traceback (most recent call last):
File "/opt/az/lib/python3.14/site-packages/knack/cli.py", line 233, in invoke
cmd_result = self.invocation.execute(args)
File "/opt/az/lib/python3.14/site-packages/azure/cli/core/commands/__init__.py", line 602, in execute
parsed_args = self.parser.parse_args(args)
File "/opt/az/lib/python3.14/site-packages/knack/parser.py", line 278, in parse_args
return super().parse_args(args)
~~~~~~~~~~~~~~~~~~^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 2005, in parse_args
args, argv = self.parse_known_args(args, namespace)
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/site-packages/azure/cli/core/parser.py", line 282, in parse_known_args
self._namespace, self._raw_arguments = super().parse_known_args(args=args, namespace=namespace)
~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 2015, in parse_known_args
return self._parse_known_args2(args, namespace, intermixed=False)
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 2044, in _parse_known_args2
namespace, args = self._parse_known_args(args, namespace, intermixed)
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 2276, in _parse_known_args
positionals_end_index = consume_positionals(start_index)
File "/opt/az/lib/python3.14/argparse.py", line 2251, in consume_positionals
take_action(action, args)
~~~~~~~~~~~^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 2120, in take_action
action(self, namespace, argument_values, option_string)
~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 1318, in __call__
subnamespace, arg_strings = subparser.parse_known_args(arg_strings, None)
~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/site-packages/azure/cli/core/parser.py", line 282, in parse_known_args
self._namespace, self._raw_arguments = super().parse_known_args(args=args, namespace=namespace)
~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 2015, in parse_known_args
return self._parse_known_args2(args, namespace, intermixed=False)
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 2044, in _parse_known_args2
namespace, args = self._parse_known_args(args, namespace, intermixed)
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 2295, in _parse_known_args
start_index = consume_optional(start_index)
File "/opt/az/lib/python3.14/argparse.py", line 2219, in consume_optional
take_action(action, args, option_string)
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 2120, in take_action
action(self, namespace, argument_values, option_string)
~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/argparse.py", line 1176, in __call__
parser.print_help()
~~~~~~~~~~~~~~~~~^^
File "/opt/az/lib/python3.14/argparse.py", line 2752, in print_help
self._print_message(self.format_help(), file)
~~~~~~~~~~~~~~~~^^
File "/opt/az/lib/python3.14/site-packages/azure/cli/core/parser.py", line 193, in format_help
super().format_help()
~~~~~~~~~~~~~~~~~~~^^
File "/opt/az/lib/python3.14/site-packages/knack/parser.py", line 265, in format_help
self.cli_help.show_help(self.prog.split()[0],
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
self.prog.split()[1:],
^^^^^^^^^^^^^^^^^^^^^^
self._actions[-1] if is_group else self,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
is_group)
^^^^^^^^^
File "/opt/az/lib/python3.14/site-packages/azure/cli/core/_help.py", line 224, in show_help
else self.group_help_cls(self, delimiters, parser)
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/site-packages/knack/help.py", line 253, in __init__
child.load(options)
~~~~~~~~~~^^^^^^^^^
File "/opt/az/lib/python3.14/site-packages/azure/cli/core/_help.py", line 523, in load
loader.versioned_load(self, options)
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.14/site-packages/azure/cli/core/_help_loaders.py", line 154, in versioned_load
super(CliHelpFile, help_obj).load(parser) # pylint:disable=bad-super-call
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^
File "/opt/az/lib/python3.14/site-packages/knack/help.py", line 198, in load
description = getattr(options, 'description', None)
File "/opt/az/lib/python3.14/site-packages/knack/parser.py", line 258, in __getattribute__
self.description = self._description() \
~~~~~~~~~~~~~~~~~^^
File "/opt/az/lib/python3.14/site-packages/azure/cli/core/commands/command_operation.py", line 132, in description_loader
op = self.get_op_handler(self.op_path)
File "/opt/az/lib/python3.14/site-packages/azure/cli/core/commands/command_operation.py", line 59, in get_op_handler
handler = import_module(mod_to_import)
File "/opt/az/lib/python3.14/importlib/__init__.py", line 88, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "", line 1406, in _gcd_import
File "", line 1371, in _find_and_load
File "", line 1342, in _find_and_load_unlocked
File "", line 938, in _load_unlocked
File "", line 759, in exec_module
File "", line 491, in _call_with_frames_removed
File "/home/bacef/.azure/cliextensions/aksarc/azext_aksarc/custom.py", line 136, in
import asyncssh
File "/home/bacef/.azure/cliextensions/aksarc/asyncssh/__init__.py", line 31, in
from .agent import SSHAgentClient, SSHAgentKeyPair, connect_agent
File "/home/bacef/.azure/cliextensions/aksarc/asyncssh/agent.py", line 33, in
from .public_key import KeyPairListArg, SSHCertificate, SSHKeyPair
File "/home/bacef/.azure/cliextensions/aksarc/asyncssh/public_key.py", line 36, in
from .crypto import ed25519_available, ed448_available
File "/home/bacef/.azure/cliextensions/aksarc/asyncssh/crypto/__init__.py", line 43, in
from .pq import mlkem_available, sntrup_available, PQClass, MLKEM, SNTRUP
File "/home/bacef/.azure/cliextensions/aksarc/asyncssh/crypto/pq.py", line 28, in
from cryptography.hazmat.primitives.asymmetric import mlkem
ImportError: cannot import name 'mlkem' from 'cryptography.hazmat.primitives.asymmetric' (/opt/az/lib/python3.14/site-packages/cryptography/hazmat/primitives/asymmetric/__init__.py)
To check existing issues, please visit: https://github.com/Azure/azure-cli/issues
cli.knack.cli: Event: Cli.PostExecute []
az_command_data_logger: exit code: 1
cli.__main__: Command ran in 0.494 seconds (init: 0.051, invoke: 0.442)
telemetry.main: Begin splitting cli events and extra events, total events: 1
telemetry.main: Finish splitting cli events and extra events, cli events: 1
telemetry.save: Save telemetry record of length 8168 in cache file under /home/bacef/.azure/telemetry/20260715183249938
telemetry.main: Begin creating telemetry upload process.
telemetry.process: Creating upload process: "/opt/az/bin/python3 /opt/az/lib/python3.14/site-packages/azure/cli/telemetry/__init__.py /home/bacef/.azure /home/bacef/.azure/telemetry/20260715183249938"
telemetry.process: Return from creating process 52983
telemetry.main: Finish creating telemetry upload process.
### Expected behavior
should show the help message of aksarc
### Environment Summary
Shown in the errors box, but this does not seem dependent on environment
### Additional context
_No response_
Contributor guide
Research direction
Start with `az aksarc --help` and the traceback, then inspect the extension entry point in `azext_aksarc/custom.py` and the bundled `asyncssh/crypto/pq.py` import. Reproduce with CLI 2.88.0 and aksarc 1.5.113 on the reported platforms; done means the command runs without Python dependency workarounds.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- cli
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100