U
    ôáêbÇ  ã                   @   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 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G dd„ de	ƒZdS )é    )Úabsolute_importÚdivisionÚprint_functionÚunicode_literals)ÚmachineN)ÚEnumé   )Úclassproperty)Údals)ÚTypeCoercionErrorÚboolify)ÚCondaUpgradeErrorc                   @   sH   e Zd 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S )ÚArchÚx86Úx86_64Úarm64Úarmv6lÚarmv7lÚaarch64Úppc64Úppc64leÚs390xÚzc                 C   s   t jdkr| d S | tƒ  S )NÚzosr   )ÚsysÚplatformr   )Úcls© r   ú1lib/python3.8/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   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   0   s    
zPlatform.from_sysc                 C   s   | j S r    r!   r#   r   r   r   r%   ;   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%sr!   r#   r   r   r   Ú__str__C   s    zFileMode.__str__N)r&   r'   r(   r1   r2   r3   r   r   r   r   r0   ?   s   r0   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 r    r!   r#   r   r   r   Ú__int__O   s    zLinkType.__int__c                 C   s   | j S r    ©Únamer#   r   r   r   r3   R   s    zLinkType.__str__c                 C   s   | j S r    r9   r#   r   r   r   r%   U   s    zLinkType.__json__N)
r&   r'   r(   ÚhardlinkÚsoftlinkÚcopyÚ	directoryr8   r3   r%   r   r   r   r   r4   G   s   r4   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
    r;   r<   r>   Ú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 r    )r?   r;   r<   r>   r#   r   r   r   Úbasic_typesi   s    zPathType.basic_typesc                 C   s   | j S r    r9   r#   r   r   r   r3   m   s    zPathType.__str__c                 C   s   | j S r    r9   r#   r   r   r   r%   p   s    zPathType.__json__N)r&   r'   r(   Ú__doc__r;   r<   r>   r@   rA   rB   rC   rD   r	   rE   r3   r%   r   r   r   r   r?   Y   s   
r?   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 r    r9   r#   r   r   r   r3   y   s    zLeasedPathType.__str__c                 C   s   | j S r    r9   r#   r   r   r   r%   |   s    zLeasedPathType.__json__N)r&   r'   r(   rH   rI   rJ   r3   r%   r   r   r   r   rG   t   s
   rG   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 r    )rK   Ú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 r    )rK   Ú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(   rL   rM   ZVIRTUAL_PRIVATE_ENVZVIRTUAL_PYTHON_WHEELZVIRTUAL_PYTHON_EGG_MANAGEABLErO   rP   rQ   ÚstaticmethodrN   rR   r   r   r   r   rK   €   s   
rK   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<zt| ƒr‚tjnd } W n$ t	k
r¬   t
td|  ƒƒ‚Y nX | S )NÚtyperV   rU   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.
                    )Ú
isinstancerT   ÚgetattrÚboolrU   ÚstrÚlowerrV   r   r   r   r
   )ÚvalZvaltyper   r   r   ÚcoerceŸ   s(    



üzNoarchType.coerceN)r&   r'   r(   rU   rV   rS   r^   r   r   r   r   rT   ›   s   rT   c                   @   s   e Zd ZdZdZdZdS )ÚMetadataSignatureStatuséÿÿÿÿr   r5   N)r&   r'   r(   ZunsignedZverifiedÚerrorr   r   r   r   r_   »   s   r_   )Z
__future__r   r   r   r   r   r   r   Úenumr   Zauxlib.decoratorsr	   Z
auxlib.ishr
   Zauxlib.type_coercionr   r   Ú
exceptionsr   r   r*   r0   r4   r?   rG   rK   rT   r_   r   r   r   r   Ú<module>   s     