def complete_abstract_value(
        self,
        return_type: GraphQLAbstractType,
        field_nodes: List[FieldNode],
        info: GraphQLResolveInfo,
        path: ResponsePath,
        result: Any,
    ) -> AwaitableOrValue[Any]:
        """Complete an abstract value.

        Complete a value of an abstract type by determining the runtime object type of
        that value, then complete the value for that type.
        """
        resolve_type_fn = return_type.resolve_type or self.type_resolver
        runtime_type = resolve_type_fn(result, info, return_type)  # type: ignore

        if isawaitable(runtime_type):

            async def await_complete_object_value():
                value = self.complete_object_value(
                    self.ensure_valid_runtime_type(
                        await runtime_type, return_type, field_nodes, info, result
                    ),
                    field_nodes,
                    info,
                    path,
                    result,
                )
                if isawaitable(value):
                    return await value
                return value

            return await_complete_object_value()
        runtime_type = cast(Optional[Union[GraphQLObjectType, str]], runtime_type)

        return self.complete_object_value(
            self.ensure_valid_runtime_type(
                runtime_type, return_type, field_nodes, info, result
            ),
            field_nodes,
            info,
            path,
            result,
        )
def complete_abstract_value ( self , return_type : GraphQLAbstractType , field_nodes : List [ FieldNode ] , info : GraphQLResolveInfo , path : ResponsePath , result : Any , ) -> AwaitableOrValue [ Any ] : resolve_type_fn = return_type . resolve_type or self . type_resolver runtime_type = resolve_type_fn ( result , info , return_type ) if isawaitable ( runtime_type ) : async def await_complete_object_value ( ) : value = self . complete_object_value ( self . ensure_valid_runtime_type ( await runtime_type , return_type , field_nodes , info , result ) , field_nodes , info , path , result , ) if isawaitable ( value ) : return await value return value return await_complete_object_value ( ) runtime_type = cast ( Optional [ Union [ GraphQLObjectType , str ] ] , runtime_type ) return self . complete_object_value ( self . ensure_valid_runtime_type ( runtime_type , return_type , field_nodes , info , result ) , field_nodes , info , path , result , )
Complete an abstract value.

        Complete a value of an abstract type by determining the runtime object type of
        that value, then complete the value for that type.