Skip to content

Commit ec838ca

Browse files
authored
[Utilities] add default MIME for printing (#2126)
1 parent 7e42e0c commit ec838ca

File tree

7 files changed

+43
-38
lines changed

7 files changed

+43
-38
lines changed

docs/src/submodules/FileFormats/overview.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ A MathOptFormat Model
8585
8686
julia> MOI.copy_to(dest, src)
8787
MathOptInterface.Utilities.IndexMap with 1 entry:
88-
VariableIndex(1) => VariableIndex(1)
88+
MOI.VariableIndex(1) => MOI.VariableIndex(1)
8989
9090
julia> MOI.write_to_file(dest, "file.mof.json")
9191

src/Utilities/print.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -655,6 +655,10 @@ function MOI.get(
655655
return "" # Leave as default
656656
end
657657

658+
function Base.show(io::IO, f::MOI.AbstractFunction)
659+
return show(io, MIME("text/plain"), f)
660+
end
661+
658662
function Base.show(io::IO, mime::MIME"text/plain", f::MOI.AbstractFunction)
659663
model = _NoVariableNameModel{MIME"text/plain"}()
660664
print(io, _to_string(_PrintOptions(mime), model, f))

src/functions.jl

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ julia> x = MOI.VariableIndex(1)
8484
MOI.VariableIndex(1)
8585
8686
julia> MOI.ScalarAffineTerm(2.0, x)
87-
MathOptInterface.ScalarAffineTerm{Float64}(2.0, MathOptInterface.VariableIndex(1))
87+
MathOptInterface.ScalarAffineTerm{Float64}(2.0, MOI.VariableIndex(1))
8888
```
8989
"""
9090
struct ScalarAffineTerm{T}
@@ -130,8 +130,8 @@ MOI.VariableIndex(1)
130130
131131
julia> terms = [MOI.ScalarAffineTerm(2.0, x), MOI.ScalarAffineTerm(3.0, x)]
132132
2-element Vector{MathOptInterface.ScalarAffineTerm{Float64}}:
133-
MathOptInterface.ScalarAffineTerm{Float64}(2.0, MathOptInterface.VariableIndex(1))
134-
MathOptInterface.ScalarAffineTerm{Float64}(3.0, MathOptInterface.VariableIndex(1))
133+
MathOptInterface.ScalarAffineTerm{Float64}(2.0, MOI.VariableIndex(1))
134+
MathOptInterface.ScalarAffineTerm{Float64}(3.0, MOI.VariableIndex(1))
135135
136136
julia> f = MOI.ScalarAffineFunction(terms, 4.0)
137137
4.0 + 2.0 MOI.VariableIndex(1) + 3.0 MOI.VariableIndex(1)
@@ -171,7 +171,7 @@ julia> x = MOI.VariableIndex(1)
171171
MOI.VariableIndex(1)
172172
173173
julia> MOI.ScalarQuadraticTerm(2.0, x, x)
174-
MathOptInterface.ScalarQuadraticTerm{Float64}(2.0, MathOptInterface.VariableIndex(1), MathOptInterface.VariableIndex(1))
174+
MathOptInterface.ScalarQuadraticTerm{Float64}(2.0, MOI.VariableIndex(1), MOI.VariableIndex(1))
175175
```
176176
"""
177177
struct ScalarQuadraticTerm{T}
@@ -254,8 +254,8 @@ julia> quadratic_terms = [
254254
MOI.ScalarQuadraticTerm(3.0, x, y),
255255
]
256256
2-element Vector{MathOptInterface.ScalarQuadraticTerm{Float64}}:
257-
MathOptInterface.ScalarQuadraticTerm{Float64}(4.0, MathOptInterface.VariableIndex(1), MathOptInterface.VariableIndex(1))
258-
MathOptInterface.ScalarQuadraticTerm{Float64}(3.0, MathOptInterface.VariableIndex(1), MathOptInterface.VariableIndex(2))
257+
MathOptInterface.ScalarQuadraticTerm{Float64}(4.0, MOI.VariableIndex(1), MOI.VariableIndex(1))
258+
MathOptInterface.ScalarQuadraticTerm{Float64}(3.0, MOI.VariableIndex(1), MOI.VariableIndex(2))
259259
260260
julia> f = MOI.ScalarQuadraticFunction(quadratic_terms, affine_terms, constant)
261261
5.0 + 4.0 MOI.VariableIndex(1) + 2.0 MOI.VariableIndex(1)² + 3.0 MOI.VariableIndex(1)*MOI.VariableIndex(2)
@@ -356,7 +356,7 @@ julia> import MathOptInterface as MOI
356356
julia> x = MOI.VariableIndex(1);
357357
358358
julia> MOI.VectorAffineTerm(Int64(2), MOI.ScalarAffineTerm(3.0, x))
359-
MathOptInterface.VectorAffineTerm{Float64}(2, MathOptInterface.ScalarAffineTerm{Float64}(3.0, MathOptInterface.VariableIndex(1)))
359+
MathOptInterface.VectorAffineTerm{Float64}(2, MathOptInterface.ScalarAffineTerm{Float64}(3.0, MOI.VariableIndex(1)))
360360
```
361361
"""
362362
struct VectorAffineTerm{T}
@@ -455,7 +455,7 @@ julia> import MathOptInterface as MOI
455455
julia> x = MOI.VariableIndex(1);
456456
457457
julia> MOI.VectorQuadraticTerm(Int64(2), MOI.ScalarQuadraticTerm(3.0, x, x))
458-
MathOptInterface.VectorQuadraticTerm{Float64}(2, MathOptInterface.ScalarQuadraticTerm{Float64}(3.0, MathOptInterface.VariableIndex(1), MathOptInterface.VariableIndex(1)))
458+
MathOptInterface.VectorQuadraticTerm{Float64}(2, MathOptInterface.ScalarQuadraticTerm{Float64}(3.0, MOI.VariableIndex(1), MOI.VariableIndex(1)))
459459
```
460460
"""
461461
struct VectorQuadraticTerm{T}

src/sets.jl

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,7 @@ julia> model = MOI.Utilities.Model{Float64}()
249249
MOIU.Model{Float64}
250250
251251
julia> p, ci = MOI.add_constrained_variable(model, MOI.Parameter(2.5))
252-
(MathOptInterface.VariableIndex(1), MathOptInterface.ConstraintIndex{MathOptInterface.VariableIndex, MathOptInterface.Parameter{Float64}}(1))
252+
(MOI.VariableIndex(1), MathOptInterface.ConstraintIndex{MathOptInterface.VariableIndex, MathOptInterface.Parameter{Float64}}(1))
253253
254254
julia> MOI.set(model, MOI.ConstraintSet(), ci, MOI.Parameter(3.0))
255255
@@ -1753,7 +1753,7 @@ julia> x = MOI.add_variables(model, 2)
17531753
MOI.VariableIndex(2)
17541754
17551755
julia> y, _ = MOI.add_constrained_variable(model, MOI.ZeroOne())
1756-
(MathOptInterface.VariableIndex(3), MathOptInterface.ConstraintIndex{MathOptInterface.VariableIndex, MathOptInterface.ZeroOne}(3))
1756+
(MOI.VariableIndex(3), MathOptInterface.ConstraintIndex{MathOptInterface.VariableIndex, MathOptInterface.ZeroOne}(3))
17571757
17581758
julia> f = MOI.VectorAffineFunction(
17591759
[
@@ -2080,16 +2080,16 @@ julia> model = MOI.Utilities.Model{Float64}()
20802080
MOIU.Model{Float64}
20812081
20822082
julia> a, _ = MOI.add_constrained_variable(model, MOI.Integer())
2083-
(MathOptInterface.VariableIndex(1), MathOptInterface.ConstraintIndex{MathOptInterface.VariableIndex, MathOptInterface.Integer}(1))
2083+
(MOI.VariableIndex(1), MathOptInterface.ConstraintIndex{MathOptInterface.VariableIndex, MathOptInterface.Integer}(1))
20842084
20852085
julia> b, _ = MOI.add_constrained_variable(model, MOI.Integer())
2086-
(MathOptInterface.VariableIndex(2), MathOptInterface.ConstraintIndex{MathOptInterface.VariableIndex, MathOptInterface.Integer}(2))
2086+
(MOI.VariableIndex(2), MathOptInterface.ConstraintIndex{MathOptInterface.VariableIndex, MathOptInterface.Integer}(2))
20872087
20882088
julia> c, _ = MOI.add_constrained_variable(model, MOI.Integer())
2089-
(MathOptInterface.VariableIndex(3), MathOptInterface.ConstraintIndex{MathOptInterface.VariableIndex, MathOptInterface.Integer}(3))
2089+
(MOI.VariableIndex(3), MathOptInterface.ConstraintIndex{MathOptInterface.VariableIndex, MathOptInterface.Integer}(3))
20902090
20912091
julia> x, d, set = [a, b, b, c], [2, 2], [3]
2092-
(MathOptInterface.VariableIndex[MathOptInterface.VariableIndex(1), MathOptInterface.VariableIndex(2), MathOptInterface.VariableIndex(2), MathOptInterface.VariableIndex(3)], [2, 2], [3])
2092+
(MathOptInterface.VariableIndex[MOI.VariableIndex(1), MOI.VariableIndex(2), MOI.VariableIndex(2), MOI.VariableIndex(3)], [2, 2], [3])
20932093
20942094
julia> MOI.add_constraint(model, MOI.VectorOfVariables(x), MOI.CountAtLeast(1, d, Set(set)))
20952095
MathOptInterface.ConstraintIndex{MathOptInterface.VectorOfVariables, MathOptInterface.CountAtLeast}(1)
@@ -2140,7 +2140,7 @@ julia> model = MOI.Utilities.Model{Float64}()
21402140
MOIU.Model{Float64}
21412141
21422142
julia> n, _ = MOI.add_constrained_variable(model, MOI.Integer())
2143-
(MathOptInterface.VariableIndex(1), MathOptInterface.ConstraintIndex{MathOptInterface.VariableIndex, MathOptInterface.Integer}(1))
2143+
(MOI.VariableIndex(1), MathOptInterface.ConstraintIndex{MathOptInterface.VariableIndex, MathOptInterface.Integer}(1))
21442144
21452145
julia> x = [MOI.add_constrained_variable(model, MOI.Integer())[1] for _ in 1:3]
21462146
3-element Vector{MathOptInterface.VariableIndex}:
@@ -2203,7 +2203,7 @@ julia> model = MOI.Utilities.Model{Float64}()
22032203
MOIU.Model{Float64}
22042204
22052205
julia> n, _ = MOI.add_constrained_variable(model, MOI.Integer())
2206-
(MathOptInterface.VariableIndex(1), MathOptInterface.ConstraintIndex{MathOptInterface.VariableIndex, MathOptInterface.Integer}(1))
2206+
(MOI.VariableIndex(1), MathOptInterface.ConstraintIndex{MathOptInterface.VariableIndex, MathOptInterface.Integer}(1))
22072207
22082208
julia> x = [MOI.add_constrained_variable(model, MOI.Integer())[1] for _ in 1:3]
22092209
3-element Vector{MathOptInterface.VariableIndex}:
@@ -2249,10 +2249,10 @@ julia> model = MOI.Utilities.Model{Float64}()
22492249
MOIU.Model{Float64}
22502250
22512251
julia> c, _ = MOI.add_constrained_variable(model, MOI.Integer())
2252-
(MathOptInterface.VariableIndex(1), MathOptInterface.ConstraintIndex{MathOptInterface.VariableIndex, MathOptInterface.Integer}(1))
2252+
(MOI.VariableIndex(1), MathOptInterface.ConstraintIndex{MathOptInterface.VariableIndex, MathOptInterface.Integer}(1))
22532253
22542254
julia> y, _ = MOI.add_constrained_variable(model, MOI.Integer())
2255-
(MathOptInterface.VariableIndex(2), MathOptInterface.ConstraintIndex{MathOptInterface.VariableIndex, MathOptInterface.Integer}(2))
2255+
(MOI.VariableIndex(2), MathOptInterface.ConstraintIndex{MathOptInterface.VariableIndex, MathOptInterface.Integer}(2))
22562256
22572257
julia> x = [MOI.add_constrained_variable(model, MOI.Integer())[1] for _ in 1:3]
22582258
3-element Vector{MathOptInterface.VariableIndex}:
@@ -2320,7 +2320,7 @@ julia> r = [MOI.add_constrained_variable(model, MOI.Integer())[1] for _ in 1:3]
23202320
MOI.VariableIndex(9)
23212321
23222322
julia> b, _ = MOI.add_constrained_variable(model, MOI.Integer())
2323-
(MathOptInterface.VariableIndex(10), MathOptInterface.ConstraintIndex{MathOptInterface.VariableIndex, MathOptInterface.Integer}(10))
2323+
(MOI.VariableIndex(10), MathOptInterface.ConstraintIndex{MathOptInterface.VariableIndex, MathOptInterface.Integer}(10))
23242324
23252325
julia> MOI.add_constraint(model, MOI.VectorOfVariables([s; d; r; b]), MOI.Cumulative(10))
23262326
MathOptInterface.ConstraintIndex{MathOptInterface.VectorOfVariables, MathOptInterface.Cumulative}(1)
@@ -2381,10 +2381,10 @@ julia> to = [2, 3, 3, 4, 4]
23812381
4
23822382
23832383
julia> s, _ = MOI.add_constrained_variable(model, MOI.Integer())
2384-
(MathOptInterface.VariableIndex(1), MathOptInterface.ConstraintIndex{MathOptInterface.VariableIndex, MathOptInterface.Integer}(1))
2384+
(MOI.VariableIndex(1), MathOptInterface.ConstraintIndex{MathOptInterface.VariableIndex, MathOptInterface.Integer}(1))
23852385
23862386
julia> t, _ = MOI.add_constrained_variable(model, MOI.Integer())
2387-
(MathOptInterface.VariableIndex(2), MathOptInterface.ConstraintIndex{MathOptInterface.VariableIndex, MathOptInterface.Integer}(2))
2387+
(MOI.VariableIndex(2), MathOptInterface.ConstraintIndex{MathOptInterface.VariableIndex, MathOptInterface.Integer}(2))
23882388
23892389
julia> ns = MOI.add_variables(model, N)
23902390
4-element Vector{MathOptInterface.VariableIndex}:
@@ -2554,7 +2554,7 @@ MOIU.UniversalFallback{MOIU.Model{Float64}}
25542554
fallback for MOIU.Model{Float64}
25552555
25562556
julia> z, _ = MOI.add_constrained_variable(model, MOI.ZeroOne())
2557-
(MathOptInterface.VariableIndex(1), MathOptInterface.ConstraintIndex{MathOptInterface.VariableIndex, MathOptInterface.ZeroOne}(1))
2557+
(MOI.VariableIndex(1), MathOptInterface.ConstraintIndex{MathOptInterface.VariableIndex, MathOptInterface.ZeroOne}(1))
25582558
25592559
julia> x = MOI.add_variable(model)
25602560
MOI.VariableIndex(2)

test/Bridges/Variable/vectorize.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ function test_exp3_with_add_constrained_variable_y()
130130

131131
err = ErrorException(
132132
"Cannot add two `VariableIndex`-in-`MathOptInterface.LessThan{Float64}`" *
133-
" on the same variable MathOptInterface.VariableIndex(-1).",
133+
" on the same variable MOI.VariableIndex(-1).",
134134
)
135135
@test_throws err MOI.add_constraint(bridged_mock, y, MOI.LessThan(4.0))
136136

@@ -156,7 +156,7 @@ function test_exp3_with_add_constrained_variable_y()
156156
attr = MOI.ConstraintSet()
157157
err = MOI.SetAttributeNotAllowed(
158158
attr,
159-
"The variable `MathOptInterface.VariableIndex(12345676)` is bridged by the `VectorizeBridge`.",
159+
"The variable `MOI.VariableIndex(12345676)` is bridged by the `VectorizeBridge`.",
160160
)
161161
@test_throws err MOI.set(bridged_mock, attr, ci, MOI.LessThan(4.0))
162162

@@ -170,7 +170,7 @@ function test_exp3_with_add_constrained_variable_y()
170170
change = MOI.ScalarCoefficientChange(y, 0.0)
171171
attr = MOI.ObjectiveFunction{MOI.ScalarAffineFunction{Float64}}()
172172
message =
173-
"The change MathOptInterface.ScalarCoefficientChange{Float64}(MathOptInterface.VariableIndex(-1), 0.0)" *
173+
"The change MathOptInterface.ScalarCoefficientChange{Float64}(MOI.VariableIndex(-1), 0.0)" *
174174
" contains variables bridged into a function with nonzero constant."
175175
err = MOI.ModifyObjectiveNotAllowed(change, message)
176176
@test_throws err MOI.modify(bridged_mock, attr, change)

test/Utilities/print.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -695,6 +695,9 @@ function test_default_printing()
695695
end
696696
@test sprint(show, MIME("text/plain"), x) == "MOI.VariableIndex(1)"
697697
@test sprint(show, MIME("text/latex"), x) == "v_{1}"
698+
for f in (x, aff)
699+
@test sprint(show, f) == sprint(show, MIME("text/plain"), f)
700+
end
698701
return
699702
end
700703

test/errors.jl

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -126,24 +126,22 @@ function test_errors_DeleteNotAllowed()
126126
MOI.delete(model, vi)
127127
catch err
128128
@test sprint(showerror, err) ==
129-
"MathOptInterface.DeleteNotAllowed{MathOptInterface.VariableIndex}:" *
130-
" Deleting the index MathOptInterface.VariableIndex(1) cannot be" *
131-
" performed. You may want to use a `CachingOptimizer` in" *
132-
" `AUTOMATIC` mode or you may need to call `reset_optimizer`" *
133-
" before doing this operation if the `CachingOptimizer` is in" *
134-
" `MANUAL` mode."
129+
"$(MOI.DeleteNotAllowed{typeof(vi)}): Deleting the index $vi " *
130+
"cannot be performed. You may want to use a `CachingOptimizer` " *
131+
"in `AUTOMATIC` mode or you may need to call `reset_optimizer` " *
132+
"before doing this operation if the `CachingOptimizer` is in " *
133+
"`MANUAL` mode."
135134
end
136135
@test_throws MOI.DeleteNotAllowed{typeof(ci)} MOI.delete(model, ci)
137136
try
138137
MOI.delete(model, ci)
139138
catch err
140139
@test sprint(showerror, err) ==
141-
"$(MOI.DeleteNotAllowed{MOI.ConstraintIndex{MOI.VariableIndex,MOI.EqualTo{Float64}}}):" *
142-
" Deleting the index $(MOI.ConstraintIndex{MOI.VariableIndex,MOI.EqualTo{Float64}}(1))" *
143-
" cannot be performed. You may want to use a `CachingOptimizer`" *
144-
" in `AUTOMATIC` mode or you may need to call `reset_optimizer`" *
145-
" before doing this operation if the `CachingOptimizer` is in" *
146-
" `MANUAL` mode."
140+
"$(MOI.DeleteNotAllowed{typeof(ci)}): Deleting the index $ci " *
141+
"cannot be performed. You may want to use a `CachingOptimizer` " *
142+
"in `AUTOMATIC` mode or you may need to call `reset_optimizer` " *
143+
"before doing this operation if the `CachingOptimizer` is in " *
144+
"`MANUAL` mode."
147145
end
148146
return
149147
end

0 commit comments

Comments
 (0)