'''
Created on 20-Jan-2022

@author: bthakur
'''

import os
import codecs
import inspect
import traceback
import random

from xv.util import UtilClass

# _algebra_helper
# AlgebraHelper

class AlgebraHelper(UtilClass):
    
    def __init__(self, **kwargs):
        super().__init__(**kwargs)

        self._algebric_expression_helper = None
        self._arithmetic_series_helper = None
        self._binomial_helper = None
        self._complex_number_helper = None
        self._euler_number_helper = None
        self._func_classification_helper = None
        self._gamma_func_helper = None
        self._laplace_transform_helper = None
        self._func_transform_helper = None
        self._geometric_series_helper = None
        self._linear_equations_helper = None
        self._matrix_helper = None
        self._multi_variable_helper = None
        self._multinomial_helper = None
        self._polynomial_helper = None
        self._single_variable_helper = None
        
        self._kwargs = kwargs
        pass

            

    def get_algebric_expression_helper(self):
        if self._algebric_expression_helper is None:
            self._init_algebric_expression_helper(**self._kwargs)
        return self._algebric_expression_helper
        pass

    def _init_algebric_expression_helper(self, **kwargs):  
        from ._algebric_expression_helper import AlgebricExpressionHelper
        self._algebric_expression_helper = AlgebricExpressionHelper(**kwargs) 
        pass

    def get_binomial_helper(self):
        if self._binomial_helper is None:
            self._init_binomial_helper(**self._kwargs)
        return self._binomial_helper
        pass

    def _init_binomial_helper(self, **kwargs):  
        from ._binomial_helper import BinomialHelper
        self._binomial_helper = BinomialHelper(**kwargs) 
        pass

    def get_multinomial_helper(self):
        if self._multinomial_helper is None:
            self._init_multinomial_helper(**self._kwargs)
        return self._multinomial_helper
        pass

    def _init_multinomial_helper(self, **kwargs):  
        from ._multinomial_helper import MultinomialHelper
        self._multinomial_helper = MultinomialHelper(**kwargs) 
        pass

    def get_complex_number_helper(self):
        if self._complex_number_helper is None:
            self._init_complex_number_helper(**self._kwargs)
        return self._complex_number_helper
        pass

    def _init_complex_number_helper(self, **kwargs):  
        from ._complex_number_helper import ComplexNumberHelper
        self._complex_number_helper = ComplexNumberHelper(**kwargs) 
        pass

    def get_euler_number_helper(self):
        if self._euler_number_helper is None:
            self._init_euler_number_helper(**self._kwargs)
        return self._euler_number_helper
        pass

    def _init_euler_number_helper(self, **kwargs):  
        from ._euler_number_helper import EulerNumberHelper
        self._euler_number_helper = EulerNumberHelper(**kwargs) 
        pass

    def get_func_transform_helper(self):
        if self._func_transform_helper is None:
            self._init_func_transform_helper(**self._kwargs)
        return self._func_transform_helper
        pass

    def _init_func_transform_helper(self, **kwargs):  
        from ._func_transform_helper import FuncTransformHelper
        self._func_transform_helper = FuncTransformHelper(**kwargs) 
        pass

    def get_func_classification_helper(self):
        if self._func_classification_helper is None:
            self._init_func_classification_helper(**self._kwargs)
        return self._func_classification_helper
        pass

    def _init_func_classification_helper(self, **kwargs):  
        from ._func_classification_helper import FuncClassificationHelper
        self._func_classification_helper = FuncClassificationHelper(**kwargs) 
        pass

    def get_gamma_func_helper(self):
        if self._gamma_func_helper is None:
            self._init_gamma_func_helper(**self._kwargs)
        return self._gamma_func_helper
        pass

    def _init_gamma_func_helper(self, **kwargs):  
        from ._gamma_func_helper import GammaFuncHelper
        self._gamma_func_helper = GammaFuncHelper(**kwargs) 
        pass
    
    def get_laplace_transform_helper(self):
        if self._laplace_transform_helper is None:
            self._init_laplace_transform_helper(**self._kwargs)
        return self._laplace_transform_helper
        pass

    def _init_laplace_transform_helper(self, **kwargs):  
        from ._laplace_transform_helper import LaplaceTransformHelper
        self._laplace_transform_helper = LaplaceTransformHelper(**kwargs) 
        pass

    def get_arithmetic_series_helper(self):
        if self._arithmetic_series_helper is None:
            self._init_arithmetic_series_helper(**self._kwargs)
        return self._arithmetic_series_helper
        pass

    def _init_arithmetic_series_helper(self, **kwargs):  
        from ._arithmetic_series_helper import ArithmeticSeriesHelper
        self._arithmetic_series_helper = ArithmeticSeriesHelper(**kwargs) 
        pass

    def get_geometric_series_helper(self):
        if self._geometric_series_helper is None:
            self._init_geometric_series_helper(**self._kwargs)
        return self._geometric_series_helper
        pass

    def _init_geometric_series_helper(self, **kwargs):  
        from ._geometric_series_helper import GeometricSeriesHelper
        self._geometric_series_helper = GeometricSeriesHelper(**kwargs) 
        pass

    def get_linear_equations_helper(self):
        if self._linear_equations_helper is None:
            self._init_linear_equations_helper(**self._kwargs)
        return self._linear_equations_helper
        pass

    def _init_linear_equations_helper(self, **kwargs):  
        from ._linear_equations_helper import LinearEquationsHelper
        self._linear_equations_helper = LinearEquationsHelper(**kwargs) 
        pass

    def get_matrix_helper(self):
        if self._matrix_helper is None:
            self._init_matrix_helper(**self._kwargs)
        return self._matrix_helper
        pass

    def _init_matrix_helper(self, **kwargs):  
        from ._matrix_helper import MatrixHelper
        self._matrix_helper = MatrixHelper(**kwargs) 
        pass

    def get_multi_variable_helper(self):
        if self._multi_variable_helper is None:
            self._init_multi_variable_helper(**self._kwargs)
        return self._multi_variable_helper
        pass

    def _init_multi_variable_helper(self, **kwargs):  
        from ._multi_variable_helper import MultiVariableHelper
        self._multi_variable_helper = MultiVariableHelper(**kwargs) 
        pass

    def get_polynomial_helper(self):
        if self._polynomial_helper is None:
            self._init_polynomial_helper(**self._kwargs)
        return self._polynomial_helper
        pass

    def _init_polynomial_helper(self, **kwargs):  
        from ._polynomial_helper import PolynomialHelper
        self._polynomial_helper = PolynomialHelper(**kwargs) 
        pass

   
    def get_single_variable_helper(self):
        if self._single_variable_helper is None:
            self._init_single_variable_helper(**self._kwargs)
        return self._single_variable_helper
        pass

    def _init_single_variable_helper(self, **kwargs):  
        from ._single_variable_helper import SingleVariableHelper
        self._single_variable_helper = SingleVariableHelper(**kwargs) 
        pass

   
    pass
#class AlgebraHelper:
