Skip to content

fix: remove autoflake-inserted pass even when ignore_pass_statements=True - #349

Open
terminalchai wants to merge 1 commit into
PyCQA:mainfrom
terminalchai:fix/ignore-pass-removes-autoflake-generated-passes
Open

fix: remove autoflake-inserted pass even when ignore_pass_statements=True#349
terminalchai wants to merge 1 commit into
PyCQA:mainfrom
terminalchai:fix/ignore-pass-removes-autoflake-generated-passes

Conversation

@terminalchai

Copy link
Copy Markdown

Fixes #206

Problem

When --ignore-pass-statements is set, autoflake replaces removed imports with a temporary pass statement (needed to keep block structure valid while running pyflakes). Normally that pass is cleaned up by ilter_useless_pass, but with ignore_pass_statements=True the cleanup step is skipped entirely — leaving the autoflake-generated pass in the user's file.

`python

Input

import os

print('hello')

Expected output (with --ignore-pass-statements)

print('hello')

Actual output (bug)

pass

print('hello')
`

Fix

Thread an optional pass_sentinel parameter (default ) through:

…True

When --ignore-pass-statements is set, autoflake was replacing removed
imports with 'pass' (to keep block structure valid) but then leaving
those passes in the output because the pass-removal step was skipped.

Fix by threading an optional pass_sentinel argument through filter_code
-> filter_unused_import -> filter_from_import / FilterMultilineImport.
When fix_code calls these functions it passes _AUTOFLAKE_PASS_SENTINEL.
filter_useless_pass then always removes lines tagged with that sentinel
(if they are useless), but strips the sentinel comment from necessary
passes (sole body of a block) before yielding them.

Ref: PyCQA#206
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ignore-pass-statements introduces unnecessary pass statements

1 participant