Skip to content

Commit 4255bda

Browse files
authored
fix: remove duplicate set param functions when param exists in parent (googleapis#23944)
* fix so if a parameter already exists in the parent level do not add it again * removed debugging * remove debugging step
1 parent 9f52e35 commit 4255bda

File tree

1 file changed

+26
-23
lines changed
  • generator/src/googleapis/codegen

1 file changed

+26
-23
lines changed

generator/src/googleapis/codegen/api.py

Lines changed: 26 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,16 @@ def __init__(self, discovery_doc, language=None):
133133
# update the schema template properties.
134134
self._variant_info = {}
135135

136+
# Global parameters
137+
self._parameters = []
138+
param_dict = self.values.get('parameters') or {}
139+
for name in sorted(param_dict):
140+
parameter = Parameter(self, name, param_dict[name], self)
141+
self._parameters.append(parameter)
142+
if name == 'alt':
143+
self.SetTemplateValue('alt', parameter)
144+
self.SetTemplateValue('parameters', self._parameters)
145+
136146
# Build data types and methods
137147
self._SetupModules()
138148
self.void_type = data_types.Void(self)
@@ -150,16 +160,6 @@ def __init__(self, discovery_doc, language=None):
150160
self._top_level_methods.append(Method(self, name, method_dict[name]))
151161
self.SetTemplateValue('methods', self._top_level_methods)
152162

153-
# Global parameters
154-
self._parameters = []
155-
param_dict = self.values.get('parameters') or {}
156-
for name in sorted(param_dict):
157-
parameter = Parameter(self, name, param_dict[name], self)
158-
self._parameters.append(parameter)
159-
if name == 'alt':
160-
self.SetTemplateValue('alt', parameter)
161-
self.SetTemplateValue('parameters', self._parameters)
162-
163163
# Auth scopes
164164
self._authscopes = []
165165
if (self.values.get('auth') and
@@ -725,20 +725,23 @@ def __init__(self, api, name, def_dict, parent=None):
725725
req_parameters = []
726726
opt_parameters = []
727727
for name, def_dict in list(self.values.get('parameters', {}).items()):
728-
param = Parameter(api, name, def_dict, self)
729-
if name == 'alt':
730-
# Treat the alt parameter differently
731-
self.SetTemplateValue('alt', param)
732-
continue
733-
734-
# Standard params are part of the generic request class
735-
# We want to push all parameters that aren't declared inside
736-
# parameterOrder after those that are.
737-
if param.values['wireName'] in order:
738-
req_parameters.append(param)
728+
if any(param.codeName == name for param in api._parameters):
729+
_LOGGER.debug("Param %s exists at the global level, not including.", name)
739730
else:
740-
# optional parameters are appended in the order they're declared.
741-
opt_parameters.append(param)
731+
param = Parameter(api, name, def_dict, self)
732+
if name == 'alt':
733+
# Treat the alt parameter differently
734+
self.SetTemplateValue('alt', param)
735+
continue
736+
737+
# Standard params are part of the generic request class
738+
# We want to push all parameters that aren't declared inside
739+
# parameterOrder after those that are.
740+
if param.values['wireName'] in order:
741+
req_parameters.append(param)
742+
else:
743+
# optional parameters are appended in the order they're declared.
744+
opt_parameters.append(param)
742745
# pylint: disable=g-long-lambda
743746
req_parameters.sort(key=lambda x: order.index(x.values['wireName']))
744747
# sort optional parameters by name to avoid code churn

0 commit comments

Comments
 (0)