On Tue, 22 Apr 2025 at 21:26, Jacob Champion
<jacob.champ...@enterprisedb.com> wrote:
> - str.removeprefix/suffix() (3.9)

The way you replaced this does not have the same behaviour in the case
where the prefix/suffix is not part of the string. removeprefix/suffix
will not remove any characters in that case, but your code will always
remove the number of characters that the suffix/prefix is long. Maybe
your other checks and definition of the OAuth spec ensure that these
prefixes/suffixes are present when you remove them, but the code is
not the same in the general case (you'd need to add a hasprefix/suffix
check before removing the characters.

+        # Strip off the magic path segment. (The more readable
+        # str.removeprefix()/removesuffix() aren't available until Py3.9.)
         if self._alt_issuer:
             # The /alternate issuer uses IETF-style .well-known URIs.
             if self.path.startswith("/.well-known/"):
-                self.path = self.path.removesuffix("/alternate")
+                self.path = self.path[: -len("/alternate")]
             else:
-                self.path = self.path.removeprefix("/alternate")
+                self.path = self.path[len("/alternate") :]
         elif self._parameterized:
-            self.path = self.path.removeprefix("/param")
+            self.path = self.path[len("/param") :]


Reply via email to