
    Yf/g                        d dl 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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 d d	lmZ d d
lmZ d dl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' d dl(m)Z)  G d d      Z*y)    N)OrderedDictdefaultdict)
itemgetter)Path)AnyCallableDictListOptionalUnion)box)Console)Markdown)Syntax)Table)Text)	sparkline)ScaleneJSON)ScaleneLeakAnalysis)Filename
LineNumberScaleneStatistics)
SyntaxLinec                       e Zd ZdZdZdZdZdZdZdZ	d!d	Z
d
ededeeef   ddfdZ	 	 	 	 	 d"dedededededededeeegef   dedededededefdZ	 	 d#dedededeeegef   dededeee      dededefd Zy)$ScaleneOutput   	   !   zbold red
dark_greenyellow4returnNc                 .    d| _         d| _        d| _        y )N F)output_filehtmlgpu)selfs    V/var/www/highfloat_scraper/venv/lib/python3.12/site-packages/scalene/scalene_output.py__init__zScaleneOutput.__init__/   s     	     titleconsolemallocsc                    |rd}d}d}d}|j                         D ]m  \  }}	|	|k  r y ||kD  r y |s|j                  |       d}dt        |       d|dd||   dd	}
|j                  t        |
| j                  
             |dz  }o y y )NF      T(z) 5.0fz: z MBstyle)itemsprintstrr   memory_color)r'   r+   r,   r-   printed_headernumberprint_top_mallocs_countprint_top_mallocs_threshold_mbmalloc_linenovalue
output_strs              r(   output_top_memoryzScaleneOutput.output_top_memory;   s     "NF '(#-.*(/ $u::33%MM%(%)N VRd/C2w}G]_cEddgh
hz9J9JKL! r*   jsonfnameline_nolinetblstatsprofile_this_codeforce_printsuppress_lineno_printis_function_summaryprofile_memoryreduced_profilec                    |j                  |||t        |      |||	      }|syd|d   cxk  rdk  rn nd|d<   |d   dk  rdn|d   d	d
}|d   dk  rdn|d   dd
}|d   dk  rdn|d   d	d
}d}|d   dk  r|d   s|d   sdn|d   d	d}n|d   s|d   sdn|d   dz  dd}|d   dk  rdn|d   dd
}|s|
rdn
t        |      }n(||j                  vrdnt        |j                  |         }|rd}|d   }t        |      t        j
                  kD  r.t        t        j                  |t        j
                              }n|}t        t        |            D cg c]  }||   d   |d   z   }}|r%t        j                  |d|j                        \  }}}d}d}d}d}|d   dk  rdnd|d   z  dd
}|d   | j                  k\  s|d   |d   z   |d   z   | j                  k\  rt        j                  || j                   f      }t        j                  || j                   f      }t        j                  ||z   | j                   f      }t        j                  || j                   f      }n|}|}|}||z   }|r||z   |z   |z   sy|d   dk  rdn|d   dz  dd
} |d   dk  rdn|d   d}!| j"                  r|j%                  |||||| |||!|
       y|j%                  ||||| |||!|	       y|d   |d   z   |d   z   | j                  k\  rdt        j                  || j                   f      }t        j                  || j                   f      }t        j                  || j                   f      }n|}|}|}|r	||z   |z   sy| j"                  r|j%                  ||||||       y|j%                  |||||       yc c}w )z<Print at most one line of the profile (true == printed one).)rB   fname_printrC   rD   rF   rG   rH   F	n_peak_mbr/   r   n_cpu_percent_cr#   r2   %n_gpu_percent3.0fn_cpu_percent_pythoni   n_usage_fractionMz5.2fGn_sys_percentz4.0fmemory_samplesg{Gz?d   n_python_fractionn_copy_mb_sg      ?z6.0fT)output_profile_liner7   firstline_maplenr   max_sparkline_len_linesortedrandomsampleranger   generatemax_footprinthighlight_percentager   assemblehighlight_colorr&   add_row)"r'   rA   rB   rC   rD   r,   rE   rF   rG   rH   rI   rJ   rK   rL   objn_cpu_percent_c_strn_gpu_percent_strn_cpu_percent_python_strn_growth_mem_strsys_strprint_line_no	spark_strsamplesrandom_samplesisparkline_samples_ncppsncpcsnufsngpusn_usage_fraction_strn_python_fraction_strn_copy_mb_s_strs"                                     r(   r^   z!ScaleneOutput.output_profile_lineT   sq   " &&T/# ' 
 K $1$ C
 $%) )*402 	 o&*B33G2MQ0O 	 )*Q. ./5Q7 	!
 {d" K(5G1H K(.a0  K(5G1H [)D0$7q9  o&*B33G2MQ0O 	 #"7BS\M  3 33 ,,U34 
 I*+G7|mBBB!'MM!E!E" ") s>23! q!!$s+='>>! !
 "+"4"4%q%*=*=#1i
 EEDE )*T1 s#566=Q? ! &'4+D+DD)*012/*+ ,,- -t/C/CD ($*>*>? }}!55t7K7KL &(<(<= 1+) #77uu}t';e'C *+d2 01C7>a@ " }%+ M*40  xx!)$#D k !)$#
j M %&,-.o&' **	+
 -t/C/CD ($*>*>? &(<(<= 1+)uu}u'<xx!"  ! C!s   %Ocolumn_widthpidpython_alias_dirprogram_pathprogram_argsc
                    t               }
| j                  |
_        |sj                  |       j                  sj                  sj
                  syt        t        t        j                  j                               t        j                  j                               z   t        j                  j                               z   t        j                  j                               z               }|syd}d}|r+j                  }t        |      dkD  rt        |      t        j                   kD  r.t#        t%        j&                  |t        j                               }n|}|D cg c]  }|d   	 }}t)        j*                  |dt        j                    dj,                        \  }}}j.                  d   dkD  r"dj.                  d   z  j.                  d   z  }t1        j2                  d|| j4                  fd	t        j6                  j,                         d
|dd      }t9        j:                  d      }t=        |dd|d      }g }t#        |fd      D ]r  }t?        |      }	 dj@                  |   z  j                  z  }jD                  |   t         jF                  k  r|t         jH                  k  rb|jK                  |       t |rjM                  ||       y|sy|D ]T  }|}ddl'}|jQ                  d|      x}rt?        d|jS                  d       d      }j                  rdj@                  |   z  j                  z  nd}|| d|ddt        jT                  |dz  jV                  z  dz         dt        jT                  jV                  dz         dz   }d}tY        tZ        j\                  |d|dz
        }|j_                  ta        dd       dd!dd"#       |j_                  ta        d$d%       d%dd&'       |j_                  ta        d(d%       d%dd&'       |j_                  ta        d)d%       d%dd&'       | j                  r4|j_                  ta        d*| jb                         | jb                  dd&'       d}|r|j_                  ta        d+| j4                         | j4                  dd,'       |j_                  ta        d-| j4                         | j4                  dd&'       |j_                  ta        d.| j4                         | j4                  dd/'       |j_                  ta        d0| jd                         | jd                  dd&'       d1| j                  rd&ndz   }nd2| j                  rd3ndz   }|j_                  d4|z   ||z
  d5       |d6k(  r|stf        jh                  jk                  tf        jh                  jm                  ||            }	 to        |d7      5 } | jq                         }!ddd       d}"tw        !d8| jx                  rd9nd:dd;      }#t=        ||z
  d<      }$|$j{                  |#      D %cg c]  }%t}        |%       }&}%t        |&d=      D ]E  \  }'}(|"})| j                  |
|t        |'      |(||||ddd|	>      }"|)r|"s|j                  d?       |"})G j                  |      }*d}+t               },|,t        |*j                  j                               z  },|,t        |*j                  j                               z  },|,t        |*j                  j                               z  },|,t        |*j                  j                               z  },|,D ]  }-|-|k(  r	d}+ n |+r	 |j                  dd@       t1        j2                  dA| dB       }.|rA| j                  r|j                  ddddddddd|.
       nR|j                  dddddddd|.	       n8| j                  r|j                  ddddd|.       n|j                  dddd|.       t#        |*j                  fdC      D ]M  }-|-|k(  r	tw        |-d8| jx                  rd9nd:dd;      }#| j                  |
|-t        d      |#|||*||ddd|	>       O |j                  |       t        t              }/j                  |   D ]6  }'j                  |   |'   }0j                  |   |'   x}1r	|0|1z  |/|'<   2|0|/|'<   8 t        t#        |/j                         t        d      dD            }/t        t              }2j                  |   D ]  }'j                  |   |'   |2|'<    t        t#        |2j                         t        d      dD            }2| j                  dE||/       | j                  dF||2       t        j                  ||/|      }3t        |3      dkD  st#        |3t        d      dD      D ]C  }4dGt        |4d          dH|4d   dz  ddI|4dJ   jV                  z  ddK}5|j                  |5       E W | jx                  rMta        dL      }6|j                  |6       | j                  sdM| _S        |j                  | j                  dN       y| j                  r|j                  | j                  ddO       yt        j                  j                  |j                  dP             yc c}w # tB        $ r d}Y w xY w# 1 sw Y   xY w# tr        tt        f$ r Y Bw xY wc c}%w # t        $ r |j                  d       Y w xY w)QzWrite the profile out.Fr#   g        r   r/   Ng      Y@zMemory usage: z (max: z, growth rate: rT   z%)
zw+)modeT)widthrecordforce_terminalfileforce_jupyterc                 (    j                   |     | fS N)cpu_samples)frF   s    r(   <lambda>z/ScaleneOutput.output_profiles.<locals>.<lambda>  s    U..q12A6 r*   )keyr[   z_ipython-input-([0-9]+)-.*[]z: % of time = z6.2fz% (g     @@z	) out of .)r   r+   collapse_paddingr   Linedimr3   right   )r4   justifyno_wrapr   zTime  
_Python_blue   )r4   r   r   u   ––––––  
_native_u   ––––––  
_system_u   ––––––  
_GPU_zMemory  
_Python_   u   ––––––  
_peak_u0   –––––––––––  
_timeline_/%   zCopy  
_(MB/s)_K   %   r0   
)r   r   z<BOGUS>rpythondefaultvim)themeline_numbers
code_width)r   r   )start)rA   rB   rC   rD   r,   rE   rF   rG   rK   rH   rI   rJ   rL   z...)end_sectionzfunction summary for zbold italicc                 "    j                   |    S r   )r_   )krF   s    r(   r   z/ScaleneOutput.output_profiles.<locals>.<lambda>b  s    %"5"5a"8 r*   )r   reversez(Top AVERAGE memory consumption, by line:z%Top PEAK memory consumption, by line:z(Possible memory leak identified at line z (estimated likelihood: z%, velocity:    z MB/s)zLgenerated by the [scalene](https://github.com/plasma-umass/scalene) profilerz/dev/stdout)clear)stylesr   )r   )Zr   r&   merge_statstotal_cpu_samplestotal_memory_malloc_samplestotal_memory_free_sampleslistsetcpu_samples_pythonkeyscpu_samples_cmemory_free_samplesmemory_malloc_samplesmemory_footprint_samplesr`   r   max_sparkline_len_filerb   rc   rd   r   rf   rg   allocation_velocityr   ri   r8   memory_consumed_strtempfileTemporaryFiler   r   r   ZeroDivisionErrormalloc_samplesmalloc_thresholdcpu_percent_thresholdappendoutput_statsrematchgrouptime_consumed_strelapsed_timer   r   MINIMAL_HEAVY_HEAD
add_columnr   	gpu_colorcopy_volume_colorospathnormpathjoinopenreadFileNotFoundErrorOSErrorr   r%   render_linesr   	enumerater^   r   rk   build_function_stats	TypeErrorr6   r   float	bytei_mapmemory_aggregate_footprintmemory_malloc_countr   r5   r   memory_max_footprintr@   r   compute_leaksr7   r$   	save_html	save_textsysstdoutwriteexport_text)7r'   r   rF   r   rG   r   r   r   rK   rL   rA   all_instrumented_filesmem_usage_linegrowth_ratert   ru   itemrw   rx   rs   nullr,   report_filesrB   percent_cpu_timerN   r   result	new_titlerE   other_columns_width
full_fnamesource_file
code_lines	did_printsyntax_highlightedcapture_consolesegmentsformatted_linesrC   rD   old_did_printfn_statsprint_fn_summaryall_samplesfn_nametxtavg_mallocsn_malloc_mbcountpeak_mallocsleaksleakr?   mds7     `                                                    r(   output_profileszScaleneOutput.output_profiles.  s    }88./ ''5533 15U--2245u**//123u0055789 u22779:;2
 &+-44G7|aw<-"F"FF%+#]%I%I&N &-N9G$HT!W$H!$H"+"4"4%&L(L(LM''#1i ,,Q/!333A6733A67  
 "&$!2!23!+"A"A%BUBU"V!WWfgrswfxx|}	" %%40
 (*"6
 	'E UOE%%++E22U5L5LL ! $$U+k.J.JJ${'H'HH&%	', s$45! O	.E  K">LLvL&6<<?*;1'=>
 ** u((//%2I2II  '-~.>t-DCHeHefvy~f~  BG  BT  BT  gT  WZ  gZ  I[  H\  \e  fq  fC  fC  DI  DV  DV  Y\  D\  f]  e^  ^_  `I  N**!%"Q&	C NNu-   NN5VD	   NN9H	   NN9H	   xx:$..Q.. 	   #$19J9JK++ 	   ;4CTCTU++ 	   KSWSdSd ++    /t7M7MN00 	   ')Aq&A#&(Aq&A#NN{""%88   	!))"'',,|U*KLJ*c* 4k!,!1!1!3J4 I "(#'99i%"" &"%88#O !0 < <&! 8$O  "+?!!D * ) 44&w/#&7#1 %*/(-$3 5 	 !KK& ))*. 11%8H$%K3x::??ABBK3x55::<==K3x==BBDEEK3x;;@@BCCK& e##' 	  &KK$K7 mm+K=9 "xxBBBBBLBBBBCHXXKKBBC8KKBB4%//8  G %' )/ +/99i%%*#'*& ,,!% *1/ '&*;'5$(.2,0(7 - < MM# 4?u3EK ??51 7#>>uEgN!55e<WEE5E+6+>K( ,7K(7 &{((*
1tLK
 5@4FL ??51 (-(B(B5(I)W%
 '|))+AML "": ""7,
 (55UKE 5zA~"5jmTJ .D#KCPTUVPWL>Yqswxysz  ~A  tA  CG  rH  HU  W[  \]  W^  af  as  as  Ws  uy  Uz  z@  "AJMM*-.[O	.b 99^B MM"###0 d..e<  d..uEJ  JJW000=>
 %IV % %#$ %@4 4%w/ (\ ! &KK%&sZ   +k>2l4l" ll"l8l=lll	l""l54l5=mm)r!   N)FFFFF)TF)__name__
__module____qualname__r   ra   rh   rj   r8   r   r   r)   r7   r   r	   r   r   r@   r   r   r   r   r   r   boolr^   intr   r   r
   r	   r*   r(   r   r      s        !O  L I "#*59*e:K5L	F "&+$)$ %XX X 	X
 X X X !X $Xz$:D$@AX X  $X "X X X 
XF  $ %SS !S 	S
 $Xz$:D$@AS S S tCy)S S S 
Sr*   r   )+r   rc   r   r   collectionsr   r   operatorr   pathlibr   typingr   r   r	   r
   r   r   richr   rich.consoler   rich.markdownr   rich.syntaxr   
rich.tabler   	rich.textr   scalener   scalene.scalene_jsonr   scalene.scalene_leak_analysisr   scalene.scalene_statisticsr   r   r   scalene.syntaxliner   r   r  r*   r(   <module>r     sP    	  
  0   = =    "     , = N N )i
 i
r*   