ó
    ÊÙ¢j2  ã                   óÊ   • S r SSKrSSKrSSKrSSK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  SSKJr  SS	KJr  \R,                  " \5      r " S
 S\5      rg)z<Profiler to check if there are any bottlenecks in your code.é    N)Údefaultdict)ÚPath)ÚOptionalÚUnion)Úoverride)Úget_filesystem)ÚProfiler)Úrank_zero_onlyc                   ó  ^ • \ rS rSrSr    SS\\\\4      S\\   S\	S\
SS4
U 4S	 jjjr\S
\SS4S j5       r\S
\SS4S j5       rS
\S\R                   SS4S jr\S\4S j5       r\S\\   SS4U 4S jj5       rS\4S jrSrU =r$ )ÚAdvancedProfileré#   zïThis profiler uses Python's cProfiler to record more detailed information about time spent in each function call
recorded during a given action.

The output is quite verbose and you should only use this if you want very detailed reports.

NÚdirpathÚfilenameÚline_count_restrictionÚ
dump_statsÚreturnc                 ót   >• [         TU ]  XS9  [        [        R                  5      U l        X0l        X@l        g)ac  
Args:
    dirpath: Directory path for the ``filename``. If ``dirpath`` is ``None`` but ``filename`` is present, the
        ``trainer.log_dir`` (from :class:`~pytorch_lightning.loggers.tensorboard.TensorBoardLogger`)
        will be used.

    filename: If present, filename where the profiler results will be saved instead of printing to stdout.
        The ``.txt`` extension will be used automatically.

    line_count_restriction: this can be used to limit the number of functions
        reported for each action. either an integer (to select a count of lines),
        or a decimal fraction between 0.0 and 1.0 inclusive (to select a percentage of lines)

    dump_stats: Whether to save raw profiler results. When ``True`` then ``dirpath`` must be provided.

Raises:
    ValueError:
        If you attempt to stop recording an action which was never started.
)r   r   N)ÚsuperÚ__init__r   ÚcProfileÚProfileÚprofiled_actionsr   r   )Úselfr   r   r   r   Ú	__class__s        €Ú²C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\pytorch_lightning/profilers/advanced.pyr   ÚAdvancedProfiler.__init__+   s3   ø€ ô4 	‰Ñ ÐÑ<Ü=HÌ×IYÑIYÓ=ZˆÔØ&<Ô#Ø$�ó    Úaction_namec                 ó    • U R                   R                  5        H  nUR                  5         M     U R                   U   R                  5         g )N)r   ÚvaluesÚdisableÚenable©r   r   Úprs      r   ÚstartÚAdvancedProfiler.startJ   s=   € ð ×'Ñ'×.Ñ.Ö0ˆBØ�J‰JŽLñ 1à×Ñ˜kÑ*×1Ñ1Õ3r   c                 ó~   • U R                   R                  U5      nUc  [        SU S35      eUR                  5         g )Nz(Attempting to stop recording an action (z) which was never started.)r   ÚgetÚ
ValueErrorr!   r#   s      r   ÚstopÚAdvancedProfiler.stopQ   s<   € à×"Ñ"×&Ñ& {Ó3ˆØ‰:ÜÐGÈÀ}ÐTnÐoÓpÐpØ
�
‰
�r   Úprofilec                 óþ  • U R                   (       d   e[        R                  R                  U R                   U R	                  USS95      n[        U5      nUR                  U R                   SS9  [        R                  " S[        [        R                  5      [        R                  " 5       S9 nUR                  US5       n[        R                  R                  US5      nUR                  U5        [        U5      nUR                  US	5       n	UR                  U	R!                  5       5        S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)
Nz.prof)r   Ú	extensionT)Úexist_okÚtest)ÚprefixÚsuffixÚdirÚwbztmp.profÚrb)r   ÚosÚpathÚjoinÚ_prepare_filenamer   ÚmkdirsÚtempfileÚTemporaryDirectoryÚstrr
   ÚrankÚgetcwdÚopenr   ÚwriteÚread)
r   r   r,   Údst_filepathÚdst_fsÚtmp_dirÚdst_fileÚsrc_filepathÚsrc_fsÚsrc_files
             r   Ú_dump_statsÚAdvancedProfiler._dump_statsX   s  € Ø�|�|Ðˆ|Ü—w‘w—|‘| D§L¡L°$×2HÑ2HÐU`ÐlsÐ2HÐ2tÓuˆÜ Ó-ˆØ�‰�d—l‘l¨TˆÑ2ô ×'Ò'¨v¼cÄ.×BUÑBUÓ>VÔ\^×\eÒ\eÓ\gÒhÐlsØ�K‰K˜ dÔ+¨xäŸ7™7Ÿ<™<¨°Ó<ˆLØ×Ñ˜|Ô,Ü# LÓ1ˆFØ—‘˜\¨4Ô0°HØ—‘˜xŸ}™}›Ô/÷ 1÷ ,÷ iÐh÷ 1Õ0ú÷ ,Õ+ú÷ iÕhús=   Â1E.ÃAEÄ EÄ3EÄ;E.Å
EÅEÅ
E+	Å'E.Å.
E<c                 ó˜  • 0 nU R                   R                  5        Hš  u  p#U R                  (       a  U R                  X#5        [        R
                  " 5       n[        R                  " X4S9R                  5       R                  S5      nUR                  U R                  5        UR                  5       X'   Mœ     U R                  U5      $ )N)ÚstreamÚ
cumulative)r   Úitemsr   rJ   ÚioÚStringIOÚpstatsÚStatsÚ
strip_dirsÚ
sort_statsÚprint_statsr   ÚgetvalueÚ_stats_to_str)r   Úrecorded_statsr   r$   ÚsÚpss         r   ÚsummaryÚAdvancedProfiler.summaryh   s—   € àˆØ#×4Ñ4×:Ñ:Ö<‰OˆKØ��Ø× Ñ  Ô1Ü—’“ˆAÜ—’˜bÑ+×6Ñ6Ó8×CÑCÀLÓQˆBØ�N‰N˜4×6Ñ6Ô7Ø*+¯*©*«,ˆNÓ'ñ  =ð ×!Ñ! .Ó1Ð1r   Ústagec                 óT   >• [         TU ]  US9  U R                  R                  5         g )N)r^   )r   Úteardownr   Úclear)r   r^   r   s     €r   r`   ÚAdvancedProfiler.teardownt   s%   ø€ ä‰Ñ˜uÐÑ%Ø×Ñ×#Ñ#Õ%r   c                 ód   • U R                   SU R                  U R                  U R                  S.4$ )N© )r   r   r   )r   r   r   r   )r   s    r   Ú
__reduce__ÚAdvancedProfiler.__reduce__y   s1   € ð �N‰NØØŸ™°$·-±-Ð[_×[vÑ[vÑwð
ð 	
r   )r   r   r   )NNg      ð?F)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r=   r   ÚfloatÚboolr   r   r%   r*   r   r   rJ   r\   r`   Útuplere   Ú__static_attributes__Ú__classcell__)r   s   @r   r   r   #   s  ø† ñð /3Ø"&Ø(+Ø ñ%à˜%  T 	Ñ*Ñ+ð%ð ˜3‘-ð%ð !&ð	%ð
 ð%ð 
÷%ð %ð> ð4 ð 4¨ó 4ó ð4ð ð ð ¨ó ó ðð0 sð 0°X×5EÑ5Eð 0È$ô 0ð  ð	2˜ó 	2ó ð	2ð ð&˜h s™mð &°ö &ó ð&ð
˜E÷ 
ò 
r   r   )rk   r   rP   Úloggingr6   rR   r;   Úcollectionsr   Úpathlibr   Útypingr   r   Útyping_extensionsr   Ú#lightning_fabric.utilities.cloud_ior   Ú$pytorch_lightning.profilers.profilerr	   Ú%pytorch_lightning.utilities.rank_zeror
   Ú	getLoggerrg   Úlogr   rd   r   r   Ú<module>r{      sP   ðñ Cã Û 	Û Û 	Û Û Ý #Ý ß "å &å >Ý 9Ý @à×Ò˜Ó!€ô\
�xõ \
r   