Module schemadiff.changes.object

Expand source code
from graphql import GraphQLField, GraphQLObjectType

from schemadiff.changes import Change, Criticality


class ObjectTypeFieldAdded(Change):

    criticality = Criticality.safe()

    def __init__(self, parent: GraphQLObjectType, field_name, field: GraphQLField):
        self.parent = parent
        self.field_name = field_name
        self.field = field
        self.description = parent.fields[field_name].description

    @property
    def message(self):
        return f"Field `{self.field_name}` was added to object type `{self.parent.name}`"

    @property
    def path(self):
        return f"{self.parent.name}.{self.field_name}"


class ObjectTypeFieldRemoved(Change):

    def __init__(self, parent, field_name, field):
        self.parent = parent
        self.field_name = field_name
        self.field = field
        self.criticality = (
            Criticality.dangerous(
                "Removing deprecated fields without sufficient time for clients "
                "to update their queries may break their code"
            ) if field.deprecation_reason else Criticality.breaking(
                "Removing a field is a breaking change. It is preferred to deprecate the field before removing it."
            )
        )

    @property
    def message(self):
        return f"Field `{self.field_name}` was removed from object type `{self.parent.name}`"

    @property
    def path(self):
        return f"{self.parent.name}.{self.field_name}"

Classes

class ObjectTypeFieldAdded (parent: graphql.type.definition.GraphQLObjectType, field_name, field: graphql.type.definition.GraphQLField)

Common interface of all schema changes

This class offers the common operations and properties of all schema changes. You may use it as a type hint to get better suggestions in your editor of choice.

Expand source code
class ObjectTypeFieldAdded(Change):

    criticality = Criticality.safe()

    def __init__(self, parent: GraphQLObjectType, field_name, field: GraphQLField):
        self.parent = parent
        self.field_name = field_name
        self.field = field
        self.description = parent.fields[field_name].description

    @property
    def message(self):
        return f"Field `{self.field_name}` was added to object type `{self.parent.name}`"

    @property
    def path(self):
        return f"{self.parent.name}.{self.field_name}"

Ancestors

Class variables

var criticalityCriticality

Inherited members

class ObjectTypeFieldRemoved (parent, field_name, field)

Common interface of all schema changes

This class offers the common operations and properties of all schema changes. You may use it as a type hint to get better suggestions in your editor of choice.

Expand source code
class ObjectTypeFieldRemoved(Change):

    def __init__(self, parent, field_name, field):
        self.parent = parent
        self.field_name = field_name
        self.field = field
        self.criticality = (
            Criticality.dangerous(
                "Removing deprecated fields without sufficient time for clients "
                "to update their queries may break their code"
            ) if field.deprecation_reason else Criticality.breaking(
                "Removing a field is a breaking change. It is preferred to deprecate the field before removing it."
            )
        )

    @property
    def message(self):
        return f"Field `{self.field_name}` was removed from object type `{self.parent.name}`"

    @property
    def path(self):
        return f"{self.parent.name}.{self.field_name}"

Ancestors

Inherited members