A toolbar overlay for debugging Flask applications

Overview

Flask Debug-toolbar

This is a port of the excellent django-debug-toolbar for Flask applications.

https://travis-ci.org/flask-debugtoolbar/flask-debugtoolbar.png?branch=master

Installation

Installing is simple with pip:

$ pip install flask-debugtoolbar

Usage

Setting up the debug toolbar is simple:

from flask import Flask
from flask_debugtoolbar import DebugToolbarExtension

app = Flask(__name__)

# the toolbar is only enabled in debug mode:
app.debug = True

# set a 'SECRET_KEY' to enable the Flask session cookies
app.config['SECRET_KEY'] = '<replace with a secret key>'

toolbar = DebugToolbarExtension(app)

The toolbar will automatically be injected into Jinja templates when debug mode is on. In production, setting app.debug = False will disable the toolbar.

See the documentation for more information.

Comments
  • Fixed scrollbar issues

    Fixed scrollbar issues

    Fixes #181 where the scrollbar would not show on any page other than the sqlalchemy_select.html template. The scroll classname is now properly named and applied throughout all panel templates as flDebugScroll. I've also added a 10px bottom padding to show the end of the inner panel (for aesthetics sake).

    opened by caffeinatedMike 14
  • Python 3 compatibility

    Python 3 compatibility

    Recent updates to Flask and related components have included support for Python 3, and it would be great to be able to use Flask-DebugToolbar in projects running on Python 3. As it stands now, Flask-DebugToolbar must be disabled in such projects in order to run them without errors.

    Are there plans to support Python 3 in the near future?

    opened by justinmayer 13
  • Can't move ProfilerDebugPanel above RequestVarsDebugPanel

    Can't move ProfilerDebugPanel above RequestVarsDebugPanel

    If you reorder DEBUG_TB_PANELS so ProfilerDebugPanel comes before RequestVarsDebugPanel, you'll get an obscure error: AttributeError: 'functools.partial' object has no attribute '__module__'

    This is OK:

    DEBUG_TB_PANELS = [
        'flask_debugtoolbar.panels.request_vars.RequestVarsDebugPanel',
        'flask_debugtoolbar.panels.profiler.ProfilerDebugPanel',
    ]
    

    This is not:

    DEBUG_TB_PANELS = [
        'flask_debugtoolbar.panels.profiler.ProfilerDebugPanel',
        'flask_debugtoolbar.panels.request_vars.RequestVarsDebugPanel',
    ]
    

    Screen Shot 2013-03-08 at 7 41 37 PM

    opened by appsforartists 6
  • memory leak over time

    memory leak over time

    I'm still gathering data, but it appears as though recent flask-debugtoolbar versions cause a memory leak. After I upgraded to Flask and Werkzeug 0.8 I also had to update flask-debugtoolbar from baecf852dda0f5b6c4700fb6deaeda4068b3a19c to current master (45ce65c058a580d80e2ac207689601edef5db24b), I've been noticing memory usage growing on every request made against the server.

    I've disabled my custom panels and the ones from MongoEngine but left TimerDebugPanel, HeaderDebugPanel, RequestVarsDebugPanel, TemplateDebugPanel, LoggingPanel and ProfilerDebugPanel enabled.

    Here is the output from heapy for a run with the debug panel disabled with DEBUG_TB_ENABLED=False. The first set is the total number of objects by type. The second set is the types of the objects that refer to the ones in the front. If you are familiar with heapy, the former is heap() and the latter is heap().byrcsL

    Partition of a set of 202 objects. Total size = 40656 bytes.
     Index  Count   %     Size   % Cumulative  % Kind (class / dict of class)
         0     11   5     9224  23      9224  23 dict (no owner)
         1     16   8     8456  21     17680  43 types.FrameType
         2     59  29     5128  13     22808  56 str
         3     30  15     3728   9     26536  65 unicode
         4     16   8     1600   4     28136  69 list
         5      1   0     1048   3     29184  72 dict of flask.ctx.RequestContext
         6      1   0     1048   3     30232  74 dict of flask.wrappers.Request
         7      1   0     1048   3     31280  77 dict of flask.wrappers.Response
         8      1   0     1048   3     32328  80 dict of mimetools.Message
         9      1   0     1048   3     33376  82 dict of werkzeug.routing.MapAdapter
    <35 more rows. Type e.g. '_.more' to view.>
    
    Partition of a set of 202 objects. Total size = 40656 bytes.
     Index  Count   %     Size   % Cumulative  % Referrers by Kind (class / dict of class)
         0     22  11     7912  19      7912  19 types.FrameType
         1     67  33     7736  19     15648  38 dict (no owner)
         2      1   0     3352   8     19000  47 __builtin__.cell, dict of flask.wrappers.Request, dict
                                                 of werkzeug.datastructures.EnvironHeaders,
                                                 types.FrameType
         3     17   8     3136   8     22136  54 list
         4      6   3     1472   4     23608  58 dict of mimetools.Message
         5      2   1     1120   3     24728  61 dict of 0x7fca19073b90
         6      1   0     1048   3     25776  63 flask.ctx.RequestContext
         7      1   0     1048   3     26824  66 flask.wrappers.Request
         8      1   0     1048   3     27872  69 flask.wrappers.Response
         9      1   0     1048   3     28920  71 mimetools.Message
    <41 more rows. Type e.g. '_.more' to view.>
    

    A run with the debug toolbar enabled:

    Partition of a set of 538 objects. Total size = 81920 bytes.
     Index  Count   %     Size   % Cumulative  % Kind (class / dict of class)
         0     35   7    20552  25     20552  25 dict (no owner)
         1    135  25    11128  14     31680  39 str
         2    122  23    10472  13     42152  51 tuple
         3     16   3     8208  10     50360  61 types.FrameType
         4     34   6     4064   5     54424  66 unicode
         5     31   6     4024   5     58448  71 list
         6     46   9     1104   1     59552  73 int
         7      1   0     1048   1     60600  74 dict of blinker._saferef.BoundMethodWeakref
         8      1   0     1048   1     61648  75 dict of flask.ctx.RequestContext
         9      1   0     1048   1     62696  77 dict of flask.wrappers.Request
    <79 more rows. Type e.g. '_.more' to view.>
    
    Partition of a set of 538 objects. Total size = 81920 bytes.
     Index  Count   %     Size   % Cumulative  % Referrers by Kind (class / dict of class)
         0    143  27    16712  20     16712  20 list
         1     30   6    12544  15     29256  36 types.FrameType
         2     83  15    10000  12     39256  48 dict (no owner)
         3    116  22     6592   8     45848  56 tuple
         4      1   0     3352   4     49200  60 __builtin__.cell, dict (no owner), dict of
                                                 flask.wrappers.Request, dict of
                                                 werkzeug.datastructures.EnvironHeaders, types.FrameType
         5      6   1     1472   2     50672  62 dict of mimetools.Message
         6      2   0     1120   1     51792  63 dict of 0x7f9d02073f00
         7      1   0     1048   1     52840  65 blinker._saferef.BoundMethodWeakref
         8      1   0     1048   1     53888  66 dict of
                                                 flask_debugtoolbar.panels.headers.HeaderDebugPanel
         9      1   0     1048   1     54936  67 flask.ctx.RequestContext
    <84 more rows. Type e.g. '_.more' to view.>
    

    Hopefully you can see that the dict, str, and tuple usage is much larger with the debug toolbar, and that list objects seem to be holding a large number of references, with dict also in there. Is it possible that the toolbar is holding onto references that isn't being released?

    I'm going to investigate a bit more and see if there is anything that stands out in the diffs between the two commits I referenced earlier, and to see if it seems to be an issue with a particular panel.

    opened by joeshaw 6
  • Case insensitive rfind is error prone.

    Case insensitive rfind is error prone.

    https://github.com/mgood/flask-debugtoolbar/blob/master/flask_debugtoolbar/init.py#L205

    if you have a utf-8 character where the capital letter is represented in 1 byte, but the lower case character is represented in 2 bytes, then the location of the closing body tag fails.

    İstanbulİstanbulİstanbul

    The first character is problematic. A solution would be take in the closing tag string as a config argument and not do any lowering during string comparison.

    opened by bmorgan21 5
  • Deprecated import from flask.ext.sqlalchemy

    Deprecated import from flask.ext.sqlalchemy

    This import is throwing a deprecation warning with Flask 0.11

    flask_debugtoolbar/panels/sqlalchemy.py:2:    from flask.ext.sqlalchemy import get_debug_queries, SQLAlchemy
    
    opened by mlenzen 5
  • Flask Debug Toolbar Does Not Check For A Compressed Response

    Flask Debug Toolbar Does Not Check For A Compressed Response

    If you have an extension like Flask Compress compressing the contents of your responses with gzip before it's sent back to the user, flask debug toolbar will throw an error because it assumes the response is UTF-8 HTML.

    Traceback (most recent call last):
      File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1836, in __call__
        return self.wsgi_app(environ, start_response)
      File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1820, in wsgi_app
        response = self.make_response(self.handle_exception(e))
      File "/usr/local/lib/python2.7/site-packages/flask_restful/__init__.py", line 270, in error_router
        return original_handler(e)
      File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1403, in handle_exception
        reraise(exc_type, exc_value, tb)
      File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
        response = self.full_dispatch_request()
      File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1479, in full_dispatch_request
        response = self.process_response(response)
      File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1691, in process_response
        response = handler(response)
      File "/usr/local/lib/python2.7/site-packages/flask_debugtoolbar/__init__.py", line 202, in process_response
        response_html = response.data.decode(response.charset)
      File "/usr/local/Cellar/python/2.7.10/Frameworks/Python.framework/Versions/2.7/lib/python2.7/encodings/utf_8.py", line 16, in decode
        return codecs.utf_8_decode(input, errors, True)
    UnicodeDecodeError: 'utf8' codec can't decode byte 0x8b in position 1: invalid start byte
    
    opened by JackStouffer 5
  • Invalid unicode handling

    Invalid unicode handling

    When logging sql statements with sqlalchemy panel the following exception is thrown:

    Traceback (most recent call last): File "C:\Python27\lib\site-packages\flask\app.py", line 1518, in call return self.wsgi_app(environ, start_response) File "C:\Python27\lib\site-packages\flask\app.py", line 1506, in wsgi_app response = self.make_response(self.handle_exception(e)) File "C:\Python27\lib\site-packages\flask\app.py", line 1504, in wsgi_app response = self.full_dispatch_request() File "C:\Python27\lib\site-packages\flask\app.py", line 1266, in full_dispatch_request response = self.process_response(response) File "C:\Python27\lib\site-packages\flask\app.py", line 1414, in process_response response = handler(response) File "C:\Python27\lib\site-packages\flask_debugtoolbar__init__.py", line 171, in process_response toolbar_html = self.debug_toolbars[real_request].render_toolbar() File "C:\Python27\lib\site-packages\flask_debugtoolbar\toolbar.py", line 74, in render_toolbar return template.render(**context) File "C:\Python27\lib\site-packages\jinja2\environment.py", line 894, in render return self.environment.handle_exception(exc_info, True) File "C:\Python27\lib\site-packages\flask_debugtoolbar\templates\base.html", line 48, in top-level template code {{ panel.content()|safe }} File "C:\Python27\lib\site-packages\flask_debugtoolbar\panels\sqlalchemy.py", line 79, in content query.statement + _params).hexdigest() UnicodeDecodeError: 'ascii' codec can't decode byte 0xb2 in position 0: ordinal not in range(128)

    As far as I understand, the panel concatenates application SECRET_KEY and query statement and params. My secret key is a byte string which contains some non-ascii characters like "'\xb2q\xf6\x8c\xcd\xd0\x023...". I had generated it with the following method which has been described in Flask quickstart docs:

    import os os.urandom(24) '\xfd{H\xe5<\x95\xf9\xe3\x96.5\xd1\x01O<!\xd5\xa2\xa0\x9fR"\xa1\xa8'

    http://flask.pocoo.org/docs/quickstart/

    opened by cenkalti 5
  • JavaScript error when using HTML5 boilerplate

    JavaScript error when using HTML5 boilerplate

    The toolbar's CSS file isn't injected into the template when using the HTML5 boilerplate <html> element:

    <!doctype html>
    <!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en"> <![endif]-->
    <!--[if IE 7]>    <html class="no-js ie7 oldie" lang="en"> <![endif]-->
    <!--[if IE 8]>    <html class="no-js ie8 oldie" lang="en"> <![endif]-->
    <!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
    

    I would submit a pull request but I can't seem to find where this is being done.

    opened by mattupstate 5
  • No toolbar on either Chrome or firefox

    No toolbar on either Chrome or firefox

    I added the flask debug toolbar to my app. It looks working because it gave me the redirect warning like below:

    _Redirect (302) Location: /app/bokeh

    The Flask Debug Toolbar has intercepted a redirect to the above URL for debug viewing purposes. You can click the above link to continue with the redirect as normal. If you'd like to disable this feature, you can set the config variable DEBUG_TB_INTERCEPT_REDIRECTS to False._

    But there is no FDT tool bar shown up after I got the response. I tried both Chrome and Firefox, same result. Do I need to do any configuration on the browser side to display the toolbar?

    opened by johnxpan 4
  • flask.ext was deprecated

    flask.ext was deprecated

    "flask.ext" (https://github.com/pallets/flask/issues/1135) has been deprecated a while ago. FdT keeps importing flask_sqlalchemy with flask.ext resulting in warning messages:

    exthook.py:71: ExtDeprecationWarning: Importing flask.ext.sqlalchemy is deprecated, use flask_sqlalchemy instead

    opened by nad2000 4
  • Subdomains support

    Subdomains support

    I have an issue with subdomain support. It seems that debug toolbar is always loading on the main domain but not the subdomains.

    For example, if I have test.com, admin.test.com, and user.test.com. When I go to admin.test.com or user.test.com debug toolbar is loading all js, styles etc from test.com and if test.com is blocked it is not loading anything at all.

    What will be good is that if I go to user.test.com it will load everything from it. If I go to admin.test.com it will load from it and when I go to test.com it will load from it.

    I can work on pr for this just not sure what should be changed to support it and where?

    opened by rimvislt 0
  • Drop support for python 2

    Drop support for python 2

    It's probably time we dropped support for python 2: https://github.com/pallets-eco/flask-debugtoolbar/blob/e3c8ab0ca28d7ddfaaa731ef1e15649182255c6a/setup.cfg#L33

    Given that Flask requires 3.7, I'd be fine with jumping straight to that... anyone who is on an older version of python can continue using an older version of Flask.

    There's no immediate pressing need to jump to the latest python, but it makes future contributors lives easier because they don't have to worry about such a wide swathe of backwards compatibility.

    First though we should push a final 2.x compatible release, that's tracked in https://github.com/pallets-eco/flask-debugtoolbar/issues/192... only once that's done should we do this.

    opened by jeffwidman 0
  • New release incorporating the Flask-SQLAlchemy 3.x changes

    New release incorporating the Flask-SQLAlchemy 3.x changes

    Now that https://github.com/pallets-eco/flask-debugtoolbar/pull/186 has landed, we should push a release so folks can use it.

    This will likely happen as part of #188 because we'll need to update the project metadata links anyway for PyPI.

    opened by jeffwidman 0
  • Update CI workflows

    Update CI workflows

    @nickjj suggested we migrate from Travis to GitHub actions... We should definitely do that:

    • [ ] Add new GitHub workflows
    • [ ] Update the CI links in the readme to point at them instead of Travis: https://github.com/pallets-eco/flask-debugtoolbar/blob/master/README.rst
    • [ ] Delete old travis workflows
    • [x] I looked into deleting the travis org for https://travis-ci.org/github/flask-debugtoolbar (xref #188) but it looks like this isn't even possible... the page has a banner at the top about migrating to travis.ci and says builds stopped two years ago.
    opened by jeffwidman 0
  • Migrate the repo to `pallets-eco/flask-debugtoolbar`

    Migrate the repo to `pallets-eco/flask-debugtoolbar`

    We're migrating the location of this repo from flask-debugtoolbar/flask-debugtoolbar to pallets-eco/flask-debugtoolbar to co-locate it alongside a number of other popular Flask-related extensions.

    In order to complete this migration, we need to do a few things:

    • [x] transfer the repository to the pallets-eco org
    • [x] Make myself & @nickjj repo admins - this needs @davidism
    • [x] Make @mattaw a repo collaborator - I think I can do this once @davidism adds him to the pallets-eco org
    • [ ] Make @davidism and @ThiefMaster owners on https://pypi.org/project/Flask-DebugToolbar/ in case we ever need to publish an immediate security update or something more trusted users have access- I just sent them invites
    • [ ] Update outdated links to mgood/flask-debugtoolbar or flask-debugtoolbar/flask-debugtoolbar to point to pallets-eco/flask-debugtoolbar instead... I currently see some in https://github.com/pallets-eco/flask-debugtoolbar/blob/master/docs/index.rst and https://github.com/pallets-eco/flask-debugtoolbar/blob/master/setup.cfg
    • [ ] Cut a new release of flask-debugtoolbar and push to PyPI so that the project metadata on https://pypi.org/project/Flask-DebugToolbar/ points to the correct URLs.
    opened by jeffwidman 0
Releases(0.13.1)
  • 0.13.1(Mar 29, 2022)

    What's Changed

    • Fix setup.cfg to include package files by @nickjj in https://github.com/flask-debugtoolbar/flask-debugtoolbar/pull/172
    • Use a consistent version naming convention, 0.13 should have been 0.13.0 but it was yanked and you can't re-push yanked packages with the same version

    Full Changelog: https://github.com/flask-debugtoolbar/flask-debugtoolbar/compare/0.12.1...0.13.1

    Source code(tar.gz)
    Source code(zip)
  • 0.12.1(Mar 28, 2022)

  • 0.12.0(Mar 28, 2022)

    What's Changed

    • Fix SQLAlchemy SELECT/EXPLAIN to use url_for to respect app prefixes.… by @mattaw in https://github.com/flask-debugtoolbar/flask-debugtoolbar/pull/143
    • Add flask.g section to show g object content. by @Yaser-Amiri in https://github.com/flask-debugtoolbar/flask-debugtoolbar/pull/118
    • Change docs to pull version from setup.py by @jeffwidman in https://github.com/flask-debugtoolbar/flask-debugtoolbar/pull/108
    • Update README.rst by @jeffwidman in https://github.com/flask-debugtoolbar/flask-debugtoolbar/pull/147
    • Setup DB properly by @jeffwidman in https://github.com/flask-debugtoolbar/flask-debugtoolbar/pull/148
    • Cleanup version handling slightly by @jeffwidman in https://github.com/flask-debugtoolbar/flask-debugtoolbar/pull/149
    • Support gzip response by @zaw007 in https://github.com/flask-debugtoolbar/flask-debugtoolbar/pull/154
    • prefixed css classes, fixes #152 by @jnnkB in https://github.com/flask-debugtoolbar/flask-debugtoolbar/pull/153
    • Remove deprecated Jinja with_ extension for Jinja 3.0 (related to Flask 2.0) by @nickjj in https://github.com/flask-debugtoolbar/flask-debugtoolbar/pull/157
    • Update PyPI metadata files: add setup.cfg etc by @jeffwidman in https://github.com/flask-debugtoolbar/flask-debugtoolbar/pull/164

    New Contributors

    • @mattaw made their first contribution in https://github.com/flask-debugtoolbar/flask-debugtoolbar/pull/143
    • @Yaser-Amiri made their first contribution in https://github.com/flask-debugtoolbar/flask-debugtoolbar/pull/118
    • @zaw007 made their first contribution in https://github.com/flask-debugtoolbar/flask-debugtoolbar/pull/154
    • @jnnkB made their first contribution in https://github.com/flask-debugtoolbar/flask-debugtoolbar/pull/153
    • @nickjj made their first contribution in https://github.com/flask-debugtoolbar/flask-debugtoolbar/pull/157

    Full Changelog: https://github.com/flask-debugtoolbar/flask-debugtoolbar/compare/0.11.0...v0.12.0

    Source code(tar.gz)
    Source code(zip)
  • 0.11.0(Feb 18, 2020)

    Enhancements:

    • Switch to Flask's native CLI, dropping flask_script in the process (b92391d, thanks @jeffwidman)
    • Do not show DebugToolbar routes in the route map (#86, thanks @floqqi)
    • Document Pygments for SQL highlighting (#127, thanks @pgiraud)

    Fixes:

    • Remove deprecated flask.json_available (#119, thanks @davidism)
    • Remove deprecated request.is_xhr (7ce099c, thanks @jeffwidman)
    • Explicitly disable SQLALCHEMY_TRACK_MODIFICATIONS (9c7db48, thanks @jeffwidman)
    • Fix typo (#142, thanks @timgates42)
    Source code(tar.gz)
    Source code(zip)
pdb++, a drop-in replacement for pdb (the Python debugger)

pdb++, a drop-in replacement for pdb What is it? This module is an extension of the pdb module of the standard library. It is meant to be fully compat

1k Dec 24, 2022
Silky smooth profiling for Django

Silk Silk is a live profiling and inspection tool for the Django framework. Silk intercepts and stores HTTP requests and database queries before prese

Jazzband 3.7k Jan 01, 2023
GEF (GDB Enhanced Features) - a modern experience for GDB with advanced debugging features for exploit developers & reverse engineers ☢

GEF (GDB Enhanced Features) - a modern experience for GDB with advanced debugging features for exploit developers & reverse engineers ☢

hugsy 5.2k Jan 01, 2023
EDB 以太坊单合约交易调试工具

EDB 以太坊单合约交易调试工具 Idea 在刷题的时候遇到一类JOP(Jump-Oriented-Programming)的题目,fuzz或者调试这类题目缺少简单易用的工具,由此开发了一个简单的调试工具EDB(The Ethereum Debugger),利用debug_traceTransact

16 May 21, 2022
Full-screen console debugger for Python

PuDB: a console-based visual debugger for Python Its goal is to provide all the niceties of modern GUI-based debuggers in a more lightweight and keybo

Andreas Klöckner 2.6k Jan 01, 2023
Debugging manhole for python applications.

Overview docs tests package Manhole is in-process service that will accept unix domain socket connections and present the stacktraces for all threads

Ionel Cristian Mărieș 332 Dec 07, 2022
A powerful set of Python debugging tools, based on PySnooper

snoop snoop is a powerful set of Python debugging tools. It's primarily meant to be a more featureful and refined version of PySnooper. It also includ

Alex Hall 874 Jan 08, 2023
A simple rubber duck debugger

Rubber Duck Debugger I found myself many times asking a question on StackOverflow or to one of my colleagues just for finding the solution simply by d

1 Nov 10, 2021
🍦 Never use print() to debug again.

IceCream -- Never use print() to debug again Do you ever use print() or log() to debug your code? Of course you do. IceCream, or ic for short, makes p

Ansgar Grunseid 6.5k Jan 07, 2023
pdb++, a drop-in replacement for pdb (the Python debugger)

pdb++, a drop-in replacement for pdb What is it? This module is an extension of the pdb module of the standard library. It is meant to be fully compat

1k Jan 02, 2023
Never use print for debugging again

PySnooper - Never use print for debugging again PySnooper is a poor man's debugger. If you've used Bash, it's like set -x for Python, except it's fanc

Ram Rachum 15.5k Jan 01, 2023
A configurable set of panels that display various debug information about the current request/response.

Django Debug Toolbar The Django Debug Toolbar is a configurable set of panels that display various debug information about the current request/respons

Jazzband 7.3k Dec 29, 2022
A web-based visualization and debugging platform for NuPIC

Cerebro 2 A web-based visualization and debugging platform for NuPIC. Usage Set up cerebro2.server to export your model state. Then, run: cd static py

Numenta 24 Oct 13, 2021
Graphical Python debugger which lets you easily view the values of all evaluated expressions

birdseye birdseye is a Python debugger which records the values of expressions in a function call and lets you easily view them after the function exi

Alex Hall 1.5k Dec 24, 2022
Middleware that Prints the number of DB queries to the runserver console.

Django Querycount Inspired by this post by David Szotten, this project gives you a middleware that prints DB query counts in Django's runserver consol

Brad Montgomery 332 Dec 23, 2022
Pyinstrument - a Python profiler. A profiler is a tool to help you optimize your code - make it faster.

Pyinstrument🚴 Call stack profiler for Python. Shows you why your code is slow!

Joe Rickerby 5k Jan 08, 2023
Sane color handling of osx's accent and highlight color from the commandline

osx-colors Sane command line color customisation for osx, no more fiddling about with defaults, internal apple color constants and rgb color codes Say

Clint Plummer 8 Nov 17, 2022
Integration of IPython pdb

IPython pdb Use ipdb exports functions to access the IPython debugger, which features tab completion, syntax highlighting, better tracebacks, better i

Godefroid Chapelle 1.7k Jan 07, 2023
A package containing a lot of useful utilities for Python developing and debugging.

Vpack A package containing a lot of useful utilities for Python developing and debugging. Features Sigview: press Ctrl+C to print the current stack in

volltin 16 Aug 18, 2022
Visual Interaction with Code - A portable visual debugger for python

VIC Visual Interaction with Code A simple tool for debugging and interacting with running python code. This tool is designed to make it easy to inspec

Nathan Blank 1 Nov 16, 2021