openscvx 0.4.1.dev167__tar.gz → 0.4.1.dev170__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 (346) hide show
  1. {openscvx-0.4.1.dev167/openscvx.egg-info → openscvx-0.4.1.dev170}/PKG-INFO +1 -1
  2. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/_version.py +3 -3
  3. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/algorithms/__init__.py +1 -0
  4. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/algorithms/base.py +4 -0
  5. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/algorithms/penalized_trust_region.py +4 -0
  6. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/problem.py +12 -2
  7. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/solvers/base.py +8 -1
  8. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/solvers/ptr_solver.py +16 -0
  9. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170/openscvx.egg-info}/PKG-INFO +1 -1
  10. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/test_brachistochrone.py +1 -1
  11. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/.github/assets/logo.svg +0 -0
  12. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/.github/release-drafter.yml +0 -0
  13. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/.github/workflows/_docs.yml +0 -0
  14. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/.github/workflows/branch-name.yml +0 -0
  15. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/.github/workflows/docs.yml +0 -0
  16. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/.github/workflows/lint.yml +0 -0
  17. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/.github/workflows/nightly.yml +0 -0
  18. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/.github/workflows/release-drafter.yml +0 -0
  19. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/.github/workflows/release.yml +0 -0
  20. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/.github/workflows/tests-integration.yml +0 -0
  21. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/.github/workflows/tests-unit.yml +0 -0
  22. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/.gitignore +0 -0
  23. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/CONTRIBUTING.md +0 -0
  24. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/LICENSE +0 -0
  25. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/README.md +0 -0
  26. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/docs/Foundations/constraint_reformulation.md +0 -0
  27. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/docs/Foundations/control_parameterization.md +0 -0
  28. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/docs/Foundations/discretization.md +0 -0
  29. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/docs/Foundations/ocp.md +0 -0
  30. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/docs/Foundations/scvx.md +0 -0
  31. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/docs/Foundations/time_dilation.md +0 -0
  32. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/docs/UnderTheHood/lowering_architecture.md +0 -0
  33. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/docs/UnderTheHood/vectorization_and_vmapping.md +0 -0
  34. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/docs/UsersGuide/00_introduction.md +0 -0
  35. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/docs/UsersGuide/01_hello_world_brachistochrone.md +0 -0
  36. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/docs/UsersGuide/02_drone_racing_constraints.md +0 -0
  37. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/docs/UsersGuide/03_obstacle_avoidance_vmap.md +0 -0
  38. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/docs/UsersGuide/04_viewpoint_constraints.md +0 -0
  39. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/docs/UsersGuide/05_visualization.md +0 -0
  40. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/docs/UsersGuide/06_logic.md +0 -0
  41. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/docs/UsersGuide/07_lie.md +0 -0
  42. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/docs/UsersGuide/08_mpcc.md +0 -0
  43. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/docs/assets/favicon.png +0 -0
  44. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/docs/assets/images/ct-scvx_dark.png +0 -0
  45. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/docs/assets/images/ct-scvx_light.png +0 -0
  46. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/docs/assets/images/ctcs_dark.png +0 -0
  47. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/docs/assets/images/ctcs_light.png +0 -0
  48. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/docs/assets/images/problem_class_dark.png +0 -0
  49. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/docs/assets/images/problem_class_light.png +0 -0
  50. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/docs/assets/logo.svg +0 -0
  51. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/docs/citation.md +0 -0
  52. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/docs/examples.md +0 -0
  53. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/docs/getting-started.md +0 -0
  54. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/docs/index.md +0 -0
  55. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/docs/javascripts/mathjax.js +0 -0
  56. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/abstract/brachistochrone.py +0 -0
  57. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/abstract/impulsive.py +0 -0
  58. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/abstract/stl_integer_variable.py +0 -0
  59. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/abstract/stl_or.py +0 -0
  60. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/arm/3_dof_arm.py +0 -0
  61. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/arm/7_dof_arm.py +0 -0
  62. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/arm/7_dof_arm_vp.py +0 -0
  63. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/car/dubins_car.py +0 -0
  64. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/car/dubins_car_disjoint.py +0 -0
  65. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/car/dubins_car_obstacle_conditional.py +0 -0
  66. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/car/dubins_car_obstacle_stl.py +0 -0
  67. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/car/dubins_car_stl_or.py +0 -0
  68. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/car/dubins_car_waypoint_stl.py +0 -0
  69. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/drone/cinema_vp.py +0 -0
  70. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/drone/dr_double_integrator.py +0 -0
  71. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/drone/dr_vp.py +0 -0
  72. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/drone/dr_vp_nodal.py +0 -0
  73. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/drone/dr_vp_polytope.py +0 -0
  74. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/drone/drone_racing.py +0 -0
  75. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/drone/logo.py +0 -0
  76. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/drone/logo_utils/acl_logo.svg +0 -0
  77. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/drone/logo_utils/svg_path_utils.py +0 -0
  78. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/drone/obstacle_avoidance.py +0 -0
  79. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/drone/obstacle_avoidance_nodal.py +0 -0
  80. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/drone/obstacle_avoidance_vmap.py +0 -0
  81. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/mpc/double_integrator_discrete.py +0 -0
  82. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/mpc/double_integrator_drone_racing.py +0 -0
  83. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/mpc/dubins_car_circle_analytical.py +0 -0
  84. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/mpc/dubins_car_circle_discrete.py +0 -0
  85. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/mpc/realtime_double_integrator_drone_racing.py +0 -0
  86. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/plotting.py +0 -0
  87. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/plotting_viser.py +0 -0
  88. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/realtime/3DoF_pdg_realtime.py +0 -0
  89. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/realtime/6DoF_pdg_realtime.py +0 -0
  90. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/realtime/base_problems/3DoF_pdg_realtime_base.py +0 -0
  91. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/realtime/base_problems/6DoF_pdg_realtime_base.py +0 -0
  92. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/realtime/base_problems/cinema_vp_realtime_base.py +0 -0
  93. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/realtime/base_problems/drone_racing_realtime_base.py +0 -0
  94. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/realtime/base_problems/dubins_car_realtime_base.py +0 -0
  95. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/realtime/base_problems/obstacle_avoidance_realtime_base.py +0 -0
  96. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/realtime/cinema_vp_realtime.py +0 -0
  97. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/realtime/drone_racing_realtime.py +0 -0
  98. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/realtime/dubins_car_realtime.py +0 -0
  99. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/realtime/obstacle_avoidance_realtime.py +0 -0
  100. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/rocket/3DoF_pdg.py +0 -0
  101. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/rocket/6DoF_pdg.py +0 -0
  102. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/spacecraft/halo_orbit.py +0 -0
  103. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/spacecraft/hohmann_transfer.py +0 -0
  104. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/examples/spacecraft/proxops_cw.py +0 -0
  105. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/figures/ctlos_cine.gif +0 -0
  106. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/figures/ctlos_dr.gif +0 -0
  107. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/figures/dtlos_cine.gif +0 -0
  108. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/figures/dtlos_dr.gif +0 -0
  109. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/figures/openscvx_logo.svg +0 -0
  110. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/figures/openscvx_logo_square.png +0 -0
  111. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/figures/oscvx_structure_full_dark.svg +0 -0
  112. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/figures/video_preview.png +0 -0
  113. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/material/__init__.py +0 -0
  114. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/material/overrides/assets/images/layers/1-background.avif +0 -0
  115. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/material/overrides/assets/images/layers/1-background@1x.avif +0 -0
  116. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/material/overrides/assets/images/layers/1-background@2x.avif +0 -0
  117. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/material/overrides/assets/images/layers/1-background@3x.avif +0 -0
  118. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/material/overrides/assets/images/layers/1-background@4x.avif +0 -0
  119. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/material/overrides/assets/images/layers/2-mars.avif +0 -0
  120. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/material/overrides/assets/images/layers/2-mars@1x.avif +0 -0
  121. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/material/overrides/assets/images/layers/2-mars@2x.avif +0 -0
  122. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/material/overrides/assets/images/layers/2-mars@3x.avif +0 -0
  123. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/material/overrides/assets/images/layers/2-mars@4x.avif +0 -0
  124. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/material/overrides/assets/images/layers/3-moon.avif +0 -0
  125. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/material/overrides/assets/images/layers/3-moon@1x.avif +0 -0
  126. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/material/overrides/assets/images/layers/3-moon@2x.avif +0 -0
  127. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/material/overrides/assets/images/layers/3-moon@3x.avif +0 -0
  128. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/material/overrides/assets/images/layers/3-moon@4x.avif +0 -0
  129. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/material/overrides/assets/images/layers/4-sat1.avif +0 -0
  130. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/material/overrides/assets/images/layers/4-sat1@1x.avif +0 -0
  131. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/material/overrides/assets/images/layers/4-sat1@2x.avif +0 -0
  132. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/material/overrides/assets/images/layers/4-sat1@3x.avif +0 -0
  133. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/material/overrides/assets/images/layers/4-sat1@4x.avif +0 -0
  134. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/material/overrides/assets/images/layers/5-space.avif +0 -0
  135. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/material/overrides/assets/images/layers/5-space@1x.avif +0 -0
  136. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/material/overrides/assets/images/layers/5-space@2x.avif +0 -0
  137. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/material/overrides/assets/images/layers/5-space@3x.avif +0 -0
  138. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/material/overrides/assets/images/layers/5-space@4x.avif +0 -0
  139. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/material/overrides/assets/images/layers/6-earth.avif +0 -0
  140. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/material/overrides/assets/images/layers/6-earth@1x.avif +0 -0
  141. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/material/overrides/assets/images/layers/6-earth@2x.avif +0 -0
  142. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/material/overrides/assets/images/layers/6-earth@3x.avif +0 -0
  143. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/material/overrides/assets/images/layers/6-earth@4x.avif +0 -0
  144. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/material/overrides/assets/javascripts/parallax.js +0 -0
  145. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/material/overrides/assets/logo.svg +0 -0
  146. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/material/overrides/assets/stylesheets/custom.css +0 -0
  147. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/material/overrides/assets/stylesheets/parallax.css +0 -0
  148. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/material/overrides/home.html +0 -0
  149. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/material/overrides/main.html +0 -0
  150. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/material/overrides/partials/parallax/hero.html +0 -0
  151. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/material/overrides/partials/parallax.html +0 -0
  152. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/mkdocs.yml +0 -0
  153. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/__init__.py +0 -0
  154. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/__main__.py +0 -0
  155. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/algorithms/augmented_lagrangian.py +0 -0
  156. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/algorithms/constant_proximal_weight.py +0 -0
  157. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/algorithms/optimization_results.py +0 -0
  158. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/algorithms/ramp_proximal_weight.py +0 -0
  159. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/algorithms/weights.py +0 -0
  160. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/config.py +0 -0
  161. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/discretization/__init__.py +0 -0
  162. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/discretization/base.py +0 -0
  163. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/discretization/discretize_linearize.py +0 -0
  164. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/discretization/linearize_discretize.py +0 -0
  165. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/discretization/linearize_discretize_sparse.py +0 -0
  166. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/discretization/sparse_utils/__init__.py +0 -0
  167. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/discretization/sparse_utils/bcoo_helpers.py +0 -0
  168. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/discretization/sparse_utils/sparse_jacobian.py +0 -0
  169. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/expert/__init__.py +0 -0
  170. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/expert/byof.py +0 -0
  171. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/expert/lowering.py +0 -0
  172. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/expert/validation.py +0 -0
  173. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/init/__init__.py +0 -0
  174. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/init/interpolation.py +0 -0
  175. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/init/inverse_kinematics.py +0 -0
  176. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/integrators/__init__.py +0 -0
  177. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/integrators/diffrax.py +0 -0
  178. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/integrators/runge_kutta.py +0 -0
  179. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/loader.py +0 -0
  180. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/lowered/__init__.py +0 -0
  181. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/lowered/cvxpy_constraints.py +0 -0
  182. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/lowered/cvxpy_variables.py +0 -0
  183. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/lowered/dynamics.py +0 -0
  184. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/lowered/jax_constraints.py +0 -0
  185. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/lowered/parameters.py +0 -0
  186. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/lowered/problem.py +0 -0
  187. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/lowered/unified.py +0 -0
  188. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/plotting/__init__.py +0 -0
  189. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/plotting/plotting.py +0 -0
  190. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/plotting/scp_iteration.py +0 -0
  191. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/plotting/viser/__init__.py +0 -0
  192. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/plotting/viser/animated.py +0 -0
  193. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/plotting/viser/orbits.py +0 -0
  194. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/plotting/viser/plotly_integration.py +0 -0
  195. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/plotting/viser/primitives.py +0 -0
  196. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/plotting/viser/scp.py +0 -0
  197. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/plotting/viser/server.py +0 -0
  198. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/propagation/__init__.py +0 -0
  199. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/propagation/post_processing.py +0 -0
  200. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/propagation/propagation.py +0 -0
  201. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/solvers/__init__.py +0 -0
  202. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/__init__.py +0 -0
  203. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/augmentation.py +0 -0
  204. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/builder.py +0 -0
  205. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/constraint_set.py +0 -0
  206. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/expr/__init__.py +0 -0
  207. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/expr/arithmetic.py +0 -0
  208. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/expr/array.py +0 -0
  209. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/expr/constraint.py +0 -0
  210. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/expr/control.py +0 -0
  211. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/expr/expr.py +0 -0
  212. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/expr/lie/__init__.py +0 -0
  213. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/expr/lie/adjoint.py +0 -0
  214. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/expr/lie/se3.py +0 -0
  215. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/expr/lie/so3.py +0 -0
  216. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/expr/linalg.py +0 -0
  217. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/expr/logic.py +0 -0
  218. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/expr/math.py +0 -0
  219. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/expr/parameter.py +0 -0
  220. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/expr/spatial.py +0 -0
  221. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/expr/state.py +0 -0
  222. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/expr/stl.py +0 -0
  223. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/expr/stljax.py +0 -0
  224. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/expr/time.py +0 -0
  225. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/expr/variable.py +0 -0
  226. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/expr/vmap.py +0 -0
  227. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/hashing.py +0 -0
  228. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/lower.py +0 -0
  229. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/lowerers/__init__.py +0 -0
  230. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/lowerers/cvxpy/__init__.py +0 -0
  231. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/lowerers/cvxpy/_lowerer.py +0 -0
  232. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/lowerers/cvxpy/_registry.py +0 -0
  233. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/lowerers/cvxpy/arithmetic.py +0 -0
  234. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/lowerers/cvxpy/array.py +0 -0
  235. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/lowerers/cvxpy/constraint.py +0 -0
  236. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/lowerers/cvxpy/control.py +0 -0
  237. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/lowerers/cvxpy/expr.py +0 -0
  238. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/lowerers/cvxpy/linalg.py +0 -0
  239. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/lowerers/cvxpy/logic.py +0 -0
  240. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/lowerers/cvxpy/math.py +0 -0
  241. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/lowerers/cvxpy/state.py +0 -0
  242. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/lowerers/jax/__init__.py +0 -0
  243. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/lowerers/jax/_lowerer.py +0 -0
  244. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/lowerers/jax/_registry.py +0 -0
  245. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/lowerers/jax/arithmetic.py +0 -0
  246. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/lowerers/jax/array.py +0 -0
  247. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/lowerers/jax/constraint.py +0 -0
  248. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/lowerers/jax/control.py +0 -0
  249. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/lowerers/jax/expr.py +0 -0
  250. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/lowerers/jax/lie.py +0 -0
  251. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/lowerers/jax/linalg.py +0 -0
  252. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/lowerers/jax/logic.py +0 -0
  253. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/lowerers/jax/math.py +0 -0
  254. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/lowerers/jax/spatial.py +0 -0
  255. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/lowerers/jax/state.py +0 -0
  256. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/lowerers/jax/stl.py +0 -0
  257. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/lowerers/jax/stljax.py +0 -0
  258. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/lowerers/jax/vmap.py +0 -0
  259. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/parser/__init__.py +0 -0
  260. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/parser/_registry.py +0 -0
  261. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/parser/array.py +0 -0
  262. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/parser/constraint.py +0 -0
  263. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/parser/lie.py +0 -0
  264. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/parser/linalg.py +0 -0
  265. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/parser/logic.py +0 -0
  266. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/parser/math.py +0 -0
  267. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/parser/parser.py +0 -0
  268. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/parser/spatial.py +0 -0
  269. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/parser/stl.py +0 -0
  270. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/parser/stljax.py +0 -0
  271. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/parser/tokenizer.py +0 -0
  272. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/preprocessing.py +0 -0
  273. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/problem.py +0 -0
  274. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/sparsity.py +0 -0
  275. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/symbolic/unified.py +0 -0
  276. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/utils/__init__.py +0 -0
  277. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/utils/cache.py +0 -0
  278. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/utils/caching.py +0 -0
  279. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/utils/printing.py +0 -0
  280. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/utils/profiling.py +0 -0
  281. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx/utils/utils.py +0 -0
  282. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx.egg-info/SOURCES.txt +0 -0
  283. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx.egg-info/dependency_links.txt +0 -0
  284. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx.egg-info/entry_points.txt +0 -0
  285. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx.egg-info/requires.txt +0 -0
  286. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/openscvx.egg-info/top_level.txt +0 -0
  287. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/pyproject.toml +0 -0
  288. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/scripts/gen_example_pages.py +0 -0
  289. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/scripts/gen_ref_pages.py +0 -0
  290. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/setup.cfg +0 -0
  291. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/__init__.py +0 -0
  292. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/brachistochrone_analytical.py +0 -0
  293. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/expr/__init__.py +0 -0
  294. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/expr/test_gmsr.py +0 -0
  295. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/fixtures/brachistochrone.json +0 -0
  296. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/fixtures/brachistochrone.yaml +0 -0
  297. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/hohmann_analytical.py +0 -0
  298. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/symbolic/__init__.py +0 -0
  299. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/symbolic/expr/__init__.py +0 -0
  300. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/symbolic/expr/test_arithmetic.py +0 -0
  301. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/symbolic/expr/test_array.py +0 -0
  302. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/symbolic/expr/test_constraint.py +0 -0
  303. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/symbolic/expr/test_expr.py +0 -0
  304. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/symbolic/expr/test_lie.py +0 -0
  305. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/symbolic/expr/test_linalg.py +0 -0
  306. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/symbolic/expr/test_logic.py +0 -0
  307. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/symbolic/expr/test_math.py +0 -0
  308. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/symbolic/expr/test_node_reference.py +0 -0
  309. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/symbolic/expr/test_parameters.py +0 -0
  310. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/symbolic/expr/test_scaling.py +0 -0
  311. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/symbolic/expr/test_spatial.py +0 -0
  312. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/symbolic/expr/test_stl.py +0 -0
  313. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/symbolic/expr/test_variable.py +0 -0
  314. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/symbolic/expr/test_vmap.py +0 -0
  315. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/symbolic/parser/__init__.py +0 -0
  316. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/symbolic/parser/test_array.py +0 -0
  317. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/symbolic/parser/test_constraint.py +0 -0
  318. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/symbolic/parser/test_lie.py +0 -0
  319. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/symbolic/parser/test_linalg.py +0 -0
  320. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/symbolic/parser/test_load.py +0 -0
  321. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/symbolic/parser/test_logic.py +0 -0
  322. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/symbolic/parser/test_math.py +0 -0
  323. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/symbolic/parser/test_parser.py +0 -0
  324. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/symbolic/parser/test_spatial.py +0 -0
  325. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/symbolic/parser/test_stl.py +0 -0
  326. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/symbolic/parser/test_tokenizer.py +0 -0
  327. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/symbolic/parser/test_vmap.py +0 -0
  328. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/symbolic/test_augmentation.py +0 -0
  329. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/symbolic/test_hashing.py +0 -0
  330. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/symbolic/test_lower_cvxpy.py +0 -0
  331. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/symbolic/test_lower_jax.py +0 -0
  332. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/symbolic/test_preprocessing.py +0 -0
  333. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/symbolic/test_sparsity.py +0 -0
  334. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/symbolic/test_unified.py +0 -0
  335. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/test_autotuning.py +0 -0
  336. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/test_cvxpygen_optional.py +0 -0
  337. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/test_discretization.py +0 -0
  338. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/test_examples.py +0 -0
  339. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/test_expert.py +0 -0
  340. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/test_impulsive.py +0 -0
  341. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/test_init.py +0 -0
  342. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/test_integrators.py +0 -0
  343. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/test_loader.py +0 -0
  344. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/test_optimization_results.py +0 -0
  345. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/test_plotting.py +0 -0
  346. {openscvx-0.4.1.dev167 → openscvx-0.4.1.dev170}/tests/test_propagation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openscvx
3
- Version: 0.4.1.dev167
3
+ Version: 0.4.1.dev170
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
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '0.4.1.dev167'
22
- __version_tuple__ = version_tuple = (0, 4, 1, 'dev167')
21
+ __version__ = version = '0.4.1.dev170'
22
+ __version_tuple__ = version_tuple = (0, 4, 1, 'dev170')
23
23
 
24
- __commit_id__ = commit_id = 'g6aeaaf49b'
24
+ __commit_id__ = commit_id = 'ga135b26e1'
@@ -129,6 +129,7 @@ class PenalizedTrustRegionConfig(BaseModel):
129
129
  return v
130
130
 
131
131
  k_max: int = 200
132
+ t_max: Optional[float] = None
132
133
  lam_prox: Union[float, Dict[str, Any]] = 1e-1
133
134
  lam_vc: Union[float, Dict[str, Any]] = 1e0
134
135
  lam_cost: Union[float, Dict[str, Any]] = 1e-2
@@ -718,6 +718,10 @@ class Algorithm(ABC):
718
718
  #: Maximum number of SCP iterations. Subclasses must set this in ``__init__``.
719
719
  k_max: int
720
720
 
721
+ #: Optional wall-clock time limit in seconds. ``None`` means no limit.
722
+ #: Subclasses must set this in ``__init__``.
723
+ t_max: Optional[float]
724
+
721
725
  @abstractmethod
722
726
  def initialize(
723
727
  self,
@@ -87,6 +87,7 @@ class PenalizedTrustRegion(Algorithm):
87
87
  self,
88
88
  autotuner: "AutotuningBase" = None,
89
89
  k_max: int = 200,
90
+ t_max: float | None = None,
90
91
  lam_prox: Union[float, Dict[str, Union[float, list]]] = 1e-1,
91
92
  lam_vc: Union[float, Dict[str, Union[float, list]]] = 1e0,
92
93
  lam_cost: Union[float, Dict[str, float]] = 1e-2,
@@ -103,6 +104,8 @@ class PenalizedTrustRegion(Algorithm):
103
104
  autotuner: Weight adaptation strategy. Defaults to
104
105
  :class:`AugmentedLagrangian` when ``None``.
105
106
  k_max: Maximum SCP iterations. Defaults to 200.
107
+ t_max: Wall-clock time limit in seconds. ``None`` (default)
108
+ disables the time limit.
106
109
  lam_prox: Trust region (proximal) weight. Either a float
107
110
  (applied uniformly to all states and controls) or a dict
108
111
  mapping state/control names to weights, e.g.
@@ -166,6 +169,7 @@ class PenalizedTrustRegion(Algorithm):
166
169
 
167
170
  # SCP convergence parameters
168
171
  self.k_max = k_max
172
+ self.t_max = t_max
169
173
  self.ep_tr = ep_tr
170
174
  self.ep_vb = ep_vb
171
175
  self.ep_vc = ep_vc
@@ -972,12 +972,18 @@ class Problem:
972
972
  }
973
973
 
974
974
  def solve(
975
- self, max_iters: Optional[int] = None, continuous: bool = False
975
+ self,
976
+ max_iters: Optional[int] = None,
977
+ time_limit: Optional[float] = None,
978
+ continuous: bool = False,
976
979
  ) -> OptimizationResults:
977
980
  """Run the SCP algorithm until convergence or iteration limit.
978
981
 
979
982
  Args:
980
983
  max_iters: Maximum iterations (default: algorithm.k_max)
984
+ time_limit: Wall-clock time limit in seconds. Overrides
985
+ ``algorithm.t_max`` when provided. ``None`` (default) falls
986
+ back to ``algorithm.t_max``.
981
987
  continuous: If True, run all iterations regardless of convergence
982
988
 
983
989
  Returns:
@@ -1007,11 +1013,14 @@ class Problem:
1007
1013
  printing.header(self._columns)
1008
1014
 
1009
1015
  k_max = max_iters if max_iters is not None else self._algorithm.k_max
1016
+ t_max = time_limit if time_limit is not None else self._algorithm.t_max
1010
1017
 
1011
1018
  while self._state.k <= k_max:
1012
1019
  result = self.step()
1013
1020
  if result["converged"] and not continuous:
1014
1021
  break
1022
+ if t_max is not None and (time.time() - t_0_while) >= t_max:
1023
+ break
1015
1024
 
1016
1025
  t_f_while = time.time()
1017
1026
  self.timing_solve = t_f_while - t_0_while
@@ -1030,7 +1039,8 @@ class Problem:
1030
1039
  # Store solution state
1031
1040
  self._solution = copy.deepcopy(self._state)
1032
1041
 
1033
- return self._format_result(self._state, self._state.k <= k_max)
1042
+ timed_out = t_max is not None and self.timing_solve >= t_max
1043
+ return self._format_result(self._state, self._state.k <= k_max and not timed_out)
1034
1044
 
1035
1045
  def post_process(self) -> OptimizationResults:
1036
1046
  """Propagate solution through full nonlinear dynamics for high-fidelity trajectory.
@@ -245,7 +245,14 @@ _SOLVER_MAP: Dict[str, type] = {} # populated by __init__.py after all classes
245
245
 
246
246
 
247
247
  class SolverSpec(BaseModel):
248
- """Validates solver configuration from dict/YAML input."""
248
+ """Validates solver configuration from dict/YAML input.
249
+
250
+ !!! warning
251
+ Enabling ``cvxpygen`` currently disables sparse parameter declarations.
252
+ cvxpygen does not yet support the N-D sparsity indices used by
253
+ OpenSCvx's tiled parameters, so all parameters are created as dense
254
+ when code generation is active.
255
+ """
249
256
 
250
257
  type: Literal["PTRSolver"] = "PTRSolver"
251
258
  cvx_solver: str = "QOCO"
@@ -119,6 +119,14 @@ class PTRSolver(ConvexSolver):
119
119
  ``{"abstol": 1e-6, "reltol": 1e-9, "enforce_dpp": True}``.
120
120
  cvxpygen: Enable CVXPy code generation for faster solves.
121
121
  Defaults to ``False``.
122
+
123
+ !!! warning
124
+ Enabling cvxpygen currently disables sparse parameter
125
+ declarations. cvxpygen does not yet support the N-D sparsity
126
+ indices used by OpenSCvx's tiled parameters, so all parameters
127
+ are created as dense when code generation is active. This may
128
+ increase the generated solver's memory footprint and compile
129
+ time but does not affect solution correctness.
122
130
  cvxpygen_override: Overwrite existing generated solver directory
123
131
  without prompting. Defaults to ``False``.
124
132
 
@@ -234,6 +242,14 @@ class PTRSolver(ConvexSolver):
234
242
  B_d_sp = _tile_sparsity(B_d_pat, N - 1)
235
243
  C_d_sp = _tile_sparsity(C_d_pat, N - 1)
236
244
 
245
+ # TODO: (griffin-norris) Remove once cvxpygen supports N-D sparsity
246
+ # indices. cvxpygen's handle_sparsity() assumes 2-D (rows, cols) but
247
+ # our tiled parameters produce 3-D indices (slices, rows, cols).
248
+ # Dropping sparsity here is safe — it only affects codegen performance.
249
+ if self.cvxpygen:
250
+ A_d_sp = B_d_sp = C_d_sp = None
251
+ constraint_sparsity = None
252
+
237
253
  # Create all CVXPy variables for the OCP
238
254
  self._ocp_vars = create_cvxpy_variables(
239
255
  N=N,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openscvx
3
- Version: 0.4.1.dev167
3
+ Version: 0.4.1.dev170
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
@@ -76,7 +76,7 @@ def _assert_brachistochrone_accuracy(comparison, problem, result):
76
76
  assert num_iters < 27, f"Took {num_iters} SCP iterations (expected < 15)"
77
77
 
78
78
  # Check timing - these are generous limits for a simple problem like brachistochrone
79
- assert problem.timing_init < 12.0, (
79
+ assert problem.timing_init < 15.0, (
80
80
  f"Initialization took {problem.timing_init:.2f}s (expected < 12s)"
81
81
  )
82
82
  assert problem.timing_solve < 1.2, f"Solve took {problem.timing_solve:.2f}s (expected < 1.2s)"
File without changes