
    ~b                         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y)    )print_functionN   )findMachinesc                 D    dj                  | j                  dd            S )Nz"{}""z\")formatreplacess    4/usr/lib/python3/dist-packages/automat/_visualize.py_gvquoter   
   s    ==3.//    c                 $    dj                  |       S )Nz<{}>)r   r
   s    r   _gvhtmlr      s    ==r   c                     dj                  d t        |j                               D              }dj                  |      }dj                  | ||      S )z?
    Construct a string from the HTML element description.
     c           	   3   j   K   | ]+  \  }}d j                  |t        t        |                   - yw)z{}={}N)r   r   str).0keyvalues      r   	<genexpr>zelementMaker.<locals>.<genexpr>   s2      G",#u &nnS(3u:2FG Gs   13 z#<{name} {attrs}>{children}</{name}>)nameattrschildren)joinsorteditemsr   )r   r   r   formattedAttrsformattedChildrens        r   elementMakerr"      s]     XX G06u{{}0EG GN)188" 9 $ $r   c                    i }|rt        t        |            |d<    |d |d| d      fd|d|}dd	i}|D cg c]  } |d |d|fi |d
       }} |d|      g}	|r|	j                   |dg|         |dg|	 S c c}w )z>
    Construct an HTML table to label a state transition.
    colspantdfontzmenlo-italic)facepurple)colorportz
point-size9pink)r)   trtable)r   lenappend)

inputLabeloutputLabelsr*   _Er$   inputLabelCell	pointSizeoutputLabeloutputLabelCellsrowss
             r   
tableMakerr9      s     G \!23	6% .0# '!# "#N s#I ,89
 ( 4f)+ )+ "(	) 9 9 t^$%DBt/./0g9s   Bc           
         t        j                  dddddiddi      }| j                         D ]5  }|| j                  u rd}d}nd	}d}|j	                   ||      |d
|d       7 t        | j                               D ]  \  }}	|	\  }
}}}dj                  |      } ||      }d}t        ||D cg c]
  } ||       c}|      }|j	                  |t        |      dd       |j                   ||
      dj                  ||      d       |j                  dj                  ||       ||              |S c c}w )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{}	tableport)r*   z0.2none)labelmarginrH   z{}:{}:w)	arrowheadz{}:{}:e)graphvizDigraphstatesinitialStatenode	enumerateallTransitionsr   r9   r   edge)	automatoninputAsStringoutputAsStringstateAsStringdigraphstate
stateShapefontNameneachTransitioninStateinputSymboloutStateoutputSymbolsthisTransitionr1   r*   outputSymbolr.   s                      r   makeDigraphrg   ?   s    627+9*4g)>*4g)>@G
 !!# #I***J#HJH]5)%$%!	 	 	## 'y'?'?'AB .>8F5ha";/
:<I(K,8 )7|(D (K $& 	^"5>%v 	 	G 	]7+%%nd;% 	 	' 	Y%%nd;"8,	.!.& N(Ks   3D?c                    d}d}|d   r|j                  dd       t        j                  | ||      }|j                  dd       |j                  d	d
ddd       |j                  dddd       |j                  dddd       |j                  dddt        j
                  d       |j                  ddddd       |j                  |      }|j                  xr( |j                   xs |j                  |j                  k7  }	|j                  rd } ||j                        D ]  \  }
} ||
d        |j                         }|	r@|j                  d!j                  |
      |j                  "        ||
d#|j                         |j                  sn|j                   xs |	}|j                  |_        |j                  d!j                  |
      |j                  |j                   |$       |rd%}nd&} ||
||j                          y')(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)rm   defaultactionz--dot-directoryz-dzWhere to write out .dot files.z.automat_visualize)rm   ro   z--image-directoryz-izWhere to write out image files.z--image-typez-tzThe image format.png)rm   choicesro   z--viewz-vz.View rendered graphs with default image viewerc                       y )N )argss    r   _printztool.<locals>._print   s    r   z...discoveredz{}.dot)filename	directoryz...wrote dot into)rw   rx   viewcleanupz...wrote image intoz...wrote image and dot intoN)insertargparseArgumentParseradd_argumentrO   FORMATS
parse_argsdot_directoryimage_directoryquietrl   	asDigraphsaver   
image_typerenderry   )	_progname_argv_syspath_findMachinesrv   DESCRIPTIONEPILOGargumentParserru   explicitlySaveDotrl   machiner[   	deleteDotmsgs                  r   toolr   l   sO   KF {2,,N &H   I 	4%6(-'3   5  14%E(<   >  3T%F(<   > %8(0(8(8(-   / $&8(-'3	   5
 $$U+D++ M"&"6"66 L!%!5!59K9K!K  zz	 'tyy1 4gt_%##%LL(//$"7#'#5#5  74,d.@.@A ...C2CI!__GNNNHOOD$9%)%9%9 $		#,  . +34d223+4r   )
__future__r   r|   sysrO   	_discoverr   r   r   r"   r9   reprrg   argvpathprintr   rt   r   r   <module>r      sl    %  
  #0
$ 3? @ *.#"*Z 88A;xx|((#	J4r   