
    E#i                        S SK Jr  S SKJr  S SKJr  S SKJrJrJ	r	J
r
  SSKJrJrJr  SSKJrJr   " S S	\5      r " S
 S\5      r " S S\5      rg)    )annotations)ABC)contextmanager)Any	GeneratorIteratorList   )	CairoDataCalldataReaderOutOfBoundsError)InvalidTypeExceptionInvalidValueExceptionc                      \ rS rSr% SrS\S'   S r\S 5       r\	SS j5       r
SS jrSS	 jr\	S
 5       r\S 5       rSrg)Context   z
Holds information about context when (de)serializing data. This is needed to inform what and where went
wrong during processing. Every separate (de)serialization should have its own context.
z	List[str]_namespace_stackc                    / U l         g Nr   selfs    r/home/james-whalen/.local/lib/python3.13/site-packages/ccxt/static_dependencies/starknet/serialization/_context.py__init__Context.__init__   s
     "    c                8    SR                  U R                  5      $ )zA
Name of currently processed entity.

:return: transformed path.
.)joinr   r   s    r   current_entityContext.current_entity   s     xx--..r   c              #  ~   #    U R                   R                  U5        Sv   U R                   R                  5         g7f)z
Manager used for maintaining information about names of (de)serialized types. Wraps some errors with
custom errors, adding information about the context.

:param name: name of (de)serialized entity.
N)r   appendpop)r   names     r   push_entityContext.push_entity#   s0      	$$T*!!#s   ;=c                H    U(       d  [        U R                   SU S35      eg )N: r   )r   _error_prefix)r   validtexts      r   ensure_valid_valueContext.ensure_valid_value1   s)    '4+=+=*>ba(HII r   c                f    U(       d*  [        U R                   SU SU S[        U5       S35      eg )Nz: expected z, received 'z' of type 'z'.)r   r*   type)r   valuer+   expected_types       r   ensure_valid_typeContext.ensure_valid_type5   sE    &%%&k- A"G;tE{m2?  r   c              #    #     S v   g ! [          a_  nU R                  (       a  SU R                   S3OSn[        SU SUR                   SUR
                   SUR                   S3	5      UeS nAf[        [        4 a  nUeS nAf[         a   n[        U R                   S	U 35      UeS nAf[         a   n[        U R                   S	U 35      UeS nAff = f7f)
Nzdeserialize ''deserializezNot enough data to z. Can't read z values at position z, z available.r)   )r   r   r    r   requested_sizepositionremaining_lenr   
ValueErrorr*   	TypeError)r   erraction_names      r   _wrap_errorsContext._wrap_errors<   s     	P 
	 ((   3 34A6"  (%k] 3!0011Ecll^SUVYVgVgUhhsu  &';< 	I 	Q'4+=+=*>b(FGSP 	P&$*<*<)=Ru'EFCO	PsI   C	 C
CAA--C BCB**C7CCCc                F    U R                   (       d  gSU R                   S3$ )NErrorzError at path 'r6   )r   r    r   s    r   r*   Context._error_prefixU   s$    $$ !4!4 5Q77r   r   N)r%   strreturnr   )r+   boolr,   rD   )r1   r   r+   rF   r2   rD   )__name__
__module____qualname____firstlineno____doc____annotations__r   propertyr    r   r&   r-   r3   r?   r*   __static_attributes__ r   r   r   r      sq    
  # / / $ $J P P0 8 8r   r   c                  6    \ rS rSrSr\\SS j5       5       rSrg)SerializationContext\   z$
Context used during serialization.
c              #  v   #    U " 5       nUR                  5          Uv   S S S 5        g ! , (       d  f       g = f7fr   )r?   )clscontexts     r   createSerializationContext.createc   s*      %!!#M $##s   9(	9
69rO   N)rE   zIterator[SerializationContext])	rG   rH   rI   rJ   rK   classmethodr   rV   rN   rO   r   r   rQ   rQ   \   s#       r   rQ   c                  d   ^  \ rS rSr% SrS\S'   S	U 4S jjr\\S
S j5       5       r	SS jr
SrU =r$ )DeserializationContextk   z&
Context used during deserialization.
r   readerc                P   > [         TU ]  5         / U l        [        U5      U l        g)zS
Don't use default constructor. Use DeserializationContext.create context manager.
N)superr   r   r   r\   )r   calldata	__class__s     r   r   DeserializationContext.__init__r   s$     	 "$X.r   c              #     #    U " U5      nUR                  5          Uv   UR                  [        U5      5        S S S 5        g ! , (       d  f       g = f7fr   )r?   _ensure_all_values_readlen)rT   datarU   s      r   rV   DeserializationContext.createz   s>      d)!!#M++CI6 $##s   AA	A
AAc           
         U R                   R                  nUS:w  a^  Sn[        X#5      nSR                  S U R                   R	                  U5       5       5      nX#:  a  SOSn[        SU SU U S	U S
35      eg )Nr      ,c              3  8   #    U  H  n[        U5      v   M     g 7fr   )hex).0vs     r   	<genexpr>ADeserializationContext._ensure_all_values_read.<locals>.<genexpr>   s     P/O!s1vv/Os   z... zLast z	 values 'z' out of total z- values were not used during deserialization.)r\   r:   minr   readr   )r   	total_lenvalues_not_usedmax_values_to_showvalues_to_showexamplesuffixs          r   rc   .DeserializationContext._ensure_all_values_read   s    ++33a!" ENhhPt{{/?/?/OPPG-BUF'(	'6(/R[Q\ ]? ?   r   )r   r\   )r_   r   )re   r   rE   z Iterator[DeserializationContext])rs   int)rG   rH   rI   rJ   rK   rL   r   rX   r   rV   rc   rN   __classcell__)r`   s   @r   rZ   rZ   k   s;     / 7  7 r   rZ   N)
__future__r   abcr   
contextlibr   typingr   r   r   r	   _calldata_readerr   r   r   errorsr   r   r   rQ   rZ   rO   r   r   <module>r      sK    "  % 1 1 
 @J8c J8Z7 #W #r   