-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
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
Fix typing for test_plot.py #9234
Conversation
These looks like an error in matplotlib:
The test boils down to: import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import xarray as xr
ds = xr.tutorial.scatter_example_dataset(seed=42)
fig, ax = plt.subplots(1, 1)
ds.plot.scatter(x="A", y="B", marker="o", ax=ax)
actual: np.ndarray = mpl.colors.to_rgba_array("w")
assert isinstance(actual, np.ndarray)
expected: np.ndarray = ax.collections[0].get_edgecolor() # mypy complains here.
assert isinstance(expected, np.ndarray)
np.testing.assert_allclose(actual, expected)
A test with matplotlib only: def test_debug() -> None:
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
fig, ax = plt.subplots(1, 1)
ax.scatter(x=np.array([1, 2, 3]), y=np.array([6, 7, 8]), color="k")
actual: np.ndarray = mpl.colors.to_rgba_array("k")
assert isinstance(actual, np.ndarray)
expected: np.ndarray = ax.collections[0].get_edgecolor() # error: Incompatible types in assignment (expression has type "tuple[float, float, float] | tuple[float, float, float, float] | tuple[tuple[float, float, float] | str, float] | tuple[tuple[float, float, float, float], float] | Sequence[tuple[float, float, float] | str | str | tuple[float, float, float, float] | tuple[tuple[float, float, float] | str, float] | tuple[tuple[float, float, float, float], float]]", variable has type "ndarray[Any, Any]") [assignment]
assert isinstance(expected, np.ndarray)
np.testing.assert_allclose(actual, expected) Which also fails
Cc @ksunden if this still interests you. CI has installed this:
|
Are we trying to support numpy 1 and 2 in typing? Or do we simply switch to 2 entirely? |
Possibly others have decided already — I defer to that if so. But if not — I would advocate for minimizing developer burden in typing, and so only supporting a single version of dependencies. To the extent we're moving to numpy=2, that seems preferable... |
I totally agree. For internal typing checks we can restrict to numpy2. But anything exposed to user side should be compatible, I guess. But actually I am not sure how to achieve that because mypy does not understand package version checks, only python version checks. |
This is another case of "np.ndarray doesn't count as a "Sequence", but is used as one regularly" |
Though do we expose much of the numpy type system ourselves? To the extent we do — I think it might be really difficult to maintain compat — I might give this up quite easily... |
* main: Enable pandas type checking (pydata#9213) Per-variable specification of boolean parameters in open_dataset (pydata#9218) test push Added a space to the documentation (pydata#9247) Fix typing for test_plot.py (pydata#9234) Allow mypy to run in vscode (pydata#9239) Revert "Test main push" Test main push Revert "Update _typing.py" Update _typing.py Add a `.drop_attrs` method (pydata#8258)
* main: add backend intro and how-to diagram (#9175) Fix copybutton for multi line examples in double digit ipython cells (#9264) Update signature for _arrayfunction.__array__ (#9237) Add encode_cf_datetime benchmark (#9262) groupby, resample: Deprecate some positional args (#9236) Delete ``base`` and ``loffset`` parameters to resample (#9233) Update dropna docstring (#9257) Grouper, Resampler as public api (#8840) Fix mypy on main (#9252) fix fallback isdtype method (#9250) Enable pandas type checking (#9213) Per-variable specification of boolean parameters in open_dataset (#9218) test push Added a space to the documentation (#9247) Fix typing for test_plot.py (#9234)
* main: (54 commits) Adding `open_datatree` backend-specific keyword arguments (#9199) [pre-commit.ci] pre-commit autoupdate (#9202) Restore ability to specify _FillValue as Python native integers (#9258) add backend intro and how-to diagram (#9175) Fix copybutton for multi line examples in double digit ipython cells (#9264) Update signature for _arrayfunction.__array__ (#9237) Add encode_cf_datetime benchmark (#9262) groupby, resample: Deprecate some positional args (#9236) Delete ``base`` and ``loffset`` parameters to resample (#9233) Update dropna docstring (#9257) Grouper, Resampler as public api (#8840) Fix mypy on main (#9252) fix fallback isdtype method (#9250) Enable pandas type checking (#9213) Per-variable specification of boolean parameters in open_dataset (#9218) test push Added a space to the documentation (#9247) Fix typing for test_plot.py (#9234) Allow mypy to run in vscode (#9239) Revert "Test main push" ...
…monotonic-variable * main: (995 commits) Adding `open_datatree` backend-specific keyword arguments (pydata#9199) [pre-commit.ci] pre-commit autoupdate (pydata#9202) Restore ability to specify _FillValue as Python native integers (pydata#9258) add backend intro and how-to diagram (pydata#9175) Fix copybutton for multi line examples in double digit ipython cells (pydata#9264) Update signature for _arrayfunction.__array__ (pydata#9237) Add encode_cf_datetime benchmark (pydata#9262) groupby, resample: Deprecate some positional args (pydata#9236) Delete ``base`` and ``loffset`` parameters to resample (pydata#9233) Update dropna docstring (pydata#9257) Grouper, Resampler as public api (pydata#8840) Fix mypy on main (pydata#9252) fix fallback isdtype method (pydata#9250) Enable pandas type checking (pydata#9213) Per-variable specification of boolean parameters in open_dataset (pydata#9218) test push Added a space to the documentation (pydata#9247) Fix typing for test_plot.py (pydata#9234) Allow mypy to run in vscode (pydata#9239) Revert "Test main push" ...
Fixes mypy errors related to plotting seen in CI.
xref: #9231