-
Notifications
You must be signed in to change notification settings - Fork 227
Description
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):
passI 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.