a }|g4X @ s0 d Z ddlZddlZddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z dd lm Z dd lmZ ddlm Z ddlmZ dd lmZ ddlmZ ddlmZ eeZdZdZdZG dd dZe Ze dZG dd dZG dd dZeeef dddZ eeef ddddZ!dS ) zFThis modules define the actual display implementations used in Certbot N)Any)Iterable)List)Optional)TextIO)Tuple)TypeVar)Union)errors) constants) completer)util)osokcancelzO- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -c @ s e Zd ZddddZdS )_DisplayServiceNreturnc C s d | _ d S Ndisplay)self r A/usr/lib/python3.9/site-packages/certbot/_internal/display/obj.py__init__) s z_DisplayService.__init__)__name__ __module____qualname__r r r r r r ( s r Tc s e Zd ZdZeedd fddZd*eeeeeddd d Zd+ee e eeef e e f ee ee ee ee ee eeeee f d dd Zd,eee ee eeeeef dddZd-eeeee ee eeedddZd.ee e ee e ee eeeee e f dddZeee ee eee dddZeedddZd/eee ee eeeeef ddd Zee ee f e e e e d!d"d#Zee e eeef e e f dd$d%d&Ze eee f d'd(d)Z ZS )0FileDisplayzFile-based display.N)outfileforce_interactiver c s t || _|| _d| _d S )NF)superr r r! skipped_interaction)r r r! __class__r r r 6 s zFileDisplay.__init__TF)messagepausewrapr! decorater c C s~ |rt |}td| | j|r(dndd |r6dnd jtjt |d | j |rz| |rpt d n td d S ) a Displays a notification and waits for user acceptance. :param str message: Message to display :param bool pause: Whether or not the program should pause for the user's confirmation :param bool wrap: Whether or not the application should wrap text :param bool force_interactive: True if it's safe to prompt the user because it won't cause any workflow regressions :param bool decorate: Whether to surround the message with a decorated frame Notifying user: %s{line}{frame}{line} {msg}{line} {frame}{line}lineframemsgzPress Enter to Continuez!Not pausing for user confirmationN) r wrap_linesloggerdebugr writeformatr linesep SIDE_FRAMEflush _can_interactinput_with_timeout)r r&