Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package chirp for openSUSE:Factory checked 
in at 2025-05-03 20:59:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/chirp (Old)
 and      /work/SRC/openSUSE:Factory/.chirp.new.30101 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "chirp"

Sat May  3 20:59:25 2025 rev:24 rq:1274106 version:20250502

Changes:
--------
--- /work/SRC/openSUSE:Factory/chirp/chirp.changes      2025-04-26 
22:26:25.645035094 +0200
+++ /work/SRC/openSUSE:Factory/.chirp.new.30101/chirp.changes   2025-05-03 
21:01:43.636551311 +0200
@@ -2 +2,5 @@
-Sat Apr 26 10:26:57 UTC 2025 - Andreas Stieger <andreas.stie...@gmx.de>
+Sat May  3 07:46:01 UTC 2025 - Andreas Stieger <andreas.stie...@gmx.de>
+
+- Update to version 20250502:
+  * Raise a specific error for fixed banks with link
+  * Unify handling of RadioSpecificError in common
@@ -3,0 +8,2 @@
+-------------------------------------------------------------------
+Sat Apr 26 10:26:57 UTC 2025 - Andreas Stieger <andreas.stie...@gmx.de>

Old:
----
  chirp-20250425.obscpio

New:
----
  chirp-20250502.obscpio

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

Other differences:
------------------
++++++ chirp.spec ++++++
--- /var/tmp/diff_new_pack.6nqT70/_old  2025-05-03 21:01:45.692638687 +0200
+++ /var/tmp/diff_new_pack.6nqT70/_new  2025-05-03 21:01:45.732640387 +0200
@@ -19,7 +19,7 @@
 
 %define pythons python3
 Name:           chirp
-Version:        20250425
+Version:        20250502
 Release:        0
 Summary:        Tool for programming amateur radio sets
 License:        GPL-3.0-only

++++++ _service ++++++
--- /var/tmp/diff_new_pack.6nqT70/_old  2025-05-03 21:01:46.100656026 +0200
+++ /var/tmp/diff_new_pack.6nqT70/_new  2025-05-03 21:01:46.140657726 +0200
@@ -4,8 +4,8 @@
     <param name="scm">git</param>
     <param name="changesgenerate">enable</param>
     <param name="filename">chirp</param>
-    <param name="versionformat">20250425</param>
-    <param name="revision">52536959bd1683ebe64a7dbc7799c25be049fbb7</param>
+    <param name="versionformat">20250502</param>
+    <param name="revision">8967238a8670c5992c3d5a65b2fdeef5cded7889</param>
   </service>
   <service mode="manual" name="set_version"/>
   <service name="tar" mode="buildtime"/>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.6nqT70/_old  2025-05-03 21:01:46.292664186 +0200
+++ /var/tmp/diff_new_pack.6nqT70/_new  2025-05-03 21:01:46.320665375 +0200
@@ -1,7 +1,7 @@
 <servicedata>
   <service name="tar_scm">
     <param name="url">https://github.com/kk7ds/chirp.git</param>
-    <param 
name="changesrevision">52536959bd1683ebe64a7dbc7799c25be049fbb7</param>
+    <param 
name="changesrevision">8967238a8670c5992c3d5a65b2fdeef5cded7889</param>
   </service>
 </servicedata>
 (No newline at EOF)

++++++ chirp-20250425.obscpio -> chirp-20250502.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/chirp-20250425/chirp/chirp_common.py 
new/chirp-20250502/chirp/chirp_common.py
--- old/chirp-20250425/chirp/chirp_common.py    2025-04-20 16:10:15.000000000 
+0200
+++ new/chirp-20250502/chirp/chirp_common.py    2025-04-27 19:41:18.000000000 
+0200
@@ -797,10 +797,10 @@
         return [self._banks[(memory.number - lo) // count]]
 
     def remove_memory_from_mapping(self, memory, mapping):
-        raise NotImplementedError(self.MSG)
+        raise errors.RadioFixedBanks()
 
     def add_memory_to_mapping(self, memory, mapping):
-        raise NotImplementedError(self.MSG)
+        raise errors.RadioFixedBanks()
 
 
 class MappingModelIndexInterface:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/chirp-20250425/chirp/errors.py 
new/chirp-20250502/chirp/errors.py
--- old/chirp-20250425/chirp/errors.py  2025-04-20 16:10:15.000000000 +0200
+++ new/chirp-20250502/chirp/errors.py  2025-04-27 19:41:18.000000000 +0200
@@ -18,6 +18,7 @@
 
 class Reasons(enum.Enum):
     NO_CONNECTION_K1 = "No response from radio. Check connector and cabling!"
+    FIXED_BANKS = "This radio has fixed banks and does not allow reassignment"
 
 
 class InvalidDataError(Exception):
@@ -73,3 +74,8 @@
 class RadioNoContactLikelyK1(SpecificRadioError):
     """A radio that uses a K1 connector likely to have fitment issues."""
     CODE = Reasons.NO_CONNECTION_K1
+
+
+class RadioFixedBanks(SpecificRadioError):
+    """A radio that has fixed banks and cannot be changed."""
+    CODE = Reasons.FIXED_BANKS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/chirp-20250425/chirp/wxui/clone.py 
new/chirp-20250502/chirp/wxui/clone.py
--- old/chirp-20250425/chirp/wxui/clone.py      2025-04-20 16:10:15.000000000 
+0200
+++ new/chirp-20250502/chirp/wxui/clone.py      2025-04-27 19:41:18.000000000 
+0200
@@ -678,28 +678,10 @@
         wx.CallAfter(self.EndModal, wx.ID_OK)
 
     def fail(self, error):
-        if isinstance(error, errors.SpecificRadioError):
-            link = error.get_link()
-            message = str(error)
-        else:
-            link = None
-            message = str(error)
-
         def safe_fail():
-            if link:
-                buttons = wx.YES_NO | wx.NO_DEFAULT
-            else:
-                buttons = wx.OK
-            d = wx.MessageDialog(self, message,
-                                 _('Error communicating with radio'),
-                                 wx.ICON_ERROR | buttons)
-            if link:
-                d.SetYesNoLabels(_('More Info'), wx.ID_OK)
-            r = d.ShowModal()
-            if r == wx.ID_YES:
-                webbrowser.open(link)
-
-            self.cancel_action()
+            common.error_proof.show_error(
+                error, parent=self,
+                title=_('Error communicating with radio'))
         wx.CallAfter(safe_fail)
 
     def cancel_action(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/chirp-20250425/chirp/wxui/common.py 
new/chirp-20250502/chirp/wxui/common.py
--- old/chirp-20250425/chirp/wxui/common.py     2025-04-20 16:10:15.000000000 
+0200
+++ new/chirp-20250502/chirp/wxui/common.py     2025-04-27 19:41:18.000000000 
+0200
@@ -23,6 +23,7 @@
 import shutil
 import tempfile
 import threading
+import webbrowser
 
 import wx
 
@@ -613,54 +614,44 @@
             prop.SetModifiedStatus(False)
 
 
-def _error_proof(*expected_errors):
-    """Decorate a method and display an error if it raises.
-
-    If the method raises something in expected_errors, then
-    log an error, otherwise log exception.
-    """
-
-    def show_error(msg):
-        d = wx.MessageDialog(None, str(msg), _('An error has occurred'),
-                             style=wx.OK | wx.ICON_ERROR)
-        d.ShowModal()
-
-    def wrap(fn):
-        @functools.wraps(fn)
-        def inner(*args, **kwargs):
-            try:
-                return fn(*args, **kwargs)
-            except expected_errors as e:
-                LOG.error('%s: %s' % (fn, e))
-                show_error(e)
-            except Exception as e:
-                LOG.exception('%s raised unexpected exception' % fn)
-                show_error(e)
-
-        return inner
-    return wrap
-
-
 class error_proof(object):
-    def __init__(self, *expected_exceptions):
+    def __init__(self, *expected_exceptions, title=None):
         self._expected = expected_exceptions
         self.fn = None
+        self.title = title
 
     @staticmethod
-    def show_error(msg):
-        d = wx.MessageDialog(None, str(msg), _('An error has occurred'),
-                             style=wx.OK | wx.ICON_ERROR)
-        d.ShowModal()
+    def show_error(error, parent=None, title=None):
+        title = title or _('An error has occurred')
+
+        if isinstance(error, errors.SpecificRadioError):
+            link = error.get_link()
+            message = str(error)
+        else:
+            link = None
+            message = str(error)
+
+        if link:
+            buttons = wx.YES_NO | wx.NO_DEFAULT
+        else:
+            buttons = wx.OK
+        d = wx.MessageDialog(parent, message, title,
+                             wx.ICON_ERROR | buttons)
+        if link:
+            d.SetYesNoLabels(_('More Info'), wx.ID_OK)
+        r = d.ShowModal()
+        if r == wx.ID_YES:
+            webbrowser.open(link)
 
     def run_safe(self, fn, args, kwargs):
         try:
             return fn(*args, **kwargs)
         except self._expected as e:
             LOG.error('%s: %s' % (fn, e))
-            self.show_error(e)
+            self.show_error(e, title=self.title)
         except Exception as e:
             LOG.exception('%s raised unexpected exception' % fn)
-            self.show_error(e)
+            self.show_error(e, title=self.title)
 
     def __call__(self, fn):
         self.fn = fn

++++++ chirp.obsinfo ++++++
--- /var/tmp/diff_new_pack.6nqT70/_old  2025-05-03 21:01:49.532801879 +0200
+++ /var/tmp/diff_new_pack.6nqT70/_new  2025-05-03 21:01:49.588804259 +0200
@@ -1,5 +1,5 @@
 name: chirp
-version: 20250425
-mtime: 1745158215
-commit: 52536959bd1683ebe64a7dbc7799c25be049fbb7
+version: 20250502
+mtime: 1745775678
+commit: 8967238a8670c5992c3d5a65b2fdeef5cded7889
 

Reply via email to