From cc1a188c50a1ba85848e5f5380d40ad899a46d35 Mon Sep 17 00:00:00 2001 From: Michiel Cottaar <MichielCottaar@protonmail.com> Date: Mon, 9 Sep 2024 15:08:15 +0100 Subject: [PATCH] Use new propertynames in printing --- src/printing.jl | 42 +++++++++--------------------------------- 1 file changed, 9 insertions(+), 33 deletions(-) diff --git a/src/printing.jl b/src/printing.jl index 5314377..1830ba0 100644 --- a/src/printing.jl +++ b/src/printing.jl @@ -1,5 +1,5 @@ module Printing -import JuMP: value +import JuMP: value, AbstractJuMPScalar import Printf: @sprintf import ..Variables: VariableType, variables, AbstractBlock, Variable @@ -21,50 +21,26 @@ end _robust_value(possible_tuple::Tuple) = _robust_value([possible_tuple...]) _robust_value(possible_tuple::NamedTuple) = NamedTuple(k => _robust_value(v) for (k, v) in pairs(possible_tuple)) +_robust_value(other) = other function Base.show(io::IO, block::AbstractBlock) print(io, nameof(typeof(block)), "(") for name in propertynames(block) - ft = fieldtype(typeof(block), name) + value = _robust_value(getproperty(block, name)) if ( - ft == VariableType || - (ft <: AbstractVector && eltype(ft) == VariableType) || - string(name)[1] == '_' - ) - continue - end - if ( - ft <: Union{Nothing, AbstractBlock} || - (ft <: AbstractVector && eltype(ft) <: AbstractBlock) || - (ft <: AbstractVector && eltype(ft) <: Pair) + value isa AbstractJuMPScalar || + (value isa AbstractVector{<:AbstractJuMPScalar}) || + string(name)[1] == '_' || + isnothing(value) || + (value isa AbstractVector{<:AbstractBlock}) || + (value isa AbstractVector{<:Pair}) ) continue end print(io, name, "=", repr(getproperty(block, name)), ", ") end - - for fn_name in names(variables, all=true) - fn = getproperty(variables, fn_name) - if !(fn isa Variable) - continue - end - - try - numeric_value = _robust_value(fn(block)) - if isnothing(numeric_value) - continue - end - as_string = string(numeric_value) - if length(as_string) > 50 - continue - end - print(io, "$(fn_name)=$(as_string), ") - catch e - continue - end - end print(io, ")") end -- GitLab