graphql-python / graphql-python/graphene

Cannot use an enum as a graphene.List named argument

Ouverte
#1,166 6 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

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

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. 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

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.