From bfc84e5f97d47d4225e5f26bd239d0fe951a2995 Mon Sep 17 00:00:00 2001 From: Keiky Date: Sun, 17 Jul 2022 14:32:10 +0100 Subject: [PATCH 1/2] Added Object class to _builtins.pyi --- src/godot/_builtins.tmpl.pyi | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/godot/_builtins.tmpl.pyi b/src/godot/_builtins.tmpl.pyi index a02b4ce5..cadbfdb2 100644 --- a/src/godot/_builtins.tmpl.pyi +++ b/src/godot/_builtins.tmpl.pyi @@ -2,6 +2,9 @@ # see `generation/generate_builtins.py` {# TODO: GDString ~ String #} +class Object: + ... + {% for item in specs %} class {{item.name}}: From aff2109c49164cc3343703441bba617b71e87c24 Mon Sep 17 00:00:00 2001 From: Keiky Date: Sun, 17 Jul 2022 14:37:10 +0100 Subject: [PATCH 2/2] Patching BuiltinType Python types --- scripts/generate_builtins.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/scripts/generate_builtins.py b/scripts/generate_builtins.py index 3a557cbc..d9c88093 100644 --- a/scripts/generate_builtins.py +++ b/scripts/generate_builtins.py @@ -69,6 +69,10 @@ def correct_name(name: str) -> str: return name +def patch_name(name: str) -> str: + return "GD" + name[0].upper() + name[1:] + + # `extension_api.json` is pretty big, hence it's much easier to have it # format reproduced here as typed classes, especially given we want to cook # it a bit before using it in the templates @@ -131,8 +135,13 @@ class BuiltinType: @classmethod def parse(cls, name: str) -> "BuiltinType": godot_name, cython_name = BUILTINS_NAMES.get(name, (name, name)) + # Avoid overwritting default Python types + if name in ("bool", "int", "float", "String"): + patched_name = patch_name(name=name) + else: + patched_name = name return cls( - name=name, + name=patched_name, original_name=name, cython_name=cython_name, godot_name=godot_name, @@ -323,7 +332,7 @@ def parse(cls, item: dict) -> "BuiltinSpec": # Avoid overwritting default Python types if item["name"] in ("bool", "int", "float", "String"): - patched_name = "GD" + item["name"][0].upper() + item["name"][1:] + patched_name = patch_name(name=item["name"]) else: patched_name = item["name"]