You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
bazarr/libs/dynaconf/vendor/click/exceptions.py

76 lines
3.2 KiB

_A=None
from._compat import filename_to_ui,get_text_stderr
from.utils import echo
def _join_param_hints(param_hint):
A=param_hint
if isinstance(A,(tuple,list)):return' / '.join(repr(A)for A in A)
return A
class ClickException(Exception):
exit_code=1
def __init__(B,message):A=message;super().__init__(A);B.message=A
def format_message(A):return A.message
def __str__(A):return A.message
def show(B,file=_A):
A=file
if A is _A:A=get_text_stderr()
echo(f"Error: {B.format_message()}",file=A)
class UsageError(ClickException):
exit_code=2
def __init__(A,message,ctx=_A):ClickException.__init__(A,message);A.ctx=ctx;A.cmd=A.ctx.command if A.ctx else _A
def show(A,file=_A):
B=file
if B is _A:B=get_text_stderr()
C=_A;D=''
if A.cmd is not _A and A.cmd.get_help_option(A.ctx)is not _A:D=f"Try '{A.ctx.command_path} {A.ctx.help_option_names[0]}' for help.\n"
if A.ctx is not _A:C=A.ctx.color;echo(f"{A.ctx.get_usage()}\n{D}",file=B,color=C)
echo(f"Error: {A.format_message()}",file=B,color=C)
class BadParameter(UsageError):
def __init__(A,message,ctx=_A,param=_A,param_hint=_A):UsageError.__init__(A,message,ctx);A.param=param;A.param_hint=param_hint
def format_message(A):
if A.param_hint is not _A:B=A.param_hint
elif A.param is not _A:B=A.param.get_error_hint(A.ctx)
else:return f"Invalid value: {A.message}"
B=_join_param_hints(B);return f"Invalid value for {B}: {A.message}"
class MissingParameter(BadParameter):
def __init__(A,message=_A,ctx=_A,param=_A,param_hint=_A,param_type=_A):BadParameter.__init__(A,message,ctx,param,param_hint);A.param_type=param_type
def format_message(A):
if A.param_hint is not _A:B=A.param_hint
elif A.param is not _A:B=A.param.get_error_hint(A.ctx)
else:B=_A
B=_join_param_hints(B);D=A.param_type
if D is _A and A.param is not _A:D=A.param.param_type_name
C=A.message
if A.param is not _A:
E=A.param.type.get_missing_message(A.param)
if E:
if C:C+=f". {E}"
else:C=E
F=f" {B}"if B else'';return f"Missing {D}{F}.{' 'if C else''}{C or''}"
def __str__(A):
if A.message is _A:B=A.param.name if A.param else _A;return f"missing parameter: {B}"
else:return A.message
class NoSuchOption(UsageError):
def __init__(A,option_name,message=_A,possibilities=_A,ctx=_A):
C=option_name;B=message
if B is _A:B=f"no such option: {C}"
UsageError.__init__(A,B,ctx);A.option_name=C;A.possibilities=possibilities
def format_message(A):
B=[A.message]
if A.possibilities:
if len(A.possibilities)==1:B.append(f"Did you mean {A.possibilities[0]}?")
else:C=sorted(A.possibilities);B.append(f"(Possible options: {', '.join(C)})")
return' '.join(B)
class BadOptionUsage(UsageError):
def __init__(A,option_name,message,ctx=_A):UsageError.__init__(A,message,ctx);A.option_name=option_name
class BadArgumentUsage(UsageError):
def __init__(A,message,ctx=_A):UsageError.__init__(A,message,ctx)
class FileError(ClickException):
def __init__(A,filename,hint=_A):
C=filename;B=hint;D=filename_to_ui(C)
if B is _A:B='unknown error'
ClickException.__init__(A,B);A.ui_filename=D;A.filename=C
def format_message(A):return f"Could not open file {A.ui_filename}: {A.message}"
class Abort(RuntimeError):0
class Exit(RuntimeError):
__slots__='exit_code',
def __init__(A,code=0):A.exit_code=code