Skip to content

Commit

Permalink
bpo-13041: Use shutil.get_terminal_size() in argparse.HelpFormatter (G…
Browse files Browse the repository at this point in the history
  • Loading branch information
berkerpeksag committed Jul 25, 2018
1 parent c0f0a76 commit 74102c9
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 6 deletions.
6 changes: 2 additions & 4 deletions Lib/argparse.py
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@

import os as _os
import re as _re
import shutil as _shutil
import sys as _sys

from gettext import gettext as _, ngettext
Expand Down Expand Up @@ -164,10 +165,7 @@ def __init__(self,

# 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
Expand Down
5 changes: 3 additions & 2 deletions Lib/test/test_argparse.py
Original file line number Diff line number Diff line change
Expand Up @@ -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__)


Expand Down Expand Up @@ -5122,6 +5122,7 @@ def test_all_exports_everything_but_modules(self):
class TestWrappingMetavar(TestCase):

def setUp(self):
super().setUp()
self.parser = ErrorRaisingArgumentParser(
'this_is_spammy_prog_with_a_long_name_sorry_about_the_name'
)
Expand Down
Original file line number Diff line number Diff line change
@@ -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.

0 comments on commit 74102c9

Please sign in to comment.