Ë
    g^(hô	  ã                   ór   — U d Z ddlZddlmZ i Zeeeeef   f   ed<   dd„Z	deddfd„Z
ded	edee   fd
„Zy)a  
This module provides functionality for caching and looking up fully qualified function
and class names from Python source files by line number.

It uses Python's tokenize module to parse source files and tracks function/class
definitions along with their nesting to build fully qualified names (e.g. 'class.method'
or 'module.function'). The results are cached in a two-level dictionary mapping:

    filename -> (line_number -> fully_qualified_name)

Example usage:
    name = get_funcname("myfile.py", 42)  # Returns name of function/class at line 42
    clearcache()  # Clear the cache if file contents have changed

The parsing is done lazily when a file is first accessed. Invalid Python files or
IO errors are handled gracefully by returning empty cache entries.
é    N)ÚOptionalÚcacheÚreturnc                  ó,   — t         j                  «        y ©N)r   Úclear© ó    úZ/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/_dynamo/funcname_cache.pyÚ
clearcacher      s   € Ü	‡K�K…Mr
   Úfilenamec                 óŒ  — 	 t        j                  | «      5 }t        t        j                  |j                  «      «      }d d d «       i }d}d}g }t        «      D �](  \  }}|j                  t         j                  k(  r|dz  }ní|j                  t         j                  k(  r4|dz  }|rÉ||d   k(  rÁ|j                  «        |j                  d«      d   }nœ|j                  t         j                  k(  r|dz   t        |«      k  rn||dz      j                  t         j                  k(  rK|j                   dk(  s|j                   dk(  r-|j#                  |«       |r|dz  }|||dz      j                   z  }|||j$                  d   <   �Œ+ |t        | <   y # 1 sw Y   �ŒSxY w# t
        t         j                  f$ r i t        | <   Y y w xY w)NÚ r   é   éÿÿÿÿú.ÚclassÚdef)ÚtokenizeÚopenÚlistÚgenerate_tokensÚreadlineÚOSErrorÚ
TokenErrorr   Ú	enumerateÚtypeÚINDENTÚDEDENTÚpopÚ
rpartitionÚNAMEÚlenÚstringÚappendÚstart)	r   ÚfÚtokensÚresultÚcur_nameÚ
cur_indentÚsignificant_indentsÚiÚtokens	            r   Ú	_add_filer/      s¡  € ðÜ�]‰]˜8Ó$ð 	@¨Üœ(×2Ñ2°1·:±:Ó>Ó?ˆF÷	@ð  €Fà€HØ€JØ%'Ðä˜fÓ%ó *‰ˆˆ5Ø�:‰:œŸ™Ò(Ø˜!‰O‰JØ�Z‰Zœ8Ÿ?™?Ò*Ø˜!‰OˆJá" zÐ5HÈÑ5LÒ'LØ#×'Ñ'Ô)à#×.Ñ.¨sÓ3°AÑ6‘à�J‰Jœ(Ÿ-™-Ò'Ø�A‘œ˜F›Ò#Ø�q˜1‘u‘×"Ñ"¤h§m¡mÒ3Ø—‘ Ò(¨E¯L©L¸EÒ,Að  ×&Ñ& zÔ2ÙØ˜C‘�Ø˜˜q 1™u™×,Ñ,Ñ,ˆHØ!)ˆˆu�{‰{˜1‰~Óð+*ð. „Eˆ(‚O÷K	@ñ 	@ûä”X×(Ñ(Ð)ò ØŒˆh‰Ùðús(   ‚F —)FÁ F ÆFÆF Æ"GÇGÚlinenoc                 óZ   — | t         vrt        | «       t         |    j                  |d «      S r   )r   r/   Úget)r   r0   s     r   Úget_funcnamer3   H   s)   € Ø”uÑÜ�(ÔÜ�‰?×Ñ˜v tÓ,Ð,r
   )r   N)Ú__doc__r   Útypingr   r   ÚdictÚstrÚintÚ__annotations__r   r/   r3   r	   r
   r   ú<module>r:      sg   ðòó$ Ý ð $&€€tˆC��c˜3�h‘ÐÑ Ó %óð'˜ð ' ó 'ðT-˜3ð -¨ð -°¸±ô -r
   