예제 #1
0
    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()
예제 #2
0
    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()