[issue3067] setlocale error message is confusing

2011-11-05 Thread Petri Lehtinen

Petri Lehtinen pe...@digip.org added the comment:

 If *locale* is specified, it may be a None, a string, or an iterable of two 
 strings, language code and encoding. String pairs are converted to a single 
 string using the locale aliasing engine.

What about the possible None value then? Do you think that mentions to
it be dropped?

I don't think so, because setlocale(locale.LC_ALL, None) is an
explicit way of saying Return me the current value, especially
because the function's name is SETlocale, which doesn't make it
explicit.

If None is not dropped, the , language code and encoding should
maybe be in parentheses insteead: to strings (language code and
encoding), or None...

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue3067
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue3067] setlocale error message is confusing

2011-11-05 Thread Terry J. Reedy

Terry J. Reedy tjre...@udel.edu added the comment:

Yes, parentheses would be better.

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue3067
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue3067] setlocale error message is confusing

2011-11-05 Thread Roundup Robot

Roundup Robot devn...@psf.upfronthosting.co.za added the comment:

New changeset 34c9465f5023 by Petri Lehtinen in branch '2.7':
Issue #3067: Enhance the documentation and docstring of locale.setlocale()
http://hg.python.org/cpython/rev/34c9465f5023

New changeset 98806dd03506 by Petri Lehtinen in branch '3.2':
Issue #3067: Enhance the documentation and docstring of locale.setlocale()
http://hg.python.org/cpython/rev/98806dd03506

New changeset 8a27920efffe by Petri Lehtinen in branch 'default':
Issue #3067: Enhance the documentation and docstring of locale.setlocale()
http://hg.python.org/cpython/rev/8a27920efffe

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue3067
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue3067] setlocale error message is confusing

2011-11-05 Thread Petri Lehtinen

Petri Lehtinen pe...@digip.org added the comment:

I decided to restructure the documentation of setlocale() a bit and I think 
it's better now overall. It includes Terry's suggestions.

I think this issue can now be closed. Thanks for the report and patches!

--
status: open - closed

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue3067
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue3067] setlocale error message is confusing

2011-11-04 Thread Roundup Robot

Roundup Robot devn...@psf.upfronthosting.co.za added the comment:

New changeset 931ae170e51c by Petri Lehtinen in branch '3.2':
Issue #3067: Fix the error raised by locale.setlocale()
http://hg.python.org/cpython/rev/931ae170e51c

New changeset d90d88380aca by Petri Lehtinen in branch 'default':
Issue #3067: Fix the error raised by locale.setlocale()
http://hg.python.org/cpython/rev/d90d88380aca

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue3067
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue3067] setlocale error message is confusing

2011-11-04 Thread Petri Lehtinen

Petri Lehtinen pe...@digip.org added the comment:

Terry: Do you still think there's need for a doc update?

--
resolution:  - fixed
status: open - pending

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue3067
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue3067] setlocale error message is confusing

2011-11-04 Thread Terry J. Reedy

Terry J. Reedy tjre...@udel.edu added the comment:

Yes. I think in locale.rst (assuming that is the name)
'''
exception locale.Error 
Exception raised when setlocale() fails.

locale.setlocale(category, locale=None) 
If *locale* is specified, it may be a string, a tuple of the form (language 
code, encoding), or None. If it is a tuple, it is converted to a string using 
the locale aliasing engine.
'''
should be changed to
'''
exception locale.Error 
Exception raised when the locale passed to setlocale() is not recognized.

locale.setlocale(category, locale=None) 
If *locale* is specified, it may be a None, a string, or an iterable of two 
strings, language code and encoding. String pairs are converted to a single 
string using the locale aliasing engine.
'''
where language code and encoding are gray shaded as they are now.

--
assignee:  - docs@python
components: +Documentation -Library (Lib), Unicode
nosy: +docs@python
status: pending - open

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue3067
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue3067] setlocale error message is confusing

2011-11-03 Thread Petri Lehtinen

Changes by Petri Lehtinen pe...@digip.org:


--
nosy: +petri.lehtinen

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue3067
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue3067] setlocale error message is confusing

2011-10-18 Thread Jyrki Pulliainen

Jyrki Pulliainen jy...@dywypi.org added the comment:

Added a patch that implements two things:

setlocale now raises locale.Error('Locale must be None, a string, or an 
iterable of two strings -- language code, encoding.'). I decided to remove the 
proposed .format(locale), as it wasa a bit confusing when passing a tuple 
containing invalid items.

I also added two tests, one for bytes and another for a tuple of two bytes.

--
keywords: +patch
nosy: +nailor
Added file: http://bugs.python.org/file23439/issue3067.patch

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue3067
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue3067] setlocale error message is confusing

2011-10-18 Thread Éric Araujo

Éric Araujo mer...@netwok.org added the comment:

Thanks for the patch.  Exception messages are considered implementation 
details, so I would not test them.  Testing that an exception is raised is good 
enough IMO.

--
nosy: +eric.araujo

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue3067
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue3067] setlocale error message is confusing

2011-10-18 Thread Jyrki Pulliainen

Jyrki Pulliainen jy...@dywypi.org added the comment:

I modified the patch not to contain the tests against exception messages

--
Added file: http://bugs.python.org/file23447/issue3067_v2.patch

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue3067
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue3067] setlocale error message is confusing

2011-10-18 Thread Martin v . Löwis

Martin v. Löwis mar...@v.loewis.de added the comment:

I think the reported exception type is incorrect. Given that the error message 
is 'Locale must be None, a string, or an iterable of two strings -- language 
code, encoding.', it very much sounds like a TypeError is being reported here.

So I think all that's needed is that the ValueError is converted into a 
TypeError.

Also notice that the tuple unpacking may actually succeed:

py locale.setlocale(locale.LC_ALL,uen)
Traceback (most recent call last):
  File stdin, line 1, in module
  File /usr/lib/python2.6/locale.py, line 513, in setlocale
return _setlocale(category, locale)
locale.Error: unsupported locale setting

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue3067
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue3067] setlocale error message is confusing

2011-10-18 Thread Jyrki Pulliainen

Jyrki Pulliainen jy...@dywypi.org added the comment:

Maybe we should return TypeError with the same message then? That would require 
some modification of documentation though, as it states: If the modification 
of the locale fails, the exception Error is raised..

I don't really understand the locale unpacking may actually succeed. Isn't 
that what supposed to happen, to my knowledge en is not a valid locale and 
that's a totally different issue? If I'm wrong, please correct, I've just 
started wandering in to Python Core development :)

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue3067
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue3067] setlocale error message is confusing

2011-10-18 Thread Martin v . Löwis

Martin v. Löwis mar...@v.loewis.de added the comment:

 Maybe we should return TypeError with the same message then? That
 would require some modification of documentation though, as it
 states: If the modification of the locale fails, the exception Error
 is raised..

No, any operation can report TypeError and ValueError without explicit
mentioning in the documentation. Saying that the parameters should be
this and that implies that if they are different, you get a TypeError
or ValueError.

 I don't really understand the locale unpacking may actually
 succeed. Isn't that what supposed to happen, to my knowledge en is
 not a valid locale and that's a totally different issue?

See my example again:

py locale.setlocale(locale.LC_ALL,uen)
Traceback (most recent call last):
  File stdin, line 1, in module
  File /usr/lib/python2.6/locale.py, line 513, in setlocale
return _setlocale(category, locale)
locale.Error: unsupported locale setting
py locale.setlocale(locale.LC_ALL,ueng)
Traceback (most recent call last):
  File stdin, line 1, in module
  File /usr/lib/python2.6/locale.py, line 512, in setlocale
locale = normalize(_build_localename(locale))
  File /usr/lib/python2.6/locale.py, line 420, in _build_localename
language, encoding = localetuple
ValueError: too many values to unpack

So for ueng you get the ValueError. For uen, you get past that
point, and then get a locale.Error. These are both Unicode strings,
but the outcome is quite different (and still would be different
under your patch).

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue3067
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue3067] setlocale error message is confusing

2011-10-18 Thread Jyrki Pulliainen

Jyrki Pulliainen jy...@dywypi.org added the comment:

Thanks for clarification! I see the problem now. So if I get this correctly we 
should change the _build_localename to raise TypeError? If the given locale is 
in wrong format, we'll get TypeError, but if it's valid type but otherwise 
invalid locale (like 'en'), we'll get ValueError (or more specifically 
locale.Error).

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue3067
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue3067] setlocale error message is confusing

2011-10-18 Thread Martin v . Löwis

Martin v. Löwis mar...@v.loewis.de added the comment:

 Thanks for clarification! I see the problem now. So if I get this
 correctly we should change the _build_localename to raise TypeError?

Yes, that's what I'm proposing.

 If the given locale is in wrong format, we'll get TypeError, but if
 it's valid type but otherwise invalid locale (like 'en'), we'll get
 ValueError (or more specifically locale.Error).

Ideally, yes. Notice that it will be difficult to produce a TypeError
for uen, unless you explicitly test for Unicode objects.

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue3067
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue3067] setlocale error message is confusing

2011-10-18 Thread Jyrki Pulliainen

Jyrki Pulliainen jy...@dywypi.org added the comment:

Uploaded a new patch that raises TypeError

--
Added file: http://bugs.python.org/file23452/issue3067_v3.patch

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue3067
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue3067] setlocale error message is confusing

2011-06-20 Thread vincent.chute

vincent.chute vincent.ch...@onelan.co.uk added the comment:

Since the module predates unicode strings (it is in 1.5) and since the locale 
string is passed to a C function, 'string' in the doc can just as well be taken 
to mean ascii byte string only, as the code requires.

My only comment is that generally it doesn't seem reasonable to me that 
developer should need to investigate the history and implementation of a 
function in order to understand the documentation correctly.

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue3067
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue3067] setlocale error message is confusing

2011-06-20 Thread STINNER Victor

STINNER Victor victor.stin...@haypocalc.com added the comment:

 On Py3, locale.setlocale() should allow only unicode strings
 and reject byte strings.

I agree and it is the current behaviour (of Python 3.3). I don't see any use 
case of a byte strings in locale.setlocale() with Python 3.3, so I remove 
Python 3 from the versions of this issue.

--
versions:  -Python 3.2, Python 3.3

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue3067
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue3067] setlocale error message is confusing

2011-06-20 Thread Roundup Robot

Roundup Robot devnull@devnull added the comment:

New changeset d370d609d09b by Victor Stinner in branch '2.7':
Close #3067: locale.setlocale() accepts a Unicode locale.
http://hg.python.org/cpython/rev/d370d609d09b

--
nosy: +python-dev
resolution:  - fixed
stage: test needed - committed/rejected
status: open - closed

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue3067
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue3067] setlocale error message is confusing

2011-06-20 Thread STINNER Victor

STINNER Victor victor.stin...@haypocalc.com added the comment:

I fixed locale.setlocale() of Python 2.7 to accept Unicode string because it 
helps porting to Python 3...

But I think that the commit is just useless because we will have to wait until 
Python 2.7.3 is released, and if you want to support older Python versions, we 
will have to encode the locale explicitly to ASCII.

Anyway, you should move to Python 3 (3.2 or later if possible) if you want a 
better Unicode support.

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue3067
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue3067] setlocale error message is confusing

2011-06-20 Thread Terry J. Reedy

Terry J. Reedy tjre...@udel.edu added the comment:

Victor, the issue for 3.x, which remains, is to improve the error message. I 
also suggested a doc change, though I would like Mark or Martin's comments 
before I would make it.

But I think that the commit is just useless because we will have to wait until 
Python 2.7.3 is released, and if you want to support older Python versions, we 
will have to encode the locale explicitly to ASCII.

Exactly. 'Older versions' includes older versions of 2.7. This is why I 
suggested that making the change to 2.7 would be a feature addition, which is 
not permitted for the very reason you give. I think the commit should be 
reverted.

Certainly, when a another developer says This patch should be rejected and not 
committed' after careful review, you should discuss, possibly on pydev, before 
committing.

--
resolution: fixed - 
status: closed - open
versions: +Python 3.2, Python 3.3

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue3067
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue3067] setlocale error message is confusing

2011-06-20 Thread Roundup Robot

Roundup Robot devnull@devnull added the comment:

New changeset e72a2a60316f by Victor Stinner in branch '2.7':
Revert d370d609d09b as requested by Terry Jan Reedy:
http://hg.python.org/cpython/rev/e72a2a60316f

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue3067
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue3067] setlocale error message is confusing

2011-06-19 Thread STINNER Victor

Changes by STINNER Victor victor.stin...@haypocalc.com:


--
nosy: +haypo

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue3067
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue3067] setlocale error message is confusing

2011-06-18 Thread Terry J. Reedy

Terry J. Reedy tjre...@udel.edu added the comment:

After more thought and investigation, I have changed my opinions on this issue.


Allowing unicode string for locale in 2.7:
Since the module predates unicode strings (it is in 1.5) and since the locale 
string is passed to a C function, 'string' in the doc can just as well be taken 
to mean ascii byte string only, as the code requires. As far as I know, unicode 
is never needed. Allowing such could be considered a feature addition, which is 
not allowed for 2.7. So I would reject the OP's request (and have hence changed 
the title).

Expected failure cases could be added to test_locale.py.


Options for locale name:
As I remember, multiple assignments in 1.5, as in

def _build_localename(localetuple):
language, encoding = localetuple

required a tuple on the right and was called 'tuple unpacking'.
Now, any iterable producing 2 items works; Rather than change to code to check 
that 'localetuple' really is a tuple (which could break code and the principle 
of duck-typing), I think the doc should be updated to

If locale is specified, it may be a None, a string, or an iterable producing 
two strings, language code and encoding.

This is not a feature addition but a recognition of a new feature added 
versions ago. The parameter name in the private function should then be 
shortened to just 'locale'.

Test cases with non-tuples could be added if not present now.


Exception message:
The current message arises from setlocale assuming that a 'locale' that is 
neither None or a string is a valid iterable for a call to _build_localename. A 
strings of the wrong type produces too many items and hence the obscure message.

Python is known to be inconsistent in its usage of ValueError versus TypeError 
for builtin function args. Guido has said to leave inconsistencies rather than 
break code. So I retract the ValueError to TypeError suggestion.

The accompanying messages, however, can be improved. The lines above that fails 
could be wrapped with
try:
language, encoding = locale
except ValueError:
raise ValueError(Locale must be None, a string, or an iterable of two 
strings -- language code, encoding -- not {}.format(locale))

The scope of the wrapper could be extended to the entire function so that 
failure of
return language + '.' + encoding
would also be caught. Failure would happen if locale produced 2 non-strings 
items, so that the double assignment 'worked', but the string concatenation 
failed.

A complication: the doc says
exception locale.Error 
Exception raised when setlocale() fails.

locale.setlocale(category, locale=None) 
...If the modification of the locale fails, the exception Error is raised.

So it seems that either a) the wrapper above should raise Error instead, or the 
doc could more clearly say Exception raised when the locale passed to 
setlocale is not recognized.

--
nosy: +lemburg, loewis
title: setlocale fails with unicode strings on Py2 and with byte strings on Py3 
- setlocale error message is confusing
versions: +Python 3.3 -Python 3.1

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue3067
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com