Skip to content

Commit 8078961

Browse files
authored
fix: add special method parameters to set of reserved module names (googleapis#1168)
Ignoring flattened parameters, there are four special parameters to all client methods: * request * retry * timeout * metadata These cannot conflict with module names, and so the module names must be disambiguated.
1 parent 13b2028 commit 8078961

File tree

2 files changed

+30
-2
lines changed

2 files changed

+30
-2
lines changed

gapic/schema/api.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -262,12 +262,16 @@ def build(
262262
file_descriptors,
263263
), opts=opts)
264264

265+
# "metadata", "retry", "timeout", and "request" are reserved words in client methods.
266+
invalid_module_names = set(keyword.kwlist) | {
267+
"metadata", "retry", "timeout", "request"}
268+
265269
def disambiguate_keyword_fname(
266270
full_path: str,
267271
visited_names: Container[str]) -> str:
268272
path, fname = os.path.split(full_path)
269273
name, ext = os.path.splitext(fname)
270-
if name in keyword.kwlist or full_path in visited_names:
274+
if name in invalid_module_names or full_path in visited_names:
271275
name += "_"
272276
full_path = os.path.join(path, name + ext)
273277
if full_path in visited_names:

tests/unit/schema/test_api.py

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,27 @@ def test_proto_keyword_fname():
233233
name='class.proto',
234234
package='google.keywords.v1',
235235
messages=(make_message_pb2(name='ClassRequest', fields=()),),
236-
)
236+
),
237+
make_file_pb2(
238+
name='metadata.proto',
239+
package='google.keywords.v1',
240+
messages=(make_message_pb2(name='MetadataRequest', fields=()),),
241+
),
242+
make_file_pb2(
243+
name='retry.proto',
244+
package='google.keywords.v1',
245+
messages=(make_message_pb2(name='RetryRequest', fields=()),),
246+
),
247+
make_file_pb2(
248+
name='timeout.proto',
249+
package='google.keywords.v1',
250+
messages=(make_message_pb2(name='TimeoutRequest', fields=()),),
251+
),
252+
make_file_pb2(
253+
name='request.proto',
254+
package='google.keywords.v1',
255+
messages=(make_message_pb2(name='RequestRequest', fields=()),),
256+
),
237257
)
238258

239259
# We can't create new collisions, so check that renames cascade.
@@ -243,6 +263,10 @@ def test_proto_keyword_fname():
243263
'import__.proto',
244264
'class_.proto',
245265
'class__.proto',
266+
'metadata_.proto',
267+
'retry_.proto',
268+
'timeout_.proto',
269+
'request_.proto',
246270
}
247271

248272

0 commit comments

Comments
 (0)