
    h                       S r SSKJr  SSKJrJr  SSKJr  SSKJr  SSK	J
r
  SSKJrJr  SS	KJrJrJr  SS
KJrJrJrJr  \(       a  SSKrSSKJrJr  SSKJr  SSKJr            SS jrSS jrSS.     SS jjr SS.   SS jjr!g)zNLow-level local (acceptance & rejection) Terms of Service metadata management.    )annotations)datetimetimezone)TYPE_CHECKING)Channel)ValidationError   )CondaToSMissingErrorCondaToSPermissionError)	LocalPairLocalToSMetadataRemoteToSMetadata)get_all_channel_pathsget_channel_pathsget_metadata_pathget_pathN)IterableIterator)Path)Anyc           	     "   [        U5      nUR                  (       d  [        S5      e[        U[        [
        45      (       d  [        S5      e[	        S	0 0 UR                  5       EUE[        R                  " [        R                  S9UR                  S.ED6n[        XUR                  5      n UR                  R                  SSS9  UR!                  UR#                  5       5        [)        X$S9$ ! [$         a  n['        XA5      UeSnAff = f)
zWrite the metadata to file.z`channel` must have a base URL.z;`metadata` must be a LocalToSMetadata or RemoteToSMetadata.)tz)acceptance_timestampbase_urlT)parentsexist_okNmetadatapath )r   r   
ValueError
isinstancer   r   	TypeError
model_dumpr   nowr   utcr   versionparentmkdir
write_textmodel_dump_jsonPermissionErrorr   r   )tos_rootchannelr   kwargsr   excs         8lib/python3.13/site-packages/conda_anaconda_tos/local.pywrite_metadatar2      s    gG:;;h!13D EFFUVV   
!!#

 %-LLHLL$A((
H X0@0@AD>$60023
 h22	  >%d4#=>s   19C3 3
D=D		Dc                     [        [        R                  " [        U 5      R	                  5       5      U S9$ ! [
        [        4 a     g[         a  n[        U 5      UeSnAff = f)zLoad the metadata from file.r   N)	r   r   model_validate_jsonr   	read_textFileNotFoundErrorr   r,   r   )r   r0   s     r1   read_metadatar7   >   sc    5%99(4.:R:R:TU
 	
 /   5%d+45s   47 A#		A#AA#extend_search_pathc                   [        XS9 Vs/ s H  n[        U5      =n(       d  M  UPM     nnU(       d  [        SU  35      eUR                  5         [	        U5      S   $ s  snf )z.Get the latest metadata for the given channel.r8   z'No Terms of Service metadata found for )r   r7   r
   reversesorted)r.   r9   r   metadata_pairmetadata_pairss        r1   get_local_metadatar@   N   sv     &gUUD*400M0 	U   "%LWI#VWW  .!"%%s
   A!A!c              #  N  #    0 n[        U S9 HW  n[        U5      =n(       d  M  [        UR                  R                  5      nUR                  U/ 5      R                  U5        MY     UR                  5        H'  u  pEUR                  5         U[        U5      S   4v   M)     g7f)zYield all metadata.r8   r;   N)
r   r7   r   r   r   
setdefaultappenditemsr<   r=   )r9   grouped_metadatasr   r>   r.   r?   s         r1   get_local_metadatasrF   f   s      9;%9KL)$//=/m44==>G(("5<<]K M $5#:#:#<  vn-b111 $=s   B%B B%)
r-   str | os.PathLike[str] | Pathr.   str | Channelr   z$LocalToSMetadata | RemoteToSMetadatar/   r   returnr   )r   rG   rI   zLocalPair | None)r.   rH   r9   .Iterable[str | os.PathLike[str] | Path] | NonerI   r   )r9   rJ   rI   z#Iterator[tuple[Channel, LocalPair]])"__doc__
__future__r   r   r   typingr   conda.models.channelr   pydanticr   
exceptionsr
   r   modelsr   r   r   r   r   r   r   r   oscollections.abcr   r   pathlibr   r   r2   r7   r@   rF   r        r1   <module>rV      s    U " '   ( $ E B B W W2#3+#3#3 3#3
 #3 #3L5& JN&& G& 	&4 JN2F2 )2rU   