projectrules.ai

__init__.py Standards

PythonFastAPIPackage ManagementCode OrganizationDocumentation

Description

Init file conventions for Python packages

Globs

**/__init__.py
---
description: Init file conventions for Python packages
globs: **/__init__.py
---

# __init__.py Standards

1. **Explicit Exports**
   - Use `__all__` to declare public API
   - Avoid wildcard imports (`from . import *`)
   - Maintain import compatibility with FastAPI's module system

2. **Package Organization**
   ```python
   # Good
   __all__ = ["HealthResponse", "HealthStatus"]
   
   # Bad
   from .health import *
   ```

3. **Documentation**
   - Include module docstrings for package-level documentation
   - Reference FastAPI's module structure patterns([1](mdc:https:/fastapi.tiangolo.com/tutorial/bigger-applications))

4. **Type Re-exports**
   ```python
   # For type re-exporting
   if TYPE_CHECKING:
       from .health import HealthStatus
   else:
       __all__.append("HealthStatus")
   ```

5. **FastAPI Specifics**
   - Follow FastAPI's module discovery pattern:
   ```python
   # app/api/v1/__init__.py
   from .health import router as health_router
   
   __all__ = ["health"]
   ```

## E2E Test Directory Structure
```tests/e2e/
├── __init__.py          # Empty init
├── conftest.py          # E2E specific fixtures
├── pages/
│   ├── __init__.py      # Empty init
│   ├── base_page.py     # Base page object
│   └── feature_page.py  # Feature-specific pages
└── test_feature.py      # Feature tests
```
__init__.py Standards