From 64f0a7964595ea2b4b264ce9fe4fcedf2bf53647 Mon Sep 17 00:00:00 2001 From: Thibaut Lienart Date: Tue, 28 Jan 2020 15:42:21 +0100 Subject: [PATCH 1/4] cosmetic changes + export trait --- .gitignore | 2 + LICENSE => LICENSE.md | 0 Manifest.toml | 207 +++++++++++++++++++++++++++++++++++++++ Project.toml | 10 ++ src/MLJModelInterface.jl | 28 ++++++ 5 files changed, 247 insertions(+) create mode 100644 .gitignore rename LICENSE => LICENSE.md (100%) create mode 100644 Manifest.toml create mode 100644 Project.toml create mode 100644 src/MLJModelInterface.jl diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a867236 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*DS_Store +Manifest.toml diff --git a/LICENSE b/LICENSE.md similarity index 100% rename from LICENSE rename to LICENSE.md diff --git a/Manifest.toml b/Manifest.toml new file mode 100644 index 0000000..181faab --- /dev/null +++ b/Manifest.toml @@ -0,0 +1,207 @@ +# This file is machine-generated - editing it directly is not advised + +[[Base64]] +uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" + +[[CategoricalArrays]] +deps = ["Compat", "DataAPI", "Future", "JSON", "Missings", "Printf", "Reexport", "Statistics", "Unicode"] +git-tree-sha1 = "23d7324164c89638c18f6d7f90d972fa9c4fa9fb" +uuid = "324d7699-5711-5eae-9e2f-1d82baa6b597" +version = "0.7.7" + +[[ColorTypes]] +deps = ["FixedPointNumbers", "Random"] +git-tree-sha1 = "b9de8dc6106e09c79f3f776c27c62360d30e5eb8" +uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" +version = "0.9.1" + +[[Compat]] +deps = ["Base64", "Dates", "DelimitedFiles", "Distributed", "InteractiveUtils", "LibGit2", "Libdl", "LinearAlgebra", "Markdown", "Mmap", "Pkg", "Printf", "REPL", "Random", "Serialization", "SharedArrays", "Sockets", "SparseArrays", "Statistics", "Test", "UUIDs", "Unicode"] +git-tree-sha1 = "3819f476b6b37ef8ea837070ed831b4ebadfa1e9" +uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" +version = "3.2.0" + +[[Crayons]] +git-tree-sha1 = "cb7a62895da739fe5bb43f1a26d4292baf4b3dc0" +uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" +version = "4.0.1" + +[[DataAPI]] +git-tree-sha1 = "674b67f344687a88310213ddfa8a2b3c76cc4252" +uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" +version = "1.1.0" + +[[DataValueInterfaces]] +git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" +uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" +version = "1.0.0" + +[[Dates]] +deps = ["Printf"] +uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" + +[[DelimitedFiles]] +deps = ["Mmap"] +uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" + +[[Distributed]] +deps = ["Random", "Serialization", "Sockets"] +uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" + +[[FixedPointNumbers]] +git-tree-sha1 = "4aaea64dd0c30ad79037084f8ca2b94348e65eaa" +uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" +version = "0.7.1" + +[[Formatting]] +deps = ["Printf"] +git-tree-sha1 = "a0c901c29c0e7c763342751c0a94211d56c0de5c" +uuid = "59287772-0a20-5a39-b81b-1366585eb4c0" +version = "0.4.1" + +[[Future]] +deps = ["Random"] +uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" + +[[InteractiveUtils]] +deps = ["Markdown"] +uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" + +[[IteratorInterfaceExtensions]] +git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" +uuid = "82899510-4779-5014-852e-03e436cf321d" +version = "1.0.0" + +[[JSON]] +deps = ["Dates", "Mmap", "Parsers", "Unicode"] +git-tree-sha1 = "b34d7cef7b337321e97d22242c3c2b91f476748e" +uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" +version = "0.21.0" + +[[LibGit2]] +deps = ["Printf"] +uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" + +[[Libdl]] +uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" + +[[LinearAlgebra]] +deps = ["Libdl"] +uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + +[[Logging]] +uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" + +[[MLJScientificTypes]] +deps = ["CategoricalArrays", "ColorTypes", "PrettyTables", "ScientificTypes", "Tables"] +path = "/Users/tlienart/.julia/dev/MLJScientificTypes.jl" +uuid = "2e2323e0-db8b-457b-ae0d-bdfb3bc63afd" +version = "0.1.0" + +[[Markdown]] +deps = ["Base64"] +uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" + +[[Missings]] +deps = ["DataAPI"] +git-tree-sha1 = "de0a5ce9e5289f27df672ffabef4d1e5861247d5" +uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" +version = "0.4.3" + +[[Mmap]] +uuid = "a63ad114-7e13-5084-954f-fe012c677804" + +[[OrderedCollections]] +deps = ["Random", "Serialization", "Test"] +git-tree-sha1 = "c4c13474d23c60d20a67b217f1d7f22a40edf8f1" +uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" +version = "1.1.0" + +[[Parameters]] +deps = ["OrderedCollections"] +git-tree-sha1 = "b62b2558efb1eef1fa44e4be5ff58a515c287e38" +uuid = "d96e819e-fc66-5662-9728-84c9c7592b0a" +version = "0.12.0" + +[[Parsers]] +deps = ["Dates", "Test"] +git-tree-sha1 = "0139ba59ce9bc680e2925aec5b7db79065d60556" +uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" +version = "0.3.10" + +[[Pkg]] +deps = ["Dates", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "UUIDs"] +uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" + +[[PrettyTables]] +deps = ["Crayons", "Formatting", "Parameters", "Reexport", "Tables"] +git-tree-sha1 = "a98edb4f57f236e649599efa68b5e78c43cb51e1" +uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" +version = "0.8.0" + +[[Printf]] +deps = ["Unicode"] +uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" + +[[REPL]] +deps = ["InteractiveUtils", "Markdown", "Sockets"] +uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" + +[[Random]] +deps = ["Serialization"] +uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" + +[[Reexport]] +deps = ["Pkg"] +git-tree-sha1 = "7b1d07f411bc8ddb7977ec7f377b97b158514fe0" +uuid = "189a3867-3050-52da-a836-e630ba90ab69" +version = "0.2.0" + +[[SHA]] +uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" + +[[ScientificTypes]] +path = "../ScientificTypes" +uuid = "321657f4-b219-11e9-178b-2701a2544e81" +version = "0.6.0" + +[[Serialization]] +uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" + +[[SharedArrays]] +deps = ["Distributed", "Mmap", "Random", "Serialization"] +uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383" + +[[Sockets]] +uuid = "6462fe0b-24de-5631-8697-dd941f90decc" + +[[SparseArrays]] +deps = ["LinearAlgebra", "Random"] +uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + +[[Statistics]] +deps = ["LinearAlgebra", "SparseArrays"] +uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" + +[[TableTraits]] +deps = ["IteratorInterfaceExtensions"] +git-tree-sha1 = "b1ad568ba658d8cbb3b892ed5380a6f3e781a81e" +uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" +version = "1.0.0" + +[[Tables]] +deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "TableTraits", "Test"] +git-tree-sha1 = "aaed7b3b00248ff6a794375ad6adf30f30ca5591" +uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" +version = "0.2.11" + +[[Test]] +deps = ["Distributed", "InteractiveUtils", "Logging", "Random"] +uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[UUIDs]] +deps = ["Random", "SHA"] +uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" + +[[Unicode]] +uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" diff --git a/Project.toml b/Project.toml new file mode 100644 index 0000000..d886862 --- /dev/null +++ b/Project.toml @@ -0,0 +1,10 @@ +name = "MLJModelInterface" +uuid = "e80e1ace-859a-464e-9ed9-23947d8ae3ea" +authors = ["Thibaut Lienart "] +version = "0.1.0" + +[deps] +MLJScientificTypes = "2e2323e0-db8b-457b-ae0d-bdfb3bc63afd" + +[compat] +MLJScientificTypes = "^0.1" diff --git a/src/MLJModelInterface.jl b/src/MLJModelInterface.jl new file mode 100644 index 0000000..fce5aab --- /dev/null +++ b/src/MLJModelInterface.jl @@ -0,0 +1,28 @@ +module MLJModelInterface + +# ------------------------------------------------------------------------ +# Dependency (note that ScientificTypes itself does not have dependencies) +using ScientificTypes + +# ------------------------------------------------------------------------ +# Exports +export Dummy, Live, get_interface_mode +export matrix + +# ------------------------------------------------------------------------ +# Mode trick + +abstract type Mode end +struct Dummy <: Mode end +struct Live <: Mode end + +const INTERFACE_MODE = Ref{Mode}(Dummy()) + +get_interface_mode() = INTERFACE_MODE[] + +matrix(a...; kw...) = matrix(a...; interface_mode=get_interface_mode(), kw...) + +matrix(a...; interface_mode::Mode=Dummy(), kw...) = + error("Only `MLJModelInterface` loaded. Do `import MLJBase`.") + +end # module From 712624733d15afc8b58861a27286d2dcf693c934 Mon Sep 17 00:00:00 2001 From: Thibaut Lienart Date: Tue, 28 Jan 2020 16:53:01 +0100 Subject: [PATCH 2/4] adding initial logic --- Manifest.toml | 203 +-------------------------------------- Project.toml | 11 ++- src/MLJModelInterface.jl | 39 ++++++-- test/runtests.jl | 41 ++++++++ 4 files changed, 80 insertions(+), 214 deletions(-) create mode 100644 test/runtests.jl diff --git a/Manifest.toml b/Manifest.toml index 181faab..3b34b05 100644 --- a/Manifest.toml +++ b/Manifest.toml @@ -1,207 +1,6 @@ # This file is machine-generated - editing it directly is not advised -[[Base64]] -uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" - -[[CategoricalArrays]] -deps = ["Compat", "DataAPI", "Future", "JSON", "Missings", "Printf", "Reexport", "Statistics", "Unicode"] -git-tree-sha1 = "23d7324164c89638c18f6d7f90d972fa9c4fa9fb" -uuid = "324d7699-5711-5eae-9e2f-1d82baa6b597" -version = "0.7.7" - -[[ColorTypes]] -deps = ["FixedPointNumbers", "Random"] -git-tree-sha1 = "b9de8dc6106e09c79f3f776c27c62360d30e5eb8" -uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" -version = "0.9.1" - -[[Compat]] -deps = ["Base64", "Dates", "DelimitedFiles", "Distributed", "InteractiveUtils", "LibGit2", "Libdl", "LinearAlgebra", "Markdown", "Mmap", "Pkg", "Printf", "REPL", "Random", "Serialization", "SharedArrays", "Sockets", "SparseArrays", "Statistics", "Test", "UUIDs", "Unicode"] -git-tree-sha1 = "3819f476b6b37ef8ea837070ed831b4ebadfa1e9" -uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" -version = "3.2.0" - -[[Crayons]] -git-tree-sha1 = "cb7a62895da739fe5bb43f1a26d4292baf4b3dc0" -uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" -version = "4.0.1" - -[[DataAPI]] -git-tree-sha1 = "674b67f344687a88310213ddfa8a2b3c76cc4252" -uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" -version = "1.1.0" - -[[DataValueInterfaces]] -git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" -uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" -version = "1.0.0" - -[[Dates]] -deps = ["Printf"] -uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" - -[[DelimitedFiles]] -deps = ["Mmap"] -uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" - -[[Distributed]] -deps = ["Random", "Serialization", "Sockets"] -uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" - -[[FixedPointNumbers]] -git-tree-sha1 = "4aaea64dd0c30ad79037084f8ca2b94348e65eaa" -uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" -version = "0.7.1" - -[[Formatting]] -deps = ["Printf"] -git-tree-sha1 = "a0c901c29c0e7c763342751c0a94211d56c0de5c" -uuid = "59287772-0a20-5a39-b81b-1366585eb4c0" -version = "0.4.1" - -[[Future]] -deps = ["Random"] -uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" - -[[InteractiveUtils]] -deps = ["Markdown"] -uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" - -[[IteratorInterfaceExtensions]] -git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" -uuid = "82899510-4779-5014-852e-03e436cf321d" -version = "1.0.0" - -[[JSON]] -deps = ["Dates", "Mmap", "Parsers", "Unicode"] -git-tree-sha1 = "b34d7cef7b337321e97d22242c3c2b91f476748e" -uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" -version = "0.21.0" - -[[LibGit2]] -deps = ["Printf"] -uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" - -[[Libdl]] -uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" - -[[LinearAlgebra]] -deps = ["Libdl"] -uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" - -[[Logging]] -uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" - -[[MLJScientificTypes]] -deps = ["CategoricalArrays", "ColorTypes", "PrettyTables", "ScientificTypes", "Tables"] -path = "/Users/tlienart/.julia/dev/MLJScientificTypes.jl" -uuid = "2e2323e0-db8b-457b-ae0d-bdfb3bc63afd" -version = "0.1.0" - -[[Markdown]] -deps = ["Base64"] -uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" - -[[Missings]] -deps = ["DataAPI"] -git-tree-sha1 = "de0a5ce9e5289f27df672ffabef4d1e5861247d5" -uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" -version = "0.4.3" - -[[Mmap]] -uuid = "a63ad114-7e13-5084-954f-fe012c677804" - -[[OrderedCollections]] -deps = ["Random", "Serialization", "Test"] -git-tree-sha1 = "c4c13474d23c60d20a67b217f1d7f22a40edf8f1" -uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" -version = "1.1.0" - -[[Parameters]] -deps = ["OrderedCollections"] -git-tree-sha1 = "b62b2558efb1eef1fa44e4be5ff58a515c287e38" -uuid = "d96e819e-fc66-5662-9728-84c9c7592b0a" -version = "0.12.0" - -[[Parsers]] -deps = ["Dates", "Test"] -git-tree-sha1 = "0139ba59ce9bc680e2925aec5b7db79065d60556" -uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" -version = "0.3.10" - -[[Pkg]] -deps = ["Dates", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "UUIDs"] -uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" - -[[PrettyTables]] -deps = ["Crayons", "Formatting", "Parameters", "Reexport", "Tables"] -git-tree-sha1 = "a98edb4f57f236e649599efa68b5e78c43cb51e1" -uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" -version = "0.8.0" - -[[Printf]] -deps = ["Unicode"] -uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" - -[[REPL]] -deps = ["InteractiveUtils", "Markdown", "Sockets"] -uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" - -[[Random]] -deps = ["Serialization"] -uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" - -[[Reexport]] -deps = ["Pkg"] -git-tree-sha1 = "7b1d07f411bc8ddb7977ec7f377b97b158514fe0" -uuid = "189a3867-3050-52da-a836-e630ba90ab69" -version = "0.2.0" - -[[SHA]] -uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" - [[ScientificTypes]] -path = "../ScientificTypes" +path = "/Users/tlienart/.julia/dev/ScientificTypes" uuid = "321657f4-b219-11e9-178b-2701a2544e81" version = "0.6.0" - -[[Serialization]] -uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" - -[[SharedArrays]] -deps = ["Distributed", "Mmap", "Random", "Serialization"] -uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383" - -[[Sockets]] -uuid = "6462fe0b-24de-5631-8697-dd941f90decc" - -[[SparseArrays]] -deps = ["LinearAlgebra", "Random"] -uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" - -[[Statistics]] -deps = ["LinearAlgebra", "SparseArrays"] -uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" - -[[TableTraits]] -deps = ["IteratorInterfaceExtensions"] -git-tree-sha1 = "b1ad568ba658d8cbb3b892ed5380a6f3e781a81e" -uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" -version = "1.0.0" - -[[Tables]] -deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "TableTraits", "Test"] -git-tree-sha1 = "aaed7b3b00248ff6a794375ad6adf30f30ca5591" -uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" -version = "0.2.11" - -[[Test]] -deps = ["Distributed", "InteractiveUtils", "Logging", "Random"] -uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[UUIDs]] -deps = ["Random", "SHA"] -uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" - -[[Unicode]] -uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" diff --git a/Project.toml b/Project.toml index d886862..9f368ed 100644 --- a/Project.toml +++ b/Project.toml @@ -4,7 +4,14 @@ authors = ["Thibaut Lienart "] version = "0.1.0" [deps] -MLJScientificTypes = "2e2323e0-db8b-457b-ae0d-bdfb3bc63afd" +ScientificTypes = "321657f4-b219-11e9-178b-2701a2544e81" [compat] -MLJScientificTypes = "^0.1" +ScientificTypes = "^0.6" + +[extras] +Tables = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[targets] +test = ["Test", "Tables"] diff --git a/src/MLJModelInterface.jl b/src/MLJModelInterface.jl index fce5aab..4305cd3 100644 --- a/src/MLJModelInterface.jl +++ b/src/MLJModelInterface.jl @@ -2,27 +2,46 @@ module MLJModelInterface # ------------------------------------------------------------------------ # Dependency (note that ScientificTypes itself does not have dependencies) -using ScientificTypes +import ScientificTypes: trait # ------------------------------------------------------------------------ -# Exports -export Dummy, Live, get_interface_mode +# Single export: matrix, everything else is qualified in MLJBase export matrix # ------------------------------------------------------------------------ -# Mode trick abstract type Mode end -struct Dummy <: Mode end -struct Live <: Mode end +struct LightInterface <: Mode end +struct FullInterface <: Mode end -const INTERFACE_MODE = Ref{Mode}(Dummy()) +const INTERFACE_MODE = Ref{Mode}(LightInterface()) + +set_interface_mode(m::Mode) = (INTERFACE_MODE[] = m) get_interface_mode() = INTERFACE_MODE[] -matrix(a...; kw...) = matrix(a...; interface_mode=get_interface_mode(), kw...) +struct InterfaceError <: Exception + m::String +end + +vtrait(X) = X |> trait |> Val + +""" + matrix(X; transpose=false) + +If `X <: AbstractMatrix`, return `X` or `permutedims(X)` if `transpose=true`. +If `X` is a Tables.jl compatible table source, convert `X` into a `Matrix`. +""" +matrix(X; kw...) = matrix(vtrait(X), X, get_interface_mode(); kw...) + +matrix(::Val{:other}, X::AbstractMatrix, ::Mode; transpose=false) = + transpose ? permutedims(X) : X + +matrix(::Val{:other}, X, ::Mode; kw...) = + throw(ArgumentError("Function `matrix` only supports AbstractMatrix or " * + "containers implementing the Tables interface.")) -matrix(a...; interface_mode::Mode=Dummy(), kw...) = - error("Only `MLJModelInterface` loaded. Do `import MLJBase`.") +matrix(::Val{:table}, X, ::LightInterface; kw...) = + throw(InterfaceError("Only `MLJModelInterface` loaded. Import `MLJBase`.")) end # module diff --git a/test/runtests.jl b/test/runtests.jl new file mode 100644 index 0000000..88f6baf --- /dev/null +++ b/test/runtests.jl @@ -0,0 +1,41 @@ +using Test, MLJModelInterface, ScientificTypes +using Tables + +const M = MLJModelInterface + +ScientificTypes.TRAIT_FUNCTION_GIVEN_NAME[:table] = Tables.istable + +@testset "light-interface" begin + M.set_interface_mode(M.LightInterface()) + @test M.get_interface_mode() isa M.LightInterface + + # matrix object (:other) + X = zeros(3, 4) + mX = matrix(X) + mtX = matrix(X; transpose=true) + + @test mX === X + @test mtX == permutedims(X) + + # :other but not matrix + X = (1, 2, 3, 4) + @test_throws ArgumentError matrix(X) + + # :table + X = (x=[1,2,3], y=[1,2,3]) + @test M.vtrait(X) isa Val{:table} + @test_throws M.InterfaceError matrix(X) +end + +@testset "full-interface" begin + M.set_interface_mode(M.FullInterface()) + @test M.get_interface_mode() isa M.FullInterface + + M.matrix(::Val{:table}, X, ::M.FullInterface; kw...) = + Tables.matrix(X; kw...) + + X = (x=[1,2,3], y=[1,2,3]) + mX = matrix(X) + @test mX isa Matrix + @test mX == hcat(X.x, X.y) +end From 983ef95d3ca2dfd23abe94864ea199d16d4d7b4d Mon Sep 17 00:00:00 2001 From: Thibaut Lienart Date: Tue, 28 Jan 2020 16:56:22 +0100 Subject: [PATCH 3/4] adding travis stuff --- .travis.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..6f11424 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,18 @@ +# Documentation: http://docs.travis-ci.com/user/languages/julia/ +language: julia +os: + - linux +julia: + - 1.1 + - 1.2 + - 1.3 + - 1.4 + - nightly +matrix: + allow_failures: + - julia: nightly +notifications: + email: false +after_success: + # push coverage results to Codecov + - julia -e 'using Pkg; pkg"add Coverage"; using Coverage; Codecov.submit(Codecov.process_folder())' From a3e8aca6de5b82be22e9ea5de318f534893fee77 Mon Sep 17 00:00:00 2001 From: Thibaut Lienart Date: Wed, 29 Jan 2020 16:27:15 +0100 Subject: [PATCH 4/4] initial release --- Manifest.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Manifest.toml b/Manifest.toml index 3b34b05..85a7804 100644 --- a/Manifest.toml +++ b/Manifest.toml @@ -1,6 +1,6 @@ # This file is machine-generated - editing it directly is not advised [[ScientificTypes]] -path = "/Users/tlienart/.julia/dev/ScientificTypes" +git-tree-sha1 = "661a775ebf854f14509f590952eba63b47c82a5f" uuid = "321657f4-b219-11e9-178b-2701a2544e81" version = "0.6.0"