def parse_schema_extension(lexer: Lexer) -> SchemaExtensionNode:
    """SchemaExtension"""
    start = lexer.token
    expect_keyword(lexer, "extend")
    expect_keyword(lexer, "schema")
    directives = parse_directives(lexer, True)
    operation_types = (
        many_nodes(
            lexer, TokenKind.BRACE_L, parse_operation_type_definition, TokenKind.BRACE_R
        )
        if peek(lexer, TokenKind.BRACE_L)
        else []
    )
    if not directives and not operation_types:
        raise unexpected(lexer)
    return SchemaExtensionNode(
        directives=directives, operation_types=operation_types, loc=loc(lexer, start)
    )
def parse_schema_extension ( lexer : Lexer ) -> SchemaExtensionNode : start = lexer . token expect_keyword ( lexer , "extend" ) expect_keyword ( lexer , "schema" ) directives = parse_directives ( lexer , True ) operation_types = ( many_nodes ( lexer , TokenKind . BRACE_L , parse_operation_type_definition , TokenKind . BRACE_R ) if peek ( lexer , TokenKind . BRACE_L ) else [ ] ) if not directives and not operation_types : raise unexpected ( lexer ) return SchemaExtensionNode ( directives = directives , operation_types = operation_types , loc = loc ( lexer , start ) )
SchemaExtension