Awesome-omni-skill python
Python programming with type hints, async/await, decorators, and package management. Use for .py files and data science.
install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data-ai/python" ~/.claude/skills/diegosouzapw-awesome-omni-skill-python && rm -rf "$T"
manifest:
skills/data-ai/python/SKILL.mdsource content
Python
Modern Python development with type hints, async/await, and best practices.
When to Use
- Working with
files.py - Building APIs with FastAPI/Django
- Data analysis with pandas/numpy
- Scripting and automation
Quick Start
from typing import Optional, List def process_items( items: list[str], transform: Optional[callable] = None, ) -> list[str]: if transform: return [transform(item) for item in items] return items
Core Concepts
Type Hints
from typing import TypeVar, Generic from collections.abc import Callable, Iterator def process_items( items: list[str], transform: Callable[[str], str] | None = None, ) -> list[str]: if transform: return [transform(item) for item in items] return items # Use TypeVar for generics T = TypeVar('T') def first(items: list[T]) -> T | None: return items[0] if items else None
Dataclasses & Pydantic
from dataclasses import dataclass, field from pydantic import BaseModel, Field # Dataclass for simple data containers @dataclass class User: name: str email: str tags: list[str] = field(default_factory=list) # Pydantic for validation class UserCreate(BaseModel): name: str = Field(..., min_length=1, max_length=100) email: str = Field(..., pattern=r'^[\w\.-]+@[\w\.-]+\.\w+$')
Common Patterns
Async Patterns
import asyncio async def fetch_all(urls: list[str]) -> list[Response]: async with aiohttp.ClientSession() as session: tasks = [fetch_one(session, url) for url in urls] return await asyncio.gather(*tasks) # Use TaskGroup for structured concurrency (3.11+) async def process_batch(items: list[Item]) -> list[Result]: results = [] async with asyncio.TaskGroup() as tg: for item in items: tg.create_task(process_item(item, results)) return results
Context Managers
from contextlib import contextmanager, asynccontextmanager @contextmanager def managed_resource() -> Iterator[Resource]: resource = Resource() try: yield resource finally: resource.cleanup()
Best Practices
Do:
- Use type hints for function signatures
- Use
for project configurationpyproject.toml - Use virtual environments (
,venv
)poetry - Use generators for large datasets
Don't:
- Use mutable default arguments (
)def f(x=[] - Use
(pollutes namespace)import * - Catch bare
(catch specific exceptions)except: - Use
for input validationassert
Troubleshooting
| Error | Cause | Solution |
|---|---|---|
| Package not installed | Run |
| Mixed tabs/spaces | Use consistent 4-space indentation |
| Using list as dict key | Use tuple instead |