return parser, opts, args
+class _YoutubeDLOptionParser(optparse.OptionParser):
+ # optparse is deprecated since python 3.2. So assume a stable interface even for private methods
+
+ def _match_long_opt(self, opt):
+ """Improve ambigious argument resolution by comparing option objects instead of argument strings"""
+ try:
+ return super()._match_long_opt(opt)
+ except optparse.AmbiguousOptionError as e:
+ if len(set(self._long_opt[p] for p in e.possibilities)) == 1:
+ return e.possibilities[0]
+ raise
+
+
def create_parser():
def _format_option_string(option):
''' ('-o', '--option') -> -o, --format METAVAR'''
'conflict_handler': 'resolve',
}
- parser = optparse.OptionParser(**compat_kwargs(kw))
+ parser = _YoutubeDLOptionParser(**compat_kwargs(kw))
general = optparse.OptionGroup(parser, 'General Options')
general.add_option(