-
-
Notifications
You must be signed in to change notification settings - Fork 270
Open
Description
When using colorama in a non-interactive terminal (e.g. stdout being piped to file) on Linux, colorama.init() is hooking into sys.stdout, resulting in occasional strange results.
Looking at the documentation, there are a few lines that state:
"Colorama makes this work on Windows, too, by wrapping stdout [...] On other platforms, Colorama does nothing."
Example colorama_test.py script:
import sys
import colorama
print(sys.stdout)
colorama.init()
print(sys.stdout)
If I run python colorama_test.py in a bash terminal, colorama makes no change to sys.stdout:
<open file '<stdout>', mode'w' at 0x7f9f178ab150>
<open file '<stdout>', mode'w' at 0x7f9f178ab150>
However, if I run python colorama_test.py > out.txt, sys.stdout is wrapped:
<open file '<stdout>', mode'w' at 0x7f75cabe1150>
<colorama.ansitowin32.StreamWrapper object at 0x7f75caaa0f10>
Should this be happening?
For completeness, the "occasional strange results" I see occur when writing to stdout via stdout.write; partial traceback is:
[...]
sys.stdout.write(struct.pack('i', value))
File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat/lib/python2.7/site-packages/colorama/ansitowin32.py", line 41, in write
self.__convertor.write(text)
File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat/lib/python2.7/site-packages/colorama/ansitowin32.py", line 162, in write
self.write_and_convert(text)
File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat/lib/python2.7/site-packages/colorama/ansitowin32.py", line 184, in write_and_convert
text = self.convert_osc(text)
File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat/lib/python2.7/site-packages/colorama/ansitowin32.py", line 256, in convert_osc
winterm.set_title(params[1])
AttributeError: 'NoneType' object has no attribute 'set_title'
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels