cmd2.Cmd
cmd2.Cmd
Cmd(
completekey=None,
stdin=None,
stdout=None,
*,
allow_cli_args=True,
allow_clipboard=True,
allow_redirection=True,
auto_load_commands=False,
auto_suggest=True,
bottom_toolbar=False,
command_sets=None,
include_ipy=False,
include_py=False,
intro="",
multiline_commands=None,
persistent_history_file="",
persistent_history_length=1000,
shortcuts=None,
silence_startup_script=False,
startup_script="",
suggest_similar_command=False,
terminators=None,
)
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
|
name of a completion key, default to 'tab'. (If None or an empty string, 'tab' is used)
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:
|
allow_cli_args
|
if
TYPE:
|
allow_clipboard
|
If False, cmd2 will disable clipboard interactions
TYPE:
|
allow_redirection
|
If
TYPE:
|
auto_load_commands
|
If True, cmd2 will check for all subclasses of
TYPE:
|
auto_suggest
|
If True, cmd2 will provide fish shell style auto-suggestions based on history. User can press right-arrow key to accept the provided suggestion.
TYPE:
|
bottom_toolbar
|
if
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:
|
include_ipy
|
should the "ipy" command be included for an embedded IPython shell
TYPE:
|
include_py
|
should the "py" command be included for an embedded Python shell
TYPE:
|
intro
|
introduction to display at startup
TYPE:
|
multiline_commands
|
Iterable of commands allowed to accept multi-line input
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:
|
shortcuts
|
Mapping containing shortcuts for commands. If not supplied, then defaults to constants.DEFAULT_SHORTCUTS. If you do not want any shortcuts, pass None and an empty dictionary will be created.
TYPE:
|
silence_startup_script
|
if
TYPE:
|
startup_script
|
file path to a script to execute at startup
TYPE:
|
suggest_similar_command
|
if
TYPE:
|
terminators
|
Iterable 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 None.
TYPE:
|
Source code in cmd2/cmd2.py
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 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 | |
traceback_kwargs
instance-attribute
traceback_kwargs = {
"width": 100,
"code_width": None,
"show_locals": False,
"max_frames": 100,
"word_wrap": True,
"indent_guides": True,
}
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
Property needed to support do_set when it reads allow_style.
traceback_show_locals
property
writable
Property needed to support do_set when it reads traceback_show_locals.
traceback_width
property
writable
Property needed to support do_set when it reads traceback_width.
visible_prompt
property
Read-only property to get the visible prompt with any ANSI style sequences stripped.
Useful for test frameworks doing comparisons without having to worry about color/style.
| RETURNS | DESCRIPTION |
|---|---|
str
|
the stripped prompt |
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[Any]]
|
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[Any] | 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
839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 | |
unregister_command_set
Uninstalls a CommandSet and unloads all associated commands.
| PARAMETER | DESCRIPTION |
|---|---|
cmdset
|
CommandSet to uninstall
TYPE:
|
Source code in cmd2/cmd2.py
get_root_parser_and_subcmd_path
Tokenize a command string and resolve the associated root parser and relative subcommand path.
This helper handles the initial resolution of a command string (e.g., 'foo bar baz') by identifying 'foo' as the root command, retrieving its associated parser, and returning any remaining tokens (['bar', 'baz']) as a path relative to that parser for further traversal.
| PARAMETER | DESCRIPTION |
|---|---|
command
|
full space-delimited command path leading to a parser (e.g. 'foo' or 'foo bar')
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
tuple[Cmd2ArgumentParser, list[str]]
|
a tuple containing the Cmd2ArgumentParser for the root command and a list of strings representing the relative path to the desired hosting parser. |
| RAISES | DESCRIPTION |
|---|---|
ValueError
|
if the command is empty, the root command is not found, or the root command does not use an argparse parser. |
Source code in cmd2/cmd2.py
attach_subcommand
Attach a parser as a subcommand to a command at the specified path.
| PARAMETER | DESCRIPTION |
|---|---|
record
|
SubcommandRecord object describing the subcommand
TYPE:
|
| RAISES | DESCRIPTION |
|---|---|
TypeError
|
if record.parser is not an instance of Cmd2ArgumentParser (or subclass) |
ValueError
|
if the command path is invalid, doesn't support subcommands, or the subcommand already exists |
Source code in cmd2/cmd2.py
detach_subcommand
Detach a subcommand from a command at the specified path.
| PARAMETER | DESCRIPTION |
|---|---|
command
|
full command path (space-delimited) leading to the parser hosting the subcommand to be detached (e.g. 'foo bar')
TYPE:
|
subcommand
|
name of the subcommand to detach
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
SubcommandRecord
|
a SubcommandRecord object describing the detached subcommand |
| RAISES | DESCRIPTION |
|---|---|
ValueError
|
if the command path is invalid or the subcommand doesn't exist |
Source code in cmd2/cmd2.py
detach_all_subcommands
Detach all subcommands from a command at the specified path.
| PARAMETER | DESCRIPTION |
|---|---|
command
|
full command path (space-delimited) leading to the parser hosting the subcommands to be detached (e.g. 'foo bar')
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
list[SubcommandRecord]
|
a list of SubcommandRecord objects describing the detached subcommands |
| RAISES | DESCRIPTION |
|---|---|
ValueError
|
if the command path is invalid or the command doesn't support subcommands |
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
1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 | |
print_to
print_to(
file,
*objects,
sep=" ",
end="\n",
style=None,
soft_wrap=True,
justify=None,
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. Defaults to True. If True, text that doesn't fit will run on to the following line, just like the built-in print() function. This is useful for raw text and logs. If False, Rich wraps text to fit the terminal width. Set this to False when printing structured Renderables like Tables, Panels, or Columns to ensure they render as expected. For example, when soft_wrap is True Panels truncate text which is wider than the terminal.
TYPE:
|
justify
|
justify method ("left", "center", "right", "full"). Defaults to None.
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 console.print().
TYPE:
|
kwargs
|
Arbitrary keyword arguments. This allows subclasses to extend the signature of this
method and still call See the Rich documentation for more details on emoji codes, markup tags, and highlighting.
TYPE:
|
Source code in cmd2/cmd2.py
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 1583 1584 1585 | |
poutput
poutput(
*objects,
sep=" ",
end="\n",
style=None,
soft_wrap=True,
justify=None,
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,
justify=None,
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,
justify=None,
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,
justify=None,
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
format_exception
Format an exception for printing.
If debug is true, a full traceback is included, if one exists.
| PARAMETER | DESCRIPTION |
|---|---|
exception
|
the exception to be printed.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
str
|
a formatted exception string |
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,
justify=None,
emoji=False,
markup=False,
highlight=False,
rich_print_kwargs=None,
**kwargs,
)
Print nonessential feedback where the output can be silenced with the quiet 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,
justify=None,
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. For details on the other parameters, refer to the
TYPE:
|
Source code in cmd2/cmd2.py
1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 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 | |
ppretty
ppretty(
obj,
*,
file=None,
indent_size=4,
indent_guides=True,
max_length=None,
max_string=None,
max_depth=None,
expand_all=False,
end="\n",
)
Pretty print an object.
This is a cmd2-compatible replacement for rich.pretty.pprint().
| PARAMETER | DESCRIPTION |
|---|---|
obj
|
object to pretty print
TYPE:
|
file
|
file stream being written to or None for self.stdout. Defaults to None.
TYPE:
|
indent_size
|
number of spaces in indent. Defaults to 4.
TYPE:
|
indent_guides
|
enable indentation guides. Defaults to True.
TYPE:
|
max_length
|
maximum length of containers before abbreviating, or None for no abbreviation. Defaults to None.
TYPE:
|
max_string
|
maximum length of strings before truncating, or None to disable. Defaults to None.
TYPE:
|
max_depth
|
maximum depth for nested data structures, or None for unlimited depth. Defaults to None.
TYPE:
|
expand_all
|
Expand all containers. Defaults to False.
TYPE:
|
end
|
string to write at end of printed text. Defaults to a newline.
TYPE:
|
Source code in cmd2/cmd2.py
get_bottom_toolbar
Get the bottom toolbar content.
If self.bottom_toolbar is False, returns None.
Otherwise returns tokens for prompt-toolkit to populate in the bottom toolbar.
NOTE: This content can extend over multiple lines. However we would recommend keeping it to a single line or two lines maximum.
Source code in cmd2/cmd2.py
get_rprompt
Provide text to populate prompt-toolkit right prompt with.
Override this if you want a right-prompt displaying contetual information useful for your application. This could be information like current Git branch, time, current working directory, etc that is displayed without cluttering the main input area.
| RETURNS | DESCRIPTION |
|---|---|
str | FormattedText | None
|
any type of formatted text to display as the right prompt |
Source code in cmd2/cmd2.py
tokens_for_completion
Get all tokens through the one being completed, used by 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 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
2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 | |
basic_complete
Perform completion without considering line contents or cursor position.
Strings are matched directly while CompletionItems are matched against their 'text' member.
| 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 items being matched against
TYPE:
|
sort
|
if True, then results will be sorted. If False, then items will be in the same order they appeared in match_against.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
Completions
|
a Completions object |
Source code in cmd2/cmd2.py
delimiter_complete
Perform completion against a list but each match is split on a delimiter.
Only the portion of the match being 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 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 |
|---|---|
Completions
|
a Completions object |
Source code in cmd2/cmd2.py
2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 | |
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 |
|---|---|
Completions
|
a Completions object |
Source code in cmd2/cmd2.py
2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 | |
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 |
|---|---|
Completions
|
a Completions object |
Source code in cmd2/cmd2.py
complete
Handle completion for an input line.
| PARAMETER | DESCRIPTION |
|---|---|
text
|
the current word that user is typing
TYPE:
|
line
|
current input line
TYPE:
|
begidx
|
beginning index of text
TYPE:
|
endidx
|
ending index of text
TYPE:
|
custom_settings
|
used when not completing the main command line
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
Completions
|
a Completions object |
Source code in cmd2/cmd2.py
2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 | |
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
pre_prompt
Ran just before the prompt is displayed (and after the event loop has started).
This is the ideal location to update self.prompt or any other state that should
be current when the prompt appears.
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
onecmd_plus_hooks
onecmd_plus_hooks(
line,
*,
add_to_history=True,
raise_keyboard_interrupt=False,
py_bridge_call=False,
)
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:
|
| RETURNS | DESCRIPTION |
|---|---|
bool
|
True if running of commands should stop |
Source code in cmd2/cmd2.py
2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 | |
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
get_command_func
Get the bound command function for a command.
| PARAMETER | DESCRIPTION |
|---|---|
command
|
the name of the command
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
BoundCommandFunc | None
|
the bound function implementing the command, or None if not found |
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
completedefault
Call to complete an input line when no command-specific complete_*() method is available.
This method is only called for non-argparse-based commands.
By default, it returns a Completions object with no matches.
Source code in cmd2/cmd2.py
read_input
read_input(
prompt="",
*,
history=None,
preserve_quotes=False,
choices=None,
choices_provider=None,
completer=None,
parser=None,
)
Read a line of input with optional completion and history.
| PARAMETER | DESCRIPTION |
|---|---|
prompt
|
prompt to display to user
TYPE:
|
history
|
optional Sequence of strings to use for up-arrow history. 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:
|
preserve_quotes
|
if True, then quoted tokens will keep their quotes when processed by ArgparseCompleter. This is helpful in cases when you're 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
|
completion function that provides choices for single argument
TYPE:
|
parser
|
an argument parser which supports the completion of multiple arguments
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
str
|
the line read from stdin with all trailing new lines removed |
| RAISES | DESCRIPTION |
|---|---|
EOFError
|
if the input stream is closed or the user signals EOF (e.g., Ctrl+D) |
Exception
|
any other exceptions raised by prompt() |
Source code in cmd2/cmd2.py
read_secret
Read a secret from stdin without displaying the value on the screen.
| PARAMETER | DESCRIPTION |
|---|---|
prompt
|
prompt to display to user
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
str
|
the secret read from stdin with all trailing new lines removed |
| RAISES | DESCRIPTION |
|---|---|
EOFError
|
if the input stream is closed or the user signals EOF (e.g., Ctrl+D) |
Exception
|
any other exceptions raised by prompt() |
Source code in cmd2/cmd2.py
do_alias
macro_arg_complete
Completes arguments to a macro.
Its default behavior is to call path_complete, but you can override this as needed.
| 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 |
|---|---|
Completions
|
a Completions object |
Source code in cmd2/cmd2.py
do_macro
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
4321 4322 4323 4324 4325 4326 4327 4328 4329 4330 4331 4332 4333 4334 4335 4336 4337 4338 4339 4340 4341 4342 4343 4344 4345 4346 4347 4348 4349 4350 4351 4352 4353 4354 4355 4356 4357 4358 4359 4360 4361 4362 4363 4364 4365 4366 4367 4368 4369 4370 4371 4372 4373 4374 4375 4376 4377 4378 4379 4380 4381 4382 4383 4384 4385 4386 4387 4388 4389 4390 | |
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
|
Sequence 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
|
Sequence 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
|
Sequence 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 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
4575 4576 4577 4578 4579 4580 4581 4582 4583 4584 4585 4586 4587 4588 4589 4590 4591 4592 4593 4594 4595 4596 4597 4598 4599 4600 4601 4602 4603 4604 4605 4606 4607 4608 4609 4610 4611 4612 4613 4614 4615 4616 4617 4618 4619 4620 4621 4622 4623 4624 4625 4626 4627 4628 4629 4630 4631 4632 4633 4634 4635 4636 4637 4638 4639 | |
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
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 5173 5174 5175 | |
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
5233 5234 5235 5236 5237 5238 5239 5240 5241 5242 5243 5244 5245 5246 5247 5248 5249 5250 5251 5252 5253 5254 5255 5256 5257 5258 5259 5260 5261 5262 5263 5264 5265 5266 5267 5268 5269 5270 5271 5272 5273 5274 5275 5276 5277 5278 5279 5280 5281 5282 5283 5284 5285 5286 5287 5288 5289 5290 5291 5292 5293 5294 5295 5296 5297 5298 5299 5300 5301 5302 5303 5304 5305 5306 5307 5308 5309 5310 5311 5312 5313 5314 5315 5316 5317 5318 | |
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
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
add_alert
Queue an asynchronous alert to be displayed when the prompt is active.
Examples: add_alert(msg="System error!") # Print message only add_alert(prompt="user@host> ") # Update prompt only add_alert(msg="Done", prompt="> ") # Update both
| PARAMETER | DESCRIPTION |
|---|---|
msg
|
an optional message to be printed above the prompt.
TYPE:
|
prompt
|
an optional string to dynamically replace the current prompt.
TYPE:
|
Source code in cmd2/cmd2.py
set_window_title
staticmethod
Set the terminal window title.
| PARAMETER | DESCRIPTION |
|---|---|
title
|
the new window title
TYPE:
|
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 replace its functions with disabled versions.
| 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. This provides the following extra features provided by cmd2: - intro banner - exit code
| PARAMETER | DESCRIPTION |
|---|---|
intro
|
if provided this overrides self.intro and serves as the intro banner printed once at start
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
int
|
exit code |
Source code in cmd2/cmd2.py
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.