
                             S r SSKJr  SSKJr  SSKJr  SSKrSSKrSSKJr  SSK	J
r
  SSK	Jr  SS	K	Jr  SS
KJr  SSKJr   " S S\
R                   5      r " S S\5      rS r " S S\5      r " S S\5      rg)zThis module constructs surveys.    )absolute_import)division)unicode_literalsN)question)
exceptions)log)yaml)encoding)pkg_resourcesc                       \ rS rSrSrSrg)Error    z!Base error class for this module. N__name__
__module____qualname____firstlineno____doc____static_attributes__r       /lib/googlecloudsdk/command_lib/survey/survey.pyr   r       s    )r   r   c                       \ rS rSrSrSrg)QuestionTypeNotDefinedError%   z@Raises when question type is not defined in the question module.r   Nr   r   r   r   r   r   %   s    Hr   r   c                      [         R                  R                  [         R                  R                  [        R
                  " [        5      5      S5      $ )zGet the directory containing all surveys in yaml format.

Returns:
  Path to the surveys directory, i.e.
    $CLOUDSDKROOT/lib/googlecloudsdk/command_lib/survey/contents
contents)ospathjoindirnamer
   Decode__file__r   r   r   _GetSurveyContentDirectoryr$   *   s/     
bggoohooh&?@*	MMr   c                   "   \ rS rSrSr\R                   " S S\R                  5      5       rSR                  \R                  R                  \R                  R                  5      rS rS rS r\S	 5       r\S
 5       rS r\S 5       rS rSrg)Survey4   a  The survey class.

Survey content are defined in yaml files in
googlecloudsdk/command_lib/survey/contents. Each yaml file represents one
survey.

Attributes:
  name: str, name of the survey. It should match a name of one yaml file in
    googlecloudsdk/command_lib/survey/contents (w/o the file extension).
  _survey_content: parsed yaml data, raw content of the survey.
  questions: [Question], list of questions in this survey.
  welcome: str, welcome message when entering the survey.
c                       \ rS rSrSrSrSrg)Survey.ControlOperationC   xsr   N)r   r   r   r   EXIT_SURVEYSKIP_QUESTIONr   r   r   r   ControlOperationr)   C   s    KMr   r/   z<To skip this question, type {}; to exit the survey, type {}.c                 v    Xl         U R                  5       U l        [        U R	                  5       5      U l        g N)name_LoadSurveyContent_survey_contentlist_LoadQuestions
_questions)selfr2   s     r   __init__Survey.__init__M   s-    I224D4..01DOr   c                     [         R                  R                  [        5       U R                  S-   5      n[
        R                  " U5      n[        R                  " U5      $ )z6Loads the survey yaml file and return the parsed data.z.yaml)	r   r   r    r$   r2   r   GetResourceFromFiler	   load)r8   survey_filesurvey_datas      r   r3   Survey._LoadSurveyContentR   sE    '',,9;#yy724K33K@K99[!!r   c              #      #    U R                   S    HL  nUS   n[        [        U5      (       d  [        S5      e[	        [        U5      R                  US   5      v   MN     g7f)z&Generator of questions in this survey.	questionsquestion_typez!The question type is not defined.
propertiesN)r4   hasattrr   r   getattrFromDictionary)r8   qrC   s      r   r6   Survey._LoadQuestionsY   sY     !!+.(mX}--)*MNNHm,;;AlOLL	 /s   A!A#c                     U R                   $ r1   )r7   r8   s    r   rB   Survey.questionsa   s    ??r   c                      U R                   S   $ )Nwelcome)r4   rK   s    r   rN   Survey.welcomee   s    	**r   c                 V    [         R                  R                  U R                  5        g r1   )r   errPrintrN   rK   s    r   PrintWelcomeMsgSurvey.PrintWelcomeMsgi   s    GGMM$,,r   c                 V    [         R                  R                  U R                  5        g r1   )r   rQ   rR   INSTRUCTION_MESSAGE)clss    r   PrintInstructionSurvey.PrintInstructionl   s    GGMM#))*r   c                 ,    [        U R                  5      $ r1   )iterr7   rK   s    r   __iter__Survey.__iter__p   s      r   )r7   r4   r2   N)r   r   r   r   r   enumuniqueEnumr/   formatr.   valuer-   rV   r9   r3   r6   propertyrB   rN   rS   classmethodrX   r\   r   r   r   r   r&   r&   4   s     ;;  
&)77==)55;;= 
2
"M   + +  + +!r   r&   c                   <   ^  \ rS rSrSrS rU 4S jrS rS rSr	U =r
$ )GeneralSurveyt   zDGeneralSurvey defined in googlecloudsdk/command_lib/survey/contents.c                 @   > [         [        U ]  U R                  5        g r1   )superrf   r9   SURVEY_NAME)r8   	__class__s    r   r9   GeneralSurvey.__init__y   s    	-'(8(89r   c              #      #    U R                   S   v   U R                   S   v   U R                  5       b  U R                  5       (       a  U R                   S   v   g U R                   S   v   g 7f)Nr            )rB   IsSatisfiedrK   s    r   r\   GeneralSurvey.__iter__|   s^     
..

..
!T%5%5%7%7NN1NN1s   A-A/c                 l    U R                   S   nUR                  5       (       a  UR                  5       $ g)z*Returns if survey respondent is satisfied.r   N)rB   
IsAnsweredrq   )r8   satisfaction_questions     r   rq   GeneralSurvey.IsSatisfied   s2     NN1-''))"..00r   r   )r   r   r   r   r   rj   r9   r\   rq   r   __classcell__)rk   s   @r   rf   rf   t   s    L+: r   rf   )r   
__future__r   r   r   r   r^   !googlecloudsdk.command_lib.surveyr   googlecloudsdk.corer   r   r	   googlecloudsdk.core.utilr
   r   r   r   r$   objectr&   rf   r   r   r   <module>r}      sh    & &  ' 	  6 * # $ - 2J 
% 
N=!V =!@F r   