placo 0.3.5__tar.gz → 0.3.7__tar.gz

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.

Potentially problematic release.


This version of placo might be problematic. Click here for more details.

Files changed (156) hide show
  1. {placo-0.3.5 → placo-0.3.7}/.gitignore +1 -0
  2. placo-0.3.7/.readthedocs.yaml +22 -0
  3. {placo-0.3.5 → placo-0.3.7}/CMakeLists.txt +1 -0
  4. {placo-0.3.5 → placo-0.3.7}/PKG-INFO +2 -1
  5. {placo-0.3.5 → placo-0.3.7}/bindings/expose-dynamics.cpp +3 -3
  6. {placo-0.3.5 → placo-0.3.7}/bindings/expose-kinematics.cpp +16 -3
  7. {placo-0.3.5 → placo-0.3.7}/doxygen_parse.py +13 -6
  8. {placo-0.3.5 → placo-0.3.7}/placo.pyi +610 -232
  9. {placo-0.3.5 → placo-0.3.7}/pyproject.toml +2 -1
  10. placo-0.3.7/python/placo_utils/__init__.py +4 -0
  11. {placo-0.3.5 → placo-0.3.7}/python/placo_utils/visualization.py +88 -16
  12. {placo-0.3.5 → placo-0.3.7}/src/placo/kinematics/kinematics_solver.cpp +5 -0
  13. {placo-0.3.5 → placo-0.3.7}/src/placo/kinematics/kinematics_solver.h +10 -0
  14. placo-0.3.7/src/placo/kinematics/wheel_task.cpp +58 -0
  15. placo-0.3.7/src/placo/kinematics/wheel_task.h +40 -0
  16. {placo-0.3.5 → placo-0.3.7}/.clang-format +0 -0
  17. {placo-0.3.5 → placo-0.3.7}/.gitattributes +0 -0
  18. {placo-0.3.5 → placo-0.3.7}/Doxyfile +0 -0
  19. {placo-0.3.5 → placo-0.3.7}/LICENSE +0 -0
  20. {placo-0.3.5 → placo-0.3.7}/Makefile +0 -0
  21. {placo-0.3.5 → placo-0.3.7}/README.md +0 -0
  22. {placo-0.3.5 → placo-0.3.7}/bindings/expose-eigen.cpp +0 -0
  23. {placo-0.3.5 → placo-0.3.7}/bindings/expose-footsteps.cpp +0 -0
  24. {placo-0.3.5 → placo-0.3.7}/bindings/expose-parameters.cpp +0 -0
  25. {placo-0.3.5 → placo-0.3.7}/bindings/expose-problem.cpp +0 -0
  26. {placo-0.3.5 → placo-0.3.7}/bindings/expose-robot-wrapper.cpp +0 -0
  27. {placo-0.3.5 → placo-0.3.7}/bindings/expose-tools.cpp +0 -0
  28. {placo-0.3.5 → placo-0.3.7}/bindings/expose-trajectory.cpp +0 -0
  29. {placo-0.3.5 → placo-0.3.7}/bindings/expose-utils.hpp +0 -0
  30. {placo-0.3.5 → placo-0.3.7}/bindings/expose-walk-pattern-generator.cpp +0 -0
  31. {placo-0.3.5 → placo-0.3.7}/bindings/module.cpp +0 -0
  32. {placo-0.3.5 → placo-0.3.7}/bindings/module.h +0 -0
  33. {placo-0.3.5 → placo-0.3.7}/bindings/registry.cpp +0 -0
  34. {placo-0.3.5 → placo-0.3.7}/bindings/registry.h +0 -0
  35. {placo-0.3.5 → placo-0.3.7}/python/Makefile +0 -0
  36. {placo-0.3.5 → placo-0.3.7}/python/placo_utils/tf.py +0 -0
  37. {placo-0.3.5 → placo-0.3.7}/python/run_tests.sh +0 -0
  38. {placo-0.3.5 → placo-0.3.7}/src/placo/dynamics/avoid_self_collisions_constraint.cpp +0 -0
  39. {placo-0.3.5 → placo-0.3.7}/src/placo/dynamics/avoid_self_collisions_constraint.h +0 -0
  40. {placo-0.3.5 → placo-0.3.7}/src/placo/dynamics/com_task.cpp +0 -0
  41. {placo-0.3.5 → placo-0.3.7}/src/placo/dynamics/com_task.h +0 -0
  42. {placo-0.3.5 → placo-0.3.7}/src/placo/dynamics/constraint.cpp +0 -0
  43. {placo-0.3.5 → placo-0.3.7}/src/placo/dynamics/constraint.h +0 -0
  44. {placo-0.3.5 → placo-0.3.7}/src/placo/dynamics/contacts.cpp +0 -0
  45. {placo-0.3.5 → placo-0.3.7}/src/placo/dynamics/contacts.h +0 -0
  46. {placo-0.3.5 → placo-0.3.7}/src/placo/dynamics/dynamics_solver.cpp +0 -0
  47. {placo-0.3.5 → placo-0.3.7}/src/placo/dynamics/dynamics_solver.h +0 -0
  48. {placo-0.3.5 → placo-0.3.7}/src/placo/dynamics/frame_task.cpp +0 -0
  49. {placo-0.3.5 → placo-0.3.7}/src/placo/dynamics/frame_task.h +0 -0
  50. {placo-0.3.5 → placo-0.3.7}/src/placo/dynamics/gear_task.cpp +0 -0
  51. {placo-0.3.5 → placo-0.3.7}/src/placo/dynamics/gear_task.h +0 -0
  52. {placo-0.3.5 → placo-0.3.7}/src/placo/dynamics/joints_task.cpp +0 -0
  53. {placo-0.3.5 → placo-0.3.7}/src/placo/dynamics/joints_task.h +0 -0
  54. {placo-0.3.5 → placo-0.3.7}/src/placo/dynamics/orientation_task.cpp +0 -0
  55. {placo-0.3.5 → placo-0.3.7}/src/placo/dynamics/orientation_task.h +0 -0
  56. {placo-0.3.5 → placo-0.3.7}/src/placo/dynamics/position_task.cpp +0 -0
  57. {placo-0.3.5 → placo-0.3.7}/src/placo/dynamics/position_task.h +0 -0
  58. {placo-0.3.5 → placo-0.3.7}/src/placo/dynamics/reaction_ratio_constraint.cpp +0 -0
  59. {placo-0.3.5 → placo-0.3.7}/src/placo/dynamics/reaction_ratio_constraint.h +0 -0
  60. {placo-0.3.5 → placo-0.3.7}/src/placo/dynamics/relative_frame_task.cpp +0 -0
  61. {placo-0.3.5 → placo-0.3.7}/src/placo/dynamics/relative_frame_task.h +0 -0
  62. {placo-0.3.5 → placo-0.3.7}/src/placo/dynamics/relative_orientation_task.cpp +0 -0
  63. {placo-0.3.5 → placo-0.3.7}/src/placo/dynamics/relative_orientation_task.h +0 -0
  64. {placo-0.3.5 → placo-0.3.7}/src/placo/dynamics/relative_position_task.cpp +0 -0
  65. {placo-0.3.5 → placo-0.3.7}/src/placo/dynamics/relative_position_task.h +0 -0
  66. {placo-0.3.5 → placo-0.3.7}/src/placo/dynamics/task.cpp +0 -0
  67. {placo-0.3.5 → placo-0.3.7}/src/placo/dynamics/task.h +0 -0
  68. {placo-0.3.5 → placo-0.3.7}/src/placo/footsteps/footsteps_planner.cpp +0 -0
  69. {placo-0.3.5 → placo-0.3.7}/src/placo/footsteps/footsteps_planner.h +0 -0
  70. {placo-0.3.5 → placo-0.3.7}/src/placo/footsteps/footsteps_planner_naive.cpp +0 -0
  71. {placo-0.3.5 → placo-0.3.7}/src/placo/footsteps/footsteps_planner_naive.h +0 -0
  72. {placo-0.3.5 → placo-0.3.7}/src/placo/footsteps/footsteps_planner_repetitive.cpp +0 -0
  73. {placo-0.3.5 → placo-0.3.7}/src/placo/footsteps/footsteps_planner_repetitive.h +0 -0
  74. {placo-0.3.5 → placo-0.3.7}/src/placo/kinematics/avoid_self_collisions_constraint.cpp +0 -0
  75. {placo-0.3.5 → placo-0.3.7}/src/placo/kinematics/avoid_self_collisions_constraint.h +0 -0
  76. {placo-0.3.5 → placo-0.3.7}/src/placo/kinematics/centroidal_momentum_task.cpp +0 -0
  77. {placo-0.3.5 → placo-0.3.7}/src/placo/kinematics/centroidal_momentum_task.h +0 -0
  78. {placo-0.3.5 → placo-0.3.7}/src/placo/kinematics/com_polygon_constraint.cpp +0 -0
  79. {placo-0.3.5 → placo-0.3.7}/src/placo/kinematics/com_polygon_constraint.h +0 -0
  80. {placo-0.3.5 → placo-0.3.7}/src/placo/kinematics/com_task.cpp +0 -0
  81. {placo-0.3.5 → placo-0.3.7}/src/placo/kinematics/com_task.h +0 -0
  82. {placo-0.3.5 → placo-0.3.7}/src/placo/kinematics/constraint.cpp +0 -0
  83. {placo-0.3.5 → placo-0.3.7}/src/placo/kinematics/constraint.h +0 -0
  84. {placo-0.3.5 → placo-0.3.7}/src/placo/kinematics/distance_task.cpp +0 -0
  85. {placo-0.3.5 → placo-0.3.7}/src/placo/kinematics/distance_task.h +0 -0
  86. {placo-0.3.5 → placo-0.3.7}/src/placo/kinematics/frame_task.cpp +0 -0
  87. {placo-0.3.5 → placo-0.3.7}/src/placo/kinematics/frame_task.h +0 -0
  88. {placo-0.3.5 → placo-0.3.7}/src/placo/kinematics/gear_task.cpp +0 -0
  89. {placo-0.3.5 → placo-0.3.7}/src/placo/kinematics/gear_task.h +0 -0
  90. {placo-0.3.5 → placo-0.3.7}/src/placo/kinematics/joints_task.cpp +0 -0
  91. {placo-0.3.5 → placo-0.3.7}/src/placo/kinematics/joints_task.h +0 -0
  92. {placo-0.3.5 → placo-0.3.7}/src/placo/kinematics/orientation_task.cpp +0 -0
  93. {placo-0.3.5 → placo-0.3.7}/src/placo/kinematics/orientation_task.h +0 -0
  94. {placo-0.3.5 → placo-0.3.7}/src/placo/kinematics/position_task.cpp +0 -0
  95. {placo-0.3.5 → placo-0.3.7}/src/placo/kinematics/position_task.h +0 -0
  96. {placo-0.3.5 → placo-0.3.7}/src/placo/kinematics/regularization_task.cpp +0 -0
  97. {placo-0.3.5 → placo-0.3.7}/src/placo/kinematics/regularization_task.h +0 -0
  98. {placo-0.3.5 → placo-0.3.7}/src/placo/kinematics/relative_frame_task.cpp +0 -0
  99. {placo-0.3.5 → placo-0.3.7}/src/placo/kinematics/relative_frame_task.h +0 -0
  100. {placo-0.3.5 → placo-0.3.7}/src/placo/kinematics/relative_orientation_task.cpp +0 -0
  101. {placo-0.3.5 → placo-0.3.7}/src/placo/kinematics/relative_orientation_task.h +0 -0
  102. {placo-0.3.5 → placo-0.3.7}/src/placo/kinematics/relative_position_task.cpp +0 -0
  103. {placo-0.3.5 → placo-0.3.7}/src/placo/kinematics/relative_position_task.h +0 -0
  104. {placo-0.3.5 → placo-0.3.7}/src/placo/kinematics/task.cpp +0 -0
  105. {placo-0.3.5 → placo-0.3.7}/src/placo/kinematics/task.h +0 -0
  106. {placo-0.3.5 → placo-0.3.7}/src/placo/model/humanoid_parameters.cpp +0 -0
  107. {placo-0.3.5 → placo-0.3.7}/src/placo/model/humanoid_parameters.h +0 -0
  108. {placo-0.3.5 → placo-0.3.7}/src/placo/model/humanoid_robot.cpp +0 -0
  109. {placo-0.3.5 → placo-0.3.7}/src/placo/model/humanoid_robot.h +0 -0
  110. {placo-0.3.5 → placo-0.3.7}/src/placo/model/robot_wrapper.cpp +0 -0
  111. {placo-0.3.5 → placo-0.3.7}/src/placo/model/robot_wrapper.h +0 -0
  112. {placo-0.3.5 → placo-0.3.7}/src/placo/planning/lipm.cpp +0 -0
  113. {placo-0.3.5 → placo-0.3.7}/src/placo/planning/lipm.h +0 -0
  114. {placo-0.3.5 → placo-0.3.7}/src/placo/planning/walk_pattern_generator.cpp +0 -0
  115. {placo-0.3.5 → placo-0.3.7}/src/placo/planning/walk_pattern_generator.h +0 -0
  116. {placo-0.3.5 → placo-0.3.7}/src/placo/planning/walk_tasks.cpp +0 -0
  117. {placo-0.3.5 → placo-0.3.7}/src/placo/planning/walk_tasks.h +0 -0
  118. {placo-0.3.5 → placo-0.3.7}/src/placo/problem/constraint.cpp +0 -0
  119. {placo-0.3.5 → placo-0.3.7}/src/placo/problem/constraint.h +0 -0
  120. {placo-0.3.5 → placo-0.3.7}/src/placo/problem/expression.cpp +0 -0
  121. {placo-0.3.5 → placo-0.3.7}/src/placo/problem/expression.h +0 -0
  122. {placo-0.3.5 → placo-0.3.7}/src/placo/problem/integrator.cpp +0 -0
  123. {placo-0.3.5 → placo-0.3.7}/src/placo/problem/integrator.h +0 -0
  124. {placo-0.3.5 → placo-0.3.7}/src/placo/problem/polygon_constraint.cpp +0 -0
  125. {placo-0.3.5 → placo-0.3.7}/src/placo/problem/polygon_constraint.h +0 -0
  126. {placo-0.3.5 → placo-0.3.7}/src/placo/problem/problem.cpp +0 -0
  127. {placo-0.3.5 → placo-0.3.7}/src/placo/problem/problem.h +0 -0
  128. {placo-0.3.5 → placo-0.3.7}/src/placo/problem/qp_error.cpp +0 -0
  129. {placo-0.3.5 → placo-0.3.7}/src/placo/problem/qp_error.h +0 -0
  130. {placo-0.3.5 → placo-0.3.7}/src/placo/problem/sparsity.cpp +0 -0
  131. {placo-0.3.5 → placo-0.3.7}/src/placo/problem/sparsity.h +0 -0
  132. {placo-0.3.5 → placo-0.3.7}/src/placo/problem/variable.cpp +0 -0
  133. {placo-0.3.5 → placo-0.3.7}/src/placo/problem/variable.h +0 -0
  134. {placo-0.3.5 → placo-0.3.7}/src/placo/tools/axises_mask.cpp +0 -0
  135. {placo-0.3.5 → placo-0.3.7}/src/placo/tools/axises_mask.h +0 -0
  136. {placo-0.3.5 → placo-0.3.7}/src/placo/tools/prioritized.cpp +0 -0
  137. {placo-0.3.5 → placo-0.3.7}/src/placo/tools/prioritized.h +0 -0
  138. {placo-0.3.5 → placo-0.3.7}/src/placo/tools/utils.cpp +0 -0
  139. {placo-0.3.5 → placo-0.3.7}/src/placo/tools/utils.h +0 -0
  140. {placo-0.3.5 → placo-0.3.7}/src/placo/trajectory/cubic_spline.cpp +0 -0
  141. {placo-0.3.5 → placo-0.3.7}/src/placo/trajectory/cubic_spline.h +0 -0
  142. {placo-0.3.5 → placo-0.3.7}/src/placo/trajectory/cubic_spline_3d.cpp +0 -0
  143. {placo-0.3.5 → placo-0.3.7}/src/placo/trajectory/cubic_spline_3d.h +0 -0
  144. {placo-0.3.5 → placo-0.3.7}/src/placo/trajectory/foot_trajectory.cpp +0 -0
  145. {placo-0.3.5 → placo-0.3.7}/src/placo/trajectory/foot_trajectory.h +0 -0
  146. {placo-0.3.5 → placo-0.3.7}/src/placo/trajectory/kick.cpp +0 -0
  147. {placo-0.3.5 → placo-0.3.7}/src/placo/trajectory/kick.h +0 -0
  148. {placo-0.3.5 → placo-0.3.7}/src/placo/trajectory/swing_foot.cpp +0 -0
  149. {placo-0.3.5 → placo-0.3.7}/src/placo/trajectory/swing_foot.h +0 -0
  150. {placo-0.3.5 → placo-0.3.7}/src/placo/trajectory/swing_foot_cubic.cpp +0 -0
  151. {placo-0.3.5 → placo-0.3.7}/src/placo/trajectory/swing_foot_cubic.h +0 -0
  152. {placo-0.3.5 → placo-0.3.7}/src/placo/trajectory/swing_foot_quintic.cpp +0 -0
  153. {placo-0.3.5 → placo-0.3.7}/src/placo/trajectory/swing_foot_quintic.h +0 -0
  154. {placo-0.3.5 → placo-0.3.7}/stubs.py +0 -0
  155. {placo-0.3.5 → placo-0.3.7}/tweak_sdist.sh +0 -0
  156. {placo-0.3.5 → placo-0.3.7}/wks.yml +0 -0
@@ -4,3 +4,4 @@ html/
4
4
  xml/
5
5
  latex/
6
6
  placo.pyi
7
+ dist/
@@ -0,0 +1,22 @@
1
+ # .readthedocs.yaml
2
+ # Read the Docs configuration file
3
+ # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
4
+
5
+ # Required
6
+ version: 2
7
+
8
+ # Set the version of Python and other tools you might need
9
+ build:
10
+ os: ubuntu-22.04
11
+ tools:
12
+ python: "3.11"
13
+
14
+ # Build documentation in the docs/ directory with Sphinx
15
+ sphinx:
16
+ configuration: docs/conf.py
17
+
18
+ # We recommend specifying your dependencies to enable reproducible builds:
19
+ # https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
20
+ python:
21
+ install:
22
+ - requirements: docs/requirements.txt
@@ -69,6 +69,7 @@ add_library(libplaco SHARED
69
69
  src/placo/kinematics/distance_task.cpp
70
70
  src/placo/kinematics/joints_task.cpp
71
71
  src/placo/kinematics/gear_task.cpp
72
+ src/placo/kinematics/wheel_task.cpp
72
73
  src/placo/kinematics/regularization_task.cpp
73
74
  src/placo/kinematics/constraint.cpp
74
75
  src/placo/kinematics/avoid_self_collisions_constraint.cpp
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: placo
3
- Version: 0.3.5
3
+ Version: 0.3.7
4
4
  Summary: PlaCo: Rhoban Planning and Control
5
5
  Requires-Python: >= 3.8
6
6
  License-Expression: MIT
@@ -14,6 +14,7 @@ Requires-Dist: pin >= 2.6.18, < 3
14
14
  Requires-Dist: rhoban-cmeel-jsoncpp
15
15
  Requires-Dist: meshcat
16
16
  Requires-Dist: numpy
17
+ Requires-Dist: ischedule
17
18
  Provides-Extra: build
18
19
  Requires-Dist: pin[build] >= 2.6.18, < 3 ; extra == "build"
19
20
  Requires-Dist: cmeel-urdfdom[build] ; extra == "build"
@@ -135,8 +135,8 @@ void exposeDynamics()
135
135
  &DynamicsSolver::add_frame_task);
136
136
 
137
137
  class__<Task, bases<tools::Prioritized>, boost::noncopyable>("DynamicsTask", no_init)
138
- .add_property("A", &Task::A)
139
- .add_property("b", &Task::b)
138
+ .add_property("A", +[](const Task& task) { return task.A; })
139
+ .add_property("b", +[](const Task& task) { return task.b; })
140
140
  .add_property("kp", &Task::kp, &Task::kp)
141
141
  .add_property("kd", &Task::kd, &Task::kd)
142
142
  .add_property("critically_damped", &Task::critically_damped, &Task::critically_damped)
@@ -229,7 +229,7 @@ void exposeDynamics()
229
229
 
230
230
  class__<Constraint, bases<tools::Prioritized>, boost::noncopyable>("DynamicsConstraint", no_init);
231
231
 
232
- class__<AvoidSelfCollisionsConstraint, bases<Constraint>>("DynamicsAvoidSelfCollisionsConstraint", init<>())
232
+ class__<AvoidSelfCollisionsConstraint, bases<Constraint>>("AvoidSelfCollisionsDynamicsConstraint", init<>())
233
233
  .def_readwrite("self_collisions_margin", &AvoidSelfCollisionsConstraint::self_collisions_margin)
234
234
  .def_readwrite("self_collisions_trigger", &AvoidSelfCollisionsConstraint::self_collisions_trigger);
235
235
 
@@ -55,6 +55,10 @@ void exposeKinematics()
55
55
  .def<GearTask& (KinematicsSolver::*)(void)>("add_gear_task", &KinematicsSolver::add_gear_task,
56
56
  return_internal_reference<>())
57
57
 
58
+ // Wheel task
59
+ .def<WheelTask& (KinematicsSolver::*)(std::string, double, bool)>(
60
+ "add_wheel_task", &KinematicsSolver::add_wheel_task, return_internal_reference<>())
61
+
58
62
  // Distance task
59
63
  .def<DistanceTask& (KinematicsSolver::*)(std::string, std::string, double)>(
60
64
  "add_distance_task", &KinematicsSolver::add_distance_task, return_internal_reference<>())
@@ -96,8 +100,10 @@ void exposeKinematics()
96
100
  .def("solve", &KinematicsSolver::solve);
97
101
 
98
102
  class__<Task, bases<tools::Prioritized>, boost::noncopyable>("Task", no_init)
99
- .add_property("A", &Task::A)
100
- .add_property("b", &Task::b)
103
+ .add_property(
104
+ "A", +[](const Task& task) { return task.A; })
105
+ .add_property(
106
+ "b", +[](const Task& task) { return task.b; })
101
107
  .def("error", &Task::error)
102
108
  .def("error_norm", &Task::error_norm)
103
109
  .def("update", &Task::update);
@@ -167,6 +173,13 @@ void exposeKinematics()
167
173
 
168
174
  class__<GearTask, bases<Task>>("GearTask", init<>()).def("set_gear", &GearTask::set_gear);
169
175
 
176
+ class__<WheelTask, bases<Task>>("WheelTask", init<std::string, double, bool>())
177
+ .add_property("joint", &WheelTask::joint)
178
+ .add_property("radius", &WheelTask::radius)
179
+ .add_property("omniwheel", &WheelTask::omniwheel)
180
+ .add_property(
181
+ "T_world_surface", +[](const WheelTask& task) { return task.T_world_surface; }, &WheelTask::T_world_surface);
182
+
170
183
  class__<DistanceTask, bases<Task>>("DistanceTask", init<RobotWrapper::FrameIndex, RobotWrapper::FrameIndex, double>())
171
184
  .add_property("frame_a", &DistanceTask::frame_a)
172
185
  .add_property("frame_b", &DistanceTask::frame_b)
@@ -180,7 +193,7 @@ void exposeKinematics()
180
193
 
181
194
  class__<Constraint, bases<tools::Prioritized>, boost::noncopyable>("KinematicsConstraint", no_init);
182
195
 
183
- class__<AvoidSelfCollisionsConstraint, bases<Constraint>>("KinematicsAvoidSelfCollisionsConstraint", init<>())
196
+ class__<AvoidSelfCollisionsConstraint, bases<Constraint>>("AvoidSelfCollisionsKinematicsConstraint", init<>())
184
197
  .def_readwrite("self_collisions_margin", &AvoidSelfCollisionsConstraint::self_collisions_margin)
185
198
  .def_readwrite("self_collisions_trigger", &AvoidSelfCollisionsConstraint::self_collisions_trigger);
186
199
 
@@ -17,7 +17,10 @@ def resolve_type(node):
17
17
  type_node = node.find("type")
18
18
 
19
19
  if type_node.find("ref") is not None:
20
- return type_node.find("ref").attrib["refid"]
20
+ if type_node.text and "vector" in type_node.text:
21
+ return ["std::vector", type_node.find("ref").attrib["refid"]]
22
+ else:
23
+ return type_node.find("ref").attrib["refid"]
21
24
  else:
22
25
  return type_node.text
23
26
 
@@ -104,7 +107,7 @@ def parse_compound(compounddef_node: ET.Element):
104
107
  "detaileddescription/para/parameterlist/parameteritem"
105
108
  ):
106
109
  param_name = entry.find("parameternamelist/parametername").text
107
- param_desc = entry.find("parameterdescription/para").text
110
+ param_desc = element_to_string(entry.find("parameterdescription/para"))
108
111
  member_definitions[id]["detailed"].append(
109
112
  {"name": param_name, "desc": param_desc}
110
113
  )
@@ -119,7 +122,7 @@ def parse_compound(compounddef_node: ET.Element):
119
122
  "detaileddescription/para/simplesect[@kind='return']"
120
123
  )
121
124
  if return_type:
122
- member_definitions[id]["returns"] = return_type.find("para").text
125
+ member_definitions[id]["returns"] = element_to_string(return_type.find("para"))
123
126
 
124
127
  if compound_kind == "namespace":
125
128
  compound_members[name].append(id)
@@ -129,7 +132,7 @@ def parse_compound(compounddef_node: ET.Element):
129
132
  elif kind == "enum":
130
133
  doxygen_id_to_name[id] = name + "::" + member.find("name").text
131
134
 
132
- # Listinf all members
135
+ # Listing all members
133
136
  kind = compounddef_node.attrib["kind"]
134
137
  for member in compounddef_node.findall("listofallmembers/member"):
135
138
  compound_members[name].append(member.attrib["refid"])
@@ -145,8 +148,12 @@ def parse_xml(xml_file: str):
145
148
  parse_compound(compounddef_node)
146
149
 
147
150
 
148
- def resolve_doxygen_id(id: str):
149
- if id in doxygen_id_to_name:
151
+ def resolve_doxygen_id(id: list|str):
152
+ if type(id) == list:
153
+ tpl = resolve_doxygen_id(id[0])
154
+ typ = resolve_doxygen_id(id[1])
155
+ return f"{tpl}<{typ}>"
156
+ elif id in doxygen_id_to_name:
150
157
  return doxygen_id_to_name[id]
151
158
  else:
152
159
  return id