Skip to content

Commit 8ac5ce8

Browse files
authored
Allow ComponentCatalog to look for private static Create constuctors
1 parent 4cb7dd9 commit 8ac5ce8

File tree

12 files changed

+66
-59
lines changed

12 files changed

+66
-59
lines changed

src/Microsoft.ML.Core/ComponentModel/ComponentCatalog.cs

+25-25
Original file line numberDiff line numberDiff line change
@@ -336,29 +336,29 @@ private static bool ShouldSkipPath(string path)
336336
string name = Path.GetFileName(path).ToLowerInvariant();
337337
switch (name)
338338
{
339-
case "cqo.dll":
340-
case "fasttreenative.dll":
341-
case "libiomp5md.dll":
342-
case "libvw.dll":
343-
case "matrixinterf.dll":
344-
case "Microsoft.ML.neuralnetworks.gpucuda.dll":
345-
case "MklImports.dll":
346-
case "microsoft.research.controls.decisiontrees.dll":
347-
case "Microsoft.ML.neuralnetworks.sse.dll":
348-
case "neuraltreeevaluator.dll":
349-
case "optimizationbuilderdotnet.dll":
350-
case "parallelcommunicator.dll":
351-
case "Microsoft.ML.Runtime.RunTests.dll":
352-
case "scopecompiler.dll":
353-
case "tbb.dll":
354-
case "Internallearnscope.dll":
355-
case "unmanagedlib.dll":
356-
case "vcclient.dll":
357-
case "libxgboost.dll":
358-
case "zedgraph.dll":
359-
case "__scopecodegen__.dll":
360-
case "cosmosClientApi.dll":
361-
return true;
339+
case "cqo.dll":
340+
case "fasttreenative.dll":
341+
case "libiomp5md.dll":
342+
case "libvw.dll":
343+
case "matrixinterf.dll":
344+
case "Microsoft.ML.neuralnetworks.gpucuda.dll":
345+
case "MklImports.dll":
346+
case "microsoft.research.controls.decisiontrees.dll":
347+
case "Microsoft.ML.neuralnetworks.sse.dll":
348+
case "neuraltreeevaluator.dll":
349+
case "optimizationbuilderdotnet.dll":
350+
case "parallelcommunicator.dll":
351+
case "Microsoft.ML.Runtime.RunTests.dll":
352+
case "scopecompiler.dll":
353+
case "tbb.dll":
354+
case "Internallearnscope.dll":
355+
case "unmanagedlib.dll":
356+
case "vcclient.dll":
357+
case "libxgboost.dll":
358+
case "zedgraph.dll":
359+
case "__scopecodegen__.dll":
360+
case "cosmosClientApi.dll":
361+
return true;
362362
}
363363

364364
foreach (var s in FilePrefixesToAvoid)
@@ -567,14 +567,14 @@ private static MethodInfo FindInstanceGetter(Type instType, Type loaderType)
567567

568568
private static MethodInfo FindCreateMethod(Type instType, Type loaderType, Type[] parmTypes)
569569
{
570-
var meth = loaderType.GetMethod("Create", parmTypes ?? Type.EmptyTypes);
570+
var meth = loaderType.GetMethod("Create", BindingFlags.Public | BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.FlattenHierarchy, null, parmTypes ?? Type.EmptyTypes, null);
571571
if (meth == null)
572572
return null;
573573
if (meth.DeclaringType != loaderType)
574574
return null;
575575
if (meth.ReturnType != instType)
576576
return null;
577-
if (!meth.IsPublic || !meth.IsStatic)
577+
if (!meth.IsStatic)
578578
return null;
579579
return meth;
580580
}

src/Microsoft.ML.Data/Transforms/CopyColumnsTransform.cs

+6-3
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,8 @@ public sealed class Arguments : TransformInputBase
129129
public Column[] Column;
130130
}
131131

132-
public static IDataView Create(IHostEnvironment env, ModelLoadContext ctx, IDataView input)
132+
// Factory method for SignatureLoadDataTransform.
133+
private static IDataView Create(IHostEnvironment env, ModelLoadContext ctx, IDataView input)
133134
{
134135
Contracts.CheckValue(env, nameof(env));
135136
env.CheckValue(ctx, nameof(ctx));
@@ -139,7 +140,8 @@ public static IDataView Create(IHostEnvironment env, ModelLoadContext ctx, IData
139140
return transformer.Transform(input);
140141
}
141142

142-
public static CopyColumnsTransform Create(IHostEnvironment env, ModelLoadContext ctx)
143+
// Factory method for SignatureLoadModel.
144+
private static CopyColumnsTransform Create(IHostEnvironment env, ModelLoadContext ctx)
143145
{
144146
Contracts.CheckValue(env, nameof(env));
145147
env.CheckValue(ctx, nameof(ctx));
@@ -225,7 +227,8 @@ private static VersionInfo GetVersionInfo()
225227
loaderSignature: LoaderSignature);
226228
}
227229

228-
public static CopyColumnsRowMapper Create(IHostEnvironment env, ModelLoadContext ctx, ISchema schema)
230+
// Factory method for SignatureLoadRowMapper.
231+
private static CopyColumnsRowMapper Create(IHostEnvironment env, ModelLoadContext ctx, ISchema schema)
229232
{
230233
Contracts.CheckValue(env, nameof(env));
231234
env.CheckValue(ctx, nameof(ctx));

src/Microsoft.ML.Data/Transforms/KeyToValueTransform.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ public static IDataTransform Create(IHostEnvironment env, Arguments args, IDataV
112112
/// <summary>
113113
/// Factory method for SignatureLoadModel.
114114
/// </summary>
115-
public static KeyToValueTransform Create(IHostEnvironment env, ModelLoadContext ctx)
115+
private static KeyToValueTransform Create(IHostEnvironment env, ModelLoadContext ctx)
116116
{
117117
Contracts.CheckValue(env, nameof(env));
118118
var host = env.Register(nameof(KeyToValueTransform));
@@ -129,13 +129,13 @@ private KeyToValueTransform(IHost host, ModelLoadContext ctx)
129129
/// <summary>
130130
/// Factory method for SignatureLoadDataTransform.
131131
/// </summary>
132-
public static IDataTransform Create(IHostEnvironment env, ModelLoadContext ctx, IDataView input)
132+
private static IDataTransform Create(IHostEnvironment env, ModelLoadContext ctx, IDataView input)
133133
=> Create(env, ctx).MakeDataTransform(input);
134134

135135
/// <summary>
136136
/// Factory method for SignatureLoadRowMapper.
137137
/// </summary>
138-
public static IRowMapper Create(IHostEnvironment env, ModelLoadContext ctx, ISchema inputSchema)
138+
private static IRowMapper Create(IHostEnvironment env, ModelLoadContext ctx, ISchema inputSchema)
139139
=> Create(env, ctx).MakeRowMapper(inputSchema);
140140

141141
public override void Save(ModelSaveContext ctx)

src/Microsoft.ML.Data/Transforms/KeyToVectorTransform.cs

+4-4
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ public override void Save(ModelSaveContext ctx)
163163
}
164164

165165
// Factory method for SignatureLoadModel.
166-
public static KeyToVectorTransform Create(IHostEnvironment env, ModelLoadContext ctx)
166+
private static KeyToVectorTransform Create(IHostEnvironment env, ModelLoadContext ctx)
167167
{
168168
Contracts.CheckValue(env, nameof(env));
169169
var host = env.Register(RegistrationName);
@@ -204,7 +204,7 @@ public static IDataTransform Create(IHostEnvironment env, IDataView input, param
204204
new KeyToVectorTransform(env, columns).MakeDataTransform(input);
205205

206206
// Factory method for SignatureDataTransform.
207-
public static IDataTransform Create(IHostEnvironment env, Arguments args, IDataView input)
207+
private static IDataTransform Create(IHostEnvironment env, Arguments args, IDataView input)
208208
{
209209
Contracts.CheckValue(env, nameof(env));
210210
env.CheckValue(args, nameof(args));
@@ -227,11 +227,11 @@ public static IDataTransform Create(IHostEnvironment env, Arguments args, IDataV
227227
}
228228

229229
// Factory method for SignatureLoadDataTransform.
230-
public static IDataTransform Create(IHostEnvironment env, ModelLoadContext ctx, IDataView input)
230+
private static IDataTransform Create(IHostEnvironment env, ModelLoadContext ctx, IDataView input)
231231
=> Create(env, ctx).MakeDataTransform(input);
232232

233233
// Factory method for SignatureLoadRowMapper.
234-
public static IRowMapper Create(IHostEnvironment env, ModelLoadContext ctx, ISchema inputSchema)
234+
private static IRowMapper Create(IHostEnvironment env, ModelLoadContext ctx, ISchema inputSchema)
235235
=> Create(env, ctx).MakeRowMapper(inputSchema);
236236

237237
protected override IRowMapper MakeRowMapper(ISchema schema) => new Mapper(this, schema);

src/Microsoft.ML.Data/Transforms/Normalizer.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,7 @@ public static NormalizerTransformer Create(IHostEnvironment env, ModelLoadContex
405405
}
406406

407407
// Factory method for SignatureLoadRowMapper.
408-
public static IRowMapper Create(IHostEnvironment env, ModelLoadContext ctx, ISchema inputSchema)
408+
private static IRowMapper Create(IHostEnvironment env, ModelLoadContext ctx, ISchema inputSchema)
409409
=> Create(env, ctx).MakeRowMapper(inputSchema);
410410

411411
public override void Save(ModelSaveContext ctx)

src/Microsoft.ML.Data/Transforms/TermTransform.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,7 @@ public static IDataTransform Create(IHostEnvironment env, Arguments args, IDataV
330330
}
331331

332332
// Factory method for SignatureLoadModel.
333-
public static TermTransform Create(IHostEnvironment env, ModelLoadContext ctx)
333+
private static TermTransform Create(IHostEnvironment env, ModelLoadContext ctx)
334334
{
335335
Contracts.CheckValue(env, nameof(env));
336336
var host = env.Register(RegistrationName);
@@ -385,11 +385,11 @@ private TermTransform(IHost host, ModelLoadContext ctx)
385385
}
386386

387387
// Factory method for SignatureLoadDataTransform.
388-
public static IDataTransform Create(IHostEnvironment env, ModelLoadContext ctx, IDataView input)
388+
private static IDataTransform Create(IHostEnvironment env, ModelLoadContext ctx, IDataView input)
389389
=> Create(env, ctx).MakeDataTransform(input);
390390

391391
// Factory method for SignatureLoadRowMapper.
392-
public static IRowMapper Create(IHostEnvironment env, ModelLoadContext ctx, ISchema inputSchema)
392+
private static IRowMapper Create(IHostEnvironment env, ModelLoadContext ctx, ISchema inputSchema)
393393
=> Create(env, ctx).MakeRowMapper(inputSchema);
394394

395395
/// <summary>

src/Microsoft.ML.ImageAnalytics/ImageGrayscaleTransform.cs

+4-3
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,8 @@ public static IDataTransform Create(IHostEnvironment env, Arguments args, IDataV
9898
.MakeDataTransform(input);
9999
}
100100

101-
public static ImageGrayscaleTransform Create(IHostEnvironment env, ModelLoadContext ctx)
101+
// Factory method for SignatureLoadModel.
102+
private static ImageGrayscaleTransform Create(IHostEnvironment env, ModelLoadContext ctx)
102103
{
103104
Contracts.CheckValue(env, nameof(env));
104105
var host = env.Register(RegistrationName);
@@ -113,11 +114,11 @@ private ImageGrayscaleTransform(IHost host, ModelLoadContext ctx)
113114
}
114115

115116
// Factory method for SignatureLoadDataTransform.
116-
public static IDataTransform Create(IHostEnvironment env, ModelLoadContext ctx, IDataView input)
117+
private static IDataTransform Create(IHostEnvironment env, ModelLoadContext ctx, IDataView input)
117118
=> Create(env, ctx).MakeDataTransform(input);
118119

119120
// Factory method for SignatureLoadRowMapper.
120-
public static IRowMapper Create(IHostEnvironment env, ModelLoadContext ctx, ISchema inputSchema)
121+
private static IRowMapper Create(IHostEnvironment env, ModelLoadContext ctx, ISchema inputSchema)
121122
=> Create(env, ctx).MakeRowMapper(inputSchema);
122123

123124
public override void Save(ModelSaveContext ctx)

src/Microsoft.ML.ImageAnalytics/ImageLoaderTransform.cs

+4-3
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,8 @@ public static IDataTransform Create(IHostEnvironment env, Arguments args, IDataV
8484
.MakeDataTransform(data);
8585
}
8686

87-
public static ImageLoaderTransform Create(IHostEnvironment env, ModelLoadContext ctx)
87+
// Factory method for SignatureLoadModel.
88+
private static ImageLoaderTransform Create(IHostEnvironment env, ModelLoadContext ctx)
8889
{
8990
Contracts.CheckValue(env, nameof(env));
9091
env.CheckValue(ctx, nameof(ctx));
@@ -104,11 +105,11 @@ private ImageLoaderTransform(IHost host, ModelLoadContext ctx)
104105
}
105106

106107
// Factory method for SignatureLoadDataTransform.
107-
public static IDataTransform Create(IHostEnvironment env, ModelLoadContext ctx, IDataView input)
108+
private static IDataTransform Create(IHostEnvironment env, ModelLoadContext ctx, IDataView input)
108109
=> Create(env, ctx).MakeDataTransform(input);
109110

110111
// Factory method for SignatureLoadRowMapper.
111-
public static IRowMapper Create(IHostEnvironment env, ModelLoadContext ctx, ISchema inputSchema)
112+
private static IRowMapper Create(IHostEnvironment env, ModelLoadContext ctx, ISchema inputSchema)
112113
=> Create(env, ctx).MakeRowMapper(inputSchema);
113114

114115
protected override void CheckInputColumn(ISchema inputSchema, int col, int srcCol)

src/Microsoft.ML.ImageAnalytics/ImagePixelExtractorTransform.cs

+4-3
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,8 @@ public static IDataTransform Create(IHostEnvironment env, Arguments args, IDataV
344344
return new RowToRowMapperTransform(env, input, transformer.MakeRowMapper(input.Schema));
345345
}
346346

347-
public static ImagePixelExtractorTransform Create(IHostEnvironment env, ModelLoadContext ctx)
347+
// Factory method for SignatureLoadModel.
348+
private static ImagePixelExtractorTransform Create(IHostEnvironment env, ModelLoadContext ctx)
348349
{
349350
Contracts.CheckValue(env, nameof(env));
350351
var host = env.Register(RegistrationName);
@@ -369,11 +370,11 @@ private ImagePixelExtractorTransform(IHost host, ModelLoadContext ctx)
369370
}
370371

371372
// Factory method for SignatureLoadDataTransform.
372-
public static IDataTransform Create(IHostEnvironment env, ModelLoadContext ctx, IDataView input)
373+
private static IDataTransform Create(IHostEnvironment env, ModelLoadContext ctx, IDataView input)
373374
=> Create(env, ctx).MakeDataTransform(input);
374375

375376
// Factory method for SignatureLoadRowMapper.
376-
public static IRowMapper Create(IHostEnvironment env, ModelLoadContext ctx, ISchema inputSchema)
377+
private static IRowMapper Create(IHostEnvironment env, ModelLoadContext ctx, ISchema inputSchema)
377378
=> Create(env, ctx).MakeRowMapper(inputSchema);
378379

379380
public override void Save(ModelSaveContext ctx)

src/Microsoft.ML.ImageAnalytics/ImageResizerTransform.cs

+5-4
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,8 @@ public static IDataTransform Create(IHostEnvironment env, Arguments args, IDataV
206206
return new ImageResizerTransform(env, cols).MakeDataTransform(input);
207207
}
208208

209-
public static ImageResizerTransform Create(IHostEnvironment env, ModelLoadContext ctx)
209+
// Factory method for SignatureLoadModel.
210+
private static ImageResizerTransform Create(IHostEnvironment env, ModelLoadContext ctx)
210211
{
211212
Contracts.CheckValue(env, nameof(env));
212213
var host = env.Register(RegistrationName);
@@ -245,11 +246,11 @@ private ImageResizerTransform(IHost host, ModelLoadContext ctx)
245246
}
246247

247248
// Factory method for SignatureLoadDataTransform.
248-
public static IDataTransform Create(IHostEnvironment env, ModelLoadContext ctx, IDataView input)
249+
private static IDataTransform Create(IHostEnvironment env, ModelLoadContext ctx, IDataView input)
249250
=> Create(env, ctx).MakeDataTransform(input);
250251

251252
// Factory method for SignatureLoadRowMapper.
252-
public static IRowMapper Create(IHostEnvironment env, ModelLoadContext ctx, ISchema inputSchema)
253+
private static IRowMapper Create(IHostEnvironment env, ModelLoadContext ctx, ISchema inputSchema)
253254
=> Create(env, ctx).MakeRowMapper(inputSchema);
254255

255256
public override void Save(ModelSaveContext ctx)
@@ -295,7 +296,7 @@ private sealed class Mapper : MapperBase
295296
private readonly ImageResizerTransform _parent;
296297

297298
public Mapper(ImageResizerTransform parent, ISchema inputSchema)
298-
:base(parent.Host.Register(nameof(Mapper)), parent, inputSchema)
299+
: base(parent.Host.Register(nameof(Mapper)), parent, inputSchema)
299300
{
300301
_parent = parent;
301302
}

src/Microsoft.ML.TensorFlow/TensorflowTransform.cs

+4-4
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ public static IDataTransform Create(IHostEnvironment env, IDataView input, strin
106106
}
107107

108108
// Factory method for SignatureLoadModel.
109-
public static TensorFlowTransform Create(IHostEnvironment env, ModelLoadContext ctx)
109+
private static TensorFlowTransform Create(IHostEnvironment env, ModelLoadContext ctx)
110110
{
111111
Contracts.CheckValue(env, nameof(env));
112112
env.CheckValue(ctx, nameof(ctx));
@@ -142,7 +142,7 @@ public static TensorFlowTransform Create(IHostEnvironment env, ModelLoadContext
142142
}
143143

144144
// Factory method for SignatureDataTransform.
145-
public static IDataTransform Create(IHostEnvironment env, Arguments args, IDataView input)
145+
private static IDataTransform Create(IHostEnvironment env, Arguments args, IDataView input)
146146
{
147147
Contracts.CheckValue(env, nameof(env));
148148
env.CheckValue(args, nameof(args));
@@ -153,11 +153,11 @@ public static IDataTransform Create(IHostEnvironment env, Arguments args, IDataV
153153
}
154154

155155
// Factory method for SignatureLoadDataTransform.
156-
public static IDataTransform Create(IHostEnvironment env, ModelLoadContext ctx, IDataView input)
156+
private static IDataTransform Create(IHostEnvironment env, ModelLoadContext ctx, IDataView input)
157157
=> Create(env, ctx).MakeDataTransform(input);
158158

159159
// Factory method for SignatureLoadRowMapper.
160-
public static IRowMapper Create(IHostEnvironment env, ModelLoadContext ctx, ISchema inputSchema)
160+
private static IRowMapper Create(IHostEnvironment env, ModelLoadContext ctx, ISchema inputSchema)
161161
=> Create(env, ctx).MakeRowMapper(inputSchema);
162162

163163
private TFSession LoadTFSession(byte[] modelBytes)

src/Microsoft.ML.Transforms/KeyToBinaryVectorTransform.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ public override void Save(ModelSaveContext ctx)
107107
}
108108

109109
// Factory method for SignatureLoadModel.
110-
public static KeyToBinaryVectorTransform Create(IHostEnvironment env, ModelLoadContext ctx)
110+
private static KeyToBinaryVectorTransform Create(IHostEnvironment env, ModelLoadContext ctx)
111111
{
112112
Contracts.CheckValue(env, nameof(env));
113113
var host = env.Register(RegistrationName);
@@ -150,11 +150,11 @@ public static IDataTransform Create(IHostEnvironment env, Arguments args, IDataV
150150
}
151151

152152
// Factory method for SignatureLoadDataTransform.
153-
public static IDataTransform Create(IHostEnvironment env, ModelLoadContext ctx, IDataView input)
153+
private static IDataTransform Create(IHostEnvironment env, ModelLoadContext ctx, IDataView input)
154154
=> Create(env, ctx).MakeDataTransform(input);
155155

156156
// Factory method for SignatureLoadRowMapper.
157-
public static IRowMapper Create(IHostEnvironment env, ModelLoadContext ctx, ISchema inputSchema)
157+
private static IRowMapper Create(IHostEnvironment env, ModelLoadContext ctx, ISchema inputSchema)
158158
=> Create(env, ctx).MakeRowMapper(inputSchema);
159159

160160
protected override IRowMapper MakeRowMapper(ISchema schema) => new Mapper(this, schema);

0 commit comments

Comments
 (0)