Skip to content

Commit 14c298a

Browse files
cleop-googlecopybara-github
authored andcommitted
chore: GenAI SDK client(multimodal) - extract validation of types.MultimodalDataset into function to reduce code duplication
PiperOrigin-RevId: 882801405
1 parent 4dbd76c commit 14c298a

2 files changed

Lines changed: 75 additions & 116 deletions

File tree

vertexai/_genai/_datasets_utils.py

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,61 @@ def create_from_response(model_type: Type[T], response: dict[str, Any]) -> T:
4242
return model_type(**filtered_response)
4343

4444

45+
def multimodal_dataset_get_bigquery_uri(
46+
multimodal_dataset: common.MultimodalDataset,
47+
) -> str:
48+
"""Gets the bigquery uri from a multimodal dataset or raises ValueError."""
49+
if (
50+
not hasattr(multimodal_dataset, "metadata")
51+
or multimodal_dataset.metadata is None
52+
):
53+
raise ValueError("Multimodal dataset metadata is required.")
54+
if (
55+
not hasattr(multimodal_dataset.metadata, "input_config")
56+
or multimodal_dataset.metadata.input_config is None
57+
):
58+
raise ValueError("Multimodal dataset input config is required.")
59+
if (
60+
not hasattr(multimodal_dataset.metadata.input_config, "bigquery_source")
61+
or multimodal_dataset.metadata.input_config.bigquery_source is None
62+
):
63+
raise ValueError("Multimodal dataset input config bigquery source is required.")
64+
if (
65+
not hasattr(multimodal_dataset.metadata.input_config.bigquery_source, "uri")
66+
or multimodal_dataset.metadata.input_config.bigquery_source.uri is None
67+
):
68+
raise ValueError(
69+
"Multimodal dataset input config bigquery source uri is required."
70+
)
71+
return str(multimodal_dataset.metadata.input_config.bigquery_source.uri)
72+
73+
74+
def multimodal_dataset_set_bigquery_uri(
75+
multimodal_dataset: common.MultimodalDataset,
76+
bigquery_uri: str,
77+
) -> None:
78+
"""Sets the bigquery uri from a multimodal dataset or raises ValueError."""
79+
metadata = (
80+
common.SchemaTablesDatasetMetadata()
81+
if multimodal_dataset.metadata is None
82+
else multimodal_dataset.metadata
83+
)
84+
input_config = (
85+
common.SchemaTablesDatasetMetadataInputConfig()
86+
if metadata.input_config is None
87+
else metadata.input_config
88+
)
89+
bigquery_source = (
90+
common.SchemaTablesDatasetMetadataBigQuerySource()
91+
if input_config.bigquery_source is None
92+
else input_config.bigquery_source
93+
)
94+
bigquery_source.uri = bigquery_uri
95+
input_config.bigquery_source = bigquery_source
96+
metadata.input_config = input_config
97+
multimodal_dataset.metadata = metadata
98+
99+
45100
def _try_import_bigframes() -> Any:
46101
"""Tries to import `bigframes`."""
47102
try:

vertexai/_genai/datasets.py

Lines changed: 20 additions & 116 deletions
Original file line numberDiff line numberDiff line change
@@ -790,35 +790,11 @@ def create_from_bigquery(
790790
"""
791791
if isinstance(multimodal_dataset, dict):
792792
multimodal_dataset = types.MultimodalDataset(**multimodal_dataset)
793-
if (
794-
not hasattr(multimodal_dataset, "metadata")
795-
or multimodal_dataset.metadata is None
796-
):
797-
raise ValueError("Multimodal dataset metadata is required.")
798-
if (
799-
not hasattr(multimodal_dataset.metadata, "input_config")
800-
or multimodal_dataset.metadata.input_config is None
801-
):
802-
raise ValueError("Multimodal dataset input config is required.")
803-
if (
804-
not hasattr(multimodal_dataset.metadata.input_config, "bigquery_source")
805-
or multimodal_dataset.metadata.input_config.bigquery_source is None
806-
):
807-
raise ValueError(
808-
"Multimodal dataset input config bigquery source is required."
809-
)
810-
if (
811-
not hasattr(multimodal_dataset.metadata.input_config.bigquery_source, "uri")
812-
or multimodal_dataset.metadata.input_config.bigquery_source.uri is None
813-
):
814-
raise ValueError(
815-
"Multimodal dataset input config bigquery source uri is required."
816-
)
817-
if not multimodal_dataset.metadata.input_config.bigquery_source.uri.startswith(
818-
"bq://"
819-
):
820-
multimodal_dataset.metadata.input_config.bigquery_source.uri = (
821-
f"bq://{multimodal_dataset.metadata.input_config.bigquery_source.uri}"
793+
794+
uri = _datasets_utils.multimodal_dataset_get_bigquery_uri(multimodal_dataset)
795+
if not uri.startswith("bq://"):
796+
_datasets_utils.multimodal_dataset_set_bigquery_uri(
797+
multimodal_dataset, f"bq://{uri}"
822798
)
823799
if isinstance(config, dict):
824800
config = types.CreateMultimodalDatasetConfig(**config)
@@ -948,35 +924,11 @@ def update_multimodal_dataset(
948924
"""
949925
if isinstance(multimodal_dataset, dict):
950926
multimodal_dataset = types.MultimodalDataset(**multimodal_dataset)
951-
if (
952-
not hasattr(multimodal_dataset, "metadata")
953-
or multimodal_dataset.metadata is None
954-
):
955-
raise ValueError("Multimodal dataset metadata is required.")
956-
if (
957-
not hasattr(multimodal_dataset.metadata, "input_config")
958-
or multimodal_dataset.metadata.input_config is None
959-
):
960-
raise ValueError("Multimodal dataset input config is required.")
961-
if (
962-
not hasattr(multimodal_dataset.metadata.input_config, "bigquery_source")
963-
or multimodal_dataset.metadata.input_config.bigquery_source is None
964-
):
965-
raise ValueError(
966-
"Multimodal dataset input config bigquery source is required."
967-
)
968-
if (
969-
not hasattr(multimodal_dataset.metadata.input_config.bigquery_source, "uri")
970-
or multimodal_dataset.metadata.input_config.bigquery_source.uri is None
971-
):
972-
raise ValueError(
973-
"Multimodal dataset input config bigquery source uri is required."
974-
)
975-
if not multimodal_dataset.metadata.input_config.bigquery_source.uri.startswith(
976-
"bq://"
977-
):
978-
multimodal_dataset.metadata.input_config.bigquery_source.uri = (
979-
f"bq://{multimodal_dataset.metadata.input_config.bigquery_source.uri}"
927+
928+
uri = _datasets_utils.multimodal_dataset_get_bigquery_uri(multimodal_dataset)
929+
if not uri.startswith("bq://"):
930+
_datasets_utils.multimodal_dataset_set_bigquery_uri(
931+
multimodal_dataset, f"bq://{uri}"
980932
)
981933
if isinstance(config, dict):
982934
config = types.CreateMultimodalDatasetConfig(**config)
@@ -1887,35 +1839,11 @@ async def create_from_bigquery(
18871839
"""
18881840
if isinstance(multimodal_dataset, dict):
18891841
multimodal_dataset = types.MultimodalDataset(**multimodal_dataset)
1890-
if (
1891-
not hasattr(multimodal_dataset, "metadata")
1892-
or multimodal_dataset.metadata is None
1893-
):
1894-
raise ValueError("Multimodal dataset metadata is required.")
1895-
if (
1896-
not hasattr(multimodal_dataset.metadata, "input_config")
1897-
or multimodal_dataset.metadata.input_config is None
1898-
):
1899-
raise ValueError("Multimodal dataset input config is required.")
1900-
if (
1901-
not hasattr(multimodal_dataset.metadata.input_config, "bigquery_source")
1902-
or multimodal_dataset.metadata.input_config.bigquery_source is None
1903-
):
1904-
raise ValueError(
1905-
"Multimodal dataset input config bigquery source is required."
1906-
)
1907-
if (
1908-
not hasattr(multimodal_dataset.metadata.input_config.bigquery_source, "uri")
1909-
or multimodal_dataset.metadata.input_config.bigquery_source.uri is None
1910-
):
1911-
raise ValueError(
1912-
"Multimodal dataset input config bigquery source uri is required."
1913-
)
1914-
if not multimodal_dataset.metadata.input_config.bigquery_source.uri.startswith(
1915-
"bq://"
1916-
):
1917-
multimodal_dataset.metadata.input_config.bigquery_source.uri = (
1918-
f"bq://{multimodal_dataset.metadata.input_config.bigquery_source.uri}"
1842+
1843+
uri = _datasets_utils.multimodal_dataset_get_bigquery_uri(multimodal_dataset)
1844+
if not uri.startswith("bq://"):
1845+
_datasets_utils.multimodal_dataset_set_bigquery_uri(
1846+
multimodal_dataset, f"bq://{uri}"
19191847
)
19201848
if isinstance(config, dict):
19211849
config = types.CreateMultimodalDatasetConfig(**config)
@@ -2041,35 +1969,11 @@ async def update_multimodal_dataset(
20411969
"""
20421970
if isinstance(multimodal_dataset, dict):
20431971
multimodal_dataset = types.MultimodalDataset(**multimodal_dataset)
2044-
if (
2045-
not hasattr(multimodal_dataset, "metadata")
2046-
or multimodal_dataset.metadata is None
2047-
):
2048-
raise ValueError("Multimodal dataset metadata is required.")
2049-
if (
2050-
not hasattr(multimodal_dataset.metadata, "input_config")
2051-
or multimodal_dataset.metadata.input_config is None
2052-
):
2053-
raise ValueError("Multimodal dataset input config is required.")
2054-
if (
2055-
not hasattr(multimodal_dataset.metadata.input_config, "bigquery_source")
2056-
or multimodal_dataset.metadata.input_config.bigquery_source is None
2057-
):
2058-
raise ValueError(
2059-
"Multimodal dataset input config bigquery source is required."
2060-
)
2061-
if (
2062-
not hasattr(multimodal_dataset.metadata.input_config.bigquery_source, "uri")
2063-
or multimodal_dataset.metadata.input_config.bigquery_source.uri is None
2064-
):
2065-
raise ValueError(
2066-
"Multimodal dataset input config bigquery source uri is required."
2067-
)
2068-
if not multimodal_dataset.metadata.input_config.bigquery_source.uri.startswith(
2069-
"bq://"
2070-
):
2071-
multimodal_dataset.metadata.input_config.bigquery_source.uri = (
2072-
f"bq://{multimodal_dataset.metadata.input_config.bigquery_source.uri}"
1972+
1973+
uri = _datasets_utils.multimodal_dataset_get_bigquery_uri(multimodal_dataset)
1974+
if not uri.startswith("bq://"):
1975+
_datasets_utils.multimodal_dataset_set_bigquery_uri(
1976+
multimodal_dataset, f"bq://{uri}"
20731977
)
20741978
if isinstance(config, dict):
20751979
config = types.CreateMultimodalDatasetConfig(**config)

0 commit comments

Comments
 (0)