Sindbad~EG File Manager

Current Path : /usr/local/lib/python3.12/site-packages/werkzeug/datastructures/__pycache__/
Upload File :
Current File : //usr/local/lib/python3.12/site-packages/werkzeug/datastructures/__pycache__/range.cpython-312.pyc

�

'ٜgl����ddlmZddlmZddlZddlmZejrddl	Z
ejd�ZGd�d�Z
Gd�d�ZGd	�d
eje�ZGd�d�Zd
dlmZy)�)�annotationsN)�datetime�Tc�2�eZdZdZddd�Zd	d�Zd	d�Zd	d�Zy)
�IfRangez�Very simple object that represents the `If-Range` header in parsed
    form.  It will either have neither a etag or date or one of either but
    never both.

    .. versionadded:: 0.7
    Nc� �||_||_y�N)�etag�date)�selfr
rs   �H/usr/local/lib/python3.12/site-packages/werkzeug/datastructures/range.py�__init__zIfRange.__init__s����	���	�c��|j�tj|j�S|j�tj|j�Sy)�-Converts the object back into an HTTP header.�)r�http�	http_dater
�
quote_etag�rs r
�	to_headerzIfRange.to_headers?���9�9� ��>�>�$�)�)�,�,��9�9� ��?�?�4�9�9�-�-�rc�"�|j�Sr	�rrs r
�__str__zIfRange.__str__$����~�~��rc�L�dt|�j�dt|��d�S�N�<� �>��type�__name__�strrs r
�__repr__zIfRange.__repr__'�&���4��:�&�&�'�q��T��
�Q�7�7r�NN)r
�
str | Nonerzdatetime | None��returnr$)r#�
__module__�__qualname__�__doc__rrrr%�rr
rr
s����� �8rrc�T�eZdZdZ						d
d�Zdd�Zdd�Zd
d�Zdd�Zd
d�Z	d
d�Z
y	)�RangeaXRepresents a ``Range`` header. All methods only support only
    bytes as the unit. Stores a list of ranges if given, but the methods
    only work if only one range is provided.

    :raise ValueError: If the ranges provided are invalid.

    .. versionchanged:: 0.15
        The ranges passed in are validated.

    .. versionadded:: 0.7
    c�r�||_||_|D]$\}}|�|��|dks||k\s�t||f�d���y)Nrz is not a valid range.)�units�ranges�
ValueError)rr2r3�start�ends     r
rzRange.__init__8sN����
���� �J�E�3��}���e�a�i�5�C�<� �U�C�L�>�1G�!H�I�I�!rc���|jdk7s|�t|j�dk7ry|jd\}}|�|}|dkr||z
}tj|||�r|t||�fSy)z�If the range is for bytes, the length is not None and there is
        exactly one range and it is satisfiable it returns a ``(start, stop)``
        tuple, otherwise `None`.
        �bytesN�r)r2�lenr3r�is_byte_range_valid�min)r�lengthr5r6s    r
�range_for_lengthzRange.range_for_lengthEsy��
�:�:�� �F�N�c�$�+�+�6F�!�6K���[�[��^�
��s��;��C��q�y������#�#�E�3��7��#�c�6�*�*�*�rc�f�|j|�}|�t|j|d|d|�Sy)z�Creates a :class:`~werkzeug.datastructures.ContentRange` object
        from the current range and given content length.
        Nrr9)r>�ContentRanger2)rr=�rngs   r
�make_content_rangezRange.make_content_rangeUs9���#�#�F�+���?���
�
�C��F�C��F�F�C�C�rc���g}|jD]E\}}|�%|j|dk\r|�d�n
t|���-|j|�d|dz
����G|j�ddj	|���S)rr�-r9�=�,)r3�appendr$r2�join)rr3�beginr6s    r
rzRange.to_header^sx�����+�+�J�E�3��{��
�
�U�a�Z���q�k�S��Z�H��
�
���q��q��	�2�3�	&�
�*�*��Q�s�x�x��/�0�1�1rc�j�|j|�}|� |j�d|d�d|ddz
�d|��Sy)z\Converts the object into `Content-Range` HTTP header,
        based on given length
        NrrrDr9�/)r>r2)rr=�ranges   r
�to_content_range_headerzRange.to_content_range_headerhsJ���%�%�f�-�����j�j�\��5��8�*�A�e�A�h��l�^�1�V�H�E�E�rc�"�|j�Sr	rrs r
rz
Range.__str__qrrc�L�dt|�j�dt|��d�Srr!rs r
r%zRange.__repr__tr&rN)r2r$r3z%cabc.Sequence[tuple[int, int | None]]r*�None)r=�
int | Noner*ztuple[int, int] | None)r=rQr*�ContentRange | Noner))r=rQr*r()r#r+r,r-rr>rBrrMrr%r.rr
r0r0+sF��
�J��J�"G�J�	
�J�� �2�� �8rr0c�|�eZdZdd�Zej
dd��Zej
d	d��Z						d
d�Zdd�Zy)�_CallbackPropertyc��d|��|_y)N�_)�attr)r�owner�names   r
�__set_name__z_CallbackProperty.__set_name__ys����v�J��	rc��yr	r.�r�instancerXs   r
�__get__z_CallbackProperty.__get__|s��?Brc��yr	r.r\s   r
r^z_CallbackProperty.__get__~s��ORrc�<�|�|S|j|jSr	)�__dict__rWr\s   r
r^z_CallbackProperty.__get__�s$�����K�� � ����+�+rc�r�||j|j<|j�|j|�yyr	)rarW�	on_update)rr]�values   r
�__set__z_CallbackProperty.__set__�s5��',����$�)�)�$����)����x�(�*rN)rX�type[ContentRange]rYr$r*rP)r]rPrXrPr*zte.Self)r]r@rXrfr*r)r]rRrXztype[ContentRange] | Noner*zte.Self | T)r]r@rdrr*rP)r#r+r,rZ�t�overloadr^rer.rr
rTrTxsO����Z�Z�B��B��Z�Z�R��R�,�+�,�4M�,�	�,�)rrTc���eZdZUdZ		d											dd	�Ze�Zded<e�Zded<e�Z	ded<e�Z
ded<		d									dd
�Zdd�Zdd�Z
dd
�Zdd�Zdd�Zy)r@zDRepresents the content range header.

    .. versionadded:: 0.7
    Nr2r(r5rQ�stopr=c�:�||_|j||||�yr	)rc�set)rr2r5rjr=rcs      r
rzContentRange.__init__�s��#��������f�e�,rc��tj|||�sJd��||_||_||_||_|j�|j
|�yy)z#Simple method to update the ranges.zBad range providedN)rr;�_units�_start�_stop�_lengthrc)rr5rjr=r2s     r
rlzContentRange.set�sY���'�'��t�V�<�R�>R�R�<�"'���"'���!%��
�#)����>�>�%��N�N�4� �&rc�,�|jddd��y)zcSets the units to `None` which indicates that the header should
        no longer be used.
        N)r2)rlrs r
�unsetzContentRange.unset�s��	
����t�4��(rc���|j�y|j�d}n|j}|j�|j�d|��S|j�d|j�d|jdz
�d|��S)Nr�*z */rrDr9rK)rnrqrorp)rr=s  r
rzContentRange.to_header�st���;�;����<�<�� #�F��\�\�F��;�;���k�k�]�#�f�X�.�.��+�+��a����}�A�d�j�j�1�n�-=�Q�v�h�G�Grc��|jduSr	)rnrs r
�__bool__zContentRange.__bool__�s���{�{�$�&�&rc�"�|j�Sr	rrs r
rzContentRange.__str__�rrc�L�dt|�j�dt|��d�Srr!rs r
r%zContentRange.__repr__�r&rr')r2r(r5rQrjrQr=rQrcz*cabc.Callable[[ContentRange], None] | Noner*rP)Nr8)
r5rQrjrQr=rQr2r(r*rP)r*rPr))r*�bool)r#r+r,r-rrTr2�__annotations__r5rjr=rlrsrrwrr%r.rr
r@r@�s����"�@D�
	-��	-��	-��		-�
�	-�>�
	-�
�	-�*�+�E�:�+�)�+�E�:�+�)�*�D�*�*�*�,�F�J�,�"�#�!��!��!��	!�
�!�
�
!� )�	H�'� �8rr@�)r)�
__future__r�collections.abc�abc�cabc�typingrgr�
TYPE_CHECKING�typing_extensions�te�TypeVarrrr0�GenericrTr@rrr.rr
�<module>r�sg��"�����?�?�"�
�A�I�I�c�N��8�8�<J8�J8�Z)��	�	�!��)�.C8�C8�Nr

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists