As discussed in I574a92dd and 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 only those necessary in the specific case.
Original analysis:
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], the same for dev-requirements.txt and docs/py3-requirements.txt
- Replace deps in tox.ini, requirements.txt, dev-requirements.txt and docs/py3-requirements.txt by categories in setup.py: mwparserfromhell>=0.3.3 --> .[patrol.py]
- Possibly rethink dep categories in setup.py: [basic], [security], [test], [devel], [doc], [flake8], ...
- any other?