docs/content/guides/python/lint-format-typing.md

2.8 KiB

title linkTitle weight keywords description aliases
Linting, formatting, and type checking for Python Linting and typing 25 Python, linting, formatting, type checking, ruff, pyright Learn how to set up linting, formatting and type checking for your Python application.
/language/python/lint-format-typing/

Prerequisites

Complete Develop your app.

Overview

In this section, you'll learn how to set up code quality tools for your Python application. This includes:

  • Linting and formatting with Ruff
  • Static type checking with Pyright
  • Automating checks with pre-commit hooks

Linting and formatting with Ruff

Ruff is an extremely fast Python linter and formatter written in Rust. It replaces multiple tools like flake8, isort, and black with a single unified tool.

Create a pyproject.toml file:

[tool.ruff]
target-version = "py312"

[tool.ruff.lint]
select = [
    "E",  # pycodestyle errors
    "W",  # pycodestyle warnings
    "F",  # pyflakes
    "I",  # isort
    "B",  # flake8-bugbear
    "C4",  # flake8-comprehensions
    "UP",  # pyupgrade
    "ARG001", # unused arguments in functions
]
ignore = [
    "E501",  # line too long, handled by black
    "B008",  # do not perform function calls in argument defaults
    "W191",  # indentation contains tabs
    "B904",  # Allow raising exceptions without from e, for HTTPException
]

Using Ruff

Run these commands to check and format your code:

# Check for errors
ruff check .

# Automatically fix fixable errors
ruff check --fix .

# Format code
ruff format .

Type checking with Pyright

Pyright is a fast static type checker for Python that works well with modern Python features.

Add Pyright configuration in pyproject.toml:

[tool.pyright]
typeCheckingMode = "strict"
pythonVersion = "3.12"
exclude = [".venv"]

Running Pyright

To check your code for type errors:

pyright

Setting up pre-commit hooks

Pre-commit hooks automatically run checks before each commit. The following .pre-commit-config.yaml snippet sets up Ruff:

  https: https://github.com/charliermarsh/ruff-pre-commit
  rev: v0.2.2
  hooks:
    - id: ruff
      args: [--fix]
    - id: ruff-format

To install and use:

pre-commit install
git commit -m "Test commit"  # Automatically runs checks

Summary

In this section, you learned how to:

  • Configure and use Ruff for linting and formatting
  • Set up Pyright for static type checking
  • Automate checks with pre-commit hooks

These tools help maintain code quality and catch errors early in development.

Next steps

  • Configure GitHub Actions to run these checks automatically
  • Customize linting rules to match your team's style preferences
  • Explore advanced type checking features