From a4161062501a32ce258e9f990737d494bfe419aa Mon Sep 17 00:00:00 2001 From: Yasser Tahiri Date: Wed, 9 Feb 2022 13:12:09 +0100 Subject: [PATCH] Refactor `httpx/_utils.py` (#1943) * Removes unnecessary call to keys() when iterating over a dictionary * Simplify conditionals into a form like a switch statement * Merge else clause's nested if statement into elif * Update httpx/_utils.py * Update httpx/_utils.py Co-authored-by: Tom Christie --- httpx/_utils.py | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/httpx/_utils.py b/httpx/_utils.py index 4d791b0825..3632783b9a 100644 --- a/httpx/_utils.py +++ b/httpx/_utils.py @@ -472,19 +472,18 @@ def __init__(self, pattern: str) -> None: self.port = url.port if not url.host or url.host == "*": self.host_regex: typing.Optional[typing.Pattern[str]] = None + elif url.host.startswith("*."): + # *.example.com should match "www.example.com", but not "example.com" + domain = re.escape(url.host[2:]) + self.host_regex = re.compile(f"^.+\\.{domain}$") + elif url.host.startswith("*"): + # *example.com should match "www.example.com" and "example.com" + domain = re.escape(url.host[1:]) + self.host_regex = re.compile(f"^(.+\\.)?{domain}$") else: - if url.host.startswith("*."): - # *.example.com should match "www.example.com", but not "example.com" - domain = re.escape(url.host[2:]) - self.host_regex = re.compile(f"^.+\\.{domain}$") - elif url.host.startswith("*"): - # *example.com should match "www.example.com" and "example.com" - domain = re.escape(url.host[1:]) - self.host_regex = re.compile(f"^(.+\\.)?{domain}$") - else: - # example.com should match "example.com" but not "www.example.com" - domain = re.escape(url.host) - self.host_regex = re.compile(f"^{domain}$") + # example.com should match "example.com" but not "www.example.com" + domain = re.escape(url.host) + self.host_regex = re.compile(f"^{domain}$") def matches(self, other: "URL") -> bool: if self.scheme and self.scheme != other.scheme: