
    Ѯh                     P   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 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 ddlmZ ddlmZmZmZmZ ddl m!Z! e!r eddg      n	 edd      Z" G d de      Z#dddedee$   de%fdZ&dddedeee%ef      dee$   dee%   fdZ'dddee%ef   dee%ef   deee%ef      deee%ef      dee$   de#fdZ( ed ed!e"      Z)e G d# d$eee)   e             Z*e G d% d&e*e)   e             Z+e G d' d(e*e)   e             Z,y)))BaseLinksCustomizerBaseUseHeaderLinksBaseUseLinksLinkscreate_links    )ABCabstractmethod)Mapping)	dataclass)SimpleNamespace)AnyGenericOptional)	BaseModelFieldroot_validator)URL)TypeVar)requestresponse)AbstractPage)ClsNamespacePageClsPageCustomizerUseAdditionalFields)IS_PYDANTIC_V2Nz/api/v1/users?limit=1&offset1)defaultexamples)r   examplec                   r    e Zd ZU eZee   ed<   eZee   ed<   eZ	ee   ed<   eZ
ee   ed<   eZee   ed<   y)r   firstlastselfnextprevN)__name__
__module____qualname___link_fieldr!   r   str__annotations__r"   r#   r$   r%        p/home/www/academy-backend.kofcorporation.com/venv/lib/python3.12/site-packages/fastapi_pagination/links/bases.pyr   r      sH    &E8C=&%D(3-%%D(3-%%D(3-%%D(3-%r-   r   	only_pathurlr0   returnc                    |d}|st        |       S | j                  st        | j                        S | j                   d| j                   S )NT?)r*   querypath)r1   r0   s     r.   _resolve_pathr7   '   sI    
 	3x99388}hhZq$$r-   	to_updatec                B    |y t         | j                  di ||      S )Nr/   r,   )r7   include_query_params)r1   r8   r0   s      r.   _update_pathr;   8   s+     111>I>)TTr-   r!   r"   r$   r%   c                    t               }|j                  }t        t        ||      t	        || |      t	        |||      t	        |||      t	        |||            S )Nr/   )r#   r!   r"   r$   r%   )r   r1   r   r7   r;   )r!   r"   r$   r%   r0   reqr1   s          r.   r   r   D   s[     )C
''C3)43;#ty9#ty9#ty9 r-   TPage_contraT)boundcontravariantr   c                   6    e Zd ZU dZeed<   ededefd       Z	y)r   Tr0   _pager2   c                     y Nr,   )r#   rB   s     r.   resolve_linksz!BaseLinksCustomizer.resolve_links_   s    r-   N)
r&   r'   r(   r0   boolr+   r	   r>   r   rE   r,   r-   r.   r   r   [   s,    It< u  r-   r   c                   0    e Zd ZU dZeed<   dededdfdZy)r   linksfieldpage_clsnsr2   Nc           	      n    t         r*ddlm}   |t               fd      | j                  <   y t        di  j                  t        t        t              fi}|j                  ||       t        dd      dt        d	t        t        t        f   d
t        t        t        f   f fd       }||d<   y )Nr   )computed_field)return_typec                 &    j                  |       S rD   )rE   )_selfr#   s    r.   <lambda>z0BaseUseLinks.customize_page_ns.<locals>.<lambda>l   s    TM_M_`eMf r-   )default_factoryTskip_on_failureallow_reuseclsvaluesr2   c                 V    j                  t        di |      |j                  <   |S Nr,   )rE   r   rI   )rV   rW   r#   s     r.   __links_root_validator__z@BaseUseLinks.customize_page_ns.<locals>.__links_root_validator__r   s)    !%!3!3O4Mf4M!NF4::Mr-   rZ   r,   )r   pydanticrM   r   rI   r   r   customize_page_nsr   r   dictr*   )r#   rJ   rK   rM   	add_fieldrZ   s   `     r.   r\   zBaseUseLinks.customize_page_nsh   s    />^>?fgBtzzN'^4::uUZ?[7\*]^	##Hb1	$	?	# 	tCH~ 	$sTWx. 	 
@	 *B%&r-   )	r&   r'   r(   rI   r*   r+   r   r   r\   r,   r-   r.   r   r   d   s*    E3B' B| B Br-   r   c                   X    e Zd ZdeddfdZdededdfdZdededdfdZdededdfd	Z	y)
r   rH   r2   Nc                   g }d|j                   fd|j                  fd|j                  fd|j                  ffD ]   \  }}|	|j	                  d| d| d       " |r)t               }dj                  |      |j                  d	<   y y )
Nr!   r"   r$   r%   <z>; rel=""z, Link)r!   r"   r$   r%   appendr   joinheaders)r#   rH   partsrellinkrsps         r.   _add_links_to_headerz'BaseUseHeaderLinks._add_links_to_header|   s    ekk"UZZ UZZ UZZ 	
 	7IC qhse156	7 *C"&))E"2CKK r-   rJ   rK   c          	           t        dd      dt        dt        t        t        f   dt        t        t        f   f fd       }||d<   y )NTrS   rV   rW   r2   c                 ^    j                  t        di |      }j                  |       |S rY   )rE   r   rk   )rV   rW   rH   r#   s      r.   __add_links_to_header__zRBaseUseHeaderLinks._customize_page_ns_pydantic_v1.<locals>.__add_links_to_header__   s.    &&'@'@AE%%e,Mr-   rn   )r   r   r]   r*   )r#   rJ   rK   rn   s   `   r.   _customize_page_ns_pydantic_v1z1BaseUseHeaderLinks._customize_page_ns_pydantic_v1   sQ    	$	?	 	d38n 	cSVh 	 
@	 )@$%r-   c                8     dt         dt        dd f fd}||d<   y )N	page_self_r2   c                 J    j                  |       }j                  |       y rD   )rE   rk   )rq   rr   rH   r#   s      r.   __model_post_init__zNBaseUseHeaderLinks._customize_page_ns_pydantic_v2.<locals>.__model_post_init__   s#     &&y1E%%e,r-   model_post_init)r>   r   )r#   rJ   rK   rt   s   `   r.   _customize_page_ns_pydantic_v2z1BaseUseHeaderLinks._customize_page_ns_pydantic_v2   s/    	-#	-	- 	- !4r-   c                 Z    t         r| j                  ||       y | j                  ||       y rD   )r   rv   ro   )r#   rJ   rK   s      r.   r\   z$BaseUseHeaderLinks.customize_page_ns   s%    //"=//"=r-   )
r&   r'   r(   r   rk   r   r   ro   rv   r\   r,   r-   r.   r   r   z   si    3% 3t 3@w @L @X\ @4w 4L 4X\ 4>' >| > >r-   r   )-__all__abcr   r	   collections.abcr
   dataclassesr   typesr   typingr   r   r   r[   r   r   r   starlette.requestsr   typing_extensionsr   fastapi_pagination.apir   r   fastapi_pagination.basesr    fastapi_pagination.customizationr   r   r   r   fastapi_pagination.utilsr   r)   r   rF   r*   r7   r;   r   r>   r   r   r   r,   r-   r.   <module>r      s   $ # ! ! ) ) 5 5 " % 4 1 g g 3  
$"A!BC	t%D	E &I & !%%	% ~% 		%* !%		U		US)*	U ~		U
 c]	U$ !%38
#s(
 738$
% 738$
%	 ~ ( ~\WZ[ .',*?   B&|4c B B* (>,\:C (> (>r-   