Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 0 additions & 23 deletions .flake8

This file was deleted.

17 changes: 17 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
time: "00:00"
groups:
all-actions:
patterns: [ "*" ]

- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "daily"
time: "00:00"
100 changes: 100 additions & 0 deletions .github/workflows/actions/prepare/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
name: 'Prepare environment'
description: 'Prepare environment'

inputs:
python-version:
description: 'Python version to use'
required: true

runs:
using: "composite"
steps:
- name: Set up Python paths (Unix)
if: runner.os != 'Windows'
run: echo "$HOME/.local/bin" >> $GITHUB_PATH
shell: bash

- name: Set up Python paths (Windows)
if: runner.os == 'Windows'
run: echo "$env:APPDATA\Python\Scripts" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
shell: pwsh

- name: Get Poetry version
id: poetry-version
run: |
if [ -f .poetry-version ]; then
echo "version=$(head -n 1 .poetry-version)" >> $GITHUB_OUTPUT
else
echo "version=2.0.1" >> $GITHUB_OUTPUT
fi
shell: bash

- name: Install Poetry (Unix)
if: runner.os != 'Windows'
run: pipx install poetry==${{ steps.poetry-version.outputs.version }}
shell: bash

- name: Install Poetry (Windows)
if: runner.os == 'Windows'
run: pipx install poetry==${{ steps.poetry-version.outputs.version }}
shell: pwsh

- uses: actions/setup-python@v5
with:
python-version: ${{ inputs.python-version }}
cache: 'poetry'

- name: Clear Poetry cache (Unix)
if: runner.os != 'Windows'
run: poetry cache clear --all pypi
shell: bash

- name: Clear Poetry cache (Windows)
if: runner.os == 'Windows'
run: poetry cache clear --all pypi
shell: pwsh

- name: Install dependencies and package (Unix)
if: runner.os != 'Windows'
run: poetry install --no-interaction --no-ansi
shell: bash

- name: Install dependencies and package (Windows)
if: runner.os == 'Windows'
run: poetry install --no-interaction --no-ansi
shell: pwsh

# Setup Node.js for JavaScript tests
- name: Get Node.js version
id: node-version
run: |
if [ -f .node-version ]; then
echo "version=$(head -n 1 .node-version)" >> $GITHUB_OUTPUT
else
echo "version=20" >> $GITHUB_OUTPUT
fi
shell: bash
- uses: actions/setup-node@v4
with:
node-version: ${{ steps.node-version.outputs.version }}

# Install Node.js dependencies
- name: Install Node.js dependencies
run: npm install
shell: bash

# Setup Go for Go language tests
- name: Get Go version
id: go-version
run: |
if [ -f .go-version ]; then
echo "version=$(head -n 1 .go-version)" >> $GITHUB_OUTPUT
else
echo "version=1.21" >> $GITHUB_OUTPUT
fi
shell: bash

- uses: actions/setup-go@v5
with:
go-version: ${{ steps.go-version.outputs.version }}
cache: 'false'
16 changes: 16 additions & 0 deletions .github/workflows/auto-author-assign.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
name: Auto Author Assign

on:
pull_request_target:
types: [ opened, reopened ]

permissions:
pull-requests: write

jobs:
assign-author:
runs-on: arc-runners-small
timeout-minutes: 30
if: ${{ !github.event.pull_request.assignee }}
steps:
- uses: toshimaru/auto-author-assign@v2.1.0
141 changes: 141 additions & 0 deletions .github/workflows/build-wheels.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
name: Build Wheels

on:
push:
tags:
- 'v*'
workflow_dispatch:

jobs:
build_wheels:
name: Build psutil wheels on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
permissions:
contents: write
strategy:
matrix:
include:
# Linux builds
- os: ubuntu-latest
python-version: '3.10'
- os: ubuntu-latest
python-version: '3.11'
- os: ubuntu-latest
python-version: '3.12'

# Windows builds
- os: windows-latest
python-version: '3.10'
- os: windows-latest
python-version: '3.11'
- os: windows-latest
python-version: '3.12'

# macOS builds
- os: macos-latest
python-version: '3.10'
- os: macos-latest
python-version: '3.11'
- os: macos-latest
python-version: '3.12'

steps:
- uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

- name: Install build dependencies
run: |
python -m pip install pip wheel
shell: bash

- name: Build psutil wheel
run: |
# Create dist directory
mkdir -p dist

# Build psutil wheel
pip wheel psutil==5.8.0 --wheel-dir dist/
shell: bash

- name: Upload to GitHub Actions
uses: actions/upload-artifact@v4
with:
name: dist-${{ matrix.os }}-py${{ matrix.python-version }}
path: dist/*

release:
needs: build_wheels
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
permissions:
contents: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
ref: release

- name: Download all artifacts
uses: actions/download-artifact@v4
with:
pattern: dist-*
path: dist
merge-multiple: true

- name: Get tag version
id: get_version
run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
shell: bash

- name: Update wheel URLs in pyproject.toml
run: |
# Get the version without the 'v' prefix
VERSION="${{ steps.get_version.outputs.VERSION }}"

# Update URLs in pyproject.toml
sed -i "s|/releases/download/v[0-9]\+\.[0-9]\+\.[0-9]\+/|/releases/download/${VERSION}/|g" pyproject.toml

# Update poetry.lock
poetry lock --no-update

# Commit changes
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git config --global user.name "github-actions[bot]"
git add pyproject.toml poetry.lock
git commit -m "Update wheel URLs to ${VERSION}"

# Force update the release branch
git push origin release --force

# Create/update tag to point to the new commit
git tag -f "${VERSION}"
git push origin "${VERSION}" --force
shell: bash

- name: Create Release
uses: softprops/action-gh-release@v2
with:
files: |
dist/*
pyproject.toml
body: |
Release ${{ steps.get_version.outputs.VERSION }}

This release includes:
- Updated wheel builds for Python 3.10, 3.11, and 3.12
- Updated pyproject.toml with correct wheel URLs
draft: false
prerelease: false
target_commitish: release

- name: Merge release into master
run: |
git checkout master
git pull origin master
git merge release --no-ff -m "Merge release ${VERSION} into master"
git push origin master
shell: bash
Loading
Loading