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:


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 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)