openscvx 0.3.1.dev139__tar.gz → 0.3.2.dev129__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 (225) hide show
  1. openscvx-0.3.2.dev129/CONTRIBUTING.md +213 -0
  2. {openscvx-0.3.1.dev139/openscvx.egg-info → openscvx-0.3.2.dev129}/PKG-INFO +1 -1
  3. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/_version.py +3 -3
  4. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129/openscvx.egg-info}/PKG-INFO +1 -1
  5. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx.egg-info/SOURCES.txt +1 -0
  6. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/.github/assets/logo.svg +0 -0
  7. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/.github/release-drafter.yml +0 -0
  8. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/.github/workflows/_docs.yml +0 -0
  9. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/.github/workflows/docs.yml +0 -0
  10. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/.github/workflows/lint.yml +0 -0
  11. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/.github/workflows/nightly.yml +0 -0
  12. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/.github/workflows/release-drafter.yml +0 -0
  13. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/.github/workflows/release.yml +0 -0
  14. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/.github/workflows/tests-integration.yml +0 -0
  15. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/.github/workflows/tests-unit.yml +0 -0
  16. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/.gitignore +0 -0
  17. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/LICENSE +0 -0
  18. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/README.md +0 -0
  19. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/docs/Overview/constraint_reformulation.md +0 -0
  20. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/docs/Overview/control_parameterization.md +0 -0
  21. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/docs/Overview/discretization.md +0 -0
  22. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/docs/Overview/ocp.md +0 -0
  23. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/docs/Overview/scvx.md +0 -0
  24. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/docs/Overview/time_dilation.md +0 -0
  25. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/docs/UnderTheHood/lowering_architecture.md +0 -0
  26. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/docs/UnderTheHood/vectorization_and_vmapping.md +0 -0
  27. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/docs/Usage/advanced_problem_setup.md +0 -0
  28. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/docs/Usage/api.md +0 -0
  29. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/docs/Usage/api_constraints.md +0 -0
  30. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/docs/Usage/api_control.md +0 -0
  31. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/docs/Usage/api_integrators.md +0 -0
  32. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/docs/Usage/api_state.md +0 -0
  33. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/docs/Usage/api_trajoptproblem.md +0 -0
  34. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/docs/Usage/api_variable.md +0 -0
  35. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/docs/Usage/basic_problem_setup.md +0 -0
  36. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/docs/Usage/tutorial_6dof_los_guidance.md +0 -0
  37. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/docs/Usage/tutorial_6dof_obstacle_avoidance.md +0 -0
  38. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/docs/Usage/tutorials.md +0 -0
  39. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/docs/assets/favicon.png +0 -0
  40. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/docs/assets/images/ct-scvx_dark.png +0 -0
  41. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/docs/assets/images/ct-scvx_light.png +0 -0
  42. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/docs/assets/images/ctcs_dark.png +0 -0
  43. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/docs/assets/images/ctcs_light.png +0 -0
  44. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/docs/assets/images/problem_class_dark.png +0 -0
  45. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/docs/assets/images/problem_class_light.png +0 -0
  46. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/docs/assets/logo.svg +0 -0
  47. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/docs/citation.md +0 -0
  48. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/docs/examples.md +0 -0
  49. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/docs/getting-started.md +0 -0
  50. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/docs/index.md +0 -0
  51. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/docs/javascripts/mathjax.js +0 -0
  52. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/examples/abstract/3DoF_pdg.py +0 -0
  53. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/examples/abstract/brachistochrone.py +0 -0
  54. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/examples/car/dubins_car.py +0 -0
  55. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/examples/car/dubins_car_disjoint.py +0 -0
  56. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/examples/car/dubins_car_stljax.py +0 -0
  57. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/examples/drone/cinema_vp.py +0 -0
  58. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/examples/drone/cinema_vp_realtime_base.py +0 -0
  59. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/examples/drone/dr_double_integrator.py +0 -0
  60. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/examples/drone/dr_vp.py +0 -0
  61. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/examples/drone/dr_vp_nodal.py +0 -0
  62. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/examples/drone/dr_vp_polytope.py +0 -0
  63. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/examples/drone/drone_racing.py +0 -0
  64. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/examples/drone/obstacle_avoidance.py +0 -0
  65. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/examples/drone/obstacle_avoidance_nodal.py +0 -0
  66. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/examples/drone/obstacle_avoidance_realtime_base.py +0 -0
  67. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/examples/plotting.py +0 -0
  68. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/examples/plotting_viser.py +0 -0
  69. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/examples/realtime/cinema_vp_realtime.py +0 -0
  70. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/examples/realtime/drone_racing_realtime.py +0 -0
  71. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/examples/realtime/dubins_car_realtime.py +0 -0
  72. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/examples/realtime/obstacle_avoidance_realtime.py +0 -0
  73. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/figures/ctlos_cine.gif +0 -0
  74. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/figures/ctlos_dr.gif +0 -0
  75. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/figures/dtlos_cine.gif +0 -0
  76. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/figures/dtlos_dr.gif +0 -0
  77. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/figures/openscvx_logo.svg +0 -0
  78. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/figures/openscvx_logo_square.png +0 -0
  79. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/figures/oscvx_structure_full_dark.svg +0 -0
  80. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/figures/video_preview.png +0 -0
  81. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/material/__init__.py +0 -0
  82. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/material/overrides/assets/images/layers/1-background.avif +0 -0
  83. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/material/overrides/assets/images/layers/1-background@1x.avif +0 -0
  84. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/material/overrides/assets/images/layers/1-background@2x.avif +0 -0
  85. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/material/overrides/assets/images/layers/1-background@3x.avif +0 -0
  86. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/material/overrides/assets/images/layers/1-background@4x.avif +0 -0
  87. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/material/overrides/assets/images/layers/2-mars.avif +0 -0
  88. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/material/overrides/assets/images/layers/2-mars@1x.avif +0 -0
  89. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/material/overrides/assets/images/layers/2-mars@2x.avif +0 -0
  90. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/material/overrides/assets/images/layers/2-mars@3x.avif +0 -0
  91. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/material/overrides/assets/images/layers/2-mars@4x.avif +0 -0
  92. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/material/overrides/assets/images/layers/3-moon.avif +0 -0
  93. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/material/overrides/assets/images/layers/3-moon@1x.avif +0 -0
  94. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/material/overrides/assets/images/layers/3-moon@2x.avif +0 -0
  95. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/material/overrides/assets/images/layers/3-moon@3x.avif +0 -0
  96. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/material/overrides/assets/images/layers/3-moon@4x.avif +0 -0
  97. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/material/overrides/assets/images/layers/4-sat1.avif +0 -0
  98. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/material/overrides/assets/images/layers/4-sat1@1x.avif +0 -0
  99. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/material/overrides/assets/images/layers/4-sat1@2x.avif +0 -0
  100. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/material/overrides/assets/images/layers/4-sat1@3x.avif +0 -0
  101. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/material/overrides/assets/images/layers/4-sat1@4x.avif +0 -0
  102. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/material/overrides/assets/images/layers/5-space.avif +0 -0
  103. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/material/overrides/assets/images/layers/5-space@1x.avif +0 -0
  104. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/material/overrides/assets/images/layers/5-space@2x.avif +0 -0
  105. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/material/overrides/assets/images/layers/5-space@3x.avif +0 -0
  106. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/material/overrides/assets/images/layers/5-space@4x.avif +0 -0
  107. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/material/overrides/assets/images/layers/6-earth.avif +0 -0
  108. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/material/overrides/assets/images/layers/6-earth@1x.avif +0 -0
  109. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/material/overrides/assets/images/layers/6-earth@2x.avif +0 -0
  110. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/material/overrides/assets/images/layers/6-earth@3x.avif +0 -0
  111. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/material/overrides/assets/images/layers/6-earth@4x.avif +0 -0
  112. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/material/overrides/assets/javascripts/parallax.js +0 -0
  113. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/material/overrides/assets/logo.svg +0 -0
  114. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/material/overrides/assets/stylesheets/custom.css +0 -0
  115. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/material/overrides/assets/stylesheets/parallax.css +0 -0
  116. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/material/overrides/home.html +0 -0
  117. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/material/overrides/main.html +0 -0
  118. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/material/overrides/partials/parallax/hero.html +0 -0
  119. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/material/overrides/partials/parallax.html +0 -0
  120. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/mkdocs.yml +0 -0
  121. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/__init__.py +0 -0
  122. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/algorithms/__init__.py +0 -0
  123. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/algorithms/autotuning.py +0 -0
  124. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/algorithms/optimization_results.py +0 -0
  125. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/algorithms/ptr.py +0 -0
  126. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/algorithms/solver_state.py +0 -0
  127. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/config.py +0 -0
  128. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/discretization/__init__.py +0 -0
  129. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/discretization/discretization.py +0 -0
  130. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/expert/__init__.py +0 -0
  131. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/expert/byof.py +0 -0
  132. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/expert/lowering.py +0 -0
  133. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/expert/validation.py +0 -0
  134. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/integrators/__init__.py +0 -0
  135. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/integrators/runge_kutta.py +0 -0
  136. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/lowered/__init__.py +0 -0
  137. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/lowered/cvxpy_constraints.py +0 -0
  138. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/lowered/cvxpy_variables.py +0 -0
  139. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/lowered/dynamics.py +0 -0
  140. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/lowered/jax_constraints.py +0 -0
  141. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/lowered/parameters.py +0 -0
  142. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/lowered/problem.py +0 -0
  143. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/lowered/unified.py +0 -0
  144. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/plotting/__init__.py +0 -0
  145. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/plotting/plotting.py +0 -0
  146. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/plotting/scp_iteration.py +0 -0
  147. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/plotting/viser/__init__.py +0 -0
  148. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/plotting/viser/animated.py +0 -0
  149. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/plotting/viser/plotly_integration.py +0 -0
  150. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/plotting/viser/primitives.py +0 -0
  151. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/plotting/viser/scp.py +0 -0
  152. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/plotting/viser/server.py +0 -0
  153. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/problem.py +0 -0
  154. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/propagation/__init__.py +0 -0
  155. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/propagation/post_processing.py +0 -0
  156. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/propagation/propagation.py +0 -0
  157. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/solvers/__init__.py +0 -0
  158. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/solvers/cvxpy.py +0 -0
  159. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/symbolic/__init__.py +0 -0
  160. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/symbolic/augmentation.py +0 -0
  161. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/symbolic/builder.py +0 -0
  162. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/symbolic/constraint_set.py +0 -0
  163. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/symbolic/expr/__init__.py +0 -0
  164. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/symbolic/expr/arithmetic.py +0 -0
  165. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/symbolic/expr/array.py +0 -0
  166. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/symbolic/expr/constraint.py +0 -0
  167. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/symbolic/expr/control.py +0 -0
  168. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/symbolic/expr/expr.py +0 -0
  169. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/symbolic/expr/linalg.py +0 -0
  170. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/symbolic/expr/math.py +0 -0
  171. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/symbolic/expr/spatial.py +0 -0
  172. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/symbolic/expr/state.py +0 -0
  173. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/symbolic/expr/stl.py +0 -0
  174. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/symbolic/expr/variable.py +0 -0
  175. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/symbolic/hashing.py +0 -0
  176. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/symbolic/lower.py +0 -0
  177. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/symbolic/lowerers/__init__.py +0 -0
  178. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/symbolic/lowerers/cvxpy.py +0 -0
  179. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/symbolic/lowerers/jax.py +0 -0
  180. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/symbolic/preprocessing.py +0 -0
  181. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/symbolic/problem.py +0 -0
  182. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/symbolic/time.py +0 -0
  183. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/symbolic/unified.py +0 -0
  184. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/utils/__init__.py +0 -0
  185. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/utils/cache.py +0 -0
  186. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/utils/caching.py +0 -0
  187. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/utils/printing.py +0 -0
  188. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/utils/profiling.py +0 -0
  189. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx/utils/utils.py +0 -0
  190. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx.egg-info/dependency_links.txt +0 -0
  191. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx.egg-info/requires.txt +0 -0
  192. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/openscvx.egg-info/top_level.txt +0 -0
  193. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/pyproject.toml +0 -0
  194. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/scripts/gen_example_pages.py +0 -0
  195. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/scripts/gen_ref_pages.py +0 -0
  196. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/setup.cfg +0 -0
  197. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/tests/__init__.py +0 -0
  198. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/tests/brachistochrone_analytical.py +0 -0
  199. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/tests/symbolic/__init__.py +0 -0
  200. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/tests/symbolic/expr/__init__.py +0 -0
  201. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/tests/symbolic/expr/test_arithmetic.py +0 -0
  202. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/tests/symbolic/expr/test_array.py +0 -0
  203. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/tests/symbolic/expr/test_constraint.py +0 -0
  204. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/tests/symbolic/expr/test_expr.py +0 -0
  205. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/tests/symbolic/expr/test_linalg.py +0 -0
  206. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/tests/symbolic/expr/test_math.py +0 -0
  207. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/tests/symbolic/expr/test_node_reference.py +0 -0
  208. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/tests/symbolic/expr/test_parameters.py +0 -0
  209. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/tests/symbolic/expr/test_scaling.py +0 -0
  210. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/tests/symbolic/expr/test_spatial.py +0 -0
  211. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/tests/symbolic/expr/test_variable.py +0 -0
  212. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/tests/symbolic/test_augmentation.py +0 -0
  213. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/tests/symbolic/test_hashing.py +0 -0
  214. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/tests/symbolic/test_lower_cvxpy.py +0 -0
  215. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/tests/symbolic/test_lower_jax.py +0 -0
  216. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/tests/symbolic/test_preprocessing.py +0 -0
  217. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/tests/symbolic/test_unified.py +0 -0
  218. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/tests/test_brachistochrone.py +0 -0
  219. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/tests/test_cvxpygen_optional.py +0 -0
  220. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/tests/test_discretization.py +0 -0
  221. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/tests/test_examples.py +0 -0
  222. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/tests/test_expert.py +0 -0
  223. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/tests/test_integrators.py +0 -0
  224. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/tests/test_plotting.py +0 -0
  225. {openscvx-0.3.1.dev139 → openscvx-0.3.2.dev129}/tests/test_propagation.py +0 -0
@@ -0,0 +1,213 @@
1
+ ## Contributing to OpenSCvx
2
+
3
+ ### Local Installation
4
+
5
+ To set up OpenSCvx for local development, first clone the repository and create a virtual environment:
6
+
7
+ > **Note:** These instructions use SSH URLs. If you haven't set up SSH keys with GitHub, see [Connecting to GitHub with SSH](https://docs.github.com/en/authentication/connecting-to-github-with-ssh).
8
+
9
+ ```bash
10
+ git clone git@github.com:haynec/OpenSCvx.git
11
+ cd OpenSCvx
12
+ python -m venv venv
13
+ source venv/bin/activate # On Windows: venv\Scripts\activate
14
+ ```
15
+
16
+ Then install the package in editable mode with development dependencies:
17
+
18
+ ```bash
19
+ pip install -e ".[test]"
20
+ ```
21
+
22
+ For additional features, you can install optional dependencies:
23
+ - `pip install -e ".[gui]"` - GUI visualization tools
24
+ - `pip install -e ".[cvxpygen]"` - Code generation support
25
+ - `pip install -e ".[stl]"` - STL (Signal Temporal Logic) constraints
26
+
27
+ #### Using uv (Alternative)
28
+
29
+ If you prefer using [uv](https://github.com/astral-sh/uv) for faster dependency resolution:
30
+
31
+ ```bash
32
+ git clone git@github.com:haynec/OpenSCvx.git
33
+ cd OpenSCvx
34
+ uv venv
35
+ source .venv/bin/activate # On Windows: .venv\Scripts\activate
36
+ uv pip install -e ".[test]"
37
+ ```
38
+
39
+ To contribute changes, you'll need to create a branch or fork. See [Forking and Merging](#forking-and-merging) below for details on our workflow and [Branch Naming Conventions](#branch-naming-conventions) for required naming patterns.
40
+
41
+ ### Forking and Merging
42
+
43
+ All contributions must be submitted via pull request and approved by a maintainer before merging. This ensures code quality, maintains consistency across the codebase, and gives contributors feedback on their changes.
44
+
45
+ We currently use standard merge commits for pull requests. We may transition to squash merges in the future to maintain a cleaner commit history on `main`.
46
+
47
+ Contributors can either:
48
+ 1. **Create a branch directly** on the OpenSCvx repository (for those with write access)
49
+ 2. **Fork the repository** to their own GitHub account and submit pull requests from there (recommended for external contributors)
50
+
51
+ #### Fork Setup
52
+
53
+ To set up a fork for development:
54
+
55
+ 1. Fork the repository on GitHub by clicking the "Fork" button on the [OpenSCvx repository page](https://github.com/haynec/OpenSCvx)
56
+
57
+ 2. Clone your fork locally:
58
+ ```bash
59
+ git clone git@github.com:YOUR_USERNAME/OpenSCvx.git
60
+ cd OpenSCvx
61
+ ```
62
+
63
+ 3. Add the upstream repository as a remote:
64
+ ```bash
65
+ git remote add upstream git@github.com:haynec/OpenSCvx.git
66
+ ```
67
+
68
+ 4. Verify your remotes:
69
+ ```bash
70
+ git remote -v
71
+ # origin git@github.com:YOUR_USERNAME/OpenSCvx.git (fetch)
72
+ # origin git@github.com:YOUR_USERNAME/OpenSCvx.git (push)
73
+ # upstream git@github.com:haynec/OpenSCvx.git (fetch)
74
+ # upstream git@github.com:haynec/OpenSCvx.git (push)
75
+ ```
76
+
77
+ 5. Keep your fork up to date by periodically pulling from upstream:
78
+ ```bash
79
+ git fetch upstream
80
+ git checkout main
81
+ git merge upstream/main
82
+ ```
83
+
84
+ #### Branch Naming Conventions
85
+
86
+ We use [release-drafter](https://github.com/release-drafter/release-drafter) to automatically generate release notes based on pull request labels. These labels are auto-assigned based on your branch name prefix.
87
+
88
+ **Required branch prefixes:**
89
+
90
+ | Prefix | Label Applied | Release Category |
91
+ |--------|---------------|------------------|
92
+ | `feature/` | enhancement | Features |
93
+ | `fix/` | bug | Bug Fixes |
94
+ | `refactor/` | refactor | Maintenance |
95
+ | `chore/` | chore | Maintenance |
96
+ | `docs/` or `doc/` | documentation | Maintenance |
97
+
98
+ **Examples:**
99
+ - `feature/add-new-solver` - Adding a new solver option
100
+ - `fix/convergence-issue` - Fixing a bug
101
+ - `refactor/simplify-dynamics` - Code refactoring
102
+ - `chore/update-dependencies` - Maintenance tasks
103
+ - `docs/api-examples` - Documentation updates
104
+
105
+ See the [workflow](.github/workflows/release-drafter.yml) and [configuration](.github/release-drafter.yml) for details.
106
+
107
+ ### Development Guidelines
108
+
109
+ #### Use of LLM-Based Tools
110
+
111
+ While the development of OpenSCvx has been greatly assisted by LLM-based tools for coding tasks, it is up to the contributor to use them in a responsible manner. We welcome their use, _but with great power comes great responsibility_.
112
+
113
+ Our goal is to produce a high-quality codebase that is well organized, easy to modify, easy to understand, and, most importantly, easy to maintain. We will not accept so-called _AI-slop_. Contributors are expected to:
114
+
115
+ 1. **Understand every line** of code they submit. You are responsible for it, not the LLM
116
+ 2. **Review and refactor** generated code to match the project's style and patterns
117
+ 3. **Write meaningful commit messages and keep commits small-ish** to break the changes into bite-sized chunks that can be understood based on the commit message.
118
+ 4. **Test thoroughly** - LLMs can generate plausible-looking but subtly incorrect code. See point 1.
119
+
120
+ #### Keep It Simple
121
+
122
+ We value simplicity over cleverness. Before adding code, ask yourself:
123
+
124
+ - **[YAGNI](https://en.wikipedia.org/wiki/You_aren%27t_gonna_need_it)**: "You Aren't Gonna Need It" - don't add functionality until it's actually needed
125
+ - **[KISS](https://en.wikipedia.org/wiki/KISS_principle)**: "Keep It Simple, Stupid" - the simplest solution is usually the best one
126
+ - **[Feature creep](https://en.wikipedia.org/wiki/Feature_creep)**: the enemy of maintainable software. A 10-line function that's easy to understand beats a 50-line "flexible" abstraction that handles hypothetical future requirements. When in doubt, leave it out.
127
+
128
+ While we don't always follow these rules, we try.
129
+
130
+ #### Code Style
131
+
132
+ We use [Ruff](https://github.com/astral-sh/ruff) for linting and formatting. Before submitting a PR, ensure your code passes:
133
+
134
+ ```bash
135
+ ruff check .
136
+ ruff format --check .
137
+ ```
138
+
139
+ To auto-fix issues:
140
+
141
+ ```bash
142
+ ruff check --fix .
143
+ ruff format .
144
+ ```
145
+
146
+ See the `[tool.ruff]` section in `pyproject.toml` for our configuration.
147
+
148
+ #### Testing
149
+
150
+ OpenSCvx uses `pytest` for automated testing. Tests run automatically via GitHub Actions:
151
+
152
+ - **[tests-unit.yml](.github/workflows/tests-unit.yml)**: Runs on every PR - fast unit tests including the brachistochrone benchmark
153
+ - **[tests-integration.yml](.github/workflows/tests-integration.yml)**: Runs weekly - full example problems as a smoke test
154
+
155
+ ##### Running Tests Locally
156
+
157
+ For faster feedback during development, run tests locally:
158
+
159
+ ```bash
160
+ pytest tests/ # All unit tests
161
+ pytest tests/test_brachistochrone.py -v # Just the brachistochrone benchmark
162
+ pytest -v -m "not integration" # Skip expensive integration tests
163
+ pytest -v -m integration # Only integration tests (runs test_examples.py)
164
+ ```
165
+
166
+ ##### Brachistochrone Problem
167
+
168
+ The [brachistochrone problem](https://en.wikipedia.org/wiki/Brachistochrone_curve) serves as our primary validation benchmark. This classic problem asks for the curve of fastest descent under gravity between two points, and has a known analytical solution: the cycloid. We use it as part of the unit-test suite because:
169
+
170
+ - **Analytical solution exists**: We can validate numerical results against the exact cycloid curve
171
+ - **Small and fast**: The problem converges quickly, making it ideal for CI/CD pipelines
172
+ - **Representative**: It exercises core features like free final time optimization and nonlinear dynamics
173
+
174
+ ##### Test-Driven Development
175
+
176
+ While we do not strictly follow [test driven development (TDD)](https://en.wikipedia.org/wiki/Test-driven_development), we aim to keep a representative test-suite where it makes sense to do so and leverage TDD when possible.
177
+
178
+ For example, the [symbolic-expression layer](openscvx/symbolic/__init__.py) is well covered by [tests](tests/symbolic/) which were written simultaneously with the symbolic layer.
179
+
180
+ The extensive test suite helps ensure that new features and refactors don't break existing functionality.
181
+
182
+ #### Documentation
183
+
184
+ We use [MkDocs](https://www.mkdocs.org/) with [Material](https://squidfunk.github.io/mkdocs-material/) theme for documentation, hosted at [haynec.github.io/OpenSCvx](https://haynec.github.io/OpenSCvx/).
185
+
186
+ API reference is auto-generated from docstrings using [mkdocstrings](https://mkdocstrings.github.io/). Please use [Google-style docstrings](https://google.github.io/styleguide/pyguide.html#38-comments-and-docstrings) for all public functions and classes:
187
+
188
+ ```python
189
+ def solve(self, max_iterations: int = 100) -> OptimizationResult:
190
+ """Solve the trajectory optimization problem.
191
+
192
+ Args:
193
+ max_iterations: Maximum number of SCP iterations.
194
+
195
+ Returns:
196
+ The optimization result containing the trajectory and convergence info.
197
+
198
+ Raises:
199
+ ConvergenceError: If the solver fails to converge.
200
+ """
201
+ ```
202
+
203
+ To preview documentation locally, first install the dependencies:
204
+
205
+ ```bash
206
+ pip install mkdocs-material mkdocstrings-python mkdocs-gen-files mkdocs-literate-nav mkdocs-section-index
207
+ ```
208
+
209
+ Then serve the documentation locally:
210
+
211
+ ```bash
212
+ mkdocs serve
213
+ ```
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openscvx
3
- Version: 0.3.1.dev139
3
+ Version: 0.3.2.dev129
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
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '0.3.1.dev139'
32
- __version_tuple__ = version_tuple = (0, 3, 1, 'dev139')
31
+ __version__ = version = '0.3.2.dev129'
32
+ __version_tuple__ = version_tuple = (0, 3, 2, 'dev129')
33
33
 
34
- __commit_id__ = commit_id = 'g86ebd5ac9'
34
+ __commit_id__ = commit_id = 'g24aff8688'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openscvx
3
- Version: 0.3.1.dev139
3
+ Version: 0.3.2.dev129
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
@@ -1,4 +1,5 @@
1
1
  .gitignore
2
+ CONTRIBUTING.md
2
3
  LICENSE
3
4
  README.md
4
5
  mkdocs.yml
File without changes