cmd2 2.5.6__tar.gz → 2.5.8__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (251) hide show
  1. {cmd2-2.5.6 → cmd2-2.5.8}/CHANGELOG.md +9 -0
  2. {cmd2-2.5.6 → cmd2-2.5.8}/PKG-INFO +61 -60
  3. cmd2-2.5.8/README.md +165 -0
  4. {cmd2-2.5.6 → cmd2-2.5.8}/cmd2/ansi.py +0 -3
  5. {cmd2-2.5.6 → cmd2-2.5.8}/cmd2/cmd2.py +231 -244
  6. {cmd2-2.5.6 → cmd2-2.5.8}/cmd2/decorators.py +3 -1
  7. {cmd2-2.5.6 → cmd2-2.5.8}/cmd2.egg-info/PKG-INFO +61 -60
  8. cmd2-2.5.8/cmd2.png +0 -0
  9. {cmd2-2.5.6 → cmd2-2.5.8}/examples/colors.py +1 -1
  10. {cmd2-2.5.6 → cmd2-2.5.8}/examples/initialization.py +1 -1
  11. {cmd2-2.5.6 → cmd2-2.5.8}/examples/override_parser.py +1 -1
  12. {cmd2-2.5.6 → cmd2-2.5.8}/examples/pirate.py +1 -1
  13. {cmd2-2.5.6 → cmd2-2.5.8}/examples/python_scripting.py +2 -4
  14. {cmd2-2.5.6 → cmd2-2.5.8}/pyproject.toml +1 -0
  15. {cmd2-2.5.6 → cmd2-2.5.8}/tests/test_argparse.py +1 -3
  16. {cmd2-2.5.6 → cmd2-2.5.8}/tests/test_cmd2.py +37 -16
  17. {cmd2-2.5.6 → cmd2-2.5.8}/tests/transcripts/from_cmdloop.txt +1 -1
  18. {cmd2-2.5.6 → cmd2-2.5.8}/tests_isolated/test_commandset/test_commandset.py +57 -3
  19. cmd2-2.5.6/README.md +0 -164
  20. cmd2-2.5.6/cmd2.png +0 -0
  21. {cmd2-2.5.6 → cmd2-2.5.8}/.readthedocs.yaml +0 -0
  22. {cmd2-2.5.6 → cmd2-2.5.8}/LICENSE +0 -0
  23. {cmd2-2.5.6 → cmd2-2.5.8}/MANIFEST.in +0 -0
  24. {cmd2-2.5.6 → cmd2-2.5.8}/Pipfile +0 -0
  25. {cmd2-2.5.6 → cmd2-2.5.8}/cmd2/__init__.py +0 -0
  26. {cmd2-2.5.6 → cmd2-2.5.8}/cmd2/argparse_completer.py +0 -0
  27. {cmd2-2.5.6 → cmd2-2.5.8}/cmd2/argparse_custom.py +0 -0
  28. {cmd2-2.5.6 → cmd2-2.5.8}/cmd2/clipboard.py +0 -0
  29. {cmd2-2.5.6 → cmd2-2.5.8}/cmd2/command_definition.py +0 -0
  30. {cmd2-2.5.6 → cmd2-2.5.8}/cmd2/constants.py +0 -0
  31. {cmd2-2.5.6 → cmd2-2.5.8}/cmd2/exceptions.py +0 -0
  32. {cmd2-2.5.6 → cmd2-2.5.8}/cmd2/history.py +0 -0
  33. {cmd2-2.5.6 → cmd2-2.5.8}/cmd2/parsing.py +0 -0
  34. {cmd2-2.5.6 → cmd2-2.5.8}/cmd2/plugin.py +0 -0
  35. {cmd2-2.5.6 → cmd2-2.5.8}/cmd2/py.typed +0 -0
  36. {cmd2-2.5.6 → cmd2-2.5.8}/cmd2/py_bridge.py +0 -0
  37. {cmd2-2.5.6 → cmd2-2.5.8}/cmd2/rl_utils.py +0 -0
  38. {cmd2-2.5.6 → cmd2-2.5.8}/cmd2/table_creator.py +0 -0
  39. {cmd2-2.5.6 → cmd2-2.5.8}/cmd2/transcript.py +0 -0
  40. {cmd2-2.5.6 → cmd2-2.5.8}/cmd2/utils.py +0 -0
  41. {cmd2-2.5.6 → cmd2-2.5.8}/cmd2.egg-info/SOURCES.txt +0 -0
  42. {cmd2-2.5.6 → cmd2-2.5.8}/cmd2.egg-info/dependency_links.txt +0 -0
  43. {cmd2-2.5.6 → cmd2-2.5.8}/cmd2.egg-info/requires.txt +0 -0
  44. {cmd2-2.5.6 → cmd2-2.5.8}/cmd2.egg-info/top_level.txt +0 -0
  45. {cmd2-2.5.6 → cmd2-2.5.8}/docs/Makefile +0 -0
  46. {cmd2-2.5.6 → cmd2-2.5.8}/docs/api/ansi.rst +0 -0
  47. {cmd2-2.5.6 → cmd2-2.5.8}/docs/api/argparse_completer.rst +0 -0
  48. {cmd2-2.5.6 → cmd2-2.5.8}/docs/api/argparse_custom.rst +0 -0
  49. {cmd2-2.5.6 → cmd2-2.5.8}/docs/api/cmd.rst +0 -0
  50. {cmd2-2.5.6 → cmd2-2.5.8}/docs/api/command_definition.rst +0 -0
  51. {cmd2-2.5.6 → cmd2-2.5.8}/docs/api/constants.rst +0 -0
  52. {cmd2-2.5.6 → cmd2-2.5.8}/docs/api/decorators.rst +0 -0
  53. {cmd2-2.5.6 → cmd2-2.5.8}/docs/api/exceptions.rst +0 -0
  54. {cmd2-2.5.6 → cmd2-2.5.8}/docs/api/history.rst +0 -0
  55. {cmd2-2.5.6 → cmd2-2.5.8}/docs/api/index.rst +0 -0
  56. {cmd2-2.5.6 → cmd2-2.5.8}/docs/api/parsing.rst +0 -0
  57. {cmd2-2.5.6 → cmd2-2.5.8}/docs/api/plugin.rst +0 -0
  58. {cmd2-2.5.6 → cmd2-2.5.8}/docs/api/plugin_external_test.rst +0 -0
  59. {cmd2-2.5.6 → cmd2-2.5.8}/docs/api/py_bridge.rst +0 -0
  60. {cmd2-2.5.6 → cmd2-2.5.8}/docs/api/table_creator.rst +0 -0
  61. {cmd2-2.5.6 → cmd2-2.5.8}/docs/api/utils.rst +0 -0
  62. {cmd2-2.5.6 → cmd2-2.5.8}/docs/conf.py +0 -0
  63. {cmd2-2.5.6 → cmd2-2.5.8}/docs/doc_conventions.rst +0 -0
  64. {cmd2-2.5.6 → cmd2-2.5.8}/docs/examples/alternate_event_loops.rst +0 -0
  65. {cmd2-2.5.6 → cmd2-2.5.8}/docs/examples/first_app.rst +0 -0
  66. {cmd2-2.5.6 → cmd2-2.5.8}/docs/examples/index.rst +0 -0
  67. {cmd2-2.5.6 → cmd2-2.5.8}/docs/features/argument_processing.rst +0 -0
  68. {cmd2-2.5.6 → cmd2-2.5.8}/docs/features/builtin_commands.rst +0 -0
  69. {cmd2-2.5.6 → cmd2-2.5.8}/docs/features/clipboard.rst +0 -0
  70. {cmd2-2.5.6 → cmd2-2.5.8}/docs/features/commands.rst +0 -0
  71. {cmd2-2.5.6 → cmd2-2.5.8}/docs/features/completion.rst +0 -0
  72. {cmd2-2.5.6 → cmd2-2.5.8}/docs/features/disable_commands.rst +0 -0
  73. {cmd2-2.5.6 → cmd2-2.5.8}/docs/features/embedded_python_shells.rst +0 -0
  74. {cmd2-2.5.6 → cmd2-2.5.8}/docs/features/generating_output.rst +0 -0
  75. {cmd2-2.5.6 → cmd2-2.5.8}/docs/features/help.rst +0 -0
  76. {cmd2-2.5.6 → cmd2-2.5.8}/docs/features/history.rst +0 -0
  77. {cmd2-2.5.6 → cmd2-2.5.8}/docs/features/hooks.rst +0 -0
  78. {cmd2-2.5.6 → cmd2-2.5.8}/docs/features/index.rst +0 -0
  79. {cmd2-2.5.6 → cmd2-2.5.8}/docs/features/initialization.rst +0 -0
  80. {cmd2-2.5.6 → cmd2-2.5.8}/docs/features/misc.rst +0 -0
  81. {cmd2-2.5.6 → cmd2-2.5.8}/docs/features/modular_commands.rst +0 -0
  82. {cmd2-2.5.6 → cmd2-2.5.8}/docs/features/multiline_commands.rst +0 -0
  83. {cmd2-2.5.6 → cmd2-2.5.8}/docs/features/os.rst +0 -0
  84. {cmd2-2.5.6 → cmd2-2.5.8}/docs/features/packaging.rst +0 -0
  85. {cmd2-2.5.6 → cmd2-2.5.8}/docs/features/plugins.rst +0 -0
  86. {cmd2-2.5.6 → cmd2-2.5.8}/docs/features/prompt.rst +0 -0
  87. {cmd2-2.5.6 → cmd2-2.5.8}/docs/features/redirection.rst +0 -0
  88. {cmd2-2.5.6 → cmd2-2.5.8}/docs/features/scripting.rst +0 -0
  89. {cmd2-2.5.6 → cmd2-2.5.8}/docs/features/settings.rst +0 -0
  90. {cmd2-2.5.6 → cmd2-2.5.8}/docs/features/shortcuts_aliases_macros.rst +0 -0
  91. {cmd2-2.5.6 → cmd2-2.5.8}/docs/features/startup_commands.rst +0 -0
  92. {cmd2-2.5.6 → cmd2-2.5.8}/docs/features/table_creation.rst +0 -0
  93. {cmd2-2.5.6 → cmd2-2.5.8}/docs/features/transcripts.rst +0 -0
  94. {cmd2-2.5.6 → cmd2-2.5.8}/docs/index.rst +0 -0
  95. {cmd2-2.5.6 → cmd2-2.5.8}/docs/make.bat +0 -0
  96. {cmd2-2.5.6 → cmd2-2.5.8}/docs/migrating/incompatibilities.rst +0 -0
  97. {cmd2-2.5.6 → cmd2-2.5.8}/docs/migrating/index.rst +0 -0
  98. {cmd2-2.5.6 → cmd2-2.5.8}/docs/migrating/minimum.rst +0 -0
  99. {cmd2-2.5.6 → cmd2-2.5.8}/docs/migrating/next_steps.rst +0 -0
  100. {cmd2-2.5.6 → cmd2-2.5.8}/docs/migrating/summary.rst +0 -0
  101. {cmd2-2.5.6 → cmd2-2.5.8}/docs/migrating/why.rst +0 -0
  102. {cmd2-2.5.6 → cmd2-2.5.8}/docs/overview/alternatives.rst +0 -0
  103. {cmd2-2.5.6 → cmd2-2.5.8}/docs/overview/index.rst +0 -0
  104. {cmd2-2.5.6 → cmd2-2.5.8}/docs/overview/installation.rst +0 -0
  105. {cmd2-2.5.6 → cmd2-2.5.8}/docs/overview/integrating.rst +0 -0
  106. {cmd2-2.5.6 → cmd2-2.5.8}/docs/overview/resources.rst +0 -0
  107. {cmd2-2.5.6 → cmd2-2.5.8}/docs/overview/summary.rst +0 -0
  108. {cmd2-2.5.6 → cmd2-2.5.8}/docs/plugins/external_test.rst +0 -0
  109. {cmd2-2.5.6 → cmd2-2.5.8}/docs/plugins/index.rst +0 -0
  110. {cmd2-2.5.6 → cmd2-2.5.8}/docs/requirements.txt +0 -0
  111. {cmd2-2.5.6 → cmd2-2.5.8}/docs/testing.rst +0 -0
  112. {cmd2-2.5.6 → cmd2-2.5.8}/examples/.cmd2rc +0 -0
  113. {cmd2-2.5.6 → cmd2-2.5.8}/examples/alias_startup.py +0 -0
  114. {cmd2-2.5.6 → cmd2-2.5.8}/examples/arg_decorators.py +0 -0
  115. {cmd2-2.5.6 → cmd2-2.5.8}/examples/arg_print.py +0 -0
  116. {cmd2-2.5.6 → cmd2-2.5.8}/examples/argparse_completion.py +0 -0
  117. {cmd2-2.5.6 → cmd2-2.5.8}/examples/async_printing.py +0 -0
  118. {cmd2-2.5.6 → cmd2-2.5.8}/examples/basic.py +0 -0
  119. {cmd2-2.5.6 → cmd2-2.5.8}/examples/basic_completion.py +0 -0
  120. {cmd2-2.5.6 → cmd2-2.5.8}/examples/cmd_as_argument.py +0 -0
  121. {cmd2-2.5.6 → cmd2-2.5.8}/examples/custom_parser.py +0 -0
  122. {cmd2-2.5.6 → cmd2-2.5.8}/examples/decorator_example.py +0 -0
  123. {cmd2-2.5.6 → cmd2-2.5.8}/examples/default_categories.py +0 -0
  124. {cmd2-2.5.6 → cmd2-2.5.8}/examples/dynamic_commands.py +0 -0
  125. {cmd2-2.5.6 → cmd2-2.5.8}/examples/environment.py +0 -0
  126. {cmd2-2.5.6 → cmd2-2.5.8}/examples/event_loops.py +0 -0
  127. {cmd2-2.5.6 → cmd2-2.5.8}/examples/example.py +0 -0
  128. {cmd2-2.5.6 → cmd2-2.5.8}/examples/exit_code.py +0 -0
  129. {cmd2-2.5.6 → cmd2-2.5.8}/examples/first_app.py +0 -0
  130. {cmd2-2.5.6 → cmd2-2.5.8}/examples/hello_cmd2.py +0 -0
  131. {cmd2-2.5.6 → cmd2-2.5.8}/examples/help_categories.py +0 -0
  132. {cmd2-2.5.6 → cmd2-2.5.8}/examples/hooks.py +0 -0
  133. {cmd2-2.5.6 → cmd2-2.5.8}/examples/migrating.py +0 -0
  134. {cmd2-2.5.6 → cmd2-2.5.8}/examples/modular_commands/__init__.py +0 -0
  135. {cmd2-2.5.6 → cmd2-2.5.8}/examples/modular_commands/commandset_basic.py +0 -0
  136. {cmd2-2.5.6 → cmd2-2.5.8}/examples/modular_commands/commandset_complex.py +0 -0
  137. {cmd2-2.5.6 → cmd2-2.5.8}/examples/modular_commands/commandset_custominit.py +0 -0
  138. {cmd2-2.5.6 → cmd2-2.5.8}/examples/modular_commands_basic.py +0 -0
  139. {cmd2-2.5.6 → cmd2-2.5.8}/examples/modular_commands_dynamic.py +0 -0
  140. {cmd2-2.5.6 → cmd2-2.5.8}/examples/modular_commands_main.py +0 -0
  141. {cmd2-2.5.6 → cmd2-2.5.8}/examples/modular_subcommands.py +0 -0
  142. {cmd2-2.5.6 → cmd2-2.5.8}/examples/paged_output.py +0 -0
  143. {cmd2-2.5.6 → cmd2-2.5.8}/examples/persistent_history.py +0 -0
  144. {cmd2-2.5.6 → cmd2-2.5.8}/examples/read_input.py +0 -0
  145. {cmd2-2.5.6 → cmd2-2.5.8}/examples/remove_builtin_commands.py +0 -0
  146. {cmd2-2.5.6 → cmd2-2.5.8}/examples/remove_settable.py +0 -0
  147. {cmd2-2.5.6 → cmd2-2.5.8}/examples/scripts/arg_printer.py +0 -0
  148. {cmd2-2.5.6 → cmd2-2.5.8}/examples/scripts/conditional.py +0 -0
  149. {cmd2-2.5.6 → cmd2-2.5.8}/examples/scripts/nested.txt +0 -0
  150. {cmd2-2.5.6 → cmd2-2.5.8}/examples/scripts/quit.txt +0 -0
  151. {cmd2-2.5.6 → cmd2-2.5.8}/examples/scripts/save_help_text.py +0 -0
  152. {cmd2-2.5.6 → cmd2-2.5.8}/examples/scripts/script.py +0 -0
  153. {cmd2-2.5.6 → cmd2-2.5.8}/examples/scripts/script.txt +0 -0
  154. {cmd2-2.5.6 → cmd2-2.5.8}/examples/subcommands.py +0 -0
  155. {cmd2-2.5.6 → cmd2-2.5.8}/examples/table_creation.py +0 -0
  156. {cmd2-2.5.6 → cmd2-2.5.8}/examples/transcripts/exampleSession.txt +0 -0
  157. {cmd2-2.5.6 → cmd2-2.5.8}/examples/transcripts/pirate.transcript +0 -0
  158. {cmd2-2.5.6 → cmd2-2.5.8}/examples/transcripts/quit.txt +0 -0
  159. {cmd2-2.5.6 → cmd2-2.5.8}/examples/transcripts/transcript_regex.txt +0 -0
  160. {cmd2-2.5.6 → cmd2-2.5.8}/examples/unicode_commands.py +0 -0
  161. {cmd2-2.5.6 → cmd2-2.5.8}/plugins/README.txt +0 -0
  162. {cmd2-2.5.6 → cmd2-2.5.8}/plugins/ext_test/CHANGELOG.md +0 -0
  163. {cmd2-2.5.6 → cmd2-2.5.8}/plugins/ext_test/README.md +0 -0
  164. {cmd2-2.5.6 → cmd2-2.5.8}/plugins/ext_test/build-pyenvs.sh +0 -0
  165. {cmd2-2.5.6 → cmd2-2.5.8}/plugins/ext_test/cmd2_ext_test/__init__.py +0 -0
  166. {cmd2-2.5.6 → cmd2-2.5.8}/plugins/ext_test/cmd2_ext_test/cmd2_ext_test.py +0 -0
  167. {cmd2-2.5.6 → cmd2-2.5.8}/plugins/ext_test/cmd2_ext_test/py.typed +0 -0
  168. {cmd2-2.5.6 → cmd2-2.5.8}/plugins/ext_test/cmd2_ext_test/pylintrc +0 -0
  169. {cmd2-2.5.6 → cmd2-2.5.8}/plugins/ext_test/examples/example.py +0 -0
  170. {cmd2-2.5.6 → cmd2-2.5.8}/plugins/ext_test/noxfile.py +0 -0
  171. {cmd2-2.5.6 → cmd2-2.5.8}/plugins/ext_test/pyproject.toml +0 -0
  172. {cmd2-2.5.6 → cmd2-2.5.8}/plugins/ext_test/setup.py +0 -0
  173. {cmd2-2.5.6 → cmd2-2.5.8}/plugins/ext_test/tasks.py +0 -0
  174. {cmd2-2.5.6 → cmd2-2.5.8}/plugins/ext_test/tests/__init__.py +0 -0
  175. {cmd2-2.5.6 → cmd2-2.5.8}/plugins/ext_test/tests/pylintrc +0 -0
  176. {cmd2-2.5.6 → cmd2-2.5.8}/plugins/ext_test/tests/test_ext_test.py +0 -0
  177. {cmd2-2.5.6 → cmd2-2.5.8}/plugins/tasks.py +0 -0
  178. {cmd2-2.5.6 → cmd2-2.5.8}/plugins/template/CHANGELOG.md +0 -0
  179. {cmd2-2.5.6 → cmd2-2.5.8}/plugins/template/LICENSE +0 -0
  180. {cmd2-2.5.6 → cmd2-2.5.8}/plugins/template/README.md +0 -0
  181. {cmd2-2.5.6 → cmd2-2.5.8}/plugins/template/build-pyenvs.sh +0 -0
  182. {cmd2-2.5.6 → cmd2-2.5.8}/plugins/template/cmd2_myplugin/__init__.py +0 -0
  183. {cmd2-2.5.6 → cmd2-2.5.8}/plugins/template/cmd2_myplugin/myplugin.py +0 -0
  184. {cmd2-2.5.6 → cmd2-2.5.8}/plugins/template/cmd2_myplugin/pylintrc +0 -0
  185. {cmd2-2.5.6 → cmd2-2.5.8}/plugins/template/examples/example.py +0 -0
  186. {cmd2-2.5.6 → cmd2-2.5.8}/plugins/template/noxfile.py +0 -0
  187. {cmd2-2.5.6 → cmd2-2.5.8}/plugins/template/setup.py +0 -0
  188. {cmd2-2.5.6 → cmd2-2.5.8}/plugins/template/tasks.py +0 -0
  189. {cmd2-2.5.6 → cmd2-2.5.8}/plugins/template/tests/__init__.py +0 -0
  190. {cmd2-2.5.6 → cmd2-2.5.8}/plugins/template/tests/pylintrc +0 -0
  191. {cmd2-2.5.6 → cmd2-2.5.8}/plugins/template/tests/test_myplugin.py +0 -0
  192. {cmd2-2.5.6 → cmd2-2.5.8}/readme_files/shout_out.csv +0 -0
  193. {cmd2-2.5.6 → cmd2-2.5.8}/readme_files/shoutout.txt +0 -0
  194. {cmd2-2.5.6 → cmd2-2.5.8}/setup.cfg +0 -0
  195. {cmd2-2.5.6 → cmd2-2.5.8}/tasks.py +0 -0
  196. {cmd2-2.5.6 → cmd2-2.5.8}/tests/.cmd2rc +0 -0
  197. {cmd2-2.5.6 → cmd2-2.5.8}/tests/__init__.py +0 -0
  198. {cmd2-2.5.6 → cmd2-2.5.8}/tests/conftest.py +0 -0
  199. {cmd2-2.5.6 → cmd2-2.5.8}/tests/pyscript/echo.py +0 -0
  200. {cmd2-2.5.6 → cmd2-2.5.8}/tests/pyscript/environment.py +0 -0
  201. {cmd2-2.5.6 → cmd2-2.5.8}/tests/pyscript/help.py +0 -0
  202. {cmd2-2.5.6 → cmd2-2.5.8}/tests/pyscript/py_locals.py +0 -0
  203. {cmd2-2.5.6 → cmd2-2.5.8}/tests/pyscript/pyscript_dir.py +0 -0
  204. {cmd2-2.5.6 → cmd2-2.5.8}/tests/pyscript/raises_exception.py +0 -0
  205. {cmd2-2.5.6 → cmd2-2.5.8}/tests/pyscript/recursive.py +0 -0
  206. {cmd2-2.5.6 → cmd2-2.5.8}/tests/pyscript/self_in_py.py +0 -0
  207. {cmd2-2.5.6 → cmd2-2.5.8}/tests/pyscript/stdout_capture.py +0 -0
  208. {cmd2-2.5.6 → cmd2-2.5.8}/tests/pyscript/stop.py +0 -0
  209. {cmd2-2.5.6 → cmd2-2.5.8}/tests/relative_multiple.txt +0 -0
  210. {cmd2-2.5.6 → cmd2-2.5.8}/tests/script.py +0 -0
  211. {cmd2-2.5.6 → cmd2-2.5.8}/tests/script.txt +0 -0
  212. {cmd2-2.5.6 → cmd2-2.5.8}/tests/scripts/binary.bin +0 -0
  213. {cmd2-2.5.6 → cmd2-2.5.8}/tests/scripts/empty.txt +0 -0
  214. {cmd2-2.5.6 → cmd2-2.5.8}/tests/scripts/help.txt +0 -0
  215. {cmd2-2.5.6 → cmd2-2.5.8}/tests/scripts/nested.txt +0 -0
  216. {cmd2-2.5.6 → cmd2-2.5.8}/tests/scripts/one_down.txt +0 -0
  217. {cmd2-2.5.6 → cmd2-2.5.8}/tests/scripts/postcmds.txt +0 -0
  218. {cmd2-2.5.6 → cmd2-2.5.8}/tests/scripts/precmds.txt +0 -0
  219. {cmd2-2.5.6 → cmd2-2.5.8}/tests/scripts/utf8.txt +0 -0
  220. {cmd2-2.5.6 → cmd2-2.5.8}/tests/test_ansi.py +0 -0
  221. {cmd2-2.5.6 → cmd2-2.5.8}/tests/test_argparse_completer.py +0 -0
  222. {cmd2-2.5.6 → cmd2-2.5.8}/tests/test_argparse_custom.py +0 -0
  223. {cmd2-2.5.6 → cmd2-2.5.8}/tests/test_completion.py +0 -0
  224. {cmd2-2.5.6 → cmd2-2.5.8}/tests/test_history.py +0 -0
  225. {cmd2-2.5.6 → cmd2-2.5.8}/tests/test_parsing.py +0 -0
  226. {cmd2-2.5.6 → cmd2-2.5.8}/tests/test_plugin.py +0 -0
  227. {cmd2-2.5.6 → cmd2-2.5.8}/tests/test_run_pyscript.py +0 -0
  228. {cmd2-2.5.6 → cmd2-2.5.8}/tests/test_table_creator.py +0 -0
  229. {cmd2-2.5.6 → cmd2-2.5.8}/tests/test_transcript.py +0 -0
  230. {cmd2-2.5.6 → cmd2-2.5.8}/tests/test_utils.py +0 -0
  231. {cmd2-2.5.6 → cmd2-2.5.8}/tests/test_utils_defining_class.py +0 -0
  232. {cmd2-2.5.6 → cmd2-2.5.8}/tests/transcripts/bol_eol.txt +0 -0
  233. {cmd2-2.5.6 → cmd2-2.5.8}/tests/transcripts/characterclass.txt +0 -0
  234. {cmd2-2.5.6 → cmd2-2.5.8}/tests/transcripts/dotstar.txt +0 -0
  235. {cmd2-2.5.6 → cmd2-2.5.8}/tests/transcripts/extension_notation.txt +0 -0
  236. {cmd2-2.5.6 → cmd2-2.5.8}/tests/transcripts/failure.txt +0 -0
  237. {cmd2-2.5.6 → cmd2-2.5.8}/tests/transcripts/multiline_no_regex.txt +0 -0
  238. {cmd2-2.5.6 → cmd2-2.5.8}/tests/transcripts/multiline_regex.txt +0 -0
  239. {cmd2-2.5.6 → cmd2-2.5.8}/tests/transcripts/no_output.txt +0 -0
  240. {cmd2-2.5.6 → cmd2-2.5.8}/tests/transcripts/no_output_last.txt +0 -0
  241. {cmd2-2.5.6 → cmd2-2.5.8}/tests/transcripts/regex_set.txt +0 -0
  242. {cmd2-2.5.6 → cmd2-2.5.8}/tests/transcripts/singleslash.txt +0 -0
  243. {cmd2-2.5.6 → cmd2-2.5.8}/tests/transcripts/slashes_escaped.txt +0 -0
  244. {cmd2-2.5.6 → cmd2-2.5.8}/tests/transcripts/slashslash.txt +0 -0
  245. {cmd2-2.5.6 → cmd2-2.5.8}/tests/transcripts/spaces.txt +0 -0
  246. {cmd2-2.5.6 → cmd2-2.5.8}/tests/transcripts/word_boundaries.txt +0 -0
  247. {cmd2-2.5.6 → cmd2-2.5.8}/tests_isolated/__init__.py +0 -0
  248. {cmd2-2.5.6 → cmd2-2.5.8}/tests_isolated/test_commandset/__init__.py +0 -0
  249. {cmd2-2.5.6 → cmd2-2.5.8}/tests_isolated/test_commandset/conftest.py +0 -0
  250. {cmd2-2.5.6 → cmd2-2.5.8}/tests_isolated/test_commandset/test_argparse_subcommands.py +0 -0
  251. {cmd2-2.5.6 → cmd2-2.5.8}/tests_isolated/test_commandset/test_categories.py +0 -0
@@ -1,3 +1,12 @@
1
+ ## 2.5.8 (December 17, 2024)
2
+ * Bug Fixes
3
+ * Rolled back undocumented changes to printing functions introduced in 2.5.0.
4
+
5
+ ## 2.5.7 (November 22, 2024)
6
+ * Bug Fixes
7
+ * Fixed issue where argument parsers for overridden commands were not being created.
8
+ * Fixed issue where `Cmd.ppaged()` was not writing to the passed in destination.
9
+
1
10
  ## 2.5.6 (November 14, 2024)
2
11
  * Bug Fixes
3
12
  * Fixed type hint for `with_default_category` decorator which caused type checkers to mistype
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cmd2
3
- Version: 2.5.6
3
+ Version: 2.5.8
4
4
  Summary: cmd2 - quickly build feature-rich and user-friendly interactive command line applications in Python
5
5
  Author: cmd2 Contributors
6
6
  License: The MIT License (MIT)
@@ -89,7 +89,6 @@ Requires-Dist: types-setuptools; extra == "validate"
89
89
  [![Documentation Status](https://readthedocs.org/projects/cmd2/badge/?version=latest)](http://cmd2.readthedocs.io/en/latest/?badge=latest)
90
90
  <a href="https://discord.gg/RpVG6tk"><img src="https://img.shields.io/badge/chat-on%20discord-7289da.svg" alt="Chat"></a>
91
91
 
92
-
93
92
  <p align="center">
94
93
  <a href="#the-developers-toolbox">Developer's Toolbox</a> •
95
94
  <a href="#philosophy">Philosophy</a> •
@@ -104,17 +103,15 @@ Requires-Dist: types-setuptools; extra == "validate"
104
103
 
105
104
  cmd2 is a tool for building interactive command line applications in Python. Its goal is to make it
106
105
  quick and easy for developers to build feature-rich and user-friendly interactive command line
107
- applications. It provides a simple API which is an extension of Python's built-in
108
- [cmd](https://docs.python.org/3/library/cmd.html) module. cmd2 provides a wealth of features on top
106
+ applications. It provides a simple API which is an extension of Python's built-in
107
+ [cmd](https://docs.python.org/3/library/cmd.html) module. cmd2 provides a wealth of features on top
109
108
  of cmd to make your life easier and eliminates much of the boilerplate code which would be necessary
110
109
  when using cmd.
111
110
 
112
- The developers toolbox
113
- ----------------------
111
+ ## The developers toolbox
114
112
 
115
113
  ![system schema](https://raw.githubusercontent.com/python-cmd2/cmd2/master/.github/images/graph.drawio.png)
116
114
 
117
-
118
115
  When creating solutions developers have no shortage of tools to create rich and smart user interfaces.
119
116
  System administrators have long been duct taping together brittle workflows based on a menagerie of simple command line tools created by strangers on github and the guy down the hall.
120
117
  Unfortunately, when CLIs become significantly complex the ease of command discoverability tends to fade quickly.
@@ -125,15 +122,13 @@ The price we pay for beautifully colored displays is complexity required to aggr
125
122
  The `cmd2` framework provides a great mixture of both worlds. Application designers can easily create complex applications and rely on the cmd2 library to offer effortless user facing help and extensive tab completion.
126
123
  When users become comfortable with functionality, cmd2 turns into a feature rich library enabling a smooth transition to full automation. If designed with enough forethought, a well implemented cmd2 application can serve as a boutique workflow tool. `cmd2` pulls off this flexibility based on two pillars of philosophy:
127
124
 
128
- * Tab Completion
129
- * Automation Transition
125
+ - Tab Completion
126
+ - Automation Transition
130
127
 
131
- Philosophy
132
- -------------
128
+ ## Philosophy
133
129
 
134
130
  <a href="https://imgflip.com/i/63h03x"><img src="https://i.imgflip.com/63h03x.jpg" title="made at imgflip.com" width="70%" height="%70"/></a>
135
131
 
136
-
137
132
  Deep extensive tab completion and help text generation based on the argparse library create the first pillar of 'ease of command discovery'. The following is a list of features in this category.
138
133
 
139
134
  - Great tab completion of commands, subcommands, file system paths, and shell commands.
@@ -152,9 +147,8 @@ cmd2 creates the second pillar of 'ease of transition to automation' through ali
152
147
  - Powerful and flexible built-in Python scripting of your application using the `run_pyscript` command
153
148
  - Transcripts for use with built-in regression can be automatically generated from `history -t` or `run_script -t`
154
149
 
150
+ ## Installation
155
151
 
156
- Installation
157
- ------------
158
152
  On all operating systems, the latest stable version of `cmd2` can be installed using pip:
159
153
 
160
154
  ```bash
@@ -167,31 +161,26 @@ For information on other installation options, see
167
161
  [Installation Instructions](https://cmd2.readthedocs.io/en/latest/overview/installation.html) in the cmd2
168
162
  documentation.
169
163
 
164
+ ## Documentation
170
165
 
171
- Documentation
172
- -------------
173
166
  The latest documentation for cmd2 can be read online here: https://cmd2.readthedocs.io/en/latest/
174
167
 
175
168
  It is available in HTML, PDF, and ePub formats.
176
169
 
177
-
178
170
  The best way to learn the cmd2 api is to delve into the example applications located in source under examples.
179
171
 
180
- Tutorials
181
- ---------
182
-
183
- * PyOhio 2019 presentation:
184
- * [video](https://www.youtube.com/watch?v=pebeWrTqIIw)
185
- * [slides](https://github.com/python-cmd2/talks/blob/master/PyOhio_2019/cmd2-PyOhio_2019.pdf)
186
- * [example code](https://github.com/python-cmd2/talks/tree/master/PyOhio_2019/examples)
187
- * [Cookiecutter](https://github.com/cookiecutter/cookiecutter) Templates from community
188
- * Basic cookiecutter template for cmd2 application : https://github.com/jayrod/cookiecutter-python-cmd2
189
- * Advanced cookiecutter template with external plugin support : https://github.com/jayrod/cookiecutter-python-cmd2-ext-plug
190
- * [Example Applications](https://github.com/jayrod/cmd2-example-apps)
172
+ ## Tutorials
191
173
 
174
+ - PyOhio 2019 presentation:
175
+ - [video](https://www.youtube.com/watch?v=pebeWrTqIIw)
176
+ - [slides](https://github.com/python-cmd2/talks/blob/master/PyOhio_2019/cmd2-PyOhio_2019.pdf)
177
+ - [example code](https://github.com/python-cmd2/talks/tree/master/PyOhio_2019/examples)
178
+ - [Cookiecutter](https://github.com/cookiecutter/cookiecutter) Templates from community
179
+ - Basic cookiecutter template for cmd2 application : https://github.com/jayrod/cookiecutter-python-cmd2
180
+ - Advanced cookiecutter template with external plugin support : https://github.com/jayrod/cookiecutter-python-cmd2-ext-plug
181
+ - [Example Applications](https://github.com/jayrod/cmd2-example-apps)
192
182
 
193
- Hello World
194
- -----------
183
+ ## Hello World
195
184
 
196
185
  ```python
197
186
  #!/usr/bin/env python
@@ -212,36 +201,48 @@ if __name__ == '__main__':
212
201
 
213
202
  ```
214
203
 
215
-
216
- Found a bug?
217
- ------------
218
-
219
- If you think you've found a bug, please first read through the open [Issues](https://github.com/python-cmd2/cmd2/issues). If you're confident it's a new bug, go ahead and create a new GitHub issue. Be sure to include as much information as possible so we can reproduce the bug. At a minimum, please state the following:
220
-
221
- * ``cmd2`` version
222
- * Python version
223
- * OS name and version
224
- * What you did to cause the bug to occur
225
- * Include any traceback or error message associated with the bug
226
-
227
-
228
- Projects using cmd2
229
- -------------------------------
230
-
231
- | Application Name | Description | |
232
- |-----------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------|---|
233
- | [Jok3r](http://www.jok3r-framework.com) | Network & Web Pentest Automation Framework | |
234
- | [CephFS Shell](https://github.com/ceph/ceph) | [Ceph](https://ceph.com/) is a distributed object, block, and file storage platform | |
235
- | [psiTurk](https://psiturk.org) | An open platform for science on Amazon Mechanical Turk | |
236
- | [Poseidon](https://github.com/CyberReboot/poseidon) | Leverages software-defined networks (SDNs) to acquire and then feed network traffic to a number of machine learning techniques. | |
237
- | [Unipacker](https://github.com/unipacker/unipacker) | Automatic and platform-independent unpacker for Windows binaries based on emulation | |
238
- | [tomcatmanager](https://github.com/tomcatmanager/tomcatmanager) | A command line tool and python library for managing a tomcat server | |
239
- | [Expliot](https://gitlab.com/expliot_framework/expliot) | Internet of Things (IoT) exploitation framework | |
240
- | [mptcpanalyzer]() | Tool to help analyze mptcp pcaps | |
241
- | [clanvas](https://github.com/marklalor/clanvas) | Command-line client for Canvas by Instructure | |
242
-
204
+ ## Found a bug?
205
+
206
+ If you think you've found a bug, please first read through the open [Issues](https://github.com/python-cmd2/cmd2/issues). If you're confident it's a new bug, go ahead and create a new GitHub issue. Be sure to include as much information as possible so we can reproduce the bug. At a minimum, please state the following:
207
+
208
+ - `cmd2` version
209
+ - Python version
210
+ - OS name and version
211
+ - What you did to cause the bug to occur
212
+ - Include any traceback or error message associated with the bug
213
+
214
+ ## Projects using cmd2
215
+
216
+ | Application Name | Description | Organization or Author |
217
+ | --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- |
218
+ | [CephFS Shell](https://github.com/ceph/ceph) | The Ceph File System, or CephFS, is a POSIX-compliant file system built on top of Ceph’s distributed object store | [ceph](https://ceph.com/) |
219
+ | [garak](https://github.com/NVIDIA/garak) | LLM vulnerability scanner that checks if an LLM can be made to fail in a way we don't want | [NVIDIA](https://github.com/NVIDIA) |
220
+ | [medusa](https://github.com/Ch0pin/medusa) | Binary instrumentation framework that that automates processes for the dynamic analysis of Android and iOS Applications | [Ch0pin](https://github.com/Ch0pin) |
221
+ | [InternalBlue](https://github.com/seemoo-lab/internalblue) | Bluetooth experimentation framework for Broadcom and Cypress chips | [Secure Mobile Networking Lab](https://github.com/seemoo-lab) |
222
+ | [SCCMHunter](https://github.com/garrettfoster13/sccmhunter) | A post-ex tool built to streamline identifying, profiling, and attacking SCCM related assets in an Active Directory domain | [Garret Foster](https://github.com/garrettfoster13) |
223
+ | [Unipacker](https://github.com/unipacker/unipacker) | Automatic and platform-independent unpacker for Windows binaries based on emulation | [unipacker](https://github.com/unipacker) |
224
+ | [Frankenstein](https://github.com/seemoo-lab/frankenstein) | Broadcom and Cypress firmware emulation for fuzzing and further full-stack debugging | [Secure Mobile Networking Lab](https://github.com/seemoo-lab) |
225
+ | [Poseidon](https://github.com/faucetsdn/poseidon) | Leverages software-defined networks (SDNs) to acquire and then feed network traffic to a number of machine learning techniques. | [Faucet SDN](https://github.com/faucetsdn) |
226
+ | [DFTimewolf](https://github.com/log2timeline/dftimewolf) | A framework for orchestrating forensic collection, processing and data export | [log2timeline](https://github.com/log2timeline) |
227
+ | [GAP SDK](https://github.com/GreenWaves-Technologies/gap_sdk) | SDK for Greenwaves Technologies' GAP8 IoT Application Processor | [GreenWaves Technologies](https://github.com/GreenWaves-Technologies) |
228
+ | [REW Sploit](https://github.com/REW-sploit/REW-sploit) | Emulate and Dissect Metasploit Framework (MSF) and other attacks | [REW-sploit](https://github.com/REW-sploit) |
229
+ | [tomcatmanager](https://github.com/tomcatmanager/tomcatmanager) | A command line tool and python library for managing a tomcat server | [tomcatmanager](https://github.com/tomcatmanager) |
230
+ | [Falcon Toolkit](https://github.com/CrowdStrike/Falcon-Toolkit) | Unleash the power of the CrowdStrike Falcon Platform at the CLI | [CrowdStrike](https://github.com/CrowdStrike) |
231
+ | [EXPLIoT](https://gitlab.com/expliot_framework/expliot) | Internet of Things Security Testing and Exploitation framework | [expliot_framework](https://gitlab.com/expliot_framework/) |
243
232
 
244
233
  Possibly defunct but still good examples
245
234
 
246
- * [JSShell](https://github.com/Den1al/JSShell)
247
- * [FLASHMINGO](https://github.com/fireeye/flashmingo)
235
+ | Application Name | Description | Organization or Author |
236
+ | ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------- |
237
+ | [Katana](https://github.com/JohnHammond/katana) | Automatic CTF Challenge Solver | [John Hammond](https://github.com/JohnHammond) |
238
+ | [SatanSword](https://github.com/Lucifer1993/SatanSword) (in Chinese) | Comprehensive Penetration Framework for Red Teaming | [Lucifer1993](https://github.com/Lucifer1993) |
239
+ | [Jok3r](http://www.jok3r-framework.com) | Network & Web Pentest Automation Framework | [Koutto](https://github.com/koutto) |
240
+ | [Counterfit](https://github.com/Azure/counterfit) | a CLI that provides a generic automation layer for assessing the security of ML models | [Microsoft Azure](https://github.com/Azure) |
241
+ | [Overlord](https://github.com/qsecure-labs/overlord) | Red Teaming Infrastructure Automation | [QSecure Labs](https://github.com/qsecure-labs) |
242
+ | [Automated Reconnaissance Pipeline](https://github.com/epi052/recon-pipeline) | An automated target reconnaissance pipeline | [epi052](https://github.com/epi052) |
243
+ | [JSShell](https://github.com/Den1al/JSShell) | An interactive multi-user web JavaScript (JS) shell | [Den1al](https://github.com/Den1al) |
244
+ | [RedShell](https://github.com/Verizon/redshell) | An interactive command prompt for red teaming and pentesting | [Verizon](https://github.com/Verizon) |
245
+ | [FLASHMINGO](https://github.com/mandiant/flashmingo) | Automatic analysis of SWF files based on some heuristics. Extensible via plugins. | [Mandiant](https://github.com/mandiant) |
246
+ | [psiTurk](https://github.com/NYUCCL/psiTurk) | An open platform for science on Amazon Mechanical Turk | [NYU Computation and Cognition Lab](https://github.com/NYUCCL) |
247
+
248
+ Note: If you have created an application based on `cmd2` that you would like us to mention here, please get in touch.
cmd2-2.5.8/README.md ADDED
@@ -0,0 +1,165 @@
1
+ <h1 align="center">cmd2 : immersive interactive command line applications</h1>
2
+
3
+ [![Latest Version](https://img.shields.io/pypi/v/cmd2.svg?style=flat-square&label=latest%20stable%20version)](https://pypi.python.org/pypi/cmd2/)
4
+ [![GitHub Actions](https://github.com/python-cmd2/cmd2/workflows/CI/badge.svg)](https://github.com/python-cmd2/cmd2/actions?query=workflow%3ACI)
5
+ [![codecov](https://codecov.io/gh/python-cmd2/cmd2/branch/master/graph/badge.svg)](https://codecov.io/gh/python-cmd2/cmd2)
6
+ [![Documentation Status](https://readthedocs.org/projects/cmd2/badge/?version=latest)](http://cmd2.readthedocs.io/en/latest/?badge=latest)
7
+ <a href="https://discord.gg/RpVG6tk"><img src="https://img.shields.io/badge/chat-on%20discord-7289da.svg" alt="Chat"></a>
8
+
9
+ <p align="center">
10
+ <a href="#the-developers-toolbox">Developer's Toolbox</a> •
11
+ <a href="#philosophy">Philosophy</a> •
12
+ <a href="#installation">Installation</a> •
13
+ <a href="#documentation">Documentation</a> •
14
+ <a href="#tutorials">Tutorials</a> •
15
+ <a href="#hello-world">Hello World</a> •
16
+ <a href="#projects-using-cmd2">Projects using cmd2</a> •
17
+ </p>
18
+
19
+ [![Screenshot](https://raw.githubusercontent.com/python-cmd2/cmd2/master/cmd2.png)](https://youtu.be/DDU_JH6cFsA)
20
+
21
+ cmd2 is a tool for building interactive command line applications in Python. Its goal is to make it
22
+ quick and easy for developers to build feature-rich and user-friendly interactive command line
23
+ applications. It provides a simple API which is an extension of Python's built-in
24
+ [cmd](https://docs.python.org/3/library/cmd.html) module. cmd2 provides a wealth of features on top
25
+ of cmd to make your life easier and eliminates much of the boilerplate code which would be necessary
26
+ when using cmd.
27
+
28
+ ## The developers toolbox
29
+
30
+ ![system schema](https://raw.githubusercontent.com/python-cmd2/cmd2/master/.github/images/graph.drawio.png)
31
+
32
+ When creating solutions developers have no shortage of tools to create rich and smart user interfaces.
33
+ System administrators have long been duct taping together brittle workflows based on a menagerie of simple command line tools created by strangers on github and the guy down the hall.
34
+ Unfortunately, when CLIs become significantly complex the ease of command discoverability tends to fade quickly.
35
+ On the other hand, Web and traditional desktop GUIs are first in class when it comes to easily discovering functionality.
36
+ The price we pay for beautifully colored displays is complexity required to aggregate disperate applications into larger systems.
37
+ `cmd2` fills the niche between high [ease of command discovery](https://clig.dev/#ease-of-discovery) applications and smart workflow automation systems.
38
+
39
+ The `cmd2` framework provides a great mixture of both worlds. Application designers can easily create complex applications and rely on the cmd2 library to offer effortless user facing help and extensive tab completion.
40
+ When users become comfortable with functionality, cmd2 turns into a feature rich library enabling a smooth transition to full automation. If designed with enough forethought, a well implemented cmd2 application can serve as a boutique workflow tool. `cmd2` pulls off this flexibility based on two pillars of philosophy:
41
+
42
+ - Tab Completion
43
+ - Automation Transition
44
+
45
+ ## Philosophy
46
+
47
+ <a href="https://imgflip.com/i/63h03x"><img src="https://i.imgflip.com/63h03x.jpg" title="made at imgflip.com" width="70%" height="%70"/></a>
48
+
49
+ Deep extensive tab completion and help text generation based on the argparse library create the first pillar of 'ease of command discovery'. The following is a list of features in this category.
50
+
51
+ - Great tab completion of commands, subcommands, file system paths, and shell commands.
52
+ - Custom tab completion for user designed commands via simple function overloading.
53
+ - Tab completion from `persistent_history_file` sources added with very little friction.
54
+ - Automatic tab completion of `argparse` flags and optional arguments.
55
+ - Path completion easily enabled.
56
+ - When all else fails, custom tab completion based on `choices_provider` can fill any gaps.
57
+
58
+ <a href="https://imgflip.com/i/66t0y0"><img src="https://i.imgflip.com/66t0y0.jpg" title="made at imgflip.com" width="70%" height="70%"/></a>
59
+
60
+ cmd2 creates the second pillar of 'ease of transition to automation' through alias/macro creation, command line argument parsing and execution of cmd2 scripting.
61
+
62
+ - Flexible alias and macro creation for quick abstraction of commands.
63
+ - Text file scripting of your application with `run_script` (`@`) and `_relative_run_script` (`@@`)
64
+ - Powerful and flexible built-in Python scripting of your application using the `run_pyscript` command
65
+ - Transcripts for use with built-in regression can be automatically generated from `history -t` or `run_script -t`
66
+
67
+ ## Installation
68
+
69
+ On all operating systems, the latest stable version of `cmd2` can be installed using pip:
70
+
71
+ ```bash
72
+ pip install -U cmd2
73
+ ```
74
+
75
+ cmd2 works with Python 3.8+ on Windows, macOS, and Linux. It is pure Python code with few 3rd-party dependencies.
76
+
77
+ For information on other installation options, see
78
+ [Installation Instructions](https://cmd2.readthedocs.io/en/latest/overview/installation.html) in the cmd2
79
+ documentation.
80
+
81
+ ## Documentation
82
+
83
+ The latest documentation for cmd2 can be read online here: https://cmd2.readthedocs.io/en/latest/
84
+
85
+ It is available in HTML, PDF, and ePub formats.
86
+
87
+ The best way to learn the cmd2 api is to delve into the example applications located in source under examples.
88
+
89
+ ## Tutorials
90
+
91
+ - PyOhio 2019 presentation:
92
+ - [video](https://www.youtube.com/watch?v=pebeWrTqIIw)
93
+ - [slides](https://github.com/python-cmd2/talks/blob/master/PyOhio_2019/cmd2-PyOhio_2019.pdf)
94
+ - [example code](https://github.com/python-cmd2/talks/tree/master/PyOhio_2019/examples)
95
+ - [Cookiecutter](https://github.com/cookiecutter/cookiecutter) Templates from community
96
+ - Basic cookiecutter template for cmd2 application : https://github.com/jayrod/cookiecutter-python-cmd2
97
+ - Advanced cookiecutter template with external plugin support : https://github.com/jayrod/cookiecutter-python-cmd2-ext-plug
98
+ - [Example Applications](https://github.com/jayrod/cmd2-example-apps)
99
+
100
+ ## Hello World
101
+
102
+ ```python
103
+ #!/usr/bin/env python
104
+ """A simple cmd2 application."""
105
+ import cmd2
106
+
107
+
108
+ class FirstApp(cmd2.Cmd):
109
+ """A simple cmd2 application."""
110
+
111
+ def do_hello_world(self, _: cmd2.Statement):
112
+ self.poutput('Hello World')
113
+
114
+ if __name__ == '__main__':
115
+ import sys
116
+ c = FirstApp()
117
+ sys.exit(c.cmdloop())
118
+
119
+ ```
120
+
121
+ ## Found a bug?
122
+
123
+ If you think you've found a bug, please first read through the open [Issues](https://github.com/python-cmd2/cmd2/issues). If you're confident it's a new bug, go ahead and create a new GitHub issue. Be sure to include as much information as possible so we can reproduce the bug. At a minimum, please state the following:
124
+
125
+ - `cmd2` version
126
+ - Python version
127
+ - OS name and version
128
+ - What you did to cause the bug to occur
129
+ - Include any traceback or error message associated with the bug
130
+
131
+ ## Projects using cmd2
132
+
133
+ | Application Name | Description | Organization or Author |
134
+ | --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- |
135
+ | [CephFS Shell](https://github.com/ceph/ceph) | The Ceph File System, or CephFS, is a POSIX-compliant file system built on top of Ceph’s distributed object store | [ceph](https://ceph.com/) |
136
+ | [garak](https://github.com/NVIDIA/garak) | LLM vulnerability scanner that checks if an LLM can be made to fail in a way we don't want | [NVIDIA](https://github.com/NVIDIA) |
137
+ | [medusa](https://github.com/Ch0pin/medusa) | Binary instrumentation framework that that automates processes for the dynamic analysis of Android and iOS Applications | [Ch0pin](https://github.com/Ch0pin) |
138
+ | [InternalBlue](https://github.com/seemoo-lab/internalblue) | Bluetooth experimentation framework for Broadcom and Cypress chips | [Secure Mobile Networking Lab](https://github.com/seemoo-lab) |
139
+ | [SCCMHunter](https://github.com/garrettfoster13/sccmhunter) | A post-ex tool built to streamline identifying, profiling, and attacking SCCM related assets in an Active Directory domain | [Garret Foster](https://github.com/garrettfoster13) |
140
+ | [Unipacker](https://github.com/unipacker/unipacker) | Automatic and platform-independent unpacker for Windows binaries based on emulation | [unipacker](https://github.com/unipacker) |
141
+ | [Frankenstein](https://github.com/seemoo-lab/frankenstein) | Broadcom and Cypress firmware emulation for fuzzing and further full-stack debugging | [Secure Mobile Networking Lab](https://github.com/seemoo-lab) |
142
+ | [Poseidon](https://github.com/faucetsdn/poseidon) | Leverages software-defined networks (SDNs) to acquire and then feed network traffic to a number of machine learning techniques. | [Faucet SDN](https://github.com/faucetsdn) |
143
+ | [DFTimewolf](https://github.com/log2timeline/dftimewolf) | A framework for orchestrating forensic collection, processing and data export | [log2timeline](https://github.com/log2timeline) |
144
+ | [GAP SDK](https://github.com/GreenWaves-Technologies/gap_sdk) | SDK for Greenwaves Technologies' GAP8 IoT Application Processor | [GreenWaves Technologies](https://github.com/GreenWaves-Technologies) |
145
+ | [REW Sploit](https://github.com/REW-sploit/REW-sploit) | Emulate and Dissect Metasploit Framework (MSF) and other attacks | [REW-sploit](https://github.com/REW-sploit) |
146
+ | [tomcatmanager](https://github.com/tomcatmanager/tomcatmanager) | A command line tool and python library for managing a tomcat server | [tomcatmanager](https://github.com/tomcatmanager) |
147
+ | [Falcon Toolkit](https://github.com/CrowdStrike/Falcon-Toolkit) | Unleash the power of the CrowdStrike Falcon Platform at the CLI | [CrowdStrike](https://github.com/CrowdStrike) |
148
+ | [EXPLIoT](https://gitlab.com/expliot_framework/expliot) | Internet of Things Security Testing and Exploitation framework | [expliot_framework](https://gitlab.com/expliot_framework/) |
149
+
150
+ Possibly defunct but still good examples
151
+
152
+ | Application Name | Description | Organization or Author |
153
+ | ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------- |
154
+ | [Katana](https://github.com/JohnHammond/katana) | Automatic CTF Challenge Solver | [John Hammond](https://github.com/JohnHammond) |
155
+ | [SatanSword](https://github.com/Lucifer1993/SatanSword) (in Chinese) | Comprehensive Penetration Framework for Red Teaming | [Lucifer1993](https://github.com/Lucifer1993) |
156
+ | [Jok3r](http://www.jok3r-framework.com) | Network & Web Pentest Automation Framework | [Koutto](https://github.com/koutto) |
157
+ | [Counterfit](https://github.com/Azure/counterfit) | a CLI that provides a generic automation layer for assessing the security of ML models | [Microsoft Azure](https://github.com/Azure) |
158
+ | [Overlord](https://github.com/qsecure-labs/overlord) | Red Teaming Infrastructure Automation | [QSecure Labs](https://github.com/qsecure-labs) |
159
+ | [Automated Reconnaissance Pipeline](https://github.com/epi052/recon-pipeline) | An automated target reconnaissance pipeline | [epi052](https://github.com/epi052) |
160
+ | [JSShell](https://github.com/Den1al/JSShell) | An interactive multi-user web JavaScript (JS) shell | [Den1al](https://github.com/Den1al) |
161
+ | [RedShell](https://github.com/Verizon/redshell) | An interactive command prompt for red teaming and pentesting | [Verizon](https://github.com/Verizon) |
162
+ | [FLASHMINGO](https://github.com/mandiant/flashmingo) | Automatic analysis of SWF files based on some heuristics. Extensible via plugins. | [Mandiant](https://github.com/mandiant) |
163
+ | [psiTurk](https://github.com/NYUCCL/psiTurk) | An open platform for science on Amazon Mechanical Turk | [NYU Computation and Cognition Lab](https://github.com/NYUCCL) |
164
+
165
+ Note: If you have created an application based on `cmd2` that you would like us to mention here, please get in touch.
@@ -1042,9 +1042,6 @@ def style(
1042
1042
  # Default styles for printing strings of various types.
1043
1043
  # These can be altered to suit an application's needs and only need to be a
1044
1044
  # function with the following structure: func(str) -> str
1045
- style_output = functools.partial(style)
1046
- """Partial function supplying arguments to :meth:`cmd2.ansi.style()` which colors text for normal output"""
1047
-
1048
1045
  style_success = functools.partial(style, fg=Fg.GREEN)
1049
1046
  """Partial function supplying arguments to :meth:`cmd2.ansi.style()` which colors text to signify success"""
1050
1047