
    LȂi;                     R   S SK rS SKrS SKrS SKJr  S SKJr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\R6                  R8                  5      r " S S5      rg)    N)ceil)iscoroutinefunction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       FD:\sksbv-state-backend\venv\Lib\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/   r1   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formatr:   	__class__r   r2   r3   r   )r4   r9   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 H  nUv   M	     gUSU-   U-   S-   :  aE  [        SUS-   5       H  nUv   M	     U R                  v   [        X-
  US-   5       H  nUv   M	     O[        SUS-   5       H  nUv   M	     XU-
  U-
  S-
  :  aM  [        US-   X-   S-   5       H  nUv   M	     U R                  v   [        X%-
  S-   US-   5       H  nUv   M	     g[        US-   US-   5       H  nUv   M	     g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)r4   number	num_pages
page_rangeon_each_sideon_endspages          r   _get_elided_page_range$BasePaginator._get_elided_page_range\   s%     /144"
 #Q%/144a1-
 .--f3VaZ@
 A a!,
 - -71<<fqj&*?!*CD
 E--i1A5y1}E
 F fqj)a-8
 9s   DD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r4   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#   rC   r$   r%   )	
isinstancefloat
is_integer
ValueErrorr,   	TypeErrorr   r1   r   r4   rF   rG   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/   r1   r*   r.   r-   r   TN)r;   r'   )r   r   r   r   _rE   r0   r6   r+   rL   rS   r\   r   r   r   r   r!   r!      s^     xH>?7878 #P@* FG$L%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)rH   rK   )r4   page_numbers     r   __iter__Paginator.__iter__   s"     ??K))K(( +s   (*c                 8    U R                  XR                  5      $ rd   )r\   rG   r4   rF   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.
rC   )rj   r   r   rG   rK   ri   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.rC   )rj   r-   r.   countrS   r*   )r4   rF   bottomtops       r   rK   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.rp   N)r<   r*   callableinspect	isbuiltinr   len)r4   cs     r   rp   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   rC   )rp   r/   maxr.   r   r-   )r4   hitss     r   rG   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.
rC   )rD   rG   r4   s    r   rH   Paginator.page_range   s     Q*++r   r;   r'   rI   rJ   c             #      #    U R                  U5      nU R                  XR                  U R                  X#5       S h  vN   g  N7frd   )rj   rL   rG   rH   )r4   rF   rI   rJ   s       r   get_elided_page_rangePaginator.get_elided_page_range   s<     %%f-..NNDOO\
 	
 	
s   <AAAr   NrC   )r   r   r   r   rf   rj   rm   rK   r   rp   rG   propertyrH   r   r   r   r   r   ra   ra      sf    )=!J % % * * , ,
a 
 
r   ra   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 rd   )superr6   _cache_acount_cache_anum_pages)r4   r*   r-   r.   r/   r1   r?   s         r   r6   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rd   )apage_rangeapage)r4   rH   re   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rd   )
anum_pagesr\   r[   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().NrC   )r   r   r   r   r   ri   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().NrC   )r   r-   acountr.   rS   r*   )r4   rF   rq   rr   rp   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$ rd   )	AsyncPagerP   s      r   rS   AsyncPaginator._get_page  s    $)&))r   c                 >  #    U R                   b  U R                   $ [        U R                  SS5      n[        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*   r   rv   rw   r   rx   )r4   ry   rp   s      r   r   AsyncPaginator.acount  s     )%%%D$$h5""%%a(("1%%#IE(()E" s   A6B8B9#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   rC   )r   r   r/   r|   r.   r   r-   )r4   rp   r}   rG   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()NrC   )r   rD   r4   rG   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rd   )r   r   r   rL   )r4   rF   rI   rJ   rG   rH   rK   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   r6   r   r   r   r   rS   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)rO   i5  c                 (    Xl         X l        X0l        g rd   r*   rF   	paginatorr4   r*   rF   r   s       r   r6   Page.__init__6      &"r   c                 T    SU R                   < SU R                  R                  < S3$ )Nz<Page z of >rF   r   rG   r   s    r   __repr__Page.__repr__;  s    $(KK1I1IJJr   c                 ,    [        U R                  5      $ rd   )rx   r*   r   s    r   __len__Page.__len__>  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.rV   r,   slicerZ   typer   r*   listr4   indexs     r   __getitem__Page.__getitem__A  sn    %#u..Bu+&&'  $**D11#D$4$45D&&r   c                 H    U R                   U R                  R                  :  $ rd   r   r   s    r   has_nextPage.has_nextM  s    {{T^^5555r   c                      U R                   S:  $ NrC   rF   r   s    r   has_previousPage.has_previousP  s    {{Qr   c                 P    U R                  5       =(       d    U R                  5       $ rd   )r   r   r   s    r   has_other_pagesPage.has_other_pagesS  s      "5dmmo5r   c                 R    U R                   R                  U R                  S-   5      $ r   r   rj   rF   r   s    r   next_page_numberPage.next_page_numberV      ~~--dkkAo>>r   c                 R    U R                   R                  U R                  S-
  5      $ r   r   r   s    r   previous_page_numberPage.previous_page_numberY  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   rC   )r   rp   r-   rF   r   s    r   start_indexPage.start_index\  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).
)rF   r   rG   rp   r-   r   s    r   	end_indexPage.end_indexf  sC     ;;$..222>>'''{{T^^4444r   rF   r*   r   N)r   r   r   r   r6   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rO   rO   5  s;    #
K%
'66??A5r   rO   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   iq  c                 (    Xl         X l        X0l        g rd   r   r   s       r   r6   AsyncPage.__init__r  r   r   c                      SU R                   -  $ )Nz<Async Page %s>r   r   s    r   r   AsyncPage.__repr__w  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*   r4   objs     r   r   AsyncPage.__aiter__z  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().)rV   r*   r   rZ   rx   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().)rV   r*   r   rZ   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)rV   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rd   )r   r   rF   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rd   )r   r   )r4   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   rF   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   rC   )r   r   r-   rF   )r4   rp   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   rF   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   r6   r   r   r   r   r   r   r   r   r   r   r  r  r	  r   r   r   r   r   r   q  sK    #
/%*' '(
FFA5r   r   )collections.abccollectionsrv   r2   mathr   asgiref.syncr   r   django.utils.deprecationr   django.utils.functionalr   django.utils.inspectr   django.utils.translationr	   r_   RuntimeWarningr   	Exceptionr   r   r   r!   ra   r   abcSequencerO   r   r   r   r   <module>r     s        ; = 3 3 6	 		) 		{ 		 	y yx:
 :
z[] [|95;??## 95xZ5 Z5r   