graphql-python / graphql-python/graphene

a field named "items" in InputObjectType occurs TypeError

Aperta
#1,150 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub
🐛 bug
Lingua principale
Python
Stelle
8.2k
Fork
818
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

I was trying to `json.dumps` with all inputs and some inputs had `TypeError` when they have a field named "items" like below.

```py
class ConfigInput(graphene.InputObjectType):
items = graphene.List(lambda: AnotherConfigInput)
...
```
when I try to `json.dumps` with this input, the error looks like
```py
File "/project/venv/lib/python3.7/site-packages/playhouse/mysql_ext.py", line 36, in db_value
return json.dumps(value)
File "/Users/user/.pyenv/versions/3.7.4/lib/python3.7/json/__init__.py", line 231, in dumps
return _default_encoder.encode(obj)
File "/Users/user/.pyenv/versions/3.7.4/lib/python3.7/json/encoder.py", line 199, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/Users/user/.pyenv/versions/3.7.4/lib/python3.7/json/encoder.py", line 257, in iterencode
return _iterencode(o, 0)
TypeError: attribute of type 'list' is not callable
```

found that [`setattr` in `InputObjectType` class](https://github.com/graphql-python/graphene/blob/master/graphene/types/inputobjecttype.py#L23-L24) overrides field's attr `items` which conflicts with the attribute `items` of `List`.

This is naming conflict, so I just solved it like below
```py
class ConfigInput(graphene.InputObjectType):
_items = graphene.List(lambda: AnotherConfigInput, name='items')
...
```

wonder if there is any good fix from graphene like [this issue](https://github.com/graphql-python/graphene/issues/899)

please let me know if you need more info or examples :)

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.