diff --git a/0001-Detect-typing-module-attributes-with-import-typing-a.patch b/0001-Detect-typing-module-attributes-with-import-typing-a.patch new file mode 100644 index 0000000..d02da65 --- /dev/null +++ b/0001-Detect-typing-module-attributes-with-import-typing-a.patch @@ -0,0 +1,75 @@ +From 13cad915e6b181b2f6a85efc2ead4856b23bccc0 Mon Sep 17 00:00:00 2001 +From: Angus L'Herrou +Date: Tue, 5 Oct 2021 18:44:29 -0400 +Subject: [PATCH] Detect typing module attributes with 'import typing as + ' (#632) + +* added functionality to detect typing module attributes with 'import typing as ' + +* remove async keyword from test_aliased_import +--- + pyflakes/checker.py | 12 +++++++++++- + pyflakes/test/test_type_annotations.py | 17 +++++++++++++++++ + 2 files changed, 28 insertions(+), 1 deletion(-) + +diff --git a/pyflakes/checker.py b/pyflakes/checker.py +index 6fafe89..45c7a4a 100644 +--- a/pyflakes/checker.py ++++ b/pyflakes/checker.py +@@ -720,6 +720,16 @@ def _is_typing_helper(node, is_name_match_fn, scope_stack): + + return False + ++ def _module_scope_is_typing(name): ++ for scope in reversed(scope_stack): ++ if name in scope: ++ return ( ++ isinstance(scope[name], Importation) and ++ scope[name].fullName in TYPING_MODULES ++ ) ++ ++ return False ++ + return ( + ( + isinstance(node, ast.Name) and +@@ -727,7 +737,7 @@ def _is_typing_helper(node, is_name_match_fn, scope_stack): + ) or ( + isinstance(node, ast.Attribute) and + isinstance(node.value, ast.Name) and +- node.value.id in TYPING_MODULES and ++ _module_scope_is_typing(node.value.id) and + is_name_match_fn(node.attr) + ) + ) +diff --git a/pyflakes/test/test_type_annotations.py b/pyflakes/test/test_type_annotations.py +index 6a66bcd..f3b6c24 100644 +--- a/pyflakes/test/test_type_annotations.py ++++ b/pyflakes/test/test_type_annotations.py +@@ -121,6 +121,23 @@ class TestTypeAnnotations(TestCase): + def f(self, x): return x + """) + ++ def test_aliased_import(self): ++ """Detect when typing is imported as another name""" ++ self.flakes(""" ++ import typing as t ++ ++ @t.overload ++ def f(s): # type: (None) -> None ++ pass ++ ++ @t.overload ++ def f(s): # type: (int) -> int ++ pass ++ ++ def f(s): ++ return s ++ """) ++ + def test_not_a_typing_overload(self): + """regression test for @typing.overload detection bug in 2.1.0""" + self.flakes(""" +-- +2.42.0.windows.2 + diff --git a/0001-remove-old-and-unused-tracing-code-625.patch b/0001-remove-old-and-unused-tracing-code-625.patch new file mode 100644 index 0000000..c8b550f --- /dev/null +++ b/0001-remove-old-and-unused-tracing-code-625.patch @@ -0,0 +1,42 @@ +From da197ee94e791640d82940396c19d2d82ca8defb Mon Sep 17 00:00:00 2001 +From: Terence Honles +Date: Thu, 20 May 2021 07:47:19 -0700 +Subject: [PATCH] remove old and unused "tracing" code (#625) + +--- + pyflakes/checker.py | 5 ----- + 1 file changed, 5 deletions(-) + +diff --git a/pyflakes/checker.py b/pyflakes/checker.py +index 48d3841..135ad33 100644 +--- a/pyflakes/checker.py ++++ b/pyflakes/checker.py +@@ -868,7 +868,6 @@ class Checker(object): + + nodeDepth = 0 + offset = None +- traceTree = False + _in_annotation = AnnotationState.NONE + _in_deferred = False + +@@ -1393,8 +1392,6 @@ class Checker(object): + if self.offset and getattr(node, 'lineno', None) is not None: + node.lineno += self.offset[0] + node.col_offset += self.offset[1] +- if self.traceTree: +- print(' ' * self.nodeDepth + node.__class__.__name__) + if self.futuresAllowed and not (isinstance(node, ast.ImportFrom) or + self.isDocstring(node)): + self.futuresAllowed = False +@@ -1406,8 +1403,6 @@ class Checker(object): + handler(node) + finally: + self.nodeDepth -= 1 +- if self.traceTree: +- print(' ' * self.nodeDepth + 'end ' + node.__class__.__name__) + + _getDoctestExamples = doctest.DocTestParser().get_examples + +-- +2.42.0.windows.2 + diff --git a/pyflakes.spec b/pyflakes.spec index b3a9038..233a197 100644 --- a/pyflakes.spec +++ b/pyflakes.spec @@ -3,11 +3,13 @@ Pyflakes A simple program which checks Python source files for errors.Pyflakes Name: python-pyflakes Version: 2.3.1 -Release: 1 +Release: 5 Summary: passive checker of Python programs License: MIT URL: https://github.com/PyCQA/pyflakes Source0: https://files.pythonhosted.org/packages/a8/0f/0dc480da9162749bf629dca76570972dd9cce5bedc60196a3c912875c87d/pyflakes-2.3.1.tar.gz +Patch0001: 0001-Detect-typing-module-attributes-with-import-typing-a.patch +Patch0002: 0001-remove-old-and-unused-tracing-code-625.patch BuildArch: noarch %description %{common_desc} @@ -31,7 +33,7 @@ Provides: python3-pyflakes-doc %{common_desc} %prep -%autosetup -n pyflakes-2.3.1 +%autosetup -n pyflakes-2.3.1 -p1 %build %py3_build @@ -76,6 +78,18 @@ mv %{buildroot}/doclist.lst . %{_docdir}/* %changelog +* Wed Jan 31 2024 liubo - 2.3.1-5 +- Rebuild + +* Fri Jan 26 2024 liubo - 2.3.1-4 +- remove old and unused "tracing" code (#625) + +* Fri Jan 19 2024 liubo - 2.3.1-3 +- Rebuild + +* Tue Nov 7 2023 liubo - 2.3.1-2 +- Detect typing module attributes with 'import typing as ' + * Mon Jul 19 2021 OpenStack_SIG - 2.3.1-1 - update to 2.3.1