PyObject.GetHashCode() can throw an OverflowException because IntPtr.ToInt32() does throw. See
|
return Runtime.PyObject_Hash(obj).ToInt32(); |
. I suggest fixing this by xoring the high and low parts of that IntPtr together. Like this:
var ulongVal = (ulong)ptr;
return (int)((uint)ulongVal ^ (uint)(ulongVal >> 32));
This happened to me when inserting into a dictionary using tensorflow objects as keys:
new Dictionary<dynamic, dynamic>() { { x, 1.0 }, { y, 1.0 }, }
Environment
- Pythonnet version: 2.3
- Python version: 3.5
- Operating System: Windows 7
PyObject.GetHashCode()can throw an OverflowException becauseIntPtr.ToInt32()does throw. Seepythonnet/src/runtime/pyobject.cs
Line 912 in b8cb6c4
This happened to me when inserting into a dictionary using tensorflow objects as keys:
Environment