
    j:                     N   S SK rS SKrS SKrS SKJr  S SKJr  S SKJ	r	  S SK
Jr  S SKJr  S SKJr   " S S	\5      r " S
 S\5      r " S S\5      r " S S\5      r " S S5      r " S S\5      r " S S\5      r " S S\R4                  R6                  5      r " S S5      rg)    N)ceil)sync_to_async)RemovedInDjango70Warning)cached_property)method_has_no_args)gettext_lazyc                       \ rS rSrSrg)UnorderedObjectListWarning    N__name__
__module____qualname____firstlineno____static_attributes__r       M/var/www/html/KUNJ/venv/lib/python3.13/site-packages/django/core/paginator.pyr
   r
          r   r
   c                       \ rS rSrSrg)InvalidPage   r   Nr   r   r   r   r   r      r   r   r   c                       \ rS rSrSrg)PageNotAnInteger   r   Nr   r   r   r   r   r      r   r   r   c                       \ rS rSrSrg)	EmptyPage   r   Nr   r   r   r   r   r      r   r   r   c                       \ rS rSr\" S5      r\" S5      \" S5      \" S5      S.r   SS jrS	 r SS
 jr	S r
S rSrg)BasePaginator   u   …z"That page number is not an integerzThat page number is less than 1zThat page contains no results)invalid_pagemin_page
no_resultsNc                 0   Xl         U R                  5         [        U5      U l        [        U5      U l        X@l        Uc  U R                  OU R                  U-  U l        U R                  U R                  ::  a  Sn[        R                  " U[        SS9  g g )NzSupport for the orphans argument being larger than or equal to the per_page argument is deprecated. This will raise a ValueError in Django 7.0.   )category
stacklevel)object_list_check_object_list_is_orderedintper_pageorphansallow_empty_first_pagedefault_error_messageserror_messageswarningswarnr   )selfr)   r,   r-   r.   r0   msgs          r   __init__BasePaginator.__init__(   s     '**,H7|&<# % '',,~= 	
 ==DLL( 
 MM#(@QO )r   c                    [        U R                  SS5      nUb  U(       d  [        U R                  S5      (       aD  SR                  U R                  R                  U R                  R
                  R                  5      OSR                  U R                  5      n[        R                  " SR                  U5      [        SS9  ggg)	z?
Warn if self.object_list is unordered (typically a QuerySet).
orderedNmodelz{} {}z{!r}zLPagination may yield inconsistent results with an unordered object_list: {}.   )r(   )
getattrr)   hasattrformatr9   	__class__r   r1   r2   r
   )r3   r8   obj_list_reprs      r   r*   +BasePaginator._check_object_list_is_orderedH   s     $**It<w
 4++W55 $$**D,<,<,F,F,O,O ]]4#3#34  MM##)6-#8*	 (/r   c              #     #    X$U-   S-  ::  a  U Sh  vN   gUSU-   U-   S-   :  a?  [        SUS-   5       Sh  vN   U R                  v   [        X-
  US-   5       Sh  vN   O[        SUS-   5       Sh  vN   XU-
  U-
  S-
  :  aG  [        US-   X-   S-   5       Sh  vN   U R                  v   [        X%-
  S-   US-   5       Sh  vN   g[        US-   US-   5       Sh  vN   g N N N Nz NR N* N7f)uc  
Return a 1-based range of pages with some values elided.

If the page range is larger than a given size, the whole range is not
provided and a compact form is returned instead, e.g. for a paginator
with 50 pages, if page 43 were the current page, the output, with the
default arguments, would be:

    1, 2, …, 40, 41, 42, 43, 44, 45, 46, …, 49, 50.
r&   N   )rangeELLIPSIS)r3   number	num_pages
page_rangeon_each_sideon_endss         r   _get_elided_page_range$BasePaginator._get_elided_page_range\   s     /144!!!Q%/144Q!,,,--V2FQJ???Q
+++-71<<VaZ)>)BCCC--Y014i!mDDDVaZQ777 " -?+ DD7sy   C<C.&C<C0&C<!C2"C<9C4:)C<#C6$)C<C8C<(C:)C<0C<2C<4C<6C<8C<:C<c                     [        U0 UD6$ )z
Return an instance of a single page.

This hook can be used by subclasses to use an alternative to the
standard :cls:`Page` object.
)Pager3   argskwargss      r   	_get_pageBasePaginator._get_page{   s     T$V$$r   c                 L    [        U[        5      (       a  UR                  5       (       d  [        e[	        U5      nUS:  a  [        U R                  S   5      eX:  a  [        U R                  S   5      eU$ ! [
        [        4 a    [        U R                  S   5      ef = f)z'Validate the given 1-based page number.r"   rB   r#   r$   )	
isinstancefloat
is_integer
ValueErrorr+   	TypeErrorr   r0   r   r3   rE   rF   s      r   _validate_numberBasePaginator._validate_number   s    	H&%((1B1B1D1D  [F A:D//
;<<D//=>> :& 	H"4#6#6~#FGG	Hs   ;A: :)B#)r.   r0   r)   r-   r,   r   TN)r:   r&   )r   r   r   r   _rD   r/   r5   r*   rJ   rQ   rZ   r   r   r   r   r    r       s]     xH>?7878 #P@* FG8>%r   r    c                   p    \ rS rSrS rS rS rS r\S 5       r	\S 5       r
\S 5       rSS	S
S.S jjrSrg)	Paginator   c              #   X   #    U R                    H  nU R                  U5      v   M     g 7fN)rG   page)r3   page_numbers     r   __iter__Paginator.__iter__   s"     ??K))K(( +s   (*c                 8    U R                  XR                  5      $ rb   )rZ   rF   r3   rE   s     r   validate_numberPaginator.validate_number   s    $$V^^<<r   c                      U R                  U5      nU R	                  U5      $ ! [         a    Sn N[         a    U R                  n N6f = f)zR
Return a valid page, even if the page argument isn't a number or isn't
in range.
rB   )ri   r   r   rF   rc   rh   s     r   get_pagePaginator.get_page   sO    
	$))&1F
 yy  	   	F 	$^^F	$s   $ A
A
	A
c                     U R                  U5      nUS-
  U R                  -  nX R                  -   nX0R                  -   U R                  :  a  U R                  nU R	                  U R
                  X# X5      $ )z7Return a Page object for the given 1-based page number.rB   )ri   r,   r-   countrQ   r)   )r3   rE   bottomtops       r   rc   Paginator.page   sh    %%f-1*-}}$+**C~~d..v:FIIr   c                     [        U R                  SS5      n[        U5      (       a2  [        R                  " U5      (       d  [        U5      (       a  U" 5       $ [        U R                  5      $ )z5Return the total number of objects, across all pages.ro   N)r;   r)   callableinspect	isbuiltinr   len)r3   cs     r   ro   Paginator.count   sT     D$$gt4A;;w00338J18M8M3J4##$$r   c                     U R                   S:X  a  U R                  (       d  g[        SU R                   U R                  -
  5      n[	        XR
                  -  5      $ )z!Return the total number of pages.r   rB   )ro   r.   maxr-   r   r,   )r3   hitss     r   rF   Paginator.num_pages   sE     ::?4#>#>1djj4<</0D==())r   c                 4    [        SU R                  S-   5      $ )zS
Return a 1-based range of pages for iterating through within
a template for loop.
rB   )rC   rF   r3   s    r   rG   Paginator.page_range   s     Q*++r   r:   r&   rH   rI   c             #      #    U R                  U5      nU R                  XR                  U R                  X#5       S h  vN   g  N7frb   )ri   rJ   rF   rG   )r3   rE   rH   rI   s       r   get_elided_page_rangePaginator.get_elided_page_range   s<     %%f-..NNDOO\
 	
 	
s   <AAAr   NrB   )r   r   r   r   re   ri   rl   rc   r   ro   rF   propertyrG   r   r   r   r   r   r_   r_      sf    )=!J % % * * , ,
a 
 
r   r_   c                   v   ^  \ rS rSr   SU 4S jjrS rS rS rS rS r	S r
S	 rS
 rSSSS.S jjrSrU =r$ )AsyncPaginator   c                 D   > [         TU ]  XX4U5        S U l        S U l        g rb   )superr5   _cache_acount_cache_anum_pages)r3   r)   r,   r-   r.   r0   r>   s         r   r5   AsyncPaginator.__init__   s+     	7N	
 "!%r   c                   #    U R                  5       I S h  vN nU H  nU R                  U5      I S h  vN 7v   M!     g  N* N7frb   )apage_rangeapage)r3   rG   rd   s      r   	__aiter__AsyncPaginator.__aiter__   s:     ++--
%K

;/// & ./s   AAAAAAc                 `   #    U R                  5       I S h  vN nU R                  X5      $  N7frb   )
anum_pagesrZ   rY   s      r   avalidate_numberAsyncPaginator.avalidate_number   s*     //++	$$V77 ,s   .,.c                    #     U R                  U5      I Sh  vN nU R	                  U5      I Sh  vN $  N! [         a    Sn N)[         a    U R                  5       I Sh  vN  n NMf = f N<7f)zSee Paginator.get_page().NrB   )r   r   r   r   r   rh   s     r   	aget_pageAsyncPaginator.aget_page   sg     	-0088F
 ZZ''' 9 	F 	-??,,,F	-'sS   A08 68 A0A.A08 A+A0A+"A%#A+(A0*A++A0c                   #    U R                  U5      I Sh  vN nUS-
  U R                  -  nX R                  -   nU R                  5       I Sh  vN nX0R                  -   U:  a  UnU R	                  U R
                  X# X5      $  Nn N87f)zSee Paginator.page().NrB   )r   r,   acountr-   rQ   r)   )r3   rE   rp   rq   ro   s        r   r   AsyncPaginator.apage   s~     ,,V441*-}}$kkm#&C~~d..v:FII 5 $s!   B
B7B
B7B
B
c                     [        U0 UD6$ rb   )	AsyncPagerN   s      r   rQ   AsyncPaginator._get_page   s    $)&))r   c                 T  #    U R                   b  U R                   $ [        U R                  SS5      n[        R                  " U5      (       a;  [        R
                  " U5      (       d   [        U5      (       a  U" 5       I Sh  vN nO[        U R                  5      nX l         U$  N"7f)zSee Paginator.count().Nr   )r   r;   r)   ru   iscoroutinefunctionrv   r   rw   )r3   rx   ro   s      r   r   AsyncPaginator.acount   s     )%%%D$$h5''**%%a(("1%%#IE(()E" s   BB(B&#B(c                 2  #    U R                   b  U R                   $ U R                  5       I Sh  vN nUS:X  a$  U R                  (       d  SU l         U R                   $ [        SXR                  -
  5      n[        X R                  -  5      nX0l         U$  Ne7f)zSee Paginator.num_pages().Nr   rB   )r   r   r.   r{   r-   r   r,   )r3   ro   r|   rF   s       r   r   AsyncPaginator.anum_pages  s     !!-)))kkm#A:d99%&D")))1ell*+-.	!* $s   -BBA&Bc                 \   #    U R                  5       I Sh  vN n[        SUS-   5      $  N7f)zSee Paginator.page_range()NrB   )r   rC   r3   rF   s     r   r   AsyncPaginator.apage_range  s*     //++	Q	A&& ,s   ,*,r:   r&   r   c                  #    U R                  U5      I S h  vN nU R                  5       I S h  vN nU R                  5       I S h  vN nU R                  XXRU5       H  nU7v   M
     g  NT N> N(7frb   )r   r   r   rJ   )r3   rE   rH   rI   rF   rG   rc   s          r   aget_elided_page_range%AsyncPaginator.aget_elided_page_range$  sf     ,,V44//++	++--
//z
D J
 5+-s1   A2A,A2A.A2A0%A2.A20A2)r   r   r\   r   )r   r   r   r   r5   r   r   r   r   rQ   r   r   r   r   r   __classcell__)r>   s   @r   r   r      sP    
 #&0
8(	J*"'
QPQ  r   r   c                   V    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rSrg)rM   i.  c                 (    Xl         X l        X0l        g rb   r)   rE   	paginatorr3   r)   rE   r   s       r   r5   Page.__init__/      &"r   c                 T    SU R                   < SU R                  R                  < S3$ )Nz<Page z of >rE   r   rF   r   s    r   __repr__Page.__repr__4  s    $(KK1I1IJJr   c                 ,    [        U R                  5      $ rb   )rw   r)   r   s    r   __len__Page.__len__7  s    4##$$r   c                 
   [        U[        [        45      (       d!  [        S[	        U5      R
                  -  5      e[        U R                  [        5      (       d  [        U R                  5      U l        U R                  U   $ )Nz0Page indices must be integers or slices, not %s.rT   r+   slicerX   typer   r)   listr3   indexs     r   __getitem__Page.__getitem__:  sn    %#u..Bu+&&'  $**D11#D$4$45D&&r   c                 H    U R                   U R                  R                  :  $ rb   r   r   s    r   has_nextPage.has_nextF  s    {{T^^5555r   c                      U R                   S:  $ NrB   rE   r   s    r   has_previousPage.has_previousI  s    {{Qr   c                 P    U R                  5       =(       d    U R                  5       $ rb   )r   r   r   s    r   has_other_pagesPage.has_other_pagesL  s      "5dmmo5r   c                 R    U R                   R                  U R                  S-   5      $ r   r   ri   rE   r   s    r   next_page_numberPage.next_page_numberO      ~~--dkkAo>>r   c                 R    U R                   R                  U R                  S-
  5      $ r   r   r   s    r   previous_page_numberPage.previous_page_numberR  r   r   c                     U R                   R                  S:X  a  gU R                   R                  U R                  S-
  -  S-   $ )zh
Return the 1-based index of the first object on this page,
relative to total objects in the paginator.
r   rB   )r   ro   r,   rE   r   s    r   start_indexPage.start_indexU  s;     >>1$''4;;?;q@@r   c                     U R                   U R                  R                  :X  a  U R                  R                  $ U R                   U R                  R                  -  $ )zc
Return the 1-based index of the last object on this page,
relative to total objects found (hits).
)rE   r   rF   ro   r,   r   s    r   	end_indexPage.end_index_  sC     ;;$..222>>'''{{T^^4444r   rE   r)   r   N)r   r   r   r   r5   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rM   rM   .  s;    #
K%
'66??A5r   rM   c                   h    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rSrg)r   ij  c                 (    Xl         X l        X0l        g rb   r   r   s       r   r5   AsyncPage.__init__k  r   r   c                      SU R                   -  $ )Nz<Async Page %s>r   r   s    r   r   AsyncPage.__repr__p  s     4;;..r   c                   #    [        U R                  S5      (       a  U R                    S h  vN nU7v   M  U R                   H  nU7v   M
     g  N$
 g 7f)Nr   )r<   r)   r3   objs     r   r   AsyncPage.__aiter__s  sJ     4##[11!-- c	''	 (-s%   (AAAA!AAAc                     [        U R                  [        5      (       d  [        S5      e[	        U R                  5      $ )NzBAsyncPage.aget_object_list() must be awaited before calling len().)rT   r)   r   rX   rw   r   s    r   r   AsyncPage.__len__{  s8    $**D11T  4##$$r   c                     [        U R                  [        5      (       d  [        S5      e[	        U R                  5      $ )NzGAsyncPage.aget_object_list() must be awaited before calling reversed().)rT   r)   r   rX   reversedr   s    r   __reversed__AsyncPage.__reversed__  s:    $**D11= 
 (())r   c                     [        U[        [        45      (       d!  [        S[	        U5      R
                  -  5      e[        U R                  [        5      (       d  [        S5      eU R                  U   $ )Nz5AsyncPage indices must be integers or slices, not %s.zCAsyncPage.aget_object_list() must be awaited before using indexing.r   r   s     r   r   AsyncPage.__getitem__  sm    %#u..Gu+&&' 
 $**D11U  &&r   c                 d  #    [        U R                  [        5      (       dc  [        U R                  S5      (       a  U R                   Vs/ s Sh  vN oPM  [	        [        5      " U R                  5      I Sh  vN U l        U R                  $  N?
 Os  snf snU l        U R                  $  N27f)z
Returns self.object_list as a list.

This method must be awaited before AsyncPage can be
treated as a sequence of self.object_list.
r   N)rT   r)   r   r<   r   r   s     r   aget_object_listAsyncPage.aget_object_list  s      $**D11t''559=9I9I#J#J#C)6t)<T=M=M)N#N  $K#J   $OsH   A	B0BBB
BB"B0;B.<B0BBB0c                 p   #    U R                   R                  5       I S h  vN nU R                  U:  $  N7frb   )r   r   rE   r   s     r   	ahas_nextAsyncPage.ahas_next  s.     ..3355	{{Y&& 6s   646c                 (   #    U R                   S:  $ 7fr   r   r   s    r   ahas_previousAsyncPage.ahas_previous  s     {{Qs   c                    #    U R                  5       I S h  vN nU R                  5       I S h  vN nU=(       d    U$  N' N7frb   )r   r   )r3   r   r   s      r   ahas_other_pagesAsyncPage.ahas_other_pages  s8     !//11))'x' 2)s   A>AA A Ac                 n   #    U R                   R                  U R                  S-   5      I S h  vN $  N7fr   r   r   rE   r   s    r   anext_page_numberAsyncPage.anext_page_number  (     ^^44T[[1_EEEE   ,535c                 n   #    U R                   R                  U R                  S-
  5      I S h  vN $  N7fr   r   r   s    r   aprevious_page_numberAsyncPage.aprevious_page_number  r   r  c                    #    U R                   R                  5       I Sh  vN nUS:X  a  gU R                   R                  U R                  S-
  -  S-   $  N47f)zSee Page.start_index().Nr   rB   )r   r   r,   rE   )r3   ro   s     r   astart_indexAsyncPage.astart_index  sK     nn++--A:''4;;?;q@@ .s   AA5Ac                    #    U R                   R                  5       I Sh  vN nU R                  U:X  a"  U R                   R                  5       I Sh  vN $ U R                  U R                   R                  -  $  NY N)7f)zSee Page.end_index().N)r   r   rE   r   r,   r   s     r   
aend_indexAsyncPage.aend_index  s]     ..3355	;;)#..000{{T^^4444 60s!   A>A:1A>A<(A><A>r   N)r   r   r   r   r5   r   r   r   r   r   r   r   r   r   r   r  r  r	  r   r   r   r   r   r   j  sK    #
/%*' '(
FFA5r   r   )collections.abccollectionsru   r1   mathr   asgiref.syncr   django.utils.deprecationr   django.utils.functionalr   django.utils.inspectr   django.utils.translationr   r]   RuntimeWarningr
   	Exceptionr   r   r   r    r_   r   abcSequencerM   r   r   r   r   <module>r     s        & = 3 3 6	 		) 		{ 		 	r rj:
 :
z[] [|95;??## 95xZ5 Z5r   