-
Notifications
You must be signed in to change notification settings - Fork 3
/
freecad_stubgen.py
114 lines (103 loc) · 2.3 KB
/
freecad_stubgen.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
# coding: utf8
"""This module generate freecad stubs using mypy.stubgen. See README.md for further info.
© All rights reserved.
Cyril Waechter
See the LICENSE.TXT file for more details.
Author : Cyril Waechter
"""
import sys
import os
from mypy import stubgen
from mypy.stubgen import Options
import FreeCAD
import FreeCADGui
FC_MODULES = (
"FreeCAD",
"FreeCADGui",
"FreeCAD.Base",
"FreeCAD.Console",
"FreeCAD.Units",
"__FreeCADBase__",
"__FreeCADConsole__",
"__Translate__",
"AddonManager",
"DraftUtils",
"DraftVecUtils",
"Drawing",
"DrawingGui",
"Fem",
"FemGui",
"Image",
"ImageGui",
"Import",
"ImportGui",
"Inspection",
"InspectionGui" "Measure",
"Mesh",
"MeshGui",
"MeshPart",
"MeshPartGui",
"Part",
"Part.BRepOffsetAPI",
"Part.Geom2d",
"PartGui",
"PartDesign",
"Path",
"PathGui",
"PathSimulator",
"Points",
"PointsGui",
"QtUnitGui",
"Raytracing",
"RaytracingGui",
"ReverseEngineering",
"ReverseEngineeringGui",
"Robot",
"RobotGui",
"Sketcher",
"SketcherGui",
"Spreadsheet",
"SpreadsheetGui",
"Start",
"StartGui",
"Surface",
"SurfaceGui",
"WorkingPlane",
"TechDraw",
"TechDrawGui",
"Web",
"WebGui",
"Data",
"Data.ImportPointFile",
)
def freecad_options() -> Options:
"""Create options which currently seems to generate the best stubs"""
# Create the output folder if it doesn't already exist.
output_dir = "/home/cyril/git/freecad-stubs/out"
if not os.path.exists(output_dir):
os.makedirs(output_dir)
return Options(
pyversion=sys.version_info[:2],
no_import=False,
doc_dir="",
search_path="",
interpreter="",
ignore_errors=True,
parse_only=False,
include_private=True,
output_dir=output_dir,
modules=list(FC_MODULES),
packages=[],
files=[],
verbose=False,
quiet=True,
export_less=False,
)
def main() -> None:
"""Generate freecad stubs"""
FreeCAD.newDocument()
FreeCADGui.showMainWindow() # Apparently it generate better stubs if Gui is up
options = freecad_options()
stubgen.generate_stubs(options)
if __name__ == "__main__":
main()