This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Title: ftplib storbinary/storlines callback function
Type: Stage:
Components: Library (Lib) Versions: Python 2.5
Status: closed Resolution: accepted
Dependencies: Superseder:
Assigned To: gregory.p.smith Nosy List: georg.brandl, giampaolo.rodola, gregory.p.smith, nnorwitz, phil_schwartz, tcarroll
Priority: normal Keywords: patch

Created on 2005-06-15 23:15 by phil_schwartz, last changed 2022-04-11 14:56 by admin. This issue is now closed.

File name Uploaded Description Edit phil_schwartz, 2005-06-15 23:15 ftplib.FTP storbinary and storlines accept a callback func parameter phil_schwartz, 2006-07-03 18:09 patched (based on python 2.4.3-8 FC5 x86_64 rpm)
unnamed gregory.p.smith, 2008-01-22 20:42
Messages (9)
msg48472 - (view) Author: Phil Schwartz (phil_schwartz) Date: 2005-06-15 23:15
The ftplib.FTP class currently allows the ability to
provide a callback function for the retrbinary &
retrlines methods to invoke.  However, the
corresponding storbinary and storlines methods do not.

My ReleaseForge application currently uses the ftplib
to send files (rather than retrieve) and it's helpful
to know the percentage of the file that has been sent.
 For my app I subclassed ftplib.FTP and reimplemented
storbinary to optionally accept a callback function as
a parameter.  

However, I think this would be a useful method to
include in the standard python distribution.  I've
attached a modified version of which adds
this functionality.  Unlike the retrX methods, the
storX methods only invoke the callback function if it's
not None so that it will not interfere with existing
code.  For completeness, the retrX methods invoke
print_line if a callback function is not provided and
doing so for the storX functions may be undesired.
msg48473 - (view) Author: Georg Brandl (georg.brandl) * (Python committer) Date: 2006-03-28 07:52
Logged In: YES 

Please provide your patch as a diff between the original and your version. It greatly helps reviewers.
msg48474 - (view) Author: Phil Schwartz (phil_schwartz) Date: 2006-07-03 18:09
Logged In: YES 

Attached patch of (of Python 2.4.3)
msg48475 - (view) Author: Terry Carroll (tcarroll) Date: 2007-04-25 00:08
I'd like to voice some support for this patch, if that's not out of line.  I've used it myself in at least one app, and it would be nice to have it as a standard feature in 2.6.

It seems odd that the callback feature is in the two retrieval methods, but not the store methods.  Ruby, for example, supports it in both.  Not that Python has to do everything Ruby does, but there doesn't seem to be any obstacle to adding this support.
msg48476 - (view) Author: Neal Norwitz (nnorwitz) * (Python committer) Date: 2007-04-25 05:39
Terry, your comment is definitely *not* out of line!  The more people comment on patches the easier it is for us to make a decision.  It would be great to comment on other patches or bugs that affect you.  Thanks.
msg61470 - (view) Author: Gregory P. Smith (gregory.p.smith) * (Python committer) Date: 2008-01-22 00:20
accepted, committed as svn r60188 for 2.6.  I also cleaned up the retr*
and stor* doc strings.
msg61529 - (view) Author: Giampaolo Rodola' (giampaolo.rodola) * (Python committer) Date: 2008-01-22 20:00
Could I propose the following docstring corrections?

@@ -313,7 +313,7 @@
         expected size may be None if it could not be determined.
         Optional `rest' argument can be a string that is sent as the
-        argument to a RESTART command.  This is essentially a server
+        argument to a REST(art) command.  This is essentially a server
         marker used to tell the server to skip over any data up to the
         given marker.
@@ -403,7 +403,7 @@
         """Retrieve data in line mode.  A new port is created for you.
-          cmd: A RETR or LIST command.
+          cmd: A RETR, LIST, NLST or MLSD command.
           callback: An optional single parameter callable that is called
                     for each line with the trailing CRLF stripped.
                     [default: print_line()]
msg61537 - (view) Author: Gregory P. Smith (gregory.p.smith) * (Python committer) Date: 2008-01-22 20:42
thanks.  applied (well, they will be when comes back)

On 1/22/08, Giampaolo Rodola' <> wrote:
> Giampaolo Rodola' added the comment:
> Could I propose the following docstring corrections?
msg61542 - (view) Author: Giampaolo Rodola' (giampaolo.rodola) * (Python committer) Date: 2008-01-22 22:28
Another one. On line 542:

-        # Note that the RFC doesn't say anything about 'SIZE'
+        # SIZE command is defined in RFC-3659
Date User Action Args
2022-04-11 14:56:11adminsetgithub: 42089
2008-01-22 22:28:34giampaolo.rodolasetmessages: + msg61542
2008-01-22 20:42:01gregory.p.smithsetfiles: + unnamed
messages: + msg61537
2008-01-22 20:00:23giampaolo.rodolasetnosy: + giampaolo.rodola
messages: + msg61529
2008-01-22 00:20:20gregory.p.smithsetstatus: open -> closed
resolution: accepted
messages: + msg61470
2008-01-21 23:48:54gregory.p.smithsetassignee: gregory.p.smith
nosy: + gregory.p.smith
2005-06-15 23:15:18phil_schwartzcreate