o
    bi                     @  s   d dl mZ d dlZd dlZd dlZejdk r(d dlZejdk r$ejZne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Zd!ddZd"ddZejdk raejddd#ddZdS ejddd#ddZdS )$    )annotationsN)      )r   	   )declarative_asn1TT)	covariantU
field_type
typing.Any
field_namestrreturndeclarative_asn1.AnnotatedTypec                 C  sL   t  }t| dr| j}t|t jst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   W/home/kim/smarthome/.venv/lib/python3.10/site-packages/cryptography/hazmat/asn1/asn1.py_normalize_field_type!   s   

r   
raw_fieldsdict[str, type])dict[str, declarative_asn1.AnnotatedType]c                 C  s,   i }|   D ]\}}t||}|||< q|S )N)itemsr   )r   fieldsr   r
   Zannotated_field_typer   r   r   _annotate_fields1   s
   

r   clstype[U]Nonec                 C  s:   t | dd}ttj| t|t }t| d| d S )NT)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eq
match_argskw_only)r,   r-   )sysversion_infodataclasses	dataclassr)   r    Zdataclass_clsr   r   r   sequenceP   s"   
	r5   c                 C  s"   t jddddd| }t| |S )NFTr+   )r2   r3   r)   r4   r   r   r   r5   i   s   )r
   r   r   r   r   r   )r   r   r   r   )r    r!   r   r"   )r    r!   r   r!   )
__future__r   r2   r0   typingr1   Ztyping_extensionsr$   Z"cryptography.hazmat.bindings._rustr   TypeVarr   r	   Z
encode_derr   r   r)   Zdataclass_transformr5   r   r   r   r   <module>   s,   








