Currently we have two different format checks for the Python SDK. Most
format checks are handled by yapf, which is nice since it is also capable
of re-writing the code to make it pass the checks done in CI. However we
*also* have some formatting checks still enabled in our .pylintrc [1], and
pylint has no such capability.

Generally yapf's output just passes these pylint format checks, but not
always. For example yapf is lenient about lines over the column limit, and
pylint is not. So things like [2] can happen even on a PR formatted by
yapf. This is frustrating because it requires manual changes.

I experimented with the yapf config to see if we can make it strict about
the column limit, but it doesn't seem to be possible. So instead I'd like
to propose that we just remove the pylint format checks, and rely on yapf's
checks alone.

There are a couple issues here:
- we'd need to be ok with yapf deciding that some lines can be >80
characters
- yapf has no opinion whatsoever about docstrings [3], so the only thing
checking them is pylint. We might work around this by setting up
docformatter [4].

Personally I'm ok with this if it means Python code formatting can be
completely automated with a single script that runs yapf, docformatter, and
isort.

Brian

[1]
https://github.com/apache/beam/blob/2408d0c11337b45e289736d4d7483868e717760c/sdks/python/.pylintrc#L165
[2]
https://ci-beam.apache.org/job/beam_PreCommit_PythonLint_Commit/9088/console
[3] https://github.com/google/yapf/issues/279
[4] https://github.com/myint/docformatter

Reply via email to