16031aae96
CPU tests Workflow / Testing (ubuntu-latest, 3.12) (push) Failing after 1s
CPU tests Workflow / Testing (ubuntu-latest, 3.13) (push) Failing after 0s
Mypy Type Check / Type Check (push) Failing after 0s
Docs/Test WorkFlow / Test docs build (push) Failing after 1s
PR Conflict Labeler / labeling (push) Failing after 1s
Dependency resolution / Resolve [tflite] extra — Python 3.12 (push) Failing after 0s
Smoke Tests / try-all-models (ubuntu-latest, 3.10) (push) Failing after 0s
Smoke Tests / try-all-models (ubuntu-latest, 3.13) (push) Failing after 1s
CPU tests Workflow / build-pkg (push) Failing after 1s
CPU tests Workflow / Testing (ubuntu-latest, 3.10) (push) Failing after 0s
CPU tests Workflow / Testing (ubuntu-latest, 3.11) (push) Failing after 0s
Smoke Tests / try-all-models (macos-latest, 3.10) (push) Has been cancelled
Smoke Tests / try-all-models (macos-latest, 3.13) (push) Has been cancelled
Smoke Tests / try-all-models (windows-latest, 3.10) (push) Has been cancelled
Smoke Tests / try-all-models (windows-latest, 3.13) (push) Has been cancelled
CPU tests Workflow / Testing (macos-latest, 3.10) (push) Has been cancelled
CPU tests Workflow / Testing (macos-latest, 3.13) (push) Has been cancelled
CPU tests Workflow / Testing (windows-latest, 3.10) (push) Has been cancelled
CPU tests Workflow / Testing (windows-latest, 3.13) (push) Has been cancelled
CPU tests Workflow / testing-guardian (push) Has been cancelled
GPU tests Workflow / Testing (push) Has been cancelled
141 lines
5.3 KiB
Markdown
141 lines
5.3 KiB
Markdown
# RF-DETR Copilot Instructions
|
|
|
|
> [!NOTE]
|
|
> This document is GitHub Copilot-specific guidance. For canonical contribution guidelines (test-driven development, code quality, docstrings, etc.), see [CONTRIBUTING.md](CONTRIBUTING.md). For detailed agent-specific context, see [AGENTS.md](../AGENTS.md).
|
|
|
|
## Repository Overview
|
|
|
|
RF-DETR is a real-time transformer architecture for object detection and instance segmentation. Built on DINOv2 vision transformer backbone with PyTorch.
|
|
|
|
**Project Type:** Python ML library (computer vision)
|
|
**Python:** >=3.10 (3.10, 3.11, 3.12, 3.13)
|
|
**License:** Apache 2.0 (Plus models under PML 1.0)
|
|
|
|
> [!TIP]
|
|
>
|
|
> - **Configuration:** See `pyproject.toml` for dependencies, build settings, and tool configurations.
|
|
> - **Contributing:** See `.github/CONTRIBUTING.md` for contribution guidelines, CLA, and coding standards.
|
|
|
|
## Quick Start
|
|
|
|
**Package Manager:** This project uses `uv` for all dependency management.
|
|
|
|
```bash
|
|
# Development setup
|
|
uv sync --all-groups
|
|
|
|
# Run tests (always before committing)
|
|
uv run --no-sync pytest src/ tests/ -n 2 -m "not gpu" --cov=rfdetr --cov-report=xml
|
|
|
|
# Build package
|
|
uv build
|
|
```
|
|
|
|
> [!IMPORTANT]
|
|
> Run `uv sync` after pulling changes to update dependencies.
|
|
|
|
## Code Quality
|
|
|
|
**Linting & Formatting:** All code must pass pre-commit checks. See **[Code Quality and Linting](CONTRIBUTING.md#code-quality-and-linting)** in CONTRIBUTING.md for setup and details.
|
|
|
|
```bash
|
|
pre-commit run --all-files
|
|
```
|
|
|
|
> **Configuration:** `.pre-commit-config.yaml` (hooks) and `[tool.ruff]` in `pyproject.toml` (Python linting)
|
|
|
|
## Key Conventions
|
|
|
|
> [!NOTE]
|
|
> Internal package organization (`src/rfdetr/`) is subject to change as this is an active research project. Explore the codebase to understand current module organization.
|
|
|
|
**Imports:**
|
|
|
|
- Always use direct imports: `from rfdetr.utilities.distributed import get_rank, is_main_process`
|
|
- Logger: `from rfdetr.utilities.logger import get_logger` (reads `LOG_LEVEL` env var)
|
|
- **Never use** `rfdetr.util.*` or `rfdetr.deploy.*` — deprecated shims scheduled for removal in v1.9.0
|
|
- TQDM: `from tqdm.auto import tqdm` (NOT `from tqdm import tqdm`)
|
|
|
|
## Testing & Development Workflow
|
|
|
|
**Test-Driven Development:** Follow TDD practices - write tests first for bugs, comprehensive tests for features. See **[Test-Driven Development](CONTRIBUTING.md#test-driven-development)** in CONTRIBUTING.md for detailed guidelines.
|
|
|
|
**Quick reference:**
|
|
|
|
- Bug fixes: Write failing test → Fix → Verify all pass
|
|
- Features: Write comprehensive tests → Implement → Refactor
|
|
- Use test classes and `@pytest.mark.parametrize` for organization
|
|
- Mark GPU/heavy tests with `@pytest.mark.gpu`
|
|
|
|
**Testing Requirements:**
|
|
|
|
- ⚠️ During development: Tests may fail (TDD cycle is fine)
|
|
- ✅ Before PR: Final commit MUST have all tests passing
|
|
- ✅ Before commit: Run `pre-commit run --all-files`
|
|
|
|
**CI/CD:** See `.github/workflows/` for source of truth. Tests run on Python 3.10-3.13 across Ubuntu, Windows, macOS.
|
|
|
|
## Coding Standards
|
|
|
|
**Type Hints & Docstrings:** MANDATORY for all functions/classes. See **[Google-Style Docstrings and Mandatory Type Hints](CONTRIBUTING.md#google-style-docstrings-and-mandatory-type-hints)** in CONTRIBUTING.md for examples.
|
|
|
|
**Import Conventions:**
|
|
|
|
```python
|
|
# Always use direct imports (NOT import ... as pattern)
|
|
from rfdetr.utilities.distributed import get_rank, is_main_process, save_on_master
|
|
from rfdetr.utilities.logger import get_logger
|
|
|
|
# TQDM (for environment compatibility)
|
|
from tqdm.auto import tqdm # NOT from tqdm import tqdm
|
|
```
|
|
|
|
**Project-Specific Patterns:**
|
|
|
|
- **Logging:** Use `logger.debug()` for detailed tensor/shape info (not `logger.info()`)
|
|
- **Segmentation models:** Return `pred_masks` as `torch.Tensor` or dict with keys `['spatial_features', 'query_features', 'bias']`
|
|
- **Checkpoint handling:** Always check file existence before operations
|
|
- **License headers:** All Python files require Apache 2.0 header (enforced by pre-commit)
|
|
|
|
**Best Practices:**
|
|
|
|
- Make minimal, surgical changes - avoid over-engineering
|
|
- Use existing patterns and libraries
|
|
- Write secure code - avoid injection vulnerabilities (XSS, SQL injection, command injection)
|
|
- Follow Python ML development best practices
|
|
|
|
## Pre-Commit Checklist
|
|
|
|
Before submitting changes:
|
|
|
|
1. ✅ Run tests: `uv run --no-sync pytest src/ tests/ -n 2 -m "not gpu"`
|
|
2. ✅ Run pre-commit: `pre-commit run --all-files`
|
|
3. ✅ Verify new functions have type hints + docstrings
|
|
4. ✅ Review changes for minimal scope
|
|
|
|
## Resources
|
|
|
|
- **Docs:** https://rfdetr.roboflow.com
|
|
- **Contributing:** `.github/CONTRIBUTING.md`
|
|
- **Config:** `pyproject.toml`, `.pre-commit-config.yaml`
|
|
- **Issues:** https://github.com/roboflow/rf-detr/issues
|
|
|
|
## Maintaining Agentic Documentation
|
|
|
|
**If your contribution:**
|
|
|
|
- Changes project structure or introduces new patterns
|
|
- Receives major feedback in PR review about conventions/patterns
|
|
|
|
**Then update the relevant documents:**
|
|
|
|
- This file (copilot-instructions.md) for high-level guidance
|
|
- AGENTS.md for detailed technical patterns
|
|
- CONTRIBUTING.md if it affects human contribution workflow
|
|
|
|
This ensures future contributions stay consistent and reduces repeated feedback.
|
|
|
|
---
|
|
|
|
**Note:** These instructions are GitHub Copilot-specific. When in doubt, refer to existing code patterns, contributing guidelines, and test files for examples.
|