Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-pudb for openSUSE:Factory 
checked in at 2022-11-11 14:36:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pudb (Old)
 and      /work/SRC/openSUSE:Factory/.python-pudb.new.1597 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-pudb"

Fri Nov 11 14:36:48 2022 rev:10 rq:1035185 version:2022.1.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pudb/python-pudb.changes  2022-10-14 
15:42:06.843875795 +0200
+++ /work/SRC/openSUSE:Factory/.python-pudb.new.1597/python-pudb.changes        
2022-11-11 14:36:54.526417466 +0100
@@ -1,0 +2,25 @@
+Wed Nov  9 17:18:38 UTC 2022 - Yogalakshmi Arunachalam <yarunacha...@suse.com>
+
+- Update to version 2022.1.3 
+  * Improve sidebar help
+  * Bump version to 2022.1.3
+  * Remove reference to py.test in favor of pytest
+  * Bump versions of various github actions components
+  * Fix the midnight theme (#508)
+  * Remove old reference to master
+  * Implement "--continue" CLI arg (alias "-c") (#559)
+  * Save cwd and use for restart
+  * Fix setting of sys.path from name of script (closes gh-557)
+  * Fix zsh completion of `--pre-run` (#554)
+  * Support more shells by shtab
+  * Ignore B024 for abstract base classes with in var_view
+  * Add zsh completion support for `--pre-run`
+  * Generate zsh completion script automatically
+  * Fix test_executable_lines for Python 3.11
+  * Fix critical bug when re-entering IPython 8.0.0 (and later) external shell 
(#533)
+  * Get terminal size using os.get_terminal_size() (#536)
+  * Close tty file when dne querying terminal info
+  * Close history file after reading
+  * makedirs(exist_ok=True) during config path finding
+
+-------------------------------------------------------------------

Old:
----
  pudb-2022.1.2.tar.gz

New:
----
  pudb-2022.1.3.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-pudb.spec ++++++
--- /var/tmp/diff_new_pack.DJNMa8/_old  2022-11-11 14:36:54.982419701 +0100
+++ /var/tmp/diff_new_pack.DJNMa8/_new  2022-11-11 14:36:54.986419720 +0100
@@ -22,7 +22,7 @@
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 %define skip_python2 1
 Name:           python-pudb
-Version:        2022.1.2
+Version:        2022.1.3
 Release:        0
 Summary:        A full-screen, console-based Python debugger
 License:        MIT

++++++ pudb-2022.1.2.tar.gz -> pudb-2022.1.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pudb-2022.1.2/PKG-INFO new/pudb-2022.1.3/PKG-INFO
--- old/pudb-2022.1.2/PKG-INFO  2022-07-19 16:26:34.832047000 +0200
+++ new/pudb-2022.1.3/PKG-INFO  2022-11-03 17:35:56.721594300 +0100
@@ -1,6 +1,6 @@
-Metadata-Version: 1.2
+Metadata-Version: 2.1
 Name: pudb
-Version: 2022.1.2
+Version: 2022.1.3
 Summary: A full-screen, console-based Python debugger
 Home-page: UNKNOWN
 Author: Andreas Kloeckner
@@ -115,3 +115,4 @@
 Classifier: Topic :: Terminals
 Classifier: Topic :: Utilities
 Requires-Python: ~=3.6
+Provides-Extra: completion
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pudb-2022.1.2/examples/theme.py 
new/pudb-2022.1.3/examples/theme.py
--- old/pudb-2022.1.2/examples/theme.py 2021-12-28 18:43:14.000000000 +0100
+++ new/pudb-2022.1.3/examples/theme.py 2022-10-14 21:05:40.000000000 +0200
@@ -15,7 +15,7 @@
 # "setting_name": (foreground_color, background_color),
 
 # See pudb/theme.py
-# (https://github.com/inducer/pudb/blob/master/pudb/theme.py) to see what keys
+# (https://github.com/inducer/pudb/blob/main/pudb/theme.py) to see what keys
 # there are.
 
 # Note, be sure to test your theme in both curses and raw mode (see the bottom
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pudb-2022.1.2/pudb/__init__.py 
new/pudb-2022.1.3/pudb/__init__.py
--- old/pudb-2022.1.2/pudb/__init__.py  2022-07-19 16:25:34.000000000 +0200
+++ new/pudb-2022.1.3/pudb/__init__.py  2022-11-03 17:32:54.000000000 +0100
@@ -28,7 +28,7 @@
 import sys
 
 
-NUM_VERSION = (2022, 1, 2)
+NUM_VERSION = (2022, 1, 3)
 VERSION = ".".join(str(nv) for nv in NUM_VERSION)
 __version__ = VERSION
 
@@ -80,6 +80,7 @@
             kwargs.setdefault("stdin", tty_file)
             kwargs.setdefault("stdout", tty_file)
             kwargs.setdefault("term_size", term_size)
+            tty_file.close()
 
         from pudb.debugger import Debugger
         dbg = Debugger(**kwargs)
@@ -105,8 +106,11 @@
 
 
 def runscript(mainpyfile, args=None, pre_run="", steal_output=False,
-              run_as_module=False):
-    dbg = _get_debugger(steal_output=steal_output)
+              _continue_at_start=False, run_as_module=False):
+    dbg = _get_debugger(
+        steal_output=steal_output,
+        _continue_at_start=_continue_at_start,
+    )
 
     # 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
@@ -122,11 +126,17 @@
             sys.argv = [mainpyfile] + args
 
     # replace pudb's dir with script's dir in front of module search path.
-    from os.path import dirname
+    from pathlib import Path
     prev_sys_path = sys.path[:]
-    sys.path[0] = dirname(mainpyfile)
+    sys.path[0] = str(Path(mainpyfile).resolve().parent)
+
+    import os
+    cwd = os.getcwd()
 
     while True:
+        # Script may have changed directory. Restore cwd before restart.
+        os.chdir(cwd)
+
         if pre_run:
             from subprocess import call
             retcode = call(pre_run, close_fds=True, shell=True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pudb-2022.1.2/pudb/_shtab.py 
new/pudb-2022.1.3/pudb/_shtab.py
--- old/pudb-2022.1.2/pudb/_shtab.py    1970-01-01 01:00:00.000000000 +0100
+++ new/pudb-2022.1.3/pudb/_shtab.py    2022-10-14 21:05:35.000000000 +0200
@@ -0,0 +1,8 @@
+FILE = None
+DIRECTORY = DIR = None
+
+
+def add_argument_to(parser, *args, **kwargs):
+    from argparse import Action
+    Action.complete = None
+    return parser
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pudb-2022.1.2/pudb/debugger.py 
new/pudb-2022.1.3/pudb/debugger.py
--- old/pudb-2022.1.2/pudb/debugger.py  2022-07-19 16:25:19.000000000 +0200
+++ new/pudb-2022.1.3/pudb/debugger.py  2022-11-03 17:35:14.000000000 +0100
@@ -183,7 +183,7 @@
     _current_debugger = []
 
     def __init__(self, stdin=None, stdout=None, term_size=None, 
steal_output=False,
-            **kwargs):
+                 _continue_at_start=False, **kwargs):
 
         if Debugger._current_debugger:
             raise ValueError("a Debugger instance already exists")
@@ -193,6 +193,7 @@
         bdb.Bdb.__init__(self, **kwargs)
         self.ui = DebuggerUI(self, stdin=stdin, stdout=stdout, 
term_size=term_size)
         self.steal_output = steal_output
+        self._continue_at_start__setting = _continue_at_start
 
         self.setup_state()
 
@@ -304,6 +305,7 @@
         self.bottom_frame = None
         self.mainpyfile = ""
         self._wait_for_mainpyfile = False
+        self._continue_at_start = self._continue_at_start__setting
         self.current_bp = None
         self.post_mortem = False
         # Mapping of (filename, lineno) to bool. If True, will stop on the
@@ -442,12 +444,8 @@
         if "__exc_tuple__" in frame.f_locals:
             del frame.f_locals["__exc_tuple__"]
 
-        if self._wait_for_mainpyfile:
-            if (self.mainpyfile != self.canonic(frame.f_code.co_filename)
-                    or frame.f_lineno <= 0):
-                return
-            self._wait_for_mainpyfile = False
-            self.bottom_frame = frame
+        if self._waiting_for_mainpyfile(frame):
+            return
 
         if self.get_break(self.canonic(frame.f_code.co_filename), 
frame.f_lineno):
             self.current_bp = (
@@ -466,15 +464,24 @@
         if frame.f_code.co_name != "<module>":
             frame.f_locals["__return__"] = return_value
 
+        if self._waiting_for_mainpyfile(frame):
+            return
+
+        if "__exc_tuple__" not in frame.f_locals:
+            self.interaction(frame)
+
+    def _waiting_for_mainpyfile(self, frame):
         if self._wait_for_mainpyfile:
             if (self.mainpyfile != self.canonic(frame.f_code.co_filename)
                     or frame.f_lineno <= 0):
-                return
+                return True
             self._wait_for_mainpyfile = False
             self.bottom_frame = frame
-
-        if "__exc_tuple__" not in frame.f_locals:
-            self.interaction(frame)
+            if self._continue_at_start:
+                self._continue_at_start = False
+                self.set_continue()
+                return True
+        return False
 
     def user_exception(self, frame, exc_tuple):
         """This function is called if an exception occurs,
@@ -506,7 +513,7 @@
         # events depends on python version). So we take special measures to
         # avoid stopping before we reach the main script (see user_line and
         # user_call for details).
-        self._wait_for_mainpyfile = 1
+        self._wait_for_mainpyfile = True
         self.mainpyfile = self.canonic(filename)
         statement = 'exec(compile(open("{}").read(), "{}", "exec"))'.format(
                 filename, filename)
@@ -842,7 +849,8 @@
 
             try:
                 # Load global history if present
-                return open(path, "r").read().splitlines()
+                with open(path, "r") as histfile:
+                    return histfile.read().splitlines()
             except FileNotFoundError:
                 return []
 
@@ -2442,7 +2450,7 @@
                 self.message("Package 'pygments' not found. "
                         "Syntax highlighting disabled.")
 
-        WELCOME_LEVEL = "e043"  # noqa
+        WELCOME_LEVEL = "e044"  # noqa
         if CONFIG["seen_welcome"] < WELCOME_LEVEL:
             CONFIG["seen_welcome"] = WELCOME_LEVEL
             from pudb import VERSION
@@ -2459,6 +2467,12 @@
                     "(invoked by hitting '?' after this message) should get 
you "
                     "on your way.\n"
 
+                    "\nChanges in version 2022.1.3:\n\n"
+                    "- Fix finding executable lines for Python 3.11 (Lumir 
Balhar)\n"
+                    "- Fix the midnight theme (Aaron Meurer)\n"
+                    "- Add a --continue flag (Michael van der Kamp)\n"
+                    "- Various fixes\n"
+
                     "\nChanges in version 2022.1.2:\n\n"
                     "- Various fixes\n"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pudb-2022.1.2/pudb/forked.py 
new/pudb-2022.1.3/pudb/forked.py
--- old/pudb-2022.1.2/pudb/forked.py    2021-03-26 23:10:38.000000000 +0100
+++ new/pudb-2022.1.3/pudb/forked.py    2022-10-14 21:05:35.000000000 +0200
@@ -1,7 +1,5 @@
 import sys
-import fcntl
-import termios
-import struct
+import os
 
 from pudb.debugger import Debugger
 
@@ -18,11 +16,8 @@
     if term_size is None:
         try:
             # Getting terminal size
-            s = struct.unpack(
-                "hh",
-                fcntl.ioctl(1, termios.TIOCGWINSZ, "1234"),
-            )
-            term_size = (s[1], s[0])
+            s = os.get_terminal_size()
+            term_size = (s.columns, s.lines)
         except Exception:
             term_size = (80, 24)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pudb-2022.1.2/pudb/remote.py 
new/pudb-2022.1.3/pudb/remote.py
--- old/pudb-2022.1.2/pudb/remote.py    2022-01-07 18:44:27.000000000 +0100
+++ new/pudb-2022.1.3/pudb/remote.py    2022-10-14 21:05:35.000000000 +0200
@@ -40,9 +40,6 @@
 import os
 import socket
 import sys
-import fcntl
-import termios
-import struct
 import atexit
 from typing import Callable, Any
 
@@ -118,8 +115,8 @@
 
         if term_size is None:
             try:
-                s = struct.unpack("hh", fcntl.ioctl(1, termios.TIOCGWINSZ, 
"1234"))
-                term_size = (s[1], s[0])
+                s = os.get_terminal_size()
+                term_size = (s.columns, s.lines)
             except Exception:
                 term_size = (80, 24)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pudb-2022.1.2/pudb/run.py 
new/pudb-2022.1.3/pudb/run.py
--- old/pudb-2022.1.2/pudb/run.py       2022-07-19 16:08:13.000000000 +0200
+++ new/pudb-2022.1.3/pudb/run.py       2022-10-14 21:05:40.000000000 +0200
@@ -1,21 +1,45 @@
-def main():
+COMMAND = {"zsh": "{_command_names -e}"}
+PREAMBLE = {
+    "zsh": """\
+_script_args() {
+  _arguments -S -s '(-)1:script_args:_files -g "*.py"' '*: :_files'
+}
+""",
+}
+SCRIPT_ARGS = {"zsh": "_script_args"}
+
+
+def get_argparse_parser():
     import os
     import sys
     import argparse
+    try:
+        import shtab
+    except ImportError:
+        from . import _shtab as shtab
 
     from pudb import VERSION
 
-    version_info = "pudb:%(prog)s v" + VERSION
+    version_info = "%(prog)s v" + VERSION
 
     if sys.argv[1:] == ["-v"]:
-        print(version_info % {"prog": os.path.basename(__file__)})
+        print(version_info % {"prog": "pudb"})
         sys.exit(os.EX_OK)
 
     parser = argparse.ArgumentParser(
+        "pudb",
         usage="%(prog)s [options] [-m] SCRIPT-OR-MODULE-TO-RUN [SCRIPT_ARGS]",
         epilog=version_info
     )
-    parser.add_argument("-s", "--steal-output", action="store_true"),
+    shtab.add_argument_to(parser, preamble=PREAMBLE)
+    # dest="_continue_at_start" needed as "continue" is a python keyword
+    parser.add_argument(
+        "-c", "--continue",
+        action="store_true",
+        dest="_continue_at_start",
+        help="Let the script run until an exception occurs or a breakpoint is 
hit",
+    )
+    parser.add_argument("-s", "--steal-output", action="store_true")
 
     # note: we're implementing -m as a boolean flag, mimicking pdb's behavior,
     # and makes it possible without much fuss to support cases like:
@@ -25,13 +49,22 @@
                         help="Debug as module or package instead of as a 
script")
 
     parser.add_argument("-le", "--log-errors", nargs=1, metavar="FILE",
-                        help="Log internal errors to the given file")
+                        help="Log internal errors to the given file"
+                        ).complete = shtab.FILE
     parser.add_argument("--pre-run", metavar="COMMAND",
                         help="Run command before each program run",
-                        default="")
+                        default="").complete = COMMAND
     parser.add_argument("--version", action="version", version=version_info)
     parser.add_argument("script_args", nargs=argparse.REMAINDER,
-                        help="Arguments to pass to script or module")
+                        help="Arguments to pass to script or module"
+                        ).complete = SCRIPT_ARGS
+    return parser
+
+
+def main(**kwargs):
+    import sys
+
+    parser = get_argparse_parser()
 
     options = parser.parse_args()
     args = options.script_args
@@ -43,6 +76,7 @@
     options_kwargs = {
         "pre_run": options.pre_run,
         "steal_output": options.steal_output,
+        "_continue_at_start": options._continue_at_start,
     }
 
     if len(args) < 1:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pudb-2022.1.2/pudb/settings.py 
new/pudb-2022.1.3/pudb/settings.py
--- old/pudb-2022.1.2/pudb/settings.py  2022-07-19 16:24:26.000000000 +0200
+++ new/pudb-2022.1.3/pudb/settings.py  2022-10-14 21:05:35.000000000 +0200
@@ -44,12 +44,12 @@
 
 
 def get_save_config_path():
+    # This may not raise, as it is called during import.
     if not XDG_CONFIG_HOME:
         return None
 
     path = os.path.join(XDG_CONFIG_HOME, XDG_CONF_RESOURCE)
-    if not os.path.isdir(path):
-        os.makedirs(path, mode=0o700)
+    os.makedirs(path, mode=0o700, exist_ok=True)
 
     return path
 
@@ -65,6 +65,8 @@
 
 
 def load_config():
+    # This may not raise, as it is called during import.
+
     # Only ever do this once
     if _config_[0] is not None:
         return _config_[0]
@@ -136,6 +138,8 @@
 
 
 def save_config(conf_dict):
+    # This may not raise, as it is called during import.
+
     from os.path import join
 
     cparser = ConfigParser()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pudb-2022.1.2/pudb/shell.py 
new/pudb-2022.1.3/pudb/shell.py
--- old/pudb-2022.1.2/pudb/shell.py     2022-05-27 01:41:41.000000000 +0200
+++ new/pudb-2022.1.3/pudb/shell.py     2022-10-14 21:05:35.000000000 +0200
@@ -220,7 +220,17 @@
         args.append(banner)
     else:
         print(banner)
+
+    # XXX Quick and dirty way to fix issues with IPython 8.0.0+, introduced
+    # by commit 08d54c0e367b535fd88aca5273fd09e5e70d08f8.
+    # Setting _atexit_once_called = True will prevent call to
+    # IPython.core.interactiveshell.InteractiveShell._atexit_once() from inside
+    # IPython.terminal.interactiveshell.TerminalInteractiveShell.mainloop()
+    # This allows us to repeatedly re-call mainloop() and the whole
+    # run_ipython_shell_v11() function
+    shell._atexit_once_called = True
     shell.mainloop(*args)
+    del shell._atexit_once_called
 
     # Restore originating namespace
     _update_ipython_ns(shell, old_globals, old_locals)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pudb-2022.1.2/pudb/theme.py 
new/pudb-2022.1.3/pudb/theme.py
--- old/pudb-2022.1.2/pudb/theme.py     2022-02-16 23:58:51.000000000 +0100
+++ new/pudb-2022.1.3/pudb/theme.py     2022-10-14 21:05:40.000000000 +0200
@@ -469,57 +469,90 @@
         palette_dict = {
             # {{{ base styles
             "background": ("black", "light gray"),
-            "selectable": ("light gray", "black"),
-            "focused selectable": ("black", "light green"),
-            "hotkey": (add_setting("black", "underline"), "light gray"),
-            "highlighted": ("black", "brown"),
+            "selectable": ("white", "black"),
+            "focused selectable": ("white", "dark blue"),
+            "hotkey": (add_setting("black", "underline, italics"), "light 
gray"),
+            "highlighted": ("black", "dark green"),
             # }}}
             # {{{ general ui
-            "focused sidebar": (add_setting("black", "bold"), "light gray"),
-            "group head": (add_setting("black", "bold"), "light gray"),
-            "warning": (add_setting("light red", "bold"), "black"),
-            "header warning": (add_setting("light red", "bold"), "light gray"),
-            "dialog title": ("black", "dark green"),
-            "fixed value": ("white", "dark gray"),
+            "input": ("light green", "black"),
+            "focused input": ("light green", "black"),
+            "warning": (add_setting("white", "bold"), "dark red"),
+            "dialog title": (add_setting("white", "bold"), "dark blue"),
+            "group head": (add_setting("dark blue", "bold"), "light gray"),
+            "button": (add_setting("white", "bold"), "dark blue"),
+            "focused button": ("white", "black"),
+            "focused sidebar": ("black", "white"),
+            "value": (add_setting("yellow", "bold"), "dark blue"),
             # }}}
             # {{{ source view
-            "current source": ("black", "dark cyan"),
-            "breakpoint source": ("white", "dark gray"),
-            "line number": (add_setting("dark gray", "bold"), "black"),
-            "breakpoint marker": (
-                add_setting("light red", "bold"), "black"),
-            "current line marker": ("dark cyan", "black"),
+            "source": ("light green", "black"),
+            "highlighted source": ("black", "dark green"),
+            "current source": ("black", "brown"),
+            "current focused source": (add_setting("yellow", "bold"), "dark 
blue"),
+            "breakpoint source": (add_setting("yellow", "bold"), "dark red"),
+            "current breakpoint source": ("black", "dark red"),
+
+            "line number": ("light gray", "black"),
+            "current line marker": ("dark red", "black"),
+            "breakpoint marker": ("dark red", "black"),
             # }}}
             # {{{ sidebar
-            "sidebar two": ("dark green", "black"),
-            "sidebar three": ("yellow", "black"),
-            "focused sidebar three": ("dark gray", "light green"),
+            "sidebar two": ("light blue", "black"),
+            "sidebar three": ("light cyan", "black"),
             # }}}
             # {{{ variables view
-            "return label": ("black", "dark green"),
-            "focused return label": ("black", "dark green"),
+            "return label": ("white", "dark blue"),
+            "return value": ("black", "dark cyan"),
+            "focused return label": ("light gray", "dark blue"),
             # }}}
             # {{{ stack
-            "current frame name": (
-                add_setting("light gray", "bold"), "black"),
+            "current frame name": (add_setting("white", "bold"), "black"),
+            "current frame class": (add_setting("light blue", "bold"), 
"black"),
+            "current frame location": (add_setting("light cyan", "bold"), 
"black"),
+
+            "focused current frame name": (
+                add_setting("white", "bold"), "dark blue"),
+            "focused current frame class": (
+                add_setting("white", "bold"), "dark blue"),
+            "focused current frame location": (
+                add_setting("white", "bold"), "dark blue"),
+            # }}}
+            # {{{ breakpoints view
+            "breakpoint": ("white", "black"),
+            "disabled breakpoint": ("dark gray", "black"),
+            "focused disabled breakpoint": ("light gray", "dark blue"),
+            "current breakpoint": (add_setting("white", "bold"), "black"),
+            "disabled current breakpoint": (
+                add_setting("dark gray", "bold"), "black"),
+            "focused current breakpoint": (
+                add_setting("white", "bold"), "dark blue"),
+            "focused disabled current breakpoint": (
+                add_setting("light gray", "bold"), "dark blue"),
             # }}}
             # {{{ shell
-            "command line prompt": (
-                add_setting("white", "bold"), "black"),
-            "command line output": ("yellow", "black"),
-            "command line input": (
-                add_setting("white", "bold"), "black"),
+            "command line edit": ("white", "black"),
+            "command line prompt": (add_setting("white", "bold"), "black"),
+
+            "command line input": ("white", "black"),
+            "command line error": (add_setting("light red", "bold"), "black"),
+
+            "command line clear button": (add_setting("white", "bold"), 
"black"),
+            "command line focused button": ("white", "dark blue"),
             # }}}
             # {{{ Code syntax
             "keyword": ("dark magenta", "black"),
-            "keyword2": (add_setting("light magenta", "bold"), "black"),
-            "pseudo": ("dark magenta", "black"),
-            "function": (add_setting("light cyan", "bold"), "black"),
-            "builtin": ("dark cyan", "black"),
-            "literal": (add_setting("light blue", "bold"), "black"),
-            "string": ("light red", "black"),
-            "exception": (add_setting("light red", "bold"), "black"),
-            "comment": ("dark green", "black"),
+            "operator": ("dark green", "black"),
+            "pseudo": ("light magenta", "black"),
+            "function": (add_setting("light blue", "bold"), "black"),
+            "builtin": ("dark gray", "black"),
+            "literal": ("dark cyan", "black"),
+            "string": ("dark red", "black"),
+            "docstring": ("yellow", "black"),
+            "backtick": ("dark green", "black"),
+            "punctuation": ("white", "black"),
+            "comment": ("white", "black"),
+            "exception": ("dark green", "black"),
             # }}}
         }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pudb-2022.1.2/pudb/var_view.py 
new/pudb-2022.1.3/pudb/var_view.py
--- old/pudb-2022.1.2/pudb/var_view.py  2022-05-27 00:22:12.000000000 +0200
+++ new/pudb-2022.1.3/pudb/var_view.py  2022-10-14 21:05:35.000000000 +0200
@@ -47,7 +47,7 @@
 
 # {{{ abstract base classes for containers
 
-class PudbCollection(ABC):
+class PudbCollection(ABC):  # noqa: B024
     @classmethod
     def __subclasshook__(cls, c):
         if cls is PudbCollection:
@@ -80,7 +80,7 @@
         return len(collection)
 
 
-class PudbSequence(ABC):
+class PudbSequence(ABC):  # noqa: B024
     @classmethod
     def __subclasshook__(cls, c):
         if cls is PudbSequence:
@@ -113,7 +113,7 @@
         return len(sequence)
 
 
-class PudbMapping(ABC):
+class PudbMapping(ABC):  # noqa: B024
     @classmethod
     def __subclasshook__(cls, c):
         if cls is PudbMapping:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pudb-2022.1.2/pudb.egg-info/PKG-INFO 
new/pudb-2022.1.3/pudb.egg-info/PKG-INFO
--- old/pudb-2022.1.2/pudb.egg-info/PKG-INFO    2022-07-19 16:26:34.000000000 
+0200
+++ new/pudb-2022.1.3/pudb.egg-info/PKG-INFO    2022-11-03 17:35:56.000000000 
+0100
@@ -1,6 +1,6 @@
-Metadata-Version: 1.2
+Metadata-Version: 2.1
 Name: pudb
-Version: 2022.1.2
+Version: 2022.1.3
 Summary: A full-screen, console-based Python debugger
 Home-page: UNKNOWN
 Author: Andreas Kloeckner
@@ -115,3 +115,4 @@
 Classifier: Topic :: Terminals
 Classifier: Topic :: Utilities
 Requires-Python: ~=3.6
+Provides-Extra: completion
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pudb-2022.1.2/pudb.egg-info/SOURCES.txt 
new/pudb-2022.1.3/pudb.egg-info/SOURCES.txt
--- old/pudb-2022.1.2/pudb.egg-info/SOURCES.txt 2022-07-19 16:26:34.000000000 
+0200
+++ new/pudb-2022.1.3/pudb.egg-info/SOURCES.txt 2022-11-03 17:35:56.000000000 
+0100
@@ -25,6 +25,7 @@
 manual-tests/test-postmortem.py
 pudb/__init__.py
 pudb/__main__.py
+pudb/_shtab.py
 pudb/b.py
 pudb/debugger.py
 pudb/forked.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pudb-2022.1.2/pudb.egg-info/entry_points.txt 
new/pudb-2022.1.3/pudb.egg-info/entry_points.txt
--- old/pudb-2022.1.2/pudb.egg-info/entry_points.txt    2022-07-19 
16:26:34.000000000 +0200
+++ new/pudb-2022.1.3/pudb.egg-info/entry_points.txt    2022-11-03 
17:35:56.000000000 +0100
@@ -1,5 +1,5 @@
 [console_scripts]
-pudb3 = pudb.run:main
+pudb = pudb.run:main
 
 [gui_script]
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pudb-2022.1.2/pudb.egg-info/requires.txt 
new/pudb-2022.1.3/pudb.egg-info/requires.txt
--- old/pudb-2022.1.2/pudb.egg-info/requires.txt        2022-07-19 
16:26:34.000000000 +0200
+++ new/pudb-2022.1.3/pudb.egg-info/requires.txt        2022-11-03 
17:35:56.000000000 +0100
@@ -6,3 +6,6 @@
 
 [:python_version < "3.7"]
 dataclasses>=0.7
+
+[completion]
+shtab
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pudb-2022.1.2/setup.py new/pudb-2022.1.3/setup.py
--- old/pudb-2022.1.2/setup.py  2022-02-16 23:57:06.000000000 +0100
+++ new/pudb-2022.1.3/setup.py  2022-10-14 21:05:35.000000000 +0200
@@ -3,8 +3,6 @@
 from setuptools import setup
 from pudb import VERSION
 
-import sys
-
 try:
     readme = open("README.rst")
     long_description = str(readme.read())
@@ -27,6 +25,7 @@
         "packaging>=20.0",
         "dataclasses>=0.7;python_version<'3.7'",
     ],
+    extras_require={"completion": ["shtab"]},
     test_requires=[
         "pytest>=2",
         "pytest-mock",
@@ -54,7 +53,7 @@
     entry_points={
         "console_scripts": [
             # Deprecated. Should really use python -m pudb.
-            "pudb3 = pudb.run:main",
+            "pudb = pudb.run:main",
             ],
         "gui_script": [],
     },
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pudb-2022.1.2/test/test_lowlevel.py 
new/pudb-2022.1.3/test/test_lowlevel.py
--- old/pudb-2022.1.2/test/test_lowlevel.py     2021-03-26 23:10:38.000000000 
+0100
+++ new/pudb-2022.1.3/test/test_lowlevel.py     2022-10-14 21:05:35.000000000 
+0200
@@ -1,3 +1,5 @@
+import sys
+
 from pudb.lowlevel import detect_encoding, decode_lines
 
 
@@ -76,20 +78,30 @@
 
         main()
         """
+    expected = {1, 2, 3, 4, 6, 8}
+    if sys.version_info >= (3, 11):
+        # See https://github.com/python/cpython/pull/94562 and
+        # https://peps.python.org/pep-0626/
+        expected |= {0}
 
-    assert get_exec_lines(test_code) == {1, 2, 3, 4, 6, 8}
+    assert get_exec_lines(test_code) == expected
 
     test_code = "a = 3*5\n" + 333 * "\n" + "b = 15"
-    assert get_exec_lines(test_code) == {
+    expected = {
         1,
         128,  # bogus,
         255,  # bogus,
         335
-        }
+    }
+    if sys.version_info >= (3, 11):
+        # See https://github.com/python/cpython/pull/94562 and
+        # https://peps.python.org/pep-0626/
+        expected |= {0}
+
+    assert get_exec_lines(test_code) == expected
 
 
 if __name__ == "__main__":
-    import sys
     if len(sys.argv) > 1:
         exec(sys.argv[1])
     else:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pudb-2022.1.2/test/test_make_canvas.py 
new/pudb-2022.1.3/test/test_make_canvas.py
--- old/pudb-2022.1.2/test/test_make_canvas.py  2021-03-26 23:10:38.000000000 
+0100
+++ new/pudb-2022.1.3/test/test_make_canvas.py  2022-11-03 17:05:40.000000000 
+0100
@@ -67,5 +67,5 @@
     if len(sys.argv) > 1:
         exec(sys.argv[1])
     else:
-        from py.test.cmdline import main
+        from pytest import main
         main([__file__])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pudb-2022.1.2/test/test_run.py 
new/pudb-2022.1.3/test/test_run.py
--- old/pudb-2022.1.2/test/test_run.py  2022-07-19 16:08:13.000000000 +0200
+++ new/pudb-2022.1.3/test/test_run.py  2022-10-14 21:05:35.000000000 +0200
@@ -30,7 +30,7 @@
 
     captured = capsys.readouterr()
 
-    assert "pudb:run.py v" in captured.out
+    assert "pudb v" in captured.out
 
 
 def test_main_v_with_args(capsys, mocker):

Reply via email to