13:13 Download edited by schwa
Describe how to install ftputil with pip (diff)
10:18 WikiStart edited by schwa
Remove comment part on binary mode (diff)
00:35 Changeset [1688:93401904f9bc] by Stefan Schwarzer <sschwarzer@…>
defaultAdd deprecation warning about `use_list_a_option` Tell other developers that the default of `use_list_a_option` will change in future ftputil versions. As this is a backward-incompatible change, it can only be changed in a new major version, i. e. ftputil 4.0.0. See ticket #110 for the reason of the change.
00:15 Ticket #115 (Use TLS on website) created by schwa
It's high time to move to TLS, i. e. turn http://ftputil.sschwarzer.net


23:54 Ticket #111 (Add deprecation warnings on dropping Python 2 support) closed by schwa
fixed: Fixed in [c48d3e1a3e8a]. This change issues a deprecation warning under …
23:53 Changeset [1687:c48d3e1a3e8a] by Stefan Schwarzer <sschwarzer@…>
defaultEmit deprecation warning when used under Python 2 If Python is run with deprecation warnings enabled (say, with the `-Wd` option), an import of `ftputil` will show a deprecation warning under Python 2. ftputil 4.0.0 (to be released this or next year) will drop Python 2 support. See also http://lists.sschwarzer.net/pipermail/ftputil/2017q3/000465.html ticket: 111
23:28 Ticket #109 (LICENSE missing from sdist) closed by schwa
23:27 Changeset [1686:c0463bfcfccb] by Stefan Schwarzer <sschwarzer@…>
defaultAdd `LICENSE` file ticket: 109
23:26 Changeset [1685:966520910602] by Stefan Schwarzer <sschwarzer@…>
defaultUse `-exec` instead of `xargs` Instead of piping the `find` output into `xargs`, use the `-exec` option of `find` to remove files and directories. Using `xargs` causes problems if nothing is found; in this case we get a message like rm: missing operand and the make target (`clean`) fails.
23:15 Changeset [1684:a0a8365cdb12] by Stefan Schwarzer <sschwarzer@…>
defaultExtract method `_is_file_system_entity` Extract `_is_file_system_entity` as the common code of `ftputil.path._Path.isdir` and `ftputil.path._Path.isfile`. For this change, I'm a bit torn between increasing the complexity by another indirection vs. removing almost all redundancy between the two methods. For now, favor the redundancy removal.
22:55 Changeset [1683:6f9cfd296288] by Stefan Schwarzer <sschwarzer@…>
defaultPut `isdir` before `isfile` Sort `isdir`, `isfile` and `islink` alphabetically. This is the same order in that they're tested in the unit tests.
22:51 Ticket #107 (untrapped exception) closed by schwa
fixed: Fixed in [ec059f9d9dc8]. FTPHost.path.isdir and FTPHost.path.isfile
22:49 Changeset [1682:ec059f9d9dc8] by Stefan Schwarzer <sschwarzer@…>
defaultHandle infinite link chains in `isdir` and `isfile` If `FTPHost.path.isdir` and `FTPHost.path.isfile` run into an infinite link chain, return `False`, as the corresponding functions in `os.path` do. Before, `isdir` and `isfile` would raise a `PermanentError` with the information that a recursive link chain was detected. This behavior, in turn, led to a failure in `FTPHost.walk` (see ticket #107). ticket: 107
20:47 Changeset [1681:7cfac974784c] by Stefan Schwarzer <sschwarzer@…>
defaultAdd comment on `set_pasv` call When I looked at the code, I thought for a moment it was buggy because `set_pasv` was called even if `use_passive_mode` was `False`. As it turns out, according to the documentation `set_pasv` can either be called with `True` (=use passive mode) or `False` (=use active mode).
19:41 Changeset [1680:65a09765b238] by Stefan Schwarzer <sschwarzer@…>
defaultAdd comment on `getcwd` call Mention that `normpath` has already been applied to the `getcwd` result, so the reader doesn't have to wonder whether there should also be calls to `normpath` on the `getcwd` results. ticket: 113
19:38 Ticket #113 (isdir fails because of trailing forward slash) closed by schwa
fixed: Fixed in commits [b4c9b089b6b8] and [4027740cdd2d].
19:33 Changeset [1679:80aa676d81b5] by Stefan Schwarzer <sschwarzer@…>
defaultAdd TODO comment We can't add the comment in [4027740cdd2d] because this would change the hash. It's impossible to refer to a commit hash in the same commit's commit message. ticket: 113
19:23 Changeset [1678:4027740cdd2d] by Stefan Schwarzer <sschwarzer@…>
defaultApply `normpath` before comparing paths In both `isfile` and `isdir` of `ftputil.path._Path`, there's a workaround in case we can't go to a parent directory of the current directory. Call `normpath` on the `isfile`/`isdir` path argument before comparing with `self._host.getcwd()`. This makes sure that we compare correctly if the paths aren't strictly equal but only semantically equal, i. e. referring to the same actual file system path. Don't use `samefile` here because this implicitly tries to call `stat`. This is exactly what we try to _avoid_ when applying the workaround. For now, don't create unit tests because these would be probably rather awkward. ticket: 113
19:17 Changeset [1677:b4c9b089b6b8] by Stefan Schwarzer <sschwarzer@…>
defaultApply `normpath` when getting the working directory When getting the current working directory of the FTP session, apply `normpath`. This makes sure that an initial `FTPHost.getcwd` call returns the current working without a trailing slash (with the exception of the current directory being `/`). ticket: 113
18:38 Changeset [1676:441d337b2878] by Stefan Schwarzer <sschwarzer@…>
defaultReorder caught exceptions in `_available_child` Change the order of caught exceptions in `FTPHost._available_child`. Put the errors in the `ftplib` namespace first, but otherwise order the exception classes alphabetically by their names. In general, when reordering exceptions you have to watch out for inheritance relationships (catch subclasses before their base classes). However, there doesn't seem to be any inheritance issue with the given exceptions.
18:35 Changeset [1675:1ce0dd183c17] by Stefan Schwarzer <sschwarzer@…>
defaultFix wording
18:26 Ticket #114 (Uncaught EOF error in host._avaliable_child) closed by schwa
fixed: Fixed in [b2e19844d663].
18:25 Changeset [1674:b2e19844d663] by Stefan Schwarzer <sschwarzer@…>
defaultCatch `EOFError` in `_available_child` If `host._session.pwd` raises an `EOFError`, catch it and don't consider the affected child host for a new file-like object.
17:51 Changeset [1673:2cb5fa8e9206] by Stefan Schwarzer <sschwarzer@…>
defaultAdd tests for the `_available_child` call Make the `pwd` method of child sessions raise an exception to test if it's caught and a new child session created.
17:18 Changeset [1672:108c4eb98c66] by Stefan Schwarzer <sschwarzer@…>
defaultAdd another comment on socket timeout Emphasize that a socket timeout (TCP/IP protocol level) is different from an FTP timeout (FTP level).


21:12 Ticket #114 (Uncaught EOF error in host._avaliable_child) created by ftputiluser
There is an uncaught ftplib EOF exception in _avaliable_child that does …


20:02 Ticket #112 (Erratic `OSError` exceptions in `readinto` in some unit tests) closed by schwa
fixed: Fixed in [2a3350ab9374].
20:00 Changeset [1671:2a3350ab9374] by Stefan Schwarzer <sschwarzer@…>
defaultHandle socket read timeout in `_available_child` When `FTPFile.close` causes a socket read timeout, the _next_ read on the socket will raise an `OSError`. Hence, the `OSError` can happen in the `host._session.pwd` call in `FTPHost._available_child`. Catch this `OSError`. Although the fix in `ftputil.host.FTPHost._available_child` will make the child session handling work, socket read errors could result in child sessions being returned in a non-reproducible way. To make the identity checks in the tests reproducible, use the small `CONTENTS` file instead of the larger `debian-keyring.tar.gz` file. Investigation of ticket #112 showed that socket read errors would rather occur with larger files. This change in the tests is slightly hackish, but should be ok, unless it'll cause other problems later on. ticket: 112
19:47 Changeset [1670:57f54c874d4e] by Stefan Schwarzer <sschwarzer@…>
defaultAdd `-e` option for `echo` invocation Add the `-e` option to evaluate `\n` sequences in the strings to echo.
19:46 Changeset [1669:7199091e3f2a] by Stefan Schwarzer <sschwarzer@…>
defaultRefactor test invocation Let the former `test` target run only fast tests for faster turnaround during development. To run all tests, including the slow tests, add a new target `all_tests`. For symmetry with `all_tests`, add a new target `tests`, which is an alias for the changed target `test`.
19:43 Changeset [1668:e6aab79e4df3] by Stefan Schwarzer <sschwarzer@…>
defaultImprove comment on `pytest` program


23:22 Ticket #113 (isdir fails because of trailing forward slash) reopened by ftputiluser
23:19 Ticket #113 (isdir fails because of trailing forward slash) closed by ftputiluser
invalid: "Apparently the error only appeared as a consequence of the LIST -a
22:23 Ticket #113 (isdir fails because of trailing forward slash) created by ftputiluser
I believe there is a bug in lines 134 and 155 of path.py. The lines I'm …
Note: See TracTimeline for information about the timeline view.