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()
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
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"
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