Skip to content

Commit 3806e81

Browse files
authored
Add Count property to MemoizingEnumerable (#9468)
* Add Count property to MemoizingEnumerable * Update Pythonnet version to 2.0.54
1 parent db8dd81 commit 3806e81

12 files changed

Lines changed: 41 additions & 12 deletions

Algorithm.CSharp/QuantConnect.Algorithm.CSharp.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
<DebugType>portable</DebugType>
3333
</PropertyGroup>
3434
<ItemGroup>
35-
<PackageReference Include="QuantConnect.pythonnet" Version="2.0.53" />
35+
<PackageReference Include="QuantConnect.pythonnet" Version="2.0.54" />
3636
<PackageReference Include="Accord" Version="3.6.0" />
3737
<PackageReference Include="Accord.Fuzzy" Version="3.6.0" />
3838
<PackageReference Include="Accord.MachineLearning" Version="3.6.0" />

Algorithm.Framework/QuantConnect.Algorithm.Framework.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<PackageLicenseFile>LICENSE</PackageLicenseFile>
3030
</PropertyGroup>
3131
<ItemGroup>
32-
<PackageReference Include="QuantConnect.pythonnet" Version="2.0.53" />
32+
<PackageReference Include="QuantConnect.pythonnet" Version="2.0.54" />
3333
<PackageReference Include="Accord" Version="3.6.0" />
3434
<PackageReference Include="Accord.Math" Version="3.6.0" />
3535
<PackageReference Include="Accord.Statistics" Version="3.6.0" />

Algorithm/QuantConnect.Algorithm.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<PackageLicenseFile>LICENSE</PackageLicenseFile>
3030
</PropertyGroup>
3131
<ItemGroup>
32-
<PackageReference Include="QuantConnect.pythonnet" Version="2.0.53" />
32+
<PackageReference Include="QuantConnect.pythonnet" Version="2.0.54" />
3333
<PackageReference Include="MathNet.Numerics" Version="5.0.0" />
3434
<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
3535
<PackageReference Include="NodaTime" Version="3.0.5" />

AlgorithmFactory/QuantConnect.AlgorithmFactory.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
<PackageLicenseFile>LICENSE</PackageLicenseFile>
2929
</PropertyGroup>
3030
<ItemGroup>
31-
<PackageReference Include="QuantConnect.pythonnet" Version="2.0.53" />
31+
<PackageReference Include="QuantConnect.pythonnet" Version="2.0.54" />
3232
<PackageReference Include="NodaTime" Version="3.0.5" />
3333
</ItemGroup>
3434
<ItemGroup>

Common/QuantConnect.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
<Message Text="SelectedOptimization $(SelectedOptimization)" Importance="high" />
3636
</Target>
3737
<ItemGroup>
38-
<PackageReference Include="QuantConnect.pythonnet" Version="2.0.53" />
38+
<PackageReference Include="QuantConnect.pythonnet" Version="2.0.54" />
3939
<PackageReference Include="CloneExtensions" Version="1.3.0" />
4040
<PackageReference Include="fasterflect" Version="3.0.0" />
4141
<PackageReference Include="MathNet.Numerics" Version="5.0.0" />

Common/Util/MemoizingEnumerable.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
*
1515
*/
1616

17+
using System;
1718
using System.Collections;
1819
using System.Collections.Generic;
1920

@@ -35,6 +36,25 @@ public class MemoizingEnumerable<T> : IEnumerable<T>
3536
/// <remarks>Should be called before the enumeration starts</remarks>
3637
public bool Enabled { get; set; }
3738

39+
/// <summary>
40+
/// Gets the count of items in the enumerable. This will force enumeration of the entire collection if it has not already been enumerated.
41+
/// </summary>
42+
public int Count
43+
{
44+
get
45+
{
46+
if (!Enabled)
47+
{
48+
throw new InvalidOperationException("Count is not supported when memoization is disabled");
49+
}
50+
if (_buffer == null)
51+
{
52+
foreach (var item in this) {}
53+
}
54+
return _buffer.Count;
55+
}
56+
}
57+
3858
/// <summary>
3959
/// Initializes a new instance of the <see cref="MemoizingEnumerable{T}"/> class
4060
/// </summary>

Engine/QuantConnect.Lean.Engine.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
<Message Text="SelectedOptimization $(SelectedOptimization)" Importance="high" />
4242
</Target>
4343
<ItemGroup>
44-
<PackageReference Include="QuantConnect.pythonnet" Version="2.0.53" />
44+
<PackageReference Include="QuantConnect.pythonnet" Version="2.0.54" />
4545
<PackageReference Include="fasterflect" Version="3.0.0" />
4646
<PackageReference Include="MathNet.Numerics" Version="5.0.0" />
4747
<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />

Indicators/QuantConnect.Indicators.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
<Message Text="SelectedOptimization $(SelectedOptimization)" Importance="high" />
3232
</Target>
3333
<ItemGroup>
34-
<PackageReference Include="QuantConnect.pythonnet" Version="2.0.53" />
34+
<PackageReference Include="QuantConnect.pythonnet" Version="2.0.54" />
3535
<PackageReference Include="MathNet.Numerics" Version="5.0.0" />
3636
</ItemGroup>
3737
<ItemGroup>

Report/QuantConnect.Report.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
<PackageLicenseFile>LICENSE</PackageLicenseFile>
4040
</PropertyGroup>
4141
<ItemGroup>
42-
<PackageReference Include="QuantConnect.pythonnet" Version="2.0.53" />
42+
<PackageReference Include="QuantConnect.pythonnet" Version="2.0.54" />
4343
<PackageReference Include="Deedle" Version="2.1.0" />
4444
<PackageReference Include="MathNet.Numerics" Version="5.0.0" />
4545
<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />

Research/QuantConnect.Research.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
1+
<Project Sdk="Microsoft.NET.Sdk">
22
<PropertyGroup>
33
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
44
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -34,7 +34,7 @@
3434
<PackageReference Include="Plotly.NET" Version="5.1.0" />
3535
<PackageReference Include="Plotly.NET.CSharp" Version="0.13.0" />
3636
<PackageReference Include="Plotly.NET.Interactive" Version="5.0.0" />
37-
<PackageReference Include="QuantConnect.pythonnet" Version="2.0.53" />
37+
<PackageReference Include="QuantConnect.pythonnet" Version="2.0.54" />
3838
<PackageReference Include="NodaTime" Version="3.0.5" />
3939
</ItemGroup>
4040
<ItemGroup>

0 commit comments

Comments
 (0)