diff --git a/acme/acme/client.py b/acme/acme/client.py index a7471a4ec..17ff96e06 100644 --- a/acme/acme/client.py +++ b/acme/acme/client.py @@ -15,20 +15,12 @@ from typing import Set from typing import Text from typing import Tuple from typing import Union -import warnings import josepy as jose import OpenSSL import requests from requests.adapters import HTTPAdapter from requests.utils import parse_header_links -# We're capturing the warnings described at -# https://github.com/requests/toolbelt/issues/331 until we can remove this -# dependency in Certbot 2.0. -with warnings.catch_warnings(): - warnings.filterwarnings("ignore", "'urllib3.contrib.pyopenssl", - DeprecationWarning) - from requests_toolbelt.adapters.source import SourceAddressAdapter from acme import challenges from acme import crypto_util @@ -489,14 +481,10 @@ class ClientNetwork: :param bool verify_ssl: Whether to verify certificates on SSL connections. :param str user_agent: String to send as User-Agent header. :param float timeout: Timeout for requests. - :param source_address: Optional source address to bind to when making - requests. (deprecated since 1.30.0) - :type source_address: str or tuple(str, int) """ def __init__(self, key: jose.JWK, account: Optional[messages.RegistrationResource] = None, alg: jose.JWASignature = jose.RS256, verify_ssl: bool = True, - user_agent: str = 'acme-python', timeout: int = DEFAULT_NETWORK_TIMEOUT, - source_address: Optional[Union[str, Tuple[str, int]]] = None) -> None: + user_agent: str = 'acme-python', timeout: int = DEFAULT_NETWORK_TIMEOUT) -> None: self.key = key self.account = account self.alg = alg @@ -507,11 +495,6 @@ class ClientNetwork: self._default_timeout = timeout adapter = HTTPAdapter() - if source_address is not None: - warnings.warn("Support for source_address is deprecated and will be " - "removed soon.", DeprecationWarning, stacklevel=2) - adapter = SourceAddressAdapter(source_address) - self.session.mount("http://", adapter) self.session.mount("https://", adapter) diff --git a/acme/setup.py b/acme/setup.py index 5d88564dd..d71580153 100644 --- a/acme/setup.py +++ b/acme/setup.py @@ -12,7 +12,6 @@ install_requires = [ 'pyrfc3339', 'pytz>=2019.3', 'requests>=2.20.0', - 'requests-toolbelt>=0.3.0', 'setuptools>=41.6.0', ] diff --git a/acme/tests/client_test.py b/acme/tests/client_test.py index c3209685c..093ac519a 100644 --- a/acme/tests/client_test.py +++ b/acme/tests/client_test.py @@ -791,32 +791,5 @@ class ClientNetworkWithMockedResponseTest(unittest.TestCase): self.net.post('uri', self.obj, content_type=None, new_nonce_url='new_nonce_uri') -class ClientNetworkSourceAddressBindingTest(unittest.TestCase): - """Tests that if ClientNetwork has a source IP set manually, the underlying library has - used the provided source address.""" - - def setUp(self): - self.source_address = "8.8.8.8" - - def test_source_address_set(self): - with mock.patch('warnings.warn') as mock_warn: - net = ClientNetwork(key=None, alg=None, source_address=self.source_address) - mock_warn.assert_called_once() - self.assertIn('source_address', mock_warn.call_args[0][0]) - for adapter in net.session.adapters.values(): - self.assertIn(self.source_address, adapter.source_address) - - def test_behavior_assumption(self): - """This is a test that guardrails the HTTPAdapter behavior so that if the default for - a Session() changes, the assumptions here aren't violated silently.""" - # Source address not specified, so the default adapter type should be bound -- this - # test should fail if the default adapter type is changed by requests - net = ClientNetwork(key=None, alg=None) - session = requests.Session() - for scheme in session.adapters: - client_network_adapter = net.session.adapters.get(scheme) - default_adapter = session.adapters.get(scheme) - self.assertEqual(client_network_adapter.__class__, default_adapter.__class__) - if __name__ == '__main__': unittest.main() # pragma: no cover