'This method re-evaluates the proxy configuration by considering the
environment variables. If we are redirected to a URL covered by
NO_PROXY, we strip the proxy configuration. Otherwise, we set missing
proxy keys for this URL (in case they were stripped by a previous
redirect).
This method also replaces the Proxy-Authorization header where
necessary.
:rtype: dict'

def rebuild_proxies(self, prepared_request, proxies):

    proxies = (proxies if (proxies is not None) else {})
    headers = prepared_request.headers
    url = prepared_request.url
    scheme = urlparse(url).scheme
    new_proxies = proxies.copy()
    no_proxy = proxies.get('no_proxy')
    bypass_proxy = should_bypass_proxies(url, no_proxy=no_proxy)
    if (self.trust_env and (not bypass_proxy)):
        environ_proxies = get_environ_proxies(url, no_proxy=no_proxy)
        proxy = environ_proxies.get(scheme, environ_proxies.get('all'))
        if proxy:
            new_proxies.setdefault(scheme, proxy)
    if ('Proxy-Authorization' in headers):
        del headers['Proxy-Authorization']
    try:
        (username, password) = get_auth_from_url(new_proxies[scheme])
    except KeyError:
        (username, password) = (None, None)
    if (username and password):
        headers['Proxy-Authorization'] = _basic_auth_str(username, password)
    return new_proxies
