Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add code sample language parity check to make_rst.py #86971

Merged
merged 1 commit into from
Jan 16, 2024

Conversation

YuriSizov
Copy link
Contributor

This adds a non-blocking validator to make_rst.py which can report if codeblocks are missing parity between GDScript and C# samples. It's greedy and only ignores global contexts (which are basically GDScript-only methods). We may want to exclude Variant types as well, but I'm not confident that we should. There are differences in those types, but they should probably still be documented with correct samples. cc @raulsntos though.

The report is shallow by default:

Checking for errors in the XML class reference...
Generating the RST class reference...

Generating the index file...

297 code samples failed parity check. Use --verbose to get more information.

No warnings or errors found in the class reference XML.

But using the new --verbose flag you can see it in its entirety:

297 code samples failed parity check:
- 1 hits in class "AnimatedSprite2D"
  - Only one script language sample found in [codeblocks] in method "set_frame_and_progress" description
- 1 hits in class "AnimatedSprite3D"
  - Only one script language sample found in [codeblocks] in method "set_frame_and_progress" description
- 7 hits in class "AnimationMixer"
  - Only one script language sample found in [codeblocks] in method "get_root_motion_position" description
  - Only one script language sample found in [codeblocks] in method "get_root_motion_position" description
  - Only one script language sample found in [codeblocks] in method "get_root_motion_position_accumulator" description
  - Only one script language sample found in [codeblocks] in method "get_root_motion_rotation" description
  - Only one script language sample found in [codeblocks] in method "get_root_motion_rotation_accumulator" description
  - Only one script language sample found in [codeblocks] in method "get_root_motion_scale" description
  - Only one script language sample found in [codeblocks] in method "get_root_motion_scale_accumulator" description
- 2 hits in class "Area2D"
  - Only one script language sample found in [codeblocks] in signal "area_shape_entered" description
  - Only one script language sample found in [codeblocks] in signal "body_shape_entered" description
- 2 hits in class "Area3D"
  - Only one script language sample found in [codeblocks] in signal "area_shape_entered" description
  - Only one script language sample found in [codeblocks] in signal "body_shape_entered" description
- 8 hits in class "Array"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "all" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "any" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "append_array" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "filter" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "map" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "max" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "reduce" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "sort" description
- 4 hits in class "AStarGrid2D"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in constant "HEURISTIC_EUCLIDEAN" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in constant "HEURISTIC_MANHATTAN" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in constant "HEURISTIC_OCTILE" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in constant "HEURISTIC_CHEBYSHEV" description
- 1 hits in class "BitMap"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "opaque_to_polygons" description
- 3 hits in class "Callable"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "Callable" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "call_deferred" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "unbind" description
- 1 hits in class "CallbackTweener"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "set_delay" description
- 1 hits in class "Camera3D"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "unproject_position" description
- 1 hits in class "CanvasGroup"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "CanvasGroup" description
- 1 hits in class "CanvasItem"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "draw_lcd_texture_rect_region" description
- 1 hits in class "CharFXTransform"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in property "env" description
- 1 hits in class "ConfigFile"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "ConfigFile" description
- 2 hits in class "Control"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in signal "mouse_exited" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_screen_position" description
- 1 hits in class "Curve2D"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "sample_baked_with_rotation" description
- 2 hits in class "Dictionary"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "has" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "has_all" description
- 1 hits in class "DirAccess"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "DirAccess" description
- 15 hits in class "DisplayServer"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_window_at_screen_position" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "global_menu_add_check_item" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "global_menu_add_icon_check_item" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "global_menu_add_icon_item" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "global_menu_add_icon_radio_check_item" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "global_menu_add_item" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "global_menu_add_multistate_item" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "global_menu_add_radio_check_item" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "global_menu_add_separator" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "global_menu_add_submenu_item" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "global_menu_clear" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "screen_get_dpi" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "screen_get_position" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "screen_get_refresh_rate" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "window_set_position" description
- 1 hits in class "EditorDebuggerPlugin"
  - Only one script language sample found in [codeblocks] in class "EditorDebuggerPlugin" description
- 3 hits in class "EditorPaths"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_cache_dir" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_config_dir" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_data_dir" description
- 8 hits in class "EditorPlugin"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "_get_state" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "_get_unsaved_status" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "_get_unsaved_status" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "_get_window_layout" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "_has_main_screen" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "_set_state" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "_set_window_layout" description
  - Only one script language sample found in [codeblocks] in method "add_inspector_plugin" description
- 1 hits in class "EditorResourceConversionPlugin"
  - Only one script language sample found in [codeblocks] in class "EditorResourceConversionPlugin" description
- 1 hits in class "EditorResourceTooltipPlugin"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "_make_tooltip_for_path" description
- 1 hits in class "FileAccess"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_csv_line" description
- 7 hits in class "float"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator *" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator *" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator *" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator *" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator *" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator **" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator **" description
- 1 hits in class "Font"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_supported_variation_list" description
- 1 hits in class "FontVariation"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "FontVariation" description
- 1 hits in class "GDScript"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "new" description
- 2 hits in class "GraphEdit"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "_is_in_input_hotzone" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "_is_in_output_hotzone" description
- 1 hits in class "HTTPClient"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_response_headers_as_dictionary" description
- 3 hits in class "ImageTexture"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "ImageTexture" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "ImageTexture" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "ImageTexture" description
- 2 hits in class "InputEventKey"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in property "key_label" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in property "keycode" description
- 14 hits in class "int"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator %" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator &" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator &" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator *" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator **" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator **" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator /" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator /" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator <<" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator >>" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator ^" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator |" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator |" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator ~" description
- 1 hits in class "IP"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_local_interfaces" description
- 1 hits in class "JavaScriptObject"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "JavaScriptObject" description
- 3 hits in class "JSON"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "JSON" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "JSON" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "stringify" description
- 1 hits in class "MobileVRInterface"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "MobileVRInterface" description
- 1 hits in class "MovieWriter"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "_handles_file" description
- 2 hits in class "MultiplayerAPIExtension"
  - Only one script language sample found in [codeblocks] in class "MultiplayerAPIExtension" description
  - Only one script language sample found in [codeblocks] in class "MultiplayerAPIExtension" description
- 7 hits in class "Node"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "_get_configuration_warnings" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_child" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_node" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_tree_string" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_tree_string_pretty" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "print_tree" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "print_tree_pretty" description
- 2 hits in class "NodePath"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "NodePath" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in constructor "NodePath" description
- 1 hits in class "NoiseTexture2D"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "NoiseTexture2D" description
- 1 hits in class "NoiseTexture3D"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "NoiseTexture3D" description
- 3 hits in class "Object"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "Object" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "_to_string" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "call_deferred" description
- 1 hits in class "OS"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_cmdline_user_args" description
- 1 hits in class "PackedColorArray"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in constructor "PackedColorArray" description
- 2 hits in class "PackedDataContainer"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "PackedDataContainer" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "PackedDataContainer" description
- 1 hits in class "PackedDataContainerRef"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "PackedDataContainerRef" description
- 1 hits in class "PackedStringArray"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "PackedStringArray" description
- 1 hits in class "PackedVector2Array"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in constructor "PackedVector2Array" description
- 1 hits in class "PackedVector3Array"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in constructor "PackedVector3Array" description
- 1 hits in class "PhysicsRayQueryParameters2D"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "create" description
- 1 hits in class "PhysicsRayQueryParameters3D"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "create" description
- 3 hits in class "ProjectSettings"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in property "editor/run/main_run_args" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in property "rendering/vrs/texture" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "globalize_path" description
- 3 hits in class "PropertyTweener"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "as_relative" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "from" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "from_current" description
- 3 hits in class "RandomNumberGenerator"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "RandomNumberGenerator" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in property "seed" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in property "state" description
- 5 hits in class "RDPipelineColorBlendStateAttachment"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "RDPipelineColorBlendStateAttachment" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "RDPipelineColorBlendStateAttachment" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "RDPipelineColorBlendStateAttachment" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "RDPipelineColorBlendStateAttachment" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "RDPipelineColorBlendStateAttachment" description
- 5 hits in class "RegEx"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "RegEx" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "RegEx" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "RegEx" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "RegEx" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "RegEx" description
- 2 hits in class "RenderingDevice"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "compute_list_begin" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "draw_list_begin" description
- 9 hits in class "RenderingServer"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "camera_attributes_set_exposure" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "camera_attributes_set_exposure" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_rendering_info" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_test_texture" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_white_texture" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "multimesh_set_buffer" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "texture_2d_get" description
  - Only one script language sample found in [codeblocks] in method "viewport_attach_to_screen" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "viewport_get_render_info" description
- 2 hits in class "Resource"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "_setup_local_to_scene" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "emit_changed" description
- 1 hits in class "ResourceImporterCSVTranslation"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "ResourceImporterCSVTranslation" description
- 1 hits in class "ResourceLoader"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_dependencies" description
- 2 hits in class "RichTextLabel"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "install_effect" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "install_effect" description
- 1 hits in class "SceneTree"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "call_group_flags" description
- 3 hits in class "ScrollContainer"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in property "scroll_horizontal" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in property "scroll_vertical" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "ensure_control_visible" description
- 1 hits in class "Signal"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "connect" description
- 1 hits in class "SkeletonIK3D"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "SkeletonIK3D" description
- 1 hits in class "SpriteFrames"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_frame_duration" description
- 23 hits in class "String"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "bigrams" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "chr" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "format" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "format" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_base_dir" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_basename" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_extension" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_file" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_slice" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "is_subsequence_of" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "is_valid_float" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "is_valid_hex_number" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "is_valid_identifier" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "is_valid_int" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "left" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "num" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "right" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "similarity" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "simplify_path" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "split_floats" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "to_float" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "to_int" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator %" description
- 20 hits in class "StringName"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "bigrams" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "format" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "format" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_base_dir" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_basename" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_extension" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_file" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_slice" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "is_subsequence_of" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "is_valid_float" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "is_valid_hex_number" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "is_valid_identifier" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "is_valid_int" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "left" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "right" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "similarity" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "simplify_path" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "split_floats" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "to_float" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "to_int" description
- 2 hits in class "StyleBoxFlat"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "StyleBoxFlat" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "StyleBoxFlat" description
- 1 hits in class "SyntaxHighlighter"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_line_syntax_highlighting" description
- 2 hits in class "TextServer"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "string_get_character_breaks" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "string_get_word_breaks" description
- 1 hits in class "TextServerDummy"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "TextServerDummy" description
- 1 hits in class "TileMap"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_cell_tile_data" description
- 1 hits in class "TileSetAtlasSource"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in constant "TRANSFORM_FLIP_H" description
- 1 hits in class "TLSOptions"
  - Only one script language sample found in [codeblocks] in class "TLSOptions" description
- 2 hits in class "UndoRedo"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "add_do_reference" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "add_undo_reference" description
- 3 hits in class "UPNP"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "UPNP" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "UPNP" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "UPNP" description
- 5 hits in class "Vector2"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "from_angle" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator *" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator +" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator -" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator /" description
- 8 hits in class "Vector2i"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator %" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator %" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator *" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator *" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator +" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator -" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator /" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator /" description
- 4 hits in class "Vector3"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator *" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator +" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator -" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator /" description
- 8 hits in class "Vector3i"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator %" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator %" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator *" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator *" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator +" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator -" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator /" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator /" description
- 6 hits in class "Vector4"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator *" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator *" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator +" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator -" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator /" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator /" description
- 8 hits in class "Vector4i"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator %" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator %" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator *" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator *" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator +" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator -" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator /" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in operator "operator /" description
- 2 hits in class "Viewport"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in property "vrs_texture" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_texture" description
- 2 hits in class "VisualShaderNodeColorFunc"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in constant "FUNC_GRAYSCALE" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in constant "FUNC_SEPIA" description
- 9 hits in class "VisualShaderNodeColorOp"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in constant "OP_SCREEN" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in constant "OP_DIFFERENCE" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in constant "OP_DARKEN" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in constant "OP_LIGHTEN" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in constant "OP_OVERLAY" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in constant "OP_DODGE" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in constant "OP_BURN" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in constant "OP_SOFT_LIGHT" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in constant "OP_HARD_LIGHT" description
- 1 hits in class "VisualShaderNodeCustom"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "VisualShaderNodeCustom" description
- 2 hits in class "WebRTCPeerConnection"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "create_data_channel" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "initialize" description
- 1 hits in class "WebSocketPeer"
  - Only one script language sample found in [codeblocks] in class "WebSocketPeer" description
- 1 hits in class "WebXRInterface"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "WebXRInterface" description
- 1 hits in class "Window"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in signal "files_dropped" description
- 1 hits in class "XRInterface"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "set_environment_blend_mode" description
- 1 hits in class "ZIPPacker"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "ZIPPacker" description
- 1 hits in class "ZIPReader"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "ZIPReader" description

Here's how it looks colorized:

Code_2024-01-08_21-09-11

The purpose of this is to provide a tool for documentation contributors to quickly find pieces of the docs missing C# samples. I don't think this is something we can currently enforce on the CI, but maybe one day, after increasing completion and adjusting the settings of this validator.

Inspired by Juan's tweet from a few days ago.

@raulsntos
Copy link
Member

I love this, I think it can be very helpful. Although I think the bigger problem is that the C# example exists but is outdated.

We may want to exclude Variant types as well, but I'm not confident that we should. There are differences in those types, but they should probably still be documented with correct samples

C# types with notable differences are listed in in CLASSES_WITH_CSHARP_DIFFERENCES. The types in this list will generate a note that links to the C# API differences to GDScript documentation page, it looks like this:

image

The problem with these types is that often the methods themselves have a different name or are in a completely different type, so adding an example under a function named after Core/GDScript will look weird.

For example, the Array type has an append method in GDScript but in C# it's called Add. The class reference lists the methods as they are named in ClassDB. Would it make sense to add a C# example to the append method that uses Add? We currently do it for the has method (the C# method is named Contains).

This is one of the reasons why users ask for a dedicated C# class reference (see godotengine/godot-docs#6596).

I don't want to go too off-topic, I just wanted to illustrate that this is a complicated issue so I think it may be reasonable to exclude Variant types. These types are documented in the C# source code.

@YuriSizov
Copy link
Contributor Author

I don't want to go too off-topic, I just wanted to illustrate that this is a complicated issue so I think it may be reasonable to exclude Variant types. These types are documented in the C# source code.

Makes sense.

What do we want to do with Array.has from your example, or any other such case? If we don't really benefit from having such samples because users would be hard pressed to find them in the first place, maybe we should not include them in Variant types as a policy? Also, are all Variant types replaced in C# glue, or are there any exceptions?

@raulsntos
Copy link
Member

are all Variant types replaced in C# glue, or are there any exceptions?

All Variant types are manually defined in C# or use a BCL type except for Object which is partially generated. Object is called GodotObject in C# but most of its API is generated so it should match Core/GDScript pretty closely.

Some of the Variant types, even though they are manually defined, don't differ too much form Core's API. In general, if the Variant type is not listed in CLASSES_WITH_CSHARP_DIFFERENCES it should not have too many differences from Core API.

For the parity check we can just exclude all Variants except Object. I think that'd be good enough so we don't have to maintain a list.

What do we want to do with Array.has from your example, or any other such case?

I don't know. I don't mind including C# samples even if they look a bit odd and aren't very discoverable, I just wouldn't make it a requirement. Specially if this parity check is enforced in CI in the future.

@paulloz
Copy link
Member

paulloz commented Jan 14, 2024

This is going to be very useful, thanks 🙏

@YuriSizov YuriSizov force-pushed the makerst-parity-check branch 2 times, most recently from e3054e1 to cb136c5 Compare January 15, 2024 13:36
@YuriSizov
Copy link
Contributor Author

Removed all Variant types except for Object (which conveniently still has missing parity). Here's what the output looks like with the current master:

176 code samples failed parity check. Use --verbose to get more information
176 code samples failed parity check:
- 1 hits in class "AnimatedSprite2D"
  - Only one script language sample found in [codeblocks] in method "set_frame_and_progress" description
- 1 hits in class "AnimatedSprite3D"
  - Only one script language sample found in [codeblocks] in method "set_frame_and_progress" description
- 7 hits in class "AnimationMixer"
  - Only one script language sample found in [codeblocks] in method "get_root_motion_position" description
  - Only one script language sample found in [codeblocks] in method "get_root_motion_position" description
  - Only one script language sample found in [codeblocks] in method "get_root_motion_position_accumulator" description
  - Only one script language sample found in [codeblocks] in method "get_root_motion_rotation" description
  - Only one script language sample found in [codeblocks] in method "get_root_motion_rotation_accumulator" description
  - Only one script language sample found in [codeblocks] in method "get_root_motion_scale" description
  - Only one script language sample found in [codeblocks] in method "get_root_motion_scale_accumulator" description
- 2 hits in class "Area2D"
  - Only one script language sample found in [codeblocks] in signal "area_shape_entered" description
  - Only one script language sample found in [codeblocks] in signal "body_shape_entered" description
- 2 hits in class "Area3D"
  - Only one script language sample found in [codeblocks] in signal "area_shape_entered" description
  - Only one script language sample found in [codeblocks] in signal "body_shape_entered" description
- 4 hits in class "AStarGrid2D"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in constant "HEURISTIC_EUCLIDEAN" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in constant "HEURISTIC_MANHATTAN" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in constant "HEURISTIC_OCTILE" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in constant "HEURISTIC_CHEBYSHEV" description
- 1 hits in class "BitMap"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "opaque_to_polygons" description
- 1 hits in class "CallbackTweener"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "set_delay" description
- 1 hits in class "Camera3D"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "unproject_position" description
- 1 hits in class "CanvasGroup"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "CanvasGroup" description
- 1 hits in class "CanvasItem"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "draw_lcd_texture_rect_region" description
- 1 hits in class "CharFXTransform"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in property "env" description
- 1 hits in class "ConfigFile"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "ConfigFile" description
- 2 hits in class "Control"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in signal "mouse_exited" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_screen_position" description
- 1 hits in class "Curve2D"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "sample_baked_with_rotation" description
- 1 hits in class "DirAccess"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "DirAccess" description
- 15 hits in class "DisplayServer"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_window_at_screen_position" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "global_menu_add_check_item" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "global_menu_add_icon_check_item" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "global_menu_add_icon_item" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "global_menu_add_icon_radio_check_item" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "global_menu_add_item" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "global_menu_add_multistate_item" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "global_menu_add_radio_check_item" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "global_menu_add_separator" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "global_menu_add_submenu_item" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "global_menu_clear" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "screen_get_dpi" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "screen_get_position" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "screen_get_refresh_rate" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "window_set_position" description
- 1 hits in class "EditorDebuggerPlugin"
  - Only one script language sample found in [codeblocks] in class "EditorDebuggerPlugin" description
- 1 hits in class "EditorExportPlatformIOS"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in property "application/additional_plist_content" description
- 1 hits in class "EditorExportPlatformMacOS"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in property "application/additional_plist_content" description
- 3 hits in class "EditorPaths"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_cache_dir" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_config_dir" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_data_dir" description
- 8 hits in class "EditorPlugin"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "_get_state" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "_get_unsaved_status" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "_get_unsaved_status" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "_get_window_layout" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "_has_main_screen" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "_set_state" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "_set_window_layout" description
  - Only one script language sample found in [codeblocks] in method "add_inspector_plugin" description
- 1 hits in class "EditorResourceConversionPlugin"
  - Only one script language sample found in [codeblocks] in class "EditorResourceConversionPlugin" description
- 1 hits in class "EditorResourceTooltipPlugin"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "_make_tooltip_for_path" description
- 1 hits in class "FileAccess"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_csv_line" description
- 1 hits in class "Font"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_supported_variation_list" description
- 1 hits in class "FontVariation"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "FontVariation" description
- 1 hits in class "GDScript"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "new" description
- 2 hits in class "GraphEdit"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "_is_in_input_hotzone" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "_is_in_output_hotzone" description
- 1 hits in class "HTTPClient"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_response_headers_as_dictionary" description
- 3 hits in class "ImageTexture"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "ImageTexture" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "ImageTexture" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "ImageTexture" description
- 2 hits in class "InputEventKey"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in property "key_label" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in property "keycode" description
- 1 hits in class "IP"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_local_interfaces" description
- 1 hits in class "JavaScriptObject"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "JavaScriptObject" description
- 3 hits in class "JSON"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "JSON" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "JSON" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "stringify" description
- 1 hits in class "MobileVRInterface"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "MobileVRInterface" description
- 1 hits in class "MovieWriter"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "_handles_file" description
- 2 hits in class "MultiplayerAPIExtension"
  - Only one script language sample found in [codeblocks] in class "MultiplayerAPIExtension" description
  - Only one script language sample found in [codeblocks] in class "MultiplayerAPIExtension" description
- 7 hits in class "Node"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "_get_configuration_warnings" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_child" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_node" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_tree_string" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_tree_string_pretty" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "print_tree" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "print_tree_pretty" description
- 1 hits in class "NoiseTexture2D"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "NoiseTexture2D" description
- 1 hits in class "NoiseTexture3D"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "NoiseTexture3D" description
- 3 hits in class "Object"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "Object" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "_to_string" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "call_deferred" description
- 1 hits in class "OS"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_cmdline_user_args" description
- 2 hits in class "PackedDataContainer"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "PackedDataContainer" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "PackedDataContainer" description
- 1 hits in class "PackedDataContainerRef"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "PackedDataContainerRef" description
- 1 hits in class "PhysicsRayQueryParameters2D"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "create" description
- 1 hits in class "PhysicsRayQueryParameters3D"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "create" description
- 3 hits in class "ProjectSettings"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in property "editor/run/main_run_args" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in property "rendering/vrs/texture" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "globalize_path" description
- 3 hits in class "PropertyTweener"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "as_relative" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "from" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "from_current" description
- 3 hits in class "RandomNumberGenerator"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "RandomNumberGenerator" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in property "seed" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in property "state" description
- 5 hits in class "RDPipelineColorBlendStateAttachment"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "RDPipelineColorBlendStateAttachment" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "RDPipelineColorBlendStateAttachment" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "RDPipelineColorBlendStateAttachment" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "RDPipelineColorBlendStateAttachment" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "RDPipelineColorBlendStateAttachment" description
- 5 hits in class "RegEx"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "RegEx" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "RegEx" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "RegEx" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "RegEx" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "RegEx" description
- 2 hits in class "RenderingDevice"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "compute_list_begin" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "draw_list_begin" description
- 9 hits in class "RenderingServer"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "camera_attributes_set_exposure" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "camera_attributes_set_exposure" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_rendering_info" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_test_texture" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_white_texture" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "multimesh_set_buffer" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "texture_2d_get" description
  - Only one script language sample found in [codeblocks] in method "viewport_attach_to_screen" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "viewport_get_render_info" description
- 2 hits in class "Resource"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "_setup_local_to_scene" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "emit_changed" description
- 1 hits in class "ResourceImporterCSVTranslation"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "ResourceImporterCSVTranslation" description
- 1 hits in class "ResourceLoader"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_dependencies" description
- 2 hits in class "RichTextLabel"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "install_effect" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "install_effect" description
- 1 hits in class "SceneTree"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "call_group_flags" description
- 3 hits in class "ScrollContainer"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in property "scroll_horizontal" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in property "scroll_vertical" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "ensure_control_visible" description
- 1 hits in class "SkeletonIK3D"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "SkeletonIK3D" description
- 1 hits in class "SpriteFrames"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_frame_duration" description
- 2 hits in class "StyleBoxFlat"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "StyleBoxFlat" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "StyleBoxFlat" description
- 1 hits in class "SyntaxHighlighter"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_line_syntax_highlighting" description
- 2 hits in class "TextServer"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "string_get_character_breaks" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "string_get_word_breaks" description
- 1 hits in class "TextServerDummy"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "TextServerDummy" description
- 1 hits in class "TileMap"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_cell_tile_data" description
- 1 hits in class "TileSetAtlasSource"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in constant "TRANSFORM_FLIP_H" description
- 1 hits in class "TLSOptions"
  - Only one script language sample found in [codeblocks] in class "TLSOptions" description
- 2 hits in class "UndoRedo"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "add_do_reference" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "add_undo_reference" description
- 3 hits in class "UPNP"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "UPNP" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "UPNP" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "UPNP" description
- 2 hits in class "Viewport"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in property "vrs_texture" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "get_texture" description
- 2 hits in class "VisualShaderNodeColorFunc"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in constant "FUNC_GRAYSCALE" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in constant "FUNC_SEPIA" description
- 9 hits in class "VisualShaderNodeColorOp"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in constant "OP_SCREEN" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in constant "OP_DIFFERENCE" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in constant "OP_DARKEN" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in constant "OP_LIGHTEN" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in constant "OP_OVERLAY" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in constant "OP_DODGE" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in constant "OP_BURN" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in constant "OP_SOFT_LIGHT" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in constant "OP_HARD_LIGHT" description
- 1 hits in class "VisualShaderNodeCustom"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "VisualShaderNodeCustom" description
- 2 hits in class "WebRTCPeerConnection"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "create_data_channel" description
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "initialize" description
- 1 hits in class "WebSocketPeer"
  - Only one script language sample found in [codeblocks] in class "WebSocketPeer" description
- 1 hits in class "WebXRInterface"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "WebXRInterface" description
- 1 hits in class "Window"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in signal "files_dropped" description
- 1 hits in class "XRInterface"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in method "set_environment_blend_mode" description
- 1 hits in class "ZIPPacker"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "ZIPPacker" description
- 1 hits in class "ZIPReader"
  - Code sample is formatted with [codeblock] where [codeblocks] should be used in class "ZIPReader" description

Copy link
Member

@akien-mga akien-mga left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great to me! Makes sense to keep track of this.

@akien-mga akien-mga changed the title Add code sample language parity check to make_rst.py Add code sample language parity check to make_rst.py Jan 16, 2024
@akien-mga akien-mga merged commit 079d58b into godotengine:master Jan 16, 2024
15 checks passed
@akien-mga
Copy link
Member

Thanks!

@YuriSizov YuriSizov deleted the makerst-parity-check branch January 16, 2024 14:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants