@@ -256,10 +256,19 @@ def _fill_text(self, text: str, width: int, indent: str) -> str:
256256        if  "\n "  in  text :
257257            # Assume we want to manually format the text 
258258            return  super ()._fill_text (text , width , indent )
259-         else :
260-             # Assume we want argparse to manage wrapping, indenting, and 
261-             # formatting the text for us. 
262-             return  argparse .HelpFormatter ._fill_text (self , text , width , indent )
259+         # Format the text like argparse, but overflow rather than 
260+         # breaking long words (like URLs) 
261+         text  =  self ._whitespace_matcher .sub (" " , text ).strip ()
262+         import  textwrap 
263+ 
264+         return  textwrap .fill (
265+             text ,
266+             width ,
267+             initial_indent = indent ,
268+             subsequent_indent = indent ,
269+             break_on_hyphens = False ,
270+             break_long_words = False ,
271+         )
263272
264273
265274# Define pairs of flag prefixes with inverse meaning. 
@@ -544,10 +553,15 @@ def add_invertible_flag(
544553    #     Feel free to add subsequent sentences that add additional details. 
545554    # 3.  If you cannot think of a meaningful description for a new group, omit it entirely. 
546555    #     (E.g. see the "miscellaneous" sections). 
547-     # 4.  The group description should end with a period (unless the last line is a link). If you 
548-     #     do end the group description with a link, omit the 'http://' prefix. (Some links are too 
549-     #     long and will break up into multiple lines if we include that prefix, so for consistency 
550-     #     we omit the prefix on all links.) 
556+     # 4.  The text of the group description should end with a period, optionally followed 
557+     #     by a documentation reference (URL). 
558+     # 5.  If you want to include a documentation reference, place it at the end of the 
559+     #     description. Feel free to open with a brief reference ("See also:", "For more 
560+     #     information:", etc.), followed by a space, then the entire URL including 
561+     #     "https://" scheme identifier and fragment ("#some-target-heading"), if any. 
562+     #     Do not end with a period (or any other characters not part of the URL). 
563+     #     URLs longer than the available terminal width will overflow without being 
564+     #     broken apart. This facilitates both URL detection, and manual copy-pasting. 
551565
552566    general_group  =  parser .add_argument_group (title = "Optional arguments" )
553567    general_group .add_argument (
@@ -1034,7 +1048,7 @@ def add_invertible_flag(
10341048        "Mypy caches type information about modules into a cache to " 
10351049        "let you speed up future invocations of mypy. Also see " 
10361050        "mypy's daemon mode: " 
1037-         "mypy.readthedocs.io/en/stable/mypy_daemon.html#mypy-daemon" ,
1051+         "https:// mypy.readthedocs.io/en/stable/mypy_daemon.html#mypy-daemon" ,
10381052    )
10391053    incremental_group .add_argument (
10401054        "-i" , "--incremental" , action = "store_true" , help = argparse .SUPPRESS 
@@ -1278,7 +1292,7 @@ def add_invertible_flag(
12781292    code_group  =  parser .add_argument_group (
12791293        title = "Running code" ,
12801294        description = "Specify the code you want to type check. For more details, see " 
1281-         "mypy.readthedocs.io/en/stable/running_mypy.html#running-mypy" ,
1295+         "https:// mypy.readthedocs.io/en/stable/running_mypy.html#running-mypy" ,
12821296    )
12831297    add_invertible_flag (
12841298        "--explicit-package-bases" ,
0 commit comments