mirror of
				https://gitlab.com/ytdl-org/youtube-dl.git
				synced 2025-11-04 07:17:07 -05:00 
			
		
		
		
	Work around 2.7.0 deficencies (Fixes #4223)
This commit is contained in:
		@@ -19,6 +19,7 @@ from .compat import (
 | 
			
		||||
    compat_expanduser,
 | 
			
		||||
    compat_getpass,
 | 
			
		||||
    compat_print,
 | 
			
		||||
    workaround_optparse_bug9161,
 | 
			
		||||
)
 | 
			
		||||
from .utils import (
 | 
			
		||||
    DateRange,
 | 
			
		||||
@@ -57,6 +58,8 @@ def _real_main(argv=None):
 | 
			
		||||
        # https://github.com/rg3/youtube-dl/issues/820
 | 
			
		||||
        codecs.register(lambda name: codecs.lookup('utf-8') if name == 'cp65001' else None)
 | 
			
		||||
 | 
			
		||||
    workaround_optparse_bug9161()
 | 
			
		||||
 | 
			
		||||
    setproctitle('youtube-dl')
 | 
			
		||||
 | 
			
		||||
    parser, opts, args = parseOpts(argv)
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
from __future__ import unicode_literals
 | 
			
		||||
 | 
			
		||||
import getpass
 | 
			
		||||
import optparse
 | 
			
		||||
import os
 | 
			
		||||
import subprocess
 | 
			
		||||
import sys
 | 
			
		||||
@@ -297,6 +298,26 @@ except TypeError:
 | 
			
		||||
else:
 | 
			
		||||
    compat_kwargs = lambda kwargs: kwargs
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Fix https://github.com/rg3/youtube-dl/issues/4223
 | 
			
		||||
# See http://bugs.python.org/issue9161 for what is broken
 | 
			
		||||
def workaround_optparse_bug9161():
 | 
			
		||||
    try:
 | 
			
		||||
        optparse.OptionGroup('foo').add_option('-t')
 | 
			
		||||
    except TypeError:
 | 
			
		||||
        real_add_option = optparse.OptionGroup.add_option
 | 
			
		||||
 | 
			
		||||
        def _compat_add_option(self, *args, **kwargs):
 | 
			
		||||
            enc = lambda v: (
 | 
			
		||||
                v.encode('ascii', 'replace') if isinstance(v, compat_str)
 | 
			
		||||
                else v)
 | 
			
		||||
            bargs = [enc(a) for a in args]
 | 
			
		||||
            bkwargs = dict(
 | 
			
		||||
                (k, enc(v)) for k, v in kwargs.items())
 | 
			
		||||
            return real_add_option(self, *bargs, **bkwargs)
 | 
			
		||||
        optparse.OptionGroup.add_option = _compat_add_option
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
__all__ = [
 | 
			
		||||
    'compat_HTTPError',
 | 
			
		||||
    'compat_chr',
 | 
			
		||||
@@ -323,4 +344,5 @@ __all__ = [
 | 
			
		||||
    'compat_xml_parse_error',
 | 
			
		||||
    'shlex_quote',
 | 
			
		||||
    'subprocess_check_output',
 | 
			
		||||
    'workaround_optparse_bug9161',
 | 
			
		||||
]
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user