Skip to content

Commit f7f49e4

Browse files
add typehints for varadic functions
1 parent 152b4e1 commit f7f49e4

8 files changed

Lines changed: 35 additions & 37 deletions

File tree

create_stub_pyray.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ def ctype_to_python_type(t):
9393

9494
for name, attr in getmembers(rl):
9595
uname = _underscore(name)
96-
if isbuiltin(attr) or str(type(attr)) == "<class '_cffi_backend.__FFIFunctionWrapper'>":
96+
if isbuiltin(attr) or str(type(attr)) == "<class '_cffi_backend.__FFIFunctionWrapper'>" or str(type(attr)) == "<class '_cffi_backend._CDataBase'>":
9797
json_object = known_functions.get(name, None)
9898
if json_object is None:
9999
# this is _not_ an exported function from raylib, raymath, rlgl raygui or physac
@@ -115,6 +115,9 @@ def ctype_to_python_type(t):
115115
param_type += "|list|tuple"
116116
sig += f"{param_name}: {param_type},"
117117

118+
if str(type(attr)) == "<class '_cffi_backend._CDataBase'>":
119+
sig += "*args: Any"
120+
118121
return_type = ffi.typeof(attr).result.cname
119122

120123
description = attr.__doc__
@@ -128,10 +131,6 @@ def ctype_to_python_type(t):
128131
print(f' """{description}."""')
129132
print(f' ...')
130133

131-
elif str(type(attr)) == "<class '_cffi_backend._CDataBase'>":
132-
return_type = ffi.typeof(attr).result.cname
133-
print(
134-
f'def {uname}(*args) -> {ctype_to_python_type(return_type)}:\n """VARARG FUNCTION - MAY NOT BE SUPPORTED BY CFFI"""\n ...')
135134
else:
136135
# print("*****", str(type(attr)))
137136
t = str(type(attr))[8:-2] # this isolates the type

create_stub_static.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ class struct: ...
8585

8686
for name, attr in getmembers(rl):
8787
uname = name
88-
if isbuiltin(attr) or str(type(attr)) == "<class '_cffi_backend.__FFIFunctionWrapper'>":
88+
if isbuiltin(attr) or str(type(attr)) == "<class '_cffi_backend.__FFIFunctionWrapper'>" or str(type(attr)) == "<class '_cffi_backend._CDataBase'>":
8989
json_object = known_functions.get(name, {})
9090
sig = ""
9191
for i, arg in enumerate(ffi.typeof(attr).args):
@@ -109,6 +109,9 @@ class struct: ...
109109
param_type += "|list|tuple"
110110
sig += f"{param_name}: {param_type},"
111111

112+
if str(type(attr)) == "<class '_cffi_backend._CDataBase'>":
113+
sig += "*args: Any"
114+
112115
return_type = ffi.typeof(attr).result.cname
113116
description = attr.__doc__
114117

@@ -122,10 +125,6 @@ class struct: ...
122125
print(f' ...')
123126

124127

125-
elif str(type(attr)) == "<class '_cffi_backend._CDataBase'>":
126-
return_type = ffi.typeof(attr).result.cname
127-
print(
128-
f'def {uname}(*args) -> {ctype_to_python_type(return_type)}:\n """VARARG FUNCTION - MAY NOT BE SUPPORTED BY CFFI"""\n ...')
129128
else:
130129
# print("*****", str(type(attr)))
131130
print(f"{name}: {str(type(attr))[8:-2]}") # this isolates the type

docs/pyray.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13945,8 +13945,8 @@ <h2>Examples<a class="headerlink" href="#examples" title="Link to this heading">
1394513945

1394613946
<dl class="py function">
1394713947
<dt class="sig sig-object py" id="pyray.text_format">
13948-
<span class="sig-prename descclassname"><span class="pre">pyray.</span></span><span class="sig-name descname"><span class="pre">text_format</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="headerlink" href="#pyray.text_format" title="Link to this definition"></a></dt>
13949-
<dd><p>VARARG FUNCTION - MAY NOT BE SUPPORTED BY CFFI</p>
13948+
<span class="sig-prename descclassname"><span class="pre">pyray.</span></span><span class="sig-name descname"><span class="pre">text_format</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">text</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="headerlink" href="#pyray.text_format" title="Link to this definition"></a></dt>
13949+
<dd><p>Text formatting with variables (sprintf() style).</p>
1395013950
</dd></dl>
1395113951

1395213952
<dl class="py function">
@@ -14077,8 +14077,8 @@ <h2>Examples<a class="headerlink" href="#examples" title="Link to this heading">
1407714077

1407814078
<dl class="py function">
1407914079
<dt class="sig sig-object py" id="pyray.trace_log">
14080-
<span class="sig-prename descclassname"><span class="pre">pyray.</span></span><span class="sig-name descname"><span class="pre">trace_log</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#pyray.trace_log" title="Link to this definition"></a></dt>
14081-
<dd><p>VARARG FUNCTION - MAY NOT BE SUPPORTED BY CFFI</p>
14080+
<span class="sig-prename descclassname"><span class="pre">pyray.</span></span><span class="sig-name descname"><span class="pre">trace_log</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">logLevel</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">text</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#pyray.trace_log" title="Link to this definition"></a></dt>
14081+
<dd><p>Show trace log messages (LOG_DEBUG, LOG_INFO, LOG_WARNING, LOG_ERROR…).</p>
1408214082
</dd></dl>
1408314083

1408414084
<dl class="py function">

docs/raylib.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11896,8 +11896,8 @@ <h1>C API<a class="headerlink" href="#c-api" title="Link to this heading"></a
1189611896

1189711897
<dl class="py function">
1189811898
<dt class="sig sig-object py" id="raylib.TextFormat">
11899-
<span class="sig-prename descclassname"><span class="pre">raylib.</span></span><span class="sig-name descname"><span class="pre">TextFormat</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bytes</span></span></span><a class="headerlink" href="#raylib.TextFormat" title="Link to this definition"></a></dt>
11900-
<dd><p>VARARG FUNCTION - MAY NOT BE SUPPORTED BY CFFI</p>
11899+
<span class="sig-prename descclassname"><span class="pre">raylib.</span></span><span class="sig-name descname"><span class="pre">TextFormat</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">text</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bytes</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bytes</span></span></span><a class="headerlink" href="#raylib.TextFormat" title="Link to this definition"></a></dt>
11900+
<dd><p>Text formatting with variables (sprintf() style).</p>
1190111901
</dd></dl>
1190211902

1190311903
<dl class="py function">
@@ -12128,8 +12128,8 @@ <h1>C API<a class="headerlink" href="#c-api" title="Link to this heading"></a
1212812128

1212912129
<dl class="py function">
1213012130
<dt class="sig sig-object py" id="raylib.TraceLog">
12131-
<span class="sig-prename descclassname"><span class="pre">raylib.</span></span><span class="sig-name descname"><span class="pre">TraceLog</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#raylib.TraceLog" title="Link to this definition"></a></dt>
12132-
<dd><p>VARARG FUNCTION - MAY NOT BE SUPPORTED BY CFFI</p>
12131+
<span class="sig-prename descclassname"><span class="pre">raylib.</span></span><span class="sig-name descname"><span class="pre">TraceLog</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">logLevel</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">text</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bytes</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#raylib.TraceLog" title="Link to this definition"></a></dt>
12132+
<dd><p>Show trace log messages (LOG_DEBUG, LOG_INFO, LOG_WARNING, LOG_ERROR…).</p>
1213312133
</dd></dl>
1213412134

1213512135
<dl class="py data">

docs/searchindex.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dynamic/raylib/__init__.pyi

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2787,9 +2787,9 @@ def TextCopy(dst: bytes,src: bytes,) -> int:
27872787
def TextFindIndex(text: bytes,search: bytes,) -> int:
27882788
"""Find first text occurrence within a string, -1 if not found."""
27892789
...
2790-
def TextFormat(*args) -> bytes:
2791-
"""VARARG FUNCTION - MAY NOT BE SUPPORTED BY CFFI"""
2792-
...
2790+
def TextFormat(text: bytes,*args: Any) -> bytes:
2791+
"""Text formatting with variables (sprintf() style)."""
2792+
...
27932793
def TextInsert(text: bytes,insert: bytes,position: int,) -> bytes:
27942794
"""Insert text in a defined byte position."""
27952795
...
@@ -2853,9 +2853,9 @@ def ToggleBorderlessWindowed() -> None:
28532853
def ToggleFullscreen() -> None:
28542854
"""Toggle window state: fullscreen/windowed, resizes monitor to match window resolution."""
28552855
...
2856-
def TraceLog(*args) -> None:
2857-
"""VARARG FUNCTION - MAY NOT BE SUPPORTED BY CFFI"""
2858-
...
2856+
def TraceLog(logLevel: int,text: bytes,*args: Any) -> None:
2857+
"""Show trace log messages (LOG_DEBUG, LOG_INFO, LOG_WARNING, LOG_ERROR...)."""
2858+
...
28592859
def UnloadAudioStream(stream: AudioStream|list|tuple,) -> None:
28602860
"""Unload audio stream and free memory."""
28612861
...

pyray/__init__.pyi

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2935,9 +2935,9 @@ def text_copy(dst: str,src: str,) -> int:
29352935
def text_find_index(text: str,search: str,) -> int:
29362936
"""Find first text occurrence within a string, -1 if not found."""
29372937
...
2938-
def text_format(*args) -> str:
2939-
"""VARARG FUNCTION - MAY NOT BE SUPPORTED BY CFFI"""
2940-
...
2938+
def text_format(text: str,*args: Any) -> str:
2939+
"""Text formatting with variables (sprintf() style)."""
2940+
...
29412941
def text_insert(text: str,insert: str,position: int,) -> str:
29422942
"""Insert text in a defined byte position."""
29432943
...
@@ -3001,9 +3001,9 @@ def toggle_borderless_windowed() -> None:
30013001
def toggle_fullscreen() -> None:
30023002
"""Toggle window state: fullscreen/windowed, resizes monitor to match window resolution."""
30033003
...
3004-
def trace_log(*args) -> None:
3005-
"""VARARG FUNCTION - MAY NOT BE SUPPORTED BY CFFI"""
3006-
...
3004+
def trace_log(logLevel: int,text: str,*args: Any) -> None:
3005+
"""Show trace log messages (LOG_DEBUG, LOG_INFO, LOG_WARNING, LOG_ERROR...)."""
3006+
...
30073007
def unload_audio_stream(stream: AudioStream|list|tuple,) -> None:
30083008
"""Unload audio stream and free memory."""
30093009
...

raylib/__init__.pyi

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2787,9 +2787,9 @@ def TextCopy(dst: bytes,src: bytes,) -> int:
27872787
def TextFindIndex(text: bytes,search: bytes,) -> int:
27882788
"""Find first text occurrence within a string, -1 if not found."""
27892789
...
2790-
def TextFormat(*args) -> bytes:
2791-
"""VARARG FUNCTION - MAY NOT BE SUPPORTED BY CFFI"""
2792-
...
2790+
def TextFormat(text: bytes,*args: Any) -> bytes:
2791+
"""Text formatting with variables (sprintf() style)."""
2792+
...
27932793
def TextInsert(text: bytes,insert: bytes,position: int,) -> bytes:
27942794
"""Insert text in a defined byte position."""
27952795
...
@@ -2853,9 +2853,9 @@ def ToggleBorderlessWindowed() -> None:
28532853
def ToggleFullscreen() -> None:
28542854
"""Toggle window state: fullscreen/windowed, resizes monitor to match window resolution."""
28552855
...
2856-
def TraceLog(*args) -> None:
2857-
"""VARARG FUNCTION - MAY NOT BE SUPPORTED BY CFFI"""
2858-
...
2856+
def TraceLog(logLevel: int,text: bytes,*args: Any) -> None:
2857+
"""Show trace log messages (LOG_DEBUG, LOG_INFO, LOG_WARNING, LOG_ERROR...)."""
2858+
...
28592859
def UnloadAudioStream(stream: AudioStream|list|tuple,) -> None:
28602860
"""Unload audio stream and free memory."""
28612861
...

0 commit comments

Comments
 (0)