Support for `urllib3>=2`?

I made an upgrade to some other package which must have bumped my urllib3 dependency. Since Prodigy uses cloudpathlib, it seems (see below for the stacktrace), this means that I hit an error. This Stackoverflow post pointed towards the solution.

So my question would be when / if Prodigy might support urllib3 versions that are greater than 2.x? It's been out for around a year now and is also pretty widely used.

โ”‚ /Users/strickvl/coding/zenml/repos/zenml/src/zenml/integrations/prodigy/annotators/prodigy_annot โ”‚
โ”‚ ator.py:21 in <module>                                                                           โ”‚
โ”‚                                                                                                  โ”‚
โ”‚    18                                                                                            โ”‚
โ”‚    19 import prodigy                                                                             โ”‚
โ”‚    20 from peewee import Database as PeeweeDatabase                                              โ”‚
โ”‚ โฑ  21 from prodigy.components.db import (                                                        โ”‚
โ”‚    22 โ”‚   Database as ProdigyDatabase,                                                           โ”‚
โ”‚    23 )                                                                                          โ”‚
โ”‚    24 from prodigy.components.db import connect                                                  โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ in init prodigy.components.db:35                                                                 โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /Users/strickvl/.pyenv/versions/3.10.12/envs/prodigy/lib/python3.10/site-packages/prodigy/struct โ”‚
โ”‚ ured_types.py:45 in <module>                                                                     โ”‚
โ”‚                                                                                                  โ”‚
โ”‚     42 import typeguard                                                                          โ”‚
โ”‚     43 from typeguard import TypeCheckError                                                      โ”‚
โ”‚     44                                                                                           โ”‚
โ”‚ โฑ   45 from .components.validate import ValidationErrorMsg, get_validation_error_msg             โ”‚
โ”‚     46 from .errors import ProdigyError                                                          โ”‚
โ”‚     47 from .types import (                                                                      โ”‚
โ”‚     48 โ”‚   AudioSpan,                                                                            โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /Users/strickvl/.pyenv/versions/3.10.12/envs/prodigy/lib/python3.10/site-packages/prodigy/compon โ”‚
โ”‚ ents/validate.py:20 in <module>                                                                  โ”‚
โ”‚                                                                                                  โ”‚
โ”‚    17 from wasabi import Printer                                                                 โ”‚
โ”‚    18                                                                                            โ”‚
โ”‚    19 from ..errors import RecipeValidationError                                                 โ”‚
โ”‚ โฑ  20 from ..types import (                                                                      โ”‚
โ”‚    21 โ”‚   AudioTask,                                                                             โ”‚
โ”‚    22 โ”‚   BlocksTask,                                                                            โ”‚
โ”‚    23 โ”‚   ChoiceTask,                                                                            โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /Users/strickvl/.pyenv/versions/3.10.12/envs/prodigy/lib/python3.10/site-packages/prodigy/types. โ”‚
โ”‚ py:20 in <module>                                                                                โ”‚
โ”‚                                                                                                  โ”‚
โ”‚    17 )                                                                                          โ”‚
โ”‚    18 from typing_extensions import Literal, NewType, NotRequired, TypedDict                     โ”‚
โ”‚    19                                                                                            โ”‚
โ”‚ โฑ  20 from cloudpathlib import AnyPath, CloudPath                                                โ”‚
โ”‚    21 from fastapi.security.http import HTTPAuthorizationCredentials                             โ”‚
โ”‚    22 from pydantic import (                                                                     โ”‚
โ”‚    23 โ”‚   BaseModel,                                                                             โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /Users/strickvl/.pyenv/versions/3.10.12/envs/prodigy/lib/python3.10/site-packages/cloudpathlib/_ โ”‚
โ”‚ _init__.py:7 in <module>                                                                         โ”‚
โ”‚                                                                                                  โ”‚
โ”‚    4 from .azure.azblobclient import AzureBlobClient                                             โ”‚
โ”‚    5 from .azure.azblobpath import AzureBlobPath                                                 โ”‚
โ”‚    6 from .cloudpath import CloudPath, implementation_registry                                   โ”‚
โ”‚ โฑ  7 from .s3.s3client import S3Client                                                           โ”‚
โ”‚    8 from .gs.gspath import GSPath                                                               โ”‚
โ”‚    9 from .gs.gsclient import GSClient                                                           โ”‚
โ”‚   10 from .s3.s3path import S3Path                                                               โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /Users/strickvl/.pyenv/versions/3.10.12/envs/prodigy/lib/python3.10/site-packages/cloudpathlib/s โ”‚
โ”‚ 3/__init__.py:1 in <module>                                                                      โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ โฑ 1 from .s3client import S3Client                                                               โ”‚
โ”‚   2 from .s3path import S3Path                                                                   โ”‚
โ”‚   3                                                                                              โ”‚
โ”‚   4 __all__ = [                                                                                  โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /Users/strickvl/.pyenv/versions/3.10.12/envs/prodigy/lib/python3.10/site-packages/cloudpathlib/s โ”‚
โ”‚ 3/s3client.py:13 in <module>                                                                     โ”‚
โ”‚                                                                                                  โ”‚
โ”‚    10 from .s3path import S3Path                                                                 โ”‚
โ”‚    11                                                                                            โ”‚
โ”‚    12 try:                                                                                       โ”‚
โ”‚ โฑ  13 โ”‚   from boto3.session import Session                                                      โ”‚
โ”‚    14 โ”‚   from boto3.s3.transfer import TransferConfig, S3Transfer                               โ”‚
โ”‚    15 โ”‚   from botocore.config import Config                                                     โ”‚
โ”‚    16 โ”‚   from botocore.exceptions import ClientError                                            โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /Users/strickvl/.pyenv/versions/3.10.12/envs/prodigy/lib/python3.10/site-packages/boto3/__init__ โ”‚
โ”‚ .py:16 in <module>                                                                               โ”‚
โ”‚                                                                                                  โ”‚
โ”‚    13                                                                                            โ”‚
โ”‚    14 import logging                                                                             โ”‚
โ”‚    15                                                                                            โ”‚
โ”‚ โฑ  16 from boto3.session import Session                                                          โ”‚
โ”‚    17 from boto3.compat import _warn_deprecated_python                                           โ”‚
โ”‚    18                                                                                            โ”‚
โ”‚    19                                                                                            โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /Users/strickvl/.pyenv/versions/3.10.12/envs/prodigy/lib/python3.10/site-packages/boto3/session. โ”‚
โ”‚ py:17 in <module>                                                                                โ”‚
โ”‚                                                                                                  โ”‚
โ”‚    14 import copy                                                                                โ”‚
โ”‚    15 import os                                                                                  โ”‚
โ”‚    16                                                                                            โ”‚
โ”‚ โฑ  17 import botocore.session                                                                    โ”‚
โ”‚    18 from botocore.client import Config                                                         โ”‚
โ”‚    19 from botocore.exceptions import DataNotFoundError, UnknownServiceError                     โ”‚
โ”‚    20                                                                                            โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /Users/strickvl/.pyenv/versions/3.10.12/envs/prodigy/lib/python3.10/site-packages/botocore/sessi โ”‚
โ”‚ on.py:30 in <module>                                                                             โ”‚
โ”‚                                                                                                  โ”‚
โ”‚     27 from botocore import __version__                                                          โ”‚
โ”‚     28 from botocore import UNSIGNED                                                             โ”‚
โ”‚     29 import botocore.configloader                                                              โ”‚
โ”‚ โฑ   30 import botocore.credentials                                                               โ”‚
โ”‚     31 import botocore.client                                                                    โ”‚
โ”‚     32 from botocore.configprovider import ConfigValueStore                                      โ”‚
โ”‚     33 from botocore.configprovider import ConfigChainFactory                                    โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /Users/strickvl/.pyenv/versions/3.10.12/envs/prodigy/lib/python3.10/site-packages/botocore/crede โ”‚
โ”‚ ntials.py:34 in <module>                                                                         โ”‚
โ”‚                                                                                                  โ”‚
โ”‚     31 from botocore import UNSIGNED                                                             โ”‚
โ”‚     32 from botocore.compat import total_seconds                                                 โ”‚
โ”‚     33 from botocore.compat import compat_shell_split                                            โ”‚
โ”‚ โฑ   34 from botocore.config import Config                                                        โ”‚
โ”‚     35 from botocore.exceptions import UnknownCredentialError                                    โ”‚
โ”‚     36 from botocore.exceptions import PartialCredentialsError                                   โ”‚
โ”‚     37 from botocore.exceptions import ConfigNotFound                                            โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /Users/strickvl/.pyenv/versions/3.10.12/envs/prodigy/lib/python3.10/site-packages/botocore/confi โ”‚
โ”‚ g.py:16 in <module>                                                                              โ”‚
โ”‚                                                                                                  โ”‚
โ”‚    13 import copy                                                                                โ”‚
โ”‚    14 from botocore.compat import OrderedDict                                                    โ”‚
โ”‚    15                                                                                            โ”‚
โ”‚ โฑ  16 from botocore.endpoint import DEFAULT_TIMEOUT, MAX_POOL_CONNECTIONS                        โ”‚
โ”‚    17 from botocore.exceptions import InvalidS3AddressingStyleError                              โ”‚
โ”‚    18 from botocore.exceptions import InvalidRetryConfigurationError                             โ”‚
โ”‚    19 from botocore.exceptions import InvalidMaxRetryAttemptsError                               โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /Users/strickvl/.pyenv/versions/3.10.12/envs/prodigy/lib/python3.10/site-packages/botocore/endpo โ”‚
โ”‚ int.py:22 in <module>                                                                            โ”‚
โ”‚                                                                                                  โ”‚
โ”‚    19                                                                                            โ”‚
โ”‚    20 from botocore.vendored import six                                                          โ”‚
โ”‚    21                                                                                            โ”‚
โ”‚ โฑ  22 from botocore.awsrequest import create_request_object                                      โ”‚
โ”‚    23 from botocore.exceptions import HTTPClientError                                            โ”‚
โ”‚    24 from botocore.httpsession import URLLib3Session                                            โ”‚
โ”‚    25 from botocore.utils import is_valid_endpoint_url, get_environ_proxies                      โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /Users/strickvl/.pyenv/versions/3.10.12/envs/prodigy/lib/python3.10/site-packages/botocore/awsre โ”‚
โ”‚ quest.py:25 in <module>                                                                          โ”‚
โ”‚                                                                                                  โ”‚
โ”‚    22 from urllib3.connectionpool import HTTPConnectionPool                                      โ”‚
โ”‚    23 from urllib3.connectionpool import HTTPSConnectionPool                                     โ”‚
โ”‚    24                                                                                            โ”‚
โ”‚ โฑ  25 import botocore.utils                                                                      โ”‚
โ”‚    26 from botocore.compat import six                                                            โ”‚
โ”‚    27 from botocore.compat import HTTPHeaders, HTTPResponse, urlunsplit, urlsplit, \             โ”‚
โ”‚    28 โ”‚    urlencode, MutableMapping                                                             โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /Users/strickvl/.pyenv/versions/3.10.12/envs/prodigy/lib/python3.10/site-packages/botocore/utils โ”‚
โ”‚ .py:33 in <module>                                                                               โ”‚
โ”‚                                                                                                  โ”‚
โ”‚     30                                                                                           โ”‚
โ”‚     31 import botocore                                                                           โ”‚
โ”‚     32 import botocore.awsrequest                                                                โ”‚
โ”‚ โฑ   33 import botocore.httpsession                                                               โ”‚
โ”‚     34 from botocore.compat import (                                                             โ”‚
โ”‚     35 โ”‚   โ”‚   json, quote, zip_longest, urlsplit, urlunsplit, OrderedDict,                      โ”‚
โ”‚     36 โ”‚   โ”‚   six, urlparse, get_tzinfo_options, get_md5, MD5_AVAILABLE                         โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /Users/strickvl/.pyenv/versions/3.10.12/envs/prodigy/lib/python3.10/site-packages/botocore/https โ”‚
โ”‚ ession.py:8 in <module>                                                                          โ”‚
โ”‚                                                                                                  โ”‚
โ”‚     5                                                                                            โ”‚
โ”‚     6 from urllib3 import PoolManager, ProxyManager, proxy_from_url, Timeout                     โ”‚
โ”‚     7 from urllib3.util.retry import Retry                                                       โ”‚
โ”‚ โฑ   8 from urllib3.util.ssl_ import (                                                            โ”‚
โ”‚     9 โ”‚   ssl, OP_NO_SSLv2, OP_NO_SSLv3, OP_NO_COMPRESSION, DEFAULT_CIPHERS,                     โ”‚
โ”‚    10 )                                                                                          โ”‚
โ”‚    11 from urllib3.exceptions import SSLError as URLLib3SSLError                                 โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
ImportError: cannot import name 'DEFAULT_CIPHERS' from 'urllib3.util.ssl_'
(/Users/strickvl/.pyenv/versions/3.10.12/envs/prodigy/lib/python3.10/site-packages/urllib3/util/ssl_.py)

Unfortunately this comes in from a subdependency. We depend on requests, and it's actually requests that has the upper pin on urllib3: requests/setup.cfg at 2d5f54779ad174035c5437b3b3c1146b0eaf60fe ยท psf/requests ยท GitHub . We're considering switching to httpx.

In general we try really hard to keep our dependency chains limited across our stack. We even have a package that vendors a bunch of serialisation libraries (srsly) so that we wouldn't have to depend directly on stuff like msgpack. But sometimes these things do get us.

requests is super common though, so if it weren't us you'd probably see the issue from someone else.

1 Like

Thanks. Ok yeah I get you. It's a pain to keep all of this working together. Appreciate your efforts to keep the library as unpinned as possible!

Yeah unfortunately with the way Python has only a single tree of dependencies, it's the only way.

1 Like