ó
    EñiL  ã                   óz  • % S SK r S SKJr  S SKJr  S SKJrJrJr  S SK	r	S SK
r	S SKJr  S SKJr  S SKJrJr  S SKJr  S S	KJr  \(       a  S SKrS
rO\\   \S'    S SKrS
rS/rSSSSSS.r/ SQrSSSS.r\(       a  \" SS9 " S S5      5       rg\(       d  \" SS9 " S S5      5       rgg! \ a    SrSr NXf = f)é    N)Úchain)Ú
ModuleType)ÚAnyÚOptionalÚTYPE_CHECKING)Úcompatibility)Ú_parse_stack_trace)Ú_format_argÚ_get_qualified_name)Únormalize_function)ÚTensorMetadataTÚpydotFÚFxGraphDrawerz"AliceBlue"ÚLemonChiffon1ÚYellow2Ú	LightGreyÚ
PowderBlue)ÚplaceholderÚcall_moduleÚ	get_paramÚget_attrÚoutput)Ú
CadetBlue1ÚCoralÚDarkOliveGreen1ÚDarkSeaGreen1Ú
GhostWhiteÚKhaki1ÚLavenderBlush1ÚLightSkyBlueÚ
MistyRose1Ú
MistyRose2ÚPaleTurquoise2Ú
PeachPuff1ÚSalmonÚThistle1ÚThistle3ÚWheat1r%   ú"filled,rounded"ú#000000)Ú	fillcolorÚstyleÚ	fontcolor)Úis_backward_compatiblec                   ó(  • \ rS rSrSr      S#S\R                  R                  S\S\	S\	S\	S	\	S
\
\   S\	4S jjrS$S\R                  4S jjrS\R                  4S jrS\R                  4S jrS\\\R                  4   4S jrS\R                  R&                  S\\\4   4S jrS\R*                  R,                  S\R                  R&                  S\R*                  R,                  4S jrS\S\4S jr S%S\S\4S jjrS\R                  R                  S\R                  R&                  S\	S	\	S\4
S jrS\4S jrS\S\4S jrS\R@                  S\4S  jr!S\R                  R                  S\S\	S\	S\	S	\	S\R                  4S! jr"S"r#g)&r   éE   z“
Visualize a torch.fx.Graph with graphviz
Basic usage:
    g = FxGraphDrawer(symbolic_traced, "resnet18")
    g.get_dot_graph().write_svg("a.svg")
NÚgraph_moduleÚnameÚignore_getattrÚignore_parameters_and_buffersÚskip_node_names_in_argsÚparse_stack_traceÚdot_graph_shapeÚnormalize_argsc	           	      óê  • X l         Ub  UOSU l        X€l        U R                  [        S'   X R	                  UUUUUU5      0U l        UR                  R                   H’  n	U	R                  S:w  a  M  U R                  X5      n
[        U
[        R                  R                  5      (       d  MQ  U R	                  U
U SU	R                   3UUUU5      U R
                  U SU	R                   3'   M”     g )NÚrecordÚshaper   Ú_)Ú_namer7   r8   Ú_WEIGHT_TEMPLATEÚ_to_dotÚ_dot_graphsÚgraphÚnodesÚopÚ_get_leaf_nodeÚ
isinstanceÚtorchÚfxÚGraphModuleÚtarget)Úselfr1   r2   r3   r4   r5   r6   r7   r8   ÚnodeÚ	leaf_nodes              ÚY/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/fx/passes/graph_drawer.pyÚ__init__ÚFxGraphDrawer.__init__N   sø   € ð ŒJà#2Ñ#>‘ÀHð Ô ð #1ÔØ(,×(<Ñ(<Ô˜WÑ%ð —l‘lØ ØØ"Ø1Ø+Ø%óð	 ˆDÔð %×*Ñ*×0Ô0�Ø—7‘7˜mÓ+Ùà ×/Ñ/°ÓC�	ä! )¬U¯X©X×-AÑ-A×BÑBÙà<@¿L¹LØØ�f˜A˜dŸk™k˜]Ð+Ø"Ø1Ø+Ø%ó=�× Ñ  D 6¨¨4¯;©;¨-Ð!8Ó9ò 1ó    Úreturnc                 óJ   • Uc  U R                  5       $ U R                  U5      $ )a9  
Visualize a torch.fx.Graph with graphviz
Example:
    >>> # xdoctest: +REQUIRES(module:pydot)
    >>> # xdoctest: +REQUIRES(module:ubelt)
    >>> # define module
    >>> class MyModule(torch.nn.Module):
    >>>     def __init__(self) -> None:
    >>>         super().__init__()
    >>>         self.linear = torch.nn.Linear(4, 5)
    >>>     def forward(self, x):
    >>>         return self.linear(x).clamp(min=0.0, max=1.0)
    >>> module = MyModule()
    >>> # trace the module
    >>> symbolic_traced = torch.fx.symbolic_trace(module)
    >>> # setup output file
    >>> import ubelt as ub
    >>> dpath = ub.Path.appdir("torch/tests/FxGraphDrawer").ensuredir()
    >>> fpath = dpath / "linear.svg"
    >>> # draw the graph
    >>> g = FxGraphDrawer(symbolic_traced, "linear")
    >>> g.get_dot_graph().write_svg(fpath)
)Úget_main_dot_graphÚget_submod_dot_graph©rJ   Úsubmod_names     rM   Úget_dot_graphÚFxGraphDrawer.get_dot_graph}   s*   € ð0 Ñ"Ø×.Ñ.Ó0Ð0à×0Ñ0°Ó=Ð=rP   c                 ó4   • U R                   U R                     $ ©N©r@   r=   ©rJ   s    rM   rS   Ú FxGraphDrawer.get_main_dot_graphš   s   € Ø×#Ñ# D§J¡JÑ/Ð/rP   c                 ó>   • U R                   U R                   SU 3   $ )Nr<   r[   rU   s     rM   rT   Ú"FxGraphDrawer.get_submod_dot_graph�   s"   € Ø×#Ñ# t§z¡z l°!°K°=Ð$AÑBÐBrP   c                 ó   • U R                   $ rZ   )r@   r\   s    rM   Úget_all_dot_graphsÚ FxGraphDrawer.get_all_dot_graphs    s   € Ø×#Ñ#Ð#rP   rK   c                 ój  • U R                   SSSS.nUR                  [        ;   a  [        UR                     US'   U$ UR                  UR                  5      n[        [        R                  " UR                  5       SS9R                  5       S S S	5      n[        U[        [        5      -     US'   U$ )
Nz#CAFFE3r)   r*   )r;   r+   r,   r-   r+   F)Úusedforsecurityé   é   )r7   rC   Ú
_COLOR_MAPÚ_pretty_print_targetrI   ÚintÚhashlibÚmd5ÚencodeÚ	hexdigestÚ_HASH_COLOR_MAPÚlen)rJ   rK   ÚtemplateÚtarget_nameÚtarget_hashs        rM   Ú_get_node_styleÚFxGraphDrawer._get_node_style£   s·   € à×-Ñ-Ø&Ø+Ø&ñ	ˆHð �w‰wœ*Ó$Ü(2°4·7±7Ñ(;�˜Ñ%ð ˆOð #×7Ñ7¸¿¹ÓD�Ü!Ü—K’KØ#×*Ñ*Ó,¸eñç‘i“k " 1ð&ð ó	�ô )8Ø¤#¤oÓ"6Ñ6ñ)�˜Ñ%ð ˆOrP   Úmodulec                 óB  • Un[        UR                  [        5      (       d!  [        S[	        UR                  5       35      eUR                  R                  S5      nU H;  n[        X55      (       d  [        [        U5      S-   U-   S-   5      e[        X55      nM=     U$ )NzExpected str target, got Ú.z does not have attribute Ú!)	rE   rI   ÚstrÚAssertionErrorÚtypeÚsplitÚhasattrÚRuntimeErrorÚgetattr)rJ   ru   rK   Úpy_objÚatomsÚatoms         rM   rD   ÚFxGraphDrawer._get_leaf_nodeº   s—   € ð ˆFÜ˜dŸk™k¬3×/Ñ/Ü$Ð'@ÄÀdÇkÁkÓARÐ@SÐ%TÓUÐUØ—K‘K×%Ñ% cÓ*ˆEÛ�Ü˜v×,Ñ,Ü&Ü˜F›Ð&AÑAÀDÑHÈ3ÑNóð ô ! Ó.’ñ ð ˆMrP   rI   c                 ó  • [        U[        R                  R                  5      (       a  [        R                  " U5      nO#[        U[
        5      (       a  UnO[        U5      nUR                  SS5      R                  SS5      $ )NÚ{ú\{Ú}ú\})rE   rF   ÚnnÚModuleÚtypenamery   r   Úreplace)rJ   rI   Úrets      rM   Ú	_typenameÚFxGraphDrawer._typenameÉ   sa   € Ü˜&¤%§(¡(§/¡/×2Ñ2Ü—n’n VÓ,‘Ü˜F¤C×(Ñ(Ø‘ä)¨&Ó1�ð
 —;‘;˜s EÓ*×2Ñ2°3¸Ó>Ð>rP   Úfull_file_nameÚtruncate_to_last_nc                 ón   • UR                  S5      n[        U5      U:¼  a  SR                  X2* S  5      $ U$ )NÚ/)r|   ro   Újoin)rJ   r�   r‘   Úsplitss       rM   Ú_shorten_file_nameÚ FxGraphDrawer._shorten_file_nameÙ   s?   € ð
 $×)Ñ)¨#Ó.ˆFÜ�6‹{Ð0Ó0Ø—x‘x Ð':Ð';Ð <Ó=Ð=Ø!Ð!rP   c                 ó(  ^• U4S jnSSUR                    SUR                   S3-   nUR                  S:X  a€  U R                  X5      nUSU R                  U5      -   S-   -  nS	n[	        US
5      (       a:  SR                  UR                   V	s/ s H  n	U	 S[        Xy5       3PM     sn	5      nXhS-   -  nOÊUSU R                  UR                  5       3S-   -  nU R                  (       a.   [        UR                  UR                  UR                  SS9u  p«OUR                  UR                  pº[        U
5      S:”  a
  Xe" U
5      -  n[        U5      S:”  a
  Xe" U5      -  nUS[        UR                  5       3S-   -  nUR                   R#                  S5      nX`R%                  U5      -  nUR                   R#                  SS 5      nUb*  USUR                    3S-   -  nUSUR&                   3S-   -  nU(       ab  UR(                  bU  [+        UR(                  5      nU R-                  UR.                  5      nUSU SUR0                   SUR2                   3S-   -  nUS-   $ s  sn	f ! [         a    UR                  UR                  pº GN^f = f)Nc                 óZ  >• [        U [        5      (       a  Su  pU  Vs/ s H  n[        USS9PM     nnOL[        U [        5      (       a6  Su  pU R	                  5        VVs/ s H  u  pVU S[        USS9 3PM     nnnOgT(       a  U Vs/ s H  nSU;  d  M  UPM     nn[        U5      S:X  a  gUS	R                  U5      -   U-   n[        U5      S
:X  a"  UR                  SS5      R                  SS5      nUR                  SS5      R                  SS5      $ s  snf s  snnf s  snf )N)z	|args=(\lz,\n)\lre   )Úmax_list_len)z|kwargs={\lz,\n}\lú: Ú Ú%r   z,\né   z\lú\nr…   r†   r‡   rˆ   )rE   Útupler
   ÚdictÚitemsro   r”   rŒ   )	ÚargÚprefixÚsuffixÚaÚarg_strs_listÚkÚvÚarg_strsr5   s	           €rM   Ú_get_str_for_args_kwargsÚ?FxGraphDrawer._get_node_label.<locals>._get_str_for_args_kwargsê   s*  ø€ Ü˜c¤5×)Ñ)Ø%<‘N�FÙMPÓ$QÊSÈ¤[°ÀÔ%CÉS�MÐ$Q�MÜ ¤T×*Ñ*Ø%>‘N�FàMPÏYÉYÌ[ô%ÚMXÁTÀQ˜1˜#˜R¤¨A¸AÑ >Ð?Ó@É[ð "ñ %�Mð ö +Ù0=Ó$N²¨1ÀÈAÁ§Q±�MÐ$NÜ�}Ó%¨Ó*ØØ! F§K¡K°Ó$>Ñ>ÀÑG�Ü�}Ó%¨Ó*Ø'×/Ñ/°°rÓ:×BÑBÀ5È"ÓM�HØ×'Ñ'¨¨UÓ3×;Ñ;¸CÀÓGÐGùò# %Rùó%ùò %Os   ŸDÁ"D"Â
D(ÂD(r…   zname=%z	|op_code=Ú
r   rŸ   z\n|rœ   Ú__constants__r›   z|target=T)Únormalize_to_only_use_kwargsr   z|num_users=Útensor_metaÚbuf_metaz|buf=z
|n_origin=z|file=Ú:Ú r‡   )r2   rC   rD   rŽ   r}   r”   r®   r   rI   r8   r   ÚargsÚkwargsÚ	Exceptionro   ÚusersÚmetaÚgetÚ_tensor_meta_to_labelÚn_originÚstack_tracer	   r–   ÚfileÚlinenoÚcode)rJ   ru   rK   r5   r6   r«   ÚlabelÚleaf_moduleÚextraÚcr´   rµ   r°   r±   Úparsed_stack_traceÚfnames      `            rM   Ú_get_node_labelÚFxGraphDrawer._get_node_labelã   s¡  ø€ õHð, ˜F 4§9¡9 +¨Y°t·w±w°i¸rÐBÑBˆEà�w‰w˜-Ó'Ø"×1Ñ1°&Ó?�Ø˜ §¡°Ó!<Ñ<¸vÑEÑE�Ø�Ü˜;¨×8Ñ8Ø!ŸJ™Jð &1×%>Ò%>óâ%> ð  !˜c ¤G¨KÓ$;Ð#<Ó=Ù%>ñó�Eð  ™Ñ&‘à˜8 D§N¡N°4·;±;Ó$?Ð#@ÐAÀEÑIÑI�Ø×&×&ð
>Ü'9Ø ŸK™KØ ŸI™IØ ŸK™KØ9=ñ	(™˜˜fð $(§9¡9¨d¯k©k˜&Ü�t“9˜q“=ØÐ5°dÓ;Ñ;�EÜ�v“; “?ØÐ5°fÓ=Ñ=�EØ˜;¤s¨4¯:©:£Ð&7Ð8¸5Ñ@Ñ@�àŸ)™)Ÿ-™-¨Ó6ˆKØ×/Ñ/°Ó<Ñ<ˆEð —y‘y—}‘} Z°Ó6ˆHØÑ#Ø˜5 §¡ Ð0°5Ñ8Ñ8�Ø˜: h×&7Ñ&7Ð%8Ð9¸EÑAÑA�ö ! T×%5Ñ%5Ñ%AÜ%7¸×8HÑ8HÓ%IÐ"Ø×/Ñ/Ð0B×0GÑ0GÓH�ØØ˜U˜G 1Ð%7×%>Ñ%>Ð$?¸qÐAS×AXÑAXÐ@YÐZØññ�ð
 ˜3‘;Ðùòaøô  %ó >ð (,§y¡y°$·+±+›fð>ús   ÂI'Ã.,I, É,!JÊJc                 óÞ  • Uc  g[        U[        5      (       a  U R                  U5      $ [        U[        5      (       a   SnU H  nX R	                  U5      -  nM     U$ [        U[
        5      (       a.  SnUR                  5        H  nX R	                  U5      -  nM     U$ [        U[        5      (       a   SnU H  nX R	                  U5      -  nM     U$ [        S[        U5       35      e)Nrœ   zUnsupported tensor meta type )
rE   r   Ú_stringify_tensor_metaÚlistrº   r¡   Úvaluesr    r~   r{   )rJ   ÚtmÚresultÚitemr©   s        rM   rº   Ú#FxGraphDrawer._tensor_meta_to_label:  sá   € Ø‰zØÜ˜B¤×/Ñ/Ø×2Ñ2°2Ó6Ð6Ü˜B¤×%Ñ%Ø�Û�DØ×8Ñ8¸Ó>Ñ>’Fñ à�Ü˜B¤×%Ñ%Ø�ØŸ™ž�AØ×8Ñ8¸Ó;Ñ;’Fñ %à�Ü˜B¤×&Ñ&Ø�Û�DØ×8Ñ8¸Ó>Ñ>’Fñ à�ä"Ð%BÄ4ÈÃ8À*Ð#MÓNÐNrP   rÌ   c                 óH  • Sn[        US5      (       d  [        SU5        US[        UR                  5      -   S-   -  nUS[        [	        UR
                  5      5      -   S-   -  nUS[        UR                  5      -   S-   -  nUS[        UR                  5      -   S-   -  nUR                  (       Gao  UR                  c  [        S	5      eS
UR                  ;  a  [        S5      eUR                  S
   nU[        R                  [        R                  1;   aC  US[        UR                  S   5      -   S-   -  nUS[        UR                  S   5      -   S-   -  nO¥U[        R                  [        R                  [        R                   1;   ad  US[        UR                  S   5      -   S-   -  nUS[        UR                  S   5      -   S-   -  nUS[        UR                  S   5      -   S-   -  nO[#        SU 35      eUS[        UR                  S
   5      -   S-   -  nU$ )Nrœ   ÚdtyperÌ   z|dtype=rŸ   z|shape=z|requires_grad=z|stride=z$qparams is None for quantized tensorÚqschemezqscheme not in qparamsz	|q_scale=Úscalez|q_zero_point=Ú
zero_pointz|q_per_channel_scale=z|q_per_channel_zero_point=z|q_per_channel_axis=ÚaxiszUnsupported qscheme: z	|qscheme=)r}   Úprintry   rÑ   r    r;   Úrequires_gradÚstrideÚis_quantizedÚqparamsrz   rF   Úper_tensor_affineÚper_tensor_symmetricÚper_channel_affineÚper_channel_symmetricÚ per_channel_affine_float_qparamsr~   )rJ   rÌ   rÍ   rÒ   s       rM   rÉ   Ú$FxGraphDrawer._stringify_tensor_metaQ  sT  € ØˆFÜ˜2˜w×'Ñ'Ü�d˜B”ØÐ)¬C°·±«MÑ9¸EÑAÑAˆFØÐ)¬C´°b·h±h³Ó,@Ñ@À5ÑHÑHˆFØÐ1´C¸×8HÑ8HÓ4IÑIÈEÑQÑQˆFØÐ*¬S°·±«^Ñ;¸eÑCÑCˆFØ��ˆØ—:‘:Ñ%Ü(Ð)OÓPÐPØ B§J¡JÓ.Ü(Ð)AÓBÐBØŸ*™* YÑ/�ØÜ×+Ñ+Ü×.Ñ.ðó ð Ð3´c¸"¿*¹*ÀWÑ:MÓ6NÑNÐQVÑVÑV�FØðô ˜bŸj™j¨Ñ6Ó7ñ8ð  ñ	 ñ‘Fð Ü×,Ñ,Ü×/Ñ/Ü×:Ñ:ð!ó ð
 ðô ˜bŸj™j¨Ñ1Ó2ñ3ð  ñ	 ñ�Fð ðô ˜bŸj™j¨Ñ6Ó7ñ8ð  ñ	 ñ�Fð ðô ˜bŸj™j¨Ñ0Ó1ñ2ð  ñ	 ñ‘Fô 'Ð)>¸w¸iÐ'HÓIÐIØÐ/´#°b·j±jÀÑ6KÓ2LÑLÈuÑTÑT�ØˆMrP   Útc                 óp   • [        UR                  5      [        [        UR                  5      5      -   S-   $ )NrŸ   )ry   rÑ   rÊ   r;   )rJ   rá   s     rM   Ú_get_tensor_labelÚFxGraphDrawer._get_tensor_labelŠ  s'   € Ü�q—w‘w“<¤#¤d¨1¯7©7£mÓ"4Ñ4°uÑ<Ð<rP   c                 óœ  ^ ^^^• [         R                  " USS9m0 nUR                  R                   GHF  mU(       a  TR                  S:X  a  M  T R                  T5      n[         R                  " TR                  4ST R                  UTXV5      0UD6n	Tn
TR                  R                  SS5      nUbH  UR                  S:”  a8  UR                  nXÇ;  a  [         R                  " XÌS9X|'   UR                  U5      n
U
R                  U	5        UUUU 4S	 jnTR                  S
:X  d  M÷  T R                  UT5      mU(       a  GM  [        T[         R"                  R$                  5      (       a  GM?  U" 5         GMI     UR'                  5        H8  nUR)                  SS5        UR)                  SS5        TR+                  U5        M:     UR                  R                   Hi  mU(       a  TR                  S:X  a  M  TR,                   H=  nTR/                  [         R0                  " TR                  UR                  5      5        M?     Mk     T$ )zê
Actual interface to visualize a fx.Graph. Note that it takes in the GraphModule instead of the Graph.
If ignore_parameters_and_buffers is True, the parameters and buffers
created with the module will not be added as nodes and edges.
ÚTB)Úrankdirr   rÀ   r±   Nrž   )rÀ   c            	      óÞ  >• [        TR                  5       TR                  5       5       HÀ  u  pTR                  S-   U -   n[	        U[
        R                  R                  5      (       a  US-   S-   OSn[        R                  " U4SSU-   TR                  U5      -   S-   0[        D6nTR                  U5        TR                  [        R                  " UTR                  5      5        MÂ     g )Nrw   z|op_code=get_Ú	parameterzbuffer\lrÀ   r…   r‡   )r   Únamed_parametersÚnamed_buffersr2   rE   rF   r‰   Ú	Parameterr   ÚNoderã   r>   Úadd_nodeÚadd_edgeÚEdge)	ÚpnameÚptensorÚpname1Úlabel1Ú
dot_w_nodeÚ	dot_graphrÁ   rK   rJ   s	        €€€€rM   Úget_module_params_or_buffersÚ;FxGraphDrawer._to_dot.<locals>.get_module_params_or_buffers¾  sÜ   ø€ Ü*/Ø#×4Ñ4Ó6à#×1Ñ1Ó3ö+™˜ð
 "&§¡¨S¡°5Ñ!8˜ô  *¨'´5·8±8×3EÑ3E×FÑFð # _Ñ4°{ÒBà!1ð ô
 &+§Z¢ZØ"ñ&à"%¨¡,°×1GÑ1GÈÓ1PÑ"PÐSVÑ"Vð&ô /ñ&˜
ð
 "×*Ñ*¨:Ô6Ø!×*Ñ*¬5¯:ª:°f¸d¿i¹iÓ+HÖIò#+rP   r   ÚcolorÚ	royalblueÚpenwidthÚ2)r   ÚDotrA   rB   rC   rs   rí   r2   rÆ   r¸   r¹   r»   ÚClusterrî   rD   rE   rF   rG   rH   rË   ÚsetÚadd_subgraphr·   rï   rð   )rJ   r1   r2   r3   r4   r5   r6   Úbuf_name_to_subgraphr,   Údot_nodeÚcurrent_graphr±   Úbuf_namer÷   ÚsubgraphÚuserrö   rÁ   rK   s   `               @@@rM   r?   ÚFxGraphDrawer._to_dot�  sø  û€ ô  Ÿ	š	 $°Ñ5ˆIà#%Ð à$×*Ñ*×0Õ0�Þ! d§g¡g°Ó&;Ùà×,Ñ,¨TÓ2�Ü Ÿ:š:Ø—I‘Iñà×.Ñ.Ø$ dÐ,Cóðð
 ñ�ð !*�àŸ9™9Ÿ=™=¨°TÓ:�ØÑ'¨H×,=Ñ,=ÀÓ,AØ'Ÿ}™}�HØÓ;Ü9>¿ºØ$ñ:Ð,Ñ6ð %9×$<Ñ$<¸XÓ$F�Mð ×&Ñ& xÔ0÷Jð Jð( —7‘7˜mÕ+Ø"&×"5Ñ"5°lÀDÓ"I�Kç8Ñ8ÄØ#¤U§X¡X×%9Ñ%9÷Bô Bñ 5×6ñk 1ðn 1×7Ñ7Ö9�Ø—‘˜W kÔ2Ø—‘˜Z¨Ô-Ø×&Ñ& xÖ0ñ :ð
 %×*Ñ*×0Ô0�Þ! d§g¡g°Ó&;Ùà ŸJœJ�DØ×&Ñ&¤u§z¢z°$·)±)¸T¿Y¹YÓ'GÖHó 'ñ	 1ð ÐrP   )r@   r=   r7   r8   ©FFTFNFrZ   )é   )$Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rF   rG   rH   ry   Úboolr   rN   r   rý   rW   rS   rT   r¡   ra   rí   rs   r‰   rŠ   rD   r   rŽ   ri   r–   rÆ   rº   r   rÉ   ÚTensorrã   r?   Ú__static_attributes__© rP   rM   r   r   E   s5  † ñ	ð $)Ø27Ø,0Ø&+Ø-1Ø#(ñ-	àŸ(™(×.Ñ.ð-	ð ð-	ð !ð	-	ð
 ,0ð-	ð &*ð-	ð  $ð-	ð & c™]ð-	ð !õ-	ñ^	>°U·Y±Yõ 	>ð:	0¨¯	©	ô 	0ð	C°u·y±yô 	Cð	$¨¨S°%·)±)¨^Ñ(<ô 	$ð	¨¯©¯©ð 	¸$¸sÀC¸x¹.ô 	ð.	ØŸ(™(Ÿ/™/ð	Ø16·±·±ð	à�X‰X�_‰_ô	ð	? Cð 	?¨Cô 	?ð& '(ñ	"àð	"ð !$õ	"ðU	à—H‘H×(Ñ(ðU	ð —(‘(—-‘-ðU	ð &*ð	U	ð
  $ðU	ð ôU	ðn	O¨sô 	Oð.7	¨^ð 7	Àô 7	ðr	= u§|¡|ð 	=¸ô 	=ð
W	àŸ(™(×.Ñ.ðW	ð ðW	ð !ð	W	ð
 ,0ðW	ð &*ðW	ð  $ðW	ð �Y‰Y÷W	rP   c                   ó|   • \ rS rSr      SS\R
                  R                  S\S\S\S\S\S	\	\   S
\4S jjr
Srg)r   ië  Nr1   r2   r3   r4   r5   r6   r7   r8   c	                 ó   • [        S5      e)Nz|FXGraphDrawer requires the pydot package to be installed. Please install pydot through your favorite Python package manager.)r~   )	rJ   r1   r2   r3   r4   r5   r6   r7   r8   s	            rM   rN   rO   í  s   € ô #ðJóð rP   r  r  )r
  r  r  r  rF   rG   rH   ry   r  r   rN   r  r  rP   rM   r   r   ë  s|   † ð (-Ø6;Ø04Ø*/Ø15Ø',ñà#Ÿh™h×2Ñ2ðð ðð !%ð	ð
 04ðð *.ðð $(ðð "*¨#¡ðð !%÷ð rP   )rj   Ú	itertoolsr   Útypesr   Útypingr   r   r   rF   Útorch.fxÚtorch.fx._compatibilityr   Útorch.fx.graphr	   Útorch.fx.noder
   r   Útorch.fx.operator_schemasr   Útorch.fx.passes.shape_propr   r   Ú	HAS_PYDOTÚ__annotations__ÚModuleNotFoundErrorÚ__all__rg   rn   r>   r   r  rP   rM   Ú<module>r"     só   ðô Ý Ý ß /Ñ /ã Û Ý 1Ý -ß :Ý 8Ý 5ö Ûà�Ià�JÑÓðÛàˆ	ð Ð
€ð !Ø"ØØØñ€
ò€ð( ØØñÐ ö á¨%Ñ0÷`ð `ó 1ñ`öF á	¨eÑ	4÷	ð 	ó 
5ñ	ð øð] ó Øˆ	ØŠðús   ÁB- Â-
B:Â9B: