§
    
Á³g @  ã                   óÄ   — d Z ddlZddlZddlZddlZddlmZ ddlmZ ddl	m
Z
mZ ddlmZ  ej        e¦  «        Z ej        d¦  «        Zd	Zd
„ Z G d„ de¦  «        ZdS )z7
The httplib2 algorithms ported for use with requests.
é    N)Úparsedate_tz)ÚCaseInsensitiveDicté   )Ú	DictCacheÚSeparateBodyBaseCache)Ú
Serializerz9^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?)é-  é4  c                 ó¤   — t                                | ¦  «                             ¦   «         }|d         |d         |d         |d         |d         fS )zƒParses a URI using the regex given in Appendix B of RFC 3986.

    (scheme, authority, path, query, fragment) = parse_uri(uri)
    r   é   é   é   é   )ÚURIÚmatchÚgroups)Úurir   s     úa/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/pip/_vendor/cachecontrol/controller.pyÚ	parse_urir      sD   € õ
 �YŠY�s‰^Œ^×"Ò"Ñ$Ô$€FØ�1ŒI�v˜a”y &¨¤)¨V°A¬Y¸¸q¼	ÐBÐBó    c                   óp   — e Zd ZdZ	 dd„Zed„ ¦   «         Zed„ ¦   «         Zd„ Zd„ Z	d	„ Z
dd
„Zdd„Zd„ ZdS )ÚCacheControllerz4An interface to see if request should cached or not.NTc                 ó~   — |€t          ¦   «         n|| _        || _        |pt          ¦   «         | _        |pd| _        d S )N)éÈ   éË   i,  r	   r
   )r   ÚcacheÚcache_etagsr   Ú
serializerÚcacheable_status_codes)Úselfr   r   r   Ústatus_codess        r   Ú__init__zCacheController.__init__'   sC   € ð %* M•Y‘[”[�[°uˆŒ
Ø&ˆÔØ$Ð4­
©¬ˆŒØ&2Ð&OÐ6OˆÔ#Ð#Ð#r   c                 ó   — t          |¦  «        \  }}}}}|r|st          d|z  ¦  «        ‚|                     ¦   «         }|                     ¦   «         }|sd}|rd                     ||g¦  «        p|}|dz   |z   |z   }|S )z4Normalize the URL to create a safe key for the cachez(Only absolute URIs are allowed. uri = %sú/ú?z://)r   Ú	ExceptionÚlowerÚjoin)	Úclsr   ÚschemeÚ	authorityÚpathÚqueryÚfragmentÚrequest_uriÚ
defrag_uris	            r   Ú_urlnormzCacheController._urlnorm/   s¢   € õ 6?¸s±^´^Ñ2ˆ�˜D %¨Øð 	N˜Yð 	NÝÐFÈÑLÑMÔMÐMà—’‘”ˆØ—O’OÑ%Ô%ˆ	àð 	ØˆDð Ð7 §¢¨$°¨Ñ 7Ô 7Ð?¸4ˆØ˜e‘^ iÑ/°+Ñ=ˆ
àÐr   c                 ó,   — |                       |¦  «        S ©N)r1   )r)   r   s     r   Ú	cache_urlzCacheController.cache_urlC   s   € à�|Š|˜CÑ Ô Ð r   c                 óü  — t           dft           dft           dfddddddddt           dfdœ}|                     d|                     dd¦  «        ¦  «        }i }|                     d¦  «        D �]}|                     ¦   «         sŒ|                     d	d
¦  «        }|d                              ¦   «         }	 ||         \  }}	n+# t          $ r t
                               d|¦  «         Y Œ|w xY w|r|	sd ||<   |r‚	  ||d
                              ¦   «         ¦  «        ||<   Œ³# t          $ r  |	rt
                               d|¦  «         Y ŒÜt          $ r% t
                               d||j	        ¦  «         Y �Œ	w xY w�Œ|S )NTF)NF)úmax-agez	max-staleú	min-freshúno-cacheúno-storezno-transformzonly-if-cachedzmust-revalidateÚpublicÚprivatezproxy-revalidatezs-maxagezcache-controlzCache-ControlÚ ú,ú=r   r   z,Ignoring unknown cache-control directive: %sz-Missing value for cache-control directive: %sz8Invalid value for cache-control directive %s, must be %s)
ÚintÚgetÚsplitÚstripÚKeyErrorÚloggerÚdebugÚ
IndexErrorÚ
ValueErrorÚ__name__)
r    ÚheadersÚknown_directivesÚ
cc_headersÚretvalÚcc_directiveÚpartsÚ	directiveÚtypÚrequireds
             r   Úparse_cache_controlz#CacheController.parse_cache_controlG   sì  € õ ˜T�{Ý˜u˜Ý˜t˜Ø%Ø%Ø)Ø+Ø,Ø#Ø$Ø -Ý˜d˜ð
ð 
Ðð  —[’[ °'·+²+¸oÈrÑ2RÔ2RÑSÔSˆ
àˆà&×,Ò,¨SÑ1Ô1ð 	ñ 	ˆLØ×%Ò%Ñ'Ô'ð Øà ×&Ò& s¨AÑ.Ô.ˆEØ˜aœŸšÑ(Ô(ˆIðØ 0°Ô ;‘��X�XøÝð ð ð Ý—’ÐKÈYÑWÔWÐWØ�ðøøøð ð )˜hð )Ø$(��yÑ!Øð ðØ(+¨¨E°!¬H¯NªNÑ,<Ô,<Ñ(=Ô(=�F˜9Ñ%Ð%øÝ!ð ð ð Øð ÝŸšØNØ%ñô ð øøõ "ð ð ð Ý—L’LØUØ!Øœñô ð ð ñ ðøøøñð  ˆs*   Â6CÃ%C*Ã)C*Ã9&D Ä 'E7Å	*E7Å6E7c                 óv  — |                       |j        ¦  «        }t                               d|¦  «         |                      |j        ¦  «        }d|v rt                               d¦  «         dS d|v r(|d         dk    rt                               d¦  «         dS | j                             |¦  «        }|€t                               d	¦  «         dS t          | j        t          ¦  «        r| j         
                    |¦  «        }nd}| j                             |||¦  «        }|st                               d
¦  «         dS t          |j        ¦  «        t           v rd}t                               |¦  «         |S t#          |j        ¦  «        }|rd|vrTd|vr4t                               d¦  «         | j                             |¦  «         t                               d¦  «         dS t'          j        ¦   «         }	t)          j        t-          |d         ¦  «        ¦  «        }
t/          d|	|
z
  ¦  «        }t                               d|¦  «         |                      |¦  «        }d}d|v r$|d         }t                               d|¦  «         n]d|v rYt-          |d         ¦  «        }|�Bt)          j        |¦  «        |
z
  }t/          d|¦  «        }t                               d|¦  «         d|v r#|d         }t                               d|¦  «         d|v r(|d         }||z  }t                               d|¦  «         ||k    r8t                               d¦  «         t                               d||¦  «         |S d|vr4t                               d¦  «         | j                             |¦  «         dS )ze
        Return a cached response if it exists in the cache, otherwise
        return False.
        zLooking up "%s" in the cacher8   z-Request header has "no-cache", cache bypassedFr6   r   z1Request header has "max_age" as 0, cache bypassedNzNo cache entry availablez1Cache entry deserialization failed, entry ignoredzQReturning cached permanent redirect response (ignoring date and etag information)ÚdateÚetagz(Purging cached response: no date or etagz!Ignoring cached response: no datezCurrent age based on date: %iz#Freshness lifetime from max-age: %iÚexpiresz#Freshness lifetime from expires: %iz+Freshness lifetime from request max-age: %ir7   z'Adjusted current age from min-fresh: %iz2The response is "fresh", returning cached responsez%i > %iz4The cached response is "stale" with no etag, purging)r4   ÚurlrD   rE   rR   rI   r   r@   Ú
isinstancer   Úget_bodyr   ÚloadsÚwarningr?   ÚstatusÚPERMANENT_REDIRECT_STATUSESr   ÚdeleteÚtimeÚcalendarÚtimegmr   Úmax)r    Úrequestr4   ÚccÚ
cache_dataÚ	body_fileÚrespÚmsgrI   ÚnowrT   Úcurrent_ageÚresp_ccÚfreshness_lifetimerV   Úexpire_timeÚ	min_freshs                    r   Úcached_requestzCacheController.cached_request}   s¸  € ð
 —N’N 7¤;Ñ/Ô/ˆ	Ý�ŠÐ3°YÑ?Ô?Ð?Ø×%Ò% g¤oÑ6Ô6ˆð ˜ÐÐÝ�LŠLÐHÑIÔIÐIØ�5à˜ˆ?ˆ?˜r )œ}°Ò1Ð1Ý�LŠLÐLÑMÔMÐMØ�5ð ”Z—^’^ IÑ.Ô.ˆ
ØÐÝ�LŠLÐ3Ñ4Ô4Ð4Ø�5å�d”jÕ"7Ñ8Ô8ð 	Øœ
×+Ò+¨IÑ6Ô6ˆIˆIàˆIð Œ×$Ò$ W¨j¸)ÑDÔDˆØð 	Ý�NŠNÐNÑOÔOÐOØ�5õ ˆtŒ{ÑÔÕ:Ð:Ð:ð7ð õ �LŠL˜ÑÔÐØˆKå% d¤lÑ3Ô3ˆØð 	˜&¨Ð/Ð/Ø˜WÐ$Ð$õ —’ÐGÑHÔHÐHØ”
×!Ò! )Ñ,Ô,Ð,Ý�LŠLÐ<Ñ=Ô=Ð=Ø�5åŒi‰kŒkˆÝŒ�|¨G°F¬OÑ<Ô<Ñ=Ô=ˆÝ˜!˜S 4™ZÑ(Ô(ˆÝ�ŠÐ4°kÑBÔBÐBð ×*Ò*¨7Ñ3Ô3ˆð Ðð ˜ÐÐØ!(¨Ô!3ÐÝ�LŠLÐ>Ð@RÑSÔSÐSÐSð ˜'Ð!Ð!Ý" 7¨9Ô#5Ñ6Ô6ˆGØÐ"Ý&œo¨gÑ6Ô6¸Ñ=�Ý%(¨¨KÑ%8Ô%8Ð"Ý—’ÐBÐDVÑWÔWÐWð ˜ˆ?ˆ?Ø!# I¤ÐÝ�LŠLØ=Ð?Qñô ð ð ˜"ÐÐØ˜;œˆIà˜9Ñ$ˆKÝ�LŠLÐBÀKÑPÔPÐPð  Ò+Ð+Ý�LŠLÐMÑNÔNÐNÝ�LŠL˜Ð$6¸ÑDÔDÐDØˆKð ˜Ð Ð Ý�LŠLÐOÑPÔPÐPØŒJ×Ò˜iÑ(Ô(Ð(ð ˆur   c                 ó  — |                       |j        ¦  «        }| j                             || j                             |¦  «        ¦  «        }i }|r2t          |j        ¦  «        }d|v r|d         |d<   d|v r|d         |d<   |S )NrU   ÚETagzIf-None-Matchzlast-modifiedzLast-ModifiedzIf-Modified-Since)r4   rW   r   rZ   r   r@   r   rI   )r    rc   r4   rg   Únew_headersrI   s         r   Úconditional_headersz#CacheController.conditional_headersò   s‘   € Ø—N’N 7¤;Ñ/Ô/ˆ	ØŒ×$Ò$ W¨d¬j¯nªn¸YÑ.GÔ.GÑHÔHˆØˆàð 	LÝ)¨$¬,Ñ7Ô7ˆGà˜Ð Ð Ø/6°v¬�˜OÑ,à 'Ð)Ð)Ø3:¸?Ô3K�Ð/Ñ0àÐr   c                 óP  — t          | j        t          ¦  «        rT| j                             || j                             ||d¦  «        |¬¦  «         | j                             ||¦  «         dS | j                             || j                             |||¦  «        |¬¦  «         dS )z.
        Store the data in the cache.
        r   )rV   N)rX   r   r   Úsetr   ÚdumpsÚset_body)r    r4   rc   ÚresponseÚbodyÚexpires_times         r   Ú
_cache_setzCacheController._cache_set  s¹   € õ �d”jÕ"7Ñ8Ô8ð 	ð ŒJ�NŠNØØ”×%Ò% g¨x¸Ñ=Ô=Ø$ð ñ ô ð ð
 ŒJ×Ò 	¨4Ñ0Ô0Ð0Ð0Ð0àŒJ�NŠNØØ”×%Ò% g¨x¸Ñ>Ô>Ø$ð ñ ô ð ð ð r   c                 ó  — |p| j         }|j        |vr#t                               d|j        |¦  «         dS t	          |j        ¦  «        }d|v r(t          j        t          |d         ¦  «        ¦  «        }nd}|�Fd|v rB|d          	                    ¦   «         r(t          |d         ¦  «        t          |¦  «        k    rdS |                      |j        ¦  «        }|                      |¦  «        }	|                      |j        ¦  «        }
t                               d|
¦  «         d}d|	v rd	}t                               d
¦  «         d|v rd	}t                               d¦  «         |rN| j                             |
¦  «        r4t                               d¦  «         | j                             |
¦  «         |rdS d|                     dd¦  «        v rt                               d¦  «         dS | j        r»d|v r·d}|                     d¦  «        r.t          |d         ¦  «        }|�t          j        |¦  «        |z
  }t'          |d¦  «        }t                               d                     |¦  «        ¦  «         t                               d¦  «         |                      |
||||¦  «         dS t          |j        ¦  «        t,          v r4t                               d¦  «         |                      |
||d¦  «         dS d|v rùt          j        t          |d         ¦  «        ¦  «        }d|	v rI|	d         dk    r=t                               d¦  «         |	d         }|                      |
||||¦  «         dS d|v rƒ|d         r}t          |d         ¦  «        }|�t          j        |¦  «        |z
  }nd}t                               d                     |¦  «        ¦  «         |                      |
||||¦  «         dS dS dS dS )zc
        Algorithm for caching requests.

        This assumes a requests Response object.
        zStatus code %s not in %sNrT   r   úcontent-lengthz&Updating cache with response from "%s"Fr9   TzResponse header has "no-store"zRequest header has "no-store"z0Purging existing cache entry to honor "no-store"Ú*Úvaryr<   zResponse header has "Vary: *"rU   rV   i u z"etag object cached for {0} secondszCaching due to etagzCaching permanent redirectr   r6   z'Caching b/c date exists and max-age > 0z5Caching b/c of expires header. expires in {0} seconds)r   r\   rD   rE   r   rI   r`   ra   r   Úisdigitr?   ÚlenrR   r4   rW   r   r@   r^   r   rb   Úformatr{   r]   )r    rc   rx   ry   r!   r   Úresponse_headersrT   Úcc_reqrd   r4   Úno_storerz   rV   s                 r   Úcache_responsezCacheController.cache_response  sb  € ð ".Ð!L°Ô1LÐØŒ?Ð"8Ð8Ð8Ý�LŠLØ*¨H¬OÐ=Sñô ð ð ˆFå.¨xÔ/?Ñ@Ô@ÐàÐ%Ð%Ð%Ý”?¥<Ð0@ÀÔ0HÑ#IÔ#IÑJÔJˆDˆDàˆDð ÐØ Ð$4Ð4Ð4Ø Ð!1Ô2×:Ò:Ñ<Ô<ð 5åÐ$Ð%5Ô6Ñ7Ô7½3¸t¹9¼9ÒDÐDàˆFà×)Ò)¨'¬/Ñ:Ô:ˆØ×%Ò%Ð&6Ñ7Ô7ˆà—N’N 7¤;Ñ/Ô/ˆ	Ý�ŠÐ=¸yÑIÔIÐIð ˆØ˜ÐÐØˆHÝ�LŠLÐ9Ñ:Ô:Ð:Ø˜ÐÐØˆHÝ�LŠLÐ8Ñ9Ô9Ð9Øð 	)˜œ
Ÿš yÑ1Ô1ð 	)Ý�LŠLÐKÑLÔLÐLØŒJ×Ò˜iÑ(Ô(Ð(Øð 	ØˆFð Ð"×&Ò& v¨rÑ2Ô2Ð2Ð2Ý�LŠLÐ8Ñ9Ô9Ð9ØˆFð Ôð 9	 Ð*:Ð :Ð :ØˆLØ×#Ò# IÑ.Ô.ð CÝ&Ð'7¸	Ô'BÑCÔC�ØÐ&Ý#+¤?°7Ñ#;Ô#;¸dÑ#B�Lå˜|¨ZÑ8Ô8ˆLå�LŠLÐ=×DÒDÀ\ÑRÔRÑSÔSÐSÝ�LŠLÐ.Ñ/Ô/Ð/Ø�OŠO˜I w°¸$ÀÑMÔMÐMÐMÐMõ �”Ñ!Ô!Õ%@Ð@Ð@Ý�LŠLÐ5Ñ6Ô6Ð6Ø�OŠO˜I w°¸#Ñ>Ô>Ð>Ð>Ð>ð
 Ð'Ð'Ð'Ý”?¥<Ð0@ÀÔ0HÑ#IÔ#IÑJÔJˆDà˜Bˆˆ 2 i¤=°1Ò#4Ð#4Ý—’ÐFÑGÔGÐGØ! )œ}�Ø—’ØØØØØ ñô ð ð ð ð Ð.Ð.Ð.Ø# IÔ.ð Ý*Ð+;¸IÔ+FÑGÔG�GØÐ*Ý'/¤°wÑ'?Ô'?À$Ñ'F˜˜à'+˜å—L’LØO×VÒVØ(ñô ñô ð ð
 —O’OØ!ØØ ØØ$ñô ð ð ð ð; (Ð'ð  /Ð.ðð r   c                 ó€  ‡— |                       |j        ¦  «        }| j                             || j                             |¦  «        ¦  «        }|s|S dgŠ|j                             t          ˆfd„|j         	                    ¦   «         D ¦   «         ¦  «        ¦  «         d|_
        |                      |||¦  «         |S )zéOn a 304 we will get a new set of headers that we want to
        update our cached value with, assuming we have one.

        This should only ever be called when we've sent an ETag and
        gotten a 304 as the response.
        r}   c              3   óR   •K  — | ]!\  }}|                      ¦   «         ‰v¯||fV — Œ"d S r3   )r'   )Ú.0ÚkÚvÚexcluded_headerss      €r   ú	<genexpr>z9CacheController.update_cached_response.<locals>.<genexpr>ª  sK   øè è € ð ð á�A�qØ—7’7‘9”9Ð$4Ð4Ð4ð �A�à4Ð4Ð4Ð4ðð r   r   )r4   rW   r   rZ   r   r@   rI   ÚupdateÚdictÚitemsr\   r{   )r    rc   rx   r4   Úcached_responserŒ   s        @r   Úupdate_cached_responsez&CacheController.update_cached_response‘  sÚ   ø€ ð —N’N 7¤;Ñ/Ô/ˆ	àœ/×/Ò/°¸¼¿ºÈ	Ñ9RÔ9RÑSÔSˆàð 	àˆOð -Ð-ÐàÔ×&Ò&Ýð ð ð ð à$Ô,×2Ò2Ñ4Ô4ðñ ô ñ ô ñ	
ô 	
ð 	
ð "%ˆÔð 	�Š˜	 7¨OÑ<Ô<Ð<àÐr   )NTNN)NN)rH   Ú
__module__Ú__qualname__Ú__doc__r"   Úclassmethodr1   r4   rR   ro   rs   r{   r†   r’   © r   r   r   r   $   sÝ   € € € € € Ø>Ð>ð KOðPð Pð Pð Pð ðð ñ „[ðð& ð!ð !ñ „[ð!ð4ð 4ð 4ðlsð sð sðjð ð ð ð ð ð ð(yð yð yð yðv&ð &ð &ð &ð &r   r   )r•   ÚloggingÚrer`   r_   Úemail.utilsr   Úpip._vendor.requests.structuresr   r   r   r   Ú	serializer   Ú	getLoggerrH   rD   Úcompiler   r]   r   Úobjectr   r—   r   r   ú<module>r       sÿ   ðð
ð ð €€€Ø 	€	€	€	Ø €€€Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $à ?Ð ?Ð ?Ð ?Ð ?Ð ?à 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø !Ð !Ð !Ð !Ð !Ð !ð 
ˆÔ	˜8Ñ	$Ô	$€à€b„jÐMÑNÔN€à(Ð ðCð Cð CðSð Sð Sð Sð S�fñ Sô Sð Sð Sð Sr   