cmd2.Cmd
cmd2.Cmd
Cmd(
completekey="tab",
stdin=None,
stdout=None,
*,
persistent_history_file="",
persistent_history_length=1000,
startup_script="",
silence_startup_script=False,
include_py=False,
include_ipy=False,
allow_cli_args=True,
transcript_files=None,
allow_redirection=True,
multiline_commands=None,
terminators=None,
shortcuts=None,
command_sets=None,
auto_load_commands=False,
allow_clipboard=True,
suggest_similar_command=False
)
Bases: Cmd
An easy but powerful framework for writing line-oriented command interpreters.
Extends the Python Standard Library's cmd package by adding a lot of useful features to the out of the box configuration.
Line-oriented command interpreters are often useful for test harnesses, internal tools, and rapid prototypes.
Easy but powerful framework for writing line-oriented command interpreters, extends Python's cmd package.
| PARAMETER | DESCRIPTION |
|---|---|
completekey
|
readline name of a completion key, default to Tab
TYPE:
|
stdin
|
alternate input file object, if not specified, sys.stdin is used
TYPE:
|
stdout
|
alternate output file object, if not specified, sys.stdout is used
TYPE:
|
persistent_history_file
|
file path to load a persistent cmd2 command history from
TYPE:
|
persistent_history_length
|
max number of history items to write to the persistent history file
TYPE:
|
startup_script
|
file path to a script to execute at startup
TYPE:
|
silence_startup_script
|
if
TYPE:
|
include_py
|
should the "py" command be included for an embedded Python shell
TYPE:
|
include_ipy
|
should the "ipy" command be included for an embedded IPython shell
TYPE:
|
allow_cli_args
|
if
TYPE:
|
transcript_files
|
pass a list of transcript files to be run on initialization. This allows running transcript tests when
TYPE:
|
allow_redirection
|
If
TYPE:
|
multiline_commands
|
list of commands allowed to accept multi-line input
TYPE:
|
terminators
|
list of characters that terminate a command. These are mainly intended for terminating multiline commands, but will also terminate single-line commands. If not supplied, the default is a semicolon. If your app only contains single-line commands and you want terminators to be treated as literals by the parser, then set this to an empty list.
TYPE:
|
shortcuts
|
dictionary containing shortcuts for commands. If not supplied, then defaults to constants.DEFAULT_SHORTCUTS. If you do not want any shortcuts, pass an empty dictionary.
TYPE:
|
command_sets
|
Provide CommandSet instances to load during cmd2 initialization. This allows CommandSets with custom constructor parameters to be loaded. This also allows the a set of CommandSets to be provided when
TYPE:
|
auto_load_commands
|
If True, cmd2 will check for all subclasses of
TYPE:
|
allow_clipboard
|
If False, cmd2 will disable clipboard interactions
TYPE:
|
suggest_similar_command
|
If
TYPE:
|
Source code in cmd2/cmd2.py
307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 | |
statement_parser
instance-attribute
statement_parser = StatementParser(
terminators=terminators,
multiline_commands=multiline_commands,
shortcuts=shortcuts,
)
default_error
instance-attribute
always_prefix_settables
property
writable
Flags whether CommandSet settable values should always be prefixed.
| RETURNS | DESCRIPTION |
|---|---|
bool
|
True if CommandSet settable values will always be prefixed. False if not. |
settables
property
Get all available user-settable attributes. This includes settables defined in installed CommandSets.
| RETURNS | DESCRIPTION |
|---|---|
Mapping[str, Settable]
|
Mapping from attribute-name to Settable of all user-settable attributes from |
allow_style
property
writable
Read-only property needed to support do_set when it reads allow_style.
visible_prompt
property
Read-only property to get the visible prompt with any ANSI style sequences stripped.
Used by transcript testing to make it easier and more reliable when users are doing things like coloring the prompt.
| RETURNS | DESCRIPTION |
|---|---|
str
|
the stripped prompt |
macro_list_description
class-attribute
instance-attribute
macro_list_description = assemble(
"List specified macros in a reusable form that can be saved to a startup script to preserve macros across sessions.",
"\n\n",
"Without arguments, all macros will be listed.",
)
macro_list_parser
class-attribute
instance-attribute
macro_list_parser = DEFAULT_ARGUMENT_PARSER(
description=macro_list_description
)
emptyline
Called when an empty line is entered in response to the prompt.
If this method is not overridden, it repeats the last nonempty command entered.
completedefault
Method called to complete an input line when no command-specific complete_*() method is available.
By default, it returns an empty list.
completenames
complete_help
find_commandsets
Find all CommandSets that match the provided CommandSet type.
By default, locates a CommandSet that is an exact type match but may optionally return all CommandSets that are sub-classes of the provided type
| PARAMETER | DESCRIPTION |
|---|---|
commandset_type
|
CommandSet sub-class type to search for
TYPE:
|
subclass_match
|
If True, return all sub-classes of provided type, otherwise only search for exact match
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
list[CommandSet]
|
Matching CommandSets |
Source code in cmd2/cmd2.py
find_commandset_for_command
Find the CommandSet that registered the command name.
| PARAMETER | DESCRIPTION |
|---|---|
command_name
|
command name to search
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
CommandSet | None
|
CommandSet that provided the command |
Source code in cmd2/cmd2.py
register_command_set
Installs a CommandSet, loading all commands defined in the CommandSet.
| PARAMETER | DESCRIPTION |
|---|---|
cmdset
|
CommandSet to load
TYPE:
|
Source code in cmd2/cmd2.py
unregister_command_set
Uninstalls a CommandSet and unloads all associated commands.
| PARAMETER | DESCRIPTION |
|---|---|
cmdset
|
CommandSet to uninstall
TYPE:
|
Source code in cmd2/cmd2.py
add_settable
Add a settable parameter to self.settables.
| PARAMETER | DESCRIPTION |
|---|---|
settable
|
Settable object being added
TYPE:
|
Source code in cmd2/cmd2.py
remove_settable
Remove a settable parameter from self.settables.
| PARAMETER | DESCRIPTION |
|---|---|
name
|
name of the settable being removed
TYPE:
|
| RAISES | DESCRIPTION |
|---|---|
KeyError
|
if the Settable matches this name |
Source code in cmd2/cmd2.py
build_settables
Create the dictionary of user-settable parameters.
Source code in cmd2/cmd2.py
print_to
print_to(
file,
*objects,
sep=" ",
end="\n",
style=None,
soft_wrap=True,
emoji=False,
markup=False,
highlight=False,
rich_print_kwargs=None,
**kwargs
)
Print objects to a given file stream.
This method is configured for general-purpose printing. By default, it enables soft wrap and disables Rich's automatic detection for markup, emoji, and highlighting. These defaults can be overridden by passing explicit keyword arguments.
| PARAMETER | DESCRIPTION |
|---|---|
file
|
file stream being written to
TYPE:
|
objects
|
objects to print
TYPE:
|
sep
|
string to write between printed text. Defaults to " ".
TYPE:
|
end
|
string to write at end of printed text. Defaults to a newline.
TYPE:
|
style
|
optional style to apply to output
TYPE:
|
soft_wrap
|
Enable soft wrap mode. If True, lines of text will not be word-wrapped or cropped to fit the terminal width. Defaults to True.
TYPE:
|
emoji
|
If True, Rich will replace emoji codes (e.g.,
TYPE:
|
markup
|
If True, Rich will interpret strings with tags (e.g., [bold]hello[/bold]) as styled output. Defaults to False.
TYPE:
|
highlight
|
If True, Rich will automatically apply highlighting to elements within strings, such as common Python data types like numbers, booleans, or None. This is particularly useful when pretty printing objects like lists and dictionaries to display them in color. Defaults to False.
TYPE:
|
rich_print_kwargs
|
optional additional keyword arguments to pass to Rich's Console.print().
TYPE:
|
kwargs
|
Arbitrary keyword arguments. This allows subclasses to extend the signature of this method and still call
TYPE:
|
Source code in cmd2/cmd2.py
1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 | |
poutput
poutput(
*objects,
sep=" ",
end="\n",
style=None,
soft_wrap=True,
emoji=False,
markup=False,
highlight=False,
rich_print_kwargs=None,
**kwargs
)
Print objects to self.stdout.
For details on the parameters, refer to the print_to method documentation.
Source code in cmd2/cmd2.py
perror
perror(
*objects,
sep=" ",
end="\n",
style=ERROR,
soft_wrap=True,
emoji=False,
markup=False,
highlight=False,
rich_print_kwargs=None,
**kwargs
)
Print objects to sys.stderr.
| PARAMETER | DESCRIPTION |
|---|---|
style
|
optional style to apply to output. Defaults to Cmd2Style.ERROR. For details on the other parameters, refer to the
TYPE:
|
Source code in cmd2/cmd2.py
psuccess
psuccess(
*objects,
sep=" ",
end="\n",
soft_wrap=True,
emoji=False,
markup=False,
highlight=False,
rich_print_kwargs=None,
**kwargs
)
Wrap poutput, but apply Cmd2Style.SUCCESS.
For details on the parameters, refer to the print_to method documentation.
Source code in cmd2/cmd2.py
pwarning
pwarning(
*objects,
sep=" ",
end="\n",
soft_wrap=True,
emoji=False,
markup=False,
highlight=False,
rich_print_kwargs=None,
**kwargs
)
Wrap perror, but apply Cmd2Style.WARNING.
For details on the parameters, refer to the print_to method documentation.
Source code in cmd2/cmd2.py
pexcept
Print an exception to sys.stderr.
If debug is true, a full traceback is also printed, if one exists.
| PARAMETER | DESCRIPTION |
|---|---|
exception
|
the exception to be printed.
TYPE:
|
kwargs
|
Arbitrary keyword arguments. This allows subclasses to extend the signature of this method and still call
TYPE:
|
Source code in cmd2/cmd2.py
pfeedback
pfeedback(
*objects,
sep=" ",
end="\n",
style=None,
soft_wrap=True,
emoji=False,
markup=False,
highlight=False,
rich_print_kwargs=None,
**kwargs
)
Print nonessential feedback.
The output can be silenced with the quiet setting and its inclusion in redirected output
is controlled by the feedback_to_output setting.
For details on the parameters, refer to the print_to method documentation.
Source code in cmd2/cmd2.py
ppaged
ppaged(
*objects,
sep=" ",
end="\n",
style=None,
chop=False,
soft_wrap=True,
emoji=False,
markup=False,
highlight=False,
rich_print_kwargs=None,
**kwargs
)
Print output using a pager.
A pager is used when the terminal is interactive and may exit immediately if the output
fits on the screen. A pager is not used inside a script (Python or text) or when output is
redirected or piped, and in these cases, output is sent to poutput.
| PARAMETER | DESCRIPTION |
|---|---|
chop
|
True -> causes lines longer than the screen width to be chopped (truncated) rather than wrapped - truncated text is still accessible by scrolling with the right & left arrow keys - chopping is ideal for displaying wide tabular data as is done in utilities like pgcli False -> causes lines longer than the screen width to wrap to the next line - wrapping is ideal when you want to keep users from having to use horizontal scrolling WARNING: On Windows, the text always wraps regardless of what the chop argument is set to
TYPE:
|
soft_wrap
|
Enable soft wrap mode. If True, lines of text will not be word-wrapped or cropped to fit the terminal width. Defaults to True. Note: If chop is True and a pager is used, soft_wrap is automatically set to True to prevent wrapping and allow for horizontal scrolling. For details on the other parameters, refer to the
TYPE:
|
Source code in cmd2/cmd2.py
1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 | |
tokens_for_completion
Get all tokens through the one being completed, used by tab completion functions.
| PARAMETER | DESCRIPTION |
|---|---|
line
|
the current input line with leading whitespace removed
TYPE:
|
begidx
|
the beginning index of the prefix text
TYPE:
|
endidx
|
the ending index of the prefix text
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
tuple[list[str], list[str]]
|
A 2 item tuple where the items are On Success - tokens: list of unquoted tokens - this is generally the list needed for tab completion functions - raw_tokens: list of tokens with any quotes preserved = this can be used to know if a token was quoted or is missing a closing quote Both lists are guaranteed to have at least 1 item. The last item in both lists is the token being tab completed On Failure - Two empty lists |
Source code in cmd2/cmd2.py
1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 | |
basic_complete
Tab completion function that matches against a list of strings without considering line contents or cursor position.
The args required by this function are defined in the header of Python's cmd.py.
| PARAMETER | DESCRIPTION |
|---|---|
text
|
the string prefix we are attempting to match (all matches must begin with it)
TYPE:
|
line
|
the current input line with leading whitespace removed
TYPE:
|
begidx
|
the beginning index of the prefix text
TYPE:
|
endidx
|
the ending index of the prefix text
TYPE:
|
match_against
|
the strings being matched against
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
list[str]
|
a list of possible tab completions |
Source code in cmd2/cmd2.py
delimiter_complete
Perform tab completion against a list but each match is split on a delimiter.
Only the portion of the match being tab completed is shown as the completion suggestions. This is useful if you match against strings that are hierarchical in nature and have a common delimiter.
An easy way to illustrate this concept is path completion since paths are just directories/files delimited by a slash. If you are tab completing items in /home/user you don't get the following as suggestions:
/home/user/file.txt /home/user/program.c /home/user/maps/ /home/user/cmd2.py
Instead you are shown:
file.txt program.c maps/ cmd2.py
For a large set of data, this can be visually more pleasing and easier to search.
Another example would be strings formatted with the following syntax: company::department::name In this case the delimiter would be :: and the user could easily narrow down what they are looking for if they were only shown suggestions in the category they are at in the string.
| PARAMETER | DESCRIPTION |
|---|---|
text
|
the string prefix we are attempting to match (all matches must begin with it)
TYPE:
|
line
|
the current input line with leading whitespace removed
TYPE:
|
begidx
|
the beginning index of the prefix text
TYPE:
|
endidx
|
the ending index of the prefix text
TYPE:
|
match_against
|
the list being matched against
TYPE:
|
delimiter
|
what delimits each portion of the matches (ex: paths are delimited by a slash)
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
list[str]
|
a list of possible tab completions |
Source code in cmd2/cmd2.py
1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 | |
flag_based_complete
Tab completes based on a particular flag preceding the token being completed.
| PARAMETER | DESCRIPTION |
|---|---|
text
|
the string prefix we are attempting to match (all matches must begin with it)
TYPE:
|
line
|
the current input line with leading whitespace removed
TYPE:
|
begidx
|
the beginning index of the prefix text
TYPE:
|
endidx
|
the ending index of the prefix text
TYPE:
|
flag_dict
|
dictionary whose structure is the following:
TYPE:
|
all_else
|
an optional parameter for tab completing any token that isn't preceded by a flag in flag_dict
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
list[str]
|
a list of possible tab completions |
Source code in cmd2/cmd2.py
index_based_complete
Tab completes based on a fixed position in the input string.
| PARAMETER | DESCRIPTION |
|---|---|
text
|
the string prefix we are attempting to match (all matches must begin with it)
TYPE:
|
line
|
the current input line with leading whitespace removed
TYPE:
|
begidx
|
the beginning index of the prefix text
TYPE:
|
endidx
|
the ending index of the prefix text
TYPE:
|
index_dict
|
dictionary whose structure is the following:
TYPE:
|
all_else
|
an optional parameter for tab completing any token that isn't at an index in index_dict
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
list[str]
|
a list of possible tab completions |
Source code in cmd2/cmd2.py
path_complete
Perform completion of local file system paths.
| PARAMETER | DESCRIPTION |
|---|---|
text
|
the string prefix we are attempting to match (all matches must begin with it)
TYPE:
|
line
|
the current input line with leading whitespace removed
TYPE:
|
begidx
|
the beginning index of the prefix text
TYPE:
|
endidx
|
the ending index of the prefix text
TYPE:
|
path_filter
|
optional filter function that determines if a path belongs in the results this function takes a path as its argument and returns True if the path should be kept in the results
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
list[str]
|
a list of possible tab completions |
Source code in cmd2/cmd2.py
1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 | |
shell_cmd_complete
Perform completion of executables either in a user's path or a given path.
| PARAMETER | DESCRIPTION |
|---|---|
text
|
the string prefix we are attempting to match (all matches must begin with it)
TYPE:
|
line
|
the current input line with leading whitespace removed
TYPE:
|
begidx
|
the beginning index of the prefix text
TYPE:
|
endidx
|
the ending index of the prefix text
TYPE:
|
complete_blank
|
If True, then a blank will complete all shell commands in a user's path. If False, then no completion is performed. Defaults to False to match Bash shell behavior.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
list[str]
|
a list of possible tab completions |
Source code in cmd2/cmd2.py
complete
Override of cmd's complete method which returns the next possible completion for 'text'.
This completer function is called by readline as complete(text, state), for state in 0, 1, 2, …, until it returns a non-string value. It should return the next possible completion starting with text.
Since readline suppresses any exception raised in completer functions, they can be difficult to debug. Therefore, this function wraps the actual tab completion logic and prints to stderr any exception that occurs before returning control to readline.
| PARAMETER | DESCRIPTION |
|---|---|
text
|
the current word that user is typing
TYPE:
|
state
|
non-negative integer
TYPE:
|
custom_settings
|
used when not tab completing the main command line
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
str | None
|
the next possible completion for text or None |
Source code in cmd2/cmd2.py
2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 | |
in_script
in_pyscript
get_names
get_all_commands
Return a list of all commands.
Source code in cmd2/cmd2.py
get_visible_commands
Return a list of commands that have not been hidden or disabled.
Source code in cmd2/cmd2.py
get_help_topics
Return a list of help topics.
Source code in cmd2/cmd2.py
sigint_handler
Signal handler for SIGINTs which typically come from Ctrl-C events.
If you need custom SIGINT behavior, then override this method.
| PARAMETER | DESCRIPTION |
|---|---|
signum
|
signal number
TYPE:
|
frame
|
the current stack frame or None
TYPE:
|
Source code in cmd2/cmd2.py
termination_signal_handler
Signal handler for SIGHUP and SIGTERM. Only runs on Linux and Mac.
SIGHUP - received when terminal window is closed SIGTERM - received when this app has been requested to terminate
The basic purpose of this method is to call sys.exit() so our exit handler will run and save the persistent history file. If you need more complex behavior like killing threads and performing cleanup, then override this method.
| PARAMETER | DESCRIPTION |
|---|---|
signum
|
signal number
TYPE:
|
_
|
the current stack frame or None
TYPE:
|
Source code in cmd2/cmd2.py
precmd
Ran just before the command is executed by cmd2.Cmd.onecmd and after adding it to history (cmd Hook method).
| PARAMETER | DESCRIPTION |
|---|---|
statement
|
subclass of str which also contains the parsed input
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
Statement
|
a potentially modified version of the input Statement object See cmd2.Cmd.register_postparsing_hook and cmd2.Cmd.register_precmd_hook for more robust ways to run hooks before the command is executed. See Hooks for more information. |
Source code in cmd2/cmd2.py
postcmd
Ran just after a command is executed by cmd2.Cmd.onecmd (cmd inherited Hook method).
| PARAMETER | DESCRIPTION |
|---|---|
stop
|
return
TYPE:
|
statement
|
subclass of str which also contains the parsed input See cmd2.Cmd.register_postcmd_hook and cmd2.Cmd.register_cmdfinalization_hook for more robust ways to run hooks after the command is executed. See Hooks for more information.
TYPE:
|
Source code in cmd2/cmd2.py
preloop
Ran once when the cmd2.Cmd.cmdloop method is called (cmd inherited Hook method).
This method is a stub that does nothing and exists to be overridden by subclasses.
See cmd2.Cmd.register_preloop_hook for a more robust wayto run hooks before the command loop begins. See Hooks for more information.
Source code in cmd2/cmd2.py
postloop
Ran once when the cmd2.Cmd.cmdloop method is about to return (cmd inherited Hook Method).
This method is a stub that does nothing and exists to be overridden by subclasses.
See cmd2.Cmd.register_postloop_hook for a more robust way to run hooks after the command loop completes. See Hooks for more information.
Source code in cmd2/cmd2.py
parseline
Parse the line into a command name and a string containing the arguments.
NOTE: This is an override of a parent class method. It is only used by other parent class methods.
Different from the parent class method, this ignores self.identchars.
| PARAMETER | DESCRIPTION |
|---|---|
line
|
line read by readline
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
tuple[str, str, str]
|
tuple containing (command, args, line) |
Source code in cmd2/cmd2.py
onecmd_plus_hooks
onecmd_plus_hooks(
line,
*,
add_to_history=True,
raise_keyboard_interrupt=False,
py_bridge_call=False,
orig_rl_history_length=None
)
Top-level function called by cmdloop() to handle parsing a line and running the command and all of its hooks.
| PARAMETER | DESCRIPTION |
|---|---|
line
|
command line to run
TYPE:
|
add_to_history
|
If True, then add this command to history. Defaults to True.
TYPE:
|
raise_keyboard_interrupt
|
if True, then KeyboardInterrupt exceptions will be raised if stop isn't already True. This is used when running commands in a loop to be able to stop the whole loop and not just the current command. Defaults to False.
TYPE:
|
py_bridge_call
|
This should only ever be set to True by PyBridge to signify the beginning of an app() call from Python. It is used to enable/disable the storage of the command's stdout.
TYPE:
|
orig_rl_history_length
|
Optional length of the readline history before the current command was typed. This is used to assist in combining multiline readline history entries and is only populated by cmd2. Defaults to None.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
bool
|
True if running of commands should stop |
Source code in cmd2/cmd2.py
2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 | |
runcmds_plus_hooks
Run commands in an automated fashion from sources like text scripts or history replays.
The prompt and command line for each command will be printed if echo is True.
| PARAMETER | DESCRIPTION |
|---|---|
cmds
|
commands to run
TYPE:
|
add_to_history
|
If True, then add these commands to history. Defaults to True.
TYPE:
|
stop_on_keyboard_interrupt
|
if True, then stop running contents of cmds if Ctrl-C is pressed instead of moving to the next command in the list. This is used when the commands are part of a group, like a text script, which should stop upon Ctrl-C. Defaults to False.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
bool
|
True if running of commands should stop |
Source code in cmd2/cmd2.py
cmd_func
Get the function for a command.
| PARAMETER | DESCRIPTION |
|---|---|
command
|
the name of the command Example:
TYPE:
|
Source code in cmd2/cmd2.py
onecmd
Execute the actual do_* method for a command.
If the command provided doesn't exist, then it executes default() instead.
| PARAMETER | DESCRIPTION |
|---|---|
statement
|
intended to be a Statement instance parsed command from the input stream, alternative acceptance of a str is present only for backward compatibility with cmd
TYPE:
|
add_to_history
|
If True, then add this command to history. Defaults to True.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
bool
|
a flag indicating whether the interpretation of commands should stop |
Source code in cmd2/cmd2.py
default
Execute when the command given isn't a recognized command implemented by a do_* method.
| PARAMETER | DESCRIPTION |
|---|---|
statement
|
Statement object with parsed input
TYPE:
|
Source code in cmd2/cmd2.py
read_input
read_input(
prompt,
*,
history=None,
completion_mode=NONE,
preserve_quotes=False,
choices=None,
choices_provider=None,
completer=None,
parser=None
)
Read input from appropriate stdin value.
Also supports tab completion and up-arrow history while input is being entered.
| PARAMETER | DESCRIPTION |
|---|---|
prompt
|
prompt to display to user
TYPE:
|
history
|
optional list of strings to use for up-arrow history. If completion_mode is CompletionMode.COMMANDS and this is None, then cmd2's command list history will be used. The passed in history will not be edited. It is the caller's responsibility to add the returned input to history if desired. Defaults to None.
TYPE:
|
completion_mode
|
tells what type of tab completion to support. Tab completion only works when self.use_rawinput is True and sys.stdin is a terminal. Defaults to CompletionMode.NONE. The following optional settings apply when completion_mode is CompletionMode.CUSTOM:
TYPE:
|
preserve_quotes
|
if True, then quoted tokens will keep their quotes when processed by ArgparseCompleter. This is helpful in cases when you're tab completing flag-like tokens (e.g. -o, --option) and you don't want them to be treated as argparse flags when quoted. Set this to True if you plan on passing the string to argparse with the tokens still quoted. A maximum of one of these should be provided:
TYPE:
|
choices
|
iterable of accepted values for single argument
TYPE:
|
choices_provider
|
function that provides choices for single argument
TYPE:
|
completer
|
tab completion function that provides choices for single argument
TYPE:
|
parser
|
an argument parser which supports the tab completion of multiple arguments
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
str
|
the line read from stdin with all trailing new lines removed |
| RAISES | DESCRIPTION |
|---|---|
Exception
|
any exceptions raised by input() and stdin.readline() |
Source code in cmd2/cmd2.py
3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3434 3435 3436 3437 3438 3439 3440 3441 3442 3443 3444 3445 3446 3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 | |
do_alias
Manage aliases.
macro_arg_complete
Tab completes arguments to a macro.
Its default behavior is to call path_complete, but you can override this as needed.
The args required by this function are defined in the header of Python's cmd.py.
| PARAMETER | DESCRIPTION |
|---|---|
text
|
the string prefix we are attempting to match (all matches must begin with it)
TYPE:
|
line
|
the current input line with leading whitespace removed
TYPE:
|
begidx
|
the beginning index of the prefix text
TYPE:
|
endidx
|
the ending index of the prefix text
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
list[str]
|
a list of possible tab completions |
Source code in cmd2/cmd2.py
do_macro
Manage macros.
complete_help_command
Completes the command argument of help.
Source code in cmd2/cmd2.py
complete_help_subcommands
Completes the subcommands argument of help.
Source code in cmd2/cmd2.py
do_help
List available commands or provide detailed help for a specific command.
Source code in cmd2/cmd2.py
4138 4139 4140 4141 4142 4143 4144 4145 4146 4147 4148 4149 4150 4151 4152 4153 4154 4155 4156 4157 4158 4159 4160 4161 4162 4163 4164 4165 4166 4167 4168 4169 4170 4171 4172 4173 4174 4175 4176 4177 4178 4179 4180 4181 4182 4183 4184 4185 4186 4187 4188 4189 4190 4191 4192 4193 4194 4195 4196 4197 4198 | |
print_topics
Print groups of commands and topics in columns and an optional header.
Override of cmd's print_topics() to use Rich.
| PARAMETER | DESCRIPTION |
|---|---|
header
|
string to print above commands being printed
TYPE:
|
cmds
|
list of topics to print
TYPE:
|
cmdlen
|
unused, even by cmd's version
TYPE:
|
maxcol
|
max number of display columns to fit into
TYPE:
|
Source code in cmd2/cmd2.py
render_columns
Render a list of single-line strings as a compact set of columns.
This method correctly handles strings containing ANSI style sequences and full-width characters (like those used in CJK languages). Each column is only as wide as necessary and columns are separated by two spaces.
| PARAMETER | DESCRIPTION |
|---|---|
str_list
|
list of single-line strings to display
TYPE:
|
display_width
|
max number of display columns to fit into
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
str
|
a string containing the columnized output |
Source code in cmd2/cmd2.py
columnize
Display a list of single-line strings as a compact set of columns.
Override of cmd's columnize() that uses the render_columns() method. The method correctly handles strings with ANSI style sequences and full-width characters (like those used in CJK languages).
| PARAMETER | DESCRIPTION |
|---|---|
str_list
|
list of single-line strings to display
TYPE:
|
display_width
|
max number of display columns to fit into
TYPE:
|
Source code in cmd2/cmd2.py
do_shortcuts
List available shortcuts.
Source code in cmd2/cmd2.py
do_eof
Quit with no arguments, called when Ctrl-D is pressed.
This can be overridden if quit should be called differently.
Source code in cmd2/cmd2.py
do_quit
select
Present a numbered menu to the user.
Modeled after the bash shell's SELECT. Returns the item chosen.
Argument opts can be:
| a single string -> will be split into one-word options | a list of strings -> will be offered as options | a list of tuples -> interpreted as (value, text), so that the return value can differ from the text advertised to the user
Source code in cmd2/cmd2.py
complete_set_value
Completes the value argument of set.
Source code in cmd2/cmd2.py
do_set
Set a settable parameter or show current settings of parameters.
Source code in cmd2/cmd2.py
do_shell
Execute a command as if at the OS prompt.
Source code in cmd2/cmd2.py
do_py
Run an interactive Python shell.
| RETURNS | DESCRIPTION |
|---|---|
bool | None
|
True if running of commands should stop. |
Source code in cmd2/cmd2.py
do_run_pyscript
Run Python script within this application's environment.
| RETURNS | DESCRIPTION |
|---|---|
bool | None
|
True if running of commands should stop |
Source code in cmd2/cmd2.py
do_ipy
Run an interactive IPython shell.
| RETURNS | DESCRIPTION |
|---|---|
bool | None
|
True if running of commands should stop |
Source code in cmd2/cmd2.py
4948 4949 4950 4951 4952 4953 4954 4955 4956 4957 4958 4959 4960 4961 4962 4963 4964 4965 4966 4967 4968 4969 4970 4971 4972 4973 4974 4975 4976 4977 4978 4979 4980 4981 4982 4983 4984 4985 4986 4987 4988 4989 4990 4991 4992 4993 4994 4995 4996 4997 4998 4999 5000 5001 5002 5003 5004 5005 5006 5007 5008 5009 5010 5011 5012 5013 5014 5015 5016 5017 5018 | |
do_history
View, run, edit, save, or clear previously entered commands.
| RETURNS | DESCRIPTION |
|---|---|
bool | None
|
True if running of commands should stop |
Source code in cmd2/cmd2.py
5083 5084 5085 5086 5087 5088 5089 5090 5091 5092 5093 5094 5095 5096 5097 5098 5099 5100 5101 5102 5103 5104 5105 5106 5107 5108 5109 5110 5111 5112 5113 5114 5115 5116 5117 5118 5119 5120 5121 5122 5123 5124 5125 5126 5127 5128 5129 5130 5131 5132 5133 5134 5135 5136 5137 5138 5139 5140 5141 5142 5143 5144 5145 5146 5147 5148 5149 5150 5151 5152 5153 5154 5155 5156 5157 5158 5159 5160 5161 5162 5163 5164 5165 5166 5167 5168 5169 5170 5171 5172 | |
do_edit
Run a text editor and optionally open a file with it.
Source code in cmd2/cmd2.py
run_editor
Run a text editor and optionally open a file with it.
| PARAMETER | DESCRIPTION |
|---|---|
file_path
|
optional path of the file to edit. Defaults to None.
TYPE:
|
| RAISES | DESCRIPTION |
|---|---|
ValueError
|
if self.editor is not set |
Source code in cmd2/cmd2.py
do_run_script
Run text script.
| RETURNS | DESCRIPTION |
|---|---|
bool | None
|
True if running of commands should stop |
Source code in cmd2/cmd2.py
5484 5485 5486 5487 5488 5489 5490 5491 5492 5493 5494 5495 5496 5497 5498 5499 5500 5501 5502 5503 5504 5505 5506 5507 5508 5509 5510 5511 5512 5513 5514 5515 5516 5517 5518 5519 5520 5521 5522 5523 5524 5525 5526 5527 5528 5529 5530 5531 5532 5533 5534 5535 5536 5537 5538 5539 5540 5541 5542 5543 5544 5545 | |
do__relative_run_script
Run text script.
This command is intended to be used from within a text script.
| RETURNS | DESCRIPTION |
|---|---|
bool | None
|
True if running of commands should stop |
Source code in cmd2/cmd2.py
async_alert
Display an important message to the user while they are at a command line prompt.
To the user it appears as if an alert message is printed above the prompt and their current input text and cursor location is left alone.
This function needs to acquire self.terminal_lock to ensure a prompt is on screen. Therefore, it is best to acquire the lock before calling this function to avoid raising a RuntimeError.
This function is only needed when you need to print an alert or update the prompt while the main thread is blocking at the prompt. Therefore, this should never be called from the main thread. Doing so will raise a RuntimeError.
| PARAMETER | DESCRIPTION |
|---|---|
alert_msg
|
the message to display to the user
TYPE:
|
new_prompt
|
If you also want to change the prompt that is displayed, then include it here. See async_update_prompt() docstring for guidance on updating a prompt.
TYPE:
|
| RAISES | DESCRIPTION |
|---|---|
RuntimeError
|
if called from the main thread. |
RuntimeError
|
if called while another thread holds |
Source code in cmd2/cmd2.py
5647 5648 5649 5650 5651 5652 5653 5654 5655 5656 5657 5658 5659 5660 5661 5662 5663 5664 5665 5666 5667 5668 5669 5670 5671 5672 5673 5674 5675 5676 5677 5678 5679 5680 5681 5682 5683 5684 5685 5686 5687 5688 5689 5690 5691 5692 5693 5694 5695 5696 5697 5698 5699 5700 5701 5702 5703 5704 5705 5706 5707 5708 5709 5710 5711 5712 | |
async_update_prompt
Update the command line prompt while the user is still typing at it.
This is good for alerting the user to system changes dynamically in between commands. For instance you could alter the color of the prompt to indicate a system status or increase a counter to report an event. If you do alter the actual text of the prompt, it is best to keep the prompt the same width as what's on screen. Otherwise the user's input text will be shifted and the update will not be seamless.
If user is at a continuation prompt while entering a multiline command, the onscreen prompt will not change. However, self.prompt will still be updated and display immediately after the multiline line command completes.
| PARAMETER | DESCRIPTION |
|---|---|
new_prompt
|
what to change the prompt to
TYPE:
|
| RAISES | DESCRIPTION |
|---|---|
RuntimeError
|
if called from the main thread. |
RuntimeError
|
if called while another thread holds |
Source code in cmd2/cmd2.py
async_refresh_prompt
Refresh the oncreen prompt to match self.prompt.
One case where the onscreen prompt and self.prompt can get out of sync is when async_alert() is called while a user is in search mode (e.g. Ctrl-r). To prevent overwriting readline's onscreen search prompt, self.prompt is updated but readline's saved prompt isn't.
Therefore when a user aborts a search, the old prompt is still on screen until they press Enter or this method is called. Call need_prompt_refresh() in an async print thread to know when a refresh is needed.
| RAISES | DESCRIPTION |
|---|---|
RuntimeError
|
if called from the main thread. |
RuntimeError
|
if called while another thread holds |
Source code in cmd2/cmd2.py
need_prompt_refresh
Check whether the onscreen prompt needs to be asynchronously refreshed to match self.prompt.
Source code in cmd2/cmd2.py
set_window_title
staticmethod
Set the terminal window title.
| PARAMETER | DESCRIPTION |
|---|---|
title
|
the new window title
TYPE:
|
Source code in cmd2/cmd2.py
enable_command
Enable a command by restoring its functions.
| PARAMETER | DESCRIPTION |
|---|---|
command
|
the command being enabled
TYPE:
|
Source code in cmd2/cmd2.py
enable_category
Enable an entire category of commands.
| PARAMETER | DESCRIPTION |
|---|---|
category
|
the category to enable
TYPE:
|
Source code in cmd2/cmd2.py
disable_command
Disable a command and overwrite its functions.
| PARAMETER | DESCRIPTION |
|---|---|
command
|
the command being disabled
TYPE:
|
message_to_print
|
what to print when this command is run or help is called on it while disabled The variable cmd2.COMMAND_NAME can be used as a placeholder for the name of the command being disabled. ex: message_to_print = f"{cmd2.COMMAND_NAME} is currently disabled"
TYPE:
|
Source code in cmd2/cmd2.py
disable_category
Disable an entire category of commands.
| PARAMETER | DESCRIPTION |
|---|---|
category
|
the category to disable
TYPE:
|
message_to_print
|
what to print when anything in this category is run or help is called on it while disabled. The variable cmd2.COMMAND_NAME can be used as a placeholder for the name of the command being disabled. ex: message_to_print = f"{cmd2.COMMAND_NAME} is currently disabled"
TYPE:
|
Source code in cmd2/cmd2.py
cmdloop
Deal with extra features provided by cmd2, this is an outer wrapper around _cmdloop().
_cmdloop() provides the main loop equivalent to cmd.cmdloop(). This is a wrapper around that which deals with the following extra features provided by cmd2: - transcript testing - intro banner - exit code
| PARAMETER | DESCRIPTION |
|---|---|
intro
|
if provided this overrides self.intro and serves as the intro banner printed once at start
TYPE:
|
Source code in cmd2/cmd2.py
5883 5884 5885 5886 5887 5888 5889 5890 5891 5892 5893 5894 5895 5896 5897 5898 5899 5900 5901 5902 5903 5904 5905 5906 5907 5908 5909 5910 5911 5912 5913 5914 5915 5916 5917 5918 5919 5920 5921 5922 5923 5924 5925 5926 5927 5928 5929 5930 5931 5932 5933 5934 5935 5936 5937 5938 5939 5940 5941 5942 5943 5944 5945 5946 5947 5948 5949 5950 5951 | |
register_preloop_hook
Register a function to be called at the beginning of the command loop.
register_postloop_hook
Register a function to be called at the end of the command loop.
register_postparsing_hook
Register a function to be called after parsing user input but before running the command.
Source code in cmd2/cmd2.py
register_precmd_hook
Register a hook to be called before the command function.
Source code in cmd2/cmd2.py
register_postcmd_hook
Register a hook to be called after the command function.
Source code in cmd2/cmd2.py
register_cmdfinalization_hook
Register a hook to be called after a command is completed, whether it completes successfully or not.