Skip to content

Commit 053f132

Browse files
authored
Modified getBaseClassMethods function to use the class data from the JSON instead of hard coding. (#171)
* In python.ts, added constants for blocks_base_classes module and class names. In methods_category.ts, use the constants instead of hardcoding the class names. In generator_context.ts, added getBaseClassName function which returns the full name of the base class. Removed getClassParent function. In extended_python_generator.ts: Use constants for the OpMode class name and blocks_base_classes module. Modified addImport function to return the simple name if it generates a "from blocks_base_classes import" style import. Modified getBaseClassMethods function to use the class data from the JSON instead of hard coding. Updated the json generator so that the submodules within blocks_base_classes are just reported as blocks_base_classes. * In common_storage.ts, renamed ROBOT_CLASS_NAME to CLASS_NAME_ROBOT.
1 parent 7df5010 commit 053f132

File tree

8 files changed

+99
-83
lines changed

8 files changed

+99
-83
lines changed

python_tools/json_util.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,10 @@
6262

6363

6464
_DICT_FULL_MODULE_NAME_TO_MODULE_NAME = {
65+
'blocks_base_classes.opmode': 'blocks_base_classes',
66+
'blocks_base_classes.mechanism': 'blocks_base_classes',
67+
'blocks_base_classes.robot_base': 'blocks_base_classes',
68+
6569
'hal._wpiHal': 'hal',
6670
'hal.simulation._simulation': 'hal.simulation',
6771

python_tools/python_util.py

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -139,15 +139,6 @@ def processSignature(signature_line: str) -> tuple[str, list[str], list[str], li
139139

140140

141141
def ignoreMember(parent, key: str, member):
142-
"""
143-
if inspect.ismodule(parent):
144-
if hasattr(parent, '__all__'):
145-
if key not in parent.__all__:
146-
return True
147-
else:
148-
return True
149-
"""
150-
151142
if inspect.ismodule(member):
152143
# Member is a module.
153144
if not inspect.ismodule(parent):

src/blocks/utils/generated/server_python_scripts.json

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22
"aliases": {},
33
"classes": [
44
{
5-
"className": "blocks_base_classes.mechanism.Mechanism",
5+
"className": "blocks_base_classes.Mechanism",
66
"classVariables": [],
77
"constructors": [
88
{
99
"args": [],
10-
"declaringClassName": "blocks_base_classes.mechanism.Mechanism",
10+
"declaringClassName": "blocks_base_classes.Mechanism",
1111
"functionName": "__init__",
12-
"returnType": "blocks_base_classes.mechanism.Mechanism",
12+
"returnType": "blocks_base_classes.Mechanism",
1313
"tooltip": ""
1414
}
1515
],
@@ -20,10 +20,10 @@
2020
{
2121
"defaultValue": "",
2222
"name": "self",
23-
"type": "blocks_base_classes.mechanism.Mechanism"
23+
"type": "blocks_base_classes.Mechanism"
2424
}
2525
],
26-
"declaringClassName": "blocks_base_classes.mechanism.Mechanism",
26+
"declaringClassName": "blocks_base_classes.Mechanism",
2727
"functionName": "start",
2828
"returnType": "None",
2929
"tooltip": ""
@@ -33,10 +33,10 @@
3333
{
3434
"defaultValue": "",
3535
"name": "self",
36-
"type": "blocks_base_classes.mechanism.Mechanism"
36+
"type": "blocks_base_classes.Mechanism"
3737
}
3838
],
39-
"declaringClassName": "blocks_base_classes.mechanism.Mechanism",
39+
"declaringClassName": "blocks_base_classes.Mechanism",
4040
"functionName": "stop",
4141
"returnType": "None",
4242
"tooltip": ""
@@ -46,34 +46,34 @@
4646
{
4747
"defaultValue": "",
4848
"name": "self",
49-
"type": "blocks_base_classes.mechanism.Mechanism"
49+
"type": "blocks_base_classes.Mechanism"
5050
}
5151
],
52-
"declaringClassName": "blocks_base_classes.mechanism.Mechanism",
52+
"declaringClassName": "blocks_base_classes.Mechanism",
5353
"functionName": "update",
5454
"returnType": "None",
5555
"tooltip": ""
5656
}
5757
],
5858
"instanceVariables": [],
59-
"moduleName": "blocks_base_classes.mechanism",
59+
"moduleName": "blocks_base_classes",
6060
"staticMethods": []
6161
},
6262
{
63-
"className": "blocks_base_classes.opmode.OpMode",
63+
"className": "blocks_base_classes.OpMode",
6464
"classVariables": [],
6565
"constructors": [
6666
{
6767
"args": [
6868
{
6969
"defaultValue": "",
7070
"name": "robot",
71-
"type": "blocks_base_classes.robot_base.RobotBase"
71+
"type": "blocks_base_classes.RobotBase"
7272
}
7373
],
74-
"declaringClassName": "blocks_base_classes.opmode.OpMode",
74+
"declaringClassName": "blocks_base_classes.OpMode",
7575
"functionName": "__init__",
76-
"returnType": "blocks_base_classes.opmode.OpMode",
76+
"returnType": "blocks_base_classes.OpMode",
7777
"tooltip": ""
7878
}
7979
],
@@ -84,10 +84,10 @@
8484
{
8585
"defaultValue": "",
8686
"name": "self",
87-
"type": "blocks_base_classes.opmode.OpMode"
87+
"type": "blocks_base_classes.OpMode"
8888
}
8989
],
90-
"declaringClassName": "blocks_base_classes.opmode.OpMode",
90+
"declaringClassName": "blocks_base_classes.OpMode",
9191
"functionName": "loop",
9292
"returnType": "None",
9393
"tooltip": ""
@@ -97,10 +97,10 @@
9797
{
9898
"defaultValue": "",
9999
"name": "self",
100-
"type": "blocks_base_classes.opmode.OpMode"
100+
"type": "blocks_base_classes.OpMode"
101101
}
102102
],
103-
"declaringClassName": "blocks_base_classes.opmode.OpMode",
103+
"declaringClassName": "blocks_base_classes.OpMode",
104104
"functionName": "start",
105105
"returnType": "None",
106106
"tooltip": ""
@@ -110,28 +110,28 @@
110110
{
111111
"defaultValue": "",
112112
"name": "self",
113-
"type": "blocks_base_classes.opmode.OpMode"
113+
"type": "blocks_base_classes.OpMode"
114114
}
115115
],
116-
"declaringClassName": "blocks_base_classes.opmode.OpMode",
116+
"declaringClassName": "blocks_base_classes.OpMode",
117117
"functionName": "stop",
118118
"returnType": "None",
119119
"tooltip": ""
120120
}
121121
],
122122
"instanceVariables": [],
123-
"moduleName": "blocks_base_classes.opmode",
123+
"moduleName": "blocks_base_classes",
124124
"staticMethods": []
125125
},
126126
{
127-
"className": "blocks_base_classes.robot_base.RobotBase",
127+
"className": "blocks_base_classes.RobotBase",
128128
"classVariables": [],
129129
"constructors": [
130130
{
131131
"args": [],
132-
"declaringClassName": "blocks_base_classes.robot_base.RobotBase",
132+
"declaringClassName": "blocks_base_classes.RobotBase",
133133
"functionName": "__init__",
134-
"returnType": "blocks_base_classes.robot_base.RobotBase",
134+
"returnType": "blocks_base_classes.RobotBase",
135135
"tooltip": ""
136136
}
137137
],
@@ -142,10 +142,10 @@
142142
{
143143
"defaultValue": "",
144144
"name": "self",
145-
"type": "blocks_base_classes.robot_base.RobotBase"
145+
"type": "blocks_base_classes.RobotBase"
146146
}
147147
],
148-
"declaringClassName": "blocks_base_classes.robot_base.RobotBase",
148+
"declaringClassName": "blocks_base_classes.RobotBase",
149149
"functionName": "start",
150150
"returnType": "None",
151151
"tooltip": ""
@@ -155,10 +155,10 @@
155155
{
156156
"defaultValue": "",
157157
"name": "self",
158-
"type": "blocks_base_classes.robot_base.RobotBase"
158+
"type": "blocks_base_classes.RobotBase"
159159
}
160160
],
161-
"declaringClassName": "blocks_base_classes.robot_base.RobotBase",
161+
"declaringClassName": "blocks_base_classes.RobotBase",
162162
"functionName": "stop",
163163
"returnType": "None",
164164
"tooltip": ""
@@ -168,17 +168,17 @@
168168
{
169169
"defaultValue": "",
170170
"name": "self",
171-
"type": "blocks_base_classes.robot_base.RobotBase"
171+
"type": "blocks_base_classes.RobotBase"
172172
}
173173
],
174-
"declaringClassName": "blocks_base_classes.robot_base.RobotBase",
174+
"declaringClassName": "blocks_base_classes.RobotBase",
175175
"functionName": "update",
176176
"returnType": "None",
177177
"tooltip": ""
178178
}
179179
],
180180
"instanceVariables": [],
181-
"moduleName": "blocks_base_classes.robot_base",
181+
"moduleName": "blocks_base_classes",
182182
"staticMethods": []
183183
}
184184
],
@@ -192,19 +192,19 @@
192192
{
193193
"enums": [],
194194
"functions": [],
195-
"moduleName": "blocks_base_classes.mechanism",
195+
"moduleName": "blocks_base_classes",
196196
"moduleVariables": []
197197
},
198198
{
199199
"enums": [],
200200
"functions": [],
201-
"moduleName": "blocks_base_classes.opmode",
201+
"moduleName": "blocks_base_classes",
202202
"moduleVariables": []
203203
},
204204
{
205205
"enums": [],
206206
"functions": [],
207-
"moduleName": "blocks_base_classes.robot_base",
207+
"moduleName": "blocks_base_classes",
208208
"moduleVariables": []
209209
}
210210
],

src/blocks/utils/python.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,12 @@ import * as SetPythonVariable from "../mrc_set_python_variable";
3131

3232
// Utilities related to blocks for python modules and classes, including those from RobotPy, external samples, etc.
3333

34+
export const MODULE_NAME_BLOCKS_BASE_CLASSES = 'blocks_base_classes';
35+
export const CLASS_NAME_ROBOT_BASE = MODULE_NAME_BLOCKS_BASE_CLASSES + '.RobotBase';
36+
export const CLASS_NAME_OPMODE = MODULE_NAME_BLOCKS_BASE_CLASSES + '.OpMode';
37+
export const CLASS_NAME_MECHANISM = MODULE_NAME_BLOCKS_BASE_CLASSES + '.Mechanism';
38+
39+
3440
export const robotPyData = generatedRobotPyData as PythonData;
3541
const externalSamplesData = generatedExternalSamplesData as PythonData
3642
const serverPythonScripts = generatedServerPythonScripts as PythonData;

0 commit comments

Comments
 (0)