Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
Archivo: dev.py Proyecto: ariel17/pilas
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)
Ejemplo n.º 4
0
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)