From cf01e9f3693c8cdcb26b9e4e7ff74429b13c5d44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Robert?= Date: Sat, 11 Sep 2021 16:22:02 +0200 Subject: [PATCH] EHH: simplify logic in versioned_branches.py --- pyupgrade/_plugins/versioned_branches.py | 84 ++++++------------------ 1 file changed, 21 insertions(+), 63 deletions(-) diff --git a/pyupgrade/_plugins/versioned_branches.py b/pyupgrade/_plugins/versioned_branches.py index 030e1a4e..4604fa7d 100644 --- a/pyupgrade/_plugins/versioned_branches.py +++ b/pyupgrade/_plugins/versioned_branches.py @@ -106,13 +106,16 @@ def visit_If( node: ast.If, parent: ast.AST, ) -> Iterable[Tuple[Offset, TokenFunc]]: - if state.settings.min_version >= (3,) and ( - len(state.settings.min_version) >= 2 - ): - py3_minor = state.settings.min_version[1] + + min_version: Tuple[int, ...] + if state.settings.min_version == (3,): + min_version = (3, 0) + else: + min_version = state.settings.min_version + assert len(min_version) >= 2 if ( - state.settings.min_version >= (3,) and ( + min_version >= (3,) and ( # if six.PY2: is_name_attr(node.test, state.from_imports, 'six', ('PY2',)) or # if not six.PY3: @@ -127,6 +130,7 @@ def visit_If( ) ) or # sys.version_info == 2 or < (3,) + # or < (3, n) or <= (3, n) (with n= 2 and ( - isinstance(node.test, ast.Compare) and - is_name_attr( - node.test.left, - state.from_imports, - 'sys', - ('version_info',), - ) and - len(node.test.ops) == 1 and ( - _compare_to_3( - node.test, - ast.Lt, - minor=py3_minor, - ) or any( - _compare_to_3( - node.test, - (ast.Lt, ast.LtE), - minor=minor, - ) - for minor in range(py3_minor) - ) + _compare_to_3(node.test, ast.Lt, min_version[1]) or + any( + _compare_to_3(node.test, (ast.Lt, ast.LtE), minor) + for minor in range(min_version[1]) ) ) ) @@ -172,7 +153,7 @@ def visit_If( if node.orelse and not isinstance(node.orelse[0], ast.If): yield ast_to_offset(node), _fix_py2_block elif ( - state.settings.min_version >= (3,) and ( + min_version >= (3,) and ( # if six.PY3: is_name_attr(node.test, state.from_imports, 'six', ('PY3',)) or # if not six.PY2: @@ -187,6 +168,8 @@ def visit_If( ) ) or # sys.version_info == 3 or >= (3,) or > (3,) + # sys.version_info >= (3, n) (with n<=m) + # or sys.version_info > (3, n) (with n= (3, n) (with n<=m) - # or sys.version_info > (3, n) (with n= 2 and ( - - isinstance(node.test, ast.Compare) and - is_name_attr( - node.test.left, - state.from_imports, - 'sys', - ('version_info',), - ) and - len(node.test.ops) == 1 and - ( - _compare_to_3( - node.test, - ast.GtE, - minor=py3_minor, - ) or any( - _compare_to_3( - node.test, - (ast.Gt, ast.GtE), - minor=minor, - ) - for minor in range(py3_minor) - ) + _compare_to_3(node.test, (ast.Gt, ast.GtE)) or + _compare_to_3(node.test, ast.GtE, min_version[1]) or + any( + _compare_to_3(node.test, (ast.Gt, ast.GtE), minor) + for minor in range(min_version[1]) ) - ) ) )