ó
'—^c           @@ sÙ  d  Z  d d l m Z m Z d d l Z d d l Z d d l Z d d l Z d d l Z d d l	 Z	 d d l
 Z
 d d l m Z d d l m Z d d l m Z m Z d d l m Z m Z m Z m Z m Z d d l m Z m Z m Z m Z m Z d d	 l m Z d d
 l  m! Z! d d l" m# Z# m$ Z$ d d l% m& Z& m' Z' d d l( m) Z) d d l* m+ Z+ d d l, m- Z- e+ r§d d l. m/ Z/ m0 Z0 m1 Z1 d d l m2 Z2 n  d g Z3 e j4 e5 ƒ Z6 d e f d „  ƒ  YZ7 d S(   s(   Base Command class, and related routinesi    (   t   absolute_importt   print_functionN(   t
   cmdoptions(   t   CommandContextMixIn(   t   ConfigOptionParsert   UpdatingDefaultsHelpFormatter(   t   ERRORt   PREVIOUS_BUILD_DIR_ERRORt   SUCCESSt   UNKNOWN_ERRORt   VIRTUALENV_NOT_FOUND(   t
   BadCommandt   CommandErrort   InstallationErrort   PreviousBuildDirErrort   UninstallationError(   t
   deprecated(   t   check_path_owner(   t   BrokenStdoutLoggingErrort   setup_logging(   t   get_progt   normalize_path(   t   global_tempdir_manager(   t   MYPY_CHECK_RUNNING(   t   running_under_virtualenv(   t   Listt   Tuplet   Any(   t   Valuest   Commandc           B@ sM   e  Z d Z e Z e d  „ Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z RS(   c         C@ sØ   t  t |  ƒ j ƒ  i |  j d 6d t ƒ  | f d 6t ƒ  d 6t d 6| d 6|  j d 6| d 6} | |  _ | |  _	 t
 |   |  _ d	 |  j j ƒ  } t j |  j | ƒ |  _ t j t j |  j ƒ } |  j j | ƒ d  S(
   Nt   usages   %s %st   progt	   formattert   add_help_optiont   namet   descriptiont   isolateds
   %s Options(   t   superR   t   __init__R   R   R   t   Falset   __doc__R"   t   summaryR   t   parsert
   capitalizet   optparset   OptionGroupt   cmd_optsR   t   make_option_groupt   general_groupt   add_option_group(   t   selfR"   R)   R$   t	   parser_kwt   optgroup_namet   gen_opts(    (    s;   /tmp/pip-build-eiI0Wo/pip/pip/_internal/cli/base_command.pyR&   6   s$    



		c         C@ s   t  | d ƒ s t ‚ d S(   sf   
        This is a no-op so that commands by default do not do the pip version
        check.
        t   no_indexN(   t   hasattrt   AssertionError(   R2   t   options(    (    s;   /tmp/pip-build-eiI0Wo/pip/pip/_internal/cli/base_command.pyt   handle_pip_version_checkR   s    c         C@ s
   t  ‚ d  S(   N(   t   NotImplementedError(   R2   R9   t   args(    (    s;   /tmp/pip-build-eiI0Wo/pip/pip/_internal/cli/base_command.pyt   run\   s    c         C@ s   |  j  j | ƒ S(   N(   R*   t
   parse_args(   R2   R<   (    (    s;   /tmp/pip-build-eiI0Wo/pip/pip/_internal/cli/base_command.pyR>   `   s    c         C@ s6   z$ |  j  ƒ   |  j | ƒ SWd  QXWd  t j ƒ  Xd  S(   N(   t   main_contextt   _maint   loggingt   shutdown(   R2   R<   (    (    s;   /tmp/pip-build-eiI0Wo/pip/pip/_internal/cli/base_command.pyt   maine   s    c         C@ s:  |  j  t ƒ  ƒ |  j | ƒ \ } } | j | j |  _ t d |  j d | j d | j ƒ } t	 j
 d  d k r· | j r· d } t j ƒ  d k rž d | } n  t | d	 d  d
 d  ƒn  | j rß t d d	 d d
 d d d ƒn  | j rø d t j d <n  | j rd j | j ƒ t j d <n  | j rY|  j rYt ƒ  sYt j d ƒ t	 j t ƒ qYn  | j r¥t | j ƒ | _ t | j ƒ s¥t j  d | j ƒ d  | _ q¥n  z€y) |  j! | | ƒ } t" | t# ƒ rÐ| SWnPt$ k
 r} t j t% | ƒ ƒ t j& d d t' ƒt( St) t* t+ f k
 rO} t j t% | ƒ ƒ t j& d d t' ƒt, St- k
 r…} t j d | ƒ t j& d d t' ƒt, St. k
 rÎt/ d d t	 j0 ƒ| t1 j2 k rÊt3 j4 d t	 j0 ƒ n  t, St5 k
 rÿt j d ƒ t j& d d t' ƒt, St6 k
 r#t j d d t' ƒt7 SXWd  |  j8 | ƒ Xt9 S(   Nt	   verbosityt   no_colort   user_log_filei   i   sÁ   A future version of pip will drop support for Python 2.7. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-supportt   CPythons   Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. t   replacementt   gone_ins<   --skip-requirements-regex is unsupported and will be removedsX   manage requirements/constraints files explicitly, possibly generating them from metadatas   20.1t   issuei  t   1t   PIP_NO_INPUTt    t   PIP_EXISTS_ACTIONs2   Could not find an activated virtualenv (required).sè   The directory '%s' or its parent directory is not owned or is not writable by the current user. The cache has been disabled. Check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.s   Exception information:t   exc_infos   %ss    ERROR: Pipe to stdout was brokent   files   Operation cancelled by users
   Exception:(   i   i   (:   t   enter_contextR   R>   t   verboset   quietRD   R   RE   t   logt   syst   version_infot   no_python_version_warningt   platformt   python_implementationR   t   Nonet   skip_requirements_regext   no_inputt   ost   environt   exists_actiont   joint   require_venvt   ignore_require_venvR   t   loggert   criticalt   exitR
   t	   cache_dirR   R   t   warningR=   t
   isinstancet   intR   t   strt   debugt   TrueR   R   R   R   R   R   R   t   printt   stderrRA   t   DEBUGt	   tracebackt	   print_exct   KeyboardInterruptt   BaseExceptionR	   R:   R   (   R2   R<   R9   t   level_numbert   messaget   statust   exc(    (    s;   /tmp/pip-build-eiI0Wo/pip/pip/_internal/cli/base_command.pyR@   m   s†    		

	
				
 	N(   t   __name__t
   __module__RZ   R   R'   Rb   R&   R:   R=   R>   RC   R@   (    (    (    s;   /tmp/pip-build-eiI0Wo/pip/pip/_internal/cli/base_command.pyR   2   s   	
			(8   R(   t
   __future__R    R   RA   t   logging.configR,   R]   RX   RU   Rp   t   pip._internal.cliR   t!   pip._internal.cli.command_contextR   t   pip._internal.cli.parserR   R   t   pip._internal.cli.status_codesR   R   R   R	   R
   t   pip._internal.exceptionsR   R   R   R   R   t   pip._internal.utils.deprecationR   t   pip._internal.utils.filesystemR   t   pip._internal.utils.loggingR   R   t   pip._internal.utils.miscR   R   t   pip._internal.utils.temp_dirR   t   pip._internal.utils.typingR   t   pip._internal.utils.virtualenvR   t   typingR   R   R   R   t   __all__t	   getLoggerRx   Rc   R   (    (    (    s;   /tmp/pip-build-eiI0Wo/pip/pip/_internal/cli/base_command.pyt   <module>   s4   ((	