11# -*- coding: UTF-8 -*-
2- import re
3- from itertools import chain
4- from termcolor import colored
5- from tinyscript .helpers import is_function , BorderlessTable , Path
6-
72from .logger import *
83
94
@@ -40,7 +35,7 @@ def __delitem__(self, key):
4035 self .console .reset ()
4136 except AttributeError as err :
4237 pass
43- l .debug ("{ } => null". format ( key . name ) )
38+ l .debug (f" { key . name } => null" )
4439
4540 def __getitem__ (self , key ):
4641 """ Custom method for getting an item, returning the original value from the current Config instance or, if the
@@ -72,7 +67,7 @@ def __setitem__(self, key, value):
7267 key = self ._setkey (key , value )
7368 if not force and key .old_value == key .value :
7469 try :
75- l .debug ("{ } unchanged". format ( key . name ) )
70+ l .debug (f" { key . name } unchanged" )
7671 except AttributeError :
7772 pass
7873 return # stop here if the final value is unchanged
@@ -83,7 +78,7 @@ def __setitem__(self, key, value):
8378 self .console .reset ()
8479 except AttributeError as err :
8580 pass
86- l .success ("{ } => {}" . format ( key . name , value if force else key .value ) )
81+ l .success (f" { key . name } => { value if force else key .value } " )
8782
8883 def __str__ (self ):
8984 """ Custom string method. """
@@ -94,33 +89,35 @@ def __str__(self):
9489 continue
9590 r = ["N" , "Y" ][r ]
9691 if v == "" :
92+ from tinyscript .helpers import colored
9793 n , v , r = map (lambda s : colored (s , "red" , attrs = ['bold' ]), [n , v , r ])
9894 data .append ([n , v , r , d ])
9995 if len (data ) > 1 :
96+ from tinyscript .helpers import BorderlessTable
10097 try :
10198 prefix = self .console .opt_prefix
10299 except AttributeError :
103100 prefix = None
104101 return BorderlessTable (data ).table if prefix is None else \
105- BorderlessTable (data , "%s options" % prefix ).table
102+ BorderlessTable (data , f" { prefix } options" ).table
106103 return ""
107104
108105 def __run_callback (self , key , name ):
109106 """ Method for executing a callback and updating the current value with its return value if any. """
110- logger .detail ("{ } {} callback triggered". format ( key , name ) )
107+ logger .detail (f" { key } { name } callback triggered" )
111108 retval = None
112109 if hasattr (self , "_last_error" ):
113110 del self ._last_error
114111 try :
115- retval = getattr (key , "{ }_callback". format ( name ) )()
112+ retval = getattr (key , f" { name } _callback" )()
116113 except Exception as e :
117114 self ._last_error = e
118115 if True :#not isinstance(e, AttributeError):
119116 raise
120117 if retval is not None :
121118 key .old_value = key .value
122119 if not key .validate (retval ):
123- raise ValueError ("Invalid value '{}'" . format ( retval ) )
120+ raise ValueError (f "Invalid value '{ retval } '" )
124121 self ._d [key .name ] = (key , retval )
125122
126123 def _getitem (self , key ):
@@ -159,7 +156,7 @@ def _setkey(self, key, value):
159156 # then assign the new one if it is valid
160157 self ._d [key .name ] = (key , value )
161158 if value is not None and not key .validate (value ):
162- raise ValueError ("Invalid value '{}' for key '{}'" . format ( value , key .name ) )
159+ raise ValueError (f "Invalid value '{ value } ' for key '{ key .name } '" )
163160 super (Config , self ).__setitem__ (key , value )
164161 return key
165162
@@ -181,6 +178,7 @@ def items(self, fail=True):
181178
182179 def keys (self , glob = False ):
183180 """ Return string keys (like original dict). """
181+ from itertools import chain
184182 l = [k for k in self ._d .keys ()]
185183 if glob :
186184 for k in chain (self ._d .keys (), Config ._g .keys ()):
@@ -300,7 +298,7 @@ def __repr__(self):
300298
301299 def __str__ (self ):
302300 """ Custom string method. """
303- return "<{}[{}]>" . format ( self .name , [ "N" , "Y" ] [self .required ])
301+ return f "<{ self .name } [ { 'NY' [self .required ]} ]>"
304302
305303 def __set_func (self , func , name , default_func = None ):
306304 """ Set a function, e.g. for manipulating option's value. """
@@ -309,7 +307,7 @@ def __set_func(self, func, name, default_func=None):
309307 if isinstance (func , type (lambda :0 )):
310308 setattr (self , name , func .__get__ (self , self .__class__ ))
311309 else :
312- raise Exception ("Bad {} lambda" . format ( name ) )
310+ raise Exception (f "Bad { name } lambda" )
313311
314312 def bind (self , parent ):
315313 """ Register this instance as a key of the given Config or retrieve the already existing one. """
@@ -325,6 +323,7 @@ def bind(self, parent):
325323 @property
326324 def choices (self ):
327325 """ Pre- or lazy-computed list of choices. """
326+ from tinyscript .helpers import is_function
328327 c = self ._choices
329328 if not is_function (c ):
330329 return c
@@ -344,7 +343,7 @@ def input(self):
344343 if hasattr (self , "config" ):
345344 return self .config [self ]
346345 else :
347- raise Exception ("Unbound option {}" . format ( self .name ) )
346+ raise Exception (f "Unbound option { self .name } " )
348347
349348 @property
350349 def module (self ):
@@ -368,10 +367,12 @@ def value(self):
368367 if value == getattr (self , "default" , None ):
369368 value = Config ._g .get (self .name , value )
370369 if self .required and value is None :
371- raise ValueError ("{} must be defined" .format (self .name ))
372- try : # try to expand format variables using console's attributes
370+ raise ValueError (f"{ self .name } must be defined" )
371+ # try to expand format variables using console's attributes
372+ from re import findall
373+ try :
373374 kw = {}
374- for n in re . findall (r'\{([a-z]+)\}' , str (value )):
375+ for n in findall (r'\{([a-z]+)\}' , str (value )):
375376 kw [n ] = self .config .console .__dict__ .get (n , "" )
376377 try :
377378 value = value .format (** kw )
@@ -381,6 +382,7 @@ def value(self):
381382 pass
382383 # expand and resolve paths
383384 if self .name .endswith ("FOLDER" ) or self .name .endswith ("WORKSPACE" ):
385+ from tinyscript .helpers import Path
384386 # this will ensure that every path is expanded
385387 value = str (Path (value , expand = True ))
386388 # convert common formats to their basic types
@@ -447,7 +449,7 @@ def __getattribute__(self, name):
447449 return c .__getattribute__ (name )
448450 except AttributeError :
449451 continue
450- raise AttributeError ("'ProxyConfig' object has no attribute '{}'" . format ( name ) )
452+ raise AttributeError (f "'ProxyConfig' object has no attribute '{ name } '" )
451453
452454 def __getitem__ (self , key ):
453455 """ Get method for returning the first occurrence of a key among the list of Config instances. """
0 commit comments