diff --git a/src/azure-cli-core/setup.py b/src/azure-cli-core/setup.py index 2bbdf34412d..6281140aaf8 100644 --- a/src/azure-cli-core/setup.py +++ b/src/azure-cli-core/setup.py @@ -57,7 +57,6 @@ 'PyJWT>=2.1.0', 'pyopenssl>=17.1.0', # https://github.com/pyca/pyopenssl/pull/612 'requests[socks]~=2.25.1', - 'six~=1.12', 'urllib3[secure]>=1.26.5', ] diff --git a/src/azure-cli-testsdk/azure/cli/testsdk/base.py b/src/azure-cli-testsdk/azure/cli/testsdk/base.py index babec2408cc..7a2786005ee 100644 --- a/src/azure-cli-testsdk/azure/cli/testsdk/base.py +++ b/src/azure-cli-testsdk/azure/cli/testsdk/base.py @@ -278,7 +278,7 @@ def get_output_in_json(self): return self.json_value def _in_process_execute(self, cli_ctx, command, expect_failure=False): - from six import StringIO + from io import StringIO from vcr.errors import CannotOverwriteExistingCassetteException if command.startswith('az '): diff --git a/src/azure-cli-testsdk/azure/cli/testsdk/utilities.py b/src/azure-cli-testsdk/azure/cli/testsdk/utilities.py index 91751e04382..5a173e58b70 100644 --- a/src/azure-cli-testsdk/azure/cli/testsdk/utilities.py +++ b/src/azure-cli-testsdk/azure/cli/testsdk/utilities.py @@ -22,7 +22,7 @@ def find_recording_dir(test_file): @contextmanager def force_progress_logging(): - from six import StringIO + from io import StringIO import logging from knack.log import get_logger from .reverse_dependency import get_commands_loggers diff --git a/src/azure-cli/azure/cli/command_modules/acr/helm.py b/src/azure-cli/azure/cli/command_modules/acr/helm.py index 78f791d2e32..8cb42c12c26 100644 --- a/src/azure-cli/azure/cli/command_modules/acr/helm.py +++ b/src/azure-cli/azure/cli/command_modules/acr/helm.py @@ -5,7 +5,7 @@ import os import platform -from six.moves.urllib.request import urlopen # pylint: disable=import-error +from urllib.request import urlopen from knack.util import CLIError from knack.log import get_logger diff --git a/src/azure-cli/azure/cli/command_modules/acs/custom.py b/src/azure-cli/azure/cli/command_modules/acs/custom.py index d93b4f49ad3..82a1a770fc6 100644 --- a/src/azure-cli/azure/cli/command_modules/acs/custom.py +++ b/src/azure-cli/azure/cli/command_modules/acs/custom.py @@ -29,8 +29,8 @@ import zipfile from distutils.version import StrictVersion from math import isnan -from six.moves.urllib.request import urlopen # pylint: disable=import-error -from six.moves.urllib.error import URLError # pylint: disable=import-error +from urllib.request import urlopen +from urllib.error import URLError # pylint: disable=import-error import yaml diff --git a/src/azure-cli/azure/cli/command_modules/appservice/custom.py b/src/azure-cli/azure/cli/command_modules/appservice/custom.py index 0d6d6640d05..c42184ed0b3 100644 --- a/src/azure-cli/azure/cli/command_modules/appservice/custom.py +++ b/src/azure-cli/azure/cli/command_modules/appservice/custom.py @@ -7,10 +7,9 @@ import time import ast -try: - from urllib.parse import urlparse -except ImportError: - from urlparse import urlparse # pylint: disable=import-error +from urllib.parse import urlparse +from urllib.request import urlopen + from binascii import hexlify from os import urandom import datetime @@ -21,7 +20,6 @@ from functools import reduce from nacl import encoding, public -from six.moves.urllib.request import urlopen # pylint: disable=import-error, ungrouped-imports import OpenSSL.crypto from fabric import Connection diff --git a/src/azure-cli/azure/cli/command_modules/backup/custom.py b/src/azure-cli/azure/cli/command_modules/backup/custom.py index cd6daa2edfe..936640905be 100644 --- a/src/azure-cli/azure/cli/command_modules/backup/custom.py +++ b/src/azure-cli/azure/cli/command_modules/backup/custom.py @@ -8,7 +8,7 @@ import re import os from datetime import datetime, timedelta, timezone -from six.moves.urllib.parse import urlparse # pylint: disable=import-error +from urllib.parse import urlparse # pylint: disable=too-many-lines from knack.log import get_logger @@ -1303,7 +1303,7 @@ def _run_client_script_for_windows(client_scripts): file_name, password = _get_script_file_name_and_password(windows_script) # Create File - from six.moves.urllib.request import urlopen # pylint: disable=import-error + from urllib.request import urlopen import shutil with urlopen(windows_script.url) as response, open(file_name, 'wb') as out_file: shutil.copyfileobj(response, out_file) diff --git a/src/azure-cli/azure/cli/command_modules/backup/custom_help.py b/src/azure-cli/azure/cli/command_modules/backup/custom_help.py index acfca4e1ed7..32122317a04 100644 --- a/src/azure-cli/azure/cli/command_modules/backup/custom_help.py +++ b/src/azure-cli/azure/cli/command_modules/backup/custom_help.py @@ -8,7 +8,7 @@ import re import os from datetime import datetime, timedelta -from six.moves.urllib.parse import urlparse # pylint: disable=import-error +from urllib.parse import urlparse from knack.log import get_logger diff --git a/src/azure-cli/azure/cli/command_modules/batch/_command_type.py b/src/azure-cli/azure/cli/command_modules/batch/_command_type.py index 789d64c9559..ce9c0ade378 100644 --- a/src/azure-cli/azure/cli/command_modules/batch/_command_type.py +++ b/src/azure-cli/azure/cli/command_modules/batch/_command_type.py @@ -4,7 +4,6 @@ # -------------------------------------------------------------------------------------------- import re -from six import string_types from knack.arguments import CLICommandArgument, IgnoreAction from knack.introspection import extract_full_summary_from_signature, extract_args_from_signature @@ -431,7 +430,7 @@ class AzureBatchDataPlaneCommand: # pylint: disable=too-many-instance-attributes, too-few-public-methods, too-many-statements def __init__(self, operation, command_loader, client_factory=None, validator=None, **kwargs): - if not isinstance(operation, string_types): + if not isinstance(operation, str): raise ValueError("Operation must be a string. Got '{}'".format(operation)) self._flatten = kwargs.pop('flatten', pformat.FLATTEN) # Number of object levels to flatten diff --git a/src/azure-cli/azure/cli/command_modules/batch/_exception_handler.py b/src/azure-cli/azure/cli/command_modules/batch/_exception_handler.py index 4ddb0d7e804..5b5eb52f37a 100644 --- a/src/azure-cli/azure/cli/command_modules/batch/_exception_handler.py +++ b/src/azure-cli/azure/cli/command_modules/batch/_exception_handler.py @@ -25,6 +25,4 @@ def batch_exception_handler(ex): elif isinstance(ex, CloudError): raise CLIError(ex) else: - import sys - from six import reraise - reraise(*sys.exc_info()) + raise ex diff --git a/src/azure-cli/azure/cli/command_modules/batch/_format.py b/src/azure-cli/azure/cli/command_modules/batch/_format.py index abe90ec69ef..78ce440984f 100644 --- a/src/azure-cli/azure/cli/command_modules/batch/_format.py +++ b/src/azure-cli/azure/cli/command_modules/batch/_format.py @@ -7,7 +7,7 @@ from collections import OrderedDict -from six.moves.urllib.parse import unquote # pylint: disable=import-error +from urllib.parse import unquote HEAD_PROPERTIES = { # Convert response headers to properties. 'Last-Modified': 'lastModified', diff --git a/src/azure-cli/azure/cli/command_modules/batch/_validators.py b/src/azure-cli/azure/cli/command_modules/batch/_validators.py index bb8296a5a34..be744f152d2 100644 --- a/src/azure-cli/azure/cli/command_modules/batch/_validators.py +++ b/src/azure-cli/azure/cli/command_modules/batch/_validators.py @@ -6,7 +6,7 @@ import os import azure.batch.models from azure.cli.core.util import get_file_json -from six.moves.urllib.parse import urlsplit # pylint: disable=import-error +from urllib.parse import urlsplit # TYPES VALIDATORS diff --git a/src/azure-cli/azure/cli/command_modules/batch/custom.py b/src/azure-cli/azure/cli/command_modules/batch/custom.py index 465486f82b4..8b260c28b33 100644 --- a/src/azure-cli/azure/cli/command_modules/batch/custom.py +++ b/src/azure-cli/azure/cli/command_modules/batch/custom.py @@ -4,8 +4,8 @@ # -------------------------------------------------------------------------------------------- import base64 -from six.moves.urllib.parse import urlsplit # pylint: disable=import-error -from six.moves import configparser +from urllib.parse import urlsplit +import configparser from knack.log import get_logger diff --git a/src/azure-cli/azure/cli/command_modules/batchai/custom.py b/src/azure-cli/azure/cli/command_modules/batchai/custom.py index 6a12a8ab81e..fa4bb29c16a 100644 --- a/src/azure-cli/azure/cli/command_modules/batchai/custom.py +++ b/src/azure-cli/azure/cli/command_modules/batchai/custom.py @@ -25,7 +25,7 @@ from msrest.serialization import Deserializer from msrestazure.azure_exceptions import CloudError from msrestazure.tools import is_valid_resource_id, parse_resource_id -from six.moves import urllib_parse +from urllib.parse import urlparse from azure.cli.core import keys from azure.cli.core.util import get_default_admin_username @@ -185,7 +185,7 @@ def _get_account_name_from_azure_file_url(azure_file_url): """ if not azure_file_url: raise CLIError('Azure File URL cannot absent or be empty') - o = urllib_parse.urlparse(azure_file_url) + o = urlparse(azure_file_url) try: account, _ = o.netloc.split('.', 1) return account diff --git a/src/azure-cli/azure/cli/command_modules/billing/_exception_handler.py b/src/azure-cli/azure/cli/command_modules/billing/_exception_handler.py index bbda25396d6..6afd230ccf7 100644 --- a/src/azure-cli/azure/cli/command_modules/billing/_exception_handler.py +++ b/src/azure-cli/azure/cli/command_modules/billing/_exception_handler.py @@ -11,6 +11,4 @@ def billing_exception_handler(ex): if isinstance(ex, ErrorResponse): message = ex.error.error.message raise CLIError(message) - import sys - from six import reraise - reraise(*sys.exc_info()) + raise ex diff --git a/src/azure-cli/azure/cli/command_modules/configure/_utils.py b/src/azure-cli/azure/cli/command_modules/configure/_utils.py index a2ca68b1f0d..59abaa48f1b 100644 --- a/src/azure-cli/azure/cli/command_modules/configure/_utils.py +++ b/src/azure-cli/azure/cli/command_modules/configure/_utils.py @@ -3,7 +3,7 @@ # Licensed under the MIT License. See License.txt in the project root for license information. # -------------------------------------------------------------------------------------------- -from six.moves import configparser # pylint: disable=redefined-builtin +import configparser def get_default_from_config(config, section, option, choice_list, fallback=1): diff --git a/src/azure-cli/azure/cli/command_modules/consumption/_exception_handler.py b/src/azure-cli/azure/cli/command_modules/consumption/_exception_handler.py index 18b717de7c7..a2f20f84c0a 100644 --- a/src/azure-cli/azure/cli/command_modules/consumption/_exception_handler.py +++ b/src/azure-cli/azure/cli/command_modules/consumption/_exception_handler.py @@ -11,6 +11,4 @@ def consumption_exception_handler(ex): if isinstance(ex, ErrorResponseException): message = ex.message raise CLIError(message) - import sys - from six import reraise - reraise(*sys.exc_info()) + raise ex diff --git a/src/azure-cli/azure/cli/command_modules/monitor/custom.py b/src/azure-cli/azure/cli/command_modules/monitor/custom.py index 698982f4eef..e04120c044e 100644 --- a/src/azure-cli/azure/cli/command_modules/monitor/custom.py +++ b/src/azure-cli/azure/cli/command_modules/monitor/custom.py @@ -107,7 +107,7 @@ def list_metrics(cmd, resource, from azure.mgmt.monitor.models import ResultType from datetime import datetime import dateutil.parser - from six.moves.urllib.parse import quote_plus + from urllib.parse import quote_plus if not start_time and not end_time: # if neither value provided, end_time is now diff --git a/src/azure-cli/azure/cli/command_modules/netappfiles/_exception_handler.py b/src/azure-cli/azure/cli/command_modules/netappfiles/_exception_handler.py index 7d8ac8d0cd6..be6ba0beeb9 100644 --- a/src/azure-cli/azure/cli/command_modules/netappfiles/_exception_handler.py +++ b/src/azure-cli/azure/cli/command_modules/netappfiles/_exception_handler.py @@ -15,7 +15,4 @@ def netappfiles_exception_handler(ex): message = ex raise CLIError(message) - import sys - - from six import reraise - reraise(*sys.exc_info()) + raise ex diff --git a/src/azure-cli/azure/cli/command_modules/network/_params.py b/src/azure-cli/azure/cli/command_modules/network/_params.py index dbe1a1b4b89..4432c668cca 100644 --- a/src/azure-cli/azure/cli/command_modules/network/_params.py +++ b/src/azure-cli/azure/cli/command_modules/network/_params.py @@ -6,8 +6,6 @@ # pylint: disable=line-too-long, too-many-lines from argcomplete.completers import FilesCompleter -import six - from knack.arguments import CLIArgumentType, ignore_type from azure.cli.core.commands.parameters import (get_location_type, get_resource_name_completion_list, @@ -766,8 +764,7 @@ def load_arguments(self, _): c.extra('cmd') with self.argument_context('network express-route peering') as c: - # Using six.integer_types so we get int for Py3 and long for Py2 - c.argument('peer_asn', help='Autonomous system number of the customer/connectivity provider.', type=six.integer_types[-1]) + c.argument('peer_asn', help='Autonomous system number of the customer/connectivity provider.', type=int) c.argument('vlan_id', help='Identifier used to identify the customer.') c.argument('circuit_name', circuit_name_type) c.argument('peering_name', name_arg_type, id_part='child_name_1') diff --git a/src/azure-cli/azure/cli/command_modules/network/zone_file/make_zone_file.py b/src/azure-cli/azure/cli/command_modules/network/zone_file/make_zone_file.py index d3f3594fcfb..b18a6865c7f 100644 --- a/src/azure-cli/azure/cli/command_modules/network/zone_file/make_zone_file.py +++ b/src/azure-cli/azure/cli/command_modules/network/zone_file/make_zone_file.py @@ -47,7 +47,7 @@ def make_zone_file(json_obj): } """ import azure.cli.command_modules.network.zone_file.record_processors as record_processors - from six import StringIO + from io import StringIO zone_file = StringIO() diff --git a/src/azure-cli/azure/cli/command_modules/policyinsights/_exception_handler.py b/src/azure-cli/azure/cli/command_modules/policyinsights/_exception_handler.py index 1c20fbd7252..88d281012b4 100644 --- a/src/azure-cli/azure/cli/command_modules/policyinsights/_exception_handler.py +++ b/src/azure-cli/azure/cli/command_modules/policyinsights/_exception_handler.py @@ -12,7 +12,4 @@ def policy_insights_exception_handler(ex): if isinstance(ex, QueryFailure): message = '({}) {}'.format(ex.error.error.code, ex.error.error.message) raise CLIError(message) - import sys - from six import reraise - - reraise(*sys.exc_info()) + raise ex diff --git a/src/azure-cli/azure/cli/command_modules/rdbms/custom.py b/src/azure-cli/azure/cli/command_modules/rdbms/custom.py index ef17d2e26c8..a5487d3a937 100644 --- a/src/azure-cli/azure/cli/command_modules/rdbms/custom.py +++ b/src/azure-cli/azure/cli/command_modules/rdbms/custom.py @@ -12,7 +12,7 @@ from msrestazure.tools import resource_id, is_valid_resource_id, parse_resource_id # pylint: disable=import-error from knack.log import get_logger from knack.util import todict -from six.moves.urllib.request import urlretrieve # pylint: disable=import-error +from urllib.request import urlretrieve from azure.core.exceptions import ResourceNotFoundError from azure.cli.core._profile import Profile from azure.cli.core.commands.client_factory import get_subscription_id diff --git a/src/azure-cli/azure/cli/command_modules/reservations/_exception_handler.py b/src/azure-cli/azure/cli/command_modules/reservations/_exception_handler.py index 54355620599..219cf4964e1 100644 --- a/src/azure-cli/azure/cli/command_modules/reservations/_exception_handler.py +++ b/src/azure-cli/azure/cli/command_modules/reservations/_exception_handler.py @@ -11,6 +11,4 @@ def reservations_exception_handler(ex): if isinstance(ex, Error): message = ex.error.error.message raise CLIError(message) - import sys - from six import reraise - reraise(*sys.exc_info()) + raise ex diff --git a/src/azure-cli/azure/cli/command_modules/resource/_bicep.py b/src/azure-cli/azure/cli/command_modules/resource/_bicep.py index d60d0299a1a..b4ccf41299d 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/_bicep.py +++ b/src/azure-cli/azure/cli/command_modules/resource/_bicep.py @@ -17,7 +17,7 @@ import requests import semver -from six.moves.urllib.request import urlopen +from urllib.request import urlopen from knack.log import get_logger from azure.cli.core.api import get_config_dir from azure.cli.core.azclierror import ( diff --git a/src/azure-cli/azure/cli/command_modules/resource/_exception_handler.py b/src/azure-cli/azure/cli/command_modules/resource/_exception_handler.py index 46a48e5be8e..67957a57c1b 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/_exception_handler.py +++ b/src/azure-cli/azure/cli/command_modules/resource/_exception_handler.py @@ -12,6 +12,4 @@ def managementgroups_exception_handler(ex): if ex.error.error: raise CLIError(ex.error.error) raise CLIError(ex.error) - import sys - from six import reraise - reraise(*sys.exc_info()) + raise ex diff --git a/src/azure-cli/azure/cli/command_modules/resource/custom.py b/src/azure-cli/azure/cli/command_modules/resource/custom.py index caff916a317..ad29abf7014 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/custom.py +++ b/src/azure-cli/azure/cli/command_modules/resource/custom.py @@ -17,8 +17,8 @@ import uuid import base64 -from six.moves.urllib.request import urlopen # pylint: disable=import-error -from six.moves.urllib.parse import urlparse # pylint: disable=import-error +from urllib.request import urlopen +from urllib.parse import urlparse from msrestazure.tools import is_valid_resource_id, parse_resource_id @@ -936,7 +936,7 @@ def _build_preflight_error_message(preflight_error): def _prepare_template_uri_with_query_string(template_uri, input_query_string): - from six.moves.urllib.parse import urlencode, parse_qs, urlsplit, urlunsplit # pylint: disable=import-error + from urllib.parse import urlencode, parse_qs, urlsplit, urlunsplit try: scheme, netloc, path, query_string, fragment = urlsplit(template_uri) # pylint: disable=unused-variable diff --git a/src/azure-cli/azure/cli/command_modules/resource/tests/hybrid_2018_03_01/test_resource_custom.py b/src/azure-cli/azure/cli/command_modules/resource/tests/hybrid_2018_03_01/test_resource_custom.py index 9b49e950355..4fd502fc76e 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/tests/hybrid_2018_03_01/test_resource_custom.py +++ b/src/azure-cli/azure/cli/command_modules/resource/tests/hybrid_2018_03_01/test_resource_custom.py @@ -7,8 +7,8 @@ import tempfile import unittest -from six.moves.urllib.request import pathname2url # pylint: disable=import-error -from six.moves.urllib.parse import urljoin # pylint: disable=import-error +from urllib.request import pathname2url +from urllib.parse import urljoin from unittest import mock diff --git a/src/azure-cli/azure/cli/command_modules/resource/tests/hybrid_2018_03_01/test_resource_validators.py b/src/azure-cli/azure/cli/command_modules/resource/tests/hybrid_2018_03_01/test_resource_validators.py index 7aa167ff625..2536cb57466 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/tests/hybrid_2018_03_01/test_resource_validators.py +++ b/src/azure-cli/azure/cli/command_modules/resource/tests/hybrid_2018_03_01/test_resource_validators.py @@ -6,7 +6,7 @@ import unittest import os.path from unittest import mock -from six import StringIO +from io import StringIO from knack.util import CLIError from azure.cli.command_modules.resource._validators import ( diff --git a/src/azure-cli/azure/cli/command_modules/resource/tests/hybrid_2019_03_01/test_resource_custom.py b/src/azure-cli/azure/cli/command_modules/resource/tests/hybrid_2019_03_01/test_resource_custom.py index 5d171e8b2f8..fef766695cd 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/tests/hybrid_2019_03_01/test_resource_custom.py +++ b/src/azure-cli/azure/cli/command_modules/resource/tests/hybrid_2019_03_01/test_resource_custom.py @@ -7,8 +7,8 @@ import tempfile import unittest -from six.moves.urllib.request import pathname2url # pylint: disable=import-error -from six.moves.urllib.parse import urljoin # pylint: disable=import-error +from urllib.request import pathname2url +from urllib.parse import urljoin from unittest import mock diff --git a/src/azure-cli/azure/cli/command_modules/resource/tests/hybrid_2019_03_01/test_resource_validators.py b/src/azure-cli/azure/cli/command_modules/resource/tests/hybrid_2019_03_01/test_resource_validators.py index 7aa167ff625..2536cb57466 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/tests/hybrid_2019_03_01/test_resource_validators.py +++ b/src/azure-cli/azure/cli/command_modules/resource/tests/hybrid_2019_03_01/test_resource_validators.py @@ -6,7 +6,7 @@ import unittest import os.path from unittest import mock -from six import StringIO +from io import StringIO from knack.util import CLIError from azure.cli.command_modules.resource._validators import ( diff --git a/src/azure-cli/azure/cli/command_modules/resource/tests/latest/test_resource_custom.py b/src/azure-cli/azure/cli/command_modules/resource/tests/latest/test_resource_custom.py index 1baa1005261..ebbf2504a9a 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/tests/latest/test_resource_custom.py +++ b/src/azure-cli/azure/cli/command_modules/resource/tests/latest/test_resource_custom.py @@ -7,9 +7,8 @@ import tempfile import unittest -from six.moves.urllib.request import pathname2url # pylint: disable=import-error -from six.moves.urllib.parse import urljoin # pylint: disable=import-error -from six import assertRaisesRegex +from urllib.request import pathname2url +from urllib.parse import urljoin from unittest import mock @@ -240,7 +239,7 @@ def test_resource_missing_parameters_no_tty(self): def prompt_function(x): from knack.prompting import NoTTYException raise NoTTYException - with assertRaisesRegex(self, CLIError, "Missing input parameters: missing"): + with self.assertRaisesRegex(CLIError, "Missing input parameters: missing"): _get_missing_parameters(parameters, template, prompt_function) def test_deployment_parameters(self): diff --git a/src/azure-cli/azure/cli/command_modules/resource/tests/latest/test_resource_validators.py b/src/azure-cli/azure/cli/command_modules/resource/tests/latest/test_resource_validators.py index 7aa167ff625..2536cb57466 100644 --- a/src/azure-cli/azure/cli/command_modules/resource/tests/latest/test_resource_validators.py +++ b/src/azure-cli/azure/cli/command_modules/resource/tests/latest/test_resource_validators.py @@ -6,7 +6,7 @@ import unittest import os.path from unittest import mock -from six import StringIO +from io import StringIO from knack.util import CLIError from azure.cli.command_modules.resource._validators import ( diff --git a/src/azure-cli/azure/cli/command_modules/sql/custom.py b/src/azure-cli/azure/cli/command_modules/sql/custom.py index 27b02859d6f..402ef470af4 100644 --- a/src/azure-cli/azure/cli/command_modules/sql/custom.py +++ b/src/azure-cli/azure/cli/command_modules/sql/custom.py @@ -655,8 +655,6 @@ def _get_managed_db_resource_id(cli_ctx, resource_group_name, managed_instance_n ''' Gets the Managed db resource id in this Azure environment. ''' - - # url parse package has different names in Python 2 and 3. 'six' package works cross-version. from azure.cli.core.commands.client_factory import get_subscription_id from msrestazure.tools import resource_id @@ -699,8 +697,7 @@ def _get_managed_dropped_db_resource_id( Gets the Managed db resource id in this Azure environment. ''' - # url parse package has different names in Python 2 and 3. 'six' package works cross-version. - from six.moves.urllib.parse import quote # pylint: disable=import-error + from urllib.parse import quote from azure.cli.core.commands.client_factory import get_subscription_id from msrestazure.tools import resource_id @@ -829,8 +826,7 @@ def __init__(self, cli_ctx, database_name, server_name, resource_group_name): self.cli_ctx = cli_ctx def id(self): - # url parse package has different names in Python 2 and 3. 'six' package works cross-version. - from six.moves.urllib.parse import quote # pylint: disable=import-error + from urllib.parse import quote from azure.cli.core.commands.client_factory import get_subscription_id return '/subscriptions/{}/resourceGroups/{}/providers/Microsoft.Sql/servers/{}/databases/{}'.format( @@ -1655,8 +1651,7 @@ def _get_storage_account_name(storage_endpoint): Determines storage account name from endpoint url string. e.g. 'https://mystorage.blob.core.windows.net' -> 'mystorage' ''' - # url parse package has different names in Python 2 and 3. 'six' package works cross-version. - from six.moves.urllib.parse import urlparse # pylint: disable=import-error + from urllib.parse import urlparse return urlparse(storage_endpoint).netloc.split('.')[0] @@ -3912,8 +3907,7 @@ def server_dns_alias_set( ''' Sets a server DNS alias. ''' - # url parse package has different names in Python 2 and 3. 'six' package works cross-version. - from six.moves.urllib.parse import quote # pylint: disable=import-error + from urllib.parse import quote from azure.cli.core.commands.client_factory import get_subscription_id # Build the old alias id @@ -5135,7 +5129,7 @@ def failover_group_create( Creates a failover group. ''' - from six.moves.urllib.parse import quote # pylint: disable=import-error + from urllib.parse import quote from azure.cli.core.commands.client_factory import get_subscription_id # Build the partner server id diff --git a/src/azure-cli/azure/cli/command_modules/storage/_exception_handler.py b/src/azure-cli/azure/cli/command_modules/storage/_exception_handler.py index 7380013a464..4d4a19c5ee7 100644 --- a/src/azure-cli/azure/cli/command_modules/storage/_exception_handler.py +++ b/src/azure-cli/azure/cli/command_modules/storage/_exception_handler.py @@ -14,6 +14,4 @@ def file_related_exception_handler(ex): raise FileOperationError(ex, recommendation='File is expected, not a directory.') if isinstance(ex, NotADirectoryError): raise FileOperationError(ex, recommendation='Directory is expected, not a file.') - import sys - from six import reraise - reraise(*sys.exc_info()) + raise ex diff --git a/src/azure-cli/azure/cli/command_modules/storage/_params.py b/src/azure-cli/azure/cli/command_modules/storage/_params.py index 70bd5d0a4cc..beff4d56bb7 100644 --- a/src/azure-cli/azure/cli/command_modules/storage/_params.py +++ b/src/azure-cli/azure/cli/command_modules/storage/_params.py @@ -27,7 +27,6 @@ def load_arguments(self, _): # pylint: disable=too-many-locals, too-many-statements, too-many-lines, too-many-branches, line-too-long from argcomplete.completers import FilesCompleter - from six import u as unicode_string from knack.arguments import ignore_type, CLIArgumentType @@ -1713,7 +1712,7 @@ def load_arguments(self, _): # pylint: disable=too-many-locals, too-many-statem with self.argument_context('storage message') as c: c.argument('queue_name', queue_name_type) c.argument('message_id', options_list='--id') - c.argument('content', type=unicode_string, help='Message content, up to 64KB in size.') + c.argument('content', type=str, help='Message content, up to 64KB in size.') with self.argument_context('storage remove') as c: from .completers import file_path_completer diff --git a/src/azure-cli/azure/cli/command_modules/storage/_params_azure_stack.py b/src/azure-cli/azure/cli/command_modules/storage/_params_azure_stack.py index 755a889cf8f..6ee8592160d 100644 --- a/src/azure-cli/azure/cli/command_modules/storage/_params_azure_stack.py +++ b/src/azure-cli/azure/cli/command_modules/storage/_params_azure_stack.py @@ -23,7 +23,6 @@ def load_arguments(self, _): # pylint: disable=too-many-locals, too-many-statements, too-many-lines from argcomplete.completers import FilesCompleter - from six import u as unicode_string from knack.arguments import ignore_type, CLIArgumentType @@ -1062,7 +1061,7 @@ def load_arguments(self, _): # pylint: disable=too-many-locals, too-many-statem with self.argument_context('storage message') as c: c.argument('queue_name', queue_name_type) c.argument('message_id', options_list='--id') - c.argument('content', type=unicode_string, help='Message content, up to 64KB in size.') + c.argument('content', type=str, help='Message content, up to 64KB in size.') with self.argument_context('storage remove') as c: from .completers import file_path_completer diff --git a/src/azure-cli/azure/cli/command_modules/storage/azcopy/util.py b/src/azure-cli/azure/cli/command_modules/storage/azcopy/util.py index ca8c741564c..bccd7f16d49 100644 --- a/src/azure-cli/azure/cli/command_modules/storage/azcopy/util.py +++ b/src/azure-cli/azure/cli/command_modules/storage/azcopy/util.py @@ -12,8 +12,8 @@ import sys import zipfile import stat -from six.moves.urllib.parse import urlparse -from six.moves.urllib.request import urlopen # pylint: disable=import-error +from urllib.parse import urlparse +from urllib.request import urlopen from azure.cli.core._profile import Profile from knack.log import get_logger from knack.util import CLIError diff --git a/src/azure-cli/azure/cli/command_modules/storage/storage_url_helpers.py b/src/azure-cli/azure/cli/command_modules/storage/storage_url_helpers.py index 94a357c4753..8cf7c4f0fe7 100644 --- a/src/azure-cli/azure/cli/command_modules/storage/storage_url_helpers.py +++ b/src/azure-cli/azure/cli/command_modules/storage/storage_url_helpers.py @@ -22,7 +22,7 @@ def __init__(self, cloud, moniker): self.snapshot = None self.sas_token = None - from six.moves.urllib.parse import urlparse # pylint: disable=import-error + from urllib.parse import urlparse url = urlparse(moniker) self._is_url = (url.scheme == 'http' or url.scheme == 'https') diff --git a/src/azure-cli/azure/cli/command_modules/storage/tests/hybrid_2018_03_01/test_storage_validators.py b/src/azure-cli/azure/cli/command_modules/storage/tests/hybrid_2018_03_01/test_storage_validators.py index 91c578a084d..b1303d9c5bb 100644 --- a/src/azure-cli/azure/cli/command_modules/storage/tests/hybrid_2018_03_01/test_storage_validators.py +++ b/src/azure-cli/azure/cli/command_modules/storage/tests/hybrid_2018_03_01/test_storage_validators.py @@ -6,7 +6,7 @@ import unittest from unittest import mock from argparse import Namespace -from six import StringIO +from io import StringIO from knack import CLI diff --git a/src/azure-cli/azure/cli/command_modules/storage/tests/hybrid_2019_03_01/test_storage_validators.py b/src/azure-cli/azure/cli/command_modules/storage/tests/hybrid_2019_03_01/test_storage_validators.py index c2442e70e83..ca9b01bb512 100644 --- a/src/azure-cli/azure/cli/command_modules/storage/tests/hybrid_2019_03_01/test_storage_validators.py +++ b/src/azure-cli/azure/cli/command_modules/storage/tests/hybrid_2019_03_01/test_storage_validators.py @@ -6,7 +6,7 @@ import unittest from unittest import mock from argparse import Namespace -from six import StringIO +from io import StringIO from knack import CLI diff --git a/src/azure-cli/azure/cli/command_modules/storage/tests/hybrid_2020_09_01/test_storage_validators.py b/src/azure-cli/azure/cli/command_modules/storage/tests/hybrid_2020_09_01/test_storage_validators.py index c2442e70e83..ca9b01bb512 100644 --- a/src/azure-cli/azure/cli/command_modules/storage/tests/hybrid_2020_09_01/test_storage_validators.py +++ b/src/azure-cli/azure/cli/command_modules/storage/tests/hybrid_2020_09_01/test_storage_validators.py @@ -6,7 +6,7 @@ import unittest from unittest import mock from argparse import Namespace -from six import StringIO +from io import StringIO from knack import CLI diff --git a/src/azure-cli/azure/cli/command_modules/storage/tests/latest/test_storage_validators.py b/src/azure-cli/azure/cli/command_modules/storage/tests/latest/test_storage_validators.py index 192b17749f1..f395e15a5a6 100644 --- a/src/azure-cli/azure/cli/command_modules/storage/tests/latest/test_storage_validators.py +++ b/src/azure-cli/azure/cli/command_modules/storage/tests/latest/test_storage_validators.py @@ -6,7 +6,7 @@ import unittest from unittest import mock from argparse import (Namespace, ArgumentError) -from six import StringIO +from io import StringIO from knack import CLI diff --git a/src/azure-cli/azure/cli/command_modules/storage/track2_util.py b/src/azure-cli/azure/cli/command_modules/storage/track2_util.py index f8bfdb28387..081cc1005a7 100644 --- a/src/azure-cli/azure/cli/command_modules/storage/track2_util.py +++ b/src/azure-cli/azure/cli/command_modules/storage/track2_util.py @@ -88,8 +88,7 @@ def url_quote(url): def encode_base64(data): - import six - if isinstance(data, six.text_type): + if isinstance(data, str): data = data.encode('utf-8') encoded = base64.b64encode(data) return encoded.decode('utf-8') diff --git a/src/azure-cli/azure/cli/command_modules/storage/url_quote_util.py b/src/azure-cli/azure/cli/command_modules/storage/url_quote_util.py index 49f269d63ed..b51f64cb7ce 100644 --- a/src/azure-cli/azure/cli/command_modules/storage/url_quote_util.py +++ b/src/azure-cli/azure/cli/command_modules/storage/url_quote_util.py @@ -13,12 +13,12 @@ def encode_for_url(url_component, safe=SAFE_CHARS): - from six.moves.urllib.parse import quote as url_quote # pylint: disable=import-error + from urllib.parse import quote as url_quote return url_quote(url_component, safe) def encode_url_path(url, safe=SAFE_CHARS): - from six.moves.urllib.parse import urlparse, urlunparse # pylint: disable=import-error + from urllib.parse import urlparse, urlunparse url_parts = urlparse(url) quoted_path = encode_for_url(url_parts.path, safe) return urlunparse(url_parts[:2] + (quoted_path,) + url_parts[3:]) diff --git a/src/azure-cli/azure/cli/command_modules/synapse/operations/sqlpool.py b/src/azure-cli/azure/cli/command_modules/synapse/operations/sqlpool.py index 72131821f1a..d22e3de069d 100644 --- a/src/azure-cli/azure/cli/command_modules/synapse/operations/sqlpool.py +++ b/src/azure-cli/azure/cli/command_modules/synapse/operations/sqlpool.py @@ -157,8 +157,7 @@ def sql_pool_show_connection_string( def _construct_database_resource_id(cli_ctx, resource_group_name, server_name, database_name): - # url parse package has different names in Python 2 and 3. 'six' package works cross-version. - from six.moves.urllib.parse import quote # pylint: disable=import-error + from urllib.parse import quote from azure.cli.core.commands.client_factory import get_subscription_id return '/subscriptions/{}/resourceGroups/{}/providers/Microsoft.Sql/servers/{}/databases/{}'.format( diff --git a/src/azure-cli/azure/cli/command_modules/synapse/operations/sqlpoolblobauditingpolicy.py b/src/azure-cli/azure/cli/command_modules/synapse/operations/sqlpoolblobauditingpolicy.py index 6767d700ef2..c1c293b4256 100644 --- a/src/azure-cli/azure/cli/command_modules/synapse/operations/sqlpoolblobauditingpolicy.py +++ b/src/azure-cli/azure/cli/command_modules/synapse/operations/sqlpoolblobauditingpolicy.py @@ -369,8 +369,7 @@ def _get_storage_account_name(storage_endpoint): Determines storage account name from endpoint url string. e.g. 'https://mystorage.blob.core.windows.net' -> 'mystorage' """ - # url parse package has different names in Python 2 and 3. 'six' package works cross-version. - from six.moves.urllib.parse import urlparse # pylint: disable=import-error + from urllib.parse import urlparse return urlparse(storage_endpoint).netloc.split('.')[0] diff --git a/src/azure-cli/azure/cli/command_modules/vm/custom.py b/src/azure-cli/azure/cli/command_modules/vm/custom.py index eb964b4eec6..ea405b032ed 100644 --- a/src/azure-cli/azure/cli/command_modules/vm/custom.py +++ b/src/azure-cli/azure/cli/command_modules/vm/custom.py @@ -16,13 +16,9 @@ import requests -try: - from urllib.parse import urlparse -except ImportError: - from urlparse import urlparse # pylint: disable=import-error - +from urllib.parse import urlparse # the urlopen is imported for automation purpose -from six.moves.urllib.request import urlopen # noqa, pylint: disable=import-error,unused-import,ungrouped-imports +from urllib.request import urlopen # noqa, pylint: disable=import-error,unused-import,ungrouped-imports from knack.log import get_logger from knack.util import CLIError diff --git a/src/azure-cli/azure/cli/command_modules/vm/tests/hybrid_2018_03_01/test_vm_commands.py b/src/azure-cli/azure/cli/command_modules/vm/tests/hybrid_2018_03_01/test_vm_commands.py index 160bf852ac5..8d0ab823002 100644 --- a/src/azure-cli/azure/cli/command_modules/vm/tests/hybrid_2018_03_01/test_vm_commands.py +++ b/src/azure-cli/azure/cli/command_modules/vm/tests/hybrid_2018_03_01/test_vm_commands.py @@ -13,8 +13,6 @@ from unittest import mock import uuid -import six - from knack.util import CLIError from azure_devtools.scenario_tests import AllowLargeResponse, record_only from azure.cli.core.profiles import ResourceType diff --git a/src/azure-cli/azure/cli/command_modules/vm/tests/hybrid_2019_03_01/test_vm_commands.py b/src/azure-cli/azure/cli/command_modules/vm/tests/hybrid_2019_03_01/test_vm_commands.py index 67501a2b658..a3e16fec066 100644 --- a/src/azure-cli/azure/cli/command_modules/vm/tests/hybrid_2019_03_01/test_vm_commands.py +++ b/src/azure-cli/azure/cli/command_modules/vm/tests/hybrid_2019_03_01/test_vm_commands.py @@ -13,8 +13,6 @@ from unittest import mock import uuid -import six - from knack.util import CLIError from azure_devtools.scenario_tests import AllowLargeResponse, record_only from azure.cli.core.profiles import ResourceType diff --git a/src/azure-cli/azure/cli/command_modules/vm/tests/hybrid_2020_09_01/test_vm_commands.py b/src/azure-cli/azure/cli/command_modules/vm/tests/hybrid_2020_09_01/test_vm_commands.py index 95a83b5cb2a..64ec4d196d5 100644 --- a/src/azure-cli/azure/cli/command_modules/vm/tests/hybrid_2020_09_01/test_vm_commands.py +++ b/src/azure-cli/azure/cli/command_modules/vm/tests/hybrid_2020_09_01/test_vm_commands.py @@ -13,8 +13,6 @@ from unittest import mock import uuid -import six - from knack.util import CLIError from azure_devtools.scenario_tests import AllowLargeResponse, record_only from azure.cli.core.profiles import ResourceType diff --git a/src/azure-cli/setup.py b/src/azure-cli/setup.py index 38fc4d1e602..729744096f2 100644 --- a/src/azure-cli/setup.py +++ b/src/azure-cli/setup.py @@ -117,12 +117,11 @@ 'azure-mgmt-relay~=0.1.0', 'azure-mgmt-reservations==0.6.0', # TODO: Use requirements.txt instead of '==' #9781 'azure-mgmt-resource==19.0.0', - # 'azure-mgmt-reservations~=0.6.0', 'azure-mgmt-search~=8.0', 'azure-mgmt-security~=2.0.0b1', 'azure-mgmt-servicebus~=6.0.0', - 'azure-mgmt-servicefabric~=1.0.0', 'azure-mgmt-servicefabricmanagedclusters~=1.0.0', + 'azure-mgmt-servicefabric~=1.0.0', 'azure-mgmt-signalr~=1.0.0b2', 'azure-mgmt-sqlvirtualmachine~=1.0.0b1', 'azure-mgmt-sql~=3.0.1', @@ -134,8 +133,9 @@ 'azure-storage-common~=1.4', 'azure-synapse-accesscontrol~=0.5.0', 'azure-synapse-artifacts~=0.8.0', - 'azure-synapse-spark~=0.2.0', 'azure-synapse-managedprivateendpoints~=0.3.0', + 'azure-synapse-spark~=0.2.0', + 'chardet~=3.0.4', 'fabric~=2.4', 'javaproperties~=0.5.1', 'jsondiff~=1.2.0', @@ -145,10 +145,10 @@ 'pytz==2019.1', 'scp~=0.13.2', 'semver==2.13.0', + 'six>=1.10.0', # six is still used by countless extensions 'sshtunnel~=0.1.4', 'websocket-client~=0.56.0', - 'xmltodict~=0.12', - 'chardet~=3.0.4' + 'xmltodict~=0.12' ] # On Linux, the distribution (Ubuntu, Debian, etc) and version are checked diff --git a/tools/setup.py b/tools/setup.py index 85ac561c291..2ff39761abe 100644 --- a/tools/setup.py +++ b/tools/setup.py @@ -29,7 +29,6 @@ 'requests', 'pyyaml~=5.2', 'knack', - 'six>=1.10.0', 'tabulate>=0.7.7', 'colorama>=0.3.7' ] @@ -59,7 +58,7 @@ ] }, install_requires=DEPENDENCIES, - extras_require={ + extras_require={ ":python_version<'3.0'": ['pylint==1.9.2'], ":python_version>='3.0'": ['pylint==2.0.0'] }