§
    
Á³g:  ã                   ó¼   — d dl Z d dlZd dlmZmZmZ d dlmZmZ dZdd„Z	d„ Z
 G d„ de¦  «        Z G d	„ d
e¦  «        Z G d„ de¦  «        Z G d„ de¦  «        ZdS )é    N)Ú
formatdateÚ	parsedateÚparsedate_tz)ÚdatetimeÚ	timedeltaz%a, %d %b %Y %H:%M:%S GMTc                 ó6   — |pt          j        ¦   «         }|| z   S ©N)r   Úutcnow)ÚdeltaÚdates     úa/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/pip/_vendor/cachecontrol/heuristics.pyÚexpire_afterr      s   € ØÐ$•8”?Ñ$Ô$€DØ�%‰<Ðó    c                 óh   — t          t          j        |                      ¦   «         ¦  «        ¦  «        S r	   )r   ÚcalendarÚtimegmÚ	timetuple)Údts    r   Údatetime_to_headerr      s"   € Ý•h”o b§l¢l¡n¤nÑ5Ô5Ñ6Ô6Ð6r   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚBaseHeuristicc                 ó   — dS )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                 óÎ   — |                       |¦  «        }|rM|j                             |¦  «         |                      |¦  «        }|�|j                             d|i¦  «         |S )NÚWarning)r   ÚheadersÚupdater   )r   r   Úupdated_headersÚwarning_header_values       r   ÚapplyzBaseHeuristic.apply.   so   € Ø×-Ò-¨hÑ7Ô7ˆàð 	KØÔ×#Ò# OÑ4Ô4Ð4Ø#'§<¢<°Ñ#9Ô#9Ð Ø#Ð/ØÔ ×'Ò'¨Ð4HÐ(IÑJÔJÐJàˆr   N)Ú__name__Ú
__module__Ú__qualname__r   r   r&   r   r   r   r   r      sA   € € € € € ð	+ð 	+ð 	+ðð ð ð	ð 	ð 	ð 	ð 	r   r   c                   ó   — e Zd ZdZd„ ZdS )Ú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…         Ž ¬¦  «        }t          |¦  «        |d<   d|d<   |S )	NÚexpiresr   é   )Údaysé   )r   Úpublicúcache-control)r"   r   r   r   r   r   )r   r   r"   r   r-   s        r   r   zOneDayCache.update_headers@   su   € Øˆà˜HÔ,Ð,Ð,Ý˜XÔ-¨fÔ5Ñ6Ô6ˆDÝ"¥9°!Ð#4Ñ#4Ô#4½8ÀTÈ"È1È"ÄXÐ;NÐOÑOÔOˆGÝ!3°GÑ!<Ô!<ˆG�IÑØ'/ˆG�OÑ$Øˆr   N)r'   r(   r)   Ú__doc__r   r   r   r   r+   r+   :   s-   € € € € € ðð ð
ð ð ð ð r   r+   c                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )ÚExpiresAfterz;
    Cache **all** requests for a defined time period.
    c                 ó(   — t          di |¤Ž| _        d S )Nr   )r   r   )r   Úkws     r   Ú__init__zExpiresAfter.__init__P   s   € Ý�_�_ �_�_ˆŒ
ˆ
ˆ
r   c                 óN   — t          | j        ¦  «        }t          |¦  «        ddœS )Nr1   )r-   r2   )r   r   r   )r   r   r-   s      r   r   zExpiresAfter.update_headersS   s'   € Ý˜tœzÑ*Ô*ˆÝ-¨gÑ6Ô6ÈÐRÐ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.warningW   s   € ØKˆØ�d”jÑ Ð r   N)r'   r(   r)   r3   r8   r   r   r   r   r   r5   r5   K   sN   € € € € € ðð ð%ð %ð %ðSð Sð Sð!ð !ð !ð !ð !r   r5   c                   ó&   — e Zd ZdZh d£Zd„ Zd„ ZdS )Ú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k    ri S |j        | j        vri S d|vsd|vri S t          j        t          |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 )	Nr-   r2   r1   r   zlast-modifiedr   é
   i€Q )r"   ÚstatusÚcacheable_by_default_statusesr   r   r   r   ÚtimeÚmaxÚminÚstrftimeÚTIME_FMTÚgmtime)
r   Úrespr"   r   Úlast_modifiedÚnowÚcurrent_ager   Úfreshness_lifetimer-   s
             r   r   zLastModified.update_headersl   s/  € Ø”,ˆà˜ÐÐØˆIà˜gÐ%Ð%¨'°/Ô*BÀhÒ*NÐ*NØˆIàŒ;˜dÔ@Ð@Ð@ØˆIà˜Ð Ð  O¸7Ð$BÐ$BØˆIåŒ�|¨G°F¬OÑ<Ô<Ñ=Ô=ˆÝ! '¨/Ô":Ñ;Ô;ˆØˆ<˜=Ð0ØˆIåŒi‰kŒkˆÝ˜!˜S 4™ZÑ(Ô(ˆØ•x” }Ñ5Ô5Ñ5ˆÝ  ¥C¨°©
°IÑ$>Ô$>Ñ?Ô?ÐØ Ò,Ð,ØˆIàÐ+Ñ+ˆØ�4œ=­µ4´;¸wÑ3GÔ3GÑHÔHÐIÐIr   c                 ó   — d S r	   r   )r   rS   s     r   r   zLastModified.warningŠ   s   € Øˆtr   N)r'   r(   r)   r3   rL   r   r   r   r   r   r=   r=   \   sQ   € € € € € ð
ð 
ð%ð %ð %Ð!ðJð Jð Jð<ð ð ð ð r   r=   r	   )r   rM   Úemail.utilsr   r   r   r   r   rQ   r   r   Úobjectr   r+   r5   r=   r   r   r   ú<module>r[      s*  ðð
 €€€Ø €€€à ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;à (Ð (Ð (Ð (Ð (Ð (Ð (Ð (à&€ðð ð ð ð
7ð 7ð 7ðð ð ð ð �Fñ ô ð ðDð ð ð ð �-ñ ô ð ð"!ð !ð !ð !ð !�=ñ !ô !ð !ð"/ð /ð /ð /ð /�=ñ /ô /ð /ð /ð /r   