B
    l‚z]  ã               @   sü   d dl mZmZmZmZ d dlmZ d dlZd dlm	Z	 ddl
mZ ddlmZ ddlmZmZ dd	lmZ dd
lmZ G dd„ de	ƒZG dd„ de	ƒZG dd„ de	ƒZG dd„ de	ƒZG dd„ de	ƒZG dd„ de	ƒZG dd„ de	ƒZG dd„ de	ƒZdS )é    )Úabsolute_importÚdivisionÚprint_functionÚunicode_literals)ÚmachineN)ÚEnumé   )Úclassproperty)Údals)ÚTypeCoercionErrorÚboolify)Ústring_types)ÚCondaUpgradeErrorc               @   s<   e Zd ZdZdZdZdZdZdZdZ	e
dd	„ ƒZd
d„ ZdS )ÚArchÚx86Úx86_64Úarmv6lÚarmv7lÚaarch64Úppc64leÚzc             C   s   t jdkr| d S | tƒ  S )NÚzosr   )ÚsysÚplatformr   )Úcls© r   ú1lib/python3.7/site-packages/conda/models/enums.pyÚfrom_sys   s    
zArch.from_sysc             C   s   | j S )N)Úvalue)Úselfr   r   r   Ú__json__!   s    zArch.__json__N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   Úclassmethodr   r    r   r   r   r   r      s   r   c               @   s4   e Zd ZdZdZdZdZdZedd„ ƒZ	dd	„ Z
d
S )ÚPlatformÚlinuxZwin32Zopenbsd5Údarwinr   c             C   s   t j}| d¡rd}| |ƒS )Nr&   )r   r   Ú
startswith)r   Úpr   r   r   r   ,   s    
zPlatform.from_sysc             C   s   | j S )N)r   )r   r   r   r   r    7   s    zPlatform.__json__N)r!   r"   r#   r&   ÚwinZopenbsdZosxr   r$   r   r    r   r   r   r   r%   %   s   r%   c               @   s   e Zd ZdZdZdd„ ZdS )ÚFileModeÚtextÚbinaryc             C   s
   d| j  S )Nz%s)r   )r   r   r   r   Ú__str__?   s    zFileMode.__str__N)r!   r"   r#   r,   r-   r.   r   r   r   r   r+   ;   s   r+   c               @   s4   e Zd ZdZdZdZdZdd„ Zdd„ Zd	d
„ Z	dS )ÚLinkTypeé   r   é   é   c             C   s   | j S )N)r   )r   r   r   r   Ú__int__K   s    zLinkType.__int__c             C   s   | j S )N)Úname)r   r   r   r   r.   N   s    zLinkType.__str__c             C   s   | j S )N)r4   )r   r   r   r   r    Q   s    zLinkType.__json__N)
r!   r"   r#   ÚhardlinkÚsoftlinkÚcopyÚ	directoryr3   r.   r    r   r   r   r   r/   C   s   r/   c               @   sL   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zed
d„ ƒZdd„ Zdd„ ZdS )ÚPathTypez{
    Refers to if the file in question is hard linked or soft linked. Originally designed to be used
    in paths.json
    r5   r6   r8   Úlinked_package_recordÚpyc_fileÚunix_python_entry_pointÚ!windows_python_entry_point_scriptÚwindows_python_entry_point_exec             C   s   t jt jt jfS )N)r9   r5   r6   r8   )r   r   r   r   Úbasic_typese   s    zPathType.basic_typesc             C   s   | j S )N)r4   )r   r   r   r   r.   i   s    zPathType.__str__c             C   s   | j S )N)r4   )r   r   r   r   r    l   s    zPathType.__json__N)r!   r"   r#   Ú__doc__r5   r6   r8   r:   r;   r<   r=   r>   r	   r?   r.   r    r   r   r   r   r9   U   s   r9   c               @   s(   e Zd ZdZdZdZdd„ Zdd„ ZdS )	ÚLeasedPathTypeÚapplication_entry_pointÚ#application_entry_point_windows_exeÚapplication_softlinkc             C   s   | j S )N)r4   )r   r   r   r   r.   u   s    zLeasedPathType.__str__c             C   s   | j S )N)r4   )r   r   r   r   r    x   s    zLeasedPathType.__json__N)r!   r"   r#   rB   rC   rD   r.   r    r   r   r   r   rA   p   s
   rA   c               @   sD   e Zd ZdZdZdZdZdZdZdZ	dZ
ed	d
„ ƒZedd„ ƒZdS )ÚPackageTypeZnoarch_genericZnoarch_pythonZvirtual_private_envZvirtual_python_wheelZvirtual_python_egg_manageableZvirtual_python_egg_unmanageableZvirtual_python_egg_linkZvirtual_systemc               C   s   d t jt jhS )N)rE   ÚNOARCH_GENERICÚNOARCH_PYTHONr   r   r   r   Úconda_package_types†   s    zPackageType.conda_package_typesc               C   s   t jt jt jhS )N)rE   ÚVIRTUAL_PYTHON_EGG_UNMANAGEABLEÚVIRTUAL_PYTHON_EGG_LINKÚVIRTUAL_SYSTEMr   r   r   r   Úunmanageable_package_typesŽ   s    z&PackageType.unmanageable_package_typesN)r!   r"   r#   rF   rG   ZVIRTUAL_PRIVATE_ENVZVIRTUAL_PYTHON_WHEELZVIRTUAL_PYTHON_EGG_MANAGEABLErI   rJ   rK   ÚstaticmethodrH   rL   r   r   r   r   rE   |   s   rE   c               @   s    e Zd ZdZdZedd„ ƒZdS )Ú
NoarchTypeÚgenericÚpythonc             C   s²   t | tƒr| S t| dd ƒ}t |tƒr(|S t | tƒr@| r<tjnd } t | tƒr®|  ¡ } | dkrbtj} nL| dkrrtj} n<yt| ƒr‚tjnd } W n$ t	k
r¬   t
td|  ƒƒ‚Y nX | S )NÚtyperP   rO   zØ
                    The noarch type for this package is set to '%s'.
                    The current version of conda is too old to install this package.
                    Please update conda.
                    )Ú
isinstancerN   ÚgetattrÚboolrO   r   ÚlowerrP   r   r   r   r
   )ÚvalZvaltyper   r   r   Úcoerce›   s&    



zNoarchType.coerceN)r!   r"   r#   rO   rP   rM   rW   r   r   r   r   rN   —   s   rN   )Z
__future__r   r   r   r   r   r   r   Úenumr   Z_vendor.auxlib.decoratorsr	   Z_vendor.auxlib.ishr
   Z_vendor.auxlib.type_coercionr   r   Zcommon.compatr   Ú
exceptionsr   r   r%   r+   r/   r9   rA   rE   rN   r   r   r   r   Ú<module>   s    