cmd2 3.5.0__tar.gz → 3.5.1__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 (228) hide show
  1. {cmd2-3.5.0 → cmd2-3.5.1}/CHANGELOG.md +6 -0
  2. {cmd2-3.5.0 → cmd2-3.5.1}/PKG-INFO +1 -1
  3. {cmd2-3.5.0 → cmd2-3.5.1}/cmd2/argparse_completer.py +1 -1
  4. {cmd2-3.5.0 → cmd2-3.5.1}/cmd2/cmd2.py +5 -11
  5. {cmd2-3.5.0 → cmd2-3.5.1}/cmd2/constants.py +3 -3
  6. {cmd2-3.5.0 → cmd2-3.5.1}/cmd2/parsing.py +10 -10
  7. {cmd2-3.5.0 → cmd2-3.5.1}/cmd2.egg-info/PKG-INFO +1 -1
  8. {cmd2-3.5.0 → cmd2-3.5.1}/.pre-commit-config.yaml +0 -0
  9. {cmd2-3.5.0 → cmd2-3.5.1}/.prettierignore +0 -0
  10. {cmd2-3.5.0 → cmd2-3.5.1}/.prettierrc +0 -0
  11. {cmd2-3.5.0 → cmd2-3.5.1}/GEMINI.md +0 -0
  12. {cmd2-3.5.0 → cmd2-3.5.1}/LICENSE +0 -0
  13. {cmd2-3.5.0 → cmd2-3.5.1}/MANIFEST.in +0 -0
  14. {cmd2-3.5.0 → cmd2-3.5.1}/Makefile +0 -0
  15. {cmd2-3.5.0 → cmd2-3.5.1}/README.md +0 -0
  16. {cmd2-3.5.0 → cmd2-3.5.1}/cmd2/__init__.py +0 -0
  17. {cmd2-3.5.0 → cmd2-3.5.1}/cmd2/argparse_custom.py +0 -0
  18. {cmd2-3.5.0 → cmd2-3.5.1}/cmd2/clipboard.py +0 -0
  19. {cmd2-3.5.0 → cmd2-3.5.1}/cmd2/colors.py +0 -0
  20. {cmd2-3.5.0 → cmd2-3.5.1}/cmd2/command_definition.py +0 -0
  21. {cmd2-3.5.0 → cmd2-3.5.1}/cmd2/decorators.py +0 -0
  22. {cmd2-3.5.0 → cmd2-3.5.1}/cmd2/exceptions.py +0 -0
  23. {cmd2-3.5.0 → cmd2-3.5.1}/cmd2/history.py +0 -0
  24. {cmd2-3.5.0 → cmd2-3.5.1}/cmd2/plugin.py +0 -0
  25. {cmd2-3.5.0 → cmd2-3.5.1}/cmd2/py.typed +0 -0
  26. {cmd2-3.5.0 → cmd2-3.5.1}/cmd2/py_bridge.py +0 -0
  27. {cmd2-3.5.0 → cmd2-3.5.1}/cmd2/rich_utils.py +0 -0
  28. {cmd2-3.5.0 → cmd2-3.5.1}/cmd2/rl_utils.py +0 -0
  29. {cmd2-3.5.0 → cmd2-3.5.1}/cmd2/string_utils.py +0 -0
  30. {cmd2-3.5.0 → cmd2-3.5.1}/cmd2/styles.py +0 -0
  31. {cmd2-3.5.0 → cmd2-3.5.1}/cmd2/terminal_utils.py +0 -0
  32. {cmd2-3.5.0 → cmd2-3.5.1}/cmd2/transcript.py +0 -0
  33. {cmd2-3.5.0 → cmd2-3.5.1}/cmd2/utils.py +0 -0
  34. {cmd2-3.5.0 → cmd2-3.5.1}/cmd2.egg-info/SOURCES.txt +0 -0
  35. {cmd2-3.5.0 → cmd2-3.5.1}/cmd2.egg-info/dependency_links.txt +0 -0
  36. {cmd2-3.5.0 → cmd2-3.5.1}/cmd2.egg-info/requires.txt +0 -0
  37. {cmd2-3.5.0 → cmd2-3.5.1}/cmd2.egg-info/top_level.txt +0 -0
  38. {cmd2-3.5.0 → cmd2-3.5.1}/cmd2.png +0 -0
  39. {cmd2-3.5.0 → cmd2-3.5.1}/codecov.yml +0 -0
  40. {cmd2-3.5.0 → cmd2-3.5.1}/docs/api/argparse_completer.md +0 -0
  41. {cmd2-3.5.0 → cmd2-3.5.1}/docs/api/argparse_custom.md +0 -0
  42. {cmd2-3.5.0 → cmd2-3.5.1}/docs/api/clipboard.md +0 -0
  43. {cmd2-3.5.0 → cmd2-3.5.1}/docs/api/cmd.md +0 -0
  44. {cmd2-3.5.0 → cmd2-3.5.1}/docs/api/colors.md +0 -0
  45. {cmd2-3.5.0 → cmd2-3.5.1}/docs/api/command_definition.md +0 -0
  46. {cmd2-3.5.0 → cmd2-3.5.1}/docs/api/constants.md +0 -0
  47. {cmd2-3.5.0 → cmd2-3.5.1}/docs/api/decorators.md +0 -0
  48. {cmd2-3.5.0 → cmd2-3.5.1}/docs/api/exceptions.md +0 -0
  49. {cmd2-3.5.0 → cmd2-3.5.1}/docs/api/history.md +0 -0
  50. {cmd2-3.5.0 → cmd2-3.5.1}/docs/api/index.md +0 -0
  51. {cmd2-3.5.0 → cmd2-3.5.1}/docs/api/parsing.md +0 -0
  52. {cmd2-3.5.0 → cmd2-3.5.1}/docs/api/plugin.md +0 -0
  53. {cmd2-3.5.0 → cmd2-3.5.1}/docs/api/py_bridge.md +0 -0
  54. {cmd2-3.5.0 → cmd2-3.5.1}/docs/api/rich_utils.md +0 -0
  55. {cmd2-3.5.0 → cmd2-3.5.1}/docs/api/rl_utils.md +0 -0
  56. {cmd2-3.5.0 → cmd2-3.5.1}/docs/api/string_utils.md +0 -0
  57. {cmd2-3.5.0 → cmd2-3.5.1}/docs/api/styles.md +0 -0
  58. {cmd2-3.5.0 → cmd2-3.5.1}/docs/api/terminal_utils.md +0 -0
  59. {cmd2-3.5.0 → cmd2-3.5.1}/docs/api/transcript.md +0 -0
  60. {cmd2-3.5.0 → cmd2-3.5.1}/docs/api/utils.md +0 -0
  61. {cmd2-3.5.0 → cmd2-3.5.1}/docs/doc_conventions.md +0 -0
  62. {cmd2-3.5.0 → cmd2-3.5.1}/docs/examples/alternate_event_loops.md +0 -0
  63. {cmd2-3.5.0 → cmd2-3.5.1}/docs/examples/examples.md +0 -0
  64. {cmd2-3.5.0 → cmd2-3.5.1}/docs/examples/getting_started.md +0 -0
  65. {cmd2-3.5.0 → cmd2-3.5.1}/docs/examples/index.md +0 -0
  66. {cmd2-3.5.0 → cmd2-3.5.1}/docs/features/argument_processing.md +0 -0
  67. {cmd2-3.5.0 → cmd2-3.5.1}/docs/features/builtin_commands.md +0 -0
  68. {cmd2-3.5.0 → cmd2-3.5.1}/docs/features/clipboard.md +0 -0
  69. {cmd2-3.5.0 → cmd2-3.5.1}/docs/features/commands.md +0 -0
  70. {cmd2-3.5.0 → cmd2-3.5.1}/docs/features/completion.md +0 -0
  71. {cmd2-3.5.0 → cmd2-3.5.1}/docs/features/disable_commands.md +0 -0
  72. {cmd2-3.5.0 → cmd2-3.5.1}/docs/features/embedded_python_shells.md +0 -0
  73. {cmd2-3.5.0 → cmd2-3.5.1}/docs/features/generating_output.md +0 -0
  74. {cmd2-3.5.0 → cmd2-3.5.1}/docs/features/help.md +0 -0
  75. {cmd2-3.5.0 → cmd2-3.5.1}/docs/features/history.md +0 -0
  76. {cmd2-3.5.0 → cmd2-3.5.1}/docs/features/hooks.md +0 -0
  77. {cmd2-3.5.0 → cmd2-3.5.1}/docs/features/index.md +0 -0
  78. {cmd2-3.5.0 → cmd2-3.5.1}/docs/features/initialization.md +0 -0
  79. {cmd2-3.5.0 → cmd2-3.5.1}/docs/features/misc.md +0 -0
  80. {cmd2-3.5.0 → cmd2-3.5.1}/docs/features/modular_commands.md +0 -0
  81. {cmd2-3.5.0 → cmd2-3.5.1}/docs/features/multiline_commands.md +0 -0
  82. {cmd2-3.5.0 → cmd2-3.5.1}/docs/features/os.md +0 -0
  83. {cmd2-3.5.0 → cmd2-3.5.1}/docs/features/packaging.md +0 -0
  84. {cmd2-3.5.0 → cmd2-3.5.1}/docs/features/plugins.md +0 -0
  85. {cmd2-3.5.0 → cmd2-3.5.1}/docs/features/prompt.md +0 -0
  86. {cmd2-3.5.0 → cmd2-3.5.1}/docs/features/redirection.md +0 -0
  87. {cmd2-3.5.0 → cmd2-3.5.1}/docs/features/scripting.md +0 -0
  88. {cmd2-3.5.0 → cmd2-3.5.1}/docs/features/settings.md +0 -0
  89. {cmd2-3.5.0 → cmd2-3.5.1}/docs/features/shortcuts_aliases_macros.md +0 -0
  90. {cmd2-3.5.0 → cmd2-3.5.1}/docs/features/startup_commands.md +0 -0
  91. {cmd2-3.5.0 → cmd2-3.5.1}/docs/features/table_creation.md +0 -0
  92. {cmd2-3.5.0 → cmd2-3.5.1}/docs/features/theme.md +0 -0
  93. {cmd2-3.5.0 → cmd2-3.5.1}/docs/features/transcripts.md +0 -0
  94. {cmd2-3.5.0 → cmd2-3.5.1}/docs/index.md +0 -0
  95. {cmd2-3.5.0 → cmd2-3.5.1}/docs/javascripts/readthedocs.js +0 -0
  96. {cmd2-3.5.0 → cmd2-3.5.1}/docs/migrating/incompatibilities.md +0 -0
  97. {cmd2-3.5.0 → cmd2-3.5.1}/docs/migrating/index.md +0 -0
  98. {cmd2-3.5.0 → cmd2-3.5.1}/docs/migrating/minimum.md +0 -0
  99. {cmd2-3.5.0 → cmd2-3.5.1}/docs/migrating/next_steps.md +0 -0
  100. {cmd2-3.5.0 → cmd2-3.5.1}/docs/migrating/why.md +0 -0
  101. {cmd2-3.5.0 → cmd2-3.5.1}/docs/mixins/index.md +0 -0
  102. {cmd2-3.5.0 → cmd2-3.5.1}/docs/mixins/mixin_template.md +0 -0
  103. {cmd2-3.5.0 → cmd2-3.5.1}/docs/overrides/main.html +0 -0
  104. {cmd2-3.5.0 → cmd2-3.5.1}/docs/overview/alternatives.md +0 -0
  105. {cmd2-3.5.0 → cmd2-3.5.1}/docs/overview/index.md +0 -0
  106. {cmd2-3.5.0 → cmd2-3.5.1}/docs/overview/installation.md +0 -0
  107. {cmd2-3.5.0 → cmd2-3.5.1}/docs/overview/integrating.md +0 -0
  108. {cmd2-3.5.0 → cmd2-3.5.1}/docs/overview/resources.md +0 -0
  109. {cmd2-3.5.0 → cmd2-3.5.1}/docs/stylesheets/cmd2.css +0 -0
  110. {cmd2-3.5.0 → cmd2-3.5.1}/docs/testing.md +0 -0
  111. {cmd2-3.5.0 → cmd2-3.5.1}/docs/upgrades.md +0 -0
  112. {cmd2-3.5.0 → cmd2-3.5.1}/examples/.cmd2rc +0 -0
  113. {cmd2-3.5.0 → cmd2-3.5.1}/examples/README.md +0 -0
  114. {cmd2-3.5.0 → cmd2-3.5.1}/examples/argparse_completion.py +0 -0
  115. {cmd2-3.5.0 → cmd2-3.5.1}/examples/argparse_example.py +0 -0
  116. {cmd2-3.5.0 → cmd2-3.5.1}/examples/async_call.py +0 -0
  117. {cmd2-3.5.0 → cmd2-3.5.1}/examples/async_printing.py +0 -0
  118. {cmd2-3.5.0 → cmd2-3.5.1}/examples/basic_completion.py +0 -0
  119. {cmd2-3.5.0 → cmd2-3.5.1}/examples/cmd_as_argument.py +0 -0
  120. {cmd2-3.5.0 → cmd2-3.5.1}/examples/color.py +0 -0
  121. {cmd2-3.5.0 → cmd2-3.5.1}/examples/command_sets.py +0 -0
  122. {cmd2-3.5.0 → cmd2-3.5.1}/examples/custom_parser.py +0 -0
  123. {cmd2-3.5.0 → cmd2-3.5.1}/examples/custom_types.py +0 -0
  124. {cmd2-3.5.0 → cmd2-3.5.1}/examples/default_categories.py +0 -0
  125. {cmd2-3.5.0 → cmd2-3.5.1}/examples/dynamic_commands.py +0 -0
  126. {cmd2-3.5.0 → cmd2-3.5.1}/examples/environment.py +0 -0
  127. {cmd2-3.5.0 → cmd2-3.5.1}/examples/event_loops.py +0 -0
  128. {cmd2-3.5.0 → cmd2-3.5.1}/examples/exit_code.py +0 -0
  129. {cmd2-3.5.0 → cmd2-3.5.1}/examples/getting_started.py +0 -0
  130. {cmd2-3.5.0 → cmd2-3.5.1}/examples/hello_cmd2.py +0 -0
  131. {cmd2-3.5.0 → cmd2-3.5.1}/examples/help_categories.py +0 -0
  132. {cmd2-3.5.0 → cmd2-3.5.1}/examples/hooks.py +0 -0
  133. {cmd2-3.5.0 → cmd2-3.5.1}/examples/migrating.py +0 -0
  134. {cmd2-3.5.0 → cmd2-3.5.1}/examples/mixin.py +0 -0
  135. {cmd2-3.5.0 → cmd2-3.5.1}/examples/modular_commands/__init__.py +0 -0
  136. {cmd2-3.5.0 → cmd2-3.5.1}/examples/modular_commands/commandset_basic.py +0 -0
  137. {cmd2-3.5.0 → cmd2-3.5.1}/examples/modular_commands/commandset_complex.py +0 -0
  138. {cmd2-3.5.0 → cmd2-3.5.1}/examples/modular_commands/commandset_custominit.py +0 -0
  139. {cmd2-3.5.0 → cmd2-3.5.1}/examples/modular_commands.py +0 -0
  140. {cmd2-3.5.0 → cmd2-3.5.1}/examples/paged_output.py +0 -0
  141. {cmd2-3.5.0 → cmd2-3.5.1}/examples/persistent_history.py +0 -0
  142. {cmd2-3.5.0 → cmd2-3.5.1}/examples/pretty_print.py +0 -0
  143. {cmd2-3.5.0 → cmd2-3.5.1}/examples/python_scripting.py +0 -0
  144. {cmd2-3.5.0 → cmd2-3.5.1}/examples/read_input.py +0 -0
  145. {cmd2-3.5.0 → cmd2-3.5.1}/examples/remove_builtin_commands.py +0 -0
  146. {cmd2-3.5.0 → cmd2-3.5.1}/examples/remove_settable.py +0 -0
  147. {cmd2-3.5.0 → cmd2-3.5.1}/examples/rich_tables.py +0 -0
  148. {cmd2-3.5.0 → cmd2-3.5.1}/examples/rich_theme.py +0 -0
  149. {cmd2-3.5.0 → cmd2-3.5.1}/examples/scripts/arg_printer.py +0 -0
  150. {cmd2-3.5.0 → cmd2-3.5.1}/examples/scripts/conditional.py +0 -0
  151. {cmd2-3.5.0 → cmd2-3.5.1}/examples/scripts/nested.txt +0 -0
  152. {cmd2-3.5.0 → cmd2-3.5.1}/examples/scripts/quit.txt +0 -0
  153. {cmd2-3.5.0 → cmd2-3.5.1}/examples/scripts/save_help_text.py +0 -0
  154. {cmd2-3.5.0 → cmd2-3.5.1}/examples/scripts/script.py +0 -0
  155. {cmd2-3.5.0 → cmd2-3.5.1}/examples/scripts/script.txt +0 -0
  156. {cmd2-3.5.0 → cmd2-3.5.1}/examples/tmux_launch.sh +0 -0
  157. {cmd2-3.5.0 → cmd2-3.5.1}/examples/tmux_split.sh +0 -0
  158. {cmd2-3.5.0 → cmd2-3.5.1}/examples/transcript_example.py +0 -0
  159. {cmd2-3.5.0 → cmd2-3.5.1}/examples/transcripts/exampleSession.txt +0 -0
  160. {cmd2-3.5.0 → cmd2-3.5.1}/examples/transcripts/pirate.transcript +0 -0
  161. {cmd2-3.5.0 → cmd2-3.5.1}/examples/transcripts/quit.txt +0 -0
  162. {cmd2-3.5.0 → cmd2-3.5.1}/examples/transcripts/transcript_regex.txt +0 -0
  163. {cmd2-3.5.0 → cmd2-3.5.1}/examples/unicode_commands.py +0 -0
  164. {cmd2-3.5.0 → cmd2-3.5.1}/mkdocs.yml +0 -0
  165. {cmd2-3.5.0 → cmd2-3.5.1}/package.json +0 -0
  166. {cmd2-3.5.0 → cmd2-3.5.1}/pyproject.toml +0 -0
  167. {cmd2-3.5.0 → cmd2-3.5.1}/ruff.toml +0 -0
  168. {cmd2-3.5.0 → cmd2-3.5.1}/scripts/validate_tag.py +0 -0
  169. {cmd2-3.5.0 → cmd2-3.5.1}/setup.cfg +0 -0
  170. {cmd2-3.5.0 → cmd2-3.5.1}/tests/.cmd2rc +0 -0
  171. {cmd2-3.5.0 → cmd2-3.5.1}/tests/__init__.py +0 -0
  172. {cmd2-3.5.0 → cmd2-3.5.1}/tests/conftest.py +0 -0
  173. {cmd2-3.5.0 → cmd2-3.5.1}/tests/pyscript/echo.py +0 -0
  174. {cmd2-3.5.0 → cmd2-3.5.1}/tests/pyscript/environment.py +0 -0
  175. {cmd2-3.5.0 → cmd2-3.5.1}/tests/pyscript/help.py +0 -0
  176. {cmd2-3.5.0 → cmd2-3.5.1}/tests/pyscript/py_locals.py +0 -0
  177. {cmd2-3.5.0 → cmd2-3.5.1}/tests/pyscript/pyscript_dir.py +0 -0
  178. {cmd2-3.5.0 → cmd2-3.5.1}/tests/pyscript/raises_exception.py +0 -0
  179. {cmd2-3.5.0 → cmd2-3.5.1}/tests/pyscript/recursive.py +0 -0
  180. {cmd2-3.5.0 → cmd2-3.5.1}/tests/pyscript/self_in_py.py +0 -0
  181. {cmd2-3.5.0 → cmd2-3.5.1}/tests/pyscript/stdout_capture.py +0 -0
  182. {cmd2-3.5.0 → cmd2-3.5.1}/tests/pyscript/stop.py +0 -0
  183. {cmd2-3.5.0 → cmd2-3.5.1}/tests/relative_multiple.txt +0 -0
  184. {cmd2-3.5.0 → cmd2-3.5.1}/tests/script.py +0 -0
  185. {cmd2-3.5.0 → cmd2-3.5.1}/tests/script.txt +0 -0
  186. {cmd2-3.5.0 → cmd2-3.5.1}/tests/scripts/binary.bin +0 -0
  187. {cmd2-3.5.0 → cmd2-3.5.1}/tests/scripts/empty.txt +0 -0
  188. {cmd2-3.5.0 → cmd2-3.5.1}/tests/scripts/help.txt +0 -0
  189. {cmd2-3.5.0 → cmd2-3.5.1}/tests/scripts/nested.txt +0 -0
  190. {cmd2-3.5.0 → cmd2-3.5.1}/tests/scripts/one_down.txt +0 -0
  191. {cmd2-3.5.0 → cmd2-3.5.1}/tests/scripts/postcmds.txt +0 -0
  192. {cmd2-3.5.0 → cmd2-3.5.1}/tests/scripts/precmds.txt +0 -0
  193. {cmd2-3.5.0 → cmd2-3.5.1}/tests/scripts/utf8.txt +0 -0
  194. {cmd2-3.5.0 → cmd2-3.5.1}/tests/test_argparse.py +0 -0
  195. {cmd2-3.5.0 → cmd2-3.5.1}/tests/test_argparse_completer.py +0 -0
  196. {cmd2-3.5.0 → cmd2-3.5.1}/tests/test_argparse_custom.py +0 -0
  197. {cmd2-3.5.0 → cmd2-3.5.1}/tests/test_argparse_subcommands.py +0 -0
  198. {cmd2-3.5.0 → cmd2-3.5.1}/tests/test_async_alert.py +0 -0
  199. {cmd2-3.5.0 → cmd2-3.5.1}/tests/test_categories.py +0 -0
  200. {cmd2-3.5.0 → cmd2-3.5.1}/tests/test_cmd2.py +0 -0
  201. {cmd2-3.5.0 → cmd2-3.5.1}/tests/test_commandset.py +0 -0
  202. {cmd2-3.5.0 → cmd2-3.5.1}/tests/test_completion.py +0 -0
  203. {cmd2-3.5.0 → cmd2-3.5.1}/tests/test_future_annotations.py +0 -0
  204. {cmd2-3.5.0 → cmd2-3.5.1}/tests/test_history.py +0 -0
  205. {cmd2-3.5.0 → cmd2-3.5.1}/tests/test_parsing.py +0 -0
  206. {cmd2-3.5.0 → cmd2-3.5.1}/tests/test_plugin.py +0 -0
  207. {cmd2-3.5.0 → cmd2-3.5.1}/tests/test_rich_utils.py +0 -0
  208. {cmd2-3.5.0 → cmd2-3.5.1}/tests/test_run_pyscript.py +0 -0
  209. {cmd2-3.5.0 → cmd2-3.5.1}/tests/test_string_utils.py +0 -0
  210. {cmd2-3.5.0 → cmd2-3.5.1}/tests/test_terminal_utils.py +0 -0
  211. {cmd2-3.5.0 → cmd2-3.5.1}/tests/test_transcript.py +0 -0
  212. {cmd2-3.5.0 → cmd2-3.5.1}/tests/test_utils.py +0 -0
  213. {cmd2-3.5.0 → cmd2-3.5.1}/tests/test_utils_defining_class.py +0 -0
  214. {cmd2-3.5.0 → cmd2-3.5.1}/tests/transcripts/bol_eol.txt +0 -0
  215. {cmd2-3.5.0 → cmd2-3.5.1}/tests/transcripts/characterclass.txt +0 -0
  216. {cmd2-3.5.0 → cmd2-3.5.1}/tests/transcripts/dotstar.txt +0 -0
  217. {cmd2-3.5.0 → cmd2-3.5.1}/tests/transcripts/extension_notation.txt +0 -0
  218. {cmd2-3.5.0 → cmd2-3.5.1}/tests/transcripts/failure.txt +0 -0
  219. {cmd2-3.5.0 → cmd2-3.5.1}/tests/transcripts/from_cmdloop.txt +0 -0
  220. {cmd2-3.5.0 → cmd2-3.5.1}/tests/transcripts/multiline_no_regex.txt +0 -0
  221. {cmd2-3.5.0 → cmd2-3.5.1}/tests/transcripts/multiline_regex.txt +0 -0
  222. {cmd2-3.5.0 → cmd2-3.5.1}/tests/transcripts/no_output.txt +0 -0
  223. {cmd2-3.5.0 → cmd2-3.5.1}/tests/transcripts/no_output_last.txt +0 -0
  224. {cmd2-3.5.0 → cmd2-3.5.1}/tests/transcripts/singleslash.txt +0 -0
  225. {cmd2-3.5.0 → cmd2-3.5.1}/tests/transcripts/slashes_escaped.txt +0 -0
  226. {cmd2-3.5.0 → cmd2-3.5.1}/tests/transcripts/slashslash.txt +0 -0
  227. {cmd2-3.5.0 → cmd2-3.5.1}/tests/transcripts/spaces.txt +0 -0
  228. {cmd2-3.5.0 → cmd2-3.5.1}/tests/transcripts/word_boundaries.txt +0 -0
@@ -1,3 +1,9 @@
1
+ ## 3.5.1 (April 24, 2026)
2
+
3
+ - Bug Fixes
4
+ - Fixed `ArgparseCompleter.print_help()` not passing file stream to recursive call.
5
+ - Fixed issue where `constants.REDIRECTION_TOKENS` was being mutated.
6
+
1
7
  ## 3.5.0 (April 13, 2026)
2
8
 
3
9
  - Bug Fixes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cmd2
3
- Version: 3.5.0
3
+ Version: 3.5.1
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-Expression: MIT
@@ -637,7 +637,7 @@ class ArgparseCompleter:
637
637
  if parser:
638
638
  completer_type = self._cmd2_app._determine_ap_completer_type(parser)
639
639
  completer = completer_type(parser, self._cmd2_app)
640
- completer.print_help(tokens[1:])
640
+ completer.print_help(tokens[1:], file=file)
641
641
  return
642
642
 
643
643
  self._parser.print_help(file=file)
@@ -1666,10 +1666,8 @@ class Cmd:
1666
1666
  **On Failure**
1667
1667
  - Two empty lists
1668
1668
  """
1669
- import copy
1670
-
1671
1669
  unclosed_quote = ''
1672
- quotes_to_try = copy.copy(constants.QUOTES)
1670
+ quotes_to_try = [*constants.QUOTES]
1673
1671
 
1674
1672
  tmp_line = line[:endidx]
1675
1673
  tmp_endidx = endidx
@@ -3721,8 +3719,7 @@ class Cmd:
3721
3719
  return
3722
3720
 
3723
3721
  # Unquote redirection and terminator tokens
3724
- tokens_to_unquote = constants.REDIRECTION_TOKENS
3725
- tokens_to_unquote.extend(self.statement_parser.terminators)
3722
+ tokens_to_unquote = [*constants.REDIRECTION_TOKENS, *self.statement_parser.terminators]
3726
3723
  utils.unquote_specific_tokens(args.command_args, tokens_to_unquote)
3727
3724
 
3728
3725
  # Build the alias value string
@@ -3801,8 +3798,7 @@ class Cmd:
3801
3798
  """List some or all aliases as 'alias create' commands."""
3802
3799
  self.last_result = {} # dict[alias_name, alias_value]
3803
3800
 
3804
- tokens_to_quote = constants.REDIRECTION_TOKENS
3805
- tokens_to_quote.extend(self.statement_parser.terminators)
3801
+ tokens_to_quote = [*constants.REDIRECTION_TOKENS, *self.statement_parser.terminators]
3806
3802
 
3807
3803
  to_list = utils.remove_duplicates(args.names) if args.names else sorted(self.aliases, key=self.default_sort_key)
3808
3804
 
@@ -3964,8 +3960,7 @@ class Cmd:
3964
3960
  return
3965
3961
 
3966
3962
  # Unquote redirection and terminator tokens
3967
- tokens_to_unquote = constants.REDIRECTION_TOKENS
3968
- tokens_to_unquote.extend(self.statement_parser.terminators)
3963
+ tokens_to_unquote = [*constants.REDIRECTION_TOKENS, *self.statement_parser.terminators]
3969
3964
  utils.unquote_specific_tokens(args.command_args, tokens_to_unquote)
3970
3965
 
3971
3966
  # Build the macro value string
@@ -4087,8 +4082,7 @@ class Cmd:
4087
4082
  """List macros."""
4088
4083
  self.last_result = {} # dict[macro_name, macro_value]
4089
4084
 
4090
- tokens_to_quote = constants.REDIRECTION_TOKENS
4091
- tokens_to_quote.extend(self.statement_parser.terminators)
4085
+ tokens_to_quote = [*constants.REDIRECTION_TOKENS, *self.statement_parser.terminators]
4092
4086
 
4093
4087
  to_list = utils.remove_duplicates(args.names) if args.names else sorted(self.macros, key=self.default_sort_key)
4094
4088
 
@@ -7,12 +7,12 @@ INFINITY = float('inf')
7
7
 
8
8
  # Used for command parsing, output redirection, tab completion and word
9
9
  # breaks. Do not change.
10
- QUOTES = ['"', "'"]
10
+ QUOTES = ('"', "'")
11
11
  REDIRECTION_PIPE = '|'
12
12
  REDIRECTION_OUTPUT = '>'
13
13
  REDIRECTION_APPEND = '>>'
14
- REDIRECTION_CHARS = [REDIRECTION_PIPE, REDIRECTION_OUTPUT]
15
- REDIRECTION_TOKENS = [REDIRECTION_PIPE, REDIRECTION_OUTPUT, REDIRECTION_APPEND]
14
+ REDIRECTION_CHARS = (REDIRECTION_PIPE, REDIRECTION_OUTPUT)
15
+ REDIRECTION_TOKENS = (REDIRECTION_PIPE, REDIRECTION_OUTPUT, REDIRECTION_APPEND)
16
16
  COMMENT_CHAR = '#'
17
17
  MULTILINE_TERMINATOR = ';'
18
18
 
@@ -298,10 +298,12 @@ class StatementParser:
298
298
  # the string (\Z matches the end of the string even if it
299
299
  # contains multiple lines)
300
300
  #
301
- invalid_command_chars = []
302
- invalid_command_chars.extend(constants.QUOTES)
303
- invalid_command_chars.extend(constants.REDIRECTION_CHARS)
304
- invalid_command_chars.extend(self.terminators)
301
+ invalid_command_chars = (
302
+ *constants.QUOTES,
303
+ *constants.REDIRECTION_CHARS,
304
+ *self.terminators,
305
+ )
306
+
305
307
  # escape each item so it will for sure get treated as a literal
306
308
  second_group_items = [re.escape(x) for x in invalid_command_chars]
307
309
  # add the whitespace and end of string, not escaped because they
@@ -352,9 +354,8 @@ class StatementParser:
352
354
  return False, errmsg
353
355
 
354
356
  errmsg = 'cannot contain: whitespace, quotes, '
355
- errchars = []
356
- errchars.extend(constants.REDIRECTION_CHARS)
357
- errchars.extend(self.terminators)
357
+
358
+ errchars = (*constants.REDIRECTION_CHARS, *self.terminators)
358
359
  errmsg += ', '.join([shlex.quote(x) for x in errchars])
359
360
 
360
361
  match = self._command_pattern.search(word)
@@ -677,9 +678,8 @@ class StatementParser:
677
678
  :param tokens: the tokens as parsed by shlex
678
679
  :return: a new list of tokens, further split using punctuation
679
680
  """
680
- punctuation: list[str] = []
681
- punctuation.extend(self.terminators)
682
- punctuation.extend(constants.REDIRECTION_CHARS)
681
+ # Using a set for faster lookups
682
+ punctuation = {*self.terminators, *constants.REDIRECTION_CHARS}
683
683
 
684
684
  punctuated_tokens = []
685
685
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cmd2
3
- Version: 3.5.0
3
+ Version: 3.5.1
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-Expression: MIT
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
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