#24068: management commands' OutputWrapper adds newline wrapped inside style
--------------------------------------------+--------------------
Reporter: MarkusH | Owner: nobody
Type: Bug | Status: new
Component: Core (Management commands) | Version: master
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 1
Easy pickings: 1 | UI/UX: 0
--------------------------------------------+--------------------
According to the [https://docs.djangoproject.com/en/dev/howto/custom-
management-commands/#management-commands-output docs] the
`self.stdout.write()` adds a newline (or explicitly defined ending) add
the end of the message, if it's not already there. However, if the output
is wrapped in some kind of style the message, including the ending, is
wrapped.
Instead of
{{{
'\x1b[31;1mHello, world!\x1b[0m\n'
}}}
one gets
{{{
'\x1b[31;1mHello, world!\n\x1b[0m'
}}}
The issue came up while investigating
https://github.com/django/django/pull/3153#issuecomment-68471839
A potential patch would be:
{{{#!diff
diff --git a/django/core/management/base.py
b/django/core/management/base.py
index 869a11b..e29bb8a 100644
--- a/django/core/management/base.py
+++ b/django/core/management/base.py
@@ -107,11 +107,12 @@ class OutputWrapper(object):
return getattr(self._out, name)
def write(self, msg, style_func=None, ending=None):
+ style_func = style_func or self.style_func
ending = self.ending if ending is None else ending
+ msg = force_str(style_func(msg))
if ending and not msg.endswith(ending):
msg += ending
- style_func = style_func or self.style_func
- self._out.write(force_str(style_func(msg)))
+ self._out.write(msg)
class BaseCommand(object):
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/24068>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/050.9901d84ce1b643ba3de991b87dc4c984%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.