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 從公開儲存庫中收錄這些內容。

檢舉或申請下架