chore: import upstream snapshot with attribution
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
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
This commit is contained in:
@@ -0,0 +1,326 @@
|
||||
# RF-DETR - Agent Instructions
|
||||
|
||||
This file provides detailed technical context for AI coding agents working with RF-DETR.
|
||||
|
||||
**Canonical Sources:**
|
||||
|
||||
- **Contribution Guidelines:** [CONTRIBUTING.md](.github/CONTRIBUTING.md) - The authoritative source for all contribution practices
|
||||
- **Human Documentation:** [README.md](README.md) - Project overview and usage
|
||||
- **Copilot Instructions:** [.github/copilot-instructions.md](.github/copilot-instructions.md) - GitHub Copilot-specific guidance
|
||||
|
||||
This document supplements the contribution guidelines with detailed technical information for automated tooling.
|
||||
|
||||
## Agent Responsibilities
|
||||
|
||||
As an AI agent contributing to RF-DETR, you are responsible for:
|
||||
|
||||
1. **Following test-driven development practices**
|
||||
|
||||
- Write failing tests first for bug fixes
|
||||
- Write comprehensive tests for new features
|
||||
- Ensure final PR commit has all tests passing
|
||||
|
||||
2. **Adhering to code quality standards**
|
||||
|
||||
- Run `pre-commit run --all-files` before every commit
|
||||
- Follow type hint and docstring requirements
|
||||
- Prefer direct project imports; conventional third-party aliases are allowed
|
||||
|
||||
3. **Maintaining agentic documentation**
|
||||
|
||||
- Update `AGENTS.md` when architecture patterns or technical conventions change
|
||||
- Update `.github/copilot-instructions.md` when high-level guidance changes
|
||||
- Update `.github/CONTRIBUTING.md` when human workflow is affected
|
||||
- Apply updates after receiving major feedback in PR reviews
|
||||
|
||||
4. **Consulting maintainers before major changes**
|
||||
|
||||
- Open an issue before adding new models or significant features
|
||||
- Wait for approval on approach before implementing
|
||||
|
||||
5. **Writing secure, minimal code**
|
||||
|
||||
- Avoid over-engineering and unnecessary abstractions
|
||||
- Write secure code (prevent injection vulnerabilities)
|
||||
- Follow existing patterns in the codebase
|
||||
|
||||
> [!NOTE]
|
||||
> Keeping documentation current ensures consistency across agent contributions and reduces repeated feedback on the same issues.
|
||||
|
||||
## Build & Development Environment
|
||||
|
||||
> [!NOTE]
|
||||
> **Canonical Reference:** See [Development Environment Setup](.github/CONTRIBUTING.md#development-environment-setup) in CONTRIBUTING.md for complete setup instructions.
|
||||
|
||||
### Setup
|
||||
|
||||
```bash
|
||||
# Install uv (if not already installed)
|
||||
pip install uv
|
||||
|
||||
# Full development environment (always use this)
|
||||
uv sync --all-groups
|
||||
```
|
||||
|
||||
**Prerequisites:** Python >=3.10 (tested on 3.10-3.13)
|
||||
|
||||
### Dependency Information
|
||||
|
||||
See `pyproject.toml` for complete dependency specifications:
|
||||
|
||||
- **Core:** PyTorch, torchvision, transformers, supervision, pydantic, pyDeprecate
|
||||
- **Optional:** `[train]` (training, including peft and pycocotools), `[lora]` (LoRA fine-tuning), `[plus]` (Plus models), `[onnx]` (ONNX export), `[loggers]` (tensorboard, wandb, mlflow, clearml)
|
||||
- **Development:** `tests`, `docs`, `build` groups
|
||||
|
||||
**Important version constraints:**
|
||||
|
||||
- PyTorch: >=2.2.0, \<3.0.0
|
||||
- Transformers: >=5.0.0, \<6.0.0
|
||||
|
||||
## Testing
|
||||
|
||||
> [!NOTE]
|
||||
> **Canonical Reference:** See [Test-Driven Development](.github/CONTRIBUTING.md#test-driven-development) in CONTRIBUTING.md for complete guidelines.
|
||||
>
|
||||
> **CI Workflows (Source of Truth):** See `.github/workflows/ci-tests-cpu.yml` and `.github/workflows/ci-tests-gpu.yml` for exact test commands used in CI.
|
||||
|
||||
### Commands
|
||||
|
||||
```bash
|
||||
# CPU tests (default for local development; mirrors CI)
|
||||
uv run --no-sync pytest src/ tests/ -n 1 -m "not gpu" --ignore=tests/run_smoke_all_models.py --cov=rfdetr --cov-report=xml --timeout=240 --durations=50
|
||||
|
||||
# GPU tests (requires GPU; mirrors CI)
|
||||
uv run --no-sync pytest tests/ -m gpu -n 2 --reruns 1 --only-rerun "OutOfMemoryError" --cov=rfdetr --cov-report=xml --timeout=600 --durations=20
|
||||
|
||||
# Pre-commit checks (ALWAYS run before committing)
|
||||
pre-commit run --all-files
|
||||
```
|
||||
|
||||
### Testing Principles
|
||||
|
||||
> [!IMPORTANT]
|
||||
> **Testing Requirements:**
|
||||
>
|
||||
> - ⚠️ **During development:** Tests may fail as you work through TDD cycle
|
||||
> - ✅ **Before opening PR:** Final commit MUST have all tests passing
|
||||
> - ✅ **Before each commit:** Run `pre-commit run --all-files`
|
||||
|
||||
**Test-Driven Development:**
|
||||
|
||||
1. **Bug fixes:** Write failing test → Fix code → Verify all tests pass
|
||||
2. **New features:** Write comprehensive tests → Implement feature → Refactor
|
||||
|
||||
**Test Organization:**
|
||||
|
||||
- Group related tests in classes
|
||||
- Use `@pytest.mark.parametrize` with `pytest.param(..., id="name")`
|
||||
- Mark GPU/heavy tests with `@pytest.mark.gpu`
|
||||
- Avoid multiple validation cases in a single test - see [CONTRIBUTING.md](.github/CONTRIBUTING.md#avoid-multiple-validation-cases-in-a-single-test) for details
|
||||
|
||||
**CI Information:**
|
||||
See [CI Testing](.github/CONTRIBUTING.md#ci-testing) in CONTRIBUTING.md for details on OS/Python version matrix and workflow configurations.
|
||||
|
||||
## Code Quality & Linting
|
||||
|
||||
> [!NOTE]
|
||||
> **Canonical Reference:** See [Code Quality and Linting](.github/CONTRIBUTING.md#code-quality-and-linting) in CONTRIBUTING.md for setup and details.
|
||||
|
||||
### Command
|
||||
|
||||
```bash
|
||||
# Always run full pre-commit (not individual tools)
|
||||
pre-commit run --all-files
|
||||
```
|
||||
|
||||
> [!TIP]
|
||||
> Pre-commit hooks will auto-format many issues. Review changes and re-stage files.
|
||||
|
||||
**Configuration Files:**
|
||||
|
||||
- `.pre-commit-config.yaml` - Pre-commit hooks (ruff, mdformat, prettier, codespell, license headers)
|
||||
- `pyproject.toml` - Ruff linting rules (`[tool.ruff]` section)
|
||||
|
||||
**License Header (required for all Python files):**
|
||||
|
||||
```python
|
||||
# ------------------------------------------------------------------------
|
||||
# RF-DETR
|
||||
# Copyright (c) 2025 Roboflow. All Rights Reserved.
|
||||
# Licensed under the Apache License, Version 2.0 [see LICENSE for details]
|
||||
# ------------------------------------------------------------------------
|
||||
```
|
||||
|
||||
## Documentation
|
||||
|
||||
### Building Docs
|
||||
|
||||
```bash
|
||||
# Full install (matches CI — required for XLarge/2XLarge model pages)
|
||||
uv pip install -e ".[plus]" --group docs
|
||||
|
||||
# Serve locally (live reload)
|
||||
uv run mkdocs serve
|
||||
|
||||
# Build static site
|
||||
uv run mkdocs build
|
||||
```
|
||||
|
||||
**Documentation Structure:**
|
||||
|
||||
- **Source:** `docs/` directory (Markdown)
|
||||
- **Config:** `mkdocs.yaml` (uses custom YAML tags: `!!python/name`)
|
||||
- **Deployment:** GitHub Actions publishes to GitHub Pages
|
||||
|
||||
**Note:** `mkdocs.yaml` is checked by the `check-yaml` pre-commit hook with `--unsafe` so custom YAML tags such as `!!python/name` are accepted.
|
||||
|
||||
## Package Building
|
||||
|
||||
```bash
|
||||
# Install build dependencies
|
||||
uv sync --group build
|
||||
|
||||
# Build distributions
|
||||
uv build
|
||||
|
||||
# Validate build
|
||||
uv run twine check --strict dist/*
|
||||
```
|
||||
|
||||
**Build outputs:**
|
||||
|
||||
- Source distribution: `dist/rfdetr-*.tar.gz`
|
||||
- Wheel: `dist/rfdetr-*.whl`
|
||||
|
||||
## Project Structure
|
||||
|
||||
> [!NOTE]
|
||||
> **Canonical Reference:** See [Project Structure](.github/CONTRIBUTING.md#project-structure) in CONTRIBUTING.md for complete project organization, directory descriptions, and configuration files.
|
||||
>
|
||||
> **Quick summary:** `src/rfdetr/` (source code), `tests/` (test suite), `docs/` (documentation), `.github/` (CI/CD), `pyproject.toml` (dependencies and config).
|
||||
>
|
||||
> Internal package organization within `src/rfdetr/` is subject to change as this is an active research and development project.
|
||||
|
||||
## Architecture & Conventions
|
||||
|
||||
### Key Patterns
|
||||
|
||||
**Model Architecture:**
|
||||
|
||||
- RFDETR wrappers: `self.model` is the model context returned by `get_model()`
|
||||
- Underlying PyTorch module: `self.model.model`
|
||||
- Segmentation models return `pred_masks` as `torch.Tensor` or dict with keys `['spatial_features', 'query_features', 'bias']`
|
||||
|
||||
**Imports:**
|
||||
|
||||
```python
|
||||
# Prefer direct project imports. Standard aliases such as `numpy as np`,
|
||||
# `torch.nn.functional as F`, and lazy module aliases are allowed when conventional.
|
||||
from rfdetr.util.misc import get_rank, get_world_size, is_main_process, save_on_master
|
||||
from rfdetr.util.logger import get_logger
|
||||
|
||||
# Logger usage
|
||||
logger = get_logger() # Default name: "rf-detr", reads LOG_LEVEL env var
|
||||
|
||||
# TQDM (environment compatibility)
|
||||
from tqdm.auto import tqdm # NOT: from tqdm import tqdm
|
||||
```
|
||||
|
||||
**Plus Models (XLarge, 2XLarge):**
|
||||
|
||||
- Requires separate `rfdetr_plus` package (PML 1.0 license)
|
||||
- Import handled lazily via `__getattr__` in `src/rfdetr/platform/models.py`
|
||||
- Raises `ImportError` if package not installed
|
||||
|
||||
**Subprocess Usage:**
|
||||
|
||||
```python
|
||||
import subprocess
|
||||
|
||||
result = subprocess.run(
|
||||
["command", "arg1", "arg2"],
|
||||
check=True, # Raise CalledProcessError on failure
|
||||
text=True, # Return stdout/stderr as strings
|
||||
capture_output=True,
|
||||
)
|
||||
# Note: stderr is already a string, don't decode
|
||||
```
|
||||
|
||||
**Logging:**
|
||||
|
||||
- Use `logger.debug()` for detailed tensor/shape information (not `logger.info()`)
|
||||
- Use `logger.info()` for high-level progress/status
|
||||
|
||||
**Checkpoint Handling:**
|
||||
|
||||
- Always check file existence before operations
|
||||
- Prevents errors when training is interrupted
|
||||
|
||||
### Type Hints & Docstrings
|
||||
|
||||
> [!IMPORTANT]
|
||||
> **Canonical Reference:** See [Google-Style Docstrings and Mandatory Type Hints](.github/CONTRIBUTING.md#google-style-docstrings-and-mandatory-type-hints) in CONTRIBUTING.md for complete requirements and examples.
|
||||
|
||||
**Requirements:**
|
||||
|
||||
- MANDATORY type hints for all function parameters and return types
|
||||
- MANDATORY Google-style docstrings for all functions and classes
|
||||
- **Do not duplicate types in docstrings** - types are in the function signature
|
||||
- Target Python version: 3.10+
|
||||
|
||||
## Common Workflows
|
||||
|
||||
### Making Changes
|
||||
|
||||
1. **Setup:** `uv sync --all-groups`
|
||||
2. **Before changes:** Run tests to establish baseline
|
||||
3. **Development:**
|
||||
- Make minimal, focused changes
|
||||
- Follow existing patterns and conventions
|
||||
- Add type hints and docstrings
|
||||
4. **Testing:**
|
||||
- Bug fixes: Write test first, then fix
|
||||
- Features: Test all major use cases
|
||||
- Run: `uv run --no-sync pytest src/ tests/ -n 2 -m "not gpu" --ignore=tests/run_smoke_all_models.py --timeout=240 --durations=50`
|
||||
5. **Quality checks:** `pre-commit run --all-files`
|
||||
6. **Build (if needed):** `uv build`
|
||||
7. **Commit:** Pre-commit hooks run automatically
|
||||
|
||||
### Adding New Model Variants
|
||||
|
||||
> [!IMPORTANT]
|
||||
> **Canonical Reference:** See [Adding a New Model](.github/CONTRIBUTING.md#adding-a-new-model) in CONTRIBUTING.md for detailed guidance.
|
||||
>
|
||||
> Always consult maintainers before implementing new models.
|
||||
|
||||
### Security Considerations
|
||||
|
||||
- **Write secure code:** Avoid injection vulnerabilities (XSS, SQL injection, command injection)
|
||||
- **Validate inputs:** Especially for file paths, URLs, and user-provided data
|
||||
- **No credentials:** Never commit API keys, tokens, or credentials
|
||||
- **Follow OWASP best practices**
|
||||
|
||||
## CI/CD Workflows
|
||||
|
||||
GitHub Actions workflows in `.github/workflows/`:
|
||||
|
||||
- **ci-tests-cpu.yml:** CPU tests across OS/Python versions
|
||||
- **ci-tests-gpu.yml:** GPU-dependent tests
|
||||
- **build-package.yml:** Build and validate distributions
|
||||
- **ci-build-docs.yml:** Documentation builds
|
||||
- **publish-docs.yml:** Deploy docs to GitHub Pages
|
||||
|
||||
**Concurrency:** PRs cancel in-progress runs on new pushes
|
||||
|
||||
## Additional Resources
|
||||
|
||||
- **Documentation:** https://rfdetr.roboflow.com
|
||||
- **Repository:** https://github.com/roboflow/rf-detr
|
||||
- **Issues:** https://github.com/roboflow/rf-detr/issues
|
||||
- **Discord:** https://discord.gg/GbfgXGJ8Bk
|
||||
- **Contributing:** `.github/CONTRIBUTING.md`
|
||||
- **Copilot Instructions:** `.github/copilot-instructions.md`
|
||||
|
||||
---
|
||||
|
||||
**Note:** This file is designed for AI coding agents. For human-readable project information, see README.md. For contribution guidelines, see CONTRIBUTING.md.
|
||||
Reference in New Issue
Block a user