internlm/SWE-Fixer-Train-110K huggingface dataset:
Repository: ipython/ipython

Issue:
IPythonLexer test failure with pygments 2.1
Jenkins is showing us a test failure on Windows:

https://jenkins.jupyter.org/job/windows-multi/_pyversion=3.5,label=windows/504/testReport/

It looks like `$HOME` is unexpectedly being split into two tokens. I suspect it's failing since pygments 2.1 was released. I see the same locally on Linux, but it's not failing on Travis (maybe we're not installing pygments so those tests are skipped?).

@abalkin and @chebee7i have done the most signficant work on the lexer machinery. Any ideas?



Discussion:
This is a change in the BashLexer in pygments 2.1

Running this:

``` python
import sys
import pygments
from pygments.lexers import BashLexer

print('Python-%s' % sys.version.split()[0])
print('Pygments-%s' % pygments.__version__)

lexer = BashLexer()
print(list(lexer.get_tokens('$HOME')))
```

Gives:

```
Python-3.5.1
Pygments-2.1
[(Token.Text, '$'), (Token.Text, 'HOME'), (Token.Text, '\n')]
```

```
Python-3.5.1
Pygments-2.0.2
[(Token.Name.Variable, '$HOME'), (Token.Text, '\n')]
```

Same results on Python 2.

Seems like a bug in pygments.


Resolving patch:
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -182,7 +182,7 @@ def run(self):
     parallel = ['ipyparallel'],
     qtconsole = ['qtconsole'],
     doc = ['Sphinx>=1.3'],
-    test = ['nose>=0.10.1', 'requests', 'testpath'],
+    test = ['nose>=0.10.1', 'requests', 'testpath', 'pygments'],
     terminal = [],
     kernel = ['ipykernel'],
     nbformat = ['nbformat'],


Test patch:
diff --git a/IPython/lib/tests/test_lexers.py b/IPython/lib/tests/test_lexers.py
--- a/IPython/lib/tests/test_lexers.py
+++ b/IPython/lib/tests/test_lexers.py
@@ -5,6 +5,7 @@
 
 from unittest import TestCase
 from pygments.token import Token
+from pygments.lexers import BashLexer
 
 from .. import lexers
 
@@ -13,16 +14,14 @@ class TestLexers(TestCase):
     """Collection of lexers tests"""
     def setUp(self):
         self.lexer = lexers.IPythonLexer()
+        self.bash_lexer = BashLexer()
 
     def testIPythonLexer(self):
         fragment = '!echo $HOME\n'
         tokens = [
             (Token.Operator, '!'),
-            (Token.Name.Builtin, 'echo'),
-            (Token.Text, ' '),
-            (Token.Name.Variable, '$HOME'),
-            (Token.Text, '\n'),
         ]
+        tokens.extend(self.bash_lexer.get_tokens(fragment[1:]))
         self.assertEqual(tokens, list(self.lexer.get_tokens(fragment)))
 
         fragment_2 = '!' + fragment
Repository: ipython/ipython

Issue:
Output for semicolon-terminated lines with comments
cf https://github.com/JuliaLang/IJulia.jl/issues/109

The output of a semicolon-terminated line with comment is not suppressed in IPython.

```
b = 1
b; # foo
```

give `Out[13]: 1`

```
b = 1
b;
```

does not.

Havent found such and issue on our tracker.

 @takluyver you are the best with the input machinery and coroutines; Thoughts ?

(Because of the comment @stevengj in sus-cited issue, marking as prio-high, but won't  mind if priority decreased later, or not fixed)



Discussion:
the comma-end detection is probably just `rstrip().endswith(';')` rather than tokenizing. If anything, the comments over there point to the priority being low, not high.

Note that the problem is not actually fixed, just changed.  Now a `#` inside a string will confuse Python regarding whether it should produce output. For example:

```
'suppresses output incorrectly;#'
'incorrectly produces output#';
```

My feeling is that accidentally suppressing desired output (which is now possible) is worse than accidentally producing undesired output (which was possible, and is still possible).


Resolving patch:
diff --git a/IPython/core/displayhook.py b/IPython/core/displayhook.py
--- a/IPython/core/displayhook.py
+++ b/IPython/core/displayhook.py
@@ -96,7 +96,7 @@ def quiet(self):
         tokens = list(tokenize.generate_tokens(sio.readline))
 
         for token in reversed(tokens):
-            if token[0] in (tokenize.ENDMARKER, tokenize.COMMENT):
+            if token[0] in (tokenize.ENDMARKER, tokenize.NL, tokenize.NEWLINE, tokenize.COMMENT):
                 continue
             if (token[0] == tokenize.OP) and (token[1] == ';'):
                 return True


Test patch:
diff --git a/IPython/core/tests/test_displayhook.py b/IPython/core/tests/test_displayhook.py
--- a/IPython/core/tests/test_displayhook.py
+++ b/IPython/core/tests/test_displayhook.py
@@ -10,6 +10,10 @@ def test_output_displayed():
       
     with AssertPrints('2'):
         ip.run_cell('1+1 # comment with a semicolon;', store_history=True)
+
+    with AssertPrints('2'):
+        ip.run_cell('1+1\n#commented_out_function();', store_history=True)
+
       
 def test_output_quiet():
     """Checking to make sure that output is quiet"""
@@ -19,3 +23,6 @@ def test_output_quiet():
       
     with AssertNotPrints('2'):
         ip.run_cell('1+1; # comment with a semicolon', store_history=True)
+
+    with AssertNotPrints('2'):
+        ip.run_cell('1+1;\n#commented_out_function()', store_history=True)
Repository: ipython/ipython

Issue:
Update dependencies
with IPtyhon dropping gui_banner, this mean that IPython master require ipykernel > master (future 4.2 or alike)

we need to update dependency number in setup.py.



Discussion:
Doing this here would mean the `ipython[kernel]` package depending on `ipykernel>=4.3.0.dev0` (dev is required, since `1.0.dev < 1.0`). Since IPython itself doesn't depend on any version of ipykernel.

I'm not sure the breakage caused by removing unused keys is really greater than the benefit of their absence.

The problem is, if you update IPython without updating ipykernel, all your kernels are dying and it's hard to debug. 

ipykernel is incompatible with IPython master and 5.0

One the other solution is to release ipykernel soon, to make sure people are up to date before next upgrade of IPython.. 

A last solution is to reintroduve the gui_banner key to **not die** and remove it much later. 

If you're running from master, you're probably not installing the backwards-compatibility extras like `ipython[kernel]` anyway, so you wouldn't pick up that dependency. And I don't think we should add a regular install dependency on ipykernel, because IPython doesn't depend on ipykernel, and saying it does creates a circular dependency.

One of the consequences of splitting up the repos is that if you run from master, stuff will break sometimes when repos get out of sync. It should decrease over time as we decouple things, but when it happens, I think we have to live with it.


Resolving patch:
diff --git a/IPython/core/usage.py b/IPython/core/usage.py
--- a/IPython/core/usage.py
+++ b/IPython/core/usage.py
@@ -346,3 +346,10 @@
 ]
 
 default_banner = ''.join(default_banner_parts)
+
+# deprecated GUI banner
+
+default_gui_banner = '\n'.join([
+    'DEPRECATED: IPython.core.usage.default_gui_banner is deprecated and will be removed',
+    default_banner,
+])


Test patch:
Repository: ipython/ipython

Issue:
%matplotlib notebook broken with current matplotlib master
With current matplotlib master, executing %matplotlib notebook fails with an `AttributeError: module 'matplotlib.backends' has no attribute 'backend'`

Please find a notebook demonstrating this problem here: https://gist.github.com/ericdill/1bfdc12692aec09047bb

matplotlib/matplotlib#6013 is the PR that broke this.

Cross-posted at matplotlib/matplotlib#6092.

cc @tacaswell 



Discussion:

Resolving patch:
diff --git a/IPython/core/pylabtools.py b/IPython/core/pylabtools.py
--- a/IPython/core/pylabtools.py
+++ b/IPython/core/pylabtools.py
@@ -211,7 +211,7 @@ def select_figure_formats(shell, formats, **kwargs):
 
     [ f.pop(Figure, None) for f in shell.display_formatter.formatters.values() ]
 
-    if matplotlib.backends.backend.lower() == 'nbagg':
+    if matplotlib.get_backend().lower() == 'nbagg':
         formatter = shell.display_formatter.ipython_display_formatter
         formatter.for_type(Figure, _reshow_nbagg_figure)
 


Test patch:
Repository: ipython/ipython

Issue:
improve deprecation warnings in IPython/terminal/interactiveshell.py
warn on import, and add version since deprecation. 



Discussion:

Resolving patch:
diff --git a/IPython/terminal/interactiveshell.py b/IPython/terminal/interactiveshell.py
--- a/IPython/terminal/interactiveshell.py
+++ b/IPython/terminal/interactiveshell.py
@@ -9,10 +9,13 @@
 from IPython.utils.decorators import undoc
 from .ptshell import TerminalInteractiveShell as PromptToolkitShell
 
+warn("Since IPython 5.0 `IPython.terminal.interactiveshell` is deprecated in favor of `IPython.terminal.ptshell`.",
+      DeprecationWarning)
+
 @undoc
 class TerminalInteractiveShell(PromptToolkitShell):
     def __init__(self, *args, **kwargs):
-        warn("This is a deprecated alias for IPython.terminal.ptshell.TerminalInteractiveShell. "
+        warn("Since IPython 5.0 this is a deprecated alias for IPython.terminal.ptshell.TerminalInteractiveShell. "
              "The terminal interface of this class now uses prompt_toolkit instead of readline.",
              DeprecationWarning, stacklevel=2)
         PromptToolkitShell.__init__(self, *args, **kwargs)


Test patch:
Repository: ipython/ipython

Issue:
PTK completion: Close completion drop-down box
Completion drop-down box can not be closed with <kbd>Escape</kbd>. User will need to type something to close it, or move cursor back.

Suggestion: <kbd>Escape</kbd> should close completion drop-down box



Discussion:

Resolving patch:
diff --git a/IPython/terminal/ptshell.py b/IPython/terminal/ptshell.py
--- a/IPython/terminal/ptshell.py
+++ b/IPython/terminal/ptshell.py
@@ -14,7 +14,7 @@
 from traitlets import Bool, Unicode, Dict, Integer, observe, Instance, Type
 
 from prompt_toolkit.enums import DEFAULT_BUFFER, SEARCH_BUFFER, EditingMode
-from prompt_toolkit.filters import HasFocus, HasSelection, Condition, ViInsertMode, EmacsInsertMode, IsDone
+from prompt_toolkit.filters import HasFocus, HasSelection, Condition, ViInsertMode, EmacsInsertMode, IsDone, HasCompletions
 from prompt_toolkit.history import InMemoryHistory
 from prompt_toolkit.shortcuts import create_prompt_application, create_eventloop, create_prompt_layout
 from prompt_toolkit.interface import CommandLineInterface
@@ -199,9 +199,24 @@ def _(event):
             else:
                 b.insert_text('\n' + (' ' * (indent or 0)))
 
+        @kbmanager.registry.add_binding(Keys.ControlG, filter=(
+            HasFocus(DEFAULT_BUFFER) & HasCompletions()
+            ))
+        def _dismiss_completion(event):
+            b = event.current_buffer
+            if b.complete_state:
+                b.cancel_completion()
+
+
+
+
         @kbmanager.registry.add_binding(Keys.ControlC, filter=HasFocus(DEFAULT_BUFFER))
         def _reset_buffer(event):
-            event.current_buffer.reset()
+            b = event.current_buffer
+            if b.complete_state:
+                b.cancel_completion()
+            else:
+                b.reset()
 
         @kbmanager.registry.add_binding(Keys.ControlC, filter=HasFocus(SEARCH_BUFFER))
         def _reset_search_buffer(event):


Test patch:
Repository: ipython/ipython

Issue:
AssertionError on completion on 5.0.0b2
Constantly reproducible AssertionError on completion.

How to reproduce:
- start ipython
- type `import collect`
- press Tab key
- press Enter

Additional info:
- prompt_toolkit 1.0.0 (from PyPI)
- ipython 5.0.0b2 (from PyPI)
- [Crash_report_ipython.txt](https://github.com/ipython/ipython/files/304616/Crash_report_ipython.txt)



Discussion:

Resolving patch:
diff --git a/IPython/terminal/ptshell.py b/IPython/terminal/ptshell.py
--- a/IPython/terminal/ptshell.py
+++ b/IPython/terminal/ptshell.py
@@ -183,8 +183,9 @@ def _(event):
             d = b.document
 
             if b.complete_state:
-                cs = b.complete_state
-                b.apply_completion(cs.current_completion)
+                cc = b.complete_state.current_completion
+                if cc:
+                    b.apply_completion(cc)
                 return
 
             if not (d.on_last_line or d.cursor_position_row >= d.line_count


Test patch:
Repository: ipython/ipython

Issue:
Extra blank line needed in multi-line
Thanks for the all the fast fixes so far.   This is really minor, so feel free to punt, but it has been tripping me up a little.  In 5.0, if a function contains a return statement, it takes 1 extra line to close the multi-line block compared to previous behavior.  

Note that if that function (or more realistically, an `if` block) doesn't end in a `return`/`pass`, then the old behavior persists.  Let me know if these examples aren't clear.
#### 4.x

```
In [3]: def f(a):
   ...:     return 5
   ...:
```
#### 5.0b2

```
In [10]: def f(a):
    ...:     return 4
    ...:
    ...:

In [11]: def f(a):
    ...:     a = 5
    ...:
```



Discussion:
Yeah, I think I've also noticed that that logic is not quite right. We do something to dedent after a statement like `return`, `continue`, `break` or `pass` (because they typically end an indented block), and I guess that must be interfering. Thanks for filing the issue.

You can force submit with Esc-Enter. 
I don't think that should be a blocker for 5.0 though. Still we have plenty of time to fit it

I woulldn't be surprised if it's a pretty easy fix - I'll try to look into it next week if no-one beats me to it.


Resolving patch:
diff --git a/IPython/core/inputsplitter.py b/IPython/core/inputsplitter.py
--- a/IPython/core/inputsplitter.py
+++ b/IPython/core/inputsplitter.py
@@ -626,7 +626,6 @@ def push(self, lines):
 
         # We must ensure all input is pure unicode
         lines = cast_unicode(lines, self.encoding)
-        
         # ''.splitlines() --> [], but we need to push the empty line to transformers
         lines_list = lines.splitlines()
         if not lines_list:
diff --git a/IPython/terminal/ptshell.py b/IPython/terminal/ptshell.py
--- a/IPython/terminal/ptshell.py
+++ b/IPython/terminal/ptshell.py
@@ -195,7 +195,7 @@ def _(event):
                 b.newline()
                 return
 
-            status, indent = self.input_splitter.check_complete(d.text)
+            status, indent = self.input_splitter.check_complete(d.text + '\n')
 
             if (status != 'incomplete') and b.accept_action.is_returnable:
                 b.accept_action.validate_and_handle(event.cli, b)


Test patch:
Repository: ipython/ipython

Issue:
SymPy tests fail in IPython 5b3 
Run 

```
./bin/test ipython
```

from the SymPy repo with the IPython 5b3 beta installed. This is the test failure.

```
______________________________________________________________________________________________________________________________________________________________
_________________________________________ sympy/interactive/tests/test_ipythonprinting.py:test_print_builtin_option __________________________________________
  File "/users/aaronmeurer/documents/python/sympy/sympy/sympy/interactive/tests/test_ipythonprinting.py", line 66, in test_print_builtin_option
    raises(KeyError, lambda: app.user_ns['a'][0]['text/latex'])
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/utilities/pytest.py", line 81, in raises
    raise AssertionError("DID NOT RAISE")
AssertionError: DID NOT RAISE
```



Discussion:
On the case!


Resolving patch:
diff --git a/IPython/terminal/ptshell.py b/IPython/terminal/ptshell.py
--- a/IPython/terminal/ptshell.py
+++ b/IPython/terminal/ptshell.py
@@ -162,6 +162,11 @@ def init_term_title(self, change=None):
         else:
             toggle_set_term_title(False)
 
+    def init_display_formatter(self):
+        super(TerminalInteractiveShell, self).init_display_formatter()
+        # terminal only supports plain text
+        self.display_formatter.active_types = ['text/plain']
+
     def init_prompt_toolkit_cli(self):
         self._app = None
         if self.simple_prompt:


Test patch:
diff --git a/IPython/terminal/tests/test_interactivshell.py b/IPython/terminal/tests/test_interactivshell.py
--- a/IPython/terminal/tests/test_interactivshell.py
+++ b/IPython/terminal/tests/test_interactivshell.py
@@ -95,6 +95,11 @@ def test_inputtransformer_syntaxerror(self):
             ip.input_splitter.python_line_transforms.remove(transformer)
             ip.input_transformer_manager.python_line_transforms.remove(transformer)
 
+    def test_plain_text_only(self):
+        ip = get_ipython()
+        formatter = ip.display_formatter
+        assert formatter.active_types == ['text/plain']
+
 
 class SyntaxErrorTransformer(InputTransformer):
     def push(self, line):
Repository: ipython/ipython

Issue:
Init signature gone for builtins
#9335 seem to have broken some things in inspect, `Init signature` is sometime gone:

```
(rootenv)~/dev/ipython master$ ipython -c 'list?'
Docstring:
list() -> new empty list
list(iterable) -> new list initialized from iterable's items
Type:      type

(rootenv)~/dev/ipython master$ git checkout 4.2.0
...

(rootenv)~/dev/ipython (4.2.0)$ ipython -c 'list?'
Init signature: list(self, /, *args, **kwargs)
Docstring:
list() -> new empty list
list(iterable) -> new list initialized from iterable's items
Type:           type
```



Discussion:
ping @minrk 


Resolving patch:
diff --git a/IPython/core/oinspect.py b/IPython/core/oinspect.py
--- a/IPython/core/oinspect.py
+++ b/IPython/core/oinspect.py
@@ -848,20 +848,27 @@ def _info(self, obj, oname='', info=None, detail_level=0):
             except AttributeError:
                 init_def = None
 
-            if init_def:
-                out['init_definition'] = init_def
-
             # get the __init__ docstring
             try:
                 obj_init = obj.__init__
             except AttributeError:
                 init_ds = None
             else:
+                if init_def is None:
+                    # Get signature from init if top-level sig failed.
+                    # Can happen for built-in types (list, etc.).
+                    try:
+                        init_def = self._getdef(obj_init, oname)
+                    except AttributeError:
+                        pass
                 init_ds = getdoc(obj_init)
                 # Skip Python's auto-generated docstrings
                 if init_ds == _object_init_docstring:
                     init_ds = None
 
+            if init_def:
+                out['init_definition'] = init_def
+
             if init_ds:
                 out['init_docstring'] = init_ds
 


Test patch:
diff --git a/IPython/core/tests/test_oinspect.py b/IPython/core/tests/test_oinspect.py
--- a/IPython/core/tests/test_oinspect.py
+++ b/IPython/core/tests/test_oinspect.py
@@ -419,15 +419,34 @@ def test_pdef():
     def foo(): pass
     inspector.pdef(foo, 'foo')
 
+
 def test_pinfo_nonascii():
     # See gh-1177
     from . import nonascii2
     ip.user_ns['nonascii2'] = nonascii2
     ip._inspect('pinfo', 'nonascii2', detail_level=1)
 
+
 def test_pinfo_magic():
     with AssertPrints('Docstring:'):
         ip._inspect('pinfo', 'lsmagic', detail_level=0)
 
     with AssertPrints('Source:'):
         ip._inspect('pinfo', 'lsmagic', detail_level=1)
+
+
+def test_init_colors():
+    # ensure colors are not present in signature info
+    info = inspector.info(HasSignature)
+    init_def = info['init_definition']
+    nt.assert_not_in('[0m', init_def)
+
+
+def test_builtin_init():
+    info = inspector.info(list)
+    init_def = info['init_definition']
+    # Python < 3.4 can't get init definition from builtins,
+    # but still exercise the inspection in case of error-raising bugs.
+    if sys.version_info >= (3,4):
+        nt.assert_is_not_none(init_def)
+
Repository: ipython/ipython

Issue:
Notebook tooltip has extra newlines.
Make in less useful as it looses precious space with information.
Proably due the the mimebundle refactor.



Discussion:

Resolving patch:
diff --git a/IPython/core/oinspect.py b/IPython/core/oinspect.py
--- a/IPython/core/oinspect.py
+++ b/IPython/core/oinspect.py
@@ -603,6 +603,7 @@ def format_mime(self, bundle):
         _len = max(len(h) for h in heads)
 
         for head, body in zip(heads, bodies):
+            body = body.strip('\n')
             delim = '\n' if '\n' in body else ' '
             text += self.__head(head+':') + (_len - len(head))*' ' +delim + body +'\n'
 


Test patch:
Repository: ipython/ipython

Issue:
Keybord shortcut Documentation page does not render.
At least not on RTD, it works for me locally. 



Discussion:
Probably needs the autogen script to be run by this section:

https://github.com/ipython/ipython/blob/6f44adf605ed3e55fcbab07d3c0a007a4b6e4a94/docs/source/conf.py#L22-L36


Resolving patch:
diff --git a/docs/source/conf.py b/docs/source/conf.py
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -26,7 +26,7 @@
     tags.add('rtd')
 
     # RTD doesn't use the Makefile, so re-run autogen_{things}.py here.
-    for name in ('config', 'api', 'magics'):
+    for name in ('config', 'api', 'magics', 'shortcuts'):
         fname = 'autogen_{}.py'.format(name)
         fpath = os.path.abspath(os.path.join('..', fname))
         with open(fpath) as f:


Test patch:
Repository: ipython/ipython

Issue:
no tab completion in terminal when using debugger 
@Carreau I chatted with Brian Granger, who said I should bring this to your attention.

OS: Mac OS 10.10.5
python -V: Python 3.5.2 : Anaconda custom (x86_64)
ipython --version : 5.0.0
source of ipython: conda-forge build

When I am in the ipython terminal and using the debugger, tab completion does not work (i.e., I just get a tab).  This happened in the version of IPython I had before installing this a few minutes ago, so I wonder if it's something wrong with the conda-forge build?

I'm at Scipy, so if someone wants a demo of the problem, I'm happy to do that.



Discussion:
Are you at the sprints ?

No, I won't be, but I'm here through Friday evening.

Ok, we can try to find some time. 

@Carreau How about between the keynote and talks today?  I'm free.

Sorry overslept.. missed the keynote.

I'm up we can meet whenever.

On Thu, Jul 14, 2016 at 9:50 AM, Mike Hearne notifications@github.com
wrote:

> @Carreau https://github.com/Carreau How about between the keynote and
> talks today? I'm free.
> 
> —
> You are receiving this because you were mentioned.
> Reply to this email directly, view it on GitHub
> https://github.com/ipython/ipython/issues/9759#issuecomment-232688270,
> or mute the thread
> https://github.com/notifications/unsubscribe/AAUez0rRHX8GYyXL6QlRR_clNaImbF1aks5qVkzPgaJpZM4JL020
> .

@Carreau are you free at the next break  (3-3:30?)  Maybe outside the ballroom at one of the small tables?

@Carreau or after the lightning talks and before social stuff?  Same location.

Oh, I hate GitHub / Gmail  I never received your pings they got marked as read automatically. Sorry about that. 
Hope you enjoyed the conference .. i'll try to investigate. 

I'm glad you had this little chat here but the problem is not resolved ;)

How are you entering the debugger?

If you're using ipdb, see gotcha/ipdb#105 . If you're importing something from `IPython.core.debugger`, see #9781. If it's something else, furnish details and we'll look into it.

In the terminal, I'm doing "run -d script.py".  I guess I'm not sure if that's ipdb or not, but it's how I always do my debugging.


Resolving patch:
diff --git a/IPython/core/magics/execution.py b/IPython/core/magics/execution.py
--- a/IPython/core/magics/execution.py
+++ b/IPython/core/magics/execution.py
@@ -28,7 +28,7 @@
     except ImportError:
         profile = pstats = None
 
-from IPython.core import debugger, oinspect
+from IPython.core import oinspect
 from IPython.core import magic_arguments
 from IPython.core import page
 from IPython.core.error import UsageError
@@ -801,7 +801,11 @@ def _run_with_debugger(self, code, code_ns, filename=None,
             If the break point given by `bp_line` is not valid.
 
         """
-        deb = debugger.Pdb()
+        deb = self.shell.InteractiveTB.pdb
+        if not deb:
+            self.shell.InteractiveTB.pdb = self.shell.InteractiveTB.debugger_cls()
+            deb = self.shell.InteractiveTB.pdb
+
         # reset Breakpoint state, which is moronically kept
         # in a class
         bdb.Breakpoint.next = 1


Test patch: