[openstack-dev] Announcing a new library: requestsexceptions

Monty Taylor mordred at inaugust.com
Wed Nov 4 23:43:49 UTC 2015


On 11/04/2015 06:30 PM, James E. Blair wrote:
> Hi,
>
> I'm pleased to announce the availability of a new micro-library named
> requestsexceptions.  Now the task of convincing the requests library
> not to fill up your filesystem with warnings about SSL requests has
> never been easier!
>
> Over in infra-land, we use the requests library a lot, whether it's
> gertty talking to Gerrit or shade talking to OpenStack, and we love
> using it.  It's a pleasure.  Except for two little things.
>
> Requests is in the middle of a number of unfortunate standoffs.  It is
> attempting to push the bar on SSL security by letting us all know when
> a request is substandard in some way -- whether that is because a
> certificate is missing a subject alternate name field, or the version
> of Python in use is missing the latest SSL features.
>
> This is great, but in many cases a user of requests is unable to
> address any of the underlying causes of these warnings.  For example,
> try as we might, public cloud providers are still using non-SAN
> certificates.  And upgrading python on a system (or even the
> underlying ssl module) is often out of the question.
>
> Requests has a solution to this -- a simple recipe to disable specific
> warnings when users know they are not necessary.
>
> This is when we run into another standoff.
>
> Requests is helpfully packaged in many GNU/Linux distributions.
> However, the standard version of requests bundles the urllib3 library.
> Some packagers have *unbundled* the urllib3 library from requests and
> cause it to use the packaged version of urllib3.  This would be a
> simple matter for the packagers and requests authors to argue about
> over beer at PyCon, except if you want to disable a specific warning
> rather than all warnings you need to import the specific urllib3
> exceptions that requests uses.  The import path for those exceptions
> will be different depending on whether urllib3 is bundled or not.
>
> This means that in order to find a specific exception in order to
> handle a requests warning, code like this must be used:
>
>    try:
>        from requests.packages.urllib3.exceptions import InsecurePlatformWarning
>    except ImportError:
>        try:
>            from urllib3.exceptions import InsecurePlatformWarning
>        except ImportError:
>            InsecurePlatformWarning = None
>
> The requestsexceptions library handles that for you so that you can
> simply type:
>
>    from requestsexepctions import InsecurePlatformWarning
>
> We have just released requestsexceptions to pypi at version 1.1.1, and
> proposed it to global requirements.  You can find it here:
>
>    https://pypi.python.org/pypi/requestsexceptions
>    https://git.openstack.org/cgit/openstack-infra/requestsexceptions

All hail the removal of non-actionable warnings from my logs!




More information about the OpenStack-dev mailing list