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.md
source content

Python

Modern Python development with type hints, async/await, and best practices.

When to Use

  • Working with
    .py
    files
  • 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
    pyproject.toml
    for project configuration
  • Use virtual environments (
    venv
    ,
    poetry
    )
  • Use generators for large datasets

Don't:

  • Use mutable default arguments (
    def f(x=[]
    )
  • Use
    import *
    (pollutes namespace)
  • Catch bare
    except:
    (catch specific exceptions)
  • Use
    assert
    for input validation

Troubleshooting

ErrorCauseSolution
ModuleNotFoundError
Package not installedRun
pip install package
IndentationError
Mixed tabs/spacesUse consistent 4-space indentation
TypeError: unhashable type
Using list as dict keyUse tuple instead

References