diff --git a/.azure-pipelines/breaking-change-tests.yml b/.azure-pipelines/breaking-change-tests.yml index 893140f6f64..92a6f178c0f 100644 --- a/.azure-pipelines/breaking-change-tests.yml +++ b/.azure-pipelines/breaking-change-tests.yml @@ -21,9 +21,9 @@ jobs: fetchDepth: 0 fetchTags: true - task: UsePythonVersion@0 - displayName: 'Use Python 3.13' + displayName: 'Use Python 3.14' inputs: - versionSpec: 3.13 + versionSpec: '3.14' - template: ${{ variables.Pipeline.Workspace }}/.azure-pipelines/templates/azdev_setup.yml - bash: | set -ev diff --git a/.azure-pipelines/macos-standalone-release.yml b/.azure-pipelines/macos-standalone-release.yml index f059e011188..31aee2ba575 100644 --- a/.azure-pipelines/macos-standalone-release.yml +++ b/.azure-pipelines/macos-standalone-release.yml @@ -20,7 +20,7 @@ parameters: - name: PythonVersion displayName: 'Python Version (Homebrew)' type: string - default: '3.13' + default: '3.14' # Sign/notarize parameters - name: BundleId diff --git a/.azure-pipelines/templates/macos/macos-build-jobs.yml b/.azure-pipelines/templates/macos/macos-build-jobs.yml index 1cf050eacb4..9387f309498 100644 --- a/.azure-pipelines/templates/macos/macos-build-jobs.yml +++ b/.azure-pipelines/templates/macos/macos-build-jobs.yml @@ -4,7 +4,7 @@ # Usage: Can be called from main pipeline or standalone wrapper # # Parameters: -# - PythonVersion: Homebrew Python version (default: 3.13) +# - PythonVersion: Homebrew Python version (default: 3.14) # - MacosArm64Image: VM image for ARM64 builds # - MacosIntelImage: VM image for Intel builds # - condition: Job execution condition @@ -17,7 +17,7 @@ parameters: - name: PythonVersion type: string - default: '3.13' + default: '3.14' - name: MacosArm64Image type: string default: 'macos-15-arm64' diff --git a/.azure-pipelines/templates/macos/macos-cask-generation-and-tests.yml b/.azure-pipelines/templates/macos/macos-cask-generation-and-tests.yml index cf4980a3dbc..5a29d6dce84 100644 --- a/.azure-pipelines/templates/macos/macos-cask-generation-and-tests.yml +++ b/.azure-pipelines/templates/macos/macos-cask-generation-and-tests.yml @@ -27,7 +27,7 @@ parameters: default: 'macos-15' - name: PythonVersion type: string - default: '3.13' + default: '3.14' - name: GitHubRepo type: string default: 'placeholder/repo' diff --git a/.azure-pipelines/templates/macos/macos-publish-jobs.yml b/.azure-pipelines/templates/macos/macos-publish-jobs.yml index 1eb769bac63..6640ef48283 100644 --- a/.azure-pipelines/templates/macos/macos-publish-jobs.yml +++ b/.azure-pipelines/templates/macos/macos-publish-jobs.yml @@ -46,7 +46,7 @@ parameters: default: 'macos-15' - name: PythonVersion type: string - default: '3.13' + default: '3.14' - name: Debug type: boolean default: false diff --git a/.azure-pipelines/templates/macos/macos-sign-notarize-jobs.yml b/.azure-pipelines/templates/macos/macos-sign-notarize-jobs.yml index 59e6a8006d6..657a4f50500 100644 --- a/.azure-pipelines/templates/macos/macos-sign-notarize-jobs.yml +++ b/.azure-pipelines/templates/macos/macos-sign-notarize-jobs.yml @@ -33,7 +33,7 @@ parameters: default: [] - name: PythonVersion type: string - default: '3.13' + default: '3.14' - name: MacosArm64Image type: string default: 'macos-15-arm64' diff --git a/azure-pipelines-full-tests.yml b/azure-pipelines-full-tests.yml index 506c5c10ff9..d000424ec97 100644 --- a/azure-pipelines-full-tests.yml +++ b/azure-pipelines-full-tests.yml @@ -83,3 +83,37 @@ jobs: instance_idx: '$(Instance_idx)' fullTest: true jobName: 'FullTest' + +- job: AutomationFullTestPython314ProfileLatest + displayName: Automation Full Test Python314 Profile Latest + timeoutInMinutes: 9999 + strategy: + maxParallel: 8 + matrix: + instance1: + Instance_idx: 1 + instance2: + Instance_idx: 2 + instance3: + Instance_idx: 3 + instance4: + Instance_idx: 4 + instance5: + Instance_idx: 5 + instance6: + Instance_idx: 6 + instance7: + Instance_idx: 7 + instance8: + Instance_idx: 8 + pool: + name: ${{ variables.ubuntu_pool }} + steps: + - template: .azure-pipelines/templates/automation_test.yml + parameters: + pythonVersion: '3.14' + profile: 'latest' + instance_cnt: '8' + instance_idx: '$(Instance_idx)' + fullTest: true + jobName: 'FullTest' diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 4605adf7cf7..022ba2d3545 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -25,7 +25,7 @@ variables: # macOS Cask parameters - name: macos_cask_python_version - value: '3.13' + value: '3.14' parameters: - name: architectures @@ -137,9 +137,9 @@ jobs: steps: - task: UsePythonVersion@0 - displayName: 'Use Python 3.13' + displayName: 'Use Python 3.14' inputs: - versionSpec: 3.13 + versionSpec: '3.14' - bash: ./scripts/ci/dependency_check.sh displayName: 'Verify src/azure-cli/requirements.py3.Linux.txt' @@ -152,9 +152,9 @@ jobs: steps: - task: UsePythonVersion@0 - displayName: 'Use Python 3.13' + displayName: 'Use Python 3.14' inputs: - versionSpec: 3.13 + versionSpec: '3.14' - bash: ./scripts/ci/dependency_check.sh displayName: 'Verify src/azure-cli/requirements.py3.Darwin.txt' @@ -167,9 +167,9 @@ jobs: steps: - task: UsePythonVersion@0 - displayName: 'Use Python 3.13' + displayName: 'Use Python 3.14' inputs: - versionSpec: 3.13 + versionSpec: '3.14' - task: BatchScript@1 inputs: @@ -184,9 +184,9 @@ jobs: name: ${{ variables.ubuntu_pool }} steps: - task: UsePythonVersion@0 - displayName: 'Use Python 3.13' + displayName: 'Use Python 3.14' inputs: - versionSpec: 3.13 + versionSpec: '3.14' - template: .azure-pipelines/templates/azdev_setup.yml - bash: | set -ev @@ -439,9 +439,9 @@ jobs: name: ${{ variables.ubuntu_pool }} steps: - task: UsePythonVersion@0 - displayName: 'Use Python 3.13' + displayName: 'Use Python 3.14' inputs: - versionSpec: 3.13 + versionSpec: '3.14' - task: PipAuthenticate@1 condition: startsWith(variables['Build.SourceBranch'], 'refs/heads/release') @@ -478,6 +478,8 @@ jobs: python.version: '3.12' Python313: python.version: '3.13' + Python314: + python.version: '3.14' dependsOn: BuildPythonWheel condition: succeeded() pool: @@ -518,6 +520,8 @@ jobs: python.version: '3.12' Python313: python.version: '3.13' + Python314: + python.version: '3.14' steps: - template: .azure-pipelines/templates/automation_test.yml parameters: @@ -535,6 +539,8 @@ jobs: python.version: '3.12' Python313: python.version: '3.13' + Python314: + python.version: '3.14' steps: - template: .azure-pipelines/templates/automation_test.yml parameters: @@ -555,6 +561,8 @@ jobs: python.version: '3.12' Python313: python.version: '3.13' + Python314: + python.version: '3.14' steps: - task: UsePythonVersion@0 displayName: 'Use Python $(python.version)' @@ -574,8 +582,8 @@ jobs: name: ${{ variables.ubuntu_pool }} strategy: matrix: - Python313: - python.version: '3.13' + Python314: + python.version: '3.14' steps: - task: UsePythonVersion@0 displayName: 'Use Python $(python.version)' @@ -667,7 +675,7 @@ jobs: set -ev # Force relink python@3.xx in Homebrew to resolve the conflict with pre-installed python 3.xx on macOS-12 image # See: https://github.com/Azure/azure-cli/issues/29054 - python_version=3.13 + python_version=3.14 brew unlink python@$python_version && brew link --overwrite python@$python_version echo == Remove pre-installed azure-cli == @@ -1087,9 +1095,9 @@ jobs: name: ${{ variables.ubuntu_pool }} steps: - task: UsePythonVersion@0 - displayName: 'Use Python 3.13' + displayName: 'Use Python 3.14' inputs: - versionSpec: 3.13 + versionSpec: '3.14' - template: .azure-pipelines/templates/azdev_setup.yml - bash: | set -ev @@ -1104,9 +1112,9 @@ jobs: name: ${{ variables.ubuntu_multi_core_pool }} steps: - task: UsePythonVersion@0 - displayName: 'Use Python 3.13' + displayName: 'Use Python 3.14' inputs: - versionSpec: 3.13 + versionSpec: '3.14' - template: .azure-pipelines/templates/azdev_setup.yml - bash: | set -ev @@ -1120,9 +1128,9 @@ jobs: name: ${{ variables.ubuntu_pool }} steps: - task: UsePythonVersion@0 - displayName: 'Use Python 3.13' + displayName: 'Use Python 3.14' inputs: - versionSpec: 3.13 + versionSpec: '3.14' - template: .azure-pipelines/templates/azdev_setup.yml - bash: | set -ev @@ -1139,6 +1147,8 @@ jobs: python.version: '3.12' Python313: python.version: '3.13' + Python314: + python.version: '3.14' pool: name: ${{ variables.ubuntu_pool }} steps: @@ -1184,9 +1194,9 @@ jobs: name: ${{ variables.ubuntu_multi_core_pool }} steps: - task: UsePythonVersion@0 - displayName: 'Use Python 3.13' + displayName: 'Use Python 3.14' inputs: - versionSpec: 3.13 + versionSpec: '3.14' - template: .azure-pipelines/templates/azdev_setup.yml - bash: | set -ev @@ -1207,9 +1217,9 @@ jobs: name: ${{ variables.ubuntu_pool }} steps: - task: UsePythonVersion@0 - displayName: 'Use Python 3.13' + displayName: 'Use Python 3.14' inputs: - versionSpec: 3.13 + versionSpec: '3.14' - template: .azure-pipelines/templates/azdev_setup.yml - bash: | set -ev @@ -1242,7 +1252,7 @@ jobs: - task: UsePythonVersion@0 displayName: 'Use Python 3.11' inputs: - versionSpec: 3.11 + versionSpec: '3.11' - template: .azure-pipelines/templates/azdev_setup.yml - bash: | set -ev diff --git a/build_scripts/windows/scripts/build.cmd b/build_scripts/windows/scripts/build.cmd index 6f7369aea81..88e78d52698 100644 --- a/build_scripts/windows/scripts/build.cmd +++ b/build_scripts/windows/scripts/build.cmd @@ -30,7 +30,7 @@ if "%ARCH%"=="x86" ( echo Please set ARCH to "x86" or "x64" goto ERROR ) -set PYTHON_VERSION=3.13.13 +set PYTHON_VERSION=3.14.4 set WIX_DOWNLOAD_URL="https://azurecliprod.blob.core.windows.net/msi/wix310-binaries-mirror.zip" set PYTHON_DOWNLOAD_URL="https://www.python.org/ftp/python/%PYTHON_VERSION%/python-%PYTHON_VERSION%-embed-%PYTHON_ARCH%.zip" diff --git a/doc/command_guidelines.md b/doc/command_guidelines.md index c79fe9732d4..75059f0ff48 100644 --- a/doc/command_guidelines.md +++ b/doc/command_guidelines.md @@ -426,7 +426,7 @@ Follow the [Error Handling Guidelines](https://github.com/Azure/azure-cli/blob/d ## Coding Practices -- All code must support Python 3.10 ~ 3.13 +- All code must support Python 3.10 ~ 3.14 - PRs to Azure/azure-cli and Azure/azure-cli-extensions must pass CI - Code must pass style checks with pylint and pep8 - (*) All commands should have tests diff --git a/doc/extensions/authoring.md b/doc/extensions/authoring.md index 9ccac43dee4..2258e70bda1 100644 --- a/doc/extensions/authoring.md +++ b/doc/extensions/authoring.md @@ -130,9 +130,9 @@ See [Extension Metadata](metadata.md) for more information. ### Test your extension on Python 3 -- The Azure CLI supports Python 3.10 ~ 3.13 so verify that your extension does the same. +- The Azure CLI supports Python 3.10 ~ 3.14 so verify that your extension does the same. - You can create virtual environments for different versions and run your extension in them. -- e.g. `python3.13 -m venv env313`. +- e.g. `python3.14 -m venv env314`. Also, see the [FAQ](faq.md). diff --git a/doc/install_linux_prerequisites.md b/doc/install_linux_prerequisites.md index 7166c9664ef..5b006179282 100644 --- a/doc/install_linux_prerequisites.md +++ b/doc/install_linux_prerequisites.md @@ -6,7 +6,7 @@ Some native Linux packages are required when installing the CLI with: - Interactive installation script - `pip` -Current supported Python versions are Python 3.10 ~ 3.13. +Current supported Python versions are Python 3.10 ~ 3.14. The commands to run to install the dependencies for some common distributions are listed below. diff --git a/scripts/ci/test_extensions.sh b/scripts/ci/test_extensions.sh index 29a6472beb1..34331cd0340 100755 --- a/scripts/ci/test_extensions.sh +++ b/scripts/ci/test_extensions.sh @@ -25,7 +25,7 @@ exit_code=0 # Disable alias temporarily: https://github.com/Azure/azure-cli/pull/27717 # hybridaks is going to be deprecated: https://github.com/Azure/azure-cli/pull/29838 # db-up is going to be deprecated: https://github.com/Azure/azure-cli/pull/29887 -# serviceconnector-passwordless's dependency is not compatible with 3.13 https://github.com/Azure/azure-cli/pull/31895 +# serviceconnector-passwordless's dependency is not compatible with 3.14 https://github.com/Azure/azure-cli/pull/31895 # partnercenter is not compatible with latest pydantic: https://github.com/Azure/azure-cli/pull/31967 ignore_list='azure-cli-ml fzf arcappliance arcdata connectedk8s k8s-extension alias hybridaks db-up serviceconnector-passwordless partnercenter' diff --git a/scripts/regression_test/regression_test.yml b/scripts/regression_test/regression_test.yml index 9f6cdef4277..35f6dcafb34 100644 --- a/scripts/regression_test/regression_test.yml +++ b/scripts/regression_test/regression_test.yml @@ -20,8 +20,8 @@ jobs: steps: - task: UsePythonVersion@0 inputs: - versionSpec: '3.13' - displayName: "Use Python 3.13" + versionSpec: '3.14' + displayName: "Use Python 3.14" - task: AzureCLI@2 displayName: 'update version' inputs: @@ -89,8 +89,8 @@ jobs: steps: - task: UsePythonVersion@0 inputs: - versionSpec: '3.13' - displayName: "Use Python 3.13" + versionSpec: '3.14' + displayName: "Use Python 3.14" - task: AzureCLI@2 displayName: 'Checkout Target Branch' inputs: diff --git a/scripts/release/debian/build.sh b/scripts/release/debian/build.sh index 6ff45453ddf..4588bc91735 100755 --- a/scripts/release/debian/build.sh +++ b/scripts/release/debian/build.sh @@ -15,7 +15,7 @@ set -exv ls -Rl /mnt/artifacts WORKDIR=`cd $(dirname $0); cd ../../../; pwd` -PYTHON_VERSION="3.13.13" +PYTHON_VERSION="3.14.4" SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Update APT packages diff --git a/scripts/release/homebrew/docker/formula_generate.py b/scripts/release/homebrew/docker/formula_generate.py index 6e27c95ce72..b888921abf5 100644 --- a/scripts/release/homebrew/docker/formula_generate.py +++ b/scripts/release/homebrew/docker/formula_generate.py @@ -19,7 +19,7 @@ CLI_VERSION = os.environ['CLI_VERSION'] HOMEBREW_UPSTREAM_URL = os.environ['HOMEBREW_UPSTREAM_URL'] HOMEBREW_FORMULAR_LATEST = "https://raw.githubusercontent.com/Homebrew/homebrew-core/master/Formula/a/azure-cli.rb" -PYTHON_VERSION = '3.13' +PYTHON_VERSION = '3.14' def main(): diff --git a/scripts/release/macos/build_binary_tar_gz.py b/scripts/release/macos/build_binary_tar_gz.py index 0215d254217..957eb626f2b 100644 --- a/scripts/release/macos/build_binary_tar_gz.py +++ b/scripts/release/macos/build_binary_tar_gz.py @@ -38,7 +38,7 @@ ├── bin/ │ └── az (entry script - Homebrew or AZ_PYTHON) └── lib/ - └── python3.13 + └── python3.14 └── site-packages/ ├── azure/ ├── msal/ @@ -81,7 +81,7 @@ # Python version we're building for (must match Homebrew python@X.Y) # Can be overridden via PYTHON_MAJOR_MINOR env var -PYTHON_MAJOR_MINOR = os.environ.get("PYTHON_MAJOR_MINOR", "3.13") +PYTHON_MAJOR_MINOR = os.environ.get("PYTHON_MAJOR_MINOR", "3.14") PYTHON_BIN = "python3" TEMPLATE_DIR = Path(__file__).resolve().parent / "templates" LAUNCHER_TEMPLATE_PATH = TEMPLATE_DIR / "az_launcher.sh.in" diff --git a/scripts/release/macos/cask_generate.py b/scripts/release/macos/cask_generate.py index e827cd3f474..6520ad4612f 100644 --- a/scripts/release/macos/cask_generate.py +++ b/scripts/release/macos/cask_generate.py @@ -77,7 +77,7 @@ def main() -> None: parser.add_argument("--arm64-sha", dest="arm64_sha", help="ARM64 tarball SHA256") parser.add_argument("--x86-64-sha", dest="x86_64_sha", help="x86_64 tarball SHA256") parser.add_argument("--github-repo", dest="github_repo", help="GitHub repo, e.g. Azure/azure-cli") - parser.add_argument("--python-version", dest="python_version", help="Python major.minor version, e.g. 3.13") + parser.add_argument("--python-version", dest="python_version", help="Python major.minor version, e.g. 3.14") parser.add_argument("--template", dest="template", help="Template path (.rb.in)") parser.add_argument("--output", dest="output", help="Output cask path (.rb)") parser.set_defaults(func=generate_cask) diff --git a/src/azure-cli-core/setup.py b/src/azure-cli-core/setup.py index 2fb150f0aa9..ada4b22845f 100644 --- a/src/azure-cli-core/setup.py +++ b/src/azure-cli-core/setup.py @@ -39,6 +39,7 @@ 'Programming Language :: Python :: 3.11', 'Programming Language :: Python :: 3.12', 'Programming Language :: Python :: 3.13', + 'Programming Language :: Python :: 3.14', 'License :: OSI Approved :: MIT License', ] diff --git a/src/azure-cli-telemetry/setup.py b/src/azure-cli-telemetry/setup.py index adb5198204b..63a6b21cc61 100755 --- a/src/azure-cli-telemetry/setup.py +++ b/src/azure-cli-telemetry/setup.py @@ -20,6 +20,7 @@ 'Programming Language :: Python :: 3.11', 'Programming Language :: Python :: 3.12', 'Programming Language :: Python :: 3.13', + 'Programming Language :: Python :: 3.14', 'License :: OSI Approved :: MIT License', ] diff --git a/src/azure-cli-testsdk/setup.py b/src/azure-cli-testsdk/setup.py index 55f63b2d191..d32fe0bebcc 100644 --- a/src/azure-cli-testsdk/setup.py +++ b/src/azure-cli-testsdk/setup.py @@ -19,6 +19,7 @@ 'Programming Language :: Python :: 3.11', 'Programming Language :: Python :: 3.12', 'Programming Language :: Python :: 3.13', + 'Programming Language :: Python :: 3.14', 'License :: OSI Approved :: MIT License', ] diff --git a/src/azure-cli/setup.py b/src/azure-cli/setup.py index 5759323910f..74986e8ebfa 100644 --- a/src/azure-cli/setup.py +++ b/src/azure-cli/setup.py @@ -46,6 +46,7 @@ 'Programming Language :: Python :: 3.11', 'Programming Language :: Python :: 3.12', 'Programming Language :: Python :: 3.13', + 'Programming Language :: Python :: 3.14', 'License :: OSI Approved :: MIT License', ]