iterative / mlem

🐶 A tool to package, serve, and deploy any ML model on any platform. Archived to be resurrected one day🤞
https://mlem.ai
Apache License 2.0
718 stars 44 forks source link

zsh completions #460

Open igordertigor opened 1 year ago

igordertigor commented 1 year ago

I just installed the zsh completions for mlem and I get a very long error message:

File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/click/globals.py", line 37, in get_current_context
    return t.cast("Context", _local.stack[-1])
IndexError: list index out of range

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/xxxxxxxxx/.venv/bin/mlem", line 8, in <module>
    sys.exit(app())
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/typer/main.py", line 328, in __call__
    raise e
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/typer/main.py", line 311, in __call__
    return get_command(self)(*args, **kwargs)
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/typer/core.py", line 778, in main
    return _main(
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/typer/core.py", line 206, in _main
    self._main_shell_completion(extra, prog_name, complete_var)
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/typer/core.py", line 765, in _main_shell_completion
    _typer_main_shell_completion(
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/typer/core.py", line 651, in _typer_main_shell_completion
    rv = shell_complete(self, ctx_args, prog_name, complete_var, instruction)
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/typer/completion.py", line 156, in shell_complete
    click.echo(comp.complete())
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/typer/_completion_click8.py", line 101, in complete
    completions = self.get_completions(args, incomplete)
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/click/shell_completion.py", line 273, in get_completions
    return obj.shell_complete(ctx, incomplete)
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/click/core.py", line 1742, in shell_complete
    results = [
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/click/core.py", line 1743, in <listcomp>
    CompletionItem(name, help=command.get_short_help_str())
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/click/core.py", line 1307, in get_short_help_str
    elif self.help:
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/mlem/cli/main.py", line 190, in help
    cmd_name = self._get_cmd_name_for_docs_link()
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/mlem/cli/main.py", line 85, in _get_cmd_name_for_docs_link
    ctx = click.get_current_context()
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/click/globals.py", line 40, in get_current_context
    raise RuntimeError("There is no active click context.") from e
RuntimeError: There is no active click context.
ppTraceback (most recent call last):
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/click/globals.py", line 37, in get_current_context
    return t.cast("Context", _local.stack[-1])
IndexError: list index out of range

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/xxxxxxxxx/.venv/bin/mlem", line 8, in <module>
    sys.exit(app())
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/typer/main.py", line 328, in __call__
    raise e
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/typer/main.py", line 311, in __call__
    return get_command(self)(*args, **kwargs)
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/typer/core.py", line 778, in main
    return _main(
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/typer/core.py", line 206, in _main
    self._main_shell_completion(extra, prog_name, complete_var)
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/typer/core.py", line 765, in _main_shell_completion
    _typer_main_shell_completion(
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/typer/core.py", line 651, in _typer_main_shell_completion
    rv = shell_complete(self, ctx_args, prog_name, complete_var, instruction)
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/typer/completion.py", line 156, in shell_complete
    click.echo(comp.complete())
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/typer/_completion_click8.py", line 101, in complete
    completions = self.get_completions(args, incomplete)
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/click/shell_completion.py", line 273, in get_completions
    return obj.shell_complete(ctx, incomplete)
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/click/core.py", line 1742, in shell_complete
    results = [
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/click/core.py", line 1743, in <listcomp>
    CompletionItem(name, help=command.get_short_help_str())
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/click/core.py", line 1307, in get_short_help_str
    elif self.help:
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/mlem/cli/main.py", line 190, in help
    cmd_name = self._get_cmd_name_for_docs_link()
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/mlem/cli/main.py", line 85, in _get_cmd_name_for_docs_link
    ctx = click.get_current_context()
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/click/globals.py", line 40, in get_current_context
    raise RuntimeError("There is no active click context.") from e
RuntimeError: There is no active click context.
Traceback (most recent call last):
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/click/globals.py", line 37, in get_current_context
    return t.cast("Context", _local.stack[-1])
IndexError: list index out of range

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/xxxxxxxxx/.venv/bin/mlem", line 8, in <module>
    sys.exit(app())
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/typer/main.py", line 328, in __call__
    raise e
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/typer/main.py", line 311, in __call__
    return get_command(self)(*args, **kwargs)
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/typer/core.py", line 778, in main
    return _main(
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/typer/core.py", line 206, in _main
    self._main_shell_completion(extra, prog_name, complete_var)
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/typer/core.py", line 765, in _main_shell_completion
    _typer_main_shell_completion(
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/typer/core.py", line 651, in _typer_main_shell_completion
    rv = shell_complete(self, ctx_args, prog_name, complete_var, instruction)
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/typer/completion.py", line 156, in shell_complete
    click.echo(comp.complete())
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/typer/_completion_click8.py", line 101, in complete
    completions = self.get_completions(args, incomplete)
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/click/shell_completion.py", line 273, in get_completions
    return obj.shell_complete(ctx, incomplete)
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/click/core.py", line 1742, in shell_complete
    results = [
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/click/core.py", line 1743, in <listcomp>
    CompletionItem(name, help=command.get_short_help_str())
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/click/core.py", line 1307, in get_short_help_str
    elif self.help:
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/mlem/cli/main.py", line 190, in help
    cmd_name = self._get_cmd_name_for_docs_link()
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/mlem/cli/main.py", line 85, in _get_cmd_name_for_docs_link
    ctx = click.get_current_context()
  File "/home/xxxxxxxxx/.venv/lib/python3.8/site-packages/click/globals.py", line 40, in get_current_context
    raise RuntimeError("There is no active click context.") from e
RuntimeError: There is no active click context.

However, I get no completion. I'm no expert on zsh-extensions and will just de-activate it for now, but I feel that it's still something that might need attention at some point.

mike0sv commented 1 year ago

Can you share how do you install it (ei exact commands)? To be honest, we never tested auto-completion provided by typer :( I just tried it myself and I dont get this error - it says it successfully installed (tried both zsh and bash) However it just does not work 🤣 But maybe there is something wrong with my env

mike0sv commented 1 year ago

OK I got it to crash like you described inside docker env - so there is def something wrong with mine. Will take a look

mike0sv commented 1 year ago

@aguschin can you TAL? I think the error is due to trying to get click context for getting command name for docs link - it seems when run in completion mode there is no active click context

igordertigor commented 1 year ago

@mike0sv , yes it initially didn't work at all, just said that it created a ~./zfunc/ folder and put it in there. I thought that this folder might be used somewhere in the oh-my-zsh config, which I don't use. So I just plainly sourced it at the end of my ~/.zshrc. So, similar observations as you had.