
    IЦif                        S SK r S SKrS SKrS SKJr  S SKJrJrJrJ	r	J
r
  S SKJr  S SKJr   SS\S\	\   S\
\\   \\	\   4   4S	 jjrS
\\   S\\   4S jr " S S\5      r\R(                  " SS9S 5       rS r " S S\5      rS rg)    N)dedent)AnyList
NamedTupleOptionalTuple)ErrorReport)SourceRangeFactoryobj	error_msgreturnc                     Sn [         R                  " U 5      n[         R                  " U 5      u  p4X4U4$ ! [         a&  nSU  S3nU(       a  USU-   -  n[        U5      UeSnAff = f)zo
Wrapper around inspect.getsourcelines and inspect.getsourcefile.

Returns: (sourcelines, file_lino, filename)
NzCan't get source for zs. TorchScript requires source access in order to carry out compilation, make sure original .py files are available.
)inspectgetsourcefilegetsourcelinesOSError)r   r   filenamesourcelinesfile_linenoemsgs          M/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/torch/_sources.pyget_source_lines_and_filer      s     H"((-#*#9#9##>  X--  "#C5 )  	
 4)##Ccl!"s   .6 
A& !A!!A&r   c                 t   S nSn[        U 5       H-  u  p4UR                  5       R                  S5      (       d  M+  Un  O   Uc  U $ X   nUR                  S5      S   nU SU  Vs/ s H  ovU" Xv5      -   PM     nnXS-   S  Vs/ s H  ovU" Xv5      -   PM     n	nUR	                  U5        X-   $ s  snf s  snf )a   
    This helper function accepts a list of source lines. It finds the
    indentation level of the function definition (`def`), then it indents
    all lines in the function body to a point at or greater than that
    level. This allows for comments and continued string literals that
    are at a lower indentation than the rest of the code.
    Args:
        sourcelines: function source code, separated into lines by
                        the '
' character
    Returns:
        A list of source lines that have been correctly aligned
    c                 L    X R                  U5      =(       a    [        U5      S  $ N)
startswithlen)textprefixs     r   remove_prefix-normalize_source_lines.<locals>.remove_prefix4   s     OOF+;F=>>    Ndefr      )	enumeratelstripr   splitappend)
r   r"   idxilfn_def
whitespacesaligned_prefixaligned_suffixs
             r   normalize_source_linesr3   &   s    ? C+&88:  ''C ' { Fe$Q'J <Gt;L;La]111;L   <GQwy;Q;Qa]111;Q  
 &!**s   &B0B5c                   0   ^  \ rS rSr  SU 4S jjrSrU =r$ )SourceContextW   c                 J   > [         TU ]  XX45        XPl        X l        X`l        g r   )super__init__uses_true_divisionr   funcname)selfsourcer   r   leading_whitespace_lenr:   r;   	__class__s          r   r9   SourceContext.__init__X   s$     	;O"4  r$   )r   r;   r:   )TN)__name__
__module____qualname____firstlineno__r9   __static_attributes____classcell__)r?   s   @r   r5   r5   W   s      ! !r$   r5   )maxsizec                      [        U 6 $ r   )r5   )argss    r   make_source_contextrJ   g   s    $r$   c                  >    [        SS SS5      R                  SS5      $ )N r   r&   )r5   make_raw_range r$   r   
fake_rangerO   l   s     T1a(771==r$   c                   b    \ rS rSr% \R
                  \S'   \\S'   \\S'   \	\   \S'   \
\S'   Srg)		ParsedDefp   astctxr=   r   r   rN   N)rA   rB   rC   rD   rS   Module__annotations__r5   strr   intrE   rN   r$   r   rQ   rQ   p   s&    	O	Ksmr$   rQ   c                 0   [        U [        R                  " 5       5      u  pn[        U5      nSR	                  U5      n[        U5      n[        R                  " U5      n[        UR                  5      S:w  d,  [        UR                  S   [        R                  5      (       d  [        SU SU 35      e[        UR                  SS5      S   5      [        UR                  SS5      S   5      -
  n[        XCX'SU R                  5      n[!        XhXCU5      $ )NrL   r&   r   z&Expected a single top-level function: :r   T)r   r	   
call_stackr3   joinr   rS   parser   body
isinstanceFunctionDefRuntimeErrorr)   rJ   rA   rQ   )	fnr   r   r   r=   
dedent_srcpy_astr>   rT   s	            r   	parse_defre   x   s    )B
K""$*&Kh )5KWW[!FJYYz"F
6;;1Jv{{1~s$O$O4XJa}M
 	
 !dA!6q!9:Sq!!$>  +tR[[C V&K@@r$   r   )rS   	functoolsr   textwrapr   typingr   r   r   r   r   torch._Cr	   torch._C._jit_tree_viewsr
   rW   rX   r   r3   r5   	lru_cacherJ   rO   rQ   re   rN   r$   r   <module>rl      s    
    9 9   7
  $.	.}. 49c8C=().4,+S	 ,+d3i ,+b!& !  T"  # >
 Ar$   