From fb6ab5fa6685c98433a9d558de2a3e76fbe54f83 Mon Sep 17 00:00:00 2001 From: Aarni Koskela Date: Sun, 1 Oct 2023 14:15:51 +0300 Subject: [PATCH] Renovate CI & tools (#1028) * Update ruff, run autofix * CI: Update action versions * CI: Unify workflow files * CI: Test on Python 3.12 too * CI: use Ubuntu 22.04 instead of 20.04 * CI: add publish step for version tags --- .github/workflows/build.yml | 27 ---------- .github/workflows/ci.yml | 100 ++++++++++++++++++++++++++++++++++++ .github/workflows/test.yml | 50 ------------------ .pre-commit-config.yaml | 2 +- scripts/generate_authors.py | 4 +- tox.ini | 7 ++- 6 files changed, 109 insertions(+), 81 deletions(-) delete mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/ci.yml delete mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index 05935074c..000000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,27 +0,0 @@ -name: CI -"on": - push: - branches: - - master - - '*-maint' - pull_request: - branches: - - master - - '*-maint' -jobs: - Build: - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-python@v4 - with: - python-version: "3.10" - cache: "pip" - cache-dependency-path: "**/setup.py" - - run: pip install build -e . - - run: make import-cldr - - run: python -m build - - uses: actions/upload-artifact@v3 - with: - name: dist - path: dist diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 000000000..2c0eaafdf --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,100 @@ +name: CI + +on: + push: + branches: + - master + - '*-maint' + tags: + - 'v*' + pull_request: + branches: + - master + - '*-maint' + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: pre-commit/action@v3.0.0 + test: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: + - "ubuntu-22.04" + - "windows-2022" + - "macos-11" + python-version: + - "3.7" + - "3.8" + - "3.9" + - "3.10" + - "3.11" + - "pypy-3.7" + - "3.12" + env: + BABEL_CLDR_NO_DOWNLOAD_PROGRESS: "1" + BABEL_CLDR_QUIET: "1" + steps: + - uses: actions/checkout@v4 + - uses: actions/cache@v3 + with: + path: cldr + key: cldr-${{ hashFiles('scripts/*cldr*') }} + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + allow-prereleases: true # For Python 3.12 + cache: "pip" + cache-dependency-path: "**/setup.py" + - name: Install dependencies + run: | + python -m pip install --upgrade pip setuptools wheel + python -m pip install 'tox~=4.0' 'tox-gh-actions~=3.0' + - name: Run test via Tox + run: tox --skip-missing-interpreters + env: + COVERAGE_XML_PATH: ${{ runner.temp }} + - uses: codecov/codecov-action@v3 + with: + directory: ${{ runner.temp }} + build: + runs-on: ubuntu-22.04 + needs: lint + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v4 + with: + python-version: "3.11" + cache: "pip" + cache-dependency-path: "**/setup.py" + - run: pip install build -e . + - run: make import-cldr + - run: python -m build + - uses: actions/upload-artifact@v3 + with: + name: dist + path: dist + publish: + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags') + needs: + - build + runs-on: ubuntu-latest + environment: + name: release + url: https://pypi.org/p/babel/ + permissions: + id-token: write + steps: + - uses: actions/download-artifact@v3 + with: + name: dist + path: dist/ + - name: Publish package distributions to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + verbose: true + print-hash: true diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index a35a1b4f3..000000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,50 +0,0 @@ -name: Test - -on: - push: - branches: - - master - - '*-maint' - pull_request: - branches: - - master - - '*-maint' - -jobs: - lint: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: pre-commit/action@v3.0.0 - test: - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: ["ubuntu-20.04", "windows-2022", "macos-11"] - python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "pypy-3.7"] - env: - BABEL_CLDR_NO_DOWNLOAD_PROGRESS: "1" - BABEL_CLDR_QUIET: "1" - steps: - - uses: actions/checkout@v3 - - uses: actions/cache@v3 - with: - path: cldr - key: cldr-${{ hashFiles('scripts/*cldr*') }} - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4 - with: - python-version: ${{ matrix.python-version }} - cache: "pip" - cache-dependency-path: "**/setup.py" - - name: Install dependencies - run: | - python -m pip install --upgrade pip setuptools wheel - python -m pip install 'tox~=4.0' 'tox-gh-actions~=3.0' - - name: Run test via Tox - run: tox --skip-missing-interpreters - env: - COVERAGE_XML_PATH: ${{ runner.temp }} - - uses: codecov/codecov-action@v3 - with: - directory: ${{ runner.temp }} diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 1b5cf5a0a..a96908e97 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.0.275 + rev: v0.0.291 hooks: - id: ruff args: diff --git a/scripts/generate_authors.py b/scripts/generate_authors.py index 64c0af82e..a5443b91e 100644 --- a/scripts/generate_authors.py +++ b/scripts/generate_authors.py @@ -14,7 +14,7 @@ def get_sorted_authors_list(): def get_authors_file_content(): author_list = "\n".join(f"- {a}" for a in get_sorted_authors_list()) - return ''' + return f''' Babel is written and maintained by the Babel team and various contributors: {author_list} @@ -26,7 +26,7 @@ def get_authors_file_content(): In addition to the regular contributions Babel includes a fork of Lennart Regebro's tzlocal that originally was licensed under the CC0 license. The original copyright of that project is "Copyright 2013 by Lennart Regebro". -'''.format(author_list=author_list) +''' def write_authors_file(): diff --git a/tox.ini b/tox.ini index 11cca0c6e..c2d235fb5 100644 --- a/tox.ini +++ b/tox.ini @@ -1,6 +1,6 @@ [tox] envlist = - py{37,38,39,310,311} + py{37,38,39,310,311,312} pypy3 py{37,38}-pytz @@ -8,6 +8,10 @@ envlist = extras = dev deps = + # including setuptools here for CI; + # see https://github.com/python/cpython/issues/95299 + # see https://github.com/python-babel/babel/issues/1005#issuecomment-1728105742 + setuptools;python_version>="3.12" backports.zoneinfo;python_version<"3.9" tzdata;sys_platform == 'win32' pytz: pytz @@ -28,3 +32,4 @@ python = 3.9: py39 3.10: py310 3.11: py311 + 3.12: py312