Metadata-Version: 2.0
Name: loctraceback
Version: 1.0.0
Summary: traceback with more exact location info
Home-page: https://github.com/rocky/python-loctraceback/
Author: Rocky Bernstein
Author-email: rb@dustyfeet.com
License: GPL-3.0
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: License :: OSI Approved :: Python Software Foundation License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Topic :: Software Development :: Debuggers
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Dist: uncompyle6 (>=2.16.0)

loctraceback
============

Want to see more precisely where you are or were at in a traceback or
callstack your Python code has several places in a line it could have
errored? Even if the code was something created at runtime with say
`eval` or `exec`?

Then this package is for you.

Some examples of the kinds of code this module can disambiguate:

.. code-block:: python

   i / j / k                              # which divide?
   prev[prev[0]]                          # which prev ?
   [e[0] for i in d[j] if got[i] == e[i]] # lots going on here
   exec(some_code % 10, namespace)        # code at runtime

Some example output given by running code in `example`:


Division example:

.. code-block:: python

    Traceback (most recent call last):
      File "tb-div.py", line 9, in <module> at offset 52
        a / b / c
        a / b / c
          -
    ZeroDivisionError: float division by zero


List comprehension example:

.. code-block:: python


    File "tb-comp.py", line 9, in <listcomp> at offset 18
        [e[0] for i in d[j] if got[i] == e[i]]
    return [ e[0] for i in .0 if got[i] == e[i] ]
                                 ------
    IndexError: list index out of range

`exec` example:

.. code-block:: python

    Traceback (most recent call last):
     File "tb-exec.py", line 11, in <module> at offset 39
        exec(s)
        exec(s)
        -------
      File "<string>", line 4, in <module> at offset 18
      z = x / y
            -
      ZeroDivisionError: division by zero

Isolating function in call stack example:

.. code-block:: python

      File "call-fib.py", line 8, in fib at offset 58
        return fib(n-1) + fib(n-2)
        return fib(n - 1) + fib(n - 2)
                            ----------
          File "call-fib.py", line 10, in <module> at offset 54
               print("fib({})={}".format(2, fib(2)))
                                            ------

This modules extends the Python 3.6 API traceback module by adding in
fragment decomplation info for more precise location information.

Although the API is from Python 3.6, the code runs on 3.3 or greater.
Back-porting to ther Python versions is left as an exercise to the
reader.

See `these slides <http://rocky.github.io/pycon2018.co>`_ for
information on the technology behind this.



