a
    Ï‘`A  ã                   @   sP   d dl mZ d dlZd dlmZ ddlmZ G dd„ deƒZG dd	„ d	eƒZ	dS )
é    )ÚurlparseN)ÚRawTextHelpFormatteré   )Úerrorsc                   @   sn   e Zd Zddd„Zedd„ ƒZdd„ Zdd	„ Zed
d„ ƒZ	edd„ ƒZ
edd„ ƒZedd„ ƒZedd„ ƒZdS )ÚPackageSpecNc                 C   sl   || _ || _|| _|| _|| _|r*|| _n>t|ƒ}|rBd||f }|rRd||f }|rbd||f }|| _d S ©Nz%s/%s)Ú_userÚ_packageÚ_versionÚ	_filenameÚattrsÚspec_strÚstr©ÚselfÚchannelÚpackageÚversionÚfilenamer   r   © r   ú7lib/python3.9/site-packages/repo_cli/utils/artifacts.pyÚ__init__   s    zPackageSpec.__init__c                 C   s    |}d  } }}i }d|v r,|  dd¡\}}|rHd|v rH|  dd¡\}}|rdd|v rd|  dd¡\}}|rŽd|v rŽ| dd¡\}}tt |¡ƒ}t||||||ƒS ©Nz::é   ú/ú?)ÚsplitÚrsplitÚdictr   Ú	parse_qslr   ©ÚclsZspec_stringr   r   r   r   r   Zqslr   r   r   Úfrom_string   s    zPackageSpec.from_stringc                 C   s   | j S ©N©r   ©r   r   r   r   Ú__str__-   s    zPackageSpec.__str__c                 C   s
   d| j  S ©Nz<PackageSpec %r>r$   r%   r   r   r   Ú__repr__0   s    zPackageSpec.__repr__c                 C   s"   | j d u rt d| jf ¡‚| j S )Nz,user not given (got %r expected <username> ))r   r   Ú	UserErrorr   r%   r   r   r   r   3   s    
zPackageSpec.channelc                 C   s"   | j d u rt d| jf ¡‚| j S ©NzApackage not given in spec (got %r expected <username>/<package> )©r	   r   r)   r   r%   r   r   r   Úname9   s    
zPackageSpec.namec                 C   s"   | j d u rt d| jf ¡‚| j S r*   r+   r%   r   r   r   r   ?   s    
zPackageSpec.packagec                 C   s"   | j d u rt d| jf ¡‚| j S )NzKversion not given in spec (got %r expected <username>/<package>/<version> ))r
   r   r)   r   r%   r   r   r   r   E   s    
zPackageSpec.versionc                 C   s"   | j d u rt d| jf ¡‚| j S )NzWfilename not given in spec (got %r expected <username>/<package>/<version>/<filename> ))r   r   r)   r   r%   r   r   r   r   K   s    
zPackageSpec.filename)NNNNN)Ú__name__Ú
__module__Ú__qualname__r   Úclassmethodr"   r&   r(   Úpropertyr   r,   r   r   r   r   r   r   r   r      s   





r   c                   @   s2   e Zd Zd
dd„Zedd„ ƒZdd„ Zdd	„ ZdS )ÚSimplePackageSpecNc                 C   sl   || _ || _|| _|| _|| _|r*|| _n>t|ƒ}|rBd||f }|rRd||f }|rbd||f }|| _d S r   )r   r   r   r   r   r   r   r   r   r   r   r   R   s    zSimplePackageSpec.__init__c                 C   s    |}d  } }}i }d|v r,|  dd¡\}}|rHd|v rH|  dd¡\}}|rdd|v rd|  dd¡\}}|rŽd|v rŽ| dd¡\}}tt |¡ƒ}t||||||ƒS r   )r   r   r   r   r   r2   r    r   r   r   r"   e   s    zSimplePackageSpec.from_stringc                 C   s   | j S r#   r$   r%   r   r   r   r&   x   s    zSimplePackageSpec.__str__c                 C   s
   d| j  S r'   r$   r%   r   r   r   r(   {   s    zSimplePackageSpec.__repr__)NNNNN)r-   r.   r/   r   r0   r"   r&   r(   r   r   r   r   r2   Q   s
   

r2   )
Zsix.moves.urllib.parser   ÚsysÚargparser   Ú r   Úobjectr   r2   r   r   r   r   Ú<module>   s
   J