
    ^ht              	          % S SK r S SKrS SKJrJrJr  S SKJr  S SKJ	r	  S SK
Jr  S SKJr  S SKJr  S SK7  S SK7  S S	KJr  S
\S\\\\4   S\\\\4   4S jr " S S\ R2                  5      r " S S\5      r\" 5       r\\S'   g)    N)BoolIntUnicode)Configurable)BaseAssistantListener)ChatDBGMarkdownPrinter)ChatDBGPrinter)TextIOWrapper)*)ChatDBGJupyterPrinteroption_namedefault_valuereturnc                 (   SU R                  5       -   n[        R                  " U[        U5      5      n[	        U5      [
        :X  a  [        U5      $ [	        U5      [        :X  a-  UR                  5       S:H  =(       d    UR                  5       S:H  $ U$ )NCHATDBG_true1)upperosgetenvstrtypeintboollower)r   r   env_namevs       M/home/james-whalen/.local/lib/python3.13/site-packages/chatdbg/util/config.py_chatdbg_get_envr      su     K--//H
		(C./AMc!1v	m		$wwyF"6aggi3&66    c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )	DBGParser   c                 &   > [         TU ]  " S0 UD6  g )N )super__init__)selfkwargs	__class__s     r   r'   DBGParser.__init__    s    "6"r    c                      [        SU S35      e)NzError: 
)	Exception)r(   messages     r   errorDBGParser.error#   s    ''"-..r    r%   )r   N)__name__
__module____qualname____firstlineno__r'   r0   __static_attributes____classcell__)r*   s   @r   r"   r"      s    #/ /r    r"   c            
          \ rS rSr\" \" SS5      SS9R                  SS9r\" \" SS	5      S
S9R                  SS9r	\" \" SS5      SS9R                  SS9r
\" \" SS5      SS9R                  SS9r\" \" SS5      SS9R                  SS9r\" \" SS5      SS9R                  SS9r\" \" SS5      SS9R                  SS9r\" \" SS	5      SS9R                  SS9r\" \" SS5      SS9R                  SS9r\" \" SS5      SS9R                  SS9r\" \" SS	5      S S9R                  SS9r\" \" S!S"5      S#S9R                  SS9r\" \" S$S5      S%S9R                  SS9r\" \" S&S5      S'S9R                  SS9r\" \" S(S	5      S)S9R                  SS9r\	\
\\\\\\/rS* rS+\\\\\\4   4   4S, jrS-\\   S+S.4S/ jr S+\4S0 jr!S+\4S1 jr"S2\\   S+\4S3 jr#S4\$S5\S6\S7\S+\%4
S8 jr&S+\4S9 jr'S:r(g.);ChatDBGConfig'   modelzgpt-4ozThe LLM model)helpT)configdebugFzLog LLM callslogzlog.yamlzThe log filetag zAny extra info for log filerc_linesz[]zlines to run at startupcontext
   zClines of source code to show when displaying stacktrace informationshow_localsz#show local var values in stacktrace	show_libsz!show library frames in stacktraceshow_sliceszsupport the `slice` commandtake_the_wheelzLet LLM take the wheelbatchzDo not stream the LLM responsesformatmdz6The output format (text or md or md:simple or jupyter)instructionsziThe file for the initial instructions to the LLM, or '' for the default (possibly-model specific) versionmodule_whitelistzThe module whitelist fileunsafezDDisable any protections against GPT running harmful code or commandsc                     [        SS9nU R                   Hb  nSUR                   3nU R                  UR                     n[	        U5      nU[
        :X  a  UR                  X4SS9  MR  UR                  X4US9  Md     U$ )NF)add_helpz--
store_true)defaultaction)rR   r   )r"   _user_configurablename_trait_valuesr   r   add_argument)r(   parsertraitrU   valuets         r   _parserChatDBGConfig._parsert   s}    E*,,E

|$D&&uzz2EUADy##D#M##Da#@ - r    r   c                 <   U R                   U R                  U R                  U R                  U R                  U R
                  U R                  U R                  U R                  U R                  U R                  U R                  U R                  U R                  S.$ )z&Serialize the object to a JSON string.r;   r>   r?   r@   rB   rC   rE   rF   rG   rH   	no_streamrJ   rL   rM   r_   )r(   s    r   to_jsonChatDBGConfig.to_json   sz     ZZZZ8888||++++"11kk -- $ 5 5
 	
r    argvNc                     U R                  5       R                  U5      u  p#U R                   H2  nU R                  UR                  [        X$R                  5      5        M4     U$ )N)r\   parse_known_argsrT   	set_traitrU   getattr)r(   rc   argsunknown_argsxs        r   parse_user_flagsChatDBGConfig.parse_user_flags   sN    !\\^<<TB((ANN16674#89 ) r    c           	          SR                  U R                   Vs/ s H$  nU R                  X5      R                  SS5      PM&     sn5      $ s  snf )Nr-   zChatDBGConfig.rA   )joinrT   class_get_trait_helpreplacer(   rj   s     r   user_flags_helpChatDBGConfig.user_flags_help   sT    yy 000A ))!2::;KRP0
 	
s   +Ac           	          SR                  U R                   Vs/ s H,  nSUR                  S U R                  UR                      3PM.     sn5      $ s  snf )Nr-   z  --10)rn   rT   rU   rV   rq   s     r   
user_flagsChatDBGConfig.user_flags   s\    yy 000A qvvbk$"4"4QVV"<!=>0
 	
s   3Arh   c                 "    [         R                  U5      nU(       a)  SSR                  U5       S3SU R                  5        3-   $ [         R	                  5       $ ! [
         a)  n[        U5      SU R                  5        3-   s S nA$ S nAff = f)NzUnrecognized arguments:  z

zChatDBG arguments:

z
ChatDBG arguments:

)chatdbg_configrk   rn   rr   rv   r.   r   )r(   rh   unknownes       r   parse_only_user_flags#ChatDBGConfig.parse_only_user_flags   s    		P$55d;G.sxx/@.AF.t/C/C/E.FGH ",,.. 	Pq66t7K7K7M6NOOO	Ps$   AA A 
B%B	B	Bstdoutpromptprefixwidthc                    [         R                  nUR                  S5      nUS   S:X  a!  [        U5      S:X  a  US   OS n[	        XX4US9$ US:X  a  [        XX45      $ US:X  a  [        X#U5      $ [        S	US
9  [        XX45      $ )N:r   rK         )themetextjupyterz4*** Unknown format '{format}'.  Defaulting to 'text')file)rz   rJ   splitlenr   r	   r   print)r(   r   r   r   r   rJ   r   r   s           r   make_printerChatDBGConfig.make_printer   s      &&S!8t #E
aE!HTE)&&uUUv!&&@@y (??HvV!&&@@r    c                    U R                   S:X  aB  [        R                  R                  [        R                  R	                  [
        5      S5      nOU R                   n[        US5       nU Vs/ s H(  o3R                  5       S:w  d  M  UR                  5       PM*     snsS S S 5        $ s  snf ! , (       d  f       g = f)NrA   zmodule_whitelist.txtr)rM   r   pathrn   dirname__file__openrstrip)r(   	file_pathr   modules       r   get_module_whitelist"ChatDBGConfig.get_module_whitelist   s      B&RWW__X%>BVXI--I)S!T26P$--/R:OOFMMO$P "!P "!s$   +B00B+B+B0+B00
B>r%   ))r2   r3   r4   r5   r   r   r@   r;   r   r>   r?   rB   r   rC   rE   rF   rG   rH   r`   rJ   rL   rM   rN   rT   r\   Dictr   Unionr   r   ra   Listrk   rr   rv   r}   r
   r   r   r   r6   r%   r    r   r9   r9   '   s?   $Wh7oNRR S E !'51HLL M E "5*5N
K
O
O P C "5"-4Q
R
V
V W C T*1J	cc  B'R 
cc 
 -2 
cc 
 e,3V	cc  -4Q	cc  )407O	cc  %(/P	cc  4(E 
cc 
 ,x 
cc 
 +R07R	cc  5)S 
cc  		
c5c4#889 
&T#Y 4 
 

C 

P$s) 
P 
PA#A-0A:=AFIA	A Qc Qr    r9   rz   )argparser   	traitletsr   r   r   traitlets.configr   chatdbg.assistant.listenersr   chatdbg.util.markdownr   chatdbg.util.printerr	   ior
   typestypingchatdbg.util.jupyterr   r   r   r   r   r   ArgumentParserr"   r9   rz   __annotations__r%   r    r   <module>r      s     	 ( ( ) = 8 /    6

%*4c>%:

4c>
/'' /jQL jQZ !. /r    