diff options
author | Jeff Forcier <jeff@bitprophet.org> | 2014-02-26 15:25:48 -0800 |
---|---|---|
committer | Jeff Forcier <jeff@bitprophet.org> | 2014-02-26 15:25:48 -0800 |
commit | de99785ef081bf6308498d621aae40d99c0d59aa (patch) | |
tree | 0de5eed4750bf7be1571a8a529a5d528ca8b7055 | |
parent | dd9934f2b53db4a8311a53b2040254f72cf71ea3 (diff) |
SFTP done, ugh
-rw-r--r-- | paramiko/sftp_attr.py | 7 | ||||
-rw-r--r-- | paramiko/sftp_client.py | 217 | ||||
-rw-r--r-- | paramiko/sftp_file.py | 71 | ||||
-rw-r--r-- | paramiko/sftp_handle.py | 23 | ||||
-rw-r--r-- | paramiko/sftp_server.py | 31 | ||||
-rw-r--r-- | paramiko/sftp_si.py | 121 |
6 files changed, 197 insertions, 273 deletions
diff --git a/paramiko/sftp_attr.py b/paramiko/sftp_attr.py index 9b30829c..3ef9703b 100644 --- a/paramiko/sftp_attr.py +++ b/paramiko/sftp_attr.py @@ -65,12 +65,9 @@ class SFTPAttributes (object): Create an `.SFTPAttributes` object from an existing ``stat`` object (an object returned by `os.stat`). - :param obj: an object returned by `os.stat` (or equivalent). - :type obj: object - :param filename: the filename associated with this file. - :type filename: str + :param object obj: an object returned by `os.stat` (or equivalent). + :param str filename: the filename associated with this file. :return: new `.SFTPAttributes` object with the same attribute fields. - :rtype: `.SFTPAttributes` """ attr = cls() attr.st_size = obj.st_size diff --git a/paramiko/sftp_client.py b/paramiko/sftp_client.py index db8d196f..0580bc43 100644 --- a/paramiko/sftp_client.py +++ b/paramiko/sftp_client.py @@ -61,8 +61,7 @@ class SFTPClient(BaseSFTP): An alternate way to create an SFTP client context is by using `from_transport`. - :param sock: an open `.Channel` using the ``"sftp"`` subsystem - :type sock: `.Channel` + :param .Channel sock: an open `.Channel` using the ``"sftp"`` subsystem :raises SSHException: if there's an exception while negotiating sftp @@ -91,11 +90,10 @@ class SFTPClient(BaseSFTP): """ Create an SFTP client channel from an open `.Transport`. - :param t: an open `.Transport` which is already authenticated - :type t: `.Transport` - :return: a new `.SFTPClient` object, referring to an sftp session - (channel) across the transport - :rtype: `.SFTPClient` + :param .Transport t: an open `.Transport` which is already authenticated + :return: + a new `.SFTPClient` object, referring to an sftp session (channel) + across the transport """ chan = t.open_session() if chan is None: @@ -125,9 +123,6 @@ class SFTPClient(BaseSFTP): Return the underlying `.Channel` object for this SFTP session. This might be useful for doing things like setting a timeout on the channel. - :return: the SSH channel - :rtype: `.Channel` - .. versionadded:: 1.7.1 """ return self.sock @@ -135,15 +130,13 @@ class SFTPClient(BaseSFTP): def listdir(self, path='.'): """ Return a list containing the names of the entries in the given ``path``. + The list is in arbitrary order. It does not include the special entries ``'.'`` and ``'..'`` even if they are present in the folder. This method is meant to mirror ``os.listdir`` as closely as possible. For a list of full `.SFTPAttributes` objects, see `listdir_attr`. - :param path: path to list (defaults to ``'.'``) - :type path: str - :return: list of filenames - :rtype: list of str + :param str path: path to list (defaults to ``'.'``) """ return [f.filename for f in self.listdir_attr(path)] @@ -159,10 +152,8 @@ class SFTPClient(BaseSFTP): attributes, in unix format. The content of this string will probably depend on the SFTP server implementation. - :param path: path to list (defaults to ``'.'``) - :type path: str - :return: list of attributes - :rtype: list of `.SFTPAttributes` + :param str path: path to list (defaults to ``'.'``) + :return: list of `.SFTPAttributes` objects .. versionadded:: 1.2 """ @@ -216,14 +207,10 @@ class SFTPClient(BaseSFTP): buffering, ``1`` uses line buffering, and any number greater than 1 (``>1``) uses that specific buffer size. - :param filename: name of the file to open - :type filename: str - :param mode: mode (Python-style) to open in - :type mode: str - :param bufsize: desired buffering (-1 = default buffer size) - :type bufsize: int - :return: a file object representing the open file - :rtype: `.SFTPFile` + :param str filename: name of the file to open + :param str mode: mode (Python-style) to open in + :param int bufsize: desired buffering (-1 = default buffer size) + :return: an `.SFTPFile` object representing the open file :raises IOError: if the file could not be opened. """ @@ -256,8 +243,7 @@ class SFTPClient(BaseSFTP): Remove the file at the given path. This only works on files; for removing folders (directories), use `rmdir`. - :param path: path (absolute or relative) of the file to remove - :type path: str + :param str path: path (absolute or relative) of the file to remove :raises IOError: if the path refers to a folder (directory) """ @@ -271,10 +257,8 @@ class SFTPClient(BaseSFTP): """ Rename a file or folder from ``oldpath`` to ``newpath``. - :param oldpath: existing name of the file or folder - :type oldpath: str - :param newpath: new name for the file or folder - :type newpath: str + :param str oldpath: existing name of the file or folder + :param str newpath: new name for the file or folder :raises IOError: if ``newpath`` is a folder, or something else goes wrong @@ -290,10 +274,8 @@ class SFTPClient(BaseSFTP): The default mode is 0777 (octal). On some systems, mode is ignored. Where it is used, the current umask value is first masked out. - :param path: name of the folder to create - :type path: str - :param mode: permissions (posix-style) for the newly-created folder - :type mode: int + :param str path: name of the folder to create + :param int mode: permissions (posix-style) for the newly-created folder """ path = self._adjust_cwd(path) self._log(DEBUG, 'mkdir(%r, %r)' % (path, mode)) @@ -305,8 +287,7 @@ class SFTPClient(BaseSFTP): """ Remove the folder named ``path``. - :param path: name of the folder to remove - :type path: str + :param str path: name of the folder to remove """ path = self._adjust_cwd(path) self._log(DEBUG, 'rmdir(%r)' % path) @@ -326,10 +307,10 @@ class SFTPClient(BaseSFTP): The fields supported are: ``st_mode``, ``st_size``, ``st_uid``, ``st_gid``, ``st_atime``, and ``st_mtime``. - :param path: the filename to stat - :type path: str - :return: an object containing attributes about the given file - :rtype: `.SFTPAttributes` + :param str path: the filename to stat + :return: + an `.SFTPAttributes` object containing attributes about the given + file """ path = self._adjust_cwd(path) self._log(DEBUG, 'stat(%r)' % path) @@ -344,10 +325,10 @@ class SFTPClient(BaseSFTP): following symbolic links (shortcuts). This otherwise behaves exactly the same as `stat`. - :param path: the filename to stat - :type path: str - :return: an object containing attributes about the given file - :rtype: `.SFTPAttributes` + :param str path: the filename to stat + :return: + an `.SFTPAttributes` object containing attributes about the given + file """ path = self._adjust_cwd(path) self._log(DEBUG, 'lstat(%r)' % path) @@ -361,10 +342,8 @@ class SFTPClient(BaseSFTP): Create a symbolic link (shortcut) of the ``source`` path at ``destination``. - :param source: path of the original file - :type source: str - :param dest: path of the newly created symlink - :type dest: str + :param str source: path of the original file + :param str dest: path of the newly created symlink """ dest = self._adjust_cwd(dest) self._log(DEBUG, 'symlink(%r, %r)' % (source, dest)) @@ -378,10 +357,8 @@ class SFTPClient(BaseSFTP): unix-style and identical to those used by Python's `os.chmod` function. - :param path: path of the file to change the permissions of - :type path: str - :param mode: new permissions - :type mode: int + :param str path: path of the file to change the permissions of + :param int mode: new permissions """ path = self._adjust_cwd(path) self._log(DEBUG, 'chmod(%r, %r)' % (path, mode)) @@ -396,12 +373,9 @@ class SFTPClient(BaseSFTP): only want to change one, use `stat` first to retrieve the current owner and group. - :param path: path of the file to change the owner and group of - :type path: str - :param uid: new owner's uid - :type uid: int - :param gid: new group id - :type gid: int + :param str path: path of the file to change the owner and group of + :param int uid: new owner's uid + :param int gid: new group id """ path = self._adjust_cwd(path) self._log(DEBUG, 'chown(%r, %r, %r)' % (path, uid, gid)) @@ -418,11 +392,10 @@ class SFTPClient(BaseSFTP): modified times, respectively. This bizarre API is mimicked from Python for the sake of consistency -- I apologize. - :param path: path of the file to modify - :type path: str - :param times: ``None`` or a tuple of (access time, modified time) in - standard internet epoch time (seconds since 01 January 1970 GMT) - :type times: tuple(int) + :param str path: path of the file to modify + :param tuple times: + ``None`` or a tuple of (access time, modified time) in standard + internet epoch time (seconds since 01 January 1970 GMT) """ path = self._adjust_cwd(path) if times is None: @@ -438,8 +411,7 @@ class SFTPClient(BaseSFTP): extends or shrinks the size of the file, just like the `~file.truncate` method on Python file objects. - :param path: path of the file to modify - :type path: str + :param str path: path of the file to modify :param size: the new size of the file :type size: int or long """ @@ -455,10 +427,8 @@ class SFTPClient(BaseSFTP): `symlink` to create these. The result may be either an absolute or relative pathname. - :param path: path of the symbolic link file - :type path: str - :return: target path - :rtype: str + :param str path: path of the symbolic link file + :return: target path, as a `str` """ path = self._adjust_cwd(path) self._log(DEBUG, 'readlink(%r)' % path) @@ -479,10 +449,8 @@ class SFTPClient(BaseSFTP): server is considering to be the "current folder" (by passing ``'.'`` as ``path``). - :param path: path to be normalized - :type path: str - :return: normalized form of the given path - :rtype: str + :param str path: path to be normalized + :return: normalized form of the given path (as a `str`) :raises IOError: if the path can't be resolved on the server """ @@ -505,8 +473,7 @@ class SFTPClient(BaseSFTP): to that path. You can pass in ``None`` to stop using a current working directory. - :param path: new current working directory - :type path: str + :param str path: new current working directory :raises IOError: if the requested path doesn't exist on the server @@ -525,9 +492,6 @@ class SFTPClient(BaseSFTP): emulated by Paramiko. If no directory has been set with `chdir`, this method will return ``None``. - :return: the current working directory on the server, or ``None`` - :rtype: str - .. versionadded:: 1.4 """ return self._cwd @@ -540,26 +504,26 @@ class SFTPClient(BaseSFTP): The SFTP operations use pipelining for speed. - :param fl: opened file or file-like object to copy - :type localpath: object - :param remotepath: the destination path on the SFTP server - :type remotepath: str - :param file_size: optional size parameter passed to callback. If none is - specified, size defaults to 0 - :type file_size: int - :param callback: optional callback function that accepts the bytes - transferred so far and the total bytes to be transferred + :param file fl: opened file or file-like object to copy + :param str remotepath: the destination path on the SFTP server + :param int file_size: + optional size parameter passed to callback. If none is specified, + size defaults to 0 + :param callable callback: + optional callback function (form: ``func(int, int)``) that accepts + the bytes transferred so far and the total bytes to be transferred (since 1.7.4) - :type callback: function(int, int) - :param confirm: whether to do a stat() on the file afterwards to - confirm the file size (since 1.7.7) - :type confirm: bool + :param bool confirm: + whether to do a stat() on the file afterwards to confirm the file + size (since 1.7.7) - :return: an object containing attributes about the given file - (since 1.7.4) - :rtype: `.SFTPAttributes` + :return: + an `.SFTPAttributes` object containing attributes about the given + file. .. versionadded:: 1.4 + .. versionchanged:: 1.7.4 + Began returning rich attribute objects. """ fr = self.file(remotepath, 'wb') fr.set_pipelined(True) @@ -591,23 +555,22 @@ class SFTPClient(BaseSFTP): The SFTP operations use pipelining for speed. - :param localpath: the local file to copy - :type localpath: str - :param remotepath: the destination path on the SFTP server - :type remotepath: str - :param callback: optional callback function that accepts the bytes - transferred so far and the total bytes to be transferred - (since 1.7.4) - :type callback: function(int, int) - :param confirm: whether to do a stat() on the file afterwards to - confirm the file size (since 1.7.7) - :type confirm: bool + :param str localpath: the local file to copy + :param str remotepath: the destination path on the SFTP server + :param callable callback: + optional callback function (form: ``func(int, int)``) that accepts + the bytes transferred so far and the total bytes to be transferred + :param bool confirm: + whether to do a stat() on the file afterwards to confirm the file + size - :return: an object containing attributes about the given file - (since 1.7.4) - :rtype: `.SFTPAttributes` + :return: an `.SFTPAttributes` object containing attributes about the given file .. versionadded:: 1.4 + .. versionchanged:: 1.7.4 + ``callback`` and rich attribute return value added. + .. versionchanged:: 1.7.7 + ``confirm`` param added. """ file_size = os.stat(localpath).st_size fl = file(localpath, 'rb') @@ -623,18 +586,17 @@ class SFTPClient(BaseSFTP): operations will be passed through. This method is primarily provided as a convenience. - :param remotepath: opened file or file-like object to copy to - :type remotepath: object - :param fl: the destination path on the local host or open file - object - :type localpath: str - :param callback: optional callback function that accepts the bytes - transferred so far and the total bytes to be transferred - (since 1.7.4) - :type callback: function(int, int) - :return: the number of bytes written to the opened file object + :param object remotepath: opened file or file-like object to copy to + :param str fl: + the destination path on the local host or open file object + :param callable callback: + optional callback function (form: ``func(int, int)``) that accepts + the bytes transferred so far and the total bytes to be transferred + :return: the `number <int>` of bytes written to the opened file object .. versionadded:: 1.4 + .. versionchanged:: 1.7.4 + Added the ``callable`` param. """ fr = self.file(remotepath, 'rb') file_size = self.stat(remotepath).st_size @@ -659,16 +621,15 @@ class SFTPClient(BaseSFTP): host as ``localpath``. Any exception raised by operations will be passed through. This method is primarily provided as a convenience. - :param remotepath: the remote file to copy - :type remotepath: str - :param localpath: the destination path on the local host - :type localpath: str - :param callback: optional callback function that accepts the bytes - transferred so far and the total bytes to be transferred - (since 1.7.4) - :type callback: function(int, int) + :param str remotepath: the remote file to copy + :param str localpath: the destination path on the local host + :param callable callback: + optional callback function (form: ``func(int, int)``) that accepts + the bytes transferred so far and the total bytes to be transferred .. versionadded:: 1.4 + .. versionchanged:: 1.7.4 + Added the ``callback`` param """ file_size = self.stat(remotepath).st_size fl = file(localpath, 'wb') diff --git a/paramiko/sftp_file.py b/paramiko/sftp_file.py index 068ca1a1..9add3c91 100644 --- a/paramiko/sftp_file.py +++ b/paramiko/sftp_file.py @@ -186,9 +186,9 @@ class SFTPFile (BufferedFile): Set a timeout on read/write operations on the underlying socket or ssh `.Channel`. - :param timeout: seconds to wait for a pending read/write operation - before raising ``socket.timeout``, or ``None`` for no timeout - :type timeout: float + :param float timeout: + seconds to wait for a pending read/write operation before raising + ``socket.timeout``, or ``None`` for no timeout .. seealso:: `.Channel.settimeout` """ @@ -196,10 +196,8 @@ class SFTPFile (BufferedFile): def gettimeout(self): """ - Returns the timeout in seconds (as a float) associated with the socket - or ssh `.Channel` used for this file. - - :rtype: float + Returns the timeout in seconds (as a `float`) associated with the + socket or ssh `.Channel` used for this file. .. seealso:: `.Channel.gettimeout` """ @@ -210,9 +208,8 @@ class SFTPFile (BufferedFile): Set blocking or non-blocking mode on the underiying socket or ssh `.Channel`. - :param blocking: + :param int blocking: 0 to set non-blocking mode; non-0 to set blocking mode. - :type blocking: int .. seealso:: `.Channel.setblocking` """ @@ -235,8 +232,7 @@ class SFTPFile (BufferedFile): exactly like `.SFTPClient.stat`, except that it operates on an already-open file. - :return: an object containing attributes about this file. - :rtype: `.SFTPAttributes` + :return: an `.SFTPAttributes` object containing attributes about this file. """ t, msg = self.sftp._request(CMD_FSTAT, self.handle) if t != CMD_ATTRS: @@ -249,8 +245,7 @@ class SFTPFile (BufferedFile): unix-style and identical to those used by Python's `os.chmod` function. - :param mode: new permissions - :type mode: int + :param int mode: new permissions """ self.sftp._log(DEBUG, 'chmod(%s, %r)' % (hexlify(self.handle), mode)) attr = SFTPAttributes() @@ -264,10 +259,8 @@ class SFTPFile (BufferedFile): only want to change one, use `stat` first to retrieve the current owner and group. - :param uid: new owner's uid - :type uid: int - :param gid: new group id - :type gid: int + :param int uid: new owner's uid + :param int gid: new group id """ self.sftp._log(DEBUG, 'chown(%s, %r, %r)' % (hexlify(self.handle), uid, gid)) attr = SFTPAttributes() @@ -283,9 +276,9 @@ class SFTPFile (BufferedFile): modified times, respectively. This bizarre API is mimicked from Python for the sake of consistency -- I apologize. - :param times: ``None`` or a tuple of (access time, modified time) in - standard internet epoch time (seconds since 01 January 1970 GMT) - :type times: tuple(int) + :param tuple times: + ``None`` or a tuple of (access time, modified time) in standard + internet epoch time (seconds since 01 January 1970 GMT) """ if times is None: times = (time.time(), time.time()) @@ -331,21 +324,23 @@ class SFTPFile (BufferedFile): of the file, and the last 20 bytes will be the SHA-1 of the next 512 bytes. - :param hash_algorithm: the name of the hash algorithm to use (normally - ``"sha1"`` or ``"md5"``) - :type hash_algorithm: str - :param offset: offset into the file to begin hashing (0 means to start - from the beginning) + :param str hash_algorithm: + the name of the hash algorithm to use (normally ``"sha1"`` or + ``"md5"``) + :param offset: + offset into the file to begin hashing (0 means to start from the + beginning) :type offset: int or long - :param length: number of bytes to hash (0 means continue to the end of - the file) + :param length: + number of bytes to hash (0 means continue to the end of the file) :type length: int or long - :param block_size: number of bytes to hash per result (must not be less - than 256; 0 means to compute only one hash of the entire segment) + :param int block_size: + number of bytes to hash per result (must not be less than 256; 0 + means to compute only one hash of the entire segment) :type block_size: int - :return: string of bytes representing the hash of each block, - concatenated together - :rtype: str + :return: + `str` of bytes representing the hash of each block, concatenated + together :raises IOError: if the server doesn't support the "check-file" extension, or possibly doesn't support the hash algorithm @@ -374,9 +369,9 @@ class SFTPFile (BufferedFile): By default, files are not pipelined. - :param pipelined: ``True`` if pipelining should be turned on for this - file; ``False`` otherwise - :type pipelined: bool + :param bool pipelined: + ``True`` if pipelining should be turned on for this file; ``False`` + otherwise .. versionadded:: 1.5 """ @@ -414,11 +409,11 @@ class SFTPFile (BufferedFile): prefetch machinery is used to retrieve all the requested blocks at once. - :param chunks: a list of (offset, length) tuples indicating which - sections of the file to read + :param chunks: + a list of (offset, length) tuples indicating which sections of the + file to read :type chunks: list(tuple(long, int)) :return: a list of blocks read, in the same order as in ``chunks`` - :rtype: list(str) .. versionadded:: 1.5.4 """ diff --git a/paramiko/sftp_handle.py b/paramiko/sftp_handle.py index 6965fd65..a799d57c 100644 --- a/paramiko/sftp_handle.py +++ b/paramiko/sftp_handle.py @@ -41,8 +41,7 @@ class SFTPHandle (object): SFTP. If ``flags`` is passed in, it's used to determine if the file is open in append mode. - :param flags: optional flags as passed to `.SFTPServerInterface.open` - :type flags: int + :param int flags: optional flags as passed to `.SFTPServerInterface.open` """ self.__flags = flags self.__name = None @@ -85,10 +84,8 @@ class SFTPHandle (object): :param offset: position in the file to start reading from. :type offset: int or long - :param length: number of bytes to attempt to read. - :type length: int - :return: data read from the file, or an SFTP error code. - :rtype: str + :param int length: number of bytes to attempt to read. + :return: data read from the file, or an SFTP error code, as a `str`. """ readfile = getattr(self, 'readfile', None) if readfile is None: @@ -122,8 +119,7 @@ class SFTPHandle (object): :param offset: position in the file to start reading from. :type offset: int or long - :param data: data to write into the file. - :type data: str + :param str data: data to write into the file. :return: an SFTP error code like `.SFTP_OK`. """ writefile = getattr(self, 'writefile', None) @@ -152,8 +148,9 @@ class SFTPHandle (object): error code. This is equivalent to `.SFTPServerInterface.stat`, except it's called on an open file instead of a path. - :return: an attributes object for the given file, or an SFTP error - code (like `.SFTP_PERMISSION_DENIED`). + :return: + an attributes object for the given file, or an SFTP error code + (like `.SFTP_PERMISSION_DENIED`). :rtype: `.SFTPAttributes` or error code """ return SFTP_OP_UNSUPPORTED @@ -164,10 +161,8 @@ class SFTPHandle (object): only those fields provided by the client in its request, so you should check for the presence of fields before using them. - :param attr: the attributes to change on this file. - :type attr: `.SFTPAttributes` - :return: an error code like `.SFTP_OK`. - :rtype: int + :param .SFTPAttributes attr: the attributes to change on this file. + :return: an `int` error code like `.SFTP_OK`. """ return SFTP_OP_UNSUPPORTED diff --git a/paramiko/sftp_server.py b/paramiko/sftp_server.py index 9b7ed5ca..0456e0a6 100644 --- a/paramiko/sftp_server.py +++ b/paramiko/sftp_server.py @@ -52,16 +52,13 @@ class SFTPServer (BaseSFTP, SubsystemHandler): parameters or keyword parameters are passed from the original call to `.Transport.set_subsystem_handler`. - :param channel: channel passed from the `.Transport`. - :type channel: `.Channel` - :param name: name of the requested subsystem. - :type name: str - :param server: the server object associated with this channel and - subsystem - :type server: `.ServerInterface` - :param sftp_si: a subclass of `.SFTPServerInterface` to use for handling - individual requests. - :type sftp_si: class + :param .Channel channel: channel passed from the `.Transport`. + :param str name: name of the requested subsystem. + :param .ServerInterface server: + the server object associated with this channel and subsystem + :param class sftp_si: + a subclass of `.SFTPServerInterface` to use for handling individual + requests. """ BaseSFTP.__init__(self) SubsystemHandler.__init__(self, channel, name, server) @@ -126,10 +123,8 @@ class SFTPServer (BaseSFTP, SubsystemHandler): standard SFTP result code. This is a convenience function for trapping exceptions in server code and returning an appropriate result. - :param e: an errno code, as from ``OSError.errno``. - :type e: int - :return: an SFTP error code like ``SFTP_NO_SUCH_FILE``. - :rtype: int + :param int e: an errno code, as from ``OSError.errno``. + :return: an `int` SFTP error code like ``SFTP_NO_SUCH_FILE``. """ if e == errno.EACCES: # permission denied @@ -151,11 +146,9 @@ class SFTPServer (BaseSFTP, SubsystemHandler): This is meant to be a handy helper function for translating SFTP file requests into local file operations. - :param filename: name of the file to alter (should usually be an - absolute path). - :type filename: str - :param attr: attributes to change. - :type attr: `.SFTPAttributes` + :param str filename: + name of the file to alter (should usually be an absolute path). + :param .SFTPAttributes attr: attributes to change. """ if sys.platform != 'win32': # mode operations are meaningless on win32 diff --git a/paramiko/sftp_si.py b/paramiko/sftp_si.py index ead483a0..d4b34268 100644 --- a/paramiko/sftp_si.py +++ b/paramiko/sftp_si.py @@ -46,9 +46,8 @@ class SFTPServerInterface (object): Create a new SFTPServerInterface object. This method does nothing by default and is meant to be overridden by subclasses. - :param server: the server object associated with this channel and - SFTP subsystem - :type server: `.ServerInterface` + :param .ServerInterface server: + the server object associated with this channel and SFTP subsystem """ super(SFTPServerInterface, self).__init__(*largs, **kwargs) @@ -96,16 +95,14 @@ class SFTPServerInterface (object): .. note:: The SFTP protocol defines all files to be in "binary" mode. There is no equivalent to Python's "text" mode. - :param path: the requested path (relative or absolute) of the file - to be opened. - :type path: str - :param flags: flags or'd together from the ``os`` module indicating the - requested mode for opening the file. - :type flags: int - :param attr: requested attributes of the file if it is newly created. - :type attr: `.SFTPAttributes` + :param str path: + the requested path (relative or absolute) of the file to be opened. + :param int flags: + flags or'd together from the ``os`` module indicating the requested + mode for opening the file. + :param .SFTPAttributes attr: + requested attributes of the file if it is newly created. :return: a new `.SFTPHandle` or error code. - :rtype: `.SFTPHandle` """ return SFTP_OP_UNSUPPORTED @@ -125,11 +122,10 @@ class SFTPServerInterface (object): In case of an error, you should return one of the ``SFTP_*`` error codes, such as `.SFTP_PERMISSION_DENIED`. - :param path: the requested path (relative or absolute) to be listed. - :type path: str - :return: a list of the files in the given folder, using - `.SFTPAttributes` objects. - :rtype: list of `.SFTPAttributes` or error code + :param str path: the requested path (relative or absolute) to be listed. + :return: + a list of the files in the given folder, using `.SFTPAttributes` + objects. .. note:: You should normalize the given ``path`` first (see the `os.path` @@ -148,12 +144,12 @@ class SFTPServerInterface (object): "aliases"), you should follow them. (`lstat` is the corresponding call that doesn't follow symlinks/aliases.) - :param path: the requested path (relative or absolute) to fetch - file statistics for. - :type path: str - :return: an attributes object for the given file, or an SFTP error + :param str path: + the requested path (relative or absolute) to fetch file statistics + for. + :return: + an `.SFTPAttributes` object for the given file, or an SFTP error code (like `.SFTP_PERMISSION_DENIED`). - :rtype: `.SFTPAttributes` or error code """ return SFTP_OP_UNSUPPORTED @@ -165,12 +161,13 @@ class SFTPServerInterface (object): return data on the symlink or alias itself. (`stat` is the corresponding call that follows symlinks/aliases.) - :param path: the requested path (relative or absolute) to fetch - file statistics for. + :param str path: + the requested path (relative or absolute) to fetch file statistics + for. :type path: str - :return: an attributes object for the given file, or an SFTP error + :return: + an `.SFTPAttributes` object for the given file, or an SFTP error code (like `.SFTP_PERMISSION_DENIED`). - :rtype: `.SFTPAttributes` or error code """ return SFTP_OP_UNSUPPORTED @@ -178,11 +175,9 @@ class SFTPServerInterface (object): """ Delete a file, if possible. - :param path: the requested path (relative or absolute) of the file - to delete. - :type path: str - :return: an SFTP error code like `.SFTP_OK`. - :rtype: int + :param str path: + the requested path (relative or absolute) of the file to delete. + :return: an SFTP error code `int` like `.SFTP_OK`. """ return SFTP_OP_UNSUPPORTED @@ -198,13 +193,10 @@ class SFTPServerInterface (object): ``newpath`` already exists. (The rename operation should be non-desctructive.) - :param oldpath: the requested path (relative or absolute) of the - existing file. - :type oldpath: str - :param newpath: the requested new path of the file. - :type newpath: str - :return: an SFTP error code like `.SFTP_OK`. - :rtype: int + :param str oldpath: + the requested path (relative or absolute) of the existing file. + :param str newpath: the requested new path of the file. + :return: an SFTP error code `int` like `.SFTP_OK`. """ return SFTP_OP_UNSUPPORTED @@ -218,13 +210,10 @@ class SFTPServerInterface (object): the presense of fields before using them. In some cases, the ``attr`` object may be completely empty. - :param path: requested path (relative or absolute) of the new - folder. - :type path: str - :param attr: requested attributes of the new folder. - :type attr: `.SFTPAttributes` - :return: an SFTP error code like `.SFTP_OK`. - :rtype: int + :param str path: + requested path (relative or absolute) of the new folder. + :param .SFTPAttributes attr: requested attributes of the new folder. + :return: an SFTP error code `int` like `.SFTP_OK`. """ return SFTP_OP_UNSUPPORTED @@ -234,11 +223,9 @@ class SFTPServerInterface (object): existing, empty folder -- otherwise this method should return an error. - :param path: requested path (relative or absolute) of the folder - to remove. - :type path: str - :return: an SFTP error code like `.SFTP_OK`. - :rtype: int + :param str path: + requested path (relative or absolute) of the folder to remove. + :return: an SFTP error code `int` like `.SFTP_OK`. """ return SFTP_OP_UNSUPPORTED @@ -248,13 +235,12 @@ class SFTPServerInterface (object): only those fields provided by the client in its request, so you should check for the presence of fields before using them. - :param path: requested path (relative or absolute) of the file to - change. - :type path: str - :param attr: requested attributes to change on the file. - :type attr: `.SFTPAttributes` - :return: an error code like `.SFTP_OK`. - :rtype: int + :param str path: + requested path (relative or absolute) of the file to change. + :param attr: + requested attributes to change on the file (an `.SFTPAttributes` + object) + :return: an error code `int` like `.SFTP_OK`. """ return SFTP_OP_UNSUPPORTED @@ -287,11 +273,10 @@ class SFTPServerInterface (object): If the specified path doesn't refer to a symbolic link, an error should be returned. - :param path: path (relative or absolute) of the symbolic link. - :type path: str - :return: the target path of the symbolic link, or an error code like + :param str path: path (relative or absolute) of the symbolic link. + :return: + the target `str` path of the symbolic link, or an error code like `.SFTP_NO_SUCH_FILE`. - :rtype: str or error code """ return SFTP_OP_UNSUPPORTED @@ -300,13 +285,11 @@ class SFTPServerInterface (object): Create a symbolic link on the server, as new pathname ``path``, with ``target_path`` as the target of the link. - :param target_path: path (relative or absolute) of the target for - this new symbolic link. - :type target_path: str - :param path: path (relative or absolute) of the symbolic link to - create. - :type path: str - :return: an error code like ``SFTP_OK``. - :rtype: int + :param str target_path: + path (relative or absolute) of the target for this new symbolic + link. + :param str path: + path (relative or absolute) of the symbolic link to create. + :return: an error code `int` like ``SFTP_OK``. """ return SFTP_OP_UNSUPPORTED |