Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package vit for openSUSE:Factory checked in at 2026-03-30 18:32:49 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/vit (Old) and /work/SRC/openSUSE:Factory/.vit.new.1999 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "vit" Mon Mar 30 18:32:49 2026 rev:13 rq:1343634 version:2.3.4 Changes: -------- --- /work/SRC/openSUSE:Factory/vit/vit.changes 2025-03-13 22:05:25.092572023 +0100 +++ /work/SRC/openSUSE:Factory/.vit.new.1999/vit.changes 2026-03-30 18:37:07.137656580 +0200 @@ -1,0 +2,15 @@ +Sun Mar 29 22:51:53 UTC 2026 - Mia Herkt <[email protected]> + +- Update to 2.3.4 + * Support Taskwarrior 'grey' color aliases + * Guard empty autocomplete tab options + * default to string type for UDA if no type configured + gh#vit-project/vit#368 + * Use 'is not None' for None checks + * Fix UDA string sorting (after reset) + * don't strip trailing commas from UDA values, they are valid + * add uda_config attribute to TaskParser instance + * modernize build script + * vit-watchdog: fix signal include + +------------------------------------------------------------------- Old: ---- vit-2.3.3.tar.gz New: ---- vit-2.3.4.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ vit.spec ++++++ --- /var/tmp/diff_new_pack.hLunjQ/_old 2026-03-30 18:37:07.769683005 +0200 +++ /var/tmp/diff_new_pack.hLunjQ/_new 2026-03-30 18:37:07.773683171 +0200 @@ -1,7 +1,7 @@ # # spec file for package vit # -# Copyright (c) 2025 SUSE LLC +# Copyright (c) 2026 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,17 +17,17 @@ Name: vit -Version: 2.3.3 +Version: 2.3.4 Release: 0 Summary: Visual Interactive Taskwarrior full-screen terminal interface License: MIT -Group: Productivity/Office/Organizers URL: https://github.com/scottkosty/vit Source: https://files.pythonhosted.org/packages/source/v/vit/vit-%{version}.tar.gz BuildRequires: bash-completion BuildRequires: fdupes BuildRequires: python-rpm-macros BuildRequires: python3-base >= 3.7 +BuildRequires: python3-pip BuildRequires: python3-setuptools BuildRequires: python3-tasklib BuildRequires: python3-typing_extensions @@ -55,20 +55,21 @@ %setup -q -n vit-%{version} %build -%python3_build +%python3_pyproject_wheel %install -%python3_install +%python3_pyproject_install install -Dm644 scripts/bash/vit.bash_completion %{buildroot}%{_datadir}/bash-completion/completions/vit %fdupes %{buildroot}%{python3_sitelib} %check -python3 -m unittest +%python3_pyunittest %files %doc COLOR.md CUSTOMIZE.md README.md %license LICENSE %{_bindir}/vit %{_datadir}/bash-completion/completions/vit -%{python3_sitelib}/* +%{python3_sitelib}/vit +%{python3_sitelib}/vit-%{version}*-info ++++++ vit-2.3.3.tar.gz -> vit-2.3.4.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vit-2.3.3/PKG-INFO new/vit-2.3.4/PKG-INFO --- old/vit-2.3.3/PKG-INFO 2025-02-22 15:51:02.195426700 +0100 +++ new/vit-2.3.4/PKG-INFO 2026-03-17 23:42:44.946233300 +0100 @@ -1,6 +1,6 @@ -Metadata-Version: 2.2 +Metadata-Version: 2.4 Name: vit -Version: 2.3.3 +Version: 2.3.4 Summary: Visual Interactive Taskwarrior full-screen terminal interface Home-page: https://github.com/vit-project/vit Author: Chad Phillips @@ -26,6 +26,7 @@ Dynamic: description-content-type Dynamic: home-page Dynamic: keywords +Dynamic: license-file Dynamic: requires-dist Dynamic: requires-python Dynamic: summary diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vit-2.3.3/test/test_color_mappings.py new/vit-2.3.4/test/test_color_mappings.py --- old/vit-2.3.3/test/test_color_mappings.py 1970-01-01 01:00:00.000000000 +0100 +++ new/vit-2.3.4/test/test_color_mappings.py 2026-03-17 23:37:41.000000000 +0100 @@ -0,0 +1,20 @@ +import unittest + +from vit.color_mappings import task_256_to_urwid_256 + + +class TestColorMappings(unittest.TestCase): + + def test_maps_gray_and_grey_base_name(self): + mapping = task_256_to_urwid_256() + self.assertEqual(mapping['gray'], 'light gray') + self.assertEqual(mapping['grey'], 'light gray') + + def test_maps_grey_scale_variants(self): + mapping = task_256_to_urwid_256() + self.assertEqual(mapping['gray10'], mapping['grey10']) + self.assertEqual(mapping['grey10'], 'g40') + + +if __name__ == '__main__': + unittest.main() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vit-2.3.3/vit/autocomplete.py new/vit-2.3.4/vit/autocomplete.py --- old/vit-2.3.3/vit/autocomplete.py 2023-04-14 06:10:49.000000000 +0200 +++ new/vit-2.3.4/vit/autocomplete.py 2026-01-16 15:44:11.000000000 +0100 @@ -252,6 +252,9 @@ return len(self.tab_options) - 1 if reverse else 0 def increment_index(self, reverse): + if len(self.tab_options) == 0: + self.idx = None + return if self.idx == None: self.idx = self.initial_idx(reverse) else: @@ -264,6 +267,9 @@ tabbed_text = '' edit_pos = None if self.root_search: + if len(self.tab_options) == 0: + self.deactivate() + return text, None self.increment_index(reverse) tabbed_text = self.tab_options[self.idx] else: @@ -280,4 +286,3 @@ self.increment_index(reverse) tabbed_text, edit_pos = self.assemble(self.tab_options[self.idx]) return tabbed_text, edit_pos - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vit-2.3.3/vit/color_mappings.py new/vit-2.3.4/vit/color_mappings.py --- old/vit-2.3.3/vit/color_mappings.py 2023-07-07 03:25:46.000000000 +0200 +++ new/vit-2.3.4/vit/color_mappings.py 2026-03-17 23:37:41.000000000 +0100 @@ -9,6 +9,7 @@ 'cyan': 'dark cyan', 'magenta': 'dark magenta', 'gray': 'light gray', + 'grey': 'light gray', 'yellow': 'brown', 'color0': 'black', 'color1': 'dark red', @@ -52,10 +53,12 @@ color_map = {} for i in range(0, 24): gray_key = 'gray%d' % i + grey_key = 'grey%d' % i color_key = 'color%d' % (i + 232) # NOTE: This is an approximation of the conversion, close enough! value = 'g%d' % (i * 4) color_map[gray_key] = value + color_map[grey_key] = value color_map[color_key] = value return color_map diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vit-2.3.3/vit/config_parser.py new/vit-2.3.4/vit/config_parser.py --- old/vit-2.3.3/vit/config_parser.py 2023-09-17 17:28:41.000000000 +0200 +++ new/vit-2.3.4/vit/config_parser.py 2025-04-22 18:40:45.000000000 +0200 @@ -248,6 +248,7 @@ def set_config_data(self): self.print_empty_columns = self.is_truthy(self.subtree('print.empty.columns')) self.priority_values = self.get_priority_values() + self.uda_config = self.get_uda_config() def get_task_config(self): self.task_config = [] @@ -279,6 +280,25 @@ def get_priority_values(self): return self.subtree('uda.priority.values').split(',') + def is_string_uda(self, uda_data): + return 'type' in uda_data and uda_data['type'].strip() == 'string' + + def parse_uda_string_values(self, uda_data): + if 'values' in uda_data: + values_list = uda_data['values'].split(',') + values_index = {v: i for i, v in enumerate(values_list)} + return values_list, values_index + return None, None + + def get_uda_config(self): + uda_config = self.subtree('uda.') + for uda_data in uda_config.values(): + if self.is_string_uda(uda_data): + values_list, values_index = self.parse_uda_string_values(uda_data) + uda_data['values_list'] = values_list + uda_data['values_index'] = values_index + return uda_config + def transform_string_leaves(self, hierarchy): if hierarchy in CONFIG_STRING_LEAVES: hierarchy += '.%s' % CONFIG_STRING_LEAVES_DEFAULT_BRANCH diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vit-2.3.3/vit/task_list.py new/vit-2.3.4/vit/task_list.py --- old/vit-2.3.3/vit/task_list.py 2023-07-07 03:25:46.000000000 +0200 +++ new/vit-2.3.4/vit/task_list.py 2026-01-16 15:44:11.000000000 +0100 @@ -177,7 +177,7 @@ def sort(self): if 'sort' in self.report: for column, order, collate in reversed(self.report['sort']): - def comparator(first, second): + def comparator_default(first, second): if first[column] is not None and second[column] is not None: return -1 if first[column] < second[column] else 1 if first[column] > second[column] else 0 elif first[column] is None and second[column] is None: @@ -186,6 +186,20 @@ return -1 elif first[column] is None and second[column] is not None: return 1 + + def comparator_uda_string(values_index, first, second): + a, b = first[column], second[column] + default_index = len(values_index) + a_index = values_index.get(a or '', default_index) + b_index = values_index.get(b or '', default_index) + return (a_index > b_index) - (a_index < b_index) + + uda = self.task_config.uda_config.get(column) + if uda is not None and uda.get('type') == 'string': + values_index = uda.get('values_index') + comparator = partial(comparator_uda_string, values_index) + else: + comparator = comparator_default if order and order == 'descending': self.tasks = sorted(self.tasks, key=cmp_to_key(comparator), reverse=True) else: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vit-2.3.3/vit/uda.py new/vit-2.3.4/vit/uda.py --- old/vit-2.3.3/vit/uda.py 2020-12-24 04:52:45.000000000 +0100 +++ new/vit-2.3.4/vit/uda.py 2025-06-24 18:37:22.000000000 +0200 @@ -7,5 +7,5 @@ def get_configured(task_config): subtree = task_config.subtree(r'^uda\.', walk_subtree=False) if 'uda' in subtree: - return {k:v['type'] for k, v in subtree['uda'].items()} + return {k: v['type'] if 'type' in v else 'string' for k, v in subtree['uda'].items()} return {} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vit-2.3.3/vit/version.py new/vit-2.3.4/vit/version.py --- old/vit-2.3.3/vit/version.py 2025-02-22 15:29:52.000000000 +0100 +++ new/vit-2.3.4/vit/version.py 2026-03-17 23:39:47.000000000 +0100 @@ -1 +1 @@ -VIT = '2.3.3' +VIT = '2.3.4' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vit-2.3.3/vit.egg-info/PKG-INFO new/vit-2.3.4/vit.egg-info/PKG-INFO --- old/vit-2.3.3/vit.egg-info/PKG-INFO 2025-02-22 15:51:02.000000000 +0100 +++ new/vit-2.3.4/vit.egg-info/PKG-INFO 2026-03-17 23:42:44.000000000 +0100 @@ -1,6 +1,6 @@ -Metadata-Version: 2.2 +Metadata-Version: 2.4 Name: vit -Version: 2.3.3 +Version: 2.3.4 Summary: Visual Interactive Taskwarrior full-screen terminal interface Home-page: https://github.com/vit-project/vit Author: Chad Phillips @@ -26,6 +26,7 @@ Dynamic: description-content-type Dynamic: home-page Dynamic: keywords +Dynamic: license-file Dynamic: requires-dist Dynamic: requires-python Dynamic: summary diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vit-2.3.3/vit.egg-info/SOURCES.txt new/vit-2.3.4/vit.egg-info/SOURCES.txt --- old/vit-2.3.3/vit.egg-info/SOURCES.txt 2025-02-22 15:51:02.000000000 +0100 +++ new/vit-2.3.4/vit.egg-info/SOURCES.txt 2026-03-17 23:42:44.000000000 +0100 @@ -11,6 +11,7 @@ setup.py scripts/bash/vit.bash_completion test/__init__.py +test/test_color_mappings.py test/test_list_batcher.py vit/__init__.py vit/action_manager.py
