o
    i                     @   s   d Z ddlZddlmZmZ ddlmZ dedefdd	Z	G d
d dZ
ejG dd dej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 )zA
.. codeauthor:: Tsuyoshi Hombashi <tsuyoshi.hombashi@gmail.com>
    N)FinalOptional   )Platformcodereturnc                 C   s   d| dS )NPV04d )r   r
   r
   X/var/www/html/karishye-ai-python/venv/lib/python3.10/site-packages/pathvalidate/error.py_to_error_code   s   r   c                   @   sn   e Zd ZU dZeed< dZeed< dZeed< dZeed< d	Z	eed
< dZ
eed< dZeed< dZeed< dS )ErrorAttrKey
byte_count
BYTE_COUNTdescriptionDESCRIPTIONfs_encodingFS_ENCODINGplatformPLATFORMreasonREASONreserved_nameRESERVED_NAMEreusable_nameREUSABLE_NAMEvalueVALUEN)__name__
__module____qualname__r   r   __annotations__r   r   r   r   r   r   r   r
   r
   r
   r   r      s   
 r   c                   @   s   e Zd ZdZedddfZedddfZedd	d
fZedddfZedddfZ	edddfZ
edddfZedefddZedefddZedefddZdeded edd!fd"d#Zdefd$d%Zd!S )&ErrorReasonz#
    Validation error reasons.
    i  	NULL_NAMEz%the value must not be an empty stringi  r   z#found a reserved name by a platformiL  INVALID_CHARACTERzinvalid characters foundiM  INVALID_LENGTHzfound an invalid string lengthi  FOUND_ABS_PATHz4found an absolute path where must be a relative pathi  MALFORMED_ABS_PATHzfound a malformed absolute pathi  INVALID_AFTER_SANITIZEz$found invalid value after sanitizingr   c                 C      | j S )zstr: Error code.)_ErrorReason__codeselfr
   r
   r   r   @      zErrorReason.codec                 C   r)   )zstr: Error reason name.)_ErrorReason__namer+   r
   r
   r   nameE   r-   zErrorReason.namec                 C   r)   )zstr: Error reason description.)_ErrorReason__descriptionr+   r
   r
   r   r   J   r-   zErrorReason.descriptionr   r/   r   Nc                 C   s   || _ || _|| _d S N)r.   r*   r0   )r,   r   r/   r   r
   r
   r   __init__O   s   
zErrorReason.__init__c                 C   s   d| j  d| j S )N[z] )r*   r0   r+   r
   r
   r   __str__T   s   zErrorReason.__str__)r   r   r    __doc__r   r#   r   r$   r%   r&   r'   r(   propertystrr   r/   r   r2   r4   r
   r
   r
   r   r"      sF    r"   c                       s   e Zd ZdZedee fddZedefddZ	edee
 fddZede
fd	d
Zedee fddZedee
 fddZedee fddZd fddZdee
e
f fddZde
fddZde
fddZ  ZS )ValidationErrorz/
    Exception class of validation errors.
    r   c                 C   r)   )zK
        :py:class:`~pathvalidate.Platform`: Platform information.
        )_ValidationError__platformr+   r
   r
   r   r   ]      zValidationError.platformc                 C   r)   )zV
        :py:class:`~pathvalidate.error.ErrorReason`: The cause of the error.
        )_ValidationError__reasonr+   r
   r
   r   r   d   r:   zValidationError.reasonc                 C   r)   )z!Optional[str]: Error description.)_ValidationError__descriptionr+   r
   r
   r   r   k   r-   zValidationError.descriptionc                 C   r)   )zstr: Reserved name.)_ValidationError__reserved_namer+   r
   r
   r   r   p   r-   zValidationError.reserved_namec                 C   r)   )z4Optional[bool]: Whether the name is reusable or not.)_ValidationError__reusable_namer+   r
   r
   r   r   u   r-   zValidationError.reusable_namec                 C   r)   )z$Optional[str]: File system encoding.)_ValidationError__fs_encodingr+   r
   r
   r   r   z   r-   zValidationError.fs_encodingc                 C   r)   )z&Optional[int]: Byte count of the path.)_ValidationError__byte_countr+   r
   r
   r   r      r-   zValidationError.byte_countNc                    s   t j|vrtt j d|t j| _|t jd | _|t jd | _|t j	d | _
|t jd| _|t jd | _|t jd | _|t jd | _zt j|d i | W d S  tym   t j|i | Y d S w )Nz must be specified r   )r   r   
ValueErrorpopr;   r   r@   r   r9   r   r<   r   r=   r   r>   r   r?   r   _ValidationError__valuesuperr2   
IndexErrorr,   argskwargs	__class__r
   r   r2      s   
zValidationError.__init__c                 C   s   d| j jtj| j ji}| jr| jj|tj< | jr| j|tj< | jdur+t	| j|tj
< | jr4| j|tj< | jr?t	| j|tj< | jrH| j|tj< |S )zReturn a dictionary representation of the error.

        Returns:
            Dict[str, str]: A dictionary representation of the error.
        r   N)r   r   r   r   r   r   r   r   r>   r7   r   r?   r   r@   r   rD   r   )r,   slogr
   r
   r   as_slog   s    

zValidationError.as_slogc                 C   s  g }t | j}t| r|t|  | jr$|tj d| jj  | j	r3|tj
 d| j	  | jd urD|tj d| j  | jrS|tj d| j  | jd ure|tj d| jd | jrt|tj d| j |rz|d7 }|d|  S )N=z,dz: z, )r7   r   	Exceptionr4   appendr   r   r   r   r   r   r>   r   r   r?   r   r@   r   rD   r   joinstrip)r,   	item_listheaderr
   r
   r   r4      s&   



zValidationError.__str__c                 C   s   |   S r1   )r4   r+   r
   r
   r   __repr__   s   zValidationError.__repr__r   N)r   r   r    r5   r6   r   r   r   r"   r   r7   r   r   boolr   r   intr   r2   dictrM   r4   rU   __classcell__r
   r
   rJ   r   r8   X   s(    r8   c                       "   e Zd ZdZd fddZ  ZS )NullNameErrorz<[Deprecated]
    Exception raised when a name is empty.
    r   Nc                    $   t j|tj< t j|fi | d S r1   )r"   r#   r   r   rE   r2   rG   rJ   r
   r   r2         zNullNameError.__init__rV   r   r   r    r5   r2   rZ   r
   r
   rJ   r   r\          r\   c                       r[   )InvalidCharErrorzN
    Exception raised when includes invalid character(s) within a string.
    r   Nc                    r]   r1   )r"   r$   r   r   rE   r2   rG   rJ   r
   r   r2      r^   zInvalidCharError.__init__rV   r_   r
   r
   rJ   r   ra      r`   ra   c                       r[   )ReservedNameErrorzA
    Exception raised when a string matched a reserved name.
    r   Nc                    r]   r1   )r"   r   r   r   rE   r2   rG   rJ   r
   r   r2      r^   zReservedNameError.__init__rV   r_   r
   r
   rJ   r   rb      r`   rb   c                       r[   )ValidReservedNameErrorzt[Deprecated]
    Exception raised when a string matched a reserved name.
    However, it can be used as a name.
    r   Nc                    "   d|t j< t j|fi | d S )NTr   r   rE   r2   rG   rJ   r
   r   r2         
zValidReservedNameError.__init__rV   r_   r
   r
   rJ   r   rc          rc   c                       r[   )InvalidReservedNameErrorz[Deprecated]
    Exception raised when a string matched a reserved name.
    Moreover, the reserved name is invalid as a name.
    r   Nc                    rd   )NFre   rG   rJ   r
   r   r2      rf   z!InvalidReservedNameError.__init__rV   r_   r
   r
   rJ   r   rh      rg   rh   )r5   enumtypingr   r   _constr   rX   r7   r   r   uniqueEnumr"   rB   r8   r\   ra   rb   rc   rh   r
   r
   r
   r   <module>   s    =u