Skip to content

Commit 0421ba1

Browse files
committed
lint
1 parent 556fa97 commit 0421ba1

3 files changed

Lines changed: 24 additions & 16 deletions

File tree

urdf2mjcf/convert.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -533,8 +533,10 @@ def convert_urdf_to_mjcf(
533533
raise FileNotFoundError(f"URDF file not found: {urdf_path}")
534534
mjcf_path.parent.mkdir(parents=True, exist_ok=True)
535535

536-
urdf_tree: ET.ElementTree = ET.parse(urdf_path)
537-
robot: ET.Element = urdf_tree.getroot()
536+
urdf_tree = ET.parse(urdf_path)
537+
robot = urdf_tree.getroot()
538+
if robot is None:
539+
raise ValueError("URDF file has no root element")
538540

539541
if metadata_file is not None and metadata is not None:
540542
raise ValueError("Cannot specify both metadata and metadata_file")
@@ -554,10 +556,6 @@ def convert_urdf_to_mjcf(
554556
joint_metadata, actuator_metadata = _get_empty_joint_and_actuator_metadata(robot)
555557
assert joint_metadata is not None and actuator_metadata is not None
556558

557-
# Parse the URDF file.
558-
urdf_tree: ET.ElementTree = ET.parse(urdf_path)
559-
robot: ET.Element = urdf_tree.getroot()
560-
561559
# Parse materials from URDF - both from root level and from link visuals
562560
materials: dict[str, str] = {}
563561

urdf2mjcf/postprocess/add_sensors.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -100,17 +100,17 @@ def find_site(body_name: str, site_name: str, site_metadata: list[SiteMetadata])
100100
# Find or create the site within the body
101101
site_elem = link_body.find(f"./site[@name='{site_name}']")
102102
if site_elem is None:
103-
site_metadata = next(
103+
site_meta = next(
104104
(s for s in site_metadata if s.name == site_name), SiteMetadata(body_name=body_name, name=site_name)
105105
)
106106

107107
site_elem = ET.SubElement(link_body, "site", name=site_name)
108-
if site_metadata.size is not None:
109-
site_elem.attrib["size"] = " ".join(str(x) for x in site_metadata.size)
110-
if site_metadata.pos is not None:
111-
site_elem.attrib["pos"] = " ".join(str(x) for x in site_metadata.pos)
112-
if site_metadata.site_type is not None:
113-
site_elem.attrib["type"] = site_metadata.site_type
108+
if site_meta.size is not None:
109+
site_elem.attrib["size"] = " ".join(str(x) for x in site_meta.size)
110+
if site_meta.pos is not None:
111+
site_elem.attrib["pos"] = " ".join(str(x) for x in site_meta.pos)
112+
if site_meta.site_type is not None:
113+
site_elem.attrib["type"] = site_meta.site_type
114114
logger.info(f"Created site '{site_name}' on body '{body_name}'.")
115115

116116
return site_elem

urdf2mjcf/utils.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
"""Defines utility functions."""
22

3+
from __future__ import annotations
4+
35
import io
46
import re
57
import xml.etree.ElementTree as ET
@@ -52,10 +54,18 @@ def iter_meshes(
5254
yield visual_mesh, collision_mesh
5355

5456

55-
def save_xml(path: str | Path | io.StringIO, tree: ET.ElementTree | ET.Element) -> None:
57+
def save_xml(path: str | Path | io.StringIO, tree: ET.ElementTree[ET.Element] | ET.Element) -> None:
58+
"""Save XML to file with pretty formatting."""
59+
element: ET.Element
5660
if isinstance(tree, ET.ElementTree):
57-
tree = tree.getroot()
58-
xmlstr = minidom.parseString(ET.tostring(tree)).toprettyxml(indent=" ")
61+
root = tree.getroot()
62+
if root is None:
63+
raise ValueError("ElementTree has no root element")
64+
element = root
65+
else:
66+
element = tree
67+
68+
xmlstr = minidom.parseString(ET.tostring(element)).toprettyxml(indent=" ")
5969
xmlstr = re.sub(r"\n\s*\n", "\n", xmlstr)
6070

6171
# Add newlines between second-level nodes

0 commit comments

Comments
 (0)