Skip to content

Issue with Client Python SDK Domain dataclass #9

Description

@KesslerAK

Bonjour,

j'ai potentiellement un problème avec la définition de la Dataclass pour le model "Domain" (models.py) dans le client python de CleverCloud et le call de création d'un nouveau domain avec la fonction create_new_domain (client.py)

La dataclasse est définie de la façon suivante :

domain: str
is_primary: bool

@classmethod
def from_api_response(cls, data: Any, *, is_primary: bool = False) -> Self:
    data = _mapping(data, model="Domain")
    return cls(
        domain=_require_str(data, "fqdn", model="Domain").rstrip("/"),
        is_primary=is_primary,
    )

De ce que je comprends il y a deux éléments : domain et is_primary.

Mon soucis viendrait de _require_str (models.py) :

`def _require_str(data: Mapping[str, Any], key: str, *, model: str) -> str:
value = data.get(key)
if not isinstance(value, str) or not value:
msg = f"{model}: missing or invalid required field {key!r}"
raise InvalidResponseError(msg)
return value`

Ici data est mappé sur le model "Domain", et key = "fqdn".
donc
domain=_require_str(data, "fqdn", model="Domain").rstrip("/"),
==> _require_str(data, "fqdn", model="Domain") ==> value = data.get("fqdn") alors que data est mappé sur Domain, qui a "domain" et "is_primary".

Dans la version que j'utilisais précédement, je faisais le rstip en amont pour justement créer le "fqdn" :

domain: str
is_primary: bool

@classmethod
def from_api_response(
    cls, data: dict[str, Any], *, is_primary: bool = False
) -> Self:
    fqdn = data.get("fqdn", "").rstrip("/")    #<==================================== LA
    return cls(
        domain=fqdn,
        is_primary=is_primary,
    )

Du coup j'ai l'impression que dans la nouvelle version du client, le rstrip est fait sur le résultat de _require_str alors que le _require_str devrait être fait sur le resultat du rstrip.

Cordialement,
AK.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions