Requests: Compatibilidad con urllib3 v1.25

Creado en 23 abr. 2019  ·  15Comentarios  ·  Fuente: psf/requests

Soporte para urllib3 v1.25 (lanzado hoy/ayer). El habitual yada-yada "mi IC está roto".

Múltiples paquetes de los que dependemos (por ejemplo google.cloud.storage , azure.storage ) tienen una verificación de versión estricta en requests usando pkg_resources.require('requests >= 2.18.0') . Cualquier dependencia no satisfecha en la cadena a continuación y que incluya requests hará que la verificación falle y genere una excepción. urllib3<1.25 es actualmente una de esas dependencias.

Resultado Esperado

Ninguna excepción planteada en la importación

Resultado actual

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

Pasos de reproducción

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
}

Comentario más útil

Aquí hay una pregunta posiblemente tonta: ¿por qué las solicitudes restringen urllib3 a < 1.25? Dado que muchas otras dependencias de pip continuarán aumentando su versión mínima permitida de urllib3, parece que esto garantizará dos cosas:

  1. Cada aumento de versión menor en urllib3 romperá muchos proyectos que dependen de las solicitudes (por ejemplo, cualquiera que esté usando los principales paquetes de Google o Microsoft Azure, entre muchos otros).
  2. Cada aumento de versión menor en urllib3 requerirá una nueva versión de solicitudes para permitir la nueva versión de urllib3.

¿Urllib3 realiza cambios importantes con tanta frecuencia que nos preocupa simplemente confiar en su control de versiones? ¿O hay otra preocupación?

Todos 15 comentarios

Tenga en cuenta que una solicitud de extracción que solucione esto debería cerrar # 5065 y # 4961

También tenga en cuenta que una solución al ejemplo de reproducción anterior es:

pip3 install sentry-sdk google-cloud-storage 'urllib3<1.25'

Para aquellos que miran, como se mencionó , estamos bloqueados en urllib3 v1.25.2

@nateprewitt FYI 1.25.2 se lanzará muy pronto, recomendaría además de rechazar 1.25.0 también rechazar 1.25.1.

Nuestra canalización de CI comienza a recibir un error [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 a partir del 22 de abril, cuando se lanzó la versión 1.25 de urllib3 . ¿Crees que esto está relacionado con este problema?

@rkooo567 , ¿ha intentado ejecutar el CI con el requisito adicional urllib3<1.25 ?

@EpicWink Sí. Y parece que resuelve un problema. También descubrí que urllib3==1.25.2 también resuelve el problema.

Se lanzó urllib3 1.24.3, que soluciona solo el problema de inyección de CRLF para los usuarios de 1.24.X.

Aquí hay una pregunta posiblemente tonta: ¿por qué las solicitudes restringen urllib3 a < 1.25? Dado que muchas otras dependencias de pip continuarán aumentando su versión mínima permitida de urllib3, parece que esto garantizará dos cosas:

  1. Cada aumento de versión menor en urllib3 romperá muchos proyectos que dependen de las solicitudes (por ejemplo, cualquiera que esté usando los principales paquetes de Google o Microsoft Azure, entre muchos otros).
  2. Cada aumento de versión menor en urllib3 requerirá una nueva versión de solicitudes para permitir la nueva versión de urllib3.

¿Urllib3 realiza cambios importantes con tanta frecuencia que nos preocupa simplemente confiar en su control de versiones? ¿O hay otra preocupación?

Basado en la cantidad de referencias a este problema en los rastreadores de otros proyectos, estoy seguro de que hay muchos otros mantenedores de proyectos que agradecerían una solución a este problema más temprano que tarde... :) (señalándolo ya que las referencias del problema no activar notificaciones por correo electrónico).

+1 porque agrava los problemas causados ​​por la falta de un solucionador de dependencias de Pip en algunos casos: https://github.com/pradyunsg/zazo/issues/14

Si cree que es divertido, mire todas las cosas que usan solicitudes y no pueden actualizar urllib3. (hacemos algunas comprobaciones manuales)

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

Resuelto con # 5092, el lanzamiento está disponible en pypi ahora. Gracias de nuevo @EpicWink

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

jakul picture jakul  ·  3Comentarios

justlurking picture justlurking  ·  3Comentarios

JimHokanson picture JimHokanson  ·  3Comentarios

xsren picture xsren  ·  3Comentarios

thadeusb picture thadeusb  ·  3Comentarios