Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit e519c54

Browse files
khancyrpeterbarker
authored andcommitted
build_parameters.py: reduce exception scope on parameters rst generation
1 parent 051bf77 commit e519c54

1 file changed

Lines changed: 40 additions & 45 deletions

File tree

build_parameters.py

Lines changed: 40 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -500,63 +500,58 @@ def replace_anchors(source_file, dest_file, version_tag):
500500
debug("")
501501

502502
# Run param_parse.py tool from Autotest set in the desired commit id
503-
try:
504-
param_metadata_dir = os.path.join(BASEPATH, "Tools", "autotest", "param_metadata")
505-
# Workaround the vehicle renaming (Rover, APMRover2 ArduRover...)
506-
if ('rover' in vehicle.lower()) and ('v3.' not in version.lower()) and ('v4.0' not in version.lower()):
507-
vehicle_name = 'Rover'
508-
else:
509-
vehicle_name = vehicle_new_to_old_name[vehicle]
503+
param_metadata_dir = os.path.join(BASEPATH, "Tools", "autotest", "param_metadata")
504+
# Workaround the vehicle renaming (Rover, APMRover2 ArduRover...)
505+
if ('rover' in vehicle.lower()) and ('v3.' not in version.lower()) and ('v4.0' not in version.lower()):
506+
vehicle_name = 'Rover'
507+
else:
508+
vehicle_name = vehicle_new_to_old_name[vehicle]
510509

511-
cmd = ["python3", "./param_parse.py", "--vehicle", vehicle_name]
510+
cmd = ["python3", "./param_parse.py", "--vehicle", vehicle_name]
512511

513-
# Run with subprocess - use cwd parameter instead of os.chdir()
512+
try:
514513
result = subprocess.run(cmd, cwd=param_metadata_dir,
515514
capture_output=True, text=True, timeout=300)
516-
517-
if result.returncode != 0:
518-
error(f"param_parse.py failed for {vehicle} {version}: {result.stderr}")
519-
return None
520-
521-
# Log param_parse.py output for debugging
522-
if result.stdout:
523-
debug(f"param_parse.py stdout for {vehicle} {version}: {result.stdout[:500]}")
524-
if result.stderr:
525-
debug(f"param_parse.py stderr for {vehicle} {version}: {result.stderr[:500]}")
526-
527-
# create a filename for new parameters file
528-
filename = f"parameters-{vehicle}"
529-
if ("beta" in version or "rc" in version): # Plane uses BETA, Copter and Rover uses RCn
530-
filename += f"-{version}.rst"
531-
elif ("latest" in version):
532-
filename += f"-{version}.rst"
533-
else:
534-
filename += f"-stable-{version}.rst"
535-
536-
# Use absolute paths for file operations
537-
parameters_rst_path = os.path.join(param_metadata_dir, "Parameters.rst")
538-
output_file_path = os.path.join(param_metadata_dir, filename)
539-
# Generate new anchors names in files to avoid toctree problems and links in sphinx.
515+
except (subprocess.TimeoutExpired, OSError) as e:
516+
error(f"param_parse.py execution failed for {vehicle} {version}: {e}")
517+
return None
518+
519+
if result.returncode != 0:
520+
error(f"param_parse.py failed for {vehicle} {version}: {result.stderr}")
521+
return None
522+
523+
if result.stdout:
524+
debug(f"param_parse.py stdout for {vehicle} {version}: {result.stdout[:500]}")
525+
if result.stderr:
526+
debug(f"param_parse.py stderr for {vehicle} {version}: {result.stderr[:500]}")
527+
528+
# create a filename for new parameters file
529+
filename = f"parameters-{vehicle}"
530+
if ("beta" in version or "rc" in version): # Plane uses BETA, Copter and Rover uses RCn
531+
filename += f"-{version}.rst"
532+
elif ("latest" in version):
533+
filename += f"-{version}.rst"
534+
else:
535+
filename += f"-stable-{version}.rst"
536+
537+
parameters_rst_path = os.path.join(param_metadata_dir, "Parameters.rst")
538+
output_file_path = os.path.join(param_metadata_dir, filename)
539+
540+
# Generate new anchors names in files to avoid toctree problems and links in sphinx.
541+
try:
540542
if os.path.exists(parameters_rst_path):
541543
replace_anchors(parameters_rst_path, output_file_path, filename[10:-4])
542544
os.remove(parameters_rst_path)
543545
debug(f"File {filename} generated.")
544546
# Remove duplicate RNGFNDx_ Parameters sections before checking labels.
545-
dedupe_rngfnd_parameters_sections(filename)
547+
dedupe_rngfnd_parameters_sections(output_file_path)
546548
# Check for duplicate RST labels in the generated file
547-
if rst_has_duplicate_labels(filename):
548-
debug(f"RST duplicate labels detected in {filename}")
549+
if rst_has_duplicate_labels(output_file_path):
550+
debug(f"RST duplicate labels detected in {output_file_path}")
549551
else:
550-
# this was an error, but turns out we are missing a
551-
# bunch of these, eg.
552-
# [build_parameters.py][error]: Parameters.rst not found to rename to parameters-Copter-stable-V4.0.0.rst
553552
error(f"Parameters.rst not found for {vehicle} {version}")
554-
555-
except Exception as e:
556-
error(f'Error while parsing "Parameters.rst" | details:\t{vehicle}\t{version}\t{commit_id}')
557-
error(e)
558-
# sys.exit(1)
559-
debug("")
553+
except (OSError, IOError) as e:
554+
error(f"Error while handling Parameters.rst for {vehicle} {version}: {e}")
560555

561556
return 0
562557

0 commit comments

Comments
 (0)