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