
    jS              
         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 d dlmZmZmZmZ d dlmZmZmZ d	d
lmZ d	dlmZmZ d	dl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                    Z( G d& d'e(e          eeeee                    Z) G d( d)e)e          eee                    Z*d*S ).    )annotations)	AbstractPageAbstractParamsBaseAbstractPageBasePageBaseRawParamsCursorRawParams	RawParams	is_cursoris_limit_offset)ABCabstractmethod)Sequence)suppress)	dataclass)TYPE_CHECKINGAnyClassVarGeneric)SelfTypeIsTypeVar   )IS_PYDANTIC_V2)LatestConfiguredBaseModelLatestGenericModel)PydanticUndefinedAnnotationV2)CursorGreaterEqualZero
ParamsTypeTAny)defaultc                  4    e Zd ZU ded<   ded<   ddZdd	Zd
S )r   ClassVar[ParamsType]typeboolinclude_totalreturnr
   c                B    t          |           r| S t          d          )NzNot a 'limit-offset' params)r   
ValueErrorselfs    c/DATA/AppData/hermes/projects/honcho/.venv/lib/python3.11/site-packages/fastapi_pagination/bases.pyas_limit_offsetzBaseRawParams.as_limit_offset(   s&    4   	K6777    r	   c                B    t          |           r| S t          d          )NzNot a 'cursor' params)r   r*   r+   s    r-   	as_cursorzBaseRawParams.as_cursor.   s$    T?? 	K0111r/   N)r(   r
   )r(   r	   )__name__
__module____qualname____annotations__r.   r1    r/   r-   r   r   $   sV         8 8 8 82 2 2 2 2 2r/   r   paramsr(   TypeIs[RawParams]c                    | j         dk    S )Nlimit-offsetr%   r7   s    r-   r   r   5   s    ;.((r/   TypeIs[CursorRawParams]c                    | j         dk    S )Ncursorr;   r<   s    r-   r   r   9   s    ;(""r/   c                  P    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dS )r
   Nz
int | NonelimitoffsetTr&   r'   r:   r$   r%   r(   slicec                \    t          | j        | j        | j        pd| j        z   nd           S )Nr   )rC   rB   rA   r+   s    r-   as_slicezRawParams.as_sliceE   s6    K/3z/ET[A++4
 
 	
r/   )r(   rC   )	r2   r3   r4   rA   r5   rB   r'   r%   rE   r6   r/   r-   r
   r
   =   sn         EFM!/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	<   d
S )r	   zCursor | Noner?   intsizeTr&   r'   r$   r%   N)r2   r3   r4   r5   r'   r%   r6   r/   r-   r	   r	   L   sI         IIIM!)D))))))r/   r	   page_clstype[AbstractPage[Any]]
params_clstype[AbstractParams]Nonec                "    || _         | |_        d S N)__params_type____page_type__)rI   rK   s     r-   connect_page_and_paramsrR   U   s    )H'Jr/   c                  N    e Zd ZU dZded<   edd            Zedd
            ZdS )r   Nz(ClassVar[type[AbstractPage[Any]] | None]rQ   r(   r   c                    d S rO   r6   r+   s    r-   to_raw_paramszAbstractParams.to_raw_params]   s    r/   rI   rJ   rM   c                &    t          ||            d S rO   rR   )clsrI   s     r-   set_pagezAbstractParams.set_pagea   s    #.....r/   )r(   r   )rI   rJ   r(   rM   )	r2   r3   r4   rQ   r5   r   rU   classmethodrY   r6   r/   r-   r   r   Z   se         >BMBBBB   ^ / / / [/ / /r/   r   c                  F    e Zd ZU dZded<   eedd                        ZdS )r   z
    Marker class for page classes.

    Used to mark classes that can be used as pages but don't directly inherit from AbstractPage.
    zClassVar[type[AbstractParams]]rP   itemsSequence[TAny]r7   r   kwargsr   r(   r   c                    d S rO   r6   )rX   r\   r7   r^   s       r-   createzBaseAbstractPage.createo   s	     	r/   N)r\   r]   r7   r   r^   r   r(   r   )r2   r3   r4   __doc__r5   rZ   r   r`   r6   r/   r-   r   r   f   sV           4333   ^ [  r/   r   c                       e Zd ZU 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 xZS  xZS )r   zClassVar[dict[str, str]]__model_aliases__zClassVar[set[str]]__model_exclude__zClassVar[bool]__concrete__zClassVar[tuple[Any, ...]]__parameters__r^   r   r(   rM   c                     t                      j        di | t          t                    5  | j        r&| j        j        | j                            |            d d d            d S # 1 swxY w Y   d S )Nr6   )super__init_subclass__r   AttributeErrorrP   rQ   rY   )rX   r^   	__class__s     r-   ri   zAbstractPage.__init_subclass__   s    !!++F+++n%% 	2 	2" 2s':'H'P#,,S111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s   .A**A.1A.rK   rL   c               &    t          | |           d S rO   rW   )rX   rK   s     r-   
set_paramszAbstractPage.set_params   s    Z00000r/   c                z    t                      j        di | | j        D ]}d| j        |         _        | j                                        D ]\  }}|| j        |         _        | j        s| j        rEt          t                    5  | 
                    d           d d d            d S # 1 swxY w Y   d S d S )NT)forcer6   )rh   __pydantic_init_subclass__rd   model_fieldsexcluderc   r\   serialization_aliasr   r   model_rebuild)rX   r^   rr   namealiasrk   s        r-   rp   z'AbstractPage.__pydantic_init_subclass__   s'   .EGG.888880 9 948 )11"4::<< C Ce=B &:: $ 2(= 2;<< 2 2%%D%1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 22 2s   
B..B25B2)r^   r   r(   rM   )rK   rL   r(   rM   )r2   r3   r4   rc   r5   setrd   r   ri   rZ   rm   r   rp   __classcell__)rk   s   @r-   r   r   z   s         244444,/CEE1111 2$$$$11112 2 2 2 2 2 1 1 1 [1  2		2 	2 	2 	2 	2 
	2 	2 	2 	2 	22 2 2 2r/   r   c                  $    e Zd ZU ded<   ded<   dS )r   r]   r\   r   totalN)r2   r3   r4   r5   r6   r/   r-   r   r      s*         r/   r   N)r7   r   r(   r8   )r7   r   r(   r=   )rI   rJ   rK   rL   r(   rM   )+
__future__r   __all__abcr   r   collections.abcr   
contextlibr   dataclassesr   typingr   r   r   r   typing_extensionsr   r   r   pydanticr   pydantic.typesr   r   pydantic.v2r   typesr   r   r    r!   r   r   r   r
   r	   rR   r   r   r   r   r6   r/   r-   <module>r      s   " " " " " "
 
 
 $ # # # # # # # $ $ $ $ $ $       ! ! ! ! ! !            4 3 3 3 3 3 3 3 3 3 $ $ $ $ $ $ I I I I I I I I 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7wvs###2 2 2 2 2 2 2 2") ) ) )# # # # 
 
 
 
 
 
 
 
 * * * * *m * * *( ( ( (
	/ 	/ 	/ 	/ 	/S 	/ 	/ 	/    sGDM   (#2 #2 #2 #2 #2#D)+DFXZ]_fgk_l #2 #2 #2L    |D!3     r/   