+
    Njz                       ^ RI Ht ^ RIHt ^ RIt^ RIHt ]P                  '       d   ^ RI	t
]P                  ! R4      t ! R R4      t ! R R4      t ! R	 R
]P                  ],          4      t ! R R4      t^RIHt R# )    )annotationsN)datetimeTc                  N    ] tR t^tRtRR R lltR R ltR R ltR	 R
 ltRt	R# )IfRangezVery 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                    V ^8  d   QhRRRR/# )   etag
str | Nonedatezdatetime | None )formats   "_/data/cameron/venvs/serve_omidlab/lib/python3.14/site-packages/werkzeug/datastructures/range.py__annotate__IfRange.__annotate__   s      Z o     c                	    Wn         W n        R # N)r
   r   )selfr
   r   s   &&&r   __init__IfRange.__init__   s     		r   c                   V ^8  d   QhRR/# r	   returnstrr   )r   s   "r   r   r      s      3 r   c                    V P                   e!   \        P                  ! V P                   4      # V P                  e!   \        P                  ! V P                  4      # R# )-Converts the object back into an HTTP header. )r   http	http_dater
   
quote_etagr   s   &r   	to_headerIfRange.to_header   s?    99 >>$)),,99 ??499--r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r   $             r   c                	"    V P                  4       # r   r#   r"   s   &r   __str__IfRange.__str__$       ~~r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r   '        8 8# 8r   c                	N    R \        V 4      P                   R\        V 4      : R2# < >type__name__r   r"   s   &r   __repr__IfRange.__repr__'   &    4:&&'qTQ77r   )r   r
   NN)
r5   
__module____qualname____firstlineno____doc__r   r#   r)   r6   __static_attributes__r   r   r   r   r      s      8 8r   r   c                  n    ] tR t^+tRtR R ltR R ltR R ltR R	 ltR
 R lt	R R lt
R R ltRtR# )Rangea<  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 ^8  d   QhRRRRRR/# )r	   unitsr   rangesz%cabc.Sequence[tuple[int, int | None]]r   Noner   )r   s   "r   r   Range.__annotate__8   s)     J JJ"GJ	Jr   c                	    Wn         W n        V F+  w  r4Ve   Vf   K  V^ 8  g	   W48  g   K  \        W43 R24      h	  R # )Nz is not a valid range.)rB   rC   
ValueError)r   rB   rC   startends   &&&  r   r   Range.__init__8   sD     
  JE}eai5< UL>1G!HII !r   c                    V ^8  d   QhRRRR/# )r	   length
int | Noner   ztuple[int, int] | Noner   )r   s   "r   r   rE   E   s      z 6L r   c                   V P                   R8w  g   Ve   \        V P                  4      ^8w  d   R# V P                  ^ ,          w  r#Vf   TpV^ 8  d	   W!,          p\        P                  ! W#V4      '       d   V\        W14      3# R# )zIf 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)rB   lenrC   r   is_byte_range_validmin)r   rL   rH   rI   s   &&  r   range_for_lengthRange.range_for_lengthE   st    
 :: FNc$++6F!6K[[^
;Cqy##E77#c***r   c                    V ^8  d   QhRRRR/# )r	   rL   rM   r   ContentRange | Noner   )r   s   "r   r   rE   U   s       8K r   c                |    V P                  V4      pVe'   \        V P                  V^ ,          V^,          V4      # R# )zqCreates a :class:`~werkzeug.datastructures.ContentRange` object
from the current range and given content length.
N)rS   ContentRangerB   )r   rL   rngs   && r   make_content_rangeRange.make_content_rangeU   s9     ##F+?

CFCFFCCr   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   rE   ^   s     2 23 2r   c                   . pV P                    FN  w  r#Vf)   TP                  V^ 8  d   V R2M
\        V4      4       K1  VP                  V RV^,
           24       KP  	  V P                   RRP	                  V4       2# )r   -=,)rC   appendr   rB   join)r   rC   beginrI   s   &   r   r#   Range.to_header^   sv    ++JE{UaZqkSZHqq	23	 &
 **Qsxx/011r   c                    V ^8  d   QhRRRR/# )r	   rL   rM   r   r   r   )r   s   "r   r   rE   h   s      j Z r   c                    V P                  V4      pVe-   V P                   RV^ ,           RV^,          ^,
           RV 2# R# )zLConverts the object into `Content-Range` HTTP header,
based on given length
Nr1   r^   /)rS   rB   )r   rL   ranges   && r   to_content_range_headerRange.to_content_range_headerh   sJ     %%f-jj\58*AeAhl^1VHEEr   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   rE   q   r&   r   c                	"    V P                  4       # r   r(   r"   s   &r   r)   Range.__str__q   r+   r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   rE   t   r-   r   c                	N    R \        V 4      P                   R\        V 4      : R2# r/   r3   r"   s   &r   r6   Range.__repr__t   r8   r   )rC   rB   N)r5   r:   r;   r<   r=   r   rS   rZ   r#   ri   r)   r6   r>   r   r   r   r@   r@   +   s0    
J 2 8 8r   r@   c                      ] tR t^xtR R lt]P                  R R l4       t]P                  R R l4       tR R ltR	 R
 ltRt	R# )_CallbackPropertyc               $    V ^8  d   QhRRRRRR/# )r	   ownertype[ContentRange]namer   r   rD   r   )r   s   "r   r   _CallbackProperty.__annotate__y   s"      "4 C D r   c                	    R V 2V n         R# )_Nattr)r   rt   rv   s   &&&r   __set_name___CallbackProperty.__set_name__y   s    vJ	r   c               $    V ^8  d   QhRRRRRR/# )r	   instancerD   rt   r   zte.Selfr   )r   s   "r   r   rw   }   s    BBBTBgBr   c                	    R # r   r   r   r   rt   s   &&&r   __get___CallbackProperty.__get__|   s    ?Br   c               $    V ^8  d   QhRRRRRR/# )r	   r   rX   rt   ru   r   r   r   )r   s   "r   r   rw      s    RRR5GRARr   c                	    R # r   r   r   s   &&&r   r   r   ~   s    ORr   c               $    V ^8  d   QhRRRRRR/# )r	   r   rV   rt   ztype[ContentRange] | Noner   zte.Self | Tr   )r   s   "r   r   rw      s$     , ,+,4M,	,r   c                	H    Vf   V # VP                   V P                  ,          # r   )__dict__r{   r   s   &&&r   r   r      s$     K  ++r   c               $    V ^8  d   QhRRRRRR/# )r	   r   rX   valuer   r   rD   r   )r   s   "r   r   rw      s!     ) ) )Q )4 )r   c                	x    W!P                   V P                  &   VP                  e   VP                  V4       R # R # r   )r   r{   	on_update)r   r   r   s   &&&r   __set___CallbackProperty.__set__   s3    ',$))$)x( *r   rz   N)
r5   r:   r;   r<   r|   toverloadr   r   r>   r   r   r   rr   rr   x   s<     ZZB BZZR R,) )r   rr   c                      ] tR t^t$ RtRR R llt]! 4       tR]R&   ]! 4       t	R]R&   ]! 4       t
R]R	&   ]! 4       tR]R
&   RR R lltR R ltR R ltR R ltR R ltR R ltRtR# )rX   z<Represents the content range header.

.. versionadded:: 0.7
Nc               0    V ^8  d   QhRRRRRRRRRRR	R
/# )r	   rB   r   rH   rM   stoprL   r   z*cabc.Callable[[ContentRange], None] | Noner   rD   r   )r   s   "r   r   ContentRange.__annotate__   sF     	- 	-	- 	- 		-
 	- >	- 
	-r   c                	6    WPn         V P                  W#WA4       R # r   )r   set)r   rB   rH   r   rL   r   s   &&&&&&r   r   ContentRange.__init__   s     #f,r   r   rB   rM   rH   r   rL   c          
     ,    V ^8  d   QhRRRRRRRRRR/# )	r	   rH   rM   r   rL   rB   r   r   rD   r   )r   s   "r   r   r      s<     ! !! ! 	!
 ! 
!r   c                    \         P                  ! WV4      '       g   Q R4       hW@n        Wn        W n        W0n        V P                  e   V P                  V 4       R# R# )z#Simple method to update the ranges.zBad range providedN)r   rQ   _units_start_stop_lengthr   )r   rH   r   rL   rB   s   &&&&&r   r   ContentRange.set   sR     ''V<<R>RR<"'"'!%
#)>>%NN4  &r   c                   V ^8  d   QhRR/# )r	   r   rD   r   )r   s   "r   r   r      s     ) )t )r   c                .    V P                  RRRR7       R# )zSSets the units to `None` which indicates that the header should
no longer be used.
N)rB   )r   r"   s   &r   unsetContentRange.unset   s     	t4(r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r      s     	H 	H3 	Hr   c                	    V P                   f   R# V P                  f   RpMV P                  pV P                  f   V P                    RV 2# V P                    RV P                   RV P                  ^,
           RV 2# )Nr   *z */r1   r^   rg   )r   r   r   r   )r   rL   s   & r   r#   ContentRange.to_header   st    ;;<< #F\\F;;kk]#fX..++a}Adjj1n-=QvhGGr   c                   V ^8  d   QhRR/# )r	   r   boolr   )r   s   "r   r   r      s     ' '$ 'r   c                	    V P                   R J# r   )r   r"   s   &r   __bool__ContentRange.__bool__   s    {{$&&r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r      r&   r   c                	"    V P                  4       # r   r(   r"   s   &r   r)   ContentRange.__str__   r+   r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r      r-   r   c                	N    R \        V 4      P                   R\        V 4      : R2# r/   r3   r"   s   &r   r6   ContentRange.__repr__   r8   r   )r   r   r   r   r   r9   )NrO   )r5   r:   r;   r<   r=   r   rr   rB   __annotations__rH   r   rL   r   r   r#   r   r)   r6   r>   r   r   r   rX   rX      sh    
	- *+E:+)+E:+ )*D***,FJ,! )	H' 8 8r   rX   )r   )
__future__r   collections.abcabccabctypingr   r   TYPE_CHECKINGtyping_extensionsteTypeVarr   r   r@   Genericrr   rX   r   r   r   r   r   <module>r      sg    "   ???"IIcN8 8<J8 J8Z)		! ).C8 C8N r   