# -*- coding: utf-8 -*-
#
# Copyright (c) 2021 European Union;
# Licensed under the EUPL, Version 1.2 or – as soon they will be approved by the European Commission
# – subsequent versions of the EUPL (the "Licence");
#
# You may not use this work except in compliance with the Licence.
# You may obtain a copy of the Licence at: https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
"""
Functions and `dsp` model to writre data from a GEARSHIFT input file.
Sub-Modules:
.. currentmodule:: gearshift.core.write
.. autosummary::
:nosignatures:
:toctree: write/
excel
"""
import os
import os.path as osp
import logging
from .excel import write_to_excel
import schedula as sh
log = logging.getLogger(__name__)
dsp = sh.BlueDispatcher(
name="write", description="Produces a vehicle report from GEARSHIFT outputs."
)
def _default_output_file_name(output_folder, timestamp, case, output_format):
"""
Returns the output file name.
:param output_folder:
Output folder.
:type output_folder: str
:param vehicle_name:
Vehicle name.
:type vehicle_name: str
:param timestamp:
Run timestamp.
:type timestamp: str
:param ext:
File extension.
:type ext: str | None
:return:
Output file name.
:rtype: str
"""
fp = osp.join(output_folder, "%s-%s" % (timestamp, case))
if output_format is not None:
fp = "%s.%s" % (fp, output_format)
return fp
[docs]@sh.add_function(dsp)
def save_output_file(sol, output_folder, timestamp, output_format):
"""
Create a excel file for each input
:param sol:
List of dictionaries that contains the solution for the different inputs cases
:type sol: list
:param output_folder:
Path to save the different outputs files
:type output_folder: os.path
:param timestamp:
The current datetime
:type timestamp: datetime.datetime
:param output_format:
The extension format of the output file
:type output_format: str
"""
os.makedirs(osp.dirname(output_folder), exist_ok=True)
for case in sol:
fp = _default_output_file_name(
output_folder, timestamp, case["Case"], output_format
)
write_to_excel(case, fp)