Astroport.ONE/venv/lib/python3.11/site-packages/graphql/validation/rules/known_fragment_names.py
2024-03-01 16:15:45 +01:00

26 lines
794 B
Python

from typing import Any
from ...error import GraphQLError
from ...language import FragmentSpreadNode
from . import ValidationRule
__all__ = ["KnownFragmentNamesRule"]
class KnownFragmentNamesRule(ValidationRule):
"""Known fragment names
A GraphQL document is only valid if all ``...Fragment`` fragment spreads refer to
fragments defined in the same document.
See https://spec.graphql.org/draft/#sec-Fragment-spread-target-defined
"""
def enter_fragment_spread(self, node: FragmentSpreadNode, *_args: Any) -> None:
fragment_name = node.name.value
fragment = self.context.get_fragment(fragment_name)
if not fragment:
self.report_error(
GraphQLError(f"Unknown fragment '{fragment_name}'.", node.name)
)