o
    Vh                     @  s   d dl 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mZ d dlm	Z	 d dlm
Z
 d dlmZ d dlmZ erFd dlmZ d d	lmZ G d
d deZdS )    )annotationsN)TYPE_CHECKING)TextIO)cast)Output)	Verbosity)	FormatterSectionOutputc                      s   e Zd ZdZdZdZejddfd% fddZe	d&ddZ
d'ddZd'ddZd(ddZd)ddZd*d+d!d"Zd'd#d$Z  ZS ),StreamOutput   i      Nstreamr   	verbosityr   	decoratedbool | None	formatterFormatter | NonereturnNonec                   s.   || _ |  | _t j||p|  |d d S )Nr   r   r   )_stream_get_utf8_support_info_supports_utf8super__init___has_color_support)selfr   r   r   r   	__class__ q/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/cleo/io/outputs/stream_output.pyr      s   


zStreamOutput.__init__c                 C     | j S N)r   r   r    r    r!   r   *   s   zStreamOutput.streamboolc                 C  r"   r#   )r   r$   r    r    r!   supports_utf8.   s   zStreamOutput.supports_utf8c                 C  s:   | j jptd}z	t|jdkW S  ty   Y dS w )zI
        Returns whether the stream supports the UTF-8 encoding.
        Fzutf-8T)r   encodinglocalegetpreferredencodingcodecslookupname	Exception)r   r'   r    r    r!   r   1   s   z#StreamOutput._get_utf8_support_infoc                 C  s   | j   d S r#   )r   flushr$   r    r    r!   r.   <   s   zStreamOutput.flushr
   c                 C  s*   ddl m} || j| j| j|  | jdS )Nr   r	   r   )cleo.io.outputs.section_outputr
   r   _section_outputsr   is_decoratedr   )r   r
   r    r    r!   section?   s   zStreamOutput.sectionFmessagestrnew_linec                 C  s&   |r|d7 }| j | | j   d S )N
)r   writer.   )r   r3   r5   r    r    r!   _writeJ   s   zStreamOutput._writec           
      C  s  dt jv rdS t ddkrdS tjdkrt dd up)t dd	kp)t d
dk}|r.dS t| jds6dS t }|d |d }}||fdk rKdS dd l}dd l	}|j
j}| j }|dkrf|d}n|dkrp|d}ndS |d u s~||jdkrdS ||| j @ | jkrdS |j }	||||	sdS |	j| j@ dkrdS tt|||	j| jB dkS t| jdsdS z	t | j W S  tjy   Y dS w )NNO_COLORFTERM_PROGRAMHyperTwin32ANSICON
ConEmuANSIONTERMxtermfilenor   r   )
   i98     ii)osenvirongetenvsysplatformhasattrr   getwindowsversionctypesctypes.wintypeswindllkernel32rB   GetStdHandlewintypesHANDLEGetFileTypeFILE_TYPE_REMOTEFILE_TYPE_CHARDWORDGetConsoleModebyrefvalue"ENABLE_VIRTUAL_TERMINAL_PROCESSINGr   r%   SetConsoleModeisattyioUnsupportedOperation)
r   shell_supportedwindows_versionmajorbuildrM   rP   rB   hmoder    r    r!   r   Q   sj   



zStreamOutput._has_color_support)
r   r   r   r   r   r   r   r   r   r   )r   r   )r   r%   )r   r   )r   r
   )F)r3   r4   r5   r%   r   r   )__name__
__module____qualname__rV   rU   r[   r   NORMALr   propertyr   r&   r   r.   r2   r8   r   __classcell__r    r    r   r!   r      s     



r   )
__future__r   r*   r^   r(   rF   rI   typingr   r   r   cleo.io.outputs.outputr   r   cleo.formatters.formatterr   r/   r
   r   r    r    r    r!   <module>   s    