Skip to content

CLI: combination of --app-dir and --help raises TypeError #4331

@sobolevn

Description

@sobolevn

Description

When called together inside a CLI:

» litestar --app-dir docker/neurogate --help
Traceback (most recent call last):
  File "/Users/sobolev/Documents/PyCharmProjects/ai-calculator/.venv/bin/litestar", line 7, in <module>
    sys.exit(run_cli())
             ^^^^^^^^^
  File "/Users/sobolev/Documents/PyCharmProjects/ai-calculator/.venv/lib/python3.12/site-packages/litestar/__main__.py", line 6, in run_cli
    litestar_group()
  File "/Users/sobolev/Documents/PyCharmProjects/ai-calculator/.venv/lib/python3.12/site-packages/rich_click/rich_command.py", line 395, in __call__
    return super().__call__(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sobolev/Documents/PyCharmProjects/ai-calculator/.venv/lib/python3.12/site-packages/click/core.py", line 1462, in __call__
    return self.main(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sobolev/Documents/PyCharmProjects/ai-calculator/.venv/lib/python3.12/site-packages/rich_click/rich_command.py", line 208, in main
    with self.make_context(prog_name, args, **extra) as ctx:
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sobolev/Documents/PyCharmProjects/ai-calculator/.venv/lib/python3.12/site-packages/litestar/cli/_utils.py", line 230, in make_context
    ctx = super().make_context(info_name, args, parent, **extra)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sobolev/Documents/PyCharmProjects/ai-calculator/.venv/lib/python3.12/site-packages/click/core.py", line 1206, in make_context
    self.parse_args(ctx, args)
  File "/Users/sobolev/Documents/PyCharmProjects/ai-calculator/.venv/lib/python3.12/site-packages/litestar/cli/_utils.py", line 249, in parse_args
    return super().parse_args(ctx, args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sobolev/Documents/PyCharmProjects/ai-calculator/.venv/lib/python3.12/site-packages/click/core.py", line 1806, in parse_args
    rest = super().parse_args(ctx, args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sobolev/Documents/PyCharmProjects/ai-calculator/.venv/lib/python3.12/site-packages/click/core.py", line 1217, in parse_args
    _, args = param.handle_parse_result(ctx, opts, args)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sobolev/Documents/PyCharmProjects/ai-calculator/.venv/lib/python3.12/site-packages/click/core.py", line 2516, in handle_parse_result
    value = self.process_value(ctx, value)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sobolev/Documents/PyCharmProjects/ai-calculator/.venv/lib/python3.12/site-packages/click/core.py", line 2411, in process_value
    value = self.callback(ctx, self, value)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sobolev/Documents/PyCharmProjects/ai-calculator/.venv/lib/python3.12/site-packages/rich_click/decorators.py", line 324, in show_help
    print(ctx.get_help())
          ^^^^^^^^^^^^^^
  File "/Users/sobolev/Documents/PyCharmProjects/ai-calculator/.venv/lib/python3.12/site-packages/click/core.py", line 750, in get_help
    return self.command.get_help(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sobolev/Documents/PyCharmProjects/ai-calculator/.venv/lib/python3.12/site-packages/click/core.py", line 1084, in get_help
    self.format_help(ctx, formatter)
  File "/Users/sobolev/Documents/PyCharmProjects/ai-calculator/.venv/lib/python3.12/site-packages/rich_click/rich_command.py", line 387, in format_help
    self.format_options(ctx, formatter)
  File "/Users/sobolev/Documents/PyCharmProjects/ai-calculator/.venv/lib/python3.12/site-packages/rich_click/rich_command.py", line 292, in format_options
    p = panel.render(self, ctx, formatter)  # type: ignore[arg-type]
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sobolev/Documents/PyCharmProjects/ai-calculator/.venv/lib/python3.12/site-packages/rich_click/rich_panel.py", line 412, in render
    inner: Any = self.get_table(command, ctx, formatter)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sobolev/Documents/PyCharmProjects/ai-calculator/.venv/lib/python3.12/site-packages/rich_click/rich_panel.py", line 376, in get_table
    for cmd in self.get_objects(command, ctx):
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sobolev/Documents/PyCharmProjects/ai-calculator/.venv/lib/python3.12/site-packages/rich_click/rich_panel.py", line 325, in get_objects
    commands_list = command.list_commands(ctx)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sobolev/Documents/PyCharmProjects/ai-calculator/.venv/lib/python3.12/site-packages/litestar/cli/_utils.py", line 252, in list_commands
    self._prepare(ctx)
  File "/Users/sobolev/Documents/PyCharmProjects/ai-calculator/.venv/lib/python3.12/site-packages/litestar/cli/_utils.py", line 213, in _prepare
    env = ctx.obj = LitestarEnv.from_env(app_path, app_dir)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sobolev/Documents/PyCharmProjects/ai-calculator/.venv/lib/python3.12/site-packages/litestar/cli/_utils.py", line 116, in from_env
    loaded_app = _autodiscover_app(cwd)
                 ^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sobolev/Documents/PyCharmProjects/ai-calculator/.venv/lib/python3.12/site-packages/litestar/cli/_utils.py", line 355, in _autodiscover_app
    for file_path in _autodiscovery_paths(cwd):
                     ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sobolev/Documents/PyCharmProjects/ai-calculator/.venv/lib/python3.12/site-packages/litestar/cli/_utils.py", line 344, in _autodiscovery_paths
    path = base_dir / name
           ~~~~~~~~~^~~~~~
TypeError: unsupported operand type(s) for /: 'str' and 'str'

It produces an exception. Which does not look correct.

URL to code causing the issue

No response

MCVE

Steps to reproduce

  1. litestar --app-dir whatever --help

Screenshots

No response

Logs


Litestar Version

2.17.0

Platform

  • Linux
  • Mac
  • Windows
  • Other (Please specify in the description above)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Bug 🐛This is something that is not working as expected

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions