Timeline



Jun 13, 2020:

7:24 PM ftputil-4.0.0.tar.gz attached to Download by schwa
7:21 PM Documentation edited by schwa
(diff)
7:19 PM WhatsNewInFtputil4.0.0 edited by schwa
(diff)
7:18 PM Milestone 4.0.0 completed
This will be the first version without Python 2 support. My "must …
7:16 PM Changeset [1978:33ee8972ff37]default by Stefan Schwarzer <sschwarzer@…>
Added tag release4_0_0 for changeset 8562e30d0b48
7:13 PM Changeset [1977:8562e30d0b48] by Stefan Schwarzer <sschwarzer@…>
Added tag release4_0_0 for changeset 69af68a16d70
7:03 PM Changeset [1976:69af68a16d70] by Stefan Schwarzer <sschwarzer@…>
Add paragraphs on helper script
7:00 PM Changeset [1975:606c6266c79f] by Stefan Schwarzer <sschwarzer@…>
Rename `find_invalid_code.py` In the case of migration to ftputil 4.0.0 the old name is misleading. `time_shift`, `set_time_shift` and `makedirs` aren't invalid methods; they "merely" point to potential problems.
6:57 PM Changeset [1974:5bee71d55be7] by Stefan Schwarzer <sschwarzer@…>
Update module docstring The module docstring is also the command line help text. Changed "deprecated/invalid" to the more generic "(potentially) problematic".
6:48 PM Changeset [1973:4764a50f10e0] by Stefan Schwarzer <sschwarzer@…>
Update for ftputil 4.0.0
6:32 PM WhatsNewInFtputil4.0.0 edited by schwa
(diff)
6:30 PM Download edited by schwa
(diff)
6:27 PM Download edited by schwa
(diff)
6:23 PM Changeset [1972:cd0ce0df335f] by Stefan Schwarzer <sschwarzer@…>
Added tag release4_0_0 for changeset 2eb5be238483
6:21 PM Changeset [1971:2eb5be238483] by Stefan Schwarzer <sschwarzer@…>
Update version to 4.0.0
6:11 PM Changeset [1970:de3d4e5d1a56] by Stefan Schwarzer <sschwarzer@…>
Update version to 4.0.0
6:10 PM Changeset [1969:9d48041ad00f] by Stefan Schwarzer <sschwarzer@…>
Fix documentation link
6:07 PM Changeset [1968:ca114ac5a787] by Stefan Schwarzer <sschwarzer@…>
Trim down the installation section Since some time, Python comes with `pip`, so using `pip` will satisfy most people's needs. I trust that developers who nevertheless want to get the source code, will be able to do so on their own.
5:57 PM Changeset [1967:e324f94946c4] by Stefan Schwarzer <sschwarzer@…>
Remove trailing whitespace
5:43 PM Changeset [1966:212a0901df14] by Stefan Schwarzer <sschwarzer@…>
Update version to 4.0.0 (not 4.0.0-beta)
5:39 PM Changeset [1965:12ebe174d7f3] by Stefan Schwarzer <sschwarzer@…>
Move item on `makedirs` to "incompatible changes" It turned out, the addition of `exist_ok` with the same default as in Python 3 breaks backward-compatibility, so move this item up into the section on backward-incompatible changes. ticket: 117
5:38 PM Changeset [1964:9d1397a58184] by Stefan Schwarzer <sschwarzer@…>
Fix minimum Python version ftputil 4.0.0 needs Python 3.6+. Python 3.5 isn't enough.
5:32 PM Changeset [1963:e82905db4595] by Stefan Schwarzer <sschwarzer@…>
Add section on new `FTPHost.makedirs` behavior
5:32 PM Changeset [1962:3eb7f8b1718f] by Stefan Schwarzer <sschwarzer@…>
Document `exist_ok` flag for `FTPHost.makedirs`

Jun 1, 2020:

7:28 PM Changeset [1961:d3f5c7e00844] by Stefan Schwarzer <sschwarzer@…>
Ask for testing
7:25 PM Changeset [1960:c84d66593e5b] by Stefan Schwarzer <sschwarzer@…>
Added tag release_4_0_0b for changeset 7c0ff3a58166
7:24 PM Changeset [1959:7c0ff3a58166] by Stefan Schwarzer <sschwarzer@…>
Remove `Python :: 2` from classifiers
7:23 PM Changeset [1958:e4892f2b089c] by Stefan Schwarzer <sschwarzer@…>
Fix keyword argument
7:21 PM Download edited by schwa
(diff)
7:12 PM Changeset [1957:8dc87cd18aa0] by Stefan Schwarzer <sschwarzer@…>
Add link to "What's new" document
7:12 PM Changeset [1956:7818f738a9d3] by Stefan Schwarzer <sschwarzer@…>
Add section about path-like objects
7:12 PM WhatsNewInFtputil4.0.0 edited by schwa
(diff)
6:58 PM Changeset [1955:74d9f4d277a6] by Stefan Schwarzer <sschwarzer@…>
Remove unused import
6:57 PM Changeset [1954:9923cf4e6153] by Stefan Schwarzer <sschwarzer@…>
Increase maximum line length to 88 This is Black's default.
6:51 PM Changeset [1953:7c54384dae7b] by Stefan Schwarzer <sschwarzer@…>
Put point about time shift change first
6:47 PM WhatsNewInFtputil4.0.0 created by schwa
6:43 PM PreReleaseDocumentation edited by schwa
(diff)
6:42 PM Changeset [1952:0fd6800d8b80] by Stefan Schwarzer <sschwarzer@…>
Ran `make patch` to set new date
6:35 PM Changeset [1951:da3720c4e78b] by Stefan Schwarzer <sschwarzer@…>
Improve "What's new in ftputil 4.0.0?"
5:37 PM Changeset [1950:569db197ac30] by Stefan Schwarzer <sschwarzer@…>
Add `whats_new_in_ftputil_4.0.0.*` to docs
5:33 PM Changeset [1949:bd2806b14191] by Stefan Schwarzer <sschwarzer@…>
Fix Germanism ;-)
5:33 PM Changeset [1948:2ec437f9c646] by Stefan Schwarzer <sschwarzer@…>
Add draft of "What's new in ftputil 4.0.0?"

May 31, 2020:

11:37 PM Changeset [1947:eaaa0e62a502] by Stefan Schwarzer <sschwarzer@…>
Adapt `README.md` for Sourcehut
11:12 PM Changeset [1946:2cace274d6e1] by Stefan Schwarzer <sschwarzer@…>
Change backup repo to Sourcehut Since Bitbucket shuts down all Mercurial repos, I moved all my Mercurial repos from Bitbucket to Sourcehut.
11:08 PM PreReleaseDocumentation edited by schwa
(diff)
8:14 PM Ticket #137 (Update documentation for version 4.0.0) closed by schwa
fixed: Done as of [7d2ec0a6382d].
8:06 PM Changeset [1945:7d2ec0a6382d] by Stefan Schwarzer <sschwarzer@…>
Fix minimum Python version In order to support path-like objects, we need at least Python 3.6. It _may_ be possible to create an ftputil version that just doesn't support path-like objects on Python 3.5, but otherwise works. However, I think the effort for this wouldn't be justified (especially since Python 3.5's end-of-life is as close as September 2020, see https://devguide.python.org/#status-of-python-branches ).
7:38 PM Changeset [1944:b6819f7ff825] by Stefan Schwarzer <sschwarzer@…>
Update `README.txt` for ftputil 4.0.0-beta
7:32 PM Changeset [1943:7167c5d48168] by Stefan Schwarzer <sschwarzer@…>
Patch files to use new version 4.0.0-beta
7:30 PM Changeset [1942:fa10c2270a5e] by Stefan Schwarzer <sschwarzer@…>
Update announcements for 4.0.0-beta
7:09 PM Changeset [1941:3cb8a9021f00] by Stefan Schwarzer <sschwarzer@…>
Change minimum Python version We target version 3.5, not 3.6 because Python 3.5 is still officially supported.
7:08 PM Changeset [1940:b0cb3871ed21] by Stefan Schwarzer <sschwarzer@…>
Adapt documentation to changed time shift semantics ticket: 134
7:06 PM Changeset [1939:bc64a54e638c] by Stefan Schwarzer <sschwarzer@…>
Fix definition of time shift value This has changed with the implemenation of ticket #134, see https://ftputil.sschwarzer.net/trac/ticket/134 . ticket: 134

May 25, 2020:

8:28 PM Ticket #138 (Support for PEP 3151 (new exception hierarchy)) closed by schwa
wontfix: Implementing this ticket probably is practically impossible for …
1:56 PM Changeset [1938:e19cc39c2c9c] by Stefan Schwarzer <sschwarzer@…>
Use `errno.EEXIST` instead of literal 17 The concrete value for a symbolic constant like `EEXIST` may differ between platforms, so using the symbolic name is both a bit clearer and more portable.

May 24, 2020:

11:42 PM Ticket #117 (Let makedirs accept `exist_ok` as argument and fix default behavior) closed by schwa
fixed: Fixed in [f16e9b5084b3].
11:37 PM Changeset [1937:f16e9b5084b3] by Stefan Schwarzer <sschwarzer@…>
Have `FTPHost.makedirs` handle `exist_ok` If `exist_ok` is `False`, which is the default, raise an exception if the leaf directory exists. Before, the exception wrongly wasn't raised. ticket: 117
10:54 PM Changeset [1936:eea2502c2676] by Stefan Schwarzer <sschwarzer@…>
Move `TestTimeShift` up Move `TestTimeShift` up before `TestUploadAndDownload`. This order reflects the order of the method groups in `FTPHost`.
9:10 PM Changeset [1935:38acf28f3905] by Stefan Schwarzer <sschwarzer@…>
Format docstrings and comments Reformat docstrings and comments to 80 characters. Traditionally, the margin for the code was at 79 columns, so I chose a bit less for the comments. With the switch to Black for formatting the right margin is now at nearly 90 columns, so it makes sense to also allow a greater right margin for docstrings and comments. Lines still don't get too long because the formatted text often starts only in column 5 or 9.
7:44 PM Ticket #138 (Support for PEP 3151 (new exception hierarchy)) created by schwa
Python 3.3 redesigned the exception hierarchy to be able to catch a …

Apr 13, 2020:

6:02 PM Ticket #137 (Update documentation for version 4.0.0) created by schwa
Some of the following items apply more to the announcement than to the …
5:51 PM Ticket #134 (Assume UTC for directory listings from server) closed by schwa
fixed: This is implemented as of [7e2299845b86].
1:49 PM Ticket #136 (Clear cache when setting a new time shift) closed by schwa
fixed: This issue was solved in [68fd6debe77c].
1:47 PM Ticket #136 (Clear cache when setting a new time shift) created by schwa
FTPHost.set_time_shift(new_time_shift) must invalidate (i. e. clear) …

Apr 11, 2020:

9:59 PM Changeset [1934:df2e1f889303] by Stefan Schwarzer <sschwarzer@…>
Remove debugging `print`s
9:57 PM Changeset [1933:e84ebbbace3b] by Stefan Schwarzer <sschwarzer@…>
Make check/rounding part of `set_time_shift` Before, `__assert_valid_time_shift` and, after the assertion, `__rounded_time_shift`, were called only from `synchronize_times`. However, it makes sense to call the former two methods for any call of `set_time_shift`, including calls by users.
9:43 PM Changeset [1932:3cbfe0a457db] by Stefan Schwarzer <sschwarzer@…>
Use `datetime` API instead of `time` API The `datetime` API is easier to use. Could be that this test code was written when `datetime` wasn't a part of the Python standard library.
9:17 PM Changeset [1931:834c3a213ba7] by Stefan Schwarzer <sschwarzer@…>
Use `datetime` API instead of `time` API Using `datetime` usually is far less convoluted. The reason that `time` was used here is that this ftputil code likely was written before the `datetime` module was added to Python's standard library.
8:40 PM Changeset [1930:1c9ad5ef5579] by Stefan Schwarzer <sschwarzer@…>
Add three todo items
8:37 PM Changeset [1929:ed7b9bb519bb] by Stefan Schwarzer <sschwarzer@…>
Remove todo item on path-like arguments This has been implemented as ticket 119.
8:33 PM Changeset [1928:7e2299845b86] by Stefan Schwarzer <sschwarzer@…>
Change `utc_local_time_shift` to `expected_time_shift` Replace the function `utc_local_time_shift` with `expected_time_shift`. The purpose of both functions is very similar, to set the constant `EXPECTED_TIME_SHIFT`. I changed the name because the time shift is now relative to UTC, not to the local time of the client. Therefore, the function old name would be confusing. ticket: 134
7:49 PM Changeset [1927:81bbc72efc93] by Stefan Schwarzer <sschwarzer@…>
Adapt test to new definition of time shift The time shift is still server time minus client time, but the client time is expressed in UTC. A time shift of 0.0 means that the timestamps returned by the server are also in UTC. ticket: 134
7:40 PM Changeset [1926:225ad3bcdc07] by Stefan Schwarzer <sschwarzer@…>
Use fractions consistently `minute` would already be a float because `second` is.
7:24 PM Changeset [1925:68fd6debe77c] by Stefan Schwarzer <sschwarzer@…>
Clear cache if time shift changes If the time shift changes, all timestamps in the cache will be wrong with respect to the _new_ time shift. Depending on the cache, reusing the old timestamps may not be a problem, but in some cases it might be. Therefore stay on the safe side and clear the cache, sacrificing efficiency in favor of correct timestamps. At first sight, we could "correct" the cache entries by applying the difference between old and new time shift to the existing cache entries. However, I think the interactions in ftputil are already so complicated that I'd like to avoid any probably unnecessary optimizations. Also, the time shift would probably be set soon after creating the `FTPHost` instance, so anyway only relatively few cache entries would be affected.

Apr 10, 2020:

8:25 PM Changeset [1924:f4b90fa97634] by Stefan Schwarzer <sschwarzer@…>
Update `set_time_shift` docstring Emphasize that the client time is UTC. This is consistent with the new calculation in `_Stat.parse_unix_time`. In previous versions of ftputil, the time shift was supposed to be the difference between the local server time (assumed from the timestamp on the server) and the local client time. However, in some circumstances the client time was retrieved in UTC (namely by `os.path.getmtime`), which was inconsistent with other places where the client time was assumed to be a local time. ticket: 134
8:18 PM Changeset [1923:7b4b21f5da09] by Stefan Schwarzer <sschwarzer@…>
Subtract time shift only once The new code in `_Stat.parse_unix_time` returns the server time already corrected by the time shift. Therefore it's a bug to subtract the time shift again in `RemoteFile.mtime`. ticket: 134
4:30 PM Changeset [1922:da97ee1b9599] by Stefan Schwarzer <sschwarzer@…>
Add `freezegun` dependency This is used in at least one unit test. This dependency is _only_ needed for testing, _not_ for normal library use.
4:29 PM Changeset [1921:4be05b9c21f3] by Stefan Schwarzer <sschwarzer@…>
Test newer Python versions ftputil 4.x will no longer support Python 3.5.
4:28 PM Changeset [1920:b0227e74eaff] by Stefan Schwarzer <sschwarzer@…>
Fix marker selection The marker has been renamed to `slow_test` a while ago.
4:24 PM Changeset [1919:e1f302aa89d0] by Stefan Schwarzer <sschwarzer@…>
Use constant `unknown` instead of `None` Although `ftputil.stat.UNKNOWN_PRECISION` is indeed `None`, we're actually interested in the symbolic constant here.
4:05 PM Changeset [1918:012ebe07956d] by Stefan Schwarzer <sschwarzer@…>
Use `utcnow` to match stat result The modification time in a stat result is UTC, not local time. ticket: 134

Apr 5, 2020:

10:13 PM Changeset [1917:ed871b3f42c4] by Stefan Schwarzer <sschwarzer@…>
Format docstrings and comments to 80 chars width
9:57 PM Changeset [1916:a526dce5108f] by Stefan Schwarzer <sschwarzer@…>
Assume server time without time shift is UTC By default, assume the timestamps in the FTP server's listings are in UTC. The user can still set a time shift in case the server doesn't use UTC timestamps. The reasons for assuming UTC are explained in ticket #134. Dealing with "only" UTC and the time shift makes the code a bit easier to handle because we don't need to consider mismatches between UTC and local time (let alone different local times on server and client). That said, we _may_ have time differences between server and client, but such a time difference should be solely covered by the time shift value. Especially tricky is the decision which year to choose for the timestamp if the directory line from the server doesn't contain a year value. This can't be solved clearly, so use a heuristics (see the code comments in `parse_unix_time`). ticket: 134
Note: See TracTimeline for information about the timeline view.