Prise en charge de urllib3
v1.25 (publié aujourd'hui/hier). L'habituel yada-yada "mon CI est cassé".
Plusieurs packages dont nous dépendons (par exemple google.cloud.storage
, azure.storage
) ont une vérification de version stricte sur requests
en utilisant pkg_resources.require('requests >= 2.18.0')
. Toute dépendance non satisfaite dans la chaîne ci-dessous et incluant requests
entraînera l'échec de la vérification et déclenchera une exception. urllib3<1.25
est actuellement l'une de ces dépendances.
Aucune exception levée à l'importation
pkg_resources.ContextualVersionConflict: (urllib3 1.25 (/usr/local/lib/python3.6/dist-packages), Requirement.parse('urllib3<1.25,>=1.21.1'), {'requests'})
The above exception was the direct cause of the following exception:
ImportError: ``requests >= 2.18.0`` is required by the ``google.resumable_media.requests`` subpackage.
It can be installed via
pip install google-resumable-media[requests].
pip3 install sentry-sdk google-cloud-storage
>>> from google.cloud import storage
md5-cbc1943a1d569f335059802806d81765
/home/laurie/env-tmp/lib/python3.6/site-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.25) or chardet (3.0.4) doesn't match a supported version!
RequestsDependencyWarning)
{
"chardet": {
"version": "3.0.4"
},
"cryptography": {
"version": ""
},
"idna": {
"version": "2.8"
},
"implementation": {
"name": "CPython",
"version": "3.6.7"
},
"platform": {
"release": "4.18.0-17-generic",
"system": "Linux"
},
"pyOpenSSL": {
"openssl_version": "",
"version": null
},
"requests": {
"version": "2.21.0"
},
"system_ssl": {
"version": "1010100f"
},
"urllib3": {
"version": "1.25"
},
"using_pyopenssl": false
}
Notez qu'une pull-request corrigeant ceci devrait fermer #5065 et #4961
Notez également qu'une solution à l'exemple de reproduction ci-dessus est :
pip3 install sentry-sdk google-cloud-storage 'urllib3<1.25'
Il y a déjà un PR en préparation : https://github.com/kennethreitz/requests/pull/5063
@nateprewitt FYI 1.25.2 sera publié très bientôt, je recommanderais en plus d'interdire 1.25.0 également d'interdire 1.25.1 ?
Notre pipeline CI commence à recevoir une erreur [integration_py3_docker_metric] 19-04-29:10:26:57 ERROR [clipper_metric_docker.py:127] Failed to parse: http://localhost:44328/api/v1/series?match[]=clipper_mc_parse_time_ms_sum
à partir du 22 avril, date à laquelle la version 1.25 de urllib3
a été publiée. Pensez-vous que cela est lié à ce problème?
@rkooo567 , avez-vous essayé d'exécuter le CI avec l'exigence supplémentaire urllib3<1.25
?
@EpicWink Oui. Et il semble que cela résout un problème. J'ai également découvert que urllib3==1.25.2
résout également le problème.
urllib3 1.24.3 a été publié, ce qui corrige uniquement le problème d'injection CRLF pour les utilisateurs de 1.24.X.
Voici une question peut-être stupide : pourquoi les requêtes limitent-elles urllib3 à < 1,25 ? Étant donné que de nombreuses autres dépendances pip vont continuer à augmenter leur version minimale autorisée d'urllib3, il semble que cela va garantir deux choses :
Est-ce que urllib3 apporte des changements de rupture si souvent que nous nous inquiétons de simplement faire confiance à leur version ? Ou y a-t-il un autre souci ?
Sur la base du nombre de références à ce problème dans les trackers d'autres projets, je suis sûr qu'il y a beaucoup d'autres responsables de projet qui apprécieraient une résolution de ce problème le plus tôt possible… :) pour déclencher des notifications par e-mail.)
+1 car cela aggrave les problèmes causés par le manque de résolveur de dépendances de Pip dans certains cas : https://github.com/pradyunsg/zazo/issues/14
Si vous pensez que c'est amusant, regardez toutes les choses qui utilisent des requêtes et ne peuvent pas mettre à jour urllib3. (nous effectuons quelques vérifications manuelles)
Résolu avec # 5092, la version est maintenant disponible sur pypi. Merci encore @EpicWink
Commentaire le plus utile
Voici une question peut-être stupide : pourquoi les requêtes limitent-elles urllib3 à < 1,25 ? Étant donné que de nombreuses autres dépendances pip vont continuer à augmenter leur version minimale autorisée d'urllib3, il semble que cela va garantir deux choses :
Est-ce que urllib3 apporte des changements de rupture si souvent que nous nous inquiétons de simplement faire confiance à leur version ? Ou y a-t-il un autre souci ?