§
    Û×j´  ã                  óœ  — U d dl m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
mZ dZdadad	ed
<   dadadad	ed<   daded<    ej        ¦   «         Z ej        ¦   «         Zd adada G d„ d¦  «        Zd2d„Zd3d4d„Zd5d„Zd6d„Zd7d!„Z d8d#„Z!d8d$„Z"d9d%„Z#d:d'„Z$d;d(„Z%d7d)„Z&d7d*„Z'd8d+„Z(edd,œd<d/„¦   «         Z)d7d0„Z*ed=d1„¦   «         Z+dS )>é    )ÚannotationsN)Úcontextmanager)Údatetime)ÚPath)ÚIteratorÚTextIOz--debug-deepyFzPath | NoneÚDEBUG_DEEPY_LOG_PATHÚ_DEBUG_TARGET_DIRzTextIO | NoneÚ_LOG_STREAMTc                  ó:   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd	„ Z	d
S )Ú_SelectiveTeeTextStreamÚwrappedr   c                ól   — || _         t          |dd ¦  «        | _        t          |dd ¦  «        | _        d S )NÚencodingÚerrors)Ú_wrappedÚgetattrr   r   )Úselfr   s     úDC:\Users\johnn\OneDrive\Documents\AI\shared\deepy\debug_bootstrap.pyÚ__init__z _SelectiveTeeTextStream.__init__   s3   € ØˆŒÝ ¨°TÑ:Ô:ˆŒÝ˜g x°Ñ6Ô6ˆŒˆˆó    c                ó  — 	 | j                              |¦  «        }n[# t          $ rN | j                              |                     | j        d¦  «                             | j        ¦  «        ¦  «        }Y nw xY wt          |¦  «         |S )NÚreplace)r   ÚwriteÚUnicodeEncodeErrorÚencoder   ÚdecodeÚ_maybe_write_log)r   ÚdataÚwrittens      r   r   z_SelectiveTeeTextStream.write    sŒ   € ð	gØ”m×)Ò)¨$Ñ/Ô/ˆGˆGøÝ!ð 	gð 	gð 	gØ”m×)Ò)¨$¯+ª+°d´mÀYÑ*OÔ*O×*VÒ*VÐW[ÔWdÑ*eÔ*eÑfÔfˆGˆGˆGð	gøøøå˜ÑÔÐØˆs   ‚ �AA5Á4A5c                óX   — t          |pg ¦  «        D ]}|                      |¦  «         Œd S ©N)Úlistr   )r   ÚlinesÚlines      r   Ú
writelinesz"_SelectiveTeeTextStream.writelines(   s<   € Ý˜˜ "Ñ%Ô%ð 	ð 	ˆDØ�JŠJ�tÑÔÐÐð	ð 	r   c                óv   — | j                              ¦   «          t          }|�|                     ¦   «          d S d S r"   )r   Úflushr   )r   Ú
log_streams     r   r(   z_SelectiveTeeTextStream.flush,   sA   € ØŒ×ÒÑÔÐÝ ˆ
ØÐ!Ø×ÒÑÔÐÐÐð "Ð!r   c                óZ   — t           t          | j        dd„ ¦  «        ¦   «         ¦  «        S )NÚisattyc                 ó   — dS )NF© r-   r   r   ú<lambda>z0_SelectiveTeeTextStream.isatty.<locals>.<lambda>3   s   € ¸U€ r   )Úboolr   r   ©r   s    r   r+   z_SelectiveTeeTextStream.isatty2   s)   € ÝÐC•G˜DœM¨8°]°]ÑCÔCÑEÔEÑFÔFÐFr   c                ó4   — | j                              ¦   «         S r"   )r   Úfilenor0   s    r   r2   z_SelectiveTeeTextStream.fileno5   s   € ØŒ}×#Ò#Ñ%Ô%Ð%r   c                ó,   — t          | j        |¦  «        S r"   )r   r   )r   Únames     r   Ú__getattr__z#_SelectiveTeeTextStream.__getattr__8   s   € Ý�t”} dÑ+Ô+Ð+r   N)r   r   )
Ú__name__Ú
__module__Ú__qualname__r   r   r&   r(   r+   r2   r5   r-   r   r   r   r      s…   € € € € € ð7ð 7ð 7ð 7ð
ð ð ðð ð ðð ð ðGð Gð Gð&ð &ð &ð,ð ,ð ,ð ,ð ,r   r   Úargvú	list[str]Úreturnú
str | Nonec                óÞ  — d }d}|t          | ¦  «        k     rÕt          | |         ¦  «        }|t          k    rK|dz   t          | ¦  «        k    rt          t          › d�¦  «        ‚t          | |dz            ¦  «        }|dz  }Œ~|                     t          › d�¦  «        r5|                     dd¦  «        d         }|st          t          › d�¦  «        ‚|dz  }|t          | ¦  «        k     °Õ|S )Né   z requires a folder path.é   ú=)ÚlenÚstrÚ
_DEBUG_ARGÚ
SystemExitÚ
startswithÚsplit)r9   Ú	debug_dirÚiÚargs       r   Ú_find_debug_argrJ   <   sú   € Ø€IØ	€AØ
�c�$‰iŒiŠ-ˆ-Ý�$�q”'‰lŒlˆØ•*ÒÐØ�1‰u�˜D™	œ	Ò!Ð!Ý ¥JÐ!HÐ!HÐ!HÑIÔIÐIÝ˜D  Q¡œKÑ(Ô(ˆIØ�‰FˆAØØ�>Š>�ZÐ*Ð*Ð*Ñ+Ô+ð 	JØŸ	š	 # qÑ)Ô)¨!Ô,ˆIØð JÝ ¥JÐ!HÐ!HÐ!HÑIÔIÐIØ	ˆQ‰ˆð �c�$‰iŒiŠ-ˆ-ð Ðr   Ú2ÚlevelrB   c                ó<  — | d         g}d}d}|t          | ¦  «        k     rât          | |         ¦  «        }|dk    red}|                     d|g¦  «         |dz   t          | ¦  «        k     o+t          | |dz            ¦  «                             d¦  «         }||rdndz  }Œ“|                     d¦  «        r d}|                     d|› �¦  «         |dz  }ŒÈ|                     |¦  «         |dz  }|t          | ¦  «        k     °â|s|                     d|g¦  «         |S )	Nr   Fr>   z	--verboseTú-r?   z
--verbose=)rA   rB   ÚextendrE   Úappend)r9   rL   Ú	rewrittenÚverbose_seenrH   rI   Ú	has_values          r   Ú_force_verbose_levelrT   O   sG  € Ø�a”�	€IØ€LØ	€AØ
�c�$‰iŒiŠ-ˆ-Ý�$�q”'‰lŒlˆØ�+ÒÐØˆLØ×Ò˜k¨5Ð1Ñ2Ô2Ð2Ø˜A™¥ D¡	¤	Ò)ÐRµ#°d¸1¸q¹5´kÑ2BÔ2B×2MÒ2MÈcÑ2RÔ2RÐ.RˆIØ�iÐ&�� QÑ&ˆAØØ�>Š>˜,Ñ'Ô'ð 	ØˆLØ×ÒÐ1¨%Ð1Ð1Ñ2Ô2Ð2Ø�‰FˆAØØ×Ò˜ÑÔÐØ	ˆQ‰ˆð �c�$‰iŒiŠ-ˆ-ð ð /Ø×Ò˜+ uÐ-Ñ.Ô.Ð.ØÐr   Úraw_dirr   c                óª  — | dk    rt          j        ¦   «         n t          | ¦  «                             ¦   «         }|                     ¦   «         st          j        ¦   «         |z  }|                     d¬¦  «        }|                     ¦   «         r-|                     ¦   «         st          t          › d|› �¦  «        ‚| 	                    dd¬¦  «         |S )Nú.F)Ústrictz path must be a folder: T)ÚparentsÚexist_ok)
r   ÚcwdÚ
expanduserÚis_absoluteÚresolveÚexistsÚis_dirrD   rC   Úmkdir)rU   Úpaths     r   Ú_resolve_debug_dirrc   g   sº   € Ø  Cš˜�4Œ8‰:Œ:ˆ:­T°'©]¬]×-EÒ-EÑ-GÔ-G€DØ×ÒÑÔð !ÝŒx‰zŒz˜DÑ ˆØ�<Š<˜uˆ<Ñ%Ô%€DØ‡{‚{�}„}ð H˜TŸ[š[™]œ]ð HÝ�JÐFÐFÀÐFÐFÑGÔGÐGØ‡J‚J�t d€JÑ+Ô+Ð+Ø€Kr   Ústreamr   c                ó$   — t          | d| ¦  «        S )Nr   )r   )rd   s    r   Ú_unwrap_streamrf   r   s   € Ý�6˜: vÑ.Ô.Ð.r   ÚNonec                 ó¨   — t           rd S t          t          j        ¦  «        t          _        t          t          j        ¦  «        t          _        da d S ©NT)Ú_STREAMS_WRAPPEDr   ÚsysÚstdoutÚstderrr-   r   r   Ú_install_stream_teern   v   s=   € åð ØˆÝ(­¬Ñ4Ô4…C„JÝ(­¬Ñ4Ô4…C„JØÐÐÐr   r/   c                 óT   — t          t          t          dd¦  «        pd¦  «        dk    S )NÚdeepy_log_depthr   )Úintr   Ú_THREAD_STATEr-   r   r   Ú_is_deepy_capture_activers      s'   € Ý�w•}Ð&7¸Ñ;Ô;Ð@¸qÑAÔAÀAÒEÐEr   c                 óF   — t           d uot          dk    pt          ¦   «         S )Nr   )r   Ú_EXTERNAL_CAPTURE_DEPTHrs   r-   r   r   Ú_should_log_current_writerv   ƒ   s$   € Ý˜dÐ"ÐbÕ(?À!Ò(CÐ(aÕG_ÑGaÔGaÐbr   c                 óf   — dt          j        ¦   «                              d¦  «        d d…         › d�S )Nú[z%Y-%m-%d %H:%M:%S.%féýÿÿÿz] )r   ÚnowÚstrftimer-   r   r   Ú_format_log_prefixr|   ‡   s1   € ØG�xŒ|‰~Œ~×&Ò&Ð'=Ñ>Ô>¸sÀ¸sÔCÐGÐGÐGÐGr   r   c                ó¾  — t           €d S t          | pd¦  «        }t          |¦  «        dk    r¯t          r(t                                t          ¦   «         ¦  «         da|                     d¦  «        }|dk     rt                                |¦  «         d S t                                |d |dz   …         ¦  «         da||dz   d …         }t          |¦  «        dk    °­d S d S )NÚ r   Fú
r>   T)r   rB   rA   Ú_LOG_LINE_STARTr   r|   Úfind)r   ÚtextÚnewline_indexs      r   Ú_write_log_datar„   ‹   sÝ   € åÐØˆÝˆtˆz�r‰?Œ?€DÝ
ˆd‰)Œ)�aŠ-ˆ-Ýð 	$Ý×ÒÕ0Ñ2Ô2Ñ3Ô3Ð3Ø#ˆOØŸ	š	 $™œˆØ˜1ÒÐÝ×Ò˜dÑ#Ô#Ð#ØˆFÝ×Ò˜$Ð2 °Ñ!2Ð2Ô3Ñ4Ô4Ð4ØˆØ�M AÑ%Ð'Ð'Ô(ˆõ ˆd‰)Œ)�aŠ-ˆ-ˆ-ˆ-ˆ-ˆ-r   c                ó²   — | rt          ¦   «         sd S t          5  t          €	 d d d ¦  «         d S t          | ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S r"   )rv   Ú	_LOG_LOCKr   r„   )r   s    r   r   r   �   sÈ   € Øð Õ0Ñ2Ô2ð ØˆÝ	ð ð ÝÐØðð ð ñ ô ð ð ð õ 	˜ÑÔÐðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   š	A°AÁAÁAc                 ó˜  — t           st          �t          €d S dt          › d�} t          5  t	          t
          j        ¦  «                             | ¦  «         t	          t
          j        ¦  «                             ¦   «          t          �(t          | ¦  «         t                               ¦   «          d d d ¦  «         n# 1 swxY w Y   da d S )Nz3[DeepyDebug] Verbose level forced to 2. Logging to r   T)
Ú_START_NOTICE_EMITTEDr   r	   r†   rf   rk   rl   r   r(   r„   )Únotices    r   Ú_emit_start_noticerŠ   ¦   sô   € åð ¥Ð 3Õ7KÐ7SØˆØ[ÕCWÐ[Ð[Ð[€FÝ	ð  ð  Ý•s”zÑ"Ô"×(Ò(¨Ñ0Ô0Ð0Ý•s”zÑ"Ô"×(Ò(Ñ*Ô*Ð*ÝÐ"Ý˜FÑ#Ô#Ð#Ý×ÒÑÔÐð ð  ð  ñ  ô  ð  ð  ð  ð  ð  ð  øøøð  ð  ð  ð  ð !ÐÐÐs   ªBB=Â=CÃCc                 ó
  — t           rd S da t          t          t          j        ¦  «        ¦  «        } | €d S t          t          t          j        ¦  «        ¦  «        t          _        t          | ¦  «        at          ¦   «          d S ri   )	Ú_BOOTSTRAPPEDrJ   r#   rk   r9   rT   rc   r
   rn   )rG   s    r   Úbootstrap_deepy_debugr�   ´   sk   € åð ØˆØ€MÝ¥¥S¤X¡¤Ñ/Ô/€IØÐØˆÝ#¥D­¬¡N¤NÑ3Ô3…C„HÝ*¨9Ñ5Ô5ÐÝÑÔÐÐÐr   c                 ó8  — t           €dS t          �dS t          5  t          €St          j        ¦   «                              d¦  «        } t           d| › d�z  at                               ddd¬	¦  «        adad d d ¦  «         n# 1 swxY w Y   t          ¦   «          dS )
NFTz%Y%m%d_%H%M%SÚdebug_deepy_z.logÚazutf-8r>   )r   Ú	buffering)
r
   r   r†   r   rz   r{   r	   ÚopenÚDEBUG_DEEPY_ENABLEDrŠ   )Ústamps    r   Úensure_deepy_debug_startedr•   Á   sÝ   € åÐ ØˆuÝÐØˆtÝ	ð 'ð 'ÝÐÝ”L‘N”N×+Ò+¨OÑ<Ô<ˆEÝ#4Ð7QÀeÐ7QÐ7QÐ7QÑ#QÐ Ý.×3Ò3°CÀ'ÐUVÐ3ÑWÔWˆKØ"&Ðð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'õ ÑÔÐØˆ4s   šABÂBÂB)Ústart_if_neededr–   úIterator[None]c              #  óÂ  K  — | rt          ¦   «         nt          d u}|sd V — d S t          t          t          dd¦  «        pd¦  «        }|dz   t          _        	 d V — |dk    r.t          t          d¦  «        rt          t          d¦  «         d S d S |t          _        d S # |dk    r+t          t          d¦  «        rt          t          d¦  «         n|t          _        w xY w)Nrp   r   r>   )r•   r   rq   r   rr   rp   ÚhasattrÚdelattr)r–   ÚenabledÚdepths      r   Údeepy_log_scoper�   Ñ   s  è è € à.=ÐZÕ(Ñ*Ô*Ð*Å;ÐVZÐCZ€GØð ØˆˆˆØˆÝ•�Ð'8¸!Ñ<Ô<ÐAÀÑBÔB€EØ$)¨A¡I…MÔ!ð2Øˆˆˆà�AŠ:ˆ:Ý•}Ð&7Ñ8Ô8ð :Ý�Ð'8Ñ9Ô9Ð9Ð9Ð9ð:ð :ð -2�MÔ)Ð)Ð)øð	 �AŠ:ˆ:Ý•}Ð&7Ñ8Ô8ð :Ý�Ð'8Ñ9Ô9Ð9øà,1�MÔ)Ð1Ð1Ð1Ð1s   ÁB Â?Cc                 ól   — t          ¦   «         5  t          | i |¤Ž d d d ¦  «         d S # 1 swxY w Y   d S r"   )r�   Úprint)ÚargsÚkwargss     r   Údeepy_printr¢   ã   s…   € Ý	Ñ	Ô	ð ð ÝˆtÐ�vÐÐÐðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   �)©-°-c               #  óº   K  — t          ¦   «         sd V — d S t          dz  a	 d V — t          dt          dz
  ¦  «        ad S # t          dt          dz
  ¦  «        aw xY w)Nr>   r   )r•   ru   Úmaxr-   r   r   Úcapture_external_logsr¥   è   s|   è è € õ &Ñ'Ô'ð ØˆˆˆØˆÝ˜qÑ ÐðFØˆˆˆå"% aÕ)@À1Ñ)DÑ"EÔ"EÐÐÐø¥# aÕ)@À1Ñ)DÑ"EÔ"EÐÐEÐEÐEÐEs   ¢A  Á A)r9   r:   r;   r<   )rK   )r9   r:   rL   rB   r;   r:   )rU   rB   r;   r   )rd   r   r;   r   )r;   rg   )r;   r/   )r;   rB   )r   rB   r;   rg   )r   r<   r;   rg   )r–   r/   r;   r—   )r;   r—   ),Ú
__future__r   rk   Ú	threadingÚ
contextlibr   r   Úpathlibr   Útypingr   r   rC   r“   r	   Ú__annotations__rŒ   rj   r
   r   ÚRLockr†   Úlocalrr   ru   rˆ   r€   r   rJ   rT   rc   rf   rn   rs   rv   r|   r„   r   rŠ   r�   r•   r�   r¢   r¥   r-   r   r   ú<module>r®      s¨  ðà "Ð "Ð "Ð "Ð "Ð "Ð "à 
€
€
€
Ø Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #ð €
ØÐ Ø$(Ð Ð (Ð (Ð (Ñ (Ø€ØÐ Ø!%Ð Ð %Ð %Ð %Ñ %Ø!€Ð !Ð !Ð !Ñ !ØˆIŒOÑÔ€	Ø�	”Ñ!Ô!€ØÐ ØÐ Ø€ð,ð ,ð ,ð ,ð ,ñ ,ô ,ð ,ðDð ð ð ð&ð ð ð ð ð0ð ð ð ð/ð /ð /ð /ðð ð ð ðFð Fð Fð Fðcð cð cð cðHð Hð Hð Hð)ð )ð )ð )ð$ð ð ð ð!ð !ð !ð !ð
ð 
ð 
ð 
ðð ð ð ð  Ø/4ð 2ð 2ð 2ð 2ð 2ñ „ð2ð"ð ð ð ð
 ð	Fð 	Fð 	Fñ „ð	Fð 	Fð 	Fr   