Python
Python programming with type hints, async/await, decorators, and package management. Use for .py files and data science.From its SKILL.md
npx -y skills add G1Joshi/Agent-Skills --skill pythonAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 12 stars12 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
3.3 KB, 744 tokens by cl100k_base, as published. Nobody here has run it
Python
Modern Python development with type hints, async/await, and best practices.
When to Use
- Working with
.pyfiles - 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.tomlfor 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
assertfor 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
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.