openscvx 0.5.2.dev1__tar.gz → 0.5.2.dev11__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 (408) hide show
  1. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/.github/workflows/_docs.yml +11 -3
  2. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/.gitignore +10 -2
  3. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/CONTRIBUTING.md +7 -2
  4. {openscvx-0.5.2.dev1/openscvx.egg-info → openscvx-0.5.2.dev11}/PKG-INFO +15 -17
  5. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/README.md +8 -8
  6. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/docs/UnderTheHood/lowering_architecture.md +36 -0
  7. openscvx-0.5.2.dev11/docs/assets/viser-client/index.html +20 -0
  8. openscvx-0.5.2.dev11/docs/assets/viser-recordings/drone_racing.viser +0 -0
  9. openscvx-0.5.2.dev11/docs/assets/viser-recordings/franka_fr3v2_pick_place.viser +0 -0
  10. openscvx-0.5.2.dev11/docs/index.md +38 -0
  11. openscvx-0.5.2.dev11/docs/versions.json +7 -0
  12. openscvx-0.5.2.dev11/examples/_viser_embed_export.py +174 -0
  13. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/abstract/brachistochrone.py +13 -4
  14. openscvx-0.5.2.dev11/examples/abstract/hypersensitive.py +121 -0
  15. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/arm/franka_fr3v2_pick_place.py +107 -82
  16. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/mjx/cartpole_mjx.py +13 -19
  17. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/mjx/double_cartpole_mjx.py +9 -18
  18. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/mjx/skydio_x2_mjx.py +14 -21
  19. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/mjx/triple_cartpole_3d_mjx.py +9 -18
  20. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/mjx/triple_cartpole_mjx.py +10 -19
  21. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/rocket/6DoF_pdg.py +53 -46
  22. openscvx-0.5.2.dev11/examples/spacecraft/let_transfer.py +1131 -0
  23. openscvx-0.5.2.dev11/figures/openscvx_logo_square.png +0 -0
  24. openscvx-0.5.2.dev11/material/overrides/assets/stylesheets/custom.css +465 -0
  25. openscvx-0.5.2.dev11/material/overrides/assets/stylesheets/home-dropin.css +231 -0
  26. openscvx-0.5.2.dev11/material/overrides/assets/stylesheets/home-hero.css +930 -0
  27. openscvx-0.5.2.dev11/material/overrides/assets/stylesheets/home-viser.css +138 -0
  28. openscvx-0.5.2.dev11/material/overrides/home.html +21 -0
  29. openscvx-0.5.2.dev11/material/overrides/main.html +11 -0
  30. openscvx-0.5.2.dev11/material/overrides/partials/home-diagram.html +71 -0
  31. openscvx-0.5.2.dev11/material/overrides/partials/home-dropin-banner.html +41 -0
  32. openscvx-0.5.2.dev11/material/overrides/partials/home-hero.html +25 -0
  33. openscvx-0.5.2.dev11/material/overrides/partials/home-pipeline.html +90 -0
  34. openscvx-0.5.2.dev11/material/overrides/partials/home-viser-strip.html +72 -0
  35. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/mkdocs.yml +18 -9
  36. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/__init__.py +27 -1
  37. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/_version.py +3 -3
  38. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/algorithms/__init__.py +13 -4
  39. openscvx-0.5.2.dev11/openscvx/algorithms/autotuner/__init__.py +17 -0
  40. openscvx-0.5.2.dev11/openscvx/algorithms/autotuner/adaptive_proximal_weight.py +190 -0
  41. {openscvx-0.5.2.dev1/openscvx/algorithms → openscvx-0.5.2.dev11/openscvx/algorithms/autotuner}/augmented_lagrangian.py +9 -5
  42. {openscvx-0.5.2.dev1/openscvx/algorithms → openscvx-0.5.2.dev11/openscvx/algorithms/autotuner}/constant_proximal_weight.py +3 -3
  43. {openscvx-0.5.2.dev1/openscvx/algorithms → openscvx-0.5.2.dev11/openscvx/algorithms/autotuner}/ramp_proximal_weight.py +3 -3
  44. openscvx-0.5.2.dev11/openscvx/algorithms/scvx/__init__.py +5 -0
  45. {openscvx-0.5.2.dev1/openscvx/algorithms → openscvx-0.5.2.dev11/openscvx/algorithms/scvx}/penalized_trust_region.py +38 -9
  46. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/discretization/discretize_linearize.py +6 -1
  47. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/discretization/sparse_utils/sparse_jacobian.py +6 -1
  48. openscvx-0.5.2.dev11/openscvx/integrations/__init__.py +66 -0
  49. openscvx-0.5.2.dev11/openscvx/integrations/base.py +89 -0
  50. openscvx-0.5.2.dev11/openscvx/integrations/mjx.py +496 -0
  51. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/loader.py +2 -2
  52. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/lowered/cvxpy_constraints.py +4 -1
  53. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/plotting/viser/server.py +2 -2
  54. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/problem.py +36 -17
  55. openscvx-0.5.2.dev11/openscvx/solvers/__init__.py +103 -0
  56. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/solvers/base.py +124 -36
  57. openscvx-0.5.2.dev1/openscvx/solvers/ptr_solver.py → openscvx-0.5.2.dev11/openscvx/solvers/cvxpy_ptr_solver.py +49 -86
  58. openscvx-0.5.2.dev11/openscvx/solvers/moreau_ptr_solver.py +1125 -0
  59. openscvx-0.5.2.dev11/openscvx/solvers/ptr_solver.py +198 -0
  60. openscvx-0.5.2.dev11/openscvx/solvers/qpax_ptr_solver.py +776 -0
  61. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/hashing.py +16 -3
  62. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/lower.py +6 -7
  63. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/utils/printing.py +9 -1
  64. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11/openscvx.egg-info}/PKG-INFO +15 -17
  65. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx.egg-info/SOURCES.txt +34 -40
  66. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx.egg-info/requires.txt +6 -7
  67. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/pyproject.toml +8 -9
  68. openscvx-0.5.2.dev11/scripts/gen_example_pages.py +239 -0
  69. openscvx-0.5.2.dev11/scripts/gen_ref_pages.py +187 -0
  70. openscvx-0.5.2.dev11/scripts/mkdocs_copy_viser_client_hook.py +52 -0
  71. openscvx-0.5.2.dev11/tests/_marks.py +59 -0
  72. openscvx-0.5.2.dev11/tests/conftest.py +12 -0
  73. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/expr/test_gmsr.py +12 -7
  74. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/integrations/test_mjx.py +2 -69
  75. openscvx-0.5.2.dev11/tests/integrations/test_mjx_dynamics.py +542 -0
  76. openscvx-0.5.2.dev11/tests/solvers/test_moreau_ptr_solver.py +274 -0
  77. openscvx-0.5.2.dev11/tests/solvers/test_qpax_ptr_solver.py +238 -0
  78. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/symbolic/expr/test_stl.py +1 -1
  79. openscvx-0.5.2.dev11/tests/symbolic/parser/__init__.py +0 -0
  80. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/test_autotuning.py +196 -4
  81. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/test_brachistochrone.py +194 -3
  82. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/test_examples.py +1 -1
  83. openscvx-0.5.2.dev1/docs/getting-started.md +0 -239
  84. openscvx-0.5.2.dev1/docs/index.md +0 -9
  85. openscvx-0.5.2.dev1/material/overrides/assets/images/layers/1-background.avif +0 -0
  86. openscvx-0.5.2.dev1/material/overrides/assets/images/layers/1-background@1x.avif +0 -0
  87. openscvx-0.5.2.dev1/material/overrides/assets/images/layers/1-background@2x.avif +0 -0
  88. openscvx-0.5.2.dev1/material/overrides/assets/images/layers/1-background@3x.avif +0 -0
  89. openscvx-0.5.2.dev1/material/overrides/assets/images/layers/1-background@4x.avif +0 -0
  90. openscvx-0.5.2.dev1/material/overrides/assets/images/layers/2-mars.avif +0 -0
  91. openscvx-0.5.2.dev1/material/overrides/assets/images/layers/2-mars@1x.avif +0 -0
  92. openscvx-0.5.2.dev1/material/overrides/assets/images/layers/2-mars@2x.avif +0 -0
  93. openscvx-0.5.2.dev1/material/overrides/assets/images/layers/2-mars@3x.avif +0 -0
  94. openscvx-0.5.2.dev1/material/overrides/assets/images/layers/2-mars@4x.avif +0 -0
  95. openscvx-0.5.2.dev1/material/overrides/assets/images/layers/3-moon.avif +0 -0
  96. openscvx-0.5.2.dev1/material/overrides/assets/images/layers/3-moon@1x.avif +0 -0
  97. openscvx-0.5.2.dev1/material/overrides/assets/images/layers/3-moon@2x.avif +0 -0
  98. openscvx-0.5.2.dev1/material/overrides/assets/images/layers/3-moon@3x.avif +0 -0
  99. openscvx-0.5.2.dev1/material/overrides/assets/images/layers/3-moon@4x.avif +0 -0
  100. openscvx-0.5.2.dev1/material/overrides/assets/images/layers/4-sat1.avif +0 -0
  101. openscvx-0.5.2.dev1/material/overrides/assets/images/layers/4-sat1@1x.avif +0 -0
  102. openscvx-0.5.2.dev1/material/overrides/assets/images/layers/4-sat1@2x.avif +0 -0
  103. openscvx-0.5.2.dev1/material/overrides/assets/images/layers/4-sat1@3x.avif +0 -0
  104. openscvx-0.5.2.dev1/material/overrides/assets/images/layers/4-sat1@4x.avif +0 -0
  105. openscvx-0.5.2.dev1/material/overrides/assets/images/layers/5-space.avif +0 -0
  106. openscvx-0.5.2.dev1/material/overrides/assets/images/layers/5-space@1x.avif +0 -0
  107. openscvx-0.5.2.dev1/material/overrides/assets/images/layers/5-space@2x.avif +0 -0
  108. openscvx-0.5.2.dev1/material/overrides/assets/images/layers/5-space@3x.avif +0 -0
  109. openscvx-0.5.2.dev1/material/overrides/assets/images/layers/5-space@4x.avif +0 -0
  110. openscvx-0.5.2.dev1/material/overrides/assets/images/layers/6-earth.avif +0 -0
  111. openscvx-0.5.2.dev1/material/overrides/assets/images/layers/6-earth@1x.avif +0 -0
  112. openscvx-0.5.2.dev1/material/overrides/assets/images/layers/6-earth@2x.avif +0 -0
  113. openscvx-0.5.2.dev1/material/overrides/assets/images/layers/6-earth@3x.avif +0 -0
  114. openscvx-0.5.2.dev1/material/overrides/assets/images/layers/6-earth@4x.avif +0 -0
  115. openscvx-0.5.2.dev1/material/overrides/assets/javascripts/parallax.js +0 -54
  116. openscvx-0.5.2.dev1/material/overrides/assets/logo.svg +0 -1
  117. openscvx-0.5.2.dev1/material/overrides/assets/stylesheets/custom.css +0 -135
  118. openscvx-0.5.2.dev1/material/overrides/assets/stylesheets/parallax.css +0 -216
  119. openscvx-0.5.2.dev1/material/overrides/home.html +0 -26
  120. openscvx-0.5.2.dev1/material/overrides/main.html +0 -8
  121. openscvx-0.5.2.dev1/material/overrides/partials/parallax/hero.html +0 -46
  122. openscvx-0.5.2.dev1/material/overrides/partials/parallax.html +0 -7
  123. openscvx-0.5.2.dev1/openscvx/integrations/__init__.py +0 -62
  124. openscvx-0.5.2.dev1/openscvx/integrations/mjx.py +0 -323
  125. openscvx-0.5.2.dev1/openscvx/solvers/__init__.py +0 -76
  126. openscvx-0.5.2.dev1/scripts/gen_example_pages.py +0 -103
  127. openscvx-0.5.2.dev1/scripts/gen_ref_pages.py +0 -41
  128. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/.github/assets/logo.svg +0 -0
  129. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/.github/release-drafter.yml +0 -0
  130. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/.github/workflows/branch-name.yml +0 -0
  131. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/.github/workflows/docs.yml +0 -0
  132. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/.github/workflows/lint.yml +0 -0
  133. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/.github/workflows/nightly.yml +0 -0
  134. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/.github/workflows/release-drafter.yml +0 -0
  135. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/.github/workflows/release.yml +0 -0
  136. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/.github/workflows/tests-integration.yml +0 -0
  137. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/.github/workflows/tests-unit.yml +0 -0
  138. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/.gitmodules +0 -0
  139. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/LICENSE +0 -0
  140. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/docs/Foundations/constraint_reformulation.md +0 -0
  141. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/docs/Foundations/control_parameterization.md +0 -0
  142. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/docs/Foundations/discretization.md +0 -0
  143. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/docs/Foundations/ocp.md +0 -0
  144. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/docs/Foundations/scvx.md +0 -0
  145. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/docs/Foundations/time_dilation.md +0 -0
  146. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/docs/UnderTheHood/vectorization_and_vmapping.md +0 -0
  147. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/docs/UsersGuide/00_introduction.md +0 -0
  148. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/docs/UsersGuide/01_hello_world_brachistochrone.md +0 -0
  149. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/docs/UsersGuide/02_drone_racing_constraints.md +0 -0
  150. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/docs/UsersGuide/03_obstacle_avoidance_vmap.md +0 -0
  151. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/docs/UsersGuide/04_viewpoint_constraints.md +0 -0
  152. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/docs/UsersGuide/05_visualization.md +0 -0
  153. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/docs/UsersGuide/06_logic.md +0 -0
  154. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/docs/UsersGuide/07_lie.md +0 -0
  155. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/docs/UsersGuide/08_mpcc.md +0 -0
  156. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/docs/assets/favicon.png +0 -0
  157. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/docs/assets/images/ct-scvx_dark.png +0 -0
  158. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/docs/assets/images/ct-scvx_light.png +0 -0
  159. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/docs/assets/images/ctcs_dark.png +0 -0
  160. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/docs/assets/images/ctcs_light.png +0 -0
  161. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/docs/assets/images/problem_class_dark.png +0 -0
  162. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/docs/assets/images/problem_class_light.png +0 -0
  163. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/docs/assets/logo.svg +0 -0
  164. {openscvx-0.5.2.dev1/figures → openscvx-0.5.2.dev11/docs/assets}/openscvx_logo_square.png +0 -0
  165. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/docs/citation.md +0 -0
  166. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/docs/examples.md +0 -0
  167. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/docs/javascripts/mathjax.js +0 -0
  168. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/abstract/impulsive.py +0 -0
  169. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/abstract/stl_integer_variable.py +0 -0
  170. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/abstract/stl_or.py +0 -0
  171. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/animations/7_dof_arm.py +0 -0
  172. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/animations/_camera.py +0 -0
  173. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/animations/_render.py +0 -0
  174. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/animations/_sensor_view.py +0 -0
  175. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/animations/dr_vp_polytope.py +0 -0
  176. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/animations/franka_fr3v2_pick_place.py +0 -0
  177. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/animations/logo.py +0 -0
  178. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/animations/obstacle_avoidance_vmap.py +0 -0
  179. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/arm/3_dof_arm.py +0 -0
  180. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/arm/7_dof_arm.py +0 -0
  181. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/arm/7_dof_arm_collision.py +0 -0
  182. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/arm/7_dof_arm_vp.py +0 -0
  183. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/arm/franka_fr3v2_viewplanning.py +0 -0
  184. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/car/dubins_car.py +0 -0
  185. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/car/dubins_car_disjoint.py +0 -0
  186. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/car/dubins_car_obstacle_conditional.py +0 -0
  187. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/car/dubins_car_obstacle_stl.py +0 -0
  188. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/car/dubins_car_stl_or.py +0 -0
  189. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/car/dubins_car_waypoint_stl.py +0 -0
  190. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/drone/cinema_vp.py +0 -0
  191. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/drone/dr_double_integrator.py +0 -0
  192. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/drone/dr_vp.py +0 -0
  193. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/drone/dr_vp_nodal.py +0 -0
  194. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/drone/dr_vp_polytope.py +0 -0
  195. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/drone/drone_racing.py +0 -0
  196. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/drone/logo.py +0 -0
  197. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/drone/logo_utils/acl_logo.svg +0 -0
  198. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/drone/logo_utils/svg_path_utils.py +0 -0
  199. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/drone/obstacle_avoidance.py +0 -0
  200. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/drone/obstacle_avoidance_nodal.py +0 -0
  201. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/drone/obstacle_avoidance_vmap.py +0 -0
  202. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/mjx/triple_cartpole_game.py +0 -0
  203. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/mpc/double_integrator_discrete.py +0 -0
  204. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/mpc/double_integrator_drone_racing.py +0 -0
  205. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/mpc/dubins_car_circle_analytical.py +0 -0
  206. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/mpc/dubins_car_circle_discrete.py +0 -0
  207. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/mpc/realtime_double_integrator_drone_racing.py +0 -0
  208. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/plotting.py +0 -0
  209. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/plotting_viser.py +0 -0
  210. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/realtime/3DoF_pdg_realtime.py +0 -0
  211. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/realtime/6DoF_pdg_realtime.py +0 -0
  212. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/realtime/base_problems/3DoF_pdg_realtime_base.py +0 -0
  213. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/realtime/base_problems/6DoF_pdg_realtime_base.py +0 -0
  214. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/realtime/base_problems/cinema_vp_realtime_base.py +0 -0
  215. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/realtime/base_problems/drone_racing_realtime_base.py +0 -0
  216. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/realtime/base_problems/dubins_car_realtime_base.py +0 -0
  217. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/realtime/base_problems/obstacle_avoidance_realtime_base.py +0 -0
  218. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/realtime/cinema_vp_realtime.py +0 -0
  219. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/realtime/drone_racing_realtime.py +0 -0
  220. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/realtime/dubins_car_realtime.py +0 -0
  221. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/realtime/obstacle_avoidance_realtime.py +0 -0
  222. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/rocket/3DoF_pdg.py +0 -0
  223. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/spacecraft/halo_orbit.py +0 -0
  224. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/spacecraft/hohmann_transfer.py +0 -0
  225. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/examples/spacecraft/proxops_cw.py +0 -0
  226. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/figures/ctlos_cine.gif +0 -0
  227. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/figures/ctlos_dr.gif +0 -0
  228. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/figures/dtlos_cine.gif +0 -0
  229. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/figures/dtlos_dr.gif +0 -0
  230. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/figures/openscvx_logo.svg +0 -0
  231. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/figures/oscvx_structure_full_dark.svg +0 -0
  232. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/figures/video_preview.png +0 -0
  233. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/material/__init__.py +0 -0
  234. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/__main__.py +0 -0
  235. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/algorithms/base.py +0 -0
  236. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/algorithms/optimization_results.py +0 -0
  237. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/algorithms/weights.py +0 -0
  238. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/config.py +0 -0
  239. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/discretization/__init__.py +0 -0
  240. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/discretization/base.py +0 -0
  241. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/discretization/linearize_discretize.py +0 -0
  242. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/discretization/linearize_discretize_sparse.py +0 -0
  243. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/discretization/sparse_utils/__init__.py +0 -0
  244. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/discretization/sparse_utils/bcoo_helpers.py +0 -0
  245. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/expert/__init__.py +0 -0
  246. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/expert/byof.py +0 -0
  247. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/expert/lowering.py +0 -0
  248. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/expert/validation.py +0 -0
  249. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/init/__init__.py +0 -0
  250. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/init/interpolation.py +0 -0
  251. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/init/inverse_kinematics.py +0 -0
  252. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/integrations/menagerie.py +0 -0
  253. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/integrators/__init__.py +0 -0
  254. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/integrators/diffrax.py +0 -0
  255. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/integrators/runge_kutta.py +0 -0
  256. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/lowered/__init__.py +0 -0
  257. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/lowered/cvxpy_variables.py +0 -0
  258. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/lowered/dynamics.py +0 -0
  259. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/lowered/jax_constraints.py +0 -0
  260. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/lowered/parameters.py +0 -0
  261. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/lowered/problem.py +0 -0
  262. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/lowered/unified.py +0 -0
  263. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/plotting/__init__.py +0 -0
  264. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/plotting/plotting.py +0 -0
  265. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/plotting/scp_iteration.py +0 -0
  266. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/plotting/viser/__init__.py +0 -0
  267. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/plotting/viser/animated.py +0 -0
  268. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/plotting/viser/orbits.py +0 -0
  269. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/plotting/viser/plotly_integration.py +0 -0
  270. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/plotting/viser/primitives.py +0 -0
  271. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/plotting/viser/scp.py +0 -0
  272. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/propagation/__init__.py +0 -0
  273. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/propagation/post_processing.py +0 -0
  274. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/propagation/propagation.py +0 -0
  275. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/__init__.py +0 -0
  276. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/augmentation.py +0 -0
  277. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/builder.py +0 -0
  278. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/constraint_set.py +0 -0
  279. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/expr/__init__.py +0 -0
  280. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/expr/arithmetic.py +0 -0
  281. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/expr/array.py +0 -0
  282. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/expr/constraint.py +0 -0
  283. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/expr/control.py +0 -0
  284. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/expr/expr.py +0 -0
  285. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/expr/lie/__init__.py +0 -0
  286. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/expr/lie/adjoint.py +0 -0
  287. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/expr/lie/se3.py +0 -0
  288. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/expr/lie/so3.py +0 -0
  289. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/expr/linalg.py +0 -0
  290. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/expr/logic.py +0 -0
  291. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/expr/math.py +0 -0
  292. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/expr/parameter.py +0 -0
  293. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/expr/spatial.py +0 -0
  294. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/expr/state.py +0 -0
  295. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/expr/stl.py +0 -0
  296. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/expr/stljax.py +0 -0
  297. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/expr/time.py +0 -0
  298. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/expr/variable.py +0 -0
  299. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/expr/vmap.py +0 -0
  300. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/lowerers/__init__.py +0 -0
  301. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/lowerers/cvxpy/__init__.py +0 -0
  302. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/lowerers/cvxpy/_lowerer.py +0 -0
  303. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/lowerers/cvxpy/_registry.py +0 -0
  304. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/lowerers/cvxpy/arithmetic.py +0 -0
  305. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/lowerers/cvxpy/array.py +0 -0
  306. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/lowerers/cvxpy/constraint.py +0 -0
  307. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/lowerers/cvxpy/control.py +0 -0
  308. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/lowerers/cvxpy/expr.py +0 -0
  309. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/lowerers/cvxpy/linalg.py +0 -0
  310. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/lowerers/cvxpy/logic.py +0 -0
  311. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/lowerers/cvxpy/math.py +0 -0
  312. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/lowerers/cvxpy/state.py +0 -0
  313. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/lowerers/jax/__init__.py +0 -0
  314. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/lowerers/jax/_lowerer.py +0 -0
  315. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/lowerers/jax/_registry.py +0 -0
  316. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/lowerers/jax/arithmetic.py +0 -0
  317. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/lowerers/jax/array.py +0 -0
  318. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/lowerers/jax/constraint.py +0 -0
  319. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/lowerers/jax/control.py +0 -0
  320. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/lowerers/jax/expr.py +0 -0
  321. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/lowerers/jax/lie.py +0 -0
  322. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/lowerers/jax/linalg.py +0 -0
  323. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/lowerers/jax/logic.py +0 -0
  324. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/lowerers/jax/math.py +0 -0
  325. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/lowerers/jax/spatial.py +0 -0
  326. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/lowerers/jax/state.py +0 -0
  327. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/lowerers/jax/stl.py +0 -0
  328. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/lowerers/jax/stljax.py +0 -0
  329. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/lowerers/jax/vmap.py +0 -0
  330. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/parser/__init__.py +0 -0
  331. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/parser/_registry.py +0 -0
  332. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/parser/array.py +0 -0
  333. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/parser/constraint.py +0 -0
  334. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/parser/lie.py +0 -0
  335. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/parser/linalg.py +0 -0
  336. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/parser/logic.py +0 -0
  337. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/parser/math.py +0 -0
  338. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/parser/parser.py +0 -0
  339. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/parser/spatial.py +0 -0
  340. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/parser/stl.py +0 -0
  341. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/parser/stljax.py +0 -0
  342. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/parser/tokenizer.py +0 -0
  343. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/preprocessing.py +0 -0
  344. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/problem.py +0 -0
  345. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/sparsity.py +0 -0
  346. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/symbolic/unified.py +0 -0
  347. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/utils/__init__.py +0 -0
  348. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/utils/cache.py +0 -0
  349. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/utils/caching.py +0 -0
  350. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/utils/profiling.py +0 -0
  351. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx/utils/utils.py +0 -0
  352. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx.egg-info/dependency_links.txt +0 -0
  353. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx.egg-info/entry_points.txt +0 -0
  354. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/openscvx.egg-info/top_level.txt +0 -0
  355. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/setup.cfg +0 -0
  356. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/__init__.py +0 -0
  357. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/brachistochrone_analytical.py +0 -0
  358. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/expr/__init__.py +0 -0
  359. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/fixtures/brachistochrone.json +0 -0
  360. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/fixtures/brachistochrone.yaml +0 -0
  361. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/hohmann_analytical.py +0 -0
  362. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/integrations/__init__.py +0 -0
  363. {openscvx-0.5.2.dev1/tests/symbolic → openscvx-0.5.2.dev11/tests/solvers}/__init__.py +0 -0
  364. {openscvx-0.5.2.dev1/tests/symbolic/expr → openscvx-0.5.2.dev11/tests/symbolic}/__init__.py +0 -0
  365. {openscvx-0.5.2.dev1/tests/symbolic/parser → openscvx-0.5.2.dev11/tests/symbolic/expr}/__init__.py +0 -0
  366. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/symbolic/expr/test_arithmetic.py +0 -0
  367. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/symbolic/expr/test_array.py +0 -0
  368. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/symbolic/expr/test_constraint.py +0 -0
  369. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/symbolic/expr/test_expr.py +0 -0
  370. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/symbolic/expr/test_lie.py +0 -0
  371. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/symbolic/expr/test_linalg.py +0 -0
  372. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/symbolic/expr/test_logic.py +0 -0
  373. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/symbolic/expr/test_math.py +0 -0
  374. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/symbolic/expr/test_node_reference.py +0 -0
  375. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/symbolic/expr/test_parameters.py +0 -0
  376. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/symbolic/expr/test_scaling.py +0 -0
  377. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/symbolic/expr/test_spatial.py +0 -0
  378. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/symbolic/expr/test_variable.py +0 -0
  379. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/symbolic/expr/test_vmap.py +0 -0
  380. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/symbolic/parser/test_array.py +0 -0
  381. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/symbolic/parser/test_constraint.py +0 -0
  382. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/symbolic/parser/test_lie.py +0 -0
  383. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/symbolic/parser/test_linalg.py +0 -0
  384. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/symbolic/parser/test_load.py +0 -0
  385. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/symbolic/parser/test_logic.py +0 -0
  386. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/symbolic/parser/test_math.py +0 -0
  387. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/symbolic/parser/test_parser.py +0 -0
  388. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/symbolic/parser/test_spatial.py +0 -0
  389. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/symbolic/parser/test_stl.py +0 -0
  390. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/symbolic/parser/test_tokenizer.py +0 -0
  391. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/symbolic/parser/test_vmap.py +0 -0
  392. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/symbolic/test_augmentation.py +0 -0
  393. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/symbolic/test_hashing.py +0 -0
  394. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/symbolic/test_lower_cvxpy.py +0 -0
  395. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/symbolic/test_lower_jax.py +0 -0
  396. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/symbolic/test_preprocessing.py +0 -0
  397. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/symbolic/test_sparsity.py +0 -0
  398. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/symbolic/test_unified.py +0 -0
  399. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/test_cvxpygen_optional.py +0 -0
  400. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/test_discretization.py +0 -0
  401. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/test_expert.py +0 -0
  402. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/test_impulsive.py +0 -0
  403. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/test_init.py +0 -0
  404. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/test_integrators.py +0 -0
  405. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/test_loader.py +0 -0
  406. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/test_optimization_results.py +0 -0
  407. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/tests/test_plotting.py +0 -0
  408. {openscvx-0.5.2.dev1 → openscvx-0.5.2.dev11}/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,15 @@ 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/
218
+
219
+ # SPICE kernels for spacecrafts examples
220
+ examples/spacecraft/ker/
221
+
222
+ # Solver_data folder
223
+ solver_data/
@@ -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: 0.5.2.dev1
3
+ Version: 0.5.2.dev11
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,15 +23,13 @@ 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"
29
+ Provides-Extra: qpax
30
+ Requires-Dist: qpax>=0.1.1; extra == "qpax"
31
+ Provides-Extra: moreau
32
+ Requires-Dist: moreau>=0.3.3; extra == "moreau"
35
33
  Provides-Extra: stl
36
34
  Requires-Dist: stljax; extra == "stl"
37
35
  Provides-Extra: lie
@@ -156,11 +154,11 @@ uv pip install openscvx
156
154
  ```
157
155
 
158
156
  > [!TIP]
159
- > **Optional Dependencies**
157
+ > **Optional dependencies**
160
158
  >
161
- > For GUI support or CVXPYGen code generation:
159
+ > For CVXPYGen code generation:
162
160
  > ```bash
163
- > pip install openscvx[gui,cvxpygen]
161
+ > pip install openscvx[cvxpygen]
164
162
  > ```
165
163
 
166
164
  > [!TIP]
@@ -204,19 +202,19 @@ uv pip install -e .
204
202
  > git clone --recurse-submodules https://github.com/OpenSCvx/OpenSCvx.git
205
203
  > ```
206
204
  >
207
- > After a clone without submodules, initialise Menagerie whenever you need it:
205
+ > After a clone without submodules, initialize Menagerie whenever you need it:
208
206
  >
209
207
  > ```bash
210
208
  > git submodule update --init third_party/mujoco_menagerie
211
209
  > ```
212
210
 
213
- ## Getting Started
211
+ ## Documentation
214
212
 
215
- Check out the OpenSCvx documentation to help you get started
213
+ Check out the OpenSCvx documentation:
216
214
 
217
- - [Getting Started Docs](https://openscvx.github.io/OpenSCvx/latest/getting-started/)
218
215
  - [Users Guide](https://openscvx.github.io/OpenSCvx/latest/UsersGuide/00_introduction/)
219
- - [API Reference](https://openscvx.github.io/OpenSCvx/latest/Reference/problem/)
216
+ - [API Reference](https://openscvx.github.io/OpenSCvx/latest/Reference/)
217
+ - [Examples overview](https://openscvx.github.io/OpenSCvx/latest/examples/)
220
218
 
221
219
  ### Running the Examples
222
220
 
@@ -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]
@@ -155,19 +155,19 @@ uv pip install -e .
155
155
  > git clone --recurse-submodules https://github.com/OpenSCvx/OpenSCvx.git
156
156
  > ```
157
157
  >
158
- > After a clone without submodules, initialise Menagerie whenever you need it:
158
+ > After a clone without submodules, initialize Menagerie whenever you need it:
159
159
  >
160
160
  > ```bash
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
 
@@ -160,9 +160,45 @@ JAX lowering has no dependency on:
160
160
 
161
161
  This means JAX-lowered dynamics and constraints could be used with alternative solvers.
162
162
 
163
+ ## Convex Subproblem Backends
164
+
165
+ The convex subproblem at each SCP iteration is solved by a concrete subclass
166
+ of the abstract `PTRSolver` base. Three backends ship today:
167
+
168
+ | Backend | Class | Selector | Notes |
169
+ |---------|-------|----------|-------|
170
+ | CVXPy (default) | `CVXPyPTRSolver` | `solver={"backend": "cvxpy"}` (default) | DCP graph via CVXPy, dispatched to QOCO / CLARABEL / etc. Supports user `.convex()` constraints, cross-node constraints, CTCS, and impulsive controls. Optional cvxpygen code generation. |
171
+ | QPAX | `QPAXPTRSolver` | `solver={"backend": "qpax"}` | JAX-native QP via `qpax.solve_qp`. Flat `(Q, q, A, b, G, h)` assembly. Supports box / dynamics / CTCS / boundary-Fix; **rejects** user `.convex()`, cross-node, and impulsive at `initialize()` with a clear "use `CVXPyPTRSolver`" message. Enables a path toward an end-to-end JAX-differentiable SCP loop in follow-up work. |
172
+ | Moreau | `MoreauPTRSolver` | `solver={"backend": "moreau"}` | JAX-native conic solver (`moreau.jax.Solver`). Sparse CSR assembly; SOC epigraphs for the L1 / pos PTR penalties (fewer variables and rows than QPAX). Warm-starts between SCP iterations. Same supported subset as QPAX. Paves the way for user `.convex()` SOC support in a follow-up. |
173
+
174
+ Picking a backend at construction time:
175
+
176
+ ```python
177
+ import openscvx as ox
178
+
179
+ # Default — same as today's CVXPyPTRSolver.
180
+ problem = ox.Problem(...)
181
+
182
+ # Explicit CVXPy with a different inner solver.
183
+ problem = ox.Problem(..., solver={"backend": "cvxpy", "cvx_solver": "CLARABEL"})
184
+
185
+ # JAX-native QPAX (requires the `qpax` extra: pip install openscvx[qpax]).
186
+ problem = ox.Problem(..., solver={"backend": "qpax"})
187
+
188
+ # JAX-native Moreau conic (requires the `moreau` extra: pip install openscvx[moreau]).
189
+ problem = ox.Problem(..., solver={"backend": "moreau"})
190
+ ```
191
+
192
+ Both JAX backends consume the global JAX dtype — pass `float_dtype="float64"`
193
+ to `Problem` if you need tight inner-solver tolerances; the default `float32`
194
+ is enough for
195
+ many problems but caps the QP's conditioning.
196
+
163
197
  ## Further Reading
164
198
 
165
199
  - `openscvx/symbolic/lower.py` — Main lowering implementation
166
200
  - `openscvx/lowered/` — Dataclass definitions
167
201
  - `openscvx/symbolic/lowerers/jax.py` — JAX visitor implementation
168
202
  - `openscvx/symbolic/lowerers/cvxpy.py` — CVXPy visitor implementation
203
+ - `openscvx/solvers/ptr_solver.py` — Abstract `PTRSolver` contract
204
+ - `openscvx/solvers/cvxpy_ptr_solver.py` / `qpax_ptr_solver.py` — Concrete backends