From: David Vo Date: Sun, 19 Apr 2020 07:03:56 +0000 (+1000) Subject: Avoid `hasattr` in hot loop in Brotli decoder (#906) X-Git-Tag: 0.13.0.dev0~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9085582211b7c84a4f61850f6fd162ecbde1233a;p=thirdparty%2Fhttpx.git Avoid `hasattr` in hot loop in Brotli decoder (#906) --- diff --git a/httpx/_decoders.py b/httpx/_decoders.py index cecd65da..2a2e703d 100644 --- a/httpx/_decoders.py +++ b/httpx/_decoders.py @@ -105,15 +105,17 @@ class BrotliDecoder(Decoder): ), "The 'brotlipy' or 'brotli' library must be installed to use 'BrotliDecoder'" self.decompressor = brotli.Decompressor() self.seen_data = False + if hasattr(self.decompressor, "decompress"): + self._decompress = self.decompressor.decompress + else: + self._decompress = self.decompressor.process # pragma: nocover def decode(self, data: bytes) -> bytes: if not data: return b"" self.seen_data = True try: - if hasattr(self.decompressor, "decompress"): - return self.decompressor.decompress(data) - return self.decompressor.process(data) # pragma: nocover + return self._decompress(data) except brotli.error as exc: raise DecodingError from exc