
    jT                        U g d Z ddlmZ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mZmZmZmZ ddlmZ dd	lmZmZ dd
lmZmZmZ ddlmZ eZe	ed<   ee eedz  f                  Z!e	ed<   ee"dz           Z#e	ed<   eegef         Z$e	ed<   eegee eedz  f                  f         Z%e	ed<   eg ee"dz           f         Z&e	ed<    G d de          Z'e	 	 	 	 	 	 d&de"dz  dedz  de(e)ef         dz  dedz  de*de'dz  dededefd            Z+eddddddddddd 
d!e$dz  d"e%dz  d#e&dz  dedz  d$edz  dedz  dedz  dedz  de*de'dz  defd%            Z,dS )')	CreatePageFactory
CursorFlowCursorFlowFuncLimitOffsetFlowLimitOffsetFlowFunc	TotalFlowTotalFlowFunccreate_page_flowgeneric_flow    )CallableSequence)	ExitStack)AnyProtocol	TypeAlias   )apply_items_transformercreate_pageset_page)AbstractParamsCursorRawParams	RawParams	is_cursoris_limit_offset)Config)AnyFlowflow)AdditionalDataItemsTransformer
ParamsType)verify_paramsr   Nr   r   r   r   r   c                   H    e Zd Z	 	 ddedz  dedz  dee         dedef
dZdS )	r   Ntotalparamsitemskwargsreturnc                    d S )N )selfr%   r#   r$   r&   s        c/DATA/AppData/hermes/projects/honcho/.venv/lib/python3.11/site-packages/fastapi_pagination/flows.py__call__zCreatePageFactory.__call__"   s	     	    )NN)__name__
__module____qualname__intr   r   r   r,   r)   r-   r+   r   r   !   sr        
 !(,  Tz	
 %}  
     r-   r   Fr#   transformeradditional_dataconfigasync_create_page_factoryr%   r$   r'   c             #     K   t                      5 }|r.|j        r'|                    t          |j                             t	          | ||          V }	|t
          } ||	f||d|pi V }
|
cd d d            S # 1 swxY w Y   d S )Nr5   )r#   r$   )r   page_clsenter_contextr   r   r   )r%   r$   r#   r2   r3   r4   r5   r6   stackt_itemspages              r+   r	   r	   -   s      
  	;fo 	; 9 9:::/
 
 
 
 
 &"-((

 
 $"	
 
 
 
 )                 s   AA==BB)
limit_offset_flowcursor_flow
total_flowr$   inner_transformerr2   r3   r4   r5   r6   r>   r?   r@   rA   c        
   
   #     K   g }
| |
                     d           ||
                     d           |
st          d          t          |g|
R  \  }}|pi }d }|j        r!|t          d           |            E d {V }t	          |          r#| t          d           | |          E d {V }n[t          |          r=|t          d           ||          E d {V \  }}|                    |pi            nt          d          |rt          |||          V }t          ||||||||		          E d {V }|S )
Nzlimit-offsetcursorz"At least one flow must be providedz1total_flow is required when include_total is Truez7limit_offset_flow is required for 'limit-offset' paramsz+cursor_flow is required for 'cursor' paramszInvalid params typer8   )r#   r2   r3   r4   r5   r6   )	append
ValueErrorr!   include_totalr   r   updater   r	   )r>   r?   r@   r$   rA   r2   r3   r4   r5   r6   types
raw_paramsr#   r%   	more_datar=   s                   r+   r
   r
   P   s      !E$^$$$X ?=>>>&v6666FJ%+OE (PQQQ%:<<''''''z"" 0$VWWW,,Z88888888	:		 0JKKK&1k*&=&=======yyB////./// 
-
 
 
 
 
 ''/	 	 	 	 	 	 	 	 	D Kr-   )NNNNFN)-__all__collections.abcr   r   
contextlibr   typingr   r   r   apir   r   r   basesr   r   r   r   r   r4   r   r   r   rH   r   r   r    utilsr!   r   __annotations__tupler   r1   r   r   r   r   r   dictstrboolr	   r
   r)   r-   r+   <module>rW      s  
 
 
 
 / . . . . . . .             + + + + + + + + + + ? ? ? ? ? ? ? ? ? ? Y Y Y Y Y Y Y Y Y Y Y Y Y Y               ? ? ? ? ? ? ? ? ? ?            $ $ $ $c>D+@&@ AB
I B B BsTz*	9 * * *!)9+w*>!? Y ? ? ?$o%6c>\`K`F`@a8b%bc	 c c c#Bd
(;$;<y < < <	 	 	 	 	 	 	 	 
 +/-1 48  :	
 "D( #s(^d* TM  +T1 	   D  59)-'+$(15+/-1 48@ @ @*T1@  $&@ $	@
 T!@ ($.@ "D(@ $d*@ TM@ @ +T1@ 	@ @ @ @ @ @r-   