View on GitHub

pytest-yapf3

Validate your Python file format with yapf.

pytest-yapf3

Python PyTest 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.

Install

Version Python Format Status Download MIT

pip install pytest-yapf3

Requires:

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

Usage

Modify setup.cfg (or pytest.ini):

[tool:pytest]
addopts =
    --yapf
    --yapfdiff
yapf-ignore =
    setup.py
    src/package/auto_generated/**.py

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:

Features and Todos

Develop

Prepare the environment:

pipenv install --dev
pipenv shell

Run test:

pytest

Badge

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

Markdown (README.md)

[![Code style: yapf](https://img.shields.io/badge/code%20style-yapf-blue)](https://github.com/google/yapf)

reStructuredText (README.rst)

.. image:: https://img.shields.io/badge/code%20style-yapf-blue
    :target: https://github.com/google/yapf
    :alt: Code style: yapf

License

The MIT License (MIT)

Copyright (c) 2019~2023 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.