U
    |e                     @  s8   d dl mZ d dlmZmZ G dd dedZdgZdS )    )annotations)ABCMetaabstractmethodc                   @  sB   e Zd ZdZedd ZddddZedd	 Ze	d
d Z
dS )Discoverz6Discover and provide the requested Python interpreter.c                 C  s   t dS )zi
        Add CLI arguments for this discovery mechanisms.

        :param parser: the CLI parser
        NNotImplementedError)clsparser r
   A/tmp/pip-unpacked-wheel-tuxcr54r/virtualenv/discovery/discover.pyadd_parser_arguments	   s    zDiscover.add_parser_argumentsNone)returnc                 C  s   d| _ d| _|j| _dS )z
        Create a new discovery mechanism.

        :param options: the parsed options as defined within :meth:`add_parser_arguments`
        FN)_has_run_interpreterenvZ_env)selfoptionsr
   r
   r   __init__   s    zDiscover.__init__c                 C  s   t dS )z{
        Discovers an interpreter.

        :return: the interpreter ready to use for virtual environment creation
        Nr   r   r
   r
   r   run   s    zDiscover.runc                 C  s    | j dkr|  | _d| _ | jS )z;:return: the interpreter as returned by :meth:`run`, cachedFT)r   r   r   r   r
   r
   r   interpreter%   s    

zDiscover.interpreterN)__name__
__module____qualname____doc__classmethodr   r   r   r   propertyr   r
   r
   r
   r   r      s   


r   )	metaclassN)
__future__r   abcr   r   r   __all__r
   r
   r
   r   <module>   s   )