Review and more cleanup

This commit is contained in:
Simon Sawicki 2024-02-16 00:31:37 +01:00
parent d7624ba08d
commit 57b460e5c9
No known key found for this signature in database
8 changed files with 86 additions and 47 deletions

View File

@ -28,7 +28,7 @@ # PLEASE FOLLOW THE GUIDE BELOW
### Before submitting a *pull request* make sure you have:
- [ ] At least skimmed through [contributing guidelines](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#developer-instructions) including [yt-dlp coding conventions](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#yt-dlp-coding-conventions)
- [ ] [Searched](https://github.com/yt-dlp/yt-dlp/search?q=is%3Apr&type=Issues) the bugtracker for similar pull requests
- [ ] Checked the code with [ruff](https://docs.astral.sh/ruff/) and [ran relevant tests](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#developer-instructions)
- [ ] Checked the code using `hatch run check` (or ran `hatch run install` before committing) and [ran relevant tests](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#developer-instructions)
### In order to be accepted and merged into yt-dlp each piece of code must be in public domain or released under [Unlicense](http://unlicense.org/). Check all of the following options that apply:
- [ ] I am the original author of this code and I am willing to release it under [Unlicense](http://unlicense.org/)

View File

@ -32,4 +32,6 @@ jobs:
- name: Make lazy extractors
run: python3 ./devscripts/make_lazy_extractors.py
- name: Run ruff
run: ruff check . --output-format github
run: ruff check --output-format github .
- name: Run autopep8
run: autopep8 --diff .

2
.gitignore vendored
View File

@ -64,7 +64,7 @@ cookies
# Python
*.pyc
*.pyo
.pytest_cache
.*_cache
wine-py2exe/
py2exe.log
build/

View File

@ -1,13 +1,8 @@
repos:
- repo: local
hooks:
- id: linter
name: linter
entry: hatch run lint
language: system
types: [python]
- id: format
name: format
entry: hatch run format --diff
- id: check
name: code check
entry: hatch run check
language: system
types: [python]

View File

@ -134,9 +134,7 @@ ### Is the website primarily used for piracy?
# DEVELOPER INSTRUCTIONS
Most users do not need to build yt-dlp and can [download the builds](https://github.com/yt-dlp/yt-dlp/releases) or get them via [the other installation methods](README.md#installation).
To quickly run yt-dlp as a developer, you don't need to build anything either. Simply execute
Most users do not need to build yt-dlp and can [download the builds](https://github.com/yt-dlp/yt-dlp/releases) or get them via [the other installation methods](README.md#installation). Alternatively, simply execute
```shell
$ python -m yt_dlp
@ -159,7 +157,7 @@ # DEVELOPER INSTRUCTIONS
$ hatch run tests core
```
You can also run tests for all installed python versions sequentially by setting the `TEST_ALL` variable, like so:
You can also run tests for all installed and supported python versions sequentially by setting the `TEST_ALL` variable, like so:
```shell
$ TEST_ALL=1 hatch run tests core
@ -249,11 +247,10 @@ ## Adding support for a new site
1. Make sure your code follows [yt-dlp coding conventions](#yt-dlp-coding-conventions), passes [ruff](https://docs.astral.sh/ruff/tutorial/#getting-started) code checks and is properly formatted:
```shell
$ hatch run lint
$ hatch run format
$ hatch run check
```
You can use `hatch run lint --fix` to automatically fix problems.
You can use `hatch run lint` and `hatch run format` to automatically fix problems.
1. Make sure your code works under all [Python](https://www.python.org/) versions supported by yt-dlp, namely CPython and PyPy for Python 3.8 and above. Backward compatibility is not required for even older versions of Python.
1. When the tests pass, [add](https://git-scm.com/docs/git-add) the new files, [commit](https://git-scm.com/docs/git-commit) them and [push](https://git-scm.com/docs/git-push) the result, like this:

View File

@ -10,7 +10,7 @@ tar: yt-dlp.tar.gz
# intended use: when building a source distribution,
# make pypi-files && python3 -m build -sn .
pypi-files: AUTHORS Changelog.md LICENSE README.md README.txt supportedsites \
completions yt-dlp.1 pyproject.toml setup.cfg devscripts/* test/*
completions yt-dlp.1 pyproject.toml devscripts/* test/*
.PHONY: all clean install test tar pypi-files completions ot offlinetest codetest supportedsites
@ -24,7 +24,7 @@ clean-dist:
yt_dlp/extractor/lazy_extractors.py *.spec CONTRIBUTING.md.tmp yt-dlp yt-dlp.exe yt_dlp.egg-info/ AUTHORS
clean-cache:
find . \( \
-type d -name .pytest_cache -o -type d -name __pycache__ -o -name "*.pyc" -o -name "*.class" \
-type d -name '.*_cache' -o -type d -name __pycache__ -o -name "*.pyc" -o -name "*.class" \
\) -prune -exec rm -rf {} \;
completion-bash: completions/bash/yt-dlp
@ -65,6 +65,7 @@ uninstall:
codetest:
ruff check .
autopep8 --diff .
test:
$(PYTHON) -m pytest
@ -139,13 +140,13 @@ yt-dlp.tar.gz: all
--exclude '*.pyo' \
--exclude '*~' \
--exclude '__pycache__' \
--exclude '.pytest_cache' \
--exclude '.*_cache' \
--exclude '.git' \
-- \
README.md supportedsites.md Changelog.md LICENSE \
CONTRIBUTING.md Collaborators.md CONTRIBUTORS AUTHORS \
Makefile yt-dlp.1 README.txt completions .gitignore \
setup.cfg yt-dlp yt_dlp pyproject.toml devscripts test
yt-dlp yt_dlp pyproject.toml devscripts test
AUTHORS:
git shortlog -s -n HEAD | cut -f2 | sort > AUTHORS

View File

@ -32,7 +32,7 @@ def run_tests(*tests, pattern=None, ci=False):
if pattern:
arguments.extend(['-k', pattern])
if run_core:
arguments.extend(['--ignore', 'test/test_download.py'])
arguments.extend(['-m', 'not download'])
elif run_download:
arguments.extend(['test/test_download.py'])
else:

View File

@ -62,7 +62,7 @@ build = [
"wheel",
]
dev = [
"autopep8",
"autopep8~=2.0",
"pre-commit",
"pytest",
"ruff==0.2.1",
@ -82,27 +82,6 @@ yt-dlp = "yt_dlp:main"
[project.entry-points.pyinstaller40]
hook-dirs = "yt_dlp.__pyinstaller:get_hook_dirs"
[tool.hatch.envs.default]
dependencies = ["yt-dlp[dev]"]
[tool.hatch.envs.default.scripts]
install = "pre-commit install"
lint = "ruff check {args:.}"
format = "autopep8 {args:--in-place .}"
tests = "python -m devscripts.run_tests {args}"
[[tool.hatch.envs.default.overrides.env.TEST_ALL.matrix.value]]
python = [
"3.8",
"3.9",
"3.10",
"3.11",
"3.12",
"pypy3.8",
"pypy3.9",
"pypy3.10",
]
[tool.hatch.build.targets.sdist]
include = [
"/yt_dlp",
@ -113,7 +92,6 @@ include = [
"/LICENSE", # included as license
"/pyproject.toml", # included by default
"/README.md", # included as readme
"/setup.cfg",
"/supportedsites.md",
]
exclude = ["/yt_dlp/__pyinstaller"]
@ -141,6 +119,31 @@ artifacts = ["/yt_dlp/extractor/lazy_extractors.py"]
path = "yt_dlp/version.py"
pattern = "_pkg_version = '(?P<version>[^']+)'"
[tool.hatch.envs.default]
features = ["dev"]
[tool.hatch.envs.default.scripts]
install = "pre-commit install"
lint = "ruff check {args:.}"
format = "autopep8 --in-place {args:.}"
check = [
"ruff check --no-fix {args:.}",
"autopep8 --diff {args:.}",
]
tests = "python -m devscripts.run_tests {args}"
[[tool.hatch.envs.default.overrides.env.TEST_ALL.matrix.value]]
python = [
"3.8",
"3.9",
"3.10",
"3.11",
"3.12",
"pypy3.8",
"pypy3.9",
"pypy3.10",
]
[tool.ruff]
required-version = "0.2.1"
line-length = 120
@ -156,7 +159,7 @@ select = [
"E", # pycodestyle errors
"W", # pycodestyle warnings
"F", # pyflakes
"I", # import order
# "I", # import order
]
[tool.ruff.lint.per-file-ignores]
@ -173,7 +176,48 @@ relative-imports-order = "closest-to-furthest"
[tool.autopep8]
max_line_length = 120
recursive = true
exit-code = true
jobs = 0
select = [
"E11",
"E121",
"E122",
"E123",
"E124",
"E125",
"E126",
"E127",
"E128",
"E129",
"E131",
"E133",
"E20",
"E211",
"E22",
"E224",
"E225",
"E226",
"E227",
"E228",
"E231",
"E241",
"E242",
"E251",
"E252",
"E26",
"E265",
"E266",
"E27",
"E301",
"E302",
"E303",
"E304",
"E305",
"E306",
"E502",
"W391",
"W504",
]
[tool.pytest.ini_options]
addopts = "-ra -v --strict-markers"