AgentSkillsCN

python-core

创建、编写、构建、调试、测试、重构并优化Python 3.10+应用程序,覆盖各个领域(数据科学、后端API、脚本编写、自动化)。使用uv(首选)、poetry或pip管理依赖项。实现类型提示(typing模块、泛型、协议),使用pytest编写测试(固定数据、参数化、模拟),处理pandas DataFrames(创建、选择、分组、合并),运用dataclasses与装饰器,通过日志集成处理错误,并遵循TDD工作流程(红-绿-重构)。配置虚拟环境、pyproject.toml以及静态分析工具(mypy、pyright)。在实现Python特性、修复Bug、编写测试、管理软件包、分析数据,或构建Python项目时使用此功能。

SKILL.md
--- frontmatter
name: python-core
description: Create, write, build, debug, test, refactor, and optimize Python 3.10+ applications across all domains (data science, backend APIs, scripting, automation). Manage dependencies with uv (preferred), poetry, or pip. Implement type hints (typing module, generics, protocols), write tests with pytest (fixtures, parametrize, mocking), work with pandas DataFrames (creation, selection, groupby, merge), use dataclasses and decorators, handle errors with logging integration, and follow TDD workflows (Red-Green-Refactor). Configure virtual environments, pyproject.toml, and static analysis tools (mypy, pyright). Use when implementing Python features, fixing bugs, writing tests, managing packages, analyzing data, or building Python projects.
license: MIT
metadata:
  version: 1.0.0
  audience: developers
  workflow: python-development

Quick Start

Prerequisites:

  • Python 3.10+ installed (python --version)
  • Dependency manager: uv (recommended), poetry, or pip+venv
  • IDE with Python language server (VS Code, PyCharm)

Tools Used: Read, Write, Edit, Bash (for uv/poetry/pip commands), LSP diagnostics

Dependency Management Decision Tree:

code
New project? → Use uv: uv init, uv add, uv sync
Existing poetry? → Use poetry: poetry install, poetry add
Legacy/simple? → Use pip+venv: python -m venv, pip install

Basic Usage:

  1. Set up environment (see decision tree)
  2. Write code with type hints
  3. Write tests first (TDD)
  4. Run tests: pytest
  5. Verify types: mypy .

What I Do

  • Create Python 3.10+ applications (data science, backend, scripting, automation)
  • Manage dependencies with uv, poetry, or pip
  • Implement type hints (typing module, generics, protocols)
  • Write tests with pytest (fixtures, parametrize, mocking)
  • Work with pandas DataFrames (selection, groupby, merge)
  • Use Python patterns (decorators, comprehensions, generators, dataclasses)
  • Handle errors with logging integration
  • Follow TDD workflow (Red-Green-Refactor)

When to Use Me

Use this skill when you:

  • Create, refactor, or debug Python 3.10+ code
  • Set up projects with dependency management (uv, poetry, pip)
  • Implement type hints or fix type errors
  • Write pytest tests (fixtures, parametrize, mocking)
  • Work with pandas DataFrames
  • Use Python patterns (decorators, generators, dataclasses)
  • Handle errors with logging
  • Follow TDD workflows

Python Version Features

VersionFeatures
3.10Pattern matching, union types (|), TypeAlias
3.11Exception groups (except*), Self type
3.12Type parameters (def func[T]), f-string improvements

Quick Reference Tables

Built-in Functions

FunctionPurpose
map(func, iterable)Apply function to each item
filter(func, iterable)Keep items where condition is True
zip(*iterables)Combine iterables element-wise
enumerate(iterable)Add index to iterable

String Operations

OperationExample
f-stringsf"Hello {name}"
.join()", ".join(['a', 'b'])
.split()"a,b".split(",")

Collection Methods

TypeCommon Methods
list.append(), .extend(), .pop(), .sort()
dict.get(), .keys(), .values(), .items()
set.add(), .remove(), .union()

Type Hints Basics

python
from typing import Optional

def greet(name: str) -> str:
    return f"Hello {name}"

def process_items(items: list[int]) -> dict[str, int]:
    return {"count": len(items), "sum": sum(items)}

def find_user(user_id: int) -> Optional[str]:
    return users.get(user_id)

def parse_value(val: str | int) -> int:  # Python 3.10+
    return int(val)

See references/type-hints.md for Generics and Protocols.

TDD Workflow (Red-Green-Refactor)

  1. Red: Write failing test
  2. Green: Write minimal code to pass
  3. Refactor: Improve while keeping tests green
python
# Red: Test fails (function doesn't exist)
def test_total():
    assert calculate_total([10, 20, 30]) == 60

# Green: Make it pass
def calculate_total(items):
    return sum(items)

# Refactor: Add types and edge cases
def calculate_total(items: list[int]) -> int:
    return sum(items) if items else 0

See references/pytest.md for fixtures and mocking.

Error Handling with Logging

python
import logging

logger = logging.getLogger(__name__)

# Try/Except/Finally
try:
    result = risky_operation()
except ValueError as e:
    logger.error(f"Invalid value: {e}")
    raise
finally:
    cleanup_resources()

# Custom Exceptions
class DataValidationError(Exception):
    pass

def validate_data(data: dict) -> None:
    if "required_field" not in data:
        raise DataValidationError("required_field missing")

# Context Manager for cleanup
from contextlib import contextmanager

@contextmanager
def db_connection(url: str):
    conn = connect(url)
    try:
        yield conn
    finally:
        conn.close()

Examples

Example 1: Dataclass with Type Hints

python
from dataclasses import dataclass
from typing import List, Optional

@dataclass
class User:
    id: int
    name: str
    email: str
    tags: List[str] = None
    
    def __post_init__(self):
        if self.tags is None:
            self.tags = []

# Usage
user = User(id=1, name="Alice", email="alice@example.com")
user.tags.append("admin")

Example 2: Decorator Pattern

python
import functools
import time
import logging

logger = logging.getLogger(__name__)

def timing_decorator(func):
    @functools.wraps(func)
    def wrapper(*args, **kwargs):
        start = time.time()
        result = func(*args, **kwargs)
        elapsed = time.time() - start
        logger.info(f"{func.__name__} took {elapsed:.2f}s")
        return result
    return wrapper

@timing_decorator
def slow_function():
    time.sleep(1)
    return "done"

Example 3: List Comprehension with Filtering

python
# Filter and transform in one line
numbers = [1, 2, 3, 4, 5, 6]
even_squares = [x**2 for x in numbers if x % 2 == 0]
# Result: [4, 16, 36]

# Dict comprehension
users = [("alice", 25), ("bob", 30)]
user_dict = {name: age for name, age in users}
# Result: {"alice": 25, "bob": 30}

Example 4: Generator for Memory Efficiency

python
def read_large_file(file_path: str):
    with open(file_path, 'r') as f:
        for line in f:
            yield line.strip()

for line in read_large_file("huge.txt"):
    process(line)

See references/patterns.md for more patterns.

Common Errors

ErrorSolution
ModuleNotFoundErrorRun uv add <package> or pip install <package>
TypeErrorCheck types, add type hints
KeyErrorUse .get('key', default) instead of ['key']
IndentationErrorUse 4 spaces (PEP 8)
AttributeError: 'NoneType'Check for None: if obj is not None:

Related Skills

  • pytest-testing: Fixtures, parametrize, mocking
  • pandas-data-analysis: Advanced DataFrame operations
  • fastapi-backend: REST APIs with FastAPI
  • django-web: Web applications with Django
  • github-actions: CI/CD for Python

References