fgen.data_models.unitless_value#

Data model of a value, excluding units

UnitlessValue#

class UnitlessValue(name, description, fortran_type, is_fortran_units_holder=False, expose_getter_to_python=True, expose_setter_to_python=False)[source]#

Bases: object

Data model of a value excluding units

This defines the value’s Fortran data type and other metadata. It also allows us to get the equivalent Python type.

as_fortran_data_type()[source]#

Convert self to its equivalent FortranDataType

Return type:

fgen.fortran_parsing.FortranDataType

description: str#

Description of the value

expose_getter_to_python: bool#

Should a getter for this value be exposed to Python?

If True, we expose a getter for this value to Python, otherwise we don’t.

expose_setter_to_python: bool#

Should a setter for this value be exposed to Python?

If True, we expose a setter for this value to Python, otherwise we don’t.

fortran_type: str#

The value’s fortran type

The following built-in Fortran types are supported:

  • integer

  • real

  • real(8)

  • character

Some additional attributes are supported including:

  • fixed length dimensions

  • automatic explicit length dimensions (e.g. using a variable “n” to specify the size of a dimension)

is_fortran_units_holder: bool#

Is this value the attribute which specifies the units in the Fortran derived type?

If True, it is not not included in Python wrappers, instead being passed automatically to Fortran based on the units extracted from pint quantities in Python.

property is_numeric_type: bool#

Whether this definition defines a numeric type or not

Returns:

True if this definition defines a numeric type, False otherwise.

property is_python_bool_type: bool#

Whether this definition corresponds to a boolean

The concept of a boolean obviously only applies in Python. In Fortran, the equivalent is a logical type.

Returns:

  • True if this definition defines a type

  • whose Python equivalent is boolean,

  • False otherwise.

property is_python_str_type: bool#

Whether this definition corresponds to a string

The concept of a string obviously only applies in Python. In Fortran, the equivalent is a character type.

Returns:

  • True if this definition defines a type

  • whose Python equivalent is string,

  • False otherwise.

name: str#

Name of the value

python_type_as_str()[source]#

Determine the string representation of the Python type

The python templator uses this function to translate a Python type to a string so that it can correctly be read by Python. If these type hints are converted to a string naively, the corresponding string will not be able to be read by Python as a valid type hint.

Returns:

str – String representation of python_type