U
    @v¨gq
  ã                   @   sP   d dl mZ d dlmZ d dlmZ er<d dlmZmZm	Z	 G dd„ de
ƒZdS )é    )Úcanonicalize_name)ÚCommandError)ÚMYPY_CHECK_RUNNING)ÚOptionalÚSetÚ	FrozenSetc                   @   sN   e Zd ZdZddd„Zdd„ Zdd„ Zd	d
„ Zedd„ ƒZ	dd„ Z
dd„ ZdS )ÚFormatControlzGHelper for managing formats from which a package can be installed.
    Nc                 C   s,   |d krt ƒ }|d krt ƒ }|| _|| _d S ©N)ÚsetÚ	no_binaryÚonly_binary)Úselfr   r   © r   úG/tmp/pip-unpacked-wheel-gw11q0wt/pip/_internal/models/format_control.pyÚ__init__   s    zFormatControl.__init__c                 C   s   | j |j kS r	   )Ú__dict__©r   Úotherr   r   r   Ú__eq__   s    zFormatControl.__eq__c                 C   s   |   |¡ S r	   )r   r   r   r   r   Ú__ne__   s    zFormatControl.__ne__c                 C   s   d  | jj| j| j¡S )Nz
{}({}, {}))ÚformatÚ	__class__Ú__name__r   r   ©r   r   r   r   Ú__repr__#   s
    ýzFormatControl.__repr__c                 C   sœ   |   d¡rtdƒ‚|  d¡}d|kr`| ¡  | ¡  | d¡ |d | d¡d …= d|krd S q|D ]2}|dkrz| ¡  qdt|ƒ}| |¡ | |¡ qdd S )Nú-z7--no-binary / --only-binary option requires 1 argument.ú,ú:all:é   z:none:)Ú
startswithr   ÚsplitÚclearÚaddÚindexr   Údiscard)ÚvalueÚtargetr   ÚnewÚnamer   r   r   Úhandle_mutual_excludes+   s&    
ÿ


z$FormatControl.handle_mutual_excludesc                 C   sf   ddh}|| j kr| d¡ n@|| jkr4| d¡ n*d| j krJ| d¡ nd| jkr^| d¡ t|ƒS )NÚbinaryÚsourcer   )r   r$   r   Ú	frozenset)r   Úcanonical_nameÚresultr   r   r   Úget_allowed_formatsC   s    




z!FormatControl.get_allowed_formatsc                 C   s   |   d| j| j¡ d S )Nr   )r)   r   r   r   r   r   r   Údisallow_binariesP   s
      ÿzFormatControl.disallow_binaries)NN)r   Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   Ústaticmethodr)   r/   r0   r   r   r   r   r      s   


r   N)Úpip._vendor.packaging.utilsr   Úpip._internal.exceptionsr   Úpip._internal.utils.typingr   Útypingr   r   r   Úobjectr   r   r   r   r   Ú<module>   s
   