[utils,compat] Move struct_pack and struct_unpack to compat.py
This commit is contained in:
		
							parent
							
								
									4350b74545
								
							
						
					
					
						commit
						dab0daeeb0
					
				
					 7 changed files with 38 additions and 28 deletions
				
			
		| 
						 | 
					@ -20,6 +20,7 @@ from youtube_dl.compat import (
 | 
				
			||||||
    compat_urllib_parse_unquote,
 | 
					    compat_urllib_parse_unquote,
 | 
				
			||||||
    compat_urllib_parse_unquote_plus,
 | 
					    compat_urllib_parse_unquote_plus,
 | 
				
			||||||
    compat_urllib_parse_urlencode,
 | 
					    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('chinese').text, compat_str))
 | 
				
			||||||
        self.assertTrue(isinstance(doc.find('foo/bar').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__':
 | 
					if __name__ == '__main__':
 | 
				
			||||||
    unittest.main()
 | 
					    unittest.main()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -55,7 +55,6 @@ from youtube_dl.utils import (
 | 
				
			||||||
    smuggle_url,
 | 
					    smuggle_url,
 | 
				
			||||||
    str_to_int,
 | 
					    str_to_int,
 | 
				
			||||||
    strip_jsonp,
 | 
					    strip_jsonp,
 | 
				
			||||||
    struct_unpack,
 | 
					 | 
				
			||||||
    timeconvert,
 | 
					    timeconvert,
 | 
				
			||||||
    unescapeHTML,
 | 
					    unescapeHTML,
 | 
				
			||||||
    unified_strdate,
 | 
					    unified_strdate,
 | 
				
			||||||
| 
						 | 
					@ -457,9 +456,6 @@ class TestUtil(unittest.TestCase):
 | 
				
			||||||
        testPL(5, 2, (2, 99), [2, 3, 4])
 | 
					        testPL(5, 2, (2, 99), [2, 3, 4])
 | 
				
			||||||
        testPL(5, 2, (20, 99), [])
 | 
					        testPL(5, 2, (20, 99), [])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_struct_unpack(self):
 | 
					 | 
				
			||||||
        self.assertEqual(struct_unpack('!B', b'\x00'), (0,))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def test_read_batch_urls(self):
 | 
					    def test_read_batch_urls(self):
 | 
				
			||||||
        f = io.StringIO('''\xef\xbb\xbf foo
 | 
					        f = io.StringIO('''\xef\xbb\xbf foo
 | 
				
			||||||
            bar\r
 | 
					            bar\r
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,6 +11,7 @@ import re
 | 
				
			||||||
import shlex
 | 
					import shlex
 | 
				
			||||||
import shutil
 | 
					import shutil
 | 
				
			||||||
import socket
 | 
					import socket
 | 
				
			||||||
 | 
					import struct
 | 
				
			||||||
import subprocess
 | 
					import subprocess
 | 
				
			||||||
import sys
 | 
					import sys
 | 
				
			||||||
import itertools
 | 
					import itertools
 | 
				
			||||||
| 
						 | 
					@ -592,6 +593,26 @@ if sys.version_info >= (3, 0):
 | 
				
			||||||
else:
 | 
					else:
 | 
				
			||||||
    from tokenize import generate_tokens as compat_tokenize_tokenize
 | 
					    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__ = [
 | 
					__all__ = [
 | 
				
			||||||
    'compat_HTMLParser',
 | 
					    'compat_HTMLParser',
 | 
				
			||||||
    'compat_HTTPError',
 | 
					    'compat_HTTPError',
 | 
				
			||||||
| 
						 | 
					@ -634,6 +655,8 @@ __all__ = [
 | 
				
			||||||
    'compat_xml_parse_error',
 | 
					    'compat_xml_parse_error',
 | 
				
			||||||
    'compat_xpath',
 | 
					    'compat_xpath',
 | 
				
			||||||
    'shlex_quote',
 | 
					    'shlex_quote',
 | 
				
			||||||
 | 
					    'struct_pack',
 | 
				
			||||||
 | 
					    'struct_unpack',
 | 
				
			||||||
    'subprocess_check_output',
 | 
					    'subprocess_check_output',
 | 
				
			||||||
    'workaround_optparse_bug9161',
 | 
					    'workaround_optparse_bug9161',
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -12,13 +12,13 @@ from ..compat import (
 | 
				
			||||||
    compat_urlparse,
 | 
					    compat_urlparse,
 | 
				
			||||||
    compat_urllib_error,
 | 
					    compat_urllib_error,
 | 
				
			||||||
    compat_urllib_parse_urlparse,
 | 
					    compat_urllib_parse_urlparse,
 | 
				
			||||||
 | 
					    struct_pack,
 | 
				
			||||||
 | 
					    struct_unpack,
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
from ..utils import (
 | 
					from ..utils import (
 | 
				
			||||||
    encodeFilename,
 | 
					    encodeFilename,
 | 
				
			||||||
    fix_xml_ampersands,
 | 
					    fix_xml_ampersands,
 | 
				
			||||||
    sanitize_open,
 | 
					    sanitize_open,
 | 
				
			||||||
    struct_pack,
 | 
					 | 
				
			||||||
    struct_unpack,
 | 
					 | 
				
			||||||
    xpath_text,
 | 
					    xpath_text,
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,6 +6,9 @@ import re
 | 
				
			||||||
import time
 | 
					import time
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from .common import InfoExtractor
 | 
					from .common import InfoExtractor
 | 
				
			||||||
 | 
					from ..compat import (
 | 
				
			||||||
 | 
					    struct_unpack,
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
from ..utils import (
 | 
					from ..utils import (
 | 
				
			||||||
    ExtractorError,
 | 
					    ExtractorError,
 | 
				
			||||||
    float_or_none,
 | 
					    float_or_none,
 | 
				
			||||||
| 
						 | 
					@ -13,7 +16,6 @@ from ..utils import (
 | 
				
			||||||
    remove_start,
 | 
					    remove_start,
 | 
				
			||||||
    sanitized_Request,
 | 
					    sanitized_Request,
 | 
				
			||||||
    std_headers,
 | 
					    std_headers,
 | 
				
			||||||
    struct_unpack,
 | 
					 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,10 +4,12 @@ import collections
 | 
				
			||||||
import io
 | 
					import io
 | 
				
			||||||
import zlib
 | 
					import zlib
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from .compat import compat_str
 | 
					from .compat import (
 | 
				
			||||||
 | 
					    compat_str,
 | 
				
			||||||
 | 
					    struct_unpack,
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
from .utils import (
 | 
					from .utils import (
 | 
				
			||||||
    ExtractorError,
 | 
					    ExtractorError,
 | 
				
			||||||
    struct_unpack,
 | 
					 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -26,7 +26,6 @@ import platform
 | 
				
			||||||
import re
 | 
					import re
 | 
				
			||||||
import socket
 | 
					import socket
 | 
				
			||||||
import ssl
 | 
					import ssl
 | 
				
			||||||
import struct
 | 
					 | 
				
			||||||
import subprocess
 | 
					import subprocess
 | 
				
			||||||
import sys
 | 
					import sys
 | 
				
			||||||
import tempfile
 | 
					import tempfile
 | 
				
			||||||
| 
						 | 
					@ -53,6 +52,7 @@ from .compat import (
 | 
				
			||||||
    compat_urlparse,
 | 
					    compat_urlparse,
 | 
				
			||||||
    compat_xpath,
 | 
					    compat_xpath,
 | 
				
			||||||
    shlex_quote,
 | 
					    shlex_quote,
 | 
				
			||||||
 | 
					    struct_pack,
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1761,24 +1761,6 @@ def escape_url(url):
 | 
				
			||||||
        fragment=escape_rfc3986(url_parsed.fragment)
 | 
					        fragment=escape_rfc3986(url_parsed.fragment)
 | 
				
			||||||
    ).geturl()
 | 
					    ).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 read_batch_urls(batch_fd):
 | 
				
			||||||
    def fixup(url):
 | 
					    def fixup(url):
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue