airbyte_cdk.sources.file_based.config.parquet_format

 1#
 2# Copyright (c) 2023 Airbyte, Inc., all rights reserved.
 3#
 4
 5
 6from pydantic.v1 import BaseModel, Field
 7
 8from airbyte_cdk.utils.oneof_option_config import OneOfOptionConfig
 9
10
11class ParquetFormat(BaseModel):
12    class Config(OneOfOptionConfig):
13        title = "Parquet Format"
14        discriminator = "filetype"
15
16    filetype: str = Field(
17        "parquet",
18        const=True,
19    )
20    # This option is not recommended, but necessary for backwards compatibility
21    decimal_as_float: bool = Field(
22        title="Convert Decimal Fields to Floats",
23        description="Whether to convert decimal fields to floats. There is a loss of precision when converting decimals to floats, so this is not recommended.",
24        default=False,
25    )
class ParquetFormat(pydantic.v1.main.BaseModel):
12class ParquetFormat(BaseModel):
13    class Config(OneOfOptionConfig):
14        title = "Parquet Format"
15        discriminator = "filetype"
16
17    filetype: str = Field(
18        "parquet",
19        const=True,
20    )
21    # This option is not recommended, but necessary for backwards compatibility
22    decimal_as_float: bool = Field(
23        title="Convert Decimal Fields to Floats",
24        description="Whether to convert decimal fields to floats. There is a loss of precision when converting decimals to floats, so this is not recommended.",
25        default=False,
26    )
filetype: str
decimal_as_float: bool
class ParquetFormat.Config(airbyte_cdk.utils.oneof_option_config.OneOfOptionConfig):
13    class Config(OneOfOptionConfig):
14        title = "Parquet Format"
15        discriminator = "filetype"

Base class to configure a Pydantic model that's used as a oneOf option in a parent model in a way that's compatible with all Airbyte consumers.

Inherit from this class in the nested Config class in a model and set title and description (these show up in the UI) and discriminator (this is making sure it's marked as required in the schema).

Usage:
class OptionModel(BaseModel):
    mode: Literal["option_a"] = Field("option_a", const=True)
    option_a_field: str = Field(...)

    class Config(OneOfOptionConfig):
        title = "Option A"
        description = "Option A description"
        discriminator = "mode"
title = 'Parquet Format'
discriminator = 'filetype'