commit:     cae9cdec18de19a4e3679408316a0492996cc1cf
Author:     Brian Harring <ferringb <AT> gmail <DOT> com>
AuthorDate: Sat Nov 22 19:16:06 2025 +0000
Commit:     Brian Harring <ferringb <AT> gmail <DOT> com>
CommitDate: Sat Nov 22 19:16:06 2025 +0000
URL:        
https://gitweb.gentoo.org/proj/pkgcore/snakeoil.git/commit/?id=cae9cdec

chore: annotate bind_main_func.  This isn't complete, but at least is explicit 
about usage

Signed-off-by: Brian Harring <ferringb <AT> gmail.com>

 src/snakeoil/cli/arghparse.py | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/snakeoil/cli/arghparse.py b/src/snakeoil/cli/arghparse.py
index 9a57c6d..8222fdf 100644
--- a/src/snakeoil/cli/arghparse.py
+++ b/src/snakeoil/cli/arghparse.py
@@ -9,6 +9,7 @@ import pkgutil
 import subprocess
 import sys
 import traceback
+import typing
 from argparse import (
     _UNRECOGNIZED_ARGS_ATTR,
     OPTIONAL,
@@ -30,6 +31,8 @@ from textwrap import dedent
 
 import lazy_object_proxy
 
+from snakeoil.formatters import PlainTextFormatter
+
 from .. import klass
 from ..mappings import ImmutableDict
 from ..obj import popattr
@@ -41,6 +44,10 @@ from ..version import get_version
 # generation, when disabled the keyword is silently discarded.
 _generate_docs = False
 
+T_main_func: typing.TypeAlias = typing.Callable[
+    [typing.Any, PlainTextFormatter, PlainTextFormatter], int
+]
+
 
 # BUG: This ain't desirable, find a different way.
 def _monkey_patch(target, external_decorator=None):
@@ -1085,7 +1092,7 @@ class ArgumentParser(OptionalsParser, CsvActionsParser):
         # subparsers action object from calling add_subparsers()
         self.__subparsers = None
         # function to execute for this parser
-        self.__main_func = None
+        self.__main_func: T_main_func | None = None
         # pre-parse functions to execute for this parser
         self.__pre_parse = []
         # early parse functions to execute for this parser
@@ -1398,7 +1405,7 @@ class ArgumentParser(OptionalsParser, CsvActionsParser):
             traceback.print_exc()
         self.exit(status, f"{self.prog}: error: {message}\n")
 
-    def bind_main_func(self, functor):
+    def bind_main_func(self, functor: T_main_func) -> T_main_func:
         """Decorator to set a main function for the parser."""
         self.set_defaults(main_func=functor)
         self.__main_func = functor

Reply via email to