Contributing and Testing
Bug reports, focused fixes, provider updates, and documentation improvements are welcome. Check existing issues before opening a new one.
Development checkout
git clone --branch models https://github.com/phoenixthrush/AniWorld-Downloader.git
cd AniWorld-Downloader
python -m venv .venvActivate the environment with source .venv/bin/activate on macOS/Linux or .venv\Scripts\Activate.ps1 in Windows PowerShell. Then install the editable package:
python -m pip install -e ".[all,test]"
python -m pip install ruffall includes SSO and Discord dependencies; test adds pytest. Python 3.11 or newer is required.
Automated checks
pytest
ruff check .
ruff format --check .These match the current CI checks. The automated suite uses temporary configuration, database, and download locations and blocks network connections, including DNS lookups, native curl requests, and browser launches, during collection and test execution. CI installs dependencies from package registries, but the tests must not fetch source sites or stream hosters. They test behavior with fixtures and mocked services; passing them does not confirm that third-party sites currently work.
Live provider checks
Run these manually when investigating a source or hoster:
python tests/test_providers_filmpalast.py
python tests/test_providers_hosters.py vidmolyThe tests/test_providers_*.py scripts contact real sites and can launch captcha handling. They are not collected as pytest tests. Use a separate ANIWORLD_INSTALL_FOLDER if you want to isolate app configuration from your normal installation.
A stale test URL, regional block, captcha, or unavailable hoster can fail a sample without proving the entire backend is broken. Likewise, extracting a stream URL does not verify a complete download. Some extractor requests have no explicit timeout, so a stalled live check may need to be interrupted.
Useful bug reports
Include your app version, OS, installation method, Python version where applicable, reproduction steps, affected page URL, selected hoster/language, and relevant logs. Remove secrets such as cookies, API keys, and bot tokens. A small reproducible example is more helpful than an entire configuration file.
For pull requests, explain the behavior before and after the change and how you checked it. Keep unrelated cleanup separate.
