+
    Îi                        ^ RI Ht ^ RIt^ RIt^ RIHtHtHt ^ RIHtH	t	H
t
 ^ RIHtHtHt ]'       d   ^ RIHt RtRR R	 lltR
 R lt ! R R4      t ! R R]4      t ! R R]4      t ! R R]4      tR# )    )annotationsN)datetime	timedeltatimezone)
formatdate	parsedateparsedate_tz)TYPE_CHECKINGAnyMapping)HTTPResponsez%a, %d %b %Y %H:%M:%S GMTc               $    V ^8  d   QhRRRRRR/# )   deltar   datezdatetime | Nonereturnr    )formats   "r/Users/ahmad/.openclaw/workspace/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/heuristics.py__annotate__r      s!      	  H     c                n    T;'       g%    \         P                  ! \        P                  4      pW,           # N)r   nowr   utc)r   r   s   &&r   expire_afterr      s$    --8<<-D<r   c                    V ^8  d   QhRRRR/# )r   dtr   r   strr   )r   s   "r   r   r      s     7 78 7 7r   c                \    \        \        P                  ! V P                  4       4      4      # r   )r   calendartimegm	timetuple)r   s   &r   datetime_to_headerr$      s    hooblln566r   c                  :    ] tR t^tR R ltR R ltR R ltRtR# )	BaseHeuristicc                    V ^8  d   QhRRRR/# r   responser   r   
str | Noner   )r   s   "r   r   BaseHeuristic.__annotate__   s     	+ 	+ 	+ 	+r   c                    R# )z
Return a valid 1xx warning header value describing the cache
adjustments.

The response is provided too allow warnings like 113
http://tools.ietf.org/html/rfc7234#section-5.5.4 where we need
to explicitly say response is over 24 hours old.
z110 - "Response is Stale"r   selfr)   s   &&r   warningBaseHeuristic.warning   s     +r   c                    V ^8  d   QhRRRR/# r   r)   r   r   dict[str, str]r   )r   s   "r   r   r+   '   s      |  r   c                    / # )zUpdate the response headers with any new headers.

NOTE: This SHOULD always include some Warning header to
      signify that the response was cached by the client, not
      by way of the provided headers.
r   r-   s   &&r   update_headersBaseHeuristic.update_headers'   s	     	r   c                    V ^8  d   QhRRRR/# )r   r)   r   r   r   )r   s   "r   r   r+   0   s     	 	l 	| 	r   c                	    V P                  V4      pV'       dN   VP                  P                  V4       V P                  V4      pVe   VP                  P                  RV/4       V# )NWarning)r5   headersupdater/   )r.   r)   updated_headerswarning_header_values   &&  r   applyBaseHeuristic.apply0   s]    --h7##O4#'<<#9 #/  ''4H(IJr   r   N)__name__
__module____qualname____firstlineno__r/   r5   r>   __static_attributes__r   r   r   r&   r&      s    	+	 	r   r&   c                  &    ] tR t^<tRtR R ltRtR# )OneDayCachezA
Cache the response by providing an expires 1 day in the
future.
c                    V ^8  d   QhRRRR/# r2   r   )r   s   "r   r   OneDayCache.__annotate__B   s      |  r   c                	    / pR VP                   9  de   \        VP                   R,          4      p\        \        ^R7      \	        VR,          R\
        P                  / R7      p\        V4      VR &   RVR&   V# )expiresr   )daysN   Ntzinfo)r   publiccache-control)r:   r   r   r   r   r   r   r$   )r.   r)   r:   r   rJ   s   &&   r   r5   OneDayCache.update_headersB   sq    H,,,X--f56D"q!tBx==G "4G!<GI'/GO$r   r   N)r@   rA   rB   rC   __doc__r5   rD   r   r   r   rF   rF   <   s    
 r   rF   c                  >    ] tR t^PtRtR R ltR R ltR R ltRtR	# )
ExpiresAfterz3
Cache **all** requests for a defined time period.
c                    V ^8  d   QhRRRR/# )r   kwr   r   Noner   )r   s   "r   r   ExpiresAfter.__annotate__U   s     % %S %T %r   c                	&    \        R/ VB V n        R # )Nr   )r   r   )r.   rV   s   &,r   __init__ExpiresAfter.__init__U   s    __
r   c                    V ^8  d   QhRRRR/# r2   r   )r   s   "r   r   rX   X   s     S S| S Sr   c                	J    \        V P                  4      pR \        V4      RR/# )rJ   rP   rO   )r   r   r$   )r.   r)   rJ   s   && r   r5   ExpiresAfter.update_headersX   s%    tzz*-g6RRr   c                    V ^8  d   QhRRRR/# r(   r   )r   s   "r   r   rX   \   s     ! ! ! !r   c                	*    R pW P                   ,          # )z:110 - Automatically cached for %s. Response might be staler   )r.   r)   tmpls   && r   r/   ExpiresAfter.warning\   s    Kjj  r   ra   N)	r@   rA   rB   rC   rR   rZ   r5   r/   rD   r   r   r   rT   rT   P   s    %S! !r   rT   c                  :    ] tR t^atRt0 RmtR R ltR R ltRtR# )	LastModifieda  
If there is no Expires header already, fall back on Last-Modified
using the heuristic from
http://tools.ietf.org/html/rfc7234#section-4.2.2
to calculate a reasonable value.

Firefox also does something like this per
https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching_FAQ
http://lxr.mozilla.org/mozilla-release/source/netwerk/protocol/http/nsHttpResponseHead.cpp#397
Unlike mozilla we limit this to 24-hr.
c                    V ^8  d   QhRRRR/# )r   respr   r   r3   r   )r   s   "r   r   LastModified.__annotate__|   s     J J< JN Jr   c                	   VP                   pR V9   d   / # RV9   d   VR,          R8w  d   / # VP                  V P                  9  d   / # RV9  g   RV9  d   / # \        VR,          4      pVf   Q h\        P
                  ! VR,          4      p\        VR,          4      pVf   / # \        P                  ! 4       p\        ^ Wd,
          4      pV\        P
                  ! V4      ,
          p\        ^ \        V^
,          R4      4      p	W8:  d   / # WI,           p
R \        P                  ! \        \        P                  ! V
4      4      /# )rJ   rP   rO   r   zlast-modifiedrL   iQ )r:   statuscacheable_by_default_statusesr	   r!   r"   r   timemaxminstrftimeTIME_FMTgmtime)r.   rg   r:   
time_tupler   last_modifiedr   current_ager   freshness_lifetimerJ   s   &&         r   r5   LastModified.update_headers|   s   %)\\Ig%'/*Bh*NI;;d@@@I O7$BI!'&/2
%%%z"~.!'/":; Iiik!SZ(x}55 C
I$>?,I+4==4;;w3GHIIr   c                    V ^8  d   QhRRRR/# )r   rg   r   r   r*   r   )r   s   "r   r   rh      s      L Z r   c                	    R # r   r   )r.   rg   s   &&r   r/   LastModified.warning   s    r   r   N>   ,  -                        )	r@   rA   rB   rC   rR   rk   r5   r/   rD   r   r   r   re   re   a   s     
%!J@ r   re   r   )
__future__r   r!   rl   r   r   r   email.utilsr   r   r	   typingr
   r   r   pip._vendor.urllib3r   rp   r   r$   r&   rF   rT   re   r   r   r   <module>r      sf    #   2 2 ; ; . .0&
7 B- (!= !"<= <r   