22Functions to help with the main()
33"""
44
5- __version__ = "1.3.1"
6- __author__ = "desultory"
5+ __version__ = "1.4.1"
6+
7+ from argparse import ArgumentError , ArgumentParser , Namespace
8+ from importlib .metadata import version
9+ from logging import FileHandler , Formatter , StreamHandler , getLogger
10+ from sys import argv
711
812
913def get_base_args ():
@@ -18,25 +22,11 @@ def get_base_args():
1822 ]
1923
2024
21- def init_logger (name = None ):
22- """Initialize the logger with a name"""
23- from logging import getLogger
24-
25- name = name or __name__
26- return getLogger (name )
27-
28-
29- def init_argparser (prog = None , description = None ):
30- """Initialize an argparser with common options."""
31- from argparse import ArgumentParser
32-
33- argparser = ArgumentParser (prog = prog , description = description )
34- return argparser
35-
36-
3725def get_kwargs_from_args (args , logger = None , base_kwargs = {}, drop_base = True ):
3826 """Get kwargs from argparser args.
39- Drop base doesn't add init_argparser args."""
27+ Drop base doesn't add args defined in get_base_args.
28+ Empty args are not added to kwargs.
29+ """
4030 kwargs = base_kwargs .copy ()
4131 if logger is not None :
4232 kwargs ["logger" ] = logger
@@ -55,8 +45,6 @@ def get_kwargs_from_args(args, logger=None, base_kwargs={}, drop_base=True):
5545
5646def process_args (argparser , logger = None , strict = False ):
5747 """Process argparser args, optionally configuring a logger."""
58- from logging import Formatter
59-
6048 from zenlib .logging import ColorLognameFormatter
6149
6250 if strict :
@@ -66,9 +54,8 @@ def process_args(argparser, logger=None, strict=False):
6654 if unknown :
6755 args ._unknown = unknown
6856
69- if ' version' in args and args .version and argparser .prog != "zenlib_test" :
57+ if " version" in args and args .version and argparser .prog != "zenlib_test" :
7058 package = argparser .prog
71- from importlib .metadata import version
7259
7360 print (f"{ package } { version (package )} " )
7461 exit (0 )
@@ -96,13 +83,11 @@ def process_args(argparser, logger=None, strict=False):
9683 handler .setFormatter (formatter )
9784 break
9885 else :
99- from logging import FileHandler , StreamHandler
100-
10186 handler = StreamHandler () if args .log_file is None else FileHandler (args .log_file )
10287 handler .setFormatter (formatter )
10388 logger .addHandler (handler )
10489
105- if ' __unknown' in args and args .__unknown :
90+ if " __unknown" in args and args .__unknown :
10691 logger .warning (f"Unknown args: { args .__unknown } " )
10792
10893 return args
@@ -128,13 +113,11 @@ def get_args_n_logger(package, description: str, arguments=[], drop_default=Fals
128113 Returns the parsed args and logger.
129114 """
130115 all_arguments = get_base_args () + arguments
131- from sys import argv
132116 if "--dump_args" in argv :
133117 dump_args_for_autocomplete (all_arguments )
134118
135- from argparse import Namespace , ArgumentError
136- argparser = init_argparser (prog = package , description = description )
137- logger = init_logger (package )
119+ argparser = ArgumentParser (prog = package , description = description )
120+ logger = getLogger (package )
138121
139122 def add_args (args , argparser ):
140123 for arg in args :
@@ -157,7 +140,9 @@ def add_args(args, argparser):
157140 return args , logger
158141
159142
160- def get_kwargs (package , description : str , arguments = [], base_kwargs = {}, drop_default = False , drop_base = True , strict = False ):
143+ def get_kwargs (
144+ package , description : str , arguments = [], base_kwargs = {}, drop_default = False , drop_base = True , strict = False
145+ ):
161146 """Like get_args_n_logger, but only returns kwargs"""
162147 args , logger = get_args_n_logger (package , description , arguments , drop_default = drop_default , strict = strict )
163148 return get_kwargs_from_args (args , logger = logger , base_kwargs = base_kwargs , drop_base = drop_base )
0 commit comments