o
    cZh                     @   s`   d Z ddlZddlmZ ddlmZ ddlmZ dd Zdd	 Z	dddZ
dddZdd ZdS )zj
Helper functions for creating user-friendly representations
of serializer classes and serializer fields.
    N)models)	force_str)Promisec                 C   sN   | j }|j}dd |jD }|D ]\}}|| kr"d|jj|f   S qt| S )Nc                 S   s   g | ]}|j |fqS  )name).0managerr   r   Z/var/www/html/lang_env/lib/python3.10/site-packages/rest_framework/utils/representation.py
<listcomp>   s    z manager_repr.<locals>.<listcomp>z%s.%s.all())model_metaZmanagersZobject_namerepr)valuer   optsZnames_and_managersZmanager_nameZmanager_instancer   r   r	   manager_repr   s   r   c                 C   sb   t | tjr
t| S t | tr| jrt| } t| } | dr*| 	dr*| dd  S t
dd| S )Nzu''   z at 0x[0-9A-Fa-f]{4,32}>>)
isinstancer   Managerr   r   Z_delegate_textr   r   
startswithendswithresub)r   r   r   r	   
smart_repr   s   r   Fc                 C   s   | j }|r| }d|d< |dd  ddd | jD }ddd t| D }|r4|r4|d7 }|r;|jj}n| jj}d|||f S )	NTmanychildz, c                 S   s   g | ]}t |qS r   r   )r   valr   r   r	   r
   6   s    zfield_repr.<locals>.<listcomp>c                 S   s    g | ]\}}d |t |f qS )z%s=%sr   )r   keyr   r   r   r	   r
   7   s    z%s(%s%s))	_kwargscopypopjoin_argssorteditems	__class____name__)field
force_manykwargs
arg_stringZkwarg_string
class_namer   r   r	   
field_repr/   s   


r.   c                 C   s   t | |d }d| }|r|j}n| j}| D ]B\}}|d| | d 7 }t|dr5|t||d 7 }qt|drD|t||d 7 }qt|drT|t |j|jd	7 }q|t |7 }q| jrs|d| d
 7 }|d| d t| j 7 }|S )N:z    
z = fieldsr   r   child_relationr*   zclass Meta:z    validators = )	r.   r1   r&   hasattrserializer_repr	list_reprr2   
validatorsr   )
serializerindentr*   retZ
indent_strr1   
field_namer)   r   r   r	   r5   F   s$   


r5   c                 C   s&   | j }t|drt| ||dS t| S )Nr1   r3   )r   r4   r5   r.   )r8   r9   r   r   r   r	   r6   a   s   
r6   )F)N)__doc__r   Z	django.dbr   Zdjango.utils.encodingr   Zdjango.utils.functionalr   r   r   r.   r5   r6   r   r   r   r	   <module>   s    

