From 04a1eeb7c7be36b356410eb279c83a6c9f2d8c30 Mon Sep 17 00:00:00 2001 From: MarcoGorelli <> Date: Thu, 17 Nov 2022 16:33:06 +0000 Subject: [PATCH 1/7] ignore no-else-*, comment some checks as intentionally turned off, share env for two hooks --- .github/workflows/code-checks.yml | 4 +-- .pre-commit-config.yaml | 2 +- pyproject.toml | 42 ++++++++++++++++++------------- 3 files changed, 28 insertions(+), 20 deletions(-) diff --git a/.github/workflows/code-checks.yml b/.github/workflows/code-checks.yml index 583619826265c..66bc7cd917b31 100644 --- a/.github/workflows/code-checks.yml +++ b/.github/workflows/code-checks.yml @@ -37,8 +37,8 @@ jobs: - name: Run pre-commit uses: pre-commit/action@v2.0.3 - typing_and_docstring_validation: - name: Docstring and typing validation + docstring_typing_pylint: + name: Docstring validation, typing, and pylint runs-on: ubuntu-latest defaults: run: diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 6aa1f5659365f..bce25419e81dd 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -201,7 +201,7 @@ repos: entry: python scripts/sync_flake8_versions.py files: ^(\.pre-commit-config\.yaml|environment\.yml)$ pass_filenames: false - additional_dependencies: [pyyaml] + additional_dependencies: [pyyaml, toml] - id: title-capitalization name: Validate correct capitalization among titles in documentation entry: python scripts/validate_rst_title_capitalization.py diff --git a/pyproject.toml b/pyproject.toml index 8b7204af7c089..41066407b8b50 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -58,27 +58,43 @@ exclude = ''' [tool.pylint.messages_control] max-line-length = 88 disable = [ - "abstract-class-instantiated", - "c-extension-no-member", + # intentionally turned off + "comparison-with-itself", "import-error", + "import-outside-toplevel", + "invalid-name", "invalid-unary-operand-type", + "invalid-unary-operator-type", + "no-else-continue", + "no-else-raise", + "no-else-return", "no-member", "no-name-in-module", - "no-value-for-parameter", "not-an-iterable", - "not-callable", - "redundant-keyword-arg", "too-many-function-args", - "undefined-variable", + "unexpected-keyword-argument", "unexpected-keyword-arg", - "unpacking-non-sequence", + "ungrouped-imports", "unsubscriptable-object", "unsupported-assignment-operation", + "unused-import", + "use-implicit-booleaness-not-comparison", + "use-implicit-booleaness-not-len", + "wrong-import-order", + "wrong-import-order", + "wrong-import-position", + + # misc + "abstract-class-instantiated", + "c-extension-no-member", + "no-value-for-parameter", + "not-callable", + "redundant-keyword-arg", + "undefined-variable", + "unpacking-non-sequence", "unsupported-membership-test", # pylint type "C": convention, for programming standard violation - "import-outside-toplevel", - "invalid-name", "line-too-long", "missing-class-docstring", "missing-function-docstring", @@ -86,23 +102,16 @@ disable = [ "singleton-comparison", "too-many-lines", "typevar-name-incorrect-variance", - "ungrouped-imports", "unidiomatic-typecheck", "unnecessary-dunder-call", "unnecessary-lambda-assignment", - "use-implicit-booleaness-not-comparison", - "use-implicit-booleaness-not-len", - "wrong-import-order", - "wrong-import-position", # pylint type "R": refactor, for bad code smell - "comparison-with-itself", "consider-using-ternary", "consider-using-with", "cyclic-import", "duplicate-code", "inconsistent-return-statements", - "no-else-return", "redefined-argument-from-local", "too-few-public-methods", "too-many-ancestors", @@ -155,7 +164,6 @@ disable = [ "unnecessary-lambda", "unspecified-encoding", "unused-argument", - "unused-import", "unused-variable", "using-constant-test", "useless-parent-delegation" From 93b5793a19bb4d48b1dc3c1c9302f8e6091bf875 Mon Sep 17 00:00:00 2001 From: MarcoGorelli <> Date: Thu, 17 Nov 2022 16:52:19 +0000 Subject: [PATCH 2/7] add redefined-outer-name check, but turn off in remaining files --- .pre-commit-config.yaml | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index bce25419e81dd..c811d3c60237b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -64,6 +64,30 @@ repos: hooks: - id: pylint stages: [manual] +- repo: https://github.com/pycqa/pylint + rev: v2.15.5 + hooks: + - id: pylint + files: ^pandas/ + exclude: | + (?x) + ^pandas/tests # leave turned off + |/_testing/ # leave turned off + |^pandas/util/_test_decorators\.py # leave turned off + |^pandas/_version\.py # leave turned off + |^pandas/conftest\.py + |^pandas/core/generic\.py + |^pandas/core/internals/concat\.py + |^pandas/core/reshape/merge\.py + |^pandas/core/tools/datetimes\.py + |^pandas/formats/format\.py + |^pandas/io/formats/format\.py + |^pandas/io/formats/style\.py + |^pandas/io/json/_json\.py + |^pandas/io/xml\.py + |^pandas/util/_decorators\.py + |^pandas/util/_doctools\.py + args: [--disable=all, --enable=redefined-outer-name] - repo: https://github.com/PyCQA/isort rev: 5.10.1 hooks: From 6ec1012598ee75600ee9859f61f1d8f93334595e Mon Sep 17 00:00:00 2001 From: MarcoGorelli <> Date: Sat, 19 Nov 2022 12:40:26 +0000 Subject: [PATCH 3/7] keep redefined-outer-name to manual stage --- .pre-commit-config.yaml | 3 +++ pyproject.toml | 2 -- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index c811d3c60237b..e13cedaddc504 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -68,6 +68,8 @@ repos: rev: v2.15.5 hooks: - id: pylint + alias: redefined-outer-name + name: Redefining name from outer scope files: ^pandas/ exclude: | (?x) @@ -88,6 +90,7 @@ repos: |^pandas/util/_decorators\.py |^pandas/util/_doctools\.py args: [--disable=all, --enable=redefined-outer-name] + stages: [manual] - repo: https://github.com/PyCQA/isort rev: 5.10.1 hooks: diff --git a/pyproject.toml b/pyproject.toml index 41066407b8b50..3deb54e8420e4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -64,7 +64,6 @@ disable = [ "import-outside-toplevel", "invalid-name", "invalid-unary-operand-type", - "invalid-unary-operator-type", "no-else-continue", "no-else-raise", "no-else-return", @@ -72,7 +71,6 @@ disable = [ "no-name-in-module", "not-an-iterable", "too-many-function-args", - "unexpected-keyword-argument", "unexpected-keyword-arg", "ungrouped-imports", "unsubscriptable-object", From 312d64f44ac01fd3175003a935287af3746d0692 Mon Sep 17 00:00:00 2001 From: MarcoGorelli <> Date: Sat, 19 Nov 2022 12:50:39 +0000 Subject: [PATCH 4/7] update exclude list --- .pre-commit-config.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index e13cedaddc504..ec5fffd414206 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -77,12 +77,11 @@ repos: |/_testing/ # leave turned off |^pandas/util/_test_decorators\.py # leave turned off |^pandas/_version\.py # leave turned off - |^pandas/conftest\.py + |^pandas/conftest\.py # leave turned off |^pandas/core/generic\.py |^pandas/core/internals/concat\.py |^pandas/core/reshape/merge\.py |^pandas/core/tools/datetimes\.py - |^pandas/formats/format\.py |^pandas/io/formats/format\.py |^pandas/io/formats/style\.py |^pandas/io/json/_json\.py From 156ef11d57bed4fc1697fc8fa3ed2fc7b06bd191 Mon Sep 17 00:00:00 2001 From: MarcoGorelli <> Date: Sat, 19 Nov 2022 12:54:39 +0000 Subject: [PATCH 5/7] reword --- .pre-commit-config.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index ec5fffd414206..1cbf8d942b016 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -73,11 +73,11 @@ repos: files: ^pandas/ exclude: | (?x) - ^pandas/tests # leave turned off - |/_testing/ # leave turned off - |^pandas/util/_test_decorators\.py # leave turned off - |^pandas/_version\.py # leave turned off - |^pandas/conftest\.py # leave turned off + ^pandas/tests # keep excluded + |/_testing/ # keep excluded + |^pandas/util/_test_decorators\.py # keep excluded + |^pandas/_version\.py # keep excluded + |^pandas/conftest\.py # keep excluded |^pandas/core/generic\.py |^pandas/core/internals/concat\.py |^pandas/core/reshape/merge\.py From 255317aee8c90be3cb1a5c48e8d07abdb99ec080 Mon Sep 17 00:00:00 2001 From: MarcoGorelli <> Date: Wed, 23 Nov 2022 08:38:54 +0000 Subject: [PATCH 6/7] fixup after merge --- .pre-commit-config.yaml | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 95cf029a69afc..6b74dd057e865 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -78,16 +78,9 @@ repos: |^pandas/util/_test_decorators\.py # keep excluded |^pandas/_version\.py # keep excluded |^pandas/conftest\.py # keep excluded - |^pandas/core/generic\.py - |^pandas/core/internals/concat\.py - |^pandas/core/reshape/merge\.py |^pandas/core/tools/datetimes\.py |^pandas/io/formats/format\.py - |^pandas/io/formats/style\.py - |^pandas/io/json/_json\.py - |^pandas/io/xml\.py - |^pandas/util/_decorators\.py - |^pandas/util/_doctools\.py + |^pandas/core/generic\.py args: [--disable=all, --enable=redefined-outer-name] stages: [manual] - repo: https://github.com/PyCQA/isort From 157ac22fb02d402c12a87a6e209f22af0d9f5fa5 Mon Sep 17 00:00:00 2001 From: MarcoGorelli <> Date: Wed, 23 Nov 2022 08:57:05 +0000 Subject: [PATCH 7/7] fixup again --- pyproject.toml | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 29a6932544314..73b95743273c0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -59,22 +59,38 @@ exclude = ''' max-line-length = 88 disable = [ # intentionally turned off + "c-extension-no-member", "comparison-with-itself", "import-error", "import-outside-toplevel", "invalid-name", "invalid-unary-operand-type", + "line-too-long", "no-else-continue", "no-else-raise", "no-else-return", "no-member", "no-name-in-module", "not-an-iterable", + "pointless-statement", + "redundant-keyword-arg", + "singleton-comparison", + "too-many-ancestors", + "too-many-arguments", + "too-many-boolean-expressions", + "too-many-branches", "too-many-function-args", + "too-many-instance-attributes", + "too-many-locals", + "too-many-nested-blocks", + "too-many-public-methods", + "too-many-return-statements", + "too-many-statements", "unexpected-keyword-arg", "ungrouped-imports", "unsubscriptable-object", "unsupported-assignment-operation", + "unsupported-membership-test", "unused-import", "use-implicit-booleaness-not-comparison", "use-implicit-booleaness-not-len", @@ -84,20 +100,15 @@ disable = [ # misc "abstract-class-instantiated", - "c-extension-no-member", - "no-value-for-parameter", - "not-callable", "redundant-keyword-arg", + "no-value-for-parameter", "undefined-variable", "unpacking-non-sequence", - "unsupported-membership-test", # pylint type "C": convention, for programming standard violation - "line-too-long", "missing-class-docstring", "missing-function-docstring", "missing-module-docstring", - "singleton-comparison", "too-many-lines", "unidiomatic-typecheck", "unnecessary-dunder-call", @@ -111,16 +122,6 @@ disable = [ "inconsistent-return-statements", "redefined-argument-from-local", "too-few-public-methods", - "too-many-ancestors", - "too-many-arguments", - "too-many-boolean-expressions", - "too-many-branches", - "too-many-instance-attributes", - "too-many-locals", - "too-many-nested-blocks", - "too-many-public-methods", - "too-many-return-statements", - "too-many-statements", "unnecessary-list-index-lookup", # pylint type "W": warning, for python specific problems @@ -140,7 +141,6 @@ disable = [ "invalid-overridden-method", "keyword-arg-before-vararg", "overridden-final-method", - "pointless-statement", "pointless-string-statement", "possibly-unused-variable", "protected-access",