
    dhp                       d dl mZ d dlZd dlZd dlmZ d dlmZmZ d dl	Z	ddl
mZmZmZmZ ddlmZ ddlmZ dd	lmZmZmZ d/dZd/dZd0dZefd1dZd2dZeeefd3d%Zej        d          ej        dd         ej        ee fd4d.Z!dS )5    )annotationsNwraps)CallableIterator   )	AutomatonInputOutputState)findMachines)MethodicalMachine)TypeMachineInputProtocolCoresstrreturnc                T    d                     |                     dd                    S )Nz"{}""z\")formatreplacer   s    b/home/jenkins/workspace/simtester-sanitize/venv/lib/python3.11/site-packages/automat/_visualize.py_gvquoter      s"    ==3..///    c                ,    d                     |           S )Nz<{}>)r   r   s    r   _gvhtmlr      s    ==r   namechildrenattrsc                    d                     d t          |                                          D                       }d                     |          }d                    | ||          S )z?
    Construct a string from the HTML element description.
     c           	   3  |   K   | ]7\  }}d                      |t          t          |                              V  8dS )z{}={}N)r   r   r   ).0keyvalues      r   	<genexpr>zelementMaker.<locals>.<genexpr>   sV        C 	sHSZZ0011     r    z#<{name} {attrs}>{children}</{name}>)r   r!   r    )joinsorteditemsr   )r   r    r!   formattedAttrsformattedChildrens        r   elementMakerr/      s|     XX   //    N ))0772C 8   r   
inputLabeloutputLabels	list[str]port_ECallable[..., str]c                   i }|rt          t          |                    |d<    d d| d          fd|d|}dd	ifd
|D             } d|          g}|r|                     dg|R              dg|R  S )z>
    Construct an HTML table to label a state transition.
    colspantdfontzmenlo-italic)facepurple)colorr3   z
point-size9c           
     <    g | ]} d  d|fi d          S )r8   r9   pink)r<    )r%   outputLabelr4   	pointSizes     r   
<listcomp>ztableMaker.<locals>.<listcomp><   sN        	4FK55955VDDD  r   trtable)r   lenappend)	r0   r1   r3   r4   r7   inputLabelCelloutputLabelCellsrowsrB   s	      `    @r   
tableMakerrK   &   s    G 4 \!2!233	R
6:N333 	 
  N s#I    '  
 Bt^$$%D 1BBt/.///0002gr   xCallable[[State], str]c                >     t                     d fd            }|S )Ntr   r   r   c                j     |                                dd                               dd          S )N<z&lt;>z&gt;)r   )rO   rL   s    r   implzescapify.<locals>.implJ   s/    qtt||C((00f===r   )rO   r   r   r   r   )rL   rS   s   ` r   escapifyrT   I   s8    
1XX> > > > > X> Kr   	automatonAutomaton[State, Input, Output]inputAsStringCallable[[Input], str]outputAsStringCallable[[Output], str]stateAsStringgraphviz.Digraphc                .   t          |          }t                    t          |          }t          j        dddddiddi          }|                                 D ]7}|| j        u rd}d}nd	}d}|                     ||          |d
|d           8t          |                                           D ]\  }}	|	\  }
}}}d                    |          } ||          }d}t          |fd|D             |          }|                    |t          |          dd           |                     ||
          d                    ||          d           |                    d                    ||           ||                     |S )zA
    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styler<   zt{}	tableportc                &    g | ]} |          S r@   r@   )r%   outputSymbolrY   s     r   rC   zmakeDigraph.<locals>.<listcomp>{   s#    LLLl^^L))LLLr   )r3   z0.2none)labelmarginrk   z{}:{}:w)	arrowheadz{}:{}:e)rT   graphvizDigraphstatesinitialStatenode	enumerateallTransitionsr   rK   r   edge)rU   rW   rY   r[   digraphstate
stateShapefontNameneachTransitioninStateinputSymboloutStateoutputSymbolsthisTransitionr0   r3   rE   s     `               r   makeDigraphr   Q   s    ]++Mn--N]++M"511w'w'  G !!## 
 
I***J#HHJHM%   	 	
 	
 	
 	
 'y'?'?'A'ABB V V>8F5ha"];//
LLLLmLLL
 
 
 	^75>>%vVVVM'""^T22 	 	
 	
 	

 	Y%%nd;;]]8=T=TUUUUNr   	_progname_argv_syspath_findMachines[Callable[[str], Iterator[tuple[str, MethodicalMachine | TypeMachine[InputProtocol, Core]]]]_printCallable[..., None]Nonec                    d}d}|d         r|                     dd           t          j        | ||          }|                    dd           |                    d	d
ddd           |                    dddd           |                    dddd           |                    dddt          j        d           |                    ddddd           |                    |          }|j        o|j         p|j        |j        k    }	|j	        rd } ||j
                  D ]\  }
} ||
d            |                                }|	rA|                    d!                    |
          |j        "            ||
d#|j                   |j        re|j         p|	}|j        |_        |                    d!                    |
          |j        |j        |$           |rd%}nd&} ||
||j                   d'S )(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                     d S )Nr@   )argss    r   r   ztool.<locals>._print   s    Dr   z...discoveredz{}.dot)filename	directoryz...wrote dot into)r   r   viewcleanupz...wrote image intoz...wrote image and dot intoN)insertargparseArgumentParseradd_argumentrt   FORMATS
parse_argsdot_directoryimage_directoryquietr   	asDigraphsaver   
image_typerenderr   )r   r   r   r   r   DESCRIPTIONEPILOGargumentParserr   explicitlySaveDotr   machiner|   	deleteDotmsgs                  r   toolr      s   KF { 2,K  N R      4/|      -$	      .$	              @      $$U++D*   ND$8D<N$N  z 	 	 	 'ty11 4 4gt_%%%##%% 	BLL(//$"7"74CULVVVF4,d.@AAA 	4 ..C2CI!_GNNN!...Y!	      4+3F4d2333-4 4r   )r   r   r   r   )r   r   r    r   r!   r   r   r   )
r0   r   r1   r2   r3   r   r4   r5   r   r   )rL   rM   r   rM   )
rU   rV   rW   rX   rY   rZ   r[   rM   r   r\   )r   r   r   r2   r   r2   r   r   r   r   r   r   )"
__future__r   r   sys	functoolsr   typingr   r   rt   _corer	   r
   r   r   	_discoverr   _methodicalr   _typedr   r   r   r   r   r/   rK   rT   reprr   argvpathprintr   r@   r   r   <module>r      s   " " " " " "  



       % % % % % % % %  2 2 2 2 2 2 2 2 2 2 2 2 # # # # # # * * * * * * 4 4 4 4 4 4 4 4 4 40 0 0 0      $ *	         F    -1.2,0	7 7 7 7 7v Xa[x|( 	"'[4 [4 [4 [4 [4 [4 [4r   