
    
`i#                        d Z ddlZddlZddlZddlZddlZddlZddlZddlZ ej	                    Z
d Zed             Zed             Zed             Zed             Zed             Zed	             Zed
             Zed             Zed             Zed             Zd Zd Z e            Zd Zd Z G d d          Z G d d          Zd Zd Zd ZddZ d Z!e"dk    r e!             dS dS )z 
Benchmarking utility for ijson
    Nc                 $    | t           | j        <   | S N)_benchmarks__name__)fs    c/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ijson/benchmark.py	benchmarkr	      s    K
H    c                 f    dd                     d t          |           D                       z   dz   S )N   [   ,c                     g | ]}d S )   1 .0_s     r   
<listcomp>zlong_list.<locals>.<listcomp>   s    444aT444r
      ]joinrangens    r   	long_listr      s3    $))44588444555<<r
   c                 f    dd                     d t          |           D                       z   dz   S )N   {   ,
c                     g | ]	}d ||fz  
S )s   "key_%d": %dr   r   is     r   r   z"big_int_object.<locals>.<listcomp>!   s!    JJJA!Q7JJJr
      }r   r   s    r   big_int_objectr#      3    &++JJqJJJKKKdRRr
   c                 f    dd                     d t          |           D                       z   dz   S )Nr   r   c                     g | ]	}d ||fz  
S )s   "key_%d": %d.0r   r    s     r   r   z&big_decimal_object.<locals>.<listcomp>%   s"    LLLa0Aq69LLLr
   r"   r   r   s    r   big_decimal_objectr'   #   s4    &++LL588LLLMMMPTTTr
   c                 f    dd                     d t          |           D                       z   dz   S )Nr   r   c                     g | ]}d |fz  	S )s   "key_%d": nullr   r    s     r   r   z#big_null_object.<locals>.<listcomp>)   s     JJJA0A47JJJr
   r"   r   r   s    r   big_null_objectr*   '   r$   r
   c                 f    dd                     d t          |           D                       z   dz   S )Nr   r   c                 2    g | ]}d ||dz  dk    rdndfz  S )s   "key_%d": %s   r   s   trues   falser   r    s     r   r   z#big_bool_object.<locals>.<listcomp>-   sB        	1Q!ggBB  r
   r"   r   r   s    r   big_bool_objectr.   +   sI    &++  q     "# #r
   c                 f    dd                     d t          |           D                       z   dz   S )Nr   r   c                     g | ]	}d ||fz  
S s   "key_%d": "value_%d"r   r    s     r   r   z"big_str_object.<locals>.<listcomp>3   s"    RRRA6!Q?RRRr
   r"   r   r   s    r   big_str_objectr2   1   s4    &++RRqRRRSSSVZZZr
   c                 p    ddd                     fdt          |           D                       z   dz   S )NsC   value that is very long and should cause a bit less of JSON parsingr   r   c                     g | ]	}d |fz  
S )s   "key_%d": "%s"r   )r   r!   str_templates     r   r   z&big_longstr_object.<locals>.<listcomp>8   s$    WWW0A|3DDWWWr
   r"   r   )r   r5   s    @r   big_longstr_objectr6   5   sA    YL&++WWWWeTUhhWWWXXX[___r
   c                     dd                     d t          d          D                       z   dz   dd                     fdt          |           D                       z   dz   S )	Nr   r   c                     g | ]	}d ||fz  
S r1   r   r    s     r   r   z'object_with_10_keys.<locals>.<listcomp><   s"    "W"W"W#:aV#C"W"W"Wr
   
   r"   r   c              3      K   | ]}V  d S r   r   )r   r   templates     r   	<genexpr>z&object_with_10_keys.<locals>.<genexpr>=   s7         	     r
   r   r   )r   r;   s    @r   object_with_10_keysr=   :   s    fkk"W"WUSUYY"W"W"WXXX[__H&++    q     !" "r
   c                 f    dd                     d t          |           D                       z   dz   S )Nr      , c              3      K   | ]}d V  dS )s   []Nr   r   s     r   r<   zempty_lists.<locals>.<genexpr>C   "      55qU555555r
   r   r   r   s    r   empty_listsrB   A   3    %**55E!HH555555<<r
   c                 f    dd                     d t          |           D                       z   dz   S )Nr   r?   c              3      K   | ]}d V  dS )s   {}Nr   r   s     r   r<   z empty_objects.<locals>.<genexpr>G   rA   r
   r   r   r   s    r   empty_objectsrF   E   rC   r
   c                 @    d |                      d          D             S )Nc                 (    g | ]}t           |         S r   )r   r   names     r   r   z$parse_benchmarks.<locals>.<listcomp>J   s    777$K777r
   ,)split)ss    r   parse_benchmarksrN   I   s     77!''#,,7777r
   c                      t          j                    } t          j        D ]*}	 t          j        |          | |<   # t
          $ r Y 'w xY w| S r   )collectionsOrderedDictijsonALL_BACKENDSget_backendImportError)backendsbackend_names     r   load_backendsrX   M   sd    &((H*  	%*%6|%D%DH\"" 	 	 	H	Os   ;
AAc                 |    t          j                    }|                     d          D ]}t          |         ||<   |S )NrK   )rP   rQ   rL   	_backends)rM   rV   rJ   s      r   parse_backendsr[   W   s=    &((H ) )"4Or
   c                     t           j        }|                                r+|                    |            |                                 d S d S r   )sysstdoutisattywriteflush)messager^   s     r   _stdout_tty_write_flushrc   ^   sF    ZF}} W r
   c                        e Zd Zd Zd Zd ZdS )progress_messagec                     || _         d S r   )rb   )selfrb   s     r   __init__zprogress_message.__init__g   s    r
   c                 .    t          | j                   | S r   )rc   rb   rg   s    r   	__enter__zprogress_message.__enter__j   s    ---r
   c                 $    t          d           d S )Nz[K)rc   )rg   argss     r   __exit__zprogress_message.__exit__n   s    
+++++r
   N)r   
__module____qualname__rh   rk   rn   r   r
   r   re   re   e   sA            , , , , ,r
   re   c                   "    e Zd Zd ZddZd ZdS )AsyncReaderc                 8    t          j        |          | _        d S r   )ioBytesIOdata)rg   rv   s     r   rh   zAsyncReader.__init__s   s    Jt$$			r
   c                 :   K   | j                             |          S r   )rv   read)rg   r   s     r   ry   zAsyncReader.readv   s      y~~a   r
   c                 8    | j                                          d S r   )rv   closerj   s    r   r{   zAsyncReader.closey   s    	r
   N)rw   )r   ro   rp   rh   ry   r{   r   r
   r   rr   rr   r   sF        % % %! ! ! !    r
   rr   c                 4   K    | |g|R i |2 3 d {V }6 d S r   r   )methodreadermethod_argsmethod_kwargsr   s        r   
_run_asyncr   |   sW      6&@;@@@-@@       a A@@s   c                     t          |           }t          |          }|dz  dk    r||dz  dz
           ||dz           z   dz  S ||dz           S )Nr-   r      g       @)sortedlen)valuessorted_valuesr   s      r   medianr      s\    6NNMMA1uzza1fqj)M!q&,AARGGa  r
   c                     t          |           }t          |           |t          t          |                     z  t	          |           t          |           fS r   )summinfloatr   r   max)r   totals     r   statsr      sA    KKEv;;c&kk 2 22F6NNCKKOOr
   c                     t                    t                    k    sJ rRj        }t          d|d          5    j                  t	                    }d d d            n# 1 swxY w Y   n}t          j                  j        } fd} j        	                                D ]\  }} j
         j        rdz  n j        rdz  t          |          d j
        dv r j        f j         j        d j        s
 j        d	<    j        r!d
d l}|                                fd}	n j        r	 fd}	nfd}	g }
t(          j        }t-           j                  D ]k}t1          j         |                      5 } |            } |	|           |
                     |            |z
             d d d            n# 1 swxY w Y   l|dz  dz   j
        ||ft7          |
          z   t7          fd|
D                       z   }t9          d|z             d S )NzGenerating data for benchmark z...c                  |    st          d          S  j        rt                    S t          j                  S )Nrb)open	run_asyncrr   rt   ru   )rm   benchmark_funcrv   fnames   r   
get_readerz"run_benchmarks.<locals>.get_reader   sC     	%t$$$^ 	%t$$$z$r
   _async_coror   )itemskvitems)multiple_values	use_floatbuf_sizer   c                     	                      t          | gR i                                             d S #                                  w xY wr   )run_until_completer   r{   )r~   loopr}   r   r   s    r   runzrun_benchmarks.<locals>.run   sZ    !++Jvv,e,e,e,eWd,e,efffJJLLLLLDJJLLLLs	   $= Ac                      ddl m}  |            } |gR i }t           fdd          D ]}|                    |           |d d = |                                 d S )Nr   )sendable_listc                  8                          j                  S r   )ry   bufsize)rm   r~   s   r   <lambda>z-run_benchmarks.<locals>.run.<locals>.<lambda>   s    &++dl*C*C r
   r
   )ijson.utilsr   itersendr{   )	r~   r   eventscorochunkrm   r}   r   r   s	   `    r   r   zrun_benchmarks.<locals>.run   s    555555&vfD{DDDmDD!"C"C"C"C"CSII " "EIIe$$$qqq		

r
   c                 &     | gR i D ]}d S r   r   )r~   r   r}   r   r   s     r   r   zrun_benchmarks.<locals>.run   s9    FFFFFF  A r
   g      @c                     g | ]}|z  S r   r   )r   duration	megabytess     r   r   z"run_benchmarks.<locals>.<listcomp>   s    BBBH9x'BBBr
   z@%.3f, %s, %s, %s, %.3f, %.3f, %.3f, %.3f, %.3f, %.3f, %.3f, %.3f)boolr   re   sizer   osstatst_sizerV   r   r}   r   run_corogetattrprefixr   r   r   asyncionew_event_looptimeperf_counterr   
iterations
contextlibclosingappendr   print)rm   r   r   bnamer   r   rW   backendr   r   	durationsnow	iterationr~   startresultsrv   r   r   r}   r   r   s   ```             @@@@@@r   run_benchmarksr      s   4;;.... &'uuuNOO 	 	!>$),,Dt99D	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 wu~~%                "&!4!4!6!6 8\ 8\g > 	hFF] 	gF&));...+,K#3
 
 } 	5(,M*% > 	NNN))++D! ! ! ! ! ! ! ! !
 ] 	              
 	t// 	0 	0I#JJLL11 0VF  ///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5L5(	UL9)BBBB	BBBCCD 	
 	PSZZ[[[[q8\ 8\s$    A44A8;A8$6G&&G*-G*c                  0   d} d}d}d                     t                    }d                     t                    }t          j                    }|                    ddt          d| z  |            |                    d	d
t          d|z  |           |                    ddt          d|z  |           |                    ddt          d|z  |           |                    ddt          d|z  |           |                    dddd           |                    ddd           |                    dddd d!"           |                    d#d$dd d%"           |                    d&d'g d(d)d*+           |                    d,d-dd d.d/0           |                    d1d2dd d3d40           |                    d5d6d7d89           |	                                }|j
        rfd:}|d;                     d< t          D                       z  }|d=z  }|d;                     d> t          D                       z  }t          |           d S t          d?           |j        r|j        D ]}t          ||@           d S |j        D ]}	t          ||	           d S )ANi r   i   rK   z-sz--sizezGSize of JSON content; actual size in bytes might differ, defaults to %d)typehelpdefaultz-Iz--iterationsz;How many times each method should be tested, defaults to %dz-Sz	--bufsizez/Buffer size used during parsing; defaults to %dz-bz--benchmarksz=Comma-separated list of benchmarks to include, defaults to %sz-Bz
--backendsz;Comma-separated list of backends to include, defaults to %sz-lz--list
store_truez&List available benchmarks and backends)actionr   inputs*zFFile to use for benchmarks rather than built-in benchmarking functions)nargsr   z-Mz--multiple-valuesFz:Content has multiple JSON values, useful when used with -i)r   r   r   z-fz--use-floatz5Parse non-integer numbers as float instead of Decimalz-mz--method)basic_parseparser   r   zThe method to benchmarkr   )choicesr   r   z-cz--coror   zBenchmark coroutine methods)r   r   destr   z-az--asyncr   z!Benchmark asyncio-enabled methodsz-pz--prefixz#Prefix (used with -M items|kvitems) )r   r   z
Backends:

c              3       K   | ]	}d |z  V  
dS z - %sNr   rI   s     r   r<   zmain.<locals>.<genexpr>  s&      >>D4>>>>>>r
   z
Benchmarks:
c              3       K   | ]	}d |z  V  
dS r   r   rI   s     r   r<   zmain.<locals>.<genexpr>  s&      @@D4@@@@@@r
   z#mbytes, method, test_case, backend, time_min, time_avg, time_median, time_max, mb_per_sec_min, mb_per_sec_avg, mb_per_sec_median, mb_per_sec_max)r   )r   r   rZ   argparseArgumentParseradd_argumentintrN   r[   
parse_argslistr   r   r   
benchmarks)
	DEFAULT_NDEFAULT_ITERATIONSDEFAULT_BUFSIZEALL_BENCHMARKSrS   parserrm   msgfilenamer	   s
             r   mainr      s   IOXXk**N88I&&L$&&F
hSVYbb     n3JM__"  $ $ $ k>P  ! ! ! n3CL~]        lJ\Y     h|5  7 7 7
U  W W W
1,PUI  K K K
mL%D  F F F
j2^2^2^6  O O O
h|U'.K  M M M
ie(/R  T T T
j/T^`aaaDy tyy>>I>>>>>>  tyy@@K@@@@@@c


	  ^  _  _  _{ , 	1 	1H4x00000	1 	1  	, 	,I4++++	, 	,r
   __main__)NN)#__doc__r   rP   r   rt   r   r]   r   rR   rQ   r   r	   r   r#   r'   r*   r.   r2   r6   r=   rB   rF   rN   rX   rZ   r[   rc   re   rr   r   r   r   r   r   r   r   r
   r   <module>r      s             				 				 



  %k%''   = = = S S S U U U S S S # # #
 [ [ [ ` ` ` " " " = = = = = =8 8 8   MOO	    
, 
, 
, 
, 
, 
, 
, 
,         ! ! !P P PK\ K\ K\ K\\5, 5, 5,n zDFFFFF r
   