Issue 7585: difflib should separate filename from timestamp with tab (original) (raw)

Issue7585

Created on 2009-12-27 20:57 by techtonik, last changed 2022-04-11 14:56 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
difflib.tab_separated_filename.diff techtonik,2009-12-27 20:57
example.py brian.curtin,2009-12-29 04:33
issue7585.difflib-tab-separator.diff techtonik,2010-04-01 20:05 base patch
issue7585.difflib-tab-separator-no-trail.diff techtonik,2010-04-01 20:22 no trailing whitespace
issue7585.difflib-tab-update-docs.diff techtonik,2010-04-02 11:41 (optional) update docs
issue7585.difflib-tab-updoc-iso8601.diff techtonik,2010-04-02 11:43 (opt) alt docs update
issue7585.difflib-tab-unittest.diff techtonik,2010-04-07 10:14 with unittest
Messages (21)
msg96924 - (view) Author: anatoly techtonik (techtonik) Date: 2009-12-27 20:57
The patch inserts \t character between filename and timestamp in unified and context diff headers. According to specification by Guido Van Rossum =) http://www.artima.com/weblogs/viewpost.jsp?thread=164293 And de-facto output from various tools http://code.google.com/p/python-patch/source/browse/#svn/trunk/doc And the common sense --- that it is easier to split this stuff +++ than this one into filename + timestamp --- diff.py Sun Dec 27 16:08:28 2009 +++ trunk/diff.py Sun Dec 27 15:46:58 2009
msg96961 - (view) Author: Brian Curtin (brian.curtin) * (Python committer) Date: 2009-12-28 17:38
I don't think the conditional checks around the timestamps are necessary. Couldn't you just put the \t directly in the string that gets yielded? That way the chunk headers always follow the same format.
msg96980 - (view) Author: anatoly techtonik (techtonik) Date: 2009-12-29 00:34
Conditional checks are required to prevent leaving trailing whitespace in filename when date component is not present. Such trailing whitespace may confuse patch tools. [1] [1] http://code.google.com/p/python-patch/issues/detail?id=2
msg96986 - (view) Author: Brian Curtin (brian.curtin) * (Python committer) Date: 2009-12-29 04:33
Shouldn't the patch tool handle that? FWIW, both the "svn diff" and *nix diff utilities produce headers with the parts split by a tab character. Would the code in example.py work in your tool to handle both tabs and spaces?
msg96989 - (view) Author: anatoly techtonik (techtonik) Date: 2009-12-29 10:28
Filenames may contain spaces too. --- handle dis Sun Dec 27 16:08:28 2009 --- или вот это пон, дек 27 16:08:28 2009 The last line is space separated filename and date in Russian locale. Patch tool should handle that, but as you may see it is not always possible. That's why difflib modification with \t separator will greatly improve interoperability of difflib patches regardless of timestamp format. Stripping trailing whitespace when there is no timestamp serves the same purpose. We can assume that patch tools are perfect, but I wouldn't write my tool if that was true, so its better to be friendly on difflib side and generate the output that won't require more work than necessary to use it.
msg97013 - (view) Author: Brian Curtin (brian.curtin) * (Python committer) Date: 2009-12-29 23:36
I agree that splitting with a tab character is good, but I think it should be split by a tab character in every case. If the separator is different based on what data is provided, then it complicates parsing and would have to be explained in documentation that we provide different header formats.
msg97018 - (view) Author: anatoly techtonik (techtonik) Date: 2009-12-30 00:57
This patch makes sure filename and date split by tab in every case when date is provided.
msg97164 - (view) Author: Antoine Pitrou (pitrou) * (Python committer) Date: 2010-01-03 15:00
Is there any reason why you changed some of the examples in the docstrings (e.g. 'Sat Jan 26 23:30:50 1991' -> '1991-01-26 23:30:50')?
msg97166 - (view) Author: anatoly techtonik (techtonik) Date: 2010-01-03 15:10
It is the same reason as for removing recommendation from docstring to generate timestamps in the format returned by time.ctime(). See issue #7582
msg99167 - (view) Author: anatoly techtonik (techtonik) Date: 2010-02-10 15:40
The reason is to provide a good usage example.
msg102046 - (view) Author: anatoly techtonik (techtonik) Date: 2010-03-31 23:38
depends on issue #7583
msg102154 - (view) Author: anatoly techtonik (techtonik) Date: 2010-04-02 10:49
Refreshed patches - feel free to apply in any order you want. Convenience link for reviews: http://codereview.appspot.com/809043/show
msg102160 - (view) Author: anatoly techtonik (techtonik) Date: 2010-04-02 11:41
These patches are incrementally add features. Feel free to apply one that suits most. Codereview provides more convenient way to review differences between these. attaching optional patch that removes recommendation to use ctime format for timestamps
msg102318 - (view) Author: R. David Murray (r.david.murray) * (Python committer) Date: 2010-04-04 03:36
Your last patch looks the best to me. I agree both that a tab should not be emitted if there is no date (which is what git, for example, does), and that ISO 8601 timestamps should be promoted as the preferred format. As you pointed out, issue 7583 needs to be resolved before this can be applied. In the meantime it would be nice to add an additional test for the no-tab-if-no-date case.
msg102323 - (view) Author: R. David Murray (r.david.murray) * (Python committer) Date: 2010-04-04 07:06
We could avoid the 7583 problem by making the doctests use NORMALIZE_WHITESPACE and moving the real *tests* into the unittests for the module. I think that would be a good thing to do anyway.
msg102530 - (view) Author: anatoly techtonik (techtonik) Date: 2010-04-07 10:14
Added unittest for tab with and without set filedate. Removed #7583 dependency with NORMALIZE_WHITESPACE.
msg102551 - (view) Author: R. David Murray (r.david.murray) * (Python committer) Date: 2010-04-07 17:53
Great, thanks. I'll check this in when the branch is unfrozen.
msg102958 - (view) Author: R. David Murray (r.david.murray) * (Python committer) Date: 2010-04-12 16:59
Applied to trunk in r8004 and py3k in r8006.
msg103011 - (view) Author: anatoly techtonik (techtonik) Date: 2010-04-13 05:20
r80004 and r80006 to be exact. Great! Thanks! =)
msg103041 - (view) Author: R. David Murray (r.david.murray) * (Python committer) Date: 2010-04-13 12:15
Yes, thanks for the typo correction.
msg105641 - (view) Author: anatoly techtonik (techtonik) Date: 2010-05-13 16:24
tag:difflib
History
Date User Action Args
2022-04-11 14:56:55 admin set github: 51834
2010-05-14 04:59:29 r.david.murray link issue4898 superseder
2010-05-13 16:24:26 techtonik set messages: +
2010-04-13 12:15:02 r.david.murray set messages: +
2010-04-13 05:20:20 techtonik set messages: +
2010-04-12 16:59:46 r.david.murray set status: open -> closedresolution: accepted -> fixedmessages: + stage: test needed -> resolved
2010-04-07 17:53:27 r.david.murray set dependencies: - Improve explanation of tab expansion in doctestsmessages: +
2010-04-07 10:14:38 techtonik set files: + issue7585.difflib-tab-unittest.diffmessages: +
2010-04-04 07:06:44 r.david.murray set messages: +
2010-04-04 03:36:57 r.david.murray set nosy: + r.david.murraymessages: + assignee: r.david.murrayresolution: acceptedstage: patch review -> test needed
2010-04-02 11:43:18 techtonik set files: + issue7585.difflib-tab-updoc-iso8601.diff
2010-04-02 11:41:24 techtonik set files: + issue7585.difflib-tab-update-docs.diffmessages: +
2010-04-02 11:35:26 techtonik set files: - issue7585.difflib-tab-update-docs.diff
2010-04-02 11🔞27 techtonik set files: + issue7585.difflib-tab-update-docs.diff
2010-04-02 10:49:11 techtonik set messages: +
2010-04-01 20:22:22 techtonik set files: + issue7585.difflib-tab-separator-no-trail.diff
2010-04-01 20:05:45 techtonik set files: + issue7585.difflib-tab-separator.diff
2010-04-01 14:57:16 r.david.murray set dependencies: + Improve explanation of tab expansion in docteststitle: [patch] difflib should separate filename from timestamp with tab -> difflib should separate filename from timestamp with tab
2010-03-31 23:38:02 techtonik set messages: +
2010-02-10 15:40:40 techtonik set messages: +
2010-01-03 15:10:26 techtonik set messages: +
2010-01-03 15:01:57 pitrou set priority: normalnosy: + tim.petersversions: - Python 2.6, Python 3.1stage: patch review
2010-01-03 15:00:31 pitrou set nosy: + pitroumessages: +
2009-12-30 00:57:28 techtonik set messages: +
2009-12-29 23:36:14 brian.curtin set messages: +
2009-12-29 10:28:51 techtonik set messages: +
2009-12-29 04:33:13 brian.curtin set files: + example.pymessages: +
2009-12-29 00:34:03 techtonik set messages: +
2009-12-28 17:38:55 brian.curtin set nosy: + brian.curtinmessages: +
2009-12-27 20:57:36 techtonik create