
    'h                     J   d dl Z d dlZd dlmZ d dlmZ  G d dej                        Zdej                  dej                  de
d	ej                  fd
Zdej                  dej                  d	ej                  fdZdej                  dej                  d	ej                  fdZy)    N)serializable)	typecheckc                   v    e Zd ZU dZej
                  ej                  eej                  f      e	d<   	 d Z
d Zy)StateObjectz
    An object with serializable state.

    State attributes can either be serializable types(str, tuple, bool, ...)
    or StateObject instances themselves.
    _stateobject_attributesc                     i }| j                   j                         D ]   \  }}t        | |      }t        ||      ||<   " |S )z(
        Retrieve object state.
        )r   itemsgetattr	get_state)selfstateattrclsvals        m/var/www/html/scrapers/gsc/venv/lib/python3.12/site-packages/seleniumwire/thirdparty/mitmproxy/stateobject.pyr   zStateObject.get_state   sN     55;;= 	.ID#$%C#C-E$K	.     c           	      f   |j                         }| j                  j                         D ]h  \  }}|j                  |      }|t	        | ||       't        | |d      }t        |d      r|j                  |       Rt	        | |t        ||             j |rt        dj                  |            y)zK
        Load object state from data returned by a get_state call.
        N	set_statez$Unexpected State in __setstate__: {})copyr   r	   popsetattrr
   hasattrr   make_objectRuntimeWarningformat)r   r   r   r   r   currs         r   r   zStateObject.set_state!   s     

55;;= 		?ID#))D/C{dC(tT404-NN3'D$C(=>		?  !G!N!Nu!UVV r   N)__name__
__module____qualname____doc__typingClassVarMutableMappingstrAny__annotations__r   r    r   r   r   r      s;     $__V-B-B3

?-STTWr   r   typeinfor   makereturnc           
      |   |y rt        | d      r| j                  |      S st        |d      r|j                         S t        |       }|j	                  d      r0t        j                  |       }|D cg c]  }t        ||       c}S |j	                  d      ret        j                  |       }t        |      t        |      k7  rt        dj                  ||            t        fdt        ||      D              S |j	                  d      rRt        j                  |       \  }}|j                         D 	
ci c]  \  }	}
t        ||	      t        ||
        c}
}	S |j	                  d      r	 t!        j"                  |       |S  | |      S c c}w c c}
}	w # t$        $ r t        d	|       w xY w)
N
from_stater   ztyping.Listztyping.Tuplez"Invalid data. Expected {}, got {}.c              3   >   K   | ]  \  }}t        ||        y w)N_process).0Txr)   s      r   	<genexpr>z_process.<locals>.<genexpr>E   s#      
%)QHQ4 
s   ztyping.Dictz
typing.AnyzData not serializable: )r   r,   r   r$   
startswithr   sequence_typer/   tuple_typeslen
ValueErrorr   tuplezipmapping_typesr	   jsondumps	TypeError)r(   r   r)   typenamer1   r2   Tsk_clsv_clskvs     `        r   r/   r/   4   s   
{	'(L1""3''gc;/}}8}H=)##H-.12At$22			^	,""8,r7c#hAHHSQRR 
-0S\
 
 	
 
		]	+ ..x8u 		
1 UAt$hua&>>
 	
 
		\	*
	>JJsO 
}3 3
  	>6se<==	>s   7F #F9F# #F;c                     t        | |d      S )z1Create an object based on the state given in val.Tr.   r(   r   s     r   r   r   \   s    Hc4((r   c                     t        | |d      S )z)Get the state of the object given as val.Fr.   rF   s     r   r   r   a   s    Hc5))r   )r<   r!   +seleniumwire.thirdparty.mitmproxy.coretypesr   'seleniumwire.thirdparty.mitmproxy.utilsr   Serializabler   Typer%   boolr/   r   r   r'   r   r   <module>rM      s      D =)W,++ )WX%y~~ %FJJ %d %vzz %P)).. )vzz )fjj )
*	 *VZZ *FJJ *r   