Skip to main content

Validate your Python file format with yapf

Project description

pytest-yapf3

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.

Install

Version Python Format Status Download MIT

pip install pytest-yapf3

Requires:

  • 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'.

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:

  • 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

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

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~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.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.

Source Distribution

pytest-yapf3-0.6.0.tar.gz (19.8 kB view details)

Uploaded Source

Built Distribution

pytest_yapf3-0.6.0-py3-none-any.whl (6.2 kB view details)

Uploaded Python 3

File details

Details for the file pytest-yapf3-0.6.0.tar.gz.

File metadata

  • Download URL: pytest-yapf3-0.6.0.tar.gz
  • Upload date:
  • Size: 19.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.7.1

File hashes

Hashes for pytest-yapf3-0.6.0.tar.gz
Algorithm Hash digest
SHA256 56897805962e2fe9dc4984c5adb50d610c4657488898f2823d7f65c176ce2861
MD5 0ce35730797ce2c48b299fb1e0f2e743
BLAKE2b-256 8162270cfeb7184267bce9ff62a369e2ad7e31892be7c615cc9bb94c528b7692

See more details on using hashes here.

File details

Details for the file pytest_yapf3-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: pytest_yapf3-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 6.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.7.1

File hashes

Hashes for pytest_yapf3-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 80a0c57d15253563a4fce087ac6dde3cc0df70500fc1387a45bb63ab402fb84a
MD5 695b6544e8818ef69bd575497be2aded
BLAKE2b-256 360828803e7e15bc5633665faf7ad6ed94faba1af61091150ac434d7310eef5f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page