ó
    Þ jâ  ã                  óè   • S SK Jr  S SKrS SKrS SKJrJrJr  S SKJrJ	r	J
r
  S SKJrJrJr  \(       a  S SKJr  SrSSS jjrSS	 jr " S
 S5      r " S S\5      r " S S\5      r " S S\5      rg)é    )ÚannotationsN)ÚdatetimeÚ	timedeltaÚtimezone)Ú
formatdateÚ	parsedateÚparsedate_tz)ÚTYPE_CHECKINGÚAnyÚMapping)ÚHTTPResponsez%a, %d %b %Y %H:%M:%S GMTc                ód   • U=(       d$    [         R                  " [        R                  5      nX-   $ ©N)r   Únowr   Úutc)ÚdeltaÚdates     Ú]/var/www/html/gaurav/venv/lib/python3.13/site-packages/pip/_vendor/cachecontrol/heuristics.pyÚexpire_afterr      s!   € Ø×-”8—<’<¤§¡Ó-€DØ‰<Ðó    c                ó\   • [        [        R                  " U R                  5       5      5      $ r   )r   ÚcalendarÚtimegmÚ	timetuple)Údts    r   Údatetime_to_headerr      s   € Ü”h—o’o b§l¡l£nÓ5Ó6Ð6r   c                  ó2   • \ rS rSrSS jrSS jrS	S jrSrg)
ÚBaseHeuristicé   c                ó   • g)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"© ©ÚselfÚresponses     r   ÚwarningÚBaseHeuristic.warning   s   € ð +r   c                ó   • 0 $ )zÏUpdate 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                óÎ   • U R                  U5      nU(       aL  UR                  R                  U5        U R                  U5      nUb  UR                  R                  SU05        U$ )NÚWarning)r(   Ú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©r$   r   Úreturnú
str | None©r$   r   r3   údict[str, str])r$   r   r3   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r%   r(   r0   Ú__static_attributes__r!   r   r   r   r      s   † ô	+ô÷	r   r   c                  ó"   • \ rS rSrSrSS jrSrg)ÚOneDayCacheé<   zA
Cache the response by providing an expires 1 day in the
future.
c                óÖ   • 0 nSUR                   ;  aV  [        UR                   S   5      n[        [        SS9[	        US S S[
        R                  06S9n[        U5      US'   SUS	'   U$ )
NÚexpiresr   é   )Údaysé   Útzinfo)r   Úpublicúcache-control)r,   r   r   r   r   r   r   r   )r#   r$   r,   r   r@   s        r   r(   ÚOneDayCache.update_headersB   sp   € Øˆà˜H×,Ñ,Ó,Ü˜X×-Ñ-¨fÑ5Ó6ˆDÜ"¤9°!Ñ#4¼8ÀTÈ"È1ÀXÐ;cÔV^×VbÑVbÑ;cÑdˆGÜ!3°GÓ!<ˆG�IÑØ'/ˆG�OÑ$Øˆr   r!   Nr5   )r7   r8   r9   r:   Ú__doc__r(   r;   r!   r   r   r=   r=   <   s   † ñ÷
r   r=   c                  ó6   • \ rS rSrSrSS jrS	S jrS
S jrSrg)ÚExpiresAfteréM   z3
Cache **all** requests for a defined time period.
c                ó$   • [        S0 UD6U l        g )Nr!   )r   r   )r#   Úkws     r   Ú__init__ÚExpiresAfter.__init__R   s   € Ü‘_ ‘_ˆ�
r   c                óH   • [        U R                  5      n[        U5      SS.$ )NrE   )r@   rF   )r   r   r   )r#   r$   r@   s      r   r(   ÚExpiresAfter.update_headersU   s    € Ü˜tŸz™zÓ*ˆÜ-¨gÓ6ÈÑRÐRr   c                ó"   • SnX R                   -  $ )Nz:110 - Automatically cached for %s. Response might be stale©r   )r#   r$   Útmpls      r   r%   ÚExpiresAfter.warningY   s   € ØKˆØ—j‘jÑ Ð r   rS   N)rM   r   r3   ÚNoner5   r2   )	r7   r8   r9   r:   rH   rN   r(   r%   r;   r!   r   r   rJ   rJ   M   s   † ñô%ôS÷!r   rJ   c                  ó4   • \ rS rSrSr1 SkrSS jrS	S jrSrg)
ÚLastModifiedé^   a�  
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                ó@  • UR                   nSU;   a  0 $ SU;   a  US   S:w  a  0 $ UR                  U R                  ;  a  0 $ SU;  d  SU;  a  0 $ [        US   5      nUc   e[        R
                  " US S 5      n[        US   5      nUc  0 $ [        R                  " 5       n[        SXd-
  5      nU[        R
                  " U5      -
  n[        S[        US-  S	5      5      n	X—::  a  0 $ XI-   n
S[        R                  " [        [        R                  " U
5      5      0$ )
Nr@   rF   rE   r   zlast-modifiedrC   r   é
   i€Q )r,   ÚstatusÚcacheable_by_default_statusesr	   r   r   r   ÚtimeÚmaxÚminÚstrftimeÚTIME_FMTÚgmtime)r#   Úrespr,   Ú
time_tupler   Úlast_modifiedr   Úcurrent_ager   Úfreshness_lifetimer@   s              r   r(   ÚLastModified.update_headersy   s  € Ø%)§\¡\ˆà˜ÓØˆIà˜gÓ%¨'°/Ñ*BÀhÓ*NØˆIà�;‰;˜d×@Ñ@Ó@ØˆIà˜Ó  O¸7Ó$BØˆIä! '¨&¡/Ó2ˆ
ØÑ%Ð%Ð%Ü�Š˜z¨"¨1˜~Ó.ˆÜ! '¨/Ñ":Ó;ˆØÑ ØˆIä�iŠi‹kˆÜ˜!˜S™ZÓ(ˆØ”x—’ }Ó5Ñ5ˆÜ  ¤C¨°©
°IÓ$>Ó?ÐØÓ,ØˆIàÑ+ˆØœ4Ÿ=š=¬´4·;²;¸wÓ3GÓHÐIÐIr   c                ó   • g r   r!   )r#   ro   s     r   r%   ÚLastModified.warning™   s   € Ør   r!   N)ro   r   r3   r6   )ro   r   r3   r4   )	r7   r8   r9   r:   rH   rh   r(   r%   r;   r!   r   r   rX   rX   ^   s   † ñ
ò%Ð!ôJ÷@r   rX   r   )r   r   r   zdatetime | Noner3   r   )r   r   r3   Ústr)Ú
__future__r   r   ri   r   r   r   Úemail.utilsr   r   r	   Útypingr
   r   r   Úpip._vendor.urllib3r   rm   r   r   r   r=   rJ   rX   r!   r   r   Ú<module>r|      sf   ðõ #ã Û ß 2Ñ 2ß ;Ñ ;ß .Ñ .æÝ0à&€öô
7÷ñ ôB�-ô ô"!�=ô !ô"<�=õ <r   