diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 95702c1..6a8673e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -22,7 +22,7 @@ jobs: strategy: matrix: os: [ubuntu-latest, macos-latest, windows-latest] - python: ['3.9', '3.10', '3.11', '3.12', '3.13'] + python: ['3.11', '3.12', '3.13', '3.14'] fail-fast: false runs-on: ${{ matrix.os }} steps: diff --git a/.github/workflows/master_bootstrap-flask-example.yml b/.github/workflows/master_bootstrap-flask-example.yml index 7304e28..04a9800 100644 --- a/.github/workflows/master_bootstrap-flask-example.yml +++ b/.github/workflows/master_bootstrap-flask-example.yml @@ -1,65 +1,65 @@ -# Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy -# More GitHub Actions for Azure: https://github.com/Azure/actions -# More info on Python, GitHub Actions, and Azure App Service: https://aka.ms/python-webapps-actions - -name: Build and deploy Python app to Azure Web App - bootstrap-flask-example - -on: - push: - branches: - - main - workflow_dispatch: - -jobs: - build: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - - name: Set up Python version - uses: actions/setup-python@v1 - with: - python-version: '3.11' - - - name: Create and start virtual environment - run: | - python -m venv venv - source venv/bin/activate - - - name: Install dependencies - run: | - pip install -r examples/requirements.txt - cp examples/requirements.txt examples/bootstrap5/requirements.txt - - # Optional: Add step to run tests here (PyTest, Django test suites, etc.) - - - name: Upload artifact for deployment jobs - uses: actions/upload-artifact@v4.4.0 - with: - name: python-app - path: | - ./examples/bootstrap5/ - !venv/ - - deploy: - runs-on: ubuntu-latest - needs: build - environment: - name: 'Production' - url: ${{ steps.deploy-to-webapp.outputs.webapp-url }} - - steps: - - name: Download artifact from build job - uses: actions/download-artifact@v4.1.7 - with: - name: python-app - path: . - - - name: 'Deploy to Azure Web App' - uses: azure/webapps-deploy@v2 - id: deploy-to-webapp - with: - app-name: 'bootstrap-flask-example' - slot-name: 'Production' - publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_EA24F62410C243EEA4968476E7017059 }} +# Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy +# More GitHub Actions for Azure: https://github.com/Azure/actions +# More info on Python, GitHub Actions, and Azure App Service: https://aka.ms/python-webapps-actions + +name: Build and deploy Python app to Azure Web App - bootstrap-flask-example + +on: + push: + branches: + - main + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Set up Python version + uses: actions/setup-python@v1 + with: + python-version: '3.14' + + - name: Create and start virtual environment + run: | + python -m venv venv + source venv/bin/activate + + - name: Install dependencies + run: | + pip install -r examples/requirements.txt + cp examples/requirements.txt examples/bootstrap5/requirements.txt + + # Optional: Add step to run tests here (PyTest, Django test suites, etc.) + + - name: Upload artifact for deployment jobs + uses: actions/upload-artifact@v4.4.0 + with: + name: python-app + path: | + ./examples/bootstrap5/ + !venv/ + + deploy: + runs-on: ubuntu-latest + needs: build + environment: + name: 'Production' + url: ${{ steps.deploy-to-webapp.outputs.webapp-url }} + + steps: + - name: Download artifact from build job + uses: actions/download-artifact@v4.1.7 + with: + name: python-app + path: . + + - name: 'Deploy to Azure Web App' + uses: azure/webapps-deploy@v2 + id: deploy-to-webapp + with: + app-name: 'bootstrap-flask-example' + slot-name: 'Production' + publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_EA24F62410C243EEA4968476E7017059 }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1375607..926cab8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -12,7 +12,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: - python-version: '3.12' + python-version: '3.14' cache: pip cache-dependency-path: requirements*/*.txt - run: pip install setuptools wheel build diff --git a/CHANGES.rst b/CHANGES.rst index b1ff3f4..fff67ee 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,6 +1,8 @@ Changelog ========= +- Drop Python 3.9 and 3.10 support. +- Upgrade dependencies. - Upgrade license format in pyproject.toml. - Upgrade to Bootstrap 5.3.6 diff --git a/pyproject.toml b/pyproject.toml index b7090eb..327ef2b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,11 +12,10 @@ classifiers = [ 'Operating System :: OS Independent', 'Programming Language :: Python', 'Programming Language :: Python :: 3', - '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.14', 'Framework :: Flask', 'Topic :: Internet :: WWW/HTTP :: Dynamic Content', 'Topic :: Software Development :: Libraries :: Python Modules', diff --git a/requirements/build.txt b/requirements/build.txt index 32a2262..f5018b4 100644 --- a/requirements/build.txt +++ b/requirements/build.txt @@ -15,7 +15,7 @@ pyproject-hooks==1.2.0 # via build tomli==2.2.1 # via build -wheel==0.45.1 +wheel==0.46.2 # via -r requirements/build.in zipp==3.20.2 # via importlib-metadata diff --git a/requirements/dev.txt b/requirements/dev.txt index 0c0bd8c..8fc4bfb 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -18,7 +18,7 @@ colorama==0.4.6 # via tox distlib==0.3.9 # via virtualenv -filelock==3.16.1 +filelock==3.20.3 # via # tox # virtualenv @@ -40,9 +40,9 @@ toposort==1.10 # via pip-compile-multi tox==4.24.2 # via -r requirements/dev.in -virtualenv==20.29.3 +virtualenv==20.36.1 # via tox -wheel==0.45.1 +wheel==0.46.2 # via pip-tools # The following packages are considered to be unsafe in a requirements file: diff --git a/requirements/docs.txt b/requirements/docs.txt index 2a7bec8..8409638 100644 --- a/requirements/docs.txt +++ b/requirements/docs.txt @@ -35,7 +35,7 @@ pygments==2.19.1 # via sphinx pytz==2025.1 # via babel -requests==2.32.3 +requests==2.32.4 # via sphinx snowballstemmer==2.2.0 # via sphinx @@ -61,7 +61,7 @@ sphinxcontrib-qthelp==1.0.3 # via sphinx sphinxcontrib-serializinghtml==1.1.5 # via sphinx -urllib3==2.2.3 +urllib3==2.6.3 # via requests zipp==3.20.2 # via importlib-metadata diff --git a/requirements/tests.txt b/requirements/tests.txt index b863001..0a3d512 100644 --- a/requirements/tests.txt +++ b/requirements/tests.txt @@ -7,7 +7,7 @@ # beautifulsoup4==4.13.4 # via -r requirements/tests.in -blinker==1.8.2 +blinker==1.9.0 # via flask click==8.1.8 # via flask @@ -15,7 +15,7 @@ coverage[toml]==7.6.1 # via pytest-cov exceptiongroup==1.2.2 # via pytest -flask==3.0.3 +flask==3.1.3 # via # flask-sqlalchemy # flask-wtf @@ -23,7 +23,7 @@ flask-sqlalchemy==3.1.1 # via -r requirements/tests.in flask-wtf==1.2.1 # via -r requirements/tests.in -greenlet==3.1.1 +greenlet==3.5.5 # via sqlalchemy importlib-metadata==8.5.0 # via flask @@ -62,7 +62,7 @@ typing-extensions==4.12.2 # via # beautifulsoup4 # sqlalchemy -werkzeug==3.0.6 +werkzeug==3.1.5 # via flask wtforms==3.1.2 # via flask-wtf diff --git a/tox.ini b/tox.ini index ce1ff93..0adaa10 100644 --- a/tox.ini +++ b/tox.ini @@ -1,15 +1,14 @@ [tox] isolated_build = True -envlist = py39, py310, py311, py312, py313, flake8, docs +envlist = py311, py312, py313, py314, flake8, docs skip_missing_interpreters = true [gh-actions] python = - 3.9: py39 - 3.10: py310 3.11: py311 3.12: py312 3.13: py313 + 3.14: py314 [testenv] deps =