Back to list
eyadsibai

python-patterns

by eyadsibai

0🍴 0📅 Jan 15, 2026

SKILL.md


name: Python Patterns description: This skill should be used when the user asks about "Python best practices", "Pythonic code", "Python patterns", "Python idioms", "type hints", "dataclasses", "async Python", "Python decorators", "context managers" version: 1.0.0

Python Patterns

Guidance for writing idiomatic, modern Python code.

Modern Python Features (3.9+)

FeaturePurposeKey Concept
Type hintsStatic analysisdef func(x: str) -> int:
DataclassesStructured dataAuto __init__, __repr__, etc.
Context managersResource cleanupwith statement guarantees cleanup
DecoratorsCross-cutting concernsWrap functions to add behavior
Async/awaitConcurrent I/ONon-blocking operations

Type Hints

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

OldModern
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

UseFor
@dataclassMutable data with methods
@dataclass(frozen=True)Immutable, hashable
NamedTupleLightweight, tuple semantics
TypedDictDict with known keys
PydanticValidation, 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

PatternUse Case
Simple decoratorLogging, timing
Decorator with argsConfigurable behavior
Class decoratorModify class definition
@functools.wrapsPreserve 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)

ConceptPurpose
async defDefine coroutine
awaitSuspend until complete
asyncio.gather()Run multiple concurrently
async withAsync context manager
async forAsync iteration

Pythonic Idioms

Instead ofUse
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 swapa, 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

ToolPurpose
ruffFast linter + formatter
mypyType checking
pytestTesting
uv/pipDependencies

Resources

Score

Total Score

50/100

Based on repository quality metrics

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

0/10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

Reviews

💬

Reviews coming soon