ó
ĵS]c           @@ s˘   d  Z  d d l m Z m Z d d l Z d d l Z e j d d k Z d   Z d   Z	 d d d	  Z
 d d d
  Z d   Z d   Z e d  Z d   Z d S(   s/   Utilities for implementing console interaction.i    (   t   absolute_importt   print_functionNi   c         C@ sO   |  j  rG x$ |  j  D] } t | d t j q Wt d d t j t St Sd S(   sI   Print project problems to stderr, and return True if there were problems.t   files   Unable to load the project.N(   t   problemst   printt   syst   stderrt   Truet   False(   t   projectt   problem(    (    sJ   lib/python2.7/site-packages/anaconda_project/internal/cli/console_utils.pyt   print_project_problems   s    	c         C@ s,   |  d k	 s t  t |  j d t j d S(   s'   Print out status description to stderr.R   N(   t   Nonet   AssertionErrorR   t   status_descriptionR   R   (   t   status(    (    sJ   lib/python2.7/site-packages/anaconda_project/internal/cli/console_utils.pyt   print_status_errors   s    t   namet   descriptionc         C@ s/  g  } x? |  D]7 } t  | |  } t  | |  } | j | | f  q Wt | d d   } t |  d k r d d g | } n  d } x' | D] } t t | d  |  } q Wd }	 x\ | D]T } | d | d	 k rĉ | d }
 n | d j |  d
 | d	 }
 |	 |
 d }	 qż W|	 d k r'd S|	 Sd S(   sD   Format a table with names on the left and descriptions on the right.t   keyc         S@ s   |  d S(   Ni    (    (   t   p(    (    sJ   lib/python2.7/site-packages/anaconda_project/internal/cli/console_utils.pyt   <lambda>-   t    i    t   Namet   Descriptions   ====s   ===========R   i   s     s   
N(   R   R   (   s   ====s   ===========(   t   getattrt   appendt   sortedt   lent   maxt   ljust(   t   objectst	   name_attrt   description_attrt   pairst   oR   R   t   max_name_lent   pairt   tablet   line(    (    sJ   lib/python2.7/site-packages/anaconda_project/internal/cli/console_utils.pyt   format_names_and_descriptions$   s(    c         C@ s*   t  |  d | d | } t | d   d S(   sC   Print a table with names on the left and descriptions on the right.R    R!   i˙˙˙˙N(   R(   R   (   R   R    R!   t   output(    (    sJ   lib/python2.7/site-packages/anaconda_project/internal/cli/console_utils.pyt   print_names_and_descriptionsE   s    c           C@ s   t  j j   S(   s   True if stdin is a tty.(   R   t   stdint   isatty(    (    (    sJ   lib/python2.7/site-packages/anaconda_project/internal/cli/console_utils.pyt   stdin_is_interactiveL   s    c         C@ s   t  r t |   St |   Sd  S(   N(   t   _PY2t	   raw_inputt   input(   t   prompt(    (    sJ   lib/python2.7/site-packages/anaconda_project/internal/cli/console_utils.pyt   _inputV   s    
c         C@ sj   y! | r t  j  |   St |   SWnB t k
 r5 d St k
 re t d d t j t j d  n Xd S(   sK   Wrapper for raw_input (py2) and input (py3).

    Returns None on EOF.
    s   
Canceling
R   i   N(	   t   getpassR2   t   EOFErrorR   t   KeyboardInterruptR   R   R   t   exit(   R1   t	   encrypted(    (    sJ   lib/python2.7/site-packages/anaconda_project/internal/cli/console_utils.pyt   console_input]   s    c         C@ s   t    s | Sd } xq t r t |  | d  } | d	 k r@ | St |  d k r} | d d
 k rf t S| d d k r} t Sn  d } q Wd	 S(   sa   Ask a yes or no question, returning a bool.

    Returns default if not on a console or EOF.
    R   t    i    t   yt   Yt   nt   Ns    (enter y or n):N(   R:   R;   (   R<   R=   (   R-   R   R8   R   R   R   (   R1   t   defaultt   extrat   reply(    (    sJ   lib/python2.7/site-packages/anaconda_project/internal/cli/console_utils.pyt   console_ask_yes_or_non   s    		(   t   __doc__t
   __future__R    R   R3   R   t   version_infoR.   R   R   R(   R*   R-   R2   R   R8   RA   (    (    (    sJ   lib/python2.7/site-packages/anaconda_project/internal/cli/console_utils.pyt   <module>   s   		!	
	