Skip to content

Commit 050bdb0

Browse files
committed
Add missing object.__subclasshook__
Fixes #165
1 parent 59b08ed commit 050bdb0

File tree

1 file changed

+18
-2
lines changed
  • graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/object

1 file changed

+18
-2
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/object/ObjectBuiltins.java

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
import static com.oracle.graal.python.nodes.SpecialMethodNames.__SETATTR__;
4848
import static com.oracle.graal.python.nodes.SpecialMethodNames.__SET__;
4949
import static com.oracle.graal.python.nodes.SpecialMethodNames.__STR__;
50+
import static com.oracle.graal.python.nodes.SpecialMethodNames.__SUBCLASSHOOK__;
5051
import static com.oracle.graal.python.runtime.exception.PythonErrorType.AttributeError;
5152
import static com.oracle.graal.python.runtime.exception.PythonErrorType.TypeError;
5253

@@ -63,16 +64,16 @@
6364
import com.oracle.graal.python.builtins.objects.PNone;
6465
import com.oracle.graal.python.builtins.objects.PNotImplemented;
6566
import com.oracle.graal.python.builtins.objects.PythonAbstractObject;
66-
import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodes;
6767
import com.oracle.graal.python.builtins.objects.cext.PythonAbstractNativeObject;
68+
import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodes;
6869
import com.oracle.graal.python.builtins.objects.dict.PDict;
6970
import com.oracle.graal.python.builtins.objects.function.PBuiltinFunction;
7071
import com.oracle.graal.python.builtins.objects.function.PKeyword;
71-
import com.oracle.graal.python.builtins.objects.object.ObjectBuiltinsClinicProviders.FormatNodeClinicProviderGen;
7272
import com.oracle.graal.python.builtins.objects.getsetdescriptor.DescriptorDeleteMarker;
7373
import com.oracle.graal.python.builtins.objects.getsetdescriptor.GetSetDescriptorTypeBuiltins.DescrDeleteNode;
7474
import com.oracle.graal.python.builtins.objects.getsetdescriptor.GetSetDescriptorTypeBuiltins.DescrGetNode;
7575
import com.oracle.graal.python.builtins.objects.getsetdescriptor.GetSetDescriptorTypeBuiltins.DescrSetNode;
76+
import com.oracle.graal.python.builtins.objects.object.ObjectBuiltinsClinicProviders.FormatNodeClinicProviderGen;
7677
import com.oracle.graal.python.builtins.objects.object.ObjectBuiltinsFactory.GetAttributeNodeFactory;
7778
import com.oracle.graal.python.builtins.objects.type.PythonBuiltinClass;
7879
import com.oracle.graal.python.builtins.objects.type.TypeNodes.CheckCompatibleForAssigmentNode;
@@ -779,4 +780,19 @@ PNone initSubclass(@SuppressWarnings("unused") Object self) {
779780
return PNone.NONE;
780781
}
781782
}
783+
784+
@Builtin(name = __SUBCLASSHOOK__, minNumOfPositionalArgs = 1, declaresExplicitSelf = true, takesVarArgs = true, takesVarKeywordArgs = true, isClassmethod = true)
785+
@GenerateNodeFactory
786+
abstract static class SubclassHookNode extends PythonVarargsBuiltinNode {
787+
@Specialization
788+
@SuppressWarnings("unused")
789+
static Object notImplemented(Object self, Object[] arguments, PKeyword[] keywords) {
790+
return PNotImplemented.NOT_IMPLEMENTED;
791+
}
792+
793+
@Override
794+
public Object varArgExecute(VirtualFrame frame, Object self, Object[] arguments, PKeyword[] keywords) throws VarargsBuiltinDirectInvocationNotSupported {
795+
return PNotImplemented.NOT_IMPLEMENTED;
796+
}
797+
}
782798
}

0 commit comments

Comments
 (0)