Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[3.11] Trim trailing whitespace and test on CI (GH-104275) #108215

Merged
merged 8 commits into from
Aug 22, 2023
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,10 @@
# https://git-scm.com/docs/gitignore#_pattern_format

# GitHub
.github/** @ezio-melotti
.github/** @ezio-melotti @hugovk

# pre-commit
.pre-commit-config.yaml @hugovk @AlexWaygood

# asyncio
**/*asyncio* @1st1 @asvetlov
Expand Down
22 changes: 22 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: Lint

on: [push, pull_request, workflow_dispatch]

permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

jobs:
lint:
runs-on: ubuntu-latest
timeout-minutes: 10

steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: "3.x"
- uses: pre-commit/action@v3.0.0
7 changes: 7 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.4.0
hooks:
- id: check-yaml
- id: trailing-whitespace
types_or: [c, python, rst]
2 changes: 1 addition & 1 deletion Lib/email/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
]



AlexWaygood marked this conversation as resolved.
Show resolved Hide resolved
# 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.
Expand Down
8 changes: 4 additions & 4 deletions Lib/email/base64mime.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
MISC_LEN = 7



AlexWaygood marked this conversation as resolved.
Show resolved Hide resolved
# Helpers
def header_length(bytearray):
"""Return the length of s when it is encoded with base64."""
Expand All @@ -57,7 +57,7 @@ def header_length(bytearray):
return n



AlexWaygood marked this conversation as resolved.
Show resolved Hide resolved
def header_encode(header_bytes, charset='iso-8859-1'):
"""Encode a single header line with Base64 encoding in a given charset.

Expand All @@ -72,7 +72,7 @@ def header_encode(header_bytes, charset='iso-8859-1'):
return '=?%s?b?%s?=' % (charset, encoded)



AlexWaygood marked this conversation as resolved.
Show resolved Hide resolved
def body_encode(s, maxlinelen=76, eol=NL):
r"""Encode a string with base64.

Expand All @@ -98,7 +98,7 @@ def body_encode(s, maxlinelen=76, eol=NL):
return EMPTYSTRING.join(encvec)



AlexWaygood marked this conversation as resolved.
Show resolved Hide resolved
def decode(string):
"""Decode a raw base64 string, returning a bytes object.

Expand Down
10 changes: 5 additions & 5 deletions Lib/email/charset.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
from email.encoders import encode_7or8bit



AlexWaygood marked this conversation as resolved.
Show resolved Hide resolved
# Flags for types of header encodings
QP = 1 # Quoted-Printable
BASE64 = 2 # Base64
Expand All @@ -32,7 +32,7 @@
EMPTYSTRING = ''



AlexWaygood marked this conversation as resolved.
Show resolved Hide resolved
# Defaults
CHARSETS = {
# input header enc body enc output conv
Expand Down Expand Up @@ -104,7 +104,7 @@
}



AlexWaygood marked this conversation as resolved.
Show resolved Hide resolved
# 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.
Expand Down Expand Up @@ -153,7 +153,7 @@ def add_codec(charset, codecname):
CODEC_MAP[charset] = codecname



AlexWaygood marked this conversation as resolved.
Show resolved Hide resolved
# Convenience function for encoding strings, taking into account
# that they might be unknown-8bit (ie: have surrogate-escaped bytes)
def _encode(string, codec):
Expand All @@ -163,7 +163,7 @@ def _encode(string, codec):
return string.encode(codec)



AlexWaygood marked this conversation as resolved.
Show resolved Hide resolved
class Charset:
"""Map character sets to their email properties.

Expand Down
8 changes: 4 additions & 4 deletions Lib/email/encoders.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
from quopri import encodestring as _encodestring



AlexWaygood marked this conversation as resolved.
Show resolved Hide resolved
def _qencode(s):
enc = _encodestring(s, quotetabs=True)
# Must encode spaces, which quopri.encodestring() doesn't do
Expand All @@ -34,7 +34,7 @@ def encode_base64(msg):
msg['Content-Transfer-Encoding'] = 'base64'



AlexWaygood marked this conversation as resolved.
Show resolved Hide resolved
def encode_quopri(msg):
"""Encode the message's payload in quoted-printable.

Expand All @@ -46,7 +46,7 @@ def encode_quopri(msg):
msg['Content-Transfer-Encoding'] = 'quoted-printable'



AlexWaygood marked this conversation as resolved.
Show resolved Hide resolved
def encode_7or8bit(msg):
"""Set the Content-Transfer-Encoding header to 7bit or 8bit."""
orig = msg.get_payload(decode=True)
Expand All @@ -64,6 +64,6 @@ def encode_7or8bit(msg):
msg['Content-Transfer-Encoding'] = '7bit'



AlexWaygood marked this conversation as resolved.
Show resolved Hide resolved
def encode_noop(msg):
"""Do nothing."""
4 changes: 2 additions & 2 deletions Lib/email/feedparser.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
NeedMoreData = object()



AlexWaygood marked this conversation as resolved.
Show resolved Hide resolved
class BufferedSubFile(object):
"""A file-ish object that can have new data loaded into it.

Expand Down Expand Up @@ -132,7 +132,7 @@ def __next__(self):
return line



AlexWaygood marked this conversation as resolved.
Show resolved Hide resolved
class FeedParser:
"""A feed-style parser of email."""

Expand Down
8 changes: 4 additions & 4 deletions Lib/email/generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
fcre = re.compile(r'^From ', re.MULTILINE)



AlexWaygood marked this conversation as resolved.
Show resolved Hide resolved
class Generator:
"""Generates output from a Message object tree.

Expand Down Expand Up @@ -392,7 +392,7 @@ def _make_boundary(cls, text=None):
def _compile_re(cls, s, flags):
return re.compile(s, flags)


AlexWaygood marked this conversation as resolved.
Show resolved Hide resolved
class BytesGenerator(Generator):
"""Generates a bytes version of a Message object tree.

Expand Down Expand Up @@ -443,7 +443,7 @@ def _compile_re(cls, s, flags):
return re.compile(s.encode('ascii'), flags)



AlexWaygood marked this conversation as resolved.
Show resolved Hide resolved
_FMT = '[Non-text (%(type)s) part of message omitted, filename %(filename)s]'

class DecodedGenerator(Generator):
Expand Down Expand Up @@ -503,7 +503,7 @@ def _dispatch(self, msg):
}, file=self)



AlexWaygood marked this conversation as resolved.
Show resolved Hide resolved
# Helper used by Generator._make_boundary
_width = len(repr(sys.maxsize-1))
_fmt = '%%0%dd' % _width
Expand Down
10 changes: 5 additions & 5 deletions Lib/email/header.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,12 +52,12 @@
_embedded_header = re.compile(r'\n[^ \t]+:')



AlexWaygood marked this conversation as resolved.
Show resolved Hide resolved
# Helpers
_max_append = email.quoprimime._max_append



AlexWaygood marked this conversation as resolved.
Show resolved Hide resolved
def decode_header(header):
"""Decode a message header value without converting charset.

Expand Down Expand Up @@ -152,7 +152,7 @@ def decode_header(header):
return collapsed



AlexWaygood marked this conversation as resolved.
Show resolved Hide resolved
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()
Expand All @@ -175,7 +175,7 @@ def make_header(decoded_seq, maxlinelen=None, header_name=None,
return h



AlexWaygood marked this conversation as resolved.
Show resolved Hide resolved
class Header:
def __init__(self, s=None, charset=None,
maxlinelen=None, header_name=None,
Expand Down Expand Up @@ -409,7 +409,7 @@ def _normalize(self):
self._chunks = chunks



AlexWaygood marked this conversation as resolved.
Show resolved Hide resolved
class _ValueFormatter:
def __init__(self, headerlen, maxlen, continuation_ws, splitchars):
self._maxlen = maxlen
Expand Down
6 changes: 3 additions & 3 deletions Lib/email/iterators.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
from io import StringIO



AlexWaygood marked this conversation as resolved.
Show resolved Hide resolved
# This function will become a method of the Message class
def walk(self):
"""Walk over the message tree, yielding each subpart.
Expand All @@ -29,7 +29,7 @@ def walk(self):
yield from subpart.walk()



AlexWaygood marked this conversation as resolved.
Show resolved Hide resolved
# 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.
Expand All @@ -55,7 +55,7 @@ def typed_subpart_iterator(msg, maintype='text', subtype=None):
yield subpart



AlexWaygood marked this conversation as resolved.
Show resolved Hide resolved
def _structure(msg, fp=None, level=0, include_default=False):
"""A handy debugging aid"""
if fp is None:
Expand Down
2 changes: 1 addition & 1 deletion Lib/email/mime/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
from email import message



AlexWaygood marked this conversation as resolved.
Show resolved Hide resolved
class MIMEBase(message.Message):
"""Base class for MIME specializations."""

Expand Down
2 changes: 1 addition & 1 deletion Lib/email/mime/message.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
from email.mime.nonmultipart import MIMENonMultipart



AlexWaygood marked this conversation as resolved.
Show resolved Hide resolved
class MIMEMessage(MIMENonMultipart):
"""Class representing message/* MIME documents."""

Expand Down
2 changes: 1 addition & 1 deletion Lib/email/mime/multipart.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
from email.mime.base import MIMEBase



AlexWaygood marked this conversation as resolved.
Show resolved Hide resolved
class MIMEMultipart(MIMEBase):
"""Base class for MIME multipart/* type messages."""

Expand Down
2 changes: 1 addition & 1 deletion Lib/email/mime/nonmultipart.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
from email.mime.base import MIMEBase



AlexWaygood marked this conversation as resolved.
Show resolved Hide resolved
class MIMENonMultipart(MIMEBase):
"""Base class for MIME non-multipart type messages."""

Expand Down
2 changes: 1 addition & 1 deletion Lib/email/mime/text.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
from email.mime.nonmultipart import MIMENonMultipart



AlexWaygood marked this conversation as resolved.
Show resolved Hide resolved
class MIMEText(MIMENonMultipart):
"""Class for generating text/* type MIME documents."""

Expand Down
4 changes: 2 additions & 2 deletions Lib/email/parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,15 +67,15 @@ def parsestr(self, text, headersonly=False):
return self.parse(StringIO(text), headersonly=headersonly)



AlexWaygood marked this conversation as resolved.
Show resolved Hide resolved
class HeaderParser(Parser):
def parse(self, fp, headersonly=True):
return Parser.parse(self, fp, True)

def parsestr(self, text, headersonly=True):
return Parser.parsestr(self, text, True)


AlexWaygood marked this conversation as resolved.
Show resolved Hide resolved
class BytesParser:

def __init__(self, *args, **kw):
Expand Down
2 changes: 1 addition & 1 deletion Lib/test/test_asyncio/test_runners.py
Original file line number Diff line number Diff line change
Expand Up @@ -441,7 +441,7 @@ async def coro():
with asyncio.Runner() as runner:
with self.assertRaises(asyncio.CancelledError):
runner.run(coro())

def test_signal_install_not_supported_ok(self):
# signal.signal() can throw if the "main thread" doensn't have signals enabled
assert threading.current_thread() is threading.main_thread()
Expand Down
Loading