Package: dcd-py-util
dcd_py_utilModule that brings together useful tools for Python applications.Preferences: provides configuration info read from a JSON file.Logger: simplifies logging configuration by reading it from a JSON configuration file (the JSON file
fromPreferences).Encryption: provides an easy way to encrypt and decrypt text stored in open configuration files, protecting
passwords and sensitive data.How to usePreferencesCreate a JSON file namedprefs_config.jsonand place it in the root folder of your application.Include the configuration need in the prefs_config.json file in JSON format. Example:{
  "object": {
    "string": "bla bla bla",
    "number": 123,
    "float": 456.7,
    "boolean": true,
    "date": "2023-01-01",
    "array": [
        {
            "key1": "val1",
            "key2": "val2"
        },
        {
            "another_key1": "another_val1",
            "another_key2": "another_val2"
        }
    ]
  }
}Any data in a valid JSON format can be placed in theprefs_config.json.The configuration data will be available as a Python dictionary.To access the Python dictonary, use thePreferencesclass like the example below:from dcd_py_util.prefs_config import Preferences

prefs: Preferences = Preferences().get_preferences()

print(prefs[logging][name])ThePreferencesis asingleton.It's possible to update the prefs file by using the methodPreferences().save_prefs()after change a value in
the prefs dictionary.The change will be visible to all variables (pointers) to the prefs dictionary.LoggerThe logger configures two log output handlers: console and file. The file handler makes logfile rotation soon it
achives the configured max size. The number logfiles kept can be also configured. The default values are 10 Mb as max
size and 30 files to be kept.Place theloggingconfiguration in theprefs_config.jsonlike in the below:{
  "logging": {
    "name": "logger_name",
    "folder": "./log",
    "filename": "log_filename.log",
    "max_size": 10485760,
    "file_count": 30,
    "console_level": "DEBUG",
    "file_level": "DEBUG"
  }
}The attributemax_sizeinforms the max size of the file in bytes. The attributefile_countinforms the
number of files to be kept. The rest of the attributes are pretty straightforward.The encoding used for the file handler ifutf-8.To access the logger in your Python code follow the example below:from dcd_py_util.logger import Logger

logger: Logger = Logger()

logger.info("This is an INFO level log entry")The available log level methods are the same for the standard Python logging.Logger class.It's possible to pass alogging.Loggerinstance in the constructor to use, for example, a Django logger. This
feature is present just to standardize your source code.EncryptionTo use theencryptionmodule to encrypt a text, use:from dcd_py_util import encryption

encrypted_text: str = encryption.encrypt("plain text to encrypt")To use theencryptionmodule to encrypt a text and include the "Encrypted" label in front of it, use:from dcd_py_util import encryption

encrypted_text_with_label: str = encryption.encrypt_with_label("plain text to encrypt")To use theencryptionmodule to decrypt an encrypted text, having the "Encrypted" label in front of it or not,
use:from dcd_py_util import encryption

plain_text_decrypted: str = encryption.decrypt("Encrypted <encrypted text>")