def _cast_type()

in bq-connector/docai_bq_connector/connector/BqDocumentMapper.py [0:0]


    def _cast_type(self, field: DocumentField, bq_datatype):
        try:
            raw_value = (
                field.value.strip() if isinstance(field.value, str) else field.value
            )
            if self.parsing_methodology in [
                PARSING_METHOD_ENTITIES,
                PARSING_METHOD_FORM,
            ]:
                if field.value is None:
                    return None
                if bq_datatype == "STRING":
                    return raw_value
                if bq_datatype == "BOOLEAN":
                    return get_bool_value(raw_value)
                if bq_datatype == "DATETIME":
                    if isinstance(field.value, datetime):
                        dt: datetime = field.value
                        return dt.isoformat()
                    return raw_value
                if bq_datatype in ("DECIMAL", "FLOAT", "NUMERIC"):
                    return float(clean_number(raw_value))
                if bq_datatype == "INTEGER":
                    return int(clean_number(raw_value))
                return raw_value
            elif self.parsing_methodology in [PARSING_METHOD_NORMALIZED_VALUES]:
                normalized_value = field.normalized_value
                if normalized_value is None:
                    return None
                if bq_datatype == "STRING":
                    return normalized_value.text
                if bq_datatype == "BOOLEAN":
                    return normalized_value.boolean_value
                if bq_datatype == "DATETIME":
                    return normalized_value.datetime_value
                if bq_datatype in ("DECIMAL", "FLOAT", "NUMERIC"):
                    return normalized_value.float_value
                if bq_datatype == "INTEGER":
                    return normalized_value.integer_value
                return raw_value
        except ValueError as ve:
            return ConversionError(
                field.name,
                field.value,
                f"ValueError: casting to {bq_datatype}",
                str(ve),
                ConversionError.error_type_conversion,
            )