
    
_h                    R   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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  \R2                  (       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)Sr*S+S jr+S,S jr,S,S jr-S-S jr.S,S jr/S-S jr0S,S jr1\+\Rd                  " S5      S-S j5       5       r3\+\Rd                  " S5      S-S  j5       5       r4\+\Rd                  " S5      S-S! j5       5       r5\+\Rd                  " S5      S-S" j5       5       r6\+\Rd                  " S5      S-S# j5       5       r7 " S$ S%\Rp                  5      r9    S.S& jr:S/S' jr;S0S( jr<\S1S) j5       r=\S2S* j5       r>g! \ a    Sr GN]f = 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-Info))zrepo.anaconda.com )zconda.anaconda.orgz/conda-forge/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         >lib/python3.13/site-packages/conda_anaconda_telemetry/hooks.pywrapper_timertimer.<locals>.wrapper_timerC   s|     ##%5##%C$)&)E##%C9LKK9
 LT$V$$    )r   tupler   dictreturnr   )	functoolswraps)r#   r%   s   ` r$   timerr-   @   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>Y   s5      KG <<.'//*!GMM?;Ks   57)r(   r   plugin_managerget_virtual_package_records r'   r$   get_virtual_packagesr;   W   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   )r4   cs     r$   r6   #get_channel_urls.<locals>.<genexpr>b   s     :A$Q''s   )listr	   r   channelsr(   )rB   s    r$   get_channel_urlsrC   _   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cmdr:   r'   r$   get_conda_commandrG   e   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_listrP   j   s+    ""9g&9&9F{;KAOr'   c                 6    [         R                  R                  $ )z?Retrieve the search term being used when search command is run.)r   rE   
match_specr:   r'   r$   get_search_termrS   r   s    !!,,,r'   c                 6    [         R                  R                  $ )z!Get the parsed position argument.)r   rE   rO   r:   r'   r$   get_install_argumentsrU   w   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):Nr:   )r4   keyr    s      r$   r6   ,get_sys_info_header_value.<locals>.<genexpr>   s!       +AZS3%q+As   )rW   rG   FIELD_SEPARATORjoinitems)telemetry_datas    r$   get_sys_info_header_valuera   |   s?    
  3*,N
   +9+?+?+A   r'   c                 <    [         R                  [        5       5      $ z<Return ``FIELD_SEPARATOR`` delimited string of channel URLs.)r]   r^   rC   r:   r'   r$   get_channel_urls_header_valuerd            0 233r'   c                 <    [         R                  [        5       5      $ )z@Return ``FIELD_SEPARATOR`` delimited string of virtual packages.)r]   r^   r;   r:   r'   r$   !get_virtual_packages_header_valuerg      s      4 677r'   c                 <    [         R                  [        5       5      $ rc   )r]   r^   rU   r:   r'   r$   "get_install_arguments_header_valueri      s      5 788r'   c                 <    [         R                  [        5       5      $ )zAReturn ``FIELD_SEPARATOR`` delimited string of install arguments.)r]   r^   rP   r:   r'   r$   #get_installed_packages_header_valuerk      re   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_limitr:   N)r   
__module____qualname____firstlineno____doc____annotations____static_attributes__r:   r'   r$   rm   rm      s    SOr'   rm   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)ro   r    rq   )header_wrapperswrappers     r$   validate_headersr{      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)r1   r    i  )ro   rq   i  search>   createinstall)rm   r
   HEADER_SYS_INFOra   HEADER_CHANNELSrd   HEADER_VIRTUAL_PACKAGESrg   HEADER_PACKAGESrk   rG   appendHEADER_SEARCHrS   HEADER_INSTALLri   )custom_headerscommands     r$   _conda_request_headersr      s   %$/1 	
 	%$35 	
 	%,79 	
 	%$9; 	
-N>  !G()&)+ 	
*  
)	))'<> 	
 r'   c                :   ^ ^ [        U U4S j[         5       5      $ )zFReturn a list of hosts and paths we want to submit request headers to.c              3  ~   >#    U  H2  u  pTU:H  =(       a    U(       + =(       d    TR                  U5      v   M4     g 7fr>   )
startswith)r4   host_patternpath_patternhostpaths      r$   r6   0should_submit_request_headers.<locals>.<genexpr>   s9      *A&L 	Tl"2"Sdool6ST*As   :=)anyREQUEST_HEADER_PATTERNS)r   r   s   ``r$   should_submit_request_headersr      s     *A  r'   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   r{   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)r1   description	parameterN)r   r   boolr:   r'   r$   conda_settingsr     s$      !;$T= s   )r#   r   r*   r   )r*   ztuple[str, ...])r*   str)ry   Sequence[HeaderWrapper]r*   Iterator[CondaRequestHeader])r*   r   )r   r   r   r   r*   r   )r   r   r   r   r*   r   )r*   zIterator[CondaSetting])?ru   
__future__r   r+   r   r   typingconda.base.contextr   conda.cli.main_listr   conda.common.configurationr   conda.common.urlr   conda.models.channelr	   conda.pluginsr
   r   r   conda_buildr   rW   ImportErrorTYPE_CHECKINGcollections.abcr   r   r   	getLoggerr   r   r]   
SIZE_LIMITHEADER_PREFIXr   r   r   r   r   r   r   r-   r;   rC   rG   rP   rS   rU   	lru_cachera   rd   rg   ri   rk   
NamedTuplerm   r{   r   r   r   r   r:   r'   r$   <module>r      s%   J "     & - 9 0 1 D D > 
2			8	$  
 % +O+<=  #O9- #O9- !/) "?(+ #O9- .;&
-
+
 
T	  	 
T4  4
 
T8  8
 
T9  9
 
T4  4
F%% 	,	!	8v 
G 
G 
 
i    s   F F&%F&