Skip to content

gh-125142: add REPL help text for keyboard shortcuts #125143

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

Merged
merged 5 commits into from
Apr 28, 2025
Merged
Show file tree
Hide file tree
Changes from all 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
50 changes: 33 additions & 17 deletions Lib/pydoc.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ class or function within a module or module in a package. If the
import re
import sys
import sysconfig
import textwrap
import time
import tokenize
import urllib.parse
Expand Down Expand Up @@ -1809,6 +1810,37 @@ def writedocs(dir, pkgpath='', done=None):
writedoc(modname)
return


def _introdoc():
import textwrap
ver = '%d.%d' % sys.version_info[:2]
if os.environ.get('PYTHON_BASIC_REPL'):
pyrepl_keys = ''
else:
# Additional help for keyboard shortcuts if enhanced REPL is used.
pyrepl_keys = '''
You can use the following keyboard shortcuts at the main interpreter prompt.
F1: enter interactive help, F2: enter history browsing mode, F3: enter paste
mode (press again to exit).
'''
return textwrap.dedent(f'''\
Welcome to Python {ver}'s help utility! If this is your first time using
Python, you should definitely check out the tutorial at
https://docs.python.org/{ver}/tutorial/.
Enter the name of any module, keyword, or topic to get help on writing
Python programs and using Python modules. To get a list of available
modules, keywords, symbols, or topics, enter "modules", "keywords",
"symbols", or "topics".
{pyrepl_keys}
Each module also comes with a one-line summary of what it does; to list
the modules whose name or summary contain a given string such as "spam",
enter "modules spam".
To quit this help utility and return to the interpreter,
enter "q", "quit" or "exit".
''')

class Helper:

# These dictionaries map a topic name to either an alias, or a tuple
Expand Down Expand Up @@ -2075,23 +2107,7 @@ def help(self, request, is_cli=False):
self.output.write('\n')

def intro(self):
self.output.write('''\
Welcome to Python {0}'s help utility! If this is your first time using
Python, you should definitely check out the tutorial at
https://docs.python.org/{0}/tutorial/.
Enter the name of any module, keyword, or topic to get help on writing
Python programs and using Python modules. To get a list of available
modules, keywords, symbols, or topics, enter "modules", "keywords",
"symbols", or "topics".
Each module also comes with a one-line summary of what it does; to list
the modules whose name or summary contain a given string such as "spam",
enter "modules spam".
To quit this help utility and return to the interpreter,
enter "q", "quit" or "exit".
'''.format('%d.%d' % sys.version_info[:2]))
self.output.write(_introdoc())

def list(self, items, columns=4, width=80):
items = list(sorted(items))
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
As part of the builtin help intro text, show the keyboard shortcuts for the
new, non-basic REPL (F1, F2, and F3).
Loading