summaryrefslogtreecommitdiffstats
path: root/.github
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2023-12-17 14:36:26 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2023-12-17 14:36:33 +0000
commit665666d6f4213da8db57ebb480947b7caf1fe382 (patch)
tree0cac5d322dfe861a6de62b04fb916cef6dbe4510 /.github
parentReleasing debian version 3.0.0~a1-2. (diff)
downloadpendulum-665666d6f4213da8db57ebb480947b7caf1fe382.tar.xz
pendulum-665666d6f4213da8db57ebb480947b7caf1fe382.zip
Merging upstream version 3.0.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '.github')
-rw-r--r--.github/workflows/codspeed.yml52
-rw-r--r--.github/workflows/release.yml98
-rw-r--r--.github/workflows/tests.yml31
3 files changed, 162 insertions, 19 deletions
diff --git a/.github/workflows/codspeed.yml b/.github/workflows/codspeed.yml
new file mode 100644
index 0000000..fcc7ed3
--- /dev/null
+++ b/.github/workflows/codspeed.yml
@@ -0,0 +1,52 @@
+name: codspeed
+
+on:
+ push:
+ branches:
+ - "master"
+ pull_request:
+ # `workflow_dispatch` allows CodSpeed to trigger backtest
+ # performance analysis in order to generate initial data.
+ workflow_dispatch:
+
+jobs:
+ benchmarks:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions/setup-python@v3
+ with:
+ python-version: "3.9"
+
+ - name: Get full Python version
+ id: full-python-version
+ run: |
+ echo ::set-output name=version::$(python -c "import sys; print('-'.join(str(v) for v in sys.version_info))")
+
+ - name: Install poetry
+ run: |
+ curl -fsS https://install.python-poetry.org | python - -y
+
+ - name: Update PATH
+ if: ${{ matrix.os != 'Windows' }}
+ run: echo "$HOME/.local/bin" >> $GITHUB_PATH
+
+ - name: Configure poetry
+ run: poetry config virtualenvs.create false
+
+ - name: Install dependencies
+ run: poetry install --only test --only benchmark --only build -vvv --no-root
+
+ - name: Install project
+ run: poetry install --only test --only benchmark --only build -vvv --no-root
+
+ - name: Install pendulum and check extensions
+ run: |
+ poetry run pip install -e . -vvv
+ python -c 'import pendulum._pendulum'
+
+ - name: Run benchmarks
+ uses: CodSpeedHQ/action@v1
+ with:
+ token: ${{ secrets.CODSPEED_TOKEN }}
+ run: pytest tests/ --codspeed
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 59062ae..5821407 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -4,34 +4,103 @@ on:
push:
tags:
- '*.*.*'
+ workflow_dispatch:
jobs:
-
build:
- name: Build wheels on ${{ matrix.os }}
- runs-on: ${{ matrix.os }}-latest
+ name: Build on ${{ matrix.platform || matrix.os }} (${{ matrix.target }} - ${{ matrix.manylinux || 'auto' }})
strategy:
+ fail-fast: false
matrix:
- os: [ ubuntu, windows, macos ]
+ os: [ubuntu, macos, windows]
+ target: [x86_64, aarch64]
+ manylinux: [auto]
+ include:
+ - os: ubuntu
+ platform: linux
+ - os: windows
+ ls: dir
+ interpreter: 3.7 3.8 3.9 3.10 3.11 3.12 pypy3.8 pypy3.9 pypy3.10
+ - os: windows
+ ls: dir
+ target: aarch64
+ interpreter: 3.11 3.12
+ - os: macos
+ target: aarch64
+ interpreter: 3.7 3.8 3.9 3.10 3.11 3.12 pypy3.8 pypy3.9 pypy3.10
+ - os: ubuntu
+ platform: linux
+ target: aarch64
+ # mimalloc not supported on manylinux2014 cross-compile container
+ extra-build-args: --no-default-features
+ # musllinux
+ - os: ubuntu
+ platform: linux
+ target: x86_64
+ manylinux: musllinux_1_1
+ - os: ubuntu
+ platform: linux
+ target: aarch64
+ manylinux: musllinux_1_1
+ - os: ubuntu
+ platform: linux
+ target: ppc64le
+ interpreter: 3.7 3.8 3.9 3.10 3.11 3.12
+ # mimalloc not supported on manylinux2014 cross-compile container
+ extra-build-args: --no-default-features
+ - os: ubuntu
+ platform: linux
+ target: s390x
+ interpreter: 3.7 3.8 3.9 3.10 3.11 3.12
+ # mimalloc not supported on manylinux2014 cross-compile container
+ extra-build-args: --no-default-features
+ runs-on: ${{ matrix.os }}-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- - name: Build wheels
- uses: pypa/cibuildwheel@v2.10.1
- env:
- CIBW_PROJECT_REQUIRES_PYTHON: ">=3.7"
+ - name: set up python
+ uses: actions/setup-python@v4
with:
- package-dir: .
- output-dir: dist
+ python-version: '3.11'
+ architecture: ${{ matrix.python-architecture || 'x64' }}
+
+ - name: build wheels
+ uses: PyO3/maturin-action@v1
+ with:
+ target: ${{ matrix.target }}
+ manylinux: ${{ matrix.manylinux || 'auto' }}
+ container: ${{ matrix.container }}
+ args: --release --out dist --interpreter ${{ matrix.interpreter || '3.7 3.8 3.9 3.10 3.11 3.12 pypy3.7 pypy3.8 pypy3.9 pypy3.10' }} ${{ matrix.extra-build-args }}
+ rust-toolchain: stable
+ docker-options: -e CI
+
+ - run: ${{ matrix.ls || 'ls -lh' }} dist/
- uses: actions/upload-artifact@v3
with:
name: dist
- path: ./dist/*
+ path: dist
+
+ build_sdist:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - name: Build sdist
+ uses: PyO3/maturin-action@v1
+ with:
+ command: sdist
+ args: --out dist
+ - name: Upload sdist
+ uses: actions/upload-artifact@v3
+ with:
+ name: dist
+ path: dist
+
Release:
- needs: [ build ]
+ needs: [ build, build_sdist ]
+ if: success() && startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
steps:
@@ -51,9 +120,6 @@ jobs:
- name: Update PATH
run: echo "$HOME/.local/bin" >> $GITHUB_PATH
- - name: Build sdist
- run: poetry build --format sdist
-
- name: Check distributions
run: |
ls -la dist
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index 341859e..077a9c7 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -13,13 +13,27 @@ on:
- '**'
jobs:
+ Linting:
+ name: Linting
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions/setup-python@v4
+ with:
+ python-version: "3.11"
+ - name: "Install pre-commit"
+ run: pip install pre-commit
+ - name: "Install Rust toolchain"
+ run: rustup component add rustfmt clippy
+ - run: pre-commit run --all-files
+
Tests:
name: ${{ matrix.os }} / ${{ matrix.python-version }}
runs-on: ${{ matrix.os }}-latest
strategy:
matrix:
os: [Ubuntu, MacOS, Windows]
- python-version: [3.7, 3.8, 3.9, "3.10"]
+ python-version: [3.8, 3.9, "3.10", "3.11", "3.12"]
defaults:
run:
shell: bash
@@ -31,6 +45,7 @@ jobs:
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
+ allow-prereleases: true
- name: Get full Python version
id: full-python-version
@@ -64,8 +79,18 @@ jobs:
if: steps.cache.outputs.cache-hit == 'true' && matrix.os != 'MacOS'
run: timeout 10s poetry run pip --version || rm -rf .venv
- - name: Install dependencies
- run: poetry install --only main --only test -vvv
+ - name: Install runtime, testing, and typing dependencies
+ run: poetry install --only main --only test --only typing --only build --no-root -vvv
+
+ - name: Install project
+ run: poetry run maturin develop
+
+ - name: Run type checking
+ run: poetry run mypy
+
+ - name: Uninstall typing dependencies
+ # This ensures pendulum runs without typing_extensions installed
+ run: poetry install --only main --only test --only build --sync --no-root -vvv
- name: Test Pure Python
run: |