Skip to content

Handle trailing underscores in field name. #85

@Morreski

Description

@Morreski

Hi !

Let's say I have a graphql query that takes a parameter which is named after a reserved python keyword (e.g: from). Following python conventions, this is how I would declare it:

    some_query  = graphene.Field(SomeSchema, from_=graphene.String(name="from"))

Here, name is used so that a user don't have to deal with the ugly underscore. Which is nice. However, there is a problem in the resolver:

    def resolve_some_query(_, args, context, infos):
        args["from_"]  # KeyError ! Because the arg name is 'from' which is not what I expect.

Now this is not a big deal, I could just use args["from"] when I need the value. But it becomes a problem when I want to pass all the parameters to an other function like this:

    def resolve_some_query(_, args, context, infos):
        call_some_handler(**args)

Because my function signature would looks like this and cause a syntax error:

    def call_some_handler(from=None):
        pass

I think trailing underscores should be removed when calling graphene.utils.str_converters.to_snake_case this would allow usage of python reserved keyword as parameters name while not breaking compatibility. If you guys agree with this I can make a PR during the weekend.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions