def infer_issubclass(callnode, context=None):
call = arguments.CallSite.from_call(callnode)<EOL>if call.keyword_arguments:<EOL><INDENT>raise UseInferenceDefault("<STR_LIT>")<EOL><DEDENT>if len(call.positional_arguments) != <NUM_LIT:2>:<EOL><INDENT>raise UseInferenceDefault(<EOL>"<STR_LIT>".format(<EOL>count=len(call.positional_arguments)<EOL>)<EOL>)<EOL><DEDENT>obj_node, class_or_tuple_node = call.positional_arguments<EOL>try:<EOL><INDENT>obj_type = next(obj_node.infer(context=context))<EOL><DEDENT>except InferenceError as exc:<EOL><INDENT>raise UseInferenceDefault from exc<EOL><DEDENT>if not isinstance(obj_type, nodes.ClassDef):<EOL><INDENT>raise UseInferenceDefault("<STR_LIT>")<EOL><DEDENT>try:<EOL><INDENT>class_container = _class_or_tuple_to_container(<EOL>class_or_tuple_node, context=context<EOL>)<EOL><DEDENT>except InferenceError as exc:<EOL><INDENT>raise UseInferenceDefault from exc<EOL><DEDENT>try:<EOL><INDENT>issubclass_bool = helpers.object_issubclass(obj_type, class_container, context)<EOL><DEDENT>except AstroidTypeError as exc:<EOL><INDENT>raise UseInferenceDefault("<STR_LIT>" + str(exc)) from exc<EOL><DEDENT>except MroError as exc:<EOL><INDENT>raise UseInferenceDefault from exc<EOL><DEDENT>return nodes.Const(issubclass_bool)<EOL>
Infer issubclass() calls

    :param nodes.Call callnode: an `issubclass` call
    :param InferenceContext: the context for the inference
    :rtype nodes.Const: Boolean Const value of the `issubclass` call
    :raises UseInferenceDefault: If the node cannot be inferred