@@ -70,8 +70,8 @@ def _process_unit_enum_directives(
7070 """
7171 Process unit enum directives.
7272
73- Annotates enum type with @vspec(element: QUANTITY_KIND, metadata: [{key: "quantity", value: "..."}] )
74- and individual enum values with @vspec(element: UNIT, metadata: [{key: "unit", value: "..."}])
73+ Annotates enum type with @vspec(element: QUANTITY_KIND)
74+ and individual enum values with @vspec(element: UNIT).
7575 """
7676 for quantity , units_data in unit_enums_metadata .items ():
7777 enum_name = f"{ convert_name_for_graphql_schema (quantity , GraphQLElementType .TYPE )} UnitEnum"
@@ -80,11 +80,7 @@ def _process_unit_enum_directives(
8080 for i , line in enumerate (lines ):
8181 if line .strip ().startswith (f"enum { enum_name } " ):
8282 if "@vspec" not in line :
83- # Annotate enum type with QUANTITY_KIND
84- directive = (
85- f"@vspec(element: QUANTITY_KIND, " f'metadata: [{{key: "quantity", value: "{ quantity } "}}])'
86- )
87- lines [i ] = line .replace (" {" , f" { directive } {{" )
83+ lines [i ] = line .replace (" {" , " @vspec(element: QUANTITY_KIND) {" )
8884 in_target_enum = True
8985 continue
9086 elif line .strip ().startswith ("enum " ) and in_target_enum :
@@ -105,9 +101,7 @@ def _process_unit_enum_directives(
105101 if stripped_line .startswith (enum_value_name ) and enum_value_key not in processed_values :
106102 if "@vspec" not in line :
107103 indent = line [: len (line ) - len (line .lstrip ())]
108- # Annotate enum value with UNIT
109- directive = f'@vspec(element: UNIT, metadata: [{{key: "unit", value: "{ unit_key } "}}])'
110- lines [i ] = f"{ indent } { enum_value_name } { directive } "
104+ lines [i ] = f"{ indent } { enum_value_name } @vspec(element: UNIT)"
111105
112106 processed_values .add (enum_value_key )
113107 break
@@ -119,29 +113,19 @@ def _process_allowed_enum_directives(
119113 """
120114 Process allowed value enum directives.
121115
122- Annotates the enum type itself with @vspec(element, fqn, metadata),
123- and annotates individual enum values that were modified with @vspec(metadata).
116+ Annotates the enum type itself with @vspec(element, fqn).
117+ Annotates individual enum values that were sanitized with @vspec(metadata: originalName ).
124118 """
125119 for enum_name , enum_data in allowed_enums_metadata .items ():
126120 fqn = enum_data .get ("fqn" , "" )
127121 vss_type = enum_data .get ("vss_type" , "ATTRIBUTE" )
128- allowed_values_dict = enum_data .get ("allowed_values" , {})
129122 modified_values = enum_data .get ("modified_values" , {})
130123
131- # Build the allowed values list for metadata
132- # GraphQL requires: value: "['val1', 'val2']" (double quotes outside, single quotes inside)
133- allowed_values_list = list (allowed_values_dict .values ())
134- allowed_str = ", " .join ([f"'{ v } '" for v in allowed_values_list ])
135-
136124 in_target_enum = False
137125 for i , line in enumerate (lines ):
138126 if line .strip ().startswith (f"enum { enum_name } " ):
139127 if "@vspec" not in line :
140- # Annotate the enum type
141- directive = (
142- f'@vspec(element: { vss_type } , fqn: "{ fqn } ", '
143- f'metadata: [{{key: "allowed", value: "[{ allowed_str } ]"}}])'
144- )
128+ directive = f'@vspec(element: { vss_type } , fqn: "{ fqn } ")'
145129 lines [i ] = line .replace (" {" , f" { directive } {{" )
146130 in_target_enum = True
147131 continue
@@ -216,13 +200,12 @@ def _process_instance_dimension_enum_directives(
216200 return lines
217201
218202 def _process_field_directives (self , lines : list [str ], vspec_comments : dict ) -> list [str ]:
219- """Process consolidated field @vspec directives (element + fqn + optional metadata)."""
220- # Process VSS type information (element + fqn + metadata)
203+ """Process consolidated field @vspec directives (element + fqn + optional instantiate metadata)."""
221204 for field_path , vss_info in vspec_comments .get ("field_vss_types" , {}).items ():
222205 type_name , field_name = field_path .split ("." , 1 ) # Use maxsplit=1 to handle field names with dots
223206 element = vss_info ["element" ]
224207 fqn = vss_info ["fqn" ]
225- instantiate = vss_info .get ("instantiate" ) # Check if this is a hoisted non-instantiated field
208+ instantiate = vss_info .get ("instantiate" ) # Only False for hoisted non-instantiated fields
226209
227210 in_type = False
228211 for i , line in enumerate (lines ):
@@ -237,26 +220,12 @@ def _process_field_directives(self, lines: list[str], vspec_comments: dict) -> l
237220 continue
238221
239222 if in_type and line .strip ().startswith (f"{ field_name } " ) and "@vspec" not in line :
240- # Build metadata array from extended attributes
241- metadata_entries = []
242-
243- # Add instantiate metadata if present
244223 if instantiate is False :
245- metadata_entries .append ('{key: "instantiate", value: "false"}' )
246-
247- # Add extended attributes metadata
248- for key , value in vss_info .items ():
249- if key not in ["element" , "fqn" , "instantiate" ]:
250- # Escape quotes in value
251- escaped_value = str (value ).replace ('"' , '\\ \\ "' )
252- metadata_entries .append (f'{{key: "{ key } ", value: "{ escaped_value } "}}' )
253-
254- # Build directive
255- if metadata_entries :
256- metadata_str = ", " .join (metadata_entries )
257- directive = f'@vspec(element: { element } , fqn: "{ fqn } ", metadata: [{ metadata_str } ])'
224+ directive = (
225+ f'@vspec(element: { element } , fqn: "{ fqn } ", '
226+ + 'metadata: [{key: "instantiate", value: "false"}])'
227+ )
258228 else :
259- # Standard directive without metadata
260229 directive = f'@vspec(element: { element } , fqn: "{ fqn } ")'
261230
262231 lines [i ] = line .rstrip () + f" { directive } "
@@ -376,36 +345,14 @@ def _process_type_directives(self, lines: list[str], vspec_comments: dict) -> li
376345
377346 # Add @vspec directive
378347 if needs_instance_tag and "@vspec" not in line :
379- # Instance tag types get special metadata with instances
380348 element = instance_tag_info ["element" ]
381349 fqn = instance_tag_info ["fqn" ]
382- instances = instance_tag_info ["instances" ]
383- directive = (
384- f'@vspec(element: { element } , fqn: "{ fqn } ", '
385- f'metadata: [{{key: "instances", value: "{ instances } "}}])'
386- )
387- new_line += f" { directive } "
350+ new_line += f' @vspec(element: { element } , fqn: "{ fqn } ")'
388351 elif needs_vss_type and "@vspec" not in line :
389- # Regular types get element + fqn + extended attributes metadata
390352 vss_info = vspec_comments ["vss_types" ][type_name ]
391353 element = vss_info ["element" ]
392354 fqn = vss_info ["fqn" ]
393-
394- # Build metadata array from extended attributes
395- metadata_entries = []
396- for key , value in vss_info .items ():
397- if key not in ["element" , "fqn" ]:
398- # Escape quotes in value
399- escaped_value = str (value ).replace ('"' , '\\ \\ "' )
400- metadata_entries .append (f'{{key: "{ key } ", value: "{ escaped_value } "}}' )
401-
402- # Build directive
403- if metadata_entries :
404- metadata_str = ", " .join (metadata_entries )
405- directive = f'@vspec(element: { element } , fqn: "{ fqn } ", metadata: [{ metadata_str } ])'
406- else :
407- directive = f'@vspec(element: { element } , fqn: "{ fqn } ")'
408- new_line += f" { directive } "
355+ new_line += f' @vspec(element: { element } , fqn: "{ fqn } ")'
409356
410357 new_line += " {"
411358 lines [i ] = new_line # No extra indentation
0 commit comments