123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629 |
- Metadata-Version: 2.1
- Name: ipdb
- Version: 0.13.13
- Summary: IPython-enabled pdb
- Home-page: https://github.com/gotcha/ipdb
- Author: Godefroid Chapelle
- Author-email: gotcha@bubblenet.be
- License: BSD
- Keywords: pdb ipython
- Classifier: Programming Language :: Python :: 2.7
- Classifier: Programming Language :: Python :: 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: Programming Language :: Python :: 3.8
- Classifier: Programming Language :: Python :: 3.9
- Classifier: Programming Language :: Python :: 3.10
- Classifier: Programming Language :: Python :: 3.11
- Classifier: Operating System :: MacOS :: MacOS X
- Classifier: Operating System :: POSIX :: Linux
- Classifier: Operating System :: Microsoft :: Windows
- Classifier: Topic :: Software Development :: Debuggers
- Classifier: License :: OSI Approved :: BSD License
- Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*
- License-File: COPYING.txt
- License-File: AUTHORS
- Requires-Dist: ipython (<6.0.0,>=5.1.0) ; python_version == "2.7"
- Requires-Dist: toml (>=0.10.2) ; python_version == "2.7"
- Requires-Dist: decorator (<5.0.0) ; python_version == "2.7"
- Requires-Dist: pathlib ; python_version == "2.7"
- Requires-Dist: ipython (<7.0.0,>=6.0.0) ; python_version == "3.4"
- Requires-Dist: toml (>=0.10.2) ; python_version == "3.4"
- Requires-Dist: decorator (<5.0.0) ; python_version == "3.4"
- Requires-Dist: ipython (<7.10.0,>=7.0.0) ; python_version == "3.5"
- Requires-Dist: toml (>=0.10.2) ; python_version == "3.5"
- Requires-Dist: decorator ; python_version == "3.5"
- Requires-Dist: ipython (<7.17.0,>=7.16.3) ; python_version == "3.6"
- Requires-Dist: tomli ; python_version == "3.6"
- Requires-Dist: decorator ; python_version == "3.6"
- Requires-Dist: ipython (>=7.31.1) ; python_version > "3.6" and python_version < "3.11"
- Requires-Dist: tomli ; python_version > "3.6" and python_version < "3.11"
- Requires-Dist: decorator ; python_version > "3.6" and python_version < "3.11"
- Requires-Dist: ipython (>=7.31.1) ; python_version >= "3.11"
- Requires-Dist: decorator ; python_version >= "3.11"
- IPython `pdb`
- =============
- .. image:: https://travis-ci.org/gotcha/ipdb.png?branch=master
- :target: https://travis-ci.org/gotcha/ipdb
- .. image:: https://codecov.io/gh/gotcha/ipdb/branch/master/graphs/badge.svg?style=flat
- :target: https://codecov.io/gh/gotcha/ipdb?branch=master
- Use
- ---
- ipdb exports functions to access the IPython_ debugger, which features
- tab completion, syntax highlighting, better tracebacks, better introspection
- with the same interface as the `pdb` module.
- Example usage:
- .. code-block:: python
- import ipdb
- ipdb.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 file
- ipdb.pm()
- ipdb.run('x[0] = 3')
- result = ipdb.runcall(function, arg0, arg1, kwarg='foo')
- result = ipdb.runeval('f(1,2) - 3')
- Arguments for `set_trace`
- +++++++++++++++++++++++++
- The `set_trace` function accepts `context` which will show as many lines of code as defined,
- and `cond`, which accepts boolean values (such as `abc == 17`) and will start ipdb's
- interface whenever `cond` equals to `True`.
- Using configuration file
- ++++++++++++++++++++++++
- It's possible to set up context using a `.ipdb` file on your home folder, `setup.cfg`
- or `pyproject.toml` on 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=5
- A valid .ipdb is as follows
- ::
- context=5
- A valid pyproject.toml is as follows
- ::
- [tool.ipdb]
- context=5
- The post-mortem function, ``ipdb.pm()``, is equivalent to the magic function
- ``%debug``.
- .. _IPython: http://ipython.org
- If you install ``ipdb`` with a tool which supports ``setuptools`` entry points,
- an ``ipdb`` script is made for you. You can use it to debug your python 2 scripts like
- ::
- $ bin/ipdb mymodule.py
- And for python 3
- ::
- $ bin/ipdb3 mymodule.py
- Alternatively with Python 2.7 only, you can also use
- ::
- $ python -m ipdb mymodule.py
- You can also enclose code with the ``with`` statement to launch ipdb if an exception is raised:
- .. code-block:: python
- from ipdb import launch_ipdb_on_exception
- with launch_ipdb_on_exception():
- [...]
- .. warning::
- Context managers were introduced in Python 2.5.
- Adding a context manager implies dropping Python 2.4 support.
- Use ``ipdb==0.6`` with 2.4.
- Or you can use ``iex`` as a function decorator to launch ipdb if an exception is raised:
- .. code-block:: python
- from ipdb import iex
- @iex
- def main():
- [...]
- .. warning::
- Using ``from future import print_function`` for Python 3 compat implies dropping Python 2.5 support.
- Use ``ipdb<=0.8`` with 2.5.
- Issues with ``stdout``
- ----------------------
- Some tools, like ``nose`` fiddle with ``stdout``.
- Until ``ipdb==0.9.4``, we tried to guess when we should also
- fiddle with ``stdout`` to support those tools.
- However, all strategies tried until 0.9.4 have proven brittle.
- If you use ``nose`` or another tool that fiddles with ``stdout``, you should
- explicitly ask for ``stdout`` fiddling by using ``ipdb`` like this
- .. code-block:: python
- import ipdb
- ipdb.sset_trace()
- ipdb.spm()
- from ipdb import slaunch_ipdb_on_exception
- with slaunch_ipdb_on_exception():
- [...]
- Development
- -----------
- ``ipdb`` source code and tracker are at https://github.com/gotcha/ipdb.
- Pull requests should take care of updating the changelog ``HISTORY.txt``.
- Under the unreleased section, add your changes and your username.
- Manual testing
- ++++++++++++++
- To test your changes, make use of ``manual_test.py``. Create a virtual environment,
- install IPython and run ``python manual_test.py`` and check if your changes are in effect.
- If possible, create automated tests for better behaviour control.
- Automated testing
- +++++++++++++++++
- To run automated tests locally, create a virtual environment, install `coverage`
- and run `coverage run setup.py test`.
- Third-party support
- -------------------
- Products.PDBDebugMode
- +++++++++++++++++++++
- Zope2 Products.PDBDebugMode_ uses ``ipdb``, if available, in place of ``pdb``.
- .. _Products.PDBDebugMode: http://pypi.python.org/pypi/Products.PDBDebugMode
- iw.debug
- ++++++++
- iw.debug_ allows you to trigger an ``ipdb`` debugger on any published object
- of a Zope2 application.
- .. _iw.debug: http://pypi.python.org/pypi/iw.debug
- ipdbplugin
- ++++++++++
- ipdbplugin_ is a nose_ test runner plugin that also uses the IPython debugger
- instead of ``pdb``. (It does not depend on ``ipdb`` anymore).
- .. _ipdbplugin: http://pypi.python.org/pypi/ipdbplugin
- .. _nose: http://readthedocs.org/docs/nose
- Changelog
- =========
- 0.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 when `pyproject.toml` does not contain `tool` section.
- [markab108]
- 0.13.8 (2021-05-26)
- -------------------
- - Fix when `pyproject.toml` does not contain `tool` section.
- [anjos]
- - Add the convenience function ``iex()``.
- [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.
- Closes https://github.com/gotcha/ipdb/issues/105
- [gnebehay, JBKahn]
- - ipdb.set_trace() does not ignore context arg anymore.
- Closes https://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 by `nose`.
- Rather, provide a set of function that can be called explicitely when needed.
- [gotcha]
- - drop support of IPython before 0.10.2
- 0.9.4 (2016-04-29)
- ------------------
- - Fix Restart error when using `python -m ipdb`
- Closes https://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)
- ------------------
- - Closes https://github.com/gotcha/ipdb/issues/93.
- [gotcha]
- 0.9.1 (2016-04-12)
- ------------------
- - Reset ``sys.modules['__main__']`` to original value.
- Closes https://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).
- Closes https://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
- by `set_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.
- Closes https://github.com/gotcha/ipdb/issues/52
- Closes https://github.com/gotcha/ipdb/issues/31
- [blink1073, gotcha]
- - Fix for post_mortem in context manager.
- Closes https://github.com/gotcha/ipdb/issues/20
- [omergertel]
- 0.8 (2013-09-19)
- ----------------
- - More Python 3 compatibility; implies dropping Python 2.5 support.
- Closes https://github.com/gotcha/ipdb/issues/37
- [gotcha]
- 0.7.1 (2013-09-19)
- ------------------
- - IPython 1.0 compatibility.
- Closes https://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)
- ----------------
- - Add ``launch_ipdb_on_exception`` context 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 functions ``runcall``, ``runeval`` and ``run``.
- [dimasad]
- 0.6.1 (2011-10-17)
- ------------------
- - State dependency on IPython later or equal to 0.10.
- [gotcha]
- 0.6 (2011-09-01)
- ----------------
- - Add setuptools ``console_scripts`` entry point.
- [akrito, gotcha]
- - Nose support.
- Closes https://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.
- Closes https://github.com/gotcha/ipdb/issues/1
- [gotcha]
- - Fixed errors when exiting with "q".
- [gotcha]
- - Allow use of ``python -m ipdb mymodule.py``.
- Python 2.7 only.
- Closes https://github.com/gotcha/ipdb/issues/3
- [gotcha]
- - Fixed post_mortem when the traceback is None.
- [maurits]
- 0.3 (2011-01-16)
- ----------------
- - Add ``post_mortem()`` for ``Products.PDBDebugMode`` support.
- [Jean Jordaan]
- - Moved to github.com.
- 0.2 (2010-10-20)
- ----------------
- - Added ``pm()``.
- [Paulo Benedict Ang]
- 0.1 (2010-04-26)
- ----------------
- - First "non dev" release.
|