---
paths:
  - "src/**/*.py"
  - "tests/**/*.py"
---

# Imports rule

- **`from __future__ import annotations`** is the first import in every module.
- **Import order** (ruff `I` enforces, `make format` fixes): stdlib → third-party
  → first-party (`everalgo`, then `everos`). One group per blank-line-separated block.
- **Absolute imports** for cross-package references (`from everos.memory import ...`).
  Relative imports (`from .models import ...`) only **within** a package, typically
  in its `__init__.py`.
- **`TYPE_CHECKING` guard** for import cycles and type-only imports:
  ```python
  from typing import TYPE_CHECKING
  if TYPE_CHECKING:
      from everos.config import Settings
  ```
- Never import a private internal across a package boundary — respect the
  `import-linter` contracts (see [architecture.md](architecture.md)).
