* Major refactor of configuration to remember parsers and contexts.
* Add new methods for modifying configuration and what a parser is for.
* Add a load_only parameter to make life easier.
* Rename variable on baseparser for ensuring no collisions occur by mistake
* Add a configuration command that *mostly* does what it should
[skip ci] because it'll fail anyway. The tests need updating.
`pip download` has the same functionality as `pip install --download`,
and the behavior of `pip install --download` is preserved with a deprecation
warning. `pip install --download` will be removed in pip version 10.
This command ensures that all packages installed have all the
requirements they need, and that requirements have compatible
versions. This is useful because pip can install incompatible
dependencies[1], or a user may have manually (un)installed a
package.
[1] https://github.com/pypa/pip/issues/775
using object that have the same name as submodules as the weird effect
of makeing `import pip.commands.<something> as <anothername>` fail with
a key error. This fixes it by renamin commands as command_dict and fixin
a few imports to accomodate.
Related to #2149
Rework the way commands are defined, loaded and ran in pip:
- Commands are instantiated on demand in pip.main().
- A command 'registry' - mapping of command names to command classes in
pip.commands.__init__.
- Remove deferred command module loading.