New issue 2699: warnings.warn fails with non-ascii unicode strings on PyPy2
5.9.0
https://bitbucket.org/pypy/pypy/issues/2699/warningswarn-fails-with-non-ascii-unicode
Bruno Oliveira:
Hi,
`warnings.warn` in recent versions breaks when passed `non-ascii` unicode on
Windows:
```python
# -*- coding: utf8 -*-
import warnings
warnings.warn(u"测试")
```
Running this produces this output:
```
C:\pytest\.pypy\bin\pypy.exe C:/pytest/.tmp/test_pypy_unicode.py
Traceback (most recent call last):
File "C:/pytest/.tmp/test_pypy_unicode.py", line 3, in <module>
warnings.warn(u"测试")
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1:
ordinal not in range(128)
```
I'm not sure in which version this started to break, but we detected this on
the pytest's test suite when a test started to break all of sudden. [Here's a
link](https://ci.appveyor.com/project/pytestbot/pytest/build/1.0.3355/job/1sfgibpuk38ol3i4)
to one of the AppVeyor failures.
Interestingly, running the same code under CPython does not produce **any**
output and returns zero to the OS.
But if we change the string to something `ascii` compatible, than both CPython
and PyPy print the correct output:
```
pypy .tmp\test_pypy_unicode.py
.tmp\test_pypy_unicode.py:4: UserWarning: foo
warnings.warn('foo')
```
```
python.exe .tmp\test_pypy_unicode.py
.tmp\test_pypy_unicode.py:4: UserWarning: foo
warnings.warn('foo')
```
**PyPy2 version info**
```
pypy --version
Python 2.7.13 (c2437cf9b7f1, Sep 24 2017, 17:23:53)
[PyPy 5.9.0 with MSC v.1500 32 bit]
```
Thanks for all the hard work!
_______________________________________________
pypy-issue mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-issue