Usage¶
Accessing namespaces¶
Environment namespaces, or sets of environment variables that share
a common prefix, are grouped into Habitat
objects.
For example, the following environment variables are part of the
YOURAPP
namespace:
YOURAPP_HOST="server.com"
YOURAPP_PORT=8000
YOURAPP_DEBUG="true"
biome dynamically populates namespaces on attribute access to the
biome
“module”, which is actually a class injected into
sys.modules
. This results in a slightly magical, but extremely
convenient drop-in configuration provider for your application.
>>> import biome
>>> biome.YOURAPP.host
"server.com"
Note
biome expects that your environment variable prefixes always
carry a trailing underscore, separating them from the suffix, or
variable name. For instance, the variable YOURAPPDEBUG
must be
changed to YOURAPP_DEBUG
if you want it included in the
YOURAPP
namespace.
Accessing variables¶
Namespaced environment variables can be accessed in the way you’d
expect (via attributes), and are automatically converted to int
,
bool
, and pathlib.Path
objects whenever possible.
# YOURAPP_SECRET_KEY='~/.secret_key'
secret_key = biome.YOURAPP.secret_key.read_text()
You can also use any of the getters in the Habitat
class
to explicitly coerce types, or if you want to provide default values.
debug = biome.YOURAPP.get_bool("debug", False)