U
    Zfc                     @   sr  d Z ddlZddlZddlZddlZddddddd	d
dddddg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G dd de	ZG dd	 d	e	ZG dd de	ZG dd de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G d"d# d#Ze ZG d$d deeZG d%d& d&Ze ZdS )'z0
ftputil.error - exception classes and wrappers
    NCommandNotImplementedError
FTPIOError
FTPOSErrorInaccessibleLoginDirErrorInternalErrorKeepAliveErrorNoEncodingErrorParserErrorPermanentErrorRootDirError	SyncErrorTemporaryErrorTimeShiftErrorc                       s.   e Zd ZdZdd fdd
Zdd Z  ZS )FTPErrorz&
    General ftputil error class.
    N)original_errorc                   s   t  j|  d| _|d k	r@zt|| _W qv tk
r<   Y qvX n6|rvztj|d tjj	| _W n t
k
rt   Y nX d | _zt| jd d | _W n tk
r   Y nX d | _d S )N r      )super__init__strerrorstr	Exceptionftputiltoolas_strpath_encodingDEFAULT_ENCODING	TypeErrorerrnoint
ValueError	file_name)selfr   args	__class__ 1/tmp/pip-unpacked-wheel-g7w5sq0v/ftputil/error.pyr   *   s*     
zFTPError.__init__c                 C   s   d | jtjjS )Nz{}
Debugging info: {})formatr   r   versionversion_infor"   r&   r&   r'   __str__J   s     zFTPError.__str__)__name__
__module____qualname____doc__r   r,   __classcell__r&   r&   r$   r'   r   %   s    r   c                   @   s   e Zd ZdZdS )r   zInternal error.Nr-   r.   r/   r0   r&   r&   r&   r'   r   R   s   c                   @   s   e Zd ZdZdS )r   z;Raised for generic stat calls on the remote root directory.Nr2   r&   r&   r&   r'   r   X   s   c                   @   s   e Zd ZdZdS )r   z6May be raised if the login directory isn't accessible.Nr2   r&   r&   r&   r'   r   ^   s   c                   @   s   e Zd ZdZdS )r   z%Raised for invalid time shift values.Nr2   r&   r&   r&   r'   r   d   s   c                   @   s   e Zd ZdZdS )r	   z7Raised if a line of a remote directory can't be parsed.Nr2   r&   r&   r&   r'   r	   j   s   c                   @   s   e Zd ZdZdS )CacheMissErrorz*Raised if a path isn't found in the cache.Nr2   r&   r&   r&   r'   r3   p   s   r3   c                   @   s   e Zd ZdZdS )r   z6Raised if session instances don't specify an encoding.Nr2   r&   r&   r&   r'   r   v   s   c                   @   s   e Zd ZdZdS )r   z(Raised if the keep-alive feature failed.Nr2   r&   r&   r&   r'   r   }   s   c                   @   s   e Zd ZdZdS )r   z'Generic FTP error related to `OSError`.Nr2   r&   r&   r&   r'   r      s   c                   @   s   e Zd ZdZdS )r   z&Raised for temporary FTP errors (4xx).Nr2   r&   r&   r&   r'   r      s   c                   @   s   e Zd ZdZdS )r
   z&Raised for permanent FTP errors (5xx).Nr2   r&   r&   r&   r'   r
      s   c                   @   s   e Zd ZdZdS )r   z?Raised if the server doesn't implement a certain feature (502).Nr2   r&   r&   r&   r'   r      s   c                   @   s   e Zd ZdZdS )RecursiveLinksErrorz1Raised if an infinite link structure is detected.Nr2   r&   r&   r&   r'   r4      s   r4   c                   @   s   e Zd ZdZdS )r   z4Raised for problems specific to syncing directories.Nr2   r&   r&   r&   r'   r      s   c                   @   s    e Zd ZdZdd Zdd ZdS )FtplibErrorToFTPOSErrorze
    Context manager to convert `ftplib` exceptions to exceptions derived from
    `FTPOSError`.
    c                 C   s   d S Nr&   r+   r&   r&   r'   	__enter__   s    z!FtplibErrorToFTPOSError.__enter__c                 C   s   |d krd S t |tjr,t|jd|i|nzt |tjr|jrptj|jd tj	j
drpt|jd|i|qt|jd|i|n"t |tjrt|jd|i|n d S )Nr   r   Z502)
isinstanceftplibZ
error_tempr   r#   
error_permr   r   r   r   r   
startswithr   r
   
all_errorsr   r"   exc_type	exc_value	tracebackr&   r&   r'   __exit__   sD     z FtplibErrorToFTPOSError.__exit__Nr-   r.   r/   r0   r7   rA   r&   r&   r&   r'   r5      s   r5   c                   @   s   e Zd ZdZdS )r   z'Generic FTP error related to `IOError`.Nr2   r&   r&   r&   r'   r      s   c                   @   s    e Zd ZdZdd Zdd ZdS )FtplibErrorToFTPIOErrorzT
    Context manager to convert `ftplib` exceptions to `FTPIOError` exceptions.
    c                 C   s   d S r6   r&   r+   r&   r&   r'   r7      s    z!FtplibErrorToFTPIOError.__enter__c                 C   s2   |d krd S t |tjr,t|jd|i|n d S )Nr   )r8   r9   r<   r   r#   r=   r&   r&   r'   rA      s
    z FtplibErrorToFTPIOError.__exit__NrB   r&   r&   r&   r'   rC      s   rC   )r0   r9   Zftputil.path_encodingr   Zftputil.toolZftputil.version__all__r   r   r   r   r   r   r	   r3   r   r   OSErrorr   r   r
   r   r4   r   r5   Zftplib_error_to_ftp_os_errorIOErrorr   rC   Zftplib_error_to_ftp_io_errorr&   r&   r&   r'   <module>   sL   -$