Skip to content

Commit 0220b01

Browse files
authored
[docs] add more checklists to developer documentation (#2168)
1 parent 74387eb commit 0220b01

File tree

1 file changed

+71
-1
lines changed

1 file changed

+71
-1
lines changed

docs/src/developer/checklists.md

Lines changed: 71 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,30 @@ performed changes to the source code of MathOptInterface.
55

66
In each case, copy the checklist into the description of the pull request.
77

8+
## Making a release
9+
10+
Use this checklist when making a release of the MathOptInterface repository.
11+
12+
```
13+
## Basic
14+
15+
- [ ] `version` field of `Project.toml` has been updated
16+
- If a breaking change, increment the MAJOR field and reset others to 0
17+
- If adding new features, increment the MINOR field and reset PATCH to 0
18+
- If adding bug fixes or documentation changes, increment the PATCH field
19+
20+
## Documentation
21+
22+
- [ ] Add a new entry to `docs/src/changelog.md`, following existing style
23+
24+
## Tests
25+
26+
- [ ] The `solver-tests.yml` GitHub action does not have unexpected failures.
27+
To run the action, go to:
28+
https://github.com/jump-dev/MathOptInterface.jl/actions/workflows/solver-tests.yml
29+
and click "Run workflow"
30+
```
31+
832
## Adding a new set
933

1034
Use this checklist when adding a new set to the MathOptInterface repository.
@@ -33,7 +57,7 @@ Use this checklist when adding a new set to the MathOptInterface repository.
3357
along with an `## Example` block containing a `jldoctest`
3458
- [ ] Add the docstring to `docs/src/reference/standard_form.md`
3559
- [ ] Add the set to the relevant table in `docs/src/manual/standard_form.md`
36-
60+
3761
## Tests
3862
3963
- [ ] Define a new `_set(::Type{S})` method in `src/Test/test_basic_constraint.jl`
@@ -51,3 +75,49 @@ Use this checklist when adding a new set to the MathOptInterface repository.
5175
- [ ] Add new tests to the `Test` submodule exercising your new set
5276
- [ ] Add new bridges to convert your set into more commonly used sets
5377
```
78+
79+
## Adding a new bridge
80+
81+
Use this checklist when adding a new bridge to the MathOptInterface repository.
82+
83+
The steps are mostly the same, but locations depend on whether the bridge is a
84+
`Constraint`, `Objective`, or `Variable` bridge. In each case below, replace
85+
`XXX` with the appropriate type of bridge.
86+
87+
```
88+
## Basic
89+
90+
- [ ] Create a new file in `src/Bridges/XXX/bridges`
91+
- [ ] Define the bridge, following existing examples. The name of the bridge
92+
struct must end in `Bridge`
93+
- [ ] Check if your bridge can be a subtype of [`MOI.Bridges.Constraint.SetMapBridge`](@ref)
94+
- [ ] Define a new `const` that is a `SingleBridgeOptimizer` wrapping the
95+
new bridge. The name of the const must be the name of the bridge, less
96+
the `Bridge` suffix
97+
- [ ] `include` the file in `src/Bridges/XXX/bridges/XXX.jl`
98+
- [ ] If the bridge should be enabled by default, add the bridge to
99+
`add_all_bridges` at the bottom of `src/Bridges/XXX/XXX.jl`
100+
101+
## Tests
102+
103+
- [ ] Create a new file in the appropriate subdirectory of `tests/Bridges/XXX`
104+
- [ ] Use `MOI.Bridges.runtests` to test various inputs and outputs of the
105+
bridge
106+
- [ ] If, after opening the pull request to add the bridge, some lines are not
107+
covered by the tests, add additional bridge-specific tests to cover the
108+
untested lines.
109+
110+
## Documentation
111+
112+
- [ ] Add a docstring which uses the same template as existing bridges.
113+
- [ ] Add the docstring to `docs/src/submodules/Bridges/list_of_bridges.md`
114+
115+
## Final touch
116+
117+
If the bridge depends on run-time values of other variables and constraints in
118+
the model:
119+
120+
- [ ] Implement `MOI.Utilities.needs_final_touch(::Bridge)`
121+
- [ ] Implement `MOI.Utilities.final_touch(::Bridge, ::MOI.ModelLike)`
122+
- [ ] Ensure that `final_touch` can be called multiple times in a row
123+
```

0 commit comments

Comments
 (0)