def struct()

in pyiceberg/table/update/schema.py [0:0]


    def struct(self, struct: StructType, field_results: List[Optional[IcebergType]]) -> Optional[IcebergType]:
        has_changes = False
        new_fields = []

        for idx, result_type in enumerate(field_results):
            result_type = field_results[idx]

            # Has been deleted
            if result_type is None:
                has_changes = True
                continue

            field = struct.fields[idx]

            name = field.name
            doc = field.doc
            required = field.required
            write_default = field.write_default

            # There is an update
            if update := self._updates.get(field.field_id):
                name = update.name
                doc = update.doc
                required = update.required
                write_default = update.write_default

            if (
                field.name == name
                and field.field_type == result_type
                and field.required == required
                and field.doc == doc
                and field.write_default == write_default
            ):
                new_fields.append(field)
            else:
                has_changes = True
                new_fields.append(
                    NestedField(
                        field_id=field.field_id,
                        name=name,
                        field_type=result_type,
                        required=required,
                        doc=doc,
                        initial_default=field.initial_default,
                        write_default=write_default,
                    )
                )

        if has_changes:
            return StructType(*new_fields)

        return struct