openscvx 1__tar.gz → 2.dev2__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.
Files changed (390) hide show
  1. {openscvx-1 → openscvx-2.dev2}/.github/workflows/_docs.yml +11 -3
  2. {openscvx-1 → openscvx-2.dev2}/.gitignore +4 -2
  3. {openscvx-1 → openscvx-2.dev2}/CONTRIBUTING.md +7 -2
  4. {openscvx-1/openscvx.egg-info → openscvx-2.dev2}/PKG-INFO +10 -16
  5. {openscvx-1 → openscvx-2.dev2}/README.md +7 -7
  6. openscvx-2.dev2/docs/assets/viser-client/index.html +20 -0
  7. openscvx-2.dev2/docs/assets/viser-recordings/drone_racing.viser +0 -0
  8. openscvx-2.dev2/docs/assets/viser-recordings/franka_fr3v2_pick_place.viser +0 -0
  9. openscvx-2.dev2/docs/index.md +38 -0
  10. openscvx-2.dev2/docs/versions.json +7 -0
  11. openscvx-2.dev2/examples/_viser_embed_export.py +174 -0
  12. {openscvx-1 → openscvx-2.dev2}/examples/abstract/brachistochrone.py +13 -4
  13. {openscvx-1 → openscvx-2.dev2}/examples/arm/franka_fr3v2_pick_place.py +107 -82
  14. {openscvx-1 → openscvx-2.dev2}/examples/rocket/6DoF_pdg.py +58 -46
  15. openscvx-2.dev2/figures/openscvx_logo_square.png +0 -0
  16. openscvx-2.dev2/material/overrides/assets/stylesheets/custom.css +465 -0
  17. openscvx-2.dev2/material/overrides/assets/stylesheets/home-dropin.css +231 -0
  18. openscvx-2.dev2/material/overrides/assets/stylesheets/home-hero.css +930 -0
  19. openscvx-2.dev2/material/overrides/assets/stylesheets/home-viser.css +138 -0
  20. openscvx-2.dev2/material/overrides/home.html +21 -0
  21. openscvx-2.dev2/material/overrides/main.html +11 -0
  22. openscvx-2.dev2/material/overrides/partials/home-diagram.html +71 -0
  23. openscvx-2.dev2/material/overrides/partials/home-dropin-banner.html +41 -0
  24. openscvx-2.dev2/material/overrides/partials/home-hero.html +25 -0
  25. openscvx-2.dev2/material/overrides/partials/home-pipeline.html +90 -0
  26. openscvx-2.dev2/material/overrides/partials/home-viser-strip.html +72 -0
  27. {openscvx-1 → openscvx-2.dev2}/mkdocs.yml +18 -9
  28. {openscvx-1 → openscvx-2.dev2}/openscvx/_version.py +3 -3
  29. {openscvx-1 → openscvx-2.dev2}/openscvx/algorithms/penalized_trust_region.py +32 -3
  30. {openscvx-1 → openscvx-2.dev2}/openscvx/plotting/viser/server.py +2 -2
  31. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/hashing.py +16 -3
  32. {openscvx-1 → openscvx-2.dev2/openscvx.egg-info}/PKG-INFO +10 -16
  33. {openscvx-1 → openscvx-2.dev2}/openscvx.egg-info/SOURCES.txt +15 -36
  34. {openscvx-1 → openscvx-2.dev2}/openscvx.egg-info/requires.txt +0 -7
  35. {openscvx-1 → openscvx-2.dev2}/pyproject.toml +2 -9
  36. openscvx-2.dev2/scripts/gen_example_pages.py +239 -0
  37. openscvx-2.dev2/scripts/gen_ref_pages.py +187 -0
  38. openscvx-2.dev2/scripts/mkdocs_copy_viser_client_hook.py +52 -0
  39. {openscvx-1 → openscvx-2.dev2}/tests/expr/test_gmsr.py +12 -7
  40. {openscvx-1 → openscvx-2.dev2}/tests/symbolic/expr/test_stl.py +1 -1
  41. {openscvx-1 → openscvx-2.dev2}/tests/test_brachistochrone.py +5 -0
  42. {openscvx-1 → openscvx-2.dev2}/tests/test_examples.py +1 -1
  43. openscvx-1/docs/getting-started.md +0 -239
  44. openscvx-1/docs/index.md +0 -9
  45. openscvx-1/material/overrides/assets/images/layers/1-background.avif +0 -0
  46. openscvx-1/material/overrides/assets/images/layers/1-background@1x.avif +0 -0
  47. openscvx-1/material/overrides/assets/images/layers/1-background@2x.avif +0 -0
  48. openscvx-1/material/overrides/assets/images/layers/1-background@3x.avif +0 -0
  49. openscvx-1/material/overrides/assets/images/layers/1-background@4x.avif +0 -0
  50. openscvx-1/material/overrides/assets/images/layers/2-mars.avif +0 -0
  51. openscvx-1/material/overrides/assets/images/layers/2-mars@1x.avif +0 -0
  52. openscvx-1/material/overrides/assets/images/layers/2-mars@2x.avif +0 -0
  53. openscvx-1/material/overrides/assets/images/layers/2-mars@3x.avif +0 -0
  54. openscvx-1/material/overrides/assets/images/layers/2-mars@4x.avif +0 -0
  55. openscvx-1/material/overrides/assets/images/layers/3-moon.avif +0 -0
  56. openscvx-1/material/overrides/assets/images/layers/3-moon@1x.avif +0 -0
  57. openscvx-1/material/overrides/assets/images/layers/3-moon@2x.avif +0 -0
  58. openscvx-1/material/overrides/assets/images/layers/3-moon@3x.avif +0 -0
  59. openscvx-1/material/overrides/assets/images/layers/3-moon@4x.avif +0 -0
  60. openscvx-1/material/overrides/assets/images/layers/4-sat1.avif +0 -0
  61. openscvx-1/material/overrides/assets/images/layers/4-sat1@1x.avif +0 -0
  62. openscvx-1/material/overrides/assets/images/layers/4-sat1@2x.avif +0 -0
  63. openscvx-1/material/overrides/assets/images/layers/4-sat1@3x.avif +0 -0
  64. openscvx-1/material/overrides/assets/images/layers/4-sat1@4x.avif +0 -0
  65. openscvx-1/material/overrides/assets/images/layers/5-space.avif +0 -0
  66. openscvx-1/material/overrides/assets/images/layers/5-space@1x.avif +0 -0
  67. openscvx-1/material/overrides/assets/images/layers/5-space@2x.avif +0 -0
  68. openscvx-1/material/overrides/assets/images/layers/5-space@3x.avif +0 -0
  69. openscvx-1/material/overrides/assets/images/layers/5-space@4x.avif +0 -0
  70. openscvx-1/material/overrides/assets/images/layers/6-earth.avif +0 -0
  71. openscvx-1/material/overrides/assets/images/layers/6-earth@1x.avif +0 -0
  72. openscvx-1/material/overrides/assets/images/layers/6-earth@2x.avif +0 -0
  73. openscvx-1/material/overrides/assets/images/layers/6-earth@3x.avif +0 -0
  74. openscvx-1/material/overrides/assets/images/layers/6-earth@4x.avif +0 -0
  75. openscvx-1/material/overrides/assets/javascripts/parallax.js +0 -54
  76. openscvx-1/material/overrides/assets/logo.svg +0 -1
  77. openscvx-1/material/overrides/assets/stylesheets/custom.css +0 -135
  78. openscvx-1/material/overrides/assets/stylesheets/parallax.css +0 -216
  79. openscvx-1/material/overrides/home.html +0 -26
  80. openscvx-1/material/overrides/main.html +0 -8
  81. openscvx-1/material/overrides/partials/parallax/hero.html +0 -46
  82. openscvx-1/material/overrides/partials/parallax.html +0 -7
  83. openscvx-1/scripts/gen_example_pages.py +0 -103
  84. openscvx-1/scripts/gen_ref_pages.py +0 -41
  85. {openscvx-1 → openscvx-2.dev2}/.github/assets/logo.svg +0 -0
  86. {openscvx-1 → openscvx-2.dev2}/.github/release-drafter.yml +0 -0
  87. {openscvx-1 → openscvx-2.dev2}/.github/workflows/branch-name.yml +0 -0
  88. {openscvx-1 → openscvx-2.dev2}/.github/workflows/docs.yml +0 -0
  89. {openscvx-1 → openscvx-2.dev2}/.github/workflows/lint.yml +0 -0
  90. {openscvx-1 → openscvx-2.dev2}/.github/workflows/nightly.yml +0 -0
  91. {openscvx-1 → openscvx-2.dev2}/.github/workflows/release-drafter.yml +0 -0
  92. {openscvx-1 → openscvx-2.dev2}/.github/workflows/release.yml +0 -0
  93. {openscvx-1 → openscvx-2.dev2}/.github/workflows/tests-integration.yml +0 -0
  94. {openscvx-1 → openscvx-2.dev2}/.github/workflows/tests-unit.yml +0 -0
  95. {openscvx-1 → openscvx-2.dev2}/.gitmodules +0 -0
  96. {openscvx-1 → openscvx-2.dev2}/LICENSE +0 -0
  97. {openscvx-1 → openscvx-2.dev2}/docs/Foundations/constraint_reformulation.md +0 -0
  98. {openscvx-1 → openscvx-2.dev2}/docs/Foundations/control_parameterization.md +0 -0
  99. {openscvx-1 → openscvx-2.dev2}/docs/Foundations/discretization.md +0 -0
  100. {openscvx-1 → openscvx-2.dev2}/docs/Foundations/ocp.md +0 -0
  101. {openscvx-1 → openscvx-2.dev2}/docs/Foundations/scvx.md +0 -0
  102. {openscvx-1 → openscvx-2.dev2}/docs/Foundations/time_dilation.md +0 -0
  103. {openscvx-1 → openscvx-2.dev2}/docs/UnderTheHood/lowering_architecture.md +0 -0
  104. {openscvx-1 → openscvx-2.dev2}/docs/UnderTheHood/vectorization_and_vmapping.md +0 -0
  105. {openscvx-1 → openscvx-2.dev2}/docs/UsersGuide/00_introduction.md +0 -0
  106. {openscvx-1 → openscvx-2.dev2}/docs/UsersGuide/01_hello_world_brachistochrone.md +0 -0
  107. {openscvx-1 → openscvx-2.dev2}/docs/UsersGuide/02_drone_racing_constraints.md +0 -0
  108. {openscvx-1 → openscvx-2.dev2}/docs/UsersGuide/03_obstacle_avoidance_vmap.md +0 -0
  109. {openscvx-1 → openscvx-2.dev2}/docs/UsersGuide/04_viewpoint_constraints.md +0 -0
  110. {openscvx-1 → openscvx-2.dev2}/docs/UsersGuide/05_visualization.md +0 -0
  111. {openscvx-1 → openscvx-2.dev2}/docs/UsersGuide/06_logic.md +0 -0
  112. {openscvx-1 → openscvx-2.dev2}/docs/UsersGuide/07_lie.md +0 -0
  113. {openscvx-1 → openscvx-2.dev2}/docs/UsersGuide/08_mpcc.md +0 -0
  114. {openscvx-1 → openscvx-2.dev2}/docs/assets/favicon.png +0 -0
  115. {openscvx-1 → openscvx-2.dev2}/docs/assets/images/ct-scvx_dark.png +0 -0
  116. {openscvx-1 → openscvx-2.dev2}/docs/assets/images/ct-scvx_light.png +0 -0
  117. {openscvx-1 → openscvx-2.dev2}/docs/assets/images/ctcs_dark.png +0 -0
  118. {openscvx-1 → openscvx-2.dev2}/docs/assets/images/ctcs_light.png +0 -0
  119. {openscvx-1 → openscvx-2.dev2}/docs/assets/images/problem_class_dark.png +0 -0
  120. {openscvx-1 → openscvx-2.dev2}/docs/assets/images/problem_class_light.png +0 -0
  121. {openscvx-1 → openscvx-2.dev2}/docs/assets/logo.svg +0 -0
  122. {openscvx-1/figures → openscvx-2.dev2/docs/assets}/openscvx_logo_square.png +0 -0
  123. {openscvx-1 → openscvx-2.dev2}/docs/citation.md +0 -0
  124. {openscvx-1 → openscvx-2.dev2}/docs/examples.md +0 -0
  125. {openscvx-1 → openscvx-2.dev2}/docs/javascripts/mathjax.js +0 -0
  126. {openscvx-1 → openscvx-2.dev2}/examples/abstract/impulsive.py +0 -0
  127. {openscvx-1 → openscvx-2.dev2}/examples/abstract/stl_integer_variable.py +0 -0
  128. {openscvx-1 → openscvx-2.dev2}/examples/abstract/stl_or.py +0 -0
  129. {openscvx-1 → openscvx-2.dev2}/examples/animations/7_dof_arm.py +0 -0
  130. {openscvx-1 → openscvx-2.dev2}/examples/animations/_camera.py +0 -0
  131. {openscvx-1 → openscvx-2.dev2}/examples/animations/_render.py +0 -0
  132. {openscvx-1 → openscvx-2.dev2}/examples/animations/_sensor_view.py +0 -0
  133. {openscvx-1 → openscvx-2.dev2}/examples/animations/dr_vp_polytope.py +0 -0
  134. {openscvx-1 → openscvx-2.dev2}/examples/animations/franka_fr3v2_pick_place.py +0 -0
  135. {openscvx-1 → openscvx-2.dev2}/examples/animations/logo.py +0 -0
  136. {openscvx-1 → openscvx-2.dev2}/examples/animations/obstacle_avoidance_vmap.py +0 -0
  137. {openscvx-1 → openscvx-2.dev2}/examples/arm/3_dof_arm.py +0 -0
  138. {openscvx-1 → openscvx-2.dev2}/examples/arm/7_dof_arm.py +0 -0
  139. {openscvx-1 → openscvx-2.dev2}/examples/arm/7_dof_arm_collision.py +0 -0
  140. {openscvx-1 → openscvx-2.dev2}/examples/arm/7_dof_arm_vp.py +0 -0
  141. {openscvx-1 → openscvx-2.dev2}/examples/arm/franka_fr3v2_viewplanning.py +0 -0
  142. {openscvx-1 → openscvx-2.dev2}/examples/car/dubins_car.py +0 -0
  143. {openscvx-1 → openscvx-2.dev2}/examples/car/dubins_car_disjoint.py +0 -0
  144. {openscvx-1 → openscvx-2.dev2}/examples/car/dubins_car_obstacle_conditional.py +0 -0
  145. {openscvx-1 → openscvx-2.dev2}/examples/car/dubins_car_obstacle_stl.py +0 -0
  146. {openscvx-1 → openscvx-2.dev2}/examples/car/dubins_car_stl_or.py +0 -0
  147. {openscvx-1 → openscvx-2.dev2}/examples/car/dubins_car_waypoint_stl.py +0 -0
  148. {openscvx-1 → openscvx-2.dev2}/examples/drone/cinema_vp.py +0 -0
  149. {openscvx-1 → openscvx-2.dev2}/examples/drone/dr_double_integrator.py +0 -0
  150. {openscvx-1 → openscvx-2.dev2}/examples/drone/dr_vp.py +0 -0
  151. {openscvx-1 → openscvx-2.dev2}/examples/drone/dr_vp_nodal.py +0 -0
  152. {openscvx-1 → openscvx-2.dev2}/examples/drone/dr_vp_polytope.py +0 -0
  153. {openscvx-1 → openscvx-2.dev2}/examples/drone/drone_racing.py +0 -0
  154. {openscvx-1 → openscvx-2.dev2}/examples/drone/logo.py +0 -0
  155. {openscvx-1 → openscvx-2.dev2}/examples/drone/logo_utils/acl_logo.svg +0 -0
  156. {openscvx-1 → openscvx-2.dev2}/examples/drone/logo_utils/svg_path_utils.py +0 -0
  157. {openscvx-1 → openscvx-2.dev2}/examples/drone/obstacle_avoidance.py +0 -0
  158. {openscvx-1 → openscvx-2.dev2}/examples/drone/obstacle_avoidance_nodal.py +0 -0
  159. {openscvx-1 → openscvx-2.dev2}/examples/drone/obstacle_avoidance_vmap.py +0 -0
  160. {openscvx-1 → openscvx-2.dev2}/examples/mjx/cartpole_mjx.py +0 -0
  161. {openscvx-1 → openscvx-2.dev2}/examples/mjx/double_cartpole_mjx.py +0 -0
  162. {openscvx-1 → openscvx-2.dev2}/examples/mjx/skydio_x2_mjx.py +0 -0
  163. {openscvx-1 → openscvx-2.dev2}/examples/mjx/triple_cartpole_3d_mjx.py +0 -0
  164. {openscvx-1 → openscvx-2.dev2}/examples/mjx/triple_cartpole_game.py +0 -0
  165. {openscvx-1 → openscvx-2.dev2}/examples/mjx/triple_cartpole_mjx.py +0 -0
  166. {openscvx-1 → openscvx-2.dev2}/examples/mpc/double_integrator_discrete.py +0 -0
  167. {openscvx-1 → openscvx-2.dev2}/examples/mpc/double_integrator_drone_racing.py +0 -0
  168. {openscvx-1 → openscvx-2.dev2}/examples/mpc/dubins_car_circle_analytical.py +0 -0
  169. {openscvx-1 → openscvx-2.dev2}/examples/mpc/dubins_car_circle_discrete.py +0 -0
  170. {openscvx-1 → openscvx-2.dev2}/examples/mpc/realtime_double_integrator_drone_racing.py +0 -0
  171. {openscvx-1 → openscvx-2.dev2}/examples/plotting.py +0 -0
  172. {openscvx-1 → openscvx-2.dev2}/examples/plotting_viser.py +0 -0
  173. {openscvx-1 → openscvx-2.dev2}/examples/realtime/3DoF_pdg_realtime.py +0 -0
  174. {openscvx-1 → openscvx-2.dev2}/examples/realtime/6DoF_pdg_realtime.py +0 -0
  175. {openscvx-1 → openscvx-2.dev2}/examples/realtime/base_problems/3DoF_pdg_realtime_base.py +0 -0
  176. {openscvx-1 → openscvx-2.dev2}/examples/realtime/base_problems/6DoF_pdg_realtime_base.py +0 -0
  177. {openscvx-1 → openscvx-2.dev2}/examples/realtime/base_problems/cinema_vp_realtime_base.py +0 -0
  178. {openscvx-1 → openscvx-2.dev2}/examples/realtime/base_problems/drone_racing_realtime_base.py +0 -0
  179. {openscvx-1 → openscvx-2.dev2}/examples/realtime/base_problems/dubins_car_realtime_base.py +0 -0
  180. {openscvx-1 → openscvx-2.dev2}/examples/realtime/base_problems/obstacle_avoidance_realtime_base.py +0 -0
  181. {openscvx-1 → openscvx-2.dev2}/examples/realtime/cinema_vp_realtime.py +0 -0
  182. {openscvx-1 → openscvx-2.dev2}/examples/realtime/drone_racing_realtime.py +0 -0
  183. {openscvx-1 → openscvx-2.dev2}/examples/realtime/dubins_car_realtime.py +0 -0
  184. {openscvx-1 → openscvx-2.dev2}/examples/realtime/obstacle_avoidance_realtime.py +0 -0
  185. {openscvx-1 → openscvx-2.dev2}/examples/rocket/3DoF_pdg.py +0 -0
  186. {openscvx-1 → openscvx-2.dev2}/examples/spacecraft/halo_orbit.py +0 -0
  187. {openscvx-1 → openscvx-2.dev2}/examples/spacecraft/hohmann_transfer.py +0 -0
  188. {openscvx-1 → openscvx-2.dev2}/examples/spacecraft/proxops_cw.py +0 -0
  189. {openscvx-1 → openscvx-2.dev2}/figures/ctlos_cine.gif +0 -0
  190. {openscvx-1 → openscvx-2.dev2}/figures/ctlos_dr.gif +0 -0
  191. {openscvx-1 → openscvx-2.dev2}/figures/dtlos_cine.gif +0 -0
  192. {openscvx-1 → openscvx-2.dev2}/figures/dtlos_dr.gif +0 -0
  193. {openscvx-1 → openscvx-2.dev2}/figures/openscvx_logo.svg +0 -0
  194. {openscvx-1 → openscvx-2.dev2}/figures/oscvx_structure_full_dark.svg +0 -0
  195. {openscvx-1 → openscvx-2.dev2}/figures/video_preview.png +0 -0
  196. {openscvx-1 → openscvx-2.dev2}/material/__init__.py +0 -0
  197. {openscvx-1 → openscvx-2.dev2}/openscvx/__init__.py +0 -0
  198. {openscvx-1 → openscvx-2.dev2}/openscvx/__main__.py +0 -0
  199. {openscvx-1 → openscvx-2.dev2}/openscvx/algorithms/__init__.py +0 -0
  200. {openscvx-1 → openscvx-2.dev2}/openscvx/algorithms/augmented_lagrangian.py +0 -0
  201. {openscvx-1 → openscvx-2.dev2}/openscvx/algorithms/base.py +0 -0
  202. {openscvx-1 → openscvx-2.dev2}/openscvx/algorithms/constant_proximal_weight.py +0 -0
  203. {openscvx-1 → openscvx-2.dev2}/openscvx/algorithms/optimization_results.py +0 -0
  204. {openscvx-1 → openscvx-2.dev2}/openscvx/algorithms/ramp_proximal_weight.py +0 -0
  205. {openscvx-1 → openscvx-2.dev2}/openscvx/algorithms/weights.py +0 -0
  206. {openscvx-1 → openscvx-2.dev2}/openscvx/config.py +0 -0
  207. {openscvx-1 → openscvx-2.dev2}/openscvx/discretization/__init__.py +0 -0
  208. {openscvx-1 → openscvx-2.dev2}/openscvx/discretization/base.py +0 -0
  209. {openscvx-1 → openscvx-2.dev2}/openscvx/discretization/discretize_linearize.py +0 -0
  210. {openscvx-1 → openscvx-2.dev2}/openscvx/discretization/linearize_discretize.py +0 -0
  211. {openscvx-1 → openscvx-2.dev2}/openscvx/discretization/linearize_discretize_sparse.py +0 -0
  212. {openscvx-1 → openscvx-2.dev2}/openscvx/discretization/sparse_utils/__init__.py +0 -0
  213. {openscvx-1 → openscvx-2.dev2}/openscvx/discretization/sparse_utils/bcoo_helpers.py +0 -0
  214. {openscvx-1 → openscvx-2.dev2}/openscvx/discretization/sparse_utils/sparse_jacobian.py +0 -0
  215. {openscvx-1 → openscvx-2.dev2}/openscvx/expert/__init__.py +0 -0
  216. {openscvx-1 → openscvx-2.dev2}/openscvx/expert/byof.py +0 -0
  217. {openscvx-1 → openscvx-2.dev2}/openscvx/expert/lowering.py +0 -0
  218. {openscvx-1 → openscvx-2.dev2}/openscvx/expert/validation.py +0 -0
  219. {openscvx-1 → openscvx-2.dev2}/openscvx/init/__init__.py +0 -0
  220. {openscvx-1 → openscvx-2.dev2}/openscvx/init/interpolation.py +0 -0
  221. {openscvx-1 → openscvx-2.dev2}/openscvx/init/inverse_kinematics.py +0 -0
  222. {openscvx-1 → openscvx-2.dev2}/openscvx/integrations/__init__.py +0 -0
  223. {openscvx-1 → openscvx-2.dev2}/openscvx/integrations/menagerie.py +0 -0
  224. {openscvx-1 → openscvx-2.dev2}/openscvx/integrations/mjx.py +0 -0
  225. {openscvx-1 → openscvx-2.dev2}/openscvx/integrators/__init__.py +0 -0
  226. {openscvx-1 → openscvx-2.dev2}/openscvx/integrators/diffrax.py +0 -0
  227. {openscvx-1 → openscvx-2.dev2}/openscvx/integrators/runge_kutta.py +0 -0
  228. {openscvx-1 → openscvx-2.dev2}/openscvx/loader.py +0 -0
  229. {openscvx-1 → openscvx-2.dev2}/openscvx/lowered/__init__.py +0 -0
  230. {openscvx-1 → openscvx-2.dev2}/openscvx/lowered/cvxpy_constraints.py +0 -0
  231. {openscvx-1 → openscvx-2.dev2}/openscvx/lowered/cvxpy_variables.py +0 -0
  232. {openscvx-1 → openscvx-2.dev2}/openscvx/lowered/dynamics.py +0 -0
  233. {openscvx-1 → openscvx-2.dev2}/openscvx/lowered/jax_constraints.py +0 -0
  234. {openscvx-1 → openscvx-2.dev2}/openscvx/lowered/parameters.py +0 -0
  235. {openscvx-1 → openscvx-2.dev2}/openscvx/lowered/problem.py +0 -0
  236. {openscvx-1 → openscvx-2.dev2}/openscvx/lowered/unified.py +0 -0
  237. {openscvx-1 → openscvx-2.dev2}/openscvx/plotting/__init__.py +0 -0
  238. {openscvx-1 → openscvx-2.dev2}/openscvx/plotting/plotting.py +0 -0
  239. {openscvx-1 → openscvx-2.dev2}/openscvx/plotting/scp_iteration.py +0 -0
  240. {openscvx-1 → openscvx-2.dev2}/openscvx/plotting/viser/__init__.py +0 -0
  241. {openscvx-1 → openscvx-2.dev2}/openscvx/plotting/viser/animated.py +0 -0
  242. {openscvx-1 → openscvx-2.dev2}/openscvx/plotting/viser/orbits.py +0 -0
  243. {openscvx-1 → openscvx-2.dev2}/openscvx/plotting/viser/plotly_integration.py +0 -0
  244. {openscvx-1 → openscvx-2.dev2}/openscvx/plotting/viser/primitives.py +0 -0
  245. {openscvx-1 → openscvx-2.dev2}/openscvx/plotting/viser/scp.py +0 -0
  246. {openscvx-1 → openscvx-2.dev2}/openscvx/problem.py +0 -0
  247. {openscvx-1 → openscvx-2.dev2}/openscvx/propagation/__init__.py +0 -0
  248. {openscvx-1 → openscvx-2.dev2}/openscvx/propagation/post_processing.py +0 -0
  249. {openscvx-1 → openscvx-2.dev2}/openscvx/propagation/propagation.py +0 -0
  250. {openscvx-1 → openscvx-2.dev2}/openscvx/solvers/__init__.py +0 -0
  251. {openscvx-1 → openscvx-2.dev2}/openscvx/solvers/base.py +0 -0
  252. {openscvx-1 → openscvx-2.dev2}/openscvx/solvers/ptr_solver.py +0 -0
  253. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/__init__.py +0 -0
  254. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/augmentation.py +0 -0
  255. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/builder.py +0 -0
  256. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/constraint_set.py +0 -0
  257. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/expr/__init__.py +0 -0
  258. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/expr/arithmetic.py +0 -0
  259. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/expr/array.py +0 -0
  260. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/expr/constraint.py +0 -0
  261. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/expr/control.py +0 -0
  262. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/expr/expr.py +0 -0
  263. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/expr/lie/__init__.py +0 -0
  264. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/expr/lie/adjoint.py +0 -0
  265. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/expr/lie/se3.py +0 -0
  266. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/expr/lie/so3.py +0 -0
  267. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/expr/linalg.py +0 -0
  268. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/expr/logic.py +0 -0
  269. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/expr/math.py +0 -0
  270. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/expr/parameter.py +0 -0
  271. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/expr/spatial.py +0 -0
  272. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/expr/state.py +0 -0
  273. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/expr/stl.py +0 -0
  274. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/expr/stljax.py +0 -0
  275. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/expr/time.py +0 -0
  276. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/expr/variable.py +0 -0
  277. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/expr/vmap.py +0 -0
  278. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/lower.py +0 -0
  279. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/lowerers/__init__.py +0 -0
  280. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/lowerers/cvxpy/__init__.py +0 -0
  281. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/lowerers/cvxpy/_lowerer.py +0 -0
  282. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/lowerers/cvxpy/_registry.py +0 -0
  283. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/lowerers/cvxpy/arithmetic.py +0 -0
  284. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/lowerers/cvxpy/array.py +0 -0
  285. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/lowerers/cvxpy/constraint.py +0 -0
  286. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/lowerers/cvxpy/control.py +0 -0
  287. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/lowerers/cvxpy/expr.py +0 -0
  288. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/lowerers/cvxpy/linalg.py +0 -0
  289. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/lowerers/cvxpy/logic.py +0 -0
  290. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/lowerers/cvxpy/math.py +0 -0
  291. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/lowerers/cvxpy/state.py +0 -0
  292. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/lowerers/jax/__init__.py +0 -0
  293. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/lowerers/jax/_lowerer.py +0 -0
  294. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/lowerers/jax/_registry.py +0 -0
  295. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/lowerers/jax/arithmetic.py +0 -0
  296. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/lowerers/jax/array.py +0 -0
  297. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/lowerers/jax/constraint.py +0 -0
  298. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/lowerers/jax/control.py +0 -0
  299. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/lowerers/jax/expr.py +0 -0
  300. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/lowerers/jax/lie.py +0 -0
  301. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/lowerers/jax/linalg.py +0 -0
  302. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/lowerers/jax/logic.py +0 -0
  303. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/lowerers/jax/math.py +0 -0
  304. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/lowerers/jax/spatial.py +0 -0
  305. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/lowerers/jax/state.py +0 -0
  306. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/lowerers/jax/stl.py +0 -0
  307. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/lowerers/jax/stljax.py +0 -0
  308. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/lowerers/jax/vmap.py +0 -0
  309. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/parser/__init__.py +0 -0
  310. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/parser/_registry.py +0 -0
  311. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/parser/array.py +0 -0
  312. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/parser/constraint.py +0 -0
  313. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/parser/lie.py +0 -0
  314. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/parser/linalg.py +0 -0
  315. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/parser/logic.py +0 -0
  316. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/parser/math.py +0 -0
  317. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/parser/parser.py +0 -0
  318. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/parser/spatial.py +0 -0
  319. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/parser/stl.py +0 -0
  320. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/parser/stljax.py +0 -0
  321. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/parser/tokenizer.py +0 -0
  322. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/preprocessing.py +0 -0
  323. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/problem.py +0 -0
  324. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/sparsity.py +0 -0
  325. {openscvx-1 → openscvx-2.dev2}/openscvx/symbolic/unified.py +0 -0
  326. {openscvx-1 → openscvx-2.dev2}/openscvx/utils/__init__.py +0 -0
  327. {openscvx-1 → openscvx-2.dev2}/openscvx/utils/cache.py +0 -0
  328. {openscvx-1 → openscvx-2.dev2}/openscvx/utils/caching.py +0 -0
  329. {openscvx-1 → openscvx-2.dev2}/openscvx/utils/printing.py +0 -0
  330. {openscvx-1 → openscvx-2.dev2}/openscvx/utils/profiling.py +0 -0
  331. {openscvx-1 → openscvx-2.dev2}/openscvx/utils/utils.py +0 -0
  332. {openscvx-1 → openscvx-2.dev2}/openscvx.egg-info/dependency_links.txt +0 -0
  333. {openscvx-1 → openscvx-2.dev2}/openscvx.egg-info/entry_points.txt +0 -0
  334. {openscvx-1 → openscvx-2.dev2}/openscvx.egg-info/top_level.txt +0 -0
  335. {openscvx-1 → openscvx-2.dev2}/setup.cfg +0 -0
  336. {openscvx-1 → openscvx-2.dev2}/tests/__init__.py +0 -0
  337. {openscvx-1 → openscvx-2.dev2}/tests/brachistochrone_analytical.py +0 -0
  338. {openscvx-1 → openscvx-2.dev2}/tests/expr/__init__.py +0 -0
  339. {openscvx-1 → openscvx-2.dev2}/tests/fixtures/brachistochrone.json +0 -0
  340. {openscvx-1 → openscvx-2.dev2}/tests/fixtures/brachistochrone.yaml +0 -0
  341. {openscvx-1 → openscvx-2.dev2}/tests/hohmann_analytical.py +0 -0
  342. {openscvx-1 → openscvx-2.dev2}/tests/integrations/__init__.py +0 -0
  343. {openscvx-1 → openscvx-2.dev2}/tests/integrations/test_mjx.py +0 -0
  344. {openscvx-1 → openscvx-2.dev2}/tests/symbolic/__init__.py +0 -0
  345. {openscvx-1 → openscvx-2.dev2}/tests/symbolic/expr/__init__.py +0 -0
  346. {openscvx-1 → openscvx-2.dev2}/tests/symbolic/expr/test_arithmetic.py +0 -0
  347. {openscvx-1 → openscvx-2.dev2}/tests/symbolic/expr/test_array.py +0 -0
  348. {openscvx-1 → openscvx-2.dev2}/tests/symbolic/expr/test_constraint.py +0 -0
  349. {openscvx-1 → openscvx-2.dev2}/tests/symbolic/expr/test_expr.py +0 -0
  350. {openscvx-1 → openscvx-2.dev2}/tests/symbolic/expr/test_lie.py +0 -0
  351. {openscvx-1 → openscvx-2.dev2}/tests/symbolic/expr/test_linalg.py +0 -0
  352. {openscvx-1 → openscvx-2.dev2}/tests/symbolic/expr/test_logic.py +0 -0
  353. {openscvx-1 → openscvx-2.dev2}/tests/symbolic/expr/test_math.py +0 -0
  354. {openscvx-1 → openscvx-2.dev2}/tests/symbolic/expr/test_node_reference.py +0 -0
  355. {openscvx-1 → openscvx-2.dev2}/tests/symbolic/expr/test_parameters.py +0 -0
  356. {openscvx-1 → openscvx-2.dev2}/tests/symbolic/expr/test_scaling.py +0 -0
  357. {openscvx-1 → openscvx-2.dev2}/tests/symbolic/expr/test_spatial.py +0 -0
  358. {openscvx-1 → openscvx-2.dev2}/tests/symbolic/expr/test_variable.py +0 -0
  359. {openscvx-1 → openscvx-2.dev2}/tests/symbolic/expr/test_vmap.py +0 -0
  360. {openscvx-1 → openscvx-2.dev2}/tests/symbolic/parser/__init__.py +0 -0
  361. {openscvx-1 → openscvx-2.dev2}/tests/symbolic/parser/test_array.py +0 -0
  362. {openscvx-1 → openscvx-2.dev2}/tests/symbolic/parser/test_constraint.py +0 -0
  363. {openscvx-1 → openscvx-2.dev2}/tests/symbolic/parser/test_lie.py +0 -0
  364. {openscvx-1 → openscvx-2.dev2}/tests/symbolic/parser/test_linalg.py +0 -0
  365. {openscvx-1 → openscvx-2.dev2}/tests/symbolic/parser/test_load.py +0 -0
  366. {openscvx-1 → openscvx-2.dev2}/tests/symbolic/parser/test_logic.py +0 -0
  367. {openscvx-1 → openscvx-2.dev2}/tests/symbolic/parser/test_math.py +0 -0
  368. {openscvx-1 → openscvx-2.dev2}/tests/symbolic/parser/test_parser.py +0 -0
  369. {openscvx-1 → openscvx-2.dev2}/tests/symbolic/parser/test_spatial.py +0 -0
  370. {openscvx-1 → openscvx-2.dev2}/tests/symbolic/parser/test_stl.py +0 -0
  371. {openscvx-1 → openscvx-2.dev2}/tests/symbolic/parser/test_tokenizer.py +0 -0
  372. {openscvx-1 → openscvx-2.dev2}/tests/symbolic/parser/test_vmap.py +0 -0
  373. {openscvx-1 → openscvx-2.dev2}/tests/symbolic/test_augmentation.py +0 -0
  374. {openscvx-1 → openscvx-2.dev2}/tests/symbolic/test_hashing.py +0 -0
  375. {openscvx-1 → openscvx-2.dev2}/tests/symbolic/test_lower_cvxpy.py +0 -0
  376. {openscvx-1 → openscvx-2.dev2}/tests/symbolic/test_lower_jax.py +0 -0
  377. {openscvx-1 → openscvx-2.dev2}/tests/symbolic/test_preprocessing.py +0 -0
  378. {openscvx-1 → openscvx-2.dev2}/tests/symbolic/test_sparsity.py +0 -0
  379. {openscvx-1 → openscvx-2.dev2}/tests/symbolic/test_unified.py +0 -0
  380. {openscvx-1 → openscvx-2.dev2}/tests/test_autotuning.py +0 -0
  381. {openscvx-1 → openscvx-2.dev2}/tests/test_cvxpygen_optional.py +0 -0
  382. {openscvx-1 → openscvx-2.dev2}/tests/test_discretization.py +0 -0
  383. {openscvx-1 → openscvx-2.dev2}/tests/test_expert.py +0 -0
  384. {openscvx-1 → openscvx-2.dev2}/tests/test_impulsive.py +0 -0
  385. {openscvx-1 → openscvx-2.dev2}/tests/test_init.py +0 -0
  386. {openscvx-1 → openscvx-2.dev2}/tests/test_integrators.py +0 -0
  387. {openscvx-1 → openscvx-2.dev2}/tests/test_loader.py +0 -0
  388. {openscvx-1 → openscvx-2.dev2}/tests/test_optimization_results.py +0 -0
  389. {openscvx-1 → openscvx-2.dev2}/tests/test_plotting.py +0 -0
  390. {openscvx-1 → openscvx-2.dev2}/tests/test_propagation.py +0 -0
@@ -12,6 +12,11 @@ jobs:
12
12
  docs:
13
13
  name: 📖 Documentation
14
14
  runs-on: ubuntu-latest
15
+ env:
16
+ # Material stderr banner (MkDocs 2.0 blog); CI uses MkDocs 1.x + --strict.
17
+ NO_MKDOCS_2_WARNING: "true"
18
+ # ProperDocs may emit a follow-up WARNING; keep --strict clean.
19
+ DISABLE_MKDOCS_2_WARNING: "true"
15
20
 
16
21
  steps:
17
22
  - name: Checkout repository
@@ -38,20 +43,23 @@ jobs:
38
43
  - name: Cache MkDocs build
39
44
  uses: actions/cache@v4
40
45
  with:
41
- key: mkdocs-material-${{ hashFiles('mkdocs.yml', 'docs/**') }}
46
+ key: mkdocs-material-${{ hashFiles('mkdocs.yml', 'docs/**', 'material/overrides/**', 'scripts/gen_ref_pages.py', 'scripts/gen_example_pages.py', 'scripts/mkdocs_copy_viser_client_hook.py') }}
42
47
  path: .cache
43
48
  restore-keys: |
44
49
  mkdocs-material-
45
50
 
46
51
  - name: Install system dependencies
47
- run: sudo apt-get update && sudo apt-get install -y pngquant
52
+ run: >-
53
+ sudo apt-get update &&
54
+ sudo apt-get install -y pngquant libcairo2-dev libfreetype6-dev libffi-dev
55
+ libjpeg-dev libpng-dev zlib1g-dev
48
56
 
49
57
  # - name: Install MkDocs Material Insiders
50
58
  # run: uv pip install --system git+https://${{ secrets.MKDOCS_INSIDERS_TOKEN }}@github.com/squidfunk/mkdocs-material-insiders.git
51
59
 
52
60
  - name: Install documentation tools
53
61
  run: |
54
- uv pip install --system mkdocs-material mkdocstrings-python
62
+ uv pip install --system "mkdocs-material[imaging]" mkdocstrings-python
55
63
  uv pip install --system mkdocs-gen-files mkdocs-literate-nav mkdocs-section-index
56
64
  uv pip install --system mike
57
65
 
@@ -209,7 +209,9 @@ check_lint.py
209
209
  MUJOCO_LOG.TXT
210
210
 
211
211
  # MkDocs Material Insiders (installed from GitHub in CI, not committed)
212
- material/
213
- # But allow custom overrides to be committed
212
+ # Ignore contents of material/ but not material/overrides/ (Git cannot un-ignore
213
+ # paths inside an ignored directory when the rule is material/).
214
+ material/*
214
215
  !material/overrides/
216
+ !material/overrides/**
215
217
  src/
@@ -20,7 +20,6 @@ pip install -e ".[test]"
20
20
  ```
21
21
 
22
22
  For additional features, you can install optional dependencies:
23
- - `pip install -e ".[gui]"` - GUI visualization tools
24
23
  - `pip install -e ".[cvxpygen]"` - Code generation support
25
24
  - `pip install -e ".[stl]"` - STL (Signal Temporal Logic) constraints
26
25
 
@@ -204,11 +203,17 @@ def solve(self, max_iterations: int = 100) -> OptimizationResult:
204
203
  To preview documentation locally, first install the dependencies:
205
204
 
206
205
  ```bash
207
- pip install mkdocs-material mkdocstrings-python mkdocs-gen-files mkdocs-literate-nav mkdocs-section-index
206
+ pip install "mkdocs-material[imaging]" mkdocstrings-python mkdocs-gen-files mkdocs-literate-nav mkdocs-section-index
208
207
  ```
209
208
 
209
+ The `social` plugin (enabled in `mkdocs.yml`) uses **CairoSVG**, which loads the native **Cairo** library. A `pip`-only `cairosvg` on macOS often cannot find `libcairo` and will spam warnings during `mkdocs build` / `mkdocs serve`. Install Cairo into the same environment (for example `conda install -c conda-forge cairo cairosvg`) or install Cairo via Homebrew so the dynamic linker can resolve it. Uninstalling `cairosvg` does not silence the build: the plugin will warn on every page that imaging dependencies are missing.
210
+
210
211
  Then serve the documentation locally:
211
212
 
212
213
  ```bash
213
214
  mkdocs serve
214
215
  ```
216
+
217
+ To silence MkDocs 2.0 / ProperDocs notices when building with **`--strict`**, set **`NO_MKDOCS_2_WARNING=true`** (Material’s stderr banner) and, if you use ProperDocs, **`DISABLE_MKDOCS_2_WARNING=true`** for the pip-style WARNING; the documentation workflow sets both for CI.
218
+
219
+ The version dropdown uses Material’s **mike** integration and expects a `versions.json` at the site root. Plain `mkdocs serve` does not run `mike deploy`, so the repo includes a minimal **`docs/versions.json`** (copied into the build) to avoid a 404 in local previews. On **GitHub Pages**, CI replaces the published root with **`mike deploy`**, which writes the real multi-version manifest. To preview multiple versions locally the same way as production, use **`mike serve`** after you have a `gh-pages` branch with deployed versions.
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openscvx
3
- Version: 1
3
+ Version: 2.dev2
4
4
  Summary: A general Python-based successive convexification implementation which uses a JAX backend.
5
5
  Author-email: Chris Hayner and Griffin Norris <haynec@uw.edu>
6
6
  License: Apache Software License
7
- Project-URL: Homepage, https://openscvx.github.io/openscvx/
7
+ Project-URL: Homepage, https://openscvx.github.io/OpenSCvx/
8
8
  Classifier: Programming Language :: Python :: 3
9
9
  Classifier: License :: OSI Approved :: Apache Software License
10
- Requires-Python: >=3.9
10
+ Requires-Python: >=3.11
11
11
  Description-Content-Type: text/markdown
12
12
  License-File: LICENSE
13
13
  Requires-Dist: cvxpy>=1.8.1
@@ -23,12 +23,6 @@ Requires-Dist: viser
23
23
  Requires-Dist: matplotlib
24
24
  Requires-Dist: pyyaml
25
25
  Requires-Dist: pydantic>=2.0
26
- Provides-Extra: gui
27
- Requires-Dist: pyqtgraph; extra == "gui"
28
- Requires-Dist: PyQt5; extra == "gui"
29
- Requires-Dist: scipy; extra == "gui"
30
- Requires-Dist: PyOpenGL; extra == "gui"
31
- Requires-Dist: PyOpenGL_accelerate; extra == "gui"
32
26
  Provides-Extra: cvxpygen
33
27
  Requires-Dist: cvxpygen; extra == "cvxpygen"
34
28
  Requires-Dist: qocogen; extra == "cvxpygen"
@@ -156,11 +150,11 @@ uv pip install openscvx
156
150
  ```
157
151
 
158
152
  > [!TIP]
159
- > **Optional Dependencies**
153
+ > **Optional dependencies**
160
154
  >
161
- > For GUI support or CVXPYGen code generation:
155
+ > For CVXPYGen code generation:
162
156
  > ```bash
163
- > pip install openscvx[gui,cvxpygen]
157
+ > pip install openscvx[cvxpygen]
164
158
  > ```
165
159
 
166
160
  > [!TIP]
@@ -210,13 +204,13 @@ uv pip install -e .
210
204
  > git submodule update --init third_party/mujoco_menagerie
211
205
  > ```
212
206
 
213
- ## Getting Started
207
+ ## Documentation
214
208
 
215
- Check out the OpenSCvx documentation to help you get started
209
+ Check out the OpenSCvx documentation:
216
210
 
217
- - [Getting Started Docs](https://openscvx.github.io/OpenSCvx/latest/getting-started/)
218
211
  - [Users Guide](https://openscvx.github.io/OpenSCvx/latest/UsersGuide/00_introduction/)
219
- - [API Reference](https://openscvx.github.io/OpenSCvx/latest/Reference/problem/)
212
+ - [API Reference](https://openscvx.github.io/OpenSCvx/latest/Reference/)
213
+ - [Examples overview](https://openscvx.github.io/OpenSCvx/latest/examples/)
220
214
 
221
215
  ### Running the Examples
222
216
 
@@ -107,11 +107,11 @@ uv pip install openscvx
107
107
  ```
108
108
 
109
109
  > [!TIP]
110
- > **Optional Dependencies**
110
+ > **Optional dependencies**
111
111
  >
112
- > For GUI support or CVXPYGen code generation:
112
+ > For CVXPYGen code generation:
113
113
  > ```bash
114
- > pip install openscvx[gui,cvxpygen]
114
+ > pip install openscvx[cvxpygen]
115
115
  > ```
116
116
 
117
117
  > [!TIP]
@@ -161,13 +161,13 @@ uv pip install -e .
161
161
  > git submodule update --init third_party/mujoco_menagerie
162
162
  > ```
163
163
 
164
- ## Getting Started
164
+ ## Documentation
165
165
 
166
- Check out the OpenSCvx documentation to help you get started
166
+ Check out the OpenSCvx documentation:
167
167
 
168
- - [Getting Started Docs](https://openscvx.github.io/OpenSCvx/latest/getting-started/)
169
168
  - [Users Guide](https://openscvx.github.io/OpenSCvx/latest/UsersGuide/00_introduction/)
170
- - [API Reference](https://openscvx.github.io/OpenSCvx/latest/Reference/problem/)
169
+ - [API Reference](https://openscvx.github.io/OpenSCvx/latest/Reference/)
170
+ - [Examples overview](https://openscvx.github.io/OpenSCvx/latest/examples/)
171
171
 
172
172
  ### Running the Examples
173
173