A UInt256 is an alias to SIMD[DType.uint256, 1]. And SIMD only has one constructor from a PythonObject, which returns a Float64.
So the PythonObject is implicitly converted to a Float64, but you can’t implicitly convert a Float64 to a UInt256, you’d have to cast it. Also it’s not wide enough if you really need a 256. I don’t think there’s currently a way to go from PythonObject to a UInt256 that isn’t lossy at the moment.