
    Ѯhc                       d dl mZ g dZd dlmZmZ d dlmZ d dlm	Z	 d dl
mZmZmZmZmZ ddlmZ erd d	lmZ nd d
lmZ 	 d dlmZ d dlmZ d dlmZmZmZ ddlm Z m!Z!m"Z"  ede      Z# G d d      Z$d#dZ%d$dZ&e	 G d de$             Z'e	 G d de$             Z(d%dZ) G d de      Z* G d deee#   e      Z+ G d  d!e+e#   ee#   e      Z,y"# e$ r  G d de      ZY w xY w)&    )annotations)AbstractPageAbstractParamsBasePageBaseRawParamsCursorRawParams	RawParams	is_cursoris_limit_offset)ABCabstractmethod)suppress)	dataclass)TYPE_CHECKINGAnyClassVarGenericOptional   )IS_PYDANTIC_V2)	BaseModel)GenericModel)PydanticUndefinedAnnotationc                      e Zd Zy)r   N)__name__
__module____qualname__     j/home/www/academy-backend.kofcorporation.com/venv/lib/python3.12/site-packages/fastapi_pagination/bases.pyr   r   %   s    r   r   )Sequence)SelfTypeIsTypeVar)CursorGreaterEqualZero
ParamsTypeTAny)defaultc                  2    e Zd ZU ded<   ded<   ddZd	dZy)
r   ClassVar[ParamsType]typeboolinclude_totalc                2    t        |       r| S t        d      )NzNot a 'limit-offset' params)r   
ValueErrorselfs    r    as_limit_offsetzBaseRawParams.as_limit_offset6   s    4 K677r   c                2    t        |       r| S t        d      )NzNot a 'cursor' params)r
   r0   r1   s    r    	as_cursorzBaseRawParams.as_cursor<   s    T?K011r   N)returnr	   )r6   r   )r   r   r   __annotations__r3   r5   r   r   r    r   r   2   s    
82r   r   c                     | j                   dk(  S )Nlimit-offsetr,   paramss    r    r   r   C   s    ;;.((r   c                     | j                   dk(  S )Ncursorr:   r;   s    r    r
   r
   G   s    ;;(""r   c                  N    e Zd ZU dZded<   dZded<   dZded<   dZd	ed
<   ddZy)r	   NzOptional[int]limitoffsetTr-   r.   r9   r+   r,   c                    t        | j                  | j                  !| j                  xs d| j                  z         S d       S )Nr   )slicerA   r@   r1   s    r    as_slicezRawParams.as_sliceS   sA    KK/3zz/ET[[A+
 	
KO
 	
r   )r6   rC   )	r   r   r   r@   r7   rA   r.   r,   rD   r   r   r    r	   r	   K   s0    E= FM M4!/D
/
r   r	   c                  >    e Zd ZU ded<   ded<   dZded<   dZded	<   y
)r   zOptional[Cursor]r>   intsizeTr-   r.   r+   r,   N)r   r   r   r7   r.   r,   r   r   r    r   r   Z   s"    
IM4!)D
)r   r   c                     || _         | |_        y N)__params_type____page_type__)page_cls
params_clss     r    connect_page_and_paramsrN   c   s    )H'Jr   c                  @    e Zd ZU dZded<   edd       Zedd       Zy)r   Nz+ClassVar[Optional[type[AbstractPage[Any]]]]rK   c                     y rI   r   r1   s    r    to_raw_paramszAbstractParams.to_raw_paramsk   s    r   c                    t        ||        y rI   rN   )clsrL   s     r    set_pagezAbstractParams.set_pageo   s    #.r   )r6   r   )rL   type[AbstractPage[Any]]r6   None)	r   r   r   rK   r7   r   rQ   classmethodrU   r   r   r    r   r   h   s3    AEM>E  / /r   r   c                       e Zd ZU ded<   i Zded<    e       Zded<   er
ded<   d	ed
<   d fdZe	dd       Z
ere	d fd       Ze	e	 	 	 	 	 	 	 	 dd              Zer
ddddZ xZS  G d d      Z xZS )r   zClassVar[type[AbstractParams]]rJ   zClassVar[dict[str, str]]__model_aliases__zClassVar[set[str]]__model_exclude__zClassVar[bool]__concrete__zClassVar[tuple[Any, ...]]__parameters__c                    t        |   di | t        t              5  | j                  r1| j                  j
                  | j                  j                  |        d d d        y # 1 sw Y   y xY w)Nr   )super__init_subclass__r   AttributeErrorrJ   rK   rU   )rT   kwargs	__class__s     r    r`   zAbstractPage.__init_subclass__   s^    !+F+n% 	2""s':':'H'H'P##,,S1	2 	2 	2s   >A''A0c                   t        | |       y rI   rS   )rT   rM   s     r    
set_paramszAbstractPage.set_params   s    Z0r   c                x   t        |   di | | j                  D ]  }d| j                  |   _         | j
                  j                         D ]  \  }}|| j                  |   _         | j                  s| j
                  r+t        t              5  | j                  d       d d d        y y # 1 sw Y   y xY w)NT)forcer   )r_   __pydantic_init_subclass__r[   model_fieldsexcluderZ   itemsserialization_aliasr   r   model_rebuild)rT   rb   rj   namealiasrc   s        r    rh   z'AbstractPage.__pydantic_init_subclass__   s    G.8800 948  )19"44::< Ce=B  &:C $$(=(=9: 2%%D%12 2 )>2 2s   B00B9c                     y rI   r   )rT   rk   r<   rb   s       r    createzAbstractPage.create   s     	r   T)arbitrary_types_allowedfrom_attributespopulate_by_namec                      e Zd ZdZdZdZy)AbstractPage.ConfigTN)r   r   r   orm_moderr   allow_population_by_field_namer   r   r    Configrv      s    H&*#-1*r   ry   )rb   r   r6   rW   )rM   type[AbstractParams]r6   rW   )rk   Sequence[TAny]r<   r   rb   r   r6   r"   )r   r   r   r7   rZ   setr[   r   r`   rX   re   r   rh   r   rq   model_configry   __classcell__)rc   s   @r    r   r   t   s    33 35/4,/E)1$$112 1 1 		2 
	2   	
 
   '+# $
	2 	2r   r   c                  "    e Zd ZU ded<   ded<   y)r   r{   rk   r&   totalN)r   r   r   r7   r   r   r    r   r      s    r   r   N)r<   r   r6   zTypeIs[RawParams])r<   r   r6   zTypeIs[CursorRawParams])rL   rV   rM   rz   r6   rW   )-
__future__r   __all__abcr   r   
contextlibr   dataclassesr   typingr   r   r   r   r   utilsr   pydanticr   r   pydantic.genericsr   ImportError	Exceptioncollections.abcr!   typing_extensionsr"   r#   r$   typesr%   r&   r'   r(   r   r   r
   r	   r   rN   r   r   r   r   r   r    <module>r      s    "	 $  !  "2.4 % 3 3 7 7vs#2 2")# 
 
 
 *m * *(
	/S 	/<2< <2~|D!74=# a  i s   C C%$C%