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.
Created on 2010年10月13日 19:53 by belopolsky, last changed 2022年04月11日 14:57 by admin. This issue is now closed.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| unnamed | Retro, 2010年12月01日 21:21 | |||
| Messages (19) | |||
|---|---|---|---|
| msg118570 - (view) | Author: Alexander Belopolsky (belopolsky) * (Python committer) | Date: 2010年10月13日 19:53 | |
>>> import calendar >>> calendar.TextCalendar().formatmonthname(2010,10,10) 'October 2010' >>> calendar.LocaleTextCalendar(locale='fr_FR').formatmonthname(2010,10,10) 'octobre 2010' >>> calendar.TextCalendar().formatmonthname(2010,10,10) 'octobre 2010' |
|||
| msg119153 - (view) | Author: Boštjan Mejak (Retro) | Date: 2010年10月19日 18:29 | |
It seems that calendar.LocaleTextCalendar() changes the locale for the current interpreter session to the one you pass to argument 'locale'. This is a bug to be fixed. |
|||
| msg119155 - (view) | Author: Éric Araujo (eric.araujo) * (Python committer) | Date: 2010年10月19日 18:36 | |
Indeed. Would you like to try to make a patch for Python 3.2? Help is here: http://www.python.org/dev/ (especially http://www.python.org/dev/patches/ ) and here: http://docs.pythonsprints.com/core_development/beginners.html |
|||
| msg119157 - (view) | Author: Boštjan Mejak (Retro) | Date: 2010年10月19日 18:50 | |
> > Would you like to try to make a patch for Python 3.2? I'm not that geeky. :) On Tue, Oct 19, 2010 at 8:36 PM, Éric Araujo <report@bugs.python.org> wrote: > > Éric Araujo <merwok@netwok.org> added the comment: > > Indeed. Would you like to try to make a patch for Python 3.2? Help is > here: http://www.python.org/dev/ (especially > http://www.python.org/dev/patches/ ) and here: > http://docs.pythonsprints.com/core_development/beginners.html > > ---------- > > _______________________________________ > Python tracker <report@bugs.python.org> > <http://bugs.python.org/issue10092> > _______________________________________ > |
|||
| msg119158 - (view) | Author: Georg Brandl (georg.brandl) * (Python committer) | Date: 2010年10月19日 18:55 | |
Fixed in r85728. The problem was that unlike other system calls, setlocale() doesn't return the old setting but the new setting. The context manager that resets the locale therefore didn't work as intended. |
|||
| msg119189 - (view) | Author: Stephen Hansen (ixokai) (Python triager) | Date: 2010年10月20日 06:15 | |
I can't be entirely sure, because a) I have never even glanced at the calendar module, and b) my locale-fu is very weak, but my buildbot has consistently failed on this test since this commit: ====================================================================== ERROR: test_localecalendars (test.test_calendar.CalendarTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/pythonbuildbot/buildarea/3.x.hansen-osx-x86/build/Lib/test/test_calendar.py", line 264, in test_localecalendars locale=def_locale).formatmonthname(2010, 10, 10) File "/Users/pythonbuildbot/buildarea/3.x.hansen-osx-x86/build/Lib/calendar.py", line 520, in formatmonthname with different_locale(self.locale): File "/Users/pythonbuildbot/buildarea/3.x.hansen-osx-x86/build/Lib/calendar.py", line 490, in __enter__ _locale.setlocale(_locale.LC_TIME, self.locale) File "/Users/pythonbuildbot/buildarea/3.x.hansen-osx-x86/build/Lib/locale.py", line 538, in setlocale return _setlocale(category, locale) locale.Error: unsupported locale setting I will look into it in more detail tomorrow to try to provide more meaningful feedback, but I think this "fix" has introduced a problem. If someone sees what before I have time to dig into this unfamiliar territory, yay. :) |
|||
| msg119191 - (view) | Author: Georg Brandl (georg.brandl) * (Python committer) | Date: 2010年10月20日 06:53 | |
Let's see if r85735 fixed this. |
|||
| msg119194 - (view) | Author: Boštjan Mejak (Retro) | Date: 2010年10月20日 08:52 | |
>>> import calendar >>> calendar.LocaleTextCalendar(locale='fr_FR').formatmonthname(2010,10,10) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Python27\lib\calendar.py", line 522, in formatmonthname with TimeEncoding(self.locale) as encoding: File "C:\Python27\lib\calendar.py", line 489, in __enter__ self.oldlocale = _locale.setlocale(_locale.LC_TIME, self.locale) File "C:\Python27\lib\locale.py", line 531, in setlocale return _setlocale(category, locale) locale.Error: unsupported locale setting Is it just my machine or is this a common thing on most machines? If I do a test and I try to set a locale with the setlocale() method, I get this "locale.Error: unsupported locale setting". So I gather that the method setlocale() is broken and we should fix it before fixing the Locale{Text,HTML}Calendar ones. The way setlocale() is implemented, is this: def setlocale(category, value=None): """ setlocale(integer,string=None) -> string. Activates/queries locale processing. """ if value not in (None, '', 'C'): raise Error, '_locale emulation only supports "C" locale' return 'C' Please note that the online documentation documents its API like this: locale.setlocale(category[, locale]) See http://docs.python.org/library/locale.html#locale.setlocale So you can see that the implementation differs from the documentation in that it documents the 2nd argument as 'locale' where in the implementation there is 'value'. If that's a bug, I don't know. Anyway, please fix the implementation. I found out some very interesting thing... Note the line "if value not in (None, '', 'C')" in the implementation. This is the faulty thing in the function because NoneType is not iterable. Test it for yourself in the interpreter: >>> value = None >>> value not in None Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: argument of type 'NoneType' is not iterable So this setlocale() always raises an error. Please fix this. Of course, this is valid: >>> value = None >>> value is not None False No error here. So try to combine this into a workable patch. Thanks. |
|||
| msg119195 - (view) | Author: Georg Brandl (georg.brandl) * (Python committer) | Date: 2010年10月20日 09:18 | |
Bostjan, both your points are invalid. First, the locale settings that a machine supports vary greatly. "fr_FR" doesn't need to be a valid setting on your machine. Second, "val in None" will always fail. "val in (None, ...)" will succeed, since you're testing membership in the given tuple that includes None. |
|||
| msg119197 - (view) | Author: Tim Golden (tim.golden) * (Python committer) | Date: 2010年10月20日 09:37 | |
Boštjan, the code segment you quote is the *fallback* if the C module hasn't been built for some reason. The module simply calls through to the underlying C Library. I notice you're running on Windows, so this is a useful MS page: http://msdn.microsoft.com/en-us/library/x99tb11d%28VS.71%29.aspx and you can see there that a call of setlocale (LC_ALL, "English") is valid (of "French" if you prefer): Python 3.1.2 (r312:79149, Mar 21 2010, 00:41:52) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import locale >>> locale.setlocale (locale.LC_ALL, "French") 'French_France.1252' >>> |
|||
| msg119225 - (view) | Author: Boštjan Mejak (Retro) | Date: 2010年10月20日 17:04 | |
Thank you so much for your answer. The locale.setlocale(category=locale.LC_NUMERIC, locale="Slovenian") works like a charm in my application. Now the 'n' format specifier works as I want. But tell me whether the 'n' format specifier can be forced to round the float to just one decimal place. I know that the 'f' format specifier does that by specifying ".1f", but 'f' is not locale-aware. I have set the 'n' format specifier in my application like ".3n", which is okay if the returned number is two integers and one decimal, but is not okay if the returned number is one integer and two decimals, because I want just one decimal, always. How can I make that by using the 'n' format specifier? On Wed, Oct 20, 2010 at 11:37 AM, Tim Golden <report@bugs.python.org> wrote: > > Tim Golden <mail@timgolden.me.uk> added the comment: > > Boštjan, the code segment you quote is the *fallback* if the > C module hasn't been built for some reason. The module simply > calls through to the underlying C Library. I notice you're > running on Windows, so this is a useful MS page: > > http://msdn.microsoft.com/en-us/library/x99tb11d%28VS.71%29.aspx > > and you can see there that a call of setlocale (LC_ALL, "English") > is valid (of "French" if you prefer): > > Python 3.1.2 (r312:79149, Mar 21 2010, 00:41:52) [MSC v.1500 32 bit > (Intel)] on win32 > Type "help", "copyright", "credits" or "license" for more information. > >>> import locale > >>> locale.setlocale (locale.LC_ALL, "French") > 'French_France.1252' > >>> > > ---------- > nosy: +tim.golden > > _______________________________________ > Python tracker <report@bugs.python.org> > <http://bugs.python.org/issue10092> > _______________________________________ > |
|||
| msg119257 - (view) | Author: Boštjan Mejak (Retro) | Date: 2010年10月21日 01:43 | |
Please respond... On Wed, Oct 20, 2010 at 7:05 PM, Boštjan Mejak <report@bugs.python.org>wrote: > > BoÅ¡tjan Mejak <bostjan.mejak@gmail.com> added the comment: > > Thank you so much for your answer. The > locale.setlocale(category=locale.LC_NUMERIC, > locale="Slovenian") works like a charm in my application. Now the 'n' > format specifier works as I want. But tell me whether the 'n' format > specifier can be forced to round the float to just one decimal place. I > know > that the 'f' format specifier does that by specifying ".1f", but 'f' is not > locale-aware. I have set the 'n' format specifier in my application like > ".3n", which is okay if the returned number is two integers and one > decimal, > but is not okay if the returned number is one integer and two decimals, > because I want just one decimal, always. How can I make that by using the > 'n' format specifier? > > On Wed, Oct 20, 2010 at 11:37 AM, Tim Golden <report@bugs.python.org> > wrote: > > > > > Tim Golden <mail@timgolden.me.uk> added the comment: > > > > BoÅ¡tjan, the code segment you quote is the *fallback* if the > > C module hasn't been built for some reason. The module simply > > calls through to the underlying C Library. I notice you're > > running on Windows, so this is a useful MS page: > > > > http://msdn.microsoft.com/en-us/library/x99tb11d%28VS.71%29.aspx > > > > and you can see there that a call of setlocale (LC_ALL, "English") > > is valid (of "French" if you prefer): > > > > Python 3.1.2 (r312:79149, Mar 21 2010, 00:41:52) [MSC v.1500 32 bit > > (Intel)] on win32 > > Type "help", "copyright", "credits" or "license" for more information. > > >>> import locale > > >>> locale.setlocale (locale.LC_ALL, "French") > > 'French_France.1252' > > >>> > > > > ---------- > > nosy: +tim.golden > > > > _______________________________________ > > Python tracker <report@bugs.python.org> > > <http://bugs.python.org/issue10092> > > _______________________________________ > > > > ---------- > Added file: http://bugs.python.org/file19306/unnamed > > _______________________________________ > Python tracker <report@bugs.python.org> > <http://bugs.python.org/issue10092> > _______________________________________ > |
|||
| msg119259 - (view) | Author: R. David Murray (r.david.murray) * (Python committer) | Date: 2010年10月21日 02:43 | |
The bug tracker is not an appropriate place to get help on using Python. Please ask your question on a forum where you are more likely to get help, such as python-list. |
|||
| msg119268 - (view) | Author: Tim Golden (tim.golden) * (Python committer) | Date: 2010年10月21日 07:46 | |
I'm afraid this falls outside my particular area of knowledge, and also outside the remit of the bug tracker. Perhaps you could post to python-list to see if anyone there can help? |
|||
| msg123013 - (view) | Author: Boštjan Mejak (Retro) | Date: 2010年12月01日 21:06 | |
>>> calendar.LocaleTextCalendar(locale='fr_FR').formatmonthname(2010,10,10) is not valid because 'fr_FR' is not a valid value for the 'locale' argument What is valid is this: >>> calendar.LocaleTextCalendar(locale='French').formatmonthname(2010,10,10) |
|||
| msg123014 - (view) | Author: Alexander Belopolsky (belopolsky) * (Python committer) | Date: 2010年12月01日 21:16 | |
Boštjan, Please don't add comments to closed issues. If you believe there is a remaining issue, please file a new report. Issue numbers are in good supply! This issue was fixed in r85728. It is best when this information is the last message on a closed issue. |
|||
| msg123015 - (view) | Author: Boštjan Mejak (Retro) | Date: 2010年12月01日 21:21 | |
Yes, I know this issue is closed but I wonder how could your Python interpreter not error on >>> calendar.LocaleTextCalendar(locale='fr_FR').formatmonthname(2010,10,10) Please retry executing the above line of code in Python 2.7.1 interpreter and tell me if you get an error. I get this: >>> import calendar >>> calendar.LocaleTextCalendar(locale='fr_FR').formatmonthname(2010,10,10) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Python27\lib\calendar.py", line 522, in formatmonthname with TimeEncoding(self.locale) as encoding: File "C:\Python27\lib\calendar.py", line 490, in __enter__ _locale.setlocale(_locale.LC_TIME, self.locale) File "C:\Python27\lib\locale.py", line 531, in setlocale return _setlocale(category, locale) locale.Error: unsupported locale setting |
|||
| msg123018 - (view) | Author: Stephen Hansen (ixokai) (Python triager) | Date: 2010年12月01日 21:39 | |
On windows, "France" may work and "fr_FR" may not; yet on OSX its exactly the opposite. Its not consistant across platforms. |
|||
| msg123019 - (view) | Author: R. David Murray (r.david.murray) * (Python committer) | Date: 2010年12月01日 21:44 | |
Boštjan, please see issue 10466 for further information about your question on fr_FR vs French. Windows, as usual, does not follow the standards. |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:57:07 | admin | set | github: 54301 |
| 2010年12月01日 21:44:03 | r.david.murray | set | messages: + msg123019 |
| 2010年12月01日 21:39:50 | ixokai | set | nosy:
twouters, georg.brandl, ixokai, christian.heimes, tim.golden, eric.araujo, Retro, r.david.murray, JJeffries messages: + msg123018 |
| 2010年12月01日 21:27:50 | belopolsky | set | nosy:
- belopolsky |
| 2010年12月01日 21:21:32 | Retro | set | files:
+ unnamed messages: + msg123015 |
| 2010年12月01日 21:16:10 | belopolsky | set | messages: + msg123014 |
| 2010年12月01日 21:06:49 | Retro | set | messages: + msg123013 |
| 2010年12月01日 21:02:41 | Retro | set | files: - unnamed |
| 2010年12月01日 21:02:36 | Retro | set | files: - unnamed |
| 2010年10月21日 07:46:52 | tim.golden | set | messages: + msg119268 |
| 2010年10月21日 02:43:49 | r.david.murray | set | nosy:
+ r.david.murray messages: + msg119259 |
| 2010年10月21日 01:43:27 | Retro | set | files:
+ unnamed messages: + msg119257 |
| 2010年10月20日 17:04:58 | Retro | set | files:
+ unnamed messages: + msg119225 |
| 2010年10月20日 09:37:57 | tim.golden | set | nosy:
+ tim.golden messages: + msg119197 |
| 2010年10月20日 09:18:46 | georg.brandl | set | messages: + msg119195 |
| 2010年10月20日 08:52:51 | Retro | set | messages: + msg119194 |
| 2010年10月20日 06:53:15 | georg.brandl | set | files: - unnamed |
| 2010年10月20日 06:53:10 | georg.brandl | set | messages: + msg119191 |
| 2010年10月20日 06:15:47 | ixokai | set | nosy:
+ ixokai messages: + msg119189 |
| 2010年10月19日 18:55:24 | georg.brandl | set | status: open -> closed resolution: fixed messages: + msg119158 |
| 2010年10月19日 18:50:21 | Retro | set | files:
+ unnamed messages: + msg119157 |
| 2010年10月19日 18:36:30 | eric.araujo | set | messages: + msg119155 |
| 2010年10月19日 18:29:03 | Retro | set | nosy:
+ Retro messages: + msg119153 |
| 2010年10月19日 16:58:52 | eric.araujo | set | nosy:
+ eric.araujo |
| 2010年10月17日 13:54:46 | JJeffries | set | nosy:
+ JJeffries |
| 2010年10月13日 20:04:32 | belopolsky | set | nosy:
+ twouters |
| 2010年10月13日 20:03:01 | belopolsky | set | nosy:
+ georg.brandl, christian.heimes |
| 2010年10月13日 19:53:35 | belopolsky | create | |