diff --git a/doc/automated_configuration.rst b/doc/automated_configuration.rst
index 50c673d6..4f714ac0 100644
--- a/doc/automated_configuration.rst
+++ b/doc/automated_configuration.rst
@@ -60,6 +60,8 @@ We end with a list of important things to note about interactive generation:
 
 - Optional fields will accept blank inputs since they have default values that will be used if no user input is provided. In some cases, default values are shown underlined in parentheses. 
 
+- You can also use ``-i`` as an alias for ``--interactive`` and ``-g`` as an alias for ``--subgroups``. So, for example, if you want to interactively generate a configuration file with subgroups for ``rsmtool``, just run ``rsmtool generate -ig`` instead of ``rsmtool generate --interactive --subgroups``.
+
 - The configuration files generated interactively contain comments (as indicated by ``// ...``). While RSMTool handles JSON files with comments just fine, you may need to remove the comments manually if you wish to use these files outside of RSMTool.
 
 Non-interactive Generation
@@ -87,7 +89,7 @@ Note the two comments demarcating the locations of the required and optional fie
 
 Just like interactive generation, non-interactive generation is supported by all 5 tools: ``rsmtool``, ``rsmeval``, ``rsmcompare``, ``rsmpredict``, and ``rsmsummarize``. 
 
-Similarly, to include subgroup information in the reports for ``rsmtool``, ``rsmeval``, and ``rsmcompare``, just add ``--subgroups`` to the command. Note that unlike in interactive mode, this would *only* add subgroup-based sections to the ``general_sections`` list in the output file. You will need to manually edit the ``subgroups`` option in the configuration file to enter the subgroup column names.
+Similarly, to include subgroup information in the reports for ``rsmtool``, ``rsmeval``, and ``rsmcompare``, just add ``--subgroups`` (or ``-g``) to the command. Note that unlike in interactive mode, this would *only* add subgroup-based sections to the ``general_sections`` list in the output file. You will need to manually edit the ``subgroups`` option in the configuration file to enter the subgroup column names.
 
 Generation API
 ~~~~~~~~~~~~~~
diff --git a/doc/contributing.rst b/doc/contributing.rst
index e0b73c89..4e5b97f7 100644
--- a/doc/contributing.rst
+++ b/doc/contributing.rst
@@ -144,6 +144,8 @@ Here are some advanced tips and tricks when working with RSMTool tests.
 
 3. In the rare case that you *do* need to create an entirely new ``tests/test_experiment_X.py`` file instead of using one of the existing ones, you can choose whether to exclude the tests contained in this file from updating their expected outputs when ``update_files.py`` is run by setting ``_AUTO_UPDATE=False`` at the top of the file. This should *only* be necessary if you are absolutely sure that your tests will never need updating.
 
+4. The ``--pdb-errors`` and ``--pdb-failures`` options for ``nosetests`` are your friends. If you encounter test errors or test failures where the cause may not be immediately clear, re-run the ``nosetests`` command with the appropriate option. Doing so will drop you into an interactive PDB session as soon as a error (or failure) is encountered and then you inspect the variables at that point (or use "u" and "d" to go up and down the call stack). This may be particularly useful for tests in ``tests/test_cli.py`` that use ``subprocess.run()``. If these tests are erroring out, use ``--pdb-errors`` and inspect the "stderr" variable in the resulting PDB session to see what the error is.
+
 .. rubric:: Footnotes
 
 .. [#] For older versions of conda, you may have to do ``source activate rsmtool`` on Linux/macOS and ``activate rsmtool`` on Windows.
diff --git a/rsmtool/configuration_parser.py b/rsmtool/configuration_parser.py
index 0a7575a0..633c309a 100644
--- a/rsmtool/configuration_parser.py
+++ b/rsmtool/configuration_parser.py
@@ -9,20 +9,16 @@ and creating configuration objects.
 :organization: ETS
 """
 
-import functools
 import json
 import logging
 import re
-import warnings
 
 from copy import copy, deepcopy
 from collections import Counter
-from configparser import ConfigParser
 from os import getcwd
 from os.path import abspath
 
 from pathlib import Path
-from ruamel import yaml
 
 from skll import Learner
 from skll.metrics import SCORERS
diff --git a/rsmtool/utils/commandline.py b/rsmtool/utils/commandline.py
index 9edea101..a823d539 100755
--- a/rsmtool/utils/commandline.py
+++ b/rsmtool/utils/commandline.py
@@ -160,7 +160,8 @@ def setup_rsmcmd_parser(name,
     # Setting up options for the "generate" subparser #
     ###################################################
     if uses_subgroups:
-        parser_generate.add_argument('--subgroups',
+        parser_generate.add_argument('-g',
+                                     '--subgroups',
                                      dest='subgroups',
                                      action='store_true',
                                      default=False,
@@ -178,7 +179,8 @@ def setup_rsmcmd_parser(name,
                                       "using the generated configuration "
                                       "as-is will be suppressed.")
 
-    parser_generate.add_argument('--interactive',
+    parser_generate.add_argument('-i',
+                                 '--interactive',
                                  dest='interactive',
                                  action='store_true',
                                  default=False,
@@ -783,6 +785,11 @@ class ConfigurationGenerator:
         sys.stderr.write(" - you may still need to edit the generated configuration\n")
         sys.stderr.write("\n")
 
+        if not self.use_subgroups:
+            sys.stderr.write("IMPORTANT: If you have subgroups and didn't specify the '-g' "
+                             "option, exit now (ctrl-d) and re-run!\n")
+            sys.stderr.write("\n")
+
         # instantiate a blank dictionary
         configdict = OrderedDict()
 

Wishlist for interactive generation
Few things to add to interactive generation:
- Add `-i` flag (in addition  to ``--interactive``)
- Make subgroups an option rather than flag: "Do you have subgroups?" I always forget to set the flag.
- Add a question at the end: "Save output to a file?" 
diff --git a/tests/test_cli.py b/tests/test_cli.py
index 86b51ab0..6e3645ab 100644
--- a/tests/test_cli.py
+++ b/tests/test_cli.py
@@ -160,6 +160,7 @@ class TestToolCLI:
             proc = subprocess.run(shlex.split(cmd, posix='win' not in sys.platform),
                                   check=True,
                                   cwd=working_dir,
+                                  stderr=subprocess.PIPE,
                                   stdout=subprocess.DEVNULL,
                                   encoding='utf-8')
             # then check that the commmand ran successfully
@@ -172,7 +173,7 @@ class TestToolCLI:
             proc = subprocess.run(shlex.split(cmd, posix='win' not in sys.platform),
                                   check=True,
                                   stdout=subprocess.PIPE,
-                                  stderr=subprocess.DEVNULL,
+                                  stderr=subprocess.PIPE,
                                   encoding='utf-8')
             ok_(proc.returncode == 0)
             self.validate_generate_output(context,
diff --git a/tests/test_utils.py b/tests/test_utils.py
index 598c0ad0..fe7d9019 100644
--- a/tests/test_utils.py
+++ b/tests/test_utils.py
@@ -963,7 +963,19 @@ class TestSetupRsmCmdParser:
                                                 subgroups=True)
         eq_(parsed_namespace, expected_namespace)
 
-    def test_generate_subparser_with_subgroups_but_no_flag(self):
+    def test_generate_subparser_with_subgroups_option_and_short_flag(self):
+        """
+        test generate subparser with subgroups option and short flag
+        """
+        parser = setup_rsmcmd_parser('test', uses_subgroups=True)
+        parsed_namespace = parser.parse_args('generate -g'.split())
+        expected_namespace = argparse.Namespace(subcommand='generate',
+                                                interactive=False,
+                                                quiet=False,
+                                                subgroups=True)
+        eq_(parsed_namespace, expected_namespace)
+
+    def test_generate_subparser_with_subgroups_option_but_no_flag(self):
         """
         test generate subparser with subgroups option but no flag
         """
@@ -1009,6 +1021,17 @@ class TestSetupRsmCmdParser:
                                                 quiet=False)
         eq_(parsed_namespace, expected_namespace)
 
+    def test_generate_subparser_with_only_interactive_short_flag(self):
+        """
+        test generate subparser with only the short interactive flag
+        """
+        parser = setup_rsmcmd_parser('test')
+        parsed_namespace = parser.parse_args('generate -i'.split())
+        expected_namespace = argparse.Namespace(subcommand='generate',
+                                                interactive=True,
+                                                quiet=False)
+        eq_(parsed_namespace, expected_namespace)
+
     def test_generate_subparser_with_subgroups_and_interactive_flags(self):
         """
         test generate subparser with subgroups and interactive flags
@@ -1021,6 +1044,30 @@ class TestSetupRsmCmdParser:
                                                 subgroups=True)
         eq_(parsed_namespace, expected_namespace)
 
+    def test_generate_subparser_with_subgroups_and_interactive_short_flags(self):
+        """
+        test generate subparser with short subgroups and interactive flags
+        """
+        parser = setup_rsmcmd_parser('test', uses_subgroups=True)
+        parsed_namespace = parser.parse_args('generate -i -g'.split())
+        expected_namespace = argparse.Namespace(subcommand='generate',
+                                                quiet=False,
+                                                interactive=True,
+                                                subgroups=True)
+        eq_(parsed_namespace, expected_namespace)
+
+    def test_generate_subparser_with_subgroups_and_interactive_short_flags_together(self):
+        """
+        test generate subparser with short subgroups and interactive flags together
+        """
+        parser = setup_rsmcmd_parser('test', uses_subgroups=True)
+        parsed_namespace = parser.parse_args('generate -ig'.split())
+        expected_namespace = argparse.Namespace(subcommand='generate',
+                                                quiet=False,
+                                                interactive=True,
+                                                subgroups=True)
+        eq_(parsed_namespace, expected_namespace)
+
 
 class TestBatchGenerateConfiguration:
 

pip install -e .
parse_log_pytest
requirements.txt
nose nose-cov pytest
3.6
requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
alabaster==0.7.13
anyio==3.6.2
argon2-cffi==21.3.0
argon2-cffi-bindings==21.2.0
async-generator==1.10
attrs==22.2.0
Babel==2.11.0
backcall==0.2.0
beautifulsoup4==4.12.3
bleach==4.1.0
certifi==2021.5.30
cffi==1.15.1
charset-normalizer==2.0.12
click==8.0.4
colorama==0.4.5
comm==0.1.4
contextvars==2.4
cov-core==1.15.0
coverage==6.2
coveralls==3.3.1
cycler==0.11.0
dataclasses==0.8
decorator==5.1.1
defusedxml==0.7.1
doc2dash==2.3.0
docopt==0.6.2
docutils==0.18.1
entrypoints==0.4
et-xmlfile==1.1.0
idna==3.10
imagesize==1.4.1
immutables==0.19
importlib-metadata==4.8.3
iniconfig==1.1.1
ipykernel==5.5.6
ipython==7.16.3
ipython-genutils==0.2.0
ipywidgets==7.8.5
jedi==0.17.2
Jinja2==3.0.3
joblib==1.1.1
json5==0.9.16
jsonschema==3.2.0
jupyter==1.1.1
jupyter-client==7.1.2
jupyter-console==6.4.3
jupyter-core==4.9.2
jupyter-server==1.13.1
jupyterlab==3.2.9
jupyterlab-pygments==0.1.2
jupyterlab-server==2.10.3
jupyterlab_widgets==1.1.11
kiwisolver==1.3.1
MarkupSafe==2.0.1
matplotlib==3.3.4
mistune==0.8.4
nbclassic==0.3.5
nbclient==0.5.9
nbconvert==6.0.7
nbformat==5.1.3
nest-asyncio==1.6.0
nose==1.3.7
nose-cov==1.6
notebook==6.4.10
numpy==1.19.5
openpyxl==3.1.3
packaging==21.3
pandas==1.1.5
pandocfilters==1.5.1
parameterized==0.8.1
parso==0.7.1
patsy==1.0.1
pexpect==4.9.0
pickleshare==0.7.5
Pillow==8.4.0
pluggy==1.0.0
prometheus-client==0.17.1
prompt-toolkit==3.0.36
ptyprocess==0.7.0
py==1.11.0
pycparser==2.21
Pygments==2.14.0
pyparsing==3.1.4
pyrsistent==0.18.0
pytest==7.0.1
python-dateutil==2.9.0.post0
pytz==2025.2
pyzmq==25.1.2
requests==2.27.1
-e git+https://github.com/EducationalTestingService/rsmtool.git@18f05517dbdb65444d549871bd8c612d7043b879#egg=rsmtool
ruamel.yaml==0.18.3
ruamel.yaml.clib==0.2.8
scikit-learn==0.22.2.post1
scipy==1.5.4
seaborn==0.11.2
Send2Trash==1.8.3
six==1.17.0
skll==2.1
sniffio==1.2.0
snowballstemmer==2.2.0
soupsieve==2.3.2.post1
Sphinx==5.3.0
sphinx-rtd-theme==2.0.0
sphinxcontrib-applehelp==1.0.2
sphinxcontrib-devhelp==1.0.2
sphinxcontrib-htmlhelp==2.0.0
sphinxcontrib-jquery==4.1
sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==1.0.3
sphinxcontrib-serializinghtml==1.1.5
statsmodels==0.12.2
tabulate==0.8.10
terminado==0.12.1
testpath==0.6.0
tomli==1.2.3
tornado==6.1
traitlets==4.3.3
typing_extensions==4.1.1
urllib3==1.26.20
wcwidth==0.2.13
webencodings==0.5.1
websocket-client==1.3.1
widgetsnbextension==3.6.10
xlrd==2.0.1
xlwt==1.3.0
zipp==3.6.0
zope.interface==5.5.2

name: rsmtool
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2021.5.30=py36h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.3=he6710b0_2
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - pip=21.2.2=py36h06a4308_0
  - python=3.6.13=h12debd9_1
  - readline=8.2=h5eee18b_0
  - setuptools=58.0.4=py36h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.37.1=pyhd3eb1b0_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - alabaster==0.7.13
      - anyio==3.6.2
      - argon2-cffi==21.3.0
      - argon2-cffi-bindings==21.2.0
      - async-generator==1.10
      - attrs==22.2.0
      - babel==2.11.0
      - backcall==0.2.0
      - beautifulsoup4==4.12.3
      - bleach==4.1.0
      - cffi==1.15.1
      - charset-normalizer==2.0.12
      - click==8.0.4
      - colorama==0.4.5
      - comm==0.1.4
      - contextvars==2.4
      - cov-core==1.15.0
      - coverage==6.2
      - coveralls==3.3.1
      - cycler==0.11.0
      - dataclasses==0.8
      - decorator==5.1.1
      - defusedxml==0.7.1
      - doc2dash==2.3.0
      - docopt==0.6.2
      - docutils==0.18.1
      - entrypoints==0.4
      - et-xmlfile==1.1.0
      - idna==3.10
      - imagesize==1.4.1
      - immutables==0.19
      - importlib-metadata==4.8.3
      - iniconfig==1.1.1
      - ipykernel==5.5.6
      - ipython==7.16.3
      - ipython-genutils==0.2.0
      - ipywidgets==7.8.5
      - jedi==0.17.2
      - jinja2==3.0.3
      - joblib==1.1.1
      - json5==0.9.16
      - jsonschema==3.2.0
      - jupyter==1.1.1
      - jupyter-client==7.1.2
      - jupyter-console==6.4.3
      - jupyter-core==4.9.2
      - jupyter-server==1.13.1
      - jupyterlab==3.2.9
      - jupyterlab-pygments==0.1.2
      - jupyterlab-server==2.10.3
      - jupyterlab-widgets==1.1.11
      - kiwisolver==1.3.1
      - markupsafe==2.0.1
      - matplotlib==3.3.4
      - mistune==0.8.4
      - nbclassic==0.3.5
      - nbclient==0.5.9
      - nbconvert==6.0.7
      - nbformat==5.1.3
      - nest-asyncio==1.6.0
      - nose==1.3.7
      - nose-cov==1.6
      - notebook==6.4.10
      - numpy==1.19.5
      - openpyxl==3.1.3
      - packaging==21.3
      - pandas==1.1.5
      - pandocfilters==1.5.1
      - parameterized==0.8.1
      - parso==0.7.1
      - patsy==1.0.1
      - pexpect==4.9.0
      - pickleshare==0.7.5
      - pillow==8.4.0
      - pluggy==1.0.0
      - prometheus-client==0.17.1
      - prompt-toolkit==3.0.36
      - ptyprocess==0.7.0
      - py==1.11.0
      - pycparser==2.21
      - pygments==2.14.0
      - pyparsing==3.1.4
      - pyrsistent==0.18.0
      - pytest==7.0.1
      - python-dateutil==2.9.0.post0
      - pytz==2025.2
      - pyzmq==25.1.2
      - requests==2.27.1
      - ruamel-yaml==0.18.3
      - ruamel-yaml-clib==0.2.8
      - scikit-learn==0.22.2.post1
      - scipy==1.5.4
      - seaborn==0.11.2
      - send2trash==1.8.3
      - six==1.17.0
      - skll==2.1
      - sniffio==1.2.0
      - snowballstemmer==2.2.0
      - soupsieve==2.3.2.post1
      - sphinx==5.3.0
      - sphinx-rtd-theme==2.0.0
      - sphinxcontrib-applehelp==1.0.2
      - sphinxcontrib-devhelp==1.0.2
      - sphinxcontrib-htmlhelp==2.0.0
      - sphinxcontrib-jquery==4.1
      - sphinxcontrib-jsmath==1.0.1
      - sphinxcontrib-qthelp==1.0.3
      - sphinxcontrib-serializinghtml==1.1.5
      - statsmodels==0.12.2
      - tabulate==0.8.10
      - terminado==0.12.1
      - testpath==0.6.0
      - tomli==1.2.3
      - tornado==6.1
      - traitlets==4.3.3
      - typing-extensions==4.1.1
      - urllib3==1.26.20
      - wcwidth==0.2.13
      - webencodings==0.5.1
      - websocket-client==1.3.1
      - widgetsnbextension==3.6.10
      - xlrd==2.0.1
      - xlwt==1.3.0
      - zipp==3.6.0
      - zope-interface==5.5.2
prefix: /opt/conda/envs/rsmtool

tests/test_utils.py::TestSetupRsmCmdParser::test_generate_subparser_with_subgroups_option_and_short_flag tests/test_utils.py::TestSetupRsmCmdParser::test_generate_subparser_with_only_interactive_short_flag tests/test_utils.py::TestSetupRsmCmdParser::test_generate_subparser_with_subgroups_and_interactive_short_flags tests/test_utils.py::TestSetupRsmCmdParser::test_generate_subparser_with_subgroups_and_interactive_short_flags_together
tests/test_cli.py::TestToolCLI::test_rsmpredict_run_features_file tests/test_utils.py::TestExpectedScores::test_wrong_model tests/test_utils.py::TestExpectedScores::test_svc_model_trained_with_no_probs tests/test_utils.py::TestExpectedScores::test_wrong_score_range tests/test_utils.py::TestExpectedScores::test_expected_scores
tests/test_utils.py::test_int_to_float tests/test_utils.py::test_convert_to_float tests/test_utils.py::test_parse_json_with_comments tests/test_utils.py::test_float_format_func_default_prec tests/test_utils.py::test_float_format_func_custom_prec tests/test_utils.py::test_float_format_func_add_extra_zeros tests/test_utils.py::test_int_or_float_format_func_with_integer_as_float tests/test_utils.py::test_int_or_float_format_func_with_float_and_custom_precision tests/test_utils.py::test_custom_highlighter_not_bold_default_values tests/test_utils.py::test_custom_highlighter_bold_default_values tests/test_utils.py::test_custom_highlighter_bold_custom_low tests/test_utils.py::test_custom_highlighter_bold_custom_high tests/test_utils.py::test_custom_highlighter_bold_custom_prec tests/test_utils.py::test_custom_highlighter_bold_use_absolute tests/test_utils.py::test_custom_highlighter_not_bold_custom_low tests/test_utils.py::test_custom_highlighter_not_bold_custom_high tests/test_utils.py::test_custom_highlighter_not_bold_custom_prec tests/test_utils.py::test_custom_highlighter_not_bold_use_absolute tests/test_utils.py::test_custom_highlighter_not_colored_default_values tests/test_utils.py::test_custom_highlighter_color_default_values tests/test_utils.py::test_bold_highlighter_custom_values_not_bold tests/test_utils.py::test_bold_highlighter_custom_values_bold tests/test_utils.py::test_color_highlighter_custom_values_not_color tests/test_utils.py::test_color_highlighter_custom_values_color tests/test_utils.py::test_compute_subgroup_params_with_two_groups tests/test_utils.py::test_compute_subgroup_params_with_10_groups tests/test_utils.py::test_compute_subgroups_with_wrapping_and_five_plots tests/test_utils.py::test_has_files_with_extension_true tests/test_utils.py::test_has_files_with_extension_false tests/test_utils.py::test_get_output_directory_extension tests/test_utils.py::test_get_output_directory_extension_error tests/test_utils.py::test_standardized_mean_difference tests/test_utils.py::test_standardized_mean_difference_zero_denominator_johnson tests/test_utils.py::test_standardized_mean_difference_zero_difference tests/test_utils.py::test_standardized_mean_difference_fake_method tests/test_utils.py::test_standardized_mean_difference_pooled tests/test_utils.py::test_standardized_mean_difference_unpooled tests/test_utils.py::test_standardized_mean_difference_johnson tests/test_utils.py::test_standardized_mean_difference_johnson_error tests/test_utils.py::test_difference_of_standardized_means_unequal_lengths tests/test_utils.py::test_difference_of_standardized_means_with_y_true_mn_but_no_sd tests/test_utils.py::test_difference_of_standardized_means_with_y_true_sd_but_no_mn tests/test_utils.py::test_difference_of_standardized_means_with_y_pred_mn_but_no_sd tests/test_utils.py::test_difference_of_standardized_means_with_y_pred_sd_but_no_mn tests/test_utils.py::test_difference_of_standardized_means_with_all_values tests/test_utils.py::test_difference_of_standardized_means_with_no_population_info tests/test_utils.py::test_difference_of_standardized_means_zero_population_sd_pred tests/test_utils.py::test_difference_of_standardized_means_zero_population_sd_human tests/test_utils.py::test_difference_of_standardized_means_zero_population_computed tests/test_utils.py::test_quadratic_weighted_kappa tests/test_utils.py::test_quadratic_weighted_kappa_discrete_values_match_skll tests/test_utils.py::test_quadratic_weighted_kappa_discrete_values_match_sklearn tests/test_utils.py::test_quadratic_weighted_kappa_error tests/test_utils.py::test_partial_correlations_with_singular_matrix tests/test_utils.py::test_partial_correlations_pinv tests/test_utils.py::TestIntermediateFiles::test_get_files_as_html tests/test_utils.py::TestIntermediateFiles::test_get_files_as_html_replace_dict tests/test_utils.py::TestThumbnail::test_convert_to_html tests/test_utils.py::TestThumbnail::test_convert_to_html_with_png tests/test_utils.py::TestThumbnail::test_convert_to_html_with_two_images tests/test_utils.py::TestThumbnail::test_convert_to_html_with_absolute_path tests/test_utils.py::TestThumbnail::test_convert_to_html_file_not_found_error tests/test_utils.py::TestThumbnail::test_convert_to_html_with_different_thumbnail tests/test_utils.py::TestThumbnail::test_convert_to_html_thumbnail_not_found_error tests/test_utils.py::TestCmdOption::test_cmd_option_no_help tests/test_utils.py::TestCmdOption::test_cmd_option_no_dest tests/test_utils.py::TestCmdOption::test_cmd_option_attributes tests/test_utils.py::TestSetupRsmCmdParser::test_run_subparser_no_args tests/test_utils.py::TestSetupRsmCmdParser::test_run_subparser_non_existent_config_file tests/test_utils.py::TestSetupRsmCmdParser::test_run_subparser_with_output_directory tests/test_utils.py::TestSetupRsmCmdParser::test_run_subparser_no_output_directory tests/test_utils.py::TestSetupRsmCmdParser::test_run_subparser_with_overwrite_enabled tests/test_utils.py::TestSetupRsmCmdParser::test_run_subparser_with_extra_options tests/test_utils.py::TestSetupRsmCmdParser::test_run_subparser_with_extra_options_required_true_not_specified tests/test_utils.py::TestSetupRsmCmdParser::test_run_subparser_with_extra_options_required_true_and_specified tests/test_utils.py::TestSetupRsmCmdParser::test_run_subparser_with_extra_options_bad_required_value tests/test_utils.py::TestSetupRsmCmdParser::test_generate_subparser_help_flag tests/test_utils.py::TestSetupRsmCmdParser::test_generate_subparser tests/test_utils.py::TestSetupRsmCmdParser::test_generate_subparser_with_subgroups_and_flag tests/test_utils.py::TestSetupRsmCmdParser::test_generate_subparser_with_subgroups_option_but_no_flag tests/test_utils.py::TestSetupRsmCmdParser::test_generate_subparser_with_only_quiet_flag tests/test_utils.py::TestSetupRsmCmdParser::test_generate_subparser_with_subgroups_and_quiet_flags tests/test_utils.py::TestSetupRsmCmdParser::test_generate_subparser_with_only_interactive_flag tests/test_utils.py::TestSetupRsmCmdParser::test_generate_subparser_with_subgroups_and_interactive_flags tests/test_utils.py::TestInteractiveField::test_choice_field_no_choices
rsmtool/utils/commandline.py rsmtool/configuration_parser.py doc/contributing.rst doc/automated_configuration.rst
rsmtool/utils/commandline.py rsmtool/configuration_parser.py doc/contributing.rst doc/automated_configuration.rst