
    DhR!                    >   d dl mZ d dlZd dlZd dl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 d dlZer
d d	lmZmZmZ 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd
ZddZddZddZddZddZ G d dej<                        ZddZ dddZ!e"dk(  r e!        yy)    )annotationsN)	b64decode)encodebytes)Sequence)Path)default_timer)TYPE_CHECKINGAny)DecodeEncodeEncodeBytesc           
        | dz  } |s|d}t               }	  ||      }	|dz  }t               |z
  | kD  rn|}
t               }|
dkD  r ||      }	|
dz  }
|
dkD  rt               |z
  }t        dj                  |j                  dz   |j                  z   dz   |t        |      z  dz  |z  t        |      t        |	                   d}t               }	  |||      }	|dz  }t               |z
  | kD  rn!|}
t               }|
dkD  r |||      }	|
dz  }
|
dkD  rt               |z
  }t        dj                  |j                  dz   |j                  z   dz   |t        |      z  dz  |z  t        |      t        |	                   d}t               }	  ||	||	      }|dz  }t               |z
  | kD  rn"|}
t               }|
dkD  r ||	||	      }|
dz  }
|
dkD  rt               |z
  }t        dj                  |j                  dz   |j                  z   dz   |t        |      z  dz  |z  t        |	      t        |                   ||k(  sJ y )
Ng       @r      z1{:<32s} {:9.3f} MB/s ({:,d} bytes -> {:,d} bytes).:g      0A)altchars)r   validate)timerprintformat
__module____name__len)durationdataencdecencbytesr   r   numbertimeencodedcontentiterdecodedcontents               s/var/www/fastuser/data/www/generator.snapmosaic.io/flask_app/venv/lib/python3.12/site-packages/pybase64/__main__.py	bench_oner%      s    #~H(w%d^NaKFw~(	 
 wQh%d^NAID Qh w~?FF##c)H,=,==C3t9$9TAD	N#		
 F7D
TH5!7T>H$	 
 D7D
(TH5	 ( 7T>D	;BBNNS 3<</#5s4y _5=I		
 F7D
^hR!7T>H$	 
 D7D
(^hR	 ( 7T>D	;BBNNS 3<</#5s4y _5=I		
 T!!!    c                    | dk(  r(t         j                  j                  j                         S t	        |       j                         S N-)sysstdinbufferreadr   
read_bytes)files    r$   readallr0   c   s5    s{yy$$&&:  ""r&   c                    | dk(  r*t         j                  j                  j                  |       y t	        |       j                  |       y r(   )r*   stdoutr,   writer   write_bytes)r/   r   s     r$   writeallr5   i   s3    s{

%T
t$r&   c                n   t        t        dz   t        j                         z          t	        |      }dD ]~  }dD ]w  }t        d|dd|d       t        | |t        j                  t        j                  t        j                  ||       t        | |t        j                  t        t        ||       y  y )N )N   -_)FTzbench: altchars=sz, validate=)r   __package__pybase64get_versionr0   r%   	b64encoder   r   base64b64decodeValidateb64encodebytes)r   inputr   r   r   s        r$   	benchmarkrB   p   s    	+
h224
455>D! % 	H$XN+h^LM""""$$   !	r&   c                ^    t        |       }t        j                  ||      }t        ||       y N)r0   r;   r=   r5   )rA   r   outputr   s       r$   encoderF      s'    5>DdH-DVTr&   c                `    t        |       }t        j                  |||      }t        ||       y rD   )r0   r;   r   r5   )rA   r   r   rE   r   s        r$   decoderH      s)    5>DdHh7DVTr&   c                  R     e Zd Z	 	 d	 	 	 	 	 	 	 d fdZ	 d	 	 	 	 	 	 	 	 	 ddZ xZS )LicenseActionc                X    t         |   ||t        j                  d|       || _        y )Nr   )option_stringsdestdefaultnargshelp)super__init__argparseSUPPRESSlicense)selfrL   rM   rU   rP   	__class__s        r$   rR   zLicenseAction.__init__   s5     	)%% 	 	
 r&   c                N    t        | j                         |j                          y rD   )r   rU   exit)rV   parser	namespacevaluesoption_strings        r$   __call__zLicenseAction.__call__   s     	dllr&   )Nz!show license information and exit)rL   zSequence[str]rM   strrU   
str | NonerP   r`   rD   )
rZ   zargparse.ArgumentParserr[   zargparse.Namespacer\   zstr | Sequence[Any] | Noner]   r`   returnNone)r   r   __qualname__rR   r^   __classcell__)rW   s   @r$   rJ   rJ      sp    
 #>%  	
 * %)' & +	
 " 
r&   rJ   c                    | dk(  r| S t        |       }|rt        |j                  d            S t        |j                  j                  d      |j                  z        S )Nr)   T)strict)r   r_   resolveparentname)valueis_inputpaths      r$   
check_filerm      sV    |;D4<<t<,--t{{""$"/$));<<r&   c           	        t        j                  t        t        dz         }|j                  dddt        dz   t	        j
                         z          |j                  dt        t	        j                         	       |j                  d
      }|j                  dd      }|j                  ddddt        dd       |j                  ddd        |j                  ddd       |j                  t               |j                  dd      }|j                  ddd        |j                  ddd        |j                  ddd        |j                         }|j                  d!d"d#d$d%d&'       |j                  d(d)d%d*+       |j                  d,d-d.dd/d01       |j                  t               |j                  d2d      }|j                  ddd3        |j                  ddd4        |j                  ddd5       |j                         }|j                  d!d"d#d$d%d6'       |j                  d(d)d%d7+       |j                  d,d-d.dd/d81       |j                  d9d:d;d<=       |j                  t                | t"        j$                  d>d  } t'        |       d?k(  rd@g} t)        |j+                  | A            }|j-                  dB      } |dCi | y )DNz command-line tool.)progdescriptionz-Vz	--versionversionr7   )actionrq   z	--license)rr   rU   z	tool help)rP   rB   z-h for usagez-dz
--durationDr   g      ?z4expected duration for a single encode or decode test)metavarrM   typerN   rP   ru   z
input filec                    t        | d      S NTrm   r9   s    r$   <lambda>zmain.<locals>.<lambda>   s    jD>Q r&   rA   z!input file used for the benchmark)ru   rP   )funcrF   c                    t        | d      S rw   rx   ry   s    r$   rz   zmain.<locals>.<lambda>       :a;N r&   zoutput filec                    t        | d      S NFrx   ry   s    r$   rz   zmain.<locals>.<lambda>       Jq%<P r&   zinput file to be encodedz-uz--urlstore_constr8   r   zuse URL encoding)rr   constrM   rP   z-az
--altcharsz'use alternative characters for encoding)rM   rP   z-oz--outputrE   r)   z'encoded output file (default to stdout))rM   ru   rN   rP   rH   c                    t        | d      S rw   rx   ry   s    r$   rz   zmain.<locals>.<lambda>   r}   r&   c                    t        | d      S r   rx   ry   s    r$   rz   zmain.<locals>.<lambda>   r   r&   zinput file to be decodedzuse URL decodingz'use alternative characters for decodingz'decoded output file (default to stdout)z--no-validationr   store_falsez$disable validation of the input data)rM   rr   rP   r   r   z-h)argsr{    )rS   ArgumentParserr:   add_argumentr;   r<   rJ   get_license_textadd_subparsers
add_parserfloatregisterset_defaultsrB   add_mutually_exclusive_grouprF   rH   r*   argvr   vars
parse_argspop)	r   rZ   
subparsersbenchmark_parserencode_parsergroupdecode_parserr   r{   s	            r$   mainr      s9   $$k4I&IF c!H$8$8$::	   M8C\C\C^_&&K&8J!,,[~,N!!C "  fl4QR!!l)L "  !!y!1))()HM6<1NO6=2PQw\@Z[668E	   
6	   6   F+))()HM6<1NO6=2PQw\@Z[668E	   
6	   6   3	   F+|xx|
4yA~v!!t!,-D88FDL4Lr&   __main__r   )r   r   r   bytesr   r   r   r   r   r   r   bytes | Noner   boolra   rb   )r/   r_   ra   r   )r/   r_   r   r   ra   rb   )r   r   rA   r_   ra   rb   )rA   r_   r   r   rE   r_   ra   rb   )
rA   r_   r   r   r   r   rE   r_   ra   rb   )rj   r_   rk   r   ra   r_   rD   )r   zSequence[str] | Nonera   rb   )#
__future__r   rS   r>   r*   r   r?   r   r@   collections.abcr   pathlibr   timeitr   r   typingr	   r
   r;   pybase64._typingr   r   r   r%   r0   r5   rB   rF   rH   ActionrJ   rm   r   r   r   r&   r$   <module>r      s    "   
 1 0 $  ) % << "M"M"
M" 
M" 
	M"
 M" M" M" 
M"`#%4HOO 8=eP zF r&   