Turbo Env
Installation
pip install turboenv
Loading Environment variables
Automatic detection
When load_envs is first called, it looks for any .env located in the absolute path of the file that is calling it. If it finds one, it loads the environment variables from that file in the default namespace.
from turboenv import TurboEnv
env = TurboEnv()
env.load_envs()
You can also specify the path to the .env file and the namespace you want to load it into.
from turboenv import TurboEnv
env = TurboEnv()
env.load_envs('path/to/.env')
env.string('DB_USER') # Accesses the DB_USER variable from the default namespace
Accessing Environment Variables
Once the environment variables are loaded, you can access them in multiple different manners including typecasting their values to a specific one:
Get method
Tries to get the value of the environment variable with the given name. If the variable is not found, an exceptions.MissingEnvVariableError is raised.
db_user = env.get("DB_USER")
db_password = env.get("DB_PASSWORD")
Boolean - Type Casting
Returns the boolean value of the environment variable with the given name:
db_password = env.boolean("USE_DB")
String - Type Casting
Returns the string value of the environment variable with the given name:
db_password = env.string("DB_PASSWORD")
Array - Type Casting
Returns a list of strings by splitting the value of the environment variable with the given name using a specified separator (default is comma):
allowed_hosts = env.array("ALLOWED_HOSTS", cast=str)
String List - Type Casting
Returns a list of strings by splitting the value of the environment variable with the given name using a specified separator (default is comma):
allowed_hosts = env.str_list("ALLOWED_HOSTS")
Integer List - Type Casting
Returns a list of integers by splitting the value of the environment variable with the given name using a specified separator (default is comma):
allowed_ports = env.int_list("ALLOWED_PORTS")
Domain List - Type Casting
Returns a list of domain names by splitting the value of the environment variable with the given name using a specified separator (default is comma):
allowed_domains = env.domain_list("ALLOWED_DOMAINS")
URL List - Type Casting
Returns a list of URLs by splitting the value of the environment variable with the given name using a specified separator (default is comma):
allowed_urls = env.url_list("ALLOWED_URLS")
Secret - Type Casting
Returns the value of the environment variable with the given name, decoded from base64:
db_password = env.secret("DB_PASSWORD")
Path - Type Casting
Returns a Path object representing the path specified by the environment variable with the given name:
config_path = env.path("CONFIG_PATH")
Conditionals
Conditionals are used to guarantee the integrity of your environment variables by checking if they meet certain conditions. When the conditions are not met, an exception is raised.
Depends On
Requires the presence of the specified environment variable in the environment.
env.conditional("DB_USER").depends_on(values=["DB_PASSWORD"])
To Be
Requires the value of the environment variable to be equal to a specified value.
env.conditional("DB_USER").to_be("admin")
Not To Be
Requires the value of the environment variable to not be equal to a specified value.
env.conditional("DB_PASSWORD").not_to_be("password")
To Exist
Requires the environment variable to be present.
env.conditional("DB_USER").to_exist()
To Not Be Empty
Requires the value of the environment variable to not be empty.
env.conditional("DB_PASSWORD").to_not_be_empty()
To Contain
Requires the value of the environment variable to contain a specified substring.
env.conditional("ALLOWED_HOSTS").to_contain("example.com")
Path To Exist
Requires the value of the environment variable to be a valid path that exists in the file system.
env.conditional("CONFIG_PATH").path_to_exist()