python

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

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "python" with this command: npx skills add g1joshi/agent-skills/g1joshi-agent-skills-python

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

Error Cause Solution

ModuleNotFoundError

Package not installed Run pip install package

IndentationError

Mixed tabs/spaces Use consistent 4-space indentation

TypeError: unhashable type

Using list as dict key Use tuple instead

References

  • Python Official Docs

  • Real Python

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

python

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

typescript

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

template

No summary provided by upstream source.

Repository SourceNeeds Review