o
    0 iR!                     @  s  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rHd d	lmZmZmZ 		
d6d7ddZd8dd Zd9d!d"Zd:d$d%Zd;d'd(Zd<d)d*ZG d+d, d,ejZd=d/d0Z d>d?d3d4Z!e"d5kre!  dS dS )@    )annotationsN)	b64decode)encodebytes)Sequence)Path)default_timer)TYPE_CHECKINGAny)DecodeEncodeEncodeBytesFdurationfloatdatabytesencr   decr
   encbytesr   altcharsbytes | NonevalidateboolreturnNonec                 C  s  | d } |sY|d u rYd}t  }	 ||}	|d7 }t  | | kr nq|}
t  }|
dkr6||}	|
d8 }
|
dks*t  | }td|jd |j d |t| d | t|t|	 d}t  }	 |||d	}	|d7 }t  | | krqnq_|}
t  }|
dkr|||d	}	|
d8 }
|
dks{t  | }td|jd |j d |t| d | t|t|	 d}t  }	 ||	||d
}|d7 }t  | | krnq|}
t  }|
dkr||	||d
}|
d8 }
|
dkst  | }td|jd |j d |t| d | t|	t| ||ksJ d S )Ng       @r   T   z1{:<32s} {:9.3f} MB/s ({:,d} bytes -> {:,d} bytes).:g      0A)r   )r   r   )timerprintformat
__module____name__len)r   r   r   r   r   r   r   numbertimeZencodedcontentiterZdecodedcontent r&   ]/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/pybase64/__main__.py	bench_one   s   	
	
	
r(   filestrc                 C  s    | dkr
t jj S t|  S N-)sysstdinbufferreadr   
read_bytes)r)   r&   r&   r'   readallc   s   r2   c                 C  s,   | dkrt jj| d S t| | d S r+   )r-   stdoutr/   writer   write_bytes)r)   r   r&   r&   r'   writealli   s   r6   inputc              
   C  s|   t td t   t|}dD ]+}dD ]&}t d|dd|d t| |tjtjtj|| t| |t	jt
t|| qqd S )N )N   -_)FTzbench: altchars=sz, validate=)r   __package__pybase64get_versionr2   r(   	b64encoder   r   base64b64decodeValidateb64encodebytes)r   r7   r   r   r   r&   r&   r'   	benchmarkp   s2   	rB   outputc                 C  s"   t | }t||}t|| d S N)r2   r<   r>   r6   )r7   r   rC   r   r&   r&   r'   encode   s   rE   c                 C  s$   t | }t|||}t|| d S rD   )r2   r<   r   r6   )r7   r   r   rC   r   r&   r&   r'   decode   s   rF   c                      s2   e Zd Z		dd fd
dZ	ddddZ  ZS )LicenseActionN!show license information and exitoption_stringsSequence[str]destr*   license
str | Nonehelpc                   s"   t  j||tjd|d || _d S )Nr   )rI   rK   defaultnargsrN   )super__init__argparseSUPPRESSrL   )selfrI   rK   rL   rN   	__class__r&   r'   rR      s   
zLicenseAction.__init__parserargparse.ArgumentParser	namespaceargparse.Namespacevaluesstr | Sequence[Any] | Noneoption_stringr   r   c                 C  s   t | j |  d S rD   )r   rL   exit)rU   rX   rZ   r\   r^   r&   r&   r'   __call__   s   
zLicenseAction.__call__)NrH   )rI   rJ   rK   r*   rL   rM   rN   rM   rD   )
rX   rY   rZ   r[   r\   r]   r^   rM   r   r   )r!   r    __qualname__rR   r`   __classcell__r&   r&   rV   r'   rG      s    rG   valueis_inputc                 C  s@   | dkr| S t | }|rt|jddS t|jjdd|j S )Nr,   T)strict)r   r*   resolveparentname)rc   rd   pathr&   r&   r'   
check_file   s   rj   argvSequence[str] | Nonec           	   	   C  s4  t jttd d}|jdddtd t  d |jdtt d	 |jd
d}|j	ddd}|jddddt
ddd |dddd  |jdddd |jtd |j	ddd}|dddd  |ddd d  |jddd!d | }|jd"d#d$d%d&d'd( |jd)d*d&d+d, |jd-d.d/dd0d1d2 |jtd |j	d3dd}|ddd4d  |ddd5d  |jddd6d | }|jd"d#d$d%d&d7d( |jd)d*d&d8d, |jd-d.d/dd0d9d2 |jd:d;d<d=d> |jtd | d u rtjd?d  } t| d@krdAg} t|j| dB}|dC}|dDi | d S )ENz command-line tool.)progdescriptionz-Vz	--versionversionr8   )actionro   z	--license)rp   rL   z	tool help)rN   rB   z-h for usagez-dz
--durationDr   g      ?z4expected duration for a single encode or decode test)metavarrK   typerO   rN   rs   z
input filec                 S  
   t | dS NTrj   r:   r&   r&   r'   <lambda>      
 zmain.<locals>.<lambda>r7   z!input file used for the benchmark)rs   rN   )funcrE   c                 S  rt   ru   rv   rw   r&   r&   r'   rx      ry   zoutput filec                 S  rt   NFrv   rw   r&   r&   r'   rx      ry   zinput file to be encodedz-uz--urlstore_constr9   r   zuse URL encoding)rp   constrK   rN   z-az
--altcharsz'use alternative characters for encoding)rK   rN   z-oz--outputrC   r,   z'encoded output file (default to stdout))rK   rs   rO   rN   rF   c                 S  rt   ru   rv   rw   r&   r&   r'   rx      ry   c                 S  rt   r{   rv   rw   r&   r&   r'   rx      ry   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)rK   rp   rN   r   r   z-h)argsrz   r&   )rS   ArgumentParserr;   add_argumentr<   r=   rG   Zget_license_textadd_subparsers
add_parserr   registerset_defaultsrB   add_mutually_exclusive_grouprE   rF   r-   rk   r"   vars
parse_argspop)	rk   rX   Z
subparsersZbenchmark_parserZencode_parsergroupZdecode_parserr   rz   r&   r&   r'   main   s   	
r   __main__r{   )r   r   r   r   r   r   r   r
   r   r   r   r   r   r   r   r   )r)   r*   r   r   )r)   r*   r   r   r   r   )r   r   r7   r*   r   r   )r7   r*   r   r   rC   r*   r   r   )
r7   r*   r   r   r   r   rC   r*   r   r   )rc   r*   rd   r   r   r*   rD   )rk   rl   r   r   )#
__future__r   rS   r?   r-   r   r@   r   rA   collections.abcr   pathlibr   Ztimeitr   r   typingr   r	   r<   Zpybase64._typingr
   r   r   r(   r2   r6   rB   rE   rF   ActionrG   rj   r   r!   r&   r&   r&   r'   <module>   s6    	
P




	h
