Package: ipdb
IPythonpdbUseipdb exports functions to access theIPythondebugger, which features
tab completion, syntax highlighting, better tracebacks, better introspection
with the same interface as thepdbmodule.Example usage:importipdbipdb.set_trace()ipdb.set_trace(context=5)# will show five lines of code# instead of the default three lines# or you can set it via IPDB_CONTEXT_SIZE env variable# or setup.cfg fileipdb.pm()ipdb.run('x[0] = 3')result=ipdb.runcall(function,arg0,arg1,kwarg='foo')result=ipdb.runeval('f(1,2) - 3')Arguments forset_traceTheset_tracefunction acceptscontextwhich will show as many lines of code as defined,
andcond, which accepts boolean values (such asabc == 17) and will start ipdb’s
interface whenevercondequals toTrue.Using configuration fileIt’s possible to set up context using a.ipdbfile on your home folder,setup.cfgorpyproject.tomlon your project folder. You can also set your file location via
env var$IPDB_CONFIG. Your environment variable has priority over the home
configuration file, which in turn has priority over the setup config file.
Currently, only context setting is available.A valid setup.cfg is as follows[ipdb]
context=5A valid .ipdb is as followscontext=5A valid pyproject.toml is as follows[tool.ipdb]
context=5The post-mortem function,ipdb.pm(), is equivalent to the magic function%debug.If you installipdbwith a tool which supportssetuptoolsentry points,
anipdbscript is made for you. You can use it to debug your python 2 scripts like$ bin/ipdb mymodule.pyAnd for python 3$ bin/ipdb3 mymodule.pyAlternatively with Python 2.7 only, you can also use$ python -m ipdb mymodule.pyYou can also enclose code with thewithstatement to launch ipdb if an exception is raised:fromipdbimportlaunch_ipdb_on_exceptionwithlaunch_ipdb_on_exception():[...]WarningContext managers were introduced in Python 2.5.
Adding a context manager implies dropping Python 2.4 support.
Useipdb==0.6with 2.4.Or you can useiexas a function decorator to launch ipdb if an exception is raised:fromipdbimportiex@iexdefmain():[...]WarningUsingfrom future import print_functionfor Python 3 compat implies dropping Python 2.5 support.
Useipdb<=0.8with 2.5.Issues withstdoutSome tools, likenosefiddle withstdout.Untilipdb==0.9.4, we tried to guess when we should also
fiddle withstdoutto support those tools.
However, all strategies tried until 0.9.4 have proven brittle.If you usenoseor another tool that fiddles withstdout, you should
explicitly ask forstdoutfiddling by usingipdblike thisimportipdbipdb.sset_trace()ipdb.spm()fromipdbimportslaunch_ipdb_on_exceptionwithslaunch_ipdb_on_exception():[...]Developmentipdbsource code and tracker are athttps://github.com/gotcha/ipdb.Pull requests should take care of updating the changelogHISTORY.txt.Under the unreleased section, add your changes and your username.Manual testingTo test your changes, make use ofmanual_test.py. Create a virtual environment,
install IPython and runpython manual_test.pyand check if your changes are in effect.
If possible, create automated tests for better behaviour control.Automated testingTo run automated tests locally, create a virtual environment, installcoverageand runcoverage run setup.py test.Third-party supportProducts.PDBDebugModeZope2Products.PDBDebugModeusesipdb, if available, in place ofpdb.iw.debugiw.debugallows you to trigger anipdbdebugger on any published object
of a Zope2 application.ipdbpluginipdbpluginis anosetest runner plugin that also uses the IPython debugger
instead ofpdb. (It does not depend onipdbanymore).Changelog0.13.13 (2023-03-09)Use context manager for opening toml config
[andrewzwicky]0.13.12 (2023-03-09)Modify tests to test 3.11 separately from earlier python versions.
[andrewzwicky]0.13.11 (2022-12-13)Better exception handling when looking for config.
[bignose-debian]0.13.10 (2022-12-13)Better toml support (use tomlib for 3.11, tomli for 3.6 to 3.10).
[salty-horse, mgorny]Minimal PEP 517 support.
[cpcloud]3.11 support for run as module and run as script.
[nphilipp, gotcha]Based on OSV:PYSEC-2022-12 change ipython dependencies,
for users using python 3.6, install 7.16.3 <= IPython < 7.17.0,
for users using python>3.6, install IPython >= 7.31.1.
[malkstar]0.13.9 (2021-06-02)Fix again whenpyproject.tomldoes not containtoolsection.
[markab108]0.13.8 (2021-05-26)Fix whenpyproject.tomldoes not containtoolsection.
[anjos]Add the convenience functioniex().
[alanbernstein]0.13.7 (2021-03-16)Do not instantiate IPython on import
[adamchainz]0.13.6 (2021-03-08)Fix broken parsing of pyproject.toml
[alexandrebarbaruiva]0.13.5 (2021-03-02)Add support for pyproject.toml as configuration file
[alexandrebarbaruiva]For users using python 3.4, install 6.0.0 <= IPython < 7.0.0,
for users using python 3.5, install 7.0.0 <= IPython < 7.10.0,
for users using python 3.6, install 7.10.0 <= IPython < 7.17.0,
for users using python>3.6, install IPython >= 7.17.0.
[d1618033]0.13.4 (2020-10-01)Add ‘-m’ option
[mrmino]0.13.3 (2020-06-23)Allow runcall, runeval to also use set context value
[meowser]Add condition argument to set_trace
[alexandrebarbaruiva]0.13.2 (2020-03-03)Remove leftover debug code
[gotcha]0.13.1 (2020-02-28)Fix when no configuration file
[gotcha]0.13.0 (2020-02-28)Add option to set context via environment variable or configuration file
[alexandrebarbaruiva]0.12.3 (2019-12-03)Fix version in usage
[gotcha]0.12.2 (2019-07-30)Avoid emitting term-title bytes
[steinnes]0.12.1 (2019-07-26)Fix –help
[native-api]0.12 (2019-03-20)Drop support for Python 3.3.x
[bmw]Stop deprecation warnings from being raised when IPython >= 5.1 is used.
Support for IPython < 5.1 has been dropped.
[bmw]0.11 (2018-02-15)Simplify loading IPython and getting information from it.
Drop support for python 2.6
Drop support for IPython < 5.0.0
[takluyver]0.10.3 (2017-04-22)For users using python 2.6, do not install IPython >= 2.0.0.
And for users using python 2.7, do not install IPython >= 6.0.0.
[vphilippon]Drop support for python 3.2.
[vphilippon]Command line usage consistent with pdb - Add argument commands
[zvodd]0.10.2 (2017-01-25)Ask IPython which debugger class to use.
Closeshttps://github.com/gotcha/ipdb/issues/105[gnebehay, JBKahn]ipdb.set_trace() does not ignore context arg anymore.
Closeshttps://github.com/gotcha/ipdb/issues/93.
[gnebehay, Garrett-R]0.10.1 (2016-06-14)Support IPython 5.0.
[ngoldbaum]0.10.0 (2016-04-29)Stop trying to magically guess when stdout needs to be captured.
Like needed bynose.
Rather, provide a set of function that can be called explicitely when needed.
[gotcha]drop support of IPython before 0.10.20.9.4 (2016-04-29)Fix Restart error when usingpython -m ipdbCloseshttps://github.com/gotcha/ipdb/issues/93.
[gotcha]0.9.3 (2016-04-15)Don’t require users to pass a traceback to post_mortem.
[Wilfred]0.9.2 (2016-04-15)Closeshttps://github.com/gotcha/ipdb/issues/93.
[gotcha]0.9.1 (2016-04-12)Resetsys.modules['__main__']to original value.
Closeshttps://github.com/gotcha/ipdb/issues/85[gotcha]Fix support of IPython versions 0.x
[asivokon]0.9.0 (2016-02-22)Switch to revised BSD license (with approval of all contributors).
Closeshttps://github.com/gotcha/ipdb/issues/68[lebedov, gotcha]0.8.3 (2016-02-17)Don’t pass sys.argv to IPython for configuration.
[emulbreh]0.8.2 (2016-02-15)Fix lexical comparison for version numbers.
[sas23]Allow configuring how many lines of code context are displayed
byset_trace[JamshedVesuna]If an instance of IPython is already running its configuration will be
loaded.
[IxDay]0.8.1 (2015-06-03)Make Nose support less invasive.
Closeshttps://github.com/gotcha/ipdb/issues/52Closeshttps://github.com/gotcha/ipdb/issues/31[blink1073, gotcha]Fix for post_mortem in context manager.
Closeshttps://github.com/gotcha/ipdb/issues/20[omergertel]0.8 (2013-09-19)More Python 3 compatibility; implies dropping Python 2.5 support.
Closeshttps://github.com/gotcha/ipdb/issues/37[gotcha]0.7.1 (2013-09-19)IPython 1.0 compatibility.
Closeshttps://github.com/gotcha/ipdb/issues/44[pgularski]Index into version_info in setup.py for Python 2.6 compatibility.
[kynan]Add Travis CI configuration.
[kynan]0.7 (2012-07-06)Addlaunch_ipdb_on_exceptioncontext manager. Implies dropping Python 2.4 support.
[Psycojoker]Wrap sys.excepthook only once.
[marciomazza]Add GPL file and refer in headers.
[stan3]Python 3 support.
[Piet Delport]Basic tests.
[msabramo]Added the functionsruncall,runevalandrun.
[dimasad]0.6.1 (2011-10-17)State dependency on IPython later or equal to 0.10.
[gotcha]0.6 (2011-09-01)Add setuptoolsconsole_scriptsentry point.
[akrito, gotcha]Nose support.
Closeshttps://github.com/gotcha/ipdb/issues/8[akaihola, gotcha]0.5 (2011-08-05)IPython 0.11 support.
[lebedov]0.4 (2011-06-13)When used from IPython, use its colors.
Closeshttps://github.com/gotcha/ipdb/issues/1[gotcha]Fixed errors when exiting with “q”.
[gotcha]Allow use ofpython-mipdb mymodule.py.
Python 2.7 only.
Closeshttps://github.com/gotcha/ipdb/issues/3[gotcha]Fixed post_mortem when the traceback is None.
[maurits]0.3 (2011-01-16)Addpost_mortem()forProducts.PDBDebugModesupport.
[Jean Jordaan]Moved to github.com.0.2 (2010-10-20)Addedpm().
[Paulo Benedict Ang]0.1 (2010-04-26)First “non dev” release.