# generated by datamodel-codegen:
#   filename:  type_alias_recursive.yaml
#   timestamp: 2019-07-26T00:00:00+00:00

from __future__ import annotations

from typing import Dict, List, Optional, Union

from pydantic import BaseModel
from typing_extensions import TypeAlias


class File(BaseModel):
    path: str


class Folder(BaseModel):
    address: Optional[str] = None
    files: List[File]
    subfolders: Optional[List[Folder]] = None


ElementaryType: TypeAlias = Optional[Union[bool, str, int, float]]


JsonType: TypeAlias = Union[ElementaryType, List["JsonType"], Dict[str, "JsonType"]]


class Space(BaseModel):
    label: Optional[str] = None
    data: Optional[JsonType] = None
    dual: Optional[DualSpace] = None


class DualSpace(BaseModel):
    label: Optional[str] = None
    data: Optional[JsonType] = None
    predual: Optional[Space] = None


Folder.update_forward_refs()
Space.update_forward_refs()
