graphql-python / graphql-python/graphene
[Documentation] Fix TypeError and make the examples in ObjectType > Resolver Parameters > Parent Value Object section self contained
- Lingua principale
- Python
- Stelle
- 8.2k
- Fork
- 818
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
**Note: for support questions, please use stackoverflow**. This repository's issues are reserved for feature requests and bug reports.
* **What is the current behavior?**
You can't actually execute the example under the **Parent Value Object** section. There are mainly two issues. Let's have a look at the code snippet:
```python
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")
```
* From a beginner's perspective, it's unclear how the `resolve_full_name` method has access to `first_name` and `last_name` when they aren't defined in the `Person` class.
* Seems like this `get_human` function(or method?) came out of nowhere.
Then it gets executed like this:
```python
schema = Schema(query=Query)
query_string = "{ me { fullName } }"
result = schema.execute(query_string)
assert result["data"]["me"] == {"fullName": "Luke Skywalker")
```
* The last line of the above snippet has a misplaced parenthesis
* Even if you fix that one, it raises `TypeError` saying `TypeError: 'ExecutionResult' object is not subscriptable`. `result` object has a `to_dict` method, maybe we should use that here.
* **If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem** via
a Github repo, https://repl.it or similar.
* **What is the expected behavior?**
At this stage of the documentation, the example should be self-contained, even if it gets a bit verbose.
* **What is the motivation / use case for changing the behavior?**
Maybe this is the expected behavior?
```python
from graphene import ObjectType, String, Field, Schema
class Person(ObjectType):
first_name = String()
last_name = String()
full_name = String()
def resolve_full_name(parent, info):
return f"{parent.first_name} {parent.last_name}"
def get_human(name):
first_name, last_name = name.split()
return Person(first_name=first_name, last_name=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")
schema = Schema(query=Query)
query_string = "{ me { fullName } }"
result = schema.execute(query_string)
assert result.to_dict()["data"]["me"] == {"fullName": "Luke Skywalker"}
```
* **Please tell us about your environment:**
- Version: graphql-core==2.3.2, graphql-relay==2.0.1
- Platform: Ubuntu 20.04
* **Other information** (e.g. detailed explanation, stacktraces, related issues, suggestions how to fix, links for us to have context, eg. stackoverflow)
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Valutazione
Questa issue non è ancora stata valutata.