ConfigHandler-python 2.0.2
Create, update, and remove values from a configuration file made by ConfigHandler.
License: MIT
Requires Python: >=3.10

# ConfigHandler

## Description

Create, update, and remove values from a configuration file made by ConfigHandler.

+ ***Simple Mode***: Store simple data (e.g., version, program statistics, etc.) in a single file.
+ ***Advanced Mode***: Store configuration data using JSON data format. Supports metadata, encryption, and compression.

## Installation

+ via pip: `pip install confighandler-python`
+ as a Git submodule: `git submodule add https://github.com/Chris1320/ConfigHandler-python.git`

### Requirements

The following modules are optional:

+ `pycryptodomex`: AES256 encryption
+ `prettytable`: Prettier layout in interactive mode
+ `lz4`: LZ4 compression support

## Usage

### Simple Mode

**[QuickStart]** Creating a New Configuration File

```python

    from config_handler.simple import Simple

    config = Simple("test.conf")  # Create a new Simple ConfigHandler object.

    # Add key-value pairs to the configuration file.
    config["foo"] = "bar"  # "foo" is the key, "bar" is the value.
    config["nums"] = 123
    config["dec"] = 3.14
    config["Aboolean"] = True
    config["unintentional variable!"] = "unintentional value."

    # Remove values
    del config["unintentional variable!"]

    print(config.exists)  # It will print `False` because the file does not exist yet.
    config.save()  # Save the data to the file.
    print(config.exists)  # It is now True.

```

**[QuickStart]** Loading an Existing Configuration File

```python

    from config_handler.simple import Simple

    config = Simple("test.conf")

    config.load()  # Load the data from the file.

    # Get values from the loaded data.
    print(config["foo"])  # "foo" is the key.

    config["foo"] = "barred"  # Change value of a key.
    config["new_key"] = "new_value"  # Add a new key-value pair.

    config.isbase64 = True  # Encode configuration file to Base64.

    # Save changes
    config.save()

```

A key can be any string, but must not start with a `#`, include a `=`, or include a `\n`.
A value can be any string, integer, float, or boolean.

### Advanced Mode

**[QuickStart]** Creating a New Configuration File

```python

    from config_handler.advanced import Advanced

    config = Advanced("test.conf", "p4ssw0rd")  # Password is required when encryption is not None.

    config.new(  # Initialize a new configuration file.
        name="Advanced Mode Test",
        author="Chris1320",
        compression="zlib",
        encryption="aes256"
    )

    # Add key-value pairs to configuration file.
    config["foo"] = "bar"  # "foo" is the key, "bar" is the value.
    config["nums"] = 123
    config["dec"] = 3.14
    config["Aboolean"] = True
    config["unintentional variable!"] = "unintentional value."

    # Remove values
    del config["unintentional variable!"]

    config.save()  # Save the data to the file.

```

**[QuickStart]** Loading an Existing Configuration File

```python

    from config_handler.advanced import Advanced

    config = Advanced("test.conf", "p4ssw0rd")  # Password is required when encryption is not None.

    # Load the data from the file.
    config.load()

    # Get values from the loaded data.
    print(config["foo"])  # "foo" is the key.

    config["foo"] ="barred"  # Change value of a key.
    config["new_key"] = "new_value"  # Add a new key-value pair.

    config()  # Get metadata of the configuration file.
              # This is formerly called as `config.metadata()`.

    config.save()  # Save changes

```