• Bug#1108604: marked as done (unblock: freeipa/4.12.4-1) (2/2)

    From Debian Bug Tracking System@21:1/5 to All on Tue Jul 1 21:00:01 2025
    [continued from previous message]

    @@ -1141,7 +1143,8 @@ class CLIOptionParserFormatter(optparse.IndentedHelpFormatter):
    result.append("\n")
    return "".join(result)

    -class CLIOptionParser(optparse.OptionParser):
    +
    +class CLIOptionParser(IPAOptionParser):
    """
    This OptionParser subclass adds an ability to print positional
    arguments in CLI help. Custom formatter is used to format the argument
    @@ -1151,13 +1154,13 @@ class CLIOptionParser(optparse.OptionParser):
    self._arguments = []
    if 'formatter' not in kwargs:
    kwargs['formatter'] = CLIOptionParserFormatter()
    - optparse.OptionParser.__init__(self, *args, **kwargs)
    + IPAOptionParser.__init__(self, *args, **kwargs)

    def format_option_help(self, formatter=None):
    """
    Prepend argument help to standard OptionParser's option help
    """
    - option_help = optparse.OptionParser.format_option_help(self, formatter)
    + option_help = IPAOptionParser.format_option_help(self, formatter)

    if isinstance(formatter, CLIOptionParserFormatter):
    heading = unicode(_("Positional arguments"))
    @@ -1272,7 +1275,7 @@ class cli(backend.Executioner):
    """Get or create an option group for the given name"""
    option_group = option_groups.get(group_name)
    if option_group is None:
    - option_group = optparse.OptionGroup(parser, group_name)
    + option_group = OptionGroup(parser, group_name)
    parser.add_option_group(option_group)
    option_groups[group_name] = option_group
    return option_group
    @@ -1298,7 +1301,7 @@ class cli(backend.Executioner):
    option_names = ['--%s' % cli_name]
    if option.cli_short_name:
    option_names.append('-%s' % option.cli_short_name)
    - opt = optparse.make_option(*option_names, **kw)
    + opt = make_option(*option_names, **kw)
    if option.option_group is None:
    parser.add_option(opt)
    else:
    @@ -1312,7 +1315,7 @@ class cli(backend.Executioner):
    group = _get_option_group(unicode(_('Deprecated options')))
    for alias in option.deprecated_cli_aliases:
    name = '--%s' % alias
    - group.add_option(optparse.make_option(name, **new_kw))
    + group.add_option(make_option(name, **new_kw))

    for arg in cmd.args():
    name = self.__get_arg_name(arg, format_name=False)
    @@ -1442,7 +1445,7 @@ class cli(backend.Executioner):
    )


    -class IPAHelpFormatter(optparse.IndentedHelpFormatter):
    +class IPAHelpFormatter(IPAFormatter):
    """Formatter suitable for printing IPA command help

    The default help formatter reflows text to fit the terminal, but it
    diff --git a/ipalib/plugable.py b/ipalib/plugable.py
    index 2e2861df0..a87e6e891 100644
    --- a/ipalib/plugable.py
    +++ b/ipalib/plugable.py
    @@ -33,7 +33,6 @@ import sys
    import threading
    import os
    from os import path
    -import optparse # pylint: disable=deprecated-module
    import textwrap
    import collections
    import importlib
    @@ -47,6 +46,7 @@ from ipalib.util import classproperty
    from ipalib.base import ReadOnly, lock, islocked
    from ipalib.constants import DEFAULT_CONFIG
    from ipapython import ipa_log_manager, ipautil
    +from ipapython.config import IPAOptionParser, IPAFormatter
    from ipapython.ipa_log_manager import (
    LOGGING_FORMAT_FILE,
    LOGGING_FORMAT_STDERR)
    @@ -526,7 +526,7 @@ class API(ReadOnly):

    def build_global_parser(self, parser=None, context=None):
    """
    - Add global options to an optparse.OptionParser instance.
    + Add global options to an IPAOptionParser instance.
    """
    def config_file_callback(option, opt, value, parser):
    if not os.path.isfile(value):
    @@ -536,7 +536,7 @@ class API(ReadOnly):