Metadata-Version: 2.1
Name: filter-certwarning
Version: 1.0.1
Summary: Decorators for filtering InsecureRequestWarnings in requests and urllib3 apps
Author-email: Darren P Meyer <darren+filtercertwarning@darrenpmeyer.com>
License: BSD-2-Clause
Project-URL: Repository, https://github.com/darrenpmeyer/filter-certwarning.git
Project-URL: Homepage, https://github.com/darrenpmeyer/filter-certwarning
Keywords: certwarning,urllib3,certificate,warnings
Classifier: Development Status :: 5 - Production/Stable
Classifier: Operating System :: POSIX
Classifier: License :: OSI Approved :: BSD License
Classifier: Programming Language :: Python :: 3 :: Only
Requires-Python: >=3.5
Description-Content-Type: text/x-rst
License-File: LICENSE
Requires-Dist: urllib3

filter-certwarning
==================

Decorators for filtering InsecureRequestWarnings in `requests` and other `urllib3`-based Python 3 modules

**NOTE:** tested only for Python3.

When developing applications/modules using the ``requests`` module (or using ``urllib3`` directly), it is
sometimes useful to disable certificate validation, or to permit consumers/users to do so. However, doing
so makes *each request* issue an InsecureRequestWarning, which is a lot of noise.

**filter-certwarning** provides two decorators to make this behavior more reasonable.

- ``@filter_certwarning.warnonce`` causes the warning to be issued only warnonce, the first time the decorated
  function is called

- ``@filter_certwarning.silent`` is an alias for ``@filter_certwarning('ignore')``, and causes the warning to be
  entirely suppressed for that function call

Examples:
    A requests-based app with verification off that issues the warning only warnonce::

        import requests
        import filter_certwarning

        ...

        @filter_certwarning.warnonce
        sub get_data():
            # the next line will fire an InsecureRequestWarning the first time this
            # function is called, but subsequent calls to this function will be silent
            resp = requests.get('https://localhost/status', verify=False)

    The following supresses the warning entirely. **This is not recommended unless you've given a lot of thought
    to the security implications and trade-offs.**::

        import requests
        import filter_certwarning

        ...

        @filter_certwarning.silent
        sub get_data():
            # the next line will fire an InsecureRequestWarning the first time this
            # function is called, but subsequent calls to this function will be silent
            resp = requests.get('https://localhost/status', verify=False)


Installing
----------

To install::

    pip install filter-certwarning

