openscvx 0.4.1.dev84__tar.gz → 0.4.1.dev89__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.
- {openscvx-0.4.1.dev84/openscvx.egg-info → openscvx-0.4.1.dev89}/PKG-INFO +1 -1
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/_version.py +3 -3
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/problem.py +10 -6
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/expr/expr.py +2 -35
- openscvx-0.4.1.dev89/openscvx/utils/profiling.py +54 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89/openscvx.egg-info}/PKG-INFO +1 -1
- openscvx-0.4.1.dev84/openscvx/utils/profiling.py +0 -37
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/.github/assets/logo.svg +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/.github/release-drafter.yml +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/.github/workflows/_docs.yml +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/.github/workflows/branch-name.yml +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/.github/workflows/docs.yml +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/.github/workflows/lint.yml +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/.github/workflows/nightly.yml +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/.github/workflows/release-drafter.yml +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/.github/workflows/release.yml +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/.github/workflows/tests-integration.yml +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/.github/workflows/tests-unit.yml +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/.gitignore +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/CONTRIBUTING.md +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/LICENSE +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/README.md +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/docs/Foundations/constraint_reformulation.md +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/docs/Foundations/control_parameterization.md +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/docs/Foundations/discretization.md +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/docs/Foundations/ocp.md +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/docs/Foundations/scvx.md +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/docs/Foundations/time_dilation.md +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/docs/UnderTheHood/lowering_architecture.md +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/docs/UnderTheHood/vectorization_and_vmapping.md +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/docs/UsersGuide/00_introduction.md +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/docs/UsersGuide/01_hello_world_brachistochrone.md +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/docs/UsersGuide/02_drone_racing_constraints.md +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/docs/UsersGuide/03_obstacle_avoidance_vmap.md +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/docs/UsersGuide/04_viewpoint_constraints.md +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/docs/UsersGuide/05_visualization.md +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/docs/UsersGuide/06_logic.md +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/docs/UsersGuide/07_lie.md +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/docs/assets/favicon.png +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/docs/assets/images/ct-scvx_dark.png +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/docs/assets/images/ct-scvx_light.png +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/docs/assets/images/ctcs_dark.png +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/docs/assets/images/ctcs_light.png +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/docs/assets/images/problem_class_dark.png +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/docs/assets/images/problem_class_light.png +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/docs/assets/logo.svg +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/docs/citation.md +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/docs/examples.md +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/docs/getting-started.md +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/docs/index.md +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/docs/javascripts/mathjax.js +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/examples/abstract/brachistochrone.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/examples/arm/three_link_arm.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/examples/car/dubins_car.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/examples/car/dubins_car_conditional.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/examples/car/dubins_car_disjoint.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/examples/car/dubins_car_stljax.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/examples/drone/cinema_vp.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/examples/drone/dr_double_integrator.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/examples/drone/dr_vp.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/examples/drone/dr_vp_nodal.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/examples/drone/dr_vp_polytope.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/examples/drone/drone_racing.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/examples/drone/logo.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/examples/drone/logo_utils/acl_logo.svg +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/examples/drone/logo_utils/svg_path_utils.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/examples/drone/obstacle_avoidance.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/examples/drone/obstacle_avoidance_nodal.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/examples/drone/obstacle_avoidance_vmap.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/examples/plotting.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/examples/plotting_viser.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/examples/realtime/base_problems/cinema_vp_realtime_base.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/examples/realtime/base_problems/drone_racing_realtime_base.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/examples/realtime/base_problems/obstacle_avoidance_realtime_base.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/examples/realtime/cinema_vp_realtime.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/examples/realtime/drone_racing_realtime.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/examples/realtime/dubins_car_realtime.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/examples/realtime/obstacle_avoidance_realtime.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/examples/rocket/3DoF_pdg.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/examples/spacecraft/proxops_cw.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/figures/ctlos_cine.gif +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/figures/ctlos_dr.gif +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/figures/dtlos_cine.gif +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/figures/dtlos_dr.gif +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/figures/openscvx_logo.svg +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/figures/openscvx_logo_square.png +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/figures/oscvx_structure_full_dark.svg +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/figures/video_preview.png +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/__init__.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/1-background.avif +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/1-background@1x.avif +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/1-background@2x.avif +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/1-background@3x.avif +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/1-background@4x.avif +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/2-mars.avif +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/2-mars@1x.avif +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/2-mars@2x.avif +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/2-mars@3x.avif +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/2-mars@4x.avif +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/3-moon.avif +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/3-moon@1x.avif +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/3-moon@2x.avif +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/3-moon@3x.avif +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/3-moon@4x.avif +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/4-sat1.avif +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/4-sat1@1x.avif +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/4-sat1@2x.avif +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/4-sat1@3x.avif +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/4-sat1@4x.avif +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/5-space.avif +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/5-space@1x.avif +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/5-space@2x.avif +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/5-space@3x.avif +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/5-space@4x.avif +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/6-earth.avif +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/6-earth@1x.avif +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/6-earth@2x.avif +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/6-earth@3x.avif +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/6-earth@4x.avif +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/javascripts/parallax.js +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/logo.svg +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/stylesheets/custom.css +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/stylesheets/parallax.css +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/home.html +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/main.html +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/partials/parallax/hero.html +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/partials/parallax.html +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/mkdocs.yml +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/__init__.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/__main__.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/algorithms/AugmentedLagrangian.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/algorithms/ConstantProximalWeight.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/algorithms/RampProximalWeight.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/algorithms/__init__.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/algorithms/base.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/algorithms/optimization_results.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/algorithms/penalized_trust_region.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/config.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/discretization/__init__.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/discretization/base.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/discretization/linearize_discretize.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/expert/__init__.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/expert/byof.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/expert/lowering.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/expert/validation.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/init/__init__.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/init/interpolation.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/integrators/__init__.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/integrators/runge_kutta.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/loader.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/lowered/__init__.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/lowered/cvxpy_constraints.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/lowered/cvxpy_variables.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/lowered/dynamics.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/lowered/jax_constraints.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/lowered/parameters.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/lowered/problem.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/lowered/unified.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/plotting/__init__.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/plotting/plotting.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/plotting/scp_iteration.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/plotting/viser/__init__.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/plotting/viser/animated.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/plotting/viser/plotly_integration.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/plotting/viser/primitives.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/plotting/viser/scp.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/plotting/viser/server.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/propagation/__init__.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/propagation/post_processing.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/propagation/propagation.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/solvers/__init__.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/solvers/base.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/solvers/ptr_solver.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/__init__.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/augmentation.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/builder.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/constraint_set.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/expr/__init__.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/expr/arithmetic.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/expr/array.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/expr/constraint.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/expr/control.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/expr/lie/__init__.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/expr/lie/adjoint.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/expr/lie/se3.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/expr/lie/so3.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/expr/linalg.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/expr/logic.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/expr/math.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/expr/spatial.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/expr/state.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/expr/stl.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/expr/variable.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/expr/vmap.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/hashing.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/lower.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/lowerers/__init__.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/lowerers/cvxpy/__init__.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/lowerers/cvxpy/_lowerer.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/lowerers/cvxpy/_registry.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/lowerers/cvxpy/arithmetic.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/lowerers/cvxpy/array.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/lowerers/cvxpy/constraint.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/lowerers/cvxpy/control.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/lowerers/cvxpy/expr.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/lowerers/cvxpy/linalg.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/lowerers/cvxpy/logic.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/lowerers/cvxpy/math.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/lowerers/cvxpy/state.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/lowerers/jax/__init__.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/lowerers/jax/_lowerer.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/lowerers/jax/_registry.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/lowerers/jax/arithmetic.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/lowerers/jax/array.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/lowerers/jax/constraint.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/lowerers/jax/control.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/lowerers/jax/expr.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/lowerers/jax/lie.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/lowerers/jax/linalg.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/lowerers/jax/logic.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/lowerers/jax/math.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/lowerers/jax/spatial.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/lowerers/jax/state.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/lowerers/jax/stl.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/lowerers/jax/vmap.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/parser/__init__.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/parser/_registry.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/parser/array.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/parser/constraint.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/parser/lie.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/parser/linalg.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/parser/logic.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/parser/math.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/parser/parser.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/parser/spatial.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/parser/stl.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/parser/tokenizer.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/preprocessing.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/problem.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/sparsity.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/time.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/symbolic/unified.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/utils/__init__.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/utils/cache.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/utils/caching.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/utils/printing.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/utils/utils.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx.egg-info/SOURCES.txt +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx.egg-info/dependency_links.txt +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx.egg-info/entry_points.txt +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx.egg-info/requires.txt +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx.egg-info/top_level.txt +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/pyproject.toml +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/scripts/gen_example_pages.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/scripts/gen_ref_pages.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/setup.cfg +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/__init__.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/brachistochrone_analytical.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/fixtures/brachistochrone.json +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/fixtures/brachistochrone.yaml +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/symbolic/__init__.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/symbolic/expr/__init__.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/symbolic/expr/test_arithmetic.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/symbolic/expr/test_array.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/symbolic/expr/test_constraint.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/symbolic/expr/test_expr.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/symbolic/expr/test_lie.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/symbolic/expr/test_linalg.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/symbolic/expr/test_logic.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/symbolic/expr/test_math.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/symbolic/expr/test_node_reference.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/symbolic/expr/test_parameters.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/symbolic/expr/test_scaling.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/symbolic/expr/test_spatial.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/symbolic/expr/test_variable.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/symbolic/expr/test_vmap.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/symbolic/parser/__init__.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/symbolic/parser/test_array.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/symbolic/parser/test_constraint.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/symbolic/parser/test_lie.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/symbolic/parser/test_linalg.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/symbolic/parser/test_load.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/symbolic/parser/test_logic.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/symbolic/parser/test_math.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/symbolic/parser/test_parser.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/symbolic/parser/test_spatial.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/symbolic/parser/test_stl.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/symbolic/parser/test_tokenizer.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/symbolic/parser/test_vmap.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/symbolic/test_augmentation.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/symbolic/test_hashing.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/symbolic/test_lower_cvxpy.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/symbolic/test_lower_jax.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/symbolic/test_preprocessing.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/symbolic/test_sparsity.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/symbolic/test_unified.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/test_autotuning.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/test_brachistochrone.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/test_cvxpygen_optional.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/test_discretization.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/test_examples.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/test_expert.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/test_init.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/test_integrators.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/test_loader.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/test_optimization_results.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/tests/test_plotting.py +0 -0
- {openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/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.
|
|
3
|
+
Version: 0.4.1.dev89
|
|
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.4.1.
|
|
32
|
-
__version_tuple__ = version_tuple = (0, 4, 1, '
|
|
31
|
+
__version__ = version = '0.4.1.dev89'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 4, 1, 'dev89')
|
|
33
33
|
|
|
34
|
-
__commit_id__ = commit_id = '
|
|
34
|
+
__commit_id__ = commit_id = 'gacffe2b5c'
|
|
@@ -241,6 +241,7 @@ class Problem:
|
|
|
241
241
|
self.timing_init = None
|
|
242
242
|
self.timing_solve = None
|
|
243
243
|
self.timing_post = None
|
|
244
|
+
self._profiling_session = None
|
|
244
245
|
|
|
245
246
|
# Discretizer (handles linearization + discretization)
|
|
246
247
|
self._discretizer = LinearizeDiscretize()
|
|
@@ -527,8 +528,11 @@ class Problem:
|
|
|
527
528
|
"""
|
|
528
529
|
printing.intro()
|
|
529
530
|
|
|
530
|
-
#
|
|
531
|
-
|
|
531
|
+
# Create a new profiling session (shared across initialize/solve/post_process)
|
|
532
|
+
self._profiling_session = (
|
|
533
|
+
profiling._create_session() if self.settings.dev.profiling else None
|
|
534
|
+
)
|
|
535
|
+
pr = profiling.profiling_start(self.settings.dev.profiling, self._profiling_session)
|
|
532
536
|
|
|
533
537
|
t_0_while = time.time()
|
|
534
538
|
# Ensure parameter sizes and normalization are correct
|
|
@@ -775,8 +779,8 @@ class Problem:
|
|
|
775
779
|
if any(r is None for r in required):
|
|
776
780
|
raise ValueError("Problem has not been initialized. Call initialize() before solve()")
|
|
777
781
|
|
|
778
|
-
# Enable the profiler
|
|
779
|
-
pr = profiling.profiling_start(self.settings.dev.profiling)
|
|
782
|
+
# Enable the profiler (reuse session from initialize)
|
|
783
|
+
pr = profiling.profiling_start(self.settings.dev.profiling, self._profiling_session)
|
|
780
784
|
|
|
781
785
|
t_0_while = time.time()
|
|
782
786
|
# Print top header for solver results
|
|
@@ -824,8 +828,8 @@ class Problem:
|
|
|
824
828
|
if self._solution is None:
|
|
825
829
|
raise ValueError("No solution available. Call solve() first.")
|
|
826
830
|
|
|
827
|
-
# Enable the profiler
|
|
828
|
-
pr = profiling.profiling_start(self.settings.dev.profiling)
|
|
831
|
+
# Enable the profiler (reuse session from initialize)
|
|
832
|
+
pr = profiling.profiling_start(self.settings.dev.profiling, self._profiling_session)
|
|
829
833
|
|
|
830
834
|
# Create result from stored solution state
|
|
831
835
|
result = self._format_result(self._solution, self._solution.k <= self.settings.scp.k_max)
|
|
@@ -572,7 +572,7 @@ def traverse(expr: Expr, visit: Callable[[Expr], None]):
|
|
|
572
572
|
traverse(child, visit)
|
|
573
573
|
|
|
574
574
|
|
|
575
|
-
class Constant(
|
|
575
|
+
class Constant(Leaf):
|
|
576
576
|
"""Constant value expression.
|
|
577
577
|
|
|
578
578
|
Represents a constant numeric value in the expression tree. Constants are
|
|
@@ -601,40 +601,7 @@ class Constant(Expr):
|
|
|
601
601
|
if not isinstance(value, np.ndarray):
|
|
602
602
|
value = np.array(value, dtype=float)
|
|
603
603
|
self.value = np.squeeze(value)
|
|
604
|
-
|
|
605
|
-
def canonicalize(self) -> "Expr":
|
|
606
|
-
"""Constants are already in canonical form.
|
|
607
|
-
|
|
608
|
-
Returns:
|
|
609
|
-
Expr: Returns self since constants are already canonical
|
|
610
|
-
"""
|
|
611
|
-
return self
|
|
612
|
-
|
|
613
|
-
def check_shape(self) -> Tuple[int, ...]:
|
|
614
|
-
"""Return the shape of this constant's value.
|
|
615
|
-
|
|
616
|
-
Returns:
|
|
617
|
-
tuple: The shape of the constant's numpy array value
|
|
618
|
-
"""
|
|
619
|
-
# Verify the invariant: constants should already be squeezed during construction
|
|
620
|
-
original_shape = self.value.shape
|
|
621
|
-
squeezed_shape = np.squeeze(self.value).shape
|
|
622
|
-
if original_shape != squeezed_shape:
|
|
623
|
-
raise ValueError(
|
|
624
|
-
f"Constant not properly normalized: has shape {original_shape} "
|
|
625
|
-
"but should have shape {squeezed_shape}. "
|
|
626
|
-
"Constants should be squeezed during construction."
|
|
627
|
-
)
|
|
628
|
-
return self.value.shape
|
|
629
|
-
|
|
630
|
-
def sparsity(self, n_x: int, n_u: int) -> Tuple[np.ndarray, np.ndarray]:
|
|
631
|
-
"""Constants have no decision-variable dependence."""
|
|
632
|
-
shape = self.value.shape
|
|
633
|
-
n_out = int(np.prod(shape)) if shape else 1
|
|
634
|
-
return (
|
|
635
|
-
np.zeros((n_out, n_x), dtype=bool),
|
|
636
|
-
np.zeros((n_out, n_u), dtype=bool),
|
|
637
|
-
)
|
|
604
|
+
super().__init__(name="__constant__", shape=self.value.shape)
|
|
638
605
|
|
|
639
606
|
def _hash_into(self, hasher: "hashlib._Hash") -> None:
|
|
640
607
|
"""Hash constant by its value.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import cProfile
|
|
2
|
+
import os
|
|
3
|
+
from datetime import datetime
|
|
4
|
+
from typing import Callable, Optional
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def _create_session():
|
|
8
|
+
"""Create a new profiling session. Returns a function that generates .prof paths."""
|
|
9
|
+
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
|
|
10
|
+
run_dir = os.path.join("profiling", timestamp)
|
|
11
|
+
os.makedirs(run_dir, exist_ok=True)
|
|
12
|
+
counts = {}
|
|
13
|
+
|
|
14
|
+
def path_for(identifier: str) -> str:
|
|
15
|
+
count = counts.get(identifier, 0)
|
|
16
|
+
counts[identifier] = count + 1
|
|
17
|
+
suffix = f"-{count}" if count > 0 else ""
|
|
18
|
+
return os.path.join(run_dir, f"{identifier}{suffix}.prof")
|
|
19
|
+
|
|
20
|
+
return path_for
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def profiling_start(
|
|
24
|
+
profiling_enabled: bool, session: Optional[Callable[[str], str]] = None
|
|
25
|
+
) -> Optional[tuple[cProfile.Profile, Callable[[str], str]]]:
|
|
26
|
+
"""Start profiling if enabled.
|
|
27
|
+
|
|
28
|
+
Args:
|
|
29
|
+
profiling_enabled: Whether to enable profiling.
|
|
30
|
+
session: Existing session to reuse. If None, a new session is created.
|
|
31
|
+
|
|
32
|
+
Returns:
|
|
33
|
+
(Profile, session) tuple if enabled, None otherwise.
|
|
34
|
+
"""
|
|
35
|
+
if profiling_enabled:
|
|
36
|
+
if session is None:
|
|
37
|
+
session = _create_session()
|
|
38
|
+
pr = cProfile.Profile()
|
|
39
|
+
pr.enable()
|
|
40
|
+
return (pr, session)
|
|
41
|
+
return None
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def profiling_end(ctx: Optional[tuple[cProfile.Profile, Callable[[str], str]]], identifier: str):
|
|
45
|
+
"""Stop profiling and save results.
|
|
46
|
+
|
|
47
|
+
Args:
|
|
48
|
+
ctx: (Profile, session) tuple from profiling_start, or None.
|
|
49
|
+
identifier: Identifier for the profiling stage (e.g., "solve", "initialize").
|
|
50
|
+
"""
|
|
51
|
+
if ctx is not None:
|
|
52
|
+
pr, session = ctx
|
|
53
|
+
pr.disable()
|
|
54
|
+
pr.dump_stats(session(identifier))
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: openscvx
|
|
3
|
-
Version: 0.4.1.
|
|
3
|
+
Version: 0.4.1.dev89
|
|
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,37 +0,0 @@
|
|
|
1
|
-
from datetime import datetime
|
|
2
|
-
from typing import TYPE_CHECKING, Optional
|
|
3
|
-
|
|
4
|
-
if TYPE_CHECKING:
|
|
5
|
-
import cProfile
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
def profiling_start(profiling_enabled: bool) -> "Optional[cProfile.Profile]":
|
|
9
|
-
"""Start profiling if enabled.
|
|
10
|
-
|
|
11
|
-
Args:
|
|
12
|
-
profiling_enabled: Whether to enable profiling.
|
|
13
|
-
|
|
14
|
-
Returns:
|
|
15
|
-
Profile object if enabled, None otherwise.
|
|
16
|
-
"""
|
|
17
|
-
if profiling_enabled:
|
|
18
|
-
import cProfile
|
|
19
|
-
|
|
20
|
-
pr = cProfile.Profile()
|
|
21
|
-
pr.enable()
|
|
22
|
-
return pr
|
|
23
|
-
return None
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
def profiling_end(pr: "Optional[cProfile.Profile]", identifier: str):
|
|
27
|
-
"""Stop profiling and save results with timestamp.
|
|
28
|
-
|
|
29
|
-
Args:
|
|
30
|
-
pr: Profile object from profiling_start, or None.
|
|
31
|
-
identifier: Identifier for the profiling session (e.g., "solve", "initialize").
|
|
32
|
-
"""
|
|
33
|
-
if pr is not None:
|
|
34
|
-
pr.disable()
|
|
35
|
-
# Save results so it can be visualized with snakeviz
|
|
36
|
-
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
|
|
37
|
-
pr.dump_stats(f"profiling/{timestamp}_{identifier}.prof")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/docs/UnderTheHood/vectorization_and_vmapping.md
RENAMED
|
File without changes
|
|
File without changes
|
{openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/docs/UsersGuide/01_hello_world_brachistochrone.md
RENAMED
|
File without changes
|
{openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/docs/UsersGuide/02_drone_racing_constraints.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/examples/realtime/obstacle_avoidance_realtime.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/2-mars.avif
RENAMED
|
File without changes
|
{openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/2-mars@1x.avif
RENAMED
|
File without changes
|
{openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/2-mars@2x.avif
RENAMED
|
File without changes
|
{openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/2-mars@3x.avif
RENAMED
|
File without changes
|
{openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/2-mars@4x.avif
RENAMED
|
File without changes
|
{openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/3-moon.avif
RENAMED
|
File without changes
|
{openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/3-moon@1x.avif
RENAMED
|
File without changes
|
{openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/3-moon@2x.avif
RENAMED
|
File without changes
|
{openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/3-moon@3x.avif
RENAMED
|
File without changes
|
{openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/3-moon@4x.avif
RENAMED
|
File without changes
|
{openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/4-sat1.avif
RENAMED
|
File without changes
|
{openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/4-sat1@1x.avif
RENAMED
|
File without changes
|
{openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/4-sat1@2x.avif
RENAMED
|
File without changes
|
{openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/4-sat1@3x.avif
RENAMED
|
File without changes
|
{openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/4-sat1@4x.avif
RENAMED
|
File without changes
|
{openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/5-space.avif
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/images/layers/6-earth.avif
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/javascripts/parallax.js
RENAMED
|
File without changes
|
|
File without changes
|
{openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/stylesheets/custom.css
RENAMED
|
File without changes
|
{openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/assets/stylesheets/parallax.css
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/material/overrides/partials/parallax/hero.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscvx-0.4.1.dev84 → openscvx-0.4.1.dev89}/openscvx/discretization/linearize_discretize.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|