]> git.ipfire.org Git - thirdparty/httpx.git/commitdiff
Typing: enable warn_return_any (#2477)
authorMartijn Pieters <mj@zopatista.com>
Wed, 30 Nov 2022 13:08:02 +0000 (13:08 +0000)
committerGitHub <noreply@github.com>
Wed, 30 Nov 2022 13:08:02 +0000 (13:08 +0000)
httpx/_decoders.py
httpx/_main.py
httpx/_models.py
httpx/_urls.py
httpx/_utils.py
setup.cfg
tests/conftest.py
tests/test_content.py

index ba7b81d1c83b2a0801c700a379cdf857f39cf3a8..2f3a447d33214b2f474ca5d3cd36fc6ab81a13df 100644 (file)
@@ -104,6 +104,7 @@ class BrotliDecoder(ContentDecoder):
 
         self.decompressor = brotli.Decompressor()
         self.seen_data = False
+        self._decompress: typing.Callable[[bytes], bytes]
         if hasattr(self.decompressor, "decompress"):
             # The 'brotlicffi' package.
             self._decompress = self.decompressor.decompress  # pragma: no cover
index ba79c69e45295c631405cb9c8e521209c8f95a9a..7c12ce841d377ba019da8fc3cb5b35b773317cc7 100644 (file)
@@ -100,7 +100,9 @@ def get_lexer_for_response(response: Response) -> str:
     if content_type is not None:
         mime_type, _, _ = content_type.partition(";")
         try:
-            return pygments.lexers.get_lexer_for_mimetype(mime_type.strip()).name
+            return typing.cast(
+                str, pygments.lexers.get_lexer_for_mimetype(mime_type.strip()).name
+            )
         except pygments.util.ClassNotFound:  # pragma: no cover
             pass
     return ""  # pragma: no cover
index e3370369a26c8a85f643aa80fc0ae7d0600d6955..e0e5278cc052e2f9a6d0af0a1cb2107b03de98f4 100644 (file)
@@ -540,16 +540,20 @@ class Response:
     @property
     def http_version(self) -> str:
         try:
-            return self.extensions["http_version"].decode("ascii", errors="ignore")
+            http_version: bytes = self.extensions["http_version"]
         except KeyError:
             return "HTTP/1.1"
+        else:
+            return http_version.decode("ascii", errors="ignore")
 
     @property
     def reason_phrase(self) -> str:
         try:
-            return self.extensions["reason_phrase"].decode("ascii", errors="ignore")
+            reason_phrase: bytes = self.extensions["reason_phrase"]
         except KeyError:
             return codes.get_reason_phrase(self.status_code)
+        else:
+            return reason_phrase.decode("ascii", errors="ignore")
 
     @property
     def url(self) -> URL:
index 05db1652521a466b73f77e2588bb8cd03261bd6e..ab39c2ec01842aa19b6fbf686a5aea8bff16cbe8 100644 (file)
@@ -70,6 +70,8 @@ class URL:
       be properly URL escaped when decoding the parameter names and values themselves.
     """
 
+    _uri_reference: rfc3986.URIReference
+
     def __init__(
         self, url: typing.Union["URL", str] = "", **kwargs: typing.Any
     ) -> None:
@@ -507,7 +509,7 @@ class URL:
         return isinstance(other, (URL, str)) and str(self) == str(URL(other))
 
     def __str__(self) -> str:
-        return self._uri_reference.unsplit()
+        return typing.cast(str, self._uri_reference.unsplit())
 
     def __repr__(self) -> str:
         class_name = self.__class__.__name__
index 01eaacedb3678571a08ea76a13f06eea24132cf2..c1e9a38b55beba36b2720e08c0851156e7952ca6 100644 (file)
@@ -401,7 +401,7 @@ class Timer:
         elif library == "curio":  # pragma: no cover
             import curio
 
-            return await curio.clock()
+            return typing.cast(float, await curio.clock())
 
         import asyncio
 
index c7d43f0c0fa24e9366fd08e7603b973d282c77b4..15dd84c2474e25fc6e42a3897b8398f35648b6ba 100644 (file)
--- a/setup.cfg
+++ b/setup.cfg
@@ -16,6 +16,7 @@ disallow_untyped_decorators = True
 warn_redundant_casts = True
 strict_concatenate = True
 disallow_incomplete_defs = True
+warn_return_any = True
 
 [mypy-tests.*]
 disallow_untyped_defs = False
index 6dbb5267f31ae5678ffe398cae44a0fb5a12934a..cb4bf422c90157acad6d3571078dbfde26bcabcc 100644 (file)
@@ -52,7 +52,7 @@ def async_environment(request: typing.Any) -> str:
         ...
     ```
     """
-    return request.param
+    return typing.cast(str, request.param)
 
 
 @pytest.fixture(scope="function", autouse=True)
index 73220b2fe7f0c43f2232cad06583d866f5a97e3b..61d0c71e625acfee7b4e78336e93fee5665ff64c 100644 (file)
@@ -63,7 +63,7 @@ async def test_bytesio_content():
 @pytest.mark.asyncio
 async def test_async_bytesio_content():
     class AsyncBytesIO:
-        def __init__(self, content):
+        def __init__(self, content: bytes):
             self._idx = 0
             self._content = content