def test_enum_type():
    """
    When the type is types.Enum, the Avro field type should be Enum
    with symbols attribute present.
    """
    name = "an_enum_field"
    namespace = "my_emum"
    aliases = ["enum", "first enum"]
    default = types.Enum(["SPADES", "HEARTS", "DIAMONDS", "CLUBS"],
                         namespace=namespace,
                         aliases=aliases,
                         default="CLUBS")

    python_type = types.Enum
    field = fields.AvroField(name, python_type, default)

    expected = {
        "name": name,
        "type": {
            "type": "enum",
            "name": name,
            "symbols": default.symbols,
            "namespace": namespace,
            "aliases": aliases,
        },
        "default": default.default,
    }

    assert expected == field.to_dict()

    default = types.Enum(["SPADES", "HEARTS", "DIAMONDS", "CLUBS"])
    field = fields.AvroField(name, python_type, default)

    expected = {
        "name": name,
        "type": {
            "type": "enum",
            "name": name,
            "symbols": default.symbols,
        },
    }

    assert expected == field.to_dict()

    with pytest.raises(AssertionError):
        default = types.Enum(["SPADES", "HEARTS", "DIAMONDS", "CLUBS"],
                             default="BLUE")
        field = fields.AvroField(name, python_type, default)

        field.to_dict()
Пример #2
0
class UserAdvance(AvroModel):
    name: str
    age: int
    is_developer: bool
    pets: typing.List[str]
    accounts: typing.Dict[str, int]
    has_car: bool = False
    favorite_colors: types.Enum = types.Enum(["BLUE", "YELLOW", "GREEN"])
    favorite_language: types.Enum = types.Enum(["PYTHON", "JAVA", "JS"],
                                               default="JS")
    country: str = "Argentina"
    years_of_expirience: int = 5
    md5: bytes = b"u00ff"
    # md5: types.Fixed = types.Fixed(16)
    birthday: datetime.date = a_datetime.date()
    meeting_time: datetime.time = a_datetime.time()
    release_datetime: datetime.datetime = a_datetime
    event_uuid: uuid.UUID = uuid.UUID("09f00184-7721-4266-a955-21048a5cc235")
 class UserAdvance(AvroModel):
     name: str
     age: int
     pets: typing.List[str] = dataclasses.field(default_factory=lambda: ["dog", "cat"])
     accounts: typing.Dict[str, int] = dataclasses.field(default_factory=lambda: {"key": 1})
     has_car: bool = False
     favorite_colors: types.Enum = types.Enum(["BLUE", "YELLOW", "GREEN"], default="BLUE")
     country: str = "Argentina"
     address: str = None
Пример #4
0
class UserModelV2(AvroModel):
    "A User v2"
    name: str
    age: int
    favorite_colors: types.Enum = types.Enum(["BLUE", "YELLOW", "GREEN"], default="BLUE")
    country: str = "Argentina"
    address: str = None

    class Meta:
        namespace = "User.v2"
Пример #5
0
class UserModel(AvroModel):
    "An User"
    name: str
    age: int
    favorite_colors: types.Enum = types.Enum(["BLUE", "YELLOW", "GREEN"],
                                             default="BLUE")
    country: str = "Argentina"
    address: str = None

    class Meta:
        namespace = "User.v1"
        aliases = ["user-v1", "super user"]
    class UserAdvance(faust.Record, AvroModel):
        name: str
        age: int
        pets: typing.List[str]
        accounts: typing.Dict[str, int]
        has_car: bool = False
        favorite_colors: types.Enum = types.Enum(["BLUE", "YELLOW", "GREEN"])
        country: str = "Argentina"
        address: str = None
        md5: types.Fixed = types.Fixed(16)

        class Meta:
            schema_doc = False