
    Xf                         d dl mZ d dlZd dlZd dlZddlmZ d Zd Zd Z	e	fdZ
eeefd	Zej        d          ej        dd         ej        eefd
ZdS )    )print_functionN   )findMachinesc                 T    d                     |                     dd                    S )Nz"{}""z\")formatreplacess    D/var/www/html/env/lib/python3.11/site-packages/automat/_visualize.py_gvquoter   
   s"    ==3..///    c                 ,    d                     |           S )Nz<{}>)r   r
   s    r   _gvhtmlr      s    ==r   c                     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   str).0keyvalues      r   	<genexpr>zelementMaker.<locals>.<genexpr>   s^       G G",#u &nnS(3u::2F2FGG G G G G G Gr    z#<{name} {attrs}>{children}</{name}>)nameattrschildren)joinsorteditemsr   )r   r   r   formattedAttrsformattedChildrens        r   elementMakerr"      s     XX G G06u{{}}0E0EG G G G GN))188" 9 $ $ $r   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)colorportz
point-size9c           
      <    g | ]} d  d|fi d          S )r%   r&   pink)r)    )r   outputLabel_E	pointSizes     r   
<listcomp>ztableMaker.<locals>.<listcomp>0   sd     9 9 9
 ( 42f)+ + )+ + "(	) ) ) 9 9 9r   trtable)r   lenappend)	
inputLabeloutputLabelsr*   r0   r$   inputLabelCelloutputLabelCellsrowsr1   s	      `    @r   
tableMakerr<      s    G 4 \!2!233	R6% .0 0 0# '!# # "# #N s#I9 9 9 9 9
 ,89 9 9 Bt^$$%D 1BBt/.///0002gr   c                    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   outputSymboloutputAsStrings     r   r2   zmakeDigraph.<locals>.<listcomp>\   s9     (K (K (K,8 )7|(D(D (K (K (Kr   )r*   z0.2none)labelmarginrK   z{}:{}:w)	arrowheadz{}:{}:e)graphvizDigraphstatesinitialStatenode	enumerateallTransitionsr   r<   r   edge)	automatoninputAsStringrP   stateAsStringdigraphstate
stateShapefontNameneachTransitioninStateinputSymboloutStateoutputSymbolsthisTransitionr7   r*   r4   s     `               r   makeDigraphrk   ?   s	    627+9 +9*4g)>*4g)>@ @ @G
 !!## # #I***J#HHJH]]5))%$%!	 	 	# 	# 	# 	#
 'y'?'?'A'ABB . .>8F5ha"];//
: (K (K (K (K<I(K (K (K $& & & 	^"5>>%v 	 	G 	G 	G 	]]7++%%nd;;% 	 	' 	' 	' 	Y%%nd;;"]8,,	. 	. 	. 	. Nr   c                     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)rq   defaultactionz--dot-directoryz-dzWhere to write out .dot files.z.automat_visualize)rq   rs   z--image-directoryz-izWhere to write out image files.z--image-typez-tzThe image format.png)rq   choicesrs   z--viewz-vz.View rendered graphs with default image viewerc                      d S )Nr.   )argss    r   _printztool.<locals>._print   s    Dr   z...discoveredz{}.dot)filename	directoryz...wrote dot into)rz   r{   viewcleanupz...wrote image intoz...wrote image and dot intoN)insertargparseArgumentParseradd_argumentrU   FORMATS
parse_argsdot_directoryimage_directoryquietrp   	asDigraphsaver   
image_typerenderr|   )	_progname_argv_syspath_findMachinesry   DESCRIPTIONEPILOGargumentParserrx   explicitlySaveDotrp   machiner`   	deleteDotmsgs                  r   toolr   l   s   KF { 2,  N &H   I I I 	4%6(-'3   5 5 5  14%E(<   > > >  3T%F(<   > > > %8(0(8(-   / / / $&8(-'3	   5 5 5
 $$U++D+ M"&"66 L!%!59K!K  z 	 	 	 'ty11 4 4gt_%%%##%% 	BLL(//$"7"7#'#5  7 7 7F4,d.@AAA 	4 ..C2CI!_GNNNHOOD$9$9%)%9 $	#,  . . .  4+3F4d2333+4 4r   )
__future__r   r   sysrU   	_discoverr   r   r   r"   r<   reprrk   argvpathprintr   r.   r   r   <module>r      s    % % % % % %  



  # # # # # #0 0 0  
$ 
$ 
$ 3?    @ *.#"* * * *Z 8A;x|(#	J4 J4 J4 J4 J4 J4r   