def set_key(dotenv_path, key_to_set, value_to_set, quote_mode="always"):
    """
    Adds or Updates a key/value to the given .env

    If the .env path given doesn't exist, fails instead of risking creating
    an orphan .env somewhere in the filesystem
    """
    value_to_set = value_to_set.strip("'").strip('"')
    if not os.path.exists(dotenv_path):
        warnings.warn("can't write to %s - it doesn't exist." % dotenv_path)
        return None, key_to_set, value_to_set

    if " " in value_to_set:
        quote_mode = "always"

    line_template = '{}="{}"\n' if quote_mode == "always" else '{}={}\n'
    line_out = line_template.format(key_to_set, value_to_set)

    with rewrite(dotenv_path) as (source, dest):
        replaced = False
        for mapping in parse_stream(source):
            if mapping.key == key_to_set:
                dest.write(line_out)
                replaced = True
            else:
                dest.write(mapping.original)
        if not replaced:
            dest.write(line_out)

    return True, key_to_set, value_to_set
def set_key ( dotenv_path , key_to_set , value_to_set , quote_mode = "always" ) : value_to_set = value_to_set . strip ( "'" ) . strip ( '"' ) if not os . path . exists ( dotenv_path ) : warnings . warn ( "can't write to %s - it doesn't exist." % dotenv_path ) return None , key_to_set , value_to_set if " " in value_to_set : quote_mode = "always" line_template = '{}="{}"\n' if quote_mode == "always" else '{}={}\n' line_out = line_template . format ( key_to_set , value_to_set ) with rewrite ( dotenv_path ) as ( source , dest ) : replaced = False for mapping in parse_stream ( source ) : if mapping . key == key_to_set : dest . write ( line_out ) replaced = True else : dest . write ( mapping . original ) if not replaced : dest . write ( line_out ) return True , key_to_set , value_to_set
Adds or Updates a key/value to the given .env

    If the .env path given doesn't exist, fails instead of risking creating
    an orphan .env somewhere in the filesystem