diff options
| author | Philipp Hagemeister <phihag@phihag.de> | 2014-12-12 04:01:08 +0100 | 
|---|---|---|
| committer | Sergey M․ <dstftw@gmail.com> | 2018-01-01 22:48:27 +0700 | 
| commit | d7cd9a9e847fab3ac3f0fb5b4ad2e4788aeea775 (patch) | |
| tree | 2c7e4560bbedce423596292362a4ca5dbd2b32a3 /youtube_dl/compat.py | |
| parent | 54009c246e8eed38cfa8dc3eecb5619c1c81a1f2 (diff) | |
[utils] Fix youtube-dl under PyPy3 on Windows
Diffstat (limited to 'youtube_dl/compat.py')
| -rw-r--r-- | youtube_dl/compat.py | 21 | 
1 files changed, 21 insertions, 0 deletions
| diff --git a/youtube_dl/compat.py b/youtube_dl/compat.py index 2a62248ef..41ca9adf1 100644 --- a/youtube_dl/compat.py +++ b/youtube_dl/compat.py @@ -3,12 +3,14 @@ from __future__ import unicode_literals  import binascii  import collections +import ctypes  import email  import getpass  import io  import itertools  import optparse  import os +import platform  import re  import shlex  import shutil @@ -2906,6 +2908,24 @@ except ImportError:  # not 2.6+ or is 3.x      except ImportError:          compat_zip = zip +if platform.python_implementation() == 'PyPy' and sys.pypy_version_info < (5, 4, 0): +    # PyPy2 prior to version 5.4.0 expects byte strings as Windows function +    # names, see the original PyPy issue [1] and the youtube-dl one [2]. +    # 1. https://bitbucket.org/pypy/pypy/issues/2360/windows-ctypescdll-typeerror-function-name +    # 2. https://github.com/rg3/youtube-dl/pull/4392 +    def compat_ctypes_WINFUNCTYPE(*args, **kwargs): +        real = ctypes.WINFUNCTYPE(*args, **kwargs) + +        def resf(tpl, *args, **kwargs): +            funcname, dll = tpl +            return real((str(funcname), dll), *args, **kwargs) + +        return resf +else: +    def compat_ctypes_WINFUNCTYPE(*args, **kwargs): +        return ctypes.WINFUNCTYPE(*args, **kwargs) + +  __all__ = [      'compat_HTMLParseError',      'compat_HTMLParser', @@ -2914,6 +2934,7 @@ __all__ = [      'compat_chr',      'compat_cookiejar',      'compat_cookies', +    'compat_ctypes_WINFUNCTYPE',      'compat_etree_fromstring',      'compat_etree_register_namespace',      'compat_expanduser', | 
