As shown in the following code:
b64_encoded_bytes = base64.b64encode(zlib.compress(b'abcde'))
encoded_bytes_representation = str(b64_encoded_bytes) # this the cause
zlib.decompress(base64.b64decode(encoded_bytes_representation))
Zlib.decopress error
zlib.error: Error -3 while decompressing: incorrect header check
The reason for this is the use of the str() method
The description of the str() method in the python3 documentation.
If neither encoding nor errors is given, str(object) returns object.str(), which is the “informal” or nicely printable string representation of object. For string objects, this is the string itself. If object does not have a str() method, then str() falls back to returning repr(object).
The str() method only serves to put the
b'eJxLTEpOSQUABcgB8A=='
Converted to
"b'eJxLTEpOSQUABcgB8A=='"
The correct conversion should be to
"eJxLTEpOSQUABcgB8A=="
The solution is to specify the encoding method in the str() method
str(b64_encoded_bytes, 'utf-8')