Source code for pyfemtet.opt.exceptions

import warnings

__all__ = [
    'ExceptionDuringOptimization',
    'FEMError',
    '_HiddenConstraintViolation',
    'ModelError',
    'MeshError',
    'SolveError',
    'PostProcessError',
    'HardConstraintViolation',
    'InterruptOptimization',
    'SkipSolve',
    'show_experimental_warning'
]


[docs] class ExceptionDuringOptimization(Exception): ...
[docs] class FEMError(Exception): ...
class _HiddenConstraintViolation(ExceptionDuringOptimization): __pyfemtet_subclasses__ = [] def __init_subclass__(cls, **kwargs): super().__init_subclass__(**kwargs) _HiddenConstraintViolation.__pyfemtet_subclasses__.append(cls)
[docs] class ModelError(FEMError, _HiddenConstraintViolation): ...
[docs] class MeshError(FEMError, _HiddenConstraintViolation): ...
[docs] class SolveError(FEMError, _HiddenConstraintViolation): ...
[docs] class PostProcessError(FEMError, _HiddenConstraintViolation): ...
[docs] class HardConstraintViolation(ExceptionDuringOptimization): ...
[docs] class InterruptOptimization(ExceptionDuringOptimization): ...
[docs] class SkipSolve(ExceptionDuringOptimization): ...
_shown = set()
[docs] def show_experimental_warning(feature_name, logger=None): global _shown if feature_name not in _shown: _shown.add(feature_name) msg = (f'{feature_name} は実験的機能です。将来 API 等が' '大きく変更されるか、機能自体が削除される' '可能性があります。') if logger is not None: logger.warning(msg) else: warnings.warn(msg)