bpo-13041: Use shutil.get_terminal_size() in argparse.HelpFormatter (GH-8459)
This commit is contained in:
parent
c0f0a7669c
commit
74102c9a5f
|
@ -85,6 +85,7 @@ __all__ = [
|
|||
|
||||
import os as _os
|
||||
import re as _re
|
||||
import shutil as _shutil
|
||||
import sys as _sys
|
||||
|
||||
from gettext import gettext as _, ngettext
|
||||
|
@ -164,10 +165,7 @@ class HelpFormatter(object):
|
|||
|
||||
# default setting for width
|
||||
if width is None:
|
||||
try:
|
||||
width = int(_os.environ['COLUMNS'])
|
||||
except (KeyError, ValueError):
|
||||
width = 80
|
||||
width = _shutil.get_terminal_size().columns
|
||||
width -= 2
|
||||
|
||||
self._prog = prog
|
||||
|
|
|
@ -23,9 +23,9 @@ class TestCase(unittest.TestCase):
|
|||
def setUp(self):
|
||||
# The tests assume that line wrapping occurs at 80 columns, but this
|
||||
# behaviour can be overridden by setting the COLUMNS environment
|
||||
# variable. To ensure that this assumption is true, unset COLUMNS.
|
||||
# variable. To ensure that this width is used, set COLUMNS to 80.
|
||||
env = support.EnvironmentVarGuard()
|
||||
env.unset("COLUMNS")
|
||||
env['COLUMNS'] = '80'
|
||||
self.addCleanup(env.__exit__)
|
||||
|
||||
|
||||
|
@ -5122,6 +5122,7 @@ class TestImportStar(TestCase):
|
|||
class TestWrappingMetavar(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.parser = ErrorRaisingArgumentParser(
|
||||
'this_is_spammy_prog_with_a_long_name_sorry_about_the_name'
|
||||
)
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
Use :func:`shutil.get_terminal_size` to calculate the terminal width
|
||||
correctly in the ``argparse.HelpFormatter`` class. Initial patch by Zbyszek
|
||||
Jędrzejewski-Szmek.
|
Loading…
Reference in New Issue