pycddp 0.1.0__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.
- pycddp-0.1.0/.github/ISSUE_TEMPLATE/bug_report.yml +55 -0
- pycddp-0.1.0/.github/ISSUE_TEMPLATE/config.yml +5 -0
- pycddp-0.1.0/.github/ISSUE_TEMPLATE/feature_request.yml +36 -0
- pycddp-0.1.0/.github/PULL_REQUEST_TEMPLATE.md +16 -0
- pycddp-0.1.0/.github/workflows/build.yaml +29 -0
- pycddp-0.1.0/.github/workflows/pages.yml +58 -0
- pycddp-0.1.0/.github/workflows/publish.yml +91 -0
- pycddp-0.1.0/.github/workflows/python-dependency-guard.yaml +41 -0
- pycddp-0.1.0/.github/workflows/wheels.yml +70 -0
- pycddp-0.1.0/.gitignore +32 -0
- pycddp-0.1.0/.python-version +1 -0
- pycddp-0.1.0/CMakeLists.txt +324 -0
- pycddp-0.1.0/CODE_OF_CONDUCT.md +27 -0
- pycddp-0.1.0/CONTRIBUTING.md +68 -0
- pycddp-0.1.0/Dockerfile +39 -0
- pycddp-0.1.0/LICENSE +201 -0
- pycddp-0.1.0/PKG-INFO +203 -0
- pycddp-0.1.0/README.md +169 -0
- pycddp-0.1.0/SECURITY.md +26 -0
- pycddp-0.1.0/cmake/cddpConfig.cmake.in +8 -0
- pycddp-0.1.0/docs/assets/cddp_in_cpp.png +0 -0
- pycddp-0.1.0/docs/assets/python_portfolio/cartpole_swing_up.gif +0 -0
- pycddp-0.1.0/docs/assets/python_portfolio/mpcc_racing_line.gif +0 -0
- pycddp-0.1.0/docs/assets/python_portfolio/pendulum_swing_up.gif +0 -0
- pycddp-0.1.0/docs/assets/python_portfolio/unicycle_obstacle_avoidance.gif +0 -0
- pycddp-0.1.0/docs/cpp.md +32 -0
- pycddp-0.1.0/docs/index.md +42 -0
- pycddp-0.1.0/docs/install.md +57 -0
- pycddp-0.1.0/docs/python.md +39 -0
- pycddp-0.1.0/docs/python_portfolio.md +73 -0
- pycddp-0.1.0/docs/release.md +48 -0
- pycddp-0.1.0/docs/stylesheets/extra.css +110 -0
- pycddp-0.1.0/examples/CMakeLists.txt +28 -0
- pycddp-0.1.0/examples/cddp_cartpole.cpp +80 -0
- pycddp-0.1.0/examples/cddp_manipulator.cpp +82 -0
- pycddp-0.1.0/examples/cddp_pendulum.cpp +79 -0
- pycddp-0.1.0/examples/cddp_quadrotor_point.cpp +111 -0
- pycddp-0.1.0/examples/cddp_unicycle.cpp +79 -0
- pycddp-0.1.0/examples/data/README.md +9 -0
- pycddp-0.1.0/examples/data/mpcc_racing_track.csv +490 -0
- pycddp-0.1.0/examples/generate_quadrotor_acados.py +203 -0
- pycddp-0.1.0/examples/generate_unicycle_acados.py +149 -0
- pycddp-0.1.0/examples/ipopt_spacecraft_linear.ipynb +2630 -0
- pycddp-0.1.0/examples/ipopt_spacecraft_linear_fuel.ipynb +1248 -0
- pycddp-0.1.0/examples/python_portfolio.py +85 -0
- pycddp-0.1.0/examples/python_portfolio_lib.py +1426 -0
- pycddp-0.1.0/include/cddp-cpp/cddp.hpp +59 -0
- pycddp-0.1.0/include/cddp-cpp/cddp_core/barrier.hpp +539 -0
- pycddp-0.1.0/include/cddp-cpp/cddp_core/boxqp.hpp +168 -0
- pycddp-0.1.0/include/cddp-cpp/cddp_core/cddp_core.hpp +442 -0
- pycddp-0.1.0/include/cddp-cpp/cddp_core/cddp_solver_base.hpp +188 -0
- pycddp-0.1.0/include/cddp-cpp/cddp_core/clddp_solver.hpp +53 -0
- pycddp-0.1.0/include/cddp-cpp/cddp_core/constraint.hpp +1052 -0
- pycddp-0.1.0/include/cddp-cpp/cddp_core/dynamical_system.hpp +154 -0
- pycddp-0.1.0/include/cddp-cpp/cddp_core/helper.hpp +239 -0
- pycddp-0.1.0/include/cddp-cpp/cddp_core/ipddp_solver.hpp +138 -0
- pycddp-0.1.0/include/cddp-cpp/cddp_core/logddp_solver.hpp +83 -0
- pycddp-0.1.0/include/cddp-cpp/cddp_core/msipddp_solver.hpp +149 -0
- pycddp-0.1.0/include/cddp-cpp/cddp_core/objective.hpp +321 -0
- pycddp-0.1.0/include/cddp-cpp/cddp_core/options.hpp +217 -0
- pycddp-0.1.0/include/cddp-cpp/cddp_core/qp_solver.hpp +150 -0
- pycddp-0.1.0/include/cddp-cpp/cddp_core/terminal_constraint.hpp +254 -0
- pycddp-0.1.0/include/cddp-cpp/cddp_example_utils.hpp +61 -0
- pycddp-0.1.0/include/cddp-cpp/dynamics_model/acrobot.hpp +155 -0
- pycddp-0.1.0/include/cddp-cpp/dynamics_model/bicycle.hpp +119 -0
- pycddp-0.1.0/include/cddp-cpp/dynamics_model/car.hpp +147 -0
- pycddp-0.1.0/include/cddp-cpp/dynamics_model/cartpole.hpp +158 -0
- pycddp-0.1.0/include/cddp-cpp/dynamics_model/dreyfus_rocket.hpp +129 -0
- pycddp-0.1.0/include/cddp-cpp/dynamics_model/dubins_car.hpp +129 -0
- pycddp-0.1.0/include/cddp-cpp/dynamics_model/euler_attitude.hpp +186 -0
- pycddp-0.1.0/include/cddp-cpp/dynamics_model/forklift.hpp +151 -0
- pycddp-0.1.0/include/cddp-cpp/dynamics_model/lti_system.hpp +127 -0
- pycddp-0.1.0/include/cddp-cpp/dynamics_model/manipulator.hpp +221 -0
- pycddp-0.1.0/include/cddp-cpp/dynamics_model/mrp_attitude.hpp +164 -0
- pycddp-0.1.0/include/cddp-cpp/dynamics_model/pendulum.hpp +135 -0
- pycddp-0.1.0/include/cddp-cpp/dynamics_model/quadrotor.hpp +175 -0
- pycddp-0.1.0/include/cddp-cpp/dynamics_model/quadrotor_rate.hpp +205 -0
- pycddp-0.1.0/include/cddp-cpp/dynamics_model/quaternion_attitude.hpp +173 -0
- pycddp-0.1.0/include/cddp-cpp/dynamics_model/spacecraft_landing2d.hpp +175 -0
- pycddp-0.1.0/include/cddp-cpp/dynamics_model/spacecraft_linear.hpp +134 -0
- pycddp-0.1.0/include/cddp-cpp/dynamics_model/spacecraft_linear_fuel.hpp +152 -0
- pycddp-0.1.0/include/cddp-cpp/dynamics_model/spacecraft_nonlinear.hpp +150 -0
- pycddp-0.1.0/include/cddp-cpp/dynamics_model/spacecraft_twobody.hpp +121 -0
- pycddp-0.1.0/include/cddp-cpp/dynamics_model/unicycle.hpp +131 -0
- pycddp-0.1.0/include/cddp-cpp/dynamics_model/usv_3dof.hpp +149 -0
- pycddp-0.1.0/mkdocs.yml +38 -0
- pycddp-0.1.0/pyproject.toml +51 -0
- pycddp-0.1.0/python/CMakeLists.txt +34 -0
- pycddp-0.1.0/python/pycddp/__init__.py +88 -0
- pycddp-0.1.0/python/pycddp/_version.py +1 -0
- pycddp-0.1.0/python/src/bind_constraints.cpp +160 -0
- pycddp-0.1.0/python/src/bind_dynamics.cpp +258 -0
- pycddp-0.1.0/python/src/bind_objective.cpp +64 -0
- pycddp-0.1.0/python/src/bind_options.cpp +126 -0
- pycddp-0.1.0/python/src/bind_solver.cpp +663 -0
- pycddp-0.1.0/python/src/main.cpp +18 -0
- pycddp-0.1.0/python/tests/test_all_dynamics.py +86 -0
- pycddp-0.1.0/python/tests/test_constraints.py +139 -0
- pycddp-0.1.0/python/tests/test_custom_dynamics.py +160 -0
- pycddp-0.1.0/python/tests/test_nonlinear_objective.py +58 -0
- pycddp-0.1.0/python/tests/test_options.py +48 -0
- pycddp-0.1.0/python/tests/test_pendulum.py +109 -0
- pycddp-0.1.0/python/tests/test_portfolio.py +69 -0
- pycddp-0.1.0/python/tests/test_solver_errors.py +149 -0
- pycddp-0.1.0/security/python-direct-deps-allowlist.txt +8 -0
- pycddp-0.1.0/src/cddp_core/boxqp.cpp +252 -0
- pycddp-0.1.0/src/cddp_core/cddp_core.cpp +713 -0
- pycddp-0.1.0/src/cddp_core/cddp_solver_base.cpp +426 -0
- pycddp-0.1.0/src/cddp_core/clddp_solver.cpp +295 -0
- pycddp-0.1.0/src/cddp_core/constraint.cpp +22 -0
- pycddp-0.1.0/src/cddp_core/dynamical_system.cpp +217 -0
- pycddp-0.1.0/src/cddp_core/helper.cpp +208 -0
- pycddp-0.1.0/src/cddp_core/ipddp_solver.cpp +1643 -0
- pycddp-0.1.0/src/cddp_core/logddp_solver.cpp +714 -0
- pycddp-0.1.0/src/cddp_core/msipddp_solver.cpp +2047 -0
- pycddp-0.1.0/src/cddp_core/objective.cpp +290 -0
- pycddp-0.1.0/src/cddp_core/qp_solver.cpp +207 -0
- pycddp-0.1.0/src/dynamics_model/acrobot.cpp +165 -0
- pycddp-0.1.0/src/dynamics_model/bicycle.cpp +178 -0
- pycddp-0.1.0/src/dynamics_model/car.cpp +231 -0
- pycddp-0.1.0/src/dynamics_model/cartpole.cpp +201 -0
- pycddp-0.1.0/src/dynamics_model/dreyfus_rocket.cpp +97 -0
- pycddp-0.1.0/src/dynamics_model/dubins_car.cpp +142 -0
- pycddp-0.1.0/src/dynamics_model/euler_attitude.cpp +176 -0
- pycddp-0.1.0/src/dynamics_model/forklift.cpp +200 -0
- pycddp-0.1.0/src/dynamics_model/lti_system.cpp +122 -0
- pycddp-0.1.0/src/dynamics_model/manipulator.cpp +274 -0
- pycddp-0.1.0/src/dynamics_model/mrp_attitude.cpp +101 -0
- pycddp-0.1.0/src/dynamics_model/pendulum.cpp +128 -0
- pycddp-0.1.0/src/dynamics_model/quadrotor.cpp +321 -0
- pycddp-0.1.0/src/dynamics_model/quadrotor_rate.cpp +268 -0
- pycddp-0.1.0/src/dynamics_model/quaternion_attitude.cpp +207 -0
- pycddp-0.1.0/src/dynamics_model/spacecraft_landing2d.cpp +150 -0
- pycddp-0.1.0/src/dynamics_model/spacecraft_linear.cpp +156 -0
- pycddp-0.1.0/src/dynamics_model/spacecraft_linear_fuel.cpp +160 -0
- pycddp-0.1.0/src/dynamics_model/spacecraft_nonlinear.cpp +122 -0
- pycddp-0.1.0/src/dynamics_model/spacecraft_twobody.cpp +75 -0
- pycddp-0.1.0/src/dynamics_model/unicycle.cpp +137 -0
- pycddp-0.1.0/src/dynamics_model/usv_3dof.cpp +249 -0
- pycddp-0.1.0/tests/CMakeLists.txt +196 -0
- pycddp-0.1.0/tests/cddp_core/test_boxqp.cpp +238 -0
- pycddp-0.1.0/tests/cddp_core/test_cddp_core.cpp +645 -0
- pycddp-0.1.0/tests/cddp_core/test_clddp_solver.cpp +828 -0
- pycddp-0.1.0/tests/cddp_core/test_constraint.cpp +405 -0
- pycddp-0.1.0/tests/cddp_core/test_finite_difference.cpp +69 -0
- pycddp-0.1.0/tests/cddp_core/test_ipddp_core.cpp +235 -0
- pycddp-0.1.0/tests/cddp_core/test_ipddp_solver.cpp +823 -0
- pycddp-0.1.0/tests/cddp_core/test_logddp_solver.cpp +955 -0
- pycddp-0.1.0/tests/cddp_core/test_msipddp_core.cpp +317 -0
- pycddp-0.1.0/tests/cddp_core/test_msipddp_solver.cpp +823 -0
- pycddp-0.1.0/tests/cddp_core/test_objective.cpp +259 -0
- pycddp-0.1.0/tests/dynamics_model/test_acrobot.cpp +193 -0
- pycddp-0.1.0/tests/dynamics_model/test_attitude_dynamics.cpp +284 -0
- pycddp-0.1.0/tests/dynamics_model/test_bicycle.cpp +135 -0
- pycddp-0.1.0/tests/dynamics_model/test_car.cpp +442 -0
- pycddp-0.1.0/tests/dynamics_model/test_cartpole.cpp +105 -0
- pycddp-0.1.0/tests/dynamics_model/test_dreyfus_rocket.cpp +74 -0
- pycddp-0.1.0/tests/dynamics_model/test_dubins_car.cpp +71 -0
- pycddp-0.1.0/tests/dynamics_model/test_forklift.cpp +148 -0
- pycddp-0.1.0/tests/dynamics_model/test_lti_system.cpp +141 -0
- pycddp-0.1.0/tests/dynamics_model/test_manipulator.cpp +95 -0
- pycddp-0.1.0/tests/dynamics_model/test_mrp_attitude.cpp +287 -0
- pycddp-0.1.0/tests/dynamics_model/test_pendulum.cpp +74 -0
- pycddp-0.1.0/tests/dynamics_model/test_quadrotor.cpp +496 -0
- pycddp-0.1.0/tests/dynamics_model/test_quadrotor_rate.cpp +380 -0
- pycddp-0.1.0/tests/dynamics_model/test_spacecraft_landing2d.cpp +78 -0
- pycddp-0.1.0/tests/dynamics_model/test_spacecraft_linear.cpp +148 -0
- pycddp-0.1.0/tests/dynamics_model/test_spacecraft_linear_fuel.cpp +131 -0
- pycddp-0.1.0/tests/dynamics_model/test_spacecraft_nonlinear.cpp +233 -0
- pycddp-0.1.0/tests/dynamics_model/test_unicycle.cpp +67 -0
- pycddp-0.1.0/tests/dynamics_model/test_usv_3dof.cpp +92 -0
- pycddp-0.1.0/tests/package_smoke/CMakeLists.txt +8 -0
- pycddp-0.1.0/tests/package_smoke/main.cpp +8 -0
- pycddp-0.1.0/tests/package_smoke_test.cmake +43 -0
- pycddp-0.1.0/tests/test_animation.cpp +80 -0
- pycddp-0.1.0/tests/test_autodiff.cpp +138 -0
- pycddp-0.1.0/tests/test_casadi_solver.cpp +213 -0
- pycddp-0.1.0/tests/test_eigen.cpp +13 -0
- pycddp-0.1.0/tests/test_hessian.cpp +265 -0
- pycddp-0.1.0/tests/test_ipddp_car.cpp +133 -0
- pycddp-0.1.0/tests/test_ipddp_pendulum.cpp +111 -0
- pycddp-0.1.0/tests/test_ipddp_quadrotor.cpp +315 -0
- pycddp-0.1.0/tests/test_msipddp_car.cpp +138 -0
- pycddp-0.1.0/tools/check_python_dependency_policy.py +234 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
name: Bug report
|
|
2
|
+
description: Report a reproducible defect in the solver, bindings, build, or docs
|
|
3
|
+
title: "[bug] "
|
|
4
|
+
labels:
|
|
5
|
+
- bug
|
|
6
|
+
body:
|
|
7
|
+
- type: markdown
|
|
8
|
+
attributes:
|
|
9
|
+
value: |
|
|
10
|
+
Thanks for taking the time to report a problem.
|
|
11
|
+
|
|
12
|
+
Please include a minimal reproduction and the exact commands you ran.
|
|
13
|
+
- type: textarea
|
|
14
|
+
id: summary
|
|
15
|
+
attributes:
|
|
16
|
+
label: Summary
|
|
17
|
+
description: What happened, and what did you expect to happen instead?
|
|
18
|
+
placeholder: A concise description of the bug and expected behavior.
|
|
19
|
+
validations:
|
|
20
|
+
required: true
|
|
21
|
+
- type: textarea
|
|
22
|
+
id: reproduction
|
|
23
|
+
attributes:
|
|
24
|
+
label: Reproduction
|
|
25
|
+
description: Provide the smallest reproduction you can, including commands and inputs.
|
|
26
|
+
placeholder: |
|
|
27
|
+
1. Configure with ...
|
|
28
|
+
2. Run ...
|
|
29
|
+
3. Observe ...
|
|
30
|
+
validations:
|
|
31
|
+
required: true
|
|
32
|
+
- type: textarea
|
|
33
|
+
id: logs
|
|
34
|
+
attributes:
|
|
35
|
+
label: Logs and output
|
|
36
|
+
description: Paste the relevant error message, stack trace, or failing test output.
|
|
37
|
+
render: text
|
|
38
|
+
- type: textarea
|
|
39
|
+
id: environment
|
|
40
|
+
attributes:
|
|
41
|
+
label: Environment
|
|
42
|
+
description: Share the platform and toolchain details relevant to the bug.
|
|
43
|
+
placeholder: |
|
|
44
|
+
OS:
|
|
45
|
+
Compiler:
|
|
46
|
+
CMake:
|
|
47
|
+
Python:
|
|
48
|
+
Build flags:
|
|
49
|
+
validations:
|
|
50
|
+
required: true
|
|
51
|
+
- type: textarea
|
|
52
|
+
id: context
|
|
53
|
+
attributes:
|
|
54
|
+
label: Additional context
|
|
55
|
+
description: Add anything else that might help debug the issue.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
name: Feature request
|
|
2
|
+
description: Propose an improvement to the solver, examples, bindings, or docs
|
|
3
|
+
title: "[feature] "
|
|
4
|
+
labels:
|
|
5
|
+
- enhancement
|
|
6
|
+
body:
|
|
7
|
+
- type: markdown
|
|
8
|
+
attributes:
|
|
9
|
+
value: |
|
|
10
|
+
Please describe the problem first, then the change you want.
|
|
11
|
+
- type: textarea
|
|
12
|
+
id: problem
|
|
13
|
+
attributes:
|
|
14
|
+
label: Problem or use case
|
|
15
|
+
description: What limitation, missing capability, or workflow pain does this address?
|
|
16
|
+
placeholder: I am trying to ...
|
|
17
|
+
validations:
|
|
18
|
+
required: true
|
|
19
|
+
- type: textarea
|
|
20
|
+
id: proposal
|
|
21
|
+
attributes:
|
|
22
|
+
label: Proposed change
|
|
23
|
+
description: Describe the API, behavior, or workflow you would like to see.
|
|
24
|
+
placeholder: Add support for ...
|
|
25
|
+
validations:
|
|
26
|
+
required: true
|
|
27
|
+
- type: textarea
|
|
28
|
+
id: alternatives
|
|
29
|
+
attributes:
|
|
30
|
+
label: Alternatives considered
|
|
31
|
+
description: What workarounds or alternative designs have you considered?
|
|
32
|
+
- type: textarea
|
|
33
|
+
id: context
|
|
34
|
+
attributes:
|
|
35
|
+
label: Additional context
|
|
36
|
+
description: Benchmarks, references, examples, or prior art that help clarify the request.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
## Summary
|
|
2
|
+
- Describe the change and why it is needed.
|
|
3
|
+
|
|
4
|
+
## Changes
|
|
5
|
+
- List the concrete code, API, testing, or documentation updates.
|
|
6
|
+
|
|
7
|
+
## Validation
|
|
8
|
+
- [ ] `...`
|
|
9
|
+
|
|
10
|
+
## Checklist
|
|
11
|
+
- [ ] I ran the relevant tests or explained why they were not run.
|
|
12
|
+
- [ ] I updated documentation when behavior or public interfaces changed.
|
|
13
|
+
- [ ] I kept the change focused and avoided unrelated cleanup.
|
|
14
|
+
|
|
15
|
+
## Notes
|
|
16
|
+
- Add reviewer context only when it is needed.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
name: C++ CI with Docker
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ master ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ master ]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
build:
|
|
11
|
+
runs-on: ${{ matrix.os }}
|
|
12
|
+
strategy:
|
|
13
|
+
matrix:
|
|
14
|
+
os: [ubuntu-latest, macos-latest]
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v3
|
|
17
|
+
|
|
18
|
+
# Only run Docker steps on Linux
|
|
19
|
+
- name: Login to Docker Hub
|
|
20
|
+
if: runner.os == 'Linux'
|
|
21
|
+
run: docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
|
|
22
|
+
|
|
23
|
+
- name: Build and Test the Docker image
|
|
24
|
+
if: runner.os == 'Linux'
|
|
25
|
+
run: docker build -t astomodynamics/cddp-cpp .
|
|
26
|
+
|
|
27
|
+
- name: Push the Docker image (optional)
|
|
28
|
+
if: runner.os == 'Linux'
|
|
29
|
+
run: docker push astomodynamics/cddp-cpp
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
name: Docs
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [master]
|
|
6
|
+
paths:
|
|
7
|
+
- "docs/**"
|
|
8
|
+
- "mkdocs.yml"
|
|
9
|
+
- ".github/workflows/pages.yml"
|
|
10
|
+
workflow_dispatch:
|
|
11
|
+
|
|
12
|
+
permissions:
|
|
13
|
+
contents: read
|
|
14
|
+
pages: write
|
|
15
|
+
id-token: write
|
|
16
|
+
|
|
17
|
+
concurrency:
|
|
18
|
+
group: pages
|
|
19
|
+
cancel-in-progress: true
|
|
20
|
+
|
|
21
|
+
jobs:
|
|
22
|
+
build:
|
|
23
|
+
name: Build docs
|
|
24
|
+
runs-on: ubuntu-latest
|
|
25
|
+
steps:
|
|
26
|
+
- name: Check out repository
|
|
27
|
+
uses: actions/checkout@v4
|
|
28
|
+
|
|
29
|
+
- name: Set up Python
|
|
30
|
+
uses: actions/setup-python@v5
|
|
31
|
+
with:
|
|
32
|
+
python-version: "3.12"
|
|
33
|
+
|
|
34
|
+
- name: Install uv
|
|
35
|
+
run: python -m pip install uv
|
|
36
|
+
|
|
37
|
+
- name: Configure GitHub Pages
|
|
38
|
+
uses: actions/configure-pages@v5
|
|
39
|
+
|
|
40
|
+
- name: Build site
|
|
41
|
+
run: uvx --from mkdocs --with mkdocs-material mkdocs build --strict
|
|
42
|
+
|
|
43
|
+
- name: Upload Pages artifact
|
|
44
|
+
uses: actions/upload-pages-artifact@v3
|
|
45
|
+
with:
|
|
46
|
+
path: site
|
|
47
|
+
|
|
48
|
+
deploy:
|
|
49
|
+
name: Deploy docs
|
|
50
|
+
runs-on: ubuntu-latest
|
|
51
|
+
needs: build
|
|
52
|
+
environment:
|
|
53
|
+
name: github-pages
|
|
54
|
+
url: ${{ steps.deployment.outputs.page_url }}
|
|
55
|
+
steps:
|
|
56
|
+
- name: Deploy to GitHub Pages
|
|
57
|
+
id: deployment
|
|
58
|
+
uses: actions/deploy-pages@v4
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
name: Publish PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*"
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
build-sdist:
|
|
13
|
+
name: Build sdist
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- name: Check out repository
|
|
17
|
+
uses: actions/checkout@v4
|
|
18
|
+
|
|
19
|
+
- name: Set up Python
|
|
20
|
+
uses: actions/setup-python@v5
|
|
21
|
+
with:
|
|
22
|
+
python-version: "3.12"
|
|
23
|
+
|
|
24
|
+
- name: Install build frontend
|
|
25
|
+
run: python -m pip install build
|
|
26
|
+
|
|
27
|
+
- name: Build source distribution
|
|
28
|
+
run: python -m build --sdist
|
|
29
|
+
|
|
30
|
+
- name: Upload source distribution
|
|
31
|
+
uses: actions/upload-artifact@v4
|
|
32
|
+
with:
|
|
33
|
+
name: dist-sdist
|
|
34
|
+
path: dist/*.tar.gz
|
|
35
|
+
|
|
36
|
+
build-wheels:
|
|
37
|
+
name: Build wheels (${{ matrix.os }})
|
|
38
|
+
runs-on: ${{ matrix.os }}
|
|
39
|
+
strategy:
|
|
40
|
+
fail-fast: false
|
|
41
|
+
matrix:
|
|
42
|
+
os: [ubuntu-latest, windows-latest, macos-14]
|
|
43
|
+
|
|
44
|
+
steps:
|
|
45
|
+
- name: Check out repository
|
|
46
|
+
uses: actions/checkout@v4
|
|
47
|
+
|
|
48
|
+
- name: Set up Python
|
|
49
|
+
uses: actions/setup-python@v5
|
|
50
|
+
with:
|
|
51
|
+
python-version: "3.12"
|
|
52
|
+
|
|
53
|
+
- name: Install cibuildwheel
|
|
54
|
+
run: python -m pip install cibuildwheel
|
|
55
|
+
|
|
56
|
+
- name: Build wheels
|
|
57
|
+
run: python -m cibuildwheel --output-dir wheelhouse
|
|
58
|
+
env:
|
|
59
|
+
CIBW_BUILD: "cp310-* cp311-* cp312-* cp313-*"
|
|
60
|
+
CIBW_SKIP: "*-musllinux_* *-win32"
|
|
61
|
+
CIBW_ARCHS_LINUX: auto64
|
|
62
|
+
CIBW_ARCHS_WINDOWS: auto64
|
|
63
|
+
CIBW_ARCHS_MACOS: auto64
|
|
64
|
+
|
|
65
|
+
- name: Upload wheel artifacts
|
|
66
|
+
uses: actions/upload-artifact@v4
|
|
67
|
+
with:
|
|
68
|
+
name: dist-wheels-${{ matrix.os }}
|
|
69
|
+
path: wheelhouse/*.whl
|
|
70
|
+
|
|
71
|
+
publish:
|
|
72
|
+
name: Publish to PyPI
|
|
73
|
+
runs-on: ubuntu-latest
|
|
74
|
+
needs: [build-sdist, build-wheels]
|
|
75
|
+
permissions:
|
|
76
|
+
id-token: write
|
|
77
|
+
contents: read
|
|
78
|
+
environment:
|
|
79
|
+
name: pypi
|
|
80
|
+
url: https://pypi.org/p/pycddp
|
|
81
|
+
|
|
82
|
+
steps:
|
|
83
|
+
- name: Download distribution artifacts
|
|
84
|
+
uses: actions/download-artifact@v4
|
|
85
|
+
with:
|
|
86
|
+
pattern: dist-*
|
|
87
|
+
path: dist
|
|
88
|
+
merge-multiple: true
|
|
89
|
+
|
|
90
|
+
- name: Publish distributions
|
|
91
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
name: Python Dependency Guard
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
branches: [ master ]
|
|
6
|
+
paths:
|
|
7
|
+
- "pyproject.toml"
|
|
8
|
+
- "uv.lock"
|
|
9
|
+
- "security/python-direct-deps-allowlist.txt"
|
|
10
|
+
- "tools/check_python_dependency_policy.py"
|
|
11
|
+
|
|
12
|
+
permissions:
|
|
13
|
+
contents: read
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
policy:
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
steps:
|
|
19
|
+
- name: Check out repository
|
|
20
|
+
uses: actions/checkout@v4
|
|
21
|
+
with:
|
|
22
|
+
fetch-depth: 0
|
|
23
|
+
|
|
24
|
+
- name: Set up Python
|
|
25
|
+
uses: actions/setup-python@v5
|
|
26
|
+
with:
|
|
27
|
+
python-version: "3.12"
|
|
28
|
+
|
|
29
|
+
- name: Enforce dependency policy
|
|
30
|
+
run: python tools/check_python_dependency_policy.py --base-ref "origin/${{ github.base_ref }}"
|
|
31
|
+
|
|
32
|
+
dependency-review:
|
|
33
|
+
runs-on: ubuntu-latest
|
|
34
|
+
permissions:
|
|
35
|
+
contents: read
|
|
36
|
+
pull-requests: write
|
|
37
|
+
steps:
|
|
38
|
+
- name: Check dependency review
|
|
39
|
+
uses: actions/dependency-review-action@v4
|
|
40
|
+
with:
|
|
41
|
+
fail-on-severity: high
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
name: Wheel CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
push:
|
|
6
|
+
branches: [master]
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: read
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
build-sdist:
|
|
14
|
+
name: Build sdist
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
steps:
|
|
17
|
+
- name: Check out repository
|
|
18
|
+
uses: actions/checkout@v4
|
|
19
|
+
|
|
20
|
+
- name: Set up Python
|
|
21
|
+
uses: actions/setup-python@v5
|
|
22
|
+
with:
|
|
23
|
+
python-version: "3.12"
|
|
24
|
+
|
|
25
|
+
- name: Install build frontend
|
|
26
|
+
run: python -m pip install build
|
|
27
|
+
|
|
28
|
+
- name: Build source distribution
|
|
29
|
+
run: python -m build --sdist
|
|
30
|
+
|
|
31
|
+
- name: Upload source distribution
|
|
32
|
+
uses: actions/upload-artifact@v4
|
|
33
|
+
with:
|
|
34
|
+
name: dist-sdist
|
|
35
|
+
path: dist/*.tar.gz
|
|
36
|
+
|
|
37
|
+
build-wheels:
|
|
38
|
+
name: Build wheels (${{ matrix.os }})
|
|
39
|
+
runs-on: ${{ matrix.os }}
|
|
40
|
+
strategy:
|
|
41
|
+
fail-fast: false
|
|
42
|
+
matrix:
|
|
43
|
+
os: [ubuntu-latest, windows-latest, macos-14]
|
|
44
|
+
|
|
45
|
+
steps:
|
|
46
|
+
- name: Check out repository
|
|
47
|
+
uses: actions/checkout@v4
|
|
48
|
+
|
|
49
|
+
- name: Set up Python
|
|
50
|
+
uses: actions/setup-python@v5
|
|
51
|
+
with:
|
|
52
|
+
python-version: "3.12"
|
|
53
|
+
|
|
54
|
+
- name: Install cibuildwheel
|
|
55
|
+
run: python -m pip install cibuildwheel
|
|
56
|
+
|
|
57
|
+
- name: Build wheels
|
|
58
|
+
run: python -m cibuildwheel --output-dir wheelhouse
|
|
59
|
+
env:
|
|
60
|
+
CIBW_BUILD: "cp310-* cp311-* cp312-* cp313-*"
|
|
61
|
+
CIBW_SKIP: "*-musllinux_* *-win32"
|
|
62
|
+
CIBW_ARCHS_LINUX: auto64
|
|
63
|
+
CIBW_ARCHS_WINDOWS: auto64
|
|
64
|
+
CIBW_ARCHS_MACOS: auto64
|
|
65
|
+
|
|
66
|
+
- name: Upload wheel artifacts
|
|
67
|
+
uses: actions/upload-artifact@v4
|
|
68
|
+
with:
|
|
69
|
+
name: dist-wheels-${{ matrix.os }}
|
|
70
|
+
path: wheelhouse/*.whl
|
pycddp-0.1.0/.gitignore
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# IDE
|
|
2
|
+
.vscode/
|
|
3
|
+
|
|
4
|
+
# Build
|
|
5
|
+
build/
|
|
6
|
+
|
|
7
|
+
# Output
|
|
8
|
+
plots/
|
|
9
|
+
results/
|
|
10
|
+
|
|
11
|
+
# Models
|
|
12
|
+
models/
|
|
13
|
+
neural_models/
|
|
14
|
+
|
|
15
|
+
# Generated code (acados)
|
|
16
|
+
examples/c_generated_code/
|
|
17
|
+
examples/*_acados_ocp.json
|
|
18
|
+
|
|
19
|
+
# PDF images
|
|
20
|
+
pdf_images/
|
|
21
|
+
|
|
22
|
+
# Solver output
|
|
23
|
+
solver_snopt.out
|
|
24
|
+
|
|
25
|
+
# Python / uv
|
|
26
|
+
.venv/
|
|
27
|
+
uv.lock
|
|
28
|
+
site/
|
|
29
|
+
*.egg-info/
|
|
30
|
+
__pycache__/
|
|
31
|
+
*.so
|
|
32
|
+
*.pyd
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.13
|