o
    ¸¼tfŠ  ã                   @  s>   d Z ddlmZ ddlmZ G dd„ deƒZG dd„ dƒZd	S )
zVariable class for URITemplate.é    )Úannotationsé   )ÚCharsetc                   @  s.   e Zd ZU dZded< ddd„Zddd	„Zd
S )ÚVariableInvalidErrorz'Exception thrown for invalid variables.ÚstrÚvariableÚreturnÚNonec                 C  s
   || _ d S )N©r   )Úselfr   © r   ú^/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/uri_template/variable.pyÚ__init__   s   
zVariableInvalidError.__init__c                 C  s
   d| j  S )úConvert to string.zBad variable: r
   ©r   r   r   r   Ú__str__   s   
zVariableInvalidError.__str__N)r   r   r   r	   ©r   r   ©Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   r   r   r   r   r   r      s
   
 
r   c                   @  sV   e Zd ZU dZded< ded< ded< ded< ded	< d
ed< ddd„Zddd„ZdS )ÚVariablezS
    A template variable.

    https://tools.ietf.org/html/rfc6570#section-2.3
    r   ÚnameÚkeyÚintÚ
max_lengthÚboolÚexplodeÚarrayz
str | NoneÚdefaultÚvar_specr   r	   c                 C  sL  d| _ d| _d| _d| _d| _d | _|dd… tjvrt|ƒ‚d|v r,| 	dd¡\}| _d|v ro| 	dd¡\}}dt
|ƒk rgt
|ƒdk rg|D ]}|tjvrUt|d | ƒ‚qFt|ƒ| _| jsft|d | ƒ‚n,t|d | ƒ‚d|d	 kr|d d	… }d
| _nd|dd … kr“|d d… }d
| _d
| _d}|t
|ƒk r|| }d|krÐ|d t
|ƒk rÐ||d  tjv rÐ||d  tjv rÐ|  j|||d … 7  _|d7 }n:|tjv rÝ|  j|7  _n-d|kré| j| _ d| _n!t|| jrõdt| jƒ nd | jrþd ƒ‚| jrd ƒ‚d ƒ‚|d7 }|t
|ƒk sœ| j p| j| _ | jp"| j | _d S )NÚ r   Fr   ú=ú:é   Ú*éÿÿÿÿTú[]éþÿÿÿú%é   é   ú/)r   r   r   r   r    r!   r   Z	VAR_STARTr   ÚsplitÚlenÚDIGITr   Z	HEX_DIGITZVAR_CHARr   )r   r"   r   ÚdigitÚindexÚ	codepointr   r   r   r   #   sl   
ÿ
ÿ

ÿ
ÿÿðzVariable.__init__c                 C  s|   | j | jr| j| j krd| j› nd | jrd| j› nd | jr&| js&dnd | jr-dnd | jdur;d| j›  S d S )r   r.   r#   r%   r'   r)   Nr$   )r   r   r   r   r    r!   r   r   r   r   r   Z   s   &ÿþþýýzVariable.__str__N)r"   r   r   r	   r   r   r   r   r   r   r      s   
 
7r   N)r   Ú
__future__r   Úcharsetr   Ú	Exceptionr   r   r   r   r   r   Ú<module>   s
    