o
    Y۷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!   @/home/ubuntu/vllm_env/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*   decode_from_bytes	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"   rC   =   s
   
zDefaultEncoder.defaultN)r>   r   r6   r   )__name__
__module____qualname__rC   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<   rM   rO   )r   r   EOFError)rK   r<   rM   rO   r3   r!   r!   r"   
iterdecodeF   s   rS   r)   dict_idsset[int] | None$str | list[Any] | dict[str, Any] | Tc                   sZ  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 ]O\}}t|trl|jddd}nt|tryd|jd}nt|tttfrt|}t|trt| ||< q[t|ttt fr fd	d|D ||< q[|||< q[|S )
Nr(   r)   z,Cannot convert self-referential data to JSONc                      g | ]}t | qS r!   
key_to_str.0r    rT   r!   r"   
<listcomp>a       zkey_to_str.<locals>.<listcomp>r   r   r   c                   rW   r!   rX   rZ   r\   r!   r"   r]   w   r^   )set
isinstancer'   r   r*   tuplelistid
ValueErroraddremoveitemsbytesr   r   	frozensetr&   rY   )r)   rT   rvalr>   kr!   r\   r"   rY   T   s:   





rY   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helprC   infiles*z2Collection of CBOR files to process or - for stdin)nargsrC   rq   z-kz--sort-keys
store_trueFz5sort the output of dictionaries alphabetically by key)actionrC   rq   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)rp   rC   rq   r   T,c                 S  s(   h | ]}t |r|d   rt|qS )r   )lenisdigitint)r[   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outfile
tag_ignoresplitr	   r<   openrr   r   sysstdinbufferenter_contextr   ioBytesIObase64	b64decodereadsequencerS   r   rA   dumprY   r   prettyr=   writerd   rR   
SystemExit)rm   rn   parseroptionsr   r   ignore_sdroptagsmy_hookoutfppathstackinfileobjsobjer!   r!   r"   main~   s   




$r   __main__)r!   )r3   r   r/   r   r4   r5   r6   r7   )NNrJ   )
rK   r   r<   rL   rM   rN   rO   rP   r6   rQ   r%   )r)   r   rT   rU   r6   rV   )r6   rl   )>__doc__
__future__r   r   r   decimal	fractionsr   	ipaddressrA   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__rh   Decimalr&   rp   FractionUUIDr_   rb   compiler?   IPv4AddressIPv6AddressIPv4NetworkIPv6Networkr2   r<   rB   r=   rS   rY   r   rG   r!   r!   r!   r"   <module>   sb     

*_
