Source code for ogstools.materiallib.schema.required_properties

# SPDX-FileCopyrightText: Copyright (c) OpenGeoSys Community (opengeosys.org)
# SPDX-License-Identifier: BSD-3-Clause

from typing import Any


[docs] def required_property_names(schema: dict[str, Any]) -> set[str]: """ Collect all required property names from a process schema. Includes medium-level, phase-level and component-level properties. """ required: set[str] = set() PHASES_WITH_COMPONENTS = {"AqueousLiquid", "Gas", "NonAqueousLiquid"} # Medium-level medium_properties = schema.get("properties", []) required.update(medium_properties) # Phase + components for phase in schema.get("phases", []): required.update(phase.get("properties", [])) if phase.get("type") in PHASES_WITH_COMPONENTS: for component_props in phase.get("components", {}).values(): required.update(component_props) return required