def __init__(self):
    '\n        The schema generator generates a GraphQL schema.\n        The purpose is to provide a schema to which resolvers are then\n        attached, which is then given to Ariadne, and for resolvers to\n        have information about expected types.\n\n        For RPSL queries and types, this is dynamically generated based on\n        the RPSL objects from irrd.rpsl. Other parts are fixed.\n        This means that the schema is always the same for a given IRRd\n        codebase - there are no runtime or user configurable parts.\n\n        Along with generating the schema, some metadata is saved, e.g.\n        self.graphql_types which allows resolvers to learn the GraphQL\n        type for a certain field.\n\n        This generator also creates Ariadne object types on self, which\n        are used to attach resolvers to them.\n        '
    self._set_rpsl_query_fields()
    self._set_rpsl_object_interface_schema()
    self._set_rpsl_contact_schema()
    self._set_rpsl_object_schemas()
    self._set_enums()
    schema = self.enums
    schema += (('\n            scalar ASN\n            scalar IP\n\n            schema {\n              query: Query\n            }\n\n            type Query {\n              rpslObjects(' + self.rpsl_query_fields) + '): [RPSLObject!]\n              databaseStatus(sources: [String!]): [DatabaseStatus]\n              asnPrefixes(asns: [ASN!]!, ipVersion: Int, sources: [String!]): [ASNPrefixes!]\n              asSetPrefixes(setNames: [String!]!, ipVersion: Int, sources: [String!], excludeSets: [String!], sqlTrace: Boolean): [AsSetPrefixes!]\n              recursiveSetMembers(setNames: [String!]!, depth: Int, sources: [String!], excludeSets: [String!], sqlTrace: Boolean): [SetMembers!]\n            }\n\n            type DatabaseStatus {\n                source: String!\n                authoritative: Boolean!\n                objectClassFilter: [String!]\n                rpkiRovFilter: Boolean!\n                scopefilterEnabled: Boolean!\n                localJournalKept: Boolean!\n                serialOldestJournal: Int\n                serialNewestJournal: Int\n                serialLastExport: Int\n                serialNewestMirror: Int\n                lastUpdate: String\n                synchronisedSerials: Boolean!\n            }\n\n            type RPSLJournalEntry {\n                rpslPk: String!\n                source: String!\n                serialNrtm: Int!\n                operation: String!\n                origin: String\n                objectClass: String!\n                objectText: String!\n                timestamp: String!\n            }\n\n            type ASNPrefixes {\n                asn: ASN!\n                prefixes: [IP!]\n            }\n\n            type AsSetPrefixes {\n                rpslPk: String!\n                prefixes: [IP!]\n            }\n\n            type SetMembers {\n                rpslPk: String!\n                members: [String!]\n            }\n        ')
    schema += self.rpsl_object_interface_schema
    schema += self.rpsl_contact_schema
    schema += ''.join(self.rpsl_object_schemas.values())
    schema += 'union RPSLContactUnion = RPSLPerson | RPSLRole'
    self.type_defs = ariadne.gql(schema)
    self.query_type = ariadne.QueryType()
    self.rpsl_object_type = ariadne.InterfaceType('RPSLObject')
    self.rpsl_contact_union_type = ariadne.UnionType('RPSLContactUnion')
    self.asn_scalar_type = ariadne.ScalarType('ASN')
    self.ip_scalar_type = ariadne.ScalarType('IP')
    self.object_types = [self.query_type, self.rpsl_object_type, self.rpsl_contact_union_type, self.asn_scalar_type, self.ip_scalar_type]
    for name in self.rpsl_object_schemas.keys():
        self.object_types.append(ariadne.ObjectType(name))
    self.object_types.append(ariadne.ObjectType('ASNPrefixes'))
    self.object_types.append(ariadne.ObjectType('AsSetPrefixes'))
    self.object_types.append(ariadne.ObjectType('SetMembers'))
    self.object_types.append(ariadne.EnumType('RPKIStatus', RPKIStatus))
    self.object_types.append(ariadne.EnumType('ScopeFilterStatus', ScopeFilterStatus))
The schema generator generates a GraphQL schema.
The purpose is to provide a schema to which resolvers are then
attached, which is then given to Ariadne, and for resolvers to
have information about expected types.

For RPSL queries and types, this is dynamically generated based on
the RPSL objects from irrd.rpsl. Other parts are fixed.
This means that the schema is always the same for a given IRRd
codebase - there are no runtime or user configurable parts.

Along with generating the schema, some metadata is saved, e.g.
self.graphql_types which allows resolvers to learn the GraphQL
type for a certain field.

This generator also creates Ariadne object types on self, which
are used to attach resolvers to them.
def __init__(self):
    '\n        The schema generator generates a GraphQL schema.\n        The purpose is to provide a schema to which resolvers are then\n        attached, which is then given to Ariadne, and for resolvers to\n        have information about expected types.\n\n        For RPSL queries and types, this is dynamically generated based on\n        the RPSL objects from irrd.rpsl. Other parts are fixed.\n        This means that the schema is always the same for a given IRRd\n        codebase - there are no runtime or user configurable parts.\n\n        Along with generating the schema, some metadata is saved, e.g.\n        self.graphql_types which allows resolvers to learn the GraphQL\n        type for a certain field.\n\n        This generator also creates Ariadne object types on self, which\n        are used to attach resolvers to them.\n        '
    self._set_rpsl_query_fields()
    self._set_rpsl_object_interface_schema()
    self._set_rpsl_contact_schema()
    self._set_rpsl_object_schemas()
    self._set_enums()
    schema = self.enums
    schema += (('\n            scalar ASN\n            scalar IP\n\n            schema {\n              query: Query\n            }\n\n            type Query {\n              rpslObjects(' + self.rpsl_query_fields) + '): [RPSLObject!]\n              databaseStatus(sources: [String!]): [DatabaseStatus]\n              asnPrefixes(asns: [ASN!]!, ipVersion: Int, sources: [String!]): [ASNPrefixes!]\n              asSetPrefixes(setNames: [String!]!, ipVersion: Int, sources: [String!], excludeSets: [String!], sqlTrace: Boolean): [AsSetPrefixes!]\n              recursiveSetMembers(setNames: [String!]!, depth: Int, sources: [String!], excludeSets: [String!], sqlTrace: Boolean): [SetMembers!]\n            }\n\n            type DatabaseStatus {\n                source: String!\n                authoritative: Boolean!\n                objectClassFilter: [String!]\n                rpkiRovFilter: Boolean!\n                scopefilterEnabled: Boolean!\n                localJournalKept: Boolean!\n                serialOldestJournal: Int\n                serialNewestJournal: Int\n                serialLastExport: Int\n                serialNewestMirror: Int\n                lastUpdate: String\n                synchronisedSerials: Boolean!\n            }\n\n            type RPSLJournalEntry {\n                rpslPk: String!\n                source: String!\n                serialNrtm: Int!\n                operation: String!\n                origin: String\n                objectClass: String!\n                objectText: String!\n                timestamp: String!\n            }\n\n            type ASNPrefixes {\n                asn: ASN!\n                prefixes: [IP!]\n            }\n\n            type AsSetPrefixes {\n                rpslPk: String!\n                prefixes: [IP!]\n            }\n\n            type SetMembers {\n                rpslPk: String!\n                members: [String!]\n            }\n        ')
    schema += self.rpsl_object_interface_schema
    schema += self.rpsl_contact_schema
    schema += .join(self.rpsl_object_schemas.values())
    schema += 'union RPSLContactUnion = RPSLPerson | RPSLRole'
    self.type_defs = ariadne.gql(schema)
    self.query_type = ariadne.QueryType()
    self.rpsl_object_type = ariadne.InterfaceType('RPSLObject')
    self.rpsl_contact_union_type = ariadne.UnionType('RPSLContactUnion')
    self.asn_scalar_type = ariadne.ScalarType('ASN')
    self.ip_scalar_type = ariadne.ScalarType('IP')
    self.object_types = [self.query_type, self.rpsl_object_type, self.rpsl_contact_union_type, self.asn_scalar_type, self.ip_scalar_type]
    for name in self.rpsl_object_schemas.keys():
        self.object_types.append(ariadne.ObjectType(name))
    self.object_types.append(ariadne.ObjectType('ASNPrefixes'))
    self.object_types.append(ariadne.ObjectType('AsSetPrefixes'))
    self.object_types.append(ariadne.ObjectType('SetMembers'))
    self.object_types.append(ariadne.EnumType('RPKIStatus', RPKIStatus))
    self.object_types.append(ariadne.EnumType('ScopeFilterStatus', ScopeFilterStatus))