cmd2 2.6.2__tar.gz → 2.7.0__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 (256) hide show
  1. {cmd2-2.6.2 → cmd2-2.7.0}/CHANGELOG.md +5 -0
  2. {cmd2-2.6.2 → cmd2-2.7.0}/PKG-INFO +2 -1
  3. {cmd2-2.6.2 → cmd2-2.7.0}/cmd2/argparse_custom.py +47 -38
  4. {cmd2-2.6.2 → cmd2-2.7.0}/cmd2/cmd2.py +9 -9
  5. {cmd2-2.6.2 → cmd2-2.7.0}/cmd2.egg-info/PKG-INFO +2 -1
  6. {cmd2-2.6.2 → cmd2-2.7.0}/cmd2.egg-info/requires.txt +1 -0
  7. {cmd2-2.6.2 → cmd2-2.7.0}/pyproject.toml +1 -0
  8. {cmd2-2.6.2 → cmd2-2.7.0}/.pre-commit-config.yaml +0 -0
  9. {cmd2-2.6.2 → cmd2-2.7.0}/.prettierignore +0 -0
  10. {cmd2-2.6.2 → cmd2-2.7.0}/.prettierrc +0 -0
  11. {cmd2-2.6.2 → cmd2-2.7.0}/LICENSE +0 -0
  12. {cmd2-2.6.2 → cmd2-2.7.0}/MANIFEST.in +0 -0
  13. {cmd2-2.6.2 → cmd2-2.7.0}/Makefile +0 -0
  14. {cmd2-2.6.2 → cmd2-2.7.0}/README.md +0 -0
  15. {cmd2-2.6.2 → cmd2-2.7.0}/cmd2/__init__.py +0 -0
  16. {cmd2-2.6.2 → cmd2-2.7.0}/cmd2/ansi.py +0 -0
  17. {cmd2-2.6.2 → cmd2-2.7.0}/cmd2/argparse_completer.py +0 -0
  18. {cmd2-2.6.2 → cmd2-2.7.0}/cmd2/clipboard.py +0 -0
  19. {cmd2-2.6.2 → cmd2-2.7.0}/cmd2/command_definition.py +0 -0
  20. {cmd2-2.6.2 → cmd2-2.7.0}/cmd2/constants.py +0 -0
  21. {cmd2-2.6.2 → cmd2-2.7.0}/cmd2/decorators.py +0 -0
  22. {cmd2-2.6.2 → cmd2-2.7.0}/cmd2/exceptions.py +0 -0
  23. {cmd2-2.6.2 → cmd2-2.7.0}/cmd2/history.py +0 -0
  24. {cmd2-2.6.2 → cmd2-2.7.0}/cmd2/parsing.py +0 -0
  25. {cmd2-2.6.2 → cmd2-2.7.0}/cmd2/plugin.py +0 -0
  26. {cmd2-2.6.2 → cmd2-2.7.0}/cmd2/py.typed +0 -0
  27. {cmd2-2.6.2 → cmd2-2.7.0}/cmd2/py_bridge.py +0 -0
  28. {cmd2-2.6.2 → cmd2-2.7.0}/cmd2/rl_utils.py +0 -0
  29. {cmd2-2.6.2 → cmd2-2.7.0}/cmd2/table_creator.py +0 -0
  30. {cmd2-2.6.2 → cmd2-2.7.0}/cmd2/transcript.py +0 -0
  31. {cmd2-2.6.2 → cmd2-2.7.0}/cmd2/utils.py +0 -0
  32. {cmd2-2.6.2 → cmd2-2.7.0}/cmd2.egg-info/SOURCES.txt +0 -0
  33. {cmd2-2.6.2 → cmd2-2.7.0}/cmd2.egg-info/dependency_links.txt +0 -0
  34. {cmd2-2.6.2 → cmd2-2.7.0}/cmd2.egg-info/top_level.txt +0 -0
  35. {cmd2-2.6.2 → cmd2-2.7.0}/cmd2.png +0 -0
  36. {cmd2-2.6.2 → cmd2-2.7.0}/codecov.yml +0 -0
  37. {cmd2-2.6.2 → cmd2-2.7.0}/docs/api/ansi.md +0 -0
  38. {cmd2-2.6.2 → cmd2-2.7.0}/docs/api/argparse_completer.md +0 -0
  39. {cmd2-2.6.2 → cmd2-2.7.0}/docs/api/argparse_custom.md +0 -0
  40. {cmd2-2.6.2 → cmd2-2.7.0}/docs/api/cmd.md +0 -0
  41. {cmd2-2.6.2 → cmd2-2.7.0}/docs/api/command_definition.md +0 -0
  42. {cmd2-2.6.2 → cmd2-2.7.0}/docs/api/constants.md +0 -0
  43. {cmd2-2.6.2 → cmd2-2.7.0}/docs/api/decorators.md +0 -0
  44. {cmd2-2.6.2 → cmd2-2.7.0}/docs/api/exceptions.md +0 -0
  45. {cmd2-2.6.2 → cmd2-2.7.0}/docs/api/history.md +0 -0
  46. {cmd2-2.6.2 → cmd2-2.7.0}/docs/api/index.md +0 -0
  47. {cmd2-2.6.2 → cmd2-2.7.0}/docs/api/parsing.md +0 -0
  48. {cmd2-2.6.2 → cmd2-2.7.0}/docs/api/plugin.md +0 -0
  49. {cmd2-2.6.2 → cmd2-2.7.0}/docs/api/py_bridge.md +0 -0
  50. {cmd2-2.6.2 → cmd2-2.7.0}/docs/api/table_creator.md +0 -0
  51. {cmd2-2.6.2 → cmd2-2.7.0}/docs/api/utils.md +0 -0
  52. {cmd2-2.6.2 → cmd2-2.7.0}/docs/doc_conventions.md +0 -0
  53. {cmd2-2.6.2 → cmd2-2.7.0}/docs/examples/alternate_event_loops.md +0 -0
  54. {cmd2-2.6.2 → cmd2-2.7.0}/docs/examples/examples.md +0 -0
  55. {cmd2-2.6.2 → cmd2-2.7.0}/docs/examples/first_app.md +0 -0
  56. {cmd2-2.6.2 → cmd2-2.7.0}/docs/examples/index.md +0 -0
  57. {cmd2-2.6.2 → cmd2-2.7.0}/docs/features/argument_processing.md +0 -0
  58. {cmd2-2.6.2 → cmd2-2.7.0}/docs/features/builtin_commands.md +0 -0
  59. {cmd2-2.6.2 → cmd2-2.7.0}/docs/features/clipboard.md +0 -0
  60. {cmd2-2.6.2 → cmd2-2.7.0}/docs/features/commands.md +0 -0
  61. {cmd2-2.6.2 → cmd2-2.7.0}/docs/features/completion.md +0 -0
  62. {cmd2-2.6.2 → cmd2-2.7.0}/docs/features/disable_commands.md +0 -0
  63. {cmd2-2.6.2 → cmd2-2.7.0}/docs/features/embedded_python_shells.md +0 -0
  64. {cmd2-2.6.2 → cmd2-2.7.0}/docs/features/generating_output.md +0 -0
  65. {cmd2-2.6.2 → cmd2-2.7.0}/docs/features/help.md +0 -0
  66. {cmd2-2.6.2 → cmd2-2.7.0}/docs/features/history.md +0 -0
  67. {cmd2-2.6.2 → cmd2-2.7.0}/docs/features/hooks.md +0 -0
  68. {cmd2-2.6.2 → cmd2-2.7.0}/docs/features/index.md +0 -0
  69. {cmd2-2.6.2 → cmd2-2.7.0}/docs/features/initialization.md +0 -0
  70. {cmd2-2.6.2 → cmd2-2.7.0}/docs/features/misc.md +0 -0
  71. {cmd2-2.6.2 → cmd2-2.7.0}/docs/features/modular_commands.md +0 -0
  72. {cmd2-2.6.2 → cmd2-2.7.0}/docs/features/multiline_commands.md +0 -0
  73. {cmd2-2.6.2 → cmd2-2.7.0}/docs/features/os.md +0 -0
  74. {cmd2-2.6.2 → cmd2-2.7.0}/docs/features/packaging.md +0 -0
  75. {cmd2-2.6.2 → cmd2-2.7.0}/docs/features/plugins.md +0 -0
  76. {cmd2-2.6.2 → cmd2-2.7.0}/docs/features/prompt.md +0 -0
  77. {cmd2-2.6.2 → cmd2-2.7.0}/docs/features/redirection.md +0 -0
  78. {cmd2-2.6.2 → cmd2-2.7.0}/docs/features/scripting.md +0 -0
  79. {cmd2-2.6.2 → cmd2-2.7.0}/docs/features/settings.md +0 -0
  80. {cmd2-2.6.2 → cmd2-2.7.0}/docs/features/shortcuts_aliases_macros.md +0 -0
  81. {cmd2-2.6.2 → cmd2-2.7.0}/docs/features/startup_commands.md +0 -0
  82. {cmd2-2.6.2 → cmd2-2.7.0}/docs/features/table_creation.md +0 -0
  83. {cmd2-2.6.2 → cmd2-2.7.0}/docs/features/transcripts.md +0 -0
  84. {cmd2-2.6.2 → cmd2-2.7.0}/docs/index.md +0 -0
  85. {cmd2-2.6.2 → cmd2-2.7.0}/docs/javascripts/readthedocs.js +0 -0
  86. {cmd2-2.6.2 → cmd2-2.7.0}/docs/migrating/incompatibilities.md +0 -0
  87. {cmd2-2.6.2 → cmd2-2.7.0}/docs/migrating/index.md +0 -0
  88. {cmd2-2.6.2 → cmd2-2.7.0}/docs/migrating/minimum.md +0 -0
  89. {cmd2-2.6.2 → cmd2-2.7.0}/docs/migrating/next_steps.md +0 -0
  90. {cmd2-2.6.2 → cmd2-2.7.0}/docs/migrating/why.md +0 -0
  91. {cmd2-2.6.2 → cmd2-2.7.0}/docs/overrides/main.html +0 -0
  92. {cmd2-2.6.2 → cmd2-2.7.0}/docs/overview/alternatives.md +0 -0
  93. {cmd2-2.6.2 → cmd2-2.7.0}/docs/overview/index.md +0 -0
  94. {cmd2-2.6.2 → cmd2-2.7.0}/docs/overview/installation.md +0 -0
  95. {cmd2-2.6.2 → cmd2-2.7.0}/docs/overview/integrating.md +0 -0
  96. {cmd2-2.6.2 → cmd2-2.7.0}/docs/overview/resources.md +0 -0
  97. {cmd2-2.6.2 → cmd2-2.7.0}/docs/plugins/external_test.md +0 -0
  98. {cmd2-2.6.2 → cmd2-2.7.0}/docs/plugins/index.md +0 -0
  99. {cmd2-2.6.2 → cmd2-2.7.0}/docs/requirements.txt +0 -0
  100. {cmd2-2.6.2 → cmd2-2.7.0}/docs/stylesheets/cmd2.css +0 -0
  101. {cmd2-2.6.2 → cmd2-2.7.0}/docs/stylesheets/readthedocs.css +0 -0
  102. {cmd2-2.6.2 → cmd2-2.7.0}/docs/testing.md +0 -0
  103. {cmd2-2.6.2 → cmd2-2.7.0}/examples/.cmd2rc +0 -0
  104. {cmd2-2.6.2 → cmd2-2.7.0}/examples/README.md +0 -0
  105. {cmd2-2.6.2 → cmd2-2.7.0}/examples/alias_startup.py +0 -0
  106. {cmd2-2.6.2 → cmd2-2.7.0}/examples/arg_decorators.py +0 -0
  107. {cmd2-2.6.2 → cmd2-2.7.0}/examples/arg_print.py +0 -0
  108. {cmd2-2.6.2 → cmd2-2.7.0}/examples/argparse_completion.py +0 -0
  109. {cmd2-2.6.2 → cmd2-2.7.0}/examples/async_printing.py +0 -0
  110. {cmd2-2.6.2 → cmd2-2.7.0}/examples/basic.py +0 -0
  111. {cmd2-2.6.2 → cmd2-2.7.0}/examples/basic_completion.py +0 -0
  112. {cmd2-2.6.2 → cmd2-2.7.0}/examples/cmd_as_argument.py +0 -0
  113. {cmd2-2.6.2 → cmd2-2.7.0}/examples/colors.py +0 -0
  114. {cmd2-2.6.2 → cmd2-2.7.0}/examples/custom_parser.py +0 -0
  115. {cmd2-2.6.2 → cmd2-2.7.0}/examples/decorator_example.py +0 -0
  116. {cmd2-2.6.2 → cmd2-2.7.0}/examples/default_categories.py +0 -0
  117. {cmd2-2.6.2 → cmd2-2.7.0}/examples/dynamic_commands.py +0 -0
  118. {cmd2-2.6.2 → cmd2-2.7.0}/examples/environment.py +0 -0
  119. {cmd2-2.6.2 → cmd2-2.7.0}/examples/event_loops.py +0 -0
  120. {cmd2-2.6.2 → cmd2-2.7.0}/examples/example.py +0 -0
  121. {cmd2-2.6.2 → cmd2-2.7.0}/examples/exit_code.py +0 -0
  122. {cmd2-2.6.2 → cmd2-2.7.0}/examples/first_app.py +0 -0
  123. {cmd2-2.6.2 → cmd2-2.7.0}/examples/hello_cmd2.py +0 -0
  124. {cmd2-2.6.2 → cmd2-2.7.0}/examples/help_categories.py +0 -0
  125. {cmd2-2.6.2 → cmd2-2.7.0}/examples/hooks.py +0 -0
  126. {cmd2-2.6.2 → cmd2-2.7.0}/examples/initialization.py +0 -0
  127. {cmd2-2.6.2 → cmd2-2.7.0}/examples/migrating.py +0 -0
  128. {cmd2-2.6.2 → cmd2-2.7.0}/examples/modular_commands/__init__.py +0 -0
  129. {cmd2-2.6.2 → cmd2-2.7.0}/examples/modular_commands/commandset_basic.py +0 -0
  130. {cmd2-2.6.2 → cmd2-2.7.0}/examples/modular_commands/commandset_complex.py +0 -0
  131. {cmd2-2.6.2 → cmd2-2.7.0}/examples/modular_commands/commandset_custominit.py +0 -0
  132. {cmd2-2.6.2 → cmd2-2.7.0}/examples/modular_commands_basic.py +0 -0
  133. {cmd2-2.6.2 → cmd2-2.7.0}/examples/modular_commands_dynamic.py +0 -0
  134. {cmd2-2.6.2 → cmd2-2.7.0}/examples/modular_commands_main.py +0 -0
  135. {cmd2-2.6.2 → cmd2-2.7.0}/examples/modular_subcommands.py +0 -0
  136. {cmd2-2.6.2 → cmd2-2.7.0}/examples/override_parser.py +0 -0
  137. {cmd2-2.6.2 → cmd2-2.7.0}/examples/paged_output.py +0 -0
  138. {cmd2-2.6.2 → cmd2-2.7.0}/examples/persistent_history.py +0 -0
  139. {cmd2-2.6.2 → cmd2-2.7.0}/examples/pirate.py +0 -0
  140. {cmd2-2.6.2 → cmd2-2.7.0}/examples/pretty_print.py +0 -0
  141. {cmd2-2.6.2 → cmd2-2.7.0}/examples/python_scripting.py +0 -0
  142. {cmd2-2.6.2 → cmd2-2.7.0}/examples/read_input.py +0 -0
  143. {cmd2-2.6.2 → cmd2-2.7.0}/examples/remove_builtin_commands.py +0 -0
  144. {cmd2-2.6.2 → cmd2-2.7.0}/examples/remove_settable.py +0 -0
  145. {cmd2-2.6.2 → cmd2-2.7.0}/examples/scripts/arg_printer.py +0 -0
  146. {cmd2-2.6.2 → cmd2-2.7.0}/examples/scripts/conditional.py +0 -0
  147. {cmd2-2.6.2 → cmd2-2.7.0}/examples/scripts/nested.txt +0 -0
  148. {cmd2-2.6.2 → cmd2-2.7.0}/examples/scripts/quit.txt +0 -0
  149. {cmd2-2.6.2 → cmd2-2.7.0}/examples/scripts/save_help_text.py +0 -0
  150. {cmd2-2.6.2 → cmd2-2.7.0}/examples/scripts/script.py +0 -0
  151. {cmd2-2.6.2 → cmd2-2.7.0}/examples/scripts/script.txt +0 -0
  152. {cmd2-2.6.2 → cmd2-2.7.0}/examples/subcommands.py +0 -0
  153. {cmd2-2.6.2 → cmd2-2.7.0}/examples/table_creation.py +0 -0
  154. {cmd2-2.6.2 → cmd2-2.7.0}/examples/tmux_launch.sh +0 -0
  155. {cmd2-2.6.2 → cmd2-2.7.0}/examples/tmux_split.sh +0 -0
  156. {cmd2-2.6.2 → cmd2-2.7.0}/examples/transcripts/exampleSession.txt +0 -0
  157. {cmd2-2.6.2 → cmd2-2.7.0}/examples/transcripts/pirate.transcript +0 -0
  158. {cmd2-2.6.2 → cmd2-2.7.0}/examples/transcripts/quit.txt +0 -0
  159. {cmd2-2.6.2 → cmd2-2.7.0}/examples/transcripts/transcript_regex.txt +0 -0
  160. {cmd2-2.6.2 → cmd2-2.7.0}/examples/unicode_commands.py +0 -0
  161. {cmd2-2.6.2 → cmd2-2.7.0}/mkdocs.yml +0 -0
  162. {cmd2-2.6.2 → cmd2-2.7.0}/package.json +0 -0
  163. {cmd2-2.6.2 → cmd2-2.7.0}/plugins/README.txt +0 -0
  164. {cmd2-2.6.2 → cmd2-2.7.0}/plugins/ext_test/CHANGELOG.md +0 -0
  165. {cmd2-2.6.2 → cmd2-2.7.0}/plugins/ext_test/README.md +0 -0
  166. {cmd2-2.6.2 → cmd2-2.7.0}/plugins/ext_test/build-pyenvs.sh +0 -0
  167. {cmd2-2.6.2 → cmd2-2.7.0}/plugins/ext_test/cmd2_ext_test/__init__.py +0 -0
  168. {cmd2-2.6.2 → cmd2-2.7.0}/plugins/ext_test/cmd2_ext_test/cmd2_ext_test.py +0 -0
  169. {cmd2-2.6.2 → cmd2-2.7.0}/plugins/ext_test/cmd2_ext_test/py.typed +0 -0
  170. {cmd2-2.6.2 → cmd2-2.7.0}/plugins/ext_test/cmd2_ext_test/pylintrc +0 -0
  171. {cmd2-2.6.2 → cmd2-2.7.0}/plugins/ext_test/examples/example.py +0 -0
  172. {cmd2-2.6.2 → cmd2-2.7.0}/plugins/ext_test/noxfile.py +0 -0
  173. {cmd2-2.6.2 → cmd2-2.7.0}/plugins/ext_test/pyproject.toml +0 -0
  174. {cmd2-2.6.2 → cmd2-2.7.0}/plugins/ext_test/setup.py +0 -0
  175. {cmd2-2.6.2 → cmd2-2.7.0}/plugins/ext_test/tasks.py +0 -0
  176. {cmd2-2.6.2 → cmd2-2.7.0}/plugins/ext_test/tests/__init__.py +0 -0
  177. {cmd2-2.6.2 → cmd2-2.7.0}/plugins/ext_test/tests/pylintrc +0 -0
  178. {cmd2-2.6.2 → cmd2-2.7.0}/plugins/ext_test/tests/test_ext_test.py +0 -0
  179. {cmd2-2.6.2 → cmd2-2.7.0}/plugins/tasks.py +0 -0
  180. {cmd2-2.6.2 → cmd2-2.7.0}/plugins/template/CHANGELOG.md +0 -0
  181. {cmd2-2.6.2 → cmd2-2.7.0}/plugins/template/LICENSE +0 -0
  182. {cmd2-2.6.2 → cmd2-2.7.0}/plugins/template/README.md +0 -0
  183. {cmd2-2.6.2 → cmd2-2.7.0}/plugins/template/build-pyenvs.sh +0 -0
  184. {cmd2-2.6.2 → cmd2-2.7.0}/plugins/template/cmd2_myplugin/__init__.py +0 -0
  185. {cmd2-2.6.2 → cmd2-2.7.0}/plugins/template/cmd2_myplugin/myplugin.py +0 -0
  186. {cmd2-2.6.2 → cmd2-2.7.0}/plugins/template/cmd2_myplugin/pylintrc +0 -0
  187. {cmd2-2.6.2 → cmd2-2.7.0}/plugins/template/examples/example.py +0 -0
  188. {cmd2-2.6.2 → cmd2-2.7.0}/plugins/template/noxfile.py +0 -0
  189. {cmd2-2.6.2 → cmd2-2.7.0}/plugins/template/setup.py +0 -0
  190. {cmd2-2.6.2 → cmd2-2.7.0}/plugins/template/tasks.py +0 -0
  191. {cmd2-2.6.2 → cmd2-2.7.0}/plugins/template/tests/__init__.py +0 -0
  192. {cmd2-2.6.2 → cmd2-2.7.0}/plugins/template/tests/pylintrc +0 -0
  193. {cmd2-2.6.2 → cmd2-2.7.0}/plugins/template/tests/test_myplugin.py +0 -0
  194. {cmd2-2.6.2 → cmd2-2.7.0}/setup.cfg +0 -0
  195. {cmd2-2.6.2 → cmd2-2.7.0}/tasks.py +0 -0
  196. {cmd2-2.6.2 → cmd2-2.7.0}/tests/.cmd2rc +0 -0
  197. {cmd2-2.6.2 → cmd2-2.7.0}/tests/__init__.py +0 -0
  198. {cmd2-2.6.2 → cmd2-2.7.0}/tests/conftest.py +0 -0
  199. {cmd2-2.6.2 → cmd2-2.7.0}/tests/pyscript/echo.py +0 -0
  200. {cmd2-2.6.2 → cmd2-2.7.0}/tests/pyscript/environment.py +0 -0
  201. {cmd2-2.6.2 → cmd2-2.7.0}/tests/pyscript/help.py +0 -0
  202. {cmd2-2.6.2 → cmd2-2.7.0}/tests/pyscript/py_locals.py +0 -0
  203. {cmd2-2.6.2 → cmd2-2.7.0}/tests/pyscript/pyscript_dir.py +0 -0
  204. {cmd2-2.6.2 → cmd2-2.7.0}/tests/pyscript/raises_exception.py +0 -0
  205. {cmd2-2.6.2 → cmd2-2.7.0}/tests/pyscript/recursive.py +0 -0
  206. {cmd2-2.6.2 → cmd2-2.7.0}/tests/pyscript/self_in_py.py +0 -0
  207. {cmd2-2.6.2 → cmd2-2.7.0}/tests/pyscript/stdout_capture.py +0 -0
  208. {cmd2-2.6.2 → cmd2-2.7.0}/tests/pyscript/stop.py +0 -0
  209. {cmd2-2.6.2 → cmd2-2.7.0}/tests/relative_multiple.txt +0 -0
  210. {cmd2-2.6.2 → cmd2-2.7.0}/tests/script.py +0 -0
  211. {cmd2-2.6.2 → cmd2-2.7.0}/tests/script.txt +0 -0
  212. {cmd2-2.6.2 → cmd2-2.7.0}/tests/scripts/binary.bin +0 -0
  213. {cmd2-2.6.2 → cmd2-2.7.0}/tests/scripts/empty.txt +0 -0
  214. {cmd2-2.6.2 → cmd2-2.7.0}/tests/scripts/help.txt +0 -0
  215. {cmd2-2.6.2 → cmd2-2.7.0}/tests/scripts/nested.txt +0 -0
  216. {cmd2-2.6.2 → cmd2-2.7.0}/tests/scripts/one_down.txt +0 -0
  217. {cmd2-2.6.2 → cmd2-2.7.0}/tests/scripts/postcmds.txt +0 -0
  218. {cmd2-2.6.2 → cmd2-2.7.0}/tests/scripts/precmds.txt +0 -0
  219. {cmd2-2.6.2 → cmd2-2.7.0}/tests/scripts/utf8.txt +0 -0
  220. {cmd2-2.6.2 → cmd2-2.7.0}/tests/test_ansi.py +0 -0
  221. {cmd2-2.6.2 → cmd2-2.7.0}/tests/test_argparse.py +0 -0
  222. {cmd2-2.6.2 → cmd2-2.7.0}/tests/test_argparse_completer.py +0 -0
  223. {cmd2-2.6.2 → cmd2-2.7.0}/tests/test_argparse_custom.py +0 -0
  224. {cmd2-2.6.2 → cmd2-2.7.0}/tests/test_cmd2.py +0 -0
  225. {cmd2-2.6.2 → cmd2-2.7.0}/tests/test_completion.py +0 -0
  226. {cmd2-2.6.2 → cmd2-2.7.0}/tests/test_future_annotations.py +0 -0
  227. {cmd2-2.6.2 → cmd2-2.7.0}/tests/test_history.py +0 -0
  228. {cmd2-2.6.2 → cmd2-2.7.0}/tests/test_parsing.py +0 -0
  229. {cmd2-2.6.2 → cmd2-2.7.0}/tests/test_plugin.py +0 -0
  230. {cmd2-2.6.2 → cmd2-2.7.0}/tests/test_run_pyscript.py +0 -0
  231. {cmd2-2.6.2 → cmd2-2.7.0}/tests/test_table_creator.py +0 -0
  232. {cmd2-2.6.2 → cmd2-2.7.0}/tests/test_transcript.py +0 -0
  233. {cmd2-2.6.2 → cmd2-2.7.0}/tests/test_utils.py +0 -0
  234. {cmd2-2.6.2 → cmd2-2.7.0}/tests/test_utils_defining_class.py +0 -0
  235. {cmd2-2.6.2 → cmd2-2.7.0}/tests/transcripts/bol_eol.txt +0 -0
  236. {cmd2-2.6.2 → cmd2-2.7.0}/tests/transcripts/characterclass.txt +0 -0
  237. {cmd2-2.6.2 → cmd2-2.7.0}/tests/transcripts/dotstar.txt +0 -0
  238. {cmd2-2.6.2 → cmd2-2.7.0}/tests/transcripts/extension_notation.txt +0 -0
  239. {cmd2-2.6.2 → cmd2-2.7.0}/tests/transcripts/failure.txt +0 -0
  240. {cmd2-2.6.2 → cmd2-2.7.0}/tests/transcripts/from_cmdloop.txt +0 -0
  241. {cmd2-2.6.2 → cmd2-2.7.0}/tests/transcripts/multiline_no_regex.txt +0 -0
  242. {cmd2-2.6.2 → cmd2-2.7.0}/tests/transcripts/multiline_regex.txt +0 -0
  243. {cmd2-2.6.2 → cmd2-2.7.0}/tests/transcripts/no_output.txt +0 -0
  244. {cmd2-2.6.2 → cmd2-2.7.0}/tests/transcripts/no_output_last.txt +0 -0
  245. {cmd2-2.6.2 → cmd2-2.7.0}/tests/transcripts/regex_set.txt +0 -0
  246. {cmd2-2.6.2 → cmd2-2.7.0}/tests/transcripts/singleslash.txt +0 -0
  247. {cmd2-2.6.2 → cmd2-2.7.0}/tests/transcripts/slashes_escaped.txt +0 -0
  248. {cmd2-2.6.2 → cmd2-2.7.0}/tests/transcripts/slashslash.txt +0 -0
  249. {cmd2-2.6.2 → cmd2-2.7.0}/tests/transcripts/spaces.txt +0 -0
  250. {cmd2-2.6.2 → cmd2-2.7.0}/tests/transcripts/word_boundaries.txt +0 -0
  251. {cmd2-2.6.2 → cmd2-2.7.0}/tests_isolated/__init__.py +0 -0
  252. {cmd2-2.6.2 → cmd2-2.7.0}/tests_isolated/test_commandset/__init__.py +0 -0
  253. {cmd2-2.6.2 → cmd2-2.7.0}/tests_isolated/test_commandset/conftest.py +0 -0
  254. {cmd2-2.6.2 → cmd2-2.7.0}/tests_isolated/test_commandset/test_argparse_subcommands.py +0 -0
  255. {cmd2-2.6.2 → cmd2-2.7.0}/tests_isolated/test_commandset/test_categories.py +0 -0
  256. {cmd2-2.6.2 → cmd2-2.7.0}/tests_isolated/test_commandset/test_commandset.py +0 -0
@@ -1,3 +1,8 @@
1
+ ## 2.7.0 (June 30, 2025)
2
+
3
+ - Enhancements
4
+ - Integrated rich-argparse with cmd2's default argparse help formatter (`Cmd2HelpFormatter`).
5
+
1
6
  ## 2.6.2 (June 26, 2025)
2
7
 
3
8
  - Enhancements
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cmd2
3
- Version: 2.6.2
3
+ Version: 2.7.0
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)
@@ -47,6 +47,7 @@ License-File: LICENSE
47
47
  Requires-Dist: gnureadline>=8; platform_system == "Darwin"
48
48
  Requires-Dist: pyperclip>=1.8
49
49
  Requires-Dist: pyreadline3>=3.4; platform_system == "Windows"
50
+ Requires-Dist: rich-argparse>=1.7.1
50
51
  Requires-Dist: wcwidth>=0.2.10
51
52
  Dynamic: license-file
52
53
 
@@ -229,14 +229,17 @@ from argparse import (
229
229
  ZERO_OR_MORE,
230
230
  ArgumentError,
231
231
  )
232
- from collections.abc import Callable, Iterable, Sequence
233
- from gettext import (
234
- gettext,
232
+ from collections.abc import (
233
+ Callable,
234
+ Iterable,
235
+ Sequence,
235
236
  )
237
+ from gettext import gettext
236
238
  from typing import (
237
239
  IO,
238
240
  TYPE_CHECKING,
239
241
  Any,
242
+ ClassVar,
240
243
  NoReturn,
241
244
  Optional,
242
245
  Protocol,
@@ -245,6 +248,8 @@ from typing import (
245
248
  runtime_checkable,
246
249
  )
247
250
 
251
+ from rich_argparse import RawTextRichHelpFormatter
252
+
248
253
  from . import (
249
254
  ansi,
250
255
  constants,
@@ -991,9 +996,25 @@ setattr(argparse._SubParsersAction, 'remove_parser', _SubParsersAction_remove_pa
991
996
  ############################################################################################################
992
997
 
993
998
 
994
- class Cmd2HelpFormatter(argparse.RawTextHelpFormatter):
999
+ class Cmd2HelpFormatter(RawTextRichHelpFormatter):
995
1000
  """Custom help formatter to configure ordering of help text."""
996
1001
 
1002
+ # rich-argparse formats all group names with str.title().
1003
+ # Override their formatter to do nothing.
1004
+ group_name_formatter: ClassVar[Callable[[str], str]] = str
1005
+
1006
+ # Disable automatic highlighting in the help text.
1007
+ highlights: ClassVar[list[str]] = []
1008
+
1009
+ # Disable markup rendering in usage, help, description, and epilog text.
1010
+ # cmd2's built-in commands do not escape opening brackets in their help text
1011
+ # and therefore rely on these settings being False. If you desire to use
1012
+ # markup in your help text, inherit from Cmd2HelpFormatter and override
1013
+ # these settings in that child class.
1014
+ usage_markup: ClassVar[bool] = False
1015
+ help_markup: ClassVar[bool] = False
1016
+ text_markup: ClassVar[bool] = False
1017
+
997
1018
  def _format_usage(
998
1019
  self,
999
1020
  usage: Optional[str],
@@ -1215,42 +1236,30 @@ class Cmd2ArgumentParser(argparse.ArgumentParser):
1215
1236
  behavior on this parser. If this is None or not present, then cmd2 will use
1216
1237
  argparse_completer.DEFAULT_AP_COMPLETER when tab completing this parser's arguments
1217
1238
  """
1239
+ kwargs: dict[str, bool] = {}
1218
1240
  if sys.version_info >= (3, 14):
1219
1241
  # Python >= 3.14 so pass new arguments to parent argparse.ArgumentParser class
1220
- super().__init__(
1221
- prog=prog,
1222
- usage=usage,
1223
- description=description,
1224
- epilog=epilog,
1225
- parents=parents if parents else [],
1226
- formatter_class=formatter_class, # type: ignore[arg-type]
1227
- prefix_chars=prefix_chars,
1228
- fromfile_prefix_chars=fromfile_prefix_chars,
1229
- argument_default=argument_default,
1230
- conflict_handler=conflict_handler,
1231
- add_help=add_help,
1232
- allow_abbrev=allow_abbrev,
1233
- exit_on_error=exit_on_error, # added in Python 3.9
1234
- suggest_on_error=suggest_on_error, # added in Python 3.14
1235
- color=color, # added in Python 3.14
1236
- )
1237
- else:
1238
- # Python < 3.14, so don't pass new arguments to parent argparse.ArgumentParser class
1239
- super().__init__(
1240
- prog=prog,
1241
- usage=usage,
1242
- description=description,
1243
- epilog=epilog,
1244
- parents=parents if parents else [],
1245
- formatter_class=formatter_class, # type: ignore[arg-type]
1246
- prefix_chars=prefix_chars,
1247
- fromfile_prefix_chars=fromfile_prefix_chars,
1248
- argument_default=argument_default,
1249
- conflict_handler=conflict_handler,
1250
- add_help=add_help,
1251
- allow_abbrev=allow_abbrev,
1252
- exit_on_error=exit_on_error, # added in Python 3.9
1253
- )
1242
+ kwargs = {
1243
+ "suggest_on_error": suggest_on_error,
1244
+ "color": color,
1245
+ }
1246
+
1247
+ super().__init__(
1248
+ prog=prog,
1249
+ usage=usage,
1250
+ description=description,
1251
+ epilog=epilog,
1252
+ parents=parents if parents else [],
1253
+ formatter_class=formatter_class, # type: ignore[arg-type]
1254
+ prefix_chars=prefix_chars,
1255
+ fromfile_prefix_chars=fromfile_prefix_chars,
1256
+ argument_default=argument_default,
1257
+ conflict_handler=conflict_handler,
1258
+ add_help=add_help,
1259
+ allow_abbrev=allow_abbrev,
1260
+ exit_on_error=exit_on_error, # added in Python 3.9
1261
+ **kwargs, # added in Python 3.14
1262
+ )
1254
1263
 
1255
1264
  self.set_ap_completer_type(ap_completer_type) # type: ignore[attr-defined]
1256
1265
 
@@ -42,14 +42,16 @@ import re
42
42
  import sys
43
43
  import tempfile
44
44
  import threading
45
- from code import (
46
- InteractiveConsole,
47
- )
45
+ from code import InteractiveConsole
48
46
  from collections import (
49
47
  OrderedDict,
50
48
  namedtuple,
51
49
  )
52
- from collections.abc import Callable, Iterable, Mapping
50
+ from collections.abc import (
51
+ Callable,
52
+ Iterable,
53
+ Mapping,
54
+ )
53
55
  from types import (
54
56
  FrameType,
55
57
  ModuleType,
@@ -763,8 +765,8 @@ class Cmd(cmd.Cmd):
763
765
  """Build argument parser for a command/subcommand.
764
766
 
765
767
  :param parent: CommandParent object which owns the command using the parser.
766
- This function assumes that parent is where parser_builder
767
- is defined when parser_builder is a classmethod.
768
+ When parser_builder is a classmethod, this function passes
769
+ parent's class to it.
768
770
  :param parser_builder: means used to build the parser
769
771
  :param prog: prog value to set in new parser
770
772
  :return: new parser
@@ -781,9 +783,7 @@ class Cmd(cmd.Cmd):
781
783
  else:
782
784
  raise TypeError(f"Invalid type for parser_builder: {type(parser_builder)}")
783
785
 
784
- from .decorators import (
785
- _set_parser_prog,
786
- )
786
+ from .decorators import _set_parser_prog
787
787
 
788
788
  _set_parser_prog(parser, prog)
789
789
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cmd2
3
- Version: 2.6.2
3
+ Version: 2.7.0
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)
@@ -47,6 +47,7 @@ License-File: LICENSE
47
47
  Requires-Dist: gnureadline>=8; platform_system == "Darwin"
48
48
  Requires-Dist: pyperclip>=1.8
49
49
  Requires-Dist: pyreadline3>=3.4; platform_system == "Windows"
50
+ Requires-Dist: rich-argparse>=1.7.1
50
51
  Requires-Dist: wcwidth>=0.2.10
51
52
  Dynamic: license-file
52
53
 
@@ -1,4 +1,5 @@
1
1
  pyperclip>=1.8
2
+ rich-argparse>=1.7.1
2
3
  wcwidth>=0.2.10
3
4
 
4
5
  [:platform_system == "Darwin"]
@@ -32,6 +32,7 @@ dependencies = [
32
32
  "gnureadline>=8; platform_system == 'Darwin'",
33
33
  "pyperclip>=1.8",
34
34
  "pyreadline3>=3.4; platform_system == 'Windows'",
35
+ "rich-argparse>=1.7.1",
35
36
  "wcwidth>=0.2.10",
36
37
  ]
37
38
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes