Source code for litestar.datastructures.response_header

from __future__ import annotations

from dataclasses import dataclass
from typing import TYPE_CHECKING, Any

from litestar.exceptions import ImproperlyConfiguredException

if TYPE_CHECKING:
    from litestar.openapi.spec import Example

__all__ = ("ResponseHeader",)


[docs] @dataclass class ResponseHeader: """Container type for a response header.""" name: str """Header name""" documentation_only: bool = False """Defines the ResponseHeader instance as for OpenAPI documentation purpose only.""" value: str | None = None """Value to set for the response header.""" description: str | None = None """A brief description of the parameter. This could contain examples of use. [CommonMark syntax](https://spec.commonmark.org/) MAY be used for rich text representation. """ required: bool = False """Determines whether this parameter is mandatory. If the [parameter location](https://spec.openapis.org/oas/v3.1.0#parameterIn) is `"path"`, this property is **REQUIRED** and its value MUST be `true`. Otherwise, the property MAY be included and its default value is `false`. """ deprecated: bool = False """Specifies that a parameter is deprecated and SHOULD be transitioned out of usage. Default value is `false`. """ style: str | None = None """Describes how the parameter value will be serialized depending on the type of the parameter value. Default values (based on value of `in`): - for `query` - `form`; - for `path` - `simple`; - for `header` - `simple`; - for `cookie` - `form`. """ explode: bool | None = None """When this is true, parameter values of type `array` or `object` generate separate parameters for each value of the array or key-value pair of the map. For other types of parameters this property has no effect. When [style](https://spec.openapis.org/oas/v3.1.0#parameterStyle) is `form`, the default value is `true`. For all other styles, the default value is `false`. """ example: Any | None = None """Example of the parameter's potential value. The example SHOULD match the specified schema and encoding properties if present. The `example` field is mutually exclusive of the `examples` field. Furthermore, if referencing a `schema` that contains an example, the `example` value SHALL _override_ the example provided by the schema. To represent examples of media types that cannot naturally be represented in JSON or YAML, a string value can contain the example with escaping where necessary. """ examples: dict[str, Example] | None = None """Examples of the parameter's potential value. Each example SHOULD contain a value in the correct format as specified in the parameter encoding. The `examples` field is mutually exclusive of the `example` field. Furthermore, if referencing a `schema` that contains an example, the `examples` value SHALL _override_ the example provided by the schema. For more complex scenarios, the [content](https://spec.openapis.org/oas/v3.1.0#parameterContent) property can define the media type and schema of the parameter. A parameter MUST contain either a `schema` property, or a `content` property, but not both. When `example` or `examples` are provided in conjunction with the `schema` object, the example MUST follow the prescribed serialization strategy for the parameter. """
[docs] def __post_init__(self) -> None: """Ensure that either value is set or the instance is for documentation_only.""" if not self.documentation_only and self.value is None: raise ImproperlyConfiguredException("value must be set if documentation_only is false")
def __hash__(self) -> int: return hash(self.name)