From 236a6e280e9d721cde3cca3a129ec5797c705c22 Mon Sep 17 00:00:00 2001 From: Guillaume Dequenne Date: Fri, 22 Nov 2024 10:49:05 +0100 Subject: [PATCH 1/2] Document no issue on S1172 when inheriting from annotated class member --- .../unusedFunctionParameter/unusedFunctionParameterImport.py | 5 ++++- .../unusedFunctionParameterImported.py | 4 ++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/python-checks/src/test/resources/checks/unusedFunctionParameter/unusedFunctionParameterImport.py b/python-checks/src/test/resources/checks/unusedFunctionParameter/unusedFunctionParameterImport.py index 0541b5bfbe..f9e9d7980a 100644 --- a/python-checks/src/test/resources/checks/unusedFunctionParameter/unusedFunctionParameterImport.py +++ b/python-checks/src/test/resources/checks/unusedFunctionParameter/unusedFunctionParameterImport.py @@ -1,4 +1,4 @@ -from unusedFunctionParameterImported import ImportedParent, ParentWithDuplicatedParent +from unusedFunctionParameterImported import ImportedParent, ParentWithDuplicatedParent, MyClassWithAnnotatedMember class ChildFromImported(ImportedParent): @@ -16,3 +16,6 @@ class ChildFromDuplicated(ParentWithDuplicatedParent): def do_something(self, a): # FN SONARPY-1829 ChildFromDuplicated has an unresolved type hierarchy, because of the duplicated parent classes return compute() +class MyChild(MyClassWithAnnotatedMember): + def my_member(self, param, other_param): # OK, respecting contract defined in parent + return compute() diff --git a/python-checks/src/test/resources/checks/unusedFunctionParameter/unusedFunctionParameterImported.py b/python-checks/src/test/resources/checks/unusedFunctionParameter/unusedFunctionParameterImported.py index 83be1ded3c..68585fac36 100644 --- a/python-checks/src/test/resources/checks/unusedFunctionParameter/unusedFunctionParameterImported.py +++ b/python-checks/src/test/resources/checks/unusedFunctionParameter/unusedFunctionParameterImported.py @@ -10,3 +10,7 @@ class DuplicatedParent: class ParentWithDuplicatedParent(DuplicatedParent): ... + +from typing import Callable +class MyClassWithAnnotatedMember: + my_member: Callable[[str, int],str] From df4100875c3cdaf0519d55ecab721f2c22b90140 Mon Sep 17 00:00:00 2001 From: Guillaume Dequenne Date: Mon, 25 Nov 2024 17:10:38 +0100 Subject: [PATCH 2/2] Fix after review --- .../unusedFunctionParameter/unusedFunctionParameter.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/python-checks/src/test/resources/checks/unusedFunctionParameter/unusedFunctionParameter.py b/python-checks/src/test/resources/checks/unusedFunctionParameter/unusedFunctionParameter.py index 153d027936..7dbdd14d9c 100644 --- a/python-checks/src/test/resources/checks/unusedFunctionParameter/unusedFunctionParameter.py +++ b/python-checks/src/test/resources/checks/unusedFunctionParameter/unusedFunctionParameter.py @@ -201,3 +201,12 @@ class FakeMetaclass(type): class ClassWithFakeMetaClass(metaclass=FakeMetaclass): def execute(self, name): print("Execute") + + +from typing import Callable +class LocalClassWithAnnotatedMember: + my_member: Callable[[str, int],str] + +class LocalClassChild(LocalClassWithAnnotatedMember): + def my_member(self, param, other_param): # OK, respecting contract defined in parent + print("Execute")