
    %dA                         d Z ddlZddlm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 ddlmZ  ee          Zd Zd	 Zd
 Z G d de          ZddZ ej        d          Zd ZddZdS )zy
Functions related to core conda functionality that relates to pip

NOTE: This modules used to in conda, as conda/pip.py
    N)	getLogger)CondaEnvException)any_subprocess)on_win)contextc                    t           r!t          j                            |d          }n!t          j                            |dd          }|ddg| z   }t	          |||          \  }}}t
          j        sHt
          j        s<t          d           t          |           t          d           t          |           |d	k    rEt          d
t          j
                   t          |t          j
                   t          d          ||fS )Nz
python.exebinpythonz-mpip)cwdz"Ran pip subprocess with arguments:zPip subprocess output:r   zPip subprocess error:filez
Pip failed)r   ospathjoinr   r   quietjsonprintsysstderrr   )argsprefixr   python_pathrun_argsstdoutr   rcs           2lib/python3.11/site-packages/conda_env/pip_util.pypip_subprocessr      s     <gll6<88gll65(;;T5)D0H'&cBBBFFB=  2333h&'''f	Qw .%CJ7777f3:&&&&--- 6>    c                     t          j        d|           }|r9|                    d                                                                          S dS )zEReturn the list of pip packages installed based on the command outputzSuccessfully installed\ (.*)   N)researchgroupstripsplit)r   ms     r   get_pip_installed_packagesr(   .   sI    
	16::A wwqzz!!'')))tr   c                     t          dg|           \  }}t          j        d|          }|st          d          |                    d          }|S )Nz-Vzpip\ (\d+\.\d+\.\d+)z+Failed to find pip version string in outputr!   )r   r"   r#   r   r$   )r   r   r   pip_versions       r   get_pip_versionr+   7   sY    #TFF33NFF)3V<<K + MNNN!''**r   c                       e Zd Zd ZdS )
PipPackagec                     d| v r)d                     | d         | d         | d                   S d                     | d         | d                   S )Nr   z{} ({})-{}-<pip>nameversionz{}-{}-<pip>)format)selfs    r   __str__zPipPackage.__str__B   sQ    T> 	Z%,,T&\4<iYYY##DL$y/BBBr   N)__name__
__module____qualname__r3    r   r   r-   r-   A   s(        C C C C Cr   r-   Tc              #     K   t          |           }t          |                    dd          d                   }t          j                                        }dg}|dk    r|ddgz  }nd|d	<   	 t          || |
          \  }}n.# t          $ r! |rt          dt          j
                   Y d S w xY w|dk    rt          j        |          }|D ]v}	|	d                                         |	d<   d|	d         v r?|	d                             dd          \  }
}|
                    dd          }
|
|	d<   ||	d<   t          di |	V  wd S t!          j        d          }|                                D ]}|                                }|s|                    |          }|!|rt          d|z  t          j
                   Q|                                \  }}
|                                }||
d}	d|
v rF|
                    d          \  }
}|
                    dd          }
|	                    ||
d           t          di |	V  d S )N.r!   r   list	   z--formatr   legacy
PIP_FORMAT)r   envz(# Warning: subprocess call to pip failedr   r/   z, r0   - r   z([\w.-]+)\s+\((.+)\)z+Could not extract name and version from: %r)r/   r0   )r   r0   r7   )r+   intr&   r   environcopyr   	Exceptionr   r   r   r   loadslowerreplacer-   r"   compile
splitlinesr%   matchgroupsupdate)r   outputr*   pip_major_versionr>   r   
pip_stdoutr   pkgskwargsr0   r   patliner'   r/   s                   r   	installedrT   H   s     !&))KK--c155a899
*//

C8DA %V$$$L+DSIII
FF    	O<3:NNNN	 A 7'z*%%
  	' 	'F#F^1133F6Nvi(( & !'y 1 7 7a @ @!//#s33$+y!!%v&&v&&&&&&	' 	'& j011))++ 	' 	'D::<<D 		$A  aG$NUXU_````HHJJMD'::<<D" F w  !(d 3 3!//#s33 &     &&v&&&&&&;	' 	's   0B 'B10B1z[-_.]+c                 \    t                               d|                                           S )Nr?   )_canonicalize_regexsubrF   )r/   s    r   _canonicalize_namerX      s$    ""3--33555r   c                     t          |t                    r| }d |D             }t          | |          D ]B}t          |d                   }||v rd|vr |                    t          |                     Cd S )Nc                 6    h | ]}t          |j                  S r7   )rX   r/   ).0recs     r   	<setcomp>z$add_pip_installed.<locals>.<setcomp>   s#    JJJC%ch//JJJr   )rM   r/   r   )
isinstanceboolrT   rX   addstr)r   installed_pkgsr   rM   conda_namespip_pkgpip_names          r   add_pip_installedrf      s    $  KJ>JJJKVF333 ) )%gfo66{" 	vW'< 	3w<<((((	) )r   )T)NT)__doc__r   loggingr   r   r"   r   conda.exceptionsr   conda.gateways.subprocessr   conda.exportsr   conda.base.contextr   r4   logr   r(   r+   dictr-   rT   rH   rV   rX   rf   r7   r   r   <module>ro      sY           				 				 



 . . . . . . 4 4 4 4 4 4             & & & & & & i  ,    C C C C C C C CK' K' K' K'` !bj++ 6 6 6
) ) ) ) ) )r   