Source code for ogstools.materiallib.schema.required_properties
# Copyright (c) 2012-2025, OpenGeoSys Community (http://www.opengeosys.org)
# Distributed under a Modified BSD License.
# See accompanying file LICENSE.txt or
# http://www.opengeosys.org/project/license
#
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