Reformat code with automated tools

Apply standardized code style
This commit is contained in:
medmunds
2023-02-06 12:27:43 -08:00
committed by Mike Edmunds
parent 40891fcb4a
commit b4e22c63b3
94 changed files with 12936 additions and 7443 deletions

View File

@@ -3,9 +3,10 @@ from urllib.parse import urljoin
import requests
from anymail.utils import get_anymail_setting
from .base import AnymailBaseBackend, BasePayload
from .._version import __version__
from ..exceptions import AnymailRequestsAPIError
from .base import AnymailBaseBackend, BasePayload
class AnymailRequestsBackend(AnymailBaseBackend):
@@ -16,7 +17,9 @@ class AnymailRequestsBackend(AnymailBaseBackend):
def __init__(self, api_url, **kwargs):
"""Init options from Django settings"""
self.api_url = api_url
self.timeout = get_anymail_setting('requests_timeout', kwargs=kwargs, default=30)
self.timeout = get_anymail_setting(
"requests_timeout", kwargs=kwargs, default=30
)
super().__init__(**kwargs)
self.session = None
@@ -49,7 +52,10 @@ class AnymailRequestsBackend(AnymailBaseBackend):
raise RuntimeError(
"Session has not been opened in {class_name}._send. "
"(This is either an implementation error in {class_name}, "
"or you are incorrectly calling _send directly.)".format(class_name=class_name))
"or you are incorrectly calling _send directly.)".format(
class_name=class_name
)
)
return super()._send(message)
def create_session(self):
@@ -61,11 +67,13 @@ class AnymailRequestsBackend(AnymailBaseBackend):
session = requests.Session()
session.headers["User-Agent"] = "django-anymail/{version}-{esp} {orig}".format(
esp=self.esp_name.lower(), version=__version__,
orig=session.headers.get("User-Agent", ""))
esp=self.esp_name.lower(),
version=__version__,
orig=session.headers.get("User-Agent", ""),
)
if self.debug_api_requests:
session.hooks['response'].append(self._dump_api_request)
session.hooks["response"].append(self._dump_api_request)
return session
@@ -79,16 +87,20 @@ class AnymailRequestsBackend(AnymailBaseBackend):
Can raise AnymailRequestsAPIError for HTTP errors in the post
"""
params = payload.get_request_params(self.api_url)
params.setdefault('timeout', self.timeout)
params.setdefault("timeout", self.timeout)
try:
response = self.session.request(**params)
except requests.RequestException as err:
# raise an exception that is both AnymailRequestsAPIError
# and the original requests exception type
exc_class = type('AnymailRequestsAPIError', (AnymailRequestsAPIError, type(err)), {})
exc_class = type(
"AnymailRequestsAPIError", (AnymailRequestsAPIError, type(err)), {}
)
raise exc_class(
"Error posting to %s:" % params.get('url', '<missing url>'),
email_message=message, payload=payload) from err
"Error posting to %s:" % params.get("url", "<missing url>"),
email_message=message,
payload=payload,
) from err
self.raise_for_status(response, payload, message)
return response
@@ -101,8 +113,8 @@ class AnymailRequestsBackend(AnymailBaseBackend):
"""
if response.status_code < 200 or response.status_code >= 300:
raise AnymailRequestsAPIError(
email_message=message, payload=payload,
response=response, backend=self)
email_message=message, payload=payload, response=response, backend=self
)
def deserialize_json_response(self, response, payload, message):
"""Deserialize an ESP API response that's in json.
@@ -112,9 +124,13 @@ class AnymailRequestsBackend(AnymailBaseBackend):
try:
return response.json()
except ValueError as err:
raise AnymailRequestsAPIError("Invalid JSON in %s API response" % self.esp_name,
email_message=message, payload=payload, response=response,
backend=self) from err
raise AnymailRequestsAPIError(
"Invalid JSON in %s API response" % self.esp_name,
email_message=message,
payload=payload,
response=response,
backend=self,
) from err
@staticmethod
def _dump_api_request(response, **kwargs):
@@ -125,31 +141,52 @@ class AnymailRequestsBackend(AnymailBaseBackend):
# in http://docs.python-requests.org/en/v3.0.0/api/#api-changes)
request = response.request # a PreparedRequest
print("\n===== Anymail API request")
print("{method} {url}\n{headers}".format(
method=request.method, url=request.url,
headers="".join("{header}: {value}\n".format(header=header, value=value)
for (header, value) in request.headers.items()),
))
print(
"{method} {url}\n{headers}".format(
method=request.method,
url=request.url,
headers="".join(
"{header}: {value}\n".format(header=header, value=value)
for (header, value) in request.headers.items()
),
)
)
if request.body is not None:
body_text = (request.body if isinstance(request.body, str)
else request.body.decode("utf-8", errors="replace")
).replace("\r\n", "\n")
body_text = (
request.body
if isinstance(request.body, str)
else request.body.decode("utf-8", errors="replace")
).replace("\r\n", "\n")
print(body_text)
print("\n----- Response")
print("HTTP {status} {reason}\n{headers}\n{body}".format(
status=response.status_code, reason=response.reason,
headers="".join("{header}: {value}\n".format(header=header, value=value)
for (header, value) in response.headers.items()),
body=response.text, # Let Requests decode body content for us
))
print(
"HTTP {status} {reason}\n{headers}\n{body}".format(
status=response.status_code,
reason=response.reason,
headers="".join(
"{header}: {value}\n".format(header=header, value=value)
for (header, value) in response.headers.items()
),
body=response.text, # Let Requests decode body content for us
)
)
class RequestsPayload(BasePayload):
"""Abstract Payload for AnymailRequestsBackend"""
def __init__(self, message, defaults, backend,
method="POST", params=None, data=None,
headers=None, files=None, auth=None):
def __init__(
self,
message,
defaults,
backend,
method="POST",
params=None,
data=None,
headers=None,
files=None,
auth=None,
):
self.method = method
self.params = params
self.data = data
@@ -183,7 +220,10 @@ class RequestsPayload(BasePayload):
)
def get_api_endpoint(self):
"""Returns a str that should be joined to the backend's api_url for sending this payload."""
"""
Returns a str that should be joined to the backend's api_url
for sending this payload.
"""
return None
def serialize_data(self):