<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
B
    a                 @   s   d dl mZmZ d dlZd dlZd dlZd dlmZ d dlm	Z	m
Z
 ddlmZ ddlmZ ddlmZ G d	d
 d
eZdddZdddZdd ZG dd deZdd Zdd ZG dd deZdS )    )absolute_importunicode_literalsN)IS_WIN)
ensure_strensure_text   )Discover)
PythonInfo)
PythonSpecc                   s@   e Zd Z fddZedd Zdd Zdd Zd	d
 Z  Z	S )Builtinc                s:   t t| | |jr|jntjg| _|j| _|j| _d S )N)	superr   __init__pythonsys
executablepython_specapp_datatry_first_with)selfoptions)	__class__ M/opt/alt/python37/lib/python3.7/site-packages/virtualenv/discovery/builtin.pyr      s    zBuiltin.__init__c          
   C   s6   |j ddddtdg dd |j dd	d
tdg dd d S )Nz-pz--pythonr   pyappendzinterpreter based on what to create environment (path/identifier) - by default use the interpreter where the tool is installed - first found wins)destmetavartypeactiondefaulthelpz--try-first-withr   py_exez:try first these interpreters before starting the discovery)add_argumentstr)clsparserr   r   r   add_parser_arguments   s"    zBuiltin.add_parser_argumentsc             C   s4   x.| j D ]$}t|| j| j| j}|d k	r|S qW d S )N)r   get_interpreterr   r   Z_env)r   r   resultr   r   r   run-   s
    zBuiltin.runc             C   s   t |  S )N)r   __unicode__)r   r   r   r   __repr__4   s    zBuiltin.__repr__c             C   s.   t | jdkr| jd n| j}d| jj|S )Nr   r   z{} discover of python_spec={!r})lenr   formatr   __name__)r   specr   r   r   r*   7   s    zBuiltin.__unicode__)
r.   
__module____qualname__r   classmethodr&   r)   r+   r*   __classcell__r   r   )r   r   r      s
   r   c             C   s   t | }td| t }|d kr*tjn|}x`t||||D ]N\}}|j|f} | |krZq>td| |	||rt
d| |S ||  q>W d S )Nzfind interpreter for spec %rzproposed %szaccepted %s)r
   Zfrom_string_speclogginginfosetosenvironpropose_interpretersZsystem_executableZ	satisfiesdebugadd)keyr   r   envr/   Zproposed_pathsinterpreterZimpl_must_matchr   r   r   r'   <   s    

r'   c          	   c   s  |d krt jn|}xZ|D ]R}t j|}yt | W n tk
rJ   Y qX tjt j|||ddfV  qW | jd k	ryt | j W n tk
r   | jr Y n"X tjt j| j||ddfV  | jrd S nDt	|dfV  t
rddlm} x || ||D ]}|dfV  qW t|}t }	xt|D ]\}
}t|}tt|
|| xpt| D ]d\}}t||}|d k	rZt j|}||	krZ|	| tj||d|d}|d k	rZ||fV  qZW q.W d S )N)r=   Tr   )r9   F)Zraise_on_errorr=   )r7   r8   pathabspathlstatOSErrorr	   Zfrom_exeZis_absZcurrent_systemr   windowsr9   	get_pathsr6   	enumerater   r4   r:   LazyPathDumppossible_specs
check_pathr;   PathPythonInfo)r/   r   r   r=   r!   r?   r9   r>   pathsZtested_exespos	candidatematchfoundexer   r   r   r9   L   sH    
"
 




r9   c          	   C   sj   |  tdd }|d krFytd}W n ttfk
rD   tj}Y nX |sPg }ndd |tjD }|S )NPATHCS_PATHc             S   s   g | ]}t j|r|qS r   )r7   r?   exists).0pr   r   r   
<listcomp>   s    zget_paths.<locals>.<listcomp>)	getr#   r7   confstrAttributeError
ValueErrordefpathsplitpathsep)r=   r?   rJ   r   r   r   rD   ~   s    rD   c               @   s$   e Zd Zdd Zdd Zdd ZdS )rF   c             C   s   || _ || _|| _d S )N)rK   r?   r=   )r   rK   r?   r=   r   r   r   r      s    zLazyPathDump.__init__c             C   s   t |  S )N)r   r*   )r   r   r   r   r+      s    zLazyPathDump.__repr__c          	   C   s   d | j| j}| jtdr|d7 }xjt| jD ]Z}y0tj| j|}tj	|sft
|tjshw6W n tk
r~   Y nX |d7 }||7 }q6W |S )Nzdiscover PATH[{}]={}Z_VIRTUALENV_DEBUGz with => )r-   rK   r?   r=   rV   r#   r7   listdirjoinisdiraccessX_OKrB   )r   content	file_name	file_pathr   r   r   r*      s    zLazyPathDump.__unicode__N)r.   r0   r1   r   r+   r*   r   r   r   r   rF      s   rF   c             C   s\   t j| \}}tjdkr*|dkr*| d } t j| r:| S t j|| } t j| rX| S d S )Nwin32z.exe)r7   r?   splitextr   platformisfiler_   )rL   r?   _extr   r   r   rH      s    rH   c             c   s0   | j dfV  x|  D ]\}}||fV  qW d S )NF)Zstr_specZgenerate_names)r/   rO   rM   r   r   r   rG      s    rG   c               @   s   e Zd ZdZdS )rI   r]   N)r.   r0   r1   __doc__r   r   r   r   rI      s   rI   )NN)N)
__future__r   r   r4   r7   r   Zvirtualenv.infor   Zvirtualenv.util.sixr   r   discoverr   Zpy_infor	   Zpy_specr
   r   r'   r9   rD   objectrF   rH   rG   rI   r   r   r   r   <module>   s    -

2