Source code for fgen.wrapping_strategies.passing_to_fortran_steps

"""
Data model for how we pass data from Python to Fortran
"""
from __future__ import annotations

from typing import Optional

from attrs import define


[docs]@define class PassingToFortranSteps: """ Container for holding the steps required to pass data to Fortran """ preparatory_python_calls: Optional[str] """Calls required in Python to prepare to pass the data to Fortran""" fortran_module_callable_args: tuple[tuple[str, str], ...] """ Tuple of argument-value pairs to pass to the Fortran module callable The first element of each element in ``fortran_module_callable_args`` is the name expected by Fortran, the second element is the name of the Python variable. There might be differences from the user-facing Python arguments, because we don't always pass values straight through. """ @property def fortran_callable_arg_list(self) -> list[str]: """ Argument list to use when calling a Fortran callable Note that this may not be the entire argument list, it is only the calls for the arguments managed by ``self``. """ return [ f"{arg_fortran}={arg_python}" for arg_fortran, arg_python in self.fortran_module_callable_args ]