o
    lh                     @  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   i/var/www/html/construction_image-detection-poc/venv/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rdt| j nd | jrd | 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   	VAR_STARTr   splitlenDIGITr   	HEX_DIGIT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
    