Tools for debug
===============

INFO_DEBUG
----------

Show info debug, show in message box.

If you have any problem in your code, you can `open issue`_ in this project,
always copy the information of **INFO_DEBUG** in your ticket.

.. code-block:: python

    import easymacro as app

    def info():
        app.msgbox(app.INFO_DEBUG)
        return

.. image:: _static/images/install_01.png

|

Show in shell.

.. code-block:: python

    import easymacro as app

    def info():
        app.debug(app.INFO_DEBUG)
        return

.. code-block:: console

    mau@oficina ~> soffice --calc

    25/02/2022 16:44:24 - DEBUG - LibreOffice v7.3 en-US

    Python: 3.10.2 (main, Jan 15 2022, 19:56:27) [GCC 11.1.0]

    Linux-5.16.11-arch1-1-x86_64-with-glibc2.35

    /usr/lib/libreoffice/program
    /usr/lib/python310.zip
    /usr/lib/python3.10
    /usr/lib/python3.10/lib-dynload
    /home/mau/.local/lib/python3.10/site-packages
    /usr/lib/python3.10/site-packages
    /usr/lib/libreoffice/program/
    /home/mau/.config/libreoffice/4/user/Scripts/python/pythonpath


Log error
---------

Show message error in shell.

.. code-block:: python

    import easymacro as app

    def test_error():
        msg = 'My error 500'
        app.error(msg)
        return

.. image:: _static/images/toolsdebug_01.png


Log debug
---------

Show message debug in shell.

.. code-block:: python

    import easymacro as app

    def test_debug():
        msg = 'Verify this data...'
        app.debug(msg)
        return

.. image:: _static/images/toolsdebug_02.png


Log info
--------

Show message info in shell.

.. code-block:: python

    import easymacro as app

    def test_info():
        msg = 'Start process...'
        app.info(msg)
        return

.. image:: _static/images/toolsdebug_03.png


Log to file
-----------

Save log to file, automatic add date and time.

.. code-block:: python

    import easymacro as app

    def log():
        app.save_log('/home/mau/log.txt', 'PyUNO')
        app.save_log('/home/mau/log.txt', 'Damed World')
        return

.. image:: _static/images/toolsdebug_04.png


Message Box
-----------

Show any data in message box

.. code-block:: python

    import easymacro as app

    def message():

        msg = 'Please, save the planet'
        app.msgbox(msg)

        msg = ('one', 2, 'three')
        app.msgbox(msg)

        msg = {'name': 'Teresa'}
        app.msgbox(msg)

        app.msgbox(app)

        return

.. image:: _static/images/toolsdebug_05.png


Catch exceptions
----------------

Sometimes, for difficult errors, you can catch exceptions.

.. code-block:: python

    import easymacro as app

    @app.catch_exception
    def test():
        r = 1 / 0
        return

.. image:: _static/images/toolsdebug_06.png

.. warning::

   Not, not used you this function in production.


Call MRI
--------

`MRI`_ is the best extension for debug any object in LibreOffice, you need
install before call it.

.. code-block:: python

    import easymacro as app

    def error():
        obj = app.active
        app.mri(obj)
        return

.. image:: _static/images/toolsdebug_07.png


Inspect
-------

Show info in shell debug

.. code-block:: python

    import easymacro as app

    def inspect():
        obj = app.active
        data = app.inspect(doc)
        for p in data.properties:
            app.debug(p)
        for m in data.methods:
            app.debug(m)
        return


Or show in new Calc document.

.. code-block:: python

    obj = app.active
    app.inspect(doc, True)


.. _MRI: https://github.com/hanya/MRI
.. _open issue: https://git.cuates.net/elmau/easymacro/issues
