graphene
graphene copied to clipboard
Unclear documentation for ObjectType
- What is the current behavior?
The current documentation for ObjectType states the following under the "Parent Value Object" heading:
from graphene import ObjectType, String, Field
class Person(ObjectType):
full_name = String()
def resolve_full_name(parent, info):
return f"{parent.first_name} {parent.last_name}"
class Query(ObjectType):
me = Field(Person)
def resolve_me(parent, info):
# returns an object that represents a Person
return get_human(name="Luke Skywalker")
- If the current behavior is a bug, please provide the steps to reproduce
If you copy this directly into PyCharm (or any other editor I would imagine) you get an error stating that the function get_human cannot be located.
I am currently trying to write my own ObjectType which will take an argument. However, because the documentation cannot be run, I don't know how to proceed.
I have the following:
class RunLog(ObjectType):
status = String()
result = String()
log = List(String)
def resolve_status(self, resolve, run_id):
return r.hget("run:%i" % run_id, "status").decode('utf-8')
def resolve_result(self, resolve, run_id):
return r.hget("run:%i" % run_id, "result").decode('utf-8')
def resolve_log(self, resolve, run_id):
log_data = r.lrange("run:%i:log" % run_id, 0, -1)
log_data = [entry.decode('utf-8') for entry in log_data]
return log_data
class Query(ObjectType):
log_by_run_id = Field(RunLog, run_id=Int(required=True))
# @login_required
def resolve_log_by_run_id(root, info, run_id):
return **?????**
Because the documentation references an unknown function, I don't know what to put in the final line as the return value for resolve_log_by_run_id.
This type of unknown function of class seems to appear a lot in the documentation. It can be seen again under Executing a query.
- What is the expected behavior?
The documentation can be clearly interoperated.
I encountered this issue too. Tried to copy paste the example code and was unable to run it because get_human
is not defined anywhere in the documentation. I eventually made the assumption that get_human
is defined as something like:
def get_human(name):
human = types.SimpleNamespace()
human.first_name, human.last_name = name.split(' ')
return human
I encountered this issue too. Tried to copy paste the example code and was unable to run it because
get_human
is not defined anywhere in the documentation. I eventually made the assumption thatget_human
is defined as something like:def get_human(name): human = types.SimpleNamespace() human.first_name, human.last_name = name.split(' ') return human
I think your correct. I eventually made this work using a similar approach.
I’m happy to update the documentation. Where can I find the context of the ObjectType documentation?
How about this?
def get_human(name):
first_name, last_name = name.split()
return Person(first_name, last_name)
related to #1239