Skip to content

Add Python research project template with uv, pre-commit, and CI/CD#1

Merged
kaustubhharapanahalli merged 4 commits intomainfrom
copilot/create-python-research-template
Feb 15, 2026
Merged

Add Python research project template with uv, pre-commit, and CI/CD#1
kaustubhharapanahalli merged 4 commits intomainfrom
copilot/create-python-research-template

Conversation

Copy link

Copilot AI commented Feb 15, 2026

Bootstraps a research-oriented Python project template with modern tooling and experiment tracking infrastructure.

Structure

Directory layout:

  • src/ - Package source code
  • experiments/ - Research scripts with Hydra configs
  • tests/ - Pytest suite
  • .dev-config/ - Consolidated linter/type-checker configs (mypy, flake8, pylint, pydocstyle)

Configuration

Package management:

  • pyproject.toml configured for uv with hatchling backend
  • Runtime deps: numpy, pandas, hydra-core, wandb
  • Dev deps: pytest, mypy, black, isort, pylint, flake8, pydocstyle, pre-commit

Quality tooling:

  • .pre-commit-config.yaml - Hooks for all linters + pytest
  • .github/workflows/pr-monitor.yml - CI pipeline testing Python 3.9-3.11 with explicit GITHUB_TOKEN permissions
  • All tool configs centralized in .dev-config/ directory with correct path references

Documentation

README.md covers:

  • uv installation and environment setup
  • Hydra configuration management patterns
  • W&B experiment tracking integration
  • Development workflow and tool usage

CONTRIBUTING.md mandates:

  • "Verification" section in all PRs showing runs on sample data
  • PR template with environment details and test evidence requirements
  • Collaborative coding standards (Google-style docstrings, type hints)

Sample Implementation

Includes working example demonstrating the template:

# experiments/example.py
@hydra.main(version_base=None, config_path="configs", config_name="config")
def main(cfg: DictConfig) -> None:
    config_dict = OmegaConf.to_container(cfg, resolve=True)
    # wandb.init(project="research-project", config=config_dict)
    results = run_experiment(config_dict)
    # wandb.log(results)

With corresponding Hydra config at experiments/configs/config.yaml and tests achieving 100% coverage in tests/.


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

Copilot AI and others added 3 commits February 15, 2026 16:47
Co-authored-by: kaustubhharapanahalli <22560434+kaustubhharapanahalli@users.noreply.github.com>
Co-authored-by: kaustubhharapanahalli <22560434+kaustubhharapanahalli@users.noreply.github.com>
Co-authored-by: kaustubhharapanahalli <22560434+kaustubhharapanahalli@users.noreply.github.com>
Copilot AI changed the title [WIP] Add Python project template for research development Add Python research project template with uv, pre-commit, and CI/CD Feb 15, 2026
@kaustubhharapanahalli kaustubhharapanahalli marked this pull request as ready for review February 15, 2026 17:02
@kaustubhharapanahalli kaustubhharapanahalli merged commit 8903feb into main Feb 15, 2026
3 checks passed
@kaustubhharapanahalli kaustubhharapanahalli deleted the copilot/create-python-research-template branch February 15, 2026 17:03
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.

2 participants