
    .hb#                       S r SSKJr  SSKrSSKrSSKrSSKrSSKrSSKJ	r	  SSK
Jr  SSKJr  SSKJr  SSKJr  SS	KJrJrJr   SS
KJr  \R4                  (       a  SSKJrJr  SSKJr  \R>                  " \ 5      r!Sr"Sr#Sr$\$ S3r%\$ S3r&\$ S3r'\$ S3r(\$ S3r)\$ S3r*\RV                  " S\RX                  5      r-S+S jr.S,S jr/S,S jr0S-S jr1S,S jr2S-S jr3S,S jr4\.\Rj                  " S5      S-S j5       5       r6\.\Rj                  " S5      S-S  j5       5       r7\.\Rj                  " S5      S-S! j5       5       r8\.\Rj                  " S5      S-S" j5       5       r9\.\Rj                  " S5      S-S# j5       5       r: " S$ S%\Rv                  5      r<    S.S& jr=S/S' jr>S0S( jr?\S1S) j5       r@\S2S* j5       rAg! \ a    Sr GNxf = f)3zCConda plugin that adds telemetry headers to requests made by conda.    )annotationsN)context)list_packages)PrimitiveParametermask_anaconda_token)all_channel_urls)CondaRequestHeaderCondaSettinghookimpl)__version__zn/a)IteratorSequence)Callable;iX  zanaconda-telemetryz-virtual-packagesz	-channelsz	-packagesz-searchz-installz	-sys-infoa  
    ^                           # Start of string
    (?:                         # Non-capturing group for host patterns
        repo\.anaconda\.        # repo.anaconda. (literal dots)
        (?:com|cloud)           # Either "com" or "cloud"
        (?:/.*)?                # Optional path starting with forward slash
        |                       # OR
        conda\.anaconda\.org/   # conda.anaconda.org/ (literal dots and slash)
        (?:                     # Non-capturing group for channel paths
            anaconda|           # anaconda channel
            conda-forge|        # conda-forge channel
            main|               # main channel
            msys2|              # msys2 channel
            r                   # r channel
        )
        /.*                     # Forward slash followed by any characters
    )
    $                           # End of string
    c                J   ^  [         R                  " T 5      SU 4S jj5       nU$ )z$Log the duration of a function call.c                   > [         R                  5       [        R                  ::  aY  [        R
                  " 5       nT" U 0 UD6n[        R
                  " 5       nXB-
  n[         R                  STR                  U5        U$ T" U 0 UD6$ )zWrap the given function.z'function: %s; duration (seconds): %0.4f)loggergetEffectiveLevelloggingINFOtimeperf_counterinfo__name__)argskwargsticvaluetocelapsed_timefuncs         V/data/cameron/miniconda/lib/python3.13/site-packages/conda_anaconda_telemetry/hooks.pywrapper_timertimer.<locals>.wrapper_timerX   s|     ##%5##%C$)&)E##%C9LKK9
 LT$V$$    )r   tupler   dictreturnr   )	functoolswraps)r"   r$   s   ` r#   timerr,   U   s(     __T% %  r&   c                 ^    [        S [        R                  R                  5        5       5      $ )z>Retrieve the registered virtual packages from conda's context.c              3  r   #    U  H-  nUR                    S UR                   S UR                   3v   M/     g7f)=N)nameversionbuild).0packages     r#   	<genexpr>'get_virtual_packages.<locals>.<genexpr>n   s5      KG <<.'//*!GMM?;Ks   57)r'   r   plugin_managerget_virtual_package_records r&   r#   get_virtual_packagesr:   l   s+     --IIK  r&   c                 j    [        [        [        R                  5      5      n [	        S U  5       5      $ )zFReturn a list of currently configured channel URLs with tokens masked.c              3  8   #    U  H  n[        U5      v   M     g 7f)Nr   )r3   cs     r#   r5   #get_channel_urls.<locals>.<genexpr>w   s     :A$Q''s   )listr	   r   channelsr'   )r@   s    r#   get_channel_urlsrA   t   s)    $W%5%567H::::r&   c                 6    [         R                  R                  $ )zJUse ``sys.argv`` to determine the conda command that is current being run.)r   _argparse_argscmdr9   r&   r#   get_conda_commandrE   z   s    !!%%%r&   c                 l    [         R                  =(       d    [         R                  n [        U SS9u  pU$ )z9Retrieve the list of packages in the current environment.	canonical)format)r   active_prefixroot_prefixr   )prefix_packagess      r#   get_package_listrN      s+    ""9g&9&9F{;KAOr&   c                 6    [         R                  R                  $ )z?Retrieve the search term being used when search command is run.)r   rC   
match_specr9   r&   r#   get_search_termrQ      s    !!,,,r&   c                 6    [         R                  R                  $ )z!Get the parsed position argument.)r   rC   rM   r9   r&   r#   get_install_argumentsrS      s    !!***r&   c                 x    [         [        5       S.n [        R                  S U R	                  5        5       5      $ )z:Return ``;`` delimited string of extra system information.)conda_build_versionconda_commandc              3  4   #    U  H  u  pU S U 3v   M     g7f):Nr9   )r3   keyr   s      r#   r5   ,get_sys_info_header_value.<locals>.<genexpr>   s!       +AZS3%q+As   )rU   rE   FIELD_SEPARATORjoinitems)telemetry_datas    r#   get_sys_info_header_valuer_      s?    
  3*,N
   +9+?+?+A   r&   c                 <    [         R                  [        5       5      $ z<Return ``FIELD_SEPARATOR`` delimited string of channel URLs.)r[   r\   rA   r9   r&   r#   get_channel_urls_header_valuerb            0 233r&   c                 <    [         R                  [        5       5      $ )z@Return ``FIELD_SEPARATOR`` delimited string of virtual packages.)r[   r\   r:   r9   r&   r#   !get_virtual_packages_header_valuere      s      4 677r&   c                 <    [         R                  [        5       5      $ ra   )r[   r\   rS   r9   r&   r#   "get_install_arguments_header_valuerg      s      5 788r&   c                 <    [         R                  [        5       5      $ )zAReturn ``FIELD_SEPARATOR`` delimited string of install arguments.)r[   r\   rN   r9   r&   r#   #get_installed_packages_header_valueri      rc   r&   c                  .    \ rS rSr% SrS\S'   S\S'   Srg)	HeaderWrapper   zIObject that wraps ``CondaRequestHeader`` and adds a ``size_limit`` field.r
   headerint
size_limitr9   N)r   
__module____qualname____firstlineno____doc____annotations____static_attributes__r9   r&   r#   rk   rk      s    SOr&   rk   c              #     #    U  HC  nUR                   R                  SUR                   UR                   l        UR                   v   ME     g7f)zMake sure that all headers combined are not larger than ``SIZE_LIMIT``.

Any headers over their individual limits will be truncated.
N)rm   r   ro   )header_wrapperswrappers     r#   validate_headersry      s?      #&~~334Hg6H6HInn #s   AAc            
        [        [        [        [        5       S9SS9[        [        [        [        5       S9SS9[        [        [        [        5       S9SS9[        [        [        [        5       S9SS9/n [        5       nUS:X  a/  U R                  [        [        [        [        5       S9SS95        U $ US;   a-  U R                  [        [        [        [        5       S9SS95        U $ )N)r0   r   i  )rm   ro   i  search>   createinstall)rk   r
   HEADER_SYS_INFOr_   HEADER_CHANNELSrb   HEADER_VIRTUAL_PACKAGESre   HEADER_PACKAGESri   rE   appendHEADER_SEARCHrQ   HEADER_INSTALLrg   )custom_headerscommands     r#   _conda_request_headersr      s   %$/1 	
 	%$35 	
 	%,79 	
 	%$9; 	
-N>  !G()&)+ 	
*  
)	))'<> 	
 r&   c                8    [         R                  U  U 35      SL$ )zKReturn whether we should submit request headers to the given host and path.N)REQUEST_HEADER_PATTERNmatch)hostpaths     r#   should_submit_request_headersr   	  s     !''4&8DDr&   c              #     #     [         R                  R                  (       a-  [        X5      (       a  [	        [        5       5       Sh  vN   ggg N! [         a  n[        R                  SUS9   SnAgSnAff = f7f)z>Return a list of custom headers to be included in the request.Nz Failed to collect telemetry data)exc_info)	r   pluginsanaconda_telemetryr   ry   r   	Exceptionr   debug)r   r   excs      r#   conda_request_headersr     sl     G??--2O3
 3
 ((>(@AAA3
- B G7#FGsA   A>AA 	A
A A>A 
A;A61A>6A;;A>c            	   #  >   #    [        SS[        S[        S9S9v   g7f)z=Return a list of settings that can be configured by the user.r   z%Whether Anaconda Telemetry is enabledT)element_type)r0   description	parameterN)r   r   boolr9   r&   r#   conda_settingsr     s$      !;$T= s   )r"   r   r)   r   )r)   ztuple[str, ...])r)   str)rw   Sequence[HeaderWrapper]r)   Iterator[CondaRequestHeader])r)   r   )r   r   r   r   r)   r   )r   r   r   r   r)   r   )r)   zIterator[CondaSetting])Brs   
__future__r   r*   r   rer   typingconda.base.contextr   conda.cli.main_listr   conda.common.configurationr   conda.common.urlr   conda.models.channelr	   conda.pluginsr
   r   r   conda_buildr   rU   ImportErrorTYPE_CHECKINGcollections.abcr   r   r   	getLoggerr   r   r[   
SIZE_LIMITHEADER_PREFIXr   r   r   r   r   r~   compileVERBOSEr   r,   r:   rA   rE   rN   rQ   rS   	lru_cacher_   rb   re   rg   ri   
NamedTuplerk   ry   r   r   r   r   r9   r&   r#   <module>r      s@   J "   	   & - 9 0 1 D D > 
2			8	$  

 % +O+<=  #O9- #O9- !/) "?(+ #O9- & JJ) 0.;&
-
+
 
T	  	 
T4  4
 
T8  8
 
T9  9
 
T4  4
F%% 	,	!	8vE
 
G 
G 
 
K    s   F9 9GG