From ef90cd26eb6267bb5c7106abe7974860ead839e2 Mon Sep 17 00:00:00 2001 From: Daniel Hahler Date: Tue, 12 Sep 2017 16:40:04 +0200 Subject: [PATCH 1/3] Fix handling of deprecated credentials in HTTPTransport Fixes https://github.com/core-api/coreapi-cli/issues/19#issuecomment-325771374. --- coreapi/transports/http.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreapi/transports/http.py b/coreapi/transports/http.py index a548024..233ccb7 100644 --- a/coreapi/transports/http.py +++ b/coreapi/transports/http.py @@ -349,7 +349,7 @@ def __init__(self, credentials=None, headers=None, auth=None, session=None, requ "The 'credentials' argument is now deprecated in favor of 'auth'.", DeprecationWarning ) - auth = DomainCredentials(credentials) + session.auth = DomainCredentials(credentials) if request_callback is not None or response_callback is not None: warnings.warn( "The 'request_callback' and 'response_callback' arguments are now deprecated. " From d0f9d041722c462520848fe98bc1e5b1854ecbd4 Mon Sep 17 00:00:00 2001 From: Daniel Hahler Date: Tue, 12 Sep 2017 16:57:16 +0200 Subject: [PATCH 2/3] HTTPTransport: ignore credentials if auth is given --- coreapi/transports/http.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/coreapi/transports/http.py b/coreapi/transports/http.py index 233ccb7..2709089 100644 --- a/coreapi/transports/http.py +++ b/coreapi/transports/http.py @@ -345,11 +345,14 @@ def __init__(self, credentials=None, headers=None, auth=None, session=None, requ session.cookies.set_policy(BlockAll()) if credentials is not None: - warnings.warn( - "The 'credentials' argument is now deprecated in favor of 'auth'.", - DeprecationWarning - ) - session.auth = DomainCredentials(credentials) + if auth is not None: + warnings.warn("Ignoring 'credentials' argument in favor of 'auth'.") + else: + warnings.warn( + "The 'credentials' argument is now deprecated in favor of 'auth'.", + DeprecationWarning + ) + session.auth = DomainCredentials(credentials) if request_callback is not None or response_callback is not None: warnings.warn( "The 'request_callback' and 'response_callback' arguments are now deprecated. " From 2413c112a5359e036bebb23ab3db9ce5a042d2c0 Mon Sep 17 00:00:00 2001 From: Daniel Hahler Date: Tue, 12 Sep 2017 16:58:50 +0200 Subject: [PATCH 3/3] Use stacklevel=2 with warnings --- coreapi/transports/http.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/coreapi/transports/http.py b/coreapi/transports/http.py index 2709089..4c741b5 100644 --- a/coreapi/transports/http.py +++ b/coreapi/transports/http.py @@ -346,18 +346,21 @@ def __init__(self, credentials=None, headers=None, auth=None, session=None, requ if credentials is not None: if auth is not None: - warnings.warn("Ignoring 'credentials' argument in favor of 'auth'.") + warnings.warn( + "Ignoring 'credentials' argument in favor of 'auth'.", + stacklevel=2 + ) else: warnings.warn( "The 'credentials' argument is now deprecated in favor of 'auth'.", - DeprecationWarning + DeprecationWarning, stacklevel=2 ) session.auth = DomainCredentials(credentials) if request_callback is not None or response_callback is not None: warnings.warn( "The 'request_callback' and 'response_callback' arguments are now deprecated. " "Use a custom 'session' instance instead.", - DeprecationWarning + DeprecationWarning, stacklevel=2 ) session.mount('https://', CallbackAdapter(request_callback, response_callback)) session.mount('http://', CallbackAdapter(request_callback, response_callback))