openapi-generators / openapi-generators/openapi-python-client

Incorrect parsing of null as nullable enum value serialized as strings

Ouverte
#1,243 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
Python
Étoiles
2k
Forks
293
Merge moyen
34 min
PR mergées (30 j)
1

Description

Consider the following schema definition (which passes validation with the openapitools/openapi-generator-cli container image):

// [...]
          "deviceEncryptionKeyScheme": {
            "$ref": "#/components/schemas/DeviceEncryptionKeyScheme",
            "nullable": true  // <-- nullability declared
          },

// [...]
      "DeviceEncryptionKeyScheme": {
        "enum": ["Default8"],
        "type": "string"
      },

It looks as if openapi-python-client version 0.23.1 supports deserialization with the deviceEncryptionKeyScheme property being unset, but not it being null:

        _device_encryption_key_scheme = d.pop("deviceEncryptionKeyScheme", UNSET)
        device_encryption_key_scheme: Union[Unset, DeviceEncryptionKeyScheme]
        if isinstance(_device_encryption_key_scheme, Unset):
            device_encryption_key_scheme = UNSET
        else:
            device_encryption_key_scheme = DeviceEncryptionKeyScheme(_device_encryption_key_scheme)

This looks like a bug to me.

Guide de contribution

Ouvrir le guide de contribution

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

Reproduisez le cas d’enum nullable de l’issue en utilisant le comportement de openapi-python-client 0.23.1 et le code de désérialisation généré présenté. Commencez par le traitement de deviceEncryptionKeyScheme après d.pop ; comparez le chemin UNSET avec le chemin null. Le travail est terminé lorsqu’une valeur explicitement définie à null se désérialise correctement, tandis qu’une propriété non définie reste représentée par UNSET.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
openapi, 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
35/100

Recevez les nouvelles issues par e-mail

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