Customise supported formats
By default, the extensions supported by the loader/saver the following: csv, docx, jpg, json, md, parquet, pdf, pickle, png, pptx, sql, toml, txt, xlsx, xml, yaml, yml.
However, through the extra_loader_config and extra_saver_config parameters, Easy Environment allows you to customise any file format and integrate it into the tool.
Create a loader/saver function: create a loader or saver function for the corresponding extension.
A load function must contain the path argument, which represents the path to the file. It is also recommanded to pass a **kwargs arguments in order to allows greater flexibility when calling the loader though the EasyEnvironment instance.
def new_format_loader(path, **kwargs):
    # Loading process
    func.load(path, **kwargs)
        
    return objectA save function must contain the path and obj arguments, representing respectively the object to be saved and the access path to which to save.
def new_format_saver(obj, path, **kwargs):
    # saving process
    func.save(path, **kwargs)
    ...Initialise Easy Environment: create an instance of the EasyEnvironment class by specifying your loader and/or saver functions.
Loader and saver functions must be specified by a dictionnary in which the keys correspond to the extensions and the values correspond to a tuple. The tuple contains two elements : the created function and a string representing the reading/writing mode (either "rb" or "rt" for a loader / either "wb" or "wt" for a saver).
envi = EasyEnvironment(
    local_path='path/to/project/root',
    
    gcloud_project_id='your-project-id',
    gcloud_credential_path="path/to/credentials.json",
    GCS_path='gs://your-bucket-name/',
    
    extra_loader_config={'new_format': (new_format_loader, 'rb')},
    extra_saver_config={'new_format': (new_format_saver, 'wb')}
)Example of customisation:
In the above example, you can specify custom loader and saver functions for file extensions not covered by the default configurations. Just replace txt_loader_function and txt_saver_function with your own loader and saver functions, respectively.
Make sure to import the necessary functions and libraries for your custom loaders and savers.
# Defining loader and saver functions
def txt_loader(path, **kwargs):
    return path.read(**kwargs)
def txt_saver(obj, path, **kwargs):
    path.write(obj, **kwargs)
def json_loader(path, **kwargs):
    import json
    return json.load(path, **kwargs)
def json_saver(obj, path, **kwargs):
    import json
    json.dump(obj, path, **kwargs)
# Creating an instance of the EasyEnvironment class specifying the loader and saver
extra_loader_config = {
    'json': (json_loader, 'rt'),
    'txt':  (txt_loader, 'rt')
}
extra_writer_config = {
    'json': (json_writer, 'wt'),
    'txt':  (txt_writer, 'wt')
}
envi = EasyEnvironment(
    local_path='path/to/project/root',
    
    gcloud_project_id='your-project-id',
    gcloud_credential_path="path/to/credentials.json",
    GCS_path='gs://your-bucket-name/',
    
    extra_loader_config=extra_loader_config ,
    extra_saver_config=extra_saver_config 
)
# Using the tool
my_text = envi.local.load("folder/my_text.txt")
my_dict = {"text": my_text}
envi.local.save("folder/my_json.json")Other examples of loader/saver functions are available in Source Code.
Last updated