[Python-checkins] gh-102507 Remove invisible pagebreak characters (#102531)

AlexWaygood webhook-mailer at python.org
Wed Mar 8 08:58:54 EST 2023


https://github.com/python/cpython/commit/b097925858c6975c73e989226cf278cc382c0416
commit: b097925858c6975c73e989226cf278cc382c0416
branch: main
author: JosephSBoyle <48555120+JosephSBoyle at users.noreply.github.com>
committer: AlexWaygood <Alex.Waygood at Gmail.com>
date: 2023-03-08T13:58:14Z
summary:

gh-102507 Remove invisible pagebreak characters (#102531)

Co-authored-by: AlexWaygood <alex.waygood at gmail.com>

files:
M Lib/email/__init__.py
M Lib/email/base64mime.py
M Lib/email/charset.py
M Lib/email/encoders.py
M Lib/email/feedparser.py
M Lib/email/generator.py
M Lib/email/header.py
M Lib/email/iterators.py
M Lib/email/mime/base.py
M Lib/email/mime/message.py
M Lib/email/mime/multipart.py
M Lib/email/mime/nonmultipart.py
M Lib/email/mime/text.py
M Lib/email/parser.py
M Modules/_io/bufferedio.c
M Tools/i18n/pygettext.py

diff --git a/Lib/email/__init__.py b/Lib/email/__init__.py
index fae872439edc..9fa477830041 100644
--- a/Lib/email/__init__.py
+++ b/Lib/email/__init__.py
@@ -25,7 +25,6 @@
     ]
 
 
-

 # Some convenience routines.  Don't import Parser and Message as side-effects
 # of importing email since those cascadingly import most of the rest of the
 # email package.
diff --git a/Lib/email/base64mime.py b/Lib/email/base64mime.py
index a7cc37365c6f..4cdf22666e30 100644
--- a/Lib/email/base64mime.py
+++ b/Lib/email/base64mime.py
@@ -45,7 +45,6 @@
 MISC_LEN = 7
 
 
-

 # Helpers
 def header_length(bytearray):
     """Return the length of s when it is encoded with base64."""
@@ -57,7 +56,6 @@ def header_length(bytearray):
     return n
 
 
-

 def header_encode(header_bytes, charset='iso-8859-1'):
     """Encode a single header line with Base64 encoding in a given charset.
 
@@ -72,7 +70,6 @@ def header_encode(header_bytes, charset='iso-8859-1'):
     return '=?%s?b?%s?=' % (charset, encoded)
 
 
-

 def body_encode(s, maxlinelen=76, eol=NL):
     r"""Encode a string with base64.
 
@@ -98,7 +95,6 @@ def body_encode(s, maxlinelen=76, eol=NL):
     return EMPTYSTRING.join(encvec)
 
 
-

 def decode(string):
     """Decode a raw base64 string, returning a bytes object.
 
diff --git a/Lib/email/charset.py b/Lib/email/charset.py
index 791b6584b247..9af269442fb8 100644
--- a/Lib/email/charset.py
+++ b/Lib/email/charset.py
@@ -18,7 +18,6 @@
 from email.encoders import encode_7or8bit
 
 
-

 # Flags for types of header encodings
 QP          = 1 # Quoted-Printable
 BASE64      = 2 # Base64
@@ -32,7 +31,6 @@
 EMPTYSTRING = ''
 
 
-

 # Defaults
 CHARSETS = {
     # input        header enc  body enc output conv
@@ -104,7 +102,6 @@
     }
 
 
-

 # Convenience functions for extending the above mappings
 def add_charset(charset, header_enc=None, body_enc=None, output_charset=None):
     """Add character set properties to the global registry.
@@ -153,7 +150,6 @@ def add_codec(charset, codecname):
     CODEC_MAP[charset] = codecname
 
 
-

 # Convenience function for encoding strings, taking into account
 # that they might be unknown-8bit (ie: have surrogate-escaped bytes)
 def _encode(string, codec):
@@ -163,7 +159,6 @@ def _encode(string, codec):
         return string.encode(codec)
 
 
-

 class Charset:
     """Map character sets to their email properties.
 
diff --git a/Lib/email/encoders.py b/Lib/email/encoders.py
index 0a66acb6240b..17bd1ab7b19f 100644
--- a/Lib/email/encoders.py
+++ b/Lib/email/encoders.py
@@ -16,7 +16,6 @@
 from quopri import encodestring as _encodestring
 
 
-

 def _qencode(s):
     enc = _encodestring(s, quotetabs=True)
     # Must encode spaces, which quopri.encodestring() doesn't do
@@ -34,7 +33,6 @@ def encode_base64(msg):
     msg['Content-Transfer-Encoding'] = 'base64'
 
 
-

 def encode_quopri(msg):
     """Encode the message's payload in quoted-printable.
 
@@ -46,7 +44,6 @@ def encode_quopri(msg):
     msg['Content-Transfer-Encoding'] = 'quoted-printable'
 
 
-

 def encode_7or8bit(msg):
     """Set the Content-Transfer-Encoding header to 7bit or 8bit."""
     orig = msg.get_payload(decode=True)
@@ -64,6 +61,5 @@ def encode_7or8bit(msg):
         msg['Content-Transfer-Encoding'] = '7bit'
 
 
-

 def encode_noop(msg):
     """Do nothing."""
diff --git a/Lib/email/feedparser.py b/Lib/email/feedparser.py
index 97d3f5144d60..6bc4e0c4e598 100644
--- a/Lib/email/feedparser.py
+++ b/Lib/email/feedparser.py
@@ -41,7 +41,6 @@
 NeedMoreData = object()
 
 
-

 class BufferedSubFile(object):
     """A file-ish object that can have new data loaded into it.
 
@@ -132,7 +131,6 @@ def __next__(self):
         return line
 
 
-

 class FeedParser:
     """A feed-style parser of email."""
 
diff --git a/Lib/email/generator.py b/Lib/email/generator.py
index 885e6ba98540..7ccbe10eb768 100644
--- a/Lib/email/generator.py
+++ b/Lib/email/generator.py
@@ -22,7 +22,6 @@
 fcre = re.compile(r'^From ', re.MULTILINE)
 
 
-

 class Generator:
     """Generates output from a Message object tree.
 
@@ -392,7 +391,7 @@ def _make_boundary(cls, text=None):
     def _compile_re(cls, s, flags):
         return re.compile(s, flags)
 
-

+
 class BytesGenerator(Generator):
     """Generates a bytes version of a Message object tree.
 
@@ -443,7 +442,6 @@ def _compile_re(cls, s, flags):
         return re.compile(s.encode('ascii'), flags)
 
 
-

 _FMT = '[Non-text (%(type)s) part of message omitted, filename %(filename)s]'
 
 class DecodedGenerator(Generator):
@@ -503,7 +501,6 @@ def _dispatch(self, msg):
                     }, file=self)
 
 
-

 # Helper used by Generator._make_boundary
 _width = len(repr(sys.maxsize-1))
 _fmt = '%%0%dd' % _width
diff --git a/Lib/email/header.py b/Lib/email/header.py
index 4ab0032bc661..984851a7d9a6 100644
--- a/Lib/email/header.py
+++ b/Lib/email/header.py
@@ -52,12 +52,10 @@
 _embedded_header = re.compile(r'\n[^ \t]+:')
 
 
-

 # Helpers
 _max_append = email.quoprimime._max_append
 
 
-

 def decode_header(header):
     """Decode a message header value without converting charset.
 
@@ -152,7 +150,6 @@ def decode_header(header):
     return collapsed
 
 
-

 def make_header(decoded_seq, maxlinelen=None, header_name=None,
                 continuation_ws=' '):
     """Create a Header from a sequence of pairs as returned by decode_header()
@@ -175,7 +172,6 @@ def make_header(decoded_seq, maxlinelen=None, header_name=None,
     return h
 
 
-

 class Header:
     def __init__(self, s=None, charset=None,
                  maxlinelen=None, header_name=None,
@@ -409,7 +405,6 @@ def _normalize(self):
         self._chunks = chunks
 
 
-

 class _ValueFormatter:
     def __init__(self, headerlen, maxlen, continuation_ws, splitchars):
         self._maxlen = maxlen
diff --git a/Lib/email/iterators.py b/Lib/email/iterators.py
index b5502ee97526..3410935e38f4 100644
--- a/Lib/email/iterators.py
+++ b/Lib/email/iterators.py
@@ -15,7 +15,6 @@
 from io import StringIO
 
 
-

 # This function will become a method of the Message class
 def walk(self):
     """Walk over the message tree, yielding each subpart.
@@ -29,7 +28,6 @@ def walk(self):
             yield from subpart.walk()
 
 
-

 # These two functions are imported into the Iterators.py interface module.
 def body_line_iterator(msg, decode=False):
     """Iterate over the parts, returning string payloads line-by-line.
@@ -55,7 +53,6 @@ def typed_subpart_iterator(msg, maintype='text', subtype=None):
                 yield subpart
 
 
-

 def _structure(msg, fp=None, level=0, include_default=False):
     """A handy debugging aid"""
     if fp is None:
diff --git a/Lib/email/mime/base.py b/Lib/email/mime/base.py
index 1a3f9b51f6c0..f601f621cec3 100644
--- a/Lib/email/mime/base.py
+++ b/Lib/email/mime/base.py
@@ -11,7 +11,6 @@
 from email import message
 
 
-

 class MIMEBase(message.Message):
     """Base class for MIME specializations."""
 
diff --git a/Lib/email/mime/message.py b/Lib/email/mime/message.py
index 07e4f2d11961..61836b5a7861 100644
--- a/Lib/email/mime/message.py
+++ b/Lib/email/mime/message.py
@@ -10,7 +10,6 @@
 from email.mime.nonmultipart import MIMENonMultipart
 
 
-

 class MIMEMessage(MIMENonMultipart):
     """Class representing message/* MIME documents."""
 
diff --git a/Lib/email/mime/multipart.py b/Lib/email/mime/multipart.py
index 2d3f288810dd..94d81c771a47 100644
--- a/Lib/email/mime/multipart.py
+++ b/Lib/email/mime/multipart.py
@@ -9,7 +9,6 @@
 from email.mime.base import MIMEBase
 
 
-

 class MIMEMultipart(MIMEBase):
     """Base class for MIME multipart/* type messages."""
 
diff --git a/Lib/email/mime/nonmultipart.py b/Lib/email/mime/nonmultipart.py
index e1f51968b59e..a41386eb148c 100644
--- a/Lib/email/mime/nonmultipart.py
+++ b/Lib/email/mime/nonmultipart.py
@@ -10,7 +10,6 @@
 from email.mime.base import MIMEBase
 
 
-

 class MIMENonMultipart(MIMEBase):
     """Base class for MIME non-multipart type messages."""
 
diff --git a/Lib/email/mime/text.py b/Lib/email/mime/text.py
index 35b442383002..dfe53c426b2a 100644
--- a/Lib/email/mime/text.py
+++ b/Lib/email/mime/text.py
@@ -10,7 +10,6 @@
 from email.mime.nonmultipart import MIMENonMultipart
 
 
-

 class MIMEText(MIMENonMultipart):
     """Class for generating text/* type MIME documents."""
 
diff --git a/Lib/email/parser.py b/Lib/email/parser.py
index e94d455baa52..06d99b17f2f9 100644
--- a/Lib/email/parser.py
+++ b/Lib/email/parser.py
@@ -64,7 +64,6 @@ def parsestr(self, text, headersonly=False):
         return self.parse(StringIO(text), headersonly=headersonly)
 
 
-

 class HeaderParser(Parser):
     def parse(self, fp, headersonly=True):
         return Parser.parse(self, fp, True)
@@ -72,7 +71,7 @@ def parse(self, fp, headersonly=True):
     def parsestr(self, text, headersonly=True):
         return Parser.parsestr(self, text, True)
 
-

+
 class BytesParser:
 
     def __init__(self, *args, **kw):
diff --git a/Modules/_io/bufferedio.c b/Modules/_io/bufferedio.c
index 960026707fc5..2c71768be978 100644
--- a/Modules/_io/bufferedio.c
+++ b/Modules/_io/bufferedio.c
@@ -1742,7 +1742,6 @@ _bufferedreader_peek_unlocked(buffered *self)
     self->pos = 0;
     return PyBytes_FromStringAndSize(self->buffer, r);
 }
-

 
 
 /*
@@ -2052,7 +2051,6 @@ _io_BufferedWriter_write_impl(buffered *self, Py_buffer *buffer)
     LEAVE_BUFFERED(self)
     return res;
 }
-

 
 
 /*
@@ -2266,7 +2264,6 @@ bufferedrwpair_closed_get(rwpair *self, void *context)
     }
     return PyObject_GetAttr((PyObject *) self->writer, &_Py_ID(closed));
 }
-

 
 
 /*
diff --git a/Tools/i18n/pygettext.py b/Tools/i18n/pygettext.py
index 7ada79105db1..3a0b27ba420e 100755
--- a/Tools/i18n/pygettext.py
+++ b/Tools/i18n/pygettext.py
@@ -174,7 +174,6 @@
 EMPTYSTRING = ''
 
 
-

 # The normal pot-file header. msgmerge and Emacs's po-mode work better if it's
 # there.
 pot_header = _('''\
@@ -196,7 +195,7 @@
 
 ''')
 
-

+
 def usage(code, msg=''):
     print(__doc__ % globals(), file=sys.stderr)
     if msg:
@@ -204,7 +203,6 @@ def usage(code, msg=''):
     sys.exit(code)
 
 
-

 def make_escapes(pass_nonascii):
     global escapes, escape
     if pass_nonascii:
@@ -258,7 +256,7 @@ def normalize(s, encoding):
         s = '""\n"' + lineterm.join(lines) + '"'
     return s
 
-

+
 def containsAny(str, set):
     """Check whether 'str' contains ANY of the chars in 'set'"""
     return 1 in [c in str for c in set]
@@ -307,7 +305,7 @@ def getFilesForName(name):
 
     return []
 
-

+
 class TokenEater:
     def __init__(self, options):
         self.__options = options
@@ -515,7 +513,6 @@ def write(self, fp):
                 print('msgstr ""\n', file=fp)
 
 
-

 def main():
     global default_keywords
     try:
@@ -675,7 +672,7 @@ class Options:
         if closep:
             fp.close()
 
-

+
 if __name__ == '__main__':
     main()
     # some more test strings



More information about the Python-checkins mailing list