julienmalard/Tikon

View on GitHub
tikon/central/coso.py

Summary

Maintainability
A
3 hrs
Test Coverage
import os
from typing import Any

from tikon.utils import guardar_json, leer_json


class Coso(object):
    ecs_activas = True

    def __init__(símismo, nombre, ecs):
        símismo.nombre = nombre
        símismo.ecs = ecs.para_coso(coso=símismo)

    @property
    def índices_inter(símismo):
        return símismo.nombre

    def activar_ec(símismo, categ: str, subcateg: str, ec: str, **argspc: Any):
        símismo.ecs.activar_ec(categ, subcateg, ec)

    def activar_ecs(símismo, dic_ecs):
        for categ, d_cat in dic_ecs.items():
            for sub, ec in d_cat.items():
                símismo.activar_ec(categ, sub, ec)

    def desactivar_ec(símismo, categ, subcateg=None):
        símismo.ecs.desactivar_ec(categ=categ, subcateg=subcateg)

    def categ_activa(símismo, categ, modelo, mód, exper):
        return símismo.ecs[categ].activa(modelo, mód, exper, coso=símismo)

    def espec_apriori(símismo, apriori, categ, sub_categ, ec, prm, índs=None):
        símismo.ecs.espec_apriori(apriori, categ, sub_categ, ec, prm, inter=índs)

    def borrar_aprioris(símismo, categ=None, sub_categ=None, ec=None, prm=None, índs=None):
        símismo.ecs.borrar_aprioris(categ, sub_categ, ec, prm, índs=índs)

    def verificar(símismo):
        símismo.ecs.verificar()

    def guardar_calibs(símismo, directorio=''):
        arch = os.path.join(directorio, símismo.nombre + '.json')
        guardar_json(símismo._ecs_a_json(), arch)

    def borrar_calib(símismo, nombre):
        símismo.ecs.borrar_calib(nombre)

    def renombrar_calib(símismo, nombre, nuevo):
        símismo.ecs.renombrar_calib(nombre, nuevo)

    def cargar_calibs(símismo, archivo):
        if os.path.splitext(archivo) != '.json':
            archivo = os.path.join(archivo, símismo.nombre + '.json')
        calibs = leer_json(archivo)
        símismo._ecs_de_json(calibs)

    def _ecs_a_json(símismo):
        return símismo.ecs.a_dic()

    def _ecs_de_json(símismo, calibs):
        símismo.ecs.de_dic(calibs)

    def __str__(símismo):
        return símismo.nombre

    def __eq__(símismo, otro):
        return isinstance(otro, símismo.__class__) and símismo.nombre == otro.nombre

    def __hash__(símismo):
        return hash(símismo.nombre)


class SumaCosos(object):
    def __init__(símismo, cosos):
        símismo.cosos = cosos

    def __add__(símismo, otro):
        return SumaCosos(*list(otro), *símismo.cosos)

    def __iter__(símismo):
        for coso in símismo.cosos:
            yield coso