def deprecated_warning(elemento_deprecado, se_desactiva_en, se_elimina_en, reemplazo=None): """Lanza la correcta exception/warning de anuncio de que *algo* está en desuso. Las excepción/warning que puede lanzar esta función son: - Si la versión actual de pilas es mayor o igual que ``se_elimina_en`` y por descuido de los desarrolladores se olvidaron de eliminar la llamada a esta función, Siempre se lanza un ``AttributeError``. - Si la versión actual de pilas es mayor o igual que ``se_desactiva_en`` se emite un ``DeprecationWarning``. - Si la versión actual de pilas es menor que ``se_desactiva_en`` se emite un ``PendingDeprecationWarning``. :param elemento_deprecado: Cual el nombre del elemento desaconsejado. :type elemento_deprecado: str :param se_desactiva_en: Indica en que versión de pilas el atributo estará desactivado por defecto. De todas maneras se podran activar con ``pilas.dev.utilizar_desaconsejados(True)`` :type se_desactiva_en: str :param se_elimina_en: Indica en que versión de pilas el atributo se eliminara completamente. :type se_elimina_en: str :param reemplazo: Indica cuales son las alternativas a este atributo :type reemplazo: str """ frame, filename, line_number, function_name, lines, index = inspect.getouterframes(inspect.currentframe())[2] if 'deprecated_warning' in inspect.getouterframes(inspect.currentframe())[0][3] else inspect.getouterframes(inspect.currentframe())[1] msg_line = "\n+------------------------------------------------+\n" msg_line += "La excepcion se produjo en la siguiente llamada:\n" msg_line += "Archivo: %s\nNº Linea: %s\nMetodo: %s\nLinea: %s" % (filename, line_number, function_name, lines[index].strip()) msg_line += "\n+------------------------------------------------+\n\n" if pilasversion.compareactual(se_elimina_en) >= 0: msg = u"El atributo '{}' no puede utilizarse desde la version {}" msg = msg.format(elemento_deprecado, se_elimina_en) raise AttributeError(msg) msg = "CUIDADO: Utilizar '{}' esta desaconsejado" msg = msg.format(elemento_deprecado) if reemplazo is not None: msg += "; utilice en su lugar: {}".format(reemplazo) msg += msg_line if pilasversion.compareactual(se_desactiva_en) >= 0: warnings.warn(msg, DeprecationWarning, stacklevel=2) else: warnings.warn(msg, PendingDeprecationWarning, stacklevel=2)
def deprecated_warning(elemento_deprecado, se_desactiva_en, se_elimina_en, reemplazo=None): """Lanza la correcta exception/warning de anuncio de que *algo* está en desuso. Las excepción/warning que puede lanzar esta función son: - Si la versión actual de pilas es mayor o igual que ``se_elimina_en`` y por descuido de los desarrolladores se olvidaron de eliminar la llamada a esta función, Siempre se lanza un ``AttributeError``. - Si la versión actual de pilas es mayor o igual que ``se_desactiva_en`` se emite un ``DeprecationWarning``. - Si la versión actual de pilas es menor que ``se_desactiva_en`` se emite un ``PendingDeprecationWarning``. :param elemento_deprecado: Cual el nombre del elemento desaconsejado. :type elemento_deprecado: str :param se_desactiva_en: Indica en que versiṕn de pilas el atributo estará desactivado por defecto. De todas maneras se podran activar con ``pilas.dev.utilizar_desaconsejados(True)`` :type se_desactiva_en: str :param se_elimina_en: Indica en que versión de pilas el atributo se eliminara completamente. :type se_elimina_en: str :param reemplazo: Indica cuales son las alternativas a este atributo :type reemplazo: str """ if pilasversion.compareactual(se_elimina_en) >= 0: msg = u"El atributo '{}' no puede utilizarse desde la version {}" msg = msg.format(elemento_deprecado, se_elimina_en) raise AttributeError(msg) msg = "CUIDADO: Utilizar '{}' esta desaconcejado" msg = msg.format(elemento_deprecado) if reemplazo is not None: msg += "; utilice en su lugar: {}".format(reemplazo) if pilasversion.compareactual(se_desactiva_en) >= 0: warnings.warn(msg, DeprecationWarning, stacklevel=2) else: warnings.warn(msg, PendingDeprecationWarning, stacklevel=2)
def deprecated_warning(elemento_deprecado, se_desactiva_en, se_elimina_en, reemplazo=None): """Lanza la correcta exception/warning de anuncio de que *algo* está en desuso. Las excepción/warning que puede lanzar esta función son: - Si la versión actual de pilas es mayor o igual que ``se_elimina_en`` y por descuido de los desarrolladores se olvidaron de eliminar la llamada a esta función, Siempre se lanza un ``AttributeError``. - Si la versión actual de pilas es mayor o igual que ``se_desactiva_en`` se emite un ``DeprecationWarning``. - Si la versión actual de pilas es menor que ``se_desactiva_en`` se emite un ``PendingDeprecationWarning``. :param elemento_deprecado: Cual el nombre del elemento desaconsejado. :type elemento_deprecado: str :param se_desactiva_en: Indica en que versiṕn de pilas el atributo estará desactivado por defecto. De todas maneras se podran activar con ``pilas.dev.utilizar_desaconsejados(True)`` :type se_desactiva_en: str :param se_elimina_en: Indica en que versión de pilas el atributo se eliminara completamente. :type se_elimina_en: str :param reemplazo: Indica cuales son las alternativas a este atributo :type reemplazo: str """ if pilasversion.compareactual(se_elimina_en) >= 0: msg = u"El atributo '{}' no puede utilizarse desde la version {}" msg = msg.format(elemento_deprecado, se_elimina_en) raise AttributeError(msg) msg = "CUIDADO: Utilizar '{}' esta desaconcejado" msg = msg.format(elemento_deprecado) if reemplazo is not None: msg += "; utilice en su lugar: {}".format(reemplazo) if pilasversion.compareactual(se_desactiva_en) >= 0: warnings.warn(msg, DeprecationWarning, stacklevel=2) else: warnings.warn(msg, PendingDeprecationWarning, stacklevel=2)
def deprecated_warning(elemento_deprecado, se_desactiva_en, se_elimina_en, reemplazo=None): """Lanza la correcta exception/warning de anuncio de que *algo* está en desuso. Las excepción/warning que puede lanzar esta función son: - Si la versión actual de pilas es mayor o igual que ``se_elimina_en`` y por descuido de los desarrolladores se olvidaron de eliminar la llamada a esta función, Siempre se lanza un ``AttributeError``. - Si la versión actual de pilas es mayor o igual que ``se_desactiva_en`` se emite un ``DeprecationWarning``. - Si la versión actual de pilas es menor que ``se_desactiva_en`` se emite un ``PendingDeprecationWarning``. :param elemento_deprecado: Cual el nombre del elemento desaconsejado. :type elemento_deprecado: str :param se_desactiva_en: Indica en que versión de pilas el atributo estará desactivado por defecto. De todas maneras se podran activar con ``pilas.dev.utilizar_desaconsejados(True)`` :type se_desactiva_en: str :param se_elimina_en: Indica en que versión de pilas el atributo se eliminara completamente. :type se_elimina_en: str :param reemplazo: Indica cuales son las alternativas a este atributo :type reemplazo: str """ frame, filename, line_number, function_name, lines, index = inspect.getouterframes( inspect.currentframe( ))[2] if 'deprecated_warning' in inspect.getouterframes( inspect.currentframe())[0][3] else inspect.getouterframes( inspect.currentframe())[1] msg_line = "\n+------------------------------------------------+\n" msg_line += "La excepcion se produjo en la siguiente llamada:\n" msg_line += "Archivo: %s\nNº Linea: %s\nMetodo: %s\nLinea: %s" % ( filename, line_number, function_name, lines[index].strip()) msg_line += "\n+------------------------------------------------+\n\n" if pilasversion.compareactual(se_elimina_en) >= 0: msg = u"El atributo '{}' no puede utilizarse desde la version {}" msg = msg.format(elemento_deprecado, se_elimina_en) raise AttributeError(msg) msg = "CUIDADO: Utilizar '{}' esta desaconsejado" msg = msg.format(elemento_deprecado) if reemplazo is not None: msg += "; utilice en su lugar: {}".format(reemplazo) msg += msg_line if pilasversion.compareactual(se_desactiva_en) >= 0: warnings.warn(msg, DeprecationWarning, stacklevel=2) else: warnings.warn(msg, PendingDeprecationWarning, stacklevel=2)