Skip to content

Commit a24f10b

Browse files
authored
Simpler printing for Iterators.Enumerate, Iterators.Zip, and SkipMissing (JuliaLang#35389)
1 parent 9e9e8df commit a24f10b

File tree

5 files changed

+36
-3
lines changed

5 files changed

+36
-3
lines changed

base/iterators.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ julia> b = ["e","d","b","c","a"]
288288
"a"
289289
290290
julia> c = zip(a,b)
291-
Base.Iterators.Zip{Tuple{UnitRange{Int64},Array{String,1}}}((1:5, ["e", "d", "b", "c", "a"]))
291+
zip(1:5, ["e", "d", "b", "c", "a"])
292292
293293
julia> length(c)
294294
5

base/missing.jl

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ of the input.
196196
# Examples
197197
```jldoctest
198198
julia> x = skipmissing([1, missing, 2])
199-
Base.SkipMissing{Array{Union{Missing, Int64},1}}(Union{Missing, Int64}[1, missing, 2])
199+
skipmissing(Union{Missing, Int64}[1, missing, 2])
200200
201201
julia> sum(x)
202202
3
@@ -259,6 +259,12 @@ keys(itr::SkipMissing) =
259259
v
260260
end
261261

262+
function show(io::IO, s::SkipMissing)
263+
print(io, "skipmissing(")
264+
show(io, s.x)
265+
print(io, ')')
266+
end
267+
262268
# Optimized mapreduce implementation
263269
# The generic method is faster when !(eltype(A) >: Missing) since it does not need
264270
# additional loops to identify the two first non-missing values of each block

base/show.jl

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2223,6 +2223,15 @@ function showarg(io::IO, r::ReinterpretArray{T}, toplevel) where {T}
22232223
print(io, ')')
22242224
end
22252225

2226+
# printing iterators from Base.Iterators
2227+
2228+
function show(io::IO, e::Iterators.Enumerate)
2229+
print(io, "enumerate(")
2230+
show(io, e.itr)
2231+
print(io, ')')
2232+
end
2233+
show(io::IO, z::Iterators.Zip) = show_delim_array(io, z.is, "zip(", ',', ')', false)
2234+
22262235
# pretty printing for Iterators.Pairs
22272236
function Base.showarg(io::IO, r::Iterators.Pairs{<:Integer, <:Any, <:Any, T}, toplevel) where T<:AbstractArray
22282237
print(io, "pairs(IndexLinear(), ::", T, ")")

doc/src/manual/missing.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@ This convenience function returns an iterator which filters out `missing` values
301301
efficiently. It can therefore be used with any function which supports iterators
302302
```jldoctest skipmissing; setup = :(using Statistics)
303303
julia> x = skipmissing([3, missing, 2, 1])
304-
Base.SkipMissing{Array{Union{Missing, Int64},1}}(Union{Missing, Int64}[3, missing, 2, 1])
304+
skipmissing(Union{Missing, Int64}[3, missing, 2, 1])
305305
306306
julia> maximum(x)
307307
3

test/show.jl

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2011,3 +2011,21 @@ end
20112011
@test_repr "a[(bla;)]"
20122012
@test_repr "a[(;;)]"
20132013
@weak_test_repr "a[x -> f(x)]"
2014+
2015+
@testset "Base.Iterators" begin
2016+
@test sprint(show, enumerate("test")) == "enumerate(\"test\")"
2017+
@test sprint(show, enumerate(1:5)) == "enumerate(1:5)"
2018+
@test sprint(show, enumerate([1,2,3])) == "enumerate([1, 2, 3])"
2019+
@test sprint(show, enumerate((1,1.0,'a'))) == "enumerate((1, 1.0, 'a'))"
2020+
@test sprint(show, zip()) == "zip()"
2021+
@test sprint(show, zip([1,2,3])) == "zip([1, 2, 3])"
2022+
@test sprint(show, zip(1:3, ('a','b','c'))) == "zip(1:3, ('a', 'b', 'c'))"
2023+
@test sprint(show, zip(1:3, ('a','b','c'), "abc")) == "zip(1:3, ('a', 'b', 'c'), \"abc\")"
2024+
end
2025+
2026+
@testset "skipmissing" begin
2027+
@test sprint(show, skipmissing("test")) == "skipmissing(\"test\")"
2028+
@test sprint(show, skipmissing(1:5)) == "skipmissing(1:5)"
2029+
@test sprint(show, skipmissing([1,2,missing])) == "skipmissing(Union{Missing, Int64}[1, 2, missing])"
2030+
@test sprint(show, skipmissing((missing,1.0,'a'))) == "skipmissing((missing, 1.0, 'a'))"
2031+
end

0 commit comments

Comments
 (0)