3 Pf% @ s d dl Z d dlZd dlZddlmZmZmZmZ ddlm Z m Z mZ ddlm Z mZ dZe dk rfe Zdd Zdd ZG d d deZG dd d eZdS ) N )AnsiForeAnsiBack AnsiStyleStyle)WinTermWinColorWinStyle)windllwinapi_testc C s t | d p| jS )Nclosed)hasattrr )stream r !/usr/lib/python3.6/ansitowin32.pyis_stream_closed s r c C s t | do| j S )Nisatty)r r )r r r r is_a_tty s r c @ s( e Zd ZdZdd Zdd Zdd ZdS ) StreamWrapperz Wraps a stream (such as stdout), acting as a transparent proxy for all attribute access apart from method 'write()', which is delegated to our Converter instance. c C s || _ || _d S )N)_StreamWrapper__wrapped_StreamWrapper__convertor)selfwrappedZ converterr r r __init__ s zStreamWrapper.__init__c C s t | j|S )N)getattrr )r namer r r __getattr__$ s zStreamWrapper.__getattr__c C s | j j| d S )N)r write)r textr r r r ' s zStreamWrapper.writeN)__name__ __module____qualname____doc__r r r r r r r r s r c @ s~ e Zd ZdZejdZejdZdddZdd Z d d Z dd Zdd Zdd Z dd Zdd Zdd Zdd Zdd ZdS )AnsiToWin32z Implements a 'write()' method which, on Windows, will strip ANSI character sequences from the text, and if outputting to a tty, will convert them into win32 function calls. z?\[((?:\d|;)*)([a-zA-Z])?z?\]((?:.|;)*?)()?NFc C s || _ || _t|| | _tjdk}|o*t }|d krL|pJt| oJt| }|| _ |d krp|ont| ont|}|| _ | j | _| j t jk| _d S )Nnt)r autoresetr r osr r r r stripconvertget_win32_callswin32_callssysstderr on_stderr)r r r( r' r% Z on_windowsZconversion_supportedr r r r 4 s zAnsiToWin32.__init__c C s | j p| jp| jS )aj True if this class is actually needed. If false, then the output stream will not be affected, nor will win32 calls be issued, so wrapping stdout is not actually required. This will generally be False on non-Windows platforms, unless optional functionality like autoreset has been requested using kwargs to init() )r( r' r% )r r r r should_wrapU s zAnsiToWin32.should_wrapc N C s> | j otr8tjtjftjtjtjftjtjtj ftj tjtj ft jtjt jft jtjt jft jtjt jft jtjt jft jtjt jft jtjt jft jtjt jft jtjt jft jtjft jtjt jdft jtjt jdft jtjt jdft jtjt jdft jtjt jdft jtjt jdft jtjt jdft jtjt jdftjtj t jftjtj t jftjtj t jftjtj t jftjtj t jftjtj t jftjtj t jftjtj t jftjtj ftjtj t jdftjtj t jdftjtj t jdftjtj t jdftjtj t jdftjtj t jdftjtj t jdftjtj t jdfi&S