Skip to content

Commit ab03d90

Browse files
committed
Merge branch 'master' into instance_variables
2 parents 2f37b1d + 27a8a15 commit ab03d90

3 files changed

Lines changed: 16 additions & 0 deletions

File tree

cmd2.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import codecs
3131
import collections
3232
import datetime
33+
import functools
3334
import glob
3435
import io
3536
import optparse
@@ -271,6 +272,7 @@ def with_argument_list(func):
271272
method. Default passes a string of whatever the user typed.
272273
With this decorator, the decorated method will receive a list
273274
of arguments parsed from user input using shlex.split()."""
275+
@functools.wraps(func)
274276
def cmd_wrapper(self, cmdline):
275277
lexed_arglist = parse_quoted_string(cmdline)
276278
func(self, lexed_arglist)
@@ -288,6 +290,7 @@ def with_argparser_and_unknown_args(argparser, subcommand_names=None):
288290
:return: function that gets passed parsed args and a list of unknown args
289291
"""
290292
def arg_decorator(func):
293+
@functools.wraps(func)
291294
def cmd_wrapper(instance, cmdline):
292295
lexed_arglist = parse_quoted_string(cmdline)
293296
args, unknown = argparser.parse_known_args(lexed_arglist)
@@ -324,6 +327,7 @@ def with_argparser(argparser, subcommand_names=None):
324327
:return: function that gets passed parsed args
325328
"""
326329
def arg_decorator(func):
330+
@functools.wraps(func)
327331
def cmd_wrapper(instance, cmdline):
328332
lexed_arglist = parse_quoted_string(cmdline)
329333
args = argparser.parse_args(lexed_arglist)
@@ -387,6 +391,7 @@ def option_setup(func):
387391
option_parser.set_usage("%s %s" % (func.__name__[3:], arg_desc))
388392
option_parser._func = func
389393

394+
@functools.wraps(func)
390395
def new_func(instance, arg):
391396
"""For @options commands this replaces the actual do_* methods in the instance __dict__.
392397

docs/transcript.rst

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,12 @@ A transcript can automatically generated based upon commands previously executed
2626

2727
This is by far the easiest way to generate a transcript.
2828

29+
.. warning::
30+
31+
Make sure you use the **poutput()** method in your ``cmd2`` application for generating command output. This method
32+
of the ``cmd2.Cmd`` class ensure that output is properly redirected when redirecting to a file, piping to a shell
33+
command, and when generating a transcript.
34+
2935
Manually
3036
--------
3137
Here's a transcript created from ``python examples/example.py``::

docs/unfreefeatures.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,9 +155,14 @@ but ``print`` decreases output flexibility). ``cmd2`` applications can use
155155
``self.poutput('output')``, ``self.pfeedback('message')``, and ``self.perror('errmsg')``
156156
instead. These methods have these advantages:
157157

158+
- Handle output redirection to file and/or pipe appropriately
158159
- More concise
159160
- ``.pfeedback()`` destination is controlled by :ref:`quiet` parameter.
160161

162+
.. automethod:: cmd2.Cmd.poutput
163+
.. automethod:: cmd2.Cmd.perror
164+
.. automethod:: cmd2.Cmd.pfeedback
165+
161166

162167
color
163168
=====

0 commit comments

Comments
 (0)