Add type annotations and casts to functions that were returning Any
where a specific type was declared, satisfying the new warn_return_any
mypy rule.
Fixes:
- log.py: get_caller_pos return type via cast
- AsyncRunner.py: cast T for fut.result()
- util.py: cast for getattr result, str() for args.username
- FileContext.py: verbose_default bool annotation
- SSHClient.py: cast SSHClient for dynamic import
- lib/App.py: cast ArgumentParser, add return types to inner funcs
- pm/rpm.py, dpkg.py: cast Iterable[Package]
- App.py: cast for self.args.func(), add return types to inner funcs
- BaseCmdPkgRelations.py: cast str for args.delimiter
Assisted-by: unsloth/Qwen3.6-35B-A3B-GGUF:IQ4_NL and pi.dev 0.81.1
Signed-off-by: Jan Lindemann <jan@janware.com>
tmpl_render()'s "values" argument currently understands
dict[str,str|list[str]]. Enhance that to understand the broader
RenderValues type, which also includes Iterable[tuple[str, str]], as
produced by argparse.add_argument(action='append').
This commit also adds proper type-checking for the values argument.
Before, its type had gone unchecked entirely.
Signed-off-by: Jan Lindemann <jan@janware.com>
Add an additional keyword-argument search_path to
templates.tmpl_render(). It allows to specifiy a list of directory
paths in which a template of a given name can be found. It defaults
to [], in which case only the built-in templates are considered.
Otherwise file locations are tried first, then the built-in
templates.
Signed-off-by: Jan Lindemann <jan@janware.com>
Add tmpl_render(), a function to provide a primitive template
renderer. It takes a dictionary for values to replace variables
shaped {some-variable} in templates found by their name. For now, the
templates are defined in the templates module instead of being read
from a template directory. The values may be lists, in which case
they are rendered with a delimiter, defaulting to ",".
Using an existing template engine like jinja2 is tempting but would
introduce additional dependencies jw-pkg is trying hard to avoid.
Signed-off-by: Jan Lindemann <jan@janware.com>