https://github.com/python/cpython/commit/3b6a27c5607d2b199f127c2a5ef5316bbc30ae42
commit: 3b6a27c5607d2b199f127c2a5ef5316bbc30ae42
branch: main
author: Eli Schwartz <[email protected]>
committer: AA-Turner <[email protected]>
date: 2025-01-20T00:03:19Z
summary:

gh-118761: Redudce the import time of ``optparse`` (#128899)

The same change was made, and for the same reason, by ``argparse`` back in
2017. The ``textwrap`` module is only used when printing help text, so most
invocations will never need it imported.

Co-authored-by: Adam Turner <[email protected]>

files:
A Misc/NEWS.d/next/Library/2025-01-15-18-54-48.gh-issue-118761.G1dv6E.rst
M Lib/optparse.py

diff --git a/Lib/optparse.py b/Lib/optparse.py
index cbe3451ced8bc3..38cf16d21efffa 100644
--- a/Lib/optparse.py
+++ b/Lib/optparse.py
@@ -74,7 +74,6 @@
 """
 
 import sys, os
-import textwrap
 from gettext import gettext as _, ngettext
 
 
@@ -252,6 +251,7 @@ def _format_text(self, text):
         Format a paragraph of free-form text for inclusion in the
         help output at the current indentation level.
         """
+        import textwrap
         text_width = max(self.width - self.current_indent, 11)
         indent = " "*self.current_indent
         return textwrap.fill(text,
@@ -308,6 +308,7 @@ def format_option(self, option):
             indent_first = 0
         result.append(opts)
         if option.help:
+            import textwrap
             help_text = self.expand_default(option)
             help_lines = textwrap.wrap(help_text, self.help_width)
             result.append("%*s%s\n" % (indent_first, "", help_lines[0]))
diff --git 
a/Misc/NEWS.d/next/Library/2025-01-15-18-54-48.gh-issue-118761.G1dv6E.rst 
b/Misc/NEWS.d/next/Library/2025-01-15-18-54-48.gh-issue-118761.G1dv6E.rst
new file mode 100644
index 00000000000000..4144ef8f40e6dd
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2025-01-15-18-54-48.gh-issue-118761.G1dv6E.rst
@@ -0,0 +1,2 @@
+Reduce the import time of :mod:`optparse` when no help text is printed.
+Patch by Eli Schwartz.

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]

Reply via email to