
    R1i                     R    d dl mZmZ d dlmZ d dlmZmZ d dlm	Z	  G d de      Z
y)    )set_overridewarn)OpenApiSerializerExtension)ResolvedComponentbuild_basic_type)OpenApiTypesc                   $    e Zd ZdZdZdZd Zd Zy)PydanticExtensiona  
    Allows using pydantic models on @extend_schema(request=..., response=...) to
    describe your API.

    We only have partial support for pydantic's version of dataclass, due to the way they
    are designed. The outermost class (the @extend_schema argument) has to be a subclass
    of pydantic.BaseModel. Inside this outermost BaseModel, any combination of dataclass
    and BaseModel can be used.
    zpydantic.BaseModelTc                 \    t        | j                  dd       | j                  j                  S )Nsuppress_collision_warningT)r   target__name__)selfauto_schema	directions      d/home/cursorai/projects/iching/venv/lib/python3.12/site-packages/drf_spectacular/contrib/pydantic.pyget_namezPydanticExtension.get_name   s%     	T[[">E{{###    c                 d   	 ddl m}  || j                  dd      }|j                  di       j                         D ]=  \  }}t        |t        j                  ||      }|j                  j                  |       ? |S # t        $ r' t        d       t	        t
        j                        cY S w xY w)	Nr   )model_json_schemaz>Only pydantic >= 2 is supported. defaulting to generic object.z#/components/schemas/{model}serialization)ref_templatemodez$defs)nametypeobjectschema)pydantic.json_schemar   ImportErrorr   r   r   OBJECTr   popitemsr   SCHEMAregistryregister_on_missing)r   r   r   r   r   sub_name
sub_schema	components           r   map_serializerz PydanticExtension.map_serializer   s    	9>
 #4;;=[bqr %+JJw$;$A$A$C Hj)&--!	I   44Y? %D !  	9QR#L$7$788	9s   A? ?-B/.B/N)r   
__module____qualname____doc__target_classmatch_subclassesr   r)    r   r   r
   r
      s     (L$r   r
   N)drf_spectacular.drainager   r   drf_spectacular.extensionsr   drf_spectacular.plumbingr   r   drf_spectacular.typesr   r
   r/   r   r   <module>r4      s    7 A H .+2 +r   