From b12caf2343ee021843e5ca9134f8d03e1e8a1519 Mon Sep 17 00:00:00 2001 From: banteg <4562643+banteg@users.noreply.github.com> Date: Fri, 6 Feb 2026 20:15:46 +0400 Subject: [PATCH 1/8] test: add pyray stub parity and typing smoke checks --- tests/test_pyray_stub_parity.py | 78 ++++++++++++++++++++++++++++++++ tests/typing/pyray_stub_smoke.py | 15 ++++++ 2 files changed, 93 insertions(+) create mode 100644 tests/test_pyray_stub_parity.py create mode 100644 tests/typing/pyray_stub_smoke.py diff --git a/tests/test_pyray_stub_parity.py b/tests/test_pyray_stub_parity.py new file mode 100644 index 0000000..c36d343 --- /dev/null +++ b/tests/test_pyray_stub_parity.py @@ -0,0 +1,78 @@ +from pathlib import Path +import ast + + +ROOT = Path(__file__).resolve().parents[1] +PYRAY_STUB = ROOT / "pyray" / "__init__.pyi" + + +def _parse_stub() -> ast.Module: + return ast.parse(PYRAY_STUB.read_text(encoding="utf-8")) + + +def _top_level_names(module: ast.Module) -> set[str]: + names: set[str] = set() + for node in module.body: + if isinstance(node, ast.AnnAssign) and isinstance(node.target, ast.Name): + names.add(node.target.id) + elif isinstance(node, ast.Assign): + for target in node.targets: + if isinstance(target, ast.Name): + names.add(target.id) + return names + + +def _enum_member_names(module: ast.Module) -> set[str]: + names: set[str] = set() + for node in module.body: + if not isinstance(node, ast.ClassDef): + continue + if not any(isinstance(base, ast.Name) and base.id == "int" for base in node.bases): + continue + for class_node in node.body: + if not isinstance(class_node, ast.Assign): + continue + for target in class_node.targets: + if isinstance(target, ast.Name) and target.id.isupper(): + names.add(target.id) + return names + + +def test_enum_members_are_available_as_module_constants() -> None: + module = _parse_stub() + missing = sorted(_enum_member_names(module) - _top_level_names(module)) + assert not missing, ( + "Missing module-level constants for enum members; " + f"first missing names: {missing[:15]}" + ) + + +def test_stub_includes_expected_smoke_constants() -> None: + module_names = _top_level_names(_parse_stub()) + required_names = { + "BLEND_ALPHA", + "MOUSE_BUTTON_LEFT", + "RL_QUADS", + "RL_SRC_ALPHA", + "TEXTURE_FILTER_POINT", + } + assert required_names.issubset(module_names) + + +def test_texture2d_is_a_texture_alias() -> None: + module = _parse_stub() + class_names = { + node.name for node in module.body if isinstance(node, ast.ClassDef) + } + aliases: dict[str, str] = {} + for node in module.body: + if not isinstance(node, ast.Assign): + continue + if len(node.targets) != 1: + continue + target = node.targets[0] + if isinstance(target, ast.Name) and isinstance(node.value, ast.Name): + aliases[target.id] = node.value.id + + assert aliases.get("Texture2D") == "Texture" + assert "Texture2D" not in class_names diff --git a/tests/typing/pyray_stub_smoke.py b/tests/typing/pyray_stub_smoke.py new file mode 100644 index 0000000..bc20371 --- /dev/null +++ b/tests/typing/pyray_stub_smoke.py @@ -0,0 +1,15 @@ +import pyray as rl + + +blend: int = rl.BLEND_ALPHA +mode: int = rl.RL_QUADS +mouse: int = rl.MOUSE_BUTTON_LEFT +flt: int = rl.TEXTURE_FILTER_POINT + + +def accepts_texture(texture: rl.Texture | None) -> None: + return None + + +tex2d: rl.Texture2D | None = None +accepts_texture(tex2d) From 008b3abf1e34b845f467053c02aab541d5c55633 Mon Sep 17 00:00:00 2001 From: banteg <4562643+banteg@users.noreply.github.com> Date: Fri, 6 Feb 2026 20:15:50 +0400 Subject: [PATCH 2/8] feat: generate pyray module constants and struct aliases --- create_stub_pyray.py | 56 ++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 51 insertions(+), 5 deletions(-) diff --git a/create_stub_pyray.py b/create_stub_pyray.py index fb334e7..b2bed5f 100644 --- a/create_stub_pyray.py +++ b/create_stub_pyray.py @@ -13,13 +13,15 @@ # SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 from pathlib import Path -from raylib import rl, ffi +from raylib import rl, ffi, defines from pyray import _underscore from inspect import ismethod, getmembers, isbuiltin import inflection, sys, json known_functions = {} known_structs = {} +known_enum_values = set() +emitted_top_level_names = set() for filename in (Path("raylib.json"), Path("raymath.json"), Path("rlgl.json"), Path("raygui.json"), Path("physac.json"), Path("glfw3.json")): f = open(filename, "r") @@ -36,6 +38,7 @@ print(f' """{e['description']}."""') for value in e['values']: print(" "+value['name']+" = "+str(value['value'])) + known_enum_values.add(value['name']) print("") @@ -78,6 +81,27 @@ def ctype_to_python_type(t): return t +def value_to_python_type(value): + if isinstance(value, bool): + return "bool" + if isinstance(value, int): + return "int" + if isinstance(value, float): + return "float" + if isinstance(value, str): + return "str" + return str(type(value))[8:-2] + + +def emit_top_level_name(name, type_name): + if name.startswith("_"): + return + if name in emitted_top_level_names: + return + emitted_top_level_names.add(name) + print(f"{name}: {type_name}") + + print("""from typing import Any from warnings import deprecated import _cffi_backend # type: ignore @@ -86,6 +110,14 @@ def ctype_to_python_type(t): PhysicsShapeType = int """) +for constant_name in sorted(known_enum_values): + emit_top_level_name(constant_name, "int") + +for name in sorted(dir(defines)): + if not name.isupper(): + continue + emit_top_level_name(name, value_to_python_type(getattr(defines, name))) + # These words can be used for c arg names, but not in python reserved_words = ("in", "list", "tuple", "set", "dict", "from", "range", "min", "max", "any", "all", "len") @@ -132,14 +164,23 @@ def ctype_to_python_type(t): f'def {uname}(*args) -> {ctype_to_python_type(return_type)}:\n """VARARG FUNCTION - MAY NOT BE SUPPORTED BY CFFI"""\n ...') else: # print("*****", str(type(attr))) - t = str(type(attr))[8:-2] # this isolates the type - if t != "int": - print(f"{name}: {t}") - + emit_top_level_name(name, value_to_python_type(attr)) + +struct_aliases = { + "Texture2D": "Texture", + "TextureCubemap": "Texture", + "RenderTexture2D": "RenderTexture", +} +emitted_structs = set() +pending_aliases = {} for struct in ffi.list_types()[0]: print("processing", struct, file=sys.stderr) if ffi.typeof(struct).kind == "struct": + alias_target = struct_aliases.get(struct, None) + if alias_target is not None: + pending_aliases[struct] = alias_target + continue json_object = known_structs.get(struct, None) if json_object is None: # this is _not_ an exported struct from raylib, raymath, rlgl raygui or physac @@ -160,12 +201,17 @@ def ctype_to_python_type(t): for arg in ffi.typeof(struct).fields: print(f" self.{arg[0]}:{ctype_to_python_type(arg[1].type.cname)} = {arg[0]} # type: ignore") + emitted_structs.add(struct) # elif ffi.typeof(struct).kind == "enum": # print(f"{struct}: int") else: print("WARNING: SKIPPING UNKNOWN TYPE", ffi.typeof(struct), file=sys.stderr) +for alias, target in sorted(pending_aliases.items()): + if target in emitted_structs: + print(f"{alias} = {target}") + print(""" LIGHTGRAY : Color GRAY : Color From f55355f9757eb859c56992df8953a3c1e3702a04 Mon Sep 17 00:00:00 2001 From: banteg <4562643+banteg@users.noreply.github.com> Date: Fri, 6 Feb 2026 20:15:53 +0400 Subject: [PATCH 3/8] chore: regenerate pyray type stub exports --- pyray/__init__.pyi | 1259 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 1250 insertions(+), 9 deletions(-) diff --git a/pyray/__init__.pyi b/pyray/__init__.pyi index e8e8acb..bcbbc5a 100644 --- a/pyray/__init__.pyi +++ b/pyray/__init__.pyi @@ -910,6 +910,1255 @@ import _cffi_backend # type: ignore ffi: _cffi_backend.FFI PhysicsShapeType = int +# BEGIN GENERATED MODULE CONSTANTS +ARROWS_SIZE: int +ARROWS_VISIBLE: int +ARROW_PADDING: int +BACKGROUND_COLOR: int +BASE_COLOR_DISABLED: int +BASE_COLOR_FOCUSED: int +BASE_COLOR_NORMAL: int +BASE_COLOR_PRESSED: int +BLEND_ADDITIVE: int +BLEND_ADD_COLORS: int +BLEND_ALPHA: int +BLEND_ALPHA_PREMULTIPLY: int +BLEND_CUSTOM: int +BLEND_CUSTOM_SEPARATE: int +BLEND_MULTIPLIED: int +BLEND_SUBTRACT_COLORS: int +BORDER_COLOR_DISABLED: int +BORDER_COLOR_FOCUSED: int +BORDER_COLOR_NORMAL: int +BORDER_COLOR_PRESSED: int +BORDER_WIDTH: int +BUTTON: int +CAMERA_CUSTOM: int +CAMERA_FIRST_PERSON: int +CAMERA_FREE: int +CAMERA_ORBITAL: int +CAMERA_ORTHOGRAPHIC: int +CAMERA_PERSPECTIVE: int +CAMERA_THIRD_PERSON: int +CHECKBOX: int +CHECK_PADDING: int +COLORPICKER: int +COLOR_SELECTOR_SIZE: int +COMBOBOX: int +COMBO_BUTTON_SPACING: int +COMBO_BUTTON_WIDTH: int +CUBEMAP_LAYOUT_AUTO_DETECT: int +CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE: int +CUBEMAP_LAYOUT_CROSS_THREE_BY_FOUR: int +CUBEMAP_LAYOUT_LINE_HORIZONTAL: int +CUBEMAP_LAYOUT_LINE_VERTICAL: int +DEFAULT: int +DEG2RAD: float +DROPDOWNBOX: int +DROPDOWN_ARROW_HIDDEN: int +DROPDOWN_ITEMS_SPACING: int +DROPDOWN_ROLL_UP: int +EPSILON: float +FLAG_BORDERLESS_WINDOWED_MODE: int +FLAG_FULLSCREEN_MODE: int +FLAG_INTERLACED_HINT: int +FLAG_MSAA_4X_HINT: int +FLAG_VSYNC_HINT: int +FLAG_WINDOW_ALWAYS_RUN: int +FLAG_WINDOW_HIDDEN: int +FLAG_WINDOW_HIGHDPI: int +FLAG_WINDOW_MAXIMIZED: int +FLAG_WINDOW_MINIMIZED: int +FLAG_WINDOW_MOUSE_PASSTHROUGH: int +FLAG_WINDOW_RESIZABLE: int +FLAG_WINDOW_TOPMOST: int +FLAG_WINDOW_TRANSPARENT: int +FLAG_WINDOW_UNDECORATED: int +FLAG_WINDOW_UNFOCUSED: int +FONT_BITMAP: int +FONT_DEFAULT: int +FONT_SDF: int +GAMEPAD_AXIS_LEFT_TRIGGER: int +GAMEPAD_AXIS_LEFT_X: int +GAMEPAD_AXIS_LEFT_Y: int +GAMEPAD_AXIS_RIGHT_TRIGGER: int +GAMEPAD_AXIS_RIGHT_X: int +GAMEPAD_AXIS_RIGHT_Y: int +GAMEPAD_BUTTON_LEFT_FACE_DOWN: int +GAMEPAD_BUTTON_LEFT_FACE_LEFT: int +GAMEPAD_BUTTON_LEFT_FACE_RIGHT: int +GAMEPAD_BUTTON_LEFT_FACE_UP: int +GAMEPAD_BUTTON_LEFT_THUMB: int +GAMEPAD_BUTTON_LEFT_TRIGGER_1: int +GAMEPAD_BUTTON_LEFT_TRIGGER_2: int +GAMEPAD_BUTTON_MIDDLE: int +GAMEPAD_BUTTON_MIDDLE_LEFT: int +GAMEPAD_BUTTON_MIDDLE_RIGHT: int +GAMEPAD_BUTTON_RIGHT_FACE_DOWN: int +GAMEPAD_BUTTON_RIGHT_FACE_LEFT: int +GAMEPAD_BUTTON_RIGHT_FACE_RIGHT: int +GAMEPAD_BUTTON_RIGHT_FACE_UP: int +GAMEPAD_BUTTON_RIGHT_THUMB: int +GAMEPAD_BUTTON_RIGHT_TRIGGER_1: int +GAMEPAD_BUTTON_RIGHT_TRIGGER_2: int +GAMEPAD_BUTTON_UNKNOWN: int +GESTURE_DOUBLETAP: int +GESTURE_DRAG: int +GESTURE_HOLD: int +GESTURE_NONE: int +GESTURE_PINCH_IN: int +GESTURE_PINCH_OUT: int +GESTURE_SWIPE_DOWN: int +GESTURE_SWIPE_LEFT: int +GESTURE_SWIPE_RIGHT: int +GESTURE_SWIPE_UP: int +GESTURE_TAP: int +GLFW_ACCUM_ALPHA_BITS: int +GLFW_ACCUM_BLUE_BITS: int +GLFW_ACCUM_GREEN_BITS: int +GLFW_ACCUM_RED_BITS: int +GLFW_ALPHA_BITS: int +GLFW_ANGLE_PLATFORM_TYPE: int +GLFW_ANGLE_PLATFORM_TYPE_D3D11: int +GLFW_ANGLE_PLATFORM_TYPE_D3D9: int +GLFW_ANGLE_PLATFORM_TYPE_METAL: int +GLFW_ANGLE_PLATFORM_TYPE_NONE: int +GLFW_ANGLE_PLATFORM_TYPE_OPENGL: int +GLFW_ANGLE_PLATFORM_TYPE_OPENGLES: int +GLFW_ANGLE_PLATFORM_TYPE_VULKAN: int +GLFW_ANY_PLATFORM: int +GLFW_ANY_POSITION: int +GLFW_ANY_RELEASE_BEHAVIOR: int +GLFW_API_UNAVAILABLE: int +GLFW_ARROW_CURSOR: int +GLFW_AUTO_ICONIFY: int +GLFW_AUX_BUFFERS: int +GLFW_BLUE_BITS: int +GLFW_CENTER_CURSOR: int +GLFW_CLIENT_API: int +GLFW_COCOA_CHDIR_RESOURCES: int +GLFW_COCOA_FRAME_NAME: int +GLFW_COCOA_GRAPHICS_SWITCHING: int +GLFW_COCOA_MENUBAR: int +GLFW_COCOA_RETINA_FRAMEBUFFER: int +GLFW_CONNECTED: int +GLFW_CONTEXT_CREATION_API: int +GLFW_CONTEXT_DEBUG: int +GLFW_CONTEXT_NO_ERROR: int +GLFW_CONTEXT_RELEASE_BEHAVIOR: int +GLFW_CONTEXT_REVISION: int +GLFW_CONTEXT_ROBUSTNESS: int +GLFW_CONTEXT_VERSION_MAJOR: int +GLFW_CONTEXT_VERSION_MINOR: int +GLFW_CROSSHAIR_CURSOR: int +GLFW_CURSOR: int +GLFW_CURSOR_CAPTURED: int +GLFW_CURSOR_DISABLED: int +GLFW_CURSOR_HIDDEN: int +GLFW_CURSOR_NORMAL: int +GLFW_CURSOR_UNAVAILABLE: int +GLFW_DECORATED: int +GLFW_DEPTH_BITS: int +GLFW_DISCONNECTED: int +GLFW_DOUBLEBUFFER: int +GLFW_EGL_CONTEXT_API: int +GLFW_FALSE: int +GLFW_FEATURE_UNAVAILABLE: int +GLFW_FEATURE_UNIMPLEMENTED: int +GLFW_FLOATING: int +GLFW_FOCUSED: int +GLFW_FOCUS_ON_SHOW: int +GLFW_FORMAT_UNAVAILABLE: int +GLFW_GAMEPAD_AXIS_LEFT_TRIGGER: int +GLFW_GAMEPAD_AXIS_LEFT_X: int +GLFW_GAMEPAD_AXIS_LEFT_Y: int +GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER: int +GLFW_GAMEPAD_AXIS_RIGHT_X: int +GLFW_GAMEPAD_AXIS_RIGHT_Y: int +GLFW_GAMEPAD_BUTTON_A: int +GLFW_GAMEPAD_BUTTON_B: int +GLFW_GAMEPAD_BUTTON_BACK: int +GLFW_GAMEPAD_BUTTON_DPAD_DOWN: int +GLFW_GAMEPAD_BUTTON_DPAD_LEFT: int +GLFW_GAMEPAD_BUTTON_DPAD_RIGHT: int +GLFW_GAMEPAD_BUTTON_DPAD_UP: int +GLFW_GAMEPAD_BUTTON_GUIDE: int +GLFW_GAMEPAD_BUTTON_LEFT_BUMPER: int +GLFW_GAMEPAD_BUTTON_LEFT_THUMB: int +GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER: int +GLFW_GAMEPAD_BUTTON_RIGHT_THUMB: int +GLFW_GAMEPAD_BUTTON_START: int +GLFW_GAMEPAD_BUTTON_X: int +GLFW_GAMEPAD_BUTTON_Y: int +GLFW_GREEN_BITS: int +GLFW_HAT_CENTERED: int +GLFW_HAT_DOWN: int +GLFW_HAT_LEFT: int +GLFW_HAT_LEFT_DOWN: int +GLFW_HAT_LEFT_UP: int +GLFW_HAT_RIGHT: int +GLFW_HAT_RIGHT_DOWN: int +GLFW_HAT_RIGHT_UP: int +GLFW_HAT_UP: int +GLFW_HOVERED: int +GLFW_IBEAM_CURSOR: int +GLFW_ICONIFIED: int +GLFW_INVALID_ENUM: int +GLFW_INVALID_VALUE: int +GLFW_JOYSTICK_1: int +GLFW_JOYSTICK_10: int +GLFW_JOYSTICK_11: int +GLFW_JOYSTICK_12: int +GLFW_JOYSTICK_13: int +GLFW_JOYSTICK_14: int +GLFW_JOYSTICK_15: int +GLFW_JOYSTICK_16: int +GLFW_JOYSTICK_2: int +GLFW_JOYSTICK_3: int +GLFW_JOYSTICK_4: int +GLFW_JOYSTICK_5: int +GLFW_JOYSTICK_6: int +GLFW_JOYSTICK_7: int +GLFW_JOYSTICK_8: int +GLFW_JOYSTICK_9: int +GLFW_JOYSTICK_HAT_BUTTONS: int +GLFW_KEY_0: int +GLFW_KEY_1: int +GLFW_KEY_2: int +GLFW_KEY_3: int +GLFW_KEY_4: int +GLFW_KEY_5: int +GLFW_KEY_6: int +GLFW_KEY_7: int +GLFW_KEY_8: int +GLFW_KEY_9: int +GLFW_KEY_A: int +GLFW_KEY_APOSTROPHE: int +GLFW_KEY_B: int +GLFW_KEY_BACKSLASH: int +GLFW_KEY_BACKSPACE: int +GLFW_KEY_C: int +GLFW_KEY_CAPS_LOCK: int +GLFW_KEY_COMMA: int +GLFW_KEY_D: int +GLFW_KEY_DELETE: int +GLFW_KEY_DOWN: int +GLFW_KEY_E: int +GLFW_KEY_END: int +GLFW_KEY_ENTER: int +GLFW_KEY_EQUAL: int +GLFW_KEY_ESCAPE: int +GLFW_KEY_F: int +GLFW_KEY_F1: int +GLFW_KEY_F10: int +GLFW_KEY_F11: int +GLFW_KEY_F12: int +GLFW_KEY_F13: int +GLFW_KEY_F14: int +GLFW_KEY_F15: int +GLFW_KEY_F16: int +GLFW_KEY_F17: int +GLFW_KEY_F18: int +GLFW_KEY_F19: int +GLFW_KEY_F2: int +GLFW_KEY_F20: int +GLFW_KEY_F21: int +GLFW_KEY_F22: int +GLFW_KEY_F23: int +GLFW_KEY_F24: int +GLFW_KEY_F25: int +GLFW_KEY_F3: int +GLFW_KEY_F4: int +GLFW_KEY_F5: int +GLFW_KEY_F6: int +GLFW_KEY_F7: int +GLFW_KEY_F8: int +GLFW_KEY_F9: int +GLFW_KEY_G: int +GLFW_KEY_GRAVE_ACCENT: int +GLFW_KEY_H: int +GLFW_KEY_HOME: int +GLFW_KEY_I: int +GLFW_KEY_INSERT: int +GLFW_KEY_J: int +GLFW_KEY_K: int +GLFW_KEY_KP_0: int +GLFW_KEY_KP_1: int +GLFW_KEY_KP_2: int +GLFW_KEY_KP_3: int +GLFW_KEY_KP_4: int +GLFW_KEY_KP_5: int +GLFW_KEY_KP_6: int +GLFW_KEY_KP_7: int +GLFW_KEY_KP_8: int +GLFW_KEY_KP_9: int +GLFW_KEY_KP_ADD: int +GLFW_KEY_KP_DECIMAL: int +GLFW_KEY_KP_DIVIDE: int +GLFW_KEY_KP_ENTER: int +GLFW_KEY_KP_EQUAL: int +GLFW_KEY_KP_MULTIPLY: int +GLFW_KEY_KP_SUBTRACT: int +GLFW_KEY_L: int +GLFW_KEY_LEFT: int +GLFW_KEY_LEFT_ALT: int +GLFW_KEY_LEFT_BRACKET: int +GLFW_KEY_LEFT_CONTROL: int +GLFW_KEY_LEFT_SHIFT: int +GLFW_KEY_LEFT_SUPER: int +GLFW_KEY_M: int +GLFW_KEY_MENU: int +GLFW_KEY_MINUS: int +GLFW_KEY_N: int +GLFW_KEY_NUM_LOCK: int +GLFW_KEY_O: int +GLFW_KEY_P: int +GLFW_KEY_PAGE_DOWN: int +GLFW_KEY_PAGE_UP: int +GLFW_KEY_PAUSE: int +GLFW_KEY_PERIOD: int +GLFW_KEY_PRINT_SCREEN: int +GLFW_KEY_Q: int +GLFW_KEY_R: int +GLFW_KEY_RIGHT: int +GLFW_KEY_RIGHT_ALT: int +GLFW_KEY_RIGHT_BRACKET: int +GLFW_KEY_RIGHT_CONTROL: int +GLFW_KEY_RIGHT_SHIFT: int +GLFW_KEY_RIGHT_SUPER: int +GLFW_KEY_S: int +GLFW_KEY_SCROLL_LOCK: int +GLFW_KEY_SEMICOLON: int +GLFW_KEY_SLASH: int +GLFW_KEY_SPACE: int +GLFW_KEY_T: int +GLFW_KEY_TAB: int +GLFW_KEY_U: int +GLFW_KEY_UP: int +GLFW_KEY_V: int +GLFW_KEY_W: int +GLFW_KEY_WORLD_1: int +GLFW_KEY_WORLD_2: int +GLFW_KEY_X: int +GLFW_KEY_Y: int +GLFW_KEY_Z: int +GLFW_LOCK_KEY_MODS: int +GLFW_LOSE_CONTEXT_ON_RESET: int +GLFW_MAXIMIZED: int +GLFW_MOD_ALT: int +GLFW_MOD_CAPS_LOCK: int +GLFW_MOD_CONTROL: int +GLFW_MOD_NUM_LOCK: int +GLFW_MOD_SHIFT: int +GLFW_MOD_SUPER: int +GLFW_MOUSE_BUTTON_1: int +GLFW_MOUSE_BUTTON_2: int +GLFW_MOUSE_BUTTON_3: int +GLFW_MOUSE_BUTTON_4: int +GLFW_MOUSE_BUTTON_5: int +GLFW_MOUSE_BUTTON_6: int +GLFW_MOUSE_BUTTON_7: int +GLFW_MOUSE_BUTTON_8: int +GLFW_MOUSE_PASSTHROUGH: int +GLFW_NATIVE_CONTEXT_API: int +GLFW_NOT_ALLOWED_CURSOR: int +GLFW_NOT_INITIALIZED: int +GLFW_NO_API: int +GLFW_NO_CURRENT_CONTEXT: int +GLFW_NO_ERROR: int +GLFW_NO_RESET_NOTIFICATION: int +GLFW_NO_ROBUSTNESS: int +GLFW_NO_WINDOW_CONTEXT: int +GLFW_OPENGL_ANY_PROFILE: int +GLFW_OPENGL_API: int +GLFW_OPENGL_COMPAT_PROFILE: int +GLFW_OPENGL_CORE_PROFILE: int +GLFW_OPENGL_ES_API: int +GLFW_OPENGL_FORWARD_COMPAT: int +GLFW_OPENGL_PROFILE: int +GLFW_OSMESA_CONTEXT_API: int +GLFW_OUT_OF_MEMORY: int +GLFW_PLATFORM: int +GLFW_PLATFORM_COCOA: int +GLFW_PLATFORM_ERROR: int +GLFW_PLATFORM_NULL: int +GLFW_PLATFORM_UNAVAILABLE: int +GLFW_PLATFORM_WAYLAND: int +GLFW_PLATFORM_WIN32: int +GLFW_PLATFORM_X11: int +GLFW_POINTING_HAND_CURSOR: int +GLFW_POSITION_X: int +GLFW_POSITION_Y: int +GLFW_PRESS: int +GLFW_RAW_MOUSE_MOTION: int +GLFW_RED_BITS: int +GLFW_REFRESH_RATE: int +GLFW_RELEASE: int +GLFW_RELEASE_BEHAVIOR_FLUSH: int +GLFW_RELEASE_BEHAVIOR_NONE: int +GLFW_REPEAT: int +GLFW_RESIZABLE: int +GLFW_RESIZE_ALL_CURSOR: int +GLFW_RESIZE_EW_CURSOR: int +GLFW_RESIZE_NESW_CURSOR: int +GLFW_RESIZE_NS_CURSOR: int +GLFW_RESIZE_NWSE_CURSOR: int +GLFW_SAMPLES: int +GLFW_SCALE_FRAMEBUFFER: int +GLFW_SCALE_TO_MONITOR: int +GLFW_SRGB_CAPABLE: int +GLFW_STENCIL_BITS: int +GLFW_STEREO: int +GLFW_STICKY_KEYS: int +GLFW_STICKY_MOUSE_BUTTONS: int +GLFW_TRANSPARENT_FRAMEBUFFER: int +GLFW_TRUE: int +GLFW_VERSION_MAJOR: int +GLFW_VERSION_MINOR: int +GLFW_VERSION_REVISION: int +GLFW_VERSION_UNAVAILABLE: int +GLFW_VISIBLE: int +GLFW_WAYLAND_APP_ID: int +GLFW_WAYLAND_DISABLE_LIBDECOR: int +GLFW_WAYLAND_LIBDECOR: int +GLFW_WAYLAND_PREFER_LIBDECOR: int +GLFW_WIN32_KEYBOARD_MENU: int +GLFW_WIN32_SHOWDEFAULT: int +GLFW_X11_CLASS_NAME: int +GLFW_X11_INSTANCE_NAME: int +GLFW_X11_XCB_VULKAN_SURFACE: int +GL_COMPRESSED_RGB8_ETC2: int +GL_COMPRESSED_RGBA8_ETC2_EAC: int +GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG: int +GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: int +GL_COMPRESSED_RGBA_S3TC_DXT3_EXT: int +GL_COMPRESSED_RGBA_S3TC_DXT5_EXT: int +GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG: int +GL_COMPRESSED_RGB_S3TC_DXT1_EXT: int +GL_ETC1_RGB8_OES: int +GL_LINE_WIDTH: int +GL_LUMINANCE: int +GL_LUMINANCE_ALPHA: int +GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT: int +GL_PROGRAM_POINT_SIZE: int +GL_SHADING_LANGUAGE_VERSION: int +GL_TEXTURE_MAX_ANISOTROPY_EXT: int +GL_UNSIGNED_SHORT_4_4_4_4: int +GL_UNSIGNED_SHORT_5_5_5_1: int +GL_UNSIGNED_SHORT_5_6_5: int +GROUP_PADDING: int +HUEBAR_PADDING: int +HUEBAR_SELECTOR_HEIGHT: int +HUEBAR_SELECTOR_OVERFLOW: int +HUEBAR_WIDTH: int +ICON_1UP: int +ICON_229: int +ICON_230: int +ICON_231: int +ICON_232: int +ICON_233: int +ICON_234: int +ICON_235: int +ICON_236: int +ICON_237: int +ICON_238: int +ICON_239: int +ICON_240: int +ICON_241: int +ICON_242: int +ICON_243: int +ICON_244: int +ICON_245: int +ICON_246: int +ICON_247: int +ICON_248: int +ICON_249: int +ICON_250: int +ICON_251: int +ICON_252: int +ICON_253: int +ICON_254: int +ICON_255: int +ICON_ALARM: int +ICON_ALPHA_CLEAR: int +ICON_ALPHA_MULTIPLY: int +ICON_ARROW_DOWN: int +ICON_ARROW_DOWN_FILL: int +ICON_ARROW_LEFT: int +ICON_ARROW_LEFT_FILL: int +ICON_ARROW_RIGHT: int +ICON_ARROW_RIGHT_FILL: int +ICON_ARROW_UP: int +ICON_ARROW_UP_FILL: int +ICON_AUDIO: int +ICON_BIN: int +ICON_BOX: int +ICON_BOX_BOTTOM: int +ICON_BOX_BOTTOM_LEFT: int +ICON_BOX_BOTTOM_RIGHT: int +ICON_BOX_CENTER: int +ICON_BOX_CIRCLE_MASK: int +ICON_BOX_CONCENTRIC: int +ICON_BOX_CORNERS_BIG: int +ICON_BOX_CORNERS_SMALL: int +ICON_BOX_DOTS_BIG: int +ICON_BOX_DOTS_SMALL: int +ICON_BOX_GRID: int +ICON_BOX_GRID_BIG: int +ICON_BOX_LEFT: int +ICON_BOX_MULTISIZE: int +ICON_BOX_RIGHT: int +ICON_BOX_TOP: int +ICON_BOX_TOP_LEFT: int +ICON_BOX_TOP_RIGHT: int +ICON_BREAKPOINT_OFF: int +ICON_BREAKPOINT_ON: int +ICON_BRUSH_CLASSIC: int +ICON_BRUSH_PAINTER: int +ICON_BURGER_MENU: int +ICON_CAMERA: int +ICON_CASE_SENSITIVE: int +ICON_CLOCK: int +ICON_COIN: int +ICON_COLOR_BUCKET: int +ICON_COLOR_PICKER: int +ICON_CORNER: int +ICON_CPU: int +ICON_CRACK: int +ICON_CRACK_POINTS: int +ICON_CROP: int +ICON_CROP_ALPHA: int +ICON_CROSS: int +ICON_CROSSLINE: int +ICON_CROSS_SMALL: int +ICON_CUBE: int +ICON_CUBE_FACE_BACK: int +ICON_CUBE_FACE_BOTTOM: int +ICON_CUBE_FACE_FRONT: int +ICON_CUBE_FACE_LEFT: int +ICON_CUBE_FACE_RIGHT: int +ICON_CUBE_FACE_TOP: int +ICON_CURSOR_CLASSIC: int +ICON_CURSOR_HAND: int +ICON_CURSOR_MOVE: int +ICON_CURSOR_MOVE_FILL: int +ICON_CURSOR_POINTER: int +ICON_CURSOR_SCALE: int +ICON_CURSOR_SCALE_FILL: int +ICON_CURSOR_SCALE_LEFT: int +ICON_CURSOR_SCALE_LEFT_FILL: int +ICON_CURSOR_SCALE_RIGHT: int +ICON_CURSOR_SCALE_RIGHT_FILL: int +ICON_DEMON: int +ICON_DITHERING: int +ICON_DOOR: int +ICON_EMPTYBOX: int +ICON_EMPTYBOX_SMALL: int +ICON_EXIT: int +ICON_EXPLOSION: int +ICON_EYE_OFF: int +ICON_EYE_ON: int +ICON_FILE: int +ICON_FILETYPE_ALPHA: int +ICON_FILETYPE_AUDIO: int +ICON_FILETYPE_BINARY: int +ICON_FILETYPE_HOME: int +ICON_FILETYPE_IMAGE: int +ICON_FILETYPE_INFO: int +ICON_FILETYPE_PLAY: int +ICON_FILETYPE_TEXT: int +ICON_FILETYPE_VIDEO: int +ICON_FILE_ADD: int +ICON_FILE_COPY: int +ICON_FILE_CUT: int +ICON_FILE_DELETE: int +ICON_FILE_EXPORT: int +ICON_FILE_NEW: int +ICON_FILE_OPEN: int +ICON_FILE_PASTE: int +ICON_FILE_SAVE: int +ICON_FILE_SAVE_CLASSIC: int +ICON_FILTER: int +ICON_FILTER_BILINEAR: int +ICON_FILTER_POINT: int +ICON_FILTER_TOP: int +ICON_FOLDER: int +ICON_FOLDER_ADD: int +ICON_FOLDER_FILE_OPEN: int +ICON_FOLDER_OPEN: int +ICON_FOLDER_SAVE: int +ICON_FOUR_BOXES: int +ICON_FX: int +ICON_GEAR: int +ICON_GEAR_BIG: int +ICON_GEAR_EX: int +ICON_GRID: int +ICON_GRID_FILL: int +ICON_HAND_POINTER: int +ICON_HEART: int +ICON_HELP: int +ICON_HELP_BOX: int +ICON_HEX: int +ICON_HIDPI: int +ICON_HOT: int +ICON_HOUSE: int +ICON_INFO: int +ICON_INFO_BOX: int +ICON_KEY: int +ICON_LASER: int +ICON_LAYERS: int +ICON_LAYERS2: int +ICON_LAYERS_ISO: int +ICON_LAYERS_VISIBLE: int +ICON_LENS: int +ICON_LENS_BIG: int +ICON_LIFE_BARS: int +ICON_LINK: int +ICON_LINK_BOXES: int +ICON_LINK_BROKE: int +ICON_LINK_MULTI: int +ICON_LINK_NET: int +ICON_LOCK_CLOSE: int +ICON_LOCK_OPEN: int +ICON_MAGNET: int +ICON_MAILBOX: int +ICON_MAPS: int +ICON_MIPMAPS: int +ICON_MLAYERS: int +ICON_MODE_2D: int +ICON_MODE_3D: int +ICON_MONITOR: int +ICON_MUTATE: int +ICON_MUTATE_FILL: int +ICON_NONE: int +ICON_NOTEBOOK: int +ICON_OK_TICK: int +ICON_PENCIL: int +ICON_PENCIL_BIG: int +ICON_PHOTO_CAMERA: int +ICON_PHOTO_CAMERA_FLASH: int +ICON_PLAYER: int +ICON_PLAYER_JUMP: int +ICON_PLAYER_NEXT: int +ICON_PLAYER_PAUSE: int +ICON_PLAYER_PLAY: int +ICON_PLAYER_PLAY_BACK: int +ICON_PLAYER_PREVIOUS: int +ICON_PLAYER_RECORD: int +ICON_PLAYER_STOP: int +ICON_POT: int +ICON_PRINTER: int +ICON_PRIORITY: int +ICON_REDO: int +ICON_REDO_FILL: int +ICON_REG_EXP: int +ICON_REPEAT: int +ICON_REPEAT_FILL: int +ICON_REREDO: int +ICON_REREDO_FILL: int +ICON_RESIZE: int +ICON_RESTART: int +ICON_ROM: int +ICON_ROTATE: int +ICON_ROTATE_FILL: int +ICON_RUBBER: int +ICON_SAND_TIMER: int +ICON_SCALE: int +ICON_SHIELD: int +ICON_SHUFFLE: int +ICON_SHUFFLE_FILL: int +ICON_SPECIAL: int +ICON_SQUARE_TOGGLE: int +ICON_STAR: int +ICON_STEP_INTO: int +ICON_STEP_OUT: int +ICON_STEP_OVER: int +ICON_SUITCASE: int +ICON_SUITCASE_ZIP: int +ICON_SYMMETRY: int +ICON_SYMMETRY_HORIZONTAL: int +ICON_SYMMETRY_VERTICAL: int +ICON_TARGET: int +ICON_TARGET_BIG: int +ICON_TARGET_BIG_FILL: int +ICON_TARGET_MOVE: int +ICON_TARGET_MOVE_FILL: int +ICON_TARGET_POINT: int +ICON_TARGET_SMALL: int +ICON_TARGET_SMALL_FILL: int +ICON_TEXT_A: int +ICON_TEXT_NOTES: int +ICON_TEXT_PADDING: int +ICON_TEXT_POPUP: int +ICON_TEXT_T: int +ICON_TOOLS: int +ICON_UNDO: int +ICON_UNDO_FILL: int +ICON_VERTICAL_BARS: int +ICON_VERTICAL_BARS_FILL: int +ICON_WARNING: int +ICON_WATER_DROP: int +ICON_WAVE: int +ICON_WAVE_SINUS: int +ICON_WAVE_SQUARE: int +ICON_WAVE_TRIANGULAR: int +ICON_WINDOW: int +ICON_ZOOM_ALL: int +ICON_ZOOM_BIG: int +ICON_ZOOM_CENTER: int +ICON_ZOOM_MEDIUM: int +ICON_ZOOM_SMALL: int +KEY_A: int +KEY_APOSTROPHE: int +KEY_B: int +KEY_BACK: int +KEY_BACKSLASH: int +KEY_BACKSPACE: int +KEY_C: int +KEY_CAPS_LOCK: int +KEY_COMMA: int +KEY_D: int +KEY_DELETE: int +KEY_DOWN: int +KEY_E: int +KEY_EIGHT: int +KEY_END: int +KEY_ENTER: int +KEY_EQUAL: int +KEY_ESCAPE: int +KEY_F: int +KEY_F1: int +KEY_F10: int +KEY_F11: int +KEY_F12: int +KEY_F2: int +KEY_F3: int +KEY_F4: int +KEY_F5: int +KEY_F6: int +KEY_F7: int +KEY_F8: int +KEY_F9: int +KEY_FIVE: int +KEY_FOUR: int +KEY_G: int +KEY_GRAVE: int +KEY_H: int +KEY_HOME: int +KEY_I: int +KEY_INSERT: int +KEY_J: int +KEY_K: int +KEY_KB_MENU: int +KEY_KP_0: int +KEY_KP_1: int +KEY_KP_2: int +KEY_KP_3: int +KEY_KP_4: int +KEY_KP_5: int +KEY_KP_6: int +KEY_KP_7: int +KEY_KP_8: int +KEY_KP_9: int +KEY_KP_ADD: int +KEY_KP_DECIMAL: int +KEY_KP_DIVIDE: int +KEY_KP_ENTER: int +KEY_KP_EQUAL: int +KEY_KP_MULTIPLY: int +KEY_KP_SUBTRACT: int +KEY_L: int +KEY_LEFT: int +KEY_LEFT_ALT: int +KEY_LEFT_BRACKET: int +KEY_LEFT_CONTROL: int +KEY_LEFT_SHIFT: int +KEY_LEFT_SUPER: int +KEY_M: int +KEY_MENU: int +KEY_MINUS: int +KEY_N: int +KEY_NINE: int +KEY_NULL: int +KEY_NUM_LOCK: int +KEY_O: int +KEY_ONE: int +KEY_P: int +KEY_PAGE_DOWN: int +KEY_PAGE_UP: int +KEY_PAUSE: int +KEY_PERIOD: int +KEY_PRINT_SCREEN: int +KEY_Q: int +KEY_R: int +KEY_RIGHT: int +KEY_RIGHT_ALT: int +KEY_RIGHT_BRACKET: int +KEY_RIGHT_CONTROL: int +KEY_RIGHT_SHIFT: int +KEY_RIGHT_SUPER: int +KEY_S: int +KEY_SCROLL_LOCK: int +KEY_SEMICOLON: int +KEY_SEVEN: int +KEY_SIX: int +KEY_SLASH: int +KEY_SPACE: int +KEY_T: int +KEY_TAB: int +KEY_THREE: int +KEY_TWO: int +KEY_U: int +KEY_UP: int +KEY_V: int +KEY_VOLUME_DOWN: int +KEY_VOLUME_UP: int +KEY_W: int +KEY_X: int +KEY_Y: int +KEY_Z: int +KEY_ZERO: int +LABEL: int +LINE_COLOR: int +LISTVIEW: int +LIST_ITEMS_BORDER_WIDTH: int +LIST_ITEMS_HEIGHT: int +LIST_ITEMS_SPACING: int +LOG_ALL: int +LOG_DEBUG: int +LOG_ERROR: int +LOG_FATAL: int +LOG_INFO: int +LOG_NONE: int +LOG_TRACE: int +LOG_WARNING: int +MATERIAL_MAP_ALBEDO: int +MATERIAL_MAP_BRDF: int +MATERIAL_MAP_CUBEMAP: int +MATERIAL_MAP_DIFFUSE: int +MATERIAL_MAP_EMISSION: int +MATERIAL_MAP_HEIGHT: int +MATERIAL_MAP_IRRADIANCE: int +MATERIAL_MAP_METALNESS: int +MATERIAL_MAP_NORMAL: int +MATERIAL_MAP_OCCLUSION: int +MATERIAL_MAP_PREFILTER: int +MATERIAL_MAP_ROUGHNESS: int +MATERIAL_MAP_SPECULAR: int +MAX_LINE_BUFFER_SIZE: int +MOUSE_BUTTON_BACK: int +MOUSE_BUTTON_EXTRA: int +MOUSE_BUTTON_FORWARD: int +MOUSE_BUTTON_LEFT: int +MOUSE_BUTTON_MIDDLE: int +MOUSE_BUTTON_RIGHT: int +MOUSE_BUTTON_SIDE: int +MOUSE_CURSOR_ARROW: int +MOUSE_CURSOR_CROSSHAIR: int +MOUSE_CURSOR_DEFAULT: int +MOUSE_CURSOR_IBEAM: int +MOUSE_CURSOR_NOT_ALLOWED: int +MOUSE_CURSOR_POINTING_HAND: int +MOUSE_CURSOR_RESIZE_ALL: int +MOUSE_CURSOR_RESIZE_EW: int +MOUSE_CURSOR_RESIZE_NESW: int +MOUSE_CURSOR_RESIZE_NS: int +MOUSE_CURSOR_RESIZE_NWSE: int +MOUSE_LEFT_BUTTON: int +MOUSE_MIDDLE_BUTTON: int +MOUSE_RIGHT_BUTTON: int +NPATCH_NINE_PATCH: int +NPATCH_THREE_PATCH_HORIZONTAL: int +NPATCH_THREE_PATCH_VERTICAL: int +PHYSAC_CIRCLE_VERTICES: int +PHYSAC_COLLISION_ITERATIONS: int +PHYSAC_EPSILON: float +PHYSAC_FLT_MAX: float +PHYSAC_MAX_BODIES: int +PHYSAC_MAX_MANIFOLDS: int +PHYSAC_MAX_VERTICES: int +PHYSAC_PENETRATION_ALLOWANCE: float +PHYSAC_PENETRATION_CORRECTION: float +PI: float +PIXELFORMAT_COMPRESSED_DXT1_RGB: int +PIXELFORMAT_COMPRESSED_DXT1_RGBA: int +PIXELFORMAT_COMPRESSED_DXT3_RGBA: int +PIXELFORMAT_COMPRESSED_DXT5_RGBA: int +PIXELFORMAT_COMPRESSED_ETC1_RGB: int +PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA: int +PIXELFORMAT_COMPRESSED_ETC2_RGB: int +PIXELFORMAT_COMPRESSED_PVRT_RGB: int +PIXELFORMAT_COMPRESSED_PVRT_RGBA: int +PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: int +PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: int +PIXELFORMAT_UNCOMPRESSED_R16: int +PIXELFORMAT_UNCOMPRESSED_R16G16B16: int +PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: int +PIXELFORMAT_UNCOMPRESSED_R32: int +PIXELFORMAT_UNCOMPRESSED_R32G32B32: int +PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: int +PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: int +PIXELFORMAT_UNCOMPRESSED_R5G5B5A1: int +PIXELFORMAT_UNCOMPRESSED_R5G6B5: int +PIXELFORMAT_UNCOMPRESSED_R8G8B8: int +PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: int +PROGRESSBAR: int +PROGRESS_PADDING: int +RAD2DEG: float +RAYGUI_COLORBARALPHA_CHECKED_SIZE: int +RAYGUI_GRID_ALPHA: float +RAYGUI_GROUPBOX_LINE_THICK: int +RAYGUI_ICON_MAX_ICONS: int +RAYGUI_ICON_MAX_NAME_LENGTH: int +RAYGUI_ICON_SIZE: int +RAYGUI_LINE_MARGIN_TEXT: int +RAYGUI_LINE_TEXT_PADDING: int +RAYGUI_MAX_CONTROLS: int +RAYGUI_MAX_PROPS_BASE: int +RAYGUI_MAX_PROPS_EXTENDED: int +RAYGUI_MAX_TEXT_LINES: int +RAYGUI_MESSAGEBOX_BUTTON_HEIGHT: int +RAYGUI_MESSAGEBOX_BUTTON_PADDING: int +RAYGUI_MIN_MOUSE_WHEEL_SPEED: int +RAYGUI_MIN_SCROLLBAR_HEIGHT: int +RAYGUI_MIN_SCROLLBAR_WIDTH: int +RAYGUI_PANEL_BORDER_WIDTH: int +RAYGUI_TABBAR_ITEM_WIDTH: int +RAYGUI_TEXTBOX_AUTO_CURSOR_COOLDOWN: int +RAYGUI_TEXTBOX_AUTO_CURSOR_DELAY: int +RAYGUI_TEXTFORMAT_MAX_SIZE: int +RAYGUI_TEXTINPUTBOX_BUTTON_HEIGHT: int +RAYGUI_TEXTINPUTBOX_BUTTON_PADDING: int +RAYGUI_TEXTINPUTBOX_HEIGHT: int +RAYGUI_TEXTSPLIT_MAX_ITEMS: int +RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE: int +RAYGUI_TOGGLEGROUP_MAX_ITEMS: int +RAYGUI_VALUEBOX_MAX_CHARS: int +RAYGUI_VERSION: str +RAYGUI_VERSION_MAJOR: int +RAYGUI_VERSION_MINOR: int +RAYGUI_VERSION_PATCH: int +RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT: int +RAYLIB_VERSION: str +RAYLIB_VERSION_MAJOR: int +RAYLIB_VERSION_MINOR: int +RAYLIB_VERSION_PATCH: int +RLGL_VERSION: str +RL_ATTACHMENT_COLOR_CHANNEL0: int +RL_ATTACHMENT_COLOR_CHANNEL1: int +RL_ATTACHMENT_COLOR_CHANNEL2: int +RL_ATTACHMENT_COLOR_CHANNEL3: int +RL_ATTACHMENT_COLOR_CHANNEL4: int +RL_ATTACHMENT_COLOR_CHANNEL5: int +RL_ATTACHMENT_COLOR_CHANNEL6: int +RL_ATTACHMENT_COLOR_CHANNEL7: int +RL_ATTACHMENT_CUBEMAP_NEGATIVE_X: int +RL_ATTACHMENT_CUBEMAP_NEGATIVE_Y: int +RL_ATTACHMENT_CUBEMAP_NEGATIVE_Z: int +RL_ATTACHMENT_CUBEMAP_POSITIVE_X: int +RL_ATTACHMENT_CUBEMAP_POSITIVE_Y: int +RL_ATTACHMENT_CUBEMAP_POSITIVE_Z: int +RL_ATTACHMENT_DEPTH: int +RL_ATTACHMENT_RENDERBUFFER: int +RL_ATTACHMENT_STENCIL: int +RL_ATTACHMENT_TEXTURE2D: int +RL_BLEND_ADDITIVE: int +RL_BLEND_ADD_COLORS: int +RL_BLEND_ALPHA: int +RL_BLEND_ALPHA_PREMULTIPLY: int +RL_BLEND_COLOR: int +RL_BLEND_CUSTOM: int +RL_BLEND_CUSTOM_SEPARATE: int +RL_BLEND_DST_ALPHA: int +RL_BLEND_DST_RGB: int +RL_BLEND_EQUATION: int +RL_BLEND_EQUATION_ALPHA: int +RL_BLEND_EQUATION_RGB: int +RL_BLEND_MULTIPLIED: int +RL_BLEND_SRC_ALPHA: int +RL_BLEND_SRC_RGB: int +RL_BLEND_SUBTRACT_COLORS: int +RL_COMPUTE_SHADER: int +RL_CONSTANT_ALPHA: int +RL_CONSTANT_COLOR: int +RL_CULL_FACE_BACK: int +RL_CULL_FACE_FRONT: int +RL_DEFAULT_BATCH_BUFFERS: int +RL_DEFAULT_BATCH_BUFFER_ELEMENTS: int +RL_DEFAULT_BATCH_DRAWCALLS: int +RL_DEFAULT_BATCH_MAX_TEXTURE_UNITS: int +RL_DEFAULT_SHADER_ATTRIB_LOCATION_BONEIDS: int +RL_DEFAULT_SHADER_ATTRIB_LOCATION_BONEWEIGHTS: int +RL_DEFAULT_SHADER_ATTRIB_LOCATION_COLOR: int +RL_DEFAULT_SHADER_ATTRIB_LOCATION_INDICES: int +RL_DEFAULT_SHADER_ATTRIB_LOCATION_NORMAL: int +RL_DEFAULT_SHADER_ATTRIB_LOCATION_POSITION: int +RL_DEFAULT_SHADER_ATTRIB_LOCATION_TANGENT: int +RL_DEFAULT_SHADER_ATTRIB_LOCATION_TEXCOORD: int +RL_DEFAULT_SHADER_ATTRIB_LOCATION_TEXCOORD2: int +RL_DEFAULT_SHADER_ATTRIB_NAME_BONEIDS: str +RL_DEFAULT_SHADER_ATTRIB_NAME_BONEWEIGHTS: str +RL_DEFAULT_SHADER_ATTRIB_NAME_COLOR: str +RL_DEFAULT_SHADER_ATTRIB_NAME_NORMAL: str +RL_DEFAULT_SHADER_ATTRIB_NAME_POSITION: str +RL_DEFAULT_SHADER_ATTRIB_NAME_TANGENT: str +RL_DEFAULT_SHADER_ATTRIB_NAME_TEXCOORD: str +RL_DEFAULT_SHADER_ATTRIB_NAME_TEXCOORD2: str +RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE0: str +RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE1: str +RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE2: str +RL_DEFAULT_SHADER_UNIFORM_NAME_BONE_MATRICES: str +RL_DEFAULT_SHADER_UNIFORM_NAME_COLOR: str +RL_DEFAULT_SHADER_UNIFORM_NAME_MODEL: str +RL_DEFAULT_SHADER_UNIFORM_NAME_MVP: str +RL_DEFAULT_SHADER_UNIFORM_NAME_NORMAL: str +RL_DEFAULT_SHADER_UNIFORM_NAME_PROJECTION: str +RL_DEFAULT_SHADER_UNIFORM_NAME_VIEW: str +RL_DRAW_FRAMEBUFFER: int +RL_DST_ALPHA: int +RL_DST_COLOR: int +RL_DYNAMIC_COPY: int +RL_DYNAMIC_DRAW: int +RL_DYNAMIC_READ: int +RL_FLOAT: int +RL_FRAGMENT_SHADER: int +RL_FUNC_ADD: int +RL_FUNC_REVERSE_SUBTRACT: int +RL_FUNC_SUBTRACT: int +RL_LINES: int +RL_LOG_ALL: int +RL_LOG_DEBUG: int +RL_LOG_ERROR: int +RL_LOG_FATAL: int +RL_LOG_INFO: int +RL_LOG_NONE: int +RL_LOG_TRACE: int +RL_LOG_WARNING: int +RL_MAX: int +RL_MAX_MATRIX_STACK_SIZE: int +RL_MAX_SHADER_LOCATIONS: int +RL_MIN: int +RL_MODELVIEW: int +RL_ONE: int +RL_ONE_MINUS_CONSTANT_ALPHA: int +RL_ONE_MINUS_CONSTANT_COLOR: int +RL_ONE_MINUS_DST_ALPHA: int +RL_ONE_MINUS_DST_COLOR: int +RL_ONE_MINUS_SRC_ALPHA: int +RL_ONE_MINUS_SRC_COLOR: int +RL_OPENGL_11: int +RL_OPENGL_21: int +RL_OPENGL_33: int +RL_OPENGL_43: int +RL_OPENGL_ES_20: int +RL_OPENGL_ES_30: int +RL_PIXELFORMAT_COMPRESSED_DXT1_RGB: int +RL_PIXELFORMAT_COMPRESSED_DXT1_RGBA: int +RL_PIXELFORMAT_COMPRESSED_DXT3_RGBA: int +RL_PIXELFORMAT_COMPRESSED_DXT5_RGBA: int +RL_PIXELFORMAT_COMPRESSED_ETC1_RGB: int +RL_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA: int +RL_PIXELFORMAT_COMPRESSED_ETC2_RGB: int +RL_PIXELFORMAT_COMPRESSED_PVRT_RGB: int +RL_PIXELFORMAT_COMPRESSED_PVRT_RGBA: int +RL_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: int +RL_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: int +RL_PIXELFORMAT_UNCOMPRESSED_R16: int +RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16: int +RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: int +RL_PIXELFORMAT_UNCOMPRESSED_R32: int +RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32: int +RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: int +RL_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: int +RL_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1: int +RL_PIXELFORMAT_UNCOMPRESSED_R5G6B5: int +RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8: int +RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: int +RL_PROJECTION: int +RL_QUADS: int +RL_READ_FRAMEBUFFER: int +RL_SHADER_ATTRIB_FLOAT: int +RL_SHADER_ATTRIB_VEC2: int +RL_SHADER_ATTRIB_VEC3: int +RL_SHADER_ATTRIB_VEC4: int +RL_SHADER_LOC_COLOR_AMBIENT: int +RL_SHADER_LOC_COLOR_DIFFUSE: int +RL_SHADER_LOC_COLOR_SPECULAR: int +RL_SHADER_LOC_MAP_ALBEDO: int +RL_SHADER_LOC_MAP_BRDF: int +RL_SHADER_LOC_MAP_CUBEMAP: int +RL_SHADER_LOC_MAP_DIFFUSE: int +RL_SHADER_LOC_MAP_EMISSION: int +RL_SHADER_LOC_MAP_HEIGHT: int +RL_SHADER_LOC_MAP_IRRADIANCE: int +RL_SHADER_LOC_MAP_METALNESS: int +RL_SHADER_LOC_MAP_NORMAL: int +RL_SHADER_LOC_MAP_OCCLUSION: int +RL_SHADER_LOC_MAP_PREFILTER: int +RL_SHADER_LOC_MAP_ROUGHNESS: int +RL_SHADER_LOC_MAP_SPECULAR: int +RL_SHADER_LOC_MATRIX_MODEL: int +RL_SHADER_LOC_MATRIX_MVP: int +RL_SHADER_LOC_MATRIX_NORMAL: int +RL_SHADER_LOC_MATRIX_PROJECTION: int +RL_SHADER_LOC_MATRIX_VIEW: int +RL_SHADER_LOC_VECTOR_VIEW: int +RL_SHADER_LOC_VERTEX_COLOR: int +RL_SHADER_LOC_VERTEX_NORMAL: int +RL_SHADER_LOC_VERTEX_POSITION: int +RL_SHADER_LOC_VERTEX_TANGENT: int +RL_SHADER_LOC_VERTEX_TEXCOORD01: int +RL_SHADER_LOC_VERTEX_TEXCOORD02: int +RL_SHADER_UNIFORM_FLOAT: int +RL_SHADER_UNIFORM_INT: int +RL_SHADER_UNIFORM_IVEC2: int +RL_SHADER_UNIFORM_IVEC3: int +RL_SHADER_UNIFORM_IVEC4: int +RL_SHADER_UNIFORM_SAMPLER2D: int +RL_SHADER_UNIFORM_UINT: int +RL_SHADER_UNIFORM_UIVEC2: int +RL_SHADER_UNIFORM_UIVEC3: int +RL_SHADER_UNIFORM_UIVEC4: int +RL_SHADER_UNIFORM_VEC2: int +RL_SHADER_UNIFORM_VEC3: int +RL_SHADER_UNIFORM_VEC4: int +RL_SRC_ALPHA: int +RL_SRC_ALPHA_SATURATE: int +RL_SRC_COLOR: int +RL_STATIC_COPY: int +RL_STATIC_DRAW: int +RL_STATIC_READ: int +RL_STREAM_COPY: int +RL_STREAM_DRAW: int +RL_STREAM_READ: int +RL_TEXTURE: int +RL_TEXTURE_FILTER_ANISOTROPIC: int +RL_TEXTURE_FILTER_ANISOTROPIC_16X: int +RL_TEXTURE_FILTER_ANISOTROPIC_4X: int +RL_TEXTURE_FILTER_ANISOTROPIC_8X: int +RL_TEXTURE_FILTER_BILINEAR: int +RL_TEXTURE_FILTER_LINEAR: int +RL_TEXTURE_FILTER_LINEAR_MIP_NEAREST: int +RL_TEXTURE_FILTER_MIP_LINEAR: int +RL_TEXTURE_FILTER_MIP_NEAREST: int +RL_TEXTURE_FILTER_NEAREST: int +RL_TEXTURE_FILTER_NEAREST_MIP_LINEAR: int +RL_TEXTURE_FILTER_POINT: int +RL_TEXTURE_FILTER_TRILINEAR: int +RL_TEXTURE_MAG_FILTER: int +RL_TEXTURE_MIN_FILTER: int +RL_TEXTURE_MIPMAP_BIAS_RATIO: int +RL_TEXTURE_WRAP_CLAMP: int +RL_TEXTURE_WRAP_MIRROR_CLAMP: int +RL_TEXTURE_WRAP_MIRROR_REPEAT: int +RL_TEXTURE_WRAP_REPEAT: int +RL_TEXTURE_WRAP_S: int +RL_TEXTURE_WRAP_T: int +RL_TRIANGLES: int +RL_UNSIGNED_BYTE: int +RL_VERTEX_SHADER: int +RL_ZERO: int +SCROLLBAR: int +SCROLLBAR_LEFT_SIDE: int +SCROLLBAR_RIGHT_SIDE: int +SCROLLBAR_SIDE: int +SCROLLBAR_WIDTH: int +SCROLL_PADDING: int +SCROLL_SLIDER_PADDING: int +SCROLL_SLIDER_SIZE: int +SCROLL_SPEED: int +SHADER_ATTRIB_FLOAT: int +SHADER_ATTRIB_VEC2: int +SHADER_ATTRIB_VEC3: int +SHADER_ATTRIB_VEC4: int +SHADER_LOC_BONE_MATRICES: int +SHADER_LOC_COLOR_AMBIENT: int +SHADER_LOC_COLOR_DIFFUSE: int +SHADER_LOC_COLOR_SPECULAR: int +SHADER_LOC_MAP_ALBEDO: int +SHADER_LOC_MAP_BRDF: int +SHADER_LOC_MAP_CUBEMAP: int +SHADER_LOC_MAP_DIFFUSE: int +SHADER_LOC_MAP_EMISSION: int +SHADER_LOC_MAP_HEIGHT: int +SHADER_LOC_MAP_IRRADIANCE: int +SHADER_LOC_MAP_METALNESS: int +SHADER_LOC_MAP_NORMAL: int +SHADER_LOC_MAP_OCCLUSION: int +SHADER_LOC_MAP_PREFILTER: int +SHADER_LOC_MAP_ROUGHNESS: int +SHADER_LOC_MAP_SPECULAR: int +SHADER_LOC_MATRIX_MODEL: int +SHADER_LOC_MATRIX_MVP: int +SHADER_LOC_MATRIX_NORMAL: int +SHADER_LOC_MATRIX_PROJECTION: int +SHADER_LOC_MATRIX_VIEW: int +SHADER_LOC_VECTOR_VIEW: int +SHADER_LOC_VERTEX_BONEIDS: int +SHADER_LOC_VERTEX_BONEWEIGHTS: int +SHADER_LOC_VERTEX_COLOR: int +SHADER_LOC_VERTEX_NORMAL: int +SHADER_LOC_VERTEX_POSITION: int +SHADER_LOC_VERTEX_TANGENT: int +SHADER_LOC_VERTEX_TEXCOORD01: int +SHADER_LOC_VERTEX_TEXCOORD02: int +SHADER_UNIFORM_FLOAT: int +SHADER_UNIFORM_INT: int +SHADER_UNIFORM_IVEC2: int +SHADER_UNIFORM_IVEC3: int +SHADER_UNIFORM_IVEC4: int +SHADER_UNIFORM_SAMPLER2D: int +SHADER_UNIFORM_VEC2: int +SHADER_UNIFORM_VEC3: int +SHADER_UNIFORM_VEC4: int +SLIDER: int +SLIDER_PADDING: int +SLIDER_WIDTH: int +SPINNER: int +SPIN_BUTTON_SPACING: int +SPIN_BUTTON_WIDTH: int +STATE_DISABLED: int +STATE_FOCUSED: int +STATE_NORMAL: int +STATE_PRESSED: int +STATUSBAR: int +TEXTBOX: int +TEXTURE_FILTER_ANISOTROPIC_16X: int +TEXTURE_FILTER_ANISOTROPIC_4X: int +TEXTURE_FILTER_ANISOTROPIC_8X: int +TEXTURE_FILTER_BILINEAR: int +TEXTURE_FILTER_POINT: int +TEXTURE_FILTER_TRILINEAR: int +TEXTURE_WRAP_CLAMP: int +TEXTURE_WRAP_MIRROR_CLAMP: int +TEXTURE_WRAP_MIRROR_REPEAT: int +TEXTURE_WRAP_REPEAT: int +TEXT_ALIGNMENT: int +TEXT_ALIGNMENT_VERTICAL: int +TEXT_ALIGN_BOTTOM: int +TEXT_ALIGN_CENTER: int +TEXT_ALIGN_LEFT: int +TEXT_ALIGN_MIDDLE: int +TEXT_ALIGN_RIGHT: int +TEXT_ALIGN_TOP: int +TEXT_COLOR_DISABLED: int +TEXT_COLOR_FOCUSED: int +TEXT_COLOR_NORMAL: int +TEXT_COLOR_PRESSED: int +TEXT_LINE_SPACING: int +TEXT_PADDING: int +TEXT_READONLY: int +TEXT_SIZE: int +TEXT_SPACING: int +TEXT_WRAP_CHAR: int +TEXT_WRAP_MODE: int +TEXT_WRAP_NONE: int +TEXT_WRAP_WORD: int +TOGGLE: int +VALUEBOX: int +# END GENERATED MODULE CONSTANTS + + def attach_audio_mixed_processor(processor: Any,) -> None: """Attach audio stream processor to the entire audio pipeline, receives the samples as 'float'.""" ... @@ -4427,14 +5676,7 @@ class Texture: self.height:int = height # type: ignore self.mipmaps:int = mipmaps # type: ignore self.format:int = format # type: ignore -class Texture2D: - """It should be redesigned to be provided by user.""" - def __init__(self, id: int|None = None, width: int|None = None, height: int|None = None, mipmaps: int|None = None, format: int|None = None): - self.id:int = id # type: ignore - self.width:int = width # type: ignore - self.height:int = height # type: ignore - self.mipmaps:int = mipmaps # type: ignore - self.format:int = format # type: ignore +Texture2D = Texture class Transform: """Transform, vertex transformation data.""" def __init__(self, translation: Vector3|list|tuple|None = None, rotation: Vector4|list|tuple|None = None, scale: Vector3|list|tuple|None = None): @@ -4552,4 +5794,3 @@ BLACK : Color BLANK : Color MAGENTA : Color RAYWHITE : Color - From 423c3f4d672fc42bbd01f1b8716bb6a6e18faa54 Mon Sep 17 00:00:00 2001 From: banteg <4562643+banteg@users.noreply.github.com> Date: Fri, 6 Feb 2026 20:26:33 +0400 Subject: [PATCH 4/8] test: enforce stub parity and typing smoke in test runners --- tests/run_tests.sh | 13 ++++++++++++- tests/run_tests_dynamic.sh | 13 ++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/tests/run_tests.sh b/tests/run_tests.sh index 653a442..d17a5e4 100755 --- a/tests/run_tests.sh +++ b/tests/run_tests.sh @@ -14,4 +14,15 @@ do exit fi done -rm raylib pyray examples \ No newline at end of file + +# Execute pytest-style stub parity tests that do not run when files are executed directly. +python3 -m pytest test_pyray_stub_parity.py + +# Ensure typing smoke checks are exercised by automation. +if command -v uv >/dev/null 2>&1; then + uv run ty check typing/pyray_stub_smoke.py +else + python3 -m ty check typing/pyray_stub_smoke.py +fi + +rm raylib pyray examples diff --git a/tests/run_tests_dynamic.sh b/tests/run_tests_dynamic.sh index 1942448..1809ed9 100755 --- a/tests/run_tests_dynamic.sh +++ b/tests/run_tests_dynamic.sh @@ -14,4 +14,15 @@ do exit fi done -rm raylib pyray examples \ No newline at end of file + +# Execute pytest-style stub parity tests that do not run when files are executed directly. +python3 -m pytest test_pyray_stub_parity.py + +# Ensure typing smoke checks are exercised by automation. +if command -v uv >/dev/null 2>&1; then + uv run ty check typing/pyray_stub_smoke.py +else + python3 -m ty check typing/pyray_stub_smoke.py +fi + +rm raylib pyray examples From 9583a16f0d94b222f80c4ffecf50aaf67302d8a6 Mon Sep 17 00:00:00 2001 From: banteg <4562643+banteg@users.noreply.github.com> Date: Fri, 6 Feb 2026 20:43:58 +0400 Subject: [PATCH 5/8] test: make ty smoke check optional in test runners --- tests/run_tests.sh | 29 +++++++++++++++++------------ tests/run_tests_dynamic.sh | 29 +++++++++++++++++------------ 2 files changed, 34 insertions(+), 24 deletions(-) diff --git a/tests/run_tests.sh b/tests/run_tests.sh index d17a5e4..0a7fce9 100755 --- a/tests/run_tests.sh +++ b/tests/run_tests.sh @@ -1,28 +1,33 @@ #!/usr/bin/env bash -rm raylib pyray examples +set -euo pipefail + +cleanup() { + rm -f raylib pyray examples +} + +cleanup +trap cleanup EXIT + ln -s ../raylib ln -s ../pyray ln -s ../examples for FILE in *.py do - if python3 $FILE; then - echo $FILE returned true + if python3 "$FILE"; then + echo "$FILE returned true" else - echo $FILE returned some error - rm raylib pyray examples - exit + echo "$FILE returned some error" + exit 1 fi done # Execute pytest-style stub parity tests that do not run when files are executed directly. python3 -m pytest test_pyray_stub_parity.py -# Ensure typing smoke checks are exercised by automation. -if command -v uv >/dev/null 2>&1; then - uv run ty check typing/pyray_stub_smoke.py -else +# Run typing smoke checks when ty is available, but do not require it. +if python3 -c "import ty" >/dev/null 2>&1; then python3 -m ty check typing/pyray_stub_smoke.py +else + echo "Skipping typing smoke check: ty is not installed." fi - -rm raylib pyray examples diff --git a/tests/run_tests_dynamic.sh b/tests/run_tests_dynamic.sh index 1809ed9..44bfab8 100755 --- a/tests/run_tests_dynamic.sh +++ b/tests/run_tests_dynamic.sh @@ -1,28 +1,33 @@ #!/usr/bin/env bash -rm raylib pyray examples +set -euo pipefail + +cleanup() { + rm -f raylib pyray examples +} + +cleanup +trap cleanup EXIT + ln -s ../dynamic/raylib ln -s ../dynamic/pyray ln -s ../examples for FILE in test_*.py do - if python3 $FILE; then - echo $FILE returned true + if python3 "$FILE"; then + echo "$FILE returned true" else - echo $FILE returned some error - rm raylib pyray examples - exit + echo "$FILE returned some error" + exit 1 fi done # Execute pytest-style stub parity tests that do not run when files are executed directly. python3 -m pytest test_pyray_stub_parity.py -# Ensure typing smoke checks are exercised by automation. -if command -v uv >/dev/null 2>&1; then - uv run ty check typing/pyray_stub_smoke.py -else +# Run typing smoke checks when ty is available, but do not require it. +if python3 -c "import ty" >/dev/null 2>&1; then python3 -m ty check typing/pyray_stub_smoke.py +else + echo "Skipping typing smoke check: ty is not installed." fi - -rm raylib pyray examples From c06fa71cfa16f4ff0046959b7f5749ab8bba2a75 Mon Sep 17 00:00:00 2001 From: banteg <4562643+banteg@users.noreply.github.com> Date: Fri, 6 Feb 2026 20:58:19 +0400 Subject: [PATCH 6/8] test: use ty CLI detection in stub smoke runners --- tests/run_tests.sh | 6 +++--- tests/run_tests_dynamic.sh | 17 +++++++++++++---- tests/test_pyray_stub_parity.py | 11 ++++++++++- 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/tests/run_tests.sh b/tests/run_tests.sh index 0a7fce9..49c346b 100755 --- a/tests/run_tests.sh +++ b/tests/run_tests.sh @@ -26,8 +26,8 @@ done python3 -m pytest test_pyray_stub_parity.py # Run typing smoke checks when ty is available, but do not require it. -if python3 -c "import ty" >/dev/null 2>&1; then - python3 -m ty check typing/pyray_stub_smoke.py +if command -v ty >/dev/null 2>&1; then + ty check typing/pyray_stub_smoke.py else - echo "Skipping typing smoke check: ty is not installed." + echo "Skipping typing smoke check: ty CLI is not installed." fi diff --git a/tests/run_tests_dynamic.sh b/tests/run_tests_dynamic.sh index 44bfab8..d189a86 100755 --- a/tests/run_tests_dynamic.sh +++ b/tests/run_tests_dynamic.sh @@ -2,6 +2,11 @@ set -euo pipefail +SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" +REPO_ROOT="$(cd -- "${SCRIPT_DIR}/.." && pwd)" + +cd "${SCRIPT_DIR}" + cleanup() { rm -f raylib pyray examples } @@ -23,11 +28,15 @@ do done # Execute pytest-style stub parity tests that do not run when files are executed directly. -python3 -m pytest test_pyray_stub_parity.py +PYRAY_STUB_PATH="${REPO_ROOT}/dynamic/pyray/__init__.pyi" \ + python3 -m pytest test_pyray_stub_parity.py # Run typing smoke checks when ty is available, but do not require it. -if python3 -c "import ty" >/dev/null 2>&1; then - python3 -m ty check typing/pyray_stub_smoke.py +if command -v ty >/dev/null 2>&1; then + ty check \ + --project "${REPO_ROOT}/dynamic" \ + --extra-search-path "${REPO_ROOT}/dynamic" \ + typing/pyray_stub_smoke.py else - echo "Skipping typing smoke check: ty is not installed." + echo "Skipping typing smoke check: ty CLI is not installed." fi diff --git a/tests/test_pyray_stub_parity.py b/tests/test_pyray_stub_parity.py index c36d343..f23b42f 100644 --- a/tests/test_pyray_stub_parity.py +++ b/tests/test_pyray_stub_parity.py @@ -1,9 +1,18 @@ from pathlib import Path import ast +import os ROOT = Path(__file__).resolve().parents[1] -PYRAY_STUB = ROOT / "pyray" / "__init__.pyi" +_DEFAULT_PYRAY_STUB = ROOT / "pyray" / "__init__.pyi" +_stub_override = os.environ.get("PYRAY_STUB_PATH") +PYRAY_STUB = ( + Path(_stub_override).expanduser() + if _stub_override + else _DEFAULT_PYRAY_STUB +) +if not PYRAY_STUB.is_absolute(): + PYRAY_STUB = ROOT / PYRAY_STUB def _parse_stub() -> ast.Module: From 80ff72d7f583949d62293587c20da1df5a25433b Mon Sep 17 00:00:00 2001 From: banteg <4562643+banteg@users.noreply.github.com> Date: Fri, 6 Feb 2026 22:41:15 +0400 Subject: [PATCH 7/8] fix(stubs): narrow pyray module constants to rl defines --- create_stub_pyray.py | 21 +- pyray/__init__.pyi | 1033 ------------------------------------------ 2 files changed, 15 insertions(+), 1039 deletions(-) diff --git a/create_stub_pyray.py b/create_stub_pyray.py index b2bed5f..18b11b1 100644 --- a/create_stub_pyray.py +++ b/create_stub_pyray.py @@ -20,7 +20,6 @@ known_functions = {} known_structs = {} -known_enum_values = set() emitted_top_level_names = set() for filename in (Path("raylib.json"), Path("raymath.json"), Path("rlgl.json"), Path("raygui.json"), Path("physac.json"), Path("glfw3.json")): @@ -38,7 +37,6 @@ print(f' """{e['description']}."""') for value in e['values']: print(" "+value['name']+" = "+str(value['value'])) - known_enum_values.add(value['name']) print("") @@ -102,6 +100,16 @@ def emit_top_level_name(name, type_name): print(f"{name}: {type_name}") +def should_emit_module_constant(name): + # Keep only standalone rlgl/raylib constants that do not have enum-class replacements. + if not name.startswith("RL_"): + return False + # Backward-compat aliases from raylib.h that are intentionally discouraged. + if name in {"RL_SHADER_LOC_MAP_DIFFUSE", "RL_SHADER_LOC_MAP_SPECULAR"}: + return False + return True + + print("""from typing import Any from warnings import deprecated import _cffi_backend # type: ignore @@ -110,12 +118,11 @@ def emit_top_level_name(name, type_name): PhysicsShapeType = int """) -for constant_name in sorted(known_enum_values): - emit_top_level_name(constant_name, "int") - for name in sorted(dir(defines)): if not name.isupper(): continue + if not should_emit_module_constant(name): + continue emit_top_level_name(name, value_to_python_type(getattr(defines, name))) # These words can be used for c arg names, but not in python @@ -164,7 +171,9 @@ def emit_top_level_name(name, type_name): f'def {uname}(*args) -> {ctype_to_python_type(return_type)}:\n """VARARG FUNCTION - MAY NOT BE SUPPORTED BY CFFI"""\n ...') else: # print("*****", str(type(attr))) - emit_top_level_name(name, value_to_python_type(attr)) + type_name = value_to_python_type(attr) + if type_name != "int": + emit_top_level_name(name, type_name) struct_aliases = { "Texture2D": "Texture", diff --git a/pyray/__init__.pyi b/pyray/__init__.pyi index bcbbc5a..a7ef7a1 100644 --- a/pyray/__init__.pyi +++ b/pyray/__init__.pyi @@ -911,939 +911,6 @@ ffi: _cffi_backend.FFI PhysicsShapeType = int # BEGIN GENERATED MODULE CONSTANTS -ARROWS_SIZE: int -ARROWS_VISIBLE: int -ARROW_PADDING: int -BACKGROUND_COLOR: int -BASE_COLOR_DISABLED: int -BASE_COLOR_FOCUSED: int -BASE_COLOR_NORMAL: int -BASE_COLOR_PRESSED: int -BLEND_ADDITIVE: int -BLEND_ADD_COLORS: int -BLEND_ALPHA: int -BLEND_ALPHA_PREMULTIPLY: int -BLEND_CUSTOM: int -BLEND_CUSTOM_SEPARATE: int -BLEND_MULTIPLIED: int -BLEND_SUBTRACT_COLORS: int -BORDER_COLOR_DISABLED: int -BORDER_COLOR_FOCUSED: int -BORDER_COLOR_NORMAL: int -BORDER_COLOR_PRESSED: int -BORDER_WIDTH: int -BUTTON: int -CAMERA_CUSTOM: int -CAMERA_FIRST_PERSON: int -CAMERA_FREE: int -CAMERA_ORBITAL: int -CAMERA_ORTHOGRAPHIC: int -CAMERA_PERSPECTIVE: int -CAMERA_THIRD_PERSON: int -CHECKBOX: int -CHECK_PADDING: int -COLORPICKER: int -COLOR_SELECTOR_SIZE: int -COMBOBOX: int -COMBO_BUTTON_SPACING: int -COMBO_BUTTON_WIDTH: int -CUBEMAP_LAYOUT_AUTO_DETECT: int -CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE: int -CUBEMAP_LAYOUT_CROSS_THREE_BY_FOUR: int -CUBEMAP_LAYOUT_LINE_HORIZONTAL: int -CUBEMAP_LAYOUT_LINE_VERTICAL: int -DEFAULT: int -DEG2RAD: float -DROPDOWNBOX: int -DROPDOWN_ARROW_HIDDEN: int -DROPDOWN_ITEMS_SPACING: int -DROPDOWN_ROLL_UP: int -EPSILON: float -FLAG_BORDERLESS_WINDOWED_MODE: int -FLAG_FULLSCREEN_MODE: int -FLAG_INTERLACED_HINT: int -FLAG_MSAA_4X_HINT: int -FLAG_VSYNC_HINT: int -FLAG_WINDOW_ALWAYS_RUN: int -FLAG_WINDOW_HIDDEN: int -FLAG_WINDOW_HIGHDPI: int -FLAG_WINDOW_MAXIMIZED: int -FLAG_WINDOW_MINIMIZED: int -FLAG_WINDOW_MOUSE_PASSTHROUGH: int -FLAG_WINDOW_RESIZABLE: int -FLAG_WINDOW_TOPMOST: int -FLAG_WINDOW_TRANSPARENT: int -FLAG_WINDOW_UNDECORATED: int -FLAG_WINDOW_UNFOCUSED: int -FONT_BITMAP: int -FONT_DEFAULT: int -FONT_SDF: int -GAMEPAD_AXIS_LEFT_TRIGGER: int -GAMEPAD_AXIS_LEFT_X: int -GAMEPAD_AXIS_LEFT_Y: int -GAMEPAD_AXIS_RIGHT_TRIGGER: int -GAMEPAD_AXIS_RIGHT_X: int -GAMEPAD_AXIS_RIGHT_Y: int -GAMEPAD_BUTTON_LEFT_FACE_DOWN: int -GAMEPAD_BUTTON_LEFT_FACE_LEFT: int -GAMEPAD_BUTTON_LEFT_FACE_RIGHT: int -GAMEPAD_BUTTON_LEFT_FACE_UP: int -GAMEPAD_BUTTON_LEFT_THUMB: int -GAMEPAD_BUTTON_LEFT_TRIGGER_1: int -GAMEPAD_BUTTON_LEFT_TRIGGER_2: int -GAMEPAD_BUTTON_MIDDLE: int -GAMEPAD_BUTTON_MIDDLE_LEFT: int -GAMEPAD_BUTTON_MIDDLE_RIGHT: int -GAMEPAD_BUTTON_RIGHT_FACE_DOWN: int -GAMEPAD_BUTTON_RIGHT_FACE_LEFT: int -GAMEPAD_BUTTON_RIGHT_FACE_RIGHT: int -GAMEPAD_BUTTON_RIGHT_FACE_UP: int -GAMEPAD_BUTTON_RIGHT_THUMB: int -GAMEPAD_BUTTON_RIGHT_TRIGGER_1: int -GAMEPAD_BUTTON_RIGHT_TRIGGER_2: int -GAMEPAD_BUTTON_UNKNOWN: int -GESTURE_DOUBLETAP: int -GESTURE_DRAG: int -GESTURE_HOLD: int -GESTURE_NONE: int -GESTURE_PINCH_IN: int -GESTURE_PINCH_OUT: int -GESTURE_SWIPE_DOWN: int -GESTURE_SWIPE_LEFT: int -GESTURE_SWIPE_RIGHT: int -GESTURE_SWIPE_UP: int -GESTURE_TAP: int -GLFW_ACCUM_ALPHA_BITS: int -GLFW_ACCUM_BLUE_BITS: int -GLFW_ACCUM_GREEN_BITS: int -GLFW_ACCUM_RED_BITS: int -GLFW_ALPHA_BITS: int -GLFW_ANGLE_PLATFORM_TYPE: int -GLFW_ANGLE_PLATFORM_TYPE_D3D11: int -GLFW_ANGLE_PLATFORM_TYPE_D3D9: int -GLFW_ANGLE_PLATFORM_TYPE_METAL: int -GLFW_ANGLE_PLATFORM_TYPE_NONE: int -GLFW_ANGLE_PLATFORM_TYPE_OPENGL: int -GLFW_ANGLE_PLATFORM_TYPE_OPENGLES: int -GLFW_ANGLE_PLATFORM_TYPE_VULKAN: int -GLFW_ANY_PLATFORM: int -GLFW_ANY_POSITION: int -GLFW_ANY_RELEASE_BEHAVIOR: int -GLFW_API_UNAVAILABLE: int -GLFW_ARROW_CURSOR: int -GLFW_AUTO_ICONIFY: int -GLFW_AUX_BUFFERS: int -GLFW_BLUE_BITS: int -GLFW_CENTER_CURSOR: int -GLFW_CLIENT_API: int -GLFW_COCOA_CHDIR_RESOURCES: int -GLFW_COCOA_FRAME_NAME: int -GLFW_COCOA_GRAPHICS_SWITCHING: int -GLFW_COCOA_MENUBAR: int -GLFW_COCOA_RETINA_FRAMEBUFFER: int -GLFW_CONNECTED: int -GLFW_CONTEXT_CREATION_API: int -GLFW_CONTEXT_DEBUG: int -GLFW_CONTEXT_NO_ERROR: int -GLFW_CONTEXT_RELEASE_BEHAVIOR: int -GLFW_CONTEXT_REVISION: int -GLFW_CONTEXT_ROBUSTNESS: int -GLFW_CONTEXT_VERSION_MAJOR: int -GLFW_CONTEXT_VERSION_MINOR: int -GLFW_CROSSHAIR_CURSOR: int -GLFW_CURSOR: int -GLFW_CURSOR_CAPTURED: int -GLFW_CURSOR_DISABLED: int -GLFW_CURSOR_HIDDEN: int -GLFW_CURSOR_NORMAL: int -GLFW_CURSOR_UNAVAILABLE: int -GLFW_DECORATED: int -GLFW_DEPTH_BITS: int -GLFW_DISCONNECTED: int -GLFW_DOUBLEBUFFER: int -GLFW_EGL_CONTEXT_API: int -GLFW_FALSE: int -GLFW_FEATURE_UNAVAILABLE: int -GLFW_FEATURE_UNIMPLEMENTED: int -GLFW_FLOATING: int -GLFW_FOCUSED: int -GLFW_FOCUS_ON_SHOW: int -GLFW_FORMAT_UNAVAILABLE: int -GLFW_GAMEPAD_AXIS_LEFT_TRIGGER: int -GLFW_GAMEPAD_AXIS_LEFT_X: int -GLFW_GAMEPAD_AXIS_LEFT_Y: int -GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER: int -GLFW_GAMEPAD_AXIS_RIGHT_X: int -GLFW_GAMEPAD_AXIS_RIGHT_Y: int -GLFW_GAMEPAD_BUTTON_A: int -GLFW_GAMEPAD_BUTTON_B: int -GLFW_GAMEPAD_BUTTON_BACK: int -GLFW_GAMEPAD_BUTTON_DPAD_DOWN: int -GLFW_GAMEPAD_BUTTON_DPAD_LEFT: int -GLFW_GAMEPAD_BUTTON_DPAD_RIGHT: int -GLFW_GAMEPAD_BUTTON_DPAD_UP: int -GLFW_GAMEPAD_BUTTON_GUIDE: int -GLFW_GAMEPAD_BUTTON_LEFT_BUMPER: int -GLFW_GAMEPAD_BUTTON_LEFT_THUMB: int -GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER: int -GLFW_GAMEPAD_BUTTON_RIGHT_THUMB: int -GLFW_GAMEPAD_BUTTON_START: int -GLFW_GAMEPAD_BUTTON_X: int -GLFW_GAMEPAD_BUTTON_Y: int -GLFW_GREEN_BITS: int -GLFW_HAT_CENTERED: int -GLFW_HAT_DOWN: int -GLFW_HAT_LEFT: int -GLFW_HAT_LEFT_DOWN: int -GLFW_HAT_LEFT_UP: int -GLFW_HAT_RIGHT: int -GLFW_HAT_RIGHT_DOWN: int -GLFW_HAT_RIGHT_UP: int -GLFW_HAT_UP: int -GLFW_HOVERED: int -GLFW_IBEAM_CURSOR: int -GLFW_ICONIFIED: int -GLFW_INVALID_ENUM: int -GLFW_INVALID_VALUE: int -GLFW_JOYSTICK_1: int -GLFW_JOYSTICK_10: int -GLFW_JOYSTICK_11: int -GLFW_JOYSTICK_12: int -GLFW_JOYSTICK_13: int -GLFW_JOYSTICK_14: int -GLFW_JOYSTICK_15: int -GLFW_JOYSTICK_16: int -GLFW_JOYSTICK_2: int -GLFW_JOYSTICK_3: int -GLFW_JOYSTICK_4: int -GLFW_JOYSTICK_5: int -GLFW_JOYSTICK_6: int -GLFW_JOYSTICK_7: int -GLFW_JOYSTICK_8: int -GLFW_JOYSTICK_9: int -GLFW_JOYSTICK_HAT_BUTTONS: int -GLFW_KEY_0: int -GLFW_KEY_1: int -GLFW_KEY_2: int -GLFW_KEY_3: int -GLFW_KEY_4: int -GLFW_KEY_5: int -GLFW_KEY_6: int -GLFW_KEY_7: int -GLFW_KEY_8: int -GLFW_KEY_9: int -GLFW_KEY_A: int -GLFW_KEY_APOSTROPHE: int -GLFW_KEY_B: int -GLFW_KEY_BACKSLASH: int -GLFW_KEY_BACKSPACE: int -GLFW_KEY_C: int -GLFW_KEY_CAPS_LOCK: int -GLFW_KEY_COMMA: int -GLFW_KEY_D: int -GLFW_KEY_DELETE: int -GLFW_KEY_DOWN: int -GLFW_KEY_E: int -GLFW_KEY_END: int -GLFW_KEY_ENTER: int -GLFW_KEY_EQUAL: int -GLFW_KEY_ESCAPE: int -GLFW_KEY_F: int -GLFW_KEY_F1: int -GLFW_KEY_F10: int -GLFW_KEY_F11: int -GLFW_KEY_F12: int -GLFW_KEY_F13: int -GLFW_KEY_F14: int -GLFW_KEY_F15: int -GLFW_KEY_F16: int -GLFW_KEY_F17: int -GLFW_KEY_F18: int -GLFW_KEY_F19: int -GLFW_KEY_F2: int -GLFW_KEY_F20: int -GLFW_KEY_F21: int -GLFW_KEY_F22: int -GLFW_KEY_F23: int -GLFW_KEY_F24: int -GLFW_KEY_F25: int -GLFW_KEY_F3: int -GLFW_KEY_F4: int -GLFW_KEY_F5: int -GLFW_KEY_F6: int -GLFW_KEY_F7: int -GLFW_KEY_F8: int -GLFW_KEY_F9: int -GLFW_KEY_G: int -GLFW_KEY_GRAVE_ACCENT: int -GLFW_KEY_H: int -GLFW_KEY_HOME: int -GLFW_KEY_I: int -GLFW_KEY_INSERT: int -GLFW_KEY_J: int -GLFW_KEY_K: int -GLFW_KEY_KP_0: int -GLFW_KEY_KP_1: int -GLFW_KEY_KP_2: int -GLFW_KEY_KP_3: int -GLFW_KEY_KP_4: int -GLFW_KEY_KP_5: int -GLFW_KEY_KP_6: int -GLFW_KEY_KP_7: int -GLFW_KEY_KP_8: int -GLFW_KEY_KP_9: int -GLFW_KEY_KP_ADD: int -GLFW_KEY_KP_DECIMAL: int -GLFW_KEY_KP_DIVIDE: int -GLFW_KEY_KP_ENTER: int -GLFW_KEY_KP_EQUAL: int -GLFW_KEY_KP_MULTIPLY: int -GLFW_KEY_KP_SUBTRACT: int -GLFW_KEY_L: int -GLFW_KEY_LEFT: int -GLFW_KEY_LEFT_ALT: int -GLFW_KEY_LEFT_BRACKET: int -GLFW_KEY_LEFT_CONTROL: int -GLFW_KEY_LEFT_SHIFT: int -GLFW_KEY_LEFT_SUPER: int -GLFW_KEY_M: int -GLFW_KEY_MENU: int -GLFW_KEY_MINUS: int -GLFW_KEY_N: int -GLFW_KEY_NUM_LOCK: int -GLFW_KEY_O: int -GLFW_KEY_P: int -GLFW_KEY_PAGE_DOWN: int -GLFW_KEY_PAGE_UP: int -GLFW_KEY_PAUSE: int -GLFW_KEY_PERIOD: int -GLFW_KEY_PRINT_SCREEN: int -GLFW_KEY_Q: int -GLFW_KEY_R: int -GLFW_KEY_RIGHT: int -GLFW_KEY_RIGHT_ALT: int -GLFW_KEY_RIGHT_BRACKET: int -GLFW_KEY_RIGHT_CONTROL: int -GLFW_KEY_RIGHT_SHIFT: int -GLFW_KEY_RIGHT_SUPER: int -GLFW_KEY_S: int -GLFW_KEY_SCROLL_LOCK: int -GLFW_KEY_SEMICOLON: int -GLFW_KEY_SLASH: int -GLFW_KEY_SPACE: int -GLFW_KEY_T: int -GLFW_KEY_TAB: int -GLFW_KEY_U: int -GLFW_KEY_UP: int -GLFW_KEY_V: int -GLFW_KEY_W: int -GLFW_KEY_WORLD_1: int -GLFW_KEY_WORLD_2: int -GLFW_KEY_X: int -GLFW_KEY_Y: int -GLFW_KEY_Z: int -GLFW_LOCK_KEY_MODS: int -GLFW_LOSE_CONTEXT_ON_RESET: int -GLFW_MAXIMIZED: int -GLFW_MOD_ALT: int -GLFW_MOD_CAPS_LOCK: int -GLFW_MOD_CONTROL: int -GLFW_MOD_NUM_LOCK: int -GLFW_MOD_SHIFT: int -GLFW_MOD_SUPER: int -GLFW_MOUSE_BUTTON_1: int -GLFW_MOUSE_BUTTON_2: int -GLFW_MOUSE_BUTTON_3: int -GLFW_MOUSE_BUTTON_4: int -GLFW_MOUSE_BUTTON_5: int -GLFW_MOUSE_BUTTON_6: int -GLFW_MOUSE_BUTTON_7: int -GLFW_MOUSE_BUTTON_8: int -GLFW_MOUSE_PASSTHROUGH: int -GLFW_NATIVE_CONTEXT_API: int -GLFW_NOT_ALLOWED_CURSOR: int -GLFW_NOT_INITIALIZED: int -GLFW_NO_API: int -GLFW_NO_CURRENT_CONTEXT: int -GLFW_NO_ERROR: int -GLFW_NO_RESET_NOTIFICATION: int -GLFW_NO_ROBUSTNESS: int -GLFW_NO_WINDOW_CONTEXT: int -GLFW_OPENGL_ANY_PROFILE: int -GLFW_OPENGL_API: int -GLFW_OPENGL_COMPAT_PROFILE: int -GLFW_OPENGL_CORE_PROFILE: int -GLFW_OPENGL_ES_API: int -GLFW_OPENGL_FORWARD_COMPAT: int -GLFW_OPENGL_PROFILE: int -GLFW_OSMESA_CONTEXT_API: int -GLFW_OUT_OF_MEMORY: int -GLFW_PLATFORM: int -GLFW_PLATFORM_COCOA: int -GLFW_PLATFORM_ERROR: int -GLFW_PLATFORM_NULL: int -GLFW_PLATFORM_UNAVAILABLE: int -GLFW_PLATFORM_WAYLAND: int -GLFW_PLATFORM_WIN32: int -GLFW_PLATFORM_X11: int -GLFW_POINTING_HAND_CURSOR: int -GLFW_POSITION_X: int -GLFW_POSITION_Y: int -GLFW_PRESS: int -GLFW_RAW_MOUSE_MOTION: int -GLFW_RED_BITS: int -GLFW_REFRESH_RATE: int -GLFW_RELEASE: int -GLFW_RELEASE_BEHAVIOR_FLUSH: int -GLFW_RELEASE_BEHAVIOR_NONE: int -GLFW_REPEAT: int -GLFW_RESIZABLE: int -GLFW_RESIZE_ALL_CURSOR: int -GLFW_RESIZE_EW_CURSOR: int -GLFW_RESIZE_NESW_CURSOR: int -GLFW_RESIZE_NS_CURSOR: int -GLFW_RESIZE_NWSE_CURSOR: int -GLFW_SAMPLES: int -GLFW_SCALE_FRAMEBUFFER: int -GLFW_SCALE_TO_MONITOR: int -GLFW_SRGB_CAPABLE: int -GLFW_STENCIL_BITS: int -GLFW_STEREO: int -GLFW_STICKY_KEYS: int -GLFW_STICKY_MOUSE_BUTTONS: int -GLFW_TRANSPARENT_FRAMEBUFFER: int -GLFW_TRUE: int -GLFW_VERSION_MAJOR: int -GLFW_VERSION_MINOR: int -GLFW_VERSION_REVISION: int -GLFW_VERSION_UNAVAILABLE: int -GLFW_VISIBLE: int -GLFW_WAYLAND_APP_ID: int -GLFW_WAYLAND_DISABLE_LIBDECOR: int -GLFW_WAYLAND_LIBDECOR: int -GLFW_WAYLAND_PREFER_LIBDECOR: int -GLFW_WIN32_KEYBOARD_MENU: int -GLFW_WIN32_SHOWDEFAULT: int -GLFW_X11_CLASS_NAME: int -GLFW_X11_INSTANCE_NAME: int -GLFW_X11_XCB_VULKAN_SURFACE: int -GL_COMPRESSED_RGB8_ETC2: int -GL_COMPRESSED_RGBA8_ETC2_EAC: int -GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG: int -GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: int -GL_COMPRESSED_RGBA_S3TC_DXT3_EXT: int -GL_COMPRESSED_RGBA_S3TC_DXT5_EXT: int -GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG: int -GL_COMPRESSED_RGB_S3TC_DXT1_EXT: int -GL_ETC1_RGB8_OES: int -GL_LINE_WIDTH: int -GL_LUMINANCE: int -GL_LUMINANCE_ALPHA: int -GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT: int -GL_PROGRAM_POINT_SIZE: int -GL_SHADING_LANGUAGE_VERSION: int -GL_TEXTURE_MAX_ANISOTROPY_EXT: int -GL_UNSIGNED_SHORT_4_4_4_4: int -GL_UNSIGNED_SHORT_5_5_5_1: int -GL_UNSIGNED_SHORT_5_6_5: int -GROUP_PADDING: int -HUEBAR_PADDING: int -HUEBAR_SELECTOR_HEIGHT: int -HUEBAR_SELECTOR_OVERFLOW: int -HUEBAR_WIDTH: int -ICON_1UP: int -ICON_229: int -ICON_230: int -ICON_231: int -ICON_232: int -ICON_233: int -ICON_234: int -ICON_235: int -ICON_236: int -ICON_237: int -ICON_238: int -ICON_239: int -ICON_240: int -ICON_241: int -ICON_242: int -ICON_243: int -ICON_244: int -ICON_245: int -ICON_246: int -ICON_247: int -ICON_248: int -ICON_249: int -ICON_250: int -ICON_251: int -ICON_252: int -ICON_253: int -ICON_254: int -ICON_255: int -ICON_ALARM: int -ICON_ALPHA_CLEAR: int -ICON_ALPHA_MULTIPLY: int -ICON_ARROW_DOWN: int -ICON_ARROW_DOWN_FILL: int -ICON_ARROW_LEFT: int -ICON_ARROW_LEFT_FILL: int -ICON_ARROW_RIGHT: int -ICON_ARROW_RIGHT_FILL: int -ICON_ARROW_UP: int -ICON_ARROW_UP_FILL: int -ICON_AUDIO: int -ICON_BIN: int -ICON_BOX: int -ICON_BOX_BOTTOM: int -ICON_BOX_BOTTOM_LEFT: int -ICON_BOX_BOTTOM_RIGHT: int -ICON_BOX_CENTER: int -ICON_BOX_CIRCLE_MASK: int -ICON_BOX_CONCENTRIC: int -ICON_BOX_CORNERS_BIG: int -ICON_BOX_CORNERS_SMALL: int -ICON_BOX_DOTS_BIG: int -ICON_BOX_DOTS_SMALL: int -ICON_BOX_GRID: int -ICON_BOX_GRID_BIG: int -ICON_BOX_LEFT: int -ICON_BOX_MULTISIZE: int -ICON_BOX_RIGHT: int -ICON_BOX_TOP: int -ICON_BOX_TOP_LEFT: int -ICON_BOX_TOP_RIGHT: int -ICON_BREAKPOINT_OFF: int -ICON_BREAKPOINT_ON: int -ICON_BRUSH_CLASSIC: int -ICON_BRUSH_PAINTER: int -ICON_BURGER_MENU: int -ICON_CAMERA: int -ICON_CASE_SENSITIVE: int -ICON_CLOCK: int -ICON_COIN: int -ICON_COLOR_BUCKET: int -ICON_COLOR_PICKER: int -ICON_CORNER: int -ICON_CPU: int -ICON_CRACK: int -ICON_CRACK_POINTS: int -ICON_CROP: int -ICON_CROP_ALPHA: int -ICON_CROSS: int -ICON_CROSSLINE: int -ICON_CROSS_SMALL: int -ICON_CUBE: int -ICON_CUBE_FACE_BACK: int -ICON_CUBE_FACE_BOTTOM: int -ICON_CUBE_FACE_FRONT: int -ICON_CUBE_FACE_LEFT: int -ICON_CUBE_FACE_RIGHT: int -ICON_CUBE_FACE_TOP: int -ICON_CURSOR_CLASSIC: int -ICON_CURSOR_HAND: int -ICON_CURSOR_MOVE: int -ICON_CURSOR_MOVE_FILL: int -ICON_CURSOR_POINTER: int -ICON_CURSOR_SCALE: int -ICON_CURSOR_SCALE_FILL: int -ICON_CURSOR_SCALE_LEFT: int -ICON_CURSOR_SCALE_LEFT_FILL: int -ICON_CURSOR_SCALE_RIGHT: int -ICON_CURSOR_SCALE_RIGHT_FILL: int -ICON_DEMON: int -ICON_DITHERING: int -ICON_DOOR: int -ICON_EMPTYBOX: int -ICON_EMPTYBOX_SMALL: int -ICON_EXIT: int -ICON_EXPLOSION: int -ICON_EYE_OFF: int -ICON_EYE_ON: int -ICON_FILE: int -ICON_FILETYPE_ALPHA: int -ICON_FILETYPE_AUDIO: int -ICON_FILETYPE_BINARY: int -ICON_FILETYPE_HOME: int -ICON_FILETYPE_IMAGE: int -ICON_FILETYPE_INFO: int -ICON_FILETYPE_PLAY: int -ICON_FILETYPE_TEXT: int -ICON_FILETYPE_VIDEO: int -ICON_FILE_ADD: int -ICON_FILE_COPY: int -ICON_FILE_CUT: int -ICON_FILE_DELETE: int -ICON_FILE_EXPORT: int -ICON_FILE_NEW: int -ICON_FILE_OPEN: int -ICON_FILE_PASTE: int -ICON_FILE_SAVE: int -ICON_FILE_SAVE_CLASSIC: int -ICON_FILTER: int -ICON_FILTER_BILINEAR: int -ICON_FILTER_POINT: int -ICON_FILTER_TOP: int -ICON_FOLDER: int -ICON_FOLDER_ADD: int -ICON_FOLDER_FILE_OPEN: int -ICON_FOLDER_OPEN: int -ICON_FOLDER_SAVE: int -ICON_FOUR_BOXES: int -ICON_FX: int -ICON_GEAR: int -ICON_GEAR_BIG: int -ICON_GEAR_EX: int -ICON_GRID: int -ICON_GRID_FILL: int -ICON_HAND_POINTER: int -ICON_HEART: int -ICON_HELP: int -ICON_HELP_BOX: int -ICON_HEX: int -ICON_HIDPI: int -ICON_HOT: int -ICON_HOUSE: int -ICON_INFO: int -ICON_INFO_BOX: int -ICON_KEY: int -ICON_LASER: int -ICON_LAYERS: int -ICON_LAYERS2: int -ICON_LAYERS_ISO: int -ICON_LAYERS_VISIBLE: int -ICON_LENS: int -ICON_LENS_BIG: int -ICON_LIFE_BARS: int -ICON_LINK: int -ICON_LINK_BOXES: int -ICON_LINK_BROKE: int -ICON_LINK_MULTI: int -ICON_LINK_NET: int -ICON_LOCK_CLOSE: int -ICON_LOCK_OPEN: int -ICON_MAGNET: int -ICON_MAILBOX: int -ICON_MAPS: int -ICON_MIPMAPS: int -ICON_MLAYERS: int -ICON_MODE_2D: int -ICON_MODE_3D: int -ICON_MONITOR: int -ICON_MUTATE: int -ICON_MUTATE_FILL: int -ICON_NONE: int -ICON_NOTEBOOK: int -ICON_OK_TICK: int -ICON_PENCIL: int -ICON_PENCIL_BIG: int -ICON_PHOTO_CAMERA: int -ICON_PHOTO_CAMERA_FLASH: int -ICON_PLAYER: int -ICON_PLAYER_JUMP: int -ICON_PLAYER_NEXT: int -ICON_PLAYER_PAUSE: int -ICON_PLAYER_PLAY: int -ICON_PLAYER_PLAY_BACK: int -ICON_PLAYER_PREVIOUS: int -ICON_PLAYER_RECORD: int -ICON_PLAYER_STOP: int -ICON_POT: int -ICON_PRINTER: int -ICON_PRIORITY: int -ICON_REDO: int -ICON_REDO_FILL: int -ICON_REG_EXP: int -ICON_REPEAT: int -ICON_REPEAT_FILL: int -ICON_REREDO: int -ICON_REREDO_FILL: int -ICON_RESIZE: int -ICON_RESTART: int -ICON_ROM: int -ICON_ROTATE: int -ICON_ROTATE_FILL: int -ICON_RUBBER: int -ICON_SAND_TIMER: int -ICON_SCALE: int -ICON_SHIELD: int -ICON_SHUFFLE: int -ICON_SHUFFLE_FILL: int -ICON_SPECIAL: int -ICON_SQUARE_TOGGLE: int -ICON_STAR: int -ICON_STEP_INTO: int -ICON_STEP_OUT: int -ICON_STEP_OVER: int -ICON_SUITCASE: int -ICON_SUITCASE_ZIP: int -ICON_SYMMETRY: int -ICON_SYMMETRY_HORIZONTAL: int -ICON_SYMMETRY_VERTICAL: int -ICON_TARGET: int -ICON_TARGET_BIG: int -ICON_TARGET_BIG_FILL: int -ICON_TARGET_MOVE: int -ICON_TARGET_MOVE_FILL: int -ICON_TARGET_POINT: int -ICON_TARGET_SMALL: int -ICON_TARGET_SMALL_FILL: int -ICON_TEXT_A: int -ICON_TEXT_NOTES: int -ICON_TEXT_PADDING: int -ICON_TEXT_POPUP: int -ICON_TEXT_T: int -ICON_TOOLS: int -ICON_UNDO: int -ICON_UNDO_FILL: int -ICON_VERTICAL_BARS: int -ICON_VERTICAL_BARS_FILL: int -ICON_WARNING: int -ICON_WATER_DROP: int -ICON_WAVE: int -ICON_WAVE_SINUS: int -ICON_WAVE_SQUARE: int -ICON_WAVE_TRIANGULAR: int -ICON_WINDOW: int -ICON_ZOOM_ALL: int -ICON_ZOOM_BIG: int -ICON_ZOOM_CENTER: int -ICON_ZOOM_MEDIUM: int -ICON_ZOOM_SMALL: int -KEY_A: int -KEY_APOSTROPHE: int -KEY_B: int -KEY_BACK: int -KEY_BACKSLASH: int -KEY_BACKSPACE: int -KEY_C: int -KEY_CAPS_LOCK: int -KEY_COMMA: int -KEY_D: int -KEY_DELETE: int -KEY_DOWN: int -KEY_E: int -KEY_EIGHT: int -KEY_END: int -KEY_ENTER: int -KEY_EQUAL: int -KEY_ESCAPE: int -KEY_F: int -KEY_F1: int -KEY_F10: int -KEY_F11: int -KEY_F12: int -KEY_F2: int -KEY_F3: int -KEY_F4: int -KEY_F5: int -KEY_F6: int -KEY_F7: int -KEY_F8: int -KEY_F9: int -KEY_FIVE: int -KEY_FOUR: int -KEY_G: int -KEY_GRAVE: int -KEY_H: int -KEY_HOME: int -KEY_I: int -KEY_INSERT: int -KEY_J: int -KEY_K: int -KEY_KB_MENU: int -KEY_KP_0: int -KEY_KP_1: int -KEY_KP_2: int -KEY_KP_3: int -KEY_KP_4: int -KEY_KP_5: int -KEY_KP_6: int -KEY_KP_7: int -KEY_KP_8: int -KEY_KP_9: int -KEY_KP_ADD: int -KEY_KP_DECIMAL: int -KEY_KP_DIVIDE: int -KEY_KP_ENTER: int -KEY_KP_EQUAL: int -KEY_KP_MULTIPLY: int -KEY_KP_SUBTRACT: int -KEY_L: int -KEY_LEFT: int -KEY_LEFT_ALT: int -KEY_LEFT_BRACKET: int -KEY_LEFT_CONTROL: int -KEY_LEFT_SHIFT: int -KEY_LEFT_SUPER: int -KEY_M: int -KEY_MENU: int -KEY_MINUS: int -KEY_N: int -KEY_NINE: int -KEY_NULL: int -KEY_NUM_LOCK: int -KEY_O: int -KEY_ONE: int -KEY_P: int -KEY_PAGE_DOWN: int -KEY_PAGE_UP: int -KEY_PAUSE: int -KEY_PERIOD: int -KEY_PRINT_SCREEN: int -KEY_Q: int -KEY_R: int -KEY_RIGHT: int -KEY_RIGHT_ALT: int -KEY_RIGHT_BRACKET: int -KEY_RIGHT_CONTROL: int -KEY_RIGHT_SHIFT: int -KEY_RIGHT_SUPER: int -KEY_S: int -KEY_SCROLL_LOCK: int -KEY_SEMICOLON: int -KEY_SEVEN: int -KEY_SIX: int -KEY_SLASH: int -KEY_SPACE: int -KEY_T: int -KEY_TAB: int -KEY_THREE: int -KEY_TWO: int -KEY_U: int -KEY_UP: int -KEY_V: int -KEY_VOLUME_DOWN: int -KEY_VOLUME_UP: int -KEY_W: int -KEY_X: int -KEY_Y: int -KEY_Z: int -KEY_ZERO: int -LABEL: int -LINE_COLOR: int -LISTVIEW: int -LIST_ITEMS_BORDER_WIDTH: int -LIST_ITEMS_HEIGHT: int -LIST_ITEMS_SPACING: int -LOG_ALL: int -LOG_DEBUG: int -LOG_ERROR: int -LOG_FATAL: int -LOG_INFO: int -LOG_NONE: int -LOG_TRACE: int -LOG_WARNING: int -MATERIAL_MAP_ALBEDO: int -MATERIAL_MAP_BRDF: int -MATERIAL_MAP_CUBEMAP: int -MATERIAL_MAP_DIFFUSE: int -MATERIAL_MAP_EMISSION: int -MATERIAL_MAP_HEIGHT: int -MATERIAL_MAP_IRRADIANCE: int -MATERIAL_MAP_METALNESS: int -MATERIAL_MAP_NORMAL: int -MATERIAL_MAP_OCCLUSION: int -MATERIAL_MAP_PREFILTER: int -MATERIAL_MAP_ROUGHNESS: int -MATERIAL_MAP_SPECULAR: int -MAX_LINE_BUFFER_SIZE: int -MOUSE_BUTTON_BACK: int -MOUSE_BUTTON_EXTRA: int -MOUSE_BUTTON_FORWARD: int -MOUSE_BUTTON_LEFT: int -MOUSE_BUTTON_MIDDLE: int -MOUSE_BUTTON_RIGHT: int -MOUSE_BUTTON_SIDE: int -MOUSE_CURSOR_ARROW: int -MOUSE_CURSOR_CROSSHAIR: int -MOUSE_CURSOR_DEFAULT: int -MOUSE_CURSOR_IBEAM: int -MOUSE_CURSOR_NOT_ALLOWED: int -MOUSE_CURSOR_POINTING_HAND: int -MOUSE_CURSOR_RESIZE_ALL: int -MOUSE_CURSOR_RESIZE_EW: int -MOUSE_CURSOR_RESIZE_NESW: int -MOUSE_CURSOR_RESIZE_NS: int -MOUSE_CURSOR_RESIZE_NWSE: int -MOUSE_LEFT_BUTTON: int -MOUSE_MIDDLE_BUTTON: int -MOUSE_RIGHT_BUTTON: int -NPATCH_NINE_PATCH: int -NPATCH_THREE_PATCH_HORIZONTAL: int -NPATCH_THREE_PATCH_VERTICAL: int -PHYSAC_CIRCLE_VERTICES: int -PHYSAC_COLLISION_ITERATIONS: int -PHYSAC_EPSILON: float -PHYSAC_FLT_MAX: float -PHYSAC_MAX_BODIES: int -PHYSAC_MAX_MANIFOLDS: int -PHYSAC_MAX_VERTICES: int -PHYSAC_PENETRATION_ALLOWANCE: float -PHYSAC_PENETRATION_CORRECTION: float -PI: float -PIXELFORMAT_COMPRESSED_DXT1_RGB: int -PIXELFORMAT_COMPRESSED_DXT1_RGBA: int -PIXELFORMAT_COMPRESSED_DXT3_RGBA: int -PIXELFORMAT_COMPRESSED_DXT5_RGBA: int -PIXELFORMAT_COMPRESSED_ETC1_RGB: int -PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA: int -PIXELFORMAT_COMPRESSED_ETC2_RGB: int -PIXELFORMAT_COMPRESSED_PVRT_RGB: int -PIXELFORMAT_COMPRESSED_PVRT_RGBA: int -PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: int -PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: int -PIXELFORMAT_UNCOMPRESSED_R16: int -PIXELFORMAT_UNCOMPRESSED_R16G16B16: int -PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: int -PIXELFORMAT_UNCOMPRESSED_R32: int -PIXELFORMAT_UNCOMPRESSED_R32G32B32: int -PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: int -PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: int -PIXELFORMAT_UNCOMPRESSED_R5G5B5A1: int -PIXELFORMAT_UNCOMPRESSED_R5G6B5: int -PIXELFORMAT_UNCOMPRESSED_R8G8B8: int -PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: int -PROGRESSBAR: int -PROGRESS_PADDING: int -RAD2DEG: float -RAYGUI_COLORBARALPHA_CHECKED_SIZE: int -RAYGUI_GRID_ALPHA: float -RAYGUI_GROUPBOX_LINE_THICK: int -RAYGUI_ICON_MAX_ICONS: int -RAYGUI_ICON_MAX_NAME_LENGTH: int -RAYGUI_ICON_SIZE: int -RAYGUI_LINE_MARGIN_TEXT: int -RAYGUI_LINE_TEXT_PADDING: int -RAYGUI_MAX_CONTROLS: int -RAYGUI_MAX_PROPS_BASE: int -RAYGUI_MAX_PROPS_EXTENDED: int -RAYGUI_MAX_TEXT_LINES: int -RAYGUI_MESSAGEBOX_BUTTON_HEIGHT: int -RAYGUI_MESSAGEBOX_BUTTON_PADDING: int -RAYGUI_MIN_MOUSE_WHEEL_SPEED: int -RAYGUI_MIN_SCROLLBAR_HEIGHT: int -RAYGUI_MIN_SCROLLBAR_WIDTH: int -RAYGUI_PANEL_BORDER_WIDTH: int -RAYGUI_TABBAR_ITEM_WIDTH: int -RAYGUI_TEXTBOX_AUTO_CURSOR_COOLDOWN: int -RAYGUI_TEXTBOX_AUTO_CURSOR_DELAY: int -RAYGUI_TEXTFORMAT_MAX_SIZE: int -RAYGUI_TEXTINPUTBOX_BUTTON_HEIGHT: int -RAYGUI_TEXTINPUTBOX_BUTTON_PADDING: int -RAYGUI_TEXTINPUTBOX_HEIGHT: int -RAYGUI_TEXTSPLIT_MAX_ITEMS: int -RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE: int -RAYGUI_TOGGLEGROUP_MAX_ITEMS: int -RAYGUI_VALUEBOX_MAX_CHARS: int -RAYGUI_VERSION: str -RAYGUI_VERSION_MAJOR: int -RAYGUI_VERSION_MINOR: int -RAYGUI_VERSION_PATCH: int -RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT: int -RAYLIB_VERSION: str -RAYLIB_VERSION_MAJOR: int -RAYLIB_VERSION_MINOR: int -RAYLIB_VERSION_PATCH: int -RLGL_VERSION: str RL_ATTACHMENT_COLOR_CHANNEL0: int RL_ATTACHMENT_COLOR_CHANNEL1: int RL_ATTACHMENT_COLOR_CHANNEL2: int @@ -1987,7 +1054,6 @@ RL_SHADER_LOC_COLOR_SPECULAR: int RL_SHADER_LOC_MAP_ALBEDO: int RL_SHADER_LOC_MAP_BRDF: int RL_SHADER_LOC_MAP_CUBEMAP: int -RL_SHADER_LOC_MAP_DIFFUSE: int RL_SHADER_LOC_MAP_EMISSION: int RL_SHADER_LOC_MAP_HEIGHT: int RL_SHADER_LOC_MAP_IRRADIANCE: int @@ -1996,7 +1062,6 @@ RL_SHADER_LOC_MAP_NORMAL: int RL_SHADER_LOC_MAP_OCCLUSION: int RL_SHADER_LOC_MAP_PREFILTER: int RL_SHADER_LOC_MAP_ROUGHNESS: int -RL_SHADER_LOC_MAP_SPECULAR: int RL_SHADER_LOC_MATRIX_MODEL: int RL_SHADER_LOC_MATRIX_MVP: int RL_SHADER_LOC_MATRIX_NORMAL: int @@ -2058,104 +1123,6 @@ RL_TRIANGLES: int RL_UNSIGNED_BYTE: int RL_VERTEX_SHADER: int RL_ZERO: int -SCROLLBAR: int -SCROLLBAR_LEFT_SIDE: int -SCROLLBAR_RIGHT_SIDE: int -SCROLLBAR_SIDE: int -SCROLLBAR_WIDTH: int -SCROLL_PADDING: int -SCROLL_SLIDER_PADDING: int -SCROLL_SLIDER_SIZE: int -SCROLL_SPEED: int -SHADER_ATTRIB_FLOAT: int -SHADER_ATTRIB_VEC2: int -SHADER_ATTRIB_VEC3: int -SHADER_ATTRIB_VEC4: int -SHADER_LOC_BONE_MATRICES: int -SHADER_LOC_COLOR_AMBIENT: int -SHADER_LOC_COLOR_DIFFUSE: int -SHADER_LOC_COLOR_SPECULAR: int -SHADER_LOC_MAP_ALBEDO: int -SHADER_LOC_MAP_BRDF: int -SHADER_LOC_MAP_CUBEMAP: int -SHADER_LOC_MAP_DIFFUSE: int -SHADER_LOC_MAP_EMISSION: int -SHADER_LOC_MAP_HEIGHT: int -SHADER_LOC_MAP_IRRADIANCE: int -SHADER_LOC_MAP_METALNESS: int -SHADER_LOC_MAP_NORMAL: int -SHADER_LOC_MAP_OCCLUSION: int -SHADER_LOC_MAP_PREFILTER: int -SHADER_LOC_MAP_ROUGHNESS: int -SHADER_LOC_MAP_SPECULAR: int -SHADER_LOC_MATRIX_MODEL: int -SHADER_LOC_MATRIX_MVP: int -SHADER_LOC_MATRIX_NORMAL: int -SHADER_LOC_MATRIX_PROJECTION: int -SHADER_LOC_MATRIX_VIEW: int -SHADER_LOC_VECTOR_VIEW: int -SHADER_LOC_VERTEX_BONEIDS: int -SHADER_LOC_VERTEX_BONEWEIGHTS: int -SHADER_LOC_VERTEX_COLOR: int -SHADER_LOC_VERTEX_NORMAL: int -SHADER_LOC_VERTEX_POSITION: int -SHADER_LOC_VERTEX_TANGENT: int -SHADER_LOC_VERTEX_TEXCOORD01: int -SHADER_LOC_VERTEX_TEXCOORD02: int -SHADER_UNIFORM_FLOAT: int -SHADER_UNIFORM_INT: int -SHADER_UNIFORM_IVEC2: int -SHADER_UNIFORM_IVEC3: int -SHADER_UNIFORM_IVEC4: int -SHADER_UNIFORM_SAMPLER2D: int -SHADER_UNIFORM_VEC2: int -SHADER_UNIFORM_VEC3: int -SHADER_UNIFORM_VEC4: int -SLIDER: int -SLIDER_PADDING: int -SLIDER_WIDTH: int -SPINNER: int -SPIN_BUTTON_SPACING: int -SPIN_BUTTON_WIDTH: int -STATE_DISABLED: int -STATE_FOCUSED: int -STATE_NORMAL: int -STATE_PRESSED: int -STATUSBAR: int -TEXTBOX: int -TEXTURE_FILTER_ANISOTROPIC_16X: int -TEXTURE_FILTER_ANISOTROPIC_4X: int -TEXTURE_FILTER_ANISOTROPIC_8X: int -TEXTURE_FILTER_BILINEAR: int -TEXTURE_FILTER_POINT: int -TEXTURE_FILTER_TRILINEAR: int -TEXTURE_WRAP_CLAMP: int -TEXTURE_WRAP_MIRROR_CLAMP: int -TEXTURE_WRAP_MIRROR_REPEAT: int -TEXTURE_WRAP_REPEAT: int -TEXT_ALIGNMENT: int -TEXT_ALIGNMENT_VERTICAL: int -TEXT_ALIGN_BOTTOM: int -TEXT_ALIGN_CENTER: int -TEXT_ALIGN_LEFT: int -TEXT_ALIGN_MIDDLE: int -TEXT_ALIGN_RIGHT: int -TEXT_ALIGN_TOP: int -TEXT_COLOR_DISABLED: int -TEXT_COLOR_FOCUSED: int -TEXT_COLOR_NORMAL: int -TEXT_COLOR_PRESSED: int -TEXT_LINE_SPACING: int -TEXT_PADDING: int -TEXT_READONLY: int -TEXT_SIZE: int -TEXT_SPACING: int -TEXT_WRAP_CHAR: int -TEXT_WRAP_MODE: int -TEXT_WRAP_NONE: int -TEXT_WRAP_WORD: int -TOGGLE: int -VALUEBOX: int # END GENERATED MODULE CONSTANTS From bab2e802af9c6d46e9c2bf0512de13398281ae06 Mon Sep 17 00:00:00 2001 From: banteg <4562643+banteg@users.noreply.github.com> Date: Fri, 6 Feb 2026 22:41:18 +0400 Subject: [PATCH 8/8] test: align stub checks with non-deprecated constants --- tests/test_pyray_stub_parity.py | 45 ++++++++++++-------------------- tests/typing/pyray_stub_smoke.py | 7 ++--- 2 files changed, 21 insertions(+), 31 deletions(-) diff --git a/tests/test_pyray_stub_parity.py b/tests/test_pyray_stub_parity.py index f23b42f..889d219 100644 --- a/tests/test_pyray_stub_parity.py +++ b/tests/test_pyray_stub_parity.py @@ -31,43 +31,32 @@ def _top_level_names(module: ast.Module) -> set[str]: return names -def _enum_member_names(module: ast.Module) -> set[str]: - names: set[str] = set() - for node in module.body: - if not isinstance(node, ast.ClassDef): - continue - if not any(isinstance(base, ast.Name) and base.id == "int" for base in node.bases): - continue - for class_node in node.body: - if not isinstance(class_node, ast.Assign): - continue - for target in class_node.targets: - if isinstance(target, ast.Name) and target.id.isupper(): - names.add(target.id) - return names - - -def test_enum_members_are_available_as_module_constants() -> None: - module = _parse_stub() - missing = sorted(_enum_member_names(module) - _top_level_names(module)) - assert not missing, ( - "Missing module-level constants for enum members; " - f"first missing names: {missing[:15]}" - ) - - def test_stub_includes_expected_smoke_constants() -> None: module_names = _top_level_names(_parse_stub()) required_names = { - "BLEND_ALPHA", - "MOUSE_BUTTON_LEFT", + "RL_FUNC_ADD", + "RL_ONE", + "RL_ONE_MINUS_SRC_ALPHA", "RL_QUADS", "RL_SRC_ALPHA", - "TEXTURE_FILTER_POINT", + "RL_ZERO", } assert required_names.issubset(module_names) +def test_stub_excludes_deprecated_shorthand_constants() -> None: + module_names = _top_level_names(_parse_stub()) + omitted_names = { + "ARROWS_SIZE", + "BLEND_ALPHA", + "MOUSE_BUTTON_LEFT", + "SHADER_LOC_MATRIX_MVP", + "SHADER_UNIFORM_FLOAT", + "TEXTURE_FILTER_POINT", + } + assert omitted_names.isdisjoint(module_names) + + def test_texture2d_is_a_texture_alias() -> None: module = _parse_stub() class_names = { diff --git a/tests/typing/pyray_stub_smoke.py b/tests/typing/pyray_stub_smoke.py index bc20371..835dff8 100644 --- a/tests/typing/pyray_stub_smoke.py +++ b/tests/typing/pyray_stub_smoke.py @@ -1,10 +1,11 @@ import pyray as rl -blend: int = rl.BLEND_ALPHA +blend: int = rl.BlendMode.BLEND_ALPHA mode: int = rl.RL_QUADS -mouse: int = rl.MOUSE_BUTTON_LEFT -flt: int = rl.TEXTURE_FILTER_POINT +src_alpha: int = rl.RL_SRC_ALPHA +mouse: int = rl.MouseButton.MOUSE_BUTTON_LEFT +flt: int = rl.TextureFilter.TEXTURE_FILTER_POINT def accepts_texture(texture: rl.Texture | None) -> None: