gapic-generator-python icon indicating copy to clipboard operation
gapic-generator-python copied to clipboard

Regression in version 1.11.6 : Generated test fails with `NameError: name 'value' is not defined`

Open parthea opened this issue 2 years ago • 3 comments

Starting in version 1.11.6, generated unit tests for google/cloud/aiplatform/v1beta1 fail with NameError: name 'value' is not defined

I've narrowed the problematic commit to https://github.com/googleapis/gapic-generator-python/commit/723efca3f909527c48e8070eff61511293888626

See snippet of stack trace below

bazel run //google/cloud/aiplatform/v1beta1:aiplatform_py_gapic_test
...
google/cloud/aiplatform/v1beta1/aiplatform_py_gapic_srcjar.py/tests/unit/gapic/aiplatform_v1beta1/test_vizier_service.py:43: in <module>
    from google.cloud.aiplatform_v1beta1.services.vizier_service import VizierServiceAsyncClient
google/cloud/aiplatform/v1beta1/aiplatform_py_gapic_srcjar.py/google/cloud/aiplatform_v1beta1/services/vizier_service/__init__.py:16: in <module>
    from .client import VizierServiceClient
google/cloud/aiplatform/v1beta1/aiplatform_py_gapic_srcjar.py/google/cloud/aiplatform_v1beta1/services/vizier_service/client.py:21: in <module>
    from google.cloud.aiplatform_v1beta1 import gapic_version as package_version
google/cloud/aiplatform/v1beta1/aiplatform_py_gapic_srcjar.py/google/cloud/aiplatform_v1beta1/__init__.py:21: in <module>
    from .services.dataset_service import DatasetServiceClient
google/cloud/aiplatform/v1beta1/aiplatform_py_gapic_srcjar.py/google/cloud/aiplatform_v1beta1/services/dataset_service/__init__.py:16: in <module>
    from .client import DatasetServiceClient
google/cloud/aiplatform/v1beta1/aiplatform_py_gapic_srcjar.py/google/cloud/aiplatform_v1beta1/services/dataset_service/client.py:40: in <module>
    from google.cloud.aiplatform_v1beta1.services.dataset_service import pagers
google/cloud/aiplatform/v1beta1/aiplatform_py_gapic_srcjar.py/google/cloud/aiplatform_v1beta1/services/dataset_service/pagers.py:18: in <module>
    from google.cloud.aiplatform_v1beta1.types import annotation
google/cloud/aiplatform/v1beta1/aiplatform_py_gapic_srcjar.py/google/cloud/aiplatform_v1beta1/types/__init__.py:600: in <module>
    from .pipeline_job import (
google/cloud/aiplatform/v1beta1/aiplatform_py_gapic_srcjar.py/google/cloud/aiplatform_v1beta1/types/pipeline_job.py:46: in <module>
    class PipelineJob(proto.Message):
google/cloud/aiplatform/v1beta1/aiplatform_py_gapic_srcjar.py/google/cloud/aiplatform_v1beta1/types/pipeline_job.py:152: in PipelineJob
    class RuntimeConfig(proto.Message):
google/cloud/aiplatform/v1beta1/aiplatform_py_gapic_srcjar.py/google/cloud/aiplatform_v1beta1/types/pipeline_job.py:225: in RuntimeConfig
    message=value.Value,
E   NameError: name 'value' is not defined
=========================== short test summary info ============================
ERROR google/cloud/aiplatform/v1beta1/aiplatform_py_gapic_srcjar.py/tests/unit/gapic/aiplatform_v1beta1/test_dataset_service.py
ERROR google/cloud/aiplatform/v1beta1/aiplatform_py_gapic_srcjar.py/tests/unit/gapic/aiplatform_v1beta1/test_deployment_resource_pool_service.py
ERROR google/cloud/aiplatform/v1beta1/aiplatform_py_gapic_srcjar.py/tests/unit/gapic/aiplatform_v1beta1/test_endpoint_service.py
ERROR google/cloud/aiplatform/v1beta1/aiplatform_py_gapic_srcjar.py/tests/unit/gapic/aiplatform_v1beta1/test_feature_online_store_admin_service.py
ERROR google/cloud/aiplatform/v1beta1/aiplatform_py_gapic_srcjar.py/tests/unit/gapic/aiplatform_v1beta1/test_feature_online_store_service.py
ERROR google/cloud/aiplatform/v1beta1/aiplatform_py_gapic_srcjar.py/tests/unit/gapic/aiplatform_v1beta1/test_feature_registry_service.py
ERROR google/cloud/aiplatform/v1beta1/aiplatform_py_gapic_srcjar.py/tests/unit/gapic/aiplatform_v1beta1/test_featurestore_online_serving_service.py
ERROR google/cloud/aiplatform/v1beta1/aiplatform_py_gapic_srcjar.py/tests/unit/gapic/aiplatform_v1beta1/test_featurestore_service.py
ERROR google/cloud/aiplatform/v1beta1/aiplatform_py_gapic_srcjar.py/tests/unit/gapic/aiplatform_v1beta1/test_index_endpoint_service.py
ERROR google/cloud/aiplatform/v1beta1/aiplatform_py_gapic_srcjar.py/tests/unit/gapic/aiplatform_v1beta1/test_index_service.py
ERROR google/cloud/aiplatform/v1beta1/aiplatform_py_gapic_srcjar.py/tests/unit/gapic/aiplatform_v1beta1/test_job_service.py
ERROR google/cloud/aiplatform/v1beta1/aiplatform_py_gapic_srcjar.py/tests/unit/gapic/aiplatform_v1beta1/test_match_service.py
ERROR google/cloud/aiplatform/v1beta1/aiplatform_py_gapic_srcjar.py/tests/unit/gapic/aiplatform_v1beta1/test_metadata_service.py
ERROR google/cloud/aiplatform/v1beta1/aiplatform_py_gapic_srcjar.py/tests/unit/gapic/aiplatform_v1beta1/test_migration_service.py
ERROR google/cloud/aiplatform/v1beta1/aiplatform_py_gapic_srcjar.py/tests/unit/gapic/aiplatform_v1beta1/test_model_garden_service.py
ERROR google/cloud/aiplatform/v1beta1/aiplatform_py_gapic_srcjar.py/tests/unit/gapic/aiplatform_v1beta1/test_model_service.py
ERROR google/cloud/aiplatform/v1beta1/aiplatform_py_gapic_srcjar.py/tests/unit/gapic/aiplatform_v1beta1/test_persistent_resource_service.py
ERROR google/cloud/aiplatform/v1beta1/aiplatform_py_gapic_srcjar.py/tests/unit/gapic/aiplatform_v1beta1/test_pipeline_service.py
ERROR google/cloud/aiplatform/v1beta1/aiplatform_py_gapic_srcjar.py/tests/unit/gapic/aiplatform_v1beta1/test_prediction_service.py
ERROR google/cloud/aiplatform/v1beta1/aiplatform_py_gapic_srcjar.py/tests/unit/gapic/aiplatform_v1beta1/test_schedule_service.py
ERROR google/cloud/aiplatform/v1beta1/aiplatform_py_gapic_srcjar.py/tests/unit/gapic/aiplatform_v1beta1/test_specialist_pool_service.py
ERROR google/cloud/aiplatform/v1beta1/aiplatform_py_gapic_srcjar.py/tests/unit/gapic/aiplatform_v1beta1/test_tensorboard_service.py
ERROR google/cloud/aiplatform/v1beta1/aiplatform_py_gapic_srcjar.py/tests/unit/gapic/aiplatform_v1beta1/test_vizier_service.py
!!!!!!!!!!!!!!!!!!! Interrupted: 23 errors during collection !!!!!!!!!!!!!!!!!!!

parthea avatar Oct 11 '23 17:10 parthea

In the generated code for aiplatform, the issue is that the alias used for google.cloud.aiplatform_v1beta1.types.values is value instead of gca_value. It appears that there is an issue with tracking collisions.

The import statement is correct as

from google.cloud.aiplatform_v1beta1.types import value as gca_value

but changes in the generated code look like this: image

parthea avatar Oct 12 '23 11:10 parthea

Marking as P1 because this is affecting our ability to update the gapic generator in googleapis/googleapis https://github.com/googleapis/googleapis/blob/736857e7a655eea72322e078b1988bd0d25aae0f/WORKSPACE#L327.

parthea avatar Oct 12 '23 12:10 parthea

Bumping to P2 since https://github.com/googleapis/gapic-generator-python/pull/1799 was merged. We should keep this issue open to continue to try to create a minimal reproduction for presubmits.

parthea avatar Oct 12 '23 15:10 parthea