diff options
author | shadchin <shadchin@yandex-team.ru> | 2022-02-10 16:44:39 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:44:39 +0300 |
commit | e9656aae26e0358d5378e5b63dcac5c8dbe0e4d0 (patch) | |
tree | 64175d5cadab313b3e7039ebaa06c5bc3295e274 /contrib/python/ipdb | |
parent | 2598ef1d0aee359b4b6d5fdd1758916d5907d04f (diff) | |
download | ydb-e9656aae26e0358d5378e5b63dcac5c8dbe0e4d0.tar.gz |
Restoring authorship annotation for <shadchin@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'contrib/python/ipdb')
-rw-r--r-- | contrib/python/ipdb/.dist-info/METADATA | 1172 | ||||
-rw-r--r-- | contrib/python/ipdb/.dist-info/top_level.txt | 2 | ||||
-rw-r--r-- | contrib/python/ipdb/COPYING.txt | 60 | ||||
-rw-r--r-- | contrib/python/ipdb/README.rst | 386 | ||||
-rw-r--r-- | contrib/python/ipdb/ipdb/__init__.py | 2 | ||||
-rw-r--r-- | contrib/python/ipdb/ipdb/__main__.py | 360 | ||||
-rw-r--r-- | contrib/python/ipdb/ya.make | 16 |
7 files changed, 999 insertions, 999 deletions
diff --git a/contrib/python/ipdb/.dist-info/METADATA b/contrib/python/ipdb/.dist-info/METADATA index b51b60bf71..a0597b4d58 100644 --- a/contrib/python/ipdb/.dist-info/METADATA +++ b/contrib/python/ipdb/.dist-info/METADATA @@ -1,586 +1,586 @@ -Metadata-Version: 2.1 -Name: ipdb -Version: 0.13.9 -Summary: IPython-enabled pdb -Home-page: https://github.com/gotcha/ipdb -Author: Godefroid Chapelle -Author-email: gotcha@bubblenet.be -License: BSD -Keywords: pdb ipython -Platform: UNKNOWN -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: 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 -Requires-Dist: setuptools -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: 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.10.0) ; python_version == "3.6" -Requires-Dist: toml (>=0.10.2) ; python_version == "3.6" -Requires-Dist: decorator ; python_version == "3.6" -Requires-Dist: ipython (>=7.17.0) ; python_version > "3.6" -Requires-Dist: toml (>=0.10.2) ; python_version > "3.6" -Requires-Dist: decorator ; python_version > "3.6" - -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.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. - - +Metadata-Version: 2.1 +Name: ipdb +Version: 0.13.9 +Summary: IPython-enabled pdb +Home-page: https://github.com/gotcha/ipdb +Author: Godefroid Chapelle +Author-email: gotcha@bubblenet.be +License: BSD +Keywords: pdb ipython +Platform: UNKNOWN +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: 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 +Requires-Dist: setuptools +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: 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.10.0) ; python_version == "3.6" +Requires-Dist: toml (>=0.10.2) ; python_version == "3.6" +Requires-Dist: decorator ; python_version == "3.6" +Requires-Dist: ipython (>=7.17.0) ; python_version > "3.6" +Requires-Dist: toml (>=0.10.2) ; python_version > "3.6" +Requires-Dist: decorator ; python_version > "3.6" + +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.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. + + diff --git a/contrib/python/ipdb/.dist-info/top_level.txt b/contrib/python/ipdb/.dist-info/top_level.txt index 2895c6745b..19168ea109 100644 --- a/contrib/python/ipdb/.dist-info/top_level.txt +++ b/contrib/python/ipdb/.dist-info/top_level.txt @@ -1 +1 @@ -ipdb +ipdb diff --git a/contrib/python/ipdb/COPYING.txt b/contrib/python/ipdb/COPYING.txt index a856543f8d..2e6b97774c 100644 --- a/contrib/python/ipdb/COPYING.txt +++ b/contrib/python/ipdb/COPYING.txt @@ -1,30 +1,30 @@ -Copyright (c) 2007-2019 ipdb development team - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. - -Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation -and/or other materials provided with the distribution. - -Neither the name of the ipdb Development Team nor the names of its -contributors may be used to endorse or promote products derived from this -software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright (c) 2007-2019 ipdb development team + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. + +Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + +Neither the name of the ipdb Development Team nor the names of its +contributors may be used to endorse or promote products derived from this +software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/contrib/python/ipdb/README.rst b/contrib/python/ipdb/README.rst index db53082de7..96f6882d44 100644 --- a/contrib/python/ipdb/README.rst +++ b/contrib/python/ipdb/README.rst @@ -1,193 +1,193 @@ -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 +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 diff --git a/contrib/python/ipdb/ipdb/__init__.py b/contrib/python/ipdb/ipdb/__init__.py index dfad6f3939..75e8fed02a 100644 --- a/contrib/python/ipdb/ipdb/__init__.py +++ b/contrib/python/ipdb/ipdb/__init__.py @@ -4,7 +4,7 @@ # Redistributable under the revised BSD license # https://opensource.org/licenses/BSD-3-Clause -from ipdb.__main__ import set_trace, post_mortem, pm, run, iex # noqa +from ipdb.__main__ import set_trace, post_mortem, pm, run, iex # noqa from ipdb.__main__ import runcall, runeval, launch_ipdb_on_exception # noqa from ipdb.stdout import sset_trace, spost_mortem, spm # noqa diff --git a/contrib/python/ipdb/ipdb/__main__.py b/contrib/python/ipdb/ipdb/__main__.py index 7bdd3c0225..68dc921dc9 100644 --- a/contrib/python/ipdb/ipdb/__main__.py +++ b/contrib/python/ipdb/ipdb/__main__.py @@ -8,54 +8,54 @@ from __future__ import print_function import os import sys -from decorator import contextmanager +from decorator import contextmanager -__version__ = '0.13.9' +__version__ = '0.13.9' from IPython import get_ipython from IPython.core.debugger import BdbQuit_excepthook from IPython.terminal.ipapp import TerminalIPythonApp from IPython.terminal.embed import InteractiveShellEmbed -try: - import configparser -except: - import ConfigParser as configparser - - -def _get_debugger_cls(): - shell = get_ipython() - if shell is None: - # Not inside IPython - # Build a terminal app in order to force ipython to load the - # configuration - ipapp = TerminalIPythonApp() - # Avoid output (banner, prints) - ipapp.interact = False - ipapp.initialize(["--no-term-title"]) - shell = ipapp.shell - else: - # Running inside IPython - - # Detect if embed shell or not and display a message - if isinstance(shell, InteractiveShellEmbed): - sys.stderr.write( - "\nYou are currently into an embedded ipython shell,\n" - "the configuration will not be loaded.\n\n" - ) - - # Let IPython decide about which debugger class to use - # This is especially important for tools that fiddle with stdout - return shell.debugger_cls - - -def _init_pdb(context=None, commands=[]): - if context is None: - context = os.getenv("IPDB_CONTEXT_SIZE", get_context_from_config()) - debugger_cls = _get_debugger_cls() +try: + import configparser +except: + import ConfigParser as configparser + + +def _get_debugger_cls(): + shell = get_ipython() + if shell is None: + # Not inside IPython + # Build a terminal app in order to force ipython to load the + # configuration + ipapp = TerminalIPythonApp() + # Avoid output (banner, prints) + ipapp.interact = False + ipapp.initialize(["--no-term-title"]) + shell = ipapp.shell + else: + # Running inside IPython + + # Detect if embed shell or not and display a message + if isinstance(shell, InteractiveShellEmbed): + sys.stderr.write( + "\nYou are currently into an embedded ipython shell,\n" + "the configuration will not be loaded.\n\n" + ) + + # Let IPython decide about which debugger class to use + # This is especially important for tools that fiddle with stdout + return shell.debugger_cls + + +def _init_pdb(context=None, commands=[]): + if context is None: + context = os.getenv("IPDB_CONTEXT_SIZE", get_context_from_config()) + debugger_cls = _get_debugger_cls() try: - p = debugger_cls(context=context) + p = debugger_cls(context=context) except TypeError: - p = debugger_cls() + p = debugger_cls() p.rcLines.extend(commands) return p @@ -68,9 +68,9 @@ def wrap_sys_excepthook(): sys.excepthook = BdbQuit_excepthook -def set_trace(frame=None, context=None, cond=True): - if not cond: - return +def set_trace(frame=None, context=None, cond=True): + if not cond: + return wrap_sys_excepthook() if frame is None: frame = sys._getframe().f_back @@ -79,115 +79,115 @@ def set_trace(frame=None, context=None, cond=True): p.shell.restore_sys_module_state() -def get_context_from_config(): - try: - parser = get_config() - return parser.getint("ipdb", "context") - except (configparser.NoSectionError, configparser.NoOptionError): - return 3 - except ValueError: - value = parser.get("ipdb", "context") - raise ValueError( - "In %s, context value [%s] cannot be converted into an integer." - % (parser.filepath, value) - ) - - -class ConfigFile(object): - """ - Filehandle wrapper that adds a "[ipdb]" section to the start of a config - file so that users don't actually have to manually add a [ipdb] section. - Works with configparser versions from both Python 2 and 3 - """ - - def __init__(self, filepath): - self.first = True - with open(filepath) as f: - self.lines = f.readlines() - - # Python 2.7 (Older dot versions) - def readline(self): - try: - return self.__next__() - except StopIteration: - return '' - - # Python 2.7 (Newer dot versions) - def next(self): - return self.__next__() - - # Python 3 - def __iter__(self): - return self - - def __next__(self): - if self.first: - self.first = False - return "[ipdb]\n" - if self.lines: - return self.lines.pop(0) - raise StopIteration - - -def get_config(): - """ - Get ipdb config file settings. - All available config files are read. If settings are in multiple configs, - the last value encountered wins. Values specified on the command-line take - precedence over all config file settings. - Returns: A ConfigParser object. - """ - parser = configparser.ConfigParser() - - filepaths = [] - - # Low priority goes first in the list - for cfg_file in ("setup.cfg", ".ipdb", "pyproject.toml"): - cwd_filepath = os.path.join(os.getcwd(), cfg_file) - if os.path.isfile(cwd_filepath): - filepaths.append(cwd_filepath) - - # Medium priority (whenever user wants to set a specific path to config file) - home = os.getenv("HOME") - if home: - default_filepath = os.path.join(home, ".ipdb") - if os.path.isfile(default_filepath): - filepaths.append(default_filepath) - - # High priority (default files) - env_filepath = os.getenv("IPDB_CONFIG") - if env_filepath and os.path.isfile(env_filepath): - filepaths.append(env_filepath) - - if filepaths: - # Python 3 has parser.read_file(iterator) while Python2 has - # parser.readfp(obj_with_readline) - try: - read_func = parser.read_file - except AttributeError: - read_func = parser.readfp - for filepath in filepaths: - parser.filepath = filepath - # Users are expected to put an [ipdb] section - # only if they use setup.cfg - if filepath.endswith('setup.cfg'): - with open(filepath) as f: - parser.remove_section("ipdb") - read_func(f) - # To use on pyproject.toml, put [tool.ipdb] section - elif filepath.endswith('pyproject.toml'): - import toml - toml_file = toml.load(filepath) - if "tool" in toml_file and "ipdb" in toml_file["tool"]: - if not parser.has_section("ipdb"): - parser.add_section("ipdb") - for key, value in toml_file["tool"]["ipdb"].items(): - parser.set("ipdb", key, str(value)) - else: - read_func(ConfigFile(filepath)) - return parser - - +def get_context_from_config(): + try: + parser = get_config() + return parser.getint("ipdb", "context") + except (configparser.NoSectionError, configparser.NoOptionError): + return 3 + except ValueError: + value = parser.get("ipdb", "context") + raise ValueError( + "In %s, context value [%s] cannot be converted into an integer." + % (parser.filepath, value) + ) + + +class ConfigFile(object): + """ + Filehandle wrapper that adds a "[ipdb]" section to the start of a config + file so that users don't actually have to manually add a [ipdb] section. + Works with configparser versions from both Python 2 and 3 + """ + + def __init__(self, filepath): + self.first = True + with open(filepath) as f: + self.lines = f.readlines() + + # Python 2.7 (Older dot versions) + def readline(self): + try: + return self.__next__() + except StopIteration: + return '' + + # Python 2.7 (Newer dot versions) + def next(self): + return self.__next__() + + # Python 3 + def __iter__(self): + return self + + def __next__(self): + if self.first: + self.first = False + return "[ipdb]\n" + if self.lines: + return self.lines.pop(0) + raise StopIteration + + +def get_config(): + """ + Get ipdb config file settings. + All available config files are read. If settings are in multiple configs, + the last value encountered wins. Values specified on the command-line take + precedence over all config file settings. + Returns: A ConfigParser object. + """ + parser = configparser.ConfigParser() + + filepaths = [] + + # Low priority goes first in the list + for cfg_file in ("setup.cfg", ".ipdb", "pyproject.toml"): + cwd_filepath = os.path.join(os.getcwd(), cfg_file) + if os.path.isfile(cwd_filepath): + filepaths.append(cwd_filepath) + + # Medium priority (whenever user wants to set a specific path to config file) + home = os.getenv("HOME") + if home: + default_filepath = os.path.join(home, ".ipdb") + if os.path.isfile(default_filepath): + filepaths.append(default_filepath) + + # High priority (default files) + env_filepath = os.getenv("IPDB_CONFIG") + if env_filepath and os.path.isfile(env_filepath): + filepaths.append(env_filepath) + + if filepaths: + # Python 3 has parser.read_file(iterator) while Python2 has + # parser.readfp(obj_with_readline) + try: + read_func = parser.read_file + except AttributeError: + read_func = parser.readfp + for filepath in filepaths: + parser.filepath = filepath + # Users are expected to put an [ipdb] section + # only if they use setup.cfg + if filepath.endswith('setup.cfg'): + with open(filepath) as f: + parser.remove_section("ipdb") + read_func(f) + # To use on pyproject.toml, put [tool.ipdb] section + elif filepath.endswith('pyproject.toml'): + import toml + toml_file = toml.load(filepath) + if "tool" in toml_file and "ipdb" in toml_file["tool"]: + if not parser.has_section("ipdb"): + parser.add_section("ipdb") + for key, value in toml_file["tool"]["ipdb"].items(): + parser.set("ipdb", key, str(value)) + else: + read_func(ConfigFile(filepath)) + return parser + + def post_mortem(tb=None): wrap_sys_excepthook() p = _init_pdb() @@ -228,12 +228,12 @@ def launch_ipdb_on_exception(): pass -# iex is a concise alias -iex = launch_ipdb_on_exception() - - +# iex is a concise alias +iex = launch_ipdb_on_exception() + + _usage = """\ -usage: python -m ipdb [-m] [-c command] ... pyfile [arg] ... +usage: python -m ipdb [-m] [-c command] ... pyfile [arg] ... Debug the Python program given by pyfile. @@ -244,9 +244,9 @@ and in the current directory, if they exist. Commands supplied with To let the script run until an exception occurs, use "-c continue". To let the script run up to a given line X in the debugged file, use "-c 'until X'" - -Option -m is available only in Python 3.7 and later. - + +Option -m is available only in Python 3.7 and later. + ipdb version %s.""" % __version__ @@ -260,37 +260,37 @@ def main(): except ImportError: class Restart(Exception): pass - - if sys.version_info >= (3, 7): - opts, args = getopt.getopt(sys.argv[1:], 'mhc:', ['help', 'command=']) - else: - opts, args = getopt.getopt(sys.argv[1:], 'hc:', ['help', 'command=']) + + if sys.version_info >= (3, 7): + opts, args = getopt.getopt(sys.argv[1:], 'mhc:', ['help', 'command=']) + else: + opts, args = getopt.getopt(sys.argv[1:], 'hc:', ['help', 'command=']) commands = [] - run_as_module = False + run_as_module = False for opt, optarg in opts: if opt in ['-h', '--help']: print(_usage) sys.exit() elif opt in ['-c', '--command']: commands.append(optarg) - elif opt in ['-m']: - run_as_module = True + elif opt in ['-m']: + run_as_module = True + + if not args: + print(_usage) + sys.exit(2) - if not args: - print(_usage) - sys.exit(2) - mainpyfile = args[0] # Get script filename - if not run_as_module and not os.path.exists(mainpyfile): + if not run_as_module and not os.path.exists(mainpyfile): print('Error:', mainpyfile, 'does not exist') sys.exit(1) sys.argv = args # Hide "pdb.py" from argument list # Replace pdb's dir with script's dir in front of module search path. - if not run_as_module: - sys.path[0] = os.path.dirname(mainpyfile) + if not run_as_module: + sys.path[0] = os.path.dirname(mainpyfile) # Note on saving/restoring sys.argv: it's a good idea when sys.argv was # modified by the script being debugged. It's a bad idea when it was @@ -299,10 +299,10 @@ def main(): pdb = _init_pdb(commands=commands) while 1: try: - if run_as_module: - pdb._runmodule(mainpyfile) - else: - pdb._runscript(mainpyfile) + if run_as_module: + pdb._runmodule(mainpyfile) + else: + pdb._runscript(mainpyfile) if pdb._user_requested_quit: break print("The program finished and will be restarted") @@ -322,6 +322,6 @@ def main(): print("Post mortem debugger finished. The " + mainpyfile + " will be restarted") - + if __name__ == '__main__': main() diff --git a/contrib/python/ipdb/ya.make b/contrib/python/ipdb/ya.make index f28e07f17d..c1c769c05c 100644 --- a/contrib/python/ipdb/ya.make +++ b/contrib/python/ipdb/ya.make @@ -4,10 +4,10 @@ LICENSE(BSD-3-Clause) OWNER(orivej g:python-contrib) -VERSION(0.13.9) +VERSION(0.13.9) PEERDIR( - contrib/python/decorator + contrib/python/decorator contrib/python/ipython ) @@ -29,10 +29,10 @@ NO_CHECK_IMPORTS( ipdb.stdout ) -RESOURCE_FILES( - PREFIX contrib/python/ipdb/ - .dist-info/METADATA - .dist-info/top_level.txt -) - +RESOURCE_FILES( + PREFIX contrib/python/ipdb/ + .dist-info/METADATA + .dist-info/top_level.txt +) + END() |