# Path: tinamit/config.py
# class OpsConfig(object):
# class Config(OpsConfig):
# class Trads(object):
#     def __init__(símismo, pariente, valores=None):
#     def a_dic(símismo):
#     def borrar(símismo, llave):
#     def guardar(símismo):
#     def __contains__(símismo, itema):
#     def __getitem__(símismo, itema):
#     def __setitem__(símismo, llave, valor):
#     def __init__(símismo, archivo, auto=None):
#     def reinic(símismo):
#     def borrar(símismo, llave):
#     def guardar(símismo):
#     def __setitem__(símismo, llave, valor):
#     def __init__(símismo, dir_local):
#     def idioma(símismo):
#     def auxiliares(símismo):
#     def cambiar_idioma(símismo, idioma):
#     def cambiar_aux(símismo, aux):
#     def trad(símismo, texto):
#     def _regen_trads(símismo):
#     AUX = 'aux'
#     PRINC = 'principal'
#     DOMINIO = 'leng'
# 
# Path: tinamit/cositas.py
# def guardar_json(obj, arch):
#     """
#     Guarda un fuente json, sin riesgo de corrumpir el fuente si se interrumpe el programa mientras escribía al disco.
# 
#     Parameters
#     ----------
#     obj : list | dict
#         Objeto compatible json.
#     arch : str
#         El fuente en el cual hay que guardar el objeto json.
# 
#     """
#     nmbr, ext = os.path.splitext(arch)
#     if not len(ext):
#         arch = nmbr + '.json'
# 
#     contenido = json.dumps(obj, ensure_ascii=False, sort_keys=True, indent=2)
#     guardar_archivo(arch, contenido=contenido)
# 
# def cargar_json(arch, codif='UTF-8'):
#     """
#     Cargar un fuente json.
# 
#     Parameters
#     ----------
#     arch : str
#         El fuente en el cual se encuentra el objeto json.
#     codif : str
#         La codificación del fuente.
# 
#     Returns
#     -------
#     dict | list
#         El objeto json.
# 
#     """
# 
#     nmbr, ext = os.path.splitext(arch)
#     if not len(ext):
#         arch = nmbr + '.json'
# 
#     with open(arch, 'r', encoding=codif) as d:
#         return json.load(d)


import json
import os
import babel
import pint
import pkg_resources
from itertools import chain as cadena
from pint import UnitRegistry
from tinamit.config import _
from tinamit.cositas import guardar_json, cargar_json
    unids_doc = {d['en']['pr'].lower() for d in l_d_t if 'en' in d}

    # unids en Pint pero no en nuestro diccionario
    unids_faltan = c_unids.difference(unids_doc)

    # Lenguas ya incluidas en nuestro diccionario
    lengs = set(cadena.from_iterable([list(d) for d in l_d_t]))

    # Agregar las unidades de Pint que faltan
    for u in unids_faltan:  # pragma: sin cobertura
        d_u = {'en': {'pr': u, 'sn': []}}
        d_u.update({lng: {'pr': '', 'sn': []} for lng in lengs if lng != 'en'})
        l_d_t.append(d_u)

    # Limpiar el diccionario de traducciones
    for d in l_d_t:
        # Para cada unidad...
        for l, t in d.items():  # type: str, dict
            # Para cada lengua y diccionario de traducción...

            # Quitar nombres de unidades que estarían en la lista de sinónimos por error
            if t['pr'] in t['sn']:
                t['sn'].remove(t['pr'])

            d[l]['sn'] = list(set(t['sn']))  # Quitar sinónimos duplicados
            d[l]['sn'].sort()  # Ordenar los sinónimos

    # Guardar el diccionario de traducciones si hubieron modificaciones
    if hash(str(l_d_t)) != antes:
        try:

# Path: tinamit/config.py
# class OpsConfig(object):
# class Config(OpsConfig):
# class Trads(object):
#     def __init__(símismo, pariente, valores=None):
#     def a_dic(símismo):
#     def borrar(símismo, llave):
#     def guardar(símismo):
#     def __contains__(símismo, itema):
#     def __getitem__(símismo, itema):
#     def __setitem__(símismo, llave, valor):
#     def __init__(símismo, archivo, auto=None):
#     def reinic(símismo):
#     def borrar(símismo, llave):
#     def guardar(símismo):
#     def __setitem__(símismo, llave, valor):
#     def __init__(símismo, dir_local):
#     def idioma(símismo):
#     def auxiliares(símismo):
#     def cambiar_idioma(símismo, idioma):
#     def cambiar_aux(símismo, aux):
#     def trad(símismo, texto):
#     def _regen_trads(símismo):
#     AUX = 'aux'
#     PRINC = 'principal'
#     DOMINIO = 'leng'
# 
# Path: tinamit/cositas.py
# def guardar_json(obj, arch):
#     """
#     Guarda un fuente json, sin riesgo de corrumpir el fuente si se interrumpe el programa mientras escribía al disco.
# 
#     Parameters
#     ----------
#     obj : list | dict
#         Objeto compatible json.
#     arch : str
#         El fuente en el cual hay que guardar el objeto json.
# 
#     """
#     nmbr, ext = os.path.splitext(arch)
#     if not len(ext):
#         arch = nmbr + '.json'
# 
#     contenido = json.dumps(obj, ensure_ascii=False, sort_keys=True, indent=2)
#     guardar_archivo(arch, contenido=contenido)
# 
# def cargar_json(arch, codif='UTF-8'):
#     """
#     Cargar un fuente json.
# 
#     Parameters
#     ----------
#     arch : str
#         El fuente en el cual se encuentra el objeto json.
#     codif : str
#         La codificación del fuente.
# 
#     Returns
#     -------
#     dict | list
#         El objeto json.
# 
#     """
# 
#     nmbr, ext = os.path.splitext(arch)
#     if not len(ext):
#         arch = nmbr + '.json'
# 
#     with open(arch, 'r', encoding=codif) as d:
#         return json.load(d)


# Path: tinamit/unids/trads.py
import json
import os
import babel
import pint
import pkg_resources
from itertools import chain as cadena
from pint import UnitRegistry
from tinamit.config import _
from tinamit.cositas import guardar_json, cargar_json

    unids_doc = {d['en']['pr'].lower() for d in l_d_t if 'en' in d}

    # unids en Pint pero no en nuestro diccionario
    unids_faltan = c_unids.difference(unids_doc)

    # Lenguas ya incluidas en nuestro diccionario
    lengs = set(cadena.from_iterable([list(d) for d in l_d_t]))

    # Agregar las unidades de Pint que faltan
    for u in unids_faltan:  # pragma: sin cobertura
        d_u = {'en': {'pr': u, 'sn': []}}
        d_u.update({lng: {'pr': '', 'sn': []} for lng in lengs if lng != 'en'})
        l_d_t.append(d_u)

    # Limpiar el diccionario de traducciones
    for d in l_d_t:
        # Para cada unidad...
        for l, t in d.items():  # type: str, dict
            # Para cada lengua y diccionario de traducción...

            # Quitar nombres de unidades que estarían en la lista de sinónimos por error
            if t['pr'] in t['sn']:
                t['sn'].remove(t['pr'])

            d[l]['sn'] = list(set(t['sn']))  # Quitar sinónimos duplicados
            d[l]['sn'].sort()  # Ordenar los sinónimos

    # Guardar el diccionario de traducciones si hubieron modificaciones
    if hash(str(l_d_t)) != antes:
        try:

            guardar_json(obj=l_d_t, arch=_archivo_trads)