From c0d423b8739eebaefc08d96672d8f5459a2b7e8a Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Sun, 12 Jan 2020 04:08:20 +0100 Subject: [PATCH] GitHub Action lint Python code for syntax errors (#4688) * GitHub Action lint Python code for syntax errors https://flake8.pycqa.org/en/latest/user/error-codes.html On the flake8 test selection, this PR does _not_ focus on "_style violations_" (the majority of flake8 error codes that [__psf/black__](https://github.com/psf/black) can autocorrect). Instead these tests are focus on runtime safety and correctness: * E9 tests are about Python syntax errors usually raised because flake8 can not build an Abstract Syntax Tree (AST). Often these issues are a sign of unused code or code that has not been ported to Python 3. These would be compile-time errors in a compiled language but in a dynamic language like Python they result in the script halting/crashing on the user. * F63 tests are usually about the confusion between identity and equality in Python. Use ==/!= to compare str, bytes, and int literals is the classic case. These are areas where __a == b__ is True but __a is b__ is False (or vice versa). Python >= 3.8 will raise SyntaxWarnings on these instances. * F7 tests logic errors and syntax errors in type hints * F82 tests are almost always _undefined names_ which are usually a sign of a typo, missing imports, or code that has not been ported to Python 3. These also would be compile-time errors in a compiled language but in Python a __NameError__ is raised which will halt/crash the script on the user. * Force a retest * Rename start_rpc_server_to_tracker.py to start_rpc_server_to_tracker.sh This is a bash file, not a Python file. --- .github/workflows/main.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 89db1c2ac861..0dce59719a24 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -16,7 +16,7 @@ # under the License. # GH actions. -# We use it to cover windows and mac build +# We use it to cover windows and mac builds # Jenkins is still the primary CI name: WinMacBuild @@ -40,6 +40,12 @@ jobs: steps: - uses: actions/checkout@v2 + - uses: actions/setup-python@v1 + - name: Lint Python + if: matrix.os == 'macOS-latest' + run: | + pip install flake8 + flake8 . --count --select=E9,F63,F7 --show-source --statistics - name: Initialize submodules run: git submodule update --recursive --init