B
    Tò†[G  ã               @   sT   d dl mZ d dlmZ G dd„ deƒZdd„ Zdd„ ZG d	d
„ d
eƒZdd„ Z	dS )é    )Úurlparse)Ú	UserErrorc               @   sb   e Zd Zd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Ú	_basenameÚattrsÚspec_strÚstr)ÚselfÚuserÚpackageÚversionÚbasenamer	   r
   © r   úXlib/python3.7/site-packages/anaconda_client-1.7.2-py3.7.egg/binstar_client/utils/spec.pyÚ__init__   s    zPackageSpec.__init__c             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__   s    zPackageSpec.__repr__c             C   s    | j d krtd| jf ƒ‚| j S )Nz,user not given (got %r expected <username> ))r   r   r
   )r   r   r   r   r      s    
zPackageSpec.userc             C   s    | j d krtd| jf ƒ‚| j S )NzApackage not given in spec (got %r expected <username>/<package> ))r   r   r
   )r   r   r   r   Úname%   s    
zPackageSpec.namec             C   s    | j d k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   +   s    
zPackageSpec.packagec             C   s    | j d k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   1   s    
zPackageSpec.versionc             C   s    | j d krtd| jf ƒ‚| j S )NzWbasename not given in spec (got %r expected <username>/<package>/<version>/<filename> ))r   r   r
   )r   r   r   r   r   7   s    
zPackageSpec.basename)NNNNN)Ú__name__Ú
__module__Ú__qualname__r   r   r   Úpropertyr   r   r   r   r   r   r   r   r   r      s   
r   c             C   sF   | }d }i }d|kr$|  dd¡\}}d|kr4tdƒ‚t||d d || ƒS )Nú/é   zinvalid package spec)ÚsplitÚ	TypeErrorr   )Úspecr   r   r	   r   r   r   Úpackage_specs>   s    r    c             C   s    | }d  } }}i }d|kr,|  dd¡\}}|rHd|krH|  dd¡\}}|rdd|krd|  dd¡\}}|rŽd|krŽ| dd¡\}}tt |¡ƒ}t|||||| ƒS )Nr   r   ú?)r   ÚrsplitÚdictr   Z	parse_qslr   )r   r   r   r   r   r	   Zqslr   r   r   Úparse_specsJ   s    r$   c               @   sJ   e Zd Zddd„Zdd„ Zdd„ Zedd	„ ƒZed
d„ ƒZedd„ ƒZ	dS )Ú	GroupSpecNc             C   sH   || _ || _|| _|s>t|ƒ}|r.d||f }|r>d||f }|| _d S )Nz%s/%s)Ú_orgÚ_group_nameÚ_memberr   r
   )r   ÚorgÚ
group_nameÚmemberr
   r   r   r   r   ^   s    zGroupSpec.__init__c             C   s   | j S )N)r
   )r   r   r   r   r   k   s    zGroupSpec.__str__c             C   s
   d| j  S )Nz<GroupSpec %r>)r
   )r   r   r   r   r   n   s    zGroupSpec.__repr__c             C   s    | j d krtd| jf ƒ‚| j S )Nz7Organization not given (got %r expected <organization>))r&   r   r
   )r   r   r   r   r)   q   s    
zGroupSpec.orgc             C   s    | j d krtd| jf ƒ‚| j S )NzBGroup name not given (got %r expected <organization>/<group_name>))r'   r   r
   )r   r   r   r   r*   w   s    
zGroupSpec.group_namec             C   s    | j d krtd| jf ƒ‚| j S )NzLMember name not given (got %r expected <organization>/<group_name>/<member>))r(   r   r
   )r   r   r   r   r+   }   s    
zGroupSpec.member)NNN)
r   r   r   r   r   r   r   r)   r*   r+   r   r   r   r   r%   ]   s   
r%   c             C   sf   | }d }}d|kr$|  dd¡\}}|r@d|kr@|  dd¡\}}|rXd|krXtd| ƒ‚t|||| ƒS )z$<organization>/<group_name>/<member>Nr   r   z7Invalid group specification "%s" (unexpected "/" in %s))r   r   r%   )r   r)   Úgroupr+   r   r   r   Ú
group_spec„   s    r-   N)
Zsix.moves.urllib.parser   Zbinstar_client.errorsr   Úobjectr   r    r$   r%   r-   r   r   r   r   Ú<module>   s   8'