As discussed in [[https://gerrit.wikimedia.org/r/#/c/406592/|I574a92dd]] and [[https://gerrit.wikimedia.org/r/#/c/430021/| I0d889513]], the dependencies are specified on many places making their management harder. The work should aim to make deps specification on one place and install those necessary in the specific case.
Original analysis:
```lines=3
Ufff. Okay, let's consolidate dependencies a little: what do we really need?
User requirement file for users
Devs requirement file (also for testing) for developers
Pypi setup.py requirements - should be same as user, let's merge them to one file and load the file contents by setup.py?
Zuul reqs - user + devs (testing) - do we need all the files to contain them: in tox.ini, in requirements files and also in setup.py and who knows where else?
Zuul post-merge reqs
Travis reqs - probably user + devs (testing) - the same question as for Zuul
AppVeyor reqs - same as Travis
what else? (coverage, docker, climate)
Let's get serious: What if we would have two files, reqs.txt and dev-reqs.txt. First one loaded by setup.py, second one loaded by setup.py if --test-reqs parametr given (by running setup.py --test-reqs in tox.ini, .travis.yml, .appveyor.yml), no requirements lists present in tox.ini, .travis.yml, .appveyor.yml and setup.py at all? Am I correct?
Do we really need .travis.yml, .appveyor.yml if we have tox.ini?
What else from these files could be consolidated to make the growing requirements lists as small as possible?
```
Ideas:
- Remove requirements.txt and create a special extra category in setup.py: Users would then install extra deps like: `pip install pywikibot[deps]`
- Replace deps in requirements.txt by categories in setup.py: `mwparserfromhell>=0.3.3` --> `.[patrol.py]`
- Replace deps in tox.ini by categories in setup.py: `beautifulsoup4` --> `.[html]`
- Possibly rethink dep categories in setup.py: `[basic], [security], [test], [devel], [doc], ...`
- Remove docs/py3-requirements.txt and merge its contents to tox.ini
- any other?