skills/eyadsibai/ltk/Python Patterns

Python Patterns

SKILL.md

Python Patterns

Guidance for writing idiomatic, modern Python code.

Modern Python Features (3.9+)

Feature Purpose Key Concept
Type hints Static analysis def func(x: str) -> int:
Dataclasses Structured data Auto __init__, __repr__, etc.
Context managers Resource cleanup with statement guarantees cleanup
Decorators Cross-cutting concerns Wrap functions to add behavior
Async/await Concurrent I/O Non-blocking operations

Type Hints

Modern syntax (3.10+): Use | for unions, built-in types for generics.

Old Modern
Optional[str] str | None
Union[str, int] str | int
List[str] list[str]
Dict[str, int] dict[str, int]

Key concept: Type hints are for tooling (mypy, IDEs) - no runtime enforcement.


Dataclasses vs Alternatives

Use For
@dataclass Mutable data with methods
@dataclass(frozen=True) Immutable, hashable
NamedTuple Lightweight, tuple semantics
TypedDict Dict with known keys
Pydantic Validation, serialization

Context Managers

Use for any resource that needs cleanup: files, connections, locks, transactions.

Pattern: Acquire in __enter__, release in __exit__ (or use @contextmanager with yield)


Decorators

Pattern Use Case
Simple decorator Logging, timing
Decorator with args Configurable behavior
Class decorator Modify class definition
@functools.wraps Preserve function metadata

Async Python

When to use: I/O-bound operations (HTTP requests, DB queries, file I/O)

When NOT to use: CPU-bound operations (use multiprocessing instead)

Concept Purpose
async def Define coroutine
await Suspend until complete
asyncio.gather() Run multiple concurrently
async with Async context manager
async for Async iteration

Pythonic Idioms

Instead of Use
if len(x) > 0: if x:
for i in range(len(x)): for item in x: or enumerate()
d.has_key(k) k in d
try/if exists (LBYL) try/except (EAFP)
Manual swap a, b = b, a

Project Structure

my_project/
├── src/my_package/     # Source code
├── tests/              # Test files
├── pyproject.toml      # Project config
└── README.md

Key concept: Use src/ layout to prevent import confusion.


Tooling

Tool Purpose
ruff Fast linter + formatter
mypy Type checking
pytest Testing
uv/pip Dependencies

Resources

Weekly Installs
0
Repository
eyadsibai/ltk
First Seen
Jan 1, 1970