Skip to content

Annoying traceback instead of error message #3273

@ericriff

Description

@ericriff

If you run an invalid command you get a looong traceback that hides the actual error message. I don't think those tracebacks are needed.
See the following example with a typo on help:

$ poetry --hrlp            

  Stack trace:

  11  /opt/poetry/lib/poetry/_vendor/py3.6/clikit/console_application.py:124 in run
      self, args, input_stream, output_stream, error_stream

  10  /opt/poetry/lib/poetry/console/config/application_config.py:221 in create_io
      resolved_command = application.resolve_command(args)

   9  /opt/poetry/lib/poetry/_vendor/py3.6/clikit/console_application.py:110 in resolve_command
      return self._config.command_resolver.resolve(args, self)

   8  /opt/poetry/lib/poetry/_vendor/py3.6/clikit/resolver/default_resolver.py:43 in resolve
      result = self.process_default_commands(args, application.default_commands)

   7  /opt/poetry/lib/poetry/_vendor/py3.6/clikit/resolver/default_resolver.py:104 in process_default_commands
      if resolved_command.is_parsable():

   6  /opt/poetry/lib/poetry/_vendor/py3.6/clikit/resolver/resolve_result.py:43 in is_parsable
      self._parse()

   5  /opt/poetry/lib/poetry/_vendor/py3.6/clikit/resolver/resolve_result.py:49 in _parse
      self._parsed_args = self._command.parse(self._raw_args)

   4  /opt/poetry/lib/poetry/_vendor/py3.6/clikit/api/command/command.py:113 in parse
      return self._config.args_parser.parse(args, self._args_format, lenient)

   3  /opt/poetry/lib/poetry/_vendor/py3.6/clikit/args/default_args_parser.py:53 in parse
      self._parse(args, _fmt, lenient)

   2  /opt/poetry/lib/poetry/_vendor/py3.6/clikit/args/default_args_parser.py:101 in _parse
      self._parse_long_option(token, tokens, fmt, lenient)

   1  /opt/poetry/lib/poetry/_vendor/py3.6/clikit/args/default_args_parser.py:247 in _parse_long_option
      self._add_long_option(name, None, tokens, fmt, lenient)

  NoSuchOptionException

  The "--hrlp" option does not exist.

  at /opt/poetry/lib/poetry/_vendor/py3.6/clikit/args/default_args_parser.py:300 in _add_long_option
      296│     def _add_long_option(
      297│         self, name, value, tokens, fmt, lenient
      298│     ):  # type: (str, Optional[str], List[str], ArgsFormat, bool) -> None
      299│         if not fmt.has_option(name):
    → 300│             raise NoSuchOptionException(name)
      301│ 
      302│         option = fmt.get_option(name)
      303│ 
      304│         if value is False:

It should only show

  NoSuchOptionException

  The "--hrlp" option does not exist.

This is on the latest poetry version, 1.1.3.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions