One line access to environment variables, handling typecasts automatically. Simply declare a variable with the same name, assigning it to the output of the function env(default_value)
where default_value
is of the type you want the env variable casted as. It is easier to say with an example
from enviscerate import env
HOME = env('/this/dir')
Will set the value of HOME to the first available value with the following priority:
- env var
$HOME
- .env file supplied value
- value
'/this/dir'
you supplied to env() function above
- if type is dict, it will be parsed as JSLOB using jsonofabitch module(if available). parsed as JSON using builtin json.loads() otherwise
- if bool it will be set to
True
ifstr(val).lower() in ["t", "true", "1", "yes", "y"]
forenv(val)
andFalse
otherwise - If
None
, the case ofenv()
, you will getNone
if the variable is not declared and a string otherwise - otherwise it will be casted as whatever you supply. presumably an
int
float
orstr
but with no presumptions or restrictions thereof - It will use dotenv if available but does not require it, but will spit warnings to avoid frustrating mysterious why-are-my-settings-not-registering hickups
it is a hack that stack traces the function call to pull the variable name it was assigned to which is then used to pull the env variable sharing the same name. env vars are implicitly delivered as strings so they have to be typecasted, the information for that is pulled out of the default value you give as the argument to env. I made this because i was sick of looking at the code i was using to do this typecasting.