Ë
    ��h  ã                  óØ   — d dl mZ d dlZd dlZd dlmZmZmZ d dlmZm	Z	m
Z
 d dlmZmZmZ erd dlmZ dZddd„Zdd	„Z G d
„ d«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Zy)é    )ÚannotationsN)ÚdatetimeÚ	timedeltaÚtimezone)Ú
formatdateÚ	parsedateÚparsedate_tz)ÚTYPE_CHECKINGÚAnyÚMapping)ÚHTTPResponsez%a, %d %b %Y %H:%M:%S GMTc                óZ   — |xs# t        j                  t        j                  «      }|| z   S ©N)r   Únowr   Úutc)ÚdeltaÚdates     úa/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/heuristics.pyÚexpire_afterr      s#   € ØÒ-”8—<‘<¤§¡Ó-€DØ�%‰<Ðó    c                óZ   — t        t        j                  | j                  «       «      «      S r   )r   ÚcalendarÚtimegmÚ	timetuple)Údts    r   Údatetime_to_headerr      s   € Ü”h—o‘o b§l¡l£nÓ5Ó6Ð6r   c                  ó$   — e Zd Zdd„Zdd„Zdd„Zy)ÚBaseHeuristicc                 ó   — y)a!  
        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   ÚwarningzBaseHeuristic.warning   s   € ð +r   c                ó   — i S )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_headerszBaseHeuristic.update_headers'   s	   € ð ˆ	r   c                óÂ   — | j                  |«      }|rK|j                  j                  |«       | j                  |«      }|�|j                  j                  d|i«       |S )NÚWarning)r&   ÚheadersÚupdater$   )r"   r#   Úupdated_headersÚwarning_header_values       r   ÚapplyzBaseHeuristic.apply0   s]   € Ø×-Ñ-¨hÓ7ˆáØ×Ñ×#Ñ# OÔ4Ø#'§<¡<°Ó#9Ð Ø#Ð/Ø× Ñ ×'Ñ'¨Ð4HÐ(IÔJàˆr   N©r#   r   Úreturnú
str | None©r#   r   r/   údict[str, str])r#   r   r/   r   )Ú__name__Ú
__module__Ú__qualname__r$   r&   r-   r    r   r   r   r      s   „ ó	+óô	r   r   c                  ó   — e Zd ZdZdd„Zy)ÚOneDayCachezM
    Cache the response by providing an expires 1 day in the
    future.
    c                óÞ   — i }d|j                   vr\t        |j                   d   «      }t        t        d¬«      t	        |d d dt
        j                  iŽ¬«      }t        |«      |d<   d|d	<   |S )
NÚexpiresr   é   )Údaysé   Útzinfo)r   Úpublicúcache-control)r)   r   r   r   r   r   r   r   )r"   r#   r)   r   r9   s        r   r&   zOneDayCache.update_headersB   ss   € Øˆà˜H×,Ñ,Ñ,Ü˜X×-Ñ-¨fÑ5Ó6ˆDÜ"Ü˜qÔ!Ü˜t B Q˜xÐ=´·±Ñ=ôˆGô "4°GÓ!<ˆG�IÑØ'/ˆG�OÑ$Øˆr   Nr1   )r3   r4   r5   Ú__doc__r&   r    r   r   r7   r7   <   s   „ ñô
r   r7   c                  ó(   — e Zd ZdZdd„Zdd„Zdd„Zy)	ÚExpiresAfterz;
    Cache **all** requests for a defined time period.
    c                ó$   — t        di |¤Ž| _        y )Nr    )r   r   )r"   Úkws     r   Ú__init__zExpiresAfter.__init__U   s   € Ü‘_ ‘_ˆ�
r   c                óH   — t        | j                  «      }t        |«      ddœS )Nr>   )r9   r?   )r   r   r   )r"   r#   r9   s      r   r&   zExpiresAfter.update_headersX   s    € Ü˜tŸz™zÓ*ˆÜ-¨gÓ6ÈÑRÐRr   c                ó$   — d}|| j                   z  S )Nz:110 - Automatically cached for %s. Response might be stale)r   )r"   r#   Útmpls      r   r$   zExpiresAfter.warning\   s   € ØKˆØ�d—j‘jÑ Ð r   N)rD   r   r/   ÚNoner1   r.   )r3   r4   r5   r@   rE   r&   r$   r    r   r   rB   rB   P   s   „ ñó%óSô!r   rB   c                  ó(   — e Zd ZdZh d£Zdd„Zdd„Zy)Ú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                ó   — |j                   }d|v ri S d|v r
|d   dk7  ri S |j                  | j                  vri S d|vsd|vri S t        |d   «      }|€J ‚t	        j
                  |d d «      }t        |d   «      }|€i S t        j                  «       }t        d||z
  «      }|t	        j
                  |«      z
  }t        dt        |dz  d	«      «      }	|	|k  ri S ||	z   }
dt        j                  t        t        j                  |
«      «      iS )
Nr9   r?   r>   r   zlast-modifiedr<   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_lifetimer9   s              r   r&   zLastModified.update_headers|   s!  € Ø%)§\¡\ˆà˜ÑØˆIà˜gÑ%¨'°/Ñ*BÀhÒ*NØˆIà�;‰;˜d×@Ñ@Ñ@ØˆIà˜Ñ  O¸7Ñ$BØˆIä! '¨&¡/Ó2ˆ
ØÐ%Ð%Ð%Ü�‰˜z¨"¨1˜~Ó.ˆÜ! '¨/Ñ":Ó;ˆØÐ ØˆIä�i‰i‹kˆÜ˜!˜S 4™ZÓ(ˆØ”x—‘ }Ó5Ñ5ˆÜ  ¤C¨°©
°IÓ$>Ó?ÐØ Ò,ØˆIàÐ+Ñ+ˆØœ4Ÿ=™=¬´4·;±;¸wÓ3GÓHÐIÐIr   c                 ó   — y r   r    )r"   ra   s     r   r$   zLastModified.warningœ   s   € Ør   N)ra   r   r/   r2   )ra   r   r/   r0   )r3   r4   r5   r@   rZ   r&   r$   r    r   r   rK   rK   a   s   „ ñ
ò%Ð!óJô@r   rK   r   )r   r   r   zdatetime | Noner/   r   )r   r   r/   Ústr)Ú
__future__r   r   r[   r   r   r   Úemail.utilsr   r   r	   Útypingr
   r   r   Úpip._vendor.urllib3r   r_   r   r   r   r7   rB   rK   r    r   r   ú<module>rl      sf   ðõ #ã Û ß 2Ñ 2ß ;Ñ ;ß .Ñ .áÝ0à&€ôó
7÷ñ ôB�-ô ô(!�=ô !ô"<�=õ <r   