Skip to content

Lints Python code blocks in Markdown files using flake8

License

Notifications You must be signed in to change notification settings

johnfraney/flake8-markdown

Repository files navigation

Flake8 Markdown

PyPI PyPI PyPI Tox

Flake8 Markdown lints GitHub-style Python code blocks in Markdown files using flake8.

This package helps improve a Python project's documentation by ensuring that code samples are error-free.

Features

  • Lints code blocks containing regular Python and Python interpreter code (pycon)
  • pre-commit hook to lint on commit

Installation

Flake8 Markdown can be installed from PyPI using pip or your package manager of choice:

pip install flake8-markdown

Usage

CLI

You can use Flake8 Markdown as a CLI tool using the flake8-markdown command.

flake8-markdown accepts one or more globs as its arguments.

Example:

$ flake8-markdown "tests/samples/*.md"
tests/samples/emphasized_lines.md:6:1: F821 undefined name 'emphasized_imaginary_function'
tests/samples/basic.md:8:48: E999 SyntaxError: EOL while scanning string literal
tests/samples/basic.md:14:7: F821 undefined name 'undefined_variable'

pre-commit hook

You can also add flake8-markdown to your project using pre-commit. When configured, any staged Markdown files will be linted using flake8-markdown once you run git commit.

To enable this hook in your local repository, add the following repo to your .pre-commit-config.yaml file:

# .pre-commit-config.yaml
repos:
  - repo: https://github.com/johnfraney/flake8-markdown
    rev: v0.5.0
    hooks:
      - id: flake8-markdown

Code of Conduct

Everyone interacting in the project's codebases, issue trackers, chat rooms, and mailing lists is expected to follow the PyPA Code of Conduct.