autoverse-cli 0.6.0__py3-none-any.whl → 0.8.0__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- {autoverse_cli-0.6.0.dist-info → autoverse_cli-0.8.0.dist-info}/METADATA +1 -1
- {autoverse_cli-0.6.0.dist-info → autoverse_cli-0.8.0.dist-info}/RECORD +17 -15
- {autoverse_cli-0.6.0.dist-info → autoverse_cli-0.8.0.dist-info}/WHEEL +1 -1
- avrs/app_version.py +1 -1
- avrs/avrs.py +6 -0
- avrs/requests/code_booz.py +5 -1
- avrs/requests/get_object_config.py +18 -0
- avrs/requests/misc.py +40 -0
- avrs/requests/request.py +1 -1
- avrs/requests/reserve_mv_slot.py +4 -4
- avrs/requests/teleport.py +8 -6
- avrs/requests/vehicle_replay.py +121 -10
- avrs/simconfig.py +15 -1
- avrs/simconfig_util.py +76 -0
- {autoverse_cli-0.6.0.dist-info → autoverse_cli-0.8.0.dist-info}/LICENSE +0 -0
- {autoverse_cli-0.6.0.dist-info → autoverse_cli-0.8.0.dist-info}/entry_points.txt +0 -0
- {autoverse_cli-0.6.0.dist-info → autoverse_cli-0.8.0.dist-info}/top_level.txt +0 -0
@@ -1,37 +1,39 @@
|
|
1
1
|
avrs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
-
avrs/app_version.py,sha256=
|
2
|
+
avrs/app_version.py,sha256=VfRTIcA5zw19bJnPtFiKisskuTewdBFE9HveNWqihT8,855
|
3
3
|
avrs/argparse_help.py,sha256=EoEaohGXZXqJvs1dFEzbo9vh47CYdHdSY2Im2Ps2iFo,945
|
4
|
-
avrs/avrs.py,sha256=
|
4
|
+
avrs/avrs.py,sha256=M1DMvsUirNYZpIsiPH50ZhMwuZVefB4NjErLjkYbFbQ,2915
|
5
5
|
avrs/can_tool.py,sha256=IBoctKobBJ3wCq4ZdtuXuXH4AMEUxazCfYT6YP0Luw8,7161
|
6
6
|
avrs/can_tool_util.py,sha256=G3q21dTGMLc09SDq_RieoW7kSn-kXPkXxPDjavPh4hQ,7710
|
7
7
|
avrs/cfg.py,sha256=kMn08Z4Ms1PAu2-U1QI8weEJeIVEppP4A4_tFfwnjtg,2924
|
8
8
|
avrs/launcher.py,sha256=u7COEMvvkqxeGyW0kd2m6KK4375nWY5ONO4TxKJ2Xt4,7710
|
9
9
|
avrs/launcher_util.py,sha256=y_F2YvIe81l3B1_lCjpoOgkbE4hAr2C9eaPio0es34o,5236
|
10
|
-
avrs/simconfig.py,sha256=
|
11
|
-
avrs/simconfig_util.py,sha256=
|
10
|
+
avrs/simconfig.py,sha256=UZc4FrxVHUkk2e9IglSpuojXkaL_nPrJW7trbEGgOOo,2907
|
11
|
+
avrs/simconfig_util.py,sha256=0LKYr6pS1CAHQq0esIWEEvhAa6-BB5-jQ9mnVBY5eq4,4839
|
12
12
|
avrs/tests.py,sha256=3JeYBjn0tRqHXERDROfzmYuW1KXeCcKur5Bw-EIegto,153
|
13
13
|
avrs/requests/change_camera.py,sha256=twqdE049DHwdjgKFZbindwpK7Oz-ivCjbI8WQj8QsxI,416
|
14
|
-
avrs/requests/code_booz.py,sha256=
|
14
|
+
avrs/requests/code_booz.py,sha256=SXaEAMTqID4lf1o_4Cc1wY9609X-dNcfNa-UZv3FWF4,2471
|
15
15
|
avrs/requests/demo.py,sha256=cbGQJK-OfeFUkQwVzafHgoWP15xoKL-ZgYkQ7moEt2A,872
|
16
16
|
avrs/requests/environment.py,sha256=ORwOBxhXPcatn_W8aY5pgIy4f2paUbqIYii5oE540xA,1305
|
17
17
|
avrs/requests/fault_injection.py,sha256=EkpjPCx-UtrNbAR_vQS1zaGKN49UDCyYOoVcdlP1T0M,5948
|
18
|
+
avrs/requests/get_object_config.py,sha256=Mkwp32lfskQERsqfmAgHi4vf4C0hfjg6Ru8UjyMt3cw,654
|
18
19
|
avrs/requests/list_sim_objects.py,sha256=YWpqHdCHijerPxI5606_KjeFvezcLFN33wO4YOr9G3U,977
|
19
20
|
avrs/requests/log_path.py,sha256=Ur24C9VqPVx78MfpicgQu2uOEe-0dXbGoWF_7dzMtZE,1326
|
21
|
+
avrs/requests/misc.py,sha256=lejEFt5aB6tbfKXHI1DGwP4fsntFIv16NXO23R6Bfhw,1423
|
20
22
|
avrs/requests/move_to_landmark.py,sha256=cLRBKu9XEDsmCoftBJ8JwoBLqzb0IZsxFMBnus4T-kc,702
|
21
23
|
avrs/requests/npc.py,sha256=Y_WovbcLomCCcOLAMMO_DHZtc1crAzWo97qEIGS3SvU,9691
|
22
|
-
avrs/requests/request.py,sha256=
|
23
|
-
avrs/requests/reserve_mv_slot.py,sha256=
|
24
|
+
avrs/requests/request.py,sha256=eUorvMKuKn7OuxjLCty40CX_uE0v1o6xfqsNO5cGvt8,1611
|
25
|
+
avrs/requests/reserve_mv_slot.py,sha256=ejB_RSZBXCpxY7B_2f66Or8twKdMI1gn9nEQgZ2YYEY,3843
|
24
26
|
avrs/requests/reset_to_track.py,sha256=lSd2YavBxDV_hQMhVoi08_TpTFEq7G2MA18xosFYa1g,450
|
25
27
|
avrs/requests/restart.py,sha256=ih5mnWiU34q3-xhOth45CtOUXxKI0PoMDCnFJV0JbwE,415
|
26
28
|
avrs/requests/scenario_control.py,sha256=u-KQx-mdCm6IE_c88a6iEgWUsZZVOayxBo58Ocjg0ZI,1502
|
27
|
-
avrs/requests/teleport.py,sha256=
|
29
|
+
avrs/requests/teleport.py,sha256=fzBmlqaCuV6-R79co__Q8Wpu4ozmEXFh8EGZKs8l8Io,1140
|
28
30
|
avrs/requests/toggle_hud.py,sha256=sV5t5QZc4uvRihPVk8jEKZiQNsyF9tsUwq5b4jjZplc,397
|
29
31
|
avrs/requests/vd.py,sha256=at6oUAGY2h0OxYU6MLOi1gnxyUn6i24vL9DUAj0L880,1600
|
30
32
|
avrs/requests/vehicle_input.py,sha256=R1b1xkRtOBkwyU6OSN4bWVlYsIUroZG0WKbYbc4pEH8,729
|
31
|
-
avrs/requests/vehicle_replay.py,sha256=
|
32
|
-
autoverse_cli-0.
|
33
|
-
autoverse_cli-0.
|
34
|
-
autoverse_cli-0.
|
35
|
-
autoverse_cli-0.
|
36
|
-
autoverse_cli-0.
|
37
|
-
autoverse_cli-0.
|
33
|
+
avrs/requests/vehicle_replay.py,sha256=nCAE21VNyKoeIjjXBGAihgOLO7zYHcu-HWvPZYxdQ2c,11099
|
34
|
+
autoverse_cli-0.8.0.dist-info/LICENSE,sha256=d4eWXho-u18HkBsX4K21uHX_bBb2UXZSrJdsb7Z_JlM,2647
|
35
|
+
autoverse_cli-0.8.0.dist-info/METADATA,sha256=vdZQYRfoWOavizoc0npEuZ90biZxStbIdERPpxmt88E,3341
|
36
|
+
autoverse_cli-0.8.0.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
37
|
+
autoverse_cli-0.8.0.dist-info/entry_points.txt,sha256=Cb9qsUyU5AKkklehCcvtfT0-N3SXbUEqvjze4iEU5kE,40
|
38
|
+
autoverse_cli-0.8.0.dist-info/top_level.txt,sha256=-AJO2e4MCVej6hY0U84pu5NfMeMW5qaAPSMisDT5rmA,5
|
39
|
+
autoverse_cli-0.8.0.dist-info/RECORD,,
|
avrs/app_version.py
CHANGED
avrs/avrs.py
CHANGED
@@ -28,6 +28,8 @@ from avrs.requests.fault_injection import *
|
|
28
28
|
from avrs.requests.change_camera import *
|
29
29
|
from avrs.requests.toggle_hud import *
|
30
30
|
from avrs.simconfig import *
|
31
|
+
from avrs.requests.get_object_config import *
|
32
|
+
from avrs.requests.misc import *
|
31
33
|
|
32
34
|
|
33
35
|
def get_version():
|
@@ -78,6 +80,10 @@ def main():
|
|
78
80
|
AvrsFaultInjectionRequests(sps, cfg)
|
79
81
|
AvrsChangeCameraRequest(sps, cfg)
|
80
82
|
AvrsToggleHudRequest(sps, cfg)
|
83
|
+
AvrsGetObjectConfigRequest(sps, cfg)
|
84
|
+
AvrsGetSimVersionRequest(sps, cfg)
|
85
|
+
AvrsPingRequest(sps, cfg)
|
86
|
+
AvrsConfigureSimLodRequest(sps, cfg)
|
81
87
|
|
82
88
|
if os.environ.get('AVRS_WITH_DEMO', '0') == '1':
|
83
89
|
AvrsDemoRequest(sps, cfg)
|
avrs/requests/code_booz.py
CHANGED
@@ -28,6 +28,9 @@ class AvrsCodeBoozStartLogging(AvrsApiRequest):
|
|
28
28
|
psr.add_argument(
|
29
29
|
'--rate-hz', type=float, default=100.0, help='the rate in hz to log data')
|
30
30
|
|
31
|
+
psr.add_argument(
|
32
|
+
'--csv-only-xyv', action='store_true', help='if true, will only record the x, y and velocity magnitude to csv')
|
33
|
+
|
31
34
|
psr.set_defaults(func=self.send_request)
|
32
35
|
|
33
36
|
def get_request_body(self, args):
|
@@ -35,7 +38,8 @@ class AvrsCodeBoozStartLogging(AvrsApiRequest):
|
|
35
38
|
'Action': 'Start',
|
36
39
|
'FileName': args.out_file,
|
37
40
|
'RateHz': args.rate_hz,
|
38
|
-
'Format': args.format
|
41
|
+
'Format': args.format,
|
42
|
+
'bCsvOnlyXyv': args.csv_only_xyv
|
39
43
|
}
|
40
44
|
|
41
45
|
class AvrsCodeBoozStopLogging(AvrsApiRequest):
|
@@ -0,0 +1,18 @@
|
|
1
|
+
from avrs.requests.request import AvrsApiRequest
|
2
|
+
|
3
|
+
class AvrsGetObjectConfigRequest(AvrsApiRequest):
|
4
|
+
def __init__(self, parser, cfg):
|
5
|
+
AvrsApiRequest.__init__(self, parser, cfg, 'GetObjectConfig', '')
|
6
|
+
psr = parser.add_parser('get-object-config', help='returns the JSON structure of an objects configuration')
|
7
|
+
|
8
|
+
psr.add_argument(
|
9
|
+
'--target',
|
10
|
+
default='ego',
|
11
|
+
help='the simulated object to return config for')
|
12
|
+
|
13
|
+
psr.set_defaults(func=self.send_request)
|
14
|
+
|
15
|
+
def get_request_body(self, args):
|
16
|
+
self.target_object_id = args.target
|
17
|
+
return {
|
18
|
+
}
|
avrs/requests/misc.py
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
from avrs.requests.request import AvrsApiRequest
|
2
|
+
|
3
|
+
class AvrsGetSimVersionRequest(AvrsApiRequest):
|
4
|
+
def __init__(self, parser, cfg):
|
5
|
+
AvrsApiRequest.__init__(self, parser, cfg, 'GetVersion', 0)
|
6
|
+
psr = parser.add_parser('get-sim-version', help='get the version of the currently running simulator')
|
7
|
+
psr.set_defaults(func=self.send_request)
|
8
|
+
|
9
|
+
def get_request_body(self, args):
|
10
|
+
return {
|
11
|
+
}
|
12
|
+
|
13
|
+
class AvrsPingRequest(AvrsApiRequest):
|
14
|
+
def __init__(self, parser, cfg):
|
15
|
+
AvrsApiRequest.__init__(self, parser, cfg, 'GetVersion', 0)
|
16
|
+
psr = parser.add_parser('ping', help='ping the simulator to see if it is running and responsive')
|
17
|
+
psr.set_defaults(func=self.send_ping)
|
18
|
+
|
19
|
+
def send_ping(self, args):
|
20
|
+
try:
|
21
|
+
self.send_http_request(args)
|
22
|
+
except:
|
23
|
+
print('no')
|
24
|
+
|
25
|
+
class AvrsConfigureSimLodRequest(AvrsApiRequest):
|
26
|
+
def __init__(self, parser, cfg):
|
27
|
+
AvrsApiRequest.__init__(self, parser, cfg, 'ConfigureSimLod', 'lodctrl')
|
28
|
+
psr = parser.add_parser('set-lod', help='set the LOD of the sim, possibly reducing GPU overhead')
|
29
|
+
|
30
|
+
psr.add_argument(
|
31
|
+
'lod',
|
32
|
+
type=int,
|
33
|
+
help='the new lod level to set. 0 is max lod, 1 is min lod')
|
34
|
+
|
35
|
+
psr.set_defaults(func=self.send_request)
|
36
|
+
|
37
|
+
def get_request_body(self, args):
|
38
|
+
return {
|
39
|
+
'newLod': args.lod
|
40
|
+
}
|
avrs/requests/request.py
CHANGED
avrs/requests/reserve_mv_slot.py
CHANGED
@@ -44,7 +44,7 @@ class ReserveMvSlot(AvrsApiRequest):
|
|
44
44
|
|
45
45
|
psr.add_argument(
|
46
46
|
'--badenia-can-name',
|
47
|
-
default='
|
47
|
+
default='vcan2',
|
48
48
|
help='the name of the CAN interface to use for the bandanania CAN bus on the new vehicle')
|
49
49
|
|
50
50
|
psr.add_argument(
|
@@ -75,9 +75,9 @@ class ReserveMvSlot(AvrsApiRequest):
|
|
75
75
|
eav_init_pld = {
|
76
76
|
'TypeName': 'Eav24Initializer',
|
77
77
|
'Body': {
|
78
|
-
'
|
79
|
-
'
|
80
|
-
'
|
78
|
+
'bsuCanName': args.bsu_can_name,
|
79
|
+
'kistlerCanNam': args.kistler_can_name,
|
80
|
+
'badeniaCanName': args.badenia_can_name,
|
81
81
|
'bHudEnabled': not args.disable_hud,
|
82
82
|
'bEnableLidar': args.enable_lidar,
|
83
83
|
'bEnableCameraSensor': args.enable_camera_sensor
|
avrs/requests/teleport.py
CHANGED
@@ -4,10 +4,11 @@ class Teleport(AvrsApiRequest):
|
|
4
4
|
def __init__(self, parser, cfg):
|
5
5
|
AvrsApiRequest.__init__(self, parser, cfg, 'Teleport', "Ego")
|
6
6
|
psr = parser.add_parser('teleport', help='Teleports the car to the given x,y,z in either enu or lla.')
|
7
|
-
psr.add_argument('x', type=float, help='new x position')
|
8
|
-
psr.add_argument('y', type=float, help='new y position')
|
9
|
-
psr.add_argument('z', type=float, help='new z position')
|
10
|
-
|
7
|
+
psr.add_argument('x', type=float, help='new x position (NED meters) or latitude (if frame is set to lla)')
|
8
|
+
psr.add_argument('y', type=float, help='new y position (NED meters) or longitude (if frame is set to lla)')
|
9
|
+
psr.add_argument('z', type=float, help='new z position (NED meters) or altitude (if frame is set to lla)')
|
10
|
+
psr.add_argument('--yaw', type=float, default=0.0, help='the yaw in degrees (0 north, + CW) to apply post teleport')
|
11
|
+
psr.add_argument('--frame', choices=['lla', 'ned'], default='ned', help='LLA or NED coordinate system.')
|
11
12
|
psr.set_defaults(func=self.send_request)
|
12
13
|
|
13
14
|
|
@@ -15,6 +16,7 @@ class Teleport(AvrsApiRequest):
|
|
15
16
|
return {
|
16
17
|
"X": args.x,
|
17
18
|
"Y": args.y,
|
18
|
-
"Z": args.z
|
19
|
-
|
19
|
+
"Z": args.z,
|
20
|
+
"yaw": args.yaw,
|
21
|
+
"NavFrame": args.frame
|
20
22
|
}
|
avrs/requests/vehicle_replay.py
CHANGED
@@ -79,6 +79,21 @@ class SpawnReplayVehicle(AvrsApiRequest):
|
|
79
79
|
default=1,
|
80
80
|
help='the number of npcs to spawn (only works with automatic name)')
|
81
81
|
|
82
|
+
psr.add_argument(
|
83
|
+
'--enable-front-lidar',
|
84
|
+
action='store_true',
|
85
|
+
help='if set, will enable the front lidar on the replay vehicle')
|
86
|
+
|
87
|
+
psr.add_argument(
|
88
|
+
'--enable-left-lidar',
|
89
|
+
action='store_true',
|
90
|
+
help='if set, will enable the left lidar on the replay vehicle')
|
91
|
+
|
92
|
+
psr.add_argument(
|
93
|
+
'--enable-right-lidar',
|
94
|
+
action='store_true',
|
95
|
+
help='if set, will enable the right lidar on the replay vehicle')
|
96
|
+
|
82
97
|
# psr.add_argument(
|
83
98
|
# '--enable-sensors',
|
84
99
|
# type=bool,
|
@@ -119,32 +134,128 @@ class SpawnReplayVehicle(AvrsApiRequest):
|
|
119
134
|
"bEnableKistlerCan": False,
|
120
135
|
"bEnableBadeniaCan": False,
|
121
136
|
"bHudEnabled": False,
|
122
|
-
"bLidarEnabled":
|
137
|
+
"bLidarEnabled": True,
|
123
138
|
"bCameraEnabled": False,
|
124
139
|
"bPublishInputs": False,
|
125
140
|
"bPublishGroundTruth": False
|
126
141
|
}
|
127
142
|
|
143
|
+
lidar_front_pld = {
|
144
|
+
'componentConfig': {
|
145
|
+
'instanceName': 'lidar_front'
|
146
|
+
},
|
147
|
+
'sensorDesc': {
|
148
|
+
'frame': 'lidar_front',
|
149
|
+
'leverarm': {
|
150
|
+
'translation': {
|
151
|
+
'x': 85,
|
152
|
+
'y': 0,
|
153
|
+
'z': 73
|
154
|
+
},
|
155
|
+
'translationUnits': 'centimeters',
|
156
|
+
'rotation': {
|
157
|
+
'pitch': 0,
|
158
|
+
'yaw': 0,
|
159
|
+
'roll': 0
|
160
|
+
},
|
161
|
+
'rotationUnits': 'degrees'
|
162
|
+
},
|
163
|
+
'dataStream': {
|
164
|
+
'streamName': 'lidar_front/points',
|
165
|
+
'rateHz': 15
|
166
|
+
}
|
167
|
+
}
|
168
|
+
}
|
169
|
+
|
170
|
+
lidar_left_pld = {
|
171
|
+
'componentConfig': {
|
172
|
+
'instanceName': 'lidar_left'
|
173
|
+
},
|
174
|
+
'sensorDesc': {
|
175
|
+
'frame': 'lidar_left',
|
176
|
+
'leverarm': {
|
177
|
+
'translation': {
|
178
|
+
'x': 15,
|
179
|
+
'y': -20,
|
180
|
+
'z': 82
|
181
|
+
},
|
182
|
+
'translationUnits': 'centimeters',
|
183
|
+
'rotation': {
|
184
|
+
'pitch': 0,
|
185
|
+
'yaw': 240,
|
186
|
+
'roll': 0
|
187
|
+
},
|
188
|
+
'rotationUnits': 'degrees'
|
189
|
+
},
|
190
|
+
'dataStream': {
|
191
|
+
'streamName': 'lidar_left/points',
|
192
|
+
'rateHz': 15
|
193
|
+
}
|
194
|
+
}
|
195
|
+
}
|
196
|
+
|
197
|
+
lidar_right_pld = {
|
198
|
+
'componentConfig': {
|
199
|
+
'instanceName': 'lidar_right'
|
200
|
+
},
|
201
|
+
'sensorDesc': {
|
202
|
+
'frame': 'lidar_right',
|
203
|
+
'leverarm': {
|
204
|
+
'translation': {
|
205
|
+
'x': 15,
|
206
|
+
'y': 20,
|
207
|
+
'z': 82
|
208
|
+
},
|
209
|
+
'translationUnits': 'centimeters',
|
210
|
+
'rotation': {
|
211
|
+
'pitch': 0,
|
212
|
+
'yaw': 120,
|
213
|
+
'roll': 0
|
214
|
+
},
|
215
|
+
'rotationUnits': 'degrees'
|
216
|
+
},
|
217
|
+
'dataStream': {
|
218
|
+
'streamName': 'lidar_right/points',
|
219
|
+
'rateHz': 15
|
220
|
+
}
|
221
|
+
}
|
222
|
+
}
|
223
|
+
|
128
224
|
plds = [
|
129
225
|
{
|
130
|
-
'
|
131
|
-
'
|
226
|
+
'typeName': 'WheeledVehicleReplayIpd',
|
227
|
+
'body': replay_ipd
|
228
|
+
},
|
229
|
+
{
|
230
|
+
'typeName': 'Eav24Initializer',
|
231
|
+
'body': eav_init_pld
|
232
|
+
},
|
233
|
+
{
|
234
|
+
'typeName': 'GenericLidarIpd',
|
235
|
+
'bEnabled': args.enable_front_lidar,
|
236
|
+
'body': lidar_front_pld
|
237
|
+
},
|
238
|
+
{
|
239
|
+
'typeName': 'GenericLidarIpd',
|
240
|
+
'bEnabled': args.enable_left_lidar,
|
241
|
+
'body': lidar_left_pld
|
132
242
|
},
|
133
243
|
{
|
134
|
-
'
|
135
|
-
'
|
244
|
+
'typeName': 'GenericLidarIpd',
|
245
|
+
'bEnabled': args.enable_right_lidar,
|
246
|
+
'body': lidar_right_pld
|
136
247
|
}
|
137
248
|
]
|
138
249
|
|
139
250
|
if args.with_view_cameras:
|
140
251
|
plds.append(
|
141
252
|
{
|
142
|
-
'
|
143
|
-
'
|
144
|
-
'
|
253
|
+
'typeName': 'InitializerTemplates',
|
254
|
+
'body': {
|
255
|
+
'templates': [
|
145
256
|
{
|
146
|
-
'
|
147
|
-
'
|
257
|
+
'payloadType': 'SimViewTargetIpd',
|
258
|
+
'payloadSpec': 'DefaultCarCams'
|
148
259
|
}
|
149
260
|
]
|
150
261
|
}
|
avrs/simconfig.py
CHANGED
@@ -15,6 +15,17 @@ class AvrsSimConfig:
|
|
15
15
|
|
16
16
|
sps = sim_config_parser.add_subparsers(required=True, help='sim-config options')
|
17
17
|
|
18
|
+
compare_parser = sps.add_parser(
|
19
|
+
'compare-configs',
|
20
|
+
help='compare two sets of configuration files')
|
21
|
+
compare_parser.add_argument(
|
22
|
+
'a',
|
23
|
+
help='the path to the first set of config files')
|
24
|
+
compare_parser.add_argument(
|
25
|
+
'b',
|
26
|
+
help='the path to the second set of config files')
|
27
|
+
compare_parser.set_defaults(func=self.compare_configs)
|
28
|
+
|
18
29
|
apply_preset_parser = sps.add_parser(
|
19
30
|
'apply-preset',
|
20
31
|
help='apply a preset configuration for a certain use-case')
|
@@ -58,4 +69,7 @@ the target
|
|
58
69
|
return
|
59
70
|
|
60
71
|
print('applying preset {} to sim install at {}'.format(args.preset_name, sim_path))
|
61
|
-
apply_simconfig_preset(get_sim_saved_dir(sim_path), args.preset_name)
|
72
|
+
apply_simconfig_preset(get_sim_saved_dir(sim_path), args.preset_name)
|
73
|
+
|
74
|
+
def compare_configs(self, args):
|
75
|
+
compare_simconfig_defaults(args.a, args.b)
|
avrs/simconfig_util.py
CHANGED
@@ -28,6 +28,82 @@ class SimConfigFiles():
|
|
28
28
|
with open(path, 'w', encoding='utf-8') as f:
|
29
29
|
json.dump(self.files[name], f, ensure_ascii=False, indent=4)
|
30
30
|
|
31
|
+
def compare_simconfig_defaults(sim_saved_dir, new_defaults_dir):
|
32
|
+
old_cfg_files = SimConfigFiles(sim_saved_dir)
|
33
|
+
new_cfg_files = SimConfigFiles(new_defaults_dir)
|
34
|
+
|
35
|
+
ok, status = old_cfg_files.valdiate()
|
36
|
+
if not ok:
|
37
|
+
print(status)
|
38
|
+
return
|
39
|
+
ok, status = new_cfg_files.valdiate()
|
40
|
+
if not ok:
|
41
|
+
print(status)
|
42
|
+
return
|
43
|
+
|
44
|
+
print('comparing config files at {} with those at {}'.format(
|
45
|
+
sim_saved_dir, new_defaults_dir))
|
46
|
+
|
47
|
+
out_cpr = {}
|
48
|
+
compare_dicts(old_cfg_files.files['main'], new_cfg_files.files['main'], 'main', out_cpr)
|
49
|
+
|
50
|
+
#print('{}'.format(out_cpr))
|
51
|
+
print_simconfig_compare(out_cpr['main'])
|
52
|
+
|
53
|
+
def print_simconfig_compare(cpr):
|
54
|
+
for i in cpr['only_a']:
|
55
|
+
print('{} in a ({}) but not b'.format(i[0], i[1]))
|
56
|
+
for i in cpr['only_b']:
|
57
|
+
print('{} in b ({}) but not a'.format(i[0], i[1]))
|
58
|
+
for i in cpr['type_mismatch']:
|
59
|
+
print('{} ({}) does not match type {} ({})'.format(i[0], i[1], i[0], i[2]))
|
60
|
+
for i in cpr['value_mismatch']:
|
61
|
+
print('{} ({}) value does not match ({})'.format(i[0], i[1], i[2]))
|
62
|
+
|
63
|
+
for key, value in cpr['sub'].items():
|
64
|
+
print_simconfig_compare(value)
|
65
|
+
|
66
|
+
def compare_dicts(a, b, parent_key, out_checks):
|
67
|
+
|
68
|
+
only_a = []
|
69
|
+
only_b = []
|
70
|
+
type_mismatch = []
|
71
|
+
value_mismatch = []
|
72
|
+
|
73
|
+
out_checks[parent_key] = {}
|
74
|
+
out_checks[parent_key]['sub'] = {}
|
75
|
+
|
76
|
+
|
77
|
+
for key, value in a.items():
|
78
|
+
key_chain = '{}.{}'.format(parent_key, key)
|
79
|
+
if key not in b:
|
80
|
+
only_a.append((key_chain, value))
|
81
|
+
else:
|
82
|
+
if type(value) != type(b[key]):
|
83
|
+
type_mismatch.append((key_chain, type(value), type(b[key])))
|
84
|
+
elif isinstance(value, dict):
|
85
|
+
compare_dicts(value, b[key], key_chain, out_checks[parent_key]['sub'])
|
86
|
+
elif value != b[key]:
|
87
|
+
value_mismatch.append((key_chain, value, b[key]))
|
88
|
+
|
89
|
+
for key, value in b.items():
|
90
|
+
key_chain = '{}.{}'.format(parent_key, key)
|
91
|
+
if key not in a:
|
92
|
+
only_b.append((key_chain, value))
|
93
|
+
|
94
|
+
out_checks[parent_key]['only_a'] = only_a
|
95
|
+
out_checks[parent_key]['only_b'] = only_b
|
96
|
+
out_checks[parent_key]['type_mismatch'] = type_mismatch
|
97
|
+
out_checks[parent_key]['value_mismatch'] = value_mismatch
|
98
|
+
|
99
|
+
#print('only a \n {} \n\n'.format(only_a))
|
100
|
+
#print('only b \n {} \n\n'.format(only_b))
|
101
|
+
#print('type mismatch \n {} \n\n'.format(type_mismatch))
|
102
|
+
#print('value mismatch \n {} \n\n'.format(value_mismatch))
|
103
|
+
#print('sub_checks')
|
104
|
+
|
105
|
+
|
106
|
+
|
31
107
|
def apply_simconfig_preset(sim_saved_dir, preset_name):
|
32
108
|
cfg_files = SimConfigFiles(sim_saved_dir)
|
33
109
|
ok, status = cfg_files.valdiate()
|
File without changes
|
File without changes
|
File without changes
|