Modernize build infrastructure and drop Python 3.7 support
## Summary
Modernizes the build infrastructure with updates to dependencies, tooling, and CI configuration. Drops Python 3.7 support (EOL June 2023) and updates to Python 3.9+ with testing on 3.9, 3.11, and 3.13.
## Changes
### 1. Drop Python 3.7 Support ✅
- Updated minimum Python version from 3.7 to 3.9
- Updated CI test matrix: `["3.7", "3.10"]` → `["3.9", "3.11", "3.13"]`
- Updated llvmlite constraint to `>=0.36,<0.45` (upper bound for compatibility until #97 is merged)
- Updated PyPI publish and docs build conditions to use Python 3.9
### 2. Migrate from setup.py to pyproject.toml ✅
- Moved all project metadata from `setup.py` to `pyproject.toml`
- Removed `setup.py` (modern setuptools works with `pyproject.toml` directly)
- Added `build-backend = "setuptools.build_meta"` specification
- Configured `[tool.setuptools.packages.find]` for automatic package discovery
### 3. Update Dependencies and Tooling ✅
- **ruff pre-commit hook**: `v0.1.2` → `v0.13.3` (latest as of Oct 2025)
- **pypa/gh-action-pypi-publish**: `v1.8.14` → `v1.12.3`
- **pre-commit/action**: `v3.0.1` → `v3.0.2`
- Added Python dependencies to Dependabot monitoring
### 4. Improve CI Configuration ✅
- Improved cache keys: now includes OS and architecture for better cache isolation
- Modernized ruff config: added `[tool.ruff.lint]` section and `target-version = "py39"`
- All version-specific conditions updated from 3.7 to 3.9
## Testing
The CI will run tests on Python 3.9, 3.11, and 3.13 to verify compatibility.
## Dependencies
This PR is independent of #97 (llvmlite 0.45+ fix). After both are merged, the llvmlite upper bound can be removed.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
合并状态:未合并 0 条评论