
    Vi4                        S SK r S SKrS SKrS SKJrJrJrJr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  S SKJrJr  \R.                  " \5      rS	 r\S
 5       rS rS rS rS rS r   SS\
\!   S\
\!   SS4S jjr"g)    N)PIPECalledProcessErrorPopenSubprocessError
check_call)Optional)Requirement)default_instrumentations)	libraries)__version__)PackageNotFoundErrorversionc                    ^  SU 4S jjnU$ )Nc                    >  U (       a  T" U 5      $ T" 5       $ ! [          aH  n[        USS 5      nU(       a  SSR                  U5       S3nU (       a  W SU  S3n[        W5      eS nAff = f)NcmdzError calling system command " "z for package ")r   getattrjoinRuntimeError)packageexpr   msgfuncs       z/home/james-whalen/.local/share/pipx/venvs/semgrep/lib/python3.13/site-packages/opentelemetry/instrumentation/bootstrap.pywrapper_syscall.<locals>.wrapper-   ss    
	$G}$6M 	$#ud+C6sxx}oQG^G9A6s##	$s     
A+AA&&A+N )r   r   s   ` r   _syscallr    ,   s    $ N    c           
           [        [        R                  SSSSSSU /5        g ! [         a  n[	        U5         S nAg S nAff = f)N-mpipinstallz-Uz--upgrade-strategyzonly-if-needed)r   sys
executabler   print)r   errors     r   _sys_pip_installr*   =   sK    $ 		
  es   !$ 
A>Ac                 B   [        [        R                  SSS/[        S9 nUR	                  5       S   R                  5       nUR                  5       nSSS5        U  H.  nU H%  nUR                  5       W;   d  M  [        SW 35      e   M0     g! , (       d  f       NC= f)a_  Ensures none of the instrumentations have dependency conflicts.
Clean check reported as:
'No broken requirements found.'
Dependency conflicts are reported as:
'opentelemetry-instrumentation-flask 1.0.1 has requirement opentelemetry-sdk<2.0,>=1.0, but you have opentelemetry-sdk 0.5.'
To not be too restrictive, we'll only check for relevant packages.
r#   r$   check)stdoutr   NzDependency conflict found: )r   r&   r'   r   communicatedecodelowerr   )r   
check_pipe	pip_checkpip_check_lowerpackage_tupr   s         r   
_pip_checkr5   Q   s     
	ug.t
	**,Q/668	#//+	

 !"G}}/1"%@#LMM # !
 
s   2B
Bc                     [        U 5      n  [        U R                  5      nU R                  R                  U5      (       d  [        R                  SU U5        gg! [         a     gf = f)NFzRinstrumentation for package %s is available but version %s is installed. Skipping.T)r	   r   namer   	specifierfilterloggerwarning)reqdist_versions     r   _is_installedr>   d   si    
c
Csxx( ==--6		
    s   A 
A('A(c              #   p   #    U  H  nUv   M	     U H  n[        US   5      (       d  M  US   v   M!     g 7f)Nlibraryinstrumentation)r>   r
   r   libs      r   _find_installed_librariesrD   w   s;     '	 ( Y(('(( s   $66c                     [         R                  [        R                  5        [	        SR                  [        X5      5      5        g )N
)r:   setLevelloggingERRORr(   r   rD   )r
   r   s     r   _run_requirementsrJ      s/    
OOGMM"			%&>J	
r!   c                 T    [        X5       H  n[        U5        M     [        U5        g r   )rD   r*   r5   rB   s      r   _run_installrL      s#    ()AM Nyr!   r
   r   returnc                    SnSn[         R                  " SS9nUR                  SSSS[        -   S	9  UR                  S
SX#/USS9  UR	                  5       nUc  [
        nU c  [        n U[        U[        0UR                     nU" X5        g )Nr%   requirementsz
        opentelemetry-bootstrap detects installed libraries and automatically
        installs the relevant instrumentation packages for them.
        )descriptionz	--versionzprint version informationr   z	%(prog)s )helpactionr   z-az--actiona  
        install - uses pip to install the new requirements using to the
                  currently active site-package.
        requirements - prints out the new requirements to stdout. Action can
                       be piped and appended to a requirements.txt file.
        )choicesdefaultrQ   )
argparseArgumentParseradd_argumentr   
parse_argsgen_librariesgen_default_instrumentationsrL   rJ   rR   )r
   r   action_installaction_requirementsparserargsr   s          r   runr_      s     N($$F (k)	   5#   D!	'#?  	. kkC  ,r!   )NN)#rU   rH   r&   
subprocessr   r   r   r   r   typingr   packaging.requirementsr	   +opentelemetry.instrumentation.bootstrap_genr
   rZ   r   rY   %opentelemetry.instrumentation.versionr   &opentelemetry.util._importlib_metadatar   r   	getLogger__name__r:   r    r*   r5   r>   rD   rJ   rL   listr_   r   r!   r   <module>ri      s      
   . >
 
		8	$" 
 
&N&&) 04 $+-&tn+-~+- 
+-r!   