Command Line Interface
The pip._internal.cli
package is responsible for processing and providing pip’s command line interface. This package handles:
CLI option definition and parsing
autocompletion
dispatching to the various commands
utilities like progress bars and spinners
Note
This section of the documentation is currently being written. pip developers welcome your help to complete this documentation. If you’re interested in helping out, please let us know in the tracking issue.
Overview
A ConfigOptionParser
instance is used as the “main parser”, for parsing top level args.
Command
then uses another ConfigOptionParser
instance, to parse command-specific args.
TODO: How & where options are defined (cmdoptions, command-specific files).
TODO: How & where arguments are processed. (main_parser, command-specific parser)
TODO: How processed arguments are accessed. (attributes on argument to
Command.run()
)TODO: How configuration and CLI “blend”. (implemented in
ConfigOptionParser
)TODO: progress bars and spinners
TODO: quirks / standard practices / broad ideas. (avoiding lists in option def’n, special cased option value types, )
Future Refactoring Ideas
Change option definition to be a more declarative, consistent, static data-structure, replacing the current
partial(Option, ...)
formMove progress bar and spinner to a
cli.ui
subpackageMove all
Command
classes into acli.commands
subpackage (including base classes)
Important
Did this article help?
We are currently doing research to improve pip’s documentation and would love your feedback. Please email us &body=%0A%20%20%20%200.%20Document:%20development/architecture/command-line-interface.%20Page%20URL:%20https:/%20%0A%0A%20%20%20%201.%20What%20problem%20were%20you%20trying%20to%20solve%20when%20you%20came%20to%20this%20page?%20%0A%0A%20%20%20%202.%20What%20content%20was%20useful?%20%0A%0A%20%20%20%203.%20What%20content%20was%20not%20useful?) and let us know:
What problem were you trying to solve when you came to this page?
What content was useful?
What content was not useful?