Skip to content

Commit dea0da6

Browse files
authored
Add JuliaFormatter to CI (#14)
1 parent ea175d9 commit dea0da6

File tree

12 files changed

+419
-341
lines changed

12 files changed

+419
-341
lines changed

.JuliaFormatter.toml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
style = "blue"
2+
margin = 100
3+
always_use_return = true
4+
whitespace_in_kwargs = false
5+
import_to_using = false

.github/workflows/format_check.yml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
name: format-check
2+
3+
on:
4+
push:
5+
branches:
6+
- 'main'
7+
tags: '*'
8+
pull_request:
9+
10+
jobs:
11+
build:
12+
runs-on: ${{ matrix.os }}
13+
strategy:
14+
matrix:
15+
julia-version: [1.8.2]
16+
julia-arch: [x86]
17+
os: [ubuntu-latest]
18+
steps:
19+
- uses: julia-actions/setup-julia@latest
20+
with:
21+
version: ${{ matrix.julia-version }}
22+
- uses: actions/checkout@v1
23+
- name: Install JuliaFormatter and format
24+
run: |
25+
julia -e 'using Pkg; Pkg.add(PackageSpec(name="JuliaFormatter"))'
26+
julia -e 'using JuliaFormatter; format("src", verbose=true)'
27+
- name: Format check
28+
run: |
29+
julia -e '
30+
out = Cmd(`git diff --name-only`) |> read |> String
31+
if out == ""
32+
exit(0)
33+
else
34+
@error "Some files have not been formatted !!!"
35+
write(stdout, out)
36+
exit(1)
37+
end'

src/table/dataframes_interface.jl

Lines changed: 78 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,21 @@ import DataAPI: All, Between, BroadcastedSelector, Cols
22
import DataFrames: AsTable, ByRow, ColumnIndex, MultiColumnIndex, normalize_selection
33
import InvertedIndices: BroadcastedInvertedIndex
44

5-
6-
7-
make_pair_concrete(@nospecialize(x::Pair)) =
8-
make_pair_concrete(x.first) => make_pair_concrete(x.second)
5+
function make_pair_concrete(@nospecialize(x::Pair))
6+
return make_pair_concrete(x.first) => make_pair_concrete(x.second)
7+
end
98
make_pair_concrete(@nospecialize(x)) = x
109

1110
broadcast_pair(df::DTable, @nospecialize(p::Any)) = p
1211

1312
# Copied as is from DataFrames.jl
1413
function broadcast_pair(df::DTable, @nospecialize(p::Pair))
1514
src, second = p
16-
src_broadcast = src isa Union{BroadcastedInvertedIndex,
17-
BroadcastedSelector}
18-
second_broadcast = second isa Union{BroadcastedInvertedIndex,
19-
BroadcastedSelector}
15+
src_broadcast = src isa Union{BroadcastedInvertedIndex,BroadcastedSelector}
16+
second_broadcast = second isa Union{BroadcastedInvertedIndex,BroadcastedSelector}
2017
if second isa Pair
2118
fun, dst = second
22-
dst_broadcast = dst isa Union{BroadcastedInvertedIndex,
23-
BroadcastedSelector}
19+
dst_broadcast = dst isa Union{BroadcastedInvertedIndex,BroadcastedSelector}
2420
if src_broadcast || dst_broadcast
2521
new_src = src_broadcast ? names(df, src.sel) : src
2622
new_dst = dst_broadcast ? names(df, dst.sel) : dst
@@ -45,25 +41,29 @@ end
4541
# as then broadcasting produces Matrix{Any} rather than Matrix{<:Pair}
4642
broadcast_pair(df::DTable, @nospecialize(p::AbstractMatrix)) = isempty(p) ? [] : p
4743

48-
4944
# Copied as is from DataFrames.jl
5045
function broadcast_pair(df::DTable, @nospecialize(p::AbstractVecOrMat{<:Pair}))
5146
isempty(p) && return []
5247
need_broadcast = false
5348

5449
src = first.(p)
5550
first_src = first(src)
56-
if first_src isa Union{BroadcastedInvertedIndex,
57-
BroadcastedSelector}
51+
if first_src isa Union{BroadcastedInvertedIndex,BroadcastedSelector}
5852
if any(!=(first_src), src)
59-
throw(ArgumentError("when broadcasting column selector it must " *
60-
"have a constant value"))
53+
throw(
54+
ArgumentError(
55+
"when broadcasting column selector it must " * "have a constant value"
56+
),
57+
)
6158
end
6259
need_broadcast = true
6360
new_names = names(df, first_src.sel)
6461
if !(length(new_names) == size(p, 1) || size(p, 1) == 1)
65-
throw(ArgumentError("broadcasted dimension does not match the " *
66-
"number of selected columns"))
62+
throw(
63+
ArgumentError(
64+
"broadcasted dimension does not match the " * "number of selected columns"
65+
),
66+
)
6767
end
6868
new_src = new_names
6969
else
@@ -72,33 +72,45 @@ function broadcast_pair(df::DTable, @nospecialize(p::AbstractVecOrMat{<:Pair}))
7272

7373
second = last.(p)
7474
first_second = first(second)
75-
if first_second isa Union{BroadcastedInvertedIndex,
76-
BroadcastedSelector}
75+
if first_second isa Union{BroadcastedInvertedIndex,BroadcastedSelector}
7776
if any(!=(first_second), second)
78-
throw(ArgumentError("when using broadcasted column selector it " *
79-
"must have a constant value"))
77+
throw(
78+
ArgumentError(
79+
"when using broadcasted column selector it " * "must have a constant value"
80+
),
81+
)
8082
end
8183
need_broadcast = true
8284
new_names = names(df, first_second.sel)
8385
if !(length(new_names) == size(p, 1) || size(p, 1) == 1)
84-
throw(ArgumentError("broadcasted dimension does not match the " *
85-
"number of selected columns"))
86+
throw(
87+
ArgumentError(
88+
"broadcasted dimension does not match the " * "number of selected columns"
89+
),
90+
)
8691
end
8792
new_second = new_names
8893
else
8994
if first_second isa Pair
9095
fun, dst = first_second
91-
if dst isa Union{BroadcastedInvertedIndex,
92-
BroadcastedSelector}
96+
if dst isa Union{BroadcastedInvertedIndex,BroadcastedSelector}
9397
if !all(x -> x isa Pair && last(x) == dst, second)
94-
throw(ArgumentError("when using broadcasted column selector " *
95-
"it must have a constant value"))
98+
throw(
99+
ArgumentError(
100+
"when using broadcasted column selector " *
101+
"it must have a constant value",
102+
),
103+
)
96104
end
97105
need_broadcast = true
98106
new_names = names(df, dst.sel)
99107
if !(length(new_names) == size(p, 1) || size(p, 1) == 1)
100-
throw(ArgumentError("broadcasted dimension does not match the " *
101-
"number of selected columns"))
108+
throw(
109+
ArgumentError(
110+
"broadcasted dimension does not match the " *
111+
"number of selected columns",
112+
),
113+
)
102114
end
103115
new_dst = new_names
104116
new_second = first.(second) .=> new_dst
@@ -119,7 +131,9 @@ function broadcast_pair(df::DTable, @nospecialize(p::AbstractVecOrMat{<:Pair}))
119131
end
120132

121133
# Copied as is from DataFrames.jl
122-
function manipulate(df::DTable, @nospecialize(cs...); copycols::Bool, keeprows::Bool, renamecols::Bool)
134+
function manipulate(
135+
df::DTable, @nospecialize(cs...); copycols::Bool, keeprows::Bool, renamecols::Bool
136+
)
123137
cs_vec = []
124138
for v in cs
125139
if v isa AbstractVecOrMat{<:Pair}
@@ -128,8 +142,12 @@ function manipulate(df::DTable, @nospecialize(cs...); copycols::Bool, keeprows::
128142
push!(cs_vec, v)
129143
end
130144
end
131-
return _manipulate(df, Any[normalize_selection(index(df), make_pair_concrete(c), renamecols) for c in cs_vec],
132-
copycols, keeprows)
145+
return _manipulate(
146+
df,
147+
Any[normalize_selection(index(df), make_pair_concrete(c), renamecols) for c in cs_vec],
148+
copycols,
149+
keeprows,
150+
)
133151
end
134152

135153
# Not copied - full custom implementation
@@ -156,13 +174,12 @@ function _manipulate(df::DTable, normalized_cs::Vector{Any}, copycols::Bool, kee
156174
#########
157175

158176
colresults = Dict{Int,Any}(
159-
k => fetch(Dagger.spawn(length, v)) == 1 ? fetch(v) : v
160-
for (k, v) in colresults
177+
k => fetch(Dagger.spawn(length, v)) == 1 ? fetch(v) : v for (k, v) in colresults
161178
)
162179

163180
mapmask = [
164-
haskey(colresults, x) && colresults[x] isa Dagger.EagerThunk
165-
for (x, _) in enumerate(normalized_cs)
181+
haskey(colresults, x) && colresults[x] isa Dagger.EagerThunk for
182+
(x, _) in enumerate(normalized_cs)
166183
]
167184

168185
mappable_part_of_normalized_cs = filter(x -> !mapmask[x[1]], collect(enumerate(normalized_cs)))
@@ -204,28 +221,33 @@ function _manipulate(df::DTable, normalized_cs::Vector{Any}, copycols::Bool, kee
204221
end
205222

206223
# Not copied - full custom implementation
207-
function manipulate(dt::DTable, args::AbstractVector{Int}; copycols::Bool, keeprows::Bool, renamecols::Bool)
224+
function manipulate(
225+
dt::DTable, args::AbstractVector{Int}; copycols::Bool, keeprows::Bool, renamecols::Bool
226+
)
208227
colidx = first(args)
209228
colname = Tables.columnnames(Tables.columns(dt))[colidx]
210-
map(r -> (; colname => Tables.getcolumn(r, colidx)), dt)
229+
return map(r -> (; colname => Tables.getcolumn(r, colidx)), dt)
211230
end
212231

213232
# Copied as is from DataFrames.jl
214-
function manipulate(df::DTable, c::MultiColumnIndex; copycols::Bool, keeprows::Bool,
215-
renamecols::Bool)
233+
function manipulate(
234+
df::DTable, c::MultiColumnIndex; copycols::Bool, keeprows::Bool, renamecols::Bool
235+
)
216236
if c isa AbstractVector{<:Pair}
217-
return manipulate(df, c..., copycols=copycols, keeprows=keeprows,
218-
renamecols=renamecols)
237+
return manipulate(df, c...; copycols=copycols, keeprows=keeprows, renamecols=renamecols)
219238
else
220-
return manipulate(df, index(df)[c], copycols=copycols, keeprows=keeprows,
221-
renamecols=renamecols)
239+
return manipulate(
240+
df, index(df)[c]; copycols=copycols, keeprows=keeprows, renamecols=renamecols
241+
)
222242
end
223243
end
224244

225245
# Copied as is from DataFrames.jl
226-
manipulate(df::DTable, c::ColumnIndex; copycols::Bool, keeprows::Bool, renamecols::Bool) =
227-
manipulate(df, Int[index(df)[c]], copycols=copycols, keeprows=keeprows, renamecols=renamecols)
228-
246+
function manipulate(df::DTable, c::ColumnIndex; copycols::Bool, keeprows::Bool, renamecols::Bool)
247+
return manipulate(
248+
df, Int[index(df)[c]]; copycols=copycols, keeprows=keeprows, renamecols=renamecols
249+
)
250+
end
229251

230252
"""
231253
select(df::DTable, args...; copycols::Bool=true, renamecols::Bool=true)
@@ -241,6 +263,12 @@ please file an issue with reproduction steps and data.
241263
242264
Please refer to DataFrames documentation for more details on usage.
243265
"""
244-
select(df::DTable, @nospecialize(args...); copycols::Bool=true, renamecols::Bool=true) =
245-
manipulate(df, map(x -> broadcast_pair(df, x), args)...,
246-
copycols=copycols, keeprows=true, renamecols=renamecols)
266+
function select(df::DTable, @nospecialize(args...); copycols::Bool=true, renamecols::Bool=true)
267+
return manipulate(
268+
df,
269+
map(x -> broadcast_pair(df, x), args)...;
270+
copycols=copycols,
271+
keeprows=true,
272+
renamecols=renamecols,
273+
)
274+
end

0 commit comments

Comments
 (0)