On Sun, 23 Jun 2013 21:59:37 +0300
Serhiy Storchaka <storch...@gmail.com> wrote:
> Currently %c formatting raises OverflowError if an argument is out of range.
> 
>  >>> '%c' % 1114112
> Traceback (most recent call last):
>    File "<stdin>", line 1, in <module>
> OverflowError: %c arg not in range(0x110000)
>  >>> '{:c}'.format(1114112)
> Traceback (most recent call last):
>    File "<stdin>", line 1, in <module>
> OverflowError: %c arg not in range(0x110000)
> 
> The same for PyUnicode_Format(), PyUnicode_FromFromat() and 
> PyUnicode_FromFromatV() in C API.
> 
> But chr() raises ValueError.
> 
>  >>> chr(1114112)
> Traceback (most recent call last):
>    File "<stdin>", line 1, in <module>
> ValueError: chr() arg not in range(0x110000)
> 
> And ValueError looks more suitable, because it is not really an overflow 
> (limitation of the C language, or a C type). Can we change an exception 
> type for %c formatting from OverflowError to ValueError?

Well, it overflows the limited range of the "unicode character" type
(which is virtual in both Python and C, but still conceptually exists).

The most annoying thing here is that OverflowError doesn't subclass
ValueError.

Regards

Antoine.


_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to