mirror of
				https://github.com/ytdl-org/youtube-dl.git
				synced 2025-10-29 09:26:20 -07: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, | ||||||
|     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): | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user