@@ -71,22 +71,22 @@ def normalize_varname(field):
7171 return field
7272
7373
74- def gen_field (field , meta ):
74+ def gen_field (field , meta , override = None ):
7575 if field .omit ():
7676 return ("" , "" )
7777 if isinstance (field , CompositeField ):
78- return gen_composite (field , meta )
78+ return gen_composite (field , meta , override )
7979 elif isinstance (field , EnumField ):
80- return gen_enum (field , meta )
80+ return gen_enum (field , meta , override )
8181 elif isinstance (field , ArrayField ):
82- return gen_array (field , meta )
82+ return gen_array (field , meta , override )
8383 elif isinstance (field , PrimitiveField ):
8484 return gen_primitive (field )
8585 else :
8686 raise TypeError (f"Unmanaged type { field } " )
8787
8888
89- def gen_enum (e , meta ):
89+ def gen_enum (e , meta , override ):
9090 defi , decl = "" , ""
9191
9292 if e .omit ():
@@ -95,14 +95,21 @@ def gen_enum(e, meta):
9595 if e .description != "" :
9696 decl += f"/// { e .description } \n "
9797
98+ if override is None :
99+ message_name = e .typename .name
100+ override = lambda x : x
101+ typename = override (str (e .typename ))
102+ else :
103+ typename = override (str (e .typename ))
104+ message_name = typename
105+
98106 if e .deprecated :
99107 decl += "#[deprecated]\n "
100- decl += f"#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]\n #[allow(non_camel_case_types)]\n pub enum { e . typename } {{\n "
108+ decl += f"#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]\n #[allow(non_camel_case_types)]\n pub enum { typename } {{\n "
101109
102110 m = meta ["grpc-field-map" ]
103111 m2 = meta ["grpc-enum-map" ]
104112
105- message_name = e .typename .name
106113 assert not (message_name in m and message_name in m2 )
107114 if message_name in m :
108115 m = m [message_name ]
@@ -130,9 +137,9 @@ def gen_enum(e, meta):
130137 # representation
131138 decl += dedent (
132139 f"""\
133- impl TryFrom<i32> for { e . typename } {{
140+ impl TryFrom<i32> for { typename } {{
134141 type Error = anyhow::Error;
135- fn try_from(c: i32) -> Result<{ e . typename } , anyhow::Error> {{
142+ fn try_from(c: i32) -> Result<{ typename } , anyhow::Error> {{
136143 match c {{
137144 """
138145 )
@@ -141,16 +148,16 @@ def gen_enum(e, meta):
141148 for v in sorted_variants :
142149 norm = v .normalized ()
143150 # decl += f" #[serde(rename = \"{v}\")]\n"
144- decl += f" { m [str (v )]} => Ok({ e . typename } ::{ norm } ),\n "
151+ decl += f" { m [str (v )]} => Ok({ typename } ::{ norm } ),\n "
145152 else :
146153 for i , v in enumerate (e .variants ):
147154 norm = v .normalized ()
148155 # decl += f" #[serde(rename = \"{v}\")]\n"
149- decl += f" { i } => Ok({ e . typename } ::{ norm } ),\n "
156+ decl += f" { i } => Ok({ typename } ::{ norm } ),\n "
150157
151158 decl += dedent (
152159 f"""\
153- o => Err(anyhow::anyhow!("Unknown variant {{}} for enum { e . typename } ", o)),
160+ o => Err(anyhow::anyhow!("Unknown variant {{}} for enum { typename } ", o)),
154161 }}
155162 }}
156163 }}
@@ -162,14 +169,14 @@ def gen_enum(e, meta):
162169 # appear in the schemas.
163170 decl += dedent (
164171 f"""\
165- impl ToString for { e . typename } {{
172+ impl ToString for { typename } {{
166173 fn to_string(&self) -> String {{
167174 match self {{
168175 """
169176 )
170177 for v in e .variants :
171178 norm = v .normalized ()
172- decl += f' { e . typename } ::{ norm } => "{ norm } ",\n '
179+ decl += f' { typename } ::{ norm } => "{ norm } ",\n '
173180 decl += dedent (
174181 f"""\
175182 }}.to_string()
@@ -179,8 +186,6 @@ def gen_enum(e, meta):
179186 """
180187 )
181188
182- typename = e .typename
183-
184189 if e .override () is not None :
185190 decl = "" # No declaration if we have an override
186191 typename = e .override ()
@@ -220,10 +225,10 @@ def rename_if_necessary(original, name):
220225 return f""
221226
222227
223- def gen_array (a , meta ):
228+ def gen_array (a , meta , override = None ):
224229 name = a .name .normalized ().replace ("[]" , "" )
225230 logger .debug (f"Generating array field { a .name } -> { name } ({ a .path } )" )
226- _ , decl = gen_field (a .itemtype , meta )
231+ _ , decl = gen_field (a .itemtype , meta , override )
227232
228233 if a .override ():
229234 decl = "" # No declaration if we have an override
@@ -254,11 +259,11 @@ def gen_array(a, meta):
254259 return (defi , decl )
255260
256261
257- def gen_composite (c , meta ) -> Tuple [str , str ]:
262+ def gen_composite (c , meta , override = None ) -> Tuple [str , str ]:
258263 logger .debug (f"Generating composite field { c .name } ({ c .path } )" )
259264 fields = []
260265 for f in c .fields :
261- fields .append (gen_field (f , meta ))
266+ fields .append (gen_field (f , meta , override ))
262267 fields = sorted (fields )
263268
264269 r = "" .join ([f [1 ] for f in fields ])
0 commit comments