docs: def add_environment_vars(config: MutableMapping[str, Any]):
      """Override config with environment variables
  
      Environment variables have to be prefixed with BELBIO_
      which will be stripped before splitting on '__' and lower-casing
      the environment variable name that is left into keys for the
      config dictionary.
  
      Example:
          BELBIO_BEL_API__SERVERS__API_URL=http://api.bel.bio
          1. BELBIO_BEL_API__SERVERS__API_URL ==> BEL_API__SERVERS__API_URL
          2. BEL_API__SERVERS__API_URL ==> bel_api__servers__api_url
          3. bel_api__servers__api_url ==> [bel_api, servers, api_url]
          4. [bel_api, servers, api_url] ==> config['bel_api']['servers']['api_url'] = http://api.bel.bio
  
      """
  
      # TODO need to redo config - can't add value to dictionary without recursively building up the dict
      #         check into config libraries again
  
      for e in os.environ:
          if re.match("BELBIO_", e):
              val = os.environ.get(e)
              if val:
                  e.replace("BELBIO_", "")
                  env_keys = e.lower().split("__")
                  if len(env_keys) > 1:
                      joined = '"]["'.join(env_keys)
                      eval_config = f'config["{joined}"] = val'
                      try:
                          eval(eval_config)
                      except Exception as exc:
                          log.warn("Cannot process {e} into config")
                  else:
                      config[env_keys[0]] = val