Ë
    —~ª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ð &Ÿn™n¨S´(¼3¸u»:Ó2F×Gñ Gùs   ‚13Ú z#<{name} {attrs}>{children}</{name}>)ÚnameÚattrsÚchildren)ÚjoinÚsortedÚitemsr   )r   r   r   ÚformattedAttrsÚformattedChildrens        r   ÚelementMakerr"      s]   € ð —X‘Xñ GÜ06°u·{±{³}Ó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áØ�‰‘B�tÐ/Ð.Ò/Ô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‰  € ô ×Ñ°6Ø27ñ+9à*4°gÐ)>Ø*4°gÐ)>ô@€Gð
 ×!Ñ!Ó#ò #ˆØ�I×*Ñ*Ñ*ØˆJØ#‰HàˆJØˆHØ�‰‘] 5Ó)Ø%Ø$Ø%Ø!ð	 	õ 	#ð#ô ' y×'?Ñ'?Ó'AÓBò .Ñˆˆ>Ø8FÑ5ˆ�˜h¨ØŸ™ a›ˆÙ" ;Ó/ˆ
àˆÜ˜:Ø<Iö(KØ,8ñ )7°|Õ(Dò (Kà $ô&ˆð 	�‰�^Ü" 5›>°%¸vð 	ô 	Gð 	�‰‘] 7Ó+Ø×%Ñ% n°dÓ;Ø%ð 	ô 	'ð 	�‰�Y×%Ñ% n°dÓ;Ù" 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ð ×ÑÐ 1°4Ø%EØ(<ð  ô >ð ×ÑÐ 3°TØ%FØ(<ð  ô >ð ×Ñ °Ø%8Ü(0×(8Ñ(8Ø(-ð  ô /ð ×Ñ ¨$ð&8à(-Ø'3ð	  ô 5ð
 ×$Ñ$ UÓ+€Dà×+Ñ+ò MØ"&×"6Ñ"6Ð6ò LØ!%×!5Ñ!5¸×9KÑ9KÑ!Kð ð ‡z‚zò	ñ ' t§y¡yÓ1ò 4‰ˆˆgÙˆt�_Ô%à×#Ñ#Ó%ˆáØ�L‰L (§/¡/°$Ó"7Ø#'×#5Ñ#5ð ô 7á�4Ð,¨d×.@Ñ.@ÔAà×ÓØ ×.Ñ.Ð.ÒCÐ2CˆIØ!Ÿ_™_ˆGŒNØ�N‰N H§O¡O°DÓ$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 —8‘8˜A‘;Ø�x‰x˜˜ˆ|Ø—(‘(Ø#Øô	J4r   