U
    l5{i  ã                   @  sú   d dl mZ d dlZd dlZd dlZejdk rPd dlZejdk rHejZqVejZnejZd dlm	Z	 ej
ddd�Ze 
d	¡Ze	jZd
dddœdd„Zdddœdd„Zdddœdd„Zejdk rÚejdd�dddœdd„ƒZnejdd�dddœdd„ƒZdS )é    )ÚannotationsN)é   é   )r   é	   )Údeclarative_asn1ÚTT)Ú	covariantÚUz
typing.AnyÚstrzdeclarative_asn1.AnnotatedType)Ú
field_typeÚ
field_nameÚreturnc                 C  sL   t  ¡ }t| dƒr6| j}t|t jƒs2td|› �ƒ‚|S t  | ¡}t  ||¡S )NÚ__asn1_root__zunsupported root type: )r   Ú
AnnotationÚhasattrr   Ú
isinstanceÚAnnotatedTypeÚ	TypeErrorZnon_root_python_to_rust)r   r   Ú
annotationZannotated_rootZrust_field_type© r   úA/tmp/pip-unpacked-wheel-6hw_jadn/cryptography/hazmat/asn1/asn1.pyÚ_normalize_field_type!   s    

r   zdict[str, type]z)dict[str, declarative_asn1.AnnotatedType])Ú
raw_fieldsr   c                 C  s,   i }|   ¡ D ]\}}t||ƒ}|||< q|S )N)Úitemsr   )r   Úfieldsr   r   Zannotated_field_typer   r   r   Ú_annotate_fields1   s
    

r   ztype[U]ÚNone)Úclsr   c                 C  s:   t | dd�}t tj | t|ƒ¡t ¡ ¡}t| d|ƒ d S )NT)Zinclude_extrasr   )Úget_type_hintsr   r   ÚTypeÚSequencer   r   Úsetattr)r   r   Úrootr   r   r   Ú_register_asn1_sequence>   s    þr#   )Zkw_only_defaultc                 C  s@   t jdkr"tjddddd�| ƒ}ntjddd�| ƒ}t|ƒ |S )N)r   é
   FT©ÚreprÚeqZ
match_argsZkw_only)r&   r'   )ÚsysÚversion_infoÚdataclassesÚ	dataclassr#   ©r   Zdataclass_clsr   r   r   ÚsequenceP   s"    
ø	÷þýr-   c                 C  s"   t jddddd�| ƒ}t|ƒ |S )NFTr%   )r*   r+   r#   r,   r   r   r   r-   i   s    üû)Ú
__future__r   r*   r(   Útypingr)   Ztyping_extensionsr   Z"cryptography.hazmat.bindings._rustr   ÚTypeVarr   r	   Z
encode_derr   r   r#   Zdataclass_transformr-   r   r   r   r   Ú<module>   s*   





