---
paths:
  - "**/*.py"
  - "**/*.pyi"
---
# Python Patterns

> This file extends `common/patterns.md` with Python-specific content.

## Protocol (Duck Typing)

```python
from typing import Protocol

class Repository(Protocol):
    def find_by_id(self, id: str) -> dict | None: ...
    def save(self, entity: dict) -> dict: ...
```

## Dataclasses as DTOs

```python
from dataclasses import dataclass

@dataclass
class CreateUserRequest:
    name: str
    email: str
    age: int | None = None
```

## Context Managers & Generators

- Use context managers (`with` statement) for resource management
- Use generators for lazy evaluation and memory-efficient iteration

## Optional Skill

If the current Pi session exposes a relevant Python patterns skill, load its `SKILL.md` for deeper guidance on decorators, concurrency, or package organization. Do not assume a particular skill is installed.
