parameters: (ssl_version=None, cert_reqs=None,
                             options=None, ciphers=None)
return_statement: return context
docstring: All arguments have the same meaning as ``ssl_wrap_socket``.
  
      By default, this function does a lot of the same work that
      ``ssl.create_default_context`` does on Python 3.4+. It:
  
      - Disables SSLv2, SSLv3, and compression
      - Sets a restricted set of server ciphers
  
      If you wish to enable SSLv3, you can do::
  
          from pip._vendor.urllib3.util import ssl_
          context = ssl_.create_urllib3_context()
          context.options &= ~ssl_.OP_NO_SSLv3
  
      You can do the same to enable compression (substituting ``COMPRESSION``
      for ``SSLv3`` in the last line above).
  
      :param ssl_version:
          The desired protocol version to use. This will default to
          PROTOCOL_SSLv23 which will negotiate the highest protocol that both
          the server and your installation of OpenSSL support.
      :param cert_reqs:
          Whether to require the certificate verification. This defaults to
          ``ssl.CERT_REQUIRED``.
      :param options:
          Specific OpenSSL options. These default to ``ssl.OP_NO_SSLv2``,
          ``ssl.OP_NO_SSLv3``, ``ssl.OP_NO_COMPRESSION``.
      :param ciphers:
          Which cipher suites to allow the server to select.
      :returns:
          Constructed SSLContext object with specified options
      :rtype: SSLContext
docstring_summary: All arguments have the same meaning as ``ssl_wrap_socket``.
docstring_tokens: All arguments have the same meaning as ssl_wrap_socket .
function: def create_urllib3_context(ssl_version=None, cert_reqs=None,
                             options=None, ciphers=None):
      """All arguments have the same meaning as ``ssl_wrap_socket``.
  
      By default, this function does a lot of the same work that
      ``ssl.create_default_context`` does on Python 3.4+. It:
  
      - Disables SSLv2, SSLv3, and compression
      - Sets a restricted set of server ciphers
  
      If you wish to enable SSLv3, you can do::
  
          from pip._vendor.urllib3.util import ssl_
          context = ssl_.create_urllib3_context()
          context.options &= ~ssl_.OP_NO_SSLv3
  
      You can do the same to enable compression (substituting ``COMPRESSION``
      for ``SSLv3`` in the last line above).
  
      :param ssl_version:
          The desired protocol version to use. This will default to
          PROTOCOL_SSLv23 which will negotiate the highest protocol that both
          the server and your installation of OpenSSL support.
      :param cert_reqs:
          Whether to require the certificate verification. This defaults to
          ``ssl.CERT_REQUIRED``.
      :param options:
          Specific OpenSSL options. These default to ``ssl.OP_NO_SSLv2``,
          ``ssl.OP_NO_SSLv3``, ``ssl.OP_NO_COMPRESSION``.
      :param ciphers:
          Which cipher suites to allow the server to select.
      :returns:
          Constructed SSLContext object with specified options
      :rtype: SSLContext
      """
      context = SSLContext(ssl_version or PROTOCOL_TLS)
  
      context.set_ciphers(ciphers or DEFAULT_CIPHERS)
  
      # Setting the default here, as we may have no ssl module on import
      cert_reqs = ssl.CERT_REQUIRED if cert_reqs is None else cert_reqs
  
      if options is None:
          options = 0
          # SSLv2 is easily broken and is considered harmful and dangerous
          options |= OP_NO_SSLv2
          # SSLv3 has several problems and is now dangerous
          options |= OP_NO_SSLv3
          # Disable compression to prevent CRIME attacks for OpenSSL 1.0+
          # (issue #309)
          options |= OP_NO_COMPRESSION
  
      context.options |= options
  
      context.verify_mode = cert_reqs
      if getattr(context, 'check_hostname', None) is not None:  # Platform-specific: Python 3.2
          # We do our own verification, including fingerprints and alternative
          # hostnames. So disable it here
          context.check_hostname = False
      return context
function_tokens: def create_urllib3_context ( ssl_version = None , cert_reqs = None , options = None , ciphers = None ) : context = SSLContext ( ssl_version or PROTOCOL_TLS ) context . set_ciphers ( ciphers or DEFAULT_CIPHERS ) # Setting the default here, as we may have no ssl module on import cert_reqs = ssl . CERT_REQUIRED if cert_reqs is None else cert_reqs if options is None : options = 0 # SSLv2 is easily broken and is considered harmful and dangerous options |= OP_NO_SSLv2 # SSLv3 has several problems and is now dangerous options |= OP_NO_SSLv3 # Disable compression to prevent CRIME attacks for OpenSSL 1.0+ # (issue #309) options |= OP_NO_COMPRESSION context . options |= options context . verify_mode = cert_reqs if getattr ( context , 'check_hostname' , None ) is not None : # Platform-specific: Python 3.2 # We do our own verification, including fingerprints and alternative # hostnames. So disable it here context . check_hostname = False return context