@ -15,16 +15,16 @@ def check_env() -> bool:
Returns :
bool : Whether or not everything was put in properly
"""
"""
if not os . path . exists ( " .env.template " ) :
console . print ( " [red]Couldn ' t find .env.template. Unable to check variables. " )
return True
if not os . path . exists ( " .env " ) :
console . print ( " [red]Couldn ' t find the .env file, creating one now. " )
with open ( " .env " , " x " ) as file :
with open ( " .env " , " x " , encoding = " utf-8 " ) as file :
file . write ( " " )
success = True
with open ( " .env.template " , " r " ) as template :
with open ( " .env.template " , " r " , encoding = " utf-8 " ) as template :
# req_envs = [env.split("=")[0] for env in template.readlines() if "=" in env]
matching = { }
explanations = { }
@ -35,7 +35,11 @@ def check_env() -> bool:
req_envs = [ ]
var_optional = False
for line in template . readlines ( ) :
if line . startswith ( " # " ) is not True and " = " in line and var_optional is not True :
if (
line . startswith ( " # " ) is not True
and " = " in line
and var_optional is not True
) :
req_envs . append ( line . split ( " = " ) [ 0 ] )
if " # " in line :
examples [ line . split ( " = " ) [ 0 ] ] = " # " . join ( line . split ( " # " ) [ 1 : ] ) . strip ( )
@ -56,7 +60,9 @@ def check_env() -> bool:
)
var_optional = False
elif line . startswith ( " #MATCH_TYPE " ) :
types [ req_envs [ - 1 ] ] = eval ( line . removeprefix ( " #MATCH_TYPE " ) [ : - 1 ] . split ( ) [ 0 ] )
types [ req_envs [ - 1 ] ] = eval (
line . removeprefix ( " #MATCH_TYPE " ) [ : - 1 ] . split ( ) [ 0 ]
)
var_optional = False
elif line . startswith ( " #EXPLANATION " ) :
explanations [ req_envs [ - 1 ] ] = line . removeprefix ( " #EXPLANATION " ) [ : - 1 ]
@ -82,9 +88,9 @@ def check_env() -> bool:
try :
temp = types [ env ] ( value )
if env in bounds . keys ( ) :
( bounds [ env ] [ 0 ] < = temp or incorrect . add ( env ) ) and len ( bounds [ env ] ) > 1 and (
bounds [ env ] [ 1 ] > = temp or incorrect . add ( env )
)
( bounds [ env ] [ 0 ] < = temp or incorrect . add ( env ) ) and len (
bounds [ env ]
) > 1 and ( bounds [ env ] [ 1 ] > = temp or incorrect . add ( env ) )
except ValueError :
incorrect . add ( env )
@ -107,11 +113,17 @@ def check_env() -> bool:
for env in missing :
table . add_row (
env ,
explanations [ env ] if env in explanations . keys ( ) else " No explanation given " ,
explanations [ env ]
if env in explanations . keys ( )
else " No explanation given " ,
examples [ env ] if env in examples . keys ( ) else " " ,
str ( bounds [ env ] [ 0 ] ) if env in bounds . keys ( ) and bounds [ env ] [ 1 ] is not None else " " ,
str ( bounds [ env ] [ 0 ] )
if env in bounds . keys ( ) and bounds [ env ] [ 1 ] is not None
else " " ,
str ( bounds [ env ] [ 1 ] )
if env in bounds . keys ( ) and len ( bounds [ env ] ) > 1 and bounds [ env ] [ 1 ] is not None
if env in bounds . keys ( )
and len ( bounds [ env ] ) > 1
and bounds [ env ] [ 1 ] is not None
else " " ,
)
console . print ( table )
@ -128,7 +140,9 @@ def check_env() -> bool:
title_style = " #C0CAF5 bold " ,
)
table . add_column ( " Variable " , justify = " left " , style = " #7AA2F7 bold " , no_wrap = True )
table . add_column ( " Current value " , justify = " left " , style = " #F7768E " , no_wrap = False )
table . add_column (
" Current value " , justify = " left " , style = " #F7768E " , no_wrap = False
)
table . add_column ( " Explanation " , justify = " left " , style = " #BB9AF7 " , no_wrap = False )
table . add_column ( " Example " , justify = " center " , style = " #F7768E " , no_wrap = True )
table . add_column ( " Min " , justify = " right " , style = " #F7768E " , no_wrap = True )
@ -137,10 +151,14 @@ def check_env() -> bool:
table . add_row (
env ,
os . getenv ( env ) ,
explanations [ env ] if env in explanations . keys ( ) else " No explanation given " ,
explanations [ env ]
if env in explanations . keys ( )
else " No explanation given " ,
str ( types [ env ] . __name__ ) if env in types . keys ( ) else " str " ,
str ( bounds [ env ] [ 0 ] ) if env in bounds . keys ( ) else " None " ,
str ( bounds [ env ] [ 1 ] ) if env in bounds . keys ( ) and len ( bounds [ env ] ) > 1 else " None " ,
str ( bounds [ env ] [ 1 ] )
if env in bounds . keys ( ) and len ( bounds [ env ] ) > 1
else " None " ,
)
missing . add ( env )
console . print ( table )
@ -154,7 +172,7 @@ def check_env() -> bool:
console . print ( " [red]Aborting: Unresolved missing variables " )
return False
if len ( incorrect ) :
with open ( " .env " , " r+ " ) as env_file :
with open ( " .env " , " r+ " , encoding = " utf-8 " ) as env_file :
lines = [ ]
for line in env_file . readlines ( ) :
line . split ( " = " ) [ 0 ] . strip ( ) not in incorrect and lines . append ( line )
@ -162,7 +180,7 @@ def check_env() -> bool:
env_file . write ( " \n " . join ( lines ) )
env_file . truncate ( )
console . print ( " [green]Successfully removed incorrectly set variables from .env " )
with open ( " .env " , " a " ) as env_file :
with open ( " .env " , " a " , encoding = " utf-8 " ) as env_file :
for env in missing :
env_file . write (
env
@ -177,11 +195,17 @@ def check_env() -> bool:
if env in explanations . keys ( )
else " Incorrect input. Try again. " ,
bounds [ env ] [ 0 ] if env in bounds . keys ( ) else None ,
bounds [ env ] [ 1 ] if env in bounds . keys ( ) and len ( bounds [ env ] ) > 1 else None ,
oob_errors [ env ] if env in oob_errors . keys ( ) else " Input too long/short. " ,
bounds [ env ] [ 1 ]
if env in bounds . keys ( ) and len ( bounds [ env ] ) > 1
else None ,
oob_errors [ env ]
if env in oob_errors . keys ( )
else " Input too long/short. " ,
extra_info = " [#C0CAF5 bold]⮶ "
+ (
explanations [ env ] if env in explanations . keys ( ) else " No info available "
explanations [ env ]
if env in explanations . keys ( )
else " No info available "
) ,
)
)