B
    KkdØ  ã               @   sD   d dl mZ d dlmZ er0d dlmZmZmZ G dd„ deƒZ	dS )é    )Úcanonicalize_name)Ú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   úD/tmp/pip-install-gxxfd9b7/pip/pip/_internal/models/format_control.pyÚ__init__   s    zFormatControl.__init__c             C   s   | j |j kS )N)Ú__dict__)r   Úotherr   r   r   Ú__eq__   s    zFormatControl.__eq__c             C   s   |   |¡ S )N)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¡}xFd|krP| ¡  | ¡  | d¡ |d | d¡d …= d|krd S qW x:|D ]2}|dkrn| ¡  qXt|ƒ}| |¡ | |¡ qXW d S )Nú,z:all:é   z:none:)Ú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Úsourcez:all:)r
   r   r	   Ú	frozenset)r   Úcanonical_nameÚresultr   r   r   Úget_allowed_formats8   s    




z!FormatControl.get_allowed_formatsc             C   s   |   d| j| j¡ d S )Nz:all:)r"   r	   r
   )r   r   r   r   Údisallow_binariesE   s    zFormatControl.disallow_binaries)NN)r   Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   Ústaticmethodr"   r(   r)   r   r   r   r   r   	   s   

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