Skip to content

Commit d0efb4d

Browse files
authored
fix(generator): move version checks after __all__ in __init__.py temlate (#18100)
This PR updates the `__init__.py.j2` template to place runtime checks (`api_core.check_python_version()` and `api_core.check_dependency_versions()`) at the very end of the file after `__all__`. In `gapic-generator 1.38.0`, runtime version and dependency checks were placed immediately before `__all__`. This created an execution boundary in the middle of the module: * When post-processing scripts or handwritten extensions (such as `SpeechHelpers` in `google-cloud-speech` or `VisionHelpers` in `google-cloud-vision`) inject helper imports or wrap client classes prior to `__all__`, linters (Flake8 and Ruff) flag `E402: Module level import not at top of file`. * Moving the checks to after `__all__` ensures all module imports remain contiguous at the top of the file, complying with PEP 8 import ordering and eliminating the need for `# noqa: E402` annotations in post-processing. * Module import semantics remain identical: Python executes the file top-to-bottom, so environment checks still run immediately upon import and abort if incompatible versions are detected.
1 parent 1e3f7bb commit d0efb4d

9 files changed

Lines changed: 28 additions & 27 deletions

File tree

packages/gapic-generator/gapic/templates/%namespace/%name_%version/%sub/__init__.py.j2

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,6 @@ from .types.{{ proto.module_name }} import {{ enum.name }}
6060
{% endfor %}
6161
{% endfor %}
6262

63-
api_core.check_python_version("{{package_path}}")
64-
api_core.check_dependency_versions("{{package_path}}")
65-
6663
{# Define __all__.
6764
This requires the full set of imported names, so we iterate over
6865
them again.
@@ -90,4 +87,8 @@ __all__ = (
9087
{% endfor -%}
9188
{% endfilter %}
9289
)
90+
91+
api_core.check_python_version("{{package_path}}")
92+
api_core.check_dependency_versions("{{package_path}}")
93+
9394
{% endblock %}

packages/gapic-generator/tests/integration/goldens/asset/google/cloud/asset_v1/__init__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,9 +118,6 @@
118118
from .types.assets import TimeWindow
119119
from .types.assets import VersionedResource
120120

121-
api_core.check_python_version("google.cloud.asset_v1")
122-
api_core.check_dependency_versions("google.cloud.asset_v1")
123-
124121
__all__ = (
125122
'AssetServiceAsyncClient',
126123
'AnalyzeIamPolicyLongrunningMetadata',
@@ -206,3 +203,6 @@
206203
'UpdateSavedQueryRequest',
207204
'VersionedResource',
208205
)
206+
207+
api_core.check_python_version("google.cloud.asset_v1")
208+
api_core.check_dependency_versions("google.cloud.asset_v1")

packages/gapic-generator/tests/integration/goldens/credentials/google/iam/credentials_v1/__init__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,6 @@
4444
from .types.common import SignJwtRequest
4545
from .types.common import SignJwtResponse
4646

47-
api_core.check_python_version("google.iam.credentials_v1")
48-
api_core.check_dependency_versions("google.iam.credentials_v1")
49-
5047
__all__ = (
5148
'IAMCredentialsAsyncClient',
5249
'GenerateAccessTokenRequest',
@@ -59,3 +56,6 @@
5956
'SignJwtRequest',
6057
'SignJwtResponse',
6158
)
59+
60+
api_core.check_python_version("google.iam.credentials_v1")
61+
api_core.check_dependency_versions("google.iam.credentials_v1")

packages/gapic-generator/tests/integration/goldens/eventarc/google/cloud/eventarc_v1/__init__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -116,9 +116,6 @@
116116
from .types.trigger import Transport
117117
from .types.trigger import Trigger
118118

119-
api_core.check_python_version("google.cloud.eventarc_v1")
120-
api_core.check_dependency_versions("google.cloud.eventarc_v1")
121-
122119
__all__ = (
123120
'EventarcAsyncClient',
124121
'Channel',
@@ -193,3 +190,6 @@
193190
'UpdatePipelineRequest',
194191
'UpdateTriggerRequest',
195192
)
193+
194+
api_core.check_python_version("google.cloud.eventarc_v1")
195+
api_core.check_dependency_versions("google.cloud.eventarc_v1")

packages/gapic-generator/tests/integration/goldens/logging/google/cloud/logging_v2/__init__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,6 @@
120120
from .types.logging_metrics import LogMetric
121121
from .types.logging_metrics import UpdateLogMetricRequest
122122

123-
api_core.check_python_version("google.cloud.logging_v2")
124-
api_core.check_dependency_versions("google.cloud.logging_v2")
125-
126123
__all__ = (
127124
'ConfigServiceV2AsyncClient',
128125
'LoggingServiceV2AsyncClient',
@@ -207,3 +204,6 @@
207204
'WriteLogEntriesRequest',
208205
'WriteLogEntriesResponse',
209206
)
207+
208+
api_core.check_python_version("google.cloud.logging_v2")
209+
api_core.check_dependency_versions("google.cloud.logging_v2")

packages/gapic-generator/tests/integration/goldens/logging_internal/google/cloud/logging_v2/__init__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,6 @@
120120
from .types.logging_metrics import LogMetric
121121
from .types.logging_metrics import UpdateLogMetricRequest
122122

123-
api_core.check_python_version("google.cloud.logging_v2")
124-
api_core.check_dependency_versions("google.cloud.logging_v2")
125-
126123
__all__ = (
127124
'BaseConfigServiceV2AsyncClient',
128125
'BaseMetricsServiceV2AsyncClient',
@@ -207,3 +204,6 @@
207204
'WriteLogEntriesRequest',
208205
'WriteLogEntriesResponse',
209206
)
207+
208+
api_core.check_python_version("google.cloud.logging_v2")
209+
api_core.check_dependency_versions("google.cloud.logging_v2")

packages/gapic-generator/tests/integration/goldens/redis/google/cloud/redis_v1/__init__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,6 @@
6262
from .types.cloud_redis import WeeklyMaintenanceWindow
6363
from .types.cloud_redis import ZoneMetadata
6464

65-
api_core.check_python_version("google.cloud.redis_v1")
66-
api_core.check_dependency_versions("google.cloud.redis_v1")
67-
6865
__all__ = (
6966
'CloudRedisAsyncClient',
7067
'CloudRedisClient',
@@ -96,3 +93,6 @@
9693
'WeeklyMaintenanceWindow',
9794
'ZoneMetadata',
9895
)
96+
97+
api_core.check_python_version("google.cloud.redis_v1")
98+
api_core.check_dependency_versions("google.cloud.redis_v1")

packages/gapic-generator/tests/integration/goldens/redis_selective/google/cloud/redis_v1/__init__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,6 @@
5555
from .types.cloud_redis import WeeklyMaintenanceWindow
5656
from .types.cloud_redis import ZoneMetadata
5757

58-
api_core.check_python_version("google.cloud.redis_v1")
59-
api_core.check_dependency_versions("google.cloud.redis_v1")
60-
6158
__all__ = (
6259
'CloudRedisAsyncClient',
6360
'CloudRedisClient',
@@ -82,3 +79,6 @@
8279
'WeeklyMaintenanceWindow',
8380
'ZoneMetadata',
8481
)
82+
83+
api_core.check_python_version("google.cloud.redis_v1")
84+
api_core.check_dependency_versions("google.cloud.redis_v1")

packages/gapic-generator/tests/integration/goldens/storagebatchoperations/google/cloud/storagebatchoperations_v1/__init__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,6 @@
6464
from .types.storage_batch_operations_types import RewriteObject
6565
from .types.storage_batch_operations_types import UpdateObjectCustomContext
6666

67-
api_core.check_python_version("google.cloud.storagebatchoperations_v1")
68-
api_core.check_dependency_versions("google.cloud.storagebatchoperations_v1")
69-
7067
__all__ = (
7168
'StorageBatchOperationsAsyncClient',
7269
'BucketList',
@@ -99,3 +96,6 @@
9996
'StorageBatchOperationsClient',
10097
'UpdateObjectCustomContext',
10198
)
99+
100+
api_core.check_python_version("google.cloud.storagebatchoperations_v1")
101+
api_core.check_dependency_versions("google.cloud.storagebatchoperations_v1")

0 commit comments

Comments
 (0)