Mon client HTTP utilise le programme Python demande pour accéder à une API mandatée par CloudFlare. Le client convertit le code d'état de la réponse numérique en un code de statut HTTPStatus
enum instance. Simplifié ...
import requests
from http import HTTPStatus
url = ...
response = requests.get(url)
status = HTTPStatus(response.status_code)
Le service proxy CloudFlare peut renvoyer certains codes d'état HTTP 5xx non officiels : https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#CloudFlare . Ces causes HTTPStatus
de soulever un ValueError
parce que des codes tels que 522 (Connection Timed Out) ne font pas partie du HTTPStatus
définie dans le langage Python lib/http/__init__.py
.
Comment puis-je ajouter les codes d'état non officiels de CloudFlare à l'adresse suivante HTTPStatus
enum ? Ou, comment puis-je charger le HTTPStatus
dans un autre enum avec les codes d'état non officiels de CloudFlare ?
La version 3.5 de Python Enum
documentation, https://docs.python.org/3/library/enum.html décrit les restrictions qui m'ont contrarié jusqu'à présent.
Section 8.13.9 : La sous-classification d'une énumération n'est autorisée que si l'énumération ne définit aucun membre. l'énumération ne définit pas de membres.
Section 8.13.14.2 : La chose la plus intéressante à propos
Enum
Les membres sont qu'ils sont des singletons.EnumMeta
les crée tous pendant qu'il crée leEnum
elle-même, et met ensuite un__new__()
en place afin de s'assurer qu'aucun nouveau n'est jamais instancié en retournant le fichier uniquement les instances membres existantes.