Requests: prise en charge d'urllib3 v1.25

Créé le 23 avr. 2019  ·  15Commentaires  ·  Source: psf/requests

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.

résultat attendu

Aucune exception levée à l'importation

Résultat actuel

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].

Étapes de reproduction

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
}

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 :

  1. Chaque bosse de version mineure dans urllib3 cassera de nombreux projets qui dépendent des demandes (par exemple, toute personne qui utilise les principaux packages Google ou Microsoft Azure, parmi beaucoup d'autres).
  2. Chaque bosse de version mineure dans urllib3 nécessitera alors une nouvelle version des requêtes pour autoriser la nouvelle version d'urllib3.

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 ?

Tous les 15 commentaires

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

Pour ceux qui regardent, comme mentionné , nous sommes bloqués sur urllib3 v1.25.2

@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 :

  1. Chaque bosse de version mineure dans urllib3 cassera de nombreux projets qui dépendent des demandes (par exemple, toute personne qui utilise les principaux packages Google ou Microsoft Azure, parmi beaucoup d'autres).
  2. Chaque bosse de version mineure dans urllib3 nécessitera alors une nouvelle version des requêtes pour autoriser la nouvelle version d'urllib3.

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)

http://logs.openstack.org/36/658636/3/check/requirements-tox-py27-check-uc/48d2334/job-output.txt.gz#_2019-05-14_06_33_55_887702

Résolu avec # 5092, la version est maintenant disponible sur pypi. Merci encore @EpicWink

Cette page vous a été utile?
0 / 5 - 0 notes