===PYTHON_STYLE=== META: TYPE::SKILL VERSION::"1.0" STATUS::ACTIVE PURPOSE::"Python code style guidelines for HestAI MCP development" DOMAIN::HEPHAESTUS[craftsmanship]⊕ATHENA[precision]
§1::TYPE_HINTS REQUIREMENT::all_functions_require_type_hints[enforced_by_mypy] FORWARD_REFS::"from future import annotations" PREFER::[list,dict,set] AVOID::[List,Dict,Set][typing_module_deprecated] EXAMPLE::"def process(items: list[str]) -> dict[str, int]:"
§2::IMPORTS STYLE::absolute_imports_from_hestai_mcp ORDERING::ruff_handles_isort_style GROUPS::[ stdlib::first, third_party::second, local::third ] EXAMPLE::[ "from pathlib import Path", "from pydantic import BaseModel", "from hestai_mcp.schemas import SessionConfig" ]
§3::ERROR_HANDLING EXCEPTIONS::raise_specific[not_generic_Exception] DOCUMENTATION::document_exceptions_in_docstrings PATTERN::[ "try:", " result = risky_operation()", "except SpecificError as e:", " logger.error(f'Operation failed: {e}')", " raise" ]
§4::DOCSTRINGS STYLE::Google_style REQUIRED::public_functions_and_classes SECTIONS::[Args,Returns,Raises] EXAMPLE::[ """"Process items and return counts.", "", "Args:", " items: List of items to process.", " strict: If True, raise on invalid items.", "", "Returns:", " Dictionary mapping item names to counts.", "", "Raises:", " ValueError: If items is empty and strict is True.", """"" ]
§5::LINE_LENGTH MAX::100_characters ENFORCEMENT::[black,ruff]
§6::QUALITY_GATES COMMANDS::[ "python -m ruff check src tests scripts", "python -m black --check src tests scripts", "python -m mypy src" ] FIX_COMMANDS::[ "python -m black src tests scripts", "python -m ruff check --fix src tests scripts" ]
===END===