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.
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 :
De ce que je comprends il y a deux éléments : domain et is_primary.
Mon soucis viendrait de _require_str (models.py) :
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" :
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.