Update .gitignore and .vscode/settings.json when generating pyi files.

Also check in some missing pyis.
This commit is contained in:
Tom Rothamel
2025-01-04 23:33:41 -05:00
parent 6a828f6ade
commit cedcc36418
6 changed files with 171 additions and 19 deletions
+41 -4
View File
@@ -13,12 +13,8 @@ ehthumbs_vista.db
# Python related files.
*.pyc
*.pyo
*.pyi
*.egg-info
!/renpy/cslots.pyi
!/renpy/astsupport.pyi
# Editor/tool files.
*~
*.bak
@@ -137,3 +133,44 @@ CubismSdkForNative-4-*.zip
/cg
/.vscode/launch.json
/.vscode/tasks.json
# Pyi Files (generated by scripts/generate_pyi.py)
renpy/audio/filter.pyi
renpy/audio/renpysound.pyi
renpy/display/accelerator.pyi
renpy/display/matrix.pyi
renpy/display/quaternion.pyi
renpy/display/render.pyi
renpy/encryption.pyi
renpy/gl2/gl2draw.pyi
renpy/gl2/gl2mesh.pyi
renpy/gl2/gl2mesh2.pyi
renpy/gl2/gl2mesh3.pyi
renpy/gl2/gl2model.pyi
renpy/gl2/gl2polygon.pyi
renpy/gl2/gl2shader.pyi
renpy/gl2/gl2texture.pyi
renpy/gl2/live2dmodel.pyi
renpy/lexersupport.pyi
renpy/pydict.pyi
renpy/style.pyi
renpy/style.pyi
renpy/styledata/style_activate_functions.pyi
renpy/styledata/style_functions.pyi
renpy/styledata/style_hover_functions.pyi
renpy/styledata/style_idle_functions.pyi
renpy/styledata/style_insensitive_functions.pyi
renpy/styledata/style_selected_activate_functions.pyi
renpy/styledata/style_selected_functions.pyi
renpy/styledata/style_selected_hover_functions.pyi
renpy/styledata/style_selected_idle_functions.pyi
renpy/styledata/style_selected_insensitive_functions.pyi
renpy/styledata/styleclass.pyi
renpy/styledata/stylesets.pyi
renpy/text/ftfont.pyi
renpy/text/hbfont.pyi
renpy/text/textsupport.pyi
renpy/text/texwrap.pyi
renpy/uguu/gl.pyi
renpy/uguu/uguu.pyi
+51 -15
View File
@@ -1,16 +1,16 @@
{
"files.watcherExclude": {
"**/renpy/0old/**" : true,
"**/renpy/atom/**" : true,
"**/renpy/cubism/**" : true,
"**/renpy/dists/**" : true,
"**/renpy/dl/**" : true,
"**/renpy/doc/**" : true,
"**/renpy/doc-web/**" : true,
"**/renpy/jedit/**" : true,
"**/renpy/renpy*.app/**" : true,
"**/renpy/tmp/**" : true,
"**/renpy/web/**" : true,
"**/renpy/0old/**": true,
"**/renpy/atom/**": true,
"**/renpy/cubism/**": true,
"**/renpy/dists/**": true,
"**/renpy/dl/**": true,
"**/renpy/doc/**": true,
"**/renpy/doc-web/**": true,
"**/renpy/jedit/**": true,
"**/renpy/renpy*.app/**": true,
"**/renpy/tmp/**": true,
"**/renpy/web/**": true
},
"files.exclude": {
"0old": true,
@@ -41,9 +41,45 @@
"web3": true,
"**/*.rpa": true,
"**/*.rpymc": true,
"**/cache/": true
"**/cache/": true,
"renpy/audio/filter.pyi": true,
"renpy/audio/renpysound.pyi": true,
"renpy/display/accelerator.pyi": true,
"renpy/display/matrix.pyi": true,
"renpy/display/quaternion.pyi": true,
"renpy/display/render.pyi": true,
"renpy/encryption.pyi": true,
"renpy/gl2/gl2draw.pyi": true,
"renpy/gl2/gl2mesh.pyi": true,
"renpy/gl2/gl2mesh2.pyi": true,
"renpy/gl2/gl2mesh3.pyi": true,
"renpy/gl2/gl2model.pyi": true,
"renpy/gl2/gl2polygon.pyi": true,
"renpy/gl2/gl2shader.pyi": true,
"renpy/gl2/gl2texture.pyi": true,
"renpy/gl2/live2dmodel.pyi": true,
"renpy/lexersupport.pyi": true,
"renpy/pydict.pyi": true,
"renpy/style.pyi": true,
"renpy/styledata/style_activate_functions.pyi": true,
"renpy/styledata/style_functions.pyi": true,
"renpy/styledata/style_hover_functions.pyi": true,
"renpy/styledata/style_idle_functions.pyi": true,
"renpy/styledata/style_insensitive_functions.pyi": true,
"renpy/styledata/style_selected_activate_functions.pyi": true,
"renpy/styledata/style_selected_functions.pyi": true,
"renpy/styledata/style_selected_hover_functions.pyi": true,
"renpy/styledata/style_selected_idle_functions.pyi": true,
"renpy/styledata/style_selected_insensitive_functions.pyi": true,
"renpy/styledata/styleclass.pyi": true,
"renpy/styledata/stylesets.pyi": true,
"renpy/text/ftfont.pyi": true,
"renpy/text/hbfont.pyi": true,
"renpy/text/textsupport.pyi": true,
"renpy/text/texwrap.pyi": true,
"renpy/uguu/gl.pyi": true,
"renpy/uguu/uguu.pyi": true
},
"python.languageServer": "Pylance",
"python.analysis.typeCheckingMode": "basic",
"python.analysis.diagnosticMode": "workspace",
@@ -244,5 +280,5 @@
}
}
]
},
}
}
}
+52
View File
@@ -11,6 +11,7 @@ import pathlib
import textwrap
import inspect
import types
import json
ROOT = pathlib.Path(__file__).parent.parent.absolute()
sys.path.insert(0, str(ROOT))
@@ -28,6 +29,8 @@ class FakeScript:
renpy.game.script = FakeScript()
generated_files = [ ]
def python_signature(o):
"""
Given a callabale object, try to return a python-style type signature.
@@ -270,6 +273,8 @@ def generate_module(module : types.ModuleType, package : bool):
generate_namespace(f, "", module)
generated_files.append(fn)
def is_extension(m : types.ModuleType):
"""
@@ -307,9 +312,49 @@ def should_generate(name, m : Any):
return False
def manage_gitignore():
gitignore = ROOT / ".gitignore"
old_lines = gitignore.read_text().split("\n")
new_lines = [ ]
for l in old_lines:
if l.endswith(".pyi"):
continue
new_lines.append(l)
if l == "# Pyi Files (generated by scripts/generate_pyi.py)":
new_lines.extend(generated_files)
gitignore.write_text("\n".join(new_lines))
def manage_vscode():
settings = ROOT / ".vscode" / "settings.json"
with open(settings) as f:
j = json.load(f)
files_exclude = j["files.exclude"]
files_exclude = { k : v for k, v in files_exclude.items() if not k.endswith(".pyi") }
for i in generated_files:
files_exclude[str(i)] = True
j["files.exclude"] = files_exclude
with open(settings, "w") as f:
json.dump(j, f, indent=4)
def main():
global generated_files
packages = set()
for name in tuple(sys.modules):
@@ -323,6 +368,13 @@ def main():
generate_module(v, k in packages)
generated_files.sort()
generated_files = [ str(i.relative_to(ROOT)) for i in generated_files ]
generated_files = [ i for i in generated_files if i.startswith("renpy/") ]
manage_gitignore()
manage_vscode()
for fn in (ROOT / "scripts" / "pyi").glob("**/*.pyi"):
dfn = ROOT / "typings" / fn.relative_to(ROOT / "scripts" / "pyi")
text = fn.read_text()
+17
View File
@@ -0,0 +1,17 @@
from typing import Any
import android.apk
expansion = android.apk.APK
def init(): ...
activity : Any
def vibrate(s) -> None:...
def get_dpi() -> int: ...
def open_url(url : str) -> None: ...
def wakelock(active : bool) -> None: ...
+7
View File
@@ -0,0 +1,7 @@
def run_script(s) -> None: ...
def run_script_int(s) -> int: ...
def run_script_string(s) -> str: ...
def sleep(n : float) -> None: ...
def syncfs() -> None: ...
+3
View File
@@ -0,0 +1,3 @@
from typing import Any
def autoclass(name : str) -> Any: ...