|
|
@ -1,6 +1,7 @@
|
|
|
|
from __future__ import unicode_literals
|
|
|
|
from __future__ import unicode_literals
|
|
|
|
|
|
|
|
|
|
|
|
import getpass
|
|
|
|
import getpass
|
|
|
|
|
|
|
|
import optparse
|
|
|
|
import os
|
|
|
|
import os
|
|
|
|
import subprocess
|
|
|
|
import subprocess
|
|
|
|
import sys
|
|
|
|
import sys
|
|
|
@ -297,6 +298,26 @@ except TypeError:
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
compat_kwargs = lambda kwargs: kwargs
|
|
|
|
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__ = [
|
|
|
|
__all__ = [
|
|
|
|
'compat_HTTPError',
|
|
|
|
'compat_HTTPError',
|
|
|
|
'compat_chr',
|
|
|
|
'compat_chr',
|
|
|
@ -323,4 +344,5 @@ __all__ = [
|
|
|
|
'compat_xml_parse_error',
|
|
|
|
'compat_xml_parse_error',
|
|
|
|
'shlex_quote',
|
|
|
|
'shlex_quote',
|
|
|
|
'subprocess_check_output',
|
|
|
|
'subprocess_check_output',
|
|
|
|
|
|
|
|
'workaround_optparse_bug9161',
|
|
|
|
]
|
|
|
|
]
|
|
|
|