]> git.ipfire.org Git - thirdparty/httpx.git/commitdiff
Fast path returns for normalize_path cases (#3189)
authorTom Christie <tom@tomchristie.com>
Fri, 17 May 2024 17:25:38 +0000 (18:25 +0100)
committerGitHub <noreply@github.com>
Fri, 17 May 2024 17:25:38 +0000 (18:25 +0100)
Co-authored-by: Kar Petrosyan <92274156+karpetrosyan@users.noreply.github.com>
httpx/_urlparse.py

index 883f0895d3e8356b69edbd1bf4f463fb107da88d..575e6d56248dc87bcf568572b9d15b7111f79f2c 100644 (file)
@@ -392,8 +392,17 @@ def normalize_path(path: str) -> str:
 
         normalize_path("/path/./to/somewhere/..") == "/path/to"
     """
-    # https://datatracker.ietf.org/doc/html/rfc3986#section-5.2.4
+    # Fast return when no '.' characters in the path.
+    if "." not in path:
+        return path
+
     components = path.split("/")
+
+    # Fast return when no '.' or '..' components in the path.
+    if "." not in components and ".." not in components:
+        return path
+
+    # https://datatracker.ietf.org/doc/html/rfc3986#section-5.2.4
     output: list[str] = []
     for component in components:
         if component == ".":