Source code for zfit.util.exception

#  Copyright (c) 2020 zfit

# TODO: improve errors of models. Generate more general error, inherit and use more specific?
import warnings


[docs]class PDFCompatibilityError(Exception): pass
[docs]class LogicalUndefinedOperationError(Exception): pass
[docs]class OperationNotAllowedError(Exception): pass
[docs]class ExtendedPDFError(Exception): pass
[docs]class AlreadyExtendedPDFError(ExtendedPDFError): pass
[docs]class NotExtendedPDFError(ExtendedPDFError): pass
[docs]class ConversionError(Exception): pass
[docs]class SubclassingError(Exception): pass
[docs]class BasePDFSubclassingError(SubclassingError): pass
[docs]class IntentionAmbiguousError(Exception): pass
[docs]class UnderdefinedError(IntentionAmbiguousError): pass
[docs]class LimitsUnderdefinedError(UnderdefinedError): pass
[docs]class NormRangeUnderdefinedError(UnderdefinedError): pass
[docs]class OverdefinedError(IntentionAmbiguousError): pass
[docs]class LimitsOverdefinedError(OverdefinedError): pass
[docs]class CoordinatesUnderdefinedError(UnderdefinedError): pass
[docs]class AxesAmbiguousError(IntentionAmbiguousError): pass
[docs]class NotSpecifiedError(Exception): pass
[docs]class LimitsNotSpecifiedError(NotSpecifiedError): pass
[docs]class NormRangeNotSpecifiedError(NotSpecifiedError): pass
[docs]class AxesNotSpecifiedError(NotSpecifiedError): pass
[docs]class ObsNotSpecifiedError(NotSpecifiedError): pass
# Parameter Errors
[docs]class NameAlreadyTakenError(Exception): pass
# Operation errors
[docs]class IncompatibleError(Exception): pass
[docs]class ShapeIncompatibleError(IncompatibleError): pass
[docs]class ObsIncompatibleError(IncompatibleError): pass
[docs]class AxesIncompatibleError(IncompatibleError): pass
[docs]class CoordinatesIncompatibleError(IncompatibleError): pass
[docs]class SpaceIncompatibleError(IncompatibleError): pass
[docs]class LimitsIncompatibleError(IncompatibleError): pass
[docs]class NumberOfEventsIncompatibleError(ShapeIncompatibleError): pass
[docs]class InvalidLimitSubspaceError(Exception): pass
[docs]class ModelIncompatibleError(IncompatibleError): pass
# Data errors
[docs]class WeightsNotImplementedError(Exception): pass
[docs]class DataIsBatchedError(Exception): pass
# Parameter errors
[docs]class ParameterNotIndependentError(Exception): pass
# Minimizer errors
[docs]class NotMinimizedError(Exception): pass
# Runtime Errors
[docs]class IllegalInGraphModeError(Exception): pass
[docs]class CannotConvertToNumpyError(Exception): pass
# Baseclass to steer execution
[docs]class ZfitNotImplementedError(NotImplementedError): def __init__(self, *args: object) -> None: super().__init__(*args) if type(self) == ZfitNotImplementedError: warnings.warn("Prefer to use a more specific subclass. See in `zfit.exceptions`")
[docs]class FunctionNotImplementedError(ZfitNotImplementedError): """Any function, e.g. in a BaseModel, that not implemented and a fallback should be called. Preferably use more specific exceptions """
[docs]class StandardControlFlow(Exception): """An exception that inherits from this class will be regarded as part of the standard control flow and not as an Error. For example, if a function raises that values are NaN, this is often intercepted on purpose."""
[docs]class SpecificFunctionNotImplementedError(FunctionNotImplementedError): """If a specific function, e.g. by the user is not implemented"""
[docs]class MinimizeNotImplementedError(FunctionNotImplementedError): """The `minimize` function of a minimizer is not implemented."""
[docs]class MinimizeStepNotImplementedError(FunctionNotImplementedError): """The `step` function of a minimizer is not implemented."""
[docs]class AnalyticNotImplementedError(ZfitNotImplementedError): """General exception if an analytic way is not implemented"""
[docs]class AnalyticIntegralNotImplementedError(AnalyticNotImplementedError): """If an analytic integral is not provided.""" pass
[docs]class AnalyticSamplingNotImplementedError(AnalyticNotImplementedError): """If analytic sampling from a distribution is not possible.""" pass
# PDF class internal handling errors
[docs]class NormRangeNotImplementedError(Exception): """Indicates that a function does not support the normalization range argument `norm_range`.""" pass
[docs]class MultipleLimitsNotImplementedError(Exception): """Indicates that a function does not support several limits in a :py:class:`~zfit.Space`.""" pass
[docs]class VectorizedLimitsNotImplementedError(Exception): """Indicates that a function does not support vectorized (n_events > 1) limits in a :py:class:`~zfit.Space`.""" pass
# Developer verbose messages
[docs]class WorkInProgressError(Exception): """Only for developing purpose! Does not serve as a 'real' Exception.""" pass
[docs]class BreakingAPIChangeError(Exception): def __init__(self, msg, *args: object) -> None: default_msg = ("This item has been removed due to an API change. Instruction to update:\n" "") msg = default_msg + str(msg) super().__init__(msg, *args)
[docs]class BehaviorUnderDiscussion(Exception): def __init__(self, msg, *args: object) -> None: default_msg = ("The behavior of the following is currently under discussion and ideas are well needed. " "Please open an issue at https://github.com/zfit/zfit/issues with your opinion about this.\n" "") msg = default_msg + str(msg) super().__init__(msg, *args)