U
    Æ½„b   ã                   @   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   úG/tmp/pip-unpacked-wheel-iohwuy7z/rest_framework/utils/representation.pyÚ
<listcomp>   s   ÿz manager_repr.<locals>.<listcomp>z%s.%s.all())ÚmodelZ_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¡rT|  	d¡rT| 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 ƒ¡}|rh|rh|d7 }|rv|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 ]„\}}|d| | d 7 }t|dƒrj|t||d ƒ7 }q0t|dƒrˆ|t||d ƒ7 }q0t|dƒr¨|t |j|jd	�7 }q0|t |ƒ7 }q0| jræ|d| d
 7 }|d| d t| jƒ 7 }|S )Nú:z    Ú
z = Úfieldsr   r   Úchild_relation©r)   zclass Meta:z    validators = )	r-   r0   r%   ÚhasattrÚserializer_reprÚ	list_reprr1   Z
validatorsr   )Ú
serializerÚindentr)   ÚretZ
indent_strr0   Ú
field_namer(   r   r   r	   r4   F   s$    


r4   c                 C   s&   | j }t|dƒrt| ||d�S t| ƒS )Nr0   r2   )r   r3   r4   r-   )r6   r7   r   r   r   r	   r5   a   s    
r5   )F)N)Ú__doc__r   Z	django.dbr   Zdjango.utils.encodingr   Zdjango.utils.functionalr   r   r   r-   r4   r5   r   r   r   r	   Ú<module>   s   

