o
    ¢ØÆhê;  ã                   @   sV  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 d dl	m
Z
mZmZmZ ddlmZ G dd„ dƒZdd	„ Zd-dd„Zed-dd„ƒZed-dd„ƒZdd„ ZG dd„ dejƒZG dd„ dƒZG dd„ dƒZdd„ ZG dd„ dej jƒZdd„ Zedd „ ƒZd!d"„ Ze  d#ej!¡Z"d$d%„ Z#ed&d'„ ƒZ$G d(d)„ d)e j%ƒZ&G d*d+„ d+ee&d,�Z'dS ).é    N)Úto_dictÚto_setÚto_tuple)ÚListDeserializationErrorÚListSerializationErrorÚObjectDeserializationErrorÚObjectSerializationErroré   )ÚListc                   @   s   e Zd ZdZdZdZdZdS )ÚMetaBaseN)Ú__name__Ú
__module__Ú__qualname__ÚfieldsÚfield_namesÚfield_attrsÚsedes© r   r   úc/var/www/html/HyperOracle/crypto_trader/venv/lib/python3.10/site-packages/rlp/sedes/serializable.pyr      s
    r   c                 C   s    t  | ¡}tdd„ | ¡ D ƒƒS )Nc                 s   s    � | ]\}}|d kr|V  qdS )r	   Nr   )Ú.0ÚitemÚnumr   r   r   Ú	<genexpr>"   s   € z"_get_duplicates.<locals>.<genexpr>)ÚcollectionsÚCounterÚtupleÚitems)ÚvaluesÚcountsr   r   r   Ú_get_duplicates    s   
r   Fc           
      C   sÂ   t |ƒ}|rtdt|ƒ› �ƒ‚|t| ƒd … }t|d t| ƒ… ƒ}| | ¡ ¡}|r3tdt|ƒ› �ƒ‚t| ¡ ƒ |¡}|rGtdt|ƒ› �ƒ‚t|ƒ | ¡ ¡}	|s]|	r_tdt|	ƒ› �ƒ‚d S d S )NzDuplicate argument names: zDuplicate kwargs: zUnknown kwargs: zMissing kwargs: )r   Ú	TypeErrorÚsortedÚlenÚsetÚintersectionÚkeysÚ
difference)
ÚargsÚkwargsÚ	arg_namesÚallow_missingÚduplicate_arg_namesÚneeded_kwargsÚused_kwargsÚduplicate_kwargsÚunknown_kwargsÚmissing_kwargsr   r   r   Úvalidate_args_and_kwargs%   s   ÿr1   c                 c   sD   � t | |||d� |t| ƒd … }| E d H  |D ]}|| V  qd S ©N©r*   )r1   r"   )r'   r(   r)   r*   r,   Úarg_namer   r   r   Úmerge_kwargs_to_args:   s   €
ÿr5   c                 c   sB   � t | |||d� | ¡ E d H  t| |ƒD ]	\}}||fV  qd S r2   )r1   r   Úzip)r'   r(   r)   r*   ÚvalueÚnamer   r   r   Úmerge_args_to_kwargsE   s   €ÿr9   c                 C   sL   t | ttfƒr"t |ttfƒr"t| ƒt|ƒko!tdd„ t| |ƒD ƒƒS | |kS )zq
    Equality comparison that allows for equality between tuple and list types with
    equivalent elements.
    c                 s   s   � | ]}t |Ž V  qd S ©N)Ú_eq)r   Úpairr   r   r   r   T   ó   € z_eq.<locals>.<genexpr>)Ú
isinstancer   Úlistr"   Úallr6   )ÚleftÚrightr   r   r   r;   N   s   (r;   c                   @   s   e Zd ZdZdZdZdS )ÚChangesetStateÚINITIALIZEDÚOPENÚCLOSEDN)r   r   r   rD   rE   rF   r   r   r   r   rC   Y   s    rC   c                   @   s*   e Zd ZdZdd„ Zddd„Zdd„ ZdS )	ÚChangesetFieldNc                 C   s
   || _ d S r:   )Úfield)ÚselfrH   r   r   r   Ú__init__b   ó   
zChangesetField.__init__c                 C   sP   |d u r| S |j tjurtdƒ‚z|j| j W S  ty'   t|j| jƒ Y S w ©Nz6Changeset is not active.  Attribute access not allowed)	Ú	__state__rC   rE   ÚAttributeErrorÚ__diff__rH   ÚKeyErrorÚgetattrÚ__original__)rI   ÚinstanceÚtyper   r   r   Ú__get__e   s   ÿÿzChangesetField.__get__c                 C   s$   |j tjur
tdƒ‚||j| j< d S rL   )rM   rC   rE   rN   rO   rH   )rI   rS   r7   r   r   r   Ú__set__r   s
   ÿzChangesetField.__set__r:   )r   r   r   rH   rJ   rU   rV   r   r   r   r   rG   _   s
    
rG   c                   @   sR   e Zd ZdZdZdZddd„Zdd„ Zdd„ Zdd	„ Z	d
d„ Z
dd„ Zdd„ ZdS )ÚBaseChangesetNc                 C   s   || _ tj| _|p
i | _d S r:   )rR   rC   rD   rM   rO   )rI   ÚobjÚchangesr   r   r   rJ   ‚   s   zBaseChangeset.__init__c                 C   s   |   ¡ }|  ¡  |S r:   )Ú	build_rlpÚclose)rI   rX   r   r   r   Úcommit‡   s   zBaseChangeset.commitc                    s@   ˆ j tjkr‡ fdd„ˆ jjjD ƒ}tˆ jƒdi |¤ŽS tdƒ‚)Nc                    s"   i | ]}|ˆ j  |ˆ j| ¡“qS r   )rO   ÚgetrR   ©r   r8   ©rI   r   r   Ú
<dictcomp>Ž   s    ÿÿz+BaseChangeset.build_rlp.<locals>.<dictcomp>z4Cannot open Changeset which is not in the OPEN stater   )rM   rC   rE   rR   Ú_metar   rT   Ú
ValueError)rI   Úfield_kwargsr   r_   r   rZ   Œ   s   
þzBaseChangeset.build_rlpc                 C   ó    | j tjkrtj| _ d S tdƒ‚©Nz;Cannot open Changeset which is not in the INITIALIZED state)rM   rC   rD   rE   rb   r_   r   r   r   Úopen–   s
   ÿzBaseChangeset.openc                 C   rd   )Nz5Cannot close Changeset which is not in the OPEN state)rM   rC   rE   rF   rb   r_   r   r   r   r[   ž   s   zBaseChangeset.closec                 C   s    | j tjkr|  ¡  | S tdƒ‚re   )rM   rC   rD   rf   rb   r_   r   r   r   Ú	__enter__¤   s   ÿzBaseChangeset.__enter__c                 C   s   | j tjkr|  ¡  d S d S r:   )rM   rC   rE   r[   )rI   Úexc_typeÚ	exc_valueÚ	tracebackr   r   r   Ú__exit__­   s   ÿzBaseChangeset.__exit__r:   )r   r   r   rR   rM   rO   rJ   r\   rZ   rf   r[   rg   rk   r   r   r   r   rW   z   s    

	rW   c                 C   s4   dd„ | j jD ƒ}t| jj› d�tf|ƒ}|| |ƒS )Nc                 S   s   i | ]}|t |ƒ“qS r   )rG   r^   r   r   r   r`   ³   ó    zChangeset.<locals>.<dictcomp>Ú	Changeset)ra   r   rT   Ú	__class__r   rW   )rX   rY   Ú	namespaceÚclsr   r   r   rm   ²   s   ý
rm   c                   @   s˜   e Zd Zdd„ ZdZdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dZdd„ Zdd„ Zedd„ ƒZedd„ ƒZdd„ Zdd„ Zdd„ ZdZdd „ ZdS )!ÚBaseSerializablec                 O   s–   |rt ||| jjƒ}n|}t|ƒt| jjƒkr5tdt| jjƒ› dt|ƒ› dd | jjt|ƒd … ¡› �ƒ‚t|| jjƒD ]\}}t| |t	|ƒƒ q<d S )Nz"Argument count mismatch. expected z - got z - missing ú,)
r5   ra   r   r"   r    Újoinr6   r   ÚsetattrÚmake_immutable)rI   r'   r(   Úfield_valuesr7   Úattrr   r   r   rJ   ½   s   ÿþÿÿzBaseSerializable.__init__Nc                 C   s   dd„ t | jj| ƒD ƒS )Nc                 S   s   i | ]\}}||“qS r   r   )r   rH   r7   r   r   r   r`   Ð   rl   z,BaseSerializable.as_dict.<locals>.<dictcomp>)r6   ra   r   r_   r   r   r   Úas_dictÏ   s   zBaseSerializable.as_dictc                 c   s    � | j jD ]}t| |ƒV  qd S r:   )ra   r   rQ   )rI   rw   r   r   r   Ú__iter__Ò   s   €ÿzBaseSerializable.__iter__c                    sr   t |tƒrˆ jj| }tˆ |ƒS t |tƒr&ˆ jj| }t‡ fdd„|D ƒƒS t |tƒr0tˆ |ƒS tdt	|ƒ› �ƒ‚)Nc                 3   s   � | ]}t ˆ |ƒV  qd S r:   ©rQ   ©r   rH   r_   r   r   r   Ü   s   € z/BaseSerializable.__getitem__.<locals>.<genexpr>z"Unsupported type for __getitem__: )
r>   Úintra   r   rQ   Úslicer   ÚstrÚ
IndexErrorrT   )rI   Úidxrw   Úfield_slicer   r_   r   Ú__getitem__Ö   s   




zBaseSerializable.__getitem__c                 C   s   t | jjƒS r:   )r"   ra   r   r_   r   r   r   Ú__len__â   s   zBaseSerializable.__len__c                 C   s   t |tƒot| ƒt|ƒkS r:   )r>   ÚSerializableÚhash)rI   Úotherr   r   r   Ú__eq__å   s   zBaseSerializable.__eq__c                 C   s   | j  ¡ }d |d< |S )NÚ_hash_cache)Ú__dict__Úcopy)rI   Ústater   r   r   Ú__getstate__è   s   
zBaseSerializable.__getstate__c                 C   s   | j d u rtt| ƒƒ| _ | j S r:   )rˆ   r…   r   r_   r   r   r   Ú__hash__ó   s   
zBaseSerializable.__hash__c                 C   s6   t dd„ |  ¡  ¡ D ƒƒ}t| ƒj› dd |¡› d�S )Nc                 s   s"   � | ]\}}|› d |›�V  qdS )Ú=Nr   )r   ÚkÚvr   r   r   r   ú   s   €  z,BaseSerializable.__repr__.<locals>.<genexpr>ú(z, ú))r   rx   r   rT   r   rs   )rI   Úkeyword_argsr   r   r   Ú__repr__ù   s   zBaseSerializable.__repr__c              
   C   s8   z| j j |¡W S  ty } zt|| |d�‚d }~ww )N)rX   r   Úlist_exception)ra   r   Ú	serializer   r   )rp   rX   Úer   r   r   r–   ý   s   €ÿzBaseSerializable.serializec              
   K   s\   z	| j j |¡}W n ty } zt|| |d�‚d }~ww t|i | j jƒ}| di |¤|¤ŽS )N)Úserialr   r•   r   )ra   r   Údeserializer   r   r9   r   )rp   r˜   Úextra_kwargsr   r—   Úargs_as_kwargsr   r   r   r™     s   €ÿzBaseSerializable.deserializec                    sz   t | jjƒ | ¡ ¡ | jjd t|ƒ… ¡‰ ‡ fdd„|  ¡  ¡ D ƒ}tdi |¤|¤Ž}t	||| jjƒ}t
| ƒdi |¤ŽS )Nc                    s$   i | ]\}}|ˆ v r|t  |¡“qS r   )rŠ   Údeepcopy)r   Úkeyr7   ©Úmissing_overridesr   r   r`     s
    
þz)BaseSerializable.copy.<locals>.<dictcomp>r   )r#   ra   r   r&   r%   r"   rx   r   Údictr9   rT   )rI   r'   r(   Úunchanged_kwargsÚcombined_kwargsÚ
all_kwargsr   rž   r   rŠ     s   

ý

þzBaseSerializable.copyc                 C   ó   |   ¡ S r:   ©rŠ   r_   r   r   r   Ú__copy__  ó   zBaseSerializable.__copy__c                 G   r¤   r:   r¥   )rI   r'   r   r   r   Ú__deepcopy__   r§   zBaseSerializable.__deepcopy__Fc                 O   s    t ||| jjdd�}t| |d�S )NTr3   )rY   )r9   ra   r   rm   )rI   r'   r(   r›   r   r   r   Úbuild_changeset%  s   üz BaseSerializable.build_changeset)r   r   r   rJ   Ú_cached_rlprx   ry   r‚   rƒ   r‡   rŒ   rˆ   r�   r”   Úclassmethodr–   r™   rŠ   r¦   r¨   Ú_in_mutable_contextr©   r   r   r   r   rq   ¼   s*    	

	rq   c                 C   s    t | tƒrtdd„ | D ƒƒS | S )Nc                 s   ó   � | ]}t |ƒV  qd S r:   )ru   ©r   r   r   r   r   r   1  r=   z!make_immutable.<locals>.<genexpr>)r>   r?   r   ©r7   r   r   r   ru   /  s   
ru   c                 c   sD   � t | ƒ |¡}| D ]}	 d| }||vr| |¡ |V  nqq
d S )NTÚ_)r#   ÚunionÚadd)r   Úextra_namespacero   rH   r   r   r   Ú_mk_field_attrs6  s   €
ûúr´   c                    s"   ‡ fdd„}‡ fdd„}t ||ƒS )Nc                    s
   t | ˆ ƒS r:   rz   r_   ©rw   r   r   Úfield_fn_getterC  rK   z+_mk_field_property.<locals>.field_fn_getterc                    s   | j stdƒ‚t| ˆ |ƒ d S )Nzcan't set attribute)r¬   rN   rt   )rI   r7   rµ   r   r   Úfield_fn_setterF  s   z+_mk_field_property.<locals>.field_fn_setter)Úproperty)rH   rw   r¶   r·   r   rµ   r   Ú_mk_field_propertyB  s   
r¹   z^[^\d\W]\w*\Zc                 C   s   t | tƒsdS tt | ¡ƒS )NF)r>   r~   ÚboolÚIDENTIFIER_REGEXÚmatchr¯   r   r   r   Ú_is_valid_identifierQ  s   
r½   c                 c   s:   � t | dƒr| j ¡ E d H  t | dƒr| jE d H  d S d S )Nr‰   Ú	__slots__)Úhasattrr‰   r%   r¾   )rp   r   r   r   Ú_get_class_namespaceX  s   €

ÿrÀ   c                       s   e Zd Z‡ fdd„Z‡  ZS )ÚSerializableBasec              	      sÌ  t ƒ j}tdd„ |D ƒƒ}t|ƒdk}t|ƒ}d|v }|s$|| |||ƒS |s=|r,tdƒ‚|d }	t|	dƒr:|	jj}
nd}
ntd	d„ | 	d¡D ƒƒ}
|
rRt
|
Ž \}}nd
\}}t|ƒ}|rhtdd t|ƒ¡› �ƒ‚dd„ |D ƒ}|r‚tdd dd„ t|ƒD ƒ¡› �ƒ‚dd„ |D ƒ}| |¡}|rœtdd t|ƒ¡› �ƒ‚t| ¡ ƒ dd„ |D ƒ¡}t||ƒ}|
||t|ƒdœ}| 	dt¡}td|f|ƒ}||d< tdd„ t
|j|jƒD ƒƒ}|| ||t|t| ¡ ƒ ƒƒS )Nc                 s   s   � | ]
}t |tƒr|V  qd S r:   )r>   rÁ   )r   Úbr   r   r   r   d  s   € z+SerializableBase.__new__.<locals>.<genexpr>r	   r   ziCannot create subclass from multiple parent `Serializable` classes without explicit `fields` declaration.r   ra   r   c                 s   r­   r:   )r   r{   r   r   r   r   €  r=   )r   r   zAThe following fields are duplicated in the `fields` declaration: rr   c                 S   s   h | ]}t |ƒs|’qS r   )r½   )r   Ú
field_namer   r   r   Ú	<setcomp>‘  s    ýÿz+SerializableBase.__new__.<locals>.<setcomp>z<The following field names are not valid python identifiers: c                 s   s   � | ]	}d |› d �V  qdS )ú`Nr   r®   r   r   r   r   ™  s   € c                 S   s(   h | ]}t |d ƒr|jjD ]}|’qqS )ra   )r¿   ra   r   )r   ÚbaserÃ   r   r   r   rÄ   �  s    ýüýÿz�Subclasses of `Serializable` **must** contain a full superset of the fields defined in their parent classes.  The following fields are missing: c                 s   s.   � | ]}|j D ]}t|ƒD ]}|V  qqqd S r:   )Ú__mro__rÀ   )r   rÆ   Ú
parent_clsrw   r   r   r   r   ±  s   € ýüýÿ)r   r   r   r   ÚMetac                 s   s"   � | ]\}}|t ||ƒfV  qd S r:   )r¹   )r   rH   rw   r   r   r   r   Ê  s
   € ÿ
ÿ)ÚsuperÚ__new__r   r"   Úanyr    r¿   ra   r   Úpopr6   r   rs   r!   r&   r#   r%   r±   r´   r
   r   rT   r   r   r    r   )rp   r8   ÚbasesÚattrsÚ	super_newÚserializable_basesÚ!has_multiple_serializable_parentsÚis_serializable_subclassÚdeclares_fieldsÚparent_serializabler   r   r   Úduplicate_field_namesÚinvalid_field_namesÚparent_field_namesÚmissing_fieldsÚreserved_namespacer   Úmeta_namespaceÚ	meta_baseÚmetaÚfield_props©rn   r   r   rË   a  sŽ   ÿ

ÿÿþÿÿþ
	þÿ	þ
üýþüzSerializableBase.__new__)r   r   r   rË   Ú__classcell__r   r   rß   r   rÁ   `  s    rÁ   c                   @   s   e Zd ZdZdS )r„   z2
    The base class for serializable objects.
    N)r   r   r   Ú__doc__r   r   r   r   r„   ×  s    r„   )Ú	metaclass)F)(Úabcr   rŠ   ÚenumÚreÚ	eth_utilsr   r   r   Úrlp.exceptionsr   r   r   r   Úlistsr
   r   r   r1   r5   r9   r;   ÚEnumrC   rG   rW   rm   ÚSequencerq   ru   r´   r¹   ÚcompileÚUNICODEr»   r½   rÀ   ÚABCMetarÁ   r„   r   r   r   r   Ú<module>   s>    

8
s

w