
     h                         d dl mZ d dlZd dlmZmZmZ ddlmZ ddl	m
Z
 ddlmZmZ  G d	 d
ee          Z G d de          ZdS )    )OrderedDictN)CursorPaginationLimitOffsetPaginationPageNumberPagination   )openapi)force_real_str   )FilterInspectorPaginatorInspectorc                   $    e Zd ZdZd Zd Zd ZdS )CoreAPICompatInspectorzConverts ``coreapi.Field``\ s to :class:`.openapi.Parameter`\ s for filters and paginators that implement a
    ``get_schema_fields`` method.
    c                 x     g }t          |d          r|                     j                  } fd|D             S )Nget_schema_fieldsc                 :    g | ]}                     |          S  coreapi_field_to_parameter.0fieldselfs     U/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/drf_yasg/inspectors/query.py
<listcomp>zCCoreAPICompatInspector.get_paginator_parameters.<locals>.<listcomp>   '    KKK5//66KKK    hasattrr   view)r   	paginatorfieldss   `  r   get_paginator_parametersz/CoreAPICompatInspector.get_paginator_parameters   sJ    9122 	<00;;FKKKKFKKKKr   c                 x     g }t          |d          r|                     j                  } fd|D             S )Nr   c                 :    g | ]}                     |          S r   r   r   s     r   r   z@CoreAPICompatInspector.get_filter_parameters.<locals>.<listcomp>   r   r   r   )r   filter_backendr!   s   `  r   get_filter_parametersz,CoreAPICompatInspector.get_filter_parameters   sK    >#677 	A#55di@@FKKKKFKKKKr   c                 8   t           j        t           j        t           j        t           j        d}t          j        t           j        t          j        t           j        t          j	        t           j
        t          j        t           j        i}g d}|j        t          j        d|j        ||j                 |j        rt%          j                  nd|                    t+                    t           j
                  dt-          fd|D                       S )zConvert an instance of `coreapi.Field` to a swagger :class:`.Parameter` object.

        :param coreapi.Field field:
        :rtype: openapi.Parameter
        )querypathformbody)formatpatternenum
min_length
max_lengthN)namein_requireddescriptiontypec              3   >   K   | ]}|t          |d           fV  d S )N)getattr)r   attrschemas     r   	<genexpr>zDCoreAPICompatInspector.coreapi_field_to_parameter.<locals>.<genexpr>8   s4      [[$4t!<!<=[[[[[[r   r   )r   IN_QUERYIN_PATHIN_FORM
coreschemaIntegerTYPE_INTEGERNumberTYPE_NUMBERStringTYPE_STRINGBooleanTYPE_BOOLEANr9   	Parameterr1   locationr3   r	   r4   getr5   r   )r   r   location_to_incoreapi_typescoreschema_attrsr9   s        @r   r   z1CoreAPICompatInspector.coreapi_field_to_parameter   s     %OOO	
 
  4w2w2 4	
 UTT  
u~.^>DNv'9:::$""4<<1DEE
 
 [[[[JZ[[[[[
 
 	
r   N)__name__
__module____qualname____doc__r"   r&   r   r   r   r   r   r      sQ         L L LL L L
 
 
 
 
r   r   c                       e Zd ZdZd ZdS )DjangoRestResponsePaginationzProvides response schema pagination wrapping for django-rest-framework's LimitOffsetPagination,
    PageNumberPagination and CursorPagination
    c                 N   |j         t          j        k    s
J d            d }t          |t          t
          t          f          rt          |t                     }t          j        t          j        t          d|rt          j        t          j
                  nd fdt          j        t          j        t          j        d          fdt          j        t          j        t          j        d          fd|ff          dg	          }|r|j                            d
d           |S )Nz(array return expected for paged responsecount)r5   nextT)r5   r,   
x_nullablepreviousresults)r5   
propertiesr3   r   )r5   r   
TYPE_ARRAY
isinstancer   r   r   SchemaTYPE_OBJECTr   r@   rD   
FORMAT_URIr3   insert)r   r    response_schemapaged_schema	has_counts        r   get_paginated_responsez3DjangoRestResponsePagination.get_paginated_responseA   s    #w'9999;e999i"79MO_!`aa 	9&y2BCCCI">(&9^gn'2FGGGGZ^_W^1DWM_lpqqqrW5HQXQcpt!u!u!uv0	(   $	 	 	L  9%,,Q888r   N)rM   rN   rO   rP   rc   r   r   r   rR   rR   <   s-             r   rR   )collectionsr   r>   rest_framework.paginationr   r   r    r   utilsr	   baser   r   r   rR   r   r   r   <module>ri      s    # # # # # #     c c c c c c c c c c       " " " " " " 5 5 5 5 5 5 5 5.
 .
 .
 .
 .
/ .
 .
 .
b    #5     r   