Skip to content

Closes #5470: fix attach_all docstring formatting (#5471) #13017

Closes #5470: fix attach_all docstring formatting (#5471)

Closes #5470: fix attach_all docstring formatting (#5471) #13017

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
merge_group:
workflow_dispatch:
env:
ARKOUDA_QUICK_COMPILE: true
ARKOUDA_SKIP_CHECK_DEPS: true
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Install dependencies
run: |
python -m pip install --upgrade pip
- name: Check for tabs
run: |
! git --no-pager grep -n $'\t' -- '*.chpl'
- name: Run doc-example check
run: make check-doc-examples
chpl-lint:
runs-on: ubuntu-latest
strategy:
matrix:
chpl-version: ['2.7.0']
container:
image: ghcr.io/bears-r-us/ubuntu-with-arkouda-deps-chpl-${{ matrix.chpl-version }}:latest
credentials:
username: ${{ github.actor }}
password: ${{ secrets.github_token }}
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set Python version to 3.13
run: |
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.13 1
- name: Ensure ignore file exists
# .chplcheckignore should live at your repo root
run: |
if [ ! -f .chplcheckignore ]; then
echo "# add paths/globs to ignore, e.g. src/generated/*" > .chplcheckignore
fi
- name: Run chplcheck (respecting .chplcheckignore)
run: |
make chplcheck
ruff-format:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Python
uses: actions/setup-python@v5
with:
python-version: "3.13"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install ruff==0.11.2
# Update output format to enable automatic inline annotations.
- name: ruff version
run: |
ruff --version
- name: Run Ruff
run: ruff format --check --diff
mypy:
runs-on: ubuntu-latest
container:
image: ghcr.io/bears-r-us/ubuntu-with-arkouda-deps-chpl-2.7.0:latest
credentials:
username: ${{ github.actor }}
password: ${{ secrets.github_token }}
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set Python version to 3.13
run: |
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.13 1
- name: Install dependencies
run: |
python3 -m ensurepip --default-pip
python3 -m pip install -e .[dev]
- name: check mypy version
run: |
mypy --version
- name: Arkouda mypy
run: |
python3 -m mypy arkouda
docstr-cov:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with: { python-version: '3.x' }
- name: Install dependencies
run: pip install docstr-coverage
- name: Run docstring coverage
run: |
mkdir -p docs
make docstr-coverage
flake8:
runs-on: ubuntu-latest
container:
image: ghcr.io/bears-r-us/ubuntu-with-arkouda-deps-chpl-2.7.0:latest
credentials:
username: ${{ github.actor }}
password: ${{ secrets.github_token }}
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set Python version to 3.13
run: |
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.13 1
- name: Install Dependencies
uses: nick-fields/retry@v2
with:
timeout_seconds: 1200 # or use timeout_minutes
max_attempts: 2
retry_wait_seconds: 60
retry_on: error
command: |
python3 -m ensurepip --default-pip
python -m pip install --upgrade pip
pip install flake8 pydoclint[flake8]==0.6.10
- name: flake8 version
run: |
python3 -m ensurepip --default-pip
flake8 --version
- name: Arkouda flake8
run: |
flake8 --config .flake8 .
arkouda_python_portability:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.10', '3.11', '3.12', '3.13']
env:
CHPL_HOME: /opt/chapel-2.7.0
container:
image: ghcr.io/bears-r-us/ubuntu-with-arkouda-deps-chpl-2.7.0:latest
credentials:
username: ${{ github.actor }}
password: ${{ secrets.github_token }}
steps:
- name: Checkout Repository
uses: actions/checkout@v4
# Check Python version
- name: Set python version
run: |
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python${{ matrix.python-version }} 1
- name: Check python version
run: |
python3 --version
- name: Install dependencies
uses: nick-fields/retry@v2
with:
timeout_seconds: 1200 # or use timeout_minutes
max_attempts: 2
retry_wait_seconds: 60
retry_on: error
command: |
python3 -m ensurepip --default-pip
echo "\$(eval \$(call add-path,/usr/lib/x86_64-linux-gnu/hdf5/serial/))" >> Makefile.paths
echo "\$(eval \$(call add-path,$DEP_INSTALL_DIR/arrow-install/))" >> Makefile.paths
echo "\$(eval \$(call add-path,$DEP_INSTALL_DIR/libiconv-install/))" >> Makefile.paths
- name: Build/Install Arkouda
run: |
make
python3 -m pip install .[dev]
- name: pip list
run: |
python3 -m pip list
- name: Arkouda unit tests
run: |
make test-python size=100
arkouda_makefile_almalinux:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.13']
container:
image: ghcr.io/bears-r-us/almalinux-with-arkouda-deps:latest
credentials:
username: ${{ github.actor }}
password: ${{ secrets.github_token }}
steps:
- name: Checkout Repository
uses: actions/checkout@v4
# Install dependencies to build Python from source
- name: Install dependencies
run: |
dnf update -y
dnf install -y zlib-devel gcc gcc-c++ make zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl openssl-devel libffi-devel xz-devel zlib-devel
# TODO: why does this need to build its own Python when the container has its own?
# almalinux's python is old, so we build from source. But can we move this into the container build?
# Download and install Python from source (updated URL for Python 3.13)
- name: Download Python ${matrix.python-version} source
run: |
curl -O https://www.python.org/ftp/python/${{ matrix.python-version }}.0/Python-${{ matrix.python-version }}.0.tgz
file Python-${{ matrix.python-version }}.0.tgz # Check the file type
- name: Extract Python ${matrix.python-version} source
run: |
tar -xvf Python-${{ matrix.python-version }}.0.tgz
cd Python-${{ matrix.python-version }}.0 && ./configure --enable-optimizations && make -j$(nproc) && make altinstall && cd ..
update-alternatives --install /usr/bin/python3 python3 /usr/local/bin/python${{ matrix.python-version }} 1
# Install pip for Python from the get-pip.py script
- name: Install pip for Python ${{ matrix.python-version }}
run: |
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py && python${{ matrix.python-version }} get-pip.py
- name: Check python version
run: |
python3 --version
- name: Make install-arrow
uses: nick-fields/retry@v2
with:
timeout_seconds: 1200 # or use timeout_minutes
max_attempts: 2
retry_wait_seconds: 60
retry_on: error
command: |
make install-arrow DEP_BUILD_DIR=/dep/build
- name: Make install-zmq
uses: nick-fields/retry@v2
with:
timeout_seconds: 1200 # or use timeout_minutes
max_attempts: 2
retry_wait_seconds: 60
retry_on: error
command: |
make install-zmq DEP_BUILD_DIR=/dep/build
- name: Make install-iconv
uses: nick-fields/retry@v2
with:
timeout_seconds: 1200 # or use timeout_minutes
max_attempts: 2
retry_wait_seconds: 60
retry_on: error
command: |
make install-iconv DEP_BUILD_DIR=/dep/build
- name: Make install-idn2
uses: nick-fields/retry@v2
with:
timeout_seconds: 1200 # or use timeout_minutes
max_attempts: 2
retry_wait_seconds: 60
retry_on: error
command: |
make install-idn2 DEP_BUILD_DIR=/dep/build
- name: Make install-blosc
uses: nick-fields/retry@v2
with:
timeout_seconds: 1200 # or use timeout_minutes
max_attempts: 2
retry_wait_seconds: 60
retry_on: error
command: |
make install-blosc DEP_BUILD_DIR=/dep/build
- name: Make install-hdf5
uses: nick-fields/retry@v2
with:
timeout_seconds: 1200 # or use timeout_minutes
max_attempts: 2
retry_wait_seconds: 60
retry_on: error
command: |
make install-hdf5 DEP_BUILD_DIR=/dep/build
- name: Make install-pytables
uses: nick-fields/retry@v2
with:
timeout_seconds: 1200 # or use timeout_minutes
max_attempts: 2
retry_wait_seconds: 60
retry_on: error
command: |
HDF5_DIR=$(pwd)/dep/hdf5-install/ make install-pytables
arkouda_makefile:
runs-on: ubuntu-latest
strategy:
matrix:
chpl-version: ['2.7.0']
container:
image: ghcr.io/bears-r-us/ubuntu-with-arkouda-deps-chpl-${{ matrix.chpl-version }}:latest
credentials:
username: ${{ github.actor }}
password: ${{ secrets.github_token }}
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set Python version to 3.13
run: |
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.13 1
python3 -m ensurepip --default-pip
- name: Check python version
run: |
python3 --version
- name: Make install-arrow-quick
uses: nick-fields/retry@v2
with:
timeout_seconds: 1200 # or use timeout_minutes
max_attempts: 2
retry_wait_seconds: 60
retry_on: error
command: |
make install-arrow-quick
- name: Make install-arrow
uses: nick-fields/retry@v2
with:
timeout_seconds: 1200 # or use timeout_minutes
max_attempts: 2
retry_wait_seconds: 60
retry_on: error
command: |
apt-get remove -y apache-arrow-apt-source
make install-arrow DEP_BUILD_DIR=$DEP_BUILD_DIR
- name: Make install-zmq
uses: nick-fields/retry@v2
with:
timeout_seconds: 1200 # or use timeout_minutes
max_attempts: 2
retry_wait_seconds: 60
retry_on: error
command: |
make install-zmq DEP_BUILD_DIR=$DEP_BUILD_DIR
- name: Make install-iconv
uses: nick-fields/retry@v2
with:
timeout_seconds: 1200 # or use timeout_minutes
max_attempts: 2
retry_wait_seconds: 60
retry_on: error
command: |
make install-iconv DEP_BUILD_DIR=$DEP_BUILD_DIR
- name: Make install-idn2
uses: nick-fields/retry@v2
with:
timeout_seconds: 1200 # or use timeout_minutes
max_attempts: 2
retry_wait_seconds: 60
retry_on: error
command: |
make install-idn2 DEP_BUILD_DIR=$DEP_BUILD_DIR
- name: Make install-blosc
uses: nick-fields/retry@v2
with:
timeout_seconds: 1200 # or use timeout_minutes
max_attempts: 2
retry_wait_seconds: 60
retry_on: error
command: |
make install-blosc DEP_BUILD_DIR=$DEP_BUILD_DIR
- name: Make install-hdf5
uses: nick-fields/retry@v2
with:
timeout_seconds: 1200 # or use timeout_minutes
max_attempts: 2
retry_wait_seconds: 60
retry_on: error
command: |
make install-hdf5 DEP_BUILD_DIR=$DEP_BUILD_DIR
- name: Make install-pytables
uses: nick-fields/retry@v2
with:
timeout_seconds: 1200 # or use timeout_minutes
max_attempts: 2
retry_wait_seconds: 60
retry_on: error
command: |
HDF5_DIR=$(pwd)/dep/hdf5-install/ make install-pytables DEP_BUILD_DIR=$DEP_BUILD_DIR
arkouda_chpl_portability:
runs-on: ubuntu-latest
strategy:
matrix:
chpl-version: ['2.5.0','2.6.0','2.7.0']
container:
image: ghcr.io/bears-r-us/ubuntu-with-arkouda-deps-chpl-${{ matrix.chpl-version }}:latest
credentials:
username: ${{ github.actor }}
password: ${{ secrets.github_token }}
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set Python version to 3.13
run: |
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.13 1
- name: Check Chapel version
run: |
chpl --version
- name: Install dependencies
uses: nick-fields/retry@v2
with:
timeout_seconds: 1200 # or use timeout_minutes
max_attempts: 2
retry_wait_seconds: 60
retry_on: error
command: |
python3 -m ensurepip --default-pip
echo "\$(eval \$(call add-path,/usr/lib/x86_64-linux-gnu/hdf5/serial/))" >> Makefile.paths
echo "\$(eval \$(call add-path,$DEP_INSTALL_DIR/arrow-install/))" >> Makefile.paths
echo "\$(eval \$(call add-path,$DEP_INSTALL_DIR/libiconv-install/))" >> Makefile.paths
- name: Build/Install Arkouda
run: |
make
python3 -m pip install .[dev]
- name: Arkouda unit tests
run: |
make test-python size=100
arkouda_multi-dim:
runs-on: ubuntu-latest
env:
ARKOUDA_CONFIG_FILE: .configs/MultiDimTestServerModules.cfg
strategy:
matrix:
chpl-version: ['2.7.0']
max-parallel: 3
container:
image: ghcr.io/bears-r-us/ubuntu-with-arkouda-deps-chpl-${{ matrix.chpl-version }}:latest
credentials:
username: ${{ github.actor }}
password: ${{ secrets.github_token }}
steps:
- name: Show memory available
run: |
echo "Memory info:"
free -h
echo "CPU info:"
nproc
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set Python version to 3.13
run: |
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.13 1
- name: Check Chapel version
run: |
chpl --version
- name: Install dependencies
uses: nick-fields/retry@v2
with:
timeout_seconds: 1200 # or use timeout_minutes
max_attempts: 2
retry_wait_seconds: 60
retry_on: error
command: |
apt-get update && apt-get install -y time
python3 -m ensurepip --default-pip
echo "\$(eval \$(call add-path,/usr/lib/x86_64-linux-gnu/hdf5/serial/))" >> Makefile.paths
echo "\$(eval \$(call add-path,$DEP_INSTALL_DIR/arrow-install/))" >> Makefile.paths
echo "\$(eval \$(call add-path,$DEP_INSTALL_DIR/libiconv-install/))" >> Makefile.paths
- name: Build Arkouda
run: |
/usr/bin/time -v make ARRAY_ND_MAX=3
- name: Install Arkouda
run: |
python3 -m pip install .[dev]
- name: Arkouda unit tests
run: |
make test-python size=100
# arkouda_multi-dim_test_coverage:
# runs-on: ubuntu-latest
# strategy:
# matrix:
# chpl-version: ['2.7.0']
# max-parallel: 3
# container:
# image: ghcr.io/bears-r-us/ubuntu-with-arkouda-deps-chpl-${{ matrix.chpl-version }}:latest
# credentials:
# username: ${{ github.actor }}
# password: ${{ secrets.github_token }}
# steps:
# - name: Show memory available
# run: |
# echo "Memory info:"
# free -h
# echo "CPU info:"
# nproc
# - name: Checkout Repository
# uses: actions/checkout@v4
# - name: Set Python version to 3.13
# run: |
# update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.13 1
# - name: Check Chapel version
# run: |
# chpl --version
# - name: Install dependencies
# uses: nick-fields/retry@v2
# with:
# timeout_seconds: 1200 # or use timeout_minutes
# max_attempts: 2
# retry_wait_seconds: 60
# retry_on: error
# command: |
# apt-get update && apt-get install -y time
# python3 -m ensurepip --default-pip
# echo "\$(eval \$(call add-path,/usr/lib/x86_64-linux-gnu/hdf5/serial/))" >> Makefile.paths
# echo "\$(eval \$(call add-path,$DEP_INSTALL_DIR/arrow-install/))" >> Makefile.paths
# echo "\$(eval \$(call add-path,$DEP_INSTALL_DIR/libiconv-install/))" >> Makefile.paths
# - name: Use MultiDim Configs
# run: |
# cp .configs/registration-config-multi-dim.json registration-config.json
# bash scripts/trim_server_modules.sh
# - name: Build arkouda_server
# shell: bash
# run: |
# set -euxo pipefail
# /usr/bin/time -v make
# echo "$PWD" >> "$GITHUB_PATH"
# echo "$PWD"
# - name: Install Arkouda
# run: |
# python3 -m pip install .[dev]
# - name: Run tests with coverage (fail if below threshold)
# run: |
# make coverage size=10
# - name: Sanity check coverage.xml
# if: always()
# run: |
# pwd
# ls -l
# [ -f coverage.xml ] && echo "coverage.xml present" || (echo "coverage.xml MISSING"; exit 1)
# head -n 20 coverage.xml || true
# - name: Upload coverage artifacts
# if: always()
# uses: actions/upload-artifact@v4
# with:
# name: coverage-artifacts
# path: |
# coverage.xml
# .coverage
# .pytest/report.html
# if-no-files-found: warn
# - name: Upload to Codecov
# uses: codecov/codecov-action@v4
# with:
# token: ${{ secrets.CODECOV_TOKEN }} # not needed for public repos
# files: coverage.xml
# flags: python-coverage
# fail_ci_if_error: true
arkouda_tests_linux:
runs-on: ubuntu-latest
env:
CHPL_RT_NUM_THREADS_PER_LOCALE: 2
strategy:
matrix:
chpl-version: ['2.7.0']
container:
image: ghcr.io/bears-r-us/ubuntu-with-arkouda-deps-chpl-${{ matrix.chpl-version }}:latest
credentials:
username: ${{ github.actor }}
password: ${{ secrets.github_token }}
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set Python version to 3.13
run: |
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.13 1
- name: Check Chapel version
run: |
chpl --version
- name: Install dependencies
uses: nick-fields/retry@v2
with:
timeout_seconds: 1200 # or use timeout_minutes
max_attempts: 2
retry_wait_seconds: 60
retry_on: error
command: |
python3 -m ensurepip --default-pip
python3 -m pip install pytest-benchmark>=4.0.0 py
echo "\$(eval \$(call add-path,/usr/lib/x86_64-linux-gnu/hdf5/serial/))" >> Makefile.paths
echo "\$(eval \$(call add-path,$DEP_INSTALL_DIR/arrow-install/))" >> Makefile.paths
echo "\$(eval \$(call add-path,$DEP_INSTALL_DIR/libiconv-install/))" >> Makefile.paths
- name: Build/Install Arkouda
run: |
make
python3 -m pip install .[dev]
- name: Arkouda make check
run: |
make check
- name: Arkouda unit tests
env:
ARKOUDA_PYTEST_OPTIONS: "--durations=0 --durations-min=5.0"
run: |
make test-python size=100
- name: Arkouda benchmark --correctness-only
run: |
ARKOUDA_HOME=$(pwd) ./benchmarks/run_benchmarks.py --correctness-only
ARKOUDA_HOME=$(pwd) ./benchmarks/run_benchmarks.py --size=100 --gen-graphs
arkouda_benchmark_linux:
runs-on: ubuntu-latest
strategy:
matrix:
chpl-version: ['2.7.0']
container:
image: ghcr.io/bears-r-us/ubuntu-with-arkouda-deps-chpl-${{ matrix.chpl-version }}:latest
credentials:
username: ${{ github.actor }}
password: ${{ secrets.github_token }}
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set Python version to 3.13
run: |
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.13 1
- name: Check Chapel version
run: |
chpl --version
- name: Install dependencies
uses: nick-fields/retry@v2
with:
timeout_seconds: 1200 # or use timeout_minutes
max_attempts: 2
retry_wait_seconds: 60
retry_on: error
command: |
python3 -m ensurepip --default-pip
python3 -m pip install pytest-benchmark>=4.0.0 py
echo "\$(eval \$(call add-path,/usr/lib/x86_64-linux-gnu/hdf5/serial/))" >> Makefile.paths
echo "\$(eval \$(call add-path,$DEP_INSTALL_DIR/arrow-install/))" >> Makefile.paths
echo "\$(eval \$(call add-path,$DEP_INSTALL_DIR/libiconv-install/))" >> Makefile.paths
- name: Build/Install Arkouda
run: |
make
python3 -m pip install .[dev]
- name: Arkouda benchmark
run: |
make benchmark size_bm=10
- name: Arkouda benchmark -- Numpy
run: |
python3 -m pytest -c benchmark.ini --size=10 --numpy