Source code for core.util
import warnings
import datetime
import traceback
import os
[docs]def camel_case_to_lower(name):
    """
    :Examples:
    >>> camel_case_to_lower('squareRoot')
    'square_root'
    >>> camel_case_to_lower('SquareRoot')
    'square_root'
    >>> camel_case_to_lower('ComputeSQRT')
    'compute_sqrt'
    """
    lowername = '_'
    index = 0
    while index < len(name):
        if name[index].islower():
            lowername += name[index]
            index += 1
        else:
            if lowername[-1] == '_':
                if not name[index] == '_':
                    lowername += name[index].lower()
            else:
                if not name[index] == '_':
                    lowername += '_' + name[index].lower()
                else:
                    lowername += '_'
            index += 1
            while index < len(name) and not name[index].islower():
                lowername += name[index].lower()
                index += 1
    lowername = lowername.lstrip('_')
    return lowername
 
[docs]def warn_deprecated(old_name, new_name, date=None):
    """
    :param date: (yyyy, mm, dd) ex: (2014, 9, 25) for 2014, 25th of september
    """
    tb = traceback.extract_stack()
    if date:
        final_date = datetime.date(*date) + datetime.timedelta(100) # deleted after 100 days
        datemsg = 'on %s' % (final_date)
    else:
        datemsg = 'soon'
    if 'OA_CLICOLOR' in os.environ:
        msg = "\n\033[93m%r is deprecated and will be removed \033[91m%s.\033[0m. Use %r instead. " % (
            old_name, datemsg, new_name)
    else:
        msg = "\n%r is deprecated and will be removed %s. Use %r instead. " % (old_name, datemsg, new_name)
    for i in range(0, len(tb) - 3):
        filename, lineno, caller, line = tb[i]
        msg += '\n' + ' ' * i + '%s:%s - %s' % (filename, lineno, line)
    if 'OA_RAISE_ON_WARNING' in os.environ:
        warnings.warn(msg, stacklevel=3)
        raise IOError
    else:
        warnings.warn(msg, stacklevel=3)