diff --git a/Project.toml b/Project.toml index b8c2ea5b..410a22ed 100644 --- a/Project.toml +++ b/Project.toml @@ -32,7 +32,7 @@ InfrastructureSystems = "3" JSON3 = "1" LazyArtifacts = "1" PowerSystems = "^5.0.1" -PrettyTables = "2" +PrettyTables = "2.4, 3.1" Random = "1" SHA = "0.7" TimeSeries = "^0.24, ^0.25" diff --git a/src/PowerSystemCaseBuilder.jl b/src/PowerSystemCaseBuilder.jl index 7397caee..3769594f 100644 --- a/src/PowerSystemCaseBuilder.jl +++ b/src/PowerSystemCaseBuilder.jl @@ -144,7 +144,17 @@ include("system_descriptor.jl") include("system_catalog.jl") include("utils/download.jl") + include("utils/print.jl") +@static if pkgversion(PrettyTables).major == 2 + # When PrettyTables v2 is more widely adopted in the ecosystem, we can remove this file. + # In this case, we should also update the compat bounds in Project.toml to list only + # PrettyTables v3. + include("utils/print_pt_v2.jl") +else + include("utils/print_pt_v3.jl") +end + include("utils/utils.jl") include("utils/spi_library_utils.jl") diff --git a/src/utils/print.jl b/src/utils/print.jl index 5eea035c..9ea577a7 100644 --- a/src/utils/print.jl +++ b/src/utils/print.jl @@ -18,19 +18,6 @@ function Base.show(io::IO, sys::SystemCatalog) show(df; allrows = true) end -function show_systems(sys::SystemCatalog, category::Type{<:SystemCategory}; kwargs...) - descriptors = get_system_descriptors(category, sys) - sort!(descriptors; by = x -> x.name) - header = ["Name", "Descriptor"] - data = Array{Any, 2}(undef, length(descriptors), length(header)) - for (i, d) in enumerate(descriptors) - data[i, 1] = get_name(d) - data[i, 2] = get_description(d) - end - - PrettyTables.pretty_table(stdout, data; header = header, alignment = :l, kwargs...) -end - """ Prints the names of the [`SystemCategory`](@ref)s available in the `PowerSystemCaseBuilder.jl` catalog diff --git a/src/utils/print_pt_v2.jl b/src/utils/print_pt_v2.jl new file mode 100644 index 00000000..4f226be7 --- /dev/null +++ b/src/utils/print_pt_v2.jl @@ -0,0 +1,12 @@ +function show_systems(sys::SystemCatalog, category::Type{<:SystemCategory}; kwargs...) + descriptors = get_system_descriptors(category, sys) + sort!(descriptors; by = x -> x.name) + header = ["Name", "Descriptor"] + data = Array{Any, 2}(undef, length(descriptors), length(header)) + for (i, d) in enumerate(descriptors) + data[i, 1] = get_name(d) + data[i, 2] = get_description(d) + end + + PrettyTables.pretty_table(stdout, data; header = header, alignment = :l, kwargs...) +end diff --git a/src/utils/print_pt_v3.jl b/src/utils/print_pt_v3.jl new file mode 100644 index 00000000..e0af278e --- /dev/null +++ b/src/utils/print_pt_v3.jl @@ -0,0 +1,18 @@ +function show_systems(sys::SystemCatalog, category::Type{<:SystemCategory}; kwargs...) + descriptors = get_system_descriptors(category, sys) + sort!(descriptors; by = x -> x.name) + column_labels = ["Name", "Descriptor"] + data = Array{Any, 2}(undef, length(descriptors), length(column_labels)) + for (i, d) in enumerate(descriptors) + data[i, 1] = get_name(d) + data[i, 2] = get_description(d) + end + + PrettyTables.pretty_table( + stdout, + data; + column_labels = column_labels, + alignment = :l, + kwargs..., + ) +end