Requests: поддержка urllib3 v1.25

Созданный на 23 апр. 2019  ·  15Комментарии  ·  Источник: psf/requests

Поддержка urllib3 v1.25 (выпущена сегодня/вчера). Обычная ляда-ляда "мой КИ сломался".

Несколько пакетов, от которых мы зависим (например, google.cloud.storage , azure.storage ) имеют строгую проверку версии на requests с использованием pkg_resources.require('requests >= 2.18.0') . Любые неудовлетворенные зависимости в приведенной ниже цепочке, включая requests , приведут к сбою проверки и вызову исключение. urllib3<1.25 в настоящее время является одной из таких зависимостей.

ожидаемый результат

При импорте исключений не возникает

Фактический результат

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
}

Самый полезный комментарий

Вот, возможно, глупый вопрос: почему запросы ограничивают urllib3 значением <1,25? Поскольку многие другие зависимости от pip будут продолжать увеличивать свою минимально допустимую версию urllib3, похоже, что это гарантирует две вещи:

  1. Каждая незначительная версия urllib3 нарушит работу многих проектов, зависящих от запросов (например, любого, кто использует основные пакеты Google или Microsoft Azure, среди многих других).
  2. Каждый второстепенный скачок версии в urllib3 потребует нового выпуска запросов, чтобы разрешить новую версию urllib3.

Вносит ли urllib3 критические изменения так часто, что мы беспокоимся о том, чтобы просто доверять их версиям? Или есть другая забота?

Все 15 Комментарий

Обратите внимание, что запрос на включение, исправляющий это, должен закрыть #5065 и #4961.

Также обратите внимание, что решение приведенного выше примера воспроизведения:

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

Для тех, кто смотрит, как уже упоминалось , мы заблокированы на urllib3 v1.25.2

@nateprewitt FYI 1.25.2 будет выпущен очень скоро, я бы порекомендовал в дополнение к запрету 1.25.0 также запретить 1.25.1?

Наш конвейер CI начинает получать ошибку [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 с 22 апреля, когда была выпущена версия 1.25 urllib3 . Как вы думаете, это связано с этой проблемой?

@ rkooo567 , вы пробовали запустить CI с дополнительным требованием urllib3<1.25 ?

@EpicWink Да. И вроде решает проблему. Я также узнал, что urllib3==1.25.2 также решает проблему.

Выпущена версия urllib3 1.24.3, которая устраняет только проблему внедрения CRLF для пользователей 1.24.X.

Вот, возможно, глупый вопрос: почему запросы ограничивают urllib3 значением <1,25? Поскольку многие другие зависимости от pip будут продолжать увеличивать свою минимально допустимую версию urllib3, похоже, что это гарантирует две вещи:

  1. Каждая незначительная версия urllib3 нарушит работу многих проектов, зависящих от запросов (например, любого, кто использует основные пакеты Google или Microsoft Azure, среди многих других).
  2. Каждый второстепенный скачок версии в urllib3 потребует нового выпуска запросов, чтобы разрешить новую версию urllib3.

Вносит ли urllib3 критические изменения так часто, что мы беспокоимся о том, чтобы просто доверять их версиям? Или есть другая забота?

Основываясь на количестве ссылок на эту проблему в трекерах других проектов, я уверен, что есть много других сопровождающих проектов, которые были бы признательны за решение этой проблемы как можно скорее… :) (Указывая на это, поскольку ссылки на проблемы не t инициировать уведомления по электронной почте.)

+1, потому что в некоторых случаях это усугубляет проблемы, вызванные отсутствием у Pip преобразователя зависимостей : https://github.com/pradiunsg/zazo/issues/14

Если вы думаете, что это весело, посмотрите на все, что использует запросы и не может обновить urllib3. (мы проводим ручную проверку)

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

Решено с # 5092, релиз теперь на pypi. Еще раз спасибо @EpicWink

Была ли эта страница полезной?
0 / 5 - 0 рейтинги