Source code for aiida.cmdline.params.options.callable
###########################################################################
# Copyright (c), The AiiDA team. All rights reserved. #
# This file is part of the AiiDA code. #
# #
# The code is hosted on GitHub at https://github.com/aiidateam/aiida-core #
# For further information on the license, see the LICENSE.txt file #
# For further information please visit http://www.aiida.net #
###########################################################################
"""A monkey-patched subclass of click.Option that does not evaluate callable default during tab completion."""
import typing as t
import click
__all__ = ('CallableDefaultOption',)
[docs]
class CallableDefaultOption(click.Option):
"""A monkeypatch for click.Option that does not evaluate default callbacks during tab completion
This is a temporary solution until a proper fix is implemented in click, see:
https://github.com/pallets/click/issues/2614
"""
[docs]
def get_default(self, ctx: click.Context, call: bool = True) -> t.Optional[t.Union[t.Any, t.Callable[[], t.Any]]]:
"""Return default unless in tab-completion context."""
if ctx.resilient_parsing:
return None
return super().get_default(ctx=ctx, call=call)