Skip to content

feat: add multi-environment build system and development tooling - #2

Merged
deanq merged 6 commits into
mainfrom
deanq/ae-1471-setup-assistant
Nov 17, 2025
Merged

deanq merged 6 commits into
mainfrom
deanq/ae-1471-setup-assistant

Conversation

@deanq

@deanq deanq commented Nov 16, 2025

Copy link
Copy Markdown
Member

Summary

Adds a comprehensive build system that supports multiple Python package managers (uv, pip, poetry, conda, pipenv) and establishes development workflow tooling for contributors.

Changes

Build System Infrastructure

  • Makefile with auto-detection for 5 package managers
  • pyproject.toml with dev dependencies and tool configurations
  • Universal make dev command that works with any environment manager
  • Quality gates: make quality-check and make quality-check-strict
  • Helper commands: venv-info, clean-venv, update-deps, sync-deps

Dependency Management

  • requirements.txt - pip-compatible lock file
  • environment.yml - conda environment specification
  • uv.lock - uv lock file with full dependency resolution
  • Auto-generation via make sync-deps

Documentation

  • DEVELOPMENT.md - comprehensive guide covering:
    • Environment setup for all package managers
    • Complete Makefile command reference
    • Development workflow and best practices
    • Code quality guidelines
    • Testing instructions
    • Troubleshooting guide
  • README.md - updated with new setup methods and workflow

Development Tools

  • ruff - linting and formatting
  • mypy - type checking (lenient for examples)
  • pytest - testing with async support and coverage

Benefits

  1. Inclusive Setup - Users can contribute with their preferred package manager
  2. Consistent Quality - Pre-commit quality checks ensure code standards
  3. Better DX - Clear documentation and automated tooling reduce friction
  4. CI/CD Ready - Quality gates designed for automated workflows
  5. Cross-Platform - Dependency files for pip, conda, and uv users

Usage

Quick Start

# Setup (auto-detects your package manager)
make dev

# Check your environment
make venv-info

# Before committing
make quality-check

All Available Commands

Run make help to see all 16 available commands.

Testing Checklist

  • Makefile auto-detection works with uv
  • make dev installs dependencies successfully
  • make lint runs without errors
  • make format-check runs without errors
  • make typecheck handles empty directories gracefully
  • make quality-check passes all checks
  • make sync-deps generates dependency files
  • Documentation is clear and comprehensive
  • README updated with new workflow

Commit Structure

Three logical commits for easy review:

  1. feat: Build system infrastructure (pyproject.toml, Makefile)
  2. build: Cross-platform dependency files (requirements.txt, environment.yml, uv.lock)
  3. docs: Development guide and README updates (DEVELOPMENT.md, README.md)

Note: This establishes the foundation for consistent development practices across the flash-examples repository.

Add Makefile that auto-detects and supports uv, pip, poetry, conda,
and pipenv package managers. Configure pyproject.toml with dev
dependencies (ruff, mypy, pytest) and tool configurations.

Features:
- Auto-detection: uv → poetry → pipenv → pip → conda
- Universal make dev command works with any package manager
- Quality gates: make quality-check and make quality-check-strict
- Helper commands: venv-info, clean-venv, update-deps
- Dependency file generation: requirements.txt, environment.yml

Configuration:
- ruff for linting and formatting (line length: 100)
- mypy for type checking (lenient for examples)
- pytest with async support and coverage
- setuptools build backend (examples repo, no packages)
Add auto-generated dependency files to support multiple package
managers and environments:

- requirements.txt: pip-compatible lock file (92 packages)
- environment.yml: conda environment specification
- uv.lock: uv lock file with full dependency resolution

Generated via: make sync-deps
Add DEVELOPMENT.md with detailed instructions for:
- Environment setup for all package managers
- Complete Makefile command reference
- Development workflow and best practices
- Code quality guidelines and testing
- Troubleshooting and common tasks

Update README.md:
- Showcase make dev as primary setup method
- Add alternative setup methods section
- Reference DEVELOPMENT.md for detailed instructions
- Include make quality-check in contribution workflow
@linear

linear Bot commented Nov 16, 2025

Copy link
Copy Markdown

@deanq deanq changed the title Add multi-environment build system and development tooling feat: add multi-environment build system and development tooling Nov 16, 2025
@deanq
deanq requested review from Copilot and jhcipar and removed request for Copilot November 16, 2025 09:02

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR establishes a comprehensive development infrastructure for the flash-examples repository by introducing multi-environment build system support and standardized development tooling. The changes enable contributors to use their preferred Python package manager while maintaining consistent code quality standards.

Key Changes:

  • Implemented Makefile with auto-detection for 5 package managers (uv, pip, poetry, conda, pipenv)
  • Added development dependencies and tool configurations in pyproject.toml
  • Created comprehensive development documentation with setup guides and workflow instructions

Reviewed Changes

Copilot reviewed 5 out of 7 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
pyproject.toml Defines project metadata, dependencies, and configuration for ruff, mypy, pytest, and coverage tools
environment.yml Provides conda environment specification for conda users
Makefile Implements build system with package manager auto-detection and quality gate commands
README.md Updates setup instructions to reference new build system and development guide
DEVELOPMENT.md Comprehensive 596-line guide covering environment setup, commands, workflows, and troubleshooting

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread Makefile Outdated
Comment thread DEVELOPMENT.md Outdated
Comment thread DEVELOPMENT.md Outdated
- Fix Makefile typecheck error handling to properly group conditional logic
- Update DEVELOPMENT.md to reference only pyproject.toml for ruff config
- Remove CLAUDE.md reference as it's not in the repository

Addresses Copilot review comments on PR #2
… testing

Add comprehensive CI/CD automation:

Workflows:
- quality.yml: Fast quality gate (format, lint, typecheck) on Python 3.12
- test-examples.yml: Multi-version testing across Python 3.9-3.13

Configuration updates:
- Update Python requirement to >=3.9
- Update ruff target-version to py39
- Update mypy python_version to 3.9
- Add .python-version file for tooling

Documentation:
- Fix README.md testing section to reflect actual Python versions tested
- Reference actual workflow directory instead of non-existent file

Features:
- Runs on all pushes, PRs, and manual dispatch
- Uses uv caching for faster workflow runs
- GitHub-formatted output with collapsible groups
- Matrix testing with fail-fast disabled to see all version results
@deanq
deanq force-pushed the deanq/ae-1471-setup-assistant branch from 6f1eb5e to a03cbc3 Compare November 16, 2025 09:33
@deanq
deanq merged commit bd82b12 into main Nov 17, 2025
6 checks passed
@deanq
deanq deleted the deanq/ae-1471-setup-assistant branch November 17, 2025 19:32
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.

3 participants