def graphql_field(
        field_name, field_type, arguments={}, context_args=[],
        description=None, is_deprecated=False, deprecation_reason=None):
    """Decorator that annotates a method as corresponding to a GraphQL field.

    The field appears in the GraphQL types for any of the containing
    class's subclasses that are annotated with graphql_object or
    graphql_interface.  The value of the field for a particular object
    is equal to the method's return value.

    To be precise, we do not necessarily call the decorated method on a
    given object; rather, we call the method with the same name as the
    decorated method.  For example, if we decorate a method Foo.foo()
    using graphql_field, and Bar overrides foo(), then for an object of
    type Bar, we obtain the field's value by calling Bar's
    implementation of foo(), not Foo's implementation.  In other words,
    we respect ordinary method overriding semantics.

    At present, we do not support annotating a method with multiple
    graphql_field annotations.

    basestring field_name - The name of the field.
    basestring field_type - The GraphQL type of the field's value.
    dict<basestring, basestring> arguments - A map from the names of the
        arguments to the field in GraphQL to their GraphQL types.  We
        pass the arguments to the method as keyword arguments, after
        changing the arguments' names from camelCase to snake_case.  Any
        arguments whose values are not supplied are omitted from the
        keyword arguments.  As such, we will use any default values for
        such arguments defined in Python.
    list<basestring> context_args - A list of the context arguments to
        include in the keyword arguments.  See
        GraphQlContext.context_arg.
    basestring description - A description of the field, or None.
        GraphQL favors the Markdown format.
    bool is_deprecated - Whether the field is deprecated.
    basestring deprecation_reason - An indication of why the field is
        deprecated, or None.  This is None if is_deprecated is False.
    """
    def decorator(func):
        func._graphql_field_name = field_name
        func._graphql_field_type = field_type
        func._graphql_field_args = arguments
        func._graphql_field_context_args = context_args
        func._graphql_field_description = description
        func._graphql_field_is_deprecated = is_deprecated
        func._graphql_field_deprecation_reason = deprecation_reason
        return func
    return decorator