Skip to content

Commit a63dc97

Browse files
authored
Merge branch 'master' into pointsix-upgrade
2 parents 40d54c0 + edd8884 commit a63dc97

File tree

4 files changed

+17
-6
lines changed

4 files changed

+17
-6
lines changed

.travis.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ julia:
77
- nightly
88
notifications:
99
email: false
10+
matrix:
11+
allow_failures:
12+
- julia: nightly
1013
# uncomment the following lines to override the default test script
1114
script:
1215
- if [[ -a .git/shallow ]]; then git fetch --unshallow; fi

src/core.jl

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -511,6 +511,7 @@ immutable Unsupported <: AxisTrait end
511511

512512
"""
513513
axistrait(ax::Axis) -> Type{<:AxisTrait}
514+
axistrait{T}(::Type{T}) -> Type{<:AxisTrait}
514515
515516
Returns the indexing type of an `Axis`, any subtype of `AxisTrait`.
516517
The default is `Unsupported`, meaning there is no special indexing behaviour for this axis
@@ -523,13 +524,16 @@ User-defined axis types can be added along with custom indexing behaviors by def
523524
methods of this function. Here is the example of adding a custom Dimensional axis:
524525
525526
```julia
526-
AxisArrays.axistrait(v::MyCustomAxis) = AxisArrays.Dimensional
527+
AxisArrays.axistrait(::Type{MyCustomAxis}) = AxisArrays.Dimensional
527528
```
528529
"""
529-
axistrait(::Any) = Unsupported
530-
axistrait(ax::Axis) = axistrait(ax.val)
531-
axistrait{T<:Union{Number, Dates.AbstractTime}}(::AbstractVector{T}) = Dimensional
532-
axistrait{T<:Union{Symbol, AbstractString}}(::AbstractVector{T}) = Categorical
530+
axistrait{T}(::T) = axistrait(T)
531+
axistrait{T}(::Type{T}) = Unsupported
532+
axistrait{name, T}(::Type{Axis{name, T}}) = axistrait(T)
533+
axistrait{T<:AbstractVector}(::Type{T}) = _axistrait_el(eltype(T))
534+
_axistrait_el{T<:Union{Number, Dates.AbstractTime}}(::Type{T}) = Dimensional
535+
_axistrait_el{T<:Union{Symbol, AbstractString}}(::Type{T}) = Categorical
536+
_axistrait_el{T}(::Type{T}) = Unsupported
533537

534538
checkaxis(ax::Axis) = checkaxis(ax.val)
535539
checkaxis(ax) = checkaxis(axistrait(ax), ax)

src/sortedvector.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ Base.size(v::SortedVector) = size(v.data)
6565
Base.size(v::SortedVector, i) = size(v.data, i)
6666
Base.indices(v::SortedVector) = indices(v.data)
6767

68-
axistrait(::SortedVector) = Dimensional
68+
axistrait{T}(::Type{SortedVector{T}}) = Dimensional
6969
checkaxis(::SortedVector) = nothing
7070

7171

test/core.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,9 +187,13 @@ A = @inferred(AxisArray(vals, Axis{:Timestamp}(dt-Dates.Hour(2):Dates.Hour(1):dt
187187
@test A[dt, :].data == vals[3, :]
188188

189189
@test AxisArrays.axistrait(A.axes[1]) == AxisArrays.Dimensional
190+
@test AxisArrays.axistrait(typeof(A.axes[1])) == AxisArrays.Dimensional
190191
@test AxisArrays.axistrait(A.axes[1].val) == AxisArrays.Dimensional
192+
@test AxisArrays.axistrait(typeof(A.axes[1].val)) == AxisArrays.Dimensional
191193
@test AxisArrays.axistrait(A.axes[2]) == AxisArrays.Categorical
194+
@test AxisArrays.axistrait(typeof(A.axes[2])) == AxisArrays.Categorical
192195
@test AxisArrays.axistrait(A.axes[2].val) == AxisArrays.Categorical
196+
@test AxisArrays.axistrait(typeof(A.axes[2].val)) == AxisArrays.Categorical
193197

194198
@test_throws ArgumentError AxisArrays.checkaxis(Axis{:x}(10:-1:1))
195199
@test_throws ArgumentError AxisArrays.checkaxis(10:-1:1)

0 commit comments

Comments
 (0)