Skip to content

Commit 7ee5052

Browse files
authored
Merge pull request #264 from 51Degrees/feature/translation-engine
FEAT: Added new translation engine along with unit tests. The engine uses YAML translation files to translate input properties from other engines to a language defined in the evidence.
2 parents 614d094 + 3a79b05 commit 7ee5052

17 files changed

+2848
-21
lines changed

FiftyOne.Pipeline.Elements.sln

Lines changed: 43 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
3-
# Visual Studio Version 16
4-
VisualStudioVersion = 16.0.29806.167
3+
# Visual Studio Version 17
4+
VisualStudioVersion = 17.10.34916.146
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{C6116D6C-546D-44CE-ABA7-857ACF41096A}"
77
EndProject
@@ -25,86 +25,106 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FiftyOne.Pipeline.Engines.F
2525
EndProject
2626
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FiftyOne.Pipeline.Engines.TestHelpers", "FiftyOne.Pipeline.Engines.TestHelpers\FiftyOne.Pipeline.Engines.TestHelpers.csproj", "{C2430882-077E-49A7-A943-16052E42D20E}"
2727
EndProject
28+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FiftyOne.Pipeline.Translation", "FiftyOne.Pipeline.Elements\FiftyOne.Pipeline.Translation\FiftyOne.Pipeline.Translation.csproj", "{E5769C07-9ECE-4831-84BA-A8E5AC54101E}"
29+
EndProject
30+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FiftyOne.Pipeline.TranslationTests", "FiftyOne.Pipeline.Elements\FiftyOne.Pipeline.Translation.Tests\FiftyOne.Pipeline.TranslationTests.csproj", "{EC33BDCE-D147-4899-A18C-9FAD556E3CFB}"
31+
EndProject
2832
Global
2933
GlobalSection(SolutionConfigurationPlatforms) = preSolution
30-
Debug|Any CPU = Debug|Any CPU
3134
CoreDebug|Any CPU = CoreDebug|Any CPU
3235
CoreRelease|Any CPU = CoreRelease|Any CPU
36+
Debug|Any CPU = Debug|Any CPU
3337
Release|Any CPU = Release|Any CPU
3438
EndGlobalSection
3539
GlobalSection(ProjectConfigurationPlatforms) = postSolution
36-
{E333A1B1-FCBC-450E-887B-378C94A3B484}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
37-
{E333A1B1-FCBC-450E-887B-378C94A3B484}.Debug|Any CPU.Build.0 = Debug|Any CPU
3840
{E333A1B1-FCBC-450E-887B-378C94A3B484}.CoreDebug|Any CPU.ActiveCfg = Debug|Any CPU
3941
{E333A1B1-FCBC-450E-887B-378C94A3B484}.CoreDebug|Any CPU.Build.0 = Debug|Any CPU
4042
{E333A1B1-FCBC-450E-887B-378C94A3B484}.CoreRelease|Any CPU.ActiveCfg = Release|Any CPU
4143
{E333A1B1-FCBC-450E-887B-378C94A3B484}.CoreRelease|Any CPU.Build.0 = Release|Any CPU
44+
{E333A1B1-FCBC-450E-887B-378C94A3B484}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
45+
{E333A1B1-FCBC-450E-887B-378C94A3B484}.Debug|Any CPU.Build.0 = Debug|Any CPU
4246
{E333A1B1-FCBC-450E-887B-378C94A3B484}.Release|Any CPU.ActiveCfg = Release|Any CPU
4347
{E333A1B1-FCBC-450E-887B-378C94A3B484}.Release|Any CPU.Build.0 = Release|Any CPU
44-
{C723B699-0BDD-4259-83B7-7967E89E3D66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
45-
{C723B699-0BDD-4259-83B7-7967E89E3D66}.Debug|Any CPU.Build.0 = Debug|Any CPU
4648
{C723B699-0BDD-4259-83B7-7967E89E3D66}.CoreDebug|Any CPU.ActiveCfg = Debug|Any CPU
4749
{C723B699-0BDD-4259-83B7-7967E89E3D66}.CoreDebug|Any CPU.Build.0 = Debug|Any CPU
4850
{C723B699-0BDD-4259-83B7-7967E89E3D66}.CoreRelease|Any CPU.ActiveCfg = Release|Any CPU
4951
{C723B699-0BDD-4259-83B7-7967E89E3D66}.CoreRelease|Any CPU.Build.0 = Release|Any CPU
52+
{C723B699-0BDD-4259-83B7-7967E89E3D66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
53+
{C723B699-0BDD-4259-83B7-7967E89E3D66}.Debug|Any CPU.Build.0 = Debug|Any CPU
5054
{C723B699-0BDD-4259-83B7-7967E89E3D66}.Release|Any CPU.ActiveCfg = Release|Any CPU
5155
{C723B699-0BDD-4259-83B7-7967E89E3D66}.Release|Any CPU.Build.0 = Release|Any CPU
52-
{56659845-AC20-4B60-B794-9B48D279A373}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
53-
{56659845-AC20-4B60-B794-9B48D279A373}.Debug|Any CPU.Build.0 = Debug|Any CPU
5456
{56659845-AC20-4B60-B794-9B48D279A373}.CoreDebug|Any CPU.ActiveCfg = Debug|Any CPU
5557
{56659845-AC20-4B60-B794-9B48D279A373}.CoreDebug|Any CPU.Build.0 = Debug|Any CPU
5658
{56659845-AC20-4B60-B794-9B48D279A373}.CoreRelease|Any CPU.ActiveCfg = Release|Any CPU
5759
{56659845-AC20-4B60-B794-9B48D279A373}.CoreRelease|Any CPU.Build.0 = Release|Any CPU
60+
{56659845-AC20-4B60-B794-9B48D279A373}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
61+
{56659845-AC20-4B60-B794-9B48D279A373}.Debug|Any CPU.Build.0 = Debug|Any CPU
5862
{56659845-AC20-4B60-B794-9B48D279A373}.Release|Any CPU.ActiveCfg = Release|Any CPU
5963
{56659845-AC20-4B60-B794-9B48D279A373}.Release|Any CPU.Build.0 = Release|Any CPU
60-
{E20990A4-8FD2-485A-AEC0-15C17754D597}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
61-
{E20990A4-8FD2-485A-AEC0-15C17754D597}.Debug|Any CPU.Build.0 = Debug|Any CPU
6264
{E20990A4-8FD2-485A-AEC0-15C17754D597}.CoreDebug|Any CPU.ActiveCfg = Debug|Any CPU
6365
{E20990A4-8FD2-485A-AEC0-15C17754D597}.CoreDebug|Any CPU.Build.0 = Debug|Any CPU
6466
{E20990A4-8FD2-485A-AEC0-15C17754D597}.CoreRelease|Any CPU.ActiveCfg = Release|Any CPU
6567
{E20990A4-8FD2-485A-AEC0-15C17754D597}.CoreRelease|Any CPU.Build.0 = Release|Any CPU
68+
{E20990A4-8FD2-485A-AEC0-15C17754D597}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
69+
{E20990A4-8FD2-485A-AEC0-15C17754D597}.Debug|Any CPU.Build.0 = Debug|Any CPU
6670
{E20990A4-8FD2-485A-AEC0-15C17754D597}.Release|Any CPU.ActiveCfg = Release|Any CPU
6771
{E20990A4-8FD2-485A-AEC0-15C17754D597}.Release|Any CPU.Build.0 = Release|Any CPU
68-
{BE991E28-F6EF-43C2-95E2-63B18F4AAA94}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
69-
{BE991E28-F6EF-43C2-95E2-63B18F4AAA94}.Debug|Any CPU.Build.0 = Debug|Any CPU
7072
{BE991E28-F6EF-43C2-95E2-63B18F4AAA94}.CoreDebug|Any CPU.ActiveCfg = Debug|Any CPU
7173
{BE991E28-F6EF-43C2-95E2-63B18F4AAA94}.CoreDebug|Any CPU.Build.0 = Debug|Any CPU
7274
{BE991E28-F6EF-43C2-95E2-63B18F4AAA94}.CoreRelease|Any CPU.ActiveCfg = Release|Any CPU
7375
{BE991E28-F6EF-43C2-95E2-63B18F4AAA94}.CoreRelease|Any CPU.Build.0 = Release|Any CPU
76+
{BE991E28-F6EF-43C2-95E2-63B18F4AAA94}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
77+
{BE991E28-F6EF-43C2-95E2-63B18F4AAA94}.Debug|Any CPU.Build.0 = Debug|Any CPU
7478
{BE991E28-F6EF-43C2-95E2-63B18F4AAA94}.Release|Any CPU.ActiveCfg = Release|Any CPU
7579
{BE991E28-F6EF-43C2-95E2-63B18F4AAA94}.Release|Any CPU.Build.0 = Release|Any CPU
76-
{4F8BCC3B-D156-47DC-BB4D-BCB00A8F02A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
77-
{4F8BCC3B-D156-47DC-BB4D-BCB00A8F02A9}.Debug|Any CPU.Build.0 = Debug|Any CPU
7880
{4F8BCC3B-D156-47DC-BB4D-BCB00A8F02A9}.CoreDebug|Any CPU.ActiveCfg = Debug|Any CPU
7981
{4F8BCC3B-D156-47DC-BB4D-BCB00A8F02A9}.CoreDebug|Any CPU.Build.0 = Debug|Any CPU
8082
{4F8BCC3B-D156-47DC-BB4D-BCB00A8F02A9}.CoreRelease|Any CPU.ActiveCfg = Release|Any CPU
8183
{4F8BCC3B-D156-47DC-BB4D-BCB00A8F02A9}.CoreRelease|Any CPU.Build.0 = Release|Any CPU
84+
{4F8BCC3B-D156-47DC-BB4D-BCB00A8F02A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
85+
{4F8BCC3B-D156-47DC-BB4D-BCB00A8F02A9}.Debug|Any CPU.Build.0 = Debug|Any CPU
8286
{4F8BCC3B-D156-47DC-BB4D-BCB00A8F02A9}.Release|Any CPU.ActiveCfg = Release|Any CPU
8387
{4F8BCC3B-D156-47DC-BB4D-BCB00A8F02A9}.Release|Any CPU.Build.0 = Release|Any CPU
84-
{89C19891-7B2B-41F2-86F1-F450257586CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
85-
{89C19891-7B2B-41F2-86F1-F450257586CD}.Debug|Any CPU.Build.0 = Debug|Any CPU
8688
{89C19891-7B2B-41F2-86F1-F450257586CD}.CoreDebug|Any CPU.ActiveCfg = Debug|Any CPU
8789
{89C19891-7B2B-41F2-86F1-F450257586CD}.CoreDebug|Any CPU.Build.0 = Debug|Any CPU
8890
{89C19891-7B2B-41F2-86F1-F450257586CD}.CoreRelease|Any CPU.ActiveCfg = Release|Any CPU
8991
{89C19891-7B2B-41F2-86F1-F450257586CD}.CoreRelease|Any CPU.Build.0 = Release|Any CPU
92+
{89C19891-7B2B-41F2-86F1-F450257586CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
93+
{89C19891-7B2B-41F2-86F1-F450257586CD}.Debug|Any CPU.Build.0 = Debug|Any CPU
9094
{89C19891-7B2B-41F2-86F1-F450257586CD}.Release|Any CPU.ActiveCfg = Release|Any CPU
9195
{89C19891-7B2B-41F2-86F1-F450257586CD}.Release|Any CPU.Build.0 = Release|Any CPU
92-
{3033F2CA-AA45-43FE-86A3-D7D9C2353C34}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
93-
{3033F2CA-AA45-43FE-86A3-D7D9C2353C34}.Debug|Any CPU.Build.0 = Debug|Any CPU
9496
{3033F2CA-AA45-43FE-86A3-D7D9C2353C34}.CoreDebug|Any CPU.ActiveCfg = Debug|Any CPU
9597
{3033F2CA-AA45-43FE-86A3-D7D9C2353C34}.CoreDebug|Any CPU.Build.0 = Debug|Any CPU
9698
{3033F2CA-AA45-43FE-86A3-D7D9C2353C34}.CoreRelease|Any CPU.ActiveCfg = Release|Any CPU
9799
{3033F2CA-AA45-43FE-86A3-D7D9C2353C34}.CoreRelease|Any CPU.Build.0 = Release|Any CPU
100+
{3033F2CA-AA45-43FE-86A3-D7D9C2353C34}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
101+
{3033F2CA-AA45-43FE-86A3-D7D9C2353C34}.Debug|Any CPU.Build.0 = Debug|Any CPU
98102
{3033F2CA-AA45-43FE-86A3-D7D9C2353C34}.Release|Any CPU.ActiveCfg = Release|Any CPU
99103
{3033F2CA-AA45-43FE-86A3-D7D9C2353C34}.Release|Any CPU.Build.0 = Release|Any CPU
100-
{C2430882-077E-49A7-A943-16052E42D20E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
101-
{C2430882-077E-49A7-A943-16052E42D20E}.Debug|Any CPU.Build.0 = Debug|Any CPU
102104
{C2430882-077E-49A7-A943-16052E42D20E}.CoreDebug|Any CPU.ActiveCfg = Debug|Any CPU
103105
{C2430882-077E-49A7-A943-16052E42D20E}.CoreDebug|Any CPU.Build.0 = Debug|Any CPU
104106
{C2430882-077E-49A7-A943-16052E42D20E}.CoreRelease|Any CPU.ActiveCfg = Release|Any CPU
105107
{C2430882-077E-49A7-A943-16052E42D20E}.CoreRelease|Any CPU.Build.0 = Release|Any CPU
108+
{C2430882-077E-49A7-A943-16052E42D20E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
109+
{C2430882-077E-49A7-A943-16052E42D20E}.Debug|Any CPU.Build.0 = Debug|Any CPU
106110
{C2430882-077E-49A7-A943-16052E42D20E}.Release|Any CPU.ActiveCfg = Release|Any CPU
107111
{C2430882-077E-49A7-A943-16052E42D20E}.Release|Any CPU.Build.0 = Release|Any CPU
112+
{E5769C07-9ECE-4831-84BA-A8E5AC54101E}.CoreDebug|Any CPU.ActiveCfg = Debug|Any CPU
113+
{E5769C07-9ECE-4831-84BA-A8E5AC54101E}.CoreDebug|Any CPU.Build.0 = Debug|Any CPU
114+
{E5769C07-9ECE-4831-84BA-A8E5AC54101E}.CoreRelease|Any CPU.ActiveCfg = Release|Any CPU
115+
{E5769C07-9ECE-4831-84BA-A8E5AC54101E}.CoreRelease|Any CPU.Build.0 = Release|Any CPU
116+
{E5769C07-9ECE-4831-84BA-A8E5AC54101E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
117+
{E5769C07-9ECE-4831-84BA-A8E5AC54101E}.Debug|Any CPU.Build.0 = Debug|Any CPU
118+
{E5769C07-9ECE-4831-84BA-A8E5AC54101E}.Release|Any CPU.ActiveCfg = Release|Any CPU
119+
{E5769C07-9ECE-4831-84BA-A8E5AC54101E}.Release|Any CPU.Build.0 = Release|Any CPU
120+
{EC33BDCE-D147-4899-A18C-9FAD556E3CFB}.CoreDebug|Any CPU.ActiveCfg = Debug|Any CPU
121+
{EC33BDCE-D147-4899-A18C-9FAD556E3CFB}.CoreDebug|Any CPU.Build.0 = Debug|Any CPU
122+
{EC33BDCE-D147-4899-A18C-9FAD556E3CFB}.CoreRelease|Any CPU.ActiveCfg = Release|Any CPU
123+
{EC33BDCE-D147-4899-A18C-9FAD556E3CFB}.CoreRelease|Any CPU.Build.0 = Release|Any CPU
124+
{EC33BDCE-D147-4899-A18C-9FAD556E3CFB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
125+
{EC33BDCE-D147-4899-A18C-9FAD556E3CFB}.Debug|Any CPU.Build.0 = Debug|Any CPU
126+
{EC33BDCE-D147-4899-A18C-9FAD556E3CFB}.Release|Any CPU.ActiveCfg = Release|Any CPU
127+
{EC33BDCE-D147-4899-A18C-9FAD556E3CFB}.Release|Any CPU.Build.0 = Release|Any CPU
108128
EndGlobalSection
109129
GlobalSection(SolutionProperties) = preSolution
110130
HideSolutionNode = FALSE
@@ -115,6 +135,8 @@ Global
115135
{56659845-AC20-4B60-B794-9B48D279A373} = {C6116D6C-546D-44CE-ABA7-857ACF41096A}
116136
{E20990A4-8FD2-485A-AEC0-15C17754D597} = {C6116D6C-546D-44CE-ABA7-857ACF41096A}
117137
{C2430882-077E-49A7-A943-16052E42D20E} = {C6116D6C-546D-44CE-ABA7-857ACF41096A}
138+
{E5769C07-9ECE-4831-84BA-A8E5AC54101E} = {90EC0711-1AB5-4A16-B6AC-0395E75D3D2B}
139+
{EC33BDCE-D147-4899-A18C-9FAD556E3CFB} = {C6116D6C-546D-44CE-ABA7-857ACF41096A}
118140
EndGlobalSection
119141
GlobalSection(ExtensibilityGlobals) = postSolution
120142
SolutionGuid = {33FA1230-D283-4050-9EA9-51B5449A5006}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
using FiftyOne.Pipeline.Core.Data;
2+
using FiftyOne.Pipeline.Core.FlowElements;
3+
using Microsoft.Extensions.Logging;
4+
5+
namespace FiftyOne.Pipeline.Translation.Tests;
6+
7+
/// <summary>
8+
/// Data type for the <see cref="EvidenceCopyElement"/>.
9+
/// </summary>
10+
public class EvidenceCopyData : ElementDataBase
11+
{
12+
public EvidenceCopyData(
13+
ILogger<ElementDataBase> logger,
14+
IPipeline pipeline) : base(logger, pipeline)
15+
{
16+
}
17+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
using FiftyOne.Pipeline.Core.Data;
2+
using FiftyOne.Pipeline.Core.FlowElements;
3+
using Microsoft.Extensions.Logging;
4+
using System.Collections.Generic;
5+
6+
namespace FiftyOne.Pipeline.Translation.Tests;
7+
8+
/// <summary>
9+
/// Element that just copies the evidence into its element data. This is used
10+
/// for testing the translation engine without having to worry about the
11+
/// source element and its data structure.
12+
/// </summary>
13+
public class EvidenceCopyElement : FlowElementBase<EvidenceCopyData, ElementPropertyMetaData>
14+
{
15+
public EvidenceCopyElement(
16+
ILogger<FlowElementBase<EvidenceCopyData, ElementPropertyMetaData>> logger)
17+
: base(logger)
18+
{
19+
}
20+
21+
public override string ElementDataKey => "evidencecopy";
22+
23+
public override IEvidenceKeyFilter EvidenceKeyFilter => new EvidenceKeyFilterWhitelist(new List<string>());
24+
25+
public override IList<ElementPropertyMetaData> Properties => new List<ElementPropertyMetaData>();
26+
27+
protected override void ManagedResourcesCleanup()
28+
{
29+
30+
}
31+
32+
protected override void ProcessInternal(IFlowData data)
33+
{
34+
var copyData = data.GetOrAdd(ElementDataKey, p => new EvidenceCopyData(null, p));
35+
foreach (var evidence in data.GetEvidence().AsDictionary())
36+
{
37+
copyData[evidence.Key] = evidence.Value;
38+
}
39+
}
40+
41+
protected override void UnmanagedResourcesCleanup()
42+
{
43+
44+
}
45+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>net8.0</TargetFramework>
5+
6+
<IsPackable>false</IsPackable>
7+
<IsTestProject>true</IsTestProject>
8+
</PropertyGroup>
9+
10+
<ItemGroup>
11+
<PackageReference Include="coverlet.collector" Version="6.0.0" />
12+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
13+
<PackageReference Include="MSTest.TestAdapter" Version="3.1.1" />
14+
<PackageReference Include="MSTest.TestFramework" Version="3.1.1" />
15+
</ItemGroup>
16+
17+
<ItemGroup>
18+
<ProjectReference Include="..\FiftyOne.Pipeline.Translation\FiftyOne.Pipeline.Translation.csproj" />
19+
</ItemGroup>
20+
21+
<ItemGroup>
22+
<Using Include="Microsoft.VisualStudio.TestTools.UnitTesting" />
23+
</ItemGroup>
24+
25+
</Project>

0 commit comments

Comments
 (0)