Ë
    ÿÍ:j~  ã                   ó¶   — d Z ddlZddlZddlZddlmZmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZmZmZmZmZ ddlmZ  ej*                  e«      Z G d	„ d
e«      Zy)z<Profiler to check if there are any bottlenecks in your code.é    N)ÚABCÚabstractmethod)Ú	Generator)Úcontextmanager)ÚPath)ÚAnyÚCallableÚOptionalÚTextIOÚUnion)Úget_filesystemc            	       óR  — e Zd ZdZ	 	 ddeeeef      dee   ddfd„Ze	deddfd„«       Z
e	deddfd	„«       Zdefd
„Zededefd„«       Zdededdfd„Z	 	 ddee   dedefd„Zdd„Zdd„Zdeeef   defd„Zddedee   dee   ddfd„Zdee   ddfd„Zdd„Zedefd„«       Zy)ÚProfilerzKIf you wish to write a custom profiler, you should inherit from this class.NÚdirpathÚfilenameÚreturnc                 óX   — || _         || _        d | _        d | _        d | _        d | _        y )N)r   r   Ú_output_fileÚ_write_streamÚ_local_rankÚ_stage)Úselfr   r   s      úy/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/pytorch_lightning/profilers/profiler.pyÚ__init__zProfiler.__init__!   s1   € ð
 ˆŒØ ˆŒà.2ˆÔØ15ˆÔØ*.ˆÔØ%)ˆ�ó    Úaction_namec                  ó   — y)z)Defines how to start recording an action.N© ©r   r   s     r   ÚstartzProfiler.start.   ó   � r   c                  ó   — y)z>Defines how to record the duration once an action is complete.Nr   r   s     r   ÚstopzProfiler.stop2   r!   r   c                  ó   — y)NÚ r   ©r   s    r   ÚsummaryzProfiler.summary6   s   € Ør   c              #   ó†   K  — 	 | j                  |«       |–— | j                  |«       y# | j                  |«       w xY w­w)aG  Yields a context manager to encapsulate the scope of a profiled action.

        Example::

            with self.profile('load training data'):
                # load training data code

        The profiler will start once you've entered the context and will automatically
        stop once you exit the code block.

        N)r    r#   r   s     r   ÚprofilezProfiler.profile9   s5   è ø€ ð	#Ø�J‰J�{Ô#ØÒà�I‰I�kÕ"øˆD�I‰I�kÕ"üs   ‚A„+ ™A«>¾AÚargsÚkwargsc                 óL   — | j                   dv rt        j                  |i |¤Ž y y )N©Nr   )r   ÚlogÚinfo)r   r*   r+   s      r   Ú_rank_zero_infozProfiler._rank_zero_infoL   s&   € Ø×Ñ˜yÑ(Ü�H‰H�dÐ%˜fÓ%ð )r   Ú	extensionc                 óØ  — g }| j                   �|j                  | j                   «       | j                  r|j                  | j                  «       | j                  �$|j                  t	        | j                  «      «       |�|j                  |«       dj                  |«      }t        j                  dd|«      }t        j                  dd|«      }|j                  «       }|sd}||z   S )Nú-z[\\/:*?\"<>|\n\r\t]Ú_z_+r)   )	r   Úappendr   r   ÚstrÚjoinÚreÚsubÚstrip)r   r   r1   r*   Úbases        r   Ú_prepare_filenamezProfiler._prepare_filenameP   s¿   € ð
 ˆØ�;‰;Ð"Ø�K‰K˜Ÿ™Ô$Ø�=Š=Ø�K‰K˜Ÿ™Ô&Ø×ÑÐ'Ø�K‰Kœ˜D×,Ñ,Ó-Ô.ØÐ"Ø�K‰K˜Ô$Ø�x‰x˜‹~ˆä�v‰vÐ,¨c°4Ó8ˆÜ�v‰v�e˜S $Ó'ˆØ�z‰z‹|ˆÙØˆDØ�iÑÐr   c                 ó†  — | j                   �y | j                  r—| j                  r‹t        j                  j                  | j                  | j                  «       «      }t        |«      }|j                  | j                  d¬«       |j                  |d«      }|| _
        |j                  | _         y | j                  | _         y )NT)Úexist_okÚa)r   r   r   ÚosÚpathr7   r<   r   ÚmkdirsÚopenr   Úwriter0   )r   ÚfilepathÚfsÚfiles       r   Ú_prepare_streamszProfiler._prepare_streamsg   s�   € Ø×ÑÐ)ØØ�=Š=˜TŸ\š\Ü—w‘w—|‘| D§L¡L°$×2HÑ2HÓ2JÓKˆHÜ Ó)ˆBØ�I‰I�d—l‘l¨TˆIÔ2Ø—7‘7˜8 SÓ)ˆDØ $ˆDÔØ!%§¡ˆDÕà!%×!5Ñ!5ˆDÕr   c                 ó  — | j                  «        | j                  «       }|r| j                  �| j                  |«       | j                  �| j                  j	                  «        | j                  | j                  ¬«       y)z2Logs a profile report after the conclusion of run.N©Ústage)rH   r'   r   r   ÚflushÚteardownr   )r   r'   s     r   ÚdescribezProfiler.describet   sg   € ð
 	×ÑÔØ—,‘,“.ˆÙ�t×)Ñ)Ð5Ø×Ñ˜wÔ'Ø×ÑÐ(Ø×Ñ×#Ñ#Ô%Ø�‰˜DŸK™KˆÕ(r   Ústatsc                 ó\  — | j                   �| j                   j                  «       › d�nd}|dz   g}|j                  «       D ]J  \  }}d|› �}| j                  �|d| j                  › �z  }|j	                  |«       |j	                  |«       ŒL t
        j                  j                  |«      S )Nú r%   zProfiler ReportzProfile stats for: z rank: )r   ÚupperÚitemsr   r5   r@   Úlinesepr7   )r   rO   rK   ÚoutputÚactionÚvalueÚheaders          r   Ú_stats_to_strzProfiler._stats_to_str�   s«   € Ø-1¯[©[Ð-D�4—;‘;×$Ñ$Ó&Ð' qÑ)È"ˆØÐ+Ñ+Ð,ˆØ"Ÿ[™[›]ò 	!‰MˆF�EØ*¨6¨(Ð3ˆFØ×ÑÐ+Ø˜G D×$4Ñ$4Ð#5Ð6Ñ6�Ø�M‰M˜&Ô!Ø�M‰M˜%Õ ð	!ô �z‰z�‰˜vÓ&Ð&r   rK   Ú
local_rankÚlog_dirc                 óJ   — || _         || _        | j                  xs || _        y)z-Execute arbitrary pre-profiling set-up steps.N)r   r   r   )r   rK   rZ   r[   s       r   ÚsetupzProfiler.setupŒ   s!   € àˆŒØ%ˆÔØ—|‘|Ò. wˆ�r   c                 ón   — d| _         | j                  �"| j                  j                  «        d| _        yy)zoExecute arbitrary post-profiling tear-down steps.

        Closes the currently open file and stream.

        N)r   r   Úclose)r   rK   s     r   rM   zProfiler.teardown’   s7   € ð "ˆÔØ×ÑÐ(Ø×Ñ×#Ñ#Ô%Ø $ˆDÕð )r   c                 ó<   — | j                  | j                  ¬«       y )NrJ   )rM   r   r&   s    r   Ú__del__zProfiler.__del__�   s   € Ø�‰˜DŸK™KˆÕ(r   c                 ó6   — | j                   €dS | j                   S r-   )r   r&   s    r   rZ   zProfiler.local_rank    s   € à×$Ñ$Ð,ˆqÐB°$×2BÑ2BÐBr   )NN)Nz.txt)r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r
   r   r6   r   r   r   r    r#   r'   r   r   r)   r   r0   r<   rH   rN   ÚdictrY   Úintr]   rM   ra   ÚpropertyrZ   r   r   r   r   r      s‡  „ ÙUð /3Ø"&ñ*à˜%  T 	Ñ*Ñ+ð*ð ˜3‘-ð*ð 
ó	*ð ð8 ð 8¨ò 8ó ð8ð ðM ð M¨ò Mó ðMð˜ó ð ð# 3ð #¨9ò #ó ð#ð$& Sð &°Cð &¸Dó &ð &*Øñ à˜c‘]ð ð ð ð 
ó	 ó.6ó)ð	' 4¨¨S¨¡>ð 	'°có 	'ñ/˜3ð /¨H°S©Mð /È8ÐTWÉ=ð /Ðdhó /ð	%˜h s™mð 	%°ó 	%ó)ð ðC˜Cò Có ñCr   r   )rf   Úloggingr@   r8   Úabcr   r   Úcollections.abcr   Ú
contextlibr   Úpathlibr   Útypingr   r	   r
   r   r   Ú#lightning_fabric.utilities.cloud_ior   Ú	getLoggerrc   r.   r   r   r   r   ú<module>rr      sK   ðñ Cã Û 	Û 	ß #Ý %Ý %Ý ß 9Õ 9å >à€g×Ñ˜Ó!€ôDCˆsõ DCr   