Skip to main content

pyfltr: Python Formatters, Linters, and Testers Runner.

Project description

pyfltr: Python Formatters, Linters, and Testers Runner.

Code style: black Lint&Test PyPI version

Pythonの各種ツールをまとめて呼び出すツール。

  • Formatters
    • pyupgrade
    • isort
    • black
  • Linters
    • pflake8
    • mypy
    • pylint
  • Testers
    • pytest

コンセプト

  • 各種ツールをまとめて呼び出したい
  • 各種ツールのバージョンにはできるだけ依存したくない (ので設定とかは面倒見ない)
  • exclude周りは各種ツールで設定方法がバラバラなのでできるだけまとめて解消したい (のでpyfltr側で解決してツールに渡す)
  • blackやisortはファイルを修正しつつエラーにもしたい (CIとかを想定) (pyupgradeはもともとそういう動作)
  • Q: pysenでいいのでは? A: それはそう

主な使い方

通常

$ pyfltr [files and/or directories ...]

対象を指定しなければカレントディレクトリを指定したのと同じ扱い。

*.*などを指定した場合も、pytest以外は*.pyのみ、pytestは*_test.pyのみに対して実行される。

終了コード:

  • 0: Formattersによるファイル変更無し、かつLinters/Testersでのエラー無し
  • 1: 上記以外

特定のツールのみ実行

$ pyfltr --commands=pyupgrade,isort,black,pflake8,mypy,pylint,pytest [files and/or directories ...]

カンマ区切りで実行するツールだけ指定する。

設定

pyproject.tomlで設定する。

[tool.pyfltr]
pyupgrade_args = ["--py38-plus"]
pylint_args = ["--jobs=4"]
extend-exclude = ["foo", "bar.py"]

設定項目

設定項目と既定値はpyfltr --generate-configで確認可能。

  • {command} : コマンドの有効/無効
  • {command}_path : 実行するコマンド
  • {command}_args : 追加のコマンドライン引数
  • exclude : 除外するファイル名パターン(既定値あり)
  • extend-exclude : 除外するファイル名パターン(既定値は空)

各種設定例

pyproject.toml

...

[tool.poetry.dev-dependencies]
pyfltr = "*"

[tool.pyfltr]
pyupgrade_args = ["--py38-plus"]
pylint_args = ["--jobs=4"]

...

.pre-commit-config.yaml

  - repo: local
    hooks:
      - id: system
        name: pyfltr
        entry: poetry run pyfltr --commands=pyupgrade,isort,black,pflake8
        types: [python]
        require_serial: true
        language: system

CI例

  - poetry install --no-interaction
  - poetry run pyfltr

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

pyfltr-1.0.2.tar.gz (7.3 kB view hashes)

Uploaded Source

Built Distribution

pyfltr-1.0.2-py3-none-any.whl (7.0 kB view hashes)

Uploaded Python 3

Supported by

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