Skip to content

Commit 1dc15a4

Browse files
committed
Use the Python 3.14 license pager behavior
Cover non-TTY output with owned in-memory streams, without terminal or external pager operations. Assisted-by: OpenAI Codex:model identifier unavailable
1 parent 9eaffbf commit 1dc15a4

2 files changed

Lines changed: 22 additions & 18 deletions

File tree

‎Lib/_sitebuiltins.py‎

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ def __init__(self, name, data, files=(), dirs=()):
3636
import os
3737
self.__name = name
3838
self.__data = data
39-
self.__lines = None
39+
self.__lines = []
4040
self.__filenames = [os.path.join(dir, filename)
4141
for dir in dirs
4242
for filename in files]
@@ -65,24 +65,12 @@ def __repr__(self):
6565
return "Type %s() to see the full %s text" % ((self.__name,)*2)
6666

6767
def __call__(self):
68+
from _pyrepl.pager import get_pager
6869
self.__setup()
69-
prompt = 'Hit Return for more, or q (and Return) to quit: '
70-
lineno = 0
71-
while 1:
72-
try:
73-
for i in range(lineno, lineno + self.MAXLINES):
74-
print(self.__lines[i])
75-
except IndexError:
76-
break
77-
else:
78-
lineno += self.MAXLINES
79-
key = None
80-
while key is None:
81-
key = input(prompt)
82-
if key not in ('', 'q'):
83-
key = None
84-
if key == 'q':
85-
break
70+
71+
pager = get_pager()
72+
text = "\n".join(self.__lines)
73+
pager(text, title=self.__name)
8674

8775

8876
class _Helper(object):
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import _sitebuiltins
2+
import io
3+
import sys
4+
5+
text = "\n".join(f"license line {number}" for number in range(26))
6+
printer = _sitebuiltins._Printer("license", text)
7+
streams = sys.stdin, sys.stdout, sys.stderr
8+
stdin, stdout, stderr = io.StringIO(), io.StringIO(), io.StringIO()
9+
try:
10+
sys.stdin, sys.stdout, sys.stderr = stdin, stdout, stderr
11+
printer()
12+
finally:
13+
sys.stdin, sys.stdout, sys.stderr = streams
14+
15+
assert stdout.getvalue() == text
16+
assert stderr.getvalue() == ""

0 commit comments

Comments
 (0)