Skip to content

Commit

Permalink
fix: clippy errors
Browse files Browse the repository at this point in the history
  • Loading branch information
dirvine committed Nov 7, 2024
1 parent ff20962 commit 0b9bd99
Show file tree
Hide file tree
Showing 3 changed files with 232 additions and 40 deletions.
9 changes: 9 additions & 0 deletions .cursorrules
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
You are an AI assistant specialized in Python and Rust development.

For python

Your approach emphasizes:Clear project structure with separate directories for source code, tests, docs, and config.Modular design with distinct files for models, services, controllers, and utilities.Configuration management using environment variables.Robust error handling and logging, including context capture.Comprehensive testing with pytest.Detailed documentation using docstrings and README files.Dependency management via https://github.com/astral-sh/uv and virtual environments.Code style consistency using Ruff.CI/CD implementation with GitHub Actions or GitLab CI.AI-friendly coding practices:You provide code snippets and explanations tailored to these principles, optimizing for clarity and AI-assisted development.Follow the following rules:For any python file, be sure to ALWAYS add typing annotations to each function or class. Be sure to include return types when necessary. Add descriptive docstrings to all python functions and classes as well. Please use pep257 convention for python. Update existing docstrings if need be.Make sure you keep any comments that exist in a file.When writing tests, make sure that you ONLY use pytest or pytest plugins, do NOT use the unittest module. All tests should have typing annotations as well. All tests should be in ./tests. Be sure to create all necessary files and folders. If you are creating files inside of ./tests or ./src/goob_ai, be sure to make a init.py file if one does not exist.All tests should be fully annotated and should contain docstrings. Be sure to import the following if TYPE_CHECKING:from _pytest.capture import CaptureFixturefrom _pytest.fixtures import FixtureRequestfrom _pytest.logging import LogCaptureFixturefrom _pytest.monkeypatch import MonkeyPatchfrom pytest_mock.plugin import MockerFixture

For Rust

Please do not use unwraps or panics. Please ensure all methods are fully tested and annotated.
190 changes: 190 additions & 0 deletions .github/workflows/python-publish-node.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,190 @@
name: Build and Publish Python Package

on:
push:
tags:
- 'v*'

permissions:
id-token: write
contents: read

jobs:
macos:
runs-on: macos-latest
permissions:
id-token: write
contents: read
strategy:
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
target: [x86_64, aarch64]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- name: Create Python module structure
run: |
mkdir -p sn_node/python/autonomi_node
cat > sn_node/python/autonomi_node/__init__.py << EOL
from ._autonomi import *
__version__ = "${{ github.ref_name }}"
EOL
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist
sccache: 'true'
working-directory: ./sn_node
- name: Upload wheels
uses: actions/upload-artifact@v3
with:
name: wheels
path: sn_node/dist/*.whl
if-no-files-found: error

windows:
runs-on: windows-latest
permissions:
id-token: write
contents: read
strategy:
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
target: [x64]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
architecture: ${{ matrix.target }}
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- name: Create Python module structure
shell: cmd
run: |
mkdir sn_node\python\autonomi_client
echo from ._autonomi import * > autonomi\python\autonomi_node\__init__.py
echo __version__ = "0.2.33" >> autonomi\python\autonomi_node\__init__.py
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
args: --release --out dist
sccache: 'true'
working-directory: ./sn_node
- name: Upload wheels
uses: actions/upload-artifact@v3
with:
name: wheels
path: sn_node/dist/*.whl
if-no-files-found: error

linux:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
strategy:
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
target: [x86_64]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
target: x86_64-unknown-linux-gnu
- name: Install dependencies
run: |
python -m pip install --user cffi
python -m pip install --user patchelf
rustup component add rustfmt
- name: Create Python module structure
run: |
mkdir -p sn_node/python/autonomi_sn_node
cat > sn_node/python/autonomi_node/__init__.py << EOL
from ._autonomi import *
__version__ = "0.2.33"
EOL
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
manylinux: auto
args: --release --out dist
sccache: 'true'
working-directory: ./sn_node
before-script-linux: |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source $HOME/.cargo/env
rustup component add rustfmt
- name: Upload wheels
uses: actions/upload-artifact@v3
with:
name: wheels
path: sn_node/dist/*.whl
if-no-files-found: error

sdist:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- name: Create Python module structure
run: |
mkdir -p sn_node/python/autonomi_node
cat > sn_node/python/autonomi_node/__init__.py << EOL
from ._autonomi import *
__version__ = "0.2.33"
EOL
- name: Build sdist
uses: PyO3/maturin-action@v1
with:
command: sdist
args: --out dist
working-directory: ./autonomi
- name: Upload sdist
uses: actions/upload-artifact@v3
with:
name: wheels
path: autonomi/dist/*.tar.gz
if-no-files-found: error

release:
name: Release
runs-on: ubuntu-latest
needs: [macos, windows, linux, sdist]
permissions:
id-token: write
contents: read
steps:
- uses: actions/download-artifact@v3
with:
name: wheels
path: dist
- name: Display structure of downloaded files
run: ls -R dist
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
packages-dir: dist/
verbose: true
print-hash: true
Loading

0 comments on commit 0b9bd99

Please sign in to comment.