docs: def get_and_update_setting(self, name, default=None, user=True):
      '''Look for a setting in the environment (first priority) and then
         the settings file (second). If something is found, the settings
         file is updated. The order of operations works as follows:
  
         1. The user config file is used as a cache for the variable
         2. the environment variable always takes priority to cache, and if
            found, will update the cache.
         3. If the variable is not found and the cache is set, we are good
         5. If the variable is not found and the cache isn't set, return
            default (default is None)
  
         So the user of the function can assume a return of None equates to
         not set anywhere, and take the appropriate action.
      ''' 
  
      setting = self._get_setting(name, user=user)
  
      if setting is None and default is not None:
          setting = default
  
      # If the setting is found, update the client secrets
      if setting is not None:
          updates = {name : setting}
          self._update_settings(updates)
  
      return setting