o nnh*@snddlmZddlZddlZddlmZmZmZddlm Z ddl m Z ddl m Z e ZGddde ZdS) ) annotationsN) AnsibleErrorAnsiblePromptInterruptAnsiblePromptNoninteractive)to_text) ActionBase)Displaycs&eZdZdZdZdfdd ZZS) ActionModulezC pauses execution for a length or time, or until input is received TNc s|durt}tt|||}~|jddddtidtiddiddd \}}d }d}d}|d } d } |td dd d ddd| d| sGd} |drZd|j |d| f}n d|j d| f}|d durs|d d}n |ddur|d}d}t } t t j |d<d|d<d} |dur|dkrd}td|| f|drtdnd}t} |duo| } d} z tj|| || d}Wn"tyd} Ynty|durtdnt |Ynw|dur|} | durd}z tj|| dd d!} Wn tytd"wt | }t t j |d#<t||d$<|d kr3t|d%d&}nt|d&}d'||f|d(<t | d)d*|d<|S)+z run the pause action module NboolT)typedefaultr str)echominutessecondsprompt))rr) argument_specmutually_exclusiverrFr)changedrcstderrstdoutstartstopdeltarz (output is hidden)rz [%s] %s%s:z,Press enter to continue, Ctrl+C to interrupt<rr user_inputzPausing for %d seconds%sz<(ctrl+C then 'C' = continue early, ctrl+C then 'A' = abort) )privatercomplete_inputz>Not waiting for response to prompt as stdin is not interactivez0Press 'C' to continue the play or 'A' to abort )a)c)r interrupt_inputr!zuser requested abort!rrgN@zPaused for %s %srsurrogate_or_strict)errors)dictsuperr runvalidate_argument_specintupdate_taskget_namestriptimerdatetimenowdisplaytuple prompt_untilrrwarningsleeprround)selftmp task_varsresultvalidation_resultnew_module_args duration_unitrrr echo_promptrdefault_input_completer _user_inputduration __class__G/usr/local/lib/python3.10/dist-packages/ansible/plugins/action/pause.pyr*#s                zActionModule.run)NN)__name__ __module__ __qualname____doc__BYPASS_HOST_LOOPr* __classcell__rGrGrErHr sr ) __future__rr2r1ansible.errorsrrr+ansible.module_utils.common.text.convertersransible.plugins.actionransible.utils.displayrr4r rGrGrGrHs