'Constructs a :class:`Request <Request>`, prepares it and sends it.
Returns :class:`Response <Response>` object.
:param method: method for the new :class:`Request` object.
:param url: URL for the new :class:`Request` object.
:param params: (optional) Dictionary or bytes to be sent in the query
string for the :class:`Request`.
:param data: (optional) Dictionary or bytes to send in the body of the
:class:`Request`.
:param headers: (optional) Dictionary of HTTP Headers to send with the
:class:`Request`.
:param cookies: (optional) Dict or CookieJar object to send with the
:class:`Request`.
:param files: (optional) Dictionary of \'filename\': file-like-objects
for multipart encoding upload.
:param auth: (optional) Auth tuple or callable to enable
Basic/Digest/Custom HTTP Auth.
:param timeout: (optional) Float describing the timeout of the
request.
:param allow_redirects: (optional) Boolean. Set to True by default.
:param proxies: (optional) Dictionary mapping protocol to the URL of
the proxy.
:param stream: (optional) whether to immediately download the response
content. Defaults to ``False``.
:param verify: (optional) if ``True``, the SSL cert will be verified.
A CA_BUNDLE path can also be provided.
:param cert: (optional) if String, path to ssl client cert file (.pem).
If Tuple, (\'cert\', \'key\') pair.'

def request(self, method, url, params=None, data=None, headers=None, cookies=None, files=None, auth=None, timeout=None, allow_redirects=True, proxies=None, hooks=None, stream=None, verify=None, cert=None):

    cookies = (cookies or {})
    proxies = (proxies or {})
    if (not isinstance(cookies, cookielib.CookieJar)):
        cookies = cookiejar_from_dict(cookies)
    merged_cookies = self.cookies.copy()
    merged_cookies.update(cookies)
    cookies = merged_cookies
    if self.trust_env:
        env_proxies = (get_environ_proxies(url) or {})
        for (k, v) in env_proxies.items():
            proxies.setdefault(k, v)
        if (not auth):
            auth = get_netrc_auth(url)
        if ((not verify) and (verify is not False)):
            verify = os.environ.get('REQUESTS_CA_BUNDLE')
        if ((not verify) and (verify is not False)):
            verify = os.environ.get('CURL_CA_BUNDLE')
    params = merge_kwargs(params, self.params)
    headers = merge_kwargs(headers, self.headers)
    auth = merge_kwargs(auth, self.auth)
    proxies = merge_kwargs(proxies, self.proxies)
    hooks = merge_kwargs(hooks, self.hooks)
    stream = merge_kwargs(stream, self.stream)
    verify = merge_kwargs(verify, self.verify)
    cert = merge_kwargs(cert, self.cert)
    req = Request()
    req.method = method.upper()
    req.url = url
    req.headers = headers
    req.files = files
    req.data = data
    req.params = params
    req.auth = auth
    req.cookies = cookies
    req.hooks = hooks
    prep = req.prepare()
    send_kwargs = {'stream': stream, 'timeout': timeout, 'verify': verify, 'cert': cert, 'proxies': proxies, 'allow_redirects': allow_redirects}
    resp = self.send(prep, **send_kwargs)
    return resp
