HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: sport3497 (1034)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/local/CyberCP/lib/python3.10/site-packages/django/core/__pycache__/paginator.cpython-310.pyc
o

�h�@s�ddlZddlZddlZddlmZddlmZddlm	Z	ddl
mZGdd�de
�ZGdd	�d	e�ZGd
d�de�ZGdd
�d
e�ZGdd�d�ZGdd�dejj�ZdS)�N)�ceil)�cached_property)�method_has_no_args)�gettext_lazyc@�eZdZdS)�UnorderedObjectListWarningN��__name__�
__module__�__qualname__�rr�H/usr/local/CyberCP/lib/python3.10/site-packages/django/core/paginator.pyr�rc@r)�InvalidPageNrrrrr
rrrc@r)�PageNotAnIntegerNrrrrr
rrrc@r)�	EmptyPageNrrrrr
rrrc@s�eZdZed�Zddd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
edd��Zedd��Z
edd��Zdd�Zd ddd�dd�ZdS)!�	Paginatoru…rTcCs,||_|��t|�|_t|�|_||_dS�N)�object_list�_check_object_list_is_ordered�int�per_page�orphans�allow_empty_first_page)�selfrrrrrrr
�__init__ s



zPaginator.__init__ccs�|jD]}|�|�VqdSr)�
page_range�page)r�page_numberrrr
�__iter__'s�
�zPaginator.__iter__c	Cspzt|t�r|��st�t|�}Wnttfy ttd���w|dkr+ttd���||j	kr6ttd���|S)z'Validate the given 1-based page number.z"That page number is not an integer�zThat page number is less than 1zThat page contains no results)
�
isinstance�float�
is_integer�
ValueErrorr�	TypeErrorr�_r�	num_pages�r�numberrrr
�validate_number+s�
zPaginator.validate_numbercCsFz|�|�}Wntyd}Ynty|j}Ynw|�|�S)zj
        Return a valid page, even if the page argument isn't a number or isn't
        in range.
        r )r*rrr'rr(rrr
�get_page9s
�
zPaginator.get_pagecCsP|�|�}|d|j}||j}||j|jkr|j}|�|j||�||�S)z7Return a Page object for the given 1-based page number.r )r*rr�count�	_get_pager)rr)�bottom�toprrr
rFs

zPaginator.pagecOst|i|��S)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)r�args�kwargsrrr
r-OszPaginator._get_pagecCs8t|jdd�}t|�rt�|�st|�r|�St|j�S)z5Return the total number of objects, across all pages.r,N)�getattrr�callable�inspect�	isbuiltinr�len)r�crrr
r,Xs
zPaginator.countcCs4|jdkr
|js
dStd|j|j�}t||j�S)z!Return the total number of pages.rr )r,r�maxrrr)r�hitsrrr
r'`szPaginator.num_pagescCstd|jd�S)zk
        Return a 1-based range of pages for iterating through within
        a template for loop.
        r )�ranger'�rrrr
rhszPaginator.page_rangecCsjt|jdd�}|dur1|s3t|jd�rd�|jj|jjj�nd�|j�}tjd�|�t	dd�dSdSdS)	zO
        Warn if self.object_list is unordered (typically a QuerySet).
        �orderedN�modelz{} {}z{!r}zLPagination may yield inconsistent results with an unordered object_list: {}.�)�
stacklevel)
r3r�hasattr�formatr>�	__class__r	�warnings�warnr)rr=�
obj_list_reprrrr
rps
��
�
��z'Paginator._check_object_list_is_orderedr r?�)�on_each_side�on_endsccs�|�|�}|j||dkr|jEdHdS|d||dkr<td|d�EdH|jVt|||d�EdHn
td|d�EdH||j||dkrut|d||d�EdH|jVt|j|d|jd�EdHdSt|d|jd�EdHdS)u�
        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.
        rGNr )r*r'rr;�ELLIPSIS)rr)rHrIrrr
�get_elided_page_range�s�
$zPaginator.get_elided_page_rangeN)rT)r )r	r
rr&rJrrr*r+rr-rr,r'�propertyrrrKrrrr
rs 

		


rc@sdeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dS)r0cCs||_||_||_dSr)rr)�	paginator)rrr)rMrrr
r�s
z
Page.__init__cCsd|j|jjfS)Nz<Page %s of %s>�r)rMr'r<rrr
�__repr__��z
Page.__repr__cCs
t|j�Sr)r7rr<rrr
�__len__��
zPage.__len__cCsBt|ttf�stdt|�j��t|jt�st|j�|_|j|S)Nz0Page indices must be integers or slices, not %s.)r!r�slicer%�typer	r�list)r�indexrrr
�__getitem__�s��
zPage.__getitem__cCs|j|jjkSrrNr<rrr
�has_next�sz
Page.has_nextcCs
|jdkS�Nr )r)r<rrr
�has_previous�rRzPage.has_previouscCs|��p|��Sr)rZrXr<rrr
�has_other_pages�szPage.has_other_pagescCs|j�|jd�SrY�rMr*r)r<rrr
�next_page_number�rPzPage.next_page_numbercCs|j�|jd�SrYr\r<rrr
�previous_page_number�rPzPage.previous_page_numbercCs&|jjdkrdS|jj|jddS)z�
        Return the 1-based index of the first object on this page,
        relative to total objects in the paginator.
        rr )rMr,rr)r<rrr
�start_index�szPage.start_indexcCs$|j|jjkr|jjS|j|jjS)z{
        Return the 1-based index of the last object on this page,
        relative to total objects found (hits).
        )r)rMr'r,rr<rrr
�	end_index�szPage.end_indexN)r	r
rrrOrQrWrXrZr[r]r^r_r`rrrr
r0�s
r0)�collections.abc�collectionsr5rD�mathr�django.utils.functionalr�django.utils.inspectr�django.utils.translationrr&�RuntimeWarningr�	Exceptionrrrr�abc�Sequencer0rrrr
�<module>s