Optimise get_timestep
to use a cached timestep to prevent having to malloc data each step
#634
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# this file includes 4 stages | |
# 1. pre-commit - runs pre-commit using `.pre-commit-config.yaml` | |
# 2. build-scratch - (if pre-commit pass) then we build the project from scratch (single python versions) and pytest | |
# 3. build-wheels - (if pre-commit pass) then we build all the wheels for all valid versions | |
# 4. test-wheels - (if build-scratch and build-wheel passes) then we install wheel and run pytest for all python versions | |
name: CI | |
on: | |
workflow_dispatch: | |
inputs: | |
debug_enabled: | |
type: boolean | |
description: 'Run the build with tmate debugging enabled (https://github.com/marketplace/actions/debugging-with-tmate)' | |
required: false | |
default: false | |
push: | |
paths-ignore: | |
- "docs/**" | |
pull_request: | |
branches: | |
- "*" | |
jobs: | |
pre-commit: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.12' | |
- uses: pre-commit/action@v3.0.1 | |
build-scratch: | |
name: "${{ matrix.runs-on }} • py${{ matrix.python }}" | |
needs: pre-commit | |
defaults: | |
run: | |
shell: bash | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
# To minimise the computational resources, we only use a single python version and the final test-wheels for all python versions | |
- runs-on: ubuntu-latest | |
python: '3.12' | |
triplet: x64-linux-mixed | |
- runs-on: macos-13 | |
python: '3.12' | |
triplet: x64-osx-mixed | |
- runs-on: windows-latest | |
python: '3.12' | |
triplet: x64-windows | |
env: | |
VCPKG_DEFAULT_TRIPLET: ${{ matrix.triplet }} | |
runs-on: ${{ matrix.runs-on }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python }} | |
- name: Download and unpack ROMs | |
run: ./scripts/download_unpack_roms.sh | |
- name: Build | |
run: python -m pip install --verbose .[test] | |
- name: Test | |
run: python -m pytest | |
build-wheels: | |
name: "${{ matrix.runs-on }} • ${{ matrix.arch }}" | |
needs: pre-commit | |
defaults: | |
run: | |
shell: bash | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- runs-on: ubuntu-latest | |
arch: x86_64 | |
- runs-on: ubuntu-24.04-arm | |
arch: aarch64 | |
- runs-on: windows-latest | |
arch: AMD64 | |
- runs-on: macos-13 | |
arch: x86_64 | |
- runs-on: macos-13 | |
arch: arm64 | |
runs-on: ${{ matrix.runs-on }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Docker Buildx | |
if: runner.os == 'linux' | |
id: buildx | |
uses: docker/setup-buildx-action@v3 | |
with: | |
install: true | |
- name: Build Docker image with vcpkg | |
if: runner.os == 'linux' | |
# using build-push-action (without push) to make use of cache arguments | |
uses: docker/build-push-action@v6 | |
with: | |
context: . | |
file: ".github/docker/manylinux-${{ matrix.arch }}-vcpkg.Dockerfile" | |
tags: "manylinux-${{ matrix.arch }}-vcpkg:latest" | |
push: false | |
load: true | |
- name: Download and unpack ROMs | |
run: ./scripts/download_unpack_roms.sh | |
- name: Build wheels | |
uses: pypa/cibuildwheel@v2.23.2 | |
env: | |
CIBW_ARCHS: "${{ matrix.arch }}" | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-${{ runner.os }}-${{ matrix.arch }} | |
path: ./wheelhouse/*.whl | |
test-wheels: | |
name: Test wheels | |
needs: [build-wheels, build-scratch] | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
# example wheel names (if the wheel names change, look at the `ls wheels/` for the new names) | |
# ale_py-0.x.x-cp310-cp310-macosx_10_15_x86_64.whl | |
# ale_py-0.x.x-cp310-cp310-macosx_11_0_arm64.whl | |
# ale_py-0.x.x-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | |
# ale_py-0.x.x-cp310-cp310-win_amd64.whl | |
- runs-on: ubuntu-latest | |
python: '3.9' | |
wheel-name: 'cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64' | |
arch: 'x86_64' | |
- runs-on: ubuntu-latest | |
python: '3.10' | |
wheel-name: 'cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64' | |
arch: 'x86_64' | |
- runs-on: ubuntu-latest | |
python: '3.11' | |
wheel-name: 'cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64' | |
arch: 'x86_64' | |
- runs-on: ubuntu-latest | |
python: '3.12' | |
wheel-name: 'cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64' | |
arch: 'x86_64' | |
- runs-on: ubuntu-latest | |
python: '3.13' | |
wheel-name: 'cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64' | |
arch: 'x86_64' | |
- runs-on: ubuntu-24.04-arm | |
python: '3.9' | |
wheel-name: 'cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64' | |
arch: 'aarch64' | |
- runs-on: ubuntu-24.04-arm | |
python: '3.10' | |
wheel-name: 'cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64' | |
arch: 'aarch64' | |
- runs-on: ubuntu-24.04-arm | |
python: '3.11' | |
wheel-name: 'cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64' | |
arch: 'aarch64' | |
- runs-on: ubuntu-24.04-arm | |
python: '3.12' | |
wheel-name: 'cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64' | |
arch: 'aarch64' | |
- runs-on: ubuntu-24.04-arm | |
python: '3.13' | |
wheel-name: 'cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64' | |
arch: 'aarch64' | |
- runs-on: windows-latest | |
python: '3.9' | |
wheel-name: 'cp39-cp39-win_amd64' | |
arch: AMD64 | |
- runs-on: windows-latest | |
python: '3.10' | |
wheel-name: 'cp310-cp310-win_amd64' | |
arch: AMD64 | |
- runs-on: windows-latest | |
python: '3.11' | |
wheel-name: 'cp311-cp311-win_amd64' | |
arch: AMD64 | |
- runs-on: windows-latest | |
python: '3.12' | |
wheel-name: 'cp312-cp312-win_amd64' | |
arch: AMD64 | |
- runs-on: windows-latest | |
python: '3.13' | |
wheel-name: 'cp313-cp313-win_amd64' | |
arch: AMD64 | |
- runs-on: macos-13 | |
python: '3.9' | |
wheel-name: 'cp39-cp39-macosx_13_0_x86_64' | |
arch: x86_64 | |
- runs-on: macos-13 | |
python: '3.10' | |
wheel-name: 'cp310-cp310-macosx_13_0_x86_64' | |
arch: x86_64 | |
- runs-on: macos-13 | |
python: '3.11' | |
wheel-name: 'cp311-cp311-macosx_13_0_x86_64' | |
arch: x86_64 | |
- runs-on: macos-13 | |
python: '3.12' | |
wheel-name: 'cp312-cp312-macosx_13_0_x86_64' | |
arch: x86_64 | |
- runs-on: macos-13 | |
python: '3.13' | |
wheel-name: 'cp313-cp313-macosx_13_0_x86_64' | |
arch: x86_64 | |
- runs-on: macos-14 | |
python: '3.9' | |
wheel-name: 'cp39-cp39-macosx_13_0_arm64' | |
arch: arm64 | |
- runs-on: macos-14 | |
python: '3.10' | |
wheel-name: 'cp310-cp310-macosx_13_0_arm64' | |
arch: arm64 | |
- runs-on: macos-14 | |
python: '3.11' | |
wheel-name: 'cp311-cp311-macosx_13_0_arm64' | |
arch: arm64 | |
- runs-on: macos-14 | |
python: '3.12' | |
wheel-name: 'cp312-cp312-macosx_13_0_arm64' | |
arch: arm64 | |
- runs-on: macos-14 | |
python: '3.13' | |
wheel-name: 'cp313-cp313-macosx_13_0_arm64' | |
arch: arm64 | |
runs-on: ${{ matrix.runs-on }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python }} | |
- uses: actions/download-artifact@v4 | |
with: | |
name: wheels-${{ runner.os }}-${{ matrix.arch }} | |
- run: ls | |
- name: Install ALE wheel | |
# wildcarding doesn't work for some reason, therefore, update the project version here | |
run: python -m pip install "ale_py-0.11.1-${{ matrix.wheel-name }}.whl[test]" | |
- name: Test | |
run: python -m pytest |