Skip to main content

Validate your Python file format with yapf

Project description


Travis AppVeyor codecov CII Best Practices Code style: yapf

Validate your Python file format with yapf.

This is a pytest plugin, which make sure your python file is exactly formatted by yapf, or it will crash when running pytest.


Version Python Format Status Download MIT

pip install pytest-yapf3


  • Python 3.6 or above
  • Pytest 5.4 or above

If someone use this with Python 3.5 or Pytest less than 5.4, set 'pytest-yapf3<0.6.0'.


Modify setup.cfg (or pytest.ini):

addopts =
yapf-ignore =

Add --yapf to pytest configuration addopts. If run with pytest -m yapf, only yapf is checked.

By default, only line summaries is displayed. With an optional --yapfdiff, a full text of yapf -d is displayed. If not configured here, pytest --yapfdiff will also work.

An optional yapf-ignore is supported. Each line specifies a glob pattern of files which should not check yapf.

The pytest will cache success results of pytest-yapf3, and will not check again if files not changed. Sometimes you may want to disable it. There are 2 ways:

  • pytest -p no:cacheprovider This may crash if any other pytest plugin not supports.
  • rm -rf .pytest_cache/v/yapf This is ugly, but safe for any environment.

Features and Todos

  • <input type="checkbox" checked="" disabled="" /> Basic support to validate yapf.
  • <input type="checkbox" checked="" disabled="" /> Fix the diff line count error and improve the performance.
  • <input type="checkbox" checked="" disabled="" /> Display YAPF-check as the error session name.
  • <input type="checkbox" checked="" disabled="" /> Display YAPF in pytest --verbose.
  • <input type="checkbox" checked="" disabled="" /> Add yapf as a marker to enable pytest -m yapf.
  • <input type="checkbox" checked="" disabled="" /> Support yapf-ignore to ignore specified files.
  • <input type="checkbox" checked="" disabled="" /> Skip running if a file is not changed.
  • <input type="checkbox" checked="" disabled="" /> 100% test coverage.


Prepare the environment:

pipenv install --dev
pipenv shell

Run test:



Like black, if your project always pass yapf checking provided by this project, you can use an unofficial badge to show off.

Markdown (

[![Code style: yapf](](

reStructuredText (README.rst)

.. image::
    :alt: Code style: yapf


The MIT License (MIT)

Copyright (c) 2019~2020 Yan QiDong

This repository is forked from pytest-yapf in 2019, which is not maintained since 2017. Besides extra features, the project structure is adjusted, and the code is enhanced to pass linters like flake8, pylint and, of course, yapf.

The 3 in pytest-yapf3 means this package supports Python 3 only.

Change Log

Release 0.6.1

  • Fix cache missing.

Release 0.6.0

  • Upgrade pytest to 5.4+, fix a warning.
  • Support python 3.6+ only, abandon 3.5
  • Use Pipfile with pipenv

Release 0.5.1

  • Fix coverage missing lines.
  • 100% test coverage.
  • Fix a crash when yapf crash.
  • Change development status to stable.

Release 0.5.0

  • Skip running if a file is not changed.
  • Add more usage description in README.

Release 0.4.0

  • Add yapf as a pytest marker to enable pytest -m yapf
  • Support yapf-ignore to ignore specified files
  • Fix a probabilistic issue caused by \r

Release 0.3.0

  • Display YAPF-check as the error session name
  • Display ::YAPF in pytest --verbose

Release 0.2.0

Since forked from pytest-yapf 0.1.1, there are some improvements:

  • Restructure the project and rewrite documents
  • Support Python 3.4+ only
  • Add linters to pytest, and fix their errors
  • Fix the line count error
  • Change build configurations in Travis and AppVeyor
  • Support coverage and displayed in codecov

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for pytest-yapf3, version 0.6.1
Filename, size File type Python version Upload date Hashes
Filename, size pytest_yapf3-0.6.1-py3-none-any.whl (6.2 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size pytest-yapf3-0.6.1.tar.gz (20.1 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page