Skip to content

Commit

Permalink
Minor changes
Browse files Browse the repository at this point in the history
  • Loading branch information
jhonabreul committed Nov 26, 2024
1 parent b30da4d commit 7bb82b4
Showing 1 changed file with 12 additions and 9 deletions.
21 changes: 12 additions & 9 deletions Common/Python/PandasData.cs
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ public partial class PandasData
private static PyList _level2Names;
private static PyList _level3Names;

private readonly static Dictionary<Type, IEnumerable<DataTypeMember>> _membersCache = new();
private readonly static Dictionary<Type, List<DataTypeMember>> _membersCache = new();

private readonly static MemberInfo _tickLastPriceMember = typeof(Tick).GetProperty(nameof(Tick.LastPrice));
private readonly static MemberInfo _openInterestLastPriceMember = typeof(OpenInterest).GetProperty(nameof(Tick.LastPrice));
Expand All @@ -65,13 +65,16 @@ public partial class PandasData
private static readonly Type PandasIgnoreAttribute = typeof(PandasIgnoreAttribute);
private static readonly Type PandasIgnoreMembersAttribute = typeof(PandasIgnoreMembersAttribute);

private static readonly IReadOnlyCollection<DateTime> EmptySeriesTimesKey = new List<DateTime>();
private static readonly List<DataTypeMember> EmptyDataTypeMembers = new List<DataTypeMember>();

private readonly Symbol _symbol;
private readonly bool _isFundamentalType;
private readonly bool _isBaseData;
private readonly bool _timeAsColumn;
private readonly Dictionary<string, Serie> _series;

private readonly Dictionary<Type, IEnumerable<DataTypeMember>> _members = new();
private readonly Dictionary<Type, List<DataTypeMember>> _members = new();

/// <summary>
/// Gets true if this is a custom data request, false for normal QC data
Expand Down Expand Up @@ -167,7 +170,7 @@ private void Add(object data, bool overrideValues)
return;
}

var typeMembers = GetInstanceDataTypeMembers(data).ToList();
var typeMembers = GetInstanceDataTypeMembers(data);

var endTime = default(DateTime);
if (_isBaseData)
Expand Down Expand Up @@ -309,7 +312,7 @@ public PyObject ToPandasDataFrame(int levels = 2, bool filterMissingValueColumns
{
if (filterMissingValueColumns && serie.ShouldFilter) continue;

var key = serie.Times ?? new List<DateTime>();
var key = serie.Times ?? EmptySeriesTimesKey;
if (!indexCache.TryGetValue(key, out var index))
{
PyList indexSource;
Expand Down Expand Up @@ -453,7 +456,7 @@ public static PyObject ToPandasDataFrame(IEnumerable<PandasData> pandasDatas, bo
return result;
}

private IEnumerable<DataTypeMember> GetInstanceDataTypeMembers(object data)
private List<DataTypeMember> GetInstanceDataTypeMembers(object data)
{
var type = data.GetType();
if (!_members.TryGetValue(type, out var members))
Expand All @@ -466,7 +469,7 @@ private IEnumerable<DataTypeMember> GetInstanceDataTypeMembers(object data)
// if this is a PythonData instance we add in '__typename' which we don't want into the data frame
.Where(x => !x.Key.StartsWith("__", StringComparison.InvariantCulture)).ToHashSet(x => x.Key);
columnNames.Add("value");
members = Enumerable.Empty<DataTypeMember>();
members = EmptyDataTypeMembers;
}
else
{
Expand Down Expand Up @@ -499,9 +502,9 @@ private IEnumerable<DataTypeMember> GetInstanceDataTypeMembers(object data)
/// Gets or create/adds the <see cref="DataTypeMember"/> instances corresponding to the members of the given type,
/// and returns the names of the members.
/// </summary>
private IEnumerable<DataTypeMember> GetTypeMembers(Type type)
private List<DataTypeMember> GetTypeMembers(Type type)
{
IEnumerable<DataTypeMember> typeMembers;
List<DataTypeMember> typeMembers;
lock (_membersCache)
{
if (!_membersCache.TryGetValue(type, out typeMembers))
Expand Down Expand Up @@ -608,7 +611,7 @@ private static void DisposeIfNotEmpty(PyObject pyObject)

private static bool MemberIsDataDictionary(Type memberType)
{
while (memberType != null)
while (memberType != null && !memberType.IsValueType)
{
if (memberType.IsGenericType && memberType.GetGenericTypeDefinition() == typeof(DataDictionary<>))
{
Expand Down

0 comments on commit 7bb82b4

Please sign in to comment.