U
    
Haý	  ã                   @   s>   d dl mZmZmZ d dlmZ d dlmZ G dd„ dƒZdS )é    )Ú	FrozenSetÚOptionalÚSet)Úcanonicalize_name)ÚCommandErrorc                   @   sœ   e Zd ZdZddgZdeee  eee  ddœdd„Ze	e
dœd	d
„Zedœdd„Zeeee ee ddœdd„ƒZeee dœdd„Zddœdd„ZdS )ÚFormatControlzGHelper for managing formats from which a package can be installed.
    Ú	no_binaryÚonly_binaryN)r   r	   Úreturnc                 C   s,   |d krt ƒ }|d krt ƒ }|| _|| _d S ©N)Úsetr   r	   )Úselfr   r	   © r   úG/tmp/pip-unpacked-wheel-tx790h60/pip/_internal/models/format_control.pyÚ__init__   s    zFormatControl.__init__)Úotherr
   c                    s:   t ˆ ˆjƒstS ˆjˆ jkr dS t‡ ‡fdd„ˆjD ƒƒS )NFc                 3   s"   | ]}t ˆ|ƒt ˆ |ƒkV  qd S r   )Úgetattr)Ú.0Úk©r   r   r   r   Ú	<genexpr>"   s   ÿz'FormatControl.__eq__.<locals>.<genexpr>)Ú
isinstanceÚ	__class__ÚNotImplementedÚ	__slots__Úall)r   r   r   r   r   Ú__eq__   s    þzFormatControl.__eq__)r
   c                 C   s   d  | jj| j| j¡S )Nz
{}({}, {}))Úformatr   Ú__name__r   r	   ©r   r   r   r   Ú__repr__'   s
    ýzFormatControl.__repr__)ÚvalueÚtargetr   r
   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)r!   r"   r   ÚnewÚnamer   r   r   Úhandle_mutual_excludes.   s&    
ÿ


z$FormatControl.handle_mutual_excludes)Úcanonical_namer
   c                 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   r0   Úresultr   r   r   Úget_allowed_formatsE   s    




z!FormatControl.get_allowed_formatsc                 C   s   |   d| j| j¡ d S )Nr%   )r/   r   r	   r   r   r   r   Údisallow_binariesQ   s
      ÿzFormatControl.disallow_binaries)NN)r   Ú
__module__Ú__qualname__Ú__doc__r   r   r   Ústrr   ÚobjectÚboolr   r    Ústaticmethodr/   r   r5   r6   r   r   r   r   r      s     ý

ür   N)	Útypingr   r   r   Úpip._vendor.packaging.utilsr   Úpip._internal.exceptionsr   r   r   r   r   r   Ú<module>   s   