---
url: "https://vueda.dev/v3/reference/api/py/vueda.core.features/FeatureOption.md"
title: "FeatureOption"
---

# FeatureOption

## Overview

One option inside a feature section.

``types`` restricts accepted values by ``isinstance``. ``validate`` receives a declared value and
returns an error message, or ``None`` when the value is acceptable. ``merge`` combines an
inherited value with an overriding one. Without it, a declaration replaces the inherited value.
``migration_relevant`` marks an option whose value a feature's migration generation reads.

## `__init__` {#--init--}

### Signature {#--init---signature}

`__init__(default, types, validate, merge, migration_relevant)`

#### Parameters {#--init---parameters}

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| <span id="--init---param-default">default</span> | `typing.Any` | no | `None` |  |
| <span id="--init---param-types">types</span> | `tuple[type, ...]` | no | `()` |  |
| <span id="--init---param-validate">validate</span> | `collections.abc.Callable[[typing.Any], str \| None] \| None` | no | `None` |  |
| <span id="--init---param-merge">merge</span> | `collections.abc.Callable[[typing.Any, typing.Any], typing.Any] \| None` | no | `None` |  |
| <span id="--init---param-migration_relevant">migration_relevant</span> | `bool` | no | `False` |  |

### Source {#--init---source}

`<string>`

## `default` {#default}

## `merge` {#merge}

## `migration_relevant` {#migration_relevant}

## `types` {#types}

## `validate` {#validate}

## Source

`server/vueda/core/features.py:31`
