Ë
    òT•j›  ã                   óü   — d Z g d¢ZddlZddlZddlZddlZdd„Zdd„Z	ej                  j                   e_         ej                  j                   e	_          G d„ dej                  «      Zd„ Zd	„ Zed
k(  r e«        yy)zUPython interface for the 'lsprof' profiler.
   Compatible with the 'profile' module.
)ÚrunÚrunctxÚProfileé    Nc                 óV   — t        j                  t        «      j                  | ||«      S ©N)Ú
_pyprofileÚ_Utilsr   r   )Ú	statementÚfilenameÚsorts      ú/usr/lib/python3.12/cProfile.pyr   r      s"   € Ü×ÑœWÓ%×)Ñ)¨)°X¸tÓDÐDó    c                 óZ   — t        j                  t        «      j                  | ||||«      S r   )r   r	   r   r   )r
   ÚglobalsÚlocalsr   r   s        r   r   r      s+   € Ü×ÑœWÓ%×,Ñ,¨Y¸ÀØ-5°tó=ð =r   c                   óH   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zy)r   a`  Profile(timer=None, timeunit=None, subcalls=True, builtins=True)

    Builds a profiler object using the specified timer function.
    The default timer is a fast built-in one based on real time.
    For custom timer functions returning integers, timeunit can
    be a float specifying a scale (i.e. how long each integer unit
    is, in seconds).
    c                 ó„   — dd l }|j                  | «      j                  «       j                  |«      j	                  «        y ©Nr   )ÚpstatsÚStatsÚ
strip_dirsÚ
sort_statsÚprint_stats)Úselfr   r   s      r   r   zProfile.print_stats*   s.   € ÛØ�‰�TÓ×%Ñ%Ó'×2Ñ2°4Ó8×DÑDÕFr   c                 ó¦   — dd l }t        |d«      5 }| j                  «        |j                  | j                  |«       d d d «       y # 1 sw Y   y xY w)Nr   Úwb)ÚmarshalÚopenÚcreate_statsÚdumpÚstats)r   Úfiler   Úfs       r   Ú
dump_statszProfile.dump_stats.   sD   € ÛÜ�$˜Óð 	( Ø×ÑÔØ�L‰L˜Ÿ™ QÔ'÷	(÷ 	(ñ 	(ús   ‘-AÁAc                 óD   — | j                  «        | j                  «        y r   )ÚdisableÚsnapshot_stats©r   s    r   r   zProfile.create_stats4   s   € Ø�‰ŒØ×ÑÕr   c                 ó¾  — | j                  «       }i | _        i }|D ]x  }t        |j                  «      }|j                  }||j
                  z
  }|j                  }|j                  }i }	|	|t        |j                  «      <   |||||	f| j                  |<   Œz |D ]³  }|j                  sŒt        |j                  «      }|j                  D ]€  }
	 |t        |
j                  «         }	|
j                  }||
j
                  z
  }|
j                  }|
j                  }||	v r%|	|   }||d   z  }||d   z  }||d   z  }||d   z  }||||f|	|<   Œ‚ Œµ y # t        $ r Y Œ‘w xY w)Nr   é   é   é   )Úgetstatsr!   ÚlabelÚcodeÚ	callcountÚreccallcountÚ
inlinetimeÚ	totaltimeÚidÚcallsÚKeyError)r   ÚentriesÚcallersdictsÚentryÚfuncÚncÚccÚttÚctÚcallersÚsubentryÚprevs               r   r'   zProfile.snapshot_stats8   s€  € Ø—-‘-“/ˆØˆŒ
Øˆàò 	7ˆEÜ˜Ÿ™Ó$ˆDØ—‘ˆBØ�e×(Ñ(Ñ(ˆBØ×!Ñ!ˆBØ—‘ˆBØˆGØ+2ˆLœ˜EŸJ™J›Ñ(Ø! 2 r¨2¨wÐ6ˆD�J‰J�tÒð	7ð ò 	3ˆEØ�{‹{Ü˜UŸZ™ZÓ(�Ø %§¡ò 3�Hð!Ø".¬r°(·-±-Ó/@Ñ"A˜ð "×+Ñ+�BØ˜h×3Ñ3Ñ3�BØ!×,Ñ,�BØ!×+Ñ+�BØ˜w‘Ø& t™}˜Ø˜d 1™g™˜Ø˜d 1™g™˜Ø˜d 1™g™˜Ø˜d 1™g™˜Ø$&¨¨B° N�G˜D’Mñ3ñ	3øô $ò !Ù ð!ús   ÃEÅ	EÅEc                 óH   — dd l }|j                  }| j                  |||«      S r   )Ú__main__Ú__dict__r   )r   ÚcmdrC   Údicts       r   r   zProfile.run^   s#   € ÛØ× Ñ ˆØ�{‰{˜3  dÓ+Ð+r   c                 óŒ   — | j                  «        	 t        |||«       | j                  «        | S # | j                  «        w xY wr   )ÚenableÚexecr&   )r   rE   r   r   s       r   r   zProfile.runctxc   s7   € Ø�‰Œð	Ü��g˜vÔ&à�L‰LŒNØˆøð �L‰L�Nús	   ’1 ±Ac                ó~   — | j                  «        	  ||i |¤Ž| j                  «        S # | j                  «        w xY wr   )rH   r&   )r   r:   ÚargsÚkws       r   ÚruncallzProfile.runcalll   s0   € Ø�‰Œð	Ù˜Ð$ Ñ$à�L‰L�NøˆD�L‰L�Nús   ’* ª<c                 ó&   — | j                  «        | S r   )rH   r(   s    r   Ú	__enter__zProfile.__enter__s   s   € Ø�‰ŒØˆr   c                 ó$   — | j                  «        y r   )r&   )r   Úexc_infos     r   Ú__exit__zProfile.__exit__w   s   € Ø�‰�r   N)éÿÿÿÿ)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r$   r   r'   r   r   rM   rO   rR   © r   r   r   r      s6   „ ñóGò(òò!3òL,ò
òòór   r   c                 ór   — t        | t        «      rdd| fS | j                  | j                  | j                  fS )Nú~r   )Ú
isinstanceÚstrÚco_filenameÚco_firstlinenoÚco_name)r/   s    r   r.   r.   |   s5   € Ü�$œÔØ�Q˜ˆ~Ðà× Ñ  $×"5Ñ"5°t·|±|ÐDÐDr   c            
      óÜ  — dd l } dd l}dd l}dd l}ddlm} d} ||¬«      }d|_        |j                  dddd	d ¬
«       |j                  dddddt        |j                  j                  «      ¬«       |j                  ddddd¬«       |j                  dd  s!|j                  «        |j                  d«       |j                  «       \  }}||j                  d d  |j                  �*| j                   j#                  |j                  «      |_        t%        |«      dkD  rø|j&                  rd}	|j(                  |d   dœ}
n±|d   }|j                   j+                  d| j                   j-                  |«      «       t/        j0                  |«      5 }t3        |j5                  «       |d«      }	d d d «       t6        j8                  j;                  dd |¬«      }||j<                  |j>                  d d dœ}
	 tA        	|
d |j                  |jB                  «       |S |j                  «        |S # 1 sw Y   ŒxY w# tD        $ r-}d |_#        |j                  |jH                  «       Y d }~|S d }~ww xY w)Nr   )ÚOptionParserzNcProfile.py [-o output_file_path] [-s sort] [-m module | scriptfile] [arg] ...)ÚusageFz-oz	--outfileÚoutfilezSave stats to <outfile>)ÚdestÚhelpÚdefaultz-sz--sortr   z?Sort order when printing to stdout, based on pstats.Stats classr+   )rd   re   rf   Úchoicesz-mÚmoduleÚ
store_truezProfile a library module)rd   Úactionre   rf   r*   z(run_module(modname, run_name='__main__'))Ú
run_moduleÚmodnamerI   rC   )ÚnameÚloaderÚorigin)Ú__spec__Ú__file__rT   Ú__package__Ú
__cached__)%ÚosÚsysÚrunpyr   Úoptparsera   Úallow_interspersed_argsÚ
add_optionÚsortedr   Úsort_arg_dict_defaultÚargvÚprint_usageÚexitÚ
parse_argsrc   ÚpathÚabspathÚlenrh   rk   ÚinsertÚdirnameÚioÚ	open_codeÚcompileÚreadÚ	importlibÚ	machineryÚ
ModuleSpecro   rm   r   r   ÚBrokenPipeErrorÚstdoutÚerrno)rt   ru   rv   r   ra   rb   ÚparserÚoptionsrK   r/   ÚglobsÚprognameÚfpÚspecÚexcs                  r   Úmainr–   „   s;  € ÛÛÛÛÝ%Ø\€EÙ Ô&€FØ%*€FÔ"Ø
×Ñ�d˜K¨iØ&°ð ô 6à
×Ñ�d˜H¨6ØNØÜ�v—|‘|×9Ñ9Ó:ð ô <ð ×Ñ�d °,Ø'°ð ô 8ð �8‰8�A�B‰<Ø×ÑÔØ�‰�Œà×'Ñ'Ó)�O€WˆdØ€C‡H�H‰Q€Kð ‡�Ð"ØŸ'™'Ÿ/™/¨'¯/©/Ó:ˆŒä
ˆ4ƒy�1‚}Ø�>Š>Ø=ˆDà#×.Ñ.Ø ™7ñ‰Eð
 ˜A‘wˆHØ�H‰H�O‰O˜A˜rŸw™wŸ™¨xÓ8Ô9Ü—‘˜hÓ'ð <¨2Ü˜rŸw™w›y¨(°FÓ;�÷<ä×&Ñ&×1Ñ1°zÈ$Ø9Að 2ó CˆDð !Ø ŸK™KØ ŸI™IØ#Ø"ñˆEð	 Ü�4˜  g§o¡o°w·|±|ÔDð €Mð 	×ÑÔØ€M÷'<ð <ûô ò 	 àˆCŒJØ�H‰H�S—Y‘Y×Ðð €Mûð	 ús$   ÆH)Ç2#H5 È)H2È5	I+È>"I&É&I+rC   )NrS   )rW   Ú__all__Ú_lsprofÚimportlib.machineryr‰   r…   Úprofiler   r   r   ÚProfilerr   r.   r–   rT   rX   r   r   ú<module>rœ      sƒ   ðñò '€ã Û Û 	Û ó
Eó=ð �n‰n×$Ñ$€„Ø×"Ñ"×*Ñ*€„ô[ˆg×Ñô [ò~Eò;ð| ˆzÒÙ…Fð r   