graphql-python / graphql-python/graphene
Cannot use an enum as a graphene.List named argument
Ouverte
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 8.2k
- Forks
- 818
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
When defining this query:
class Episode(graphene.Enum):
NEWHOPE = 4
EMPIRE = 5
JEDI = 6
class ListAvailableSubscriptionPlans(graphene.ObjectType):
available_subscription_plans = graphene.List(
graphene.NonNull(graphql.SubscriptionPlanObject),
subscriber_id=graphene.Int(required=True),
subscriber_type=Episode,
target_currency=graphene.String(required=True),
)
def resolve_available_subscription_plans(
self, info, subscriber_id, subscriber_type, target_currency
):
And running the python module, we get the error:
File "/app/subscription_management/subscriptions/api.py", line 16, in <module>
class ListAvailableSubscriptionPlans(graphene.ObjectType):
File "/app/virtualenv/lib/python3.8/site-packages/graphene/utils/subclass_with_meta.py", line 52, in __init_subclass__
super_class.__init_subclass_with_meta__(**options)
File "/app/virtualenv/lib/python3.8/site-packages/graphene/types/objecttype.py", line 112, in __init_subclass_with_meta__
fields.update(yank_fields_from_attrs(base.__dict__, _as=Field))
File "/app/virtualenv/lib/python3.8/site-packages/graphene/types/utils.py", line 31, in yank_fields_from_attrs
field = get_field_as(value, _as)
File "/app/virtualenv/lib/python3.8/site-packages/graphene/types/utils.py", line 21, in get_field_as
return _as.mounted(value)
File "/app/virtualenv/lib/python3.8/site-packages/graphene/types/mountedtype.py", line 15, in mounted
return cls(
File "/app/virtualenv/lib/python3.8/site-packages/graphene/types/field.py", line 103, in __init__
self.args = to_arguments(args or OrderedDict(), extra_args)
File "/app/virtualenv/lib/python3.8/site-packages/graphene/types/argument.py", line 80, in to_arguments
extra_args = sorted(extra_args.items(), key=lambda f: f[1])
TypeError: '<' not supported between instances of 'EnumMeta' and 'Int'
Because this line does not work:
subscriber_type=Episode
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par reproduire l’exemple et inspectez le chemin graphene/types/argument.py de la trace d’erreur, en particulier la gestion de extra_args. C’est terminé lorsqu’un argument nommé dont la valeur est un enum est accepté aux côtés de Int et que la définition de schéma affichée peut être créée sans le TypeError.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- api
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 45/100