◐ Shell
clean mode source ↗

Remove uu.py and test_uu.py by arihant2math · Pull Request #5607 · RustPython/RustPython

Expand Up @@ -7,7 +7,6 @@ __all__ = ['Message', 'EmailMessage']
import re import uu import quopri from io import BytesIO, StringIO
Expand Down Expand Up @@ -101,6 +100,35 @@ def _unquotevalue(value): return utils.unquote(value)

def _decode_uu(encoded):

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

huh,, so uu library is gone but the decoding feature is still in the standard library

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah I just copied this off the 3.13 stdlib, seems like a weird patch.

"""Decode uuencoded data.""" decoded_lines = [] encoded_lines_iter = iter(encoded.splitlines()) for line in encoded_lines_iter: if line.startswith(b"begin "): mode, _, path = line.removeprefix(b"begin ").partition(b" ") try: int(mode, base=8) except ValueError: continue else: break else: raise ValueError("`begin` line not found") for line in encoded_lines_iter: if not line: raise ValueError("Truncated input") elif line.strip(b' \t\r\n\f') == b'end': break try: decoded_line = binascii.a2b_uu(line) except binascii.Error: # Workaround for broken uuencoders by /Fredrik Lundh nbytes = (((line[0]-32) & 63) * 4 + 5) // 3 decoded_line = binascii.a2b_uu(line[:nbytes]) decoded_lines.append(decoded_line)
return b''.join(decoded_lines)
class Message: """Basic message object. Expand Down Expand Up @@ -288,13 +316,10 @@ def get_payload(self, i=None, decode=False): self.policy.handle_defect(self, defect) return value elif cte in ('x-uuencode', 'uuencode', 'uue', 'x-uue'): in_file = BytesIO(bpayload) out_file = BytesIO() try: uu.decode(in_file, out_file, quiet=True) return out_file.getvalue() except uu.Error: # Some decoding problem return _decode_uu(bpayload) except ValueError: # Some decoding problem. return bpayload if isinstance(payload, str): return bpayload Expand Down