internal DateTimeTransformer(IHostEnvironment host, string inputColumnName, string columnPrefix, DateTimeEstimator.HolidayList country) :
            base(host.Register(nameof(DateTimeTransformer)))
        {
            host.Check(!CommonExtensions.OsIsCentOS7(), "CentOS7 is not supported");

            _column = new LongTypedColumn(inputColumnName, columnPrefix);
            _column.CreateTransformerFromEstimator(country);
        }
        internal DateTimeTransformer(IHostEnvironment host, string inputColumnName, string columnPrefix, DateTimeEstimator.HolidayList country, DataViewSchema schema) :
            base(host.Register(nameof(DateTimeTransformer)))
        {
            _schema = schema;
            if (_schema[inputColumnName].Type.RawType != typeof(long) &&
                _schema[inputColumnName].Type.RawType != typeof(DateTime))
            {
                throw new Exception($"Unsupported type {_schema[inputColumnName].Type.RawType} for input column ${inputColumnName}. Only long and System.DateTime are supported");
            }

            _column = new LongTypedColumn(inputColumnName, columnPrefix);
            _column.CreateTransformerFromEstimator(country);
        }
        // Factory method for SignatureLoadModel.
        internal DateTimeTransformer(IHostEnvironment host, ModelLoadContext ctx) :
            base(host.Register(nameof(DateTimeTransformer)))
        {
            Host.CheckValue(ctx, nameof(ctx));
            host.Check(!CommonExtensions.OsIsCentOS7(), "CentOS7 is not supported");
            ctx.CheckAtModel(GetVersionInfo());
            // *** Binary format ***
            // name of input column
            // column prefix
            // length of C++ state array
            // C++ byte state array

            _column = new LongTypedColumn(ctx.Reader.ReadString(), ctx.Reader.ReadString());

            var dataLength = ctx.Reader.ReadInt32();
            var data       = ctx.Reader.ReadByteArray(dataLength);

            _column.CreateTransformerFromSavedData(data);
        }