def generate_items_type(self) -> typing.Any: # because avro can have only one type, we take the first one items_type = self.type.__args__[0] name = self.get_singular_name(self.name) if utils.is_union(items_type): self.items_type = UnionField( name, items_type, default=self.default, default_factory=self.default_factory).get_avro_type() else: self.internal_field = AvroField(name, items_type) self.items_type = self.internal_field.get_avro_type()
def generate_items_type(self): # because avro can have only one type, we take the first one items_type = self.type.__args__[0] if items_type in PRIMITIVE_AND_LOGICAL_TYPES: klass = PRIMITIVE_LOGICAL_TYPES_FIELDS_CLASSES[items_type] self.items_type = klass.avro_type elif utils.is_self_referenced(items_type): # Checking for a self reference. Maybe is a typing.ForwardRef self.items_type = self._get_self_reference_type(items_type) elif utils.is_union(items_type): self.items_type = UnionField.generate_union( items_type.__args__, default=self.default, default_factory=self.default_factory, ) else: # Is Avro Record Type self.items_type = items_type.avro_schema_to_python()