""" Utilities for operating on Material objects. """

from typing import Dict, List
from .msh_material import *
from .msh_model import *

def remove_unused_materials(materials: Dict[str, Material], 
                            models: List[Model]) -> Dict[str, Material]:
    """ Given a dictionary of materials and a list of models
        returns a dictionary containing only the materials that are used. """

    filtered_materials: Dict[str, Material] = {}

    for model in models:
        if model.geometry is None:
            continue

        for segment in model.geometry:
            if not segment.material_name:
                continue

            filtered_materials[segment.material_name] = materials[segment.material_name]

    return filtered_materials