mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 14:45:14 +00:00 
			
		
		
		
	[misc] Add hatch, ruff, pre-commit and improve dev docs (#7409)
				
					
				
			Authored by: bashonly, seproDev, Grub4K Co-authored-by: bashonly <88596187+bashonly@users.noreply.github.com> Co-authored-by: sepro <4618135+seproDev@users.noreply.github.com>
This commit is contained in:
		| @@ -42,17 +42,25 @@ def parse_args(): | ||||
| def main(): | ||||
|     args = parse_args() | ||||
|     project_table = parse_toml(read_file(args.input))['project'] | ||||
|     recursive_pattern = re.compile(rf'{project_table["name"]}\[(?P<group_name>[\w-]+)\]') | ||||
|     optional_groups = project_table['optional-dependencies'] | ||||
|     excludes = args.exclude or [] | ||||
| 
 | ||||
|     def yield_deps(group): | ||||
|         for dep in group: | ||||
|             if mobj := recursive_pattern.fullmatch(dep): | ||||
|                 yield from optional_groups.get(mobj.group('group_name'), []) | ||||
|             else: | ||||
|                 yield dep | ||||
| 
 | ||||
|     targets = [] | ||||
|     if not args.only_optional:  # `-o` should exclude 'dependencies' and the 'default' group | ||||
|         targets.extend(project_table['dependencies']) | ||||
|         if 'default' not in excludes:  # `--exclude default` should exclude entire 'default' group | ||||
|             targets.extend(optional_groups['default']) | ||||
|             targets.extend(yield_deps(optional_groups['default'])) | ||||
| 
 | ||||
|     for include in filter(None, map(optional_groups.get, args.include or [])): | ||||
|         targets.extend(include) | ||||
|         targets.extend(yield_deps(include)) | ||||
| 
 | ||||
|     targets = [t for t in targets if re.match(r'[\w-]+', t).group(0).lower() not in excludes] | ||||
| 
 | ||||
|   | ||||
| @@ -4,6 +4,7 @@ import argparse | ||||
| import functools | ||||
| import os | ||||
| import re | ||||
| import shlex | ||||
| import subprocess | ||||
| import sys | ||||
| from pathlib import Path | ||||
| @@ -18,6 +19,8 @@ def parse_args(): | ||||
|         'test', help='a extractor tests, or one of "core" or "download"', nargs='*') | ||||
|     parser.add_argument( | ||||
|         '-k', help='run a test matching EXPRESSION. Same as "pytest -k"', metavar='EXPRESSION') | ||||
|     parser.add_argument( | ||||
|         '--pytest-args', help='arguments to passthrough to pytest') | ||||
|     return parser.parse_args() | ||||
| 
 | ||||
| 
 | ||||
| @@ -26,15 +29,16 @@ def run_tests(*tests, pattern=None, ci=False): | ||||
|     run_download = 'download' in tests | ||||
|     tests = list(map(fix_test_name, tests)) | ||||
| 
 | ||||
|     arguments = ['pytest', '-Werror', '--tb=short'] | ||||
|     pytest_args = args.pytest_args or os.getenv('HATCH_TEST_ARGS', '') | ||||
|     arguments = ['pytest', '-Werror', '--tb=short', *shlex.split(pytest_args)] | ||||
|     if ci: | ||||
|         arguments.append('--color=yes') | ||||
|     if pattern: | ||||
|         arguments.extend(['-k', pattern]) | ||||
|     if run_core: | ||||
|         arguments.extend(['-m', 'not download']) | ||||
|     elif run_download: | ||||
|         arguments.extend(['-m', 'download']) | ||||
|     elif pattern: | ||||
|         arguments.extend(['-k', pattern]) | ||||
|     else: | ||||
|         arguments.extend( | ||||
|             f'test/test_download.py::TestDownload::test_{test}' for test in tests) | ||||
| @@ -46,13 +50,13 @@ def run_tests(*tests, pattern=None, ci=False): | ||||
|         pass | ||||
| 
 | ||||
|     arguments = [sys.executable, '-Werror', '-m', 'unittest'] | ||||
|     if pattern: | ||||
|         arguments.extend(['-k', pattern]) | ||||
|     if run_core: | ||||
|         print('"pytest" needs to be installed to run core tests', file=sys.stderr, flush=True) | ||||
|         return 1 | ||||
|     elif run_download: | ||||
|         arguments.append('test.test_download') | ||||
|     elif pattern: | ||||
|         arguments.extend(['-k', pattern]) | ||||
|     else: | ||||
|         arguments.extend( | ||||
|             f'test.test_download.TestDownload.test_{test}' for test in tests) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Simon Sawicki
					Simon Sawicki