Code source de tradssat.mgrs.wth_mgr

import os

from tradssat import WTHFile
from .mgr import PeriphFileMgr, get_dssat_subdir


class PeriphWeatherMgr(PeriphFileMgr):

    def __init__(self, codes, levels):
        self.files = {lvl: WeatherFileMgr(cd) for cd, lvl in zip(codes, levels)}

    def get_value(self, var, level):
        self.files[level].get_value(var)

    def set_value(self, var, val, level):
        self.files[level].set_value(var, val)

    def variables(self):
        return {str(vr) for f in self.files.values() for vr in f.variables()}

    def write(self, force=False):
        for f in self.files.values():
            f.write(force)


[docs]class WeatherFileMgr(object): def __init__(self, code): weather_dir = get_dssat_subdir('Weather') gen_weather_dir = os.path.join(weather_dir, 'Gen') self.file = None for d in [weather_dir, gen_weather_dir]: for f in os.listdir(d): if WTHFile.matches_file(f): name = os.path.split(os.path.splitext(f)[0])[1] if name.startswith(code): self.file = WTHFile(os.path.join(d, f)) break if self.file is None: raise ValueError('No weather file found matching "{}".'.format(code)) def get_value(self, var): return self.file.get_value(var) def variables(self): return self.file.variables()