# ==================================================================================
#       Copyright (c) 2019-2020 Nokia
#       Copyright (c) 2018-2020 AT&T Intellectual Property.
#
#   Licensed under the Apache License, Version 2.0 (the "License");
#   you may not use this file except in compliance with the License.
#   You may obtain a copy of the License at
#
#          http://www.apache.org/licenses/LICENSE-2.0
#
#   Unless required by applicable law or agreed to in writing, software
#   distributed under the License is distributed on an "AS IS" BASIS,
#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#   See the License for the specific language governing permissions and
#   limitations under the License.
# ==================================================================================
"""
Custom Exceptions
"""


class BadBufferAllocation(BaseException):
    """a bad buffer was allocated, check the rmr context"""


class MeidSizeOutOfRange(BaseException):
    """an attempt to set the MEID with a buffer that was too large"""


class InitFailed(BaseException):
    """rmr init failure, the context is unusable"""
