classification
Title: Escape sequences in doc string of ast._pad_whitespace
Type: behavior Stage: patch review
Components: Versions: Python 3.9, Python 3.8
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: Nosy List: Amir, eric.smith, mpheath, serhiy.storchaka
Priority: normal Keywords: easy, newcomer friendly, patch

Created on 2020-02-02 04:09 by mpheath, last changed 2020-02-13 18:32 by serhiy.storchaka.

Pull Requests
URL Status Linked Edit
PR 18340 merged mpheath, 2020-02-04 00:32
PR 18341 closed mpheath, 2020-02-04 00:58
PR 18342 closed mpheath, 2020-02-04 01:44
Messages (7)
msg361203 - (view) Author: (mpheath) * Date: 2020-02-02 04:09
In the ast module, a function named _pad_whitespace has a doc string with escape sequences of \f and \t.

The current doc string from Lib/ast.py:305 is:

    """Replace all chars except '\f\t' in a line with spaces."""

Example of doc string output in a REPL:

    Python 3.8.0 (tags/v3.8.0:fa919fd, Oct 14 2019, 19:37:50) [MSC v.1916 64 bit (AMD64)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import ast
    >>> import inspect
    >>> inspect.getdoc(ast._pad_whitespace)
    "Replace all chars except '\x0c     ' in a line with spaces."
    >>>

The \x0c is the formfeed and the '     ' (5 spaces) was the tab.

It is my understanding that the output should be:

    "Replace all chars except '\f\t' in a line with spaces."

I would expect the source to be:

    """Replace all chars except '\\f\\t' in a line with spaces."""

or perhaps a raw string:

    r"""Replace all chars except '\f\t' in a line with spaces."""

The current Lib/ast.py:305 is Python 3.9.0 alpha 3 though the issue is also in Python 3.8.0 and 3.8.1 with Lib/ast.py:227 .
Python 3.7.4 Lib/ast.py does not have the function _pad_whitespace as it appears major code changes occurred in the ast module with Python 3.8.0.
msg361204 - (view) Author: (mpheath) * Date: 2020-02-02 04:21
Correction: Python 3.8.0 and 3.8.1 with Lib/ast.py:277

Line 227 is invalid and 277 is correct.
msg361205 - (view) Author: (mpheath) * Date: 2020-02-02 04:23
Correction: Python 3.8.0 and 3.8.1 with Lib/ast.py:277

Line 227 is invalid and 277 is correct and forgot to add 3.8 prefix. Sorry.
msg361246 - (view) Author: Eric V. Smith (eric.smith) * (Python committer) Date: 2020-02-02 16:18
I think this would be an improvement, and an good issue for a newcomer.

I'd vote for the r-string, but it doesn't really matter.
msg361289 - (view) Author: Amir Mohamadi (Amir) * Date: 2020-02-03 13:16
But in both cases the 'Output' will contain '\\':
"Replace all chars except '\\f\\t' in a line with spaces."
msg361335 - (view) Author: (mpheath) * Date: 2020-02-04 01:14
I have submitted 2 Pull Requests. One for 3.9 and the other for 3.8. Only way I knew was to create 2 separate branches to checkout, linked to version tags to get the correct patches for ast.py. Hope is OK.
msg361967 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2020-02-13 18:32
New changeset fbeba8f2481411d608a616366394e07cdc52e0bb by mpheath in branch 'master':
bpo-39524: Fixed doc-string in ast._pad_whitespace (GH-18340)
https://github.com/python/cpython/commit/fbeba8f2481411d608a616366394e07cdc52e0bb
History
Date User Action Args
2020-02-13 18:32:13serhiy.storchakasetmessages: + msg361967
2020-02-04 01:44:33mpheathsetpull_requests: + pull_request17714
2020-02-04 01:14:39mpheathsetmessages: + msg361335
2020-02-04 00:58:43mpheathsetpull_requests: + pull_request17713
2020-02-04 00:32:22mpheathsetkeywords: + patch
stage: needs patch -> patch review
pull_requests: + pull_request17712
2020-02-03 13:16:22Amirsetnosy: + Amir
messages: + msg361289
2020-02-02 16:18:20eric.smithsetnosy: + eric.smith
messages: + msg361246

keywords: + easy, newcomer friendly
stage: needs patch
2020-02-02 04:43:00xtreaksetnosy: + serhiy.storchaka
2020-02-02 04:23:37mpheathsetmessages: + msg361205
2020-02-02 04:21:08mpheathsetmessages: + msg361204
2020-02-02 04:09:48mpheathcreate