From 7f115b8bd332090d38dcea711b855c92cbb01432 Mon Sep 17 00:00:00 2001 From: aryasadeghi1 Date: Wed, 20 May 2026 14:44:58 +1000 Subject: [PATCH 1/2] feat: add Python 3.14 support, drop Python 3.9, and refine CI workflow --- .github/workflows/python-compatibility.yml | 77 ++++------------------ .gitignore | 1 + HISTORY.rst | 6 ++ README.md | 4 +- docs/_config.yml | 2 +- docs/pages/usage/setup_and_run.md | 2 +- requirements.txt | 2 +- setup.py | 6 +- version.py | 2 +- 9 files changed, 27 insertions(+), 75 deletions(-) diff --git a/.github/workflows/python-compatibility.yml b/.github/workflows/python-compatibility.yml index a60f8f46..f649456d 100644 --- a/.github/workflows/python-compatibility.yml +++ b/.github/workflows/python-compatibility.yml @@ -1,11 +1,11 @@ # Python Compatibility Testing Workflow # # Tests Python package build compatibility across: -# - Operating Systems: Ubuntu, macOS, Windows -# - Python Versions: 3.9, 3.10, 3.11, 3.12, 3.13 +# - Operating Systems: Ubuntu +# - Python Versions: 3.10 (floor), 3.14 (ceiling) # # Validates that the package can be built and installed correctly -# on all supported platforms and Python versions. +# on the supported Python versions. name: Python Compatibility Check @@ -34,8 +34,8 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest, macos-latest, windows-latest] - python: ['3.9', '3.10', '3.11', '3.12', '3.13'] + os: [ubuntu-latest] + python: ['3.10', '3.14'] task: - name: Build run: | @@ -48,10 +48,10 @@ jobs: twine check ./dist/* steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup Python - uses: actions/setup-python@v3 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python }} @@ -64,8 +64,7 @@ jobs: run: | echo "PYTHON_VERSION=$(python --version)" >> $GITHUB_ENV - - name: Test dependency wheels availability - Unix/Linux/macOS - if: runner.os != 'Windows' + - name: Test dependency wheels availability run: | python -m venv .venv-deps-test . .venv-deps-test/bin/activate @@ -79,66 +78,21 @@ jobs: rm -rf .venv-deps-test shell: bash - - name: Test dependency wheels availability - Windows - if: runner.os == 'Windows' - run: | - python -m venv .venv-deps-test - .venv-deps-test\Scripts\Activate.ps1 - # Try installing with wheel-only first to catch dependency conflicts early - pip install --only-binary=:all: -r requirements.txt - if ($LASTEXITCODE -ne 0) { - Write-Host "Warning: Some dependencies may not have wheels available" - Write-Host "Attempting installation with source packages allowed..." - pip install -r requirements.txt - } - deactivate - Remove-Item -Recurse -Force .venv-deps-test - shell: pwsh - - - name: Setup virtual environment - Unix/Linux/macOS - if: runner.os != 'Windows' + - name: Setup virtual environment run: | python -m venv .venv . .venv/bin/activate pip install -e .[dev] shell: bash - - name: Setup virtual environment - Windows - if: runner.os == 'Windows' - run: | - python -m venv .venv - .venv\Scripts\Activate.ps1 - pip install -e .[dev] - shell: pwsh - - - name: Show environment info - Unix/Linux/macOS - if: runner.os != 'Windows' + - name: Show environment info run: | . .venv/bin/activate which python python --version pip freeze - # Node.js version info - uncomment if you need to verify Node.js/npm/pnpm versions - # which node - # node --version - # npm --version - # pnpm --version shell: bash - - name: Show environment info - Windows - if: runner.os == 'Windows' - run: | - .venv\Scripts\Activate.ps1 - Get-Command python - python --version - pip freeze - # Node.js version info - uncomment if you need to verify Node.js/npm/pnpm versions - # Get-Command node - # node --version - # npm --version - # pnpm --version - shell: pwsh - # Web build steps - tests TypeScript/web components compilation and bundling # Uncomment if you need to verify that web components work with your Python package changes # - name: Build Web @@ -155,17 +109,8 @@ jobs: # run: | # pnpm test-aaz-emitter - - name: ${{ matrix.task.name }} - Unix/Linux/macOS - if: runner.os != 'Windows' + - name: ${{ matrix.task.name }} run: | . .venv/bin/activate ${{ matrix.task.run }} shell: bash - - - name: ${{ matrix.task.name }} - Windows - if: runner.os == 'Windows' - run: | - .venv\Scripts\Activate.ps1 - ${{ matrix.task.run }} - shell: pwsh - diff --git a/.gitignore b/.gitignore index 88402982..907f19a3 100644 --- a/.gitignore +++ b/.gitignore @@ -121,6 +121,7 @@ __pycache__/ venv/ +.venv*/ *.pyc diff --git a/HISTORY.rst b/HISTORY.rst index 11e6d06e..3bffd2d6 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -3,6 +3,12 @@ Release History =============== +4.5.4 +++++++ +* Add Python 3.14 support and unpin ``setuptools`` to allow versions compatible with newer Python releases (``setuptools>=78``). +* Drop Python 3.9 support (end-of-life since October 2025); ``python_requires`` is now ``>=3.10``. +* Refine the Python compatibility CI workflow: reduce the test matrix to ``ubuntu-latest`` with Python 3.10 (floor) and 3.14 (ceiling), and bump ``actions/checkout`` and ``actions/setup-python`` to current major versions. + 4.5.3 ++++++ * Improve spec module loading performance to reduce module loading time. (#536) diff --git a/README.md b/README.md index 4fafdc60..f36a984e 100644 --- a/README.md +++ b/README.md @@ -21,12 +21,12 @@ After clone you can add `upstream` for every repos in your local clone by using ### 2 Setup python #### 2.1 Install python -Please install python with version >= 3.9 and <= 3.13 in your local machine. +Please install python with version >= 3.10 and <= 3.14 in your local machine. - For windows: You can download and run full installer from [Python Download](https://www.python.org/downloads/). - For linux: You can install python from Package Manager or build a stable relase from source code -Check the version of python, make use it's not less than 3.9. +Check the version of python, make use it's not less than 3.10. - For windows: You can run: ```PowerShell diff --git a/docs/_config.yml b/docs/_config.yml index 62bc1556..bcbfcfd5 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -36,7 +36,7 @@ github: pypi: https://pypi.org/project/aaz-dev/ # TODO: get version number from github -version: v4.5.3 +version: v4.5.4 # Build settings theme: minima diff --git a/docs/pages/usage/setup_and_run.md b/docs/pages/usage/setup_and_run.md index d16791db..f1252007 100644 --- a/docs/pages/usage/setup_and_run.md +++ b/docs/pages/usage/setup_and_run.md @@ -17,7 +17,7 @@ weight: 100 ### Install python -This tool is compatible with python versions >=3.9 and <=3.13. You can use an existing python or install a new one by the following ways: +This tool is compatible with python versions >=3.10 and <=3.14. You can use an existing python or install a new one by the following ways: - For Windows users: You can download and run full installer from [Python Download](https://www.python.org/downloads/). - For Linux users: You can install python from Package Manager or build a stable release from source code diff --git a/requirements.txt b/requirements.txt index 42054e8f..5461733a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -11,7 +11,7 @@ Jinja2~=3.1.4 MarkupSafe>=2.1.5 jsonschema~=4.23.0 click~=8.1.2 -setuptools==70.0.0 +setuptools>=78 python-Levenshtein azure-mgmt-core azdev diff --git a/setup.py b/setup.py index 71adc6ca..a828882e 100644 --- a/setup.py +++ b/setup.py @@ -50,11 +50,11 @@ def fix_url_dependencies(req: str) -> str: "Environment :: Console", "License :: OSI Approved :: MIT License", "Natural Language :: English", - "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", - "Programming Language :: Python :: 3.13" + "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14" ], keywords="azure", url="https://github.com/Azure/aaz-dev-tools", @@ -70,7 +70,7 @@ def fix_url_dependencies(req: str) -> str: ), include_package_data=True, install_requires=read_requirements("requirements.txt"), - python_requires=">=3.9", + python_requires=">=3.10", entry_points={ "console_scripts": ["aaz-dev=aaz_dev.app.main:main"] }, diff --git a/version.py b/version.py index 378e3a63..4e8fca2b 100644 --- a/version.py +++ b/version.py @@ -1,5 +1,5 @@ -_MAJOR, _MINOR, _PATCH, _SUFFIX = ("4", "5", "3", "") +_MAJOR, _MINOR, _PATCH, _SUFFIX = ("4", "5", "4", "") # _PATCH: On main and in a nightly release the patch should be one ahead of the last released build. # _SUFFIX: This is mainly for nightly builds which have the suffix ".dev$DATE". See From 9d95bb3e76b1a5e82054904522c533e7b87c3093 Mon Sep 17 00:00:00 2001 From: aryasadeghi1 Date: Wed, 20 May 2026 17:24:44 +1000 Subject: [PATCH 2/2] fix: revert setuptools version to 70.0.0 and update HISTORY for Python 3.14 support --- HISTORY.rst | 2 +- requirements.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index 3bffd2d6..8cbedb9e 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -5,7 +5,7 @@ Release History 4.5.4 ++++++ -* Add Python 3.14 support and unpin ``setuptools`` to allow versions compatible with newer Python releases (``setuptools>=78``). +* Add Python 3.14 support. * Drop Python 3.9 support (end-of-life since October 2025); ``python_requires`` is now ``>=3.10``. * Refine the Python compatibility CI workflow: reduce the test matrix to ``ubuntu-latest`` with Python 3.10 (floor) and 3.14 (ceiling), and bump ``actions/checkout`` and ``actions/setup-python`` to current major versions. diff --git a/requirements.txt b/requirements.txt index 5461733a..42054e8f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -11,7 +11,7 @@ Jinja2~=3.1.4 MarkupSafe>=2.1.5 jsonschema~=4.23.0 click~=8.1.2 -setuptools>=78 +setuptools==70.0.0 python-Levenshtein azure-mgmt-core azdev