From 3b12a2b471efd83374c63f542b77decb0a1b5dba Mon Sep 17 00:00:00 2001 From: frank-dong-ms <55860649+frank-dong-ms@users.noreply.github.com> Date: Mon, 1 Jun 2020 20:51:45 -0700 Subject: [PATCH 1/4] improve error message also give expected type --- src/Microsoft.ML.Data/Data/DataViewUtils.cs | 12 ++++++++---- .../DataLoadSave/Binary/BinaryLoader.cs | 6 ++++-- .../Database/DatabaseLoaderCursor.cs | 7 +++++-- .../DataLoadSave/Text/TextLoaderCursor.cs | 7 +++++-- .../DataLoadSave/Transpose/TransposeLoader.cs | 9 ++++++--- .../DataView/AppendRowsDataView.cs | 9 ++++++--- .../DataView/ArrayDataViewBuilder.cs | 6 ++++-- .../DataView/BatchDataViewMapperBase.cs | 3 ++- src/Microsoft.ML.Data/DataView/CacheDataView.cs | 6 ++++-- .../DataView/DataViewConstructionUtils.cs | 3 ++- .../DataView/RowToRowMapperTransform.cs | 11 +++++++---- src/Microsoft.ML.Data/DataView/Transposer.cs | 12 ++++++++---- .../Scorers/RowToRowScorerBase.cs | 3 ++- .../Transforms/GenerateNumberTransform.cs | 8 +++++--- .../Transforms/LabelConvertTransform.cs | 4 +++- src/Microsoft.ML.Data/Transforms/NAFilter.cs | 6 ++++-- .../Transforms/PerGroupTransformBase.cs | 3 ++- src/Microsoft.ML.Data/Transforms/RangeFilter.cs | 6 ++++-- .../Transforms/RowShufflingTransformer.cs | 8 ++++++-- .../Transforms/TransformBase.cs | 16 ++++++++++------ .../TimeSeriesImputerDataView.cs | 6 ++++-- src/Microsoft.ML.Parquet/ParquetLoader.cs | 6 ++++-- .../PartitionedFileLoader.cs | 8 ++++---- .../SequentialTransformerBase.cs | 11 +++++++---- .../OptionalColumnTransform.cs | 8 +++++--- .../ProduceIdTransform.cs | 3 ++- .../StatefulCustomMappingTransformer.cs | 8 +++++--- .../SvmLight/SvmLightLoader.cs | 4 +++- 28 files changed, 131 insertions(+), 68 deletions(-) diff --git a/src/Microsoft.ML.Data/Data/DataViewUtils.cs b/src/Microsoft.ML.Data/Data/DataViewUtils.cs index 829118a430..dd06a4610a 100644 --- a/src/Microsoft.ML.Data/Data/DataViewUtils.cs +++ b/src/Microsoft.ML.Data/Data/DataViewUtils.cs @@ -1123,9 +1123,11 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu Ch.CheckParam(IsColumnActive(column), nameof(column), "requested column not active."); Ch.CheckParam(column.Index < _colToActive.Length, nameof(column), "requested column is not active or valid for the Schema."); - var getter = _getters[_colToActive[column.Index]] as ValueGetter; + var originGetter = _getters[_colToActive[column.Index]]; + var getter = originGetter as ValueGetter; if (getter == null) - throw Ch.Except("Invalid TValue: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue: '{typeof(TValue)}', " + + $"expected type: '{originGetter.GetType().GetGenericArguments().First()}'."); return getter; } } @@ -1312,9 +1314,11 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu Ch.CheckParam(IsColumnActive(column), nameof(column), "requested column not active"); Ch.CheckParam(column.Index < _colToActive.Length, nameof(column), "requested column not active or is invalid for the schema. "); - var getter = _getters[_colToActive[column.Index]] as ValueGetter; + var originGetter = _getters[_colToActive[column.Index]]; + var getter = originGetter as ValueGetter; if (getter == null) - throw Ch.Except("Invalid TValue: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue: '{typeof(TValue)}', " + + $"expected type: '{originGetter.GetType().GetGenericArguments().First()}'."); return getter; } } diff --git a/src/Microsoft.ML.Data/DataLoadSave/Binary/BinaryLoader.cs b/src/Microsoft.ML.Data/DataLoadSave/Binary/BinaryLoader.cs index 32c9e34cb6..94e6f79720 100644 --- a/src/Microsoft.ML.Data/DataLoadSave/Binary/BinaryLoader.cs +++ b/src/Microsoft.ML.Data/DataLoadSave/Binary/BinaryLoader.cs @@ -2035,9 +2035,11 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu { Ch.CheckParam(column.Index < _colToActivesIndex.Length, nameof(column), "requested column not active."); - var getter = _pipeGetters[_colToActivesIndex[column.Index]] as ValueGetter; + var originGetter = _pipeGetters[_colToActivesIndex[column.Index]]; + var getter = originGetter as ValueGetter; if (getter == null) - throw Ch.Except("Invalid TValue: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue: '{typeof(TValue)}', " + + $"expected type: '{originGetter.GetType().GetGenericArguments().First()}'."); return getter; } diff --git a/src/Microsoft.ML.Data/DataLoadSave/Database/DatabaseLoaderCursor.cs b/src/Microsoft.ML.Data/DataLoadSave/Database/DatabaseLoaderCursor.cs index f19d96830f..7d029c96a8 100644 --- a/src/Microsoft.ML.Data/DataLoadSave/Database/DatabaseLoaderCursor.cs +++ b/src/Microsoft.ML.Data/DataLoadSave/Database/DatabaseLoaderCursor.cs @@ -4,6 +4,7 @@ using System; using System.Data.Common; +using System.Linq; using Microsoft.ML.Internal.Utilities; using Microsoft.ML.Runtime; @@ -158,9 +159,11 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu Ch.CheckParam(column.Index < _getters.Length, nameof(column), "requested column not valid."); Ch.Check(IsColumnActive(column)); - var fn = _getters[column.Index] as ValueGetter; + var originFn = _getters[column.Index]; + var fn = originFn as ValueGetter; if (fn == null) - throw Ch.Except("Invalid TValue in GetGetter: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + + $"expected type: '{originFn.GetType().GetGenericArguments().First()}'."); return fn; } diff --git a/src/Microsoft.ML.Data/DataLoadSave/Text/TextLoaderCursor.cs b/src/Microsoft.ML.Data/DataLoadSave/Text/TextLoaderCursor.cs index 5cdca75e86..d784d280eb 100644 --- a/src/Microsoft.ML.Data/DataLoadSave/Text/TextLoaderCursor.cs +++ b/src/Microsoft.ML.Data/DataLoadSave/Text/TextLoaderCursor.cs @@ -5,6 +5,7 @@ using System; using System.Collections.Generic; using System.IO; +using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; @@ -318,9 +319,11 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu Ch.CheckParam(column.Index < _getters.Length, nameof(column), "requested column not valid."); Ch.Check(IsColumnActive(column)); - var fn = _getters[column.Index] as ValueGetter; + var originFn = _getters[column.Index]; + var fn = originFn as ValueGetter; if (fn == null) - throw Ch.Except("Invalid TValue in GetGetter: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + + $"expected type: '{originFn.GetType().GetGenericArguments().First()}'."); return fn; } diff --git a/src/Microsoft.ML.Data/DataLoadSave/Transpose/TransposeLoader.cs b/src/Microsoft.ML.Data/DataLoadSave/Transpose/TransposeLoader.cs index 6339333cef..8a0ee23f1a 100644 --- a/src/Microsoft.ML.Data/DataLoadSave/Transpose/TransposeLoader.cs +++ b/src/Microsoft.ML.Data/DataLoadSave/Transpose/TransposeLoader.cs @@ -693,7 +693,8 @@ public override ValueGetter> GetGetter() { ValueGetter> getter = _getter as ValueGetter>; if (getter == null) - throw Ch.Except("Invalid TValue: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue: '{typeof(TValue)}', " + + $"expected type: '{_getter.GetType().GetGenericArguments().First().GetGenericArguments().First()}'."); return getter; } @@ -883,9 +884,11 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu Ch.CheckParam(column.Index <= _colToActivesIndex.Length && IsColumnActive(column), nameof(column), "requested column not active"); Ch.AssertValue(_getters[_colToActivesIndex[column.Index]]); - var getter = _getters[_colToActivesIndex[column.Index]] as ValueGetter; + var originGetter = _getters[_colToActivesIndex[column.Index]]; + var getter = originGetter as ValueGetter; if (getter == null) - throw Ch.Except("Invalid TValue: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue: '{typeof(TValue)}', " + + $"expected type: '{originGetter.GetType().GetGenericArguments().First()}'."); return getter; } } diff --git a/src/Microsoft.ML.Data/DataView/AppendRowsDataView.cs b/src/Microsoft.ML.Data/DataView/AppendRowsDataView.cs index 0773507497..793b2eba13 100644 --- a/src/Microsoft.ML.Data/DataView/AppendRowsDataView.cs +++ b/src/Microsoft.ML.Data/DataView/AppendRowsDataView.cs @@ -190,9 +190,12 @@ public sealed override ValueGetter GetGetter(DataViewSchema.Colu { Ch.CheckParam(column.Index <= Getters.Length && IsColumnActive(column), nameof(column), "requested column not active"); - if (!(Getters[column.Index] is ValueGetter)) - throw Ch.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}'"); - return Getters[column.Index] as ValueGetter; + var originGetter = Getters[column.Index]; + var getter = originGetter as ValueGetter; + if (getter == null) + throw Ch.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + + $"expected type: '{originGetter.GetType().GetGenericArguments().First()}'."); + return getter; } /// diff --git a/src/Microsoft.ML.Data/DataView/ArrayDataViewBuilder.cs b/src/Microsoft.ML.Data/DataView/ArrayDataViewBuilder.cs index e4b7b754f2..e5aa1383d8 100644 --- a/src/Microsoft.ML.Data/DataView/ArrayDataViewBuilder.cs +++ b/src/Microsoft.ML.Data/DataView/ArrayDataViewBuilder.cs @@ -325,9 +325,11 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu Ch.Check(column.Index < Schema.Count); Ch.Check(column.Index < _active.Length && _active[column.Index], "the requested column is not active"); - var columnValue = _view._columns[column.Index] as Column; + var originColumnValue = _view._columns[column.Index]; + var columnValue = originColumnValue as Column; if (columnValue == null) - throw Ch.Except("Invalid TValue: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue: '{typeof(TValue)}', " + + $"expected type: '{originColumnValue.Type.RawType}'."); return (ref TValue value) => diff --git a/src/Microsoft.ML.Data/DataView/BatchDataViewMapperBase.cs b/src/Microsoft.ML.Data/DataView/BatchDataViewMapperBase.cs index e1cde83032..623591556a 100644 --- a/src/Microsoft.ML.Data/DataView/BatchDataViewMapperBase.cs +++ b/src/Microsoft.ML.Data/DataView/BatchDataViewMapperBase.cs @@ -122,7 +122,8 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu Ch.Assert(getter != null); var fn = getter as ValueGetter; if (fn == null) - throw Ch.Except("Invalid TValue in GetGetter: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + + $"expected type: '{getter.GetType().GetGenericArguments().First()}'."); return fn; } diff --git a/src/Microsoft.ML.Data/DataView/CacheDataView.cs b/src/Microsoft.ML.Data/DataView/CacheDataView.cs index dffa6aa4dd..a0f5ad4d31 100644 --- a/src/Microsoft.ML.Data/DataView/CacheDataView.cs +++ b/src/Microsoft.ML.Data/DataView/CacheDataView.cs @@ -1206,9 +1206,11 @@ public sealed override ValueGetter GetGetter(DataViewSchema.Colu Ch.CheckParam(column.Index <= _colToActivesIndex.Length && IsColumnActive(column), nameof(column), "requested column not active"); Ch.Check(_colToActivesIndex[column.Index] < _getters.Length); - var getter = _getters[_colToActivesIndex[column.Index]] as ValueGetter; + var originGetter = _getters[_colToActivesIndex[column.Index]]; + var getter = originGetter as ValueGetter; if (getter == null) - throw Ch.Except("Invalid TValue: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue: '{typeof(TValue)}', " + + $"expected type: '{originGetter.GetType().GetGenericArguments().First()}'."); return getter; } diff --git a/src/Microsoft.ML.Data/DataView/DataViewConstructionUtils.cs b/src/Microsoft.ML.Data/DataView/DataViewConstructionUtils.cs index 8d79076c05..9846587f3d 100644 --- a/src/Microsoft.ML.Data/DataView/DataViewConstructionUtils.cs +++ b/src/Microsoft.ML.Data/DataView/DataViewConstructionUtils.cs @@ -427,7 +427,8 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu Contracts.AssertValue(getter); var fn = getter as ValueGetter; if (fn == null) - throw Host.Except("Invalid TValue in GetGetter for column #{0}: '{1}'", column, typeof(TValue)); + throw Host.Except($"Invalid TValue in GetGetter for column #{column}: '{typeof(TValue)}', " + + $"expected type: '{getter.GetType().GetGenericArguments().First()}'."); return fn; } } diff --git a/src/Microsoft.ML.Data/DataView/RowToRowMapperTransform.cs b/src/Microsoft.ML.Data/DataView/RowToRowMapperTransform.cs index efb86af7ca..3747e361ff 100644 --- a/src/Microsoft.ML.Data/DataView/RowToRowMapperTransform.cs +++ b/src/Microsoft.ML.Data/DataView/RowToRowMapperTransform.cs @@ -333,10 +333,12 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu if (isSrc) return Input.GetGetter(Input.Schema[index]); - Contracts.Assert(_getters[index] != null); - var fn = _getters[index] as ValueGetter; + var originFn = _getters[index]; + Contracts.Assert(originFn != null); + var fn = originFn as ValueGetter; if (fn == null) - throw Contracts.Except("Invalid TValue in GetGetter: '{0}'", typeof(TValue)); + throw Contracts.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + + $"expected type: '{originFn.GetType().GetGenericArguments().First()}'."); return fn; } @@ -402,7 +404,8 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu Ch.Assert(getter != null); var fn = getter as ValueGetter; if (fn == null) - throw Ch.Except("Invalid TValue in GetGetter: '{0}'", typeof(TValue)); + throw Contracts.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + + $"expected type: '{getter.GetType().GetGenericArguments().First()}'."); return fn; } diff --git a/src/Microsoft.ML.Data/DataView/Transposer.cs b/src/Microsoft.ML.Data/DataView/Transposer.cs index 0d317f0887..c30843e37a 100644 --- a/src/Microsoft.ML.Data/DataView/Transposer.cs +++ b/src/Microsoft.ML.Data/DataView/Transposer.cs @@ -317,7 +317,8 @@ public override ValueGetter> GetGetter() _getter = GetGetterCore(); ValueGetter> getter = _getter as ValueGetter>; if (getter == null) - throw Ch.Except("Invalid TValue: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue: '{typeof(TValue)}', " + + $"expected type: '{_getter.GetType().GetGenericArguments().First().GetGenericArguments().First()}'."); return getter; } @@ -1167,9 +1168,11 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu { Contracts.Check(IsColumnActive(column) && column.Index < _getters.Length); Contracts.AssertValue(_getters[column.Index]); - var fn = _getters[column.Index] as ValueGetter; + var originFn = _getters[column.Index]; + var fn = originFn as ValueGetter; if (fn == null) - throw Contracts.Except("Invalid TValue in GetGetter: '{0}'", typeof(TValue)); + throw Contracts.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + + $"expected type: '{originFn.GetType().GetGenericArguments().First()}'."); return fn; } @@ -1501,7 +1504,8 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu var getter = _getter as ValueGetter; if (getter == null) - throw Ch.Except("Invalid TValue: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue: '{typeof(TValue)}', " + + $"expected type: '{_getter.GetType().GetGenericArguments().First()}'."); return getter; } diff --git a/src/Microsoft.ML.Data/Scorers/RowToRowScorerBase.cs b/src/Microsoft.ML.Data/Scorers/RowToRowScorerBase.cs index 1bc5561942..ad3f87441f 100644 --- a/src/Microsoft.ML.Data/Scorers/RowToRowScorerBase.cs +++ b/src/Microsoft.ML.Data/Scorers/RowToRowScorerBase.cs @@ -300,7 +300,8 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu Ch.Assert(getter != null); var fn = getter as ValueGetter; if (fn == null) - throw Ch.Except("Invalid TValue in GetGetter: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + + $"expected type: '{getter.GetType().GetGenericArguments().First()}'."); return fn; } } diff --git a/src/Microsoft.ML.Data/Transforms/GenerateNumberTransform.cs b/src/Microsoft.ML.Data/Transforms/GenerateNumberTransform.cs index bacc0a888b..ec2a7aaa72 100644 --- a/src/Microsoft.ML.Data/Transforms/GenerateNumberTransform.cs +++ b/src/Microsoft.ML.Data/Transforms/GenerateNumberTransform.cs @@ -439,10 +439,12 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu if (isSrc) return Input.GetGetter(Input.Schema[index]); - Ch.Assert(_getters[index] != null); - var fn = _getters[index] as ValueGetter; + var originalFn = _getters[index]; + Ch.Assert(originalFn != null); + var fn = originalFn as ValueGetter; if (fn == null) - throw Ch.Except("Invalid TValue in GetGetter: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + + $"expected type: '{originalFn.GetType().GetGenericArguments().First()}'."); return fn; } diff --git a/src/Microsoft.ML.Data/Transforms/LabelConvertTransform.cs b/src/Microsoft.ML.Data/Transforms/LabelConvertTransform.cs index 7731135d12..263f29f3d7 100644 --- a/src/Microsoft.ML.Data/Transforms/LabelConvertTransform.cs +++ b/src/Microsoft.ML.Data/Transforms/LabelConvertTransform.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System; +using System.Linq; using System.Text; using System.Threading; using Microsoft.ML; @@ -223,7 +224,8 @@ public override ValueGetter> GetGetter() { ValueGetter> getter = _getter as ValueGetter>; if (getter == null) - throw Ch.Except("Invalid TValue: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue: '{typeof(TValue)}', " + + $"expected type: '{_getter.GetType().GetGenericArguments().First()}'."); return getter; } } diff --git a/src/Microsoft.ML.Data/Transforms/NAFilter.cs b/src/Microsoft.ML.Data/Transforms/NAFilter.cs index 620594fb13..c0f04a1254 100644 --- a/src/Microsoft.ML.Data/Transforms/NAFilter.cs +++ b/src/Microsoft.ML.Data/Transforms/NAFilter.cs @@ -426,9 +426,11 @@ private bool TryGetColumnValueGetter(int col, out ValueGetter fn return false; } - fn = _values[index].GetGetter() as ValueGetter; + var originalFn = _values[index].GetGetter(); + fn = originalFn as ValueGetter; if (fn == null) - throw Ch.Except("Invalid TValue: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue: '{typeof(TValue)}', " + + $"expected type: '{originalFn.GetType().GetGenericArguments().First()}'."); return true; } diff --git a/src/Microsoft.ML.Data/Transforms/PerGroupTransformBase.cs b/src/Microsoft.ML.Data/Transforms/PerGroupTransformBase.cs index 8c5322bc19..703b574f90 100644 --- a/src/Microsoft.ML.Data/Transforms/PerGroupTransformBase.cs +++ b/src/Microsoft.ML.Data/Transforms/PerGroupTransformBase.cs @@ -305,7 +305,8 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu Ch.Assert(getter != null); var fn = getter as ValueGetter; if (fn == null) - throw Ch.Except("Invalid TValue in GetGetter: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + + $"expected type: '{getter.GetType().GetGenericArguments().First()}'."); return fn; } diff --git a/src/Microsoft.ML.Data/Transforms/RangeFilter.cs b/src/Microsoft.ML.Data/Transforms/RangeFilter.cs index a1faa00ef2..bcffb63160 100644 --- a/src/Microsoft.ML.Data/Transforms/RangeFilter.cs +++ b/src/Microsoft.ML.Data/Transforms/RangeFilter.cs @@ -321,9 +321,11 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu if (column.Index != Parent._index) return Input.GetGetter(column); - var fn = GetGetter() as ValueGetter; + var originalFn = GetGetter(); + var fn = originalFn as ValueGetter; if (fn == null) - throw Ch.Except("Invalid TValue in GetGetter: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + + $"expected type: '{originalFn.GetType().GetGenericArguments().First()}'."); return fn; } diff --git a/src/Microsoft.ML.Data/Transforms/RowShufflingTransformer.cs b/src/Microsoft.ML.Data/Transforms/RowShufflingTransformer.cs index 090a34049e..529ce58d94 100644 --- a/src/Microsoft.ML.Data/Transforms/RowShufflingTransformer.cs +++ b/src/Microsoft.ML.Data/Transforms/RowShufflingTransformer.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; +using System.Linq; using System.Threading; using System.Threading.Tasks; using System.Threading.Tasks.Dataflow; @@ -731,9 +732,12 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu { Ch.CheckParam(column.Index < _colToActivesIndex.Length, nameof(column)); Ch.CheckParam(_colToActivesIndex[column.Index] >= 0, nameof(column), "requested column not active"); - ValueGetter getter = _getters[_colToActivesIndex[column.Index]] as ValueGetter; + + var originalGetter = _getters[_colToActivesIndex[column.Index]]; + ValueGetter getter = originalGetter as ValueGetter; if (getter == null) - throw Ch.Except("Invalid TValue: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue: '{typeof(TValue)}', " + + $"expected type: '{originalGetter.GetType().GetGenericArguments().First()}'."); return getter; } } diff --git a/src/Microsoft.ML.Data/Transforms/TransformBase.cs b/src/Microsoft.ML.Data/Transforms/TransformBase.cs index 3fe8d0bc37..d846f8fcfb 100644 --- a/src/Microsoft.ML.Data/Transforms/TransformBase.cs +++ b/src/Microsoft.ML.Data/Transforms/TransformBase.cs @@ -229,10 +229,12 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu if (isSrc) return Input.GetGetter(Input.Schema[index]); - Contracts.Assert(_getters[index] != null); - var fn = _getters[index] as ValueGetter; + var originalFn = _getters[index]; + Contracts.Assert(originalFn != null); + var fn = originalFn as ValueGetter; if (fn == null) - throw Contracts.Except("Invalid TValue in GetGetter: '{0}'", typeof(TValue)); + throw Contracts.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + + $"expected type: '{originalFn.GetType().GetGenericArguments().First()}'."); return fn; } @@ -901,10 +903,12 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu if (isSrc) return Input.GetGetter(Input.Schema[index]); - Ch.Assert(_getters[index] != null); - var fn = _getters[index] as ValueGetter; + var originalFn = _getters[index]; + Ch.Assert(originalFn != null); + var fn = originalFn as ValueGetter; if (fn == null) - throw Ch.Except("Invalid TValue in GetGetter: '{0}'", typeof(TValue)); + throw Contracts.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + + $"expected type: '{originalFn.GetType().GetGenericArguments().First()}'."); return fn; } diff --git a/src/Microsoft.ML.Featurizers/TimeSeriesImputerDataView.cs b/src/Microsoft.ML.Featurizers/TimeSeriesImputerDataView.cs index c5fc0f038b..aa368ebc46 100644 --- a/src/Microsoft.ML.Featurizers/TimeSeriesImputerDataView.cs +++ b/src/Microsoft.ML.Featurizers/TimeSeriesImputerDataView.cs @@ -792,9 +792,11 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu { _ch.Check(IsColumnActive(column)); - var fn = _allColumns[column.Name].GetGetter() as ValueGetter; + var originalFn = _allColumns[column.Name].GetGetter(); + var fn = originalFn as ValueGetter; if (fn == null) - throw _ch.Except("Invalid TValue in GetGetter: '{0}'", typeof(TValue)); + throw _ch.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + + $"expected type: '{originalFn.GetType().GetGenericArguments().First()}'."); return fn; } diff --git a/src/Microsoft.ML.Parquet/ParquetLoader.cs b/src/Microsoft.ML.Parquet/ParquetLoader.cs index 443367089f..a80210e1ff 100644 --- a/src/Microsoft.ML.Parquet/ParquetLoader.cs +++ b/src/Microsoft.ML.Parquet/ParquetLoader.cs @@ -599,9 +599,11 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu { Ch.CheckParam(IsColumnActive(column), nameof(column), "requested column not active"); - var getter = _getters[_colToActivesIndex[column.Index]] as ValueGetter; + var originalGetter = _getters[_colToActivesIndex[column.Index]]; + var getter = originalGetter as ValueGetter; if (getter == null) - throw Ch.Except("Invalid TValue: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue: '{typeof(TValue)}', " + + $"expected type: '{originalGetter.GetType().GetGenericArguments().First()}'."); return getter; } diff --git a/src/Microsoft.ML.Parquet/PartitionedFileLoader.cs b/src/Microsoft.ML.Parquet/PartitionedFileLoader.cs index 863662eeed..e54c49a26e 100644 --- a/src/Microsoft.ML.Parquet/PartitionedFileLoader.cs +++ b/src/Microsoft.ML.Parquet/PartitionedFileLoader.cs @@ -421,11 +421,11 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu { Ch.Check(IsColumnActive(column)); - var getter = _getters[column.Index] as ValueGetter; + var originalGetter = _getters[column.Index]; + var getter = originalGetter as ValueGetter; if (getter == null) - { - throw Ch.Except("Invalid TValue: '{0}'", typeof(TValue)); - } + throw Ch.Except($"Invalid TValue: '{typeof(TValue)}', " + + $"expected type: '{originalGetter.GetType().GetGenericArguments().First()}'."); return getter; } diff --git a/src/Microsoft.ML.TimeSeries/SequentialTransformerBase.cs b/src/Microsoft.ML.TimeSeries/SequentialTransformerBase.cs index 4ffe27b31f..9f56a025eb 100644 --- a/src/Microsoft.ML.TimeSeries/SequentialTransformerBase.cs +++ b/src/Microsoft.ML.TimeSeries/SequentialTransformerBase.cs @@ -987,10 +987,12 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu if (isSrc) return _input.GetGetter(column); - Contracts.Assert(_getters[index] != null); - var fn = _getters[index] as ValueGetter; + var originalFn = _getters[index]; + Contracts.Assert(originalFn != null); + var fn = originalFn as ValueGetter; if (fn == null) - throw Contracts.Except("Invalid TValue in GetGetter: '{0}'", typeof(TValue)); + throw Contracts.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + + $"expected type: '{originalFn.GetType().GetGenericArguments().First()}'."); return fn; } @@ -1061,7 +1063,8 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu Ch.AssertValue(getter); if (getter is ValueGetter fn) return fn; - throw Ch.Except("Invalid TValue in GetGetter: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + + $"expected type: '{getter.GetType().GetGenericArguments().First()}'."); } protected override void Dispose(bool disposing) diff --git a/src/Microsoft.ML.Transforms/OptionalColumnTransform.cs b/src/Microsoft.ML.Transforms/OptionalColumnTransform.cs index 98b100c15f..21f8c01e92 100644 --- a/src/Microsoft.ML.Transforms/OptionalColumnTransform.cs +++ b/src/Microsoft.ML.Transforms/OptionalColumnTransform.cs @@ -485,10 +485,12 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu if (_getters[index] == null) return Input.GetGetter(_bindings.AsSchema[_bindings.SrcCols[index]]); - Ch.Assert(_getters[index] != null); - var fn = _getters[index] as ValueGetter; + var originalFn = _getters[index]; + Ch.Assert(originalFn != null); + var fn = originalFn as ValueGetter; if (fn == null) - throw Ch.Except("Invalid TValue in GetGetter: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + + $"expected type: '{originalFn.GetType().GetGenericArguments().First()}'."); return fn; } diff --git a/src/Microsoft.ML.Transforms/ProduceIdTransform.cs b/src/Microsoft.ML.Transforms/ProduceIdTransform.cs index f9062319ce..f495215e37 100644 --- a/src/Microsoft.ML.Transforms/ProduceIdTransform.cs +++ b/src/Microsoft.ML.Transforms/ProduceIdTransform.cs @@ -219,7 +219,8 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu Ch.AssertValue(idGetter); var fn = idGetter as ValueGetter; if (fn == null) - throw Ch.Except("Invalid TValue in GetGetter: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + + $"expected type: '{idGetter.GetType().GetGenericArguments().First()}'."); return fn; } } diff --git a/src/Microsoft.ML.Transforms/StatefulCustomMappingTransformer.cs b/src/Microsoft.ML.Transforms/StatefulCustomMappingTransformer.cs index 9b94c859bb..128f85c55d 100644 --- a/src/Microsoft.ML.Transforms/StatefulCustomMappingTransformer.cs +++ b/src/Microsoft.ML.Transforms/StatefulCustomMappingTransformer.cs @@ -318,10 +318,12 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu if (isSrc) return Input.GetGetter(Input.Schema[index]); - Ch.Assert(_getters[index] != null); - var fn = _getters[index] as ValueGetter; + var originalFn = _getters[index]; + Ch.Assert(originalFn != null); + var fn = originalFn as ValueGetter; if (fn == null) - throw Ch.Except("Invalid TValue in GetGetter: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + + $"expected type: '{originalFn.GetType().GetGenericArguments().First()}'."); return fn; } diff --git a/src/Microsoft.ML.Transforms/SvmLight/SvmLightLoader.cs b/src/Microsoft.ML.Transforms/SvmLight/SvmLightLoader.cs index aaa116498b..346d0acd8d 100644 --- a/src/Microsoft.ML.Transforms/SvmLight/SvmLightLoader.cs +++ b/src/Microsoft.ML.Transforms/SvmLight/SvmLightLoader.cs @@ -480,9 +480,11 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu { Ch.CheckParam(column.Index == 0, nameof(column)); Ch.CheckParam(_isActive, nameof(column), "requested column not active"); + ValueGetter getter = _getter as ValueGetter; if (getter == null) - throw Ch.Except("Invalid TValue: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue: '{typeof(TValue)}', " + + $"expected type: '{_getter.GetType().GetGenericArguments().First()}'."); return getter; } From 9df4e6ed4aa0df6e9eb95c420da0e9e69015a9b5 Mon Sep 17 00:00:00 2001 From: frank-dong-ms <55860649+frank-dong-ms@users.noreply.github.com> Date: Mon, 1 Jun 2020 23:05:40 -0700 Subject: [PATCH 2/4] refine workds --- .../Transforms/GenerateNumberTransform.cs | 8 ++++---- src/Microsoft.ML.Data/Transforms/NAFilter.cs | 6 +++--- src/Microsoft.ML.Data/Transforms/RangeFilter.cs | 6 +++--- .../Transforms/RowShufflingTransformer.cs | 6 +++--- .../Transforms/TransformBase.cs | 16 ++++++++-------- .../TimeSeriesImputerDataView.cs | 6 +++--- src/Microsoft.ML.Parquet/ParquetLoader.cs | 6 +++--- .../PartitionedFileLoader.cs | 6 +++--- .../SequentialTransformerBase.cs | 8 ++++---- .../OptionalColumnTransform.cs | 8 ++++---- .../StatefulCustomMappingTransformer.cs | 8 ++++---- 11 files changed, 42 insertions(+), 42 deletions(-) diff --git a/src/Microsoft.ML.Data/Transforms/GenerateNumberTransform.cs b/src/Microsoft.ML.Data/Transforms/GenerateNumberTransform.cs index ec2a7aaa72..1dc8ad878e 100644 --- a/src/Microsoft.ML.Data/Transforms/GenerateNumberTransform.cs +++ b/src/Microsoft.ML.Data/Transforms/GenerateNumberTransform.cs @@ -439,12 +439,12 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu if (isSrc) return Input.GetGetter(Input.Schema[index]); - var originalFn = _getters[index]; - Ch.Assert(originalFn != null); - var fn = originalFn as ValueGetter; + var originFn = _getters[index]; + Ch.Assert(originFn != null); + var fn = originFn as ValueGetter; if (fn == null) throw Ch.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + - $"expected type: '{originalFn.GetType().GetGenericArguments().First()}'."); + $"expected type: '{originFn.GetType().GetGenericArguments().First()}'."); return fn; } diff --git a/src/Microsoft.ML.Data/Transforms/NAFilter.cs b/src/Microsoft.ML.Data/Transforms/NAFilter.cs index c0f04a1254..5d24f7fa93 100644 --- a/src/Microsoft.ML.Data/Transforms/NAFilter.cs +++ b/src/Microsoft.ML.Data/Transforms/NAFilter.cs @@ -426,11 +426,11 @@ private bool TryGetColumnValueGetter(int col, out ValueGetter fn return false; } - var originalFn = _values[index].GetGetter(); - fn = originalFn as ValueGetter; + var originFn = _values[index].GetGetter(); + fn = originFn as ValueGetter; if (fn == null) throw Ch.Except($"Invalid TValue: '{typeof(TValue)}', " + - $"expected type: '{originalFn.GetType().GetGenericArguments().First()}'."); + $"expected type: '{originFn.GetType().GetGenericArguments().First()}'."); return true; } diff --git a/src/Microsoft.ML.Data/Transforms/RangeFilter.cs b/src/Microsoft.ML.Data/Transforms/RangeFilter.cs index bcffb63160..db131a782e 100644 --- a/src/Microsoft.ML.Data/Transforms/RangeFilter.cs +++ b/src/Microsoft.ML.Data/Transforms/RangeFilter.cs @@ -321,11 +321,11 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu if (column.Index != Parent._index) return Input.GetGetter(column); - var originalFn = GetGetter(); - var fn = originalFn as ValueGetter; + var originFn = GetGetter(); + var fn = originFn as ValueGetter; if (fn == null) throw Ch.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + - $"expected type: '{originalFn.GetType().GetGenericArguments().First()}'."); + $"expected type: '{originFn.GetType().GetGenericArguments().First()}'."); return fn; } diff --git a/src/Microsoft.ML.Data/Transforms/RowShufflingTransformer.cs b/src/Microsoft.ML.Data/Transforms/RowShufflingTransformer.cs index 529ce58d94..050dfb8753 100644 --- a/src/Microsoft.ML.Data/Transforms/RowShufflingTransformer.cs +++ b/src/Microsoft.ML.Data/Transforms/RowShufflingTransformer.cs @@ -733,11 +733,11 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu Ch.CheckParam(column.Index < _colToActivesIndex.Length, nameof(column)); Ch.CheckParam(_colToActivesIndex[column.Index] >= 0, nameof(column), "requested column not active"); - var originalGetter = _getters[_colToActivesIndex[column.Index]]; - ValueGetter getter = originalGetter as ValueGetter; + var originGetter = _getters[_colToActivesIndex[column.Index]]; + ValueGetter getter = originGetter as ValueGetter; if (getter == null) throw Ch.Except($"Invalid TValue: '{typeof(TValue)}', " + - $"expected type: '{originalGetter.GetType().GetGenericArguments().First()}'."); + $"expected type: '{originGetter.GetType().GetGenericArguments().First()}'."); return getter; } } diff --git a/src/Microsoft.ML.Data/Transforms/TransformBase.cs b/src/Microsoft.ML.Data/Transforms/TransformBase.cs index d846f8fcfb..e1a1260692 100644 --- a/src/Microsoft.ML.Data/Transforms/TransformBase.cs +++ b/src/Microsoft.ML.Data/Transforms/TransformBase.cs @@ -229,12 +229,12 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu if (isSrc) return Input.GetGetter(Input.Schema[index]); - var originalFn = _getters[index]; - Contracts.Assert(originalFn != null); - var fn = originalFn as ValueGetter; + var originFn = _getters[index]; + Contracts.Assert(originFn != null); + var fn = originFn as ValueGetter; if (fn == null) throw Contracts.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + - $"expected type: '{originalFn.GetType().GetGenericArguments().First()}'."); + $"expected type: '{originFn.GetType().GetGenericArguments().First()}'."); return fn; } @@ -903,12 +903,12 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu if (isSrc) return Input.GetGetter(Input.Schema[index]); - var originalFn = _getters[index]; - Ch.Assert(originalFn != null); - var fn = originalFn as ValueGetter; + var originFn = _getters[index]; + Ch.Assert(originFn != null); + var fn = originFn as ValueGetter; if (fn == null) throw Contracts.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + - $"expected type: '{originalFn.GetType().GetGenericArguments().First()}'."); + $"expected type: '{originFn.GetType().GetGenericArguments().First()}'."); return fn; } diff --git a/src/Microsoft.ML.Featurizers/TimeSeriesImputerDataView.cs b/src/Microsoft.ML.Featurizers/TimeSeriesImputerDataView.cs index aa368ebc46..f5bc2d7db0 100644 --- a/src/Microsoft.ML.Featurizers/TimeSeriesImputerDataView.cs +++ b/src/Microsoft.ML.Featurizers/TimeSeriesImputerDataView.cs @@ -792,11 +792,11 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu { _ch.Check(IsColumnActive(column)); - var originalFn = _allColumns[column.Name].GetGetter(); - var fn = originalFn as ValueGetter; + var originFn = _allColumns[column.Name].GetGetter(); + var fn = originFn as ValueGetter; if (fn == null) throw _ch.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + - $"expected type: '{originalFn.GetType().GetGenericArguments().First()}'."); + $"expected type: '{originFn.GetType().GetGenericArguments().First()}'."); return fn; } diff --git a/src/Microsoft.ML.Parquet/ParquetLoader.cs b/src/Microsoft.ML.Parquet/ParquetLoader.cs index a80210e1ff..54a109396a 100644 --- a/src/Microsoft.ML.Parquet/ParquetLoader.cs +++ b/src/Microsoft.ML.Parquet/ParquetLoader.cs @@ -599,11 +599,11 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu { Ch.CheckParam(IsColumnActive(column), nameof(column), "requested column not active"); - var originalGetter = _getters[_colToActivesIndex[column.Index]]; - var getter = originalGetter as ValueGetter; + var originGetter = _getters[_colToActivesIndex[column.Index]]; + var getter = originGetter as ValueGetter; if (getter == null) throw Ch.Except($"Invalid TValue: '{typeof(TValue)}', " + - $"expected type: '{originalGetter.GetType().GetGenericArguments().First()}'."); + $"expected type: '{originGetter.GetType().GetGenericArguments().First()}'."); return getter; } diff --git a/src/Microsoft.ML.Parquet/PartitionedFileLoader.cs b/src/Microsoft.ML.Parquet/PartitionedFileLoader.cs index e54c49a26e..77cf72f92e 100644 --- a/src/Microsoft.ML.Parquet/PartitionedFileLoader.cs +++ b/src/Microsoft.ML.Parquet/PartitionedFileLoader.cs @@ -421,11 +421,11 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu { Ch.Check(IsColumnActive(column)); - var originalGetter = _getters[column.Index]; - var getter = originalGetter as ValueGetter; + var originGetter = _getters[column.Index]; + var getter = originGetter as ValueGetter; if (getter == null) throw Ch.Except($"Invalid TValue: '{typeof(TValue)}', " + - $"expected type: '{originalGetter.GetType().GetGenericArguments().First()}'."); + $"expected type: '{originGetter.GetType().GetGenericArguments().First()}'."); return getter; } diff --git a/src/Microsoft.ML.TimeSeries/SequentialTransformerBase.cs b/src/Microsoft.ML.TimeSeries/SequentialTransformerBase.cs index 9f56a025eb..bbfa20e7c2 100644 --- a/src/Microsoft.ML.TimeSeries/SequentialTransformerBase.cs +++ b/src/Microsoft.ML.TimeSeries/SequentialTransformerBase.cs @@ -987,12 +987,12 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu if (isSrc) return _input.GetGetter(column); - var originalFn = _getters[index]; - Contracts.Assert(originalFn != null); - var fn = originalFn as ValueGetter; + var originFn = _getters[index]; + Contracts.Assert(originFn != null); + var fn = originFn as ValueGetter; if (fn == null) throw Contracts.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + - $"expected type: '{originalFn.GetType().GetGenericArguments().First()}'."); + $"expected type: '{originFn.GetType().GetGenericArguments().First()}'."); return fn; } diff --git a/src/Microsoft.ML.Transforms/OptionalColumnTransform.cs b/src/Microsoft.ML.Transforms/OptionalColumnTransform.cs index 21f8c01e92..dc4ddb3a82 100644 --- a/src/Microsoft.ML.Transforms/OptionalColumnTransform.cs +++ b/src/Microsoft.ML.Transforms/OptionalColumnTransform.cs @@ -485,12 +485,12 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu if (_getters[index] == null) return Input.GetGetter(_bindings.AsSchema[_bindings.SrcCols[index]]); - var originalFn = _getters[index]; - Ch.Assert(originalFn != null); - var fn = originalFn as ValueGetter; + var originFn = _getters[index]; + Ch.Assert(originFn != null); + var fn = originFn as ValueGetter; if (fn == null) throw Ch.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + - $"expected type: '{originalFn.GetType().GetGenericArguments().First()}'."); + $"expected type: '{originFn.GetType().GetGenericArguments().First()}'."); return fn; } diff --git a/src/Microsoft.ML.Transforms/StatefulCustomMappingTransformer.cs b/src/Microsoft.ML.Transforms/StatefulCustomMappingTransformer.cs index 128f85c55d..cb0e0b20ed 100644 --- a/src/Microsoft.ML.Transforms/StatefulCustomMappingTransformer.cs +++ b/src/Microsoft.ML.Transforms/StatefulCustomMappingTransformer.cs @@ -318,12 +318,12 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu if (isSrc) return Input.GetGetter(Input.Schema[index]); - var originalFn = _getters[index]; - Ch.Assert(originalFn != null); - var fn = originalFn as ValueGetter; + var originFn = _getters[index]; + Ch.Assert(originFn != null); + var fn = originFn as ValueGetter; if (fn == null) throw Ch.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + - $"expected type: '{originalFn.GetType().GetGenericArguments().First()}'."); + $"expected type: '{originFn.GetType().GetGenericArguments().First()}'."); return fn; } From b3abe58fb107a91ba1e64ec10cac313287992a68 Mon Sep 17 00:00:00 2001 From: frank-dong-ms <55860649+frank-dong-ms@users.noreply.github.com> Date: Mon, 1 Jun 2020 23:19:03 -0700 Subject: [PATCH 3/4] fix bug --- src/Microsoft.ML.Data/Transforms/TransformBase.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Microsoft.ML.Data/Transforms/TransformBase.cs b/src/Microsoft.ML.Data/Transforms/TransformBase.cs index e1a1260692..8d21772607 100644 --- a/src/Microsoft.ML.Data/Transforms/TransformBase.cs +++ b/src/Microsoft.ML.Data/Transforms/TransformBase.cs @@ -907,7 +907,7 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu Ch.Assert(originFn != null); var fn = originFn as ValueGetter; if (fn == null) - throw Contracts.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + + throw Ch.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + $"expected type: '{originFn.GetType().GetGenericArguments().First()}'."); return fn; } From e0612db8c054700bc5aa8e03d12a27e561217438 Mon Sep 17 00:00:00 2001 From: frank-dong-ms <55860649+frank-dong-ms@users.noreply.github.com> Date: Tue, 2 Jun 2020 11:47:08 -0700 Subject: [PATCH 4/4] fix a bug --- src/Microsoft.ML.Data/Transforms/LabelConvertTransform.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Microsoft.ML.Data/Transforms/LabelConvertTransform.cs b/src/Microsoft.ML.Data/Transforms/LabelConvertTransform.cs index 263f29f3d7..e14c07d2ab 100644 --- a/src/Microsoft.ML.Data/Transforms/LabelConvertTransform.cs +++ b/src/Microsoft.ML.Data/Transforms/LabelConvertTransform.cs @@ -225,7 +225,7 @@ public override ValueGetter> GetGetter() ValueGetter> getter = _getter as ValueGetter>; if (getter == null) throw Ch.Except($"Invalid TValue: '{typeof(TValue)}', " + - $"expected type: '{_getter.GetType().GetGenericArguments().First()}'."); + $"expected type: '{_getter.GetType().GetGenericArguments().First().GetGenericArguments().First()}'."); return getter; } }