mirror of
				https://github.com/ytdl-org/youtube-dl.git
				synced 2025-10-29 09:26:20 -07:00 
			
		
		
		
	[build] Add and use devscripts/utils
				
					
				
			This commit is contained in:
		
							
								
								
									
										1
									
								
								devscripts/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								devscripts/__init__.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | # Empty file needed to make devscripts.utils properly importable from outside | ||||||
| @@ -1,7 +1,6 @@ | |||||||
| from __future__ import unicode_literals, print_function | from __future__ import unicode_literals, print_function | ||||||
|  |  | ||||||
| from inspect import getsource | from inspect import getsource | ||||||
| import io |  | ||||||
| import os | import os | ||||||
| from os.path import dirname as dirn | from os.path import dirname as dirn | ||||||
| import re | import re | ||||||
| @@ -9,17 +8,20 @@ import sys | |||||||
|  |  | ||||||
| print('WARNING: Lazy loading extractors is an experimental feature that may not always work', file=sys.stderr) | print('WARNING: Lazy loading extractors is an experimental feature that may not always work', file=sys.stderr) | ||||||
|  |  | ||||||
| sys.path.insert(0, dirn(dirn((os.path.abspath(__file__))))) | sys.path.insert(0, dirn(dirn(os.path.abspath(__file__)))) | ||||||
|  |  | ||||||
| lazy_extractors_filename = sys.argv[1] | lazy_extractors_filename = sys.argv[1] | ||||||
| if os.path.exists(lazy_extractors_filename): | if os.path.exists(lazy_extractors_filename): | ||||||
|     os.remove(lazy_extractors_filename) |     os.remove(lazy_extractors_filename) | ||||||
| # Py2: may be confused by leftover lazy_extractors.pyc | # Py2: may be confused by leftover lazy_extractors.pyc | ||||||
| try: | if sys.version_info[0] < 3: | ||||||
|     os.remove(lazy_extractors_filename + 'c') |     for c in ('c', 'o'): | ||||||
| except OSError: |         try: | ||||||
|     pass |             os.remove(lazy_extractors_filename + 'c') | ||||||
|  |         except OSError: | ||||||
|  |             pass | ||||||
|  |  | ||||||
|  | from devscripts.utils import read_file, write_file | ||||||
| from youtube_dl.compat import compat_register_utf8 | from youtube_dl.compat import compat_register_utf8 | ||||||
|  |  | ||||||
| compat_register_utf8() | compat_register_utf8() | ||||||
| @@ -27,8 +29,7 @@ compat_register_utf8() | |||||||
| from youtube_dl.extractor import _ALL_CLASSES | from youtube_dl.extractor import _ALL_CLASSES | ||||||
| from youtube_dl.extractor.common import InfoExtractor, SearchInfoExtractor | from youtube_dl.extractor.common import InfoExtractor, SearchInfoExtractor | ||||||
|  |  | ||||||
| with open('devscripts/lazy_load_template.py', 'rt') as f: | module_template = read_file('devscripts/lazy_load_template.py') | ||||||
|     module_template = f.read() |  | ||||||
|  |  | ||||||
|  |  | ||||||
| def get_source(m): | def get_source(m): | ||||||
| @@ -114,10 +115,9 @@ for ie in ordered_cls: | |||||||
| module_contents.append( | module_contents.append( | ||||||
|     '_ALL_CLASSES = [{0}]'.format(', '.join(names))) |     '_ALL_CLASSES = [{0}]'.format(', '.join(names))) | ||||||
|  |  | ||||||
| module_src = '\n'.join(module_contents) + '\n' | module_src = '\n'.join(module_contents) | ||||||
|  |  | ||||||
| with io.open(lazy_extractors_filename, 'wt', encoding='utf-8') as f: | write_file(lazy_extractors_filename, module_src + '\n') | ||||||
|     f.write(module_src) |  | ||||||
|  |  | ||||||
| # work around JVM byte code module limit in Jython | # work around JVM byte code module limit in Jython | ||||||
| if sys.platform.startswith('java') and sys.version_info[:2] == (2, 7): | if sys.platform.startswith('java') and sys.version_info[:2] == (2, 7): | ||||||
|   | |||||||
							
								
								
									
										62
									
								
								devscripts/utils.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								devscripts/utils.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,62 @@ | |||||||
|  | # coding: utf-8 | ||||||
|  | from __future__ import unicode_literals | ||||||
|  |  | ||||||
|  | import argparse | ||||||
|  | import functools | ||||||
|  | import os.path | ||||||
|  | import subprocess | ||||||
|  | import sys | ||||||
|  |  | ||||||
|  | dirn = os.path.dirname | ||||||
|  |  | ||||||
|  | sys.path.insert(0, dirn(dirn(os.path.abspath(__file__)))) | ||||||
|  |  | ||||||
|  | from youtube_dl.compat import ( | ||||||
|  |     compat_kwargs, | ||||||
|  |     compat_open as open, | ||||||
|  | ) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def read_file(fname): | ||||||
|  |     with open(fname, encoding='utf-8') as f: | ||||||
|  |         return f.read() | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def write_file(fname, content, mode='w'): | ||||||
|  |     with open(fname, mode, encoding='utf-8') as f: | ||||||
|  |         return f.write(content) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def read_version(fname='youtube_dl/version.py'): | ||||||
|  |     """Get the version without importing the package""" | ||||||
|  |     exec(compile(read_file(fname), fname, 'exec')) | ||||||
|  |     return locals()['__version__'] | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def get_filename_args(has_infile=False, default_outfile=None): | ||||||
|  |     parser = argparse.ArgumentParser() | ||||||
|  |     if has_infile: | ||||||
|  |         parser.add_argument('infile', help='Input file') | ||||||
|  |     kwargs = {'nargs': '?', 'default': default_outfile} if default_outfile else {} | ||||||
|  |     kwargs['help'] = 'Output file' | ||||||
|  |     parser.add_argument('outfile', **compat_kwargs(kwargs)) | ||||||
|  |  | ||||||
|  |     opts = parser.parse_args() | ||||||
|  |     if has_infile: | ||||||
|  |         return opts.infile, opts.outfile | ||||||
|  |     return opts.outfile | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def compose_functions(*functions): | ||||||
|  |     return lambda x: functools.reduce(lambda y, f: f(y), functions, x) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def run_process(*args, **kwargs): | ||||||
|  |     kwargs.setdefault('text', True) | ||||||
|  |     kwargs.setdefault('check', True) | ||||||
|  |     kwargs.setdefault('capture_output', True) | ||||||
|  |     if kwargs['text']: | ||||||
|  |         kwargs.setdefault('encoding', 'utf-8') | ||||||
|  |         kwargs.setdefault('errors', 'replace') | ||||||
|  |         kwargs = compat_kwargs(kwargs) | ||||||
|  |     return subprocess.run(args, **kwargs) | ||||||
| @@ -8,14 +8,16 @@ import unittest | |||||||
| import sys | import sys | ||||||
| import os | import os | ||||||
| import subprocess | import subprocess | ||||||
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) |  | ||||||
|  | rootDir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) | ||||||
|  |  | ||||||
|  | sys.path.insert(0, rootDir) | ||||||
|  |  | ||||||
| from youtube_dl.compat import compat_register_utf8, compat_subprocess_get_DEVNULL | from youtube_dl.compat import compat_register_utf8, compat_subprocess_get_DEVNULL | ||||||
| from youtube_dl.utils import encodeArgument | from youtube_dl.utils import encodeArgument | ||||||
|  |  | ||||||
| compat_register_utf8() | compat_register_utf8() | ||||||
|  |  | ||||||
| rootDir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) |  | ||||||
|  |  | ||||||
| _DEV_NULL = compat_subprocess_get_DEVNULL() | _DEV_NULL = compat_subprocess_get_DEVNULL() | ||||||
|  |  | ||||||
| @@ -49,10 +51,10 @@ class TestExecution(unittest.TestCase): | |||||||
|             subprocess.check_call([sys.executable, os.path.normpath('devscripts/make_lazy_extractors.py'), lazy_extractors], cwd=rootDir, stdout=_DEV_NULL) |             subprocess.check_call([sys.executable, os.path.normpath('devscripts/make_lazy_extractors.py'), lazy_extractors], cwd=rootDir, stdout=_DEV_NULL) | ||||||
|             subprocess.check_call([sys.executable, os.path.normpath('test/test_all_urls.py')], cwd=rootDir, stdout=_DEV_NULL) |             subprocess.check_call([sys.executable, os.path.normpath('test/test_all_urls.py')], cwd=rootDir, stdout=_DEV_NULL) | ||||||
|         finally: |         finally: | ||||||
|             for x in ['', 'c'] if sys.version_info[0] < 3 else ['']: |             for x in ('', 'c') if sys.version_info[0] < 3 else ('',): | ||||||
|                 try: |                 try: | ||||||
|                     os.remove(lazy_extractors + x) |                     os.remove(lazy_extractors + x) | ||||||
|                 except (IOError, OSError): |                 except OSError: | ||||||
|                     pass |                     pass | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user