Skip to content

Commit 97bb958

Browse files
qiaodevcopybara-github
authored andcommitted
feat: validate enum value for different backend endpoint.
PiperOrigin-RevId: 719515929
1 parent 24fffea commit 97bb958

3 files changed

Lines changed: 154 additions & 0 deletions

File tree

google/genai/files.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,16 @@ def _DeleteFileParameters_to_vertex(
351351
return to_object
352352

353353

354+
def _FileState_to_vertex_enum_validate(enum_value: any):
355+
if enum_value in set(['STATE_UNSPECIFIED', 'PROCESSING', 'ACTIVE', 'FAILED']):
356+
raise ValueError(f'{enum_value} enum value is not supported in Vertex AI.')
357+
358+
359+
def _FileSource_to_vertex_enum_validate(enum_value: any):
360+
if enum_value in set(['SOURCE_UNSPECIFIED', 'UPLOADED', 'GENERATED']):
361+
raise ValueError(f'{enum_value} enum value is not supported in Vertex AI.')
362+
363+
354364
def _FileStatus_from_mldev(
355365
api_client: ApiClient,
356366
from_object: Union[dict, object],

google/genai/models.py

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1365,13 +1365,19 @@ def _GenerateImagesConfig_to_mldev(
13651365
raise ValueError('seed parameter is not supported in Gemini API.')
13661366

13671367
if getv(from_object, ['safety_filter_level']) is not None:
1368+
_SafetyFilterLevel_to_mldev_enum_validate(
1369+
getv(from_object, ['safety_filter_level'])
1370+
)
13681371
setv(
13691372
parent_object,
13701373
['parameters', 'safetySetting'],
13711374
getv(from_object, ['safety_filter_level']),
13721375
)
13731376

13741377
if getv(from_object, ['person_generation']) is not None:
1378+
_PersonGeneration_to_mldev_enum_validate(
1379+
getv(from_object, ['person_generation'])
1380+
)
13751381
setv(
13761382
parent_object,
13771383
['parameters', 'personGeneration'],
@@ -1922,13 +1928,19 @@ def _EditImageConfig_to_mldev(
19221928
raise ValueError('seed parameter is not supported in Gemini API.')
19231929

19241930
if getv(from_object, ['safety_filter_level']) is not None:
1931+
_SafetyFilterLevel_to_mldev_enum_validate(
1932+
getv(from_object, ['safety_filter_level'])
1933+
)
19251934
setv(
19261935
parent_object,
19271936
['parameters', 'safetySetting'],
19281937
getv(from_object, ['safety_filter_level']),
19291938
)
19301939

19311940
if getv(from_object, ['person_generation']) is not None:
1941+
_PersonGeneration_to_mldev_enum_validate(
1942+
getv(from_object, ['person_generation'])
1943+
)
19321944
setv(
19331945
parent_object,
19341946
['parameters', 'personGeneration'],
@@ -1971,6 +1983,7 @@ def _EditImageConfig_to_mldev(
19711983
)
19721984

19731985
if getv(from_object, ['edit_mode']) is not None:
1986+
_EditMode_to_mldev_enum_validate(getv(from_object, ['edit_mode']))
19741987
setv(
19751988
parent_object,
19761989
['parameters', 'editMode'],
@@ -2772,6 +2785,71 @@ def _ComputeTokensParameters_to_vertex(
27722785
return to_object
27732786

27742787

2788+
def _MediaResolution_to_mldev_enum_validate(enum_value: any):
2789+
if enum_value in set([
2790+
'MEDIA_RESOLUTION_UNSPECIFIED',
2791+
'MEDIA_RESOLUTION_LOW',
2792+
'MEDIA_RESOLUTION_MEDIUM',
2793+
'MEDIA_RESOLUTION_HIGH',
2794+
]):
2795+
raise ValueError(f'{enum_value} enum value is not supported in Gemini API.')
2796+
2797+
2798+
def _SafetyFilterLevel_to_mldev_enum_validate(enum_value: any):
2799+
if enum_value in set(['BLOCK_NONE']):
2800+
raise ValueError(f'{enum_value} enum value is not supported in Gemini API.')
2801+
2802+
2803+
def _PersonGeneration_to_mldev_enum_validate(enum_value: any):
2804+
if enum_value in set(['ALLOW_ALL']):
2805+
raise ValueError(f'{enum_value} enum value is not supported in Gemini API.')
2806+
2807+
2808+
def _MaskReferenceMode_to_mldev_enum_validate(enum_value: any):
2809+
if enum_value in set([
2810+
'MASK_MODE_DEFAULT',
2811+
'MASK_MODE_USER_PROVIDED',
2812+
'MASK_MODE_BACKGROUND',
2813+
'MASK_MODE_FOREGROUND',
2814+
'MASK_MODE_SEMANTIC',
2815+
]):
2816+
raise ValueError(f'{enum_value} enum value is not supported in Gemini API.')
2817+
2818+
2819+
def _ControlReferenceType_to_mldev_enum_validate(enum_value: any):
2820+
if enum_value in set([
2821+
'CONTROL_TYPE_DEFAULT',
2822+
'CONTROL_TYPE_CANNY',
2823+
'CONTROL_TYPE_SCRIBBLE',
2824+
'CONTROL_TYPE_FACE_MESH',
2825+
]):
2826+
raise ValueError(f'{enum_value} enum value is not supported in Gemini API.')
2827+
2828+
2829+
def _SubjectReferenceType_to_mldev_enum_validate(enum_value: any):
2830+
if enum_value in set([
2831+
'SUBJECT_TYPE_DEFAULT',
2832+
'SUBJECT_TYPE_PERSON',
2833+
'SUBJECT_TYPE_ANIMAL',
2834+
'SUBJECT_TYPE_PRODUCT',
2835+
]):
2836+
raise ValueError(f'{enum_value} enum value is not supported in Gemini API.')
2837+
2838+
2839+
def _EditMode_to_mldev_enum_validate(enum_value: any):
2840+
if enum_value in set([
2841+
'EDIT_MODE_DEFAULT',
2842+
'EDIT_MODE_INPAINT_REMOVAL',
2843+
'EDIT_MODE_INPAINT_INSERTION',
2844+
'EDIT_MODE_OUTPAINT',
2845+
'EDIT_MODE_CONTROLLED_EDITING',
2846+
'EDIT_MODE_STYLE',
2847+
'EDIT_MODE_BGSWAP',
2848+
'EDIT_MODE_PRODUCT_IMAGE',
2849+
]):
2850+
raise ValueError(f'{enum_value} enum value is not supported in Gemini API.')
2851+
2852+
27752853
def _Part_from_mldev(
27762854
api_client: ApiClient,
27772855
from_object: Union[dict, object],

google/genai/tests/models/test_generate_images.py

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,72 @@
5656
},
5757
),
5858
),
59+
pytest_helper.TestTableItem(
60+
name='test_all_vertexai_config_person_generation_enum_parameters',
61+
exception_if_mldev='enum value is not supported',
62+
parameters=types._GenerateImagesParameters(
63+
model='imagen-3.0-generate-001',
64+
prompt='Robot holding a red skateboard',
65+
config={
66+
'person_generation': 'ALLOW_ALL',
67+
},
68+
),
69+
),
70+
pytest_helper.TestTableItem(
71+
name='test_all_vertexai_config_person_generation_enum_parameters_2',
72+
exception_if_mldev='enum value is not supported',
73+
parameters=types._GenerateImagesParameters(
74+
model='imagen-3.0-generate-001',
75+
prompt='Robot holding a red skateboard',
76+
config={
77+
'person_generation': 'allow_all',
78+
},
79+
),
80+
),
81+
pytest_helper.TestTableItem(
82+
name='test_all_vertexai_config_person_generation_enum_parameters_3',
83+
exception_if_mldev='enum value is not supported',
84+
parameters=types._GenerateImagesParameters(
85+
model='imagen-3.0-generate-001',
86+
prompt='Robot holding a red skateboard',
87+
config={
88+
'person_generation': types.PersonGeneration.ALLOW_ALL,
89+
},
90+
),
91+
),
92+
pytest_helper.TestTableItem(
93+
name='test_all_vertexai_config_safety_filter_level_enum_parameters',
94+
exception_if_mldev='enum value is not supported',
95+
parameters=types._GenerateImagesParameters(
96+
model='imagen-3.0-generate-001',
97+
prompt='Robot holding a red skateboard',
98+
config={
99+
'safety_filter_level': 'BLOCK_NONE',
100+
},
101+
),
102+
),
103+
pytest_helper.TestTableItem(
104+
name='test_all_vertexai_config_safety_filter_level_enum_parameters_2',
105+
exception_if_mldev='enum value is not supported',
106+
parameters=types._GenerateImagesParameters(
107+
model='imagen-3.0-generate-001',
108+
prompt='Robot holding a red skateboard',
109+
config={
110+
'safety_filter_level': 'block_none',
111+
},
112+
),
113+
),
114+
pytest_helper.TestTableItem(
115+
name='test_all_vertexai_config_safety_filter_level_enum_parameters_3',
116+
exception_if_mldev='enum value is not supported',
117+
parameters=types._GenerateImagesParameters(
118+
model='imagen-3.0-generate-001',
119+
prompt='Robot holding a red skateboard',
120+
config={
121+
'safety_filter_level': types.SafetyFilterLevel.BLOCK_NONE,
122+
},
123+
),
124+
),
59125
pytest_helper.TestTableItem(
60126
name='test_all_mldev_config_parameters',
61127
parameters=types._GenerateImagesParameters(

0 commit comments

Comments
 (0)