Timeline
Jun 13, 2020:
- 7:33 PM Changeset [1980:21a6a2fa424e] by
- Update PyPI upload target
- 7:21 PM Documentation edited by
- (diff)
- 7:20 PM Changeset [1979:c63d87d6e4e8] by
- Fix required Python version
- 7:19 PM WhatsNewInFtputil4.0.0 edited by
- (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] by
- Added tag release4_0_0 for changeset 8562e30d0b48
- 7:13 PM Changeset [1977:8562e30d0b48] by
- Added tag release4_0_0 for changeset 69af68a16d70
- 7:03 PM Changeset [1976:69af68a16d70] by
- Add paragraphs on helper script
- 7:00 PM Changeset [1975:606c6266c79f] by
- 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
- 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
- Update for ftputil 4.0.0
- 6:32 PM WhatsNewInFtputil4.0.0 edited by
- (diff)
- 6:30 PM Download edited by
- (diff)
- 6:27 PM Download edited by
- (diff)
- 6:23 PM Changeset [1972:cd0ce0df335f] by
- Added tag release4_0_0 for changeset 2eb5be238483
- 6:21 PM Changeset [1971:2eb5be238483] by
- Update version to 4.0.0
- 6:11 PM Changeset [1970:de3d4e5d1a56] by
- Update version to 4.0.0
- 6:10 PM Changeset [1969:9d48041ad00f] by
- Fix documentation link
- 6:07 PM Changeset [1968:ca114ac5a787] by
- 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
- Remove trailing whitespace
- 5:43 PM Changeset [1966:212a0901df14] by
- Update version to 4.0.0 (not 4.0.0-beta)
- 5:39 PM Changeset [1965:12ebe174d7f3] by
- 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
- 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
- Add section on new `FTPHost.makedirs` behavior
- 5:32 PM Changeset [1962:3eb7f8b1718f] by
- Document `exist_ok` flag for `FTPHost.makedirs`
Jun 1, 2020:
- 7:28 PM Changeset [1961:d3f5c7e00844] by
- Ask for testing
- 7:25 PM Changeset [1960:c84d66593e5b] by
- Added tag release_4_0_0b for changeset 7c0ff3a58166
- 7:24 PM Changeset [1959:7c0ff3a58166] by
- Remove `Python :: 2` from classifiers
- 7:23 PM Changeset [1958:e4892f2b089c] by
- Fix keyword argument
- 7:21 PM Download edited by
- (diff)
- 7:12 PM Changeset [1957:8dc87cd18aa0] by
- Add link to "What's new" document
- 7:12 PM Changeset [1956:7818f738a9d3] by
- Add section about path-like objects
- 7:12 PM WhatsNewInFtputil4.0.0 edited by
- (diff)
- 6:58 PM Changeset [1955:74d9f4d277a6] by
- Remove unused import
- 6:57 PM Changeset [1954:9923cf4e6153] by
- Increase maximum line length to 88 This is Black's default.
- 6:51 PM Changeset [1953:7c54384dae7b] by
- Put point about time shift change first
- 6:47 PM WhatsNewInFtputil4.0.0 created by
- 6:43 PM PreReleaseDocumentation edited by
- (diff)
- 6:42 PM Changeset [1952:0fd6800d8b80] by
- Ran `make patch` to set new date
- 6:35 PM Changeset [1951:da3720c4e78b] by
- Improve "What's new in ftputil 4.0.0?"
- 5:37 PM Changeset [1950:569db197ac30] by
- Add `whats_new_in_ftputil_4.0.0.*` to docs
- 5:33 PM Changeset [1949:bd2806b14191] by
- Fix Germanism ;-)
- 5:33 PM Changeset [1948:2ec437f9c646] by
- Add draft of "What's new in ftputil 4.0.0?"
May 31, 2020:
- 11:37 PM Changeset [1947:eaaa0e62a502] by
- Adapt `README.md` for Sourcehut
- 11:12 PM Changeset [1946:2cace274d6e1] by
- 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
- (diff)
- 8:14 PM Ticket #137 (Update documentation for version 4.0.0) closed by
- fixed: Done as of [7d2ec0a6382d].
- 8:06 PM Changeset [1945:7d2ec0a6382d] by
- 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
- Update `README.txt` for ftputil 4.0.0-beta
- 7:32 PM Changeset [1943:7167c5d48168] by
- Patch files to use new version 4.0.0-beta
- 7:30 PM Changeset [1942:fa10c2270a5e] by
- Update announcements for 4.0.0-beta
- 7:09 PM Changeset [1941:3cb8a9021f00] by
- 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
- Adapt documentation to changed time shift semantics ticket: 134
- 7:06 PM Changeset [1939:bc64a54e638c] by
- 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
- wontfix: Implementing this ticket probably is practically impossible for …
- 1:56 PM Changeset [1938:e19cc39c2c9c] by
- 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
- fixed: Fixed in [f16e9b5084b3].
- 11:37 PM Changeset [1937:f16e9b5084b3] by
- 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
- 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
- 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
- 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
- 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
- fixed: This is implemented as of [7e2299845b86].
- 1:49 PM Ticket #136 (Clear cache when setting a new time shift) closed by
- fixed: This issue was solved in [68fd6debe77c].
- 1:47 PM Ticket #136 (Clear cache when setting a new time shift) created by
-
FTPHost.set_time_shift(new_time_shift)
must invalidate (i. e. clear) …
Apr 11, 2020:
- 9:59 PM Changeset [1934:df2e1f889303] by
- Remove debugging `print`s
- 9:57 PM Changeset [1933:e84ebbbace3b] by
- 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
- 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
- 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
- Add three todo items
- 8:37 PM Changeset [1929:ed7b9bb519bb] by
- Remove todo item on path-like arguments This has been implemented as ticket 119.
- 8:33 PM Changeset [1928:7e2299845b86] by
- 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
- 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
- Use fractions consistently `minute` would already be a float because `second` is.
- 7:24 PM Changeset [1925:68fd6debe77c] by
- 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
- 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
- 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
- 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
- Test newer Python versions ftputil 4.x will no longer support Python 3.5.
- 4:28 PM Changeset [1920:b0227e74eaff] by
- Fix marker selection The marker has been renamed to `slow_test` a while ago.
- 4:24 PM Changeset [1919:e1f302aa89d0] by
- 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
- 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
- Format docstrings and comments to 80 chars width
- 9:57 PM Changeset [1916:a526dce5108f] by
- 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.