o
    Pj&                     @   s   d dl Z d dlmZmZmZmZmZmZmZ d dl	m
Z
 d dlmZ d dlmZmZmZ d dlmZ d dlmZmZ G dd	 d	eZdS )
    N)AnyDictLiteralOptionalPatternUnioncast)TracingGroupLocation)Artifact)ChannelOwnerfrom_channelfrom_nullable_channel)DisposableStub)Errorlocals_to_paramsc                       s  e Zd Zdededededdf
 fddZ						d;d	ed
edededededdfddZd<d
ed	eddfddZ	deddfddZ
d=deejef ddfddZd=deejef ddfddZd=deejef ddfddZd>ddZ	d=d	ed edefd!d"Zd>d#d$Z			d?deejef d%ed& d'ed( d)eeee f def
d*d+Z				d@d,eejef d-ee d.eeee f d/ed& d0ed( d1ee defd2d3Zd>d4d5Zd>d6d7Zd8eddfd9d:Z  ZS )ATracingparenttypeguidinitializerreturnNc                    s@   t  |||| d| _d| _d | _d| _d | _d | _i | _d S NF)	super__init___include_sources_is_live
_stacks_id_is_tracing_traces_dir_har_id_har_recorders)selfr   r   r   r   	__class__ N/home/thesage/.local/lib/python3.10/site-packages/playwright/_impl/_tracing.pyr      s   
zTracing.__init__nametitle	snapshotsscreenshotssourceslivec           	   	      sp   t t }t|| _t|| _| jdd ||||dI d H  | jdd ||dI d H }| |I d H  d S )NtracingStart)r&   r(   r)   r+   tracingStartChunk)r'   r&   )r   localsboolr   r   _channelsend_start_collecting_stacks)	r!   r&   r'   r(   r)   r*   r+   params
trace_namer$   r$   r%   start*   s"   
	




zTracing.startc                    s6   t t }| jdd |I d H }| |I d H  d S )Nr-   )r   r.   r0   r1   r2   )r!   r'   r&   r3   r4   r$   r$   r%   start_chunkF   s   
zTracing.start_chunkr4   c                    s<   | j sd| _ | jd | jj| j|| jI d H | _d S )NT)r   _connectionset_is_tracinglocal_utilstracing_startedr   r   r   )r!   r4   r$   r$   r%   r2   K   s   
z Tracing._start_collecting_stackspathc                    s   |  |I d H  d S N)_do_stop_chunkr!   r;   r$   r$   r%   
stop_chunkS   s   zTracing.stop_chunkc                    s*   |  |I d H  | jdd I d H  d S )NtracingStop)r=   r0   r1   r>   r$   r$   r%   stopV   s   zTracing.stop	file_pathc                    s@  |    |s$| jdd ddiI d H  | jr"| jj| jI d H  d S | jj }|rP| jdd ddiI d H }| jj	t
||d | jd| jdI d H  d S | jdd ddiI d H }ttt t|d}|s{| jry| jj| jI d H  d S ||I d H  | I d H  | jj	t
|g | jd	| jdI d H  d S )
NtracingStopChunkmodediscardentrieswrite)zipFilerF   stacksIdrD   includeSourcesarchiveartifactappend)_reset_stack_counterr0   r1   r   r7   r9   trace_discarded	is_remotesend_return_as_dictzipstrr   r   r   r
   r   getsave_asdelete)r!   rB   is_localresultrL   r$   r$   r%   r=   ]   sZ   



	
zTracing._do_stop_chunkc                 C   s    | j rd| _ | jd d S d S r   )r   r7   r8   r!   r$   r$   r%   rN      s   zTracing._reset_stack_counterlocationc                    s0    j dd tt I d H  t fdd S )NtracingGroupc                            S r<   )	group_endr$   rY   r$   r%   <lambda>       zTracing.group.<locals>.<lambda>)r0   r1   r   r.   r   )r!   r&   rZ   r$   rY   r%   group   s   zTracing.groupc                    s   | j dd I d H  d S )NtracingGroupEnd)r0   r1   rY   r$   r$   r%   r]      s
   zTracing.group_endcontent)attachembedomitrD   )fullminimal	urlFilterc                    s`    j rtdt|d}|rdnd} j|d ||p||p ddI d H  _ t fdd S )	Nz&HAR recording has already been started.ziprc   rd   rf   )harpageurlupdate_contentupdate_modec                      r\   r<   )stop_harr$   rY   r$   r%   r^      r_   z#Tracing.start_har.<locals>.<lambda>)r   r   rS   endswith_record_into_harr   )r!   r;   rb   rD   rh   is_zipdefault_contentr$   rY   r%   	start_har   s   
zTracing.start_harrj   rk   rl   rm   rn   resourcesDirc                    s   t |d}d }d }	d }
t t r }n d ur) j}	d fdddD }
|p,d|p/d|r3d nt |d}|d urA||d	< |	d urI|	|d
< |
d urQ|
|d< |d urY||d< d|i}|d urf|j|d< | jdd |I d H }|d }dt |i| j|< |S )Nri    c                 3   s"    | ]\}} j |@ r|V  qd S r<   )flags).0flagmaskrl   r$   r%   	<genexpr>   s    
z+Tracing._record_into_har.<locals>.<genexpr>))i   )m   )s   rc   rg   )rb   rD   harPathurlGloburlRegexSourceurlRegexFlagsru   optionsrk   harStartharIdr;   )rS   rp   
isinstancepatternjoinr0   rQ   r    )r!   rj   rk   rl   rm   rn   ru   rr   url_globurl_regex_sourceurl_regex_flagsr   r3   rX   har_idr$   r{   r%   rq      s>   	

zTracing._record_into_harc                    s0   t | j D ]
}| |I d H  qd | _d S r<   )listr    keys_export_harr   r!   r   r$   r$   r%   _export_all_hars   s   
zTracing._export_all_harsc                    s*   | j }|sd S d | _ | |I d H  d S r<   )r   r   r   r$   r$   r%   ro      s   zTracing.stop_harr   c                    s  | j |d }|sd S | jj }|d d}|rA| jdd |ddI d H }|s,d S | jj|d |d dddI d H  d S | jdd |d	dI d H }t	t
t|d
 }|rm||d I d H  | I d H  d S ||d d I d H  | I d H  d S )Nr;   ri   	harExportrF   )r   rD   rG   F)rH   rF   rD   rJ   rK   rL   z.tmp)r    popr7   rP   rp   r0   rQ   r9   rR   r   r
   r   rU   rV   )r!   r   r3   rW   rr   rX   rL   r$   r$   r%   r      s<   



zTracing._export_har)NNNNNN)NNr<   )r   N)NNN)NNNN)__name__
__module____qualname__r   rS   r   r   r/   r5   r6   r2   r   pathlibPathr?   rA   r=   rN   r	   r   r`   r]   r   r   rt   r   rq   r   ro   r   __classcell__r$   r$   r"   r%   r      s    

<

	


+
r   )r   typingr   r   r   r   r   r   r    playwright._impl._api_structuresr	   playwright._impl._artifactr
   playwright._impl._connectionr   r   r   playwright._impl._disposabler   playwright._impl._helperr   r   r   r$   r$   r$   r%   <module>   s   $