Commit a434e7ef by Brandon Chinn Committed by GitHub

Fix IO under Python 3.6 with locale not set (#4038)

Resolves: #3412
parent 2f4841da
...@@ -21,6 +21,7 @@ from cleo.io.io import IO ...@@ -21,6 +21,7 @@ from cleo.io.io import IO
from cleo.io.outputs.output import Output from cleo.io.outputs.output import Output
from poetry.__version__ import __version__ from poetry.__version__ import __version__
from poetry.core.utils._compat import PY37
from .command_loader import CommandLoader from .command_loader import CommandLoader
from .commands.command import Command from .commands.command import Command
...@@ -143,6 +144,20 @@ class Application(BaseApplication): ...@@ -143,6 +144,20 @@ class Application(BaseApplication):
) -> IO: ) -> IO:
io = super().create_io(input, output, error_output) io = super().create_io(input, output, error_output)
# Remove when support for Python 3.6 is removed
# https://github.com/python-poetry/poetry/issues/3412
if (
not PY37
and hasattr(io.output, "_stream")
and hasattr(io.output._stream, "buffer")
and io.output._stream.encoding != "utf-8"
):
import io as io_
io.output._stream = io_.TextIOWrapper(
io.output._stream.buffer, encoding="utf-8"
)
# Set our own CLI styles # Set our own CLI styles
formatter = io.output.formatter formatter = io.output.formatter
formatter.set_style("c1", Style("cyan")) formatter.set_style("c1", Style("cyan"))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment