#!/usr/bin/python
# -*- coding: utf-8 -*-
#    The MIT License (MIT)
#    
#    Copyright (c) 2013 Garrett Berg cloudformdesign.com
#    An updated version of this file can be found at:
#    https://github.com/cloudformdesign/cloudtb
#    
#    Permission is hereby granted, free of charge, to any person obtaining a copy
#    of this software and associated documentation files (the "Software"), to deal
#    in the Software without restriction, including without limitation the rights
#    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
#    copies of the Software, and to permit persons to whom the Software is
#    furnished to do so, subject to the following conditions:
#    
#    The above copyright notice and this permission notice shall be included in
#    all copies or substantial portions of the Software.
#    
#    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
#    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
#    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
#    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
#    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
#    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
#    THE SOFTWARE.
#
#    http://opensource.org/licenses/MIT

import sys, os
import traceback

class NeedModule(ImportError):
    def __init__(self, value):
        self.value = value
    def __str__(self, value):
        return "Module Dependency not met: " + repr(self.value)

class ModuleError(Exception):
    '''An error to give for module-level failures.'''
    pass
class RequestError(Exception):
    pass

def get_prev_exception_str(*args, **kwargs):
    '''Only prints out the actual exception if you pass in E. Otherwise just
    gives you the line information'''
    exc_info = sys.exc_info()
    E = exc_info[0]
    Estr =  exc_info[1].message
    tb = sys.exc_info()[2]
    return ''.join(traceback.format_exception(E, Estr, tb))

def print_prev_exception(*args, **kwargs):
    print get_prev_exception_str(*args, **kwargs)