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