Python Pro

作者 jeffallan1be15d8064f8MIT11K 个星标收录于 2026年10月8日更新于 2026年10月8日仓库5天前更新

Use when building Python 3.11+ applications requiring type safety, async programming, or robust error handling. Generates type-annotated Python code, configures mypy in strict mode, writes pytest test suites with fixtures and mocking, and validates code with black and ruff. Invoke for type hints, async/await patterns, dataclasses, dependency injection, logging configuration, and structured error handling.

AI 生成的概览

指导编写类型安全、异步优先的 Python 3.11+ 代码,并用 pytest 测试及严格 mypy、black、ruff 校验。

功能
该技能提供编写现代 Python 3.11+ 应用的指导,涵盖完整类型标注、async/await 模式、数据类、依赖注入、日志配置和结构化错误处理。它定义了分析代码库、设计接口、实现代码、编写带 fixture 与 mock 的 pytest 测试套件,以及用 mypy --strict、black 和 ruff 校验的工作流程。它还指向随附的类型系统、异步模式、标准库、测试和打包参考文档,并规定输出模板,例如模块文件、测试文件和类型检查确认。
适用场景
适用于构建或扩展需要类型安全、异步 I/O 或健壮错误处理的 Python 3.11+ 应用。也适合搭建 pytest 测试套件、配置严格 mypy,或应用数据类、推导式和上下文管理器等 Pythonic 模式。
运行要求
需要 Python 3.11+ 环境,并可使用 mypy、pytest、black 和 ruff 进行校验,同时需要随附的参考 Markdown 文件。该技能不包含脚本,仅为说明性指令。

Python Pro

Modern Python 3.11+ specialist focused on type-safe, async-first, production-ready code.

When to Use This Skill

  • Writing type-safe Python with complete type coverage
  • Implementing async/await patterns for I/O operations
  • Setting up pytest test suites with fixtures and mocking
  • Creating Pythonic code with comprehensions, generators, context managers
  • Building packages with Poetry and proper project structure
  • Performance optimization and profiling

Core Workflow

  1. Analyze codebase — Review structure, dependencies, type coverage, test suite
  2. Design interfaces — Define protocols, dataclasses, type aliases
  3. Implement — Write Pythonic code with full type hints and error handling
  4. Test — Create comprehensive pytest suite with >90% coverage
  5. Validate — Run mypy --strict, black, ruff
    • If mypy fails: fix type errors reported and re-run before proceeding
    • If tests fail: debug assertions, update fixtures, and iterate until green
    • If ruff/black reports issues: apply auto-fixes, then re-validate

Reference Guide

Load detailed guidance based on context:

TopicReferenceLoad When
Type Systemreferences/type-system.mdType hints, mypy, generics, Protocol
Async Patternsreferences/async-patterns.mdasync/await, asyncio, task groups
Standard Libraryreferences/standard-library.mdpathlib, dataclasses, functools, itertools
Testingreferences/testing.mdpytest, fixtures, mocking, parametrize
Packagingreferences/packaging.mdpoetry, pip, pyproject.toml, distribution

Constraints

MUST DO

  • Type hints for all function signatures and class attributes
  • PEP 8 compliance with black formatting
  • Comprehensive docstrings (Google style)
  • Test coverage exceeding 90% with pytest
  • Use X | None instead of Optional[X] (Python 3.10+)
  • Async/await for I/O-bound operations
  • Dataclasses over manual init methods
  • Context managers for resource handling

MUST NOT DO

  • Skip type annotations on public APIs
  • Use mutable default arguments
  • Mix sync and async code improperly
  • Ignore mypy errors in strict mode
  • Use bare except clauses
  • Hardcode secrets or configuration
  • Use deprecated stdlib modules (use pathlib not os.path)

Code Examples

Type-annotated function with error handling

python
from pathlib import Path
def read_config(path: Path) -> dict[str, str]:    """Read configuration from a file.
    Args:        path: Path to the configuration file.
    Returns:        Parsed key-value configuration entries.
    Raises:        FileNotFoundError: If the config file does not exist.        ValueError: If a line cannot be parsed.    """    config: dict[str, str] = {}    with path.open() as f:        for line in f:            key, _, value = line.partition("=")            if not key.strip():                raise ValueError(f"Invalid config line: {line!r}")            config[key.strip()] = value.strip()    return config

Dataclass with validation

python
from dataclasses import dataclass, field
@dataclassclass AppConfig:    host: str    port: int    debug: bool = False    allowed_origins: list[str] = field(default_factory=list)
    def __post_init__(self) -> None:        if not (1 <= self.port <= 65535):            raise ValueError(f"Invalid port: {self.port}")

Async pattern

python
import asyncioimport httpx
async def fetch_all(urls: list[str]) -> list[bytes]:    """Fetch multiple URLs concurrently."""    async with httpx.AsyncClient() as client:        tasks = [client.get(url) for url in urls]        responses = await asyncio.gather(*tasks)        return [r.content for r in responses]

pytest fixture and parametrize

python
import pytestfrom pathlib import Path
@pytest.fixturedef config_file(tmp_path: Path) -> Path:    cfg = tmp_path / "config.txt"    cfg.write_text("host=localhost\nport=8080\n")    return cfg
@pytest.mark.parametrize("port,valid", [(8080, True), (0, False), (99999, False)])def test_app_config_port_validation(port: int, valid: bool) -> None:    if valid:        AppConfig(host="localhost", port=port)    else:        with pytest.raises(ValueError):            AppConfig(host="localhost", port=port)

mypy strict configuration (pyproject.toml)

toml
[tool.mypy]python_version = "3.11"strict = truewarn_return_any = truewarn_unused_configs = truedisallow_untyped_defs = true

Clean mypy --strict output looks like:

Success: no issues found in 12 source files

Any reported error (e.g., error: Function is missing a return type annotation) must be resolved before the implementation is considered complete.

Output Templates

When implementing Python features, provide:

  1. Module file with complete type hints
  2. Test file with pytest fixtures
  3. Type checking confirmation (mypy --strict passes)
  4. Brief explanation of Pythonic patterns used

Knowledge Reference

Python 3.11+, typing module, mypy, pytest, black, ruff, dataclasses, async/await, asyncio, pathlib, functools, itertools, Poetry, Pydantic, contextlib, collections.abc, Protocol

Maintained by @jeffallan, Principal Consultant at Synergetic Solutions

Documentation

来源与署名

来源:jeffallan/claude-skills位于skills/python-pro提交1be15d8

许可证: MIT

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架