Python Code Style & Documentation

- Setting up linting and formatting for a new project

What Is Python Code Style & Documentation?

The "Python Code Style & Documentation" skill is a comprehensive approach to ensuring that Python codebases are maintainable, consistent, and easy to collaborate on. This skill combines best practices for code formatting, naming conventions, linting, static analysis, and in-code documentation. These standards are enforced and automated through modern Python tools such as ruff for linting and formatting, and mypy or pyright for type checking.

By applying this skill, developers can write code that is not only functionally correct but also readable, predictable, and straightforward for others to understand or extend. The skill is particularly relevant in collaborative environments or open-source projects, where maintaining a unified code style and comprehensive documentation is crucial for long-term success.

Why Use Python Code Style & Documentation?

Adhering to consistent code style and documentation standards provides multiple benefits:

  • Readability: Clean and consistently formatted code is easier to read and review, reducing onboarding time for new contributors.
  • Maintainability: Well-documented and stylistically consistent code simplifies refactoring and debugging.
  • Collaboration: Teams can work together more efficiently when everyone adheres to the same conventions and documentation practices.
  • Error Prevention: Linting and static analysis tools catch common mistakes early in the development process.
  • Professionalism: Demonstrates a high standard of software development, which is important for both internal and open-source projects.

Neglecting these aspects can lead to technical debt, misunderstandings, and brittle codebases that are difficult to evolve.

How to Use Python Code Style & Documentation

This skill involves a combination of initial setup, ongoing usage, and active review. Below are the core steps and concepts to effectively use this skill in your Python projects.

1. Automated Formatting and

Linting

Set up automated tools to enforce code style and catch errors as you write code.

Install Tools:

pip install ruff mypy

Configure in pyproject.toml:

[tool.ruff]
line-length = 120
target-version = "py312"  # Adjust based on your project's minimum Python version

[tool.mypy]
strict = true
  • ruff is a fast, all-in-one linter and formatter that supports most of PEP 8 and additional plugins.
  • mypy enables type checking, enforcing type annotations and catching potential bugs.

Usage Example:

ruff check .
ruff format .
mypy src/

2. Consistent Naming

Conventions

Follow PEP 8 naming conventions for all identifiers:

  • Functions and variables: snake_case
  • Classes and exceptions: CamelCase
  • Constants: UPPER_CASE

Example:

MAX_CONNECTIONS = 10

class DataProcessor:
    def process_data(self, input_data: list) -> list:
        # Function implementation
        pass

3. Documentation as

Code

Maintain up-to-date docstrings for all public modules, classes, and functions. Use PEP 257 conventions and include type information in signatures.

Example:

def fetch_data(url: str, timeout: int = 5) -> dict:
    """
    Fetch data from the specified URL.

    Args:
        url: The endpoint to fetch data from.
        timeout: Timeout duration in seconds.

    Returns:
        Parsed JSON response as a dictionary.
    """
    # Function implementation

4. Type

Annotations

Use type hints for all public interfaces to improve code clarity and enable static analysis.

Example:

def add_numbers(a: int, b: int) -> int:
    return a + b

Type annotations help both humans and tools understand the intended usage of your code.

When to Use This Skill

Apply this skill in the following scenarios:

  • Setting up a new Python project: Configure linting, formatting, and type checking from the start.
  • Writing new code: Always follow naming conventions, add type hints, and supply comprehensive docstrings.
  • Reviewing code: Check for adherence to style, documentation, and type annotation standards.
  • Establishing team standards: Use this skill as a reference when defining or updating team-wide coding guidelines.
  • Writing or updating documentation: Ensure docstrings and external documentation are clear, up-to-date, and follow conventions.
  • Configuring tools: Set up or review the configuration of ruff, mypy, or pyright for your project.

Important Notes

  • Tool Selection: ruff is rapidly becoming the standard for Python linting and formatting. It is faster and more comprehensive than older tools like flake8 and black.
  • Configuration: Always define style and linting rules in a project-level file, such as pyproject.toml, to ensure consistency across all contributors.
  • Continuous Enforcement: Integrate linting and type-checking into your CI/CD pipelines to automate enforcement.
  • Documentation Quality: High-quality docstrings are as important as code correctness. Treat them as part of the API contract.
  • Type Safety: Type hints are not enforced at runtime but are invaluable for static analysis and editor support.

By mastering the Python Code Style & Documentation skill, you ensure your codebase remains clean, maintainable, and professional, reducing bugs and making collaboration seamless.