22Functions to help with the main()
33"""
44
5- __version__ = "1.3.1"
6- __author__ = "desultory"
5+ __version__ = "1.4.0"
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 ():
@@ -20,23 +24,15 @@ def get_base_args():
2024
2125def init_logger (name = None ):
2226 """Initialize the logger with a name"""
23- from logging import getLogger
24-
2527 name = name or __name__
2628 return getLogger (name )
2729
2830
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-
3731def get_kwargs_from_args (args , logger = None , base_kwargs = {}, drop_base = True ):
3832 """Get kwargs from argparser args.
39- Drop base doesn't add init_argparser args."""
33+ Drop base doesn't add args defined in get_base_args.
34+ Empty args are not added to kwargs.
35+ """
4036 kwargs = base_kwargs .copy ()
4137 if logger is not None :
4238 kwargs ["logger" ] = logger
@@ -55,8 +51,6 @@ def get_kwargs_from_args(args, logger=None, base_kwargs={}, drop_base=True):
5551
5652def process_args (argparser , logger = None , strict = False ):
5753 """Process argparser args, optionally configuring a logger."""
58- from logging import Formatter
59-
6054 from zenlib .logging import ColorLognameFormatter
6155
6256 if strict :
@@ -66,9 +60,8 @@ def process_args(argparser, logger=None, strict=False):
6660 if unknown :
6761 args ._unknown = unknown
6862
69- if ' version' in args and args .version and argparser .prog != "zenlib_test" :
63+ if " version" in args and args .version and argparser .prog != "zenlib_test" :
7064 package = argparser .prog
71- from importlib .metadata import version
7265
7366 print (f"{ package } { version (package )} " )
7467 exit (0 )
@@ -96,13 +89,11 @@ def process_args(argparser, logger=None, strict=False):
9689 handler .setFormatter (formatter )
9790 break
9891 else :
99- from logging import FileHandler , StreamHandler
100-
10192 handler = StreamHandler () if args .log_file is None else FileHandler (args .log_file )
10293 handler .setFormatter (formatter )
10394 logger .addHandler (handler )
10495
105- if ' __unknown' in args and args .__unknown :
96+ if " __unknown" in args and args .__unknown :
10697 logger .warning (f"Unknown args: { args .__unknown } " )
10798
10899 return args
@@ -128,12 +119,10 @@ def get_args_n_logger(package, description: str, arguments=[], drop_default=Fals
128119 Returns the parsed args and logger.
129120 """
130121 all_arguments = get_base_args () + arguments
131- from sys import argv
132122 if "--dump_args" in argv :
133123 dump_args_for_autocomplete (all_arguments )
134124
135- from argparse import Namespace , ArgumentError
136- argparser = init_argparser (prog = package , description = description )
125+ argparser = ArgumentParser (prog = package , description = description )
137126 logger = init_logger (package )
138127
139128 def add_args (args , argparser ):
@@ -157,7 +146,9 @@ def add_args(args, argparser):
157146 return args , logger
158147
159148
160- def get_kwargs (package , description : str , arguments = [], base_kwargs = {}, drop_default = False , drop_base = True , strict = False ):
149+ def get_kwargs (
150+ package , description : str , arguments = [], base_kwargs = {}, drop_default = False , drop_base = True , strict = False
151+ ):
161152 """Like get_args_n_logger, but only returns kwargs"""
162153 args , logger = get_args_n_logger (package , description , arguments , drop_default = drop_default , strict = strict )
163154 return get_kwargs_from_args (args , logger = logger , base_kwargs = base_kwargs , drop_base = drop_base )
0 commit comments