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: gettext breaks on plural-forms header
Type: behavior Stage: resolved
Components: Library (Lib) Versions: Python 3.3, Python 3.4, Python 2.7
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: loewis Nosy List: Arfrever, akuchling, djc, dmalcolm, dsegan, eric.araujo, jwilk, loewis, orsenthil, potorange, ricky, syt
Priority: high Keywords: patch

Created on 2006-04-24 13:09 by syt, last changed 2022-04-11 14:56 by admin. This issue is now closed.

File name Uploaded Description Edit syt, 2006-04-24 13:11
plurals.diff loewis, 2006-07-17 07:45 review
gettext.diff BreamoreBoy, 2010-07-15 21:50 Fix AttributeError in Plural-Forms parsing
Messages (15)
msg50103 - (view) Author: Thenault Sylvain (syt) Date: 2006-04-24 13:09
Here is a patch for the bug described in

It follows the latest Martin followup as I understand
it. I'm not sure if multi-lines field handling should
be totally discarded while reading metadata headers (as
implemented), or if it should only be discarded for the
content-type and plural-forms header. If one think this
patch isn't correct, please comment so I can fix it.

Notice that if the second solution was intended, lines
such as 

"#-#-#-#-#  fr.po  #-#-#-#-#\n"

inserted by msgcat/msgmerge will have to be treated
differently (i.e. multi-lines support but skip lines
begining with a #).
msg50104 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2006-07-17 07:45
Logged In: YES 

The patch is wrong; it breaks the existing test case
WeirdMetadataTest. I think the "just a single line" rule
should be restricted to Plural-Forms; not sure whether it
should apply to content-type also (but why not).

I'll attach another patch that adds a test case.
msg50105 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2006-08-25 00:13
Logged In: YES 

Couldn't get to it before 2.5; forwarding to 2.4.4/2.5.1
msg110389 - (view) Author: Mark Lawrence (BreamoreBoy) * Date: 2010-07-15 21:50
Attached patch is my take on the fix to this, it's a two line change to for 2.7.  If the change is accepted I'll provide another patch for py3k.  Nosy list updated while I'm at it.
msg110396 - (view) Author: Mark Lawrence (BreamoreBoy) * Date: 2010-07-15 22:53
Sorry, forgot to say that the patched code passed all tests in the patched unit test file.
msg110413 - (view) Author: Senthil Kumaran (orsenthil) * (Python committer) Date: 2010-07-16 05:45
Minor change request. 

+class Bug1448060(GettextBaseTest):

Can you name the test class something more meaningful like PluralFormsTest or something like that. It is helpful when looking at it later. (Btw, this can be done by the committer during checkin too)
msg110429 - (view) Author: Mark Lawrence (BreamoreBoy) * Date: 2010-07-16 12:15
Point taken I'll settle for PluralFormsTest unless there's a better idea.  Assuming patch acceptance could a committer do this please?
msg116125 - (view) Author: Éric Araujo (eric.araujo) * (Python committer) Date: 2010-09-11 22:23
Could you follow the guidelines at to create patches?  Thanks in advance.

I wonder why you call tearDown from setUp.  Doesn’t unittest do that for you when there is a failure in setUp?  Also, you could use a with statement instead of try/finally.
msg139239 - (view) Author: Dirkjan Ochtman (djc) * (Python committer) Date: 2011-06-27 07:29
This looks similar to Is it the same thing, or should I file a separate bug for it? (Sorry, I don't intend to hijack this bug, but I don't know much about gettext and the patch here looks somewhat similar to the patch proposed there.)
msg139244 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2011-06-27 08:12
It's difficult to tell whether it's the same thing. Is the po file in question available readily for inspection?
msg139246 - (view) Author: Dirkjan Ochtman (djc) * (Python committer) Date: 2011-06-27 08:31
Looks like this was the problem:;a=commitdiff;h=cb56316cf3702f03b05e30f406ff3028e45f7bfb.

E.g., the empty Plural-Forms header is throwing off the python gettext parser.
msg139326 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2011-06-27 21:05
Ok. This is a different issue, then.
msg139348 - (view) Author: Dirkjan Ochtman (djc) * (Python committer) Date: 2011-06-28 07:38
Okay, I've filed issue12425.
msg240633 - (view) Author: A.M. Kuchling (akuchling) * (Python committer) Date: 2015-04-13 15:55
I think that #17898 is in fact a duplicate of this bug, due to old values of k and v confusing things.  Mark's patch looks correct to me, but the patch in #17898 also adds a test.  If that patch gets reviewed, I'll apply it to 3.4/3.5, and possibly to 2.7.
msg240895 - (view) Author: A.M. Kuchling (akuchling) * (Python committer) Date: 2015-04-14 14:39
#17898 has been closed with basically the same fix as Mark's patch, so I'll close this issue.
Date User Action Args
2022-04-11 14:56:17adminsetgithub: 43270
2015-04-14 14:39:27akuchlingsetstatus: open -> closed
resolution: fixed
messages: + msg240895

stage: patch review -> resolved
2015-04-13 15:55:44akuchlingsetnosy: + akuchling
messages: + msg240633
2013-06-14 20:24:43jwilksetnosy: + jwilk
2013-05-10 19:07:43terry.reedysetversions: + Python 3.4, - Python 3.2
2012-01-13 17:20:12eric.araujosetdependencies: - Add tests for some scripts in Tools/scripts
2012-01-13 17:19:58eric.araujosetdependencies: + Add tests for some scripts in Tools/scripts
2011-06-28 07:38:54djcsetmessages: + msg139348
2011-06-27 21:05:51loewissetmessages: + msg139326
2011-06-27 09:35:49Arfreversetnosy: + Arfrever
2011-06-27 08:31:59djcsetmessages: + msg139246
2011-06-27 08:12:23loewissetmessages: + msg139244
2011-06-27 07:29:51djcsetnosy: + djc
messages: + msg139239
2011-06-26 18:58:37terry.reedysetversions: + Python 3.3, - Python 3.1
2011-05-14 01:17:51rickysetnosy: + ricky
2010-11-21 19:31:34eric.araujosetnosy: - BreamoreBoy
resolution: accepted -> (no value)
2010-09-11 22:23:38eric.araujosetnosy: + eric.araujo
messages: + msg116125
2010-07-16 12:15:22BreamoreBoysetmessages: + msg110429
2010-07-16 05:45:52orsenthilsetnosy: + orsenthil
messages: + msg110413
2010-07-15 22:53:26BreamoreBoysetmessages: + msg110396
2010-07-15 21:50:23BreamoreBoysetfiles: + gettext.diff
versions: - Python 2.6
nosy: + dsegan, potorange, BreamoreBoy, - eric.araujo

messages: + msg110389
2010-07-15 16:24:52eric.araujosetnosy: + eric.araujo
2010-07-15 16:24:16eric.araujosettitle: patch fixing #1448060 ( bug) -> gettext breaks on plural-forms header
resolution: accepted
versions: + Python 2.7, Python 3.2
2010-07-15 16:13:59eric.araujolinkissue1448060 superseder
2010-07-14 13:35:19BreamoreBoyunlinkissue1448060 dependencies
2010-01-29 19:29:04dmalcolmsetnosy: + dmalcolm
2009-03-21 02:21:01ajaksu2setstage: patch review
type: behavior
versions: + Python 2.6, Python 3.1
2009-03-21 02:20:00ajaksu2linkissue1448060 dependencies
2006-04-24 13:09:38sytcreate