U
    ʹh                     @  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 re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)Z	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   Z
annotationZannotated_rootZrust_field_type r   C./venv/lib/python3.8/site-packages/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   Z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   Z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    )Z
__future__r   r&   r$   typingr%   Ztyping_extensionsr   Z"cryptography.hazmat.bindings._rustr   ZTypeVarr   r   Z
encode_derr   r   r   Zdataclass_transformr)   r   r   r   r   <module>   s*   





