Opened 10 years ago
Last modified 10 years ago
#24068 closed Bug
management commands' OutputWrapper adds newline wrapped inside style — at Version 2
Reported by: | Markus Holtermann | Owned by: | Markus Holtermann |
---|---|---|---|
Component: | Core (Management commands) | Version: | dev |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | yes | Patch needs improvement: | no |
Easy pickings: | yes | UI/UX: | no |
Description (last modified by )
According to the 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:
-
django/core/management/base.py
diff --git a/django/core/management/base.py b/django/core/management/base.py index 869a11b..318740f 100644
a b class OutputWrapper(object): 107 107 return getattr(self._out, name) 108 108 109 109 def write(self, msg, style_func=None, ending=None): 110 ending = self.ending if ending is None else ending111 if ending and not msg.endswith(ending):112 msg += ending113 110 style_func = style_func or self.style_func 114 self._out.write(force_str(style_func(msg))) 111 ending = self.ending if ending is None else ending 112 if ending and msg.endswith(ending): 113 msg = msg[:-len(ending)] 114 msg = force_str(style_func(msg)) + ending 115 self._out.write(msg)
Change History (2)
comment:1 by , 10 years ago
Description: | modified (diff) |
---|---|
Needs tests: | set |
Owner: | changed from | to
Status: | new → assigned |
comment:2 by , 10 years ago
Description: | modified (diff) |
---|
Note:
See TracTickets
for help on using tickets.