<a id="api-recipe-output"></a>

# Recipe output

This section describes the [`recipe_output`](#module-esmvalcore.experimental.recipe_output) submodule of the API (`esmvalcore.experimental`).

After running a recipe, output is returned by the [`run()`](esmvalcore.experimental.recipe.html.md#esmvalcore.experimental.recipe.Recipe.run) method. Alternatively, it can be retrieved using the [`get_output()`](esmvalcore.experimental.recipe.html.md#esmvalcore.experimental.recipe.Recipe.get_output) method.

```python
>>> recipe_output = recipe.get_output()
```

`recipe_output` is a mapping of the individual tasks and their output
filenames (data and image files) with a set of attributes describing the
data.

```python
>>> recipe_output
timeseries/script1:
  DataFile('tas_amsterdam_CMIP5_CanESM2_Amon_historical_r1i1p1_tas_1850-2000.nc')
  DataFile('tas_amsterdam_CMIP6_BCC-ESM1_Amon_historical_r1i1p1f1_tas_1850-2000.nc')
  DataFile('tas_amsterdam_MultiModelMean_Amon_tas_1850-2000.nc')
  DataFile('tas_global_CMIP5_CanESM2_Amon_historical_r1i1p1_tas_1850-2000.nc')
  DataFile('tas_global_CMIP6_BCC-ESM1_Amon_historical_r1i1p1f1_tas_1850-2000.nc')
  ImageFile('tas_amsterdam_CMIP5_CanESM2_Amon_historical_r1i1p1_tas_1850-2000.png')
  ImageFile('tas_amsterdam_CMIP6_BCC-ESM1_Amon_historical_r1i1p1f1_tas_1850-2000.png')
  ImageFile('tas_amsterdam_MultiModelMean_Amon_tas_1850-2000.png')
  ImageFile('tas_global_CMIP5_CanESM2_Amon_historical_r1i1p1_tas_1850-2000.png')
  ImageFile('tas_global_CMIP6_BCC-ESM1_Amon_historical_r1i1p1f1_tas_1850-2000.png')

map/script1:
  DataFile('CMIP5_CanESM2_Amon_historical_r1i1p1_tas_2000-2000.nc')
  DataFile('CMIP6_BCC-ESM1_Amon_historical_r1i1p1f1_tas_2000-2000.nc')
  ImageFile('CMIP5_CanESM2_Amon_historical_r1i1p1_tas_2000-2000.png')
  ImageFile('CMIP6_BCC-ESM1_Amon_historical_r1i1p1f1_tas_2000-2000.png')
```

Output is grouped by the task that produced them. They can be accessed like
a dictionary.

```python
>>> task_output = recipe_output['map/script1']
>>> task_output
map/script1:
  DataFile('CMIP5_CanESM2_Amon_historical_r1i1p1_tas_2000-2000.nc')
  DataFile('CMIP6_BCC-ESM1_Amon_historical_r1i1p1f1_tas_2000-2000.nc')
  ImageFile('CMIP5_CanESM2_Amon_historical_r1i1p1_tas_2000-2000.png')
  ImageFile('CMIP6_BCC-ESM1_Amon_historical_r1i1p1f1_tas_2000-2000.png')
```

The task output has a list of files associated with them, usually image
(`.png`) or data files (`.nc`). To get a list of all files, use
`files()`.

```python
>>> print(task_output.files)
(DataFile('CMIP5_CanESM2_Amon_historical_r1i1p1_tas_2000-2000.nc'),
..., ImageFile('CMIP6_BCC-ESM1_Amon_historical_r1i1p1f1_tas_2000-2000.png'))
```

It is also possible to select the image ([`image_files()`](#esmvalcore.experimental.recipe_output.TaskOutput.image_files)) files or data files ([`data_files()`](#esmvalcore.experimental.recipe_output.TaskOutput.data_files)) only.

```python
>>> for image_file in task_output.image_files:
>>>     print(image_file)
ImageFile('CMIP5_CanESM2_Amon_historical_r1i1p1_tas_2000-2000.png')
ImageFile('CMIP6_BCC-ESM1_Amon_historical_r1i1p1f1_tas_2000-2000.png')

>>> for data_file in task_output.data_files:
>>>     print(data_file)
DataFile('CMIP5_CanESM2_Amon_historical_r1i1p1_tas_2000-2000.nc')
DataFile('CMIP6_BCC-ESM1_Amon_historical_r1i1p1f1_tas_2000-2000.nc')
```

## Working with output files

Output comes in two kinds, [`DataFile`](#esmvalcore.experimental.recipe_output.DataFile) corresponds to data
files in `.nc` format and [`ImageFile`](#esmvalcore.experimental.recipe_output.ImageFile) corresponds to plots
in `.png` format (see below). Both object are derived from the same base class
([`OutputFile`](#esmvalcore.experimental.recipe_output.OutputFile)) and therefore share most of the functionality.

For example, author information can be accessed as instances of [`Contributor`](esmvalcore.experimental.recipe_metadata.html.md#esmvalcore.experimental.recipe_metadata.Contributor)  via

```python
>>> output_file = task_output[0]
>>> output_file.authors
(Contributor('Andela, Bouwe', institute='NLeSC, Netherlands', orcid='https://orcid.org/0000-0001-9005-8940'),
 Contributor('Righi, Mattia', institute='DLR, Germany', orcid='https://orcid.org/0000-0003-3827-5950'))
```

And associated references as instances of [`Reference`](esmvalcore.experimental.recipe_metadata.html.md#esmvalcore.experimental.recipe_metadata.Reference) via

```python
>>> output_file.references
(Reference('acknow_project'),)
```

[`OutputFile`](#esmvalcore.experimental.recipe_output.OutputFile) also knows about associated files

```python
>>> data_file.citation_file
Path('.../tas_global_CMIP6_BCC-ESM1_Amon_historical_r1i1p1f1_tas_1850-2000_citation.bibtex')
>>> data_file.data_citation_file
Path('.../tas_global_CMIP6_BCC-ESM1_Amon_historical_r1i1p1f1_tas_1850-2000_data_citation_info.txt')
>>> data_file.provenance_svg_file
Path('.../tas_global_CMIP6_BCC-ESM1_Amon_historical_r1i1p1f1_tas_1850-2000_provenance.svg')
>>> data_file.provenance_xml_file
Path('.../tas_global_CMIP6_BCC-ESM1_Amon_historical_r1i1p1f1_tas_1850-2000_provenance.xml')
```

## Working with image files

Image output uses IPython magic to plot themselves in a notebook
environment.

```python
>>> image_file = recipe_output['map/script1'].image_files[0]
>>> image_file
```

For example:

![image](figures/api_recipe_output.png)

Using `IPython.display`, it is possible to show all image files.

```python
>>> from IPython.display import display
>>>
>>> task = recipe_output['map/script1']
>>> for image_file in task.image_files:
>>>      display(image_file)
```

## Working with data files

Data files can be easily loaded using `xarray`:

```python
>>> data_file = recipe_output['timeseries/script1'].data_files[0]
>>> data = data_file.load_xarray()
>>> type(data)
xarray.core.dataset.Dataset
```

Or `iris`:

```python
>>> cube = data_file.load_iris()
>>> type(cube)
iris.cube.CubeList
```

## API reference

API for handing recipe output.

**Classes:**

| [`DataFile`](#esmvalcore.experimental.recipe_output.DataFile)(path[, attributes])                      | Container for data output.              |
|----------------------------------------------------------------------------------------------------|-----------------------------------------|
| [`DiagnosticOutput`](#esmvalcore.experimental.recipe_output.DiagnosticOutput)(name, task_output[, title, ...]) | Container for diagnostic output.        |
| [`ImageFile`](#esmvalcore.experimental.recipe_output.ImageFile)(path[, attributes])                     | Container for image output.             |
| [`OutputFile`](#esmvalcore.experimental.recipe_output.OutputFile)(path[, attributes])                    | Base container for recipe output files. |
| [`RecipeOutput`](#esmvalcore.experimental.recipe_output.RecipeOutput)(task_output, session, info)          | Container for recipe output.            |
| [`TaskOutput`](#esmvalcore.experimental.recipe_output.TaskOutput)(name, files)                           | Container for task output.              |

### *class* esmvalcore.experimental.recipe_output.DataFile(path: [str](https://docs.python.org/3/builtins/stdtypes.html#str), attributes: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict) | [None](https://docs.python.org/3/builtins/constants.html#None) = None)

Bases: [`OutputFile`](#esmvalcore.experimental.recipe_output.OutputFile)

Container for data output.

**Attributes:**

| [`authors`](#esmvalcore.experimental.recipe_output.DataFile.authors)             | List of recipe authors.                            |
|----------------------------------------------------------------------|----------------------------------------------------|
| [`caption`](#esmvalcore.experimental.recipe_output.DataFile.caption)             | Return the caption of the file (fallback to path). |
| [`citation_file`](#esmvalcore.experimental.recipe_output.DataFile.citation_file)       | Return path of citation file (bibtex format).      |
| [`data_citation_file`](#esmvalcore.experimental.recipe_output.DataFile.data_citation_file)  | Return path of data citation info (txt format).    |
| [`kind`](#esmvalcore.experimental.recipe_output.DataFile.kind)                |                                                    |
| [`provenance_xml_file`](#esmvalcore.experimental.recipe_output.DataFile.provenance_xml_file) | Return path of provenance file (xml format).       |
| [`references`](#esmvalcore.experimental.recipe_output.DataFile.references)          | List of project references.                        |

**Methods:**

| [`create`](#esmvalcore.experimental.recipe_output.DataFile.create)(path[, attributes])   | Construct new instances of OutputFile.   |
|-------------------------------------------------------------------------------|------------------------------------------|
| [`load_iris`](#esmvalcore.experimental.recipe_output.DataFile.load_iris)()                  | Load data using iris.                    |
| [`load_xarray`](#esmvalcore.experimental.recipe_output.DataFile.load_xarray)()                | Load data using xarray.                  |
* **Parameters:**
  * **path** ([*str*](https://docs.python.org/3/builtins/stdtypes.html#str))
  * **attributes** ([*dict*](https://docs.python.org/3/builtins/stdtypes.html#dict) *|* *None*)

#### *property* authors *: [tuple](https://docs.python.org/3/builtins/stdtypes.html#tuple)*

List of recipe authors.

#### *property* caption *: [str](https://docs.python.org/3/builtins/stdtypes.html#str)*

Return the caption of the file (fallback to path).

#### *property* citation_file

Return path of citation file (bibtex format).

#### *classmethod* create(path: [str](https://docs.python.org/3/builtins/stdtypes.html#str), attributes: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict) | [None](https://docs.python.org/3/builtins/constants.html#None) = None) → [OutputFile](#esmvalcore.experimental.recipe_output.OutputFile)

Construct new instances of OutputFile.

Chooses a derived class if suitable.

* **Parameters:**
  * **path** ([*str*](https://docs.python.org/3/builtins/stdtypes.html#str))
  * **attributes** ([*dict*](https://docs.python.org/3/builtins/stdtypes.html#dict) *|* *None*)
* **Return type:**
  [*OutputFile*](#esmvalcore.experimental.recipe_output.OutputFile)

#### *property* data_citation_file

Return path of data citation info (txt format).

#### kind *: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None)* *= 'data'*

#### load_iris()

Load data using iris.

#### load_xarray()

Load data using xarray.

#### *property* provenance_xml_file

Return path of provenance file (xml format).

#### *property* references *: [tuple](https://docs.python.org/3/builtins/stdtypes.html#tuple)*

List of project references.

### *class* esmvalcore.experimental.recipe_output.DiagnosticOutput(name, task_output, title=None, description=None)

Bases: [`object`](https://docs.python.org/3/builtins/functions.html#object)

Container for diagnostic output.

* **Parameters:**
  * **name** ([*str*](https://docs.python.org/3/builtins/stdtypes.html#str)) – Name of the diagnostic
  * **title** ([*str*](https://docs.python.org/3/builtins/stdtypes.html#str)) – Title of the diagnostic
  * **description** ([*str*](https://docs.python.org/3/builtins/stdtypes.html#str)) – Description of the diagnostic
  * **task_output** ([`list`](https://docs.python.org/3/builtins/stdtypes.html#list) of [`TaskOutput`](#esmvalcore.experimental.recipe_output.TaskOutput)) – List of task output.

### *class* esmvalcore.experimental.recipe_output.ImageFile(path: [str](https://docs.python.org/3/builtins/stdtypes.html#str), attributes: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict) | [None](https://docs.python.org/3/builtins/constants.html#None) = None)

Bases: [`OutputFile`](#esmvalcore.experimental.recipe_output.OutputFile)

Container for image output.

**Attributes:**

| [`authors`](#esmvalcore.experimental.recipe_output.ImageFile.authors)             | List of recipe authors.                            |
|----------------------------------------------------------------------|----------------------------------------------------|
| [`caption`](#esmvalcore.experimental.recipe_output.ImageFile.caption)             | Return the caption of the file (fallback to path). |
| [`citation_file`](#esmvalcore.experimental.recipe_output.ImageFile.citation_file)       | Return path of citation file (bibtex format).      |
| [`data_citation_file`](#esmvalcore.experimental.recipe_output.ImageFile.data_citation_file)  | Return path of data citation info (txt format).    |
| [`kind`](#esmvalcore.experimental.recipe_output.ImageFile.kind)                |                                                    |
| [`provenance_xml_file`](#esmvalcore.experimental.recipe_output.ImageFile.provenance_xml_file) | Return path of provenance file (xml format).       |
| [`references`](#esmvalcore.experimental.recipe_output.ImageFile.references)          | List of project references.                        |

**Methods:**

| [`create`](#esmvalcore.experimental.recipe_output.ImageFile.create)(path[, attributes])   | Construct new instances of OutputFile.                 |
|-------------------------------------------------------------------------------|--------------------------------------------------------|
| [`to_base64`](#esmvalcore.experimental.recipe_output.ImageFile.to_base64)()                  | Encode image as base64 to embed in a Jupyter notebook. |
* **Parameters:**
  * **path** ([*str*](https://docs.python.org/3/builtins/stdtypes.html#str))
  * **attributes** ([*dict*](https://docs.python.org/3/builtins/stdtypes.html#dict) *|* *None*)

#### *property* authors *: [tuple](https://docs.python.org/3/builtins/stdtypes.html#tuple)*

List of recipe authors.

#### *property* caption *: [str](https://docs.python.org/3/builtins/stdtypes.html#str)*

Return the caption of the file (fallback to path).

#### *property* citation_file

Return path of citation file (bibtex format).

#### *classmethod* create(path: [str](https://docs.python.org/3/builtins/stdtypes.html#str), attributes: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict) | [None](https://docs.python.org/3/builtins/constants.html#None) = None) → [OutputFile](#esmvalcore.experimental.recipe_output.OutputFile)

Construct new instances of OutputFile.

Chooses a derived class if suitable.

* **Parameters:**
  * **path** ([*str*](https://docs.python.org/3/builtins/stdtypes.html#str))
  * **attributes** ([*dict*](https://docs.python.org/3/builtins/stdtypes.html#dict) *|* *None*)
* **Return type:**
  [*OutputFile*](#esmvalcore.experimental.recipe_output.OutputFile)

#### *property* data_citation_file

Return path of data citation info (txt format).

#### kind *: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None)* *= 'image'*

#### *property* provenance_xml_file

Return path of provenance file (xml format).

#### *property* references *: [tuple](https://docs.python.org/3/builtins/stdtypes.html#tuple)*

List of project references.

#### to_base64() → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

Encode image as base64 to embed in a Jupyter notebook.

* **Return type:**
  [str](https://docs.python.org/3/builtins/stdtypes.html#str)

### *class* esmvalcore.experimental.recipe_output.OutputFile(path: [str](https://docs.python.org/3/builtins/stdtypes.html#str), attributes: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict) | [None](https://docs.python.org/3/builtins/constants.html#None) = None)

Bases: [`object`](https://docs.python.org/3/builtins/functions.html#object)

Base container for recipe output files.

Use OutputFile.create(path=’<path>’, attributes=attributes) to
initialize a suitable subclass.

* **Parameters:**
  * **path** ([*str*](https://docs.python.org/3/builtins/stdtypes.html#str)) – Name of output file
  * **attributes** ([*dict*](https://docs.python.org/3/builtins/stdtypes.html#dict)) – Attributes corresponding to the recipe output

**Attributes:**

| [`authors`](#esmvalcore.experimental.recipe_output.OutputFile.authors)             | List of recipe authors.                            |
|----------------------------------------------------------------------|----------------------------------------------------|
| [`caption`](#esmvalcore.experimental.recipe_output.OutputFile.caption)             | Return the caption of the file (fallback to path). |
| [`citation_file`](#esmvalcore.experimental.recipe_output.OutputFile.citation_file)       | Return path of citation file (bibtex format).      |
| [`data_citation_file`](#esmvalcore.experimental.recipe_output.OutputFile.data_citation_file)  | Return path of data citation info (txt format).    |
| [`kind`](#esmvalcore.experimental.recipe_output.OutputFile.kind)                |                                                    |
| [`provenance_xml_file`](#esmvalcore.experimental.recipe_output.OutputFile.provenance_xml_file) | Return path of provenance file (xml format).       |
| [`references`](#esmvalcore.experimental.recipe_output.OutputFile.references)          | List of project references.                        |

**Methods:**

| [`create`](#esmvalcore.experimental.recipe_output.OutputFile.create)(path[, attributes])   | Construct new instances of OutputFile.   |
|-------------------------------------------------------------------------------|------------------------------------------|

#### *property* authors *: [tuple](https://docs.python.org/3/builtins/stdtypes.html#tuple)*

List of recipe authors.

#### *property* caption *: [str](https://docs.python.org/3/builtins/stdtypes.html#str)*

Return the caption of the file (fallback to path).

#### *property* citation_file

Return path of citation file (bibtex format).

#### *classmethod* create(path: [str](https://docs.python.org/3/builtins/stdtypes.html#str), attributes: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict) | [None](https://docs.python.org/3/builtins/constants.html#None) = None) → [OutputFile](#esmvalcore.experimental.recipe_output.OutputFile)

Construct new instances of OutputFile.

Chooses a derived class if suitable.

* **Parameters:**
  * **path** ([*str*](https://docs.python.org/3/builtins/stdtypes.html#str))
  * **attributes** ([*dict*](https://docs.python.org/3/builtins/stdtypes.html#dict) *|* *None*)
* **Return type:**
  [*OutputFile*](#esmvalcore.experimental.recipe_output.OutputFile)

#### *property* data_citation_file

Return path of data citation info (txt format).

#### kind *: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None)* *= None*

#### *property* provenance_xml_file

Return path of provenance file (xml format).

#### *property* references *: [tuple](https://docs.python.org/3/builtins/stdtypes.html#tuple)*

List of project references.

### *class* esmvalcore.experimental.recipe_output.RecipeOutput(task_output: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), Any]], session: [esmvalcore.config.Session](esmvalcore.config.html.md#esmvalcore.config.Session), info: RecipeInfo)

Bases: [`Mapping`](https://docs.python.org/3/library/collections.abc.html#collections.abc.Mapping)

Container for recipe output.

* **Parameters:**
  * **task_output** ([*dict*](https://docs.python.org/3/builtins/stdtypes.html#dict) *[*[*str*](https://docs.python.org/3/builtins/stdtypes.html#str) *,* [*dict*](https://docs.python.org/3/builtins/stdtypes.html#dict) *[*[*str*](https://docs.python.org/3/builtins/stdtypes.html#str) *,* *Any* *]* *]*) – Dictionary with recipe output grouped by task name. Each task value is
    a mapping of the filenames with the product attributes.
  * **session** ([*esmvalcore.config.Session*](esmvalcore.config.html.md#esmvalcore.config.Session))
  * **info** (*RecipeInfo*)

#### diagnostics

Dictionary with recipe output grouped by diagnostic.

#### session

The session used to run the recipe.

#### info

The recipe used to create the output.

**Attributes:**

| [`FILTER_ATTRS`](#esmvalcore.experimental.recipe_output.RecipeOutput.FILTER_ATTRS)   |    |
|-----------------------------------------------------------------|----|

**Methods:**

| [`from_core_recipe_output`](#esmvalcore.experimental.recipe_output.RecipeOutput.from_core_recipe_output)(recipe_output)   | Construct instance from esmvalcore._recipe.recipe.Recipe.get_output.   |
|-------------------------------------------------------------------------------------------|------------------------------------------------------------------------|
| [`get`](#esmvalcore.experimental.recipe_output.RecipeOutput.get)(k[,d])                               |                                                                        |
| [`items`](#esmvalcore.experimental.recipe_output.RecipeOutput.items)()                                  |                                                                        |
| [`keys`](#esmvalcore.experimental.recipe_output.RecipeOutput.keys)()                                   |                                                                        |
| [`read_main_log`](#esmvalcore.experimental.recipe_output.RecipeOutput.read_main_log)()                          | Read log file.                                                         |
| [`read_main_log_debug`](#esmvalcore.experimental.recipe_output.RecipeOutput.read_main_log_debug)()                    | Read debug log file.                                                   |
| [`render`](#esmvalcore.experimental.recipe_output.RecipeOutput.render)([template])                       | Render output as html.                                                 |
| [`values`](#esmvalcore.experimental.recipe_output.RecipeOutput.values)()                                 |                                                                        |
| [`write_html`](#esmvalcore.experimental.recipe_output.RecipeOutput.write_html)()                             | Write output summary to html document.                                 |

#### FILTER_ATTRS *: [tuple](https://docs.python.org/3/builtins/stdtypes.html#tuple)* *= ('realms', 'plot_type', 'plot_types', 'long_names')*

#### *classmethod* from_core_recipe_output(recipe_output: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)) → [Self](https://docs.python.org/3/library/typing.html#typing.Self)

Construct instance from esmvalcore._recipe.recipe.Recipe.get_output.

The core recipe format is not directly compatible with the API. This
constructor converts the raw recipe dict to `RecipeInfo`

* **Parameters:**
  **recipe_output** ([*dict*](https://docs.python.org/3/builtins/stdtypes.html#dict)) – Output from esmvalcore._recipe.recipe.Recipe.get_output
* **Return type:**
  [*Self*](https://docs.python.org/3/library/typing.html#typing.Self)

#### get(k) → D[k] if k in D, else d.  d defaults to None.

#### items() → a set-like object providing a view on D's items

#### keys() → a set-like object providing a view on D's keys

#### read_main_log() → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

Read log file.

* **Return type:**
  [str](https://docs.python.org/3/builtins/stdtypes.html#str)

#### read_main_log_debug() → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

Read debug log file.

* **Return type:**
  [str](https://docs.python.org/3/builtins/stdtypes.html#str)

#### render(template=None)

Render output as html.

template
: An instance of `jinja2.Template` can be passed to
  customize the output.

#### values() → an object providing a view on D's values

#### write_html()

Write output summary to html document.

A html file index.html gets written to the session directory.

### *class* esmvalcore.experimental.recipe_output.TaskOutput(name: [str](https://docs.python.org/3/builtins/stdtypes.html#str), files: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict))

Bases: [`object`](https://docs.python.org/3/builtins/functions.html#object)

Container for task output.

* **Parameters:**
  * **name** ([*str*](https://docs.python.org/3/builtins/stdtypes.html#str)) – Name of the task
  * **files** ([*dict*](https://docs.python.org/3/builtins/stdtypes.html#dict)) – Mapping of the filenames with the associated attributes.

**Attributes:**

| [`data_files`](#esmvalcore.experimental.recipe_output.TaskOutput.data_files)   | Return a tuple of data objects.   |
|---------------------------------------------------------------|-----------------------------------|
| [`image_files`](#esmvalcore.experimental.recipe_output.TaskOutput.image_files)  | Return a tuple of image objects.  |

**Methods:**

| [`from_task`](#esmvalcore.experimental.recipe_output.TaskOutput.from_task)(task)   | Create an instance of TaskOutput from a Task.   |
|--------------------------------------------------------------------|-------------------------------------------------|

#### *property* data_files *: [tuple](https://docs.python.org/3/builtins/stdtypes.html#tuple)*

Return a tuple of data objects.

#### *classmethod* from_task(task: esmvalcore._task.BaseTask) → [TaskOutput](#esmvalcore.experimental.recipe_output.TaskOutput)

Create an instance of TaskOutput from a Task.

* **Parameters:**
  **task** (*esmvalcore._task.BaseTask*)
* **Return type:**
  [TaskOutput](#esmvalcore.experimental.recipe_output.TaskOutput)

#### *property* image_files *: [tuple](https://docs.python.org/3/builtins/stdtypes.html#tuple)*

Return a tuple of image objects.
