mirror of
				https://gitlab.com/ytdl-org/youtube-dl.git
				synced 2025-11-04 00:27:07 -05:00 
			
		
		
		
	[utils,compat] Move struct_pack and struct_unpack to compat.py
This commit is contained in:
		@@ -20,6 +20,7 @@ from youtube_dl.compat import (
 | 
			
		||||
    compat_urllib_parse_unquote,
 | 
			
		||||
    compat_urllib_parse_unquote_plus,
 | 
			
		||||
    compat_urllib_parse_urlencode,
 | 
			
		||||
    struct_unpack,
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -102,5 +103,9 @@ class TestCompat(unittest.TestCase):
 | 
			
		||||
        self.assertTrue(isinstance(doc.find('chinese').text, compat_str))
 | 
			
		||||
        self.assertTrue(isinstance(doc.find('foo/bar').text, compat_str))
 | 
			
		||||
 | 
			
		||||
    def test_struct_unpack(self):
 | 
			
		||||
        self.assertEqual(struct_unpack('!B', b'\x00'), (0,))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
    unittest.main()
 | 
			
		||||
 
 | 
			
		||||
@@ -55,7 +55,6 @@ from youtube_dl.utils import (
 | 
			
		||||
    smuggle_url,
 | 
			
		||||
    str_to_int,
 | 
			
		||||
    strip_jsonp,
 | 
			
		||||
    struct_unpack,
 | 
			
		||||
    timeconvert,
 | 
			
		||||
    unescapeHTML,
 | 
			
		||||
    unified_strdate,
 | 
			
		||||
@@ -457,9 +456,6 @@ class TestUtil(unittest.TestCase):
 | 
			
		||||
        testPL(5, 2, (2, 99), [2, 3, 4])
 | 
			
		||||
        testPL(5, 2, (20, 99), [])
 | 
			
		||||
 | 
			
		||||
    def test_struct_unpack(self):
 | 
			
		||||
        self.assertEqual(struct_unpack('!B', b'\x00'), (0,))
 | 
			
		||||
 | 
			
		||||
    def test_read_batch_urls(self):
 | 
			
		||||
        f = io.StringIO('''\xef\xbb\xbf foo
 | 
			
		||||
            bar\r
 | 
			
		||||
 
 | 
			
		||||
@@ -11,6 +11,7 @@ import re
 | 
			
		||||
import shlex
 | 
			
		||||
import shutil
 | 
			
		||||
import socket
 | 
			
		||||
import struct
 | 
			
		||||
import subprocess
 | 
			
		||||
import sys
 | 
			
		||||
import itertools
 | 
			
		||||
@@ -592,6 +593,26 @@ if sys.version_info >= (3, 0):
 | 
			
		||||
else:
 | 
			
		||||
    from tokenize import generate_tokens as compat_tokenize_tokenize
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
try:
 | 
			
		||||
    struct.pack('!I', 0)
 | 
			
		||||
except TypeError:
 | 
			
		||||
    # In Python 2.6 and 2.7.x < 2.7.7, struct requires a bytes argument
 | 
			
		||||
    # See https://bugs.python.org/issue19099
 | 
			
		||||
    def struct_pack(spec, *args):
 | 
			
		||||
        if isinstance(spec, compat_str):
 | 
			
		||||
            spec = spec.encode('ascii')
 | 
			
		||||
        return struct.pack(spec, *args)
 | 
			
		||||
 | 
			
		||||
    def struct_unpack(spec, *args):
 | 
			
		||||
        if isinstance(spec, compat_str):
 | 
			
		||||
            spec = spec.encode('ascii')
 | 
			
		||||
        return struct.unpack(spec, *args)
 | 
			
		||||
else:
 | 
			
		||||
    struct_pack = struct.pack
 | 
			
		||||
    struct_unpack = struct.unpack
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
__all__ = [
 | 
			
		||||
    'compat_HTMLParser',
 | 
			
		||||
    'compat_HTTPError',
 | 
			
		||||
@@ -634,6 +655,8 @@ __all__ = [
 | 
			
		||||
    'compat_xml_parse_error',
 | 
			
		||||
    'compat_xpath',
 | 
			
		||||
    'shlex_quote',
 | 
			
		||||
    'struct_pack',
 | 
			
		||||
    'struct_unpack',
 | 
			
		||||
    'subprocess_check_output',
 | 
			
		||||
    'workaround_optparse_bug9161',
 | 
			
		||||
]
 | 
			
		||||
 
 | 
			
		||||
@@ -12,13 +12,13 @@ from ..compat import (
 | 
			
		||||
    compat_urlparse,
 | 
			
		||||
    compat_urllib_error,
 | 
			
		||||
    compat_urllib_parse_urlparse,
 | 
			
		||||
    struct_pack,
 | 
			
		||||
    struct_unpack,
 | 
			
		||||
)
 | 
			
		||||
from ..utils import (
 | 
			
		||||
    encodeFilename,
 | 
			
		||||
    fix_xml_ampersands,
 | 
			
		||||
    sanitize_open,
 | 
			
		||||
    struct_pack,
 | 
			
		||||
    struct_unpack,
 | 
			
		||||
    xpath_text,
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -6,6 +6,9 @@ import re
 | 
			
		||||
import time
 | 
			
		||||
 | 
			
		||||
from .common import InfoExtractor
 | 
			
		||||
from ..compat import (
 | 
			
		||||
    struct_unpack,
 | 
			
		||||
)
 | 
			
		||||
from ..utils import (
 | 
			
		||||
    ExtractorError,
 | 
			
		||||
    float_or_none,
 | 
			
		||||
@@ -13,7 +16,6 @@ from ..utils import (
 | 
			
		||||
    remove_start,
 | 
			
		||||
    sanitized_Request,
 | 
			
		||||
    std_headers,
 | 
			
		||||
    struct_unpack,
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -4,10 +4,12 @@ import collections
 | 
			
		||||
import io
 | 
			
		||||
import zlib
 | 
			
		||||
 | 
			
		||||
from .compat import compat_str
 | 
			
		||||
from .compat import (
 | 
			
		||||
    compat_str,
 | 
			
		||||
    struct_unpack,
 | 
			
		||||
)
 | 
			
		||||
from .utils import (
 | 
			
		||||
    ExtractorError,
 | 
			
		||||
    struct_unpack,
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -26,7 +26,6 @@ import platform
 | 
			
		||||
import re
 | 
			
		||||
import socket
 | 
			
		||||
import ssl
 | 
			
		||||
import struct
 | 
			
		||||
import subprocess
 | 
			
		||||
import sys
 | 
			
		||||
import tempfile
 | 
			
		||||
@@ -53,6 +52,7 @@ from .compat import (
 | 
			
		||||
    compat_urlparse,
 | 
			
		||||
    compat_xpath,
 | 
			
		||||
    shlex_quote,
 | 
			
		||||
    struct_pack,
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -1761,24 +1761,6 @@ def escape_url(url):
 | 
			
		||||
        fragment=escape_rfc3986(url_parsed.fragment)
 | 
			
		||||
    ).geturl()
 | 
			
		||||
 | 
			
		||||
try:
 | 
			
		||||
    struct.pack('!I', 0)
 | 
			
		||||
except TypeError:
 | 
			
		||||
    # In Python 2.6 and 2.7.x < 2.7.7, struct requires a bytes argument
 | 
			
		||||
    # See https://bugs.python.org/issue19099
 | 
			
		||||
    def struct_pack(spec, *args):
 | 
			
		||||
        if isinstance(spec, compat_str):
 | 
			
		||||
            spec = spec.encode('ascii')
 | 
			
		||||
        return struct.pack(spec, *args)
 | 
			
		||||
 | 
			
		||||
    def struct_unpack(spec, *args):
 | 
			
		||||
        if isinstance(spec, compat_str):
 | 
			
		||||
            spec = spec.encode('ascii')
 | 
			
		||||
        return struct.unpack(spec, *args)
 | 
			
		||||
else:
 | 
			
		||||
    struct_pack = struct.pack
 | 
			
		||||
    struct_unpack = struct.unpack
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def read_batch_urls(batch_fd):
 | 
			
		||||
    def fixup(url):
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user