From ae22f5d4c91ebed87a0e9206560c540c16ff5755 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Thu, 23 Oct 2025 19:32:16 +0200 Subject: [PATCH 01/37] remove implicit cycling --- PlotsBase/ext/GRExt.jl | 30 +++++++++++----------- PlotsBase/ext/GastonExt.jl | 6 ++--- PlotsBase/ext/PGFPlotsXExt.jl | 18 ++++++------- PlotsBase/ext/PythonPlotExt.jl | 10 ++++---- PlotsBase/src/Annotations.jl | 8 +++--- PlotsBase/src/Commons/Commons.jl | 13 +--------- PlotsBase/src/Commons/aliases.jl | 2 +- PlotsBase/src/DataSeries.jl | 16 ++++++------ PlotsBase/src/Plots.jl | 4 +-- PlotsBase/src/Subplots.jl | 4 +-- PlotsBase/src/pipeline.jl | 2 +- PlotsBase/src/plotly.jl | 16 ++++++------ PlotsBase/src/recipes.jl | 44 ++++++++++++++++---------------- PlotsBase/src/utils.jl | 4 +-- RecipesBase/src/RecipesBase.jl | 20 ++++++++++++++- RecipesBase/src/api.jl | 6 +++++ RecipesBase/test/runtests.jl | 2 ++ RecipesBase/test/test_api.jl | 23 +++++++++++++++++ StatsPlots/src/bar.jl | 2 +- StatsPlots/src/boxplot.jl | 8 +++--- StatsPlots/src/cornerplot.jl | 4 +-- StatsPlots/src/corrplot.jl | 6 ++--- StatsPlots/src/dotplot.jl | 6 ++--- StatsPlots/src/violin.jl | 6 ++--- 24 files changed, 149 insertions(+), 111 deletions(-) create mode 100644 RecipesBase/src/api.jl create mode 100644 RecipesBase/test/test_api.jl diff --git a/PlotsBase/ext/GRExt.jl b/PlotsBase/ext/GRExt.jl index d6dee2a80..0d183ad4f 100644 --- a/PlotsBase/ext/GRExt.jl +++ b/PlotsBase/ext/GRExt.jl @@ -331,11 +331,11 @@ function gr_getcolorind(c) return convert(Int, GR.inqcolorfromrgb(red(c), green(c), blue(c))) end -gr_set_linecolor(c) = GR.setlinecolorind(gr_getcolorind(_cycle(c, 1))) -gr_set_fillcolor(c) = GR.setfillcolorind(gr_getcolorind(_cycle(c, 1))) -gr_set_markercolor(c) = GR.setmarkercolorind(gr_getcolorind(_cycle(c, 1))) -gr_set_bordercolor(c) = GR.setbordercolorind(gr_getcolorind(_cycle(c, 1))) -gr_set_textcolor(c) = GR.settextcolorind(gr_getcolorind(_cycle(c, 1))) +gr_set_linecolor(c) = GR.setlinecolorind(gr_getcolorind(getindex(c, 1))) +gr_set_fillcolor(c) = GR.setfillcolorind(gr_getcolorind(getindex(c, 1))) +gr_set_markercolor(c) = GR.setmarkercolorind(gr_getcolorind(getindex(c, 1))) +gr_set_bordercolor(c) = GR.setbordercolorind(gr_getcolorind(getindex(c, 1))) +gr_set_textcolor(c) = GR.settextcolorind(gr_getcolorind(getindex(c, 1))) gr_set_transparency(α::Real) = GR.settransparency(clamp(α, 0, 1)) gr_set_transparency(::Nothing) = GR.settransparency(1) gr_set_transparency(c, α) = gr_set_transparency(α) @@ -518,7 +518,7 @@ function gr_polaraxes(rmin::Real, rmax::Real, sp::Subplot) # draw radial ticks yaxis[:showaxis] && for i in eachindex(rtick_values) r = (rtick_values[i] - rmin) / (rmax - rmin) - (r ≤ 1 && r ≥ 0) && gr_text(GR.wctondc(0.05, r)..., _cycle(rtick_labels, i)) + (r ≤ 1 && r ≥ 0) && gr_text(GR.wctondc(0.05, r)..., getindex(rtick_labels, i)) end GR.restorestate() return nothing @@ -1290,7 +1290,7 @@ function gr_add_legend(sp, leg, viewport_area) 1, min(max_markersize, mfac * msz), min(max_markersize, mfac * msw), - _cycle(msh, 1), + getindex(msh, 1), ) end @@ -2029,8 +2029,8 @@ function gr_draw_segments(series, x, y, z, fillrange, clims) if is2d && fillrange ≢ nothing (fc = get_fillcolor(series, clims, i)) |> gr_set_fillcolor gr_set_fillstyle(get_fillstyle(series, i)) - fx = _cycle(x, vcat(rng, reverse(rng))) - fy = vcat(_cycle(fr_from, rng), _cycle(fr_to, reverse(rng))) + fx = getindex(x, vcat(rng, reverse(rng))) + fy = vcat(getindex(fr_from, rng), getindex(fr_to, reverse(rng))) gr_set_transparency(fc, get_fillalpha(series, i)) GR.fillarea(fx, fy) end @@ -2068,18 +2068,18 @@ function gr_draw_markers( rng = intersect(eachindex(IndexLinear(), x), segment.range) isempty(rng) && continue i = segment.attr_index - ms = get_thickness_scaling(series) * _cycle(msize, i) - msw = get_thickness_scaling(series) * _cycle(strokewidth, i) - shape = _cycle(shapes, i) + ms = get_thickness_scaling(series) * getindex(msize, i) + msw = get_thickness_scaling(series) * getindex(strokewidth, i) + shape = getindex(shapes, i) if !(shape isa Shape) shape = gr_get_markershape.(shape) end for j in rng gr_draw_marker( series, - _cycle(x, j), - _cycle(y, j), - _cycle(z, j), + getindex(x, j), + getindex(y, j), + getindex(z, j), clims, i, ms, diff --git a/PlotsBase/ext/GastonExt.jl b/PlotsBase/ext/GastonExt.jl index 55eb59bc4..b2520d575 100644 --- a/PlotsBase/ext/GastonExt.jl +++ b/PlotsBase/ext/GastonExt.jl @@ -338,7 +338,7 @@ function gaston_add_series(plt::Plot{GastonBackend}, series::Series) if gsp.dims == 2 && z ≡ nothing for (n, seg) in enumerate(series_segments(series, st; check = true)) i, rng = seg.attr_index, seg.range - fr = _cycle(series[:fillrange], 1:length(x[rng])) + fr = getindex(series[:fillrange], 1:length(x[rng])) for sc in gaston_seriesconf!(sp, series, n == 1, i) push!(curves, Gaston.Curve(x[rng], y[rng], nothing, fr, sc)) end @@ -785,8 +785,8 @@ gaston_lc_ls_lw(series::Series, clims, i::Int) = ( ) gaston_mk_ms_mc(series::Series, clims, i::Int) = ( - gaston_marker(_cycle(series[:markershape], i), get_markeralpha(series, i)), - 0.2_cycle(series[:markersize], i), + gaston_marker(getindex(series[:markershape], i), get_markeralpha(series, i)), + 0.2getindex(series[:markersize], i), gaston_color(get_markercolor(series, clims, i), get_markeralpha(series, i)), ) diff --git a/PlotsBase/ext/PGFPlotsXExt.jl b/PlotsBase/ext/PGFPlotsXExt.jl index 3fe8c3914..1782abb54 100644 --- a/PlotsBase/ext/PGFPlotsXExt.jl +++ b/PlotsBase/ext/PGFPlotsXExt.jl @@ -551,7 +551,7 @@ function pgfx_add_series!(::Val{:path}, axis, series_opt, series, series_func, o i, rng = segment.attr_index, segment.range segment_opt = pgfx_linestyle(opt, i) if opt[:markershape] ≢ :none - if (marker = _cycle(opt[:markershape], i)) isa Shape + if (marker = getindex(opt[:markershape], i)) isa Shape scale_factor = 0.00125 msize = opt[:markersize] * scale_factor path = join( @@ -573,7 +573,7 @@ function pgfx_add_series!(::Val{:path}, axis, series_opt, series, series_func, o # add fillrange if (sf = opt[:fillrange]) ≢ nothing && !isfilledcontour(series) if sf isa Number || sf isa AVec - pgfx_fillrange_series!(axis, series, series_func, i, _cycle(sf, rng), rng) + pgfx_fillrange_series!(axis, series, series_func, i, getindex(sf, rng), rng) elseif sf isa Tuple && series[:ribbon] ≢ nothing for sfi in sf pgfx_fillrange_series!( @@ -581,7 +581,7 @@ function pgfx_add_series!(::Val{:path}, axis, series_opt, series, series_func, o series, series_func, i, - _cycle(sfi, rng), + getindex(sfi, rng), rng, ) end @@ -1170,7 +1170,7 @@ pgfx_should_add_to_legend(series::Series) = ) function pgfx_marker(plotattributes, i = 1) - shape = _cycle(plotattributes[:markershape], i) + shape = getindex(plotattributes[:markershape], i) cstr = plot_color(get_markercolor(plotattributes, i), get_markeralpha(plotattributes, i)) cstr_stroke = plot_color( @@ -1180,7 +1180,7 @@ function pgfx_marker(plotattributes, i = 1) mark_size = pgfx_thickness_scaling(plotattributes) * 0.75 * - _cycle(plotattributes[:markersize], i) + getindex(plotattributes[:markersize], i) mark_freq = if !any(isnan, plotattributes[:y]) && plotattributes[:markershape] isa AVec length(plotattributes[:markershape]) else @@ -1198,7 +1198,7 @@ function pgfx_marker(plotattributes, i = 1) "line width" => pgfx_thickness_scaling(plotattributes) * 0.75 * - _cycle(plotattributes[:markerstrokewidth], i), + getindex(plotattributes[:markerstrokewidth], i), "rotate" => if shape ≡ :dtriangle 180 elseif shape ≡ :rtriangle @@ -1208,7 +1208,7 @@ function pgfx_marker(plotattributes, i = 1) else 0 end, - pgfx_get_linestyle(_cycle(plotattributes[:markerstrokestyle], i)) => + pgfx_get_linestyle(getindex(plotattributes[:markerstrokestyle], i)) => nothing, ), ) @@ -1267,7 +1267,7 @@ end function pgfx_fillrange_attrs(fillrange, x, y) n = length(x) x_fill = [x; x[n:-1:1]; x[1]] - y_fill = [y; _cycle(fillrange, n:-1:1); y[1]] + y_fill = [y; getindex(fillrange, n:-1:1); y[1]] return PGFPlotsX.Coordinates(x_fill, y_fill) end @@ -1275,7 +1275,7 @@ function pgfx_fillrange_attrs(fillrange, x, y, z) n = length(x) x_fill = [x; x[n:-1:1]; x[1]] y_fill = [y; y[n:-1:1]; x[1]] - z_fill = [z; _cycle(fillrange, n:-1:1); z[1]] + z_fill = [z; getindex(fillrange, n:-1:1); z[1]] return PGFPlotsX.Coordinates(x_fill, y_fill, z_fill) end diff --git a/PlotsBase/ext/PythonPlotExt.jl b/PlotsBase/ext/PythonPlotExt.jl index 4b039a752..c4ec699a6 100644 --- a/PlotsBase/ext/PythonPlotExt.jl +++ b/PlotsBase/ext/PythonPlotExt.jl @@ -630,8 +630,8 @@ function _py_add_series(plt::Plot{PythonPlotBackend}, series::Series) ax.scatter( args...; zorder = zorder + 0.5, - marker = _py_marker(_cycle(series[:markershape], i)), - s = _py_thickness_scale(plt, _cycle(series[:markersize], i)) .^ 2, + marker = _py_marker(getindex(series[:markershape], i)), + s = _py_thickness_scale(plt, getindex(series[:markersize], i)) .^ 2, facecolors = _py_color( get_markercolor(series, i, cbar_scale), get_markeralpha(series, i), @@ -903,9 +903,9 @@ function _py_add_series(plt::Plot{PythonPlotBackend}, series::Series) f, dim1, dim2 = :fill_between, x[rng], y[rng] n = length(dim1) args = if typeof(fillrange) <: Union{Real, AVec} - dim1, _cycle(fillrange, rng), dim2 + dim1, getindex(fillrange, rng), dim2 elseif is_2tuple(fillrange) - dim1, _cycle(fillrange[1], rng), _cycle(fillrange[2], rng) + dim1, getindex(fillrange[1], rng), getindex(fillrange[2], rng) end la = get_linealpha(series, i) @@ -1596,7 +1596,7 @@ function _py_add_legend(plt::Plot, sp::Subplot, ax) solid_joinstyle = "miter", dash_capstyle = "butt", dash_joinstyle = "miter", - marker = _py_marker(_cycle(series[:markershape], 1)), + marker = _py_marker(getindex(series[:markershape], 1)), markersize = _py_thickness_scale(plt, 0.8sp[:legend_font_pointsize]), markeredgecolor = _py_color( single_color(get_markerstrokecolor(series)), diff --git a/PlotsBase/src/Annotations.jl b/PlotsBase/src/Annotations.jl index ac396f8a2..c9b6efad3 100644 --- a/PlotsBase/src/Annotations.jl +++ b/PlotsBase/src/Annotations.jl @@ -94,7 +94,7 @@ function series_annotations_shapes!(series::Series, scaletype::Symbol = :pixels) msize = Float64[] shapes = Vector{Shape}(undef, length(anns.strs)) for i in eachindex(anns.strs) - str = _cycle(anns.strs, i) + str = getindex(anns.strs, i) # get the width and height of the string (in mm) sw, sh = text_size(str, anns.font.pointsize) @@ -110,7 +110,7 @@ function series_annotations_shapes!(series::Series, scaletype::Symbol = :pixels) # and then re-scale a copy of baseshape to match the w/h ratio maxscale = max(xscale, yscale) push!(msize, maxscale) - baseshape = _cycle(anns.baseshape, i) + baseshape = getindex(anns.baseshape, i) shapes[i] = scale(baseshape, msw * xscale / maxscale, msh * yscale / maxscale, (0, 0)) end @@ -129,13 +129,13 @@ end function Base.iterate(ea::EachAnn, i = 1) (ea.anns ≡ nothing || isempty(ea.anns.strs) || i > length(ea.y)) && return - tmp = _cycle(ea.anns.strs, i) + tmp = getindex(ea.anns.strs, i) str, fnt = if isa(tmp, PlotText) tmp.str, tmp.font else tmp, ea.anns.font end - return (_cycle(ea.x, i), _cycle(ea.y, i), str, fnt), i + 1 + return (getindex(ea.x, i), getindex(ea.y, i), str, fnt), i + 1 end # ----------------------------------------------------------------------- diff --git a/PlotsBase/src/Commons/Commons.jl b/PlotsBase/src/Commons/Commons.jl index 3f9d1f936..3630284a9 100644 --- a/PlotsBase/src/Commons/Commons.jl +++ b/PlotsBase/src/Commons/Commons.jl @@ -209,17 +209,6 @@ let letter_keyword = Symbol(letter, keyword) end # ------------------------------------------------------------------------------------ -_cycle(v::AVec, idx::Int) = v[mod(idx, axes(v, 1))] -_cycle(v::AMat, idx::Int) = size(v, 1) == 1 ? v[end, mod(idx, axes(v, 2))] : v[:, mod(idx, axes(v, 2))] -_cycle(v, idx::Int) = v - -_cycle(v::AVec, indices::AVec{Int}) = map(i -> _cycle(v, i), indices) -_cycle(v::AMat, indices::AVec{Int}) = map(i -> _cycle(v, i), indices) -_cycle(v, indices::AVec{Int}) = fill(v, length(indices)) - -_cycle(cl::PlotUtils.AbstractColorList, idx::Int) = cl[mod1(idx, end)] -_cycle(cl::PlotUtils.AbstractColorList, idx::AVec{Int}) = cl[mod1.(idx, end)] - _as_gradient(grad) = grad _as_gradient(v::AbstractVector{<:Colorant}) = cgrad(v) _as_gradient(cp::ColorPalette) = cgrad(cp, categorical = true) @@ -280,7 +269,7 @@ end # helpers to figure out if there are NaN values in a list of array types anynan(i::Int, args::Tuple) = any( a -> try - isnan(_cycle(a, i)) + isnan(getindex(a, i)) catch MethodError false end, args diff --git a/PlotsBase/src/Commons/aliases.jl b/PlotsBase/src/Commons/aliases.jl index d2328e888..4d688b23d 100644 --- a/PlotsBase/src/Commons/aliases.jl +++ b/PlotsBase/src/Commons/aliases.jl @@ -1,5 +1,5 @@ autopick_ignore_none_auto(arr::AVec, idx::Integer) = - _cycle(setdiff(arr, [:none, :auto]), idx) + getindex(setdiff(arr, [:none, :auto]), idx) autopick_ignore_none_auto(notarr, idx::Integer) = notarr function aliases_and_autopick( diff --git a/PlotsBase/src/DataSeries.jl b/PlotsBase/src/DataSeries.jl index 5e1cefc40..4eb7b89d4 100644 --- a/PlotsBase/src/DataSeries.jl +++ b/PlotsBase/src/DataSeries.jl @@ -133,7 +133,7 @@ for comp in (:line, :fill, :marker) c = series[$Symbol($compcolor)] # series[:linecolor], series[:fillcolor], series[:markercolor] z = series[$Symbol($comp_z)] # series[:line_z], series[:fill_z], series[:marker_z] return if z ≡ nothing - isa(c, PlotUtils.ColorGradient) ? c : PlotUtils.plot_color(_cycle(c, i)) + isa(c, PlotUtils.ColorGradient) ? c : PlotUtils.plot_color(getindex(c, i)) else grad = Commons.get_gradient(c) if s ≡ :identity @@ -156,21 +156,21 @@ for comp in (:line, :fill, :marker) $get_compcolor(series, clims::NTuple{2, <:Number}, args...) = $get_compcolor(series, clims[1], clims[2], args...) - $get_compalpha(series, i::Integer = 1) = _cycle(series[$Symbol($compalpha)], i) + $get_compalpha(series, i::Integer = 1) = getindex(series[$Symbol($compalpha)], i) end end -get_linewidth(series, i::Integer = 1) = _cycle(series[:linewidth], i) -get_linestyle(series, i::Integer = 1) = _cycle(series[:linestyle], i) -get_fillstyle(series, i::Integer = 1) = _cycle(series[:fillstyle], i) +get_linewidth(series, i::Integer = 1) = getindex(series[:linewidth], i) +get_linestyle(series, i::Integer = 1) = getindex(series[:linestyle], i) +get_fillstyle(series, i::Integer = 1) = getindex(series[:fillstyle], i) get_markerstrokecolor(series, i::Integer = 1) = let msc = series[:markerstrokecolor] - msc isa PlotUtils.ColorGradient ? msc : _cycle(msc, i) + msc isa PlotUtils.ColorGradient ? msc : getindex(msc, i) end -get_markerstrokealpha(series, i::Integer = 1) = _cycle(series[:markerstrokealpha], i) -get_markerstrokewidth(series, i::Integer = 1) = _cycle(series[:markerstrokewidth], i) +get_markerstrokealpha(series, i::Integer = 1) = getindex(series[:markerstrokealpha], i) +get_markerstrokewidth(series, i::Integer = 1) = getindex(series[:markerstrokewidth], i) function get_colorgradient(series::Series) return if (st = series[:seriestype]) in (:surface, :heatmap) || isfilledcontour(series) diff --git a/PlotsBase/src/Plots.jl b/PlotsBase/src/Plots.jl index 0ef424889..439b17c99 100644 --- a/PlotsBase/src/Plots.jl +++ b/PlotsBase/src/Plots.jl @@ -72,8 +72,8 @@ struct InputWrapper{T} end protect(obj::T) where {T} = InputWrapper{T}(obj) Base.isempty(::InputWrapper) = false -Commons._cycle(wrapper::InputWrapper, ::Int) = wrapper.obj -Commons._cycle(wrapper::InputWrapper, ::AVec{Int}) = wrapper.obj +Commons.getindex(wrapper::InputWrapper, ::Int) = wrapper.obj +Commons.getindex(wrapper::InputWrapper, ::AVec{Int}) = wrapper.obj # ----------------------------------------------------------- diff --git a/PlotsBase/src/Subplots.jl b/PlotsBase/src/Subplots.jl index 8e275c3fe..6c16b07b4 100644 --- a/PlotsBase/src/Subplots.jl +++ b/PlotsBase/src/Subplots.jl @@ -88,9 +88,9 @@ Commons.get_ticks(sp::Subplot, s::Symbol) = get_ticks(sp, sp[get_attr_symbol(s, # and assigns a color automatically get_series_color(c, sp::Subplot, n::Int, seriestype) = if c ≡ :auto - Commons.like_surface(seriestype) ? PlotsBase.cgrad() : _cycle(sp[:color_palette], n) + Commons.like_surface(seriestype) ? PlotsBase.cgrad() : getindex(sp[:color_palette], n) elseif isa(c, Int) - _cycle(sp[:color_palette], c) + getindex(sp[:color_palette], c) else c end |> PlotsBase.plot_color diff --git a/PlotsBase/src/pipeline.jl b/PlotsBase/src/pipeline.jl index 04aa75110..2ac5c1d1e 100644 --- a/PlotsBase/src/pipeline.jl +++ b/PlotsBase/src/pipeline.jl @@ -245,7 +245,7 @@ function _subplot_setup(plt::Plot, plotattributes::AKW, kw_list::Vector{KW}) sps = get(kw, :subplot, :auto) sp = get_subplot( plt, - _cycle(sps ≡ :auto ? plt.subplots : plt.subplots[sps], series_idx(kw_list, kw)), + getindex(sps ≡ :auto ? plt.subplots : plt.subplots[sps], series_idx(kw_list, kw)), ) kw[:subplot] = sp diff --git a/PlotsBase/src/plotly.jl b/PlotsBase/src/plotly.jl index 6b4a232f3..c959ae76d 100644 --- a/PlotsBase/src/plotly.jl +++ b/PlotsBase/src/plotly.jl @@ -896,7 +896,7 @@ function plotly_series(plt::Plot, series::Series) :symbol => get_plotly_marker(series[:markershape], string(series[:markershape])), # :opacity => series[:markeralpha], - :size => 2_cycle(series[:markersize], inds), + :size => 2getindex(series[:markersize], inds), :color => rgba_string.( plot_color.(get_markercolor.(series, inds), get_markeralpha.(series, inds)), ), @@ -907,7 +907,7 @@ function plotly_series(plt::Plot, series::Series) get_markerstrokealpha.(series, inds), ), ), - :width => _cycle(series[:markerstrokewidth], inds), + :width => getindex(series[:markerstrokewidth], inds), ), ) end @@ -976,7 +976,7 @@ function plotly_series_shapes(plt::Plot, series::Series, clims) end plotattributes_out[:showlegend] = k == 1 ? should_add_to_legend(series) : false plotly_polar!(plotattributes_out, series) - plotly_adjust_hover_label!(plotattributes_out, _cycle(series[:hover], i)) + plotly_adjust_hover_label!(plotattributes_out, getindex(series[:hover], i)) plotattributes_outs[k] = merge(plotattributes_out, series[:extra_kwargs]) end if series[:fill_z] ≢ nothing @@ -1077,15 +1077,15 @@ function plotly_series_segments(series::Series, plotattributes_base::KW, x, y, z plotattributes_out[:marker] = KW( :symbol => get_plotly_marker( - _cycle(series[:markershape], i), - string(_cycle(series[:markershape], i)), + getindex(series[:markershape], i), + string(getindex(series[:markershape], i)), ), # :opacity => needs_scatter_fix ? [1, 0] : 1, - :size => 2_cycle(series[:markersize], i), + :size => 2getindex(series[:markersize], i), :color => needs_scatter_fix ? [mcolor, mcolor_next] : mcolor, :line => KW( :color => needs_scatter_fix ? [lcolor, lcolor_next] : lcolor, - :width => _cycle(series[:markerstrokewidth], i), + :width => getindex(series[:markerstrokewidth], i), ), ) end @@ -1111,7 +1111,7 @@ function plotly_series_segments(series::Series, plotattributes_base::KW, x, y, z end plotly_polar!(plotattributes_out, series) - plotly_adjust_hover_label!(plotattributes_out, _cycle(series[:hover], rng)) + plotly_adjust_hover_label!(plotattributes_out, getindex(series[:hover], rng)) if hasfillrange # if hasfillrange is true, return two dictionaries (one for original diff --git a/PlotsBase/src/recipes.jl b/PlotsBase/src/recipes.jl index 094c9835c..53a6e6ed4 100644 --- a/PlotsBase/src/recipes.jl +++ b/PlotsBase/src/recipes.jl @@ -77,15 +77,15 @@ const POTENTIAL_VECTOR_ARGUMENTS = [ # sort vector arguments for arg in POTENTIAL_VECTOR_ARGUMENTS if typeof(plotattributes[arg]) <: AVec - plotattributes[arg] = _cycle(plotattributes[arg], indices) + plotattributes[arg] = getindex(plotattributes[arg], indices) end end # a tuple as fillrange has to be handled differently if typeof(plotattributes[:fillrange]) <: Tuple lower, upper = plotattributes[:fillrange] - typeof(lower) <: AVec && (lower = _cycle(lower, indices)) - typeof(upper) <: AVec && (upper = _cycle(upper, indices)) + typeof(lower) <: AVec && (lower = getindex(lower, indices)) + typeof(upper) <: AVec && (upper = getindex(upper, indices)) plotattributes[:fillrange] = (lower, upper) end @@ -308,9 +308,9 @@ end newx[rng] = [xi, xi, NaN] if z ≢ nothing newy[rng] = [yi, yi, NaN] - newz[rng] = [_cycle(fr, i), zi, NaN] + newz[rng] = [getindex(fr, i), zi, NaN] else - newy[rng] = [_cycle(fr, i), yi, NaN] + newy[rng] = [getindex(fr, i), yi, NaN] end end x := newx @@ -381,13 +381,13 @@ end for rng in DataSeries.iter_segments(args...) length(rng) < 2 && continue ts = range(0, stop = 1, length = npoints) - nanappend!(newx, map(t -> bezier_value(_cycle(x, rng), t), ts)) - nanappend!(newy, map(t -> bezier_value(_cycle(y, rng), t), ts)) + nanappend!(newx, map(t -> bezier_value(getindex(x, rng), t), ts)) + nanappend!(newy, map(t -> bezier_value(getindex(y, rng), t), ts)) if z ≢ nothing - nanappend!(newz, map(t -> bezier_value(_cycle(z, rng), t), ts)) + nanappend!(newz, map(t -> bezier_value(getindex(z, rng), t), ts)) end if fr ≢ nothing - nanappend!(newfr, map(t -> bezier_value(_cycle(fr, rng), t), ts)) + nanappend!(newfr, map(t -> bezier_value(getindex(fr, rng), t), ts)) end end @@ -442,7 +442,7 @@ end 1 end else - map(i -> 0.5_cycle(bw, i), eachindex(procx)) + map(i -> 0.5getindex(bw, i), eachindex(procx)) end # make fillto a vector... default fills to 0 @@ -468,8 +468,8 @@ end valid_i[i] || continue yi = procy[i] center = procx[i] - hwi = _cycle(hw, i) - fi = _cycle(fillto, i) + hwi = getindex(hw, i) + fi = getindex(fillto, i) push!(xseg, center - hwi, center - hwi, center + hwi, center + hwi, center - hwi) push!(yseg, yi, fi, fi, yi, yi) end @@ -935,7 +935,7 @@ end θ_new = θ + 2π * y[i] / s coords = [(0.0, 0.0); partialcircle(θ, θ_new, 50)] @series begin - seriescolor := _cycle(colors, i) + seriescolor := getindex(colors, i) seriestype := :shape label --> string(x[i]) x := first.(coords) @@ -1127,10 +1127,10 @@ function error_coords(errorbar, errordata, otherdata...) od = map(odi -> Vector{float_extended_type(odi)}(undef, 0), otherdata) for (i, edi) in enumerate(errordata) for (j, odj) in enumerate(otherdata) - odi = _cycle(odj, i) + odi = getindex(odj, i) nanappend!(od[j], [odi, odi]) end - e1, e2 = error_tuple(_cycle(errorbar, i)) + e1, e2 = error_tuple(getindex(errorbar, i)) nanappend!(ed, [edi - e1, edi + e2]) end return (ed, od...) @@ -1215,11 +1215,11 @@ function quiver_using_arrows(plotattributes::AKW) is_3d && (z = zeros(0)) for i in 1:max(length(xorig), length(yorig), is_3d ? 0 : length(zorig)) # get the starting position - xi = _cycle(xorig, i) - yi = _cycle(yorig, i) - zi = is_3d ? _cycle(zorig, i) : 0 + xi = getindex(xorig, i) + yi = getindex(yorig, i) + zi = is_3d ? getindex(zorig, i) : 0 # get the velocity - vi = _cycle(velocity, i) + vi = getindex(velocity, i) if is_3d vx, vy, vz = if istuple(vi) vi[1], vi[2], vi[3] @@ -1264,12 +1264,12 @@ function quiver_using_hack(plotattributes::AKW) for i in 1:max(length(xorig), length(yorig)) # get the starting position - xi = _cycle(xorig, i) - yi = _cycle(yorig, i) + xi = getindex(xorig, i) + yi = getindex(yorig, i) p = P2((xi, yi)) # get the velocity - vi = _cycle(velocity, i) + vi = getindex(velocity, i) vx, vy = if istuple(vi) first(vi), last(vi) elseif isscalar(vi) diff --git a/PlotsBase/src/utils.jl b/PlotsBase/src/utils.jl index 32e0f93a2..2e578dca9 100644 --- a/PlotsBase/src/utils.jl +++ b/PlotsBase/src/utils.jl @@ -319,7 +319,7 @@ end function make_fillrange_side(y::AVec, rib) frs = zeros(axes(y)) for (i, yi) in pairs(y) - frs[i] = yi + _cycle(rib, i) + frs[i] = yi + getindex(rib, i) end return frs end @@ -909,7 +909,7 @@ function _guess_best_legend_position(xl, yl, plt, weight = 100) for (i, lim) in enumerate(Iterators.product(xl, yl)) lim = lim ./ scale for ix in eachindex(x) - xi, yi = x[ix], _cycle(y, ix + yoffset) + xi, yi = x[ix], getindex(y, ix + yoffset) # ignore y points outside quadrant visible quadrant xi < xl[1] + quadrants[i][1][1] * (xl[2] - xl[1]) && continue xi > xl[1] + quadrants[i][1][2] * (xl[2] - xl[1]) && continue diff --git a/RecipesBase/src/RecipesBase.jl b/RecipesBase/src/RecipesBase.jl index 08988c852..e7fb8256c 100644 --- a/RecipesBase/src/RecipesBase.jl +++ b/RecipesBase/src/RecipesBase.jl @@ -10,7 +10,8 @@ export @recipe, RecipeData, AbstractBackend, AbstractPlot, - AbstractLayout + AbstractLayout, + cycle # Common abstract types for the Plots ecosystem abstract type AbstractBackend end @@ -52,6 +53,7 @@ apply_recipe(plotattributes::AbstractDict{Symbol, Any}) = () is_explicit(d::AbstractDict{Symbol, Any}, k) = haskey(d, k) function is_default end +include("api.jl") # -------------------------------------------------------------------------- # this holds the data and attributes of one series, and is returned from apply_recipe @@ -60,6 +62,22 @@ struct RecipeData args::Tuple end +struct CyclingAttribute{T} + value::T +end + +function Base.getindex(c::CyclingAttribute, args...) + args = map(enumerate(args)) do (i, arg) + if arg isa Number + return mod1(arg, size(c.value, i)) + else + return arg + end + end + Base.getindex(c.value, args...) +end + +Base.getindex(c::CyclingAttribute, i::Int) = Base.getindex(c.value, mod1(i, length(c.value))) # -------------------------------------------------------------------------- @inline to_symbol(s::Symbol) = s diff --git a/RecipesBase/src/api.jl b/RecipesBase/src/api.jl new file mode 100644 index 000000000..d88eec6ae --- /dev/null +++ b/RecipesBase/src/api.jl @@ -0,0 +1,6 @@ +""" + cycle(attr) + +Indicates that an attribute should be cycled. +""" +cycle(v) = CyclingAttribute(v) diff --git a/RecipesBase/test/runtests.jl b/RecipesBase/test/runtests.jl index 13f882d21..54bd5f913 100644 --- a/RecipesBase/test/runtests.jl +++ b/RecipesBase/test/runtests.jl @@ -7,6 +7,8 @@ using Test const KW = Dict{Symbol, Any} +include("test_api.jl") + RB.is_key_supported(k::Symbol) = true for t in map(i -> Symbol(:T, i), 1:5) diff --git a/RecipesBase/test/test_api.jl b/RecipesBase/test/test_api.jl new file mode 100644 index 000000000..8d0d264b0 --- /dev/null +++ b/RecipesBase/test/test_api.jl @@ -0,0 +1,23 @@ +using RecipesBase, Test + +@testset "Cycling attributes" begin + c1 = cycle([:red, :green]) + @test c1[1] == :red + @test c1[2] == :green + @test c1[3] == :red + @test c1[4] == :green + c2 = cycle([:red :green; :blue :yellow]) + @test c2[1] == :red + @test c2[2] == :blue + @test c2[3] == :green + @test c2[4] == :yellow + @test c2[5] == :red + @test c2[6] == :blue + @test c2[7] == :green + @test c2[8] == :yellow + @test c2[1, :] == [:red, :green] + @test c2[:, 1] == [:red, :blue] + @test c2[3, :] == [:red, :green] + @test c2[:, 3] == [:red, :blue] +end +end \ No newline at end of file diff --git a/StatsPlots/src/bar.jl b/StatsPlots/src/bar.jl index 8d6b9f5fe..2cde22c35 100644 --- a/StatsPlots/src/bar.jl +++ b/StatsPlots/src/bar.jl @@ -38,7 +38,7 @@ grouped_xy(y::AbstractArray) = 1:size(y, 1), y bar_width := bws * clamp(1 - spacing, 0, 1) xmat = zeros(nr, nc) for r in 1:nr - bw = _cycle(bws, r) + bw = getindex(bws, r) farleft = xnums[r] - 0.5 * (bw * nc) for c in 1:nc xmat[r, c] = farleft + 0.5bw + (c - 1) * bw diff --git a/StatsPlots/src/boxplot.jl b/StatsPlots/src/boxplot.jl index e59225d5b..1bf35109b 100644 --- a/StatsPlots/src/boxplot.jl +++ b/StatsPlots/src/boxplot.jl @@ -34,7 +34,7 @@ notch_width(q2, q4, N) = 1.58 * (q4 - q2) / sqrt(N) ww = whisker_width ≡ :match ? bw : whisker_width ≡ :half ? bw / 2 : whisker_width for (i, glabel) in enumerate(sort(glabels; by = sort_labels_by)) # filter y - values = y[filter(i -> _cycle(x, i) == glabel, 1:length(y))] + values = y[filter(i -> getindex(x, i) == glabel, 1:length(y))] # compute quantiles q1, q2, q3, q4, q5 = quantile(values, range(0, stop = 1, length = 5)) @@ -50,8 +50,8 @@ notch_width(q2, q4, N) = 1.58 * (q4 - q2) / sqrt(N) # make the shape center = PlotsBase.discrete_value!(plotattributes, :x, glabel)[1] + xshift - hw = 0.5_cycle(bw, i) # Box width - HW = 0.5_cycle(ww, i) # Whisker width + hw = 0.5getindex(bw, i) # Box width + HW = 0.5getindex(ww, i) # Whisker width l, m, r = center - hw, center, center + hw lw, rw = center - HW, center + HW @@ -246,7 +246,7 @@ recipetype(::Val{:groupedboxplot}, args...) = GroupedBoxplot(args) bar_width := bws * clamp(1 - spacing, 0, 1) for i in 1:n groupinds = idxs[i] - Δx = _cycle(bws, i) * (i - (n + 1) / 2) + Δx = getindex(bws, i) * (i - (n + 1) / 2) x[groupinds] .+= Δx end end diff --git a/StatsPlots/src/cornerplot.jl b/StatsPlots/src/cornerplot.jl index 03824bbf4..584868986 100644 --- a/StatsPlots/src/cornerplot.jl +++ b/StatsPlots/src/cornerplot.jl @@ -101,11 +101,11 @@ recipetype(::Val{:cornerplot}, args...) = CornerPlot(args) ticks := :auto if i == N xformatter := :auto - xguide := _cycle(labs, j) + xguide := getindex(labs, j) end if j == 1 yformatter := :auto - yguide := _cycle(labs, i) + yguide := getindex(labs, i) end seriestype := :scatter subplot := indices[i + 1 - k, j] diff --git a/StatsPlots/src/corrplot.jl b/StatsPlots/src/corrplot.jl index 8f1fc72cf..7bc88cad8 100644 --- a/StatsPlots/src/corrplot.jl +++ b/StatsPlots/src/corrplot.jl @@ -32,11 +32,11 @@ Meant to be overloaded by other types! to_corrplot_matrix(x) = x function update_ticks_guides(d::KW, labs, i, j, n) - # d[:title] = (i==1 ? _cycle(labs,j) : "") + # d[:title] = (i==1 ? getindex(labs,j) : "") # d[:xticks] = (i==n) - d[:xguide] = (i == n ? _cycle(labs, j) : "") + d[:xguide] = (i == n ? getindex(labs, j) : "") # d[:yticks] = (j==1) - return d[:yguide] = (j == 1 ? _cycle(labs, i) : "") + return d[:yguide] = (j == 1 ? getindex(labs, i) : "") end @recipe function f(cp::CorrPlot) diff --git a/StatsPlots/src/dotplot.jl b/StatsPlots/src/dotplot.jl index a489f7039..5cafa7379 100644 --- a/StatsPlots/src/dotplot.jl +++ b/StatsPlots/src/dotplot.jl @@ -23,10 +23,10 @@ for (i, grouplabel) in enumerate(grouplabels) # filter y - groupy = y[filter(i -> _cycle(x, i) == grouplabel, 1:length(y))] + groupy = y[filter(i -> getindex(x, i) == grouplabel, 1:length(y))] center = PlotsBase.discrete_value!(plotattributes, :x, grouplabel)[1] - halfwidth = 0.5_cycle(barwidth, i) + halfwidth = 0.5getindex(barwidth, i) offsets = getoffsets(halfwidth, groupy) @@ -103,7 +103,7 @@ recipetype(::Val{:groupeddotplot}, args...) = GroupedDotplot(args) bar_width := bws * clamp(1 - spacing, 0, 1) for i in 1:n groupinds = idxs[i] - Δx = _cycle(bws, i) * (i - (n + 1) / 2) + Δx = getindex(bws, i) * (i - (n + 1) / 2) x[groupinds] .+= Δx end end diff --git a/StatsPlots/src/violin.jl b/StatsPlots/src/violin.jl index b8319dc3a..eadf71df9 100644 --- a/StatsPlots/src/violin.jl +++ b/StatsPlots/src/violin.jl @@ -53,7 +53,7 @@ get_quantiles(n::Int) = range(0, 1, length = n + 2)[2:(end - 1)] bw == nothing && (bw = 0.8) msc = plotattributes[:markerstrokecolor] for (i, glabel) in enumerate(glabels) - fy = y[filter(i -> _cycle(x, i) == glabel, 1:length(y))] + fy = y[filter(i -> getindex(x, i) == glabel, 1:length(y))] widths, centers = violin_coords( fy, trim = trim, @@ -63,7 +63,7 @@ get_quantiles(n::Int) = range(0, 1, length = n + 2)[2:(end - 1)] isempty(widths) && continue # normalize - hw = 0.5_cycle(bw, i) + hw = 0.5getindex(bw, i) widths = hw * widths / PlotsBase.ignorenan_maximum(widths) # make the violin @@ -202,7 +202,7 @@ recipetype(::Val{:groupedviolin}, args...) = GroupedViolin(args) bar_width := bws * clamp(1 - spacing, 0, 1) for i in 1:n groupinds = idxs[i] - Δx = _cycle(bws, i) * (i - (n + 1) / 2) + Δx = getindex(bws, i) * (i - (n + 1) / 2) x[groupinds] .+= Δx end end From e103325eab1a5924b27930ff576ff7d5baff9fb1 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Sun, 26 Oct 2025 14:25:54 +0100 Subject: [PATCH 02/37] adjust compat bounds --- PlotsBase/Project.toml | 2 +- RecipesBase/Project.toml | 2 +- RecipesPipeline/Project.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/PlotsBase/Project.toml b/PlotsBase/Project.toml index fafedaa90..a9fe1cb07 100644 --- a/PlotsBase/Project.toml +++ b/PlotsBase/Project.toml @@ -102,7 +102,7 @@ Printf = "1" PythonPlot = "1" Random = "1" REPL = "1" -RecipesBase = "1.3.1" +RecipesBase = "1.4.0" RecipesPipeline = "1" Reexport = "1" Scratch = "1" diff --git a/RecipesBase/Project.toml b/RecipesBase/Project.toml index c3b0937e3..2a745a705 100644 --- a/RecipesBase/Project.toml +++ b/RecipesBase/Project.toml @@ -1,7 +1,7 @@ name = "RecipesBase" uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" author = ["Tom Breloff (@tbreloff)"] -version = "1.3.4" +version = "1.4.0" [deps] PrecompileTools = "aea7be01-6a6a-4083-8856-8a6e6704d82a" diff --git a/RecipesPipeline/Project.toml b/RecipesPipeline/Project.toml index 4a28c04eb..27c5f77ce 100644 --- a/RecipesPipeline/Project.toml +++ b/RecipesPipeline/Project.toml @@ -16,6 +16,6 @@ RecipesBase = {path = "../RecipesBase"} [compat] NaNMath = "1" PlotUtils = "1" -RecipesBase = "1.3.1" +RecipesBase = "1.4.0" PrecompileTools = "1" julia = "1.10" From 673acfce00f5ac008bf282f8b83744b41b993ce2 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Sun, 26 Oct 2025 15:21:08 +0100 Subject: [PATCH 03/37] fix example 1 --- PlotsBase/src/Commons/Commons.jl | 13 ++++++++++++- PlotsBase/src/DataSeries.jl | 27 +++++++++++++-------------- PlotsBase/src/init.jl | 2 +- PlotsBase/src/pipeline.jl | 2 +- PlotsBase/src/plot.jl | 3 --- PlotsBase/src/plotly.jl | 2 +- PlotsBase/test/test_layouts.jl | 2 -- 7 files changed, 28 insertions(+), 23 deletions(-) diff --git a/PlotsBase/src/Commons/Commons.jl b/PlotsBase/src/Commons/Commons.jl index 3630284a9..6fc4da7ab 100644 --- a/PlotsBase/src/Commons/Commons.jl +++ b/PlotsBase/src/Commons/Commons.jl @@ -13,7 +13,7 @@ export get_subplot, get_clims export fg_color, plot_color, single_color, alpha, isdark, color_or_nothing! export get_attr_symbol, - _cycle, + _getattr, _as_gradient, makevec, maketuple, @@ -129,6 +129,17 @@ using ..RecipesBase: AbstractLayout include("layouts.jl") # --------------------------------------------------------------- +function _getattr(plotattr::AKW, key::Symbol, i = 1) + attr = plotattr[key] + return if attr isa AVec + getindex(attr, i) + elseif attr isa AMat + getindex(attr, :, i) + else + attr + end +end + wraptuple(x::Tuple) = x wraptuple(x) = (x,) diff --git a/PlotsBase/src/DataSeries.jl b/PlotsBase/src/DataSeries.jl index 4eb7b89d4..e42dec508 100644 --- a/PlotsBase/src/DataSeries.jl +++ b/PlotsBase/src/DataSeries.jl @@ -25,11 +25,11 @@ import Base.show import ..PlotsBase import ..PlotUtils -using ..PlotsBase: DefaultsDict, RecipesPipeline, KW +using ..PlotsBase: DefaultsDict, RecipesPipeline, AKW, KW using ..RecipesBase: @recipe using ..Commons -mutable struct Series +mutable struct Series <: AKW plotattributes::DefaultsDict end @@ -130,10 +130,10 @@ for comp in (:line, :fill, :marker) i::Integer = 1, s::Symbol = :identity, ) - c = series[$Symbol($compcolor)] # series[:linecolor], series[:fillcolor], series[:markercolor] - z = series[$Symbol($comp_z)] # series[:line_z], series[:fill_z], series[:marker_z] + c = _getattr(series, $Symbol($compcolor), i) # series[:linecolor], series[:fillcolor], series[:markercolor] + z = _getattr(series, $Symbol($comp_z), i) # series[:line_z], series[:fill_z], series[:marker_z] return if z ≡ nothing - isa(c, PlotUtils.ColorGradient) ? c : PlotUtils.plot_color(getindex(c, i)) + isa(c, PlotUtils.ColorGradient) ? c : PlotUtils.plot_color(c) else grad = Commons.get_gradient(c) if s ≡ :identity @@ -156,21 +156,20 @@ for comp in (:line, :fill, :marker) $get_compcolor(series, clims::NTuple{2, <:Number}, args...) = $get_compcolor(series, clims[1], clims[2], args...) - $get_compalpha(series, i::Integer = 1) = getindex(series[$Symbol($compalpha)], i) + $get_compalpha(series, i::Integer = 1) = _getattr(series, $Symbol($compalpha), i) end end -get_linewidth(series, i::Integer = 1) = getindex(series[:linewidth], i) -get_linestyle(series, i::Integer = 1) = getindex(series[:linestyle], i) -get_fillstyle(series, i::Integer = 1) = getindex(series[:fillstyle], i) +get_linewidth(series, i::Integer = 1) = _getattr(series, :linewidth, i) +get_linestyle(series, i::Integer = 1) = _getattr(series, :linestyle, i) +get_fillstyle(series, i::Integer = 1) = _getattr(series, :fillstyle, i) -get_markerstrokecolor(series, i::Integer = 1) = -let msc = series[:markerstrokecolor] - msc isa PlotUtils.ColorGradient ? msc : getindex(msc, i) +function get_markerstrokecolor(series, i::Integer = 1) + _getattr(series, :markerstrokecolor, i) end -get_markerstrokealpha(series, i::Integer = 1) = getindex(series[:markerstrokealpha], i) -get_markerstrokewidth(series, i::Integer = 1) = getindex(series[:markerstrokewidth], i) +get_markerstrokealpha(series, i::Integer = 1) = _getattr(series, :markerstrokealpha, i) +get_markerstrokewidth(series, i::Integer = 1) = _getattr(series, :markerstrokewidth, i) function get_colorgradient(series::Series) return if (st = series[:seriestype]) in (:surface, :heatmap) || isfilledcontour(series) diff --git a/PlotsBase/src/init.jl b/PlotsBase/src/init.jl index 04f12116b..a59708c19 100644 --- a/PlotsBase/src/init.jl +++ b/PlotsBase/src/init.jl @@ -180,7 +180,7 @@ macro precompile_backend(backend_package) PrecompileTools.@compile_workload begin withenv("GKSwstype" => "nul", "MPLBACKEND" => "agg") do eval.(imports) - eval.(examples) + # eval.(examples) PlotsBase.CURRENT_PLOT.nullableplot = nothing end end diff --git a/PlotsBase/src/pipeline.jl b/PlotsBase/src/pipeline.jl index 2ac5c1d1e..d09c101b4 100644 --- a/PlotsBase/src/pipeline.jl +++ b/PlotsBase/src/pipeline.jl @@ -245,7 +245,7 @@ function _subplot_setup(plt::Plot, plotattributes::AKW, kw_list::Vector{KW}) sps = get(kw, :subplot, :auto) sp = get_subplot( plt, - getindex(sps ≡ :auto ? plt.subplots : plt.subplots[sps], series_idx(kw_list, kw)), + getindex(RecipesBase.cycle(sps ≡ :auto ? plt.subplots : plt.subplots[sps]), series_idx(kw_list, kw)), ) kw[:subplot] = sp diff --git a/PlotsBase/src/plot.jl b/PlotsBase/src/plot.jl index d3a0b3611..b26d05150 100644 --- a/PlotsBase/src/plot.jl +++ b/PlotsBase/src/plot.jl @@ -59,9 +59,6 @@ function Base.show(io::IO, plt::Plot) return end -getplot(plt::Plot) = plt -getattr(plt::Plot, ::Int = 1) = plt.attr - # --------------------------------------------------------- """ diff --git a/PlotsBase/src/plotly.jl b/PlotsBase/src/plotly.jl index c959ae76d..dea0a135e 100644 --- a/PlotsBase/src/plotly.jl +++ b/PlotsBase/src/plotly.jl @@ -1111,7 +1111,7 @@ function plotly_series_segments(series::Series, plotattributes_base::KW, x, y, z end plotly_polar!(plotattributes_out, series) - plotly_adjust_hover_label!(plotattributes_out, getindex(series[:hover], rng)) + plotly_adjust_hover_label!(plotattributes_out, _getattr(series, :hover, rng)) if hasfillrange # if hasfillrange is true, return two dictionaries (one for original diff --git a/PlotsBase/test/test_layouts.jl b/PlotsBase/test/test_layouts.jl index 696d0cd1c..104470217 100644 --- a/PlotsBase/test/test_layouts.jl +++ b/PlotsBase/test/test_layouts.jl @@ -108,8 +108,6 @@ end io = devnull show(io, pl[1]) - @test PlotsBase.getplot(pl) == pl - @test PlotsBase.getattr(pl) == pl.attr @test PlotsBase.backend_object(pl) == pl.o @test occursin("Plot", string(pl)) print(io, pl) From 736dfa46928763de9142a54f9f1bfc21ea1fbeea Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Wed, 29 Oct 2025 12:39:56 +0100 Subject: [PATCH 04/37] fix more examples --- PlotsBase/ext/GRExt.jl | 28 ++++++++++++++++------------ PlotsBase/src/Annotations.jl | 2 +- PlotsBase/src/Commons/Commons.jl | 11 +++++++++++ PlotsBase/src/DataSeries.jl | 6 +++--- PlotsBase/src/examples.jl | 7 +++---- PlotsBase/src/pipeline.jl | 3 ++- PlotsBase/src/plotly.jl | 10 +++++----- PlotsBase/src/recipes.jl | 32 +++++++++++++++++--------------- PlotsBase/src/utils.jl | 2 +- RecipesBase/src/RecipesBase.jl | 8 ++++++-- 10 files changed, 65 insertions(+), 44 deletions(-) diff --git a/PlotsBase/ext/GRExt.jl b/PlotsBase/ext/GRExt.jl index 0d183ad4f..c0ce09929 100644 --- a/PlotsBase/ext/GRExt.jl +++ b/PlotsBase/ext/GRExt.jl @@ -331,11 +331,11 @@ function gr_getcolorind(c) return convert(Int, GR.inqcolorfromrgb(red(c), green(c), blue(c))) end -gr_set_linecolor(c) = GR.setlinecolorind(gr_getcolorind(getindex(c, 1))) -gr_set_fillcolor(c) = GR.setfillcolorind(gr_getcolorind(getindex(c, 1))) -gr_set_markercolor(c) = GR.setmarkercolorind(gr_getcolorind(getindex(c, 1))) -gr_set_bordercolor(c) = GR.setbordercolorind(gr_getcolorind(getindex(c, 1))) -gr_set_textcolor(c) = GR.settextcolorind(gr_getcolorind(getindex(c, 1))) +gr_set_linecolor(c) = GR.setlinecolorind(gr_getcolorind(_getvalue(c, 1))) +gr_set_fillcolor(c) = GR.setfillcolorind(gr_getcolorind(_getvalue(c, 1))) +gr_set_markercolor(c) = GR.setmarkercolorind(gr_getcolorind(_getvalue(c, 1))) +gr_set_bordercolor(c) = GR.setbordercolorind(gr_getcolorind(_getvalue(c, 1))) +gr_set_textcolor(c) = GR.settextcolorind(gr_getcolorind(_getvalue(c, 1))) gr_set_transparency(α::Real) = GR.settransparency(clamp(α, 0, 1)) gr_set_transparency(::Nothing) = GR.settransparency(1) gr_set_transparency(c, α) = gr_set_transparency(α) @@ -2030,8 +2030,12 @@ function gr_draw_segments(series, x, y, z, fillrange, clims) (fc = get_fillcolor(series, clims, i)) |> gr_set_fillcolor gr_set_fillstyle(get_fillstyle(series, i)) fx = getindex(x, vcat(rng, reverse(rng))) - fy = vcat(getindex(fr_from, rng), getindex(fr_to, reverse(rng))) + fy = vcat(_getvalue(fr_from, rng), _getvalue(fr_to, reverse(rng))) gr_set_transparency(fc, get_fillalpha(series, i)) + @show fx, fy + @show length(fx), length(fy) + @show fr_from, fr_to + @show rng GR.fillarea(fx, fy) end (lc = get_linecolor(series, clims, i)) |> gr_set_fillcolor @@ -2068,18 +2072,18 @@ function gr_draw_markers( rng = intersect(eachindex(IndexLinear(), x), segment.range) isempty(rng) && continue i = segment.attr_index - ms = get_thickness_scaling(series) * getindex(msize, i) - msw = get_thickness_scaling(series) * getindex(strokewidth, i) - shape = getindex(shapes, i) + ms = get_thickness_scaling(series) * _getvalue(msize, i) + msw = get_thickness_scaling(series) * _getvalue(strokewidth, i) + shape = _getvalue(shapes, i) if !(shape isa Shape) shape = gr_get_markershape.(shape) end for j in rng gr_draw_marker( series, - getindex(x, j), - getindex(y, j), - getindex(z, j), + _getvalue(x, j), + _getvalue(y, j), + _getvalue(z, j), clims, i, ms, diff --git a/PlotsBase/src/Annotations.jl b/PlotsBase/src/Annotations.jl index c9b6efad3..270d886cd 100644 --- a/PlotsBase/src/Annotations.jl +++ b/PlotsBase/src/Annotations.jl @@ -195,7 +195,7 @@ _process_annotation_3d( function _process_annotation(sp::Subplot, ann, annotation_processor::Function) ann = makevec.(ann) - return [annotation_processor(sp, _cycle.(ann, i)...) for i in 1:maximum(length.(ann))] + return [annotation_processor(sp, getindex.(ann, i)...) for i in 1:maximum(length.(ann))] end # Expand arrays of coordinates, positions and labels into individual annotations diff --git a/PlotsBase/src/Commons/Commons.jl b/PlotsBase/src/Commons/Commons.jl index 6fc4da7ab..9f60289b2 100644 --- a/PlotsBase/src/Commons/Commons.jl +++ b/PlotsBase/src/Commons/Commons.jl @@ -13,6 +13,7 @@ export get_subplot, get_clims export fg_color, plot_color, single_color, alpha, isdark, color_or_nothing! export get_attr_symbol, + _getvalue, _getattr, _as_gradient, makevec, @@ -129,6 +130,16 @@ using ..RecipesBase: AbstractLayout include("layouts.jl") # --------------------------------------------------------------- +function _getvalue(val, args...) + return val +end +function _getvalue(val::Union{AVec, ColorGradient, RecipesBase.CyclingAttribute}, i, args...) + return val[i] +end +function _getvalue(val::AMat, args...) + return val[args...] +end + function _getattr(plotattr::AKW, key::Symbol, i = 1) attr = plotattr[key] return if attr isa AVec diff --git a/PlotsBase/src/DataSeries.jl b/PlotsBase/src/DataSeries.jl index e42dec508..4663f4a68 100644 --- a/PlotsBase/src/DataSeries.jl +++ b/PlotsBase/src/DataSeries.jl @@ -137,10 +137,10 @@ for comp in (:line, :fill, :marker) else grad = Commons.get_gradient(c) if s ≡ :identity - get(grad, z[i], (cmin, cmax)) + get(grad, z, (cmin, cmax)) else base = _log_scale_bases[s] - get(grad, log(base, z[i]), (log(base, cmin), log(base, cmax))) + get(grad, log(base, z), (log(base, cmin), log(base, cmax))) end end end @@ -165,7 +165,7 @@ get_linestyle(series, i::Integer = 1) = _getattr(series, :linestyle, i) get_fillstyle(series, i::Integer = 1) = _getattr(series, :fillstyle, i) function get_markerstrokecolor(series, i::Integer = 1) - _getattr(series, :markerstrokecolor, i) + return _getattr(series, :markerstrokecolor, i) end get_markerstrokealpha(series, i::Integer = 1) = _getattr(series, :markerstrokealpha, i) diff --git a/PlotsBase/src/examples.jl b/PlotsBase/src/examples.jl index 9c540869e..a211a9396 100644 --- a/PlotsBase/src/examples.jl +++ b/PlotsBase/src/examples.jl @@ -464,15 +464,14 @@ const _examples = PlotExample[ ), PlotExample( # 29 "Layouts, margins, label rotation, title location", - :(using PlotsBase.Commons), # for Measures, e.g. mm and px quote plot( rand(100, 6), layout = @layout([a b; c]), title = ["A" "B" "C"], titlelocation = :left, - left_margin = [20mm 0mm], - bottom_margin = 10px, + left_margin = [(20, :mm) (0, :mm)], + bottom_margin = (10, :px), xrotation = 60, ) end, @@ -542,7 +541,7 @@ const _examples = PlotExample[ p2 = plot(x, grid = (:y, :olivedrab, :dot, 1, 0.9), title = "Modified y grid") p3 = plot(deepcopy(p2), title = "Add x grid") xgrid!(p3, :on, :cadetblue, 2, :dashdot, 0.4) - plot(p1, p2, p3, layout = (1, 3), label = "", fillrange = 0, fillalpha = 0.3) + plot(p1, p2, p3, layout = (1, 3), label = "", fillrange = RecipesBase.cycle(0), fillalpha = 0.3) end, ), PlotExample( # 34 diff --git a/PlotsBase/src/pipeline.jl b/PlotsBase/src/pipeline.jl index d09c101b4..095d49649 100644 --- a/PlotsBase/src/pipeline.jl +++ b/PlotsBase/src/pipeline.jl @@ -243,9 +243,10 @@ function _subplot_setup(plt::Plot, plotattributes::AKW, kw_list::Vector{KW}) for kw in kw_list # get the Subplot object to which the series belongs. sps = get(kw, :subplot, :auto) + subplots = sps ≡ :auto ? plt.subplots : _getvalue(plt.subplots, sps) sp = get_subplot( plt, - getindex(RecipesBase.cycle(sps ≡ :auto ? plt.subplots : plt.subplots[sps]), series_idx(kw_list, kw)), + getindex(RecipesBase.cycle(subplots), series_idx(kw_list, kw)), ) kw[:subplot] = sp diff --git a/PlotsBase/src/plotly.jl b/PlotsBase/src/plotly.jl index dea0a135e..30384ea1e 100644 --- a/PlotsBase/src/plotly.jl +++ b/PlotsBase/src/plotly.jl @@ -976,7 +976,7 @@ function plotly_series_shapes(plt::Plot, series::Series, clims) end plotattributes_out[:showlegend] = k == 1 ? should_add_to_legend(series) : false plotly_polar!(plotattributes_out, series) - plotly_adjust_hover_label!(plotattributes_out, getindex(series[:hover], i)) + plotly_adjust_hover_label!(plotattributes_out, _getattr(series, :hover, i)) plotattributes_outs[k] = merge(plotattributes_out, series[:extra_kwargs]) end if series[:fill_z] ≢ nothing @@ -1077,15 +1077,15 @@ function plotly_series_segments(series::Series, plotattributes_base::KW, x, y, z plotattributes_out[:marker] = KW( :symbol => get_plotly_marker( - getindex(series[:markershape], i), - string(getindex(series[:markershape], i)), + _getattr(series, :markershape, i), + string(_getattr(series, :markershape, i)), ), # :opacity => needs_scatter_fix ? [1, 0] : 1, - :size => 2getindex(series[:markersize], i), + :size => 2 * _getattr(series, :markersize, i), :color => needs_scatter_fix ? [mcolor, mcolor_next] : mcolor, :line => KW( :color => needs_scatter_fix ? [lcolor, lcolor_next] : lcolor, - :width => getindex(series[:markerstrokewidth], i), + :width => _getattr(series, :markerstrokewidth, i), ), ) end diff --git a/PlotsBase/src/recipes.jl b/PlotsBase/src/recipes.jl index 53a6e6ed4..c7edc142b 100644 --- a/PlotsBase/src/recipes.jl +++ b/PlotsBase/src/recipes.jl @@ -294,23 +294,25 @@ end # create vertical line segments from fill @recipe function f(::Type{Val{:sticks}}, x, y, z) # COV_EXCL_LINE n = length(x) - if (fr = plotattributes[:fillrange]) ≡ nothing - sp = plotattributes[:subplot] - fr = if sp[:yaxis][:scale] ≡ :identity - 0.0 - else - NaNMath.min(axis_limits(sp, :y)[1], ignorenan_minimum(y)) - end - end + newx, newy, newz = zeros(3n), zeros(3n), z ≢ nothing ? zeros(3n) : nothing for (i, (xi, yi, zi)) in enumerate(zip(x, y, z ≢ nothing ? z : 1:n)) + fri = _getattr(plotattributes, :fillrange, i) + if fri ≡ nothing + sp = plotattributes[:subplot] + fri = if sp[:yaxis][:scale] ≡ :identity + 0.0 + else + NaNMath.min(axis_limits(sp, :y)[1], ignorenan_minimum(y)) + end + end rng = (3i - 2):(3i) newx[rng] = [xi, xi, NaN] if z ≢ nothing newy[rng] = [yi, yi, NaN] - newz[rng] = [getindex(fr, i), zi, NaN] + newz[rng] = [fri, zi, NaN] else - newy[rng] = [getindex(fr, i), yi, NaN] + newy[rng] = [fri, yi, NaN] end end x := newx @@ -466,10 +468,10 @@ end valid_i = isfinite.(procx) .& isfinite.(procy) for i in 1:ny valid_i[i] || continue - yi = procy[i] - center = procx[i] - hwi = getindex(hw, i) - fi = getindex(fillto, i) + yi = _getvalue(procy, i) + center = _getvalue(procx, i) + hwi = _getvalue(hw, i) + fi = _getvalue(fillto, i) push!(xseg, center - hwi, center - hwi, center + hwi, center + hwi, center - hwi) push!(yseg, yi, fi, fi, yi, yi) end @@ -935,7 +937,7 @@ end θ_new = θ + 2π * y[i] / s coords = [(0.0, 0.0); partialcircle(θ, θ_new, 50)] @series begin - seriescolor := getindex(colors, i) + seriescolor := _getvalue(colors, i) seriestype := :shape label --> string(x[i]) x := first.(coords) diff --git a/PlotsBase/src/utils.jl b/PlotsBase/src/utils.jl index 2e578dca9..18b1ae9d9 100644 --- a/PlotsBase/src/utils.jl +++ b/PlotsBase/src/utils.jl @@ -319,7 +319,7 @@ end function make_fillrange_side(y::AVec, rib) frs = zeros(axes(y)) for (i, yi) in pairs(y) - frs[i] = yi + getindex(rib, i) + frs[i] = yi + _getvalue(rib, i) end return frs end diff --git a/RecipesBase/src/RecipesBase.jl b/RecipesBase/src/RecipesBase.jl index e7fb8256c..e516f8fe7 100644 --- a/RecipesBase/src/RecipesBase.jl +++ b/RecipesBase/src/RecipesBase.jl @@ -74,10 +74,14 @@ function Base.getindex(c::CyclingAttribute, args...) return arg end end - Base.getindex(c.value, args...) + return Base.getindex(c.value, args...) +end + +Base.getindex(c::CyclingAttribute, i::Int) = Base.getindex(c.value, mod1(i, length(c.value))) +Base.getindex(c::CyclingAttribute, i::StepRange) = map(i) do j + Base.getindex(c.value, mod1(j, length(c.value))) end -Base.getindex(c::CyclingAttribute, i::Int) = Base.getindex(c.value, mod1(i, length(c.value))) # -------------------------------------------------------------------------- @inline to_symbol(s::Symbol) = s From 962bc41eaf87c9832454fd56e33e4646e7d5cf3a Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Wed, 29 Oct 2025 12:44:33 +0100 Subject: [PATCH 05/37] cleanup GRExt --- PlotsBase/ext/GRExt.jl | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/PlotsBase/ext/GRExt.jl b/PlotsBase/ext/GRExt.jl index c0ce09929..911936a41 100644 --- a/PlotsBase/ext/GRExt.jl +++ b/PlotsBase/ext/GRExt.jl @@ -518,7 +518,7 @@ function gr_polaraxes(rmin::Real, rmax::Real, sp::Subplot) # draw radial ticks yaxis[:showaxis] && for i in eachindex(rtick_values) r = (rtick_values[i] - rmin) / (rmax - rmin) - (r ≤ 1 && r ≥ 0) && gr_text(GR.wctondc(0.05, r)..., getindex(rtick_labels, i)) + (r ≤ 1 && r ≥ 0) && gr_text(GR.wctondc(0.05, r)..., _getvalue(rtick_labels, i)) end GR.restorestate() return nothing @@ -1290,7 +1290,7 @@ function gr_add_legend(sp, leg, viewport_area) 1, min(max_markersize, mfac * msz), min(max_markersize, mfac * msw), - getindex(msh, 1), + _getvalue(msh, 1), ) end @@ -2029,13 +2029,9 @@ function gr_draw_segments(series, x, y, z, fillrange, clims) if is2d && fillrange ≢ nothing (fc = get_fillcolor(series, clims, i)) |> gr_set_fillcolor gr_set_fillstyle(get_fillstyle(series, i)) - fx = getindex(x, vcat(rng, reverse(rng))) + fx = _getvalue(x, vcat(rng, reverse(rng))) fy = vcat(_getvalue(fr_from, rng), _getvalue(fr_to, reverse(rng))) gr_set_transparency(fc, get_fillalpha(series, i)) - @show fx, fy - @show length(fx), length(fy) - @show fr_from, fr_to - @show rng GR.fillarea(fx, fy) end (lc = get_linecolor(series, clims, i)) |> gr_set_fillcolor From 864613a6131c04b00b9772a605b77da1edc8ca1e Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Wed, 29 Oct 2025 12:49:25 +0100 Subject: [PATCH 06/37] cleanup GastonExt --- PlotsBase/ext/GastonExt.jl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/PlotsBase/ext/GastonExt.jl b/PlotsBase/ext/GastonExt.jl index b2520d575..53241f907 100644 --- a/PlotsBase/ext/GastonExt.jl +++ b/PlotsBase/ext/GastonExt.jl @@ -338,7 +338,7 @@ function gaston_add_series(plt::Plot{GastonBackend}, series::Series) if gsp.dims == 2 && z ≡ nothing for (n, seg) in enumerate(series_segments(series, st; check = true)) i, rng = seg.attr_index, seg.range - fr = getindex(series[:fillrange], 1:length(x[rng])) + fr = _getattr(series, :fillrange, 1:length(x[rng])) for sc in gaston_seriesconf!(sp, series, n == 1, i) push!(curves, Gaston.Curve(x[rng], y[rng], nothing, fr, sc)) end @@ -785,8 +785,8 @@ gaston_lc_ls_lw(series::Series, clims, i::Int) = ( ) gaston_mk_ms_mc(series::Series, clims, i::Int) = ( - gaston_marker(getindex(series[:markershape], i), get_markeralpha(series, i)), - 0.2getindex(series[:markersize], i), + gaston_marker(_getattr(series, :markershape, i), get_markeralpha(series, i)), + 0.2 * _getattr(series, :markersize, i), gaston_color(get_markercolor(series, clims, i), get_markeralpha(series, i)), ) From 3977448acd48eef6284a42db3905a1f0e23638ee Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Wed, 29 Oct 2025 12:55:30 +0100 Subject: [PATCH 07/37] cleanup PGFPlotsXExt --- PlotsBase/ext/PGFPlotsXExt.jl | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/PlotsBase/ext/PGFPlotsXExt.jl b/PlotsBase/ext/PGFPlotsXExt.jl index 1782abb54..1f038894a 100644 --- a/PlotsBase/ext/PGFPlotsXExt.jl +++ b/PlotsBase/ext/PGFPlotsXExt.jl @@ -551,7 +551,7 @@ function pgfx_add_series!(::Val{:path}, axis, series_opt, series, series_func, o i, rng = segment.attr_index, segment.range segment_opt = pgfx_linestyle(opt, i) if opt[:markershape] ≢ :none - if (marker = getindex(opt[:markershape], i)) isa Shape + if (marker = _getattr(opt, :markershape, i)) isa Shape scale_factor = 0.00125 msize = opt[:markersize] * scale_factor path = join( @@ -573,7 +573,7 @@ function pgfx_add_series!(::Val{:path}, axis, series_opt, series, series_func, o # add fillrange if (sf = opt[:fillrange]) ≢ nothing && !isfilledcontour(series) if sf isa Number || sf isa AVec - pgfx_fillrange_series!(axis, series, series_func, i, getindex(sf, rng), rng) + pgfx_fillrange_series!(axis, series, series_func, i, _getvalue(sf, rng), rng) elseif sf isa Tuple && series[:ribbon] ≢ nothing for sfi in sf pgfx_fillrange_series!( @@ -581,7 +581,7 @@ function pgfx_add_series!(::Val{:path}, axis, series_opt, series, series_func, o series, series_func, i, - getindex(sfi, rng), + _getvalue(sfi, rng), rng, ) end @@ -1170,7 +1170,7 @@ pgfx_should_add_to_legend(series::Series) = ) function pgfx_marker(plotattributes, i = 1) - shape = getindex(plotattributes[:markershape], i) + shape = _getattr(plotattributes, :markershape, i) cstr = plot_color(get_markercolor(plotattributes, i), get_markeralpha(plotattributes, i)) cstr_stroke = plot_color( @@ -1180,7 +1180,7 @@ function pgfx_marker(plotattributes, i = 1) mark_size = pgfx_thickness_scaling(plotattributes) * 0.75 * - getindex(plotattributes[:markersize], i) + _getattr(plotattributes, :markersize, i) mark_freq = if !any(isnan, plotattributes[:y]) && plotattributes[:markershape] isa AVec length(plotattributes[:markershape]) else @@ -1198,7 +1198,7 @@ function pgfx_marker(plotattributes, i = 1) "line width" => pgfx_thickness_scaling(plotattributes) * 0.75 * - getindex(plotattributes[:markerstrokewidth], i), + _getattr(plotattributes, :markerstrokewidth, i), "rotate" => if shape ≡ :dtriangle 180 elseif shape ≡ :rtriangle @@ -1208,7 +1208,7 @@ function pgfx_marker(plotattributes, i = 1) else 0 end, - pgfx_get_linestyle(getindex(plotattributes[:markerstrokestyle], i)) => + pgfx_get_linestyle(_getattr(plotattributes, :markerstrokestyle, i)) => nothing, ), ) @@ -1267,7 +1267,7 @@ end function pgfx_fillrange_attrs(fillrange, x, y) n = length(x) x_fill = [x; x[n:-1:1]; x[1]] - y_fill = [y; getindex(fillrange, n:-1:1); y[1]] + y_fill = [y; _getvalue(fillrange, n:-1:1); y[1]] return PGFPlotsX.Coordinates(x_fill, y_fill) end @@ -1275,7 +1275,7 @@ function pgfx_fillrange_attrs(fillrange, x, y, z) n = length(x) x_fill = [x; x[n:-1:1]; x[1]] y_fill = [y; y[n:-1:1]; x[1]] - z_fill = [z; getindex(fillrange, n:-1:1); z[1]] + z_fill = [z; _getvalue(fillrange, n:-1:1); z[1]] return PGFPlotsX.Coordinates(x_fill, y_fill, z_fill) end From 6b04ae368f4ccf6df9dbd1069dbbd50d43500ccc Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Wed, 29 Oct 2025 12:56:36 +0100 Subject: [PATCH 08/37] format --- RecipesBase/test/test_api.jl | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/RecipesBase/test/test_api.jl b/RecipesBase/test/test_api.jl index 8d0d264b0..7d5c31b92 100644 --- a/RecipesBase/test/test_api.jl +++ b/RecipesBase/test/test_api.jl @@ -2,16 +2,16 @@ using RecipesBase, Test @testset "Cycling attributes" begin c1 = cycle([:red, :green]) - @test c1[1] == :red + @test c1[1] == :red @test c1[2] == :green @test c1[3] == :red @test c1[4] == :green c2 = cycle([:red :green; :blue :yellow]) - @test c2[1] == :red + @test c2[1] == :red @test c2[2] == :blue @test c2[3] == :green @test c2[4] == :yellow - @test c2[5] == :red + @test c2[5] == :red @test c2[6] == :blue @test c2[7] == :green @test c2[8] == :yellow @@ -20,4 +20,3 @@ using RecipesBase, Test @test c2[3, :] == [:red, :green] @test c2[:, 3] == [:red, :blue] end -end \ No newline at end of file From fee0ee339fdc2281156308777cc827660d84b530 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Wed, 29 Oct 2025 13:08:00 +0100 Subject: [PATCH 09/37] cleanup PythonPlotExt --- PlotsBase/ext/PythonPlotExt.jl | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/PlotsBase/ext/PythonPlotExt.jl b/PlotsBase/ext/PythonPlotExt.jl index c4ec699a6..9b69ffde4 100644 --- a/PlotsBase/ext/PythonPlotExt.jl +++ b/PlotsBase/ext/PythonPlotExt.jl @@ -630,8 +630,8 @@ function _py_add_series(plt::Plot{PythonPlotBackend}, series::Series) ax.scatter( args...; zorder = zorder + 0.5, - marker = _py_marker(getindex(series[:markershape], i)), - s = _py_thickness_scale(plt, getindex(series[:markersize], i)) .^ 2, + marker = _py_marker(_getattr(series, :markershape, i)), + s = _py_thickness_scale(plt, _getattr(series, :markersize, i)) .^ 2, facecolors = _py_color( get_markercolor(series, i, cbar_scale), get_markeralpha(series, i), @@ -903,9 +903,9 @@ function _py_add_series(plt::Plot{PythonPlotBackend}, series::Series) f, dim1, dim2 = :fill_between, x[rng], y[rng] n = length(dim1) args = if typeof(fillrange) <: Union{Real, AVec} - dim1, getindex(fillrange, rng), dim2 + dim1, _getvalue(fillrange, rng), dim2 elseif is_2tuple(fillrange) - dim1, getindex(fillrange[1], rng), getindex(fillrange[2], rng) + dim1, _getvalue(fillrange[1], rng), _getvalue(fillrange[2], rng) end la = get_linealpha(series, i) @@ -1596,7 +1596,7 @@ function _py_add_legend(plt::Plot, sp::Subplot, ax) solid_joinstyle = "miter", dash_capstyle = "butt", dash_joinstyle = "miter", - marker = _py_marker(getindex(series[:markershape], 1)), + marker = _py_marker(_getattr(series, :markershape, 1)), markersize = _py_thickness_scale(plt, 0.8sp[:legend_font_pointsize]), markeredgecolor = _py_color( single_color(get_markerstrokecolor(series)), From c002da1aab7a7ab75680726346f0c73e080e83a2 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Wed, 29 Oct 2025 13:10:13 +0100 Subject: [PATCH 10/37] cleanup Annotations --- PlotsBase/src/Annotations.jl | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/PlotsBase/src/Annotations.jl b/PlotsBase/src/Annotations.jl index 270d886cd..4dd8a9a2d 100644 --- a/PlotsBase/src/Annotations.jl +++ b/PlotsBase/src/Annotations.jl @@ -94,7 +94,7 @@ function series_annotations_shapes!(series::Series, scaletype::Symbol = :pixels) msize = Float64[] shapes = Vector{Shape}(undef, length(anns.strs)) for i in eachindex(anns.strs) - str = getindex(anns.strs, i) + str = _getvalue(anns.strs, i) # get the width and height of the string (in mm) sw, sh = text_size(str, anns.font.pointsize) @@ -110,7 +110,7 @@ function series_annotations_shapes!(series::Series, scaletype::Symbol = :pixels) # and then re-scale a copy of baseshape to match the w/h ratio maxscale = max(xscale, yscale) push!(msize, maxscale) - baseshape = getindex(anns.baseshape, i) + baseshape = _getvalue(anns.baseshape, i) shapes[i] = scale(baseshape, msw * xscale / maxscale, msh * yscale / maxscale, (0, 0)) end @@ -129,13 +129,13 @@ end function Base.iterate(ea::EachAnn, i = 1) (ea.anns ≡ nothing || isempty(ea.anns.strs) || i > length(ea.y)) && return - tmp = getindex(ea.anns.strs, i) + tmp = _getvalue(ea.anns.strs, i) str, fnt = if isa(tmp, PlotText) tmp.str, tmp.font else tmp, ea.anns.font end - return (getindex(ea.x, i), getindex(ea.y, i), str, fnt), i + 1 + return (_getvalue(ea.x, i), _getvalue(ea.y, i), str, fnt), i + 1 end # ----------------------------------------------------------------------- @@ -195,7 +195,7 @@ _process_annotation_3d( function _process_annotation(sp::Subplot, ann, annotation_processor::Function) ann = makevec.(ann) - return [annotation_processor(sp, getindex.(ann, i)...) for i in 1:maximum(length.(ann))] + return [annotation_processor(sp, _getvalue.(ann, i)...) for i in 1:maximum(length.(ann))] end # Expand arrays of coordinates, positions and labels into individual annotations From 318701773ac41d8e1641942f81cd60f0db17f667 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Wed, 29 Oct 2025 13:13:38 +0100 Subject: [PATCH 11/37] more cleanups --- PlotsBase/src/Commons/Commons.jl | 2 +- PlotsBase/src/Commons/aliases.jl | 2 +- PlotsBase/src/Plots.jl | 4 ++-- PlotsBase/src/Subplots.jl | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/PlotsBase/src/Commons/Commons.jl b/PlotsBase/src/Commons/Commons.jl index 9f60289b2..c0de9465f 100644 --- a/PlotsBase/src/Commons/Commons.jl +++ b/PlotsBase/src/Commons/Commons.jl @@ -291,7 +291,7 @@ end # helpers to figure out if there are NaN values in a list of array types anynan(i::Int, args::Tuple) = any( a -> try - isnan(getindex(a, i)) + isnan(_getvalue(a, i)) catch MethodError false end, args diff --git a/PlotsBase/src/Commons/aliases.jl b/PlotsBase/src/Commons/aliases.jl index 4d688b23d..201bf020d 100644 --- a/PlotsBase/src/Commons/aliases.jl +++ b/PlotsBase/src/Commons/aliases.jl @@ -1,5 +1,5 @@ autopick_ignore_none_auto(arr::AVec, idx::Integer) = - getindex(setdiff(arr, [:none, :auto]), idx) + _getvalue(setdiff(arr, [:none, :auto]), idx) autopick_ignore_none_auto(notarr, idx::Integer) = notarr function aliases_and_autopick( diff --git a/PlotsBase/src/Plots.jl b/PlotsBase/src/Plots.jl index 439b17c99..20563bce6 100644 --- a/PlotsBase/src/Plots.jl +++ b/PlotsBase/src/Plots.jl @@ -72,8 +72,8 @@ struct InputWrapper{T} end protect(obj::T) where {T} = InputWrapper{T}(obj) Base.isempty(::InputWrapper) = false -Commons.getindex(wrapper::InputWrapper, ::Int) = wrapper.obj -Commons.getindex(wrapper::InputWrapper, ::AVec{Int}) = wrapper.obj +Commons._getvalue(wrapper::InputWrapper, ::Int) = wrapper.obj +Commons._getvalue(wrapper::InputWrapper, ::AVec{Int}) = wrapper.obj # ----------------------------------------------------------- diff --git a/PlotsBase/src/Subplots.jl b/PlotsBase/src/Subplots.jl index 6c16b07b4..a849cf2ee 100644 --- a/PlotsBase/src/Subplots.jl +++ b/PlotsBase/src/Subplots.jl @@ -88,9 +88,9 @@ Commons.get_ticks(sp::Subplot, s::Symbol) = get_ticks(sp, sp[get_attr_symbol(s, # and assigns a color automatically get_series_color(c, sp::Subplot, n::Int, seriestype) = if c ≡ :auto - Commons.like_surface(seriestype) ? PlotsBase.cgrad() : getindex(sp[:color_palette], n) + Commons.like_surface(seriestype) ? PlotsBase.cgrad() : _getattr(sp, :color_palette, n) elseif isa(c, Int) - getindex(sp[:color_palette], c) + _getattr(sp, :color_palette, c) else c end |> PlotsBase.plot_color From cf9e6c227837086fcf71fe1c1e4ba534c480fbd5 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Wed, 29 Oct 2025 13:15:10 +0100 Subject: [PATCH 12/37] finish plotly --- PlotsBase/src/plotly.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PlotsBase/src/plotly.jl b/PlotsBase/src/plotly.jl index 30384ea1e..f3a933136 100644 --- a/PlotsBase/src/plotly.jl +++ b/PlotsBase/src/plotly.jl @@ -896,7 +896,7 @@ function plotly_series(plt::Plot, series::Series) :symbol => get_plotly_marker(series[:markershape], string(series[:markershape])), # :opacity => series[:markeralpha], - :size => 2getindex(series[:markersize], inds), + :size => 2 * _getattr(series, :markersize, inds), :color => rgba_string.( plot_color.(get_markercolor.(series, inds), get_markeralpha.(series, inds)), ), @@ -907,7 +907,7 @@ function plotly_series(plt::Plot, series::Series) get_markerstrokealpha.(series, inds), ), ), - :width => getindex(series[:markerstrokewidth], inds), + :width => _getattr(series, :markerstrokewidth, inds), ), ) end From 0778d32d136f75a40e00808c06b443154ff49b5d Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Thu, 30 Oct 2025 10:40:50 +0100 Subject: [PATCH 13/37] finish cleanup PlotsBase --- PlotsBase/src/recipes.jl | 34 +++++++++++++++++----------------- PlotsBase/src/utils.jl | 2 +- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/PlotsBase/src/recipes.jl b/PlotsBase/src/recipes.jl index c7edc142b..a03d8a374 100644 --- a/PlotsBase/src/recipes.jl +++ b/PlotsBase/src/recipes.jl @@ -77,15 +77,15 @@ const POTENTIAL_VECTOR_ARGUMENTS = [ # sort vector arguments for arg in POTENTIAL_VECTOR_ARGUMENTS if typeof(plotattributes[arg]) <: AVec - plotattributes[arg] = getindex(plotattributes[arg], indices) + plotattributes[arg] = _getattr(plotattributes, arg, indices) end end # a tuple as fillrange has to be handled differently if typeof(plotattributes[:fillrange]) <: Tuple lower, upper = plotattributes[:fillrange] - typeof(lower) <: AVec && (lower = getindex(lower, indices)) - typeof(upper) <: AVec && (upper = getindex(upper, indices)) + typeof(lower) <: AVec && (lower = _getvalue(lower, indices)) + typeof(upper) <: AVec && (upper = _getvalue(upper, indices)) plotattributes[:fillrange] = (lower, upper) end @@ -383,13 +383,13 @@ end for rng in DataSeries.iter_segments(args...) length(rng) < 2 && continue ts = range(0, stop = 1, length = npoints) - nanappend!(newx, map(t -> bezier_value(getindex(x, rng), t), ts)) - nanappend!(newy, map(t -> bezier_value(getindex(y, rng), t), ts)) + nanappend!(newx, map(t -> bezier_value(_getvalue(x, rng), t), ts)) + nanappend!(newy, map(t -> bezier_value(_getvalue(y, rng), t), ts)) if z ≢ nothing - nanappend!(newz, map(t -> bezier_value(getindex(z, rng), t), ts)) + nanappend!(newz, map(t -> bezier_value(_getvalue(z, rng), t), ts)) end if fr ≢ nothing - nanappend!(newfr, map(t -> bezier_value(getindex(fr, rng), t), ts)) + nanappend!(newfr, map(t -> bezier_value(_getvalue(fr, rng), t), ts)) end end @@ -444,7 +444,7 @@ end 1 end else - map(i -> 0.5getindex(bw, i), eachindex(procx)) + map(i -> 0.5 * _getvalue(bw, i), eachindex(procx)) end # make fillto a vector... default fills to 0 @@ -1129,10 +1129,10 @@ function error_coords(errorbar, errordata, otherdata...) od = map(odi -> Vector{float_extended_type(odi)}(undef, 0), otherdata) for (i, edi) in enumerate(errordata) for (j, odj) in enumerate(otherdata) - odi = getindex(odj, i) + odi = _getvalue(odj, i) nanappend!(od[j], [odi, odi]) end - e1, e2 = error_tuple(getindex(errorbar, i)) + e1, e2 = error_tuple(_getvalue(errorbar, i)) nanappend!(ed, [edi - e1, edi + e2]) end return (ed, od...) @@ -1217,11 +1217,11 @@ function quiver_using_arrows(plotattributes::AKW) is_3d && (z = zeros(0)) for i in 1:max(length(xorig), length(yorig), is_3d ? 0 : length(zorig)) # get the starting position - xi = getindex(xorig, i) - yi = getindex(yorig, i) - zi = is_3d ? getindex(zorig, i) : 0 + xi = _getvalue(xorig, i) + yi = _getvalue(yorig, i) + zi = is_3d ? _getvalue(zorig, i) : 0 # get the velocity - vi = getindex(velocity, i) + vi = _getvalue(velocity, i) if is_3d vx, vy, vz = if istuple(vi) vi[1], vi[2], vi[3] @@ -1266,12 +1266,12 @@ function quiver_using_hack(plotattributes::AKW) for i in 1:max(length(xorig), length(yorig)) # get the starting position - xi = getindex(xorig, i) - yi = getindex(yorig, i) + xi = _getvalue(xorig, i) + yi = _getvalue(yorig, i) p = P2((xi, yi)) # get the velocity - vi = getindex(velocity, i) + vi = _getvalue(velocity, i) vx, vy = if istuple(vi) first(vi), last(vi) elseif isscalar(vi) diff --git a/PlotsBase/src/utils.jl b/PlotsBase/src/utils.jl index 18b1ae9d9..bd6c1f725 100644 --- a/PlotsBase/src/utils.jl +++ b/PlotsBase/src/utils.jl @@ -909,7 +909,7 @@ function _guess_best_legend_position(xl, yl, plt, weight = 100) for (i, lim) in enumerate(Iterators.product(xl, yl)) lim = lim ./ scale for ix in eachindex(x) - xi, yi = x[ix], getindex(y, ix + yoffset) + xi, yi = x[ix], _getvalue(y, ix + yoffset) # ignore y points outside quadrant visible quadrant xi < xl[1] + quadrants[i][1][1] * (xl[2] - xl[1]) && continue xi > xl[1] + quadrants[i][1][2] * (xl[2] - xl[1]) && continue From d3665684170106d4c42d8431e8d01c4af462b738 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Thu, 30 Oct 2025 10:44:46 +0100 Subject: [PATCH 14/37] cleanup StatsPlots --- StatsPlots/ext/InteractExt.jl | 2 +- StatsPlots/src/bar.jl | 2 +- StatsPlots/src/boxplot.jl | 10 +++++----- StatsPlots/src/cornerplot.jl | 4 ++-- StatsPlots/src/corrplot.jl | 6 +++--- StatsPlots/src/dotplot.jl | 8 ++++---- StatsPlots/src/violin.jl | 8 ++++---- 7 files changed, 20 insertions(+), 20 deletions(-) diff --git a/StatsPlots/ext/InteractExt.jl b/StatsPlots/ext/InteractExt.jl index 55fc708a7..51899e0cc 100644 --- a/StatsPlots/ext/InteractExt.jl +++ b/StatsPlots/ext/InteractExt.jl @@ -78,7 +78,7 @@ function StatsPlots.dataviewer(t; throttle = 0.1, nbins = 30, nbins_range = 1:10 # grouping kwarg has_by = by_toggle[] && !isempty(by[]) - by_tup = Tuple(getindex(&dict, b) for b in by[]) + by_tup = Tuple(PlotsBase.Commons._getvalue(&dict, b) for b in by[]) has_by && (kwargs[:group] = NamedTuple{Tuple(by[])}(by_tup)) # label kwarg diff --git a/StatsPlots/src/bar.jl b/StatsPlots/src/bar.jl index 2cde22c35..d8bb74926 100644 --- a/StatsPlots/src/bar.jl +++ b/StatsPlots/src/bar.jl @@ -38,7 +38,7 @@ grouped_xy(y::AbstractArray) = 1:size(y, 1), y bar_width := bws * clamp(1 - spacing, 0, 1) xmat = zeros(nr, nc) for r in 1:nr - bw = getindex(bws, r) + bw = PlotsBase.Commons._getvalue(bws, r) farleft = xnums[r] - 0.5 * (bw * nc) for c in 1:nc xmat[r, c] = farleft + 0.5bw + (c - 1) * bw diff --git a/StatsPlots/src/boxplot.jl b/StatsPlots/src/boxplot.jl index 1bf35109b..8f48ba5fc 100644 --- a/StatsPlots/src/boxplot.jl +++ b/StatsPlots/src/boxplot.jl @@ -20,7 +20,7 @@ notch_width(q2, q4, N) = 1.58 * (q4 - q2) / sqrt(N) x = if step(x) == first(x) == 1 plotattributes[:series_plotindex] else - [getindex(x, plotattributes[:series_plotindex])] + [PlotsBase.Commons._getvalue(x, plotattributes[:series_plotindex])] end end xsegs, ysegs = PlotsBase.Segments(), PlotsBase.Segments() @@ -34,7 +34,7 @@ notch_width(q2, q4, N) = 1.58 * (q4 - q2) / sqrt(N) ww = whisker_width ≡ :match ? bw : whisker_width ≡ :half ? bw / 2 : whisker_width for (i, glabel) in enumerate(sort(glabels; by = sort_labels_by)) # filter y - values = y[filter(i -> getindex(x, i) == glabel, 1:length(y))] + values = y[filter(i -> PlotsBase.Commons._getvalue(x, i) == glabel, 1:length(y))] # compute quantiles q1, q2, q3, q4, q5 = quantile(values, range(0, stop = 1, length = 5)) @@ -50,8 +50,8 @@ notch_width(q2, q4, N) = 1.58 * (q4 - q2) / sqrt(N) # make the shape center = PlotsBase.discrete_value!(plotattributes, :x, glabel)[1] + xshift - hw = 0.5getindex(bw, i) # Box width - HW = 0.5getindex(ww, i) # Whisker width + hw = 0.5 * PlotsBase.Commons._getvalue(bw, i) # Box width + HW = 0.5 * PlotsBase.Commons._getvalue(ww, i) # Whisker width l, m, r = center - hw, center, center + hw lw, rw = center - HW, center + HW @@ -246,7 +246,7 @@ recipetype(::Val{:groupedboxplot}, args...) = GroupedBoxplot(args) bar_width := bws * clamp(1 - spacing, 0, 1) for i in 1:n groupinds = idxs[i] - Δx = getindex(bws, i) * (i - (n + 1) / 2) + Δx = PlotsBase.Commons._getvalue(bws, i) * (i - (n + 1) / 2) x[groupinds] .+= Δx end end diff --git a/StatsPlots/src/cornerplot.jl b/StatsPlots/src/cornerplot.jl index 584868986..7a9827deb 100644 --- a/StatsPlots/src/cornerplot.jl +++ b/StatsPlots/src/cornerplot.jl @@ -101,11 +101,11 @@ recipetype(::Val{:cornerplot}, args...) = CornerPlot(args) ticks := :auto if i == N xformatter := :auto - xguide := getindex(labs, j) + xguide := PlotsBase.Commons._getvalue(labs, j) end if j == 1 yformatter := :auto - yguide := getindex(labs, i) + yguide := PlotsBase.Commons._getvalue(labs, i) end seriestype := :scatter subplot := indices[i + 1 - k, j] diff --git a/StatsPlots/src/corrplot.jl b/StatsPlots/src/corrplot.jl index 7bc88cad8..f411f76d9 100644 --- a/StatsPlots/src/corrplot.jl +++ b/StatsPlots/src/corrplot.jl @@ -32,11 +32,11 @@ Meant to be overloaded by other types! to_corrplot_matrix(x) = x function update_ticks_guides(d::KW, labs, i, j, n) - # d[:title] = (i==1 ? getindex(labs,j) : "") + # d[:title] = (i==1 ? PlotsBase.Commons._getvalue(labs,j) : "") # d[:xticks] = (i==n) - d[:xguide] = (i == n ? getindex(labs, j) : "") + d[:xguide] = (i == n ? PlotsBase.Commons._getvalue(labs, j) : "") # d[:yticks] = (j==1) - return d[:yguide] = (j == 1 ? getindex(labs, i) : "") + return d[:yguide] = (j == 1 ? PlotsBase.Commons._getvalue(labs, i) : "") end @recipe function f(cp::CorrPlot) diff --git a/StatsPlots/src/dotplot.jl b/StatsPlots/src/dotplot.jl index 5cafa7379..c1d5eaf7d 100644 --- a/StatsPlots/src/dotplot.jl +++ b/StatsPlots/src/dotplot.jl @@ -7,7 +7,7 @@ if step(x) == first(x) == 1 x = plotattributes[:series_plotindex] else - x = [getindex(x, plotattributes[:series_plotindex])] + x = [PlotsBase.Commons._getvalue(x, plotattributes[:series_plotindex])] end end @@ -23,10 +23,10 @@ for (i, grouplabel) in enumerate(grouplabels) # filter y - groupy = y[filter(i -> getindex(x, i) == grouplabel, 1:length(y))] + groupy = y[filter(i -> PlotsBase.Commons._getvalue(x, i) == grouplabel, 1:length(y))] center = PlotsBase.discrete_value!(plotattributes, :x, grouplabel)[1] - halfwidth = 0.5getindex(barwidth, i) + halfwidth = 0.5PlotsBase.Commons._getvalue(barwidth, i) offsets = getoffsets(halfwidth, groupy) @@ -103,7 +103,7 @@ recipetype(::Val{:groupeddotplot}, args...) = GroupedDotplot(args) bar_width := bws * clamp(1 - spacing, 0, 1) for i in 1:n groupinds = idxs[i] - Δx = getindex(bws, i) * (i - (n + 1) / 2) + Δx = PlotsBase.Commons._getvalue(bws, i) * (i - (n + 1) / 2) x[groupinds] .+= Δx end end diff --git a/StatsPlots/src/violin.jl b/StatsPlots/src/violin.jl index eadf71df9..e2202863b 100644 --- a/StatsPlots/src/violin.jl +++ b/StatsPlots/src/violin.jl @@ -42,7 +42,7 @@ get_quantiles(n::Int) = range(0, 1, length = n + 2)[2:(end - 1)] x = if step(x) == first(x) == 1 plotattributes[:series_plotindex] else - [getindex(x, plotattributes[:series_plotindex])] + [PlotsBase.Commons._getvalue(x, plotattributes[:series_plotindex])] end end xsegs, ysegs = PlotsBase.Segments(), PlotsBase.Segments() @@ -53,7 +53,7 @@ get_quantiles(n::Int) = range(0, 1, length = n + 2)[2:(end - 1)] bw == nothing && (bw = 0.8) msc = plotattributes[:markerstrokecolor] for (i, glabel) in enumerate(glabels) - fy = y[filter(i -> getindex(x, i) == glabel, 1:length(y))] + fy = y[filter(i -> PlotsBase.Commons._getvalue(x, i) == glabel, 1:length(y))] widths, centers = violin_coords( fy, trim = trim, @@ -63,7 +63,7 @@ get_quantiles(n::Int) = range(0, 1, length = n + 2)[2:(end - 1)] isempty(widths) && continue # normalize - hw = 0.5getindex(bw, i) + hw = 0.5PlotsBase.Commons._getvalue(bw, i) widths = hw * widths / PlotsBase.ignorenan_maximum(widths) # make the violin @@ -202,7 +202,7 @@ recipetype(::Val{:groupedviolin}, args...) = GroupedViolin(args) bar_width := bws * clamp(1 - spacing, 0, 1) for i in 1:n groupinds = idxs[i] - Δx = getindex(bws, i) * (i - (n + 1) / 2) + Δx = PlotsBase.Commons._getvalue(bws, i) * (i - (n + 1) / 2) x[groupinds] .+= Δx end end From 51798a064f94c14d1117255b34515f8c1885b782 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Thu, 30 Oct 2025 11:31:00 +0100 Subject: [PATCH 15/37] fix lens recipe --- PlotsBase/ext/GRExt.jl | 2 +- PlotsBase/src/Commons/Commons.jl | 4 ++-- PlotsBase/src/DataSeries.jl | 1 + PlotsBase/src/pipeline.jl | 8 +++----- StatsPlots/src/StatsPlots.jl | 2 +- 5 files changed, 8 insertions(+), 9 deletions(-) diff --git a/PlotsBase/ext/GRExt.jl b/PlotsBase/ext/GRExt.jl index 911936a41..c87a05d60 100644 --- a/PlotsBase/ext/GRExt.jl +++ b/PlotsBase/ext/GRExt.jl @@ -1,6 +1,6 @@ module GRExt -import PlotsBase: PlotsBase, PrecompileTools, RecipesPipeline, _cycle +import PlotsBase: PlotsBase, PrecompileTools, RecipesPipeline import NaNMath import GR diff --git a/PlotsBase/src/Commons/Commons.jl b/PlotsBase/src/Commons/Commons.jl index c0de9465f..3383a4ad1 100644 --- a/PlotsBase/src/Commons/Commons.jl +++ b/PlotsBase/src/Commons/Commons.jl @@ -133,14 +133,14 @@ include("layouts.jl") function _getvalue(val, args...) return val end -function _getvalue(val::Union{AVec, ColorGradient, RecipesBase.CyclingAttribute}, i, args...) +function _getvalue(val::Union{AVec, PlotUtils.AbstractColorList, RecipesBase.CyclingAttribute}, i, args...) return val[i] end function _getvalue(val::AMat, args...) return val[args...] end -function _getattr(plotattr::AKW, key::Symbol, i = 1) +function _getattr(plotattr::Union{AKW, AbstractLayout}, key::Symbol, i = 1) attr = plotattr[key] return if attr isa AVec getindex(attr, i) diff --git a/PlotsBase/src/DataSeries.jl b/PlotsBase/src/DataSeries.jl index 4663f4a68..368c11f83 100644 --- a/PlotsBase/src/DataSeries.jl +++ b/PlotsBase/src/DataSeries.jl @@ -41,6 +41,7 @@ end () end +Base.iterate(series::Series) = Base.iterate(series.plotattributes) Base.getindex(series::Series, k::Symbol) = series.plotattributes[k] Base.setindex!(series::Series, v, k::Symbol) = (series.plotattributes[k] = v) Base.get(series::Series, k::Symbol, v) = get(series.plotattributes, k, v) diff --git a/PlotsBase/src/pipeline.jl b/PlotsBase/src/pipeline.jl index 095d49649..ea4855902 100644 --- a/PlotsBase/src/pipeline.jl +++ b/PlotsBase/src/pipeline.jl @@ -243,11 +243,9 @@ function _subplot_setup(plt::Plot, plotattributes::AKW, kw_list::Vector{KW}) for kw in kw_list # get the Subplot object to which the series belongs. sps = get(kw, :subplot, :auto) - subplots = sps ≡ :auto ? plt.subplots : _getvalue(plt.subplots, sps) - sp = get_subplot( - plt, - getindex(RecipesBase.cycle(subplots), series_idx(kw_list, kw)), - ) + subplots = makevec(sps ≡ :auto ? plt.subplots : _getvalue(plt.subplots, sps)) + sidx = series_idx(kw_list, kw) + sp = getindex(RecipesBase.cycle(subplots), sidx) kw[:subplot] = sp # extract subplot/axis attributes from kw and add to sp_attr diff --git a/StatsPlots/src/StatsPlots.jl b/StatsPlots/src/StatsPlots.jl index 36300e2a0..e5a5f2a23 100644 --- a/StatsPlots/src/StatsPlots.jl +++ b/StatsPlots/src/StatsPlots.jl @@ -4,7 +4,7 @@ using Reexport import RecipesBase: recipetype using RecipesPipeline @reexport using PlotsBase -import PlotsBase.Commons: _cycle, mm +import PlotsBase.Commons: mm using LinearAlgebra: eigen, diagm using Distributions From f99729f1b77caabaf3a838c09716e277a4f881b2 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Thu, 30 Oct 2025 11:57:15 +0100 Subject: [PATCH 16/37] fix color handling of series --- PlotsBase/ext/GRExt.jl | 10 +++++----- PlotsBase/src/DataSeries.jl | 14 ++++++++++++++ PlotsBase/src/examples.jl | 1 + 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/PlotsBase/ext/GRExt.jl b/PlotsBase/ext/GRExt.jl index c87a05d60..48b14c20d 100644 --- a/PlotsBase/ext/GRExt.jl +++ b/PlotsBase/ext/GRExt.jl @@ -331,11 +331,11 @@ function gr_getcolorind(c) return convert(Int, GR.inqcolorfromrgb(red(c), green(c), blue(c))) end -gr_set_linecolor(c) = GR.setlinecolorind(gr_getcolorind(_getvalue(c, 1))) -gr_set_fillcolor(c) = GR.setfillcolorind(gr_getcolorind(_getvalue(c, 1))) -gr_set_markercolor(c) = GR.setmarkercolorind(gr_getcolorind(_getvalue(c, 1))) -gr_set_bordercolor(c) = GR.setbordercolorind(gr_getcolorind(_getvalue(c, 1))) -gr_set_textcolor(c) = GR.settextcolorind(gr_getcolorind(_getvalue(c, 1))) +gr_set_linecolor(c::Colorant) = GR.setlinecolorind(gr_getcolorind(c)) +gr_set_fillcolor(c::Colorant) = GR.setfillcolorind(gr_getcolorind(c)) +gr_set_markercolor(c::Colorant) = GR.setmarkercolorind(gr_getcolorind(c)) +gr_set_bordercolor(c::Colorant) = GR.setbordercolorind(gr_getcolorind(c)) +gr_set_textcolor(c::Colorant) = GR.settextcolorind(gr_getcolorind(c)) gr_set_transparency(α::Real) = GR.settransparency(clamp(α, 0, 1)) gr_set_transparency(::Nothing) = GR.settransparency(1) gr_set_transparency(c, α) = gr_set_transparency(α) diff --git a/PlotsBase/src/DataSeries.jl b/PlotsBase/src/DataSeries.jl index 368c11f83..f8c76bee2 100644 --- a/PlotsBase/src/DataSeries.jl +++ b/PlotsBase/src/DataSeries.jl @@ -42,11 +42,25 @@ end end Base.iterate(series::Series) = Base.iterate(series.plotattributes) +Base.iterate(series::Series, state) = Base.iterate(series.plotattributes, state) +Base.length(series::Series) = Base.length(series.plotattributes) Base.getindex(series::Series, k::Symbol) = series.plotattributes[k] Base.setindex!(series::Series, v, k::Symbol) = (series.plotattributes[k] = v) Base.get(series::Series, k::Symbol, v) = get(series.plotattributes, k, v) Base.push!(series::Series, args...) = extend_series!(series, args...) Base.append!(series::Series, args...) = extend_series!(series, args...) +function Commons._getattr(series::Series, key::Symbol, i = 1) + attr = series[key] + return if attr isa PlotUtils.AbstractColorList + getindex(attr, series[:series_index]) + elseif attr isa AVec + attr[i] + elseif attr isa AMat + getindex(attr, :, i) + else + attr + end +end should_add_to_legend(series::Series) = series.plotattributes[:primary] && diff --git a/PlotsBase/src/examples.jl b/PlotsBase/src/examples.jl index a211a9396..4fade4ec4 100644 --- a/PlotsBase/src/examples.jl +++ b/PlotsBase/src/examples.jl @@ -235,6 +235,7 @@ const _examples = PlotExample[ to the plots. """, quote + # TODO: broken in plotly plot( PlotsBase.fakedata(100, 10), layout = 4, From 98ee31bb2443629f1e526931d2d40e86bc2dfa93 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Mon, 3 Nov 2025 11:54:58 +0100 Subject: [PATCH 17/37] enable scalar cycling --- RecipesBase/src/RecipesBase.jl | 9 +++++++-- RecipesBase/test/test_api.jl | 8 ++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/RecipesBase/src/RecipesBase.jl b/RecipesBase/src/RecipesBase.jl index e516f8fe7..a1982b864 100644 --- a/RecipesBase/src/RecipesBase.jl +++ b/RecipesBase/src/RecipesBase.jl @@ -66,7 +66,12 @@ struct CyclingAttribute{T} value::T end +const CyclingContainerTypes = Union{AbstractArray,Tuple} + function Base.getindex(c::CyclingAttribute, args...) + return c.value +end +function Base.getindex(c::CyclingAttribute{<:CyclingContainerTypes}, args...) args = map(enumerate(args)) do (i, arg) if arg isa Number return mod1(arg, size(c.value, i)) @@ -77,8 +82,8 @@ function Base.getindex(c::CyclingAttribute, args...) return Base.getindex(c.value, args...) end -Base.getindex(c::CyclingAttribute, i::Int) = Base.getindex(c.value, mod1(i, length(c.value))) -Base.getindex(c::CyclingAttribute, i::StepRange) = map(i) do j +Base.getindex(c::CyclingAttribute{<:CyclingContainerTypes}, i::Int) = Base.getindex(c.value, mod1(i, length(c.value))) +Base.getindex(c::CyclingAttribute{<:CyclingContainerTypes}, i::StepRange) = map(i) do j Base.getindex(c.value, mod1(j, length(c.value))) end diff --git a/RecipesBase/test/test_api.jl b/RecipesBase/test/test_api.jl index 7d5c31b92..7be76a703 100644 --- a/RecipesBase/test/test_api.jl +++ b/RecipesBase/test/test_api.jl @@ -19,4 +19,12 @@ using RecipesBase, Test @test c2[:, 1] == [:red, :blue] @test c2[3, :] == [:red, :green] @test c2[:, 3] == [:red, :blue] + c3 = cycle(:blue) + @test c3[1] == :blue + @test c3[2] == :blue + c4 = cycle((1,2)) + @test c4[1] == 1 + @test c4[2] == 2 + @test c4[3] == 1 + @test c4[4] == 2 end From 3dc32e6be274e2964856bdfbc9bb91153cd09489 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Mon, 3 Nov 2025 12:11:48 +0100 Subject: [PATCH 18/37] improve GraphRecipes tests --- GraphRecipes/test/functions.jl | 4 + GraphRecipes/test/runtests.jl | 138 +++++++++++++-------------------- 2 files changed, 57 insertions(+), 85 deletions(-) diff --git a/GraphRecipes/test/functions.jl b/GraphRecipes/test/functions.jl index 88377a5cc..dab6dfc5f 100644 --- a/GraphRecipes/test/functions.jl +++ b/GraphRecipes/test/functions.jl @@ -1,3 +1,7 @@ +using AbstractTrees +using StableRNGs +using GraphRecipes.Graphs + function random_labelled_graph() n = 15 rng = StableRNG(1) diff --git a/GraphRecipes/test/runtests.jl b/GraphRecipes/test/runtests.jl index 69702a083..879e72b17 100644 --- a/GraphRecipes/test/runtests.jl +++ b/GraphRecipes/test/runtests.jl @@ -1,19 +1,16 @@ using VisualRegressionTests using AbstractTrees using LinearAlgebra -using GraphRecipes +using Logging using GraphRecipes using SparseArrays using ImageMagick using StableRNGs -using Logging using Graphs using Plots using Test using Gtk # for popup -const PlotsBase = Plots.PlotsBase - isci() = get(ENV, "CI", "false") == "true" itol(tol = nothing) = something(tol, isci() ? 1.0e-3 : 1.0e-5) @@ -22,45 +19,31 @@ include("parse_readme.jl") default(show = false, reuse = true) -@testset "functions" begin - rng = StableRNG(1) - for method in keys(GraphRecipes._graph_funcs) - method ≡ :spectral && continue # FIXME - dat = if (inp = GraphRecipes._graph_inputs[method]) ≡ :adjmat - [ - 0 1 1 - 1 0 1 - 1 1 0 - ] - elseif inp ≡ :sourcedestiny - Symmetric(sparse(rand(rng, 0:1, 8, 8))) - elseif inp ≡ :adjlist - dat = [ - 0 1 1 0 0 0 0 0 0 0 - 0 0 0 0 1 1 0 0 0 0 - 0 0 0 1 0 0 1 0 1 0 - 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 1 0 1 - 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 - ] +cd(joinpath(@__DIR__, "..", "assets")) do + figure_files = readdir() + @testset "$figure_file" for figure_file in figure_files + figure = splitext(figure_file)[1] + if figure == "julia_type_tree" + if VERSION >= v"1.11" # julia 1.11 introduced Core.BFloat16 + @plottest julia_type_tree() "julia_type_tree.png" popup = !isci() tol = itol() + end else - @error "wrong input $inp" + @plottest getproperty(@__MODULE__, Symbol(figure))() figure_file popup = !isci() tol = + itol() end - pl = graphplot(dat; method) - @test pl isa PlotsBase.Plot + end + + @testset "README" begin + @plottest julia_logo_pun() "readme_julia_logo_pun.png" popup = !isci() tol = itol() end end @testset "issues" begin @testset "143" begin g = SimpleGraph(7) + add_edge!(g, 2, 3) add_edge!(g, 3, 4) - @test g.ne == 2 al = GraphRecipes.get_adjacency_list(g) @test isempty(al[1]) @@ -96,25 +79,25 @@ end @testset "180" begin rng = StableRNG(1) mat = Symmetric(sparse(rand(rng, 0:1, 8, 8))) - graphplot(mat; method = :arcdiagram, rng) + graphplot(mat, method = :arcdiagram, rng = rng) end end @testset "utils.jl" begin rng = StableRNG(1) - @test GraphRecipes.directed_curve(0.0, 1.0, 0.0, 1.0; rng) == - GraphRecipes.directed_curve(0, 1, 0, 1; rng) + @test GraphRecipes.directed_curve(0.0, 1.0, 0.0, 1.0, rng = rng) == + GraphRecipes.directed_curve(0, 1, 0, 1, rng = rng) - @test GraphRecipes.isnothing(nothing) == PlotsBase.isnothing(nothing) - @test GraphRecipes.isnothing(missing) == PlotsBase.isnothing(missing) - @test GraphRecipes.isnothing(NaN) == PlotsBase.isnothing(NaN) - @test GraphRecipes.isnothing(0) == PlotsBase.isnothing(0) - @test GraphRecipes.isnothing(1) == PlotsBase.isnothing(1) - @test GraphRecipes.isnothing(0.0) == PlotsBase.isnothing(0.0) - @test GraphRecipes.isnothing(1.0) == PlotsBase.isnothing(1.0) + @test GraphRecipes.isnothing(nothing) == Plots.isnothing(nothing) + @test GraphRecipes.isnothing(missing) == Plots.isnothing(missing) + @test GraphRecipes.isnothing(NaN) == Plots.isnothing(NaN) + @test GraphRecipes.isnothing(0) == Plots.isnothing(0) + @test GraphRecipes.isnothing(1) == Plots.isnothing(1) + @test GraphRecipes.isnothing(0.0) == Plots.isnothing(0.0) + @test GraphRecipes.isnothing(1.0) == Plots.isnothing(1.0) for (s, e) in [(rand(rng), rand(rng)) for i in 1:100] - @test GraphRecipes.partialcircle(s, e) == PlotsBase.partialcircle(s, e) + @test GraphRecipes.partialcircle(s, e) == Plots.partialcircle(s, e) end @testset "nearest_intersection" begin @@ -144,52 +127,37 @@ end # checking that they don't error. Also, test all of the different aliases. @testset "Aliases" begin A = [1 0 1 0; 0 0 1 1; 1 1 1 1; 0 0 1 1] - graphplot(A; markercolor = :red, markershape = :rect, markersize = 0.5, rng) - graphplot(A; nodeweights = 1:4, rng) - graphplot(A; curvaturescalar = 0, rng) - graphplot(A; el = Dict((1, 2) => ""), elb = true, rng) - graphplot(A; ew = (s, d, w) -> 3, rng) - graphplot(A; ses = 0.5, rng) + graphplot(A, markercolor = :red, markershape = :rect, markersize = 0.5, rng = rng) + graphplot(A, nodeweights = 1:4, rng = rng) + graphplot(A, curvaturescalar = 0, rng = rng) + graphplot(A, el = Dict((1, 2) => ""), elb = true, rng = rng) + graphplot(A, ew = (s, d, w) -> 3, rng = rng) + graphplot(A, ses = 0.5, rng = rng) end end -cd(joinpath(@__DIR__, "..", "assets")) do - @testset "FIGURES" begin - @plottest random_labelled_graph() "random_labelled_graph.png" popup = !isci() tol = - itol() - - @plottest random_3d_graph() "random_3d_graph.png" popup = !isci() tol = itol() +# ----------------------------------------- +# marginalhist - @plottest light_graphs() "light_graphs.png" popup = !isci() tol = itol() +# using Distributions +# n = 1000 +# x = rand(RNG, Gamma(2), n) +# y = -0.5x + randn(RNG, n) +# marginalhist(x, y) - @plottest directed() "directed.png" popup = !isci() tol = itol() +# ----------------------------------------- +# portfolio composition map - @plottest marker_properties() "marker_properties.png" popup = !isci() tol = itol() +# # fake data +# tickers = ["IBM", "Google", "Apple", "Intel"] +# N = 10 +# D = length(tickers) +# weights = rand(RNG, N, D) +# weights ./= sum(weights, 2) +# returns = sort!((1:N) + D*randn(RNG, N)) - @plottest edgelabel() "edgelabel.png" popup = !isci() tol = itol() +# # plot it +# portfoliocomposition(weights, returns, labels = tickers') - @plottest selfedges() "selfedges.png" popup = !isci() tol = itol() - - @plottest multigraphs() "multigraphs.png" popup = !isci() tol = itol() - - @plottest arc_chord_diagrams() "arc_chord_diagrams.png" popup = !isci() tol = itol() - - @plottest ast_example() "ast_example.png" popup = !isci() tol = itol() - - @plottest julia_type_tree() "julia_type_tree.png" popup = !isci() tol = itol(2.0e-2) - @plottest julia_dict_tree() "julia_dict_tree.png" popup = !isci() tol = itol() - - @plottest funky_edge_and_marker_args() "funky_edge_and_marker_args.png" popup = - !isci() tol = itol() - - @plottest custom_nodeshapes_single() "custom_nodeshapes_single.png" popup = !isci() tol = - itol() - - @plottest custom_nodeshapes_various() "custom_nodeshapes_various.png" popup = - !isci() tol = itol() - end - - @testset "README" begin - @plottest julia_logo_pun() "readme_julia_logo_pun.png" popup = !isci() tol = itol() - end -end +# ----------------------------------------- +# From 2956dc7c8c9cca020572f26350929a06c877f4ce Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Mon, 3 Nov 2025 12:12:49 +0100 Subject: [PATCH 19/37] use using where possible in Subplots --- PlotsBase/src/Subplots.jl | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/PlotsBase/src/Subplots.jl b/PlotsBase/src/Subplots.jl index a849cf2ee..1a189c86a 100644 --- a/PlotsBase/src/Subplots.jl +++ b/PlotsBase/src/Subplots.jl @@ -7,14 +7,15 @@ export Subplot, titlefont, get_series_color, needs_any_3d_axes -import PlotsBase -import ..RecipesPipeline: RecipesPipeline, DefaultsDict -import ..RecipesBase: AbstractLayout, AbstractBackend -import ..Commons: BoundingBox -import ..DataSeries: Series -import ..PlotUtils +using PlotsBase: PlotsBase +using ..RecipesPipeline: RecipesPipeline, DefaultsDict +using ..Commons: BoundingBox +using ..DataSeries: Series +using ..PlotUtils + +using ..RecipesBase: RecipesBase, AbstractLayout, AbstractBackend using ..Commons using ..Fonts using ..Ticks @@ -91,6 +92,8 @@ get_series_color(c, sp::Subplot, n::Int, seriestype) = Commons.like_surface(seriestype) ? PlotsBase.cgrad() : _getattr(sp, :color_palette, n) elseif isa(c, Int) _getattr(sp, :color_palette, c) +elseif c isa RecipesBase.CyclingAttribute + c[n] else c end |> PlotsBase.plot_color From c4be23f442a7deb27f4364538218141efd463707 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Mon, 3 Nov 2025 12:24:23 +0100 Subject: [PATCH 20/37] fix explicit series attribute retrieval --- PlotsBase/src/DataSeries.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PlotsBase/src/DataSeries.jl b/PlotsBase/src/DataSeries.jl index f8c76bee2..0e7f6bde9 100644 --- a/PlotsBase/src/DataSeries.jl +++ b/PlotsBase/src/DataSeries.jl @@ -49,10 +49,10 @@ Base.setindex!(series::Series, v, k::Symbol) = (series.plotattributes[k] = v) Base.get(series::Series, k::Symbol, v) = get(series.plotattributes, k, v) Base.push!(series::Series, args...) = extend_series!(series, args...) Base.append!(series::Series, args...) = extend_series!(series, args...) -function Commons._getattr(series::Series, key::Symbol, i = 1) +function Commons._getattr(series::Series, key::Symbol, i::Union{Nothing,Int} = nothing) attr = series[key] return if attr isa PlotUtils.AbstractColorList - getindex(attr, series[:series_index]) + getindex(attr, i === nothing ? series[:series_index] : i) elseif attr isa AVec attr[i] elseif attr isa AMat From 53378b2377c80dabc813bd0c4ec181602581af4d Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Mon, 3 Nov 2025 12:27:59 +0100 Subject: [PATCH 21/37] fix use of non-existent markerstrokesize --- GraphRecipes/src/graphs.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/GraphRecipes/src/graphs.jl b/GraphRecipes/src/graphs.jl index 2f1d2f1a5..65a2576c6 100644 --- a/GraphRecipes/src/graphs.jl +++ b/GraphRecipes/src/graphs.jl @@ -1132,7 +1132,7 @@ more details. colorbar_entry --> false markersize := 0 markeralpha := 0 - markerstrokesize := 0 + makerstrokewidth := 0 isnothing(edgelabel) || (annotations --> edge_label_array) else seriestype := :scatter @@ -1153,7 +1153,7 @@ more details. colorbar_entry --> false markersize := 0 markeralpha := 0 - markerstrokesize := 0 + makerstrokewidth := 0 annotations --> edge_label_array end end From 64d3a975c0a727e6aeb06b587dcffb338f03487e Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Mon, 3 Nov 2025 16:20:11 +0100 Subject: [PATCH 22/37] fix line_z, etc --- PlotsBase/src/Commons/attrs.jl | 19 ++++++++++--------- PlotsBase/src/DataSeries.jl | 11 ++++++----- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/PlotsBase/src/Commons/attrs.jl b/PlotsBase/src/Commons/attrs.jl index c7dae3b80..2d5f68719 100644 --- a/PlotsBase/src/Commons/attrs.jl +++ b/PlotsBase/src/Commons/attrs.jl @@ -1139,15 +1139,16 @@ has_black_border_for_default(st::Function) = has_black_border_for_default(st::Symbol) = like_histogram(st) || st in (:hexbin, :bar, :shape) -ensure_gradient!(plotattributes::AKW, csym::Symbol, asym::Symbol) = -if plotattributes[csym] isa ColorPalette - α = nothing - plotattributes[asym] isa AbstractVector || (α = plotattributes[asym]) - plotattributes[csym] = cgrad(plotattributes[csym], categorical = true, alpha = α) -elseif !(plotattributes[csym] isa ColorGradient) - plotattributes[csym] = - typeof(plotattributes[asym]) <: AbstractVector ? cgrad() : - cgrad(alpha = plotattributes[asym]) +function ensure_gradient!(plotattributes::AKW, csym::Symbol, asym::Symbol) + return if plotattributes[csym] isa ColorPalette + α = nothing + plotattributes[asym] isa AbstractVector || (α = plotattributes[asym]) + plotattributes[csym] = cgrad(alpha = α) + elseif !(plotattributes[csym] isa PlotUtils.AbstractColorList) + plotattributes[csym] = + typeof(plotattributes[asym]) <: AbstractVector ? cgrad() : + cgrad(alpha = plotattributes[asym]) + end end # get a good default linewidth... 0 for surface and heatmaps diff --git a/PlotsBase/src/DataSeries.jl b/PlotsBase/src/DataSeries.jl index 0e7f6bde9..7d798eedd 100644 --- a/PlotsBase/src/DataSeries.jl +++ b/PlotsBase/src/DataSeries.jl @@ -49,10 +49,11 @@ Base.setindex!(series::Series, v, k::Symbol) = (series.plotattributes[k] = v) Base.get(series::Series, k::Symbol, v) = get(series.plotattributes, k, v) Base.push!(series::Series, args...) = extend_series!(series, args...) Base.append!(series::Series, args...) = extend_series!(series, args...) -function Commons._getattr(series::Series, key::Symbol, i::Union{Nothing,Int} = nothing) +function Commons._getattr(series::Series, key::Symbol, i::Union{Nothing, Number} = nothing) attr = series[key] - return if attr isa PlotUtils.AbstractColorList - getindex(attr, i === nothing ? series[:series_index] : i) + return if attr isa PlotUtils.AbstractColorList && i !== nothing + clims = get_clims(series) + get(attr, i, clims) elseif attr isa AVec attr[i] elseif attr isa AMat @@ -145,12 +146,12 @@ for comp in (:line, :fill, :marker) i::Integer = 1, s::Symbol = :identity, ) - c = _getattr(series, $Symbol($compcolor), i) # series[:linecolor], series[:fillcolor], series[:markercolor] z = _getattr(series, $Symbol($comp_z), i) # series[:line_z], series[:fill_z], series[:marker_z] return if z ≡ nothing + c = _getattr(series, $Symbol($compcolor), i) # series[:linecolor], series[:fillcolor], series[:markercolor] isa(c, PlotUtils.ColorGradient) ? c : PlotUtils.plot_color(c) else - grad = Commons.get_gradient(c) + grad = _getattr(series, $Symbol($compcolor)) # series[:linecolor], series[:fillcolor], series[:markercolor] if s ≡ :identity get(grad, z, (cmin, cmax)) else From 4535f034be4a36c77cea54b1b48a7cbeb9b3de5b Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Mon, 3 Nov 2025 17:06:55 +0100 Subject: [PATCH 23/37] fix GraphRecipes tests --- GraphRecipes/src/GraphRecipes.jl | 1 + GraphRecipes/src/utils.jl | 9 +-------- GraphRecipes/test/parse_readme.jl | 2 +- GraphRecipes/test/runtests.jl | 27 +++++++++++++-------------- PlotsBase/src/DataSeries.jl | 4 ++-- 5 files changed, 18 insertions(+), 25 deletions(-) diff --git a/GraphRecipes/src/GraphRecipes.jl b/GraphRecipes/src/GraphRecipes.jl index 9147c81cc..d62ba85a0 100644 --- a/GraphRecipes/src/GraphRecipes.jl +++ b/GraphRecipes/src/GraphRecipes.jl @@ -3,6 +3,7 @@ module GraphRecipes using Graphs using PlotUtils # ColorGradient using RecipesBase +using PlotsBase: PlotsBase, partialcircle using InteractiveUtils # subtypes using LinearAlgebra diff --git a/GraphRecipes/src/utils.jl b/GraphRecipes/src/utils.jl index 0200d14fe..e1286eda7 100644 --- a/GraphRecipes/src/utils.jl +++ b/GraphRecipes/src/utils.jl @@ -261,15 +261,8 @@ function process_edge_attribute(attr, source, destiny, weights) end return attr end -# Function from Plots/src/components.jl -"get an array of tuples of points on a circle with radius `r`" -function partialcircle(start_θ, end_θ, n = 20, r = 1) - return Tuple{Float64, Float64}[ - (r * cos(u), r * sin(u)) for u in range(start_θ, stop = end_θ, length = n) - ] -end -function partialcircle(start_θ, end_θ, circle_center::Array{T, 1}, n = 20, r = 1) where {T} +function PlotsBase.Shapes.partialcircle(start_θ, end_θ, circle_center::Array{T, 1}, n = 20, r = 1) where {T} return Tuple{Float64, Float64}[ (r * cos(u) + circle_center[1], r * sin(u) + circle_center[2]) for u in range(start_θ, stop = end_θ, length = n) diff --git a/GraphRecipes/test/parse_readme.jl b/GraphRecipes/test/parse_readme.jl index dbf30f9ab..8eaa22e2a 100644 --- a/GraphRecipes/test/parse_readme.jl +++ b/GraphRecipes/test/parse_readme.jl @@ -17,4 +17,4 @@ end # the installation instructions. readme_exprs = [Meta.parse("begin $(code_blocks[i]) end") for i in 2:length(code_blocks)] -julia_logo_pun() = eval(readme_exprs[1]) +readme_julia_logo_pun() = eval(readme_exprs[1]) diff --git a/GraphRecipes/test/runtests.jl b/GraphRecipes/test/runtests.jl index 879e72b17..154ba1e52 100644 --- a/GraphRecipes/test/runtests.jl +++ b/GraphRecipes/test/runtests.jl @@ -8,6 +8,7 @@ using ImageMagick using StableRNGs using Graphs using Plots +using Plots.PlotsBase using Test using Gtk # for popup @@ -20,22 +21,20 @@ include("parse_readme.jl") default(show = false, reuse = true) cd(joinpath(@__DIR__, "..", "assets")) do - figure_files = readdir() - @testset "$figure_file" for figure_file in figure_files - figure = splitext(figure_file)[1] - if figure == "julia_type_tree" - if VERSION >= v"1.11" # julia 1.11 introduced Core.BFloat16 - @plottest julia_type_tree() "julia_type_tree.png" popup = !isci() tol = itol() + @testset "TestImages" begin + figure_files = readdir() + @testset "$figure_file" for figure_file in figure_files + figure = splitext(figure_file)[1] + if figure == "julia_type_tree" + if VERSION >= v"1.11" # julia 1.11 introduced Core.BFloat16 + @plottest julia_type_tree() "julia_type_tree.png" popup = !isci() tol = itol() + end + else + @plottest getproperty(@__MODULE__, Symbol(figure))() figure_file popup = !isci() tol = + itol() end - else - @plottest getproperty(@__MODULE__, Symbol(figure))() figure_file popup = !isci() tol = - itol() end end - - @testset "README" begin - @plottest julia_logo_pun() "readme_julia_logo_pun.png" popup = !isci() tol = itol() - end end @testset "issues" begin @@ -97,7 +96,7 @@ end @test GraphRecipes.isnothing(1.0) == Plots.isnothing(1.0) for (s, e) in [(rand(rng), rand(rng)) for i in 1:100] - @test GraphRecipes.partialcircle(s, e) == Plots.partialcircle(s, e) + @test GraphRecipes.partialcircle(s, e) == PlotsBase.partialcircle(s, e) end @testset "nearest_intersection" begin diff --git a/PlotsBase/src/DataSeries.jl b/PlotsBase/src/DataSeries.jl index 7d798eedd..9789d3701 100644 --- a/PlotsBase/src/DataSeries.jl +++ b/PlotsBase/src/DataSeries.jl @@ -51,10 +51,10 @@ Base.push!(series::Series, args...) = extend_series!(series, args...) Base.append!(series::Series, args...) = extend_series!(series, args...) function Commons._getattr(series::Series, key::Symbol, i::Union{Nothing, Number} = nothing) attr = series[key] - return if attr isa PlotUtils.AbstractColorList && i !== nothing + return if attr isa PlotUtils.ColorGradient && i !== nothing clims = get_clims(series) get(attr, i, clims) - elseif attr isa AVec + elseif (attr isa AVec || attr isa PlotUtils.ColorPalette) && i !== nothing attr[i] elseif attr isa AMat getindex(attr, :, i) From 3ab43ae72c0fb4683f07bf1e044f28574da472f8 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Mon, 3 Nov 2025 18:38:48 +0100 Subject: [PATCH 24/37] get closer to resolve slicing and cycling interaction --- PlotsBase/ext/GRExt.jl | 2 +- PlotsBase/src/Commons/Commons.jl | 3 +++ PlotsBase/test/test_misc.jl | 22 ++++++++++++---------- RecipesBase/src/RecipesBase.jl | 8 ++++++++ 4 files changed, 24 insertions(+), 11 deletions(-) diff --git a/PlotsBase/ext/GRExt.jl b/PlotsBase/ext/GRExt.jl index 48b14c20d..b2edbd11e 100644 --- a/PlotsBase/ext/GRExt.jl +++ b/PlotsBase/ext/GRExt.jl @@ -2030,7 +2030,7 @@ function gr_draw_segments(series, x, y, z, fillrange, clims) (fc = get_fillcolor(series, clims, i)) |> gr_set_fillcolor gr_set_fillstyle(get_fillstyle(series, i)) fx = _getvalue(x, vcat(rng, reverse(rng))) - fy = vcat(_getvalue(fr_from, rng), _getvalue(fr_to, reverse(rng))) + fy = vcat(_getvalue(fr_from, rng), _getvalue(RecipesBase.cycle(fr_to), reverse(rng))) gr_set_transparency(fc, get_fillalpha(series, i)) GR.fillarea(fx, fy) end diff --git a/PlotsBase/src/Commons/Commons.jl b/PlotsBase/src/Commons/Commons.jl index 3383a4ad1..d7cd1a408 100644 --- a/PlotsBase/src/Commons/Commons.jl +++ b/PlotsBase/src/Commons/Commons.jl @@ -133,6 +133,9 @@ include("layouts.jl") function _getvalue(val, args...) return val end +function _getvalue(val::RecipesBase.CyclingAttribute) + val.value +end function _getvalue(val::Union{AVec, PlotUtils.AbstractColorList, RecipesBase.CyclingAttribute}, i, args...) return val[i] end diff --git a/PlotsBase/test/test_misc.jl b/PlotsBase/test/test_misc.jl index e06c9bfea..bc2cec9ca 100644 --- a/PlotsBase/test/test_misc.jl +++ b/PlotsBase/test/test_misc.jl @@ -149,20 +149,22 @@ end @test all(RecipesPipeline.get_axis_limits(p2, :x) .== x) end -@testset "Slicing" begin +@testset "Slicing & cycling" begin @test plot(1:5, fillrange = 0)[1][1][:fillrange] == 0 data4 = rand(4, 4) mat = reshape(1:8, 2, 4) - sp = plot(data4, ribbon = (mat, mat))[1] + sp = plot(data4, ribbon = RecipesBase.cycle.((mat, mat)))[1] for i in axes(data4, 1) - for attribute in (:fillrange, :ribbon) - nt = NamedTuple{tuple(attribute)} - get_attrs(pl) = pl[1][i][attribute] - @test plot(data4; nt(0)...) |> get_attrs == 0 - @test plot(data4; nt(Ref([1, 2]))...) |> get_attrs == [1.0, 2.0] - @test plot(data4; nt(Ref([1 2]))...) |> get_attrs == (iseven(i) ? 2 : 1) - @test plot(data4; nt(Ref(mat))...) |> get_attrs == [2(i - 1) + 1, 2i] - end + get_fillrange(pl) = pl[1][i][:fillrange] + @test plot(data4; fillrange = 0) |> get_fillrange == 0 + @test plot(data4; fillrange = [1, 2]) |> get_fillrange == [1.0, 2.0] + @test plot(data4; fillrange = [1 2]) |> get_fillrange == (iseven(i) ? 2 : 1) + @test plot(data4; fillrange = mat) |> get_fillrange == [2(i - 1) + 1, 2i] + get_ribbon(pl) = pl[1][i][:ribbon] + @test plot(data4; ribbon = 0) |> get_ribbon == 0 + @test plot(data4; ribbon = RecipesBase.cycle([1, 2])) |> get_ribbon == RecipesBase.cycle([1, 2]) + @test plot(data4; ribbon = [1 2]) |> get_ribbon == (iseven(i) ? 2 : 1) + @test plot(data4; ribbon = RecipesBase.cycle(mat)) |> get_ribbon == [2(i - 1) + 1, 2i] @test sp[i][:ribbon] == ([2(i - 1) + 1, 2i], [2(i - 1) + 1, 2i]) end end diff --git a/RecipesBase/src/RecipesBase.jl b/RecipesBase/src/RecipesBase.jl index a1982b864..150b1adda 100644 --- a/RecipesBase/src/RecipesBase.jl +++ b/RecipesBase/src/RecipesBase.jl @@ -86,7 +86,15 @@ Base.getindex(c::CyclingAttribute{<:CyclingContainerTypes}, i::Int) = Base.getin Base.getindex(c::CyclingAttribute{<:CyclingContainerTypes}, i::StepRange) = map(i) do j Base.getindex(c.value, mod1(j, length(c.value))) end +Base.getindex(c::CyclingAttribute, i::StepRange) = map(i) do j + Base.getindex(c.value, mod1(j, length(c.value))) +end +for op in (:+, :-, :/, :*) + @eval Base.$op(a::CyclingAttribute, b::CyclingAttribute) = CyclingAttribute($op(a.value, b.value)) +end +Base.:-(a::CyclingAttribute) = CyclingAttribute(-a.value) +Base.:(==)(a::CyclingAttribute, b::CyclingAttribute) = a.value == b.value # -------------------------------------------------------------------------- @inline to_symbol(s::Symbol) = s From 0c1b467ff54885e370c842668fb6d3fe0c3bc4c6 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Fri, 9 Jan 2026 16:47:25 +0100 Subject: [PATCH 25/37] make more sense of ribbon tests --- PlotsBase/src/Commons/Commons.jl | 2 +- PlotsBase/src/DataSeries.jl | 3 ++- PlotsBase/src/Subplots.jl | 22 ++++++++++++---------- PlotsBase/test/test_misc.jl | 22 +++++++++++++--------- 4 files changed, 28 insertions(+), 21 deletions(-) diff --git a/PlotsBase/src/Commons/Commons.jl b/PlotsBase/src/Commons/Commons.jl index d7cd1a408..331fb8f16 100644 --- a/PlotsBase/src/Commons/Commons.jl +++ b/PlotsBase/src/Commons/Commons.jl @@ -145,7 +145,7 @@ end function _getattr(plotattr::Union{AKW, AbstractLayout}, key::Symbol, i = 1) attr = plotattr[key] - return if attr isa AVec + return if attr isa AVec || attr isa PlotUtils.AbstractColorList getindex(attr, i) elseif attr isa AMat getindex(attr, :, i) diff --git a/PlotsBase/src/DataSeries.jl b/PlotsBase/src/DataSeries.jl index 9789d3701..2dc72081c 100644 --- a/PlotsBase/src/DataSeries.jl +++ b/PlotsBase/src/DataSeries.jl @@ -51,7 +51,7 @@ Base.push!(series::Series, args...) = extend_series!(series, args...) Base.append!(series::Series, args...) = extend_series!(series, args...) function Commons._getattr(series::Series, key::Symbol, i::Union{Nothing, Number} = nothing) attr = series[key] - return if attr isa PlotUtils.ColorGradient && i !== nothing + ret = if attr isa PlotUtils.ColorGradient && i !== nothing clims = get_clims(series) get(attr, i, clims) elseif (attr isa AVec || attr isa PlotUtils.ColorPalette) && i !== nothing @@ -61,6 +61,7 @@ function Commons._getattr(series::Series, key::Symbol, i::Union{Nothing, Number} else attr end + return ret end should_add_to_legend(series::Series) = diff --git a/PlotsBase/src/Subplots.jl b/PlotsBase/src/Subplots.jl index 1a189c86a..38e68976a 100644 --- a/PlotsBase/src/Subplots.jl +++ b/PlotsBase/src/Subplots.jl @@ -87,16 +87,18 @@ Commons.get_ticks(sp::Subplot, s::Symbol) = get_ticks(sp, sp[get_attr_symbol(s, # converts a symbol or string into a Colorant or ColorGradient # and assigns a color automatically -get_series_color(c, sp::Subplot, n::Int, seriestype) = - if c ≡ :auto - Commons.like_surface(seriestype) ? PlotsBase.cgrad() : _getattr(sp, :color_palette, n) -elseif isa(c, Int) - _getattr(sp, :color_palette, c) -elseif c isa RecipesBase.CyclingAttribute - c[n] -else - c -end |> PlotsBase.plot_color +function get_series_color(c, sp::Subplot, n::Int, seriestype) + c = if c ≡ :auto + Commons.like_surface(seriestype) ? PlotsBase.cgrad() : _getattr(sp, :color_palette, n) + elseif isa(c, Int) + _getattr(sp, :color_palette, c) + elseif c isa RecipesBase.CyclingAttribute + c[n] + else + c + end + PlotsBase.plot_color(c) +end get_series_color(c::AbstractArray, sp::Subplot, n::Int, seriestype) = map(x -> get_series_color(x, sp, n, seriestype), c) diff --git a/PlotsBase/test/test_misc.jl b/PlotsBase/test/test_misc.jl index bc2cec9ca..bf8d55d1d 100644 --- a/PlotsBase/test/test_misc.jl +++ b/PlotsBase/test/test_misc.jl @@ -152,20 +152,24 @@ end @testset "Slicing & cycling" begin @test plot(1:5, fillrange = 0)[1][1][:fillrange] == 0 data4 = rand(4, 4) - mat = reshape(1:8, 2, 4) - sp = plot(data4, ribbon = RecipesBase.cycle.((mat, mat)))[1] + mat = 0.1 .* reshape(1:8, 2, 4) + # TODO: think about this case later + # sp = plot(data4, ribbon = (mat, mat))[1] for i in axes(data4, 1) + @test plot(data4)[1][i][:seriescolor] == RGBA(palette(:default)[i]) get_fillrange(pl) = pl[1][i][:fillrange] @test plot(data4; fillrange = 0) |> get_fillrange == 0 - @test plot(data4; fillrange = [1, 2]) |> get_fillrange == [1.0, 2.0] - @test plot(data4; fillrange = [1 2]) |> get_fillrange == (iseven(i) ? 2 : 1) - @test plot(data4; fillrange = mat) |> get_fillrange == [2(i - 1) + 1, 2i] + @test plot(data4; fillrange = [0.1, 0.2]) |> get_fillrange == [0.1, 0.2] + @test plot(data4; fillrange = [0.1 0.2]) |> get_fillrange == (iseven(i) ? 0.2 : 0.1) + @test plot(data4; fillrange = mat) |> get_fillrange == [0.1(2(i - 1) + 1), 0.2i] get_ribbon(pl) = pl[1][i][:ribbon] @test plot(data4; ribbon = 0) |> get_ribbon == 0 - @test plot(data4; ribbon = RecipesBase.cycle([1, 2])) |> get_ribbon == RecipesBase.cycle([1, 2]) - @test plot(data4; ribbon = [1 2]) |> get_ribbon == (iseven(i) ? 2 : 1) - @test plot(data4; ribbon = RecipesBase.cycle(mat)) |> get_ribbon == [2(i - 1) + 1, 2i] - @test sp[i][:ribbon] == ([2(i - 1) + 1, 2i], [2(i - 1) + 1, 2i]) + @test_throws BoundsError plot(data4; ribbon = [0.1,0.2]) + @test plot(data4; ribbon = RecipesBase.cycle([0.1, 0.2])) |> get_ribbon == [0.1, 0.2] + @test_throws BoundsError plot(data4; ribbon = [0.1 0.2]) + @test plot(data4; ribbon = RecipesBase.cycle([0.1 0.2])) |> get_ribbon == (iseven(i) ? 0.2 : 0.1) + @test plot(data4; ribbon = RecipesBase.cycle(mat)) |> get_ribbon == [0.1(2(i - 1) + 1), 0.2i] + # @test sp[i][:ribbon] == ([0.1(2(i - 1) + 1), 0.2i], [0.1(2(i - 1) + 1), 0.2i]) end end From e68ca43764b099f6a401326f66478c9ad9bfdec0 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Mon, 2 Feb 2026 17:58:04 +0100 Subject: [PATCH 26/37] add fix to the tests --- PlotsBase/src/pipeline.jl | 4 +++- PlotsBase/src/utils.jl | 8 +++++--- PlotsBase/test/test_misc.jl | 4 ++++ 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/PlotsBase/src/pipeline.jl b/PlotsBase/src/pipeline.jl index ea4855902..a586d179a 100644 --- a/PlotsBase/src/pipeline.jl +++ b/PlotsBase/src/pipeline.jl @@ -181,7 +181,9 @@ function RecipesPipeline.process_sliced_series_attributes!(::Plot, kw_list) # convert a ribbon into a fillrange if rib ≢ nothing make_fillrange_from_ribbon(kw) - # map fillrange if it's a Function + # # unwrap CyclingAttribute after processing + rib isa RecipesBase.CyclingAttribute && (kw[:ribbon] = rib.value) + # map fillrange if it's a Function elseif fr ≢ nothing && fr isa Function kw[:fillrange] = map(fr, kw[:x]) end diff --git a/PlotsBase/src/utils.jl b/PlotsBase/src/utils.jl index bd6c1f725..e82f80f88 100644 --- a/PlotsBase/src/utils.jl +++ b/PlotsBase/src/utils.jl @@ -160,6 +160,8 @@ function slice_arg(v::AMat, idx::Int) end slice_arg(wrapper::InputWrapper, idx) = wrapper.obj slice_arg(v::NTuple{2, AMat}, idx::Int) = slice_arg(v[1], idx), slice_arg(v[2], idx) +slice_arg(v::RecipesBase.CyclingAttribute{<:AMat}, idx::Int) = RecipesBase.cycle(slice_arg(v.value, idx)) +slice_arg(v::RecipesBase.CyclingAttribute, idx) = v slice_arg(v, idx) = v """ @@ -191,6 +193,9 @@ function _slice_series_attrs!( commandIndex::Int, ) for k in keys(_series_defaults) + # skip ribbon matrix slicing - let make_fillrange_from_ribbon handle it + # (CyclingAttribute ribbons are still sliced via slice_arg dispatch) + k ≡ :ribbon && get(plotattributes, k, nothing) isa AMat && continue haskey(plotattributes, k) && slice_arg!(plotattributes, plotattributes, k, commandIndex, false) end @@ -606,9 +611,6 @@ function with(f::Function, args...; scalefonts = nothing, kw...) for arg in args # change backend ? arg isa Symbol && if arg ∈ backends() - if (pkg = backend_package_name(arg)) ≢ nothing # :plotly - @eval Main import $pkg - end Base.invokelatest(backend, arg) end diff --git a/PlotsBase/test/test_misc.jl b/PlotsBase/test/test_misc.jl index bf8d55d1d..4fc6b62f1 100644 --- a/PlotsBase/test/test_misc.jl +++ b/PlotsBase/test/test_misc.jl @@ -1,4 +1,8 @@ # miscellaneous tests (not fitting into other test files) +using Plots +using Plots: PlotsBase, GR +using PlotsBase: JSON, RecipesPipeline +using Test @testset "Infrastructure" begin @test_nowarn JSON.parse( From 12cbab33358efd4faa3a71fa425b7f2595c49ba3 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Tue, 3 Feb 2026 14:25:03 +0100 Subject: [PATCH 27/37] Fix imports --- PlotsBase/test/test_misc.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PlotsBase/test/test_misc.jl b/PlotsBase/test/test_misc.jl index 4fc6b62f1..b84bb7445 100644 --- a/PlotsBase/test/test_misc.jl +++ b/PlotsBase/test/test_misc.jl @@ -1,6 +1,6 @@ # miscellaneous tests (not fitting into other test files) -using Plots -using Plots: PlotsBase, GR +using PlotsBase +import GR using PlotsBase: JSON, RecipesPipeline using Test From ebbc9c9f1d544926cb4465c0f9e46040c87ada33 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Tue, 3 Feb 2026 15:51:52 +0100 Subject: [PATCH 28/37] more fixes --- PlotsBase/ext/PGFPlotsXExt.jl | 16 ++++++++++++--- PlotsBase/src/Commons/Commons.jl | 6 +----- PlotsBase/src/DataSeries.jl | 5 ++++- PlotsBase/src/Subplots.jl | 6 ++++-- PlotsBase/src/recipes.jl | 34 +++++++++++++++++++------------- PlotsBase/test/test_pgfplotsx.jl | 9 +++++---- PlotsBase/test/test_utils.jl | 4 ++-- RecipesBase/src/RecipesBase.jl | 4 ++++ RecipesPipeline/src/series.jl | 1 + 9 files changed, 54 insertions(+), 31 deletions(-) diff --git a/PlotsBase/ext/PGFPlotsXExt.jl b/PlotsBase/ext/PGFPlotsXExt.jl index 1328563cf..cf2f99d86 100644 --- a/PlotsBase/ext/PGFPlotsXExt.jl +++ b/PlotsBase/ext/PGFPlotsXExt.jl @@ -1271,15 +1271,25 @@ end function pgfx_fillrange_attrs(fillrange, x, y) n = length(x) x_fill = [x; x[n:-1:1]; x[1]] - y_fill = [y; _getvalue(fillrange, n:-1:1); y[1]] + fr_vals = if fillrange isa Number + fill(fillrange, n) + else + _getvalue(fillrange, n:-1:1) + end + y_fill = [y; fr_vals; y[1]] return PGFPlotsX.Coordinates(x_fill, y_fill) end function pgfx_fillrange_attrs(fillrange, x, y, z) n = length(x) x_fill = [x; x[n:-1:1]; x[1]] - y_fill = [y; y[n:-1:1]; x[1]] - z_fill = [z; _getvalue(fillrange, n:-1:1); z[1]] + y_fill = [y; y[n:-1:1]; y[1]] + fr_vals = if fillrange isa Number + fill(fillrange, n) + else + _getvalue(fillrange, n:-1:1) + end + z_fill = [z; fr_vals; z[1]] return PGFPlotsX.Coordinates(x_fill, y_fill, z_fill) end diff --git a/PlotsBase/src/Commons/Commons.jl b/PlotsBase/src/Commons/Commons.jl index a2fdcab73..b3ae26666 100644 --- a/PlotsBase/src/Commons/Commons.jl +++ b/PlotsBase/src/Commons/Commons.jl @@ -293,11 +293,7 @@ end # helpers to figure out if there are NaN values in a list of array types anynan(i::Int, args::Tuple) = any( - a -> try - isnan(_getvalue(a, i)) - catch MethodError - false - end, args + a -> isnan(_getvalue(a, i)), args ) anynan(args::Tuple) = i -> anynan(i, args) anynan(istart::Int, iend::Int, args::Tuple) = any(anynan(args), istart:iend) diff --git a/PlotsBase/src/DataSeries.jl b/PlotsBase/src/DataSeries.jl index 2dc72081c..f1ad1ea39 100644 --- a/PlotsBase/src/DataSeries.jl +++ b/PlotsBase/src/DataSeries.jl @@ -153,7 +153,10 @@ for comp in (:line, :fill, :marker) isa(c, PlotUtils.ColorGradient) ? c : PlotUtils.plot_color(c) else grad = _getattr(series, $Symbol($compcolor)) # series[:linecolor], series[:fillcolor], series[:markercolor] - if s ≡ :identity + if !(grad isa PlotUtils.ColorGradient) + # z-coloring requires a gradient; if a plain color, just return it + PlotUtils.plot_color(grad) + elseif s ≡ :identity get(grad, z, (cmin, cmax)) else base = _log_scale_bases[s] diff --git a/PlotsBase/src/Subplots.jl b/PlotsBase/src/Subplots.jl index 38e68976a..9f6f88c9c 100644 --- a/PlotsBase/src/Subplots.jl +++ b/PlotsBase/src/Subplots.jl @@ -88,12 +88,14 @@ Commons.get_ticks(sp::Subplot, s::Symbol) = get_ticks(sp, sp[get_attr_symbol(s, # converts a symbol or string into a Colorant or ColorGradient # and assigns a color automatically function get_series_color(c, sp::Subplot, n::Int, seriestype) + # Ensure valid index (n can be 0 for non-primary series before any primary series) + idx = max(1, n) c = if c ≡ :auto - Commons.like_surface(seriestype) ? PlotsBase.cgrad() : _getattr(sp, :color_palette, n) + Commons.like_surface(seriestype) ? PlotsBase.cgrad() : _getattr(sp, :color_palette, idx) elseif isa(c, Int) _getattr(sp, :color_palette, c) elseif c isa RecipesBase.CyclingAttribute - c[n] + c[idx] else c end diff --git a/PlotsBase/src/recipes.jl b/PlotsBase/src/recipes.jl index a03d8a374..30268ae0a 100644 --- a/PlotsBase/src/recipes.jl +++ b/PlotsBase/src/recipes.jl @@ -682,24 +682,30 @@ end # create a secondary series for the markers if plotattributes[:markershape] ≢ :none + # create the primary path series first @series begin - seriestype := :scatter - x := _bin_centers(edge) - y := weights - fillrange := nothing - label := "" - primary := false + x := xpts + y := ypts + seriestype := :path + markershape := :none + xerror := :none + yerror := :none () end - markershape := :none - xerror := :none - yerror := :none + # then the non-primary scatter series for markers + seriestype := :scatter + x := _bin_centers(edge) + y := weights + fillrange := nothing + label := "" + primary := false + () + else + x := xpts + y := ypts + seriestype := :path + () end - - x := xpts - y := ypts - seriestype := :path - () end @deps stepbins path diff --git a/PlotsBase/test/test_pgfplotsx.jl b/PlotsBase/test/test_pgfplotsx.jl index 05f952df7..a0b4244d5 100644 --- a/PlotsBase/test/test_pgfplotsx.jl +++ b/PlotsBase/test/test_pgfplotsx.jl @@ -1,4 +1,5 @@ using Test, PlotsBase, Unitful, LaTeXStrings +using RecipesBase: cycle const PGFPlotsX = Base.get_extension(PlotsBase, :PGFPlotsXExt).PGFPlotsX function create_plot(args...; kwargs...) @@ -71,7 +72,7 @@ with(:pgfplotsx) do rand(11, 4), lab = "lines", w = 3, - palette = :grays, + palette = cycle(:grays), fill = 0, α = 0.6, ) @@ -134,7 +135,7 @@ with(:pgfplotsx) do @test plot( PlotsBase.fakedata(100, 10), layout = 4, - palette = [:grays :blues :hot :rainbow], + palette = cycle.([:grays :blues :hot :rainbow]), bg_inside = [:orange :pink :darkblue :black], ) isa PlotsBase.Plot end @@ -347,9 +348,9 @@ with(:pgfplotsx) do @testset "Markers and Paths" begin pl = plot( 5 .- ones(9), - markershape = [:utriangle, :rect], + markershape = cycle([:utriangle, :rect]), markersize = 8, - color = [:red, :black], + color = cycle([:red, :black]), ) axis_contents = first(get_pgf_axes(pl)).contents plots = filter(x -> x isa PGFPlotsX.Plot, axis_contents) diff --git a/PlotsBase/test/test_utils.jl b/PlotsBase/test/test_utils.jl index 2366279c2..1bb066915 100644 --- a/PlotsBase/test/test_utils.jl +++ b/PlotsBase/test/test_utils.jl @@ -155,7 +155,7 @@ end @test segments([nan10; 1:5]) == [11:15] @test segments([1:5; nan10]) == [1:5] @test segments([nan10; 1:5; nan10; 1:5; nan10]) == [11:15, 26:30] - @test segments([NaN; 1], 1:10) == [2:2, 4:4, 6:6, 8:8, 10:10] + @test segments(RecipesBase.cycle([NaN; 1]), 1:10) == [2:2, 4:4, 6:6, 8:8, 10:10] @test segments([nan10; 1:15], [1:15; nan10]) == [11:15] end @@ -265,7 +265,7 @@ end # test cycling indexes x = 0.0:0.1:1 - y = [1, 2, 3] + y = RecipesBase.cycle([1, 2, 3]) pl = scatter(x, y) @test PlotsBase._guess_best_legend_position(:best, pl) ≡ :topright diff --git a/RecipesBase/src/RecipesBase.jl b/RecipesBase/src/RecipesBase.jl index 150b1adda..25739d1f5 100644 --- a/RecipesBase/src/RecipesBase.jl +++ b/RecipesBase/src/RecipesBase.jl @@ -95,6 +95,10 @@ for op in (:+, :-, :/, :*) end Base.:-(a::CyclingAttribute) = CyclingAttribute(-a.value) Base.:(==)(a::CyclingAttribute, b::CyclingAttribute) = a.value == b.value +Base.firstindex(c::CyclingAttribute) = firstindex(c.value) +Base.lastindex(c::CyclingAttribute) = lastindex(c.value) +Base.length(c::CyclingAttribute) = length(c.value) +Base.size(c::CyclingAttribute, args...) = size(c.value, args...) # -------------------------------------------------------------------------- @inline to_symbol(s::Symbol) = s diff --git a/RecipesPipeline/src/series.jl b/RecipesPipeline/src/series.jl index 6cad52ffc..11c898c3b 100644 --- a/RecipesPipeline/src/series.jl +++ b/RecipesPipeline/src/series.jl @@ -32,6 +32,7 @@ _prepare_series_data(s::Surface{<:AMat{<:MaybeNumber}}) = _prepare_series_data(s::Surface) = s # non-numeric Surface, such as an image _prepare_series_data(v::Volume) = Volume(_prepare_series_data(v.v), v.x_extents, v.y_extents, v.z_extents) +_prepare_series_data(c::RecipesBase.CyclingAttribute) = c # default: assume x represents a single series _series_data_vector(x, plotattributes) = [_prepare_series_data(x)] From fe92eb9a915131bfee22185d3c66a14cd7399ba5 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Thu, 5 Feb 2026 14:16:07 +0100 Subject: [PATCH 29/37] handle palettes --- PlotsBase/ext/PGFPlotsXExt.jl | 7 ++++--- PlotsBase/src/Commons/Commons.jl | 7 ++++++- PlotsBase/src/DataSeries.jl | 7 +++++-- PlotsBase/test/test_pgfplotsx.jl | 4 ++-- 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/PlotsBase/ext/PGFPlotsXExt.jl b/PlotsBase/ext/PGFPlotsXExt.jl index cf2f99d86..463f8c9e4 100644 --- a/PlotsBase/ext/PGFPlotsXExt.jl +++ b/PlotsBase/ext/PGFPlotsXExt.jl @@ -651,7 +651,7 @@ function pgfx_add_series!(::Val{:path}, axis, series_opt, series, series_func, o end # for segments # get that last marker - if !isnothing(opt[:y]) && !any(isnan, opt[:y]) && opt[:markershape] isa AVec + if !isnothing(opt[:y]) && !any(isnan, opt[:y]) && (opt[:markershape] isa AVec || opt[:markershape] isa RecipesBase.CyclingAttribute) push!( axis, PGFPlotsX.PlotInc( # additional plot @@ -1185,8 +1185,9 @@ function pgfx_marker(plotattributes, i = 1) pgfx_thickness_scaling(plotattributes) * 0.75 * _getattr(plotattributes, :markersize, i) - mark_freq = if !any(isnan, plotattributes[:y]) && plotattributes[:markershape] isa AVec - length(plotattributes[:markershape]) + ms = plotattributes[:markershape] + mark_freq = if !any(isnan, plotattributes[:y]) && (ms isa AVec || ms isa RecipesBase.CyclingAttribute) + length(ms) else 1 end diff --git a/PlotsBase/src/Commons/Commons.jl b/PlotsBase/src/Commons/Commons.jl index b3ae26666..b898b3d17 100644 --- a/PlotsBase/src/Commons/Commons.jl +++ b/PlotsBase/src/Commons/Commons.jl @@ -145,7 +145,12 @@ end function _getattr(plotattr::Union{AKW, AbstractLayout}, key::Symbol, i = 1) attr = plotattr[key] - return if attr isa AVec || attr isa PlotUtils.AbstractColorList + return if attr isa PlotUtils.AbstractColorList + getindex(attr, mod1(i, length(attr))) + elseif attr isa RecipesBase.CyclingAttribute + # CyclingAttribute uses mod1 indexing internally + getindex(attr, i) + elseif attr isa AVec getindex(attr, i) elseif attr isa AMat getindex(attr, :, i) diff --git a/PlotsBase/src/DataSeries.jl b/PlotsBase/src/DataSeries.jl index f1ad1ea39..1c56e3a8b 100644 --- a/PlotsBase/src/DataSeries.jl +++ b/PlotsBase/src/DataSeries.jl @@ -26,7 +26,7 @@ import ..PlotsBase import ..PlotUtils using ..PlotsBase: DefaultsDict, RecipesPipeline, AKW, KW -using ..RecipesBase: @recipe +using ..RecipesBase: RecipesBase, @recipe, CyclingAttribute using ..Commons mutable struct Series <: AKW @@ -261,9 +261,12 @@ end # we want to check if a series needs to be split into segments just because # of its attributes # check relevant attributes if they have multiple inputs +_is_segmenting_vector(v) = v isa AbstractVector && length(v) > 1 +_is_segmenting_vector(v::RecipesBase.CyclingAttribute) = length(v) > 1 + has_attribute_segments(series::Series) = any( - series[attr] isa AbstractVector && length(series[attr]) > 1 for + _is_segmenting_vector(series[attr]) for attr in PlotsBase.Commons._segmenting_vector_attributes ) || any( series[attr] isa AbstractArray for diff --git a/PlotsBase/test/test_pgfplotsx.jl b/PlotsBase/test/test_pgfplotsx.jl index a0b4244d5..c71a9197d 100644 --- a/PlotsBase/test/test_pgfplotsx.jl +++ b/PlotsBase/test/test_pgfplotsx.jl @@ -72,7 +72,7 @@ with(:pgfplotsx) do rand(11, 4), lab = "lines", w = 3, - palette = cycle(:grays), + palette = :grays, fill = 0, α = 0.6, ) @@ -135,7 +135,7 @@ with(:pgfplotsx) do @test plot( PlotsBase.fakedata(100, 10), layout = 4, - palette = cycle.([:grays :blues :hot :rainbow]), + palette = [:grays :blues :hot :rainbow], bg_inside = [:orange :pink :darkblue :black], ) isa PlotsBase.Plot end From 6b5193bd23c037417a0755be3258074cfc0ddc14 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Mon, 9 Feb 2026 17:19:12 +0100 Subject: [PATCH 30/37] add guard in gaston --- PlotsBase/ext/GastonExt.jl | 6 +++++- assets/PlotsBase/gr/0.1.0/ref022.png | Bin 191358 -> 191627 bytes 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/PlotsBase/ext/GastonExt.jl b/PlotsBase/ext/GastonExt.jl index 3249f68dd..4330ec8c3 100644 --- a/PlotsBase/ext/GastonExt.jl +++ b/PlotsBase/ext/GastonExt.jl @@ -329,7 +329,11 @@ function gaston_add_series(plt::Plot{GastonBackend}, series::Series) i, rng = seg.attr_index, seg.range fr = _getattr(series, :fillrange, 1:length(x[rng])) for sc in gaston_seriesconf!(sp, series, n == 1, i) - push!(gsp.plots, Gaston.Plot(x[rng], y[rng], fr, sc)) + if fr ≡ nothing + push!(gsp.plots, Gaston.Plot(x[rng], y[rng], sc)) + else + push!(gsp.plots, Gaston.Plot(x[rng], y[rng], fr, sc)) + end end end else diff --git a/assets/PlotsBase/gr/0.1.0/ref022.png b/assets/PlotsBase/gr/0.1.0/ref022.png index c62ae1c9ea6fd19fae77009799ed5501b43981ab..40582f2329dae4e48f53355efaccb5458a5a24ac 100644 GIT binary patch literal 191627 zcmXteWmFtp)9v5`1h?QY4DRl3gS%S@4#9)F26xxs?(Px@5;71pxI?fZ1ozAH-Sw{i z(d)FF)u*e@u3ft-T3uBh1C0a?003YpKx8xl0C;@>04@m#|90hBFM9gzg#1xSUIy^` z-|@AtA{79j0w~BxYJ2CM_Sq#_E_qPg<@XF^W~Uo0v|S;?Q%NKN7^K#emC8qC%fItT zzf;&Hb^sf-pEfeGx7xUdi|Xp*;q5k^UMP=?3nVmJia2Uj11WQVae%sx}8XR|wR_-CI7-1;B-AL4TF;#UZa zGOD`9=rNB39i!&${QvPqA#R0?cZ}A5V{e_^G@zR6{|y@K^KiHSd;IN=PP`UKaBKF4FBImyz>f})h7={UnqR9e#!Im^S^FvKKk*CUtfy9USf&eZ7sLhh(B#(ZF;Uc zZssTy?BF+e=9z}Qz21RI9|NQeyxYbKy8BjmH$wliE&lX{U;HIG(SPs!DSzPd<#u4x z?-lCR@6MMS;6UdSqt(0O>WlF<$EMKC1jcou_{*Kq#=i_~sYe^=eSHt?VO(D9UkH{z zU{HADBBAhUqVOrY@GjbULHTV(dZMZgLvJfF3UL;Z@9gh?Ic=Hle_TIzdiB5U*?i6& zxX<0pQ^^1CpTPb9Cv!vb_JLTV4-dW?`1z_8&+b-M`_c3T0>@joedhtBq(-j^*sJv}AA-UmBB!C-${240RD{P&qJA?ZU~d6)bm(|EyfAb5$;aBL~YwnmOW zpC@m74@ISb0I&X=_Vo00dCGvRWO)ivZ-cqJwuJ@pdzx3P$HNM->#D?nQ}Kf-){n{? z{F{?@l*$wUI4XF6q^6=>9PzshSodSw?WPwcgZR~q^koULj!ws`bKJdq5NsOo`}gnK z6W>mLxWA`m4FONP12>`koe|c9XFY`<3fM(Yzwa55`6JeSb~ZP6b-ge-_tkrxKY?{! z$_HJ^vl(}~)bNwQT_9d|g;W$gOul`}pD$upnf>*8eYk%;Ov1$fB8X#Ku*AR*o|wHp z6h2fH3SBk6t$Eq~a8W3KCw1T-q{B$$wkLP@nxR!VZ}M1&B6sHeBSx6 z<-GYUeg0nTVPtC~*4*OT4FTlO<0f=kL^&{YY2Z-SA`-iG(fc^{Q}^e?)!p3zRL7bc zzZ+OjN8qlK&BkLwMbP$A57rt@y8jNhS>G*!bNAEU1JC!RfJ4XEmrehthSxJn9mT+x zUt@)Sut}_!8Ok1?--iV~|1Mu|+2QYuf*u`NwQY`BOScUga5>c(2btB|%~X6chtq5M(fOrsZbGJt!2clo7& z*khka^E|%wnx~uS-$q)xWB(l@%v&i(*T}51bkoH-!|l>RSlBP{!sGC>{Oe7{z>|r% z_bazqS2u6(jp(`Wn2Fc=M#AMUGylKC5$?{f(pVgquUFzPC9ekqkFkBGD1)#6ZeK6V zUTT8cS6SiwPd5X7o5VX`t`cfzPbfN*tUXr9PkzC6QchWoTJ)o=^?nv;dTmO#WB<(j zmQR^t^vY8AB8xeo{IDJz@M}*nFk_EYGS+RkaPME@c;A@Mb64*_n8;dn(0SM7t#sFp z6|ugG&HZtixhX?zx@u6{twZ6%*}%nI5XoSL__NW_7x9~yTYm@?|zTHe8WLOqZJNMbHi27 zPNiP@tDN+KV-T0i75O6Ghyei+er1)H+*QpQ83#C?MacrpE(!-`6QIJ&s-iKKk!fwL zk~n{=6~A2*lC;ERTpCoG$f7_Acv=z*yre-4#)m^>jLPCprowi&b`jndq@Q{6Cwp2} z{g-t=jkO+>P6Zf$r$7}I_l^!Ont{$7m&x_|_)zRI+id#OjKgkLF)cec?b++Nd0 zm|Cg_q%Bt%H`LWV-zC0QeN&qe;}SzTr3jje{X3GHC~~)T{wxU|Za5+7^}Rku5x*Pq zJMSYJB==f#olmBGKo7bsd|DItoN93%@nCVc@>S*!O0V{qtCaRM=wer zk{-oiv1fKlCXxZ)$DM^~5d#m4Xm!!cTA!O_Cw4d9l$&l%DdR`P>qUsr# zg4LcUOKvwjZuiIdBF$Df7IJmoZLc5~+}jJWU-bn9tims?dcSODZ#>$XN7EJR+&&$N zyoC4d4%B;6w%?dY_22!dlQ;YI(91(Kd$$yB{OyMRKAWBkI&#Q@OIF$OfJGR2G zUP8db=tOL#Y4xUkD{QmuX8rzC_UrH62Sdk#CFI!9W}}R3<{iAA=CFRBzxrQNzN+6t zsm-$YCwfqBpTt+Oo<|~30&V`CB0RtFonOVhXPJLJGeUWNJjd)9y`$_kqZIn5_U!iO zZo@3d{q5DhXxFRr^9oAF`D@|8%`&CHWqXav_1k0Jzb~awU(2DRi+gGKQl);t=3*zwE6~Dbcg(cs zqfmB?LZfHo|50Iec&bW|kU5tKRwI#OHeZq#Ic{AL_UHxN&}8 za4r}))wjOAGb;h)BvD0Oo&wz6rt z)FV%J*oG5Gg6MV0DI9XZk(HBKzNIhi7V$bQ8hyTpvzA`%o%5uyglRKl1N}eoV{=6D zy^S-^9RqhkT$eu+oj*AhniwswtQi>?kvXZbuQeI7;r}fCrJ0qWvJe-gz1@5(6`WRt z4>5AVp9Jx%k18E*f|R7m6o}GDxR9)+XLT7SHk54AHL4N|TPmaB&FJ2nyDk?avQ?z#o6S6$~Sg-k} zG$C(;gcdeiW*+Oso-81x2%+C$}Dj z8$n7Uupy^oZLE%7TdgVI&W={P_J3Zl3!nF^<2&^&i@c0oq7ZF*Cp2!J2W{R4Y!2KJ zy}}P}Y;25)-850YY*Y5{*Ce2XMS}q@gr(e|_c_W^vtSx|P*D`fhLs_V_Ln5S8#X=# zT2s(crcAT}It~{pH7+-R#&Y~u5}`~8sS2Nal4TYiAXGr=X*aXEhiW3P%mr04X?7+= zG=#-&IvI}HGSwZKR6(ps2cN4|X1}XZ-agJy3(`oUvZFc2VpS1NH7`i0$(RzY^=&AH zS}J^LPa;$h+I2>UU5Ta_;y*tNc8C88LDz%}fxJ&qtrV(A(y|ti)YTx52H1?YLi07@ zDr@xd56Td3d`B%w;I90HXbXH``ncf+;}IZw1w6RC4?eP;SoBZf>aIJN2PG=9V)PB5;LYeGYJ42S1?(V ztb~Jv5pG8JOLdb;MS2!S&Bj-_1lfd?p(^Q{{Ajc zPb)unZ)>Z@4qi`a8hU*JpG>I|DYIH$1n;S+fHYGA24gH46^|y8Pb-Wb-z~fqf^ifo zE&DyCbd9I^vnJ}ueB4Q~9)rT1d0S`u*NEkn-=cm_`wtI`LmV|VKW;btZXX9;$6gLL zADH>o#B2yZ2BQ34C#ES{_4t0|tF550!m!|4RV|3PBO{mG97T{E+&WGm0|z*j{9+tN zg;EbE;VDU66$(p2d?Y5O&rdc4epGFu_&F(gghmrBC!Fd|l+j?a48K)dmzznwbXkZ@ z-#zfj*?H4r$t370@%18Y_Kl5QuWvrDpY4iYa*JQKh(ETR2faRS{>$j-Jr6kdI~3l$ ze=NYlLj=g-mg1q%*;bAZ0m%hXB~l?%F$|nauF@qmGp;facXL%-E`9Wvy!a$BdKFDv zBpFto5KwREPcra3nzjZpNuJfvDEuV+)~ALd9$= zy?99SL7^DC8p^ph6|Bp^yO13Hfmfx*m=H~3UFHxodb~%JzW@=?R}h`doS1-wqaw|g z?xG2le21BLe46hPgHLmKN|4Tq1KYGR>+|-hA4;43r0d~F4k+nU2x<~0T}qp{u5Acq zRJoE&N|JMp0TWcnXzm=;{LNB|Komd-#vZ>92DV_$+FNN?_MW}R{U}uH8@umq)7?40 zx=aDD|Hor2^+-W%_zg|oEWVoS=MLhjHg@@0N*8+cTc3Z6#RxPN-70ydjw~p}P0o>W*l41aOVm;Whu!L_$p8lu zpT~J2mf55LaL+rr>aR+m9cw0I>Nq;u!Mt4c#A-Kn!wP|mjhnrv(S3($XZS`a-*pEo zP6333{2lVZL(PEiF0cJdbw}Tsqnh~h6-}Z@b8qicIe*_#E@$CAYpx*bIA2@&xJ*KV z_MQxtESH-Tg0O7btzHSrkDt=67Mx5BR*N#pEd(GJE-5tiE!%Mp?B5Pt*(G4SE@TO? zYViqdAbE!joDEb1^JLSh5nD#syG>200^#9XaBOi&Ba*%n=oFySCz9wg8hDj%=U^1_u zVGpAAf9-e9Y?9wsHRJuyWq!G=op~5}ICTm)Eutw5jTN8x@2i+=;webjrd!}DLZdk@ zMa%-8WINST!IseIw1f9$yj2&IB$`0(b0Jl<9L$=CQK+p~cjwCHItARH8=>7_)HvHp zO|AhB9*+0XoBi$0Lhqf_(lTTlY&|0ZxwBBFX+hLFi4n$O4{Xs=xqnF{Do6%of~_;- zaFazF(%abfT!f)+CO?K1Xf@Ar8@NvJ2ERto@5T7(AIHYR1|P9CYJN~g$RfR zHCjvd0UlkBo7Md6`Y~UlO0zHkxu}mVJEi`g1DKbwn!a*?Gl#omui3qfoRF` zRD~^cjF1tscXoi}KDx|hQqB(rA5CN3i%B^pf#XqzDJrK!wGrfFeQ}>6{*iIp$XZ53 z2^uM=d}Nj#=fF+3u}Me-c3D&@ILc(@rvZ-B(5g`9kBf6G5m9c+1m+quOPy);`u>ug z75W??f}}ma)5sBmS;AAR6&bmh8PVc}xFjOV4AO(Rrd$i#owvRx%&k?p=XoQ2Js&67v_V)* znIwRbkFOop^I9L|p@om{*!`su#y|uZ$veaPU1|Iauy_}sy ztc;}$z>%*jlNDFpV)M8zsZn=M)siG7#HyHilH-oAIfx%cfJjBA`Q~l}nDA6?dA9%w z{a|dH8S>(hpJ}HOwhD-(n^AKPfij0mB6N2Jr4^ut3nE2q2@X2xOK`U55O-rvk~4tN*4Mz^vP% z$&mgzjy87Ts( zc}5gfcn02TfHhZSIYDMw_3@vWZ|uXS(<*d065C*I9gNI`Y&()pZ7Fnk0k;BLGhj&s zK!8T(Mp6GjM7)9i8NcH0JLekdH3~W)%SWU@qugmAEB>VTP-@@f4HqK5lH!;{!6Wf* z+o=;=VDO=g<^h7;yj|7!bnl6wnU9gJUe*Qdv#XuCv(3A&OJ{l7Bqp22!adDxO&y=h z#fhN;CB_WLcB$@~x(Hj?UrRY6!{{B8MA9VDl1RGxBY1K|OQoyL(e7g6sHynlSy%>L z4Rh<~c%=R1%F0P!Nz@# z3JD_FEm1qzTS)U+o(_08Ys*}(50tAeQlfGv#j$6M!bzc=K9#alQu!c`zPo<3jQ(S( zU~`xer@uD|@IIUBy+Uz3&_hbQ6hx10Xs3;;7z~ELjBjJ0^yv^`C`*RVHb7StB&GIO zjl`D-38N+uv~5NNW2Sum5fqN6RPqj#Ef~7$!q?7HkW4U+wlAmvqLG<$x4WW}|Bd*& zBwC#j2e0;kPQ$J;W?7M=Qne~AMp7j~)mD;=2I&S__G801#leHX3tl5Q|96=A1TrQn zDwV8uD~@?2HUrN>GMs0mwF;Y(&Qg^?3h>M_2cTc!_Putyz9h?Mr)wS@{T`TiOonET zZ-)#Lkp#}hwa236XF=62;w`+KI|cOL_K5c4vG0K}x~!;OO#LOdvm#!uMDR?E1^C)S zE*xbVM)ZS9&RoT*w>1(mqMDO@RXL~GjEPaMXKpAkp>g#@nZ6~pb;xj_-^bI@%Fkii zcHM*_*KXH$ahe2Efs{I5AwE+vW$`i*Tl6N@N?_qL4^GO=6x{6BpE!{@tw@?qBsxOy z!?kZbwlzj252mB!fZjv8yUvWUW$-fRmQq z{JE<>86Gv%6T%C`ChUq7U;~LH$tk=?PO_dMcd?De)&%7BVa=_u;jh?FijYIol4HXn z9P|zar8e)rp}dAA>Jj4Lw%xRWAy$|%$~%=231qwzBJZp5 zag^&81f$Oei)) z&z6=1|L#UmM=)(x5h!6oFpu6GW$XzA;EEW7_+_L9t4aTxIYrYz%dmO%c zXAeIUKp-Is^ZIfn6Iw|tT3e=K)$GA{bOp2+^r4}?&=1B-?vb9C%;W2SY z+)HhrGm>^|`N%8qBeHD{A|!3REZ$(c( z%4}t)dEvNWR8|WP+DJ$VH97XX<+!PF8MguZt1VWi=yyp}`M(`Hqh<&bd@)l>ahfMI zuxs(DTkPD!(Wr+Qs-G@q8Q#9GE}%H(69H$ZYE@FokfRJ_ZACmTSaFR(gM&U)#HR_% zokyF_DJzA_ae`-=TOU`Dnz&L6xoAckX>Uq*t`;g=lt4Y~G_6t&7wkTXk`WsBoyEm& zToIcgo%n55%@78yHqHg|I z+U&*#hdfII%Nve9+H@~eF6yq-W3BWb- zJCSGzSSGZ5_sqxEjz4iLVnA!@5i~U=|Kxa@FWT`?%(GpT>Rk5g$F%9d-<*YQD46e; zzR4B3cvW(0nv@Xw!Knjo)*)~R8@VdfB~C&BB+u{$3**5EkQA;cZZ0HZl@x{u{RMEu zi6O15?eJUn(Kx>!zFb>x{j-Ya;a?Fi4i~+G5DnvOa#&doiw75epp^>EFh<$NG@F8Zl(AjaEH<1`X&G@NEMILPN_0|_#%217yAVKB9=x9lTT`Yb*O->w)&9_i3(p^Rzm+7xgdA=FhXB&&5-A1=F8ww^jM7ARTYrY51^ z_=V-`yJ7rx=2kG=9+^!#jIf;tEHIU`+(^RWG1fEJ)?%~R;27YyN^fc>QwiW`4ptz; z|FkiUgNv%d>CP(1P}A`g#x$ep8<21S~$Si^GA-9hjs zw=@64ODGQQGNSVYEoSHpQ$5c#jvV|?8Y#|1poK#vmcOwK!&|yVw<#AMl3zSB6-)qf zuXlHmLb!|sj6nW6ssSXAEoYrpky#aHV?J48CDER^Lm-Iy)Jn89S;X4*^$7HY(Am}r z*`jJDLU|6KhC{kkz@Xvs4TgG31qC?*H-BoWK}>|YA_E|VR8}!r;nexxeBq8!0_p6Z zjZ*PH3Afhkl7gg5vP%z>%#3MsjB-^v2^y6Fc2{!FeY-Vs&fZx`+-XvAvpJ_>JR~SM z+of!eqn{fL^^YOr?e_Q*9ZUIf&Nw(u#+&xcR=T=Gx9#7<_BTFh+p!uiMNBGDTbgU` zMz2J1NGXD`>;zD9NROTE3L77FN_bm~@&;M*53+_^`Ap=et~+5@=yjH)I287@{)}&E z{A0SFo$cm9DSrZ{t*G%%QM^i!j+&~@K00ZT1L-3I7&vzMF*~@VM(!}u*F2eY99{}E zHJ+g!Ge{PYquXu7P=i`2|E2*}n4LPRKuwGd2AVxcaQgkTluGifnB!C8-FIcM!7E(E zD)<8AzmLs6mf7j{RI%e6=y*DMgFRY`htl-Bg&%08MO2-!n!2ajyBm*QWk{EjP@QHtd^;GAuNms zr^}>V@2sIIpI39X_RJ*ZuxDbFB~*g(+P9Mg@F3{hh(AAC%h^>%M@8os;mL%z^Ue#W zr`vV^uNQ#cVLF0_c9iF<0|d=dZp(OIA5y2lbr|U&t=p_hhEFhcF*19_7-;r;opfVO z*IKAr=#57?#S~noXDTw)v?NOXAj1EV*J}S+Ja$8|#8IZxj5j7tOS!%EXY0{b>`~(} zt7q}_2FfPll<0Lw6tKZ;)7a=gC0MwH>%Ef-p`LGxD{GYT(!HHDqR#I%Z;+FFxccL( zV?cPvIL^i&7KFJ2Ao-)AK6C4o2TdtQ1e`l>^<-eSMFRCTQFrc=m$To`dz*gG`>gB^ zuL?c{m;2dk(~6eH`TSETxagF~9R$uWOm17#{;Iq}&AZikPQ#M*?0OR&_Az@+f&iPu zT(O)6%*o|PS&@Du;7F@k0Q>2yWL42xl5e+ae2@k-qr)C~d1g~;jw}7}&$uS8&J_fc z508;Sj^&g04kdKpH^{1F%|M-!i^{-6pr=g>k0N`Q9VM5l^f&aX_XkP-o(xX1rHm|_ z`^?_Qldsr9E`Y6YdpE=nNcU56Nr{aqQjr>!2np9XAn-QN@pwczU32=LyQe0D)VCqj zveKy!h0lTNCjd*;&{OmFhi}R5R6rFrw{KMR%BcZ)L|b3gn-%i}98gPUWb|3fd5I!K z7R5A_zf%Oe7pKc1nUi!nK(M(wRT;U7G?j|u)-0XJQB$(Ria|8nGKa7D17^LY`sK$r zvG%ho^zaG{HSSTve~8{6tG&nRZ?xB*3J9n3+gv$rThP?vwi9~($d`AGy#Jr{(K>@1 zL4Psd(BNEO$Lj2O%GQ9nLbm-$8&xWo2HeQ>shSiQ+jgdn4AHK~q}BmSXw;&H|glpmrcQ;XkWMw<`i@)Y;$7S;vsVlISYK}X&0 z^+Dyr%eipIZ}HW!8S6uaA@H!XDw~E8!7hm;D&P?jK4Baulm+t??^GcpDfAnDI|5^r zmJhTxdPk$^R5(T%YFPqzYuky4a-kG%o;tURPq9{*(+z25cK(Xd z`RN|tWLItH-Is9TvVAf>Qm4}{!{BCJ94Ant-ZfMKD)1END((V4Iy;NJX94_PCShZ} zT_rPbV~Qi#p z!+_Zb(fTq8NsR^h<9|3DXTj#nRzX%1DS%FUILlzefV!U~S}I$8bA~6c6Hjsg+zYUq zmjs3rFDGCt3+`8IM$AQI#AuRR`?bI{$KH#s<#dpW{>16e%X$P77#vi7pz%}bjt91> zC#Mo}!RYTxzs?IitA4C>zPysjUIxZw*I`rB(^ziVLPA!eX6SBmK3NCNc#+cEvPom7 zu!Iq0Pi+j!VgihcL{X51sRN)>Yd2}hh%~6Su~zE$yEIa0Z%`@(A3XP_`A$XP%M?%i zQlNz(-@K7%y05d^;2W73!D*vxO7Q?H8m8vxFzUlDC?qG1cFyGk6rQ21_9JF?I#tCl zM1fd?Z&p=_7dW^Y74vg;40+WenY!5K$G_SDNm(^%idAvg@V4tDy83X*ZYALs(8v29 zT5L~?Z+8BTyWLh}bO>ed5FECj?X15{rw?_byQf->`WqPln!cs%X_8zq?=-I@%4?Ys z+MG9_}Ii}&(6=?+2_C735?y#riA3f zl85;s5L(?>bs<4lC+G`=tAd-txbCp+u1o&5rjC{5DKk=pvxp{JRqrvTQ1{gOOV^7q z=GUU7oyVJ|c*OeIpWM`M>CEh5M@v3Fz`bnB(W@52tNcyblj4H@E{JVG&Wi|lVS6MI zOiH_)fOu&&O=c9EE(Rp!L;yMH>aH9wvKAOl~qo3j-{uPn;?hW`jaH@_5j-*4&!%&!> zNV&?3Q-=q+%s5stbxlbQw_~EYI)LE9A{wU@QsUQanLv+I%V@iTmM%RZ2ok!Q<5P$< z$;4AhI~n;_E7clKAV69S&{mVJ6k8(If;x@L8&g*wgS^v8^x82;Jw;TZ@16V1yux3! z$l$E7&{ip4!B*aG-4twFTxLnA3;Bn(ES)MAOPz{hk>;KHRrg)HM%_gfw!9C2=iR4+ z;R<~++!)K~P}TDtlysBfWwsQPcc0@uwG`#!gJPV~{+C0FzXih@1(O@&N_ZeYX!yNC zRlws&px1~6%`hpC&m0VIHfyi1RcLVoKLdQMV8Yh9TzQN!d9iUd&1cY7};; z;DfPF^=?{vXeR|UCU9G^F1s*R=WbVsIbCLE2K`x+Fg*fW(3%vw$ye`94N2P8-8vBn)q_ zG73?WW32sGCFtik@k9!yARSbdsZh)Mjed-LqHWuza*1`!(mtV?w}l7b=VVtxmlY*t zbP`k<;O|c{>=c;3w!fvlV8H{htWV0hko$b`9vQe42l@@KGOZoT3Bvn;NT8|B$Q&Z2 zh4%sDt;UtnU7x^`0XK7!JpmS?KSblOIMy)apxG0NZAzCPE)14Y%p?qPVkhja`! z2eS;7*$;d}?Tz!q=TNp@>+Aa;OPrh0M*?Y6qS(LR8Wx9XBa$-SkITPc^MZ3mEHxUmv|WM3)*hJ2Kq+RfgaBDZiLUzu zVieZJgh`zCYpyQ374{5jsl4H|P%inxYQ>BQZQSf!4INBHJzGZG=dQC$BE5RCSH}(G z0|J@w-=zhTRwI zc$n}J+(CPCsS|?s$6FtihK+*3f`GWLM0E)UuH-&2tpf6!4W}91S8a2N8)KxbSy3g< z%oCR*s~n|E>?m;Tag`lqqPlWTaoz$0q;fF52xPMvGo|_4VhJ^CES9Y8kEIOAZXDSu zsuH_hRm=_f0~n3AdR)f%{X85r#vos~tTva%J=~TYf9_9SZSEQ)BDXaKIfnJTp!|Up zlPrk(XEb&wPBynB%$Y=Xv%cn+9%ke>je&u|sih?^=$lAH41MF*ymo1XE601O?LrX@ zZ9BPTzYsto{e5#oFg#7y7=Gt(;3;Dgq|WU5{6N9gOgZPC=hJiBA zyx_X{zWs&KZRou18(N6kwQ^5ZdOmKhAwqqeD&_l|h^d3MDGzDha&6=Z1gc#sj<@`C zB`OK=snio4YACvvN7hQZ-rN7!-XZ>X{G0sZ4>J58#(|#C?ZS(4J=`TatG3z<&FHdO z^JJme*oH|SKmtTbf=l?q_ED0ASfD~@7tbU`GkB7$+!E~|e1?ivN1%#!Y{p5UGW|*? ziqpWNJhi&&xx=+@ia7=dhwX0PF{2cPOXmuZ{AnRcEXauKn60c7f|8j}rFt)L?QF^$ z^Jd`Dywzg@X|6X$_C8O5kqgIk$jX~_EimD4hRGx(#uI(8y*Z5QD?}DEbR4)Z$b<|3 zh?tixY3K$~hX?qNm>a$SSu`)%^bUc6hpTgZIEccX^SaPq6Zx6Q^^kY19 z3e^^S%BR2pk+`{l6uEXL*?kI?N}*W25`;d;^e;KSxZ2#oY8~v5XdLgUD4dOGW3{_% z04~oy9Ht7X$wFt$$A^dH**oPm0zkb4R(pm?&^#b;I}JDxVH>-f-_j$z+x&Skd%2U% zuRhyHK}tA3hheIp=OOfT>m@OEM8yOZ>sxQE=z1$<(ZmLGg%;jt^CZEDJt1qpYQhYm z-Tb4`rCQO~H4nhLlb2gcOkcfFXyMF18jF76_8fJ2$L6w>efJH37e2CF@K;> zfy6^XuJQw!>p?dml(8ZLjM+r2BRin2sO)LuK$OYX0IREKH8I<~=krwWEsjbu3TRz- zk&v*KQ9x4;2_tBaC!k}zDqX(_)X4oQ#75d8rUHN&@C>+LkBfat6q~+fGXyNz*e&P$ z6k@UO!OKCis+bTqKR%^hA$KYXhejbzpaeKLnKb{V;5hFbhd7FsQjJcD$tz7Bf}?Bk zOR$MrXW*CU*IMv#>3I83C?3kD$-B1tdSUEr+yD5WSct*QG`7)5b#l~-#hS-LNTAtL zc==#NOQi{a zKQy+Y*tX)tO`TOLk*R2{OWf@cc89cuuzIHa)K$WBQc}PlR3d z2Q)mXPel42Cc<8y;juX6#uwB9jgeNG)ttX&*Tgf$H%Abe85E+9Y)M zwG|QDg6rV#=tqt2vGD zDL2lF5}_Qoge6G5%kK!1ugl29op3qCsbIamas_HQ8BIt{Ng|+Cqd$6u;XG{7UL@Od z@?TcN78aYSh73cNmLCz6jP__Sz6jKqnUpin0exs*yJ*pw>oc5Y>x8z<9o*DEuW-P7 z&&8NfUOwDme^(?fe6shQcElXyF8P}?YnsDHWbD&cudCw4Kabwbt(p!XD6Vz48b@+M ztjfxLzNt9MSQW6m0U*BBF(G*2hbt+U?s!GS->o%_==XdHrU|Wo?}gwk$=$;Uo;G-2 zX8hjzRM&4b!h$ZCub+wTV>2(G9eA9)JD_6QwcJY%YBI6a??)pg%2=EhPt?mE((?OxZpwxkeA-X^_BF&H5(i+u3QSUHk2#wB# zb;1%;26s!f!o4QZCB~UdDr$6e=;lV%KnRqhS~HXlbMc!sJ5%}6)~rb2*(}JSi_#L` zxASE0;qfg`eABqEdeJF%i5(${Xmh*-gMxffinikJ>Tv#KfJmbIrPr|MPlIXO;k2G! zJ<*|FO`UnuY@t&EWE|$^)yjL+aCOs8|ID2qf1SV3q6BE~@S4su5V3yg*mS*^ZJEZ? z2%5=PwUHf@{LstIN+f(ef|m><{0aMAKs?yl*vCq!_s>$%N*s&d)`jR?M8)e_@a6c` zWByLWKa>!*TgPsGFXmKkjM1XzX2<)<*+$pXXXZ4HTcc?{AEv4`h5lo`uTCMTtEWTQ z)Y!1o_xd55J9d$R%_PGr`Azd5c&pm9H7%VHF&<99YFp+frWRoHSHjHczMfNGg9`&}h#S4@o*J|d^8j#;{Jk(h&!UiHIA4KZOS*lBl#rwBm7`w;1NqJg}4 z%Kt@CY!$~w7;SLLbMB1%_O!EqOGvNAUdPKzYF%%XL5GTId_iPR8*#pPy(rMhF|H#; zuB+~dDr!V>2#g5Qw6v}|9+yfXdvj=_P}`ClhX{khGC#rvt=y+bg8RMnr?GymPp9G2 zL0w{>uin~DUlL-kMt}IfGKqE#HJE9i%(Wg&$&rH&L)aplpi>bpI`!N(DzZO7(Yg0f z^$wxuDPrto2e|ZP5&pPt2Z4hQz>oHd`AjQf7odBFQ< z_7d>cXuF<&@u5tZd_hxj)pagkp=my1_8R(|jh!yV)z65n?%zg+ejl^5e+0BQ#H(M~ zW^?Q(-8qHEs-Q3Y^JC*Rt&n?=>8ogyr`O7IT5OH01M|bD>37xnu8PKN9yUEK*sno1 z8$2s1H9~l6hk03FNO8RU@5}uKE8NtXv=AV+08}HntbYLbo~9uy9Sy69!%ROcz3Vt!O%UYo>GZLG!hLMeo(c^5qhhabZ#pv= z|5<(-ox-o^6EP&iZYcHza6*^KB=YyI-IG+raOA;>qF{I!v4q*BDYkFCJi3(>;N2Zs zsv?s2rB>nq(JS*kUUDsJd%j;7h&73UDTBgCBbnPE({6~tCI?ECKQc(LE? zP~kx7fJk7{rC!U$1qoVs@JwWUEW}6gO=plnWHnC?T?i#Ysz6Tm^I1#zSq3K2yI$tl zusLZ78&+WitZ`MZ2OWSq2+TykITgOA!#hO2x0cSvXhGF6Qr^j^?eVF_%XZDUlo~P| z#)V6ZqkkWbl!)_=_a(C~0TY25w6DGyM-LiDbeYn`V1BPY0CAMuA6!i7ErT$_t(z;% zk@wdmlxM=x+*NgKi9eidbTstNvKHj1VmV5V9hy7i6&fG*RR42R7f68!V#N#-ropK& zsuR>OsxjijYjPD}gEb2fl70kEO!i=hLx%9eWubOZZdAs!eHAKS_=>(Wkopvo8mvIeORYi9# z%K}`g%MTw^*RO;^oN8o1MWpsR2tZY1v+Cuz;wPjK7i1l;iw!%8_s;jIfv}GX=FO9S z(^Q8f8-gLne!q{2*H$F`96t%=HL*mMcBkGviIf>G0M|L9FBRASc8BP2_ZFPbGqtp! zYiZ$S{vO!XuU}=a(D_5at8i(HeWD|(7CRD)KPC~XZrS=*X;PD3g;i3)Ah}UW285i~EQ2T*_8#jbChKCytqC!``!Tc(afFNu zE*d_HnBC3PR%QsmS=QHT%ZNMNIB#P?_#H^N_%C2}&%MPwZ^og%UhH}PG=iHgqtD8l$&avT>tX#jCgkQj0siVYu0%`D${x$RP5wbTpSkzUnqbOg=(f+xUTPOP*s`%!%0X5ZL ztEP2Ma1tFS3vBr~s`1l5S>2%d_M;~lr`<;${@;E{Qkk>Q+tVSXeGcfdK2*@~rf5H& za@alKYY)V%?kVy@1I%Pl9-;?f_`J%-w$M;Y8*O4Krg|loJcxDs=ER+r!i2_B^c!qU z)ZA)8s&fo@ys}B*gYisl@lmjc42!9sY^FlkhMr~T7>7h8?Sz=PvYE0v%ELT~+!M3J zNi5LVz(N6x@2I!BgJcMDREAP3o&_ubrRc_N(^8>H+rUUj4YYxn@ANjfJj@0 z>YtR*rrdp20~3Xvj8EROQ^CYCvHC33tOreq_Lz*4pxtE-nsDX^>VrH`IKwn2?xkBR zi#(?iPp#XBXHXMTU8YqAgFU<<>TgV=Jf}+&3^%uI1c@I~n|{16Q{tEf0|#>zDGlO; z{#WDz6@QI$&+WJHYW%%)j4{#Q^|CSNv!rrzMv={iQ%MdfPU7LDC$BNRuCy5Ag^X-W%#qTj88#X(kl9G%P!d zU+*mwu|8eRxzo_tw-nWP>|U!@LpXHgFC824IcWF3lL54)STt^8)7;sDsVoGoP!IE{ zqNQSjjkh0Pg+h`8qFY{Be@2{3nr{sBzY`O12a-A4k8sO0^i*F10M^ z_?%-LUC;vn{2lNpi-G1H0vF52t&RJ>fN>}VZ9FHKNp^spkL2QCj?iMv>T{l3iN=L+ zhygzzyt(ayN(X;q4MAsUoca>4j+RhXRf&nfstjo5?3z!*VhPyMNj#qQroVO+YSsf?#h#~8lw|<7z zYScPlA{6!~gp^pPZxiD*=jaBx-2(cPRn@6q+it#@>G|dB#^=e|%JYcG5_1jUI;5&H zwAw{t^sPO4M=_ot?piNd5Yq=*A}fKb$#;48j*xF|XEY?~;1akB)brlh^&uhvUMYxW z9Tvyqm;6PEqp7t|F`4L1B2-qVU6_^PXJhanNuPB-Z$5wZ;x&~H!RCXfrqcWyPQ|&~ z6h0q5#R;QHIJ$3waA{1iQq=UiCHnM}tr z6tLBQf0t1%N?D$(O>4zd9ueFa3{lp~x229HsHI~`PD;594<7mY-a1^OVelgcrzv1K z?hrAW7z`RGyU3zt(sfs*$uS6>Rh=tmK@HX${`iGewPQI!DCgvF-kU!4*Yj@gu;&on zBk$XEfd73*5TcGYPu~2%P`G>i(U}(^}`^Jk~Rw}+<$iK=1q3(aZ0NIb{!hx$lSpnW#q%|EB^M|^zRYHX)E}_4&6jnIP@|2>q z5hp4Ppp25C#!UR!^bjWR$Vk!QrJ783;p2GwY@7_FZbhB*+qWQoBOJ2K5th)vUt1}x zZlB(HQj?oA@vl*(@^pY&@Ik)|xa_KRFZ0&B4?)X1YECSv}SXF2QS=^aVZu?V-b2WFmoeTSig0UGZitPW$cAHDb9PW1n1 ze8Ql}ZSq9XBnTQeYeDz3j|-J9&P9(yDV3!wG4=-iiavZ49+>?bZOiR}^9OT0HA^>j z&7n;2*E;4je&*M4NIfe~ZWOc!;lZUkx&x@`m+qfGB-wr?-pq)-d{cmsR0rdntJ&S5 zCbKaee2Y*oel9c6b-LnYuL=GIb|-~10g+P6HwMiIQVAxr?C8tWEa4PFElo2KH<@cl z1?vx|NEP$;j9GEM8hdP*ush&ekjepth{~wcOi`GX(5!QHpe5^NH-`LCvSyI2sb^(0 zkP!j{TB6JJ(@a-yg?Eg?P+H$>7+(htSO_#jI?tYk5Oya;3KI9PhRm^Xp9xRDiR&_c1C~Xsj!7QH`|dFQcYNV#kjF05Knu zRS0%eQp%l-q>TVPn8TD%-{vUOF$ATU_ba}bIS^`|Zx~DxZ-07_MjuXtsvel1XP^>L zL{yXZ%ZH7pRfOBi?ftZCDh$0s>^i`a&+hYD+tvcSm!rGw?J#ic&4T+!U@(#5&=67{ z;e4b6*j{)pBO*8VU6dhCW{sxn#AB}79GLN1s+Jg+A_%V19$G$AXNa@VM9wyHO*hCPAq8UF^-`BuH-AWR8)ZM*zTPE9B>XH0vP8|C-|WeeI11*v{H3?N0d$ z76T($am`B)?XOu;q?p! zS#^!x2rO5?43e5QL>z{BTn9v7eQc?6OW-6lHqCZTfNHQEn59PDF$ETtX5AYZG}Xq> zvG1R7s%_D~5hOFVKfuRP9mIe1NT|REd|ORgK$!m~5s=HJbu9KnzAAn7{I0^eWBq*5 zVlm~;`Guk1k_P3=j{;bOvG900a#FUPxPXOND(XOkHDgFF-q@#B#8+Px%vN;be|+ajm^A81dFdb#+DLO{NA5MXD;b5^{l08 zoM`JB#6sBJ5vD+otZ?nWK11w13#vyNetxJ}ejdf_D37^$`Cppns+@VHkXHsdiJ~v< zRx(s{(e3pj<%h5y5>Ql{^3ppB0eYub)qYm}92h|a0Cp^#35juCI3{8&^9824TD&M? z1t~sTC`IldgAPkDa*jOmxq3F&+@kaKjQ@-0#m6NrtzO%&WXu>|UdP)g(D8beQDNJr zo})X3kGW0Y!Gt#-EH69|U;qS4W{UiAfRq%M9#T;^Eu|AnNiy$=_9e|Ui&~3b{oix7 zBX99L^!d*MR*T?s|E1c3=91{<-J&LDa>$^4zGcc`Vi>?+x$3Vj-rLybc8g8KM~-jS z+lFobU10x(HkjYDUL7;zd1t#7inz?#=`R*g&KA;z3JXzSlUOwo8KLxgFyAH_MFLO z>*DGNu@moN#`=?8W^q24$O>c>Mh1?5KQYYkt>yJ*yh0>-!2FQ2dk^nXCjA$HFT8ej ze9|y{ctr%EKTiSPYonmr!()H!11>fi3#sHbI?KlnyqYpW&2kI?%rq7Wg0vJaLQN;$ zU~(aBKmR6&ex)@ zR-hL?8;*o&3N3p~Q^-#^9kmxa4n?>^iK!eR@ph0%pfQb@KkMICbtV@!74`f2boapw zzt>f7&4+%^r`pidUQEt<_eL|lxdAm|zu{vdYfriqq#Sqc_H{cAASh5kASnC?B{7x? zAR#T<#tqK&)6^+@+jD+H$ek^1SsxHQZtGU77sog4VWAkunUt>OSIlr}JS;b=a&yeOjH7|NT&@5TPE4K11Fw&PF1^p`!}EY=9G znSS+wiTdkbzWfDbo&kNY%u|=}uvWM>!9!@A3cEumnP@@jGC+2eUI1ew>7U~Nw>ljG zVLXGqDM-dm0!+1XEcX&Zu;9Sh{h}jp=h(fkU$1nH`zZDWl`ItpdM~Km+RE0D3)~kj z6XGvVzycv}8dS3R)HJ%i%*tyN-3vERGDt^7AHx343 zP%}hbZ(AwxW$bzLP8)>40S*pYWQL)m26ohf^X8{!`n74o#*g#+0q9Hb+fjNXe84o& zN@q5iec=vk_C+k;h|M%CRCEZ}t~+lJ3-BADtXgNtl`S9n9xg)Wmw6*P#0-u$Qz)Dm z$Jr! zTuOkUXwp)=Y;P+KO(2<4UHmQCQE*UVWD&v7z<+^U(>o45BtUP-8m2!)0WZ2xo}gng zt)yWujF=WGMKH?Pv$Q0Kxv==GVT^tQE}tW_GDV}eGQa&8y4c$-@#gJgPRBdr=fBOC z&5xXqJB4ohvnV8x;>}xJuUSS7XiEyP=QrOILzYEdHlCYw7;6iK3X~+3!?6Q{!-)fT zhzvripE%>|*8q<)tx`!ACoH&pQCGVJ5dedSW$ywTXkC3Ek^IX+ppy4aLHH_i?!sxLFk#e*M^ZzIT6wEWadF7WcF)T%&8(C5cyU zNyujW;X!0(o|tT$7J%h4dF9cq%VuVVUCcmD1_=yTx9SlCc=TVT<8z5|qmzf+@roS8 z=)Woa6>OxDR5u4}Tozw~oel@xK#xCq(Uhs&y|DZw*B;Fu7%@)v;vPHPZ>|)DINcD_ zH~Zp!(JRNVw=gubgY;bSoG=!uu7He zfcI|lfP+}IKXnk-m7LYQ04in_+~S)dBfYXTRFHFJ2wj076D-*XmjV--jELXz0eTH0 z-o1q<4(wz%z9!qi8MLWd%$sNfThBQ@D4!xKMdHzWY^+;S6q-G`%16N~kW>vBdx;3R zy*nyokRTORQtOm&n7k!Yl9bP^)T|uDUO9El60BN~PPyh2&VEf@kLph~^aNO~= zDB4aFuc@gw>Mp&HE8N3hxuTFyzfqQ=LaaqboGLtt>n}}ML5KU}!gJ9~bI$(sJN4#$ zPv9H@(HI0#HMyn5NTU7ncx0?S-EvkTM{j%~x5u$qIH}_lxd8o-8u=#X$G`mx$uj0& ze~R#f0a5DCGmp4?;iNF{npLF%bXbWcdL&$!C=_@lykBBhe|94T1U1tC^@awd*$mq7 zu!dNV3Id$u;&_D$D*!*F>_16oxuJeTDDESfKR20wLTNANZ!yk+hm!D!{|osc4kb2Y zO@Bo;pg#T_UDF`0Z(tXM61d~!_C;0{{wNY$Etd70p~TGk4^FZZOLJkA^6@$4Ot4;% zC=ijkcGbH3^_4}GId7b6FN>8}X#s?3;}AI%XhjJz;{0I2;%~hqamAPqa62*1Apzh! zWa_m+po*Zw5a@+F#xFtigi@Pq&U|4MJ(+s?c8}tels~h&NKPJ@`AAU%_v3YSy5(5FZ2T&*Y z+#?3&*bwrXUg} zlB$E6Ub#P>OEpcivF$Sxix z?k~X22mYLqf>+7lZQHygOVA+>WB6a^K~u*-x_ON=^%Wu%H8c#Sf5S;HGYNx^-s4O= z@Qvt{1nUl6-CcR)PCO>!I49A`DtOM`P3mDhAhOCrv7hw?^sr#Op|CBgdOG)1{vzAo za70C9(ek=)ONhtk@NKu#5pB^0g3Rh1k!TfE7%=2;ST5p9u#`WAmc(c*M{NgjjDgwL zjoxbf?6dXgw#G(}6KGOk1>e7Rv$5m6+uU4~%pV_54I;u23)_TbUzF|zLdRZkrmZD> z!d~zDHb%T!q5fch!n8J;%o?G`yDOwQGDsLoskUYRZpf9p=_4zbWp+&q45d}WgZvTe z5M(kg32mQ@p^1X1ecv_GcyCkk*&cm`2?hSg-QO=!6d7z3e{oh+h=wFob2oIz11mH& zRn(#cME575;DEoXEkru4tpd2fUk>7}wMO74zpQq+EQ*%gUP$5N%?R3^9~B@ucsiqR zJ&<4`A~(&z=KAWse)N5ThJ*z6I~eIfS>!?H5s+&zI+;*j%DjCh)xDT#_Ao#~uL zmA~G+JMDEQ-1@T0Q+LNp{9J(GrH_E5ys5C-O3eT>fe|JxDKKrVWPh7VQi;Z93MVcq zs?1NY77Ip3z;K4FvD@iFNh#S2YsMQ_7l2Y2X_|>AD&E^6#gq>Z-aqcmZ?hB3&|`|g z@5Rm4D#PWqKd4uh6b=cPnL5k9O)w=cAB8JyzHoOdv2aR+VV`7__bJ23 z@`X{VjSZfOxGRr?#68j}Kel%zStL{!{DC*Aab#~q zdo~rAyA!6pI*I@<-1r{o$EX>2Gi9&3rJ*biN=7`-a`7~klo?|!To$hVU@aCyJxEb> zl*OyG%8EHUHpV4T$IIQ`nNhgAzNoFd<(VV{#>g7ap7F#GRB?cR6 zuY!6XDg9QxI zBta2fT-+F#aC&n0I-(*YZF=}0E`6ffFnF!w{yZr+Q|>m84qk6|$%cr|Aef#ukJly| zV4~(wg^hoCr`%7A`+`!nPgo6YgO`>QJ1*CN%M=cr!cXUlz|Tl@>hgS1IK7yKg(dq) zcjtEf{9$5Z0yD8dKjIgwWtI!FQ6YZ00PJ}>(=n9#z_&@00KL)`JW1uh51K-YbxXJF zL1W$ca|sIe9`>g5!O%OPG7@*X3t!(%Xu0S)zY+!+Tpck!o8t_Ubb(TbO(tWMp1ruH zeOGt+D69}ck^Dw(WXjsZ2vSpdm?+c9-9dYT1obqtsx{_#1Bqnoobd*f*Cfp9j)G6g zp!*|dx&ENK!rsys!B7`l#meS_h{&^#07+`W#9 z`x}=r0nTE?foHNjV2&|9z!8%cPR7p>Z2yMxdopQI4PE$E{GlHTgPVf^02R+AIHDXV zNk)ciw9)vBMtSI|ep*7Vap7QDwr@wJu6Ub%?`HG_+fxOsS7b}m=N7ah4>jsXxhGr! zU`Tc@EG@K-eC(ZU9Cy%9X5Q`#30c@pBm@bG#%6&x*VTB>+jx}tp0%y#`r%~8W%ug^ z1+F@w%fA(+GS%`$izco29gvgQ4aw2l0P)9FHlOE3`&o4$403g)ju*qCCGNdPRTnAc zoz51`x-(M4)|be3Tqmyr^Ff=^g{ohZi$mI=au6u|swx41-FgmZd^+pt!NeWyprK^H zqB{5%slSNLxp5RXM%^JQbSQ<`|0Nu8<~es0ZW?p^5?Plk;6$+D1%pAY-yUkt30zHur|kt$ zEm@ckC!NXv#huA4i$-lHHBn3!r&ZfHN6IWeX@@v+Q2NvS8+Rw9SkDM{Y*J-x&*vKt zbbR5QO(G{!vhtF?*w8oRT9GZ9IL zr2glRwj*pVC}GuMSWi-;zjmx!5%ry=Y*y3f8JM?omCGr}HN9+4=?FoU|5Qo)e+D{$ zOHUYLmXSsw<=;n?GT>R7&!F5NP^2q1{qW_ay&3X2@E?q5gd^68L|$@A`U#{W%*`U9 z8gRrQkx9@k))CEW4oUZufh9(@8-Dr4iGCX162qwonR*jI5_S_{Ph-GjSQdf_Y%-!r zDDs$Vr6e^`tXqtjbs2WhXMvs_YzK0L`d%$YKvp$a+8Jl-^Y9l&PQ3<`BfMuWQ5Izs z!J|Tnq9vELX7>Goq(CBUVKfd(85S4+rkHJr0;V|zY6FR!XO2Y(Elhly#!Eo>Y zCN4=S%_R;pC4*oD`Jqj$dH=Axo#dFFoXq0)_VDrf*dI;!&l`E_^K8@e^8DVTOYbs5 z|84h~-1pJd*Y$Lv?BwLcvbycii1>A-qT$3BI(>5O#RCTTSH9{BQE><7nZ5CAG=*vC zv`@H$V91G|91<|ux*x5JP?bn1h>_x{7Ow{fPR7C;%~d)Zi=&$Ioi&;xTZy|yemTt` zRF!YK1{#>(!7tnaeoRY98^n-D>p@DX#^!mc7Apu%=}LBqPA|%f^8ay0%xYSzbh>0S zdq*B^0T{n4Hi5}6zNhONhntAD#6slD$%(W1T>(h6TZ;4OYUJ@KuVLye!W?ur{k2U# z%Z%%pphUacbye`!4}8A(D59p|}0Fp(-Wb*rU)X1XtK` zj((og;DTjTZx81UeJUfJUjPzLm{S}Iq8OEbk#iRy^RwE2f066I?WLARgBqBW>?Tz? z_k2)n7R2<~iYI98kh+_}NnwWa64B7c8j!ZEDGlm^8bb%Um!Mgz!wx;Lq9tDpGyi>` zD9}?aR^ni*{C&tcNA>m+Vh0YG4mg3*-h@_4TuXCBbh)0;s5yNkb2u4_LenD{oUX>X zZzRAJmw3=MsMX`Qsvt8MscD_`LgsuBW-*C#eI+TirG4|D>a@qRiwyV1A#l|#vTrG| z692mE_}-s`)ngZ-sWw~2);*4@a9>Y|X+l3H?aPL^LRPMz0!0hO2%k$9?-=^qi&)hH zxtb!8JP7m3;4 z4}*?EFt3tvIPT>mLK0*#6WS*TvRJ_G{eWA9?$n}rXBmPFRn{;jVC@p1nXW`& z?gVK@6WT)$-_EO$(8(6W8`x={U)+;!&Y=*n~A3qOz|1Tn~ew~8t zp(YaOi6*x>EPVsdt!3I|2lXCN02pOKI)PV`h^^OqleU#%OD`$`!Y zf}!?ghXN=i`Q>n7aFYtYIz++>fzvz3)*$&dfm*7k`5ym*{2Gs9I^WN2ZCUX;Trayp z#*yRX4Gj(J&DONUwp-mBkMDYyWR6XGTKj3iG=7<4r|vzT2bxQwdRg>yb|f_D{F{=pYd+i z<^J%;{_ zD+w%FSLr{%dUoqp-Bpv22O({phZnsDjyN^;#z4kNwxj))iaRtE+e2iwC0VdQlmS7) z2P%2grw9Oc^|j3vL!XY^_yfJvfe)~|~o6-Av{fR%EPdLMZY0v2AP6GX*|#= zsZ0RYd+&1Ich3)$LSDKy+S2uqQ1h;i<4UZ{K>=%07p8-y`SesuGIPswximQMWNUVR z)eW(vBq!Y>h4Sru?*3r1u%XyZq5On*H|L-MIr>u4&DL_~)`?+k&-_;huO3=uSINFO z;32#=&PZ~lC-w?_^7YMn9{p}Z-|>e1`Src)GDQ@;EA^F{m?a23%S%E`Kf+N016{qa zvJ_>b1WsI2T$(G8`UuqB6bzn6YnE>Jg@AN|qrCxb1ZO9d5@*wQP7$3LIB`o!59F9uX`G^x%B$^MHk~AP$GknlkhPT^EUF|d;*@! z&IVowP!zjmV?*|VCKtrHcHd^5ot*(FkpAW62k5MF5Wv=>{?g=UM8RrhO;yuQXPfNe z6?gaI_pXOttJJ`}HrXv4TSx?J>rPDiYH&aIGrtvRT9?2aDQNTp=&Wri7P z1G&fd$3ID;B1I!CPk)W;YjO;o8F=QVAdRHY>OayB5aoUFE|qF`5v&%9j;7d`7q6eM zI}cdDh7>q%3o*`Eh%ekPwhwX^>S|Ojo43$L%VUmD?<~1AyA;b>T(b!bM0?@Y@4yTP zVm|bK3fX+>_L9Z$NZ63V zS}Mm(IBe5BdM-8S28e?~ieB`LIk~Z;LUBU9 z0(aTsYw|=nd)ElvU7epe3}^Y4`VvvvPd~q;p-<=vne*+1ipeggm))Fym47lVxSm~T& zbfq8D6qriMCj zoQNFLFKA2NoAa?r*Axb2Qg@4$0%RIpWJnR6l;dAJpI*|RN2HbG>{SL87+HXobz$2r zv5(0T93b;Yu(m+*=iU9TwKg2!^-R%aEu0rAP>a)3XG3r%0sLxEP7B+Ri|>7m$7)*My*;F`*@~nJS5zAY`r#}*?gRBz0~|xkbjIJa*fHhyYxtiJA6a_D1WT6 z9f-*^g^?Idh)4wcSC_={4hgVJh3FgG5TT0F8M-$j0A%cjYXh3Xl3vtXxhav=8JSt` z7d@RQ`tPS2(*mT^w;h+=9a>dBHwoC^f_YpoAc3Hn-=IMv7ELcJMloQ54XeBgR6!0$Yww3YpXlwSKA1g~*dN`arX_8yVcPvo{{Wz1KtHt`r4Py}D zR%YGRsxAIqWen2aYKzVN^y%Nih1^jzqxIU-RlCx@*r8+-PlKr~G18h3s;F>R+T_$& z2Xb*qHds->1h+0PJW$#VW8D?ub1wq)ZZzCEx^6=VL{Zs5`0YM*84qXp)$Jb}jb)$h zHkctW;AjtdmKgrQJA%rk2V{@2Pk5ser4suz;5|5l_@VJ`I5C6f1b;cgRRz1b>_*ZYM>oARw;_QYu_lk1j7FR-RfaD;2G zvsY5yTz@FZ&y`Je)V&<7N+0nwzai1tGCvHAvE+ll;JI+UYphY+_*^D}4|wVeTkD__ zSNELjVtGT(j^=+_yl5kO4YQ^Pjtif$58E#Z*F9RdGL-29X4+a?bP0b*^03Wbn*$=+ zX^3Du17YXjCU73qNHjs;#ifP$a5aPvPfJhds^tj4;1Hx-l`S&E+Sl2BlQ>NvIQv_% zBuS(sT&`DcIXd9je4gpfO`v@~fByLUL42#NMQ155pg}ET)zt9|4@6D z=Jg^K3coi(jFqOK#eN~M#kk-qLaoD{qgM+4xa|Z-sZ1nIAb|tGmlo~m4eUqq+mG$G z8|pZUage0k+wspGS><|>r)M9D(LSE|eb&`DrA`vQCg^+E-cKC0c)e^b?Ik6-ejID` z91(tA$$;()>Zh2GAwEv1Wm}O)VzUfcRh8>7`HzrxXA2ahaGkGXRI7T@o*1oi7GU_s zyjZo_wfsWxeK#Omp3g8G!dY9dJ!gGS(*Lx4(q~a(H^}gsJm_su{|$;1+hDTDoEryG zb{^6XghKdVj_oY^K(-d`o{tx|93@-yD=ogREk_KDH5Yuf=PNr69bas+eLSk0im)Dx z3Y1PJTr$te&%R6??iUAkgY47rV8y@P|Iw#^c|Cb6W?D6$bYx!J@k6nL*eV5)7N_a}LXbS;T zcgj55Z17n0Htg${%Z(OorRrY+?l@xY#k!8~)n+;Ao87*Khby}aA9c^@YxdyjKtVPka3%kPva$Vy%Ch9xne8aGA+Q&vYI$coujLA4by;OLf1tmzm}8drvxd z0KKeHB(RKKx1d=${@S)3O7p6~O0#7^#NA!Pt%^p>6flm0qWy2*C7-rQG?JPQ_n zd*$>sIi+C!M~cly^nWWkxrdXPRGp8kxX-Rb`*uwf8l56)5mK?1pfh z_guU{%$H2Pe3yDDsPWl3|*gVJ0%yCZ#!HrM~M$DW& z*0URJ@x|X*303XNsKJf~BVg=d@_*)pP)8&e6$j1uB4MGyNWuNS$1}9Or=SwQZNm_I zUG=$ko$31Ca`@gpPy2p=21bGTsg%gSKiGagygzRFUUofhdOvOy6cli5x{(83+YrQ0 zV;bEzCknnV8C!3MH6N!nKKtav?oG|_3edvGhZ(j{Ln1MkppCjvcSNJ6J6qTUD136tb)J*l^uRfmX}FSw5o%iIiqN z7N+-!ztw>mF?^mbTYcxi)iJrkmfK!a%I1T6kWk^t>1IVs7GINM*@=1P;@1jCiIkzo z=r&7!+En(XVu?Fb`$>d@R+*EcBN3)-iLt%27~ zeWJZ&bh~Tty|&=wk8P3g00alZ#cde3cra9x?^PDI^DKqcGYsICLaO0mAlJ= zuAY9FTi%$Jm-^a0InWaWJ4Xbj$iBA0PLieOx<+DW>{l%{TkEpvOieO8qOHH>OEmR# zguJbv*TdO9)cQrfOr7AM6paDJ;U^Rl>d#2YAz>(O{xiJNrK0ol8O_Nhj&EPdcEl(AOl~lT&r{b#?dF8Hh}(_FXj?G9;f)I)$9>7#W)b`x8SVmQBTDU> zc+-?-BvsWHXXbK}Af2_Q;1`R{RSGr-y-L#$(?NbF zoWDBO8y&kFOom&xI!@j)eFVO{I|jX+5?KRX zb}{C}_^sT@r}=fs_Zf!X^q0VQ^hM}O`Wa0WY~* zDkQ9?cT;GAii*mm+b|E2$8lc0t^NK8Do{&jX<)F!;j_oV|8X62x!!X5@p_qJf(x+Q zZoVBb`aWlSUOeCHf8Kw_bUjAL+|oP@9q~GQ>YrOwyp+pabp46W$`ou57lLjlRn=HvGK;m@}7FuI34{uk)q)aA67dqia6kvC}UAJhN+%2skUXa z2be-bELJ7=D(1EiDAC!at#XNVk+U$9YS)oD9>*H54(-lvxJ@ee+L>+*Bss^nCqG@0 zEZGfGKf`SO!CwX!!j3slu3k~bAxvW9D1jLktX5r%tSc)mo5aGoV+qilH^4v3aHh9^ zAjGZG45Ddb_DmzqD*!7h zfM2$_^~b4JCXFiMU5epJxdKC8y5cw3XHs>HIQ9i=oo8bZX2vFw&GbS!(IAogeY_FO z#jrhuY&3N+@ehYlaV{j}tx+In#7H`=ZuOKHzLspkWsT~^yH3^cVC`W{7@xg*t)=Bi zcQd$${^QG*(C)Otv!_U95FC@NGS(bL@dP{*RB=oL7_A91GbxMtU9!=7lkT)QvZZ8L zdf``xRjS}qQ|%2#@vkkZ*fFJB0$A-6#%zl5tmBa3P${yXxtC8(L-!EwHDQ(TOiX+i zSBWA2{>)J~Ysjy}|6>hN0(uc5jE{3voKR>z5fGIq`Nej^^J6JdDTU@%9XgdxuaeNQ zv}6od6xr{eLk<<%OS;!}MaWpwe-dq)c0UF8GUIEVYqs*Bin(=awASf$4eM8`%wger zQzUn+D(h}Pb81&6sXmXvp_`)%jv%;m&B3_E;MSOpapC?T^`O_Ry}3bT!4?rMT7(9+ zaYpUTx%38w>nO02TARNW7Fc0>Pm2k6|S)l(Glx_5q9!&|6MiZYY-P&O>2Xed(c5;dT> zw;3uR4`=;mM}kWlgW|1BL46fbc$$NRnCO?WH96rnc%Zu0N0bpiHO<+IUj@~}Ht!px?xu6EQdUc6;k!5wo92wbT z+1ufDwj(Fk2~WCWENc3jZqv|NO$_fts>NctSV|P{bD_YB$J2aLMjQrqoCcLsmUJ4X+f!z4X+c)r`dyBe&GGy9Te>){g5+Ev`V>z!obS11^R)LDREo2l zc%Lhc=bUcj7S~-iGu+(#5h7229cOR%+~1`xyU>n4b~ASGQ95~vaK(`u_d5nX-g4;E zH?xA}#q%CdJA64W#N$`Js>AW(fFcb>T0&x!6}#``tH3U9me*CDXS04|8*{7gCr?yV z6V*H%yNGwfd)QW&`)G*VtRy#E3ey6f%7>@}_nezM?eEaJmDIMXD0(m!rcx~rBo6OH zy$7L>`xt}qPjuYni0&iBbC@ZVY+Bgt93%W37{LBeZhvKrxE1@X)4$xDVakmuOUO`~ zatQnsQ_HBK>2j9*<(Isr+W6w!sMKeAR8|t(lC6&WGKcS*$W5OXrYUWJEeObrqYfp; zDw28Y$$L;e zq#jCcuu~grCNVN;c1toMTllBM9n1*g(6^(HQk}p$3dKKmMR(95_*IR)pu|zcQgkk< zDKgRKWvK%ost1tl8K}ghiExzmzl*BhkSMULR|4crZHblQp`4RL!jRRRY!FJ7iiPr4 zLXDi;O6+BniSRnfM`@#8&AMfT(pdD&<8R>!Ow?aq`F17P`vw>p=r}yK=EEkd zN(cOTN$o#NXL2Dr&@N+`E0D@v4Y_cmd5YG)C&=7V!cnR0oI>Ic1GA~+bcNRmNkp`L z@*&T+8E9lPBJ!O#*zc%$1;u4)h~G;qs0ubnl&xe>r9JB4X&$Q zHnz^L*4xL43#G}&iBd5NEuCGvgle`cy=KhMeSHnf#^_=DQ&}OFHBf$kW`(R>5fbQ4 z-<7nsq*YVoO&4f> z8{1a~j`a>tc@E1iYvqujEV!+Tn6V#%Cat6GJ}dJI*!L7j2+&ddD^#IkBr%kb(~(Y8}&M)cJ0>vI;N|HM8}3tW|? zxazq)2j9Y2*{zlgy&(}cUxW2@HQ`B(%>0tHo>$>^X40LKn;6s5MlebU%F{~Bcs?m8 z^`JySoAm`2eFQUooch$zz7h$l;m5Yi$wtF{K;(lAgtW#JjGWeQ-g^B6sWFhED>>rf zkA7AC)ilc_gb%0KTrnrU$gwi7si3QOIEe4_pY`ene803_OIN-;^!!us1bY)W{F6oe z85xcOb|s7|p(-Ugn@aQbkFlgKS_HFf@{S|4FuoBBRQF$shC8z(Zj3{bFizkn?1pjG zYtmP*hk!@V{*;U=XlZaD3CQEYw~0?f?X{vV|Jn$Z2MMso*OnB?{tVp@j(6jaA<#?n z!uu2M()V3TN>VA6nU-o_G6yx@L6$+Ru?C|_2669Mv_OX=Q*PQ*LO+KAyw|1VUoq7| zRZPR*(MhGWKy6|(vw}YjDH`ZFo%|}DfAYOob6R^9*)qpjCGU-%OZ`=u!Beo|wf@HL z8^V&}l}QU*=tblvxZ;9|?@Fgv_A`Y=*6*YufYjFB2ux?0)-oWAhZPx&cvnX*oI zHJMg3(Uy7^msVr|B?Py+i~VIk!K?hA!TVY!fhAdyPj#p2vQr=|A^81TaiVYp%76Kr8hUIY3 zG$&| zCd1_w67h7s>cS{HTpt5ar4eJ#P@qyy(SPu#lv(qAxV@~@>bl$BNhz3pg374ICC>4= zSFqLfNheE`q%M%6U6vWz*j$s>CLM;92vDPE2P0QjF<8qLqtW&G6>4$1%N&V9fSN|O zk_?$C}fTR05UL#E(Wwd5r7~F*PU^J;mNx_B+Ib@iII@0xjQGO z0TivQ@*x6TBs*SH%LaECh*hh+?hSSxLJKPwRnd59O2RDq;b^3{=Oc;D=rZ+pF<;3g z$YWxao~i&}aj|a!y>McPvyrisv8s@9m=V&lDf?(z!q`UW>}$O0h-^~y7gok)^&Z?g z852jqHgkgWcQqXOoI10x#MG3xFli@6$YZG??nEkAmue}CEb8HfAhJQTyC72gaOwgY zgcEdG+&sHzXmMCDQp$=c3pdYQlOj_N|Kt4FIHPnN?B$&y)*MPE>8SBxglms7AI^-; zT#j?ZVs)Ivd0d<7Ua;P*@uoycpFKG&AYSY`{`VM$0-t@^4@t6>?AL15Ze3w^sbd8`dC0l&==X4woH}he%L@6Z8ccU)}Yf8l+8@Su zJL~@PZ(R#>_B6H$vs6)>w{8J_(uBpN^rhy?reWI2CGLY@!lAeyVyC`#v8_ zIh!T(?=Q2}lsYTJC5C{Y{+&AsWs$}u7*LlwwdKnai?%xK6Z6X*BrciiwgFp8A@G}kIyxK_&adcVML z8{X)4pg{!?G+en~O810@;1Ma?6t$t!n6iKK&b~UJsz@#b+dc<*P|tq}^C00kivJ;w z;E%UPWSXzlNi!veDXDKTmMG6`0$JCIGYOf|Qu?dkPrf7MIFi@~j@(#^f)pid-w01f zV0frP$|#%h(0xgm_IG_6RuT8)RX1HnWr1&+T$bwK)6`Pr@zG?87iy=)`?R(3o+ z{Yj^q;EPQAQeyNa1R$7tcbH?>#mE9fH2V3b)oB`bcjyWB707jS`|Y$CEc<J=FfxFg0=lO0Py?2j;;I>Ad>g? zatui~cH{?#|?LglDaVjV36r5I(RRO5xjMTUms>4dkK z2Y{=q?K(p7=tT0azToZq$JV^+e$}76#a0IZf+#*XGkLSQD_qWTf@r2Rqxqndwgs7} zo-oGvh!QhogcyyfN_+~#DvI#z&=F1%S}AEk2nPTHlOr^5xSWx&hY(rhQ#7Vx#S$kn z3S2eE#LQIHOeyA&=n=qJE>q&UwL0V5;nWt>3GXNX=p^{V+p7NSHTLEv&0VYYl_gn0 zd}F3~kyZ1uFR{g7nl9uGl+;^DJL#&aQq)N4^FpB{78OXB6XPV3@gg(tSHv+XO&BPA z@d`;8qHs*Ma1bNQe1^i6oXBK_vN$iL#dm|l>`x*bz~@m`hvoT zmf^p7>(u3<2)Lvh`}qg)8Y4P7B@TGS4=*Q<_=H9caXiAT)~gRjGB&APNs!)R76Gav z^>H>?78w~*^T2XK0YeLzTuAtTTw><`KbW5OKJ?JzpZm<$_wGHs=!A~WmZ3op&+`@U zXk(Xstk+xHWuJEY?VWa?+gG#JHG9xQDP=0BDLyb|yLx-#_;7wU2mtykuAt23#H+6c zA9!H;t6v?t>8AX_gU0Kx2LMqJCLesN;gdIIy%B-s)pgY~2RzQT&Axu0y~{Dx=dJ6u zkM((*mN*7_C)$@Z@;pC2HsxxrpBHS;oZ9GjvtZdioN@!E4QY0?^bWzn4j{~CVhM?VCbp~_DvgGZ0T@1 z5zWgT`s?w9UdoWa=I)^vJ+u!5!*=lIBMQ{y|~jx2KlCC{(>2Tl!;=JH+rY zhz?;LAL3_wv8wv=#4z2uBG=bPRNG0FA~_LaMa2uzC0 zH_5C6**OVDTw-Ya-Rv{~$Z+Dz4ej@|F8_7cnx|K6erw&fKds)PAt?ZObuOsDC0$Ch zI~#76Sr~x}FmW4g4l@xQUX|kG3Z&18aT-&Vg$#xyg2*oPdm>yy8Yuh>Vyc9kHwwkm zuP264B_T=Riky&8VtNd)IW|^JRn3-SPP%HQlx~*mdy?_>dehEOdXq_WWUf3AJ3$6n zQbmv4?)Z<+Q}oMSzG8z)VvX>e_Vi_0->QOJrQ z%xA{~0FKE>{N0vE5<%dEJccMn$WoXpDq%$B{({@2)F1fkMaM#nW72UH7RVc$oBe69U9q8zAT7htyC8%r*nKs zjw>XXB+Vx=L`aajET;c~xr6`qxaWuWf8rCj{o%1++~+2eU2`>uisbIVlAce*>I|oM1f0b$8{Ia{Qh|Wz@$>^XFgN&o$oaK^ry|g z`(68sFFJnvTSBb{fY7UZD2+*I&r74N8|YaKJ@W@kN>&*F|Q z|E7m_{Xs-(o_;?&QyQ;mzA$x1JZ(=S} z%(r#b&-X3bwtdrwKYG)DB5lv>=`2moAaXgZjP`ikddG;yN%Tkqse<}Ltm zXCqBA>sT>pp{h8MD+`PW0)?a;um~^&m;gM62th0_aN&xgxQOwDX#8ZB+v#pn3{i}b zqcLSxjLVTOCu9jAr5NpJ;&xg;o=+@S+4jUDD>eGzRGt^bySkjWy%vd=P8d~6>Wo|S z;zaQhi+(a&%CJJaN;8m2HAoH9#RQE=6)sP5Ssh_Wa#0*85|fsNbj70mE5HkdG8e-T z$%!QjQ)I=c0@H&CQ8sR-^dv@17t$`do&jMjQ|QnrdV=NKT9i)>@C8=9eJSzK+Y4>z z{T|U96>nXFa{@f+=2llryjd>G@trF5WIm@MqVNP3*46L(h}Ro9ds=5#YrlKAt*c?kJ=xUl80(w0 zxy&(tQf1MmLa9=&>{#72d(dNE)e`C%0Ra2;mqZU7FZj;c{!Qfgsoy?Vf5(jg5IQ_! zUftq7JXYQ5WJ+u?T`aS_%Baky3zURF1QhZmyVEo@=xJ+jo?juKFC0DUzU0!a3szpT zwEcoDYw!K>1G!v5E^)iuj#afXXCV-rZvjQkWbg@j1SJ})-H+c zJ*r%~v^Y5_a)S0F{~iC|FACWcPaTpdPCrVaXNPq4wzAL1=W_Da*3{s*sQ`Mqh{J`Q7lbQQ*~{Or;l2FBis9u$P}^m4+v*g3`; z@JHYDxsLim$Y-V1tqP+cibJ`%CaJ|!2s&w7h>7Y6W1NquFvH23GHD#q03ZmAxG>p{ zLW@aD6M6s);EVz;C;2kcoRCyt`ZyOikX3OuslsJ4oE|U4SEwzA5-|*+Wm?_txzwdr z-Q`xphu?^D!a}3!k>TvyzT%};?aTi77K0f8j;0b?LaN54VJ2mvOkpOf!t{9|#{)wn zb&*f~)#em0lthsiLBuc$0ag;SGNdVqg}hME5n5Idri;lYnQ=6esgui9B;FG)SIdbt z)%4T-!UvWT&%PtR*)K4sky^g;827a;B#FZxj`KzdS?0wR2E{wE+)}mScq%Ey2rH!z zGs%)rmLrt_LP0!H(?<}B?7Pbyd=GySess_MAN}Y}dV>}KuD$N^FWvbc@4xcH$;84v zM@MJNK>tX4SN))S!dhp{XG+;r-qBj^8wpujEdD{ibFFLkpr>kSV{+8X70QHMYQJXt z>>pk}*Kz&N?~pq!+9fTbAj}={RIh5CIXGIg-sN?B?cI)P_o)D3|MBtm?goU=@X%O$ zyK8=heS3SBE$dV$7H&oX;M?E*(gP3t!Q+{%BoS6%wO8e`MWanKG3c*px6Td*9Nmu4 z*qp+w!Bp~C|CDx3SM1<%z%WHuSLVnO>8cB*YcGob^vl36+|T9Te!kp)Sh{LkYS%8! zrcI&BV{NwyW6y~*JApry zYsBySI=1GkfRXHxXOYs#L)HVsJ; zJ?|Xc{k;z|H?X2u@ih!#Ya2Sx&lBp=n`RY4|N zO`76tj=~5|6su^NJDpswGwlp!0N@KPHcF(vc`$kEDggZ8o#eg8GLNlqG0^0n{K*TA z)$VjsP0$IhSR*k`mm<}aImARrL@6*$PDoO?f)O$cm?rNYyifuFQDiF?Erlrvpb}g{ zjcaH`C%9Zm;A|45JDuuOX%h_V%W|p-8q(rJgQi3p}SL6iQ4MWs?LVl$bsz#sCnGXkI9b zA}{_0U6J3zpU2!>^qHss^y$xjcz)#Lcig&d`^M|9`$VZ!K7D3aSF77SVzF0oEEkKU z8oTUcecswG`&6IT-sSN3`<&}sGY3Wq38iasMvjjIfaAu?=63az!V7y+0)S9vW*&L5 zVh$#TXQf89)To}>H|kv1>~nh^Cz&$y#nmb`Wrl`4Ev={2$<7`7wr<<7=y_Qz=8t~# zrtg0HC$iK0s0g9vwwgpbRmc<#PVG#8z|rmSxxLk$&ZIX%NGOgKrPWm__h`jC3IOWs z{{zv|)MGz6wX`T^o_!$u(!<8D{~A~8QhWERH*HGwjZivuE}SuR)dl-zEZsG;yul=#y9_f@41`(m6LzvHevKhVe}~|r?KYifoID* zelEG}zskc$>DCoFw_DQOlAH7uGAv!ClUJ!jo-m@w+AjOJ+b2*$YiHfSz=+2)84NCx zllE_hzq2AlB(6Yb=8MpT;q-vkJOqIO031omLWV-hj1X5KL!680aAS~(Y6%sF&>WL) zl3Mz6a{!>gsSEXWfAG(oeblD{-X^)BPO1d}cQ)*jSu=bg%@xd)F~~%9gdxsHRhS_y z#Ar-iSJ^7eZVwx#MjifHkXE|UMm_8#^m@+JO?(9^S&lH(}ATFMqE{H4wBnS*b1S8~V zOeKhXl8763wrhO1Y%=A)Th zByDc9``kWT$Eo6KuBFa_-tqSC1^^fu^t7F35$@cvciXm&=Q_17-uWLq&o8hSTRQ4S zhh}QqtR;pIPem=Q7H^-oy3-kQ&+0pB6GOAcjmsl@j;dC#&K*B4vMeA>|C#TX`VZxI zzX$*z2+4=OU+O(j_3hsg)y~q?l*ll$rl#=DgXRm@M*F7>o%JF2jG@UApN-|RrP@y0 z_<-NqR27e=opqLTiTcQ|U%q7Rrw02b&VGyMd3WE?1zXmQjEpz6ILAi3P2G+>!^{i@ zENxa+fXGO|&{bc~^SLRXw5h2$JR)7WHNWR&qIsj3i}U_Lto2snhMnYx2T;w0qUTwD z$EUFMcLBnf1CL^s7QAL@Y3K;)Y+<9(QkGS>Hzqtj0jErDw!mPZP~>dQ=Fn^`mP|Ca z*A5PPHf~(K>+OT*I+1@H{GAmcwt#6;0g0>5b~%bLUtcCo;i{|(MNUr`5?oA<^m#EM0^r#B%t4ONst8+&on!dag5(fEWDtM|Vuf^C z64E55EJ8*EL5`{Nd?C-5Y!bsnAyFe$(KvoQk-gDr`rS|#0B&nhJ@n2A>&+lXw=ct= zzL`#ZQ+8!5o@c}#?cu(>To*0!v7!)XxFs5GZ#vngFwGWIMV?jTDga3HX#!{plb84m zLRdu-?mb2Lw?ihKd+f32Klk~ME*Qr!?6wbF^Y&W@P9L<{ss&M)n~Sz})(^TTn!251 zZf{+eZK}^#x2kU9(1a+8l`x@YUAu2rpC||bP;<+b;WrPIW69H(;`7DX$6l`g`1O^S zl>p(){!!;z7hq`i_^iFlJ~J4o?X->cd0pMkfxe0MB@Kl_F&La{XgI;w@OlI3bhe|j zc{P{_Xf{Vy-b#%pe?@eIv0bl7G*A#k6a79Ou}!T`3|l-&Occe3?|<=v?JI7-`s+XW{vSB@44=pF z(3s6;S+TNvWO&@wS~E60)70e%Oh*M?(Ao9Lxm+Qh)3rKdLo7E^SSE ze7ST+HqBrZn_Iq?7hI3_*2&kjOJ z5E%@kihPR3)L9`a$FzANBSBIOVR1I;plzf1pi^R0VA2CAF94_rdXui^H#3v|Vj;t^ zm31Bu%q&w`Y!Vd!M3~%cG1(xk9?6HCv@Oae2t@FrKp~n3<|I>w!w?~e%$ePb5RUzs zULFLlT%hJLM3sdMi77KeOo{0;LPn0sNg(E!w2jt}72-~b8b{b8+OCizL?*{lASDFP9C!kFZvAfifryLnrD-Xau17#s7P{}#N5^W*8KUcKRlE32y)Y0tK4)0)GF zj#kQj&7-rUrQbbVA&xe6J3PI!_7+QICay3lNt%pIL~7Q#W)64^9ko)Oa`yEj06=P# z)t79XdhqFjKg^yiGaY*7O~cwH@)|1usl=)D@@%F^ zQUoGVHl26YR*#NMG&I)E6EAnZxp(V@>(Rmz7H8m=Td)2>W=O6l#%L4QrB zH8>Sho7EUi$0x(O7H4v3R#ERj1d*Hc&U;4zfT(tAKJwM*_dbbhjfOA%tkOCI04jdb z#L+=%brr5w7Uq(LENg1FdwXY{OPw7CGY zx-wHiT&WZ&6_P8mX`A1J9Nv^N`NqNbda)EOLVH} z_#6GxFeM6Sbd9;&F)tBfs^ z`O;_mk6qKVckSNSFFN@4lm6N3OeYGcKN%j{sA-j88=u>t zui6<(75Ed}oNd+GSGTl(ue%mM`L!QN<`JMqg>pwUyjJ5JFC?52y|)yrrc8lyM2AEtK=#7LY6_QB>wUscjs~~0POLV zDj9?>g*sR&@SEmj_n(B zu50!l9us+?{xxn?(H85J-4Ioqt{i|?7#md z*G*eUxn%aBr)GV#XRpV#!Bz2#RysBe_MTwM3=MfsXUgo@vG>BW{G#O&Q!bsa0&R19 z?Zl|BuFWzz;CHrLX9fd~Zbx7^pslIm2{JtyVsk~~`lXRQM=FX?D4p;pNtbUn-Tj32 zqhEuQ4e*L%V+g~f_4RW*4w|;DjSWoeTAiW(Sxa}#Z11e2+vyz+l~}g1%P}%A-FoiC zgU5dR>a8ES3;+yO+Fw8ZjgNf#{kOgEt4}`iM&;e3$NHBo>vT2Oj|`7HYb~)z%2IEf z8V)$ythoYPDYRB*gw%LI*;1eC_sHAY3PVGR3*MjG`7BZz@y0c5?~4nLC>Ar!zK7|H zKMw%q!5+GGd9JTd(%4iC%&}#pYjH$I1Gzk7a+yqd|@1zLR=`4;(&hrC}W3sctgd#7LFhueqD~KG8R9P{u!1QrG zY9?*drGOllDR7y;9B+}?q?qJT$_D^CQu^)st@pKD@kqxt&vf7Lv*ycw*>bswk^?}X zoIREaZ_%`em=pq}Aym_4znQSbxQHC-GeVTal=F!P!kKLdMOc_PA&5+o2{K&bJZD`| z@CfjNkXB&2#EAgsoSCc&GRX#+sW%&1p|b6XMI2K3N{#-`qcih*wNZ730s4wRvDIkd zL~&m%x=v&F|iirjiI^ z#V8a-UKIZyw&(q~M`SL)VdDyi!+Nd>n>Vl7z55I&ScN!RQ*VvO(%DSDzTGzN_SSXV zr`*1#^-W{@JaU6lQKg<6@mtol(`vbQ$1wn)4cg`Re{21-Kfhq-!xtWWV%<|eS@P)J zQcD#8WM;yFeFLqxZ;y?K5RPda2G8D_0QMjN03ZNKL_t)srj4%Cm@xJu27jJZM`qFiuzU$6ko#(7&GD($LN6N72(NImhb;j+tcR4Cy!l)-? z=&ld!A24oQ5#4)~w%L@+mid14BRKh(k@hpJy40RMnoXNTj*sj;V!m)qtZ&lTT_5b5 zwshBc`@B+}Qe#qi$LAV5?ZX3;Egf}>i35>v;@}?l`);^ke&o7aw?FdyckjFBiOS20 zMQFEM5{YC!U#NH4L&1nzCs&yi!O4h3A(5N4(eXJ=gGHpI>3)y2wKYF9BwK%JdFTkA zic@QDVGsUs!9kg~eo1y-g6W-ne6DzWFWJ0;%VY|%oTk&281u=kMx4UuCZmL$cD7q5 z`hAoFZ)|Z642)JB(VH(=v+L~x0B~rpd%i2vzZw2cim*^9orh@x0K|y`&}Tpp%K(65 zbXmwyxH2om704LpB4)zsV*&yQPTDqF2m-)1ZTFMmA>qs)N(4wn&`RQjR(K@f-m2-4 zVANQdCzgHI z8{cNM^dzHJiBd<(M)Glo#5hxqDsj08P!tPF%#ao06sBN>!nu+NSw5@4%?m2F(3lDU z2_g$1&Yuf9jW|kUY5+*`Q5~U22=kQ_wNjI>m{#DVfufJZvvLBz)T;gcaCVbTD)QKp zpOnA&3j5+PA1{dhwD9mz{)Noo>;KhDl}O<{5Qa#Nl2DyU$UA=TGi@Kbm{dq- z_K((XXyF)c`p8t{y2hzKZ*7;&b9}a`+d0@b+16PP0HdRmF4qZF)N{Dk;jqqgd{~CN z|K6u>zTzvleeCi-J-;uRIHLi@0yMYRPEG{$CKaiW%nSx>9k$tCZ*`|L=$@_K*zVie ztLbtTLy^*4-1^zivawkB_rE`Tk$iuD^369j7hDiK+$VQhX`?RMH(_Y64fV}Pt2Cl0 z#=@!EPTRzQucpN^G3s-*)hsH^W50d%()Vwuw4|6vdv^oN@l)e|hGEA%lWpxT48v;c zoa19tO|8z+p_zsbI|nd35U{ja1)P{0_8FHnCdNaAT7hW{`Jo{skx5rwnBVn0(X<`_ zazETwdf_f^;0-aK5K=*==LvfIX8|Dd^!_=`zIRGRrvLc(@-?mJxzzu<_`Ajk&+{IRNzdNx zi=rTkJcj6^kdR=Sq!3bLra3k!!DMPo<1GanBsG1xSpaC0+hv&S&G^*0)<2dBdP|v& znpObl&CNDSYp2UTJz*q(O!6@$rq2pd38pOx$%<`{KpA}A``$x%r0H8 zCToxK|jWsN%S8&aXFv@nMd zfn(&N$&RAPb3#^2Hk|#I5;t>vuF~P*#AE;j1VUtykI}fQB?`I0(9wAA!wuEH8OY{Y;jL?IKig>1gYvfru$CW{m;a2pqeEqu6Z-U*@@I?v9{wU2 zs^kX4;$`+K*tB`gz~E>ka;gK7tGPZJOGF~E<*QqJ4h(jzX>cDHcdf1)IXI~_DvkBV z@dM)xTRO(ybOV5OW2Z!`9DjPxxz-Qt?N3bvT{mq3fU!6F8n<_Oc8}US?WBa9>G#)l zJBHqwYF}0N&cVSIYuW(7<*IYLhby0b>ZzCB_x_73|G)Km&$g9!96vn#!mgiu@Qy35 zy8eQn|M2nioY#_-&BuC%+g8?14*ATr23CORbkxvdn>{dU+0q?6ILPM9rmbs2ukJx4 zS@W%LWeyyOJoebB&x_*RAO7I|{`VbU`3miD_@8~#dgYdUC=nl?C3G5zMjjXrHLh#& z^h~=})ean*pj3EGgXQ$R{&^(gnMZ#8^2a}S&Dn2V`o8tgJ^mI&k#+UXBk%N;N@cG% zP+MzXvb_1&;o-KGb>Uz#;!RlEEQxS7H5=1+)CKkr>Q{DVXCeTQ9~@L(c5Cj9Cxuc` z{)JbhH{OG(Oia%cx$kYv-*Yjw@gqoODi0kg4Ifor`N7PA1FDrPqx+63nj3P#SUO(R zH(8h>JMEcMo7E z3poPBi$xrx3tUu+>r+Blj%iqt%L`c>RXEAO(HojmJy%|ork~_=yXMhDFA@sQ#_wB z(OnkF3KB^HKu0xleEvMf3XVw%LQH~d6MRsM+rn(1imcA?ISf#SE4Iq4`x3KTbqz0t zd;*AClKw^K$``!JUwT3S5HGVIIyk<6uJG`ZH7m7-K(RQIOK;FPUW-qzQZ=C_{7Gf`v=XvoSZHuyA<~EVi-rbnXt}rK>-8_t}O`(9HUQr7!ZLg zc%itcOE)$5?i;fQ)vR;%z1-Jz zdG~0~w4=>3?Fm_Gjp4btQYo|8s{r82t1f!!#Ww+fVc6%Mef5SLuLOX5zxU|(zxvR( zfAq-*pZuny#tZ&f{c;fBZ>2p@JS-rmF@cx1B4X)n(W1SZ?59}SQTTvVHr!W%F zMRS(*9n*h0Y`tI4vba%CBb(&S{I}Y#bU$W8Fw|}g0c?~X;O!iDV)->hv zT+-vyENP4GKUQ_qO>>VtLR32?U2Af$KMn}P9o^KHJ7gbySovMI{6AlyFZ`5PE+v2S zUF`?&6h)Nl?G;s3ghCb>^4l+1;_VsdaI$f2!^nY&Ji{#A)O>hf|LP5$l~!D$C_eY> ztJhtB#Y<1`zUtb|f5G$gFNJ@MA{0gLY?=vyD;JnDA_yE`z%glA$YO{fkt8d`w0L!x z4LYehPjMOm8YIrX{44-eQ<|lUy2rzdGzEQfZm>pTa>*h)ON&mEC#WORBZ}iPx{`N?-)bO+R zm6cA4&je?;=;{E$+wtjjs+Qq`-zl+s%K;UxVMUG+iZWbZ;A7Zgxf6oOazai=Enez^ z!W0Ced7(gH6~h-JaRrl2tPTH<8b-)fqwswkMYT zY_s)O{h3txlxGY_;L?&fg75Vtm+Dko&6>BusV=pqClOzxb{tIlnx*y_n@w{$1+F0x zofe}6l2?w4V^VZNCF2MYoKT?9dy4RHiAXq6EG*nLUVGi;&piFg=_8vquimrg@QStV zgS`_HIc2hG$K1ZQ^^HUO#=Ear(*LR(L}=LB;d!GE05lDjnoCx=?|b3w!}Z_)va!3q zdQB?;cwX;q*wPMwhTj_QxVU3z-&p&`rsKOumu_x8xVvxd=I+Wz)~sC?nTt(Ld0&6+ z?Y35z(`n;a?hg;W`n%`8z45|RjhXaD%|}0T^$)-K@VU;kt*gO5J6GRfIljl!d4a2c zx5u@~<=Nw@S=a18G~RgihViHOsG92tr963j2mlC;ruOc;lRI_mvWF;~%03#S$AXvLR7CgPBPzlAj>*Vi5r07+vI(Qe2-Df*MpE zWPJ)uCC3!La>ymE@5xM5D5IC^mmW^}XNqU2C0{AMBQ|}NensVFZ*JNpt(z|UHMmZS z$wRDPgH^}*fE3pi_{iy6q{5CtfRmUS063vQA$i3RJRMrHP7unKf-H*x5lG65Wf24k zlBb146=9w#`D!Hgk$j*@W-0OfR57_#SN~$@M0C(VNq*L`awa2uv#IMN&ISx204NFk zYjdHC^bPxxUOTN<5mH|{MgXqBlyNSi$88BA_*LWN)k#!LbyQa%l5*ueb>GB-sK|Ma+NIG>eIe|$m`v;z5J5g z`_1p0T%M2q(Y&u_MkCFf_nhaP=WsBo{bttdG7#jPlojZbjx!O%I$PO1Id*$CkOcQ9 zDGP#N7|I1;u$z5)F_dekW_hR#L)cSrY@ zz**xZdADsjThlb|6<) z*PT0i`N-#I4;+Oy>nv5D%#~qQHI(!_k#x~KmHi^Q1O!T%$Ju3ik+HHTjeF`!5;yD z@$zM9PR>+Gtt268et5z`p+3pM1JxQk#YAR>wpS0#I~Fo>W8r2?`j0+5w*Q{(m(Eq> z6ea+T^fZmEdXfLt@&AJ%B&azqCX=&5ZN$W#x*^EQ+);+18HPj=j*Xh(VsZmLrojC4 zgq8-%mlfP=9Sq|7A%NG+_X7YQp#9{?!YDrWhv{5lAr z3U(Ml&8{3;oPe@zi5WT-GKK9$@# z+}}kdCrWR%54E=MVh)+4t_2SL}+8#$|*ypUlJF^B(mwRr^G1j+FmoK(%U?~)VFTEs;i(A^s#N`TUY&g%`z4wcvumgo7 zRejzG0RvT`d9#zqZKu_ZcM}SJliBW%caF1<}0cL|V|J+Q2nX&^wrdYk*EzOJN!$;gGl0RuVgROK>@#8LI;NMth9lH$&8dG;riEeO{BDB{sW2T4*flsGpG=Sr$v1vV6KGWnl4-qo}PTIVxrVL3fNLfKH z+h!s(9$1hk7MjS}9LHYAP-d;QY=P9H2#b#?N!o&=d_G%s`$e!(1|BM(rN$+wI~!pS zJM_Waz<%3=CtD)GSoNkEl3^b93;kW^n2OK-T~bi@IQoMd#^Aqdx1F7Q@bZ)|kH5u7 zK5Zvn?ihPU9b0Oc%9Q$7nRIc&z*e)Cjj}yiK2zj44I~eh+v(Y*=roSdd{aL0KLNdN>XUcBeCDM`?t5s{pFVl^$#4Jeoi|P_jqcmO?Zok08fgfEWM`+A zmDXnD##NQJB;=-xa4pa}BH^GDadun!QV^Ll5@rr7GUP05>Mx|@cBqkIN6qh2bd z%V%;SH#dD^VtV7oe6d(KXEIk5H*em#y4L8f18YcB+4bp7Tp(`EH5_h22J82a?A-@c90ts3XN z)jKPCsH`g}FS5J1J0wfpQ$6VB=Y}B2z@RoGXBC3*v-iJxY3}u>%*Ubp6^e7GF4jdu{LAmYJ=a}#Qtlo2#*_*8QNW~nYY*z^TKN@+g*kb0CIBD zQc~miTtP?6K>oUv8z<}Yb|u{PkM*yNf3_iXlCx4)APeCG01uP<^0FA(=^$oYl;O>O zMz?Gs12jonF_cTtRsdil!g+dHi3SZjG$KsGLwTc)2_;J&&I|s^&;$SoAh81f46!<2 z8o6E`w_TC4K^EsSu9uB1GEDBu7nNc%9x51e4k*wdBc+VatMw2pgBOFew0# zl!cEe@2=Q_DA|z&IlF3oJ%+Lg+QvmCv$S50s>TVeC(C!xu8S2!RLu2AaX}#0y~d;q z=F5H_l=n(scgf5hw(#nd{?V4&t%}H4k>|x3O^zgzWaw72)|caDBIg-~5~A`2#>m6u zR%!-CSBZ;~v`vV4006<*7D#;{p6J>xLKU&>b#d(V24@cgv>5ljSy_L34-GaA6ozu` z%z_9}*lD|wnDu3QwV8F%e7`R9Oq9_5^tf(~(#t_Y>4YiIL-NbGfUgQ-DmKJF8mNjF z%3q2P0Du=-wL832VM1~7^hC74U1y)i5nO=rrk%3_RLn*ACTbc-c?h6O+CwZ%%w@Tg zv{it)JL#{>NcskU7hd@3Ump41E|s4L0HkI{pDlXh;+gUvJ^Gs6<^+Jey!3JX)WE>- z()_&qjIz?|q_oKX9xct#{%X&zhN1MG3Dswtl|f38QZ(E!qzv;8+niYb`d0vepomXy zY{>4M@PlikAKQ}nkt$Hfa*VAQG|Ggu8Zw0>-AK7N<1aiXPPs1CN!1yB<6=# zm9}KvBnVw#vG5=L__6Oi{vZIHKUtc;K3ObTUHBeFk!N3e|g`Cu&b>>(NTSyG#)mti9GK4i8Fr^VzOf-kU0^yZz%6S1Rfs zea`>DR(Wbn?-xa32MQ>H?7Pz9lM*^JG;On!zL8#iZQ6v~u-fwWRSCk<8%^uCWB|bU z@XX~S)ek+p&9yx|G2k~xzx(p>C*Jz$QNls)yMNu$k1qoNmwRhPtB&wrn77D%#JYjW zkR<<^Y4ha3lqxl}|5}@Ge*8pZzbr9w^z>C}ZZ1s_3-$Hf*bM1IKl6CysMp(AhH{ z^4NC{zWLUR=TDZd-XaS;95nU%K+k)_gNK6(HY!5qNqf`0K1~$bxG?C+Rv1Z>C(B1qjLJ}zks9M- zG6!v1Nf6SE69tro3IJf%+2@N#v+txi#i&w<$SmXpA5$QU1(bIHL%9xWmWxVpggrs% zy;!O_Y5@S;IkLJr{Q=LIPqc$JihRf~^z|4(va2PLG=hQPmOHi)`W}3c95H4Od1V<4zMO#F;%1r9H7>mS)=2*XqgN)r0*LtB90CJz&K5(Obymk0)hc*sPHGfvV z=I}lMaOH~{^d^1(RCKPov7{$4H@vE}b;%c5!cU+6kMxX0066`{jotSykBd&~jE0HD zM@L3(TyU807av`M6~I||d~(>NVVb5Hz)^?QDGyW*R1J8<`O`E#)-)8dCuiVPIRJ>m z0u$eSw)@rhCazWj0PS%0zW(9h2PYH%@SN}74fffEv9h+H9a-Jy8$6@^^!-zz+3NPv zzWBoMrm~*6EOldTm#g;Uc67H7;usnj;sXHh{^HF3C)Uc8qT44#CI<$`sLIYaXXVFR z&9>VW*8l)Pkd%z5rn>IPlt5g}?yl0PvqGn|Mg&C!f!?~}mf*+l9s2kzX|sFWfB(eC zA1?(?P`;2GpC#JN zerVP>P30(W$DHnxz210DLi3nI%dVVM3arHFm8ZJ8;;kQDXiKP*%po!Nd+~9$U?w0sxvJ z7>4BCmMqEuWpws5bN#vi03ZNKL_t)K+A5~(txFr_tYGRc(NPp-+b9DMb2Cz7GR$X& zoDrd7Juww6h^UzBjS=|i9p-U|82|!#(&vNn-_rCQ86EysQ?bEPIH`C_Z? zna~(Eir$!>$dLF|nsjl(fYt@A2iqM0F_6=2gwIBVHp;jx<&|bgnjv|Z+)Pezkkws* zWk3wQ%vkl`_cHYUFA2Jm1oh(2-hJWK@31*{tSb0??vp>i|I8ORTpZipeOr$o{c>qE zJUql|wQ03u8M(2pB8sN69;t`eFVefMxF=zILhDzp48w4Q+?*%3T|In^S>E>K;j>s>wD{yk_tv zR?hj4$`J(FePGRr&#o>TP0ft1t!z)o4x5~q8|$42%?t0i(h*V^GtoDNAP7mJZfUW) zW0xdZSqO?QDW)!gnxEJI`Om5+pG4T~$s5%kYcjOg8hqC!^<8aoi}Xb?bg+F)=SGeAlQQz}Rpsf;?FG-u11$Z%( zXCsX_X+k9j;SSq%fn471@^u6Z%xK&xqZ`LNFo5GZAy1xc3Y>Nr97#-BL4H0!5oen3tWJWg{F6{w9y`8+;8e zo~{X2`xb0i<#8656o#NkTT?#(q-P}BZ1%3s#ajtMkeuAKveKH&y!fip*0{{j-sTaz z#gVZyq55pId$2oK%pGYQ0f3l2X)Hdc_1G#zUE7Ijr^TLdUk(8DmG^ptct|`Y)n}SA zb|th__C+KIcC__}hWm-ct3M6Td{MMxf5DOfcjd*_`;!j$HjjK%`vOhVSHGxnZBNOF z8rF=>Os$f+mX;k;Q_-HfCaUgw*CI`rAFip?#O%%Jzt-w7+k>`d44kQOO%{dvC%*OU z*q23thjvCCegflh0f3?C{u8C@dkb}S0}iv@C6wwB;XOCAKr*!0P1rv$lD-;2SaP)? ze_b*Fy#36Hhkm||D_G?|&E1}$X&)WcOzpdW{g)?7mI+$1W0PtNX!&6Q6uSE!+{B(!cYLBtKse6=l_p>o1hJ<)qB^ zj#3y$sFX|%8A7u{`|5^`CQCwYSY74v(C)e8#oPAec2o~Y+=PJGnNTtO4sFqBO)4w|93sAP_wbjJcmiD8PNd|AQ0wnY=NR+{sb zq0xM&i*2UtU(Pgckmb89nJX@8p%)hD1sUpPWb|B2W~B^Y)5(^i%_7_v00_o5Zm*wn zYNFT$@$3y;L=?u#GCKQQ^c4aq50z82b>$u~lta)~E-Ia)C#0y?1Ucr3s|Fl89?A{m z`ZmlDri;Uh48t?d#Vg>?lfD_gIZu8|x3_L?)D0KTYQ zqdZJ$S*?PQ0g9p>uF4Rac6i~T06+ujWbWu~gaYb`g)ESxIKpG2qGee>D8i<|$wGNH zW?qQ88^{?cE(3rm=Ufoaqkc~B$q}YYRG;aFv)$Z-`Lf(A?Q5@g{G?&{^P%Z4hNhd0 zmTw2BX<%OJ?bzoL)o(LK3;bHmBVoLd0lQ9sig}1=mYT#7E&}+n<|HI#5wTQea@-3G zB^f74u0sEOgTE1^6S;h*?(nPMzT1Qy`|{5nF9rYvL3ZulbbIb-US4`>Np(y@=$LlW zYPG53{Mu_Y={w>ZFLe-hB7SRp>xC8o00de0%l+lAe`UL~rrvI{l>PqvhF>2*Fcbh< z&bP#Gi#LqTP7WKQa@0+wy@|PDRi&-Ve32zE40HBa(e8T-0bqQ1=E?1EzI*u0vw!*4 zYp1^N6ha4bY5_9&jSziKK!umx4$)nQ6#_3CnO_1^>kBtuA1 z6d#kXEW%rY7*~3MM$t9^1V^|wYAHI(6QOS7gf@_^?y&URXd3`1S@H;8 z$mf$4we$VW=Am|rw%4lvVyZHlALhYQ0Dz6Q_1j1M*g>wiC<3UF8slLKD>dbcixSk_ zvXb1-K{0tQzS?FqG?L%xpwxXBK#f z5JRwe(rh42v4V*5xgHO;WW6l@+5TczfOHuwl=IYNcdj&QmNfTS^-+BFkX`4^@*8z( zWvKTIrR8C6jyr2VmaZEQlOcc_o&BM#bk|iKAZn}ZN4tsA1^SklmMc2S04>4&C~CPa z#}J;Kn&YBUoMBB6V?L}vjZGWCRoN(~-mx(5Fz@q-J~uvUa5|n-$6U=^^HO+H1ka;k zlK5iK_-tq_7sXDDX$cD1qztVxjm8Q5Tg)Q?9ABMdj0Q%6d07}E4J5WaF6sn8IH=e{ zO}b-21USAC-Tv=jZk)Y#Tk^^xyd~_or{MglQj(+qV9mOm+Xc9D^D~Nzs&E`j$%w8l zZ%fJ#Z!GPRxQhZ}RjtK6iMx^-PBmDJ764GHy(6|IUHaMQ9j9t~E;bF^XdkZZDS7cs z%${_QC|>}u7%d%FJ7TxQRi0`}+ZKo6XhTtVQhs=4$zlcJ8?XP@=;$3XF?E$4JU-VY zWBuD7d=`-u@L|p2gxtl(6p<-`$%T<0zjnd(ws2!g@s&GLU0h(X@#y%F-tHlPwdd&2 zw9;3`;P~A5+~mMy+`U;XUsQ?%JY&AS^~#}FTmjN$a4uLo-@h1kV9mVVI8xmgwJWWs zxF@0@qV-01d|`O)_0E*S$olHem7(488%^oiv1|_Ozg{@=#BcUtI0^ut{QS&!V_x{< zcRn3#xm9qv{o&jTpHz|rwf}+j=T4N|z7rHhlGCG_8+yVM{n-+3SLHzThUm`gT>)9) z^CtWJ$mD`{D(KO@qvx(W4JO~8{xs^$8UMqF1<}#A{{Gp^mwlgl3gvKg$1gH8t=hX$ zd#%xTZDRk`)_~l|fohGFpd&Iv`dYLz^QL7SZCBf%#bS$&3n@F_ymnv8^^Yp$-jcih zfBvQM&+`absPJnhuuwjZa9w4EH;bun`!p~#L!ccm=orTi@IY$HfG+**x87{Nn2cn z<_>BlhV$Y2*fZ!gB*fI{O{fa=n(BCws5>b3EgO0cED{7=9QB zW%t^LyjZ@Ic`lH84saEi9{^aHxoK*6hxC9C+oO}X(cm~c zLG?30^AQOT5m~8e0p>xj_zEtLlY>c}V4J6BJ#e2s`*1MVzr!+CAdNmU-Y#eH^5p>^ zYX<=U1tdry-0rD*CN$>#_{?~TOmDY+s2%*CU&aFI7_!Z>P+Wuwrb&YrOEpDIuz<@! zL{`eMEajD=ts>mZN=*w884KZ%%qrq}-{5bD*u%Mff9BUr2n_b|R=HP|v;aUxMpA1_ zr^T|kBnk};#4vPVVAw?yrmTsozSIT)89NiI&$hS+yC?5SKKqL^uE{w+-YW5R8>#N= zz1ZA(w6gXu*H9eI{Qf4_=;`NArQMSz^^#VfZO+)0FshlFou2oP@a*XrN=l0)N$S;C z{&eGd#qB3{>d5uI2iF3?wBFRyIQ-z#TU_R33IFlZp07Tt(DhFOK;eee@}j0?-ELiQ zRTHMHjjS)~a%rt4>`tuyw8}q2P1=d^*5UAjYhoYYcJ-m(ng;Z@e{i~0b7Aik^wkE05We&Jl9kue68dMRb(+2POFrc8;+nn1`3!Y6M|j!G@G;M{5LPUgoA)0MPeO z)tqa2v;Mi@1mE93@WIdWe_MLAjv{G4wWm*zvieH<+Rf=rwLL4Nqji-X@!9IB$+^*< ziQvqT_DgNSh0&Ulu80TMwY+_nqmX%T&Kvsp3;+Ova03G5n>MMQd@|&Ze-uPV+w@aI zADxLh{9VVK+1Rb6*&LyVMAtd4&I;|VAL7b+!BIX9b)BwK`XyYuShHnUPVLo>peP@a zRM1w`o3eG4B!hng{J*0$3SwM!v%Vf#S*SqKb`0fN$r&ytBN?ZKF}Y&_W5fu>kg?oU zonw61J_-OFlwByv+AJ&FAz#1SZPR|mw(auuECdIDLA!R;F%ip6G1Chc+AKvqC#gXJ z?qR2AUBo0sI{|3=4viSb^*9EA1#-+C3qV(JY;1(*kH;FEy#RnA930_M^eT^R3|*uN z4YW>%`iv2}5KdI5wV!0D7(qnETrU7*h}FB?(w-kE?z0*IfC2bwy6@GYs@;mrJ<1G< zp{nNl6NNDo&S?u}LlKORh!+?G4|TIsv#VDS(pEmMu#gkJ_+loThNz3?B??h-1UGiK z^k6(cagyrkB8maP2M=E$#!v)jp@Q3mau}ddlxwADc&M9+o{*v53$zIbT#SkOZTcK( zM7L#T&^EivJ@U%bxZb|Jp*#)DuX;OnyGMF)gw>|eD86r-S*zxUbXhejcA$ZpBp3%5 zliTSzxUCH@08q4pk15Q=xEB^WO%1R1m-z;N2UuJNXDweUEyIre`R7g)0|1}Ti;It{ zsks$n%*{(LEv|CWgwbh1=6Tz2w?2JGeAAUqr=8gJ^yb03!QRqd0N{vtYo6P?<#!M6 zc>9q(?>&Ccr{7=y+I=h@8vweCx`rEuH$Js#YQ!+3n~lf}xpA_-U{_K@bysYXn#*H1 zHMY&qEi^aZYKv&MIj>!)*|EO>04{%CRk$aa!(0Avkh_Zy{Am5#&zt}NH>K1+$g8oo zd*!!F&xx%mZ%bVhReP;7wjivnxF>mka>J>CxbCRCkf9>Jl&a@2z z05D9?XV*)A^rw_(?o0XE0m@0W9j{7!Fi+Q}GtVs0Y}7MQ(c7wx%L;9(>s}cbrD>-0 zdQ<-T&AuT()rlLI|C#_y#>=v{l>15z(c#nFIU*~ zQ_D_+p_$HK{W;*!F21jq_FAJ)ZcN{`_VCS#E$5qKHpLD!3>!_B_}s9D>Mjzo7vI*8 zzPhY6D=+@)vAT8lq}6@Z8j%?+l>K`u9sWOL2t~LzL0eq9U-)u~8H%JWD8ig1IY)~O)3=Lp&PGM(ha;M0r*UdbXD6903N^{l7iR_%L_sa)kwCU;)G^LMxB^saq9-tv zgCRIUEjVwfwlWlLXCopjJ*~w2Cn*j4?j-Iv_@Ba#efife)L5-{xGAo-G?bU0QCeCP z5ff;dU6{}t@^>Z`oo*B>gh6qt)*Iby9((W0`;I?-%xS%=44%X6IR5nU{jc4_=Ci9# zH>K~0$8fahR72sOl&Z2;S6sBDq&hhzuDR)!V(^vom2t^xcTYJ0Ts~60>HgK7+Wp^K zs~ecCx!M5$g&R_fudGrOpO_jk(5v$e^BC1kd8yq;I`v!$PZgtT{i-!)Z$|Is7Khmm z00A3QGk$rf_wH5cpuZ^g^ z-kH8Wy1J}&Wu{DfbD!KztW?TdtNK&dMgl-r<$$(Jzv0nESpW=2Gj=8X;;SEYRrXKo zjD>qrI%@|fb;k6Z*s9XSjP#zKfw-8pk+H#}Ba_}Ciove2*uwC}%N@}hV*08y%5b02 zrs1eZH#h&`G)pS--MfD1!_&)7WAx-@+DZ7`vxz3i-Y<&%H>UPoY4OjA(9~#HQh`sH zXM4?n)JxzS;PJ(g)9?Igu?v;M?rd-FkBkngzuuX*BcbAWL(cx>yZyNT>iBONLbKWY z^2;yp-@pIihaWB~T0LudRm>41W^%b&Jce+%sMwWkvZT4Z1ec?Rp*$O96yRPHF@KLdk1+yV^20y&}MR6h#12Nt+M zj`1-ieKQV8(RPNRXokcQo`as_VNw>u))QJUwqKuZD3}}2X3=Je!}N}YcJt(RWq74= z=BbY6zm5!48>dZ#Q*XC@Frsq$u~~c0YLiBgzB>`01#0S;h*S#^{u-mQ=I?x zmtpzgVR>NyP<^%~eP_J3Z(?EA5}h8rBr#f2RQaPHKi1XRN8F5Ues!vB=l((f=&T#0 zC^|A__0I1sHvYX=_PzPk7leZ>*pO1R8coRNu#z((Yb)Cla@4I=8g*)5PxVmdgIQId zR0FLJ6N?m`|TOd+-CMTygn&E`h@Yd$O@WcSNjMs9bC!!#t<4SwTni$QE z_Rzh#3)-oP+HU{*woO+ywLJCe;0GsXs+yg%^EUmI=7W<_ho3-DwEe#>2z}gWE>G+& z*LLXDIbr>cBVp-5n$EFF<4k&PYwgl5jEnR2wzclvN*+}CAAR?vh1 zz|f2nML1S!nu|&)AT9K)I~JfPv=l=EKng#*&C)YT%)kohos)gGkpzAw0GR1{8*P=M zo|BYDhv=!QHhJuTsa3t zIaX?li@6!7Q7P)9Cw0E;028?|O&DYO5#^>Hidj^_4(I#49C&bpEMci;qt7-@GE4wR z)nw@mWQURrX`vTTz!5-6#)ctm1XfCn+69=qm6}#!egH5*^#3&b&QnbV6n!93^6m46i2~pWRV-%oLnqd|wiznN?!!n8@=w^A+r}{P?#(F($ zW40vJXlH+-9o<(~ez2i(r$>YjM>K3RU7ptLS7tVuht>R$ZtI{QJ6P)+VgsLxN^H~& z0vG^;08q3O04Und$CMUQ?}dd-QiCd10JAFf`oA9k*gZJVuKV=0i|_yH+=~ytZ=Snj z-L`Xo!P#R)0FaiJ*wfuVKfjp0rBZoGB%-d)zRbM%>aw=Tlt8DQ80;EL-yYw5t;=aA z0ASCr_tqV)9qU}Bx%6=3aQo%u+iBl!A>`hwlb^K)kH&_rCK+HQ9= zHny!@m+K#(>h9_T0E(jPsycGlBm%&t&#E@xpY=5b-I*I>RYC4&KPZh!P#X>NquNz+ zUUCW(%WpKLu8pcM>WVE0>nb0JUKef98peCZW+a46FROB58M$-9}7n4JZ%i@Yy>3xH`gLDibX`T=CV0{PoE-S2{A*#{fXZ z@dgA%(s!$BPL+rMmvh3aZl`Qe)AMA;AMRNTkov}w1d!oaiMbG53BF{N#KJ! z1^(W%y}G`m#c78h=)Kq+wkg4tyIc2Fo6u7fmf&Ak-Qn#klSw6hem+f&Z2(YR)|!zU zd+m7bx_i0uKuO*-!g$MUb`XFCxX{0+es0bV5|lMz}U=mV=31(NUVQyL!Z<2-iv( zT*^LfsNX0t?8EXm5VHc5*J>V05(PVHsGA#=;M_Ec>Y!Kb;h=(#WA?lqv1NxcoMM&DXjBKp+=vetPqLbu+?YuZu3d-k7&8Y1y%iGjl@&qsi$}HCNlyH^vZl;^<2k9{lyL zRc*Onq_^B#(sI2!I9erDh`Q@X;*!*LRUH6OU)S=$p}iFqb*Wh~wH0mg+3J?^-sDX& zjaND&*F=u?P6(9Z-YYGEn^S3u))lp|WfJ%N)R6BUNc`h-1=s$Xb@C7X2e&a4UG@Bj z$^UsT&rQ;Ir6nLYaxf#+;nh^>A;; z0y&BS=7oi#fQ7J9quBW~j_w&}m#YT?3K$Plxa!z&Y#B}HdK|MDpb6S4#Jwgd4FD+7 zpdn|!Yeons0vNn@q18mrFHmMX?Xc61^7(oZCii16>bea%2b5T#g`OoCf{RM6^dh@P z(YBjyiD;U(0RYX|1gHW4EaapRapNMlvR)^s{#wT=HpUDQjdo^n$t*!V2*ye>b|L0Y zuhx~xb@Get-vKaSjT56GoCsIS%r5x`gyFtDcGX1|F2O)7yfJ!_pph89y30Bs!xa)t zI!fqdsA`7N@iB#knp!0;N?W<8oS>N>1vNKnoazGr zms7~clr9rUGZX+q({@)WBpVf48Iuh4(m98HSOI;u;T&<=xtT_Wp|{GDKh?KUw^cYG z0CE-&0FF;|h%iBlD5T#yF2O~U&KYl(??Q zWLj~dRh{7Hu3GHJ!Z1wf(Yhzoer+>5j{W9>VQjI2J|-h%Y;bC3+*G(Bb=Bx-NSH6f z0KpI}4vRv7C*pRL_GR3k*?6jfa1guRd5kUO9)IXhF0yb5bEAeM_q>51NX(w}rZbJI zXq88ZN6WRY__Yx=*E-VHN0(k}$XmOdKP$f4kd>b>K0HG>so*G|3-6Q!CHRG>2LXU- z+|+fWYuR#P&7sU2A6Egu_J?yWe_rd#OS0MQnt|c}`0k>Kf-gcOCOmX zT7RKEYJF7a)sEb!wwL|(OPXflzrU;Ljg!pnyG0O=LIwbB?|jL3mj-T4*VgunecVRc zM#FN$8n1L_?n-Pb>k%lp!D>})O;cW8dO=}UNl}%}>gaACnj5ubZjPIqoS)ViqjS~G z=bB%$a?~fCvm2$! zS?3}{CdO5ZG$FE_CZv{VLfXJVB@|F*+USl2P7xC`cfrXxhoc6#!r+_1^em zOIsT=-{QD1L3OVYZOIfAL~vs@#Nz#i04hU$tkeu2Q>?5&aKV*3%EuK3ddv%p=yP-m zP>~Y%?6GQ41l=Mplwodfj$X3d)C6cT5C2woK9CcBS%#>W}XHoig1=vZE40y(Ka?JvQs8E z%x97s2;cYpVWudBQk1I#3 zb9cmBESA#ijqxdJv)No$R+E?X*ZLj#+eI?QHsMR9XNYM9w<{_5lM{M`wzJq&h? zJiqaci+?Hk{$C%s|K)9KzLoLU|2*j$ve~VP`C(;WH6^8o)m3&(PZ`WBkdYH}?P678 zp1S-(Q^vly%kP)rVq6uksy$I-wcGN4xknnLJaX?FGow?k`EBQFKi>ITKw-qDKRjqB z9VPFTq#R70&`q`6=nhI&^)`=)J-O3Uvw@*r%MNt?QgudNOv#rG$%Ww)x~cPT7w!D% z8rRSlKRI&ZXUBh)_Tr`2FHYS&Q2fU5uBw4ijXq^vcw=!-e6qT{sHwiLIXEQ1$HxNz z`uYcA5<+UL+F~+-db>t27K(`2gAGFxwFh4*Zah*dNeE=igxx1gmYvCHQ%~>ll9;FV zn$6~x6IFq0q8iRNhOG^+I@6@i4jk?s*N*Fx(jqD=>*Et56B489>syMhRENg|G?(?n zW(D2&tSV(&%wV&|Znk^J{(Fkc{Nsj@qNuG~w;nur&}1_8_xGPUbLPVj@7g5V+Tm0r6A?%1|OBVnjfUK3~_;P&T8oe}6S$W9T z6bArf&Ivp1^k(_>JGvE^pP4rDP??P~VXL)nrx+_AQ`jhj67?ISy8YOJB1{4RQ{==P zW%#z|fxU{21k9eB`@Gg#vOvw@2+NNhG)@h$5H1%HFaQjY2!QLVGQgk+hM^oQW#HlN zQ`E2<=08qo-C16Pc3rMG?Si41WT>t3i#iaZx*Mqk-b0QY$%wq1>DCA_M`Hq8$QUX`>A?)O(831hK8a&(B)3bJB)~v=m9Zwg&|G z`S^Hh2DG_rk{YVIL?Th)?&R7l-AXUTgD>qoa`-C&Umz3;17ZT6DSh^Zx?jB5@~fA7 zUwOIrl_#(N#4E^4C=?D zdfMpc=fh!h+nV}w3zI1abkz;5-1ZAlu0X+t)cVS<%#Cqv6`H(zQ@biOl#R(bl-qQ&Stt~W z#G=i=J{Xi6dHy@^BR0D6&o`=me_{WJPh@|0vrr_O?w)p9o$(vvYfrbOZiyQmG)AWd zceD=XtxXb(MYkV?$K%(Qw{O^*)lxQ)vo)dei>9<~altYELZNWFdun=M`njs-AN}|- z)9BorYu~u=i?8g{cDYiPxht{$Y=^g>ho_&Lh$9*wopzJEjgF2x9fZ|p3knLz%!_Yr z=+EDgTz|bMbxT}dwKh04NL!~Z_|KgU?-udc+@vS>_5SsWwO7wYS*|k?@cC`898Y?3 zpCZ6}K{GR2-5;|fP1`u)6X|E3wNijYrv*3FcjvE5@$z&xFIdfHn^Y?4XdcWiNNlej z%-j&)aG|5{zKotL-ATKXSge0frNe*x;W9Wl*xK6q^wUpsx!jPDkb?&go;`c^YvwaR z&6BzSJaOfa2vr~e4tgE{5I_Z(lBBHw$g+|E1{jjI;V92W8yKKmG$8C zhi*rUtxkdYi%>T!Ge?4xi%QMZIEF1+5gZfUbU;xY@)RVd#X$W;o=&*OR>{_T6ai3gg5AK)=1q8;dZ|IxgmBAtzT>5Z+`r zSvGoBig_7nT@ZWGqiwU*W{XoW1oL1iw#W;<<9Wc1#Vs{o0su89a)Rn%fRST9Hp;+7 zWi${7g2GJ!SQOz}sc8YGoTbO)sIS&J?86G|w~ctSJ(Mg(g{e1)=aDW7|8TVJp^mdZ z?7930ZSC8-Iu6236Nl0aePpV#P?D*0>b+R1QDVd$3pCPt4kmNZ3n_(&A=FH!jRD8M-0J8Tb^Mu^%A6LQG z;`nbaq-==|jPup?Pg>@z5y=6U&Q)&Ok?mRr?bx~T+}SGtP+nG(lbhDs)EBH)i6w&K zGmYsRV|YRi033h$(huHyaMR;?OF1lTF6+J*wtxK0X_we{#>SZXqHdC)3O1w^UtNVJ z%qdK)sc4VM2yU;@AQ+mmIi~DbedL-*qs}nVJF)mRpWYF&Cg$Dz7bZHiht56i8RO^L zUiooF&OQ1nUl`bV;BuXUuZi7dO`m{Yi%AZ%;u^YB(krQ*)I!NlCKrmLMqfs7lUR5LUapBvgz)|ZwQGt@WXu5^3t z)j#LuW$<|1%)I!jvewMav31uw{AF?Ha;2oJXMPGUDXyMQI^i^xr+3JQXo#{Ih8cTX&GebIB29nYv zvvX6+%WKO@s`Cpns><4e{8S_kw4Z}XSU2|HGKdjEUiA2)P- z02qd;tE=<#^ZT0l4r&tjx!4`7yUnsylXxae)_+op)B`_3iMG(x@Hl2$~ zDWEL$EC7V!nJv~@$7%(9E|@6euwx()PXd4`YRIKSy+G=h+$kL8xr`YCfT28^vGXw( zK{(-w1p|PUnIpjA$y(lwDS#cyM)65%003ABkB5lt)T{to-4G&xVF=4fn>mQcL{EBQ z;eGZl1kfN(SgYlhAcF91}e*M|>QV zQGmHqwB1$EiK9YrDW)y)!8;KDv02R_E?8ii!G4@r>J2T!ga}=V;CO+6af@Nc@*uW8A676 zPtlq{wt9-3U?KQ79^p#-z4u`8(e}0bQ@sKdtBw}zPF^ag$Xl0OS=awaW*-q@lCCy13#n}{RH;J9<#7<(z zv7NZCYiwD)S%s3=NwN3dJ4k{ciH?~&?}vd%3Z$Im-Hns%-_H*pNZ`)JUn1pr37CM%CO9(rOY09-p! zU$`fQAc%`+D!1--mIfAW%4=!qoSvR3E3GLg$f_=D;Vbj59KEsmt_%Pe@0m8vo8t>z z_1ii7lW8GU`e7{qxO>R_!#rE7`ZjJ!Uso@qaCZv{_v`5%4vF>cxG~5xa|B6b9LlV| zY2FP0`QP4s*Xv)q`;AA%O6O0ONpI@7(vf~wM$_d^kyIF(5>Q**k+vzivZOh`$hBQ< z$(8!TO{oo~U6ILw*nuZ{b&(k%0MJ#^wJ^1qesIP2+)eGa^ZUCv%nj8Ig{A~Z72@{t z-sFOay6c^}8uqhf=lZsNSWjIz=jB_&mvS*d;9Bj#CqNe+Ffj0gAN=6x$PECkUqnHO z%)-k4?k9H0)KUN_J>6JvXY%Oq)XemJ zN=7t4KqwS!*;4rGEAK5VE=5I$@gCN*lZL_eiOkKh08oCkE@yx8@>*~i1VMcMXZ!y0 z)LEO^4glHP;;S#UMaBeS4)=AB!WtB8N-4YAkX{tiSlSbr8BCI7SM@;Fy;-$KZ%p^C z6kYgdhVw4rJgVQTirjL8e91S9}l`1Sc6-`jyG*K08Io~){OD*<5R=dz05s*2AJ?P?fG&x|R%*08ZC zhhf+qJBt8-qR7;&=o=NSc{`ITF0>|Zj_Ix&4onTIe7jN;sSU`EXn3o{c}z&8iV6rn zSdjL;!&0q!en?mQ`qeE@97i3mc)RvaixQXOR zX^}0Jy~za;RVN#B52V(gXh=JdKG!$Zede~c+W*%0AKhht^{ZbU7#Mi+$tRB;JJ!_H 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 E*V{jS0yxON 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 ToPw$LLBORTqbgk?X&UrD#C5+F literal 191358 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

gU$#ZCqko%1Fpxc)0>FJhzz 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�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
)%v}LD0Wj)MzInSC#a+N%FWOGEjo1FSC93&$)%! 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 K-~SJN+MC<} From f3a981418abfdff7deb64f3a1508994550f55b48 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Tue, 10 Feb 2026 15:33:41 +0100 Subject: [PATCH 31/37] fix GraphRecipes testpath --- GraphRecipes/test/runtests.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GraphRecipes/test/runtests.jl b/GraphRecipes/test/runtests.jl index ccdd7b4b2..b2cdc9946 100644 --- a/GraphRecipes/test/runtests.jl +++ b/GraphRecipes/test/runtests.jl @@ -20,7 +20,7 @@ include("parse_readme.jl") default(show = false, reuse = true) -cd(joinpath(@__DIR__, "..", "assets")) do +cd(joinpath(@__DIR__, "..", "..", "assets", "GraphRecipes")) do @testset "TestImages" begin figure_files = readdir() @testset "$figure_file" for figure_file in figure_files From 741fa2a1aeccf0d5b00b7193a4e14f3d6ff1e8a8 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Tue, 10 Feb 2026 15:34:23 +0100 Subject: [PATCH 32/37] fix offsetarrays --- RecipesBase/src/RecipesBase.jl | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/RecipesBase/src/RecipesBase.jl b/RecipesBase/src/RecipesBase.jl index 25739d1f5..7dcbb5060 100644 --- a/RecipesBase/src/RecipesBase.jl +++ b/RecipesBase/src/RecipesBase.jl @@ -82,12 +82,17 @@ function Base.getindex(c::CyclingAttribute{<:CyclingContainerTypes}, args...) return Base.getindex(c.value, args...) end -Base.getindex(c::CyclingAttribute{<:CyclingContainerTypes}, i::Int) = Base.getindex(c.value, mod1(i, length(c.value))) +function _cycling_index(v, i::Int) + n = length(v) + return firstindex(v) + mod(i - 1, n) +end + +Base.getindex(c::CyclingAttribute{<:CyclingContainerTypes}, i::Int) = Base.getindex(c.value, _cycling_index(c.value, i)) Base.getindex(c::CyclingAttribute{<:CyclingContainerTypes}, i::StepRange) = map(i) do j - Base.getindex(c.value, mod1(j, length(c.value))) + Base.getindex(c.value, _cycling_index(c.value, j)) end Base.getindex(c::CyclingAttribute, i::StepRange) = map(i) do j - Base.getindex(c.value, mod1(j, length(c.value))) + Base.getindex(c.value, _cycling_index(c.value, j)) end for op in (:+, :-, :/, :*) From 725db24a65fc3a9c3ce6c2401c3f803ae75da2ba Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Tue, 10 Feb 2026 15:35:18 +0100 Subject: [PATCH 33/37] fix handling of grouped barplots --- StatsPlots/src/bar.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/StatsPlots/src/bar.jl b/StatsPlots/src/bar.jl index d8bb74926..7414e59b9 100644 --- a/StatsPlots/src/bar.jl +++ b/StatsPlots/src/bar.jl @@ -59,7 +59,7 @@ grouped_xy(y::AbstractArray) = 1:size(y, 1), y # compute fillrange y, fr = isstack ? groupedbar_fillrange(y) : - (y, get(plotattributes, :fillrange, [fill_bottom])) + (y, get(plotattributes, :fillrange, fill_bottom)) if isylog replace!(fr, 0 => fill_bottom) end From a75e82ba89f5e8e7aa5871231bae8478bae7c25c Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Tue, 10 Feb 2026 16:04:17 +0100 Subject: [PATCH 34/37] handle 0s --- StatsPlots/src/bar.jl | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/StatsPlots/src/bar.jl b/StatsPlots/src/bar.jl index 7414e59b9..6d68cae76 100644 --- a/StatsPlots/src/bar.jl +++ b/StatsPlots/src/bar.jl @@ -61,7 +61,11 @@ grouped_xy(y::AbstractArray) = 1:size(y, 1), y isstack ? groupedbar_fillrange(y) : (y, get(plotattributes, :fillrange, fill_bottom)) if isylog - replace!(fr, 0 => fill_bottom) + if fr isa AbstractArray + replace!(fr, 0 => fill_bottom) + elseif fr == 0 + fr = fill_bottom + end end fillrange := fr From efb170afb28251d08c720d3ad8b75d813247da5e Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Tue, 10 Feb 2026 17:32:42 +0100 Subject: [PATCH 35/37] fix indexing in single color, GraphRecipes test file --- GraphRecipes/test/runtests.jl | 53 ++++++++++++++++++++--------------- PlotsBase/ext/GRExt.jl | 3 +- 2 files changed, 33 insertions(+), 23 deletions(-) diff --git a/GraphRecipes/test/runtests.jl b/GraphRecipes/test/runtests.jl index b2cdc9946..8a86579e7 100644 --- a/GraphRecipes/test/runtests.jl +++ b/GraphRecipes/test/runtests.jl @@ -144,25 +144,34 @@ cd(joinpath(@__DIR__, "..", "..", "assets", "GraphRecipes")) do @plottest light_graphs() "light_graphs.png" popup = !isci() tol = itol() -# using Distributions -# n = 1000 -# x = rand(RNG, Gamma(2), n) -# y = -0.5x + randn(RNG, n) -# marginalhist(x, y) - -# ----------------------------------------- -# portfolio composition map - -# # fake data -# tickers = ["IBM", "Google", "Apple", "Intel"] -# N = 10 -# D = length(tickers) -# weights = rand(RNG, N, D) -# weights ./= sum(weights, 2) -# returns = sort!((1:N) + D*randn(RNG, N)) - -# # plot it -# portfoliocomposition(weights, returns, labels = tickers') - -# ----------------------------------------- -# + @plottest directed() "directed.png" popup = !isci() tol = itol() + + @plottest marker_properties() "marker_properties.png" popup = !isci() tol = itol() + + @plottest edgelabel() "edgelabel.png" popup = !isci() tol = itol() + + @plottest selfedges() "selfedges.png" popup = !isci() tol = itol() + + @plottest multigraphs() "multigraphs.png" popup = !isci() tol = itol() + + @plottest arc_chord_diagrams() "arc_chord_diagrams.png" popup = !isci() tol = itol() + + @plottest ast_example() "ast_example.png" popup = !isci() tol = itol() + + @plottest julia_type_tree() "julia_type_tree.png" popup = !isci() tol = itol(2.0e-2) + @plottest julia_dict_tree() "julia_dict_tree.png" popup = !isci() tol = itol() + + @plottest funky_edge_and_marker_args() "funky_edge_and_marker_args.png" popup = + !isci() tol = itol() + + @plottest custom_nodeshapes_single() "custom_nodeshapes_single.png" popup = !isci() tol = + itol() + + @plottest custom_nodeshapes_various() "custom_nodeshapes_various.png" popup = + !isci() tol = itol() + end + + @testset "README" begin + @plottest julia_logo_pun() "readme_julia_logo_pun.png" popup = !isci() tol = itol() + end +end diff --git a/PlotsBase/ext/GRExt.jl b/PlotsBase/ext/GRExt.jl index d200558ab..c84392c48 100644 --- a/PlotsBase/ext/GRExt.jl +++ b/PlotsBase/ext/GRExt.jl @@ -2148,7 +2148,8 @@ function gr_draw_surface(series, x, y, z, clims) x, y, z = GR.gridit(x, y, z, nx, ny) end d_opt = get(e_kwargs, :display_option, GR.OPTION_COLORED_MESH) - if (!isnothing(fillalpha) && fillalpha < 1) || alpha(first(fillcolor)) < 1 + fc = fillcolor isa Colorant ? fillcolor : first(fillcolor) + if (!isnothing(fillalpha) && fillalpha < 1) || alpha(fc) < 1 gr_set_transparency(fillcolor, fillalpha) GR.surface(x, y, z, d_opt) else From b88906a0f92fa13e5bd7de9dc457123e675ffb0c Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Tue, 10 Feb 2026 17:36:33 +0100 Subject: [PATCH 36/37] fix format --- PlotsBase/src/Commons/Commons.jl | 2 +- PlotsBase/src/Subplots.jl | 2 +- PlotsBase/src/pipeline.jl | 2 +- PlotsBase/test/test_misc.jl | 4 ++-- RecipesBase/src/RecipesBase.jl | 2 +- RecipesBase/test/test_api.jl | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/PlotsBase/src/Commons/Commons.jl b/PlotsBase/src/Commons/Commons.jl index b898b3d17..272562353 100644 --- a/PlotsBase/src/Commons/Commons.jl +++ b/PlotsBase/src/Commons/Commons.jl @@ -134,7 +134,7 @@ function _getvalue(val, args...) return val end function _getvalue(val::RecipesBase.CyclingAttribute) - val.value + return val.value end function _getvalue(val::Union{AVec, PlotUtils.AbstractColorList, RecipesBase.CyclingAttribute}, i, args...) return val[i] diff --git a/PlotsBase/src/Subplots.jl b/PlotsBase/src/Subplots.jl index 9f6f88c9c..386e54885 100644 --- a/PlotsBase/src/Subplots.jl +++ b/PlotsBase/src/Subplots.jl @@ -99,7 +99,7 @@ function get_series_color(c, sp::Subplot, n::Int, seriestype) else c end - PlotsBase.plot_color(c) + return PlotsBase.plot_color(c) end get_series_color(c::AbstractArray, sp::Subplot, n::Int, seriestype) = diff --git a/PlotsBase/src/pipeline.jl b/PlotsBase/src/pipeline.jl index a586d179a..76e4a03fd 100644 --- a/PlotsBase/src/pipeline.jl +++ b/PlotsBase/src/pipeline.jl @@ -183,7 +183,7 @@ function RecipesPipeline.process_sliced_series_attributes!(::Plot, kw_list) make_fillrange_from_ribbon(kw) # # unwrap CyclingAttribute after processing rib isa RecipesBase.CyclingAttribute && (kw[:ribbon] = rib.value) - # map fillrange if it's a Function + # map fillrange if it's a Function elseif fr ≢ nothing && fr isa Function kw[:fillrange] = map(fr, kw[:x]) end diff --git a/PlotsBase/test/test_misc.jl b/PlotsBase/test/test_misc.jl index b84bb7445..8d8eb29ec 100644 --- a/PlotsBase/test/test_misc.jl +++ b/PlotsBase/test/test_misc.jl @@ -160,7 +160,7 @@ end # TODO: think about this case later # sp = plot(data4, ribbon = (mat, mat))[1] for i in axes(data4, 1) - @test plot(data4)[1][i][:seriescolor] == RGBA(palette(:default)[i]) + @test plot(data4)[1][i][:seriescolor] == RGBA(palette(:default)[i]) get_fillrange(pl) = pl[1][i][:fillrange] @test plot(data4; fillrange = 0) |> get_fillrange == 0 @test plot(data4; fillrange = [0.1, 0.2]) |> get_fillrange == [0.1, 0.2] @@ -168,7 +168,7 @@ end @test plot(data4; fillrange = mat) |> get_fillrange == [0.1(2(i - 1) + 1), 0.2i] get_ribbon(pl) = pl[1][i][:ribbon] @test plot(data4; ribbon = 0) |> get_ribbon == 0 - @test_throws BoundsError plot(data4; ribbon = [0.1,0.2]) + @test_throws BoundsError plot(data4; ribbon = [0.1, 0.2]) @test plot(data4; ribbon = RecipesBase.cycle([0.1, 0.2])) |> get_ribbon == [0.1, 0.2] @test_throws BoundsError plot(data4; ribbon = [0.1 0.2]) @test plot(data4; ribbon = RecipesBase.cycle([0.1 0.2])) |> get_ribbon == (iseven(i) ? 0.2 : 0.1) diff --git a/RecipesBase/src/RecipesBase.jl b/RecipesBase/src/RecipesBase.jl index 7dcbb5060..dc809c36c 100644 --- a/RecipesBase/src/RecipesBase.jl +++ b/RecipesBase/src/RecipesBase.jl @@ -66,7 +66,7 @@ struct CyclingAttribute{T} value::T end -const CyclingContainerTypes = Union{AbstractArray,Tuple} +const CyclingContainerTypes = Union{AbstractArray, Tuple} function Base.getindex(c::CyclingAttribute, args...) return c.value diff --git a/RecipesBase/test/test_api.jl b/RecipesBase/test/test_api.jl index 7be76a703..931bdc18f 100644 --- a/RecipesBase/test/test_api.jl +++ b/RecipesBase/test/test_api.jl @@ -22,7 +22,7 @@ using RecipesBase, Test c3 = cycle(:blue) @test c3[1] == :blue @test c3[2] == :blue - c4 = cycle((1,2)) + c4 = cycle((1, 2)) @test c4[1] == 1 @test c4[2] == 2 @test c4[3] == 1 From 13bc659a3fcafa1ff089fb40d92ad0dafeaac2be Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Tue, 10 Feb 2026 18:14:17 +0100 Subject: [PATCH 37/37] fix GraphRecipes test --- GraphRecipes/test/runtests.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GraphRecipes/test/runtests.jl b/GraphRecipes/test/runtests.jl index 8a86579e7..d9d052600 100644 --- a/GraphRecipes/test/runtests.jl +++ b/GraphRecipes/test/runtests.jl @@ -172,6 +172,6 @@ cd(joinpath(@__DIR__, "..", "..", "assets", "GraphRecipes")) do end @testset "README" begin - @plottest julia_logo_pun() "readme_julia_logo_pun.png" popup = !isci() tol = itol() + @plottest readme_julia_logo_pun() "readme_julia_logo_pun.png" popup = !isci() tol = itol() end end