
    hp                    n   S SK Jr  S SKrS SKrS SKJr  S SKJrJr  S SK	r	SSK
JrJrJrJr  SSKJr  SSKJr  SS	KJrJrJr  SS
 jrSS jrSS jr\4         SS jjrSS jr\\\4         SS jjr\R<                  S    \R<                  SS \R>                  \\ 4           SS jjr!g)    )annotationsNwraps)CallableIterator   )	AutomatonInputOutputState)findMachines)MethodicalMachine)TypeMachineInputProtocolCorec                D    SR                  U R                  SS5      5      $ )Nz"{}""z\")formatreplacess    Y/root/1688_scrapy/alibaba-scraper/venv/lib/python3.13/site-packages/automat/_visualize.py_gvquoter      s    ==3.//    c                $    SR                  U 5      $ )Nz<{}>)r   r   s    r   _gvhtmlr      s    ==r   c                    SR                  S [        UR                  5       5       5       5      nSR                  U5      nSR                  XUS9$ )z7
Construct a string from the HTML element description.
 c           	   3  n   #    U  H+  u  pS R                  U[        [        U5      5      5      v   M-     g7f)z{}={}N)r   r   str).0keyvalues      r   	<genexpr>elementMaker.<locals>.<genexpr>   s0      /JC 	sHSZ011/s   35 z#<{name} {attrs}>{children}</{name}>)nameattrschildren)joinsorteditemsr   )r'   r)   r(   formattedAttrsformattedChildrens        r   elementMakerr/      sY     XX  / N )0772C 8  r   c                   0 nU(       a  [        [        U5      5      US'   U" SU" SU SS94SUS.UD6nSS	0nU Vs/ s H  nU" SU" SU40 UD6S
S9PM     nnU" SU5      /n	U(       a  U	R                  U" S/UQ76 5        U" S/U	Q76 $ s  snf )z6
Construct an HTML table to label a state transition.
colspantdfontzmenlo-italic)facepurple)colorportz
point-size9pink)r6   trtable)r    lenappend)

inputLabeloutputLabelsr7   _Er1   inputLabelCell	pointSizeoutputLabeloutputLabelCellsrowss
             r   
tableMakerrF   &   s     G \!23	
6:N3 	
 N s#I ('K 	4FK595VD'  
 t^$%DBt/./0gs   B
c                4   ^  [        T 5      SU 4S jj5       nU$ )Nc                T   > T" U 5      R                  SS5      R                  SS5      $ )N<z&lt;>z&gt;)r   )txs    r   implescapify.<locals>.implJ   s%    t||C(00f==r   )rK   r   returnr    r   )rL   rM   s   ` r   escapifyrP   I   s     
1X> > Kr   c           
        [        U5      n[        U5      n[        U5      n[        R                  " SSS.SS0SS0S9nU R                  5        H3  nXPR                  L a  SnSnOS	nSnUR                  U" U5      US
USS9  M5     [        U R                  5       5       H  u  pU	u  ppSR                  U5      nU" U5      nSn[        UU Vs/ s H  nU" U5      PM     snUS9nUR                  U[        U5      SSS9  UR                  U" U
5      SR                  UU5      SS9  UR                  SR                  UU5      U" U5      5        M     U$ s  snf )z9
Produce a L{graphviz.Digraph} object from an automaton.
true100)packdpifontnameMenlo)
graph_attr	node_attr	edge_attrboldz
Menlo-Boldr&   ellipseblue)fontameshapestyler6   zt{}	tableport)r7   z0.2none)labelmarginr_   z{}:{}:w)	arrowheadz{}:{}:e)rP   graphvizDigraphstatesinitialStatenode	enumerateallTransitionsr   rF   r   edge)	automatoninputAsStringoutputAsStringstateAsStringdigraphstate
stateShapefontNameneachTransitioninStateinputSymboloutStateoutputSymbolsthisTransitionr>   r7   outputSymbolr;   s                      r   makeDigraphr~   Q   s    ]+Mn-N]+M"51w'w'G !!#***J#HJH%  	 	
 $ 'y'?'?'AB8F5ha";/
>KLml^L)mL
 	^75>%vV'"^T2 	 	

 	Y%%nd;]8=TU' C* N Ms   Ec                J   SnSnUS   (       a  UR                  SS5        [        R                  " XUS9nUR                  SSS9  UR                  S	S
SSSS9  UR                  SSSSS9  UR                  SSSSS9  UR                  SSS[        R
                  SS9  UR                  SSSSSS9  UR                  U5      nUR                  =(       a1    UR                  (       + =(       d    UR                  UR                  :g  n	UR                  (       a  S nU" UR                  5       H  u  pU" U
S 5        UR                  5       nU	(       a=  UR                  S!R                  U
5      UR                  S"9  U" U
S#UR                  5        UR                  (       d  Mu  UR                  (       + =(       d    U	nUR                  Ul        UR                  S!R                  U
5      UR                  UR                   US$9  U(       a  S%nOS&nU" XUR                  5        M     g')(z'
Entry point for command line utility.
zB
    Visualize automat.MethodicalMachines as graphviz graphs.
    zz
    You must have the graphviz tool suite installed.  Please visit
    http://www.graphviz.org for more information.
    r   r&   )progdescriptionepilogfqpnz@A Fully Qualified Path name representing where to find machines.)helpz--quietz-qzsuppress outputF
store_true)r   defaultactionz--dot-directoryz-dzWhere to write out .dot files.z.automat_visualize)r   r   z--image-directoryz-izWhere to write out image files.z--image-typez-tzThe image format.png)r   choicesr   z--viewz-vz.View rendered graphs with default image viewerc                     g )N )argss    r   _printtool.<locals>._print   s    r   z...discoveredz{}.dot)filename	directoryz...wrote dot into)r   r   viewcleanupz...wrote image intoz...wrote image and dot intoN)insertargparseArgumentParseradd_argumentrf   FORMATS
parse_argsdot_directoryimage_directoryquietr   	asDigraphsaver   
image_typerenderr   )	_progname_argv_syspath_findMachinesr   DESCRIPTIONEPILOGargumentParserr   explicitlySaveDotr   machinerr   	deleteDotmsgs                  r   toolr      s;   KF {2,,N R    4/|    -$	    .$	           @    $$U+D**    ND$8$8D<N<N$N  zz	 'tyy1t_%##%LL(//$"74CUCULV4,d.@.@A ...C2CI!__GNNN!...YY!	   +34d223- 2r   )r   r    rO   r    )r'   r    r)   r    r(   r    rO   r    )
r>   r    r?   	list[str]r7   r    r@   zCallable[..., str]rO   r    )rL   Callable[[State], str]rO   r   )
rn   zAutomaton[State, Input, Output]ro   zCallable[[Input], str]rp   zCallable[[Output], str]rq   r   rO   zgraphviz.Digraph)r   r    r   r   r   r   r   z[Callable[[str], Iterator[tuple[str, MethodicalMachine | TypeMachine[InputProtocol, Core]]]]r   zCallable[..., None]rO   None)"
__future__r   r   sys	functoolsr   typingr   r   rf   _corer	   r
   r   r   	_discoverr   _methodicalr   _typedr   r   r   r   r   r/   rF   rP   reprr~   argvpathprintr   r   r   r   <module>r      s"   "  
  %  2 2 # * 4 40$ *	      		 
 	 F -1.2,0	7.7)7 ,7 *	7
 7v XXa[xx|(( 	"'[4[4[4 [4	[4  [4 
[4r   