o
    0 i                     @  s  U d Z ddlm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
ddlZddlZddl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mZmZmZ d	d
lmZmZmZm Z m!Z!m"Z" eruddlm#Z#m$Z$ edZ%dZ&de'd< e(dd ej)e*e dd edd e+e"dd edd ej,e*ej-dd edd e.e/e
0dj1dd ej2e*ej3e*ej4e*ej5e*iZ6de'd< d>d?d%d&Z7G d'd( d(e	j8Z9			)d@dAd2d3Z:dBdCd8d9Z;dDd;d<Z<e=d=kre<  dS dS )Ez2Command-line tool for CBOR diagnostics and testing    )annotationsN)Callable
CollectionIterableIterator)	ExitStack)datetime)partial)TYPE_CHECKINGAnyBinaryIOTypeVar   )CBORDecoderCBORSimpleValueCBORTag
FrozenDictload	undefined)Literal	TypeAliasTzBstr | float | bool | None | list[JSONValue] | dict[str, JSONValue]r   	JSONValuec                 C  s   | j dddS )Nutf-8backslashreplaceencodingerrors)decodex r!   V/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/cbor2/tool.py<lambda>       r#   c                 C  s   t t| S N)strdictr   r!   r!   r"   r#       s    c                 C  s   d| j dS )Ncbor_simple:d)valuer   r!   r!   r"   r#   !   r$   c                 C  s   dS )Nz
cbor:undefr!   r   r!   r!   r"   r#   "   s    c                 C  s   |   S r%   )	isoformatr   r!   r!   r"   r#   #   s    c                 C     | j S r%   )urnr   r!   r!   r"   r#   %       c                 C  s   d| j d| jiS )NzCBORTag:r)   )tagr*   r   r!   r!   r"   r#   &   s     c                 C  r,   r%   )patternr   r!   r!   r"   r#   (   r.   z dict[type, Callable[[Any], Any]]default_encodersr!   decoderr   r/   r   ignore_tagsCollection[int]returnobjectc                 C  sD   |j |v r|jS |j dkr| |jS | jr d|j  d|j S |S )N   zCBORtag::)r/   r*   Zdecode_from_bytesZ	immutable)r3   r/   r4   r!   r!   r"   tag_hook0   s   

r:   c                   @  s   e Zd ZdddZdS )DefaultEncodervr   r6   c                 C  s*   |j }t|}|r||S tj| |S r%   )	__class__r2   getjsonJSONEncoderdefault)selfr<   obj_typeencoderr!   r!   r"   rA   =   s
   
zDefaultEncoder.defaultN)r<   r   r6   r   )__name__
__module____qualname__rA   r!   r!   r!   r"   r;   <   s    r;   strictfr   ,Callable[[CBORDecoder, CBORTag], Any] | Noneobject_hook3Callable[[CBORDecoder, dict[Any, Any]], Any] | None
str_errors%Literal['strict', 'error', 'replace']Iterator[Any]c                 c  s:    t | |||d}	 z| V  W n
 ty   Y d S w q
)N)r:   rK   rM   )r   r   EOFError)rI   r:   rK   rM   r3   r!   r!   r"   
iterdecodeF   s   rQ   r)   dict_idsset[int] | None$str | list[Any] | dict[str, Any] | Tc                   sP  t  pg  i }t| tsFt| trd| jdS t| ttt frDt|  v r+td 	t|   fdd| D } 
t|  |S | S t|  v rPtd 	t|  |  D ]J\}}t|trl|jddd}nt|tryd|jd}nt|tttfrt|}t|trt| }nt|ttt fr fd	d|D }|||< q[|S )
Nr(   r)   z,Cannot convert self-referential data to JSONc                      g | ]}t | qS r!   
key_to_str.0r    rR   r!   r"   
<listcomp>a       zkey_to_str.<locals>.<listcomp>r   r   r   c                   rU   r!   rV   rX   rZ   r!   r"   r[   w   r\   )set
isinstancer'   r   r*   tuplelistid
ValueErroraddremoveitemsbytesr   r   	frozensetr&   rW   )r)   rR   rvalr<   kr!   rZ   r"   rW   T   s:   





rW   Nonec                  C  s  d} d}t j| |d}|jddtddd |jd	d
dgdd |jdddddd |jdddddd |jdddddd |jdddddd |jddtddd  | }|jdkr_d!}d}n|j}d"}|jd#}d$d% |D }tt	|d&}t
|d'd(d)|d*}	|jD ]u}
t h}|
dkrtjj}n	|t
|
d+d,}|jrtt| }z.|jrt||d-}nt||d-f}|D ]}tjt||	|jd.|j tdd/ |	 d0 qW n t!t"fy } zt#|d }~ww W d    n1 sw   Y  qW d    d S 1 sw   Y  d S )1Nzpython -m cbor2.toolz[A simple command line interface for cbor2 module to validate and pretty-print CBOR objects.)progdescriptionz-oz	--outfilezoutput file-)typehelprA   infiles*z2Collection of CBOR files to process or - for stdin)nargsrA   ro   z-kz--sort-keys
store_trueFz5sort the output of dictionaries alphabetically by key)actionrA   ro   z-pz--prettyzindent the output to look goodz-sz
--sequencez+Parse a sequence of concatenated CBOR itemsz-dz--decodez-CBOR data is base64 encoded (handy for stdin)z-iz--tag-ignorer0   z@Comma separated list of tags to ignore and only return the value)rn   rA   ro   r   T,c                 S  s(   h | ]}t |r|d   rt|qS )r   )lenisdigitint)rY   nr!   r!   r"   	<setcomp>   s   ( zmain.<locals>.<setcomp>)r4   wr   r   )moder   r   closefdrb)r|   )r:   )N   )	sort_keysindentclsensure_ascii
)$argparseArgumentParseradd_argumentr&   
parse_argsoutfileZ
tag_ignoresplitr	   r:   openrp   r   sysstdinbufferenter_contextr   ioBytesIObase64	b64decodereadsequencerQ   r   r?   dumprW   r   prettyr;   writerb   rP   
SystemExit)rk   rl   parseroptionsr   r}   Zignore_sZdroptagsZmy_hookoutfppathstackinfileZobjsobjer!   r!   r"   main~   s   




$r   __main__)r!   )r3   r   r/   r   r4   r5   r6   r7   )NNrH   )
rI   r   r:   rJ   rK   rL   rM   rN   r6   rO   r%   )r)   r   rR   rS   r6   rT   )r6   rj   )>__doc__
__future__r   r   r   decimal	fractionsr   	ipaddressr?   rer   uuidcollections.abcr   r   r   r   
contextlibr   r   	functoolsr	   typingr
   r   r   r   r0   r   r   r   r   r   r   r   r   r   r   __annotations__rf   Decimalr&   rn   FractionUUIDr]   r`   compiler=   IPv4AddressIPv6AddressIPv4NetworkIPv6Networkr2   r:   r@   r;   rQ   rW   r   rE   r!   r!   r!   r"   <module>   sb     

*_
