-
Notifications
You must be signed in to change notification settings - Fork 10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
matplotlib: savefig() produces TypeError: Invalid argument type in ToBigInt operation #8
Comments
Thanks for the report, could you provide a minimal code example to reproduce this error? |
We still don't fully support Safari: we don't run Safari tests in the continuous integration and I don't think any of the core devs use macs so we don't test things locally in Safari. I frequently do manual experiments in both Firefox and Chrome but not in Safari. So it may be a long time before issues like this are addressed. |
Actually once pyodide/pyodide#1912 is resolved, we could potentially run Safari in CI. It adds more maintenance work, but then we do have recurrent requests to for better Safari support as well... |
Thanks @ashley-hh ! Could you please copy paste it as a code snippet so that we wouldn't have to re-type it manually? |
Oh, of course! My bad -- here you go! const script = `
import micropip
import numpy as np
import os
os.environ['MPLBACKEND'] = 'AGG'
import io, base64
import sys
sys.setrecursionlimit(1000)
await micropip.install('seaborn==0.9.0')
import seaborn as sns
data = np.asarray([[1, 0, .5], [1, 0, .5], [1, 0, .5]])
fig = sns.clustermap(data)
buf = io.BytesIO()
fig.savefig(buf, format='png')`
await self.pyodide.loadPackagesFromImports(script);
const res = await self.pyodide.runPythonAsync(script); |
Thanks! I can reproduce on Safari 14.1. As far as I can tell the error happens when calling sns.clustermap, even without the savefig part. BTW, in Safari 13.1 I get,
The error is likely different because 14.1 got BigInt support. So far not much ideas of how to fix it, but clearly some argument is not being converted while it should be, since we are building without WASM_BIGINT as far as I know. |
The flag |
@hoodmane Are you sure? https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-pass-int64-t-and-uint64-t-values-from-js-into-wasm-functions doesn't sound like it. |
I think so. For a function with an i64 argument, Both with and without WASM_BIGINT, we are expected to handle |
It's funny, grepping around the emscripten source, I don't find much evidence for my claim that |
Hello fellow pyodide users and mods!! Thank you for your hard work, this is an awesome project and I've been using it heavily!! Most recently, I've been trying to plot clustermaps from seaborn. This works amazingly on Chrome and somewhat well on Firefox, but not at all on Safari. This is the error that I've been getting when I call savefig() from the matplotlib library:
Chasing down the most recent stack call, it's this function:
Before I go even further down the rabbit hole to bisect this error, has anyone already encountered this and know how to get around it? Is this even the right place to ask this question? This is my first experience with cross-platform software, so any advice would be greatly appreciated. Thanks in advance, and hope y'all have a lovely day!!
The text was updated successfully, but these errors were encountered: