Skip to content

Conversation

@m1yag1
Copy link
Member

@m1yag1 m1yag1 commented Jul 12, 2025

Summary

  • Migrate from requirements.txt files to uv dependency management with pyproject.toml
  • Simplify to use Python 3.12 only (removing Python 3.8 support)
  • Update all tooling and CI/CD to support the new dependency management
  • Fix Python 3.12 compatibility issues

Key Changes

  • Dependency Management: Replace requirements/ directory with pyproject.toml using dependency groups (test, lint, typing, dev)
  • Build Tools: Update tox to use tox-uv plugin for faster environment creation
  • CI/CD: Simplify GitHub Actions to test only Python 3.12 (keeping matrix for future 3.13 addition)
  • Compatibility: Update pylint, gunicorn, APScheduler, and marshmallow for Python 3.12 support
  • Platform Deployment: Update Platform.sh to generate requirements.txt from uv.lock using make gen-requirements

Test Plan

  • All static checks pass (lint score 9.98/10, mypy clean)
  • Tox environments work with uv-venv-lock-runner
  • Makefile commands work with updated targets
  • GitHub Actions updated to install tox-uv plugin
  • Platform.sh build generates requirements.txt from uv.lock

Breaking Changes

  • Drops Python 3.8 support (now Python 3.12 only)
  • Removes requirements/ directory in favor of pyproject.toml
  • Development setup now requires uv (installed via install script as documented in CONTRIBUTING.md)

m1yag1 added 8 commits July 12, 2025 18:30
- Add pyproject.toml with dependency groups for test, lint, typing, and dev
- Remove old requirements/ directory files
- Update CONTRIBUTING.md to mention pipx and uv
- Add uv.lock file for reproducible builds
- Add tox-uv plugin requirements
- Use uv-venv-lock-runner for faster environment creation
- Update dependency groups instead of requirements files
- Simplify to use only Python 3.12 environments
- Use 'uv sync --group dev' for installation
- Use 'uv run' for gunicorn execution
- Update all tox commands to use py312-* environments only
- Simplify matrix to use only Python 3.12 (keeping matrix for future 3.13)
- Install tox-uv plugin alongside tox
- Update cache key to use pyproject.toml instead of requirements files
- Update gunicorn from 20.1.0 to 23.0.0 (fixes pkg_resources warning)
- Update APScheduler dependency constraint to >=3.10.0
- Update pylint from 2.8.2 to 3.3.7 for Python 3.12 support
- Add types-PyYAML to typing dependency group
- Fix file encoding in pyslackersweb/__init__.py
- Add type ignore for sentry_sdk.init abstract class
- Remove deprecated pylint bad-continuation option
- Fix black formatting issues in migration and test files
- Update Platform.sh and Docker to use pyproject.toml
Update marshmallow from 3.11.1 to 3.22.0 to resolve distutils import error
in Python 3.12 where distutils module was removed.
- Install uv in Platform.sh build hook and use 'uv sync'
- Remove unnecessary build system configuration (this is an app, not a library)
- Platform.sh will now use uv.lock for reproducible dependency installation
- Add gen-requirements tox environment to export dependencies
- Update Platform.sh build hook to use tox + requirements.txt approach
- Revert web start command to use global packages
- This provides better compatibility with Platform.sh deployment
@m1yag1 m1yag1 force-pushed the migrate-to-uv-deps branch 5 times, most recently from ae8af1e to aee65e6 Compare July 13, 2025 22:54
- Add requirements.txt to gitignore (generated file)
- Add gen-requirements tox environment for local use
- Add make gen-requirements command to generate requirements.txt
- Simplify Platform.sh build to use uv via make command
@m1yag1 m1yag1 force-pushed the migrate-to-uv-deps branch from aee65e6 to 1ca956a Compare July 13, 2025 23:08
@m1yag1 m1yag1 merged commit 5378314 into master Jul 14, 2025
3 checks passed
@m1yag1 m1yag1 deleted the migrate-to-uv-deps branch July 14, 2025 03:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant