ó
    pñ:iz  ã                  óö   • S SK Jr  S SKJr  S SKrS SKJr  \R                  (       a  S SK	r
\R                  " S5      r " S S5      r " S S5      r " S	 S
\R                  \   5      r " S S5      rSSKJr  g)é    )ÚannotationsN)ÚdatetimeÚTc                  óD   • \ rS rSrSrS	S
S jjrSS jrSS jrSS jrSr	g)ÚIfRangeé   z­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                ó   • Xl         X l        g ©N)ÚetagÚdate)Úselfr   r   s      Ú`/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/werkzeug/datastructures/range.pyÚ__init__ÚIfRange.__init__   s   € ð Œ	à�	ó    c                ó¸   • U R                   b   [        R                  " U R                   5      $ U R                  b   [        R                  " U R                  5      $ g)ú-Converts the object back into an HTTP header.Ú )r   ÚhttpÚ	http_dater   Ú
quote_etag©r   s    r   Ú	to_headerÚIfRange.to_header   s?   € à�9‰9Ñ Ü—>’> $§)¡)Ó,Ð,Ø�9‰9Ñ Ü—?’? 4§9¡9Ó-Ð-Ør   c                ó"   • U R                  5       $ r
   ©r   r   s    r   Ú__str__ÚIfRange.__str__$   ó   € Ø�~‰~ÓÐr   c                óN   • S[        U 5      R                   S[        U 5      < S3$ ©NÚ<Ú Ú>©ÚtypeÚ__name__Ústrr   s    r   Ú__repr__ÚIfRange.__repr__'   ó&   € Ø”4˜“:×&Ñ&Ð' q¬¨T«©°QÐ7Ð7r   )r   r   ©NN)r   ú
str | Noner   zdatetime | None©Úreturnr(   )
r'   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r   r)   Ú__static_attributes__© r   r   r   r      s   † ñöôô ÷8r   r   c                  ój   • \ rS rSrSr      SS jrSS jrSS jrSS jrSS jr	SS jr
SS	 jrS
rg)ÚRangeé+   a<  Represents 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                óv   • Xl         X l        U H'  u  p4Ub  Uc  M  US:  d  X4:¼  d  M  [        X44 S35      e   g )Nr   z is not a valid range.)ÚunitsÚrangesÚ
ValueError)r   r:   r;   ÚstartÚends        r   r   ÚRange.__init__8   sD   € ð Œ
ð Œã ‰JˆEØ‰} £°e¸a³iÀ5Å<Ü  U L >Ð1GÐ!HÓIÐIò !r   c                óð   • U R                   S:w  d  Ub  [        U R                  5      S:w  a  gU R                  S   u  p#Uc  UnUS:  a  X!-  n[        R                  " X#U5      (       a  U[        X15      4$ g)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   )r:   Úlenr;   r   Úis_byte_range_validÚmin)r   Úlengthr=   r>   s       r   Úrange_for_lengthÚRange.range_for_lengthE   st   € ð
 �:‰:˜Ó  F¡N´c¸$¿+¹+Ó6FÈ!Ó6KØØ—[‘[ ‘^‰
ˆØ‰;ØˆCØ�q‹yØ‘�Ü×#Ò# E°×7Ñ7Øœ#˜cÓ*Ð*Ð*Ør   c                óh   • U R                  U5      nUb  [        U R                  US   US   U5      $ g)zqCreates a :class:`~werkzeug.datastructures.ContentRange` object
from the current range and given content length.
Nr   rB   )rG   ÚContentRanger:   )r   rF   Úrngs      r   Úmake_content_rangeÚRange.make_content_rangeU   s9   € ð ×#Ñ# FÓ+ˆØ‰?Ü §
¡
¨C°©F°C¸±F¸FÓCÐCØr   c                óö   • / nU R                    HH  u  p#Uc'  UR                  US:¼  a  U S3O
[        U5      5        M/  UR                  U SUS-
   35        MJ     U R                   SSR	                  U5       3$ )r   r   Ú-rB   Ú=Ú,)r;   Úappendr(   r:   Újoin)r   r;   Úbeginr>   s       r   r   ÚRange.to_header^   sv   € àˆØŸ+œ+‰JˆEØ‰{Ø—‘¨U°a«Z   q™k¼SÀ»ZÖHà—‘   q¨¨q©¨	Ð2Ö3ñ	 &ð
 —*‘*�˜Q˜sŸx™x¨Ó/Ð0Ð1Ð1r   c                ól   • U R                  U5      nUb   U R                   SUS    SUS   S-
   SU 3$ g)zLConverts the object into `Content-Range` HTTP header,
based on given length
Nr#   r   rO   rB   Ú/)rG   r:   )r   rF   Úranges      r   Úto_content_range_headerÚRange.to_content_range_headerh   sJ   € ð ×%Ñ% fÓ-ˆØÑØ—j‘j�\  5¨¡8 *¨A¨e°A©h¸©l¨^¸1¸V¸HÐEÐEØr   c                ó"   • U R                  5       $ r
   r   r   s    r   r   ÚRange.__str__q   r   r   c                óN   • S[        U 5      R                   S[        U 5      < S3$ r!   r%   r   s    r   r)   ÚRange.__repr__t   r+   r   )r;   r:   N)r:   r(   r;   z%cabc.Sequence[tuple[int, int | None]]r/   ÚNone)rF   ú
int | Noner/   ztuple[int, int] | None)rF   r`   r/   úContentRange | Noner.   )rF   r`   r/   r-   )r'   r0   r1   r2   r3   r   rG   rL   r   rY   r   r)   r4   r5   r   r   r7   r7   +   sF   † ñ
ðJØðJØ"GðJà	ôJôô ô2ôô ÷8r   r7   c                  óŽ   • \ rS rSrS	S jr\R                  S
S j5       r\R                  SS j5       r      SS jrSS jrSr	g)Ú_CallbackPropertyéx   c                ó   • SU 3U l         g )NÚ_©Úattr)r   ÚownerÚnames      r   Ú__set_name__Ú_CallbackProperty.__set_name__y   s   € Ø˜�v�Jˆ�	r   c                ó   • g r
   r5   ©r   Úinstanceri   s      r   Ú__get__Ú_CallbackProperty.__get__|   s   € Ø?Br   c                ó   • g r
   r5   rn   s      r   rp   rq   ~   s   € ØORr   c                ó>   • Uc  U $ UR                   U R                     $ r
   )Ú__dict__rh   rn   s      r   rp   rq   €   s$   € ð ÑØˆKà× Ñ  §¡Ñ+Ð+r   c                ór   • X!R                   U R                  '   UR                  b  UR                  U5        g g r
   )rt   rh   Ú	on_update)r   ro   Úvalues      r   Ú__set__Ú_CallbackProperty.__set__ˆ   s3   € Ø',×Ñ˜$Ÿ)™)Ñ$à×ÑÑ)Ø×Ñ˜xÕ(ð *r   rg   N)ri   útype[ContentRange]rj   r(   r/   r_   )ro   r_   ri   r_   r/   zte.Self)ro   rJ   ri   rz   r/   r   )ro   ra   ri   ztype[ContentRange] | Noner/   zte.Self | T)ro   rJ   rw   r   r/   r_   )
r'   r0   r1   r2   rk   ÚtÚoverloadrp   rx   r4   r5   r   r   rc   rc   x   sO   † ôð ‡Z�ZÛBó ØBØ‡Z�ZÛRó ØRð,Ø+ð,Ø4Mð,à	ô,÷)r   rc   c                  óø   • \ rS rSr% Sr  S           SS
 jjr\" 5       rS\S'   \" 5       r	S\S'   \" 5       r
S\S'   \" 5       rS\S	'     S         SS jjrSS jrSS jrSS jrSS jrSS jrSrg)rJ   é�   z<Represents the content range header.

.. versionadded:: 0.7
Nr:   r-   r=   r`   ÚstoprF   c                ó4   • XPl         U R                  X#XA5        g r
   )rv   Úset)r   r:   r=   r   rF   rv   s         r   r   ÚContentRange.__init__•   s   € ð #ŒØ�‰�˜fÕ,r   c                ó¸   • [         R                  " XU5      (       d   S5       eX@l        Xl        X l        X0l        U R                  b  U R                  U 5        gg)z#Simple method to update the ranges.zBad range providedN)r   rD   Ú_unitsÚ_startÚ_stopÚ_lengthrv   )r   r=   r   rF   r:   s        r   r�   ÚContentRange.setª   sR   € ô ×'Ò'¨°V×<Ñ<ÐRÐ>RÓRÐ<Ø"'ŒØ"'ŒØ!%Œ
Ø#)ŒØ�>‰>Ñ%Ø�N‰N˜4Õ ð &r   c                ó&   • U R                  SSSS9  g)zSSets the units to `None` which indicates that the header should
no longer be used.
N)r:   )r�   r   s    r   ÚunsetÚContentRange.unsetº   s   € ð 	�‰��t 4ˆÒ(r   c                óî   • U R                   c  gU R                  c  SnOU R                  nU R                  c  U R                    SU 3$ U R                    SU R                   SU R                  S-
   SU 3$ )Nr   Ú*z */r#   rO   rB   rW   )r„   r‡   r…   r†   )r   rF   s     r   r   ÚContentRange.to_headerÀ   st   € Ø�;‰;ÑØØ�<‰<ÑØ #‰Fà—\‘\ˆFØ�;‰;ÑØ—k‘k�] # f XÐ.Ð.Ø—+‘+�˜a §¡˜}¨A¨d¯j©j¸1©nÐ-=¸Q¸v¸hÐGÐGr   c                ó   • U R                   S L$ r
   )r„   r   s    r   Ú__bool__ÚContentRange.__bool__Ë   s   € Ø�{‰{ $Ð&Ð&r   c                ó"   • U R                  5       $ r
   r   r   s    r   r   ÚContentRange.__str__Î   r   r   c                óN   • S[        U 5      R                   S[        U 5      < S3$ r!   r%   r   s    r   r)   ÚContentRange.__repr__Ñ   r+   r   )r‡   r…   r†   r„   rv   r,   )r:   r-   r=   r`   r   r`   rF   r`   rv   z*cabc.Callable[[ContentRange], None] | Noner/   r_   )NrA   )
r=   r`   r   r`   rF   r`   r:   r-   r/   r_   )r/   r_   r.   )r/   Úbool)r'   r0   r1   r2   r3   r   rc   r:   Ú__annotations__r=   r   rF   r�   rŠ   r   r�   r   r)   r4   r5   r   r   rJ   rJ   �   sÝ   ‡ ñð "Ø@Dð	-àð	-ð ð	-ð ð		-ð
 ð	-ð >ð	-ð 
õ	-ñ *Ó+€Eˆ:Ó+á)Ó+€Eˆ:Ó+ñ )Ó*€Dˆ*Ó*á*Ó,€FˆJÓ,ð "Ø#ð!àð!ð ð!ð ð	!ð
 ð!ð 
õ!ô )ô	Hô'ô ÷8r   rJ   é   )r   )Ú
__future__r   Úcollections.abcÚabcÚcabcÚtypingr{   r   ÚTYPE_CHECKINGÚtyping_extensionsÚteÚTypeVarr   r   r7   ÚGenericrc   rJ   r   r   r5   r   r   Ú<module>r£      se   ðÝ "å Û Ý à‡?‡?Û"à‡I‚IˆcƒN€÷8ñ 8÷<J8ñ J8ôZ)˜Ÿ	™	 !™ô )÷.C8ñ C8öN r   