Requests: suporte urllib3 v1.25

Criado em 23 abr. 2019  ·  15Comentários  ·  Fonte: psf/requests

Suporte para urllib3 v1.25 (lançado hoje/ontem). O habitual yada-yada "meu IC está quebrado".

Vários pacotes dos quais dependemos (por exemplo google.cloud.storage , azure.storage ) têm verificação de versão estrita em requests usando pkg_resources.require('requests >= 2.18.0') . Quaisquer dependências não atendidas na cadeia abaixo e incluindo requests farão com que a verificação falhe e gere uma exceção. urllib3<1.25 é atualmente uma dessas dependências.

resultado esperado

Nenhuma exceção levantada na importação

Resultado atual

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

Etapas de reprodução

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
}

Comentários muito úteis

Aqui está uma pergunta possivelmente idiota: por que as solicitações restringem urllib3 a ser < 1,25? Como muitas outras dependências de pip continuarão a aumentar sua versão urllib3 mínima permitida, parece que isso garantirá duas coisas:

  1. Cada pequeno aumento de versão no urllib3 interromperá muitos projetos que dependem de solicitações (por exemplo, qualquer pessoa que esteja usando os principais pacotes do Google ou Microsoft Azure, entre muitos outros).
  2. Cada aumento de versão menor no urllib3 exigirá uma nova versão de solicitações para permitir a nova versão do urllib3.

O urllib3 faz alterações importantes com tanta frequência que nos preocupamos apenas em confiar em seu controle de versão? Ou há outra preocupação?

Todos 15 comentários

Observe que uma correção de solicitação de pull deve fechar #5065 e #4961

Observe também que uma solução para o exemplo de reprodução acima é:

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

Para aqueles que estão assistindo, como mencionado , estamos bloqueados em urllib3 v1.25.2

@nateprewitt FYI 1.25.2 será lançado muito em breve, eu recomendaria, além de não permitir o 1.25.0, também não permitir o 1.25.1?

Nosso pipeline de CI começa a receber um erro [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 de 22 de abril, quando urllib3 versão 1.25 foi lançada. Você acha que isso está relacionado a esse problema?

@rkooo567 , você tentou executar o CI com o requisito adicional urllib3<1.25 ?

@EpicWink Sim. E parece que resolve um problema. Também descobri que urllib3==1.25.2 também resolve o problema.

Foi lançado o urllib3 1.24.3 que corrige apenas o problema de injeção de CRLF para usuários do 1.24.X.

Aqui está uma pergunta possivelmente idiota: por que as solicitações restringem urllib3 a ser < 1,25? Como muitas outras dependências de pip continuarão a aumentar sua versão urllib3 mínima permitida, parece que isso garantirá duas coisas:

  1. Cada pequeno aumento de versão no urllib3 interromperá muitos projetos que dependem de solicitações (por exemplo, qualquer pessoa que esteja usando os principais pacotes do Google ou Microsoft Azure, entre muitos outros).
  2. Cada aumento de versão menor no urllib3 exigirá uma nova versão de solicitações para permitir a nova versão do urllib3.

O urllib3 faz alterações importantes com tanta frequência que nos preocupamos apenas em confiar em seu controle de versão? Ou há outra preocupação?

Com base no número de referências a esse problema nos rastreadores de outros projetos, tenho certeza de que muitos outros mantenedores de projetos gostariam de uma resolução para isso mais cedo ou mais tarde... :) t acionar notificações por e-mail.)

+1 porque agrava os problemas causados ​​pela falta de um resolvedor de dependência do Pip em alguns casos: https://github.com/pradyunsg/zazo/issues/14

Se você acha isso divertido, veja todas as coisas que usam solicitações e não podem atualizar urllib3. (fazemos algumas verificações manuais)

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

Resolvido com #5092, o lançamento está em pypi agora. Obrigado novamente @EpicWink

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

cnicodeme picture cnicodeme  ·  3Comentários

JimHokanson picture JimHokanson  ·  3Comentários

brainwane picture brainwane  ·  3Comentários

NoahCardoza picture NoahCardoza  ·  4Comentários

ghtyrant picture ghtyrant  ·  3Comentários