autoverse-cli 0.29.1.dev408__py3-none-any.whl → 0.29.1.dev410__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: autoverse-cli
3
- Version: 0.29.1.dev408
3
+ Version: 0.29.1.dev410
4
4
  Summary: The Autoverse CLI
5
5
  Author-email: Dan Kamrath <dan.kamrath@autonomalabs.com>
6
6
  License: # End-User License Agreement (EULA) of the Autonoma AutoVerse CLI
@@ -1,6 +1,6 @@
1
- autoverse_cli-0.29.1.dev408.dist-info/licenses/LICENSE,sha256=d4eWXho-u18HkBsX4K21uHX_bBb2UXZSrJdsb7Z_JlM,2647
1
+ autoverse_cli-0.29.1.dev410.dist-info/licenses/LICENSE,sha256=d4eWXho-u18HkBsX4K21uHX_bBb2UXZSrJdsb7Z_JlM,2647
2
2
  avrs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- avrs/app_version.py,sha256=ZdXZlJob3TXGBHkwL5DrTMvjg6wtqb58C5-Olo1sI98,864
3
+ avrs/app_version.py,sha256=XVzglkP1sgPsZ1joxaoIxLD7DhHtNYgEDohH7v8nKZg,864
4
4
  avrs/argparse_help.py,sha256=EoEaohGXZXqJvs1dFEzbo9vh47CYdHdSY2Im2Ps2iFo,945
5
5
  avrs/avrs.py,sha256=pQHc8KLAD0hCxpBoNbXOgj2Et3qiqxSMKyAXFLwWFjE,5787
6
6
  avrs/can_tool.py,sha256=IBoctKobBJ3wCq4ZdtuXuXH4AMEUxazCfYT6YP0Luw8,7161
@@ -8,11 +8,11 @@ avrs/can_tool_util.py,sha256=G3q21dTGMLc09SDq_RieoW7kSn-kXPkXxPDjavPh4hQ,7710
8
8
  avrs/cfg.py,sha256=kMn08Z4Ms1PAu2-U1QI8weEJeIVEppP4A4_tFfwnjtg,2924
9
9
  avrs/launcher.py,sha256=uk7xG2JTLJv7FJMDo1diwc-zmTvUxXJME9-0ctrZRuk,11352
10
10
  avrs/launcher_util.py,sha256=zXUbJByn9M-ErkNM6DvLCFtUkueYH-R0dehjQj0aYEs,6879
11
- avrs/race_cloud.py,sha256=Ff7Qee_B9V3M_L_uW8BP7A2F1kTiSs7Ne1TAsAC8mzE,22991
11
+ avrs/race_cloud.py,sha256=GydDqbx_1PiqTA-GV3NAavY3O10RF_nJOhCND-EciiE,23011
12
12
  avrs/race_cloud_bridge_can.py,sha256=K3is7GFzWo2KBojr6V65kz138UfkVFXXofVxSAziArY,2888
13
13
  avrs/race_cloud_cfg_util.py,sha256=TF_gsP7c_39MKs1CyzeXkTH-Fwyd8wLkFkMbqQVmdeo,12066
14
14
  avrs/race_cloud_fwd_api.py,sha256=jB4kt6Shu9Pj96WPVjK790PZjucYxmuHjjVKczQfyZI,1620
15
- avrs/race_cloud_util.py,sha256=A8IiVnHmqGTA0qMtOBtGqYXfjeIQNzaPdtnrtvzpq1Y,15484
15
+ avrs/race_cloud_util.py,sha256=PgzXdqEJ8xHkflHBG0uxD8xtaU6MpfDJb56NeL7ZKeU,16003
16
16
  avrs/shell_completion.py,sha256=_IM85ADKQHYNMlTa1_nhnYWsgdOzRQ7tIFHxAT6EWWA,4298
17
17
  avrs/simconfig.py,sha256=UZc4FrxVHUkk2e9IglSpuojXkaL_nPrJW7trbEGgOOo,2907
18
18
  avrs/simconfig_util.py,sha256=ronvXg9Mraz60K99ABBvo_YDI1_rWphUWUn_s_voTKw,6044
@@ -44,8 +44,8 @@ avrs/requests/toggle_hud.py,sha256=sV5t5QZc4uvRihPVk8jEKZiQNsyF9tsUwq5b4jjZplc,3
44
44
  avrs/requests/vd.py,sha256=Rd0mCc89m2yKjftVf0cMHMFbJG4iFd09KzrI-DsCLgI,2606
45
45
  avrs/requests/vehicle_input.py,sha256=R1b1xkRtOBkwyU6OSN4bWVlYsIUroZG0WKbYbc4pEH8,729
46
46
  avrs/requests/vehicle_replay.py,sha256=7HPfVLjSLNbOyzU77Bz29qpHqRsMUAIWvnwvnNiw2nk,15026
47
- autoverse_cli-0.29.1.dev408.dist-info/METADATA,sha256=dkMoJjdB0_j5UoA1WigTUgCpd1mHMZuBJjQo7gABjaU,4588
48
- autoverse_cli-0.29.1.dev408.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
49
- autoverse_cli-0.29.1.dev408.dist-info/entry_points.txt,sha256=Cb9qsUyU5AKkklehCcvtfT0-N3SXbUEqvjze4iEU5kE,40
50
- autoverse_cli-0.29.1.dev408.dist-info/top_level.txt,sha256=-AJO2e4MCVej6hY0U84pu5NfMeMW5qaAPSMisDT5rmA,5
51
- autoverse_cli-0.29.1.dev408.dist-info/RECORD,,
47
+ autoverse_cli-0.29.1.dev410.dist-info/METADATA,sha256=iiVN6wpip0Bu2XsDnVBdgGg2Q9kl_xscPIwkUJP2h8Y,4588
48
+ autoverse_cli-0.29.1.dev410.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
49
+ autoverse_cli-0.29.1.dev410.dist-info/entry_points.txt,sha256=Cb9qsUyU5AKkklehCcvtfT0-N3SXbUEqvjze4iEU5kE,40
50
+ autoverse_cli-0.29.1.dev410.dist-info/top_level.txt,sha256=-AJO2e4MCVej6hY0U84pu5NfMeMW5qaAPSMisDT5rmA,5
51
+ autoverse_cli-0.29.1.dev410.dist-info/RECORD,,
avrs/app_version.py CHANGED
@@ -2,7 +2,7 @@ import http.client
2
2
  import json
3
3
 
4
4
  def get_app_version():
5
- return '0.29.1.dev408'
5
+ return '0.29.1.dev410'
6
6
 
7
7
  def check_app_is_latest():
8
8
  pass
avrs/race_cloud.py CHANGED
@@ -211,6 +211,7 @@ class AvrsRaceCloud(AvrsApiRequest):
211
211
 
212
212
  # Validate sim_target (can be legacy index 0-5 or public IP only)
213
213
  is_valid, parsed_value, is_ip = parse_sim_target(args.sim_target)
214
+
214
215
  if not is_valid:
215
216
  print('invalid sim_target: {}'.format(parsed_value))
216
217
  return
@@ -276,6 +277,7 @@ class AvrsRaceCloud(AvrsApiRequest):
276
277
  ok, response = call_race_cloud_api(connection_request)
277
278
  if not ok:
278
279
  print('connect api error: {}'.format(response))
280
+ return
279
281
 
280
282
  ok, rbody, sim_ip = get_api_script_response(response)
281
283
  if not ok:
avrs/race_cloud_util.py CHANGED
@@ -370,6 +370,9 @@ def call_race_cloud_api(body):
370
370
  session = boto3.Session()
371
371
  credentials = session.get_credentials()
372
372
 
373
+ if credentials is None:
374
+ return (False, 'No AWS credentials available')
375
+
373
376
  # Prepare the request body
374
377
  body_json = json.dumps(body)
375
378
 
@@ -405,13 +408,29 @@ def call_race_cloud_api(body):
405
408
 
406
409
  def get_api_script_response(raw):
407
410
  logger = logging.getLogger('avrs')
408
- # Parse API Gateway response, then parse the body which is also JSON string
411
+
412
+ # Parse the raw JSON response
409
413
  api_response = json.loads(raw)
410
- body_str = api_response['body']
411
- # Body is a JSON string from Lambda Proxy integration
412
- decoded = json.loads(body_str) if isinstance(body_str, str) else body_str
414
+
415
+ # Handle different response formats from API Gateway
416
+ # Format 1: {"body": "{...}"} - Lambda Proxy integration with string body
417
+ # Format 2: {"script_response": {...}, "sim_private_ip": ...} - Direct response
418
+ if 'body' in api_response:
419
+ body_str = api_response['body']
420
+ # Body is a JSON string from Lambda Proxy integration
421
+ decoded = json.loads(body_str) if isinstance(body_str, str) else body_str
422
+ else:
423
+ # Response came directly without body wrapper
424
+ decoded = api_response
425
+
413
426
  logger.info('race cloud api response: {}'.format(decoded))
427
+
414
428
  if decoded['script_response']['statusCode'] != 200:
415
429
  return (False, 'inner response had bad status code {}'.format(decoded))
416
- #print(decoded)
417
- return (True, json.loads(decoded['script_response']['body']), decoded['sim_private_ip'])
430
+
431
+ # Parse the script_response body
432
+ script_body = decoded['script_response']['body']
433
+ if isinstance(script_body, str):
434
+ script_body = json.loads(script_body)
435
+
436
+ return (True, script_body, decoded['sim_private_ip'])