
    ]jT                     ^    d dl mZ 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)	    )Any)get_overridehas_override)OpenApiSerializerExtension)ComponentIdentityget_doc)	Directionc                   <    e Zd ZdZdZd ZdedefdZd Z	defdZ
y	)
$OpenApiDataclassSerializerExtensionsz:rest_framework_dataclasses.serializers.DataclassSerializerTc                    t        | j                  d      rt        | j                  d      S t        t        | j                  dd      dd       | j                  j                  j
                  S t        | j                  j                  j                  d      r*t        | j                  j                  j                  d      S | j                  j                  j                  j                  S )zeUse the dataclass name in the schema, instead of the serializer prefix (which can be just Dataclass).component_nameMetaNref_name)	r   targetr   getattrr   r   dataclass_definitiondataclass_type__name__)selfs    \/root/env/lib/python3.12/site-packages/drf_spectacular/contrib/rest_framework_dataclasses.pyget_namez-OpenApiDataclassSerializerExtensions.get_name   s    %56-=>>74;;5z4HT;;##,,,88GGIYZ @ @ O OQabb{{//>>GGG    	directionreturnc                 T    t        | j                  j                  j                        S )N)r   r   r   r   )r   auto_schemar   s      r   get_identityz1OpenApiDataclassSerializerExtensions.get_identity   s     !A!A!P!PQQr   c                 B    ddl m} d|v r|d   t        |      k(  r|d= |S )zDStrip the DataclassSerializer library documentation from the schema.r   )DataclassSerializerdescription)&rest_framework_dataclasses.serializersr   r   )r   schemar   s      r   strip_library_docz6OpenApiDataclassSerializerExtensions.strip_library_doc   s,    NF"vm'<H[@\'\}%r   c                 `    |j                  | j                  |d      }| j                  |      S )z/"Generate the schema for a DataclassSerializer.T)bypass_extensions)_map_serializerr   r#   )r   r   r   r"   s       r   map_serializerz3OpenApiDataclassSerializerExtensions.map_serializer!   s/    ,,T[[)W[,\%%f--r   N)r   
__module____qualname__target_classmatch_subclassesr   r	   r   r   r#   r'    r   r   r   r   	   s:    OLHR9 R R.Y .r   r   N)typingr   drf_spectacular.drainager   r   drf_spectacular.extensionsr   drf_spectacular.plumbingr   r   drf_spectacular.utilsr	   r   r,   r   r   <module>r2      s!     ? A ? +.+E .r   