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

# FeatureSection

## Overview

A namespaced section that a feature app contributes to ``class Vueda``.

``name`` matches the nested class an author writes, exactly. ``app_label`` is the Django app
label of the owning feature app. ``validate`` runs after option resolution and returns error
messages for rules that span options. A failed section is reported by system checks and never
reaches ``contribute``. ``contribute`` runs once per concrete model, right after Django prepares
it, and may call ``model.add_to_class()`` to add fields or other behaviour.

``contribute_order`` sequences the contributors, lowest first, with section name breaking a tie.
A feature that reads the finished field list must sort after every feature that adds a field, or
it sees a model that is still being assembled.

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

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

`__init__(name, app_label, options, validate, contribute, contribute_order)`

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

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| <span id="--init---param-name">name</span> | `str` | yes |  |  |
| <span id="--init---param-app_label">app_label</span> | `str` | yes |  |  |
| <span id="--init---param-options">options</span> | `collections.abc.Mapping[str, vueda.core.features.FeatureOption]` | no | `<factory>` |  |
| <span id="--init---param-validate">validate</span> | `collections.abc.Callable[[type, collections.abc.Mapping[str, typing.Any]], collections.abc.Iterable[str]] \| None` | no | `None` |  |
| <span id="--init---param-contribute">contribute</span> | `collections.abc.Callable[[type, typing.Any], None] \| None` | no | `None` |  |
| <span id="--init---param-contribute_order">contribute_order</span> | `int` | no | `0` |  |

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

`<string>`

## `app_label` {#app_label}

## `contribute` {#contribute}

## `contribute_order` {#contribute_order}

## `name` {#name}

## `options` {#options}

## `validate` {#validate}

## Source

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