-
-
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
Doctests fixes #3846
Doctests fixes #3846
Conversation
from the root of the xarray repository. You can skip the pre-commit checks with | ||
``git commit --no-verify``. | ||
from the root of the xarray repository. You can skip the pre-commit checks | ||
with ``git commit --no-verify``. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
FWIW the isort
from pre-commit
was doing some weird stuff, I think
would it make sense to apply If we do want to use something like that, it would probably be good to find a maintained tool. |
For sure! I'm not sure there is a maintained tool... We could vendor the script? |
I wouldn't vendor exactly that script since it looks more like a proof-of-concept. I'm currently trying to rewrite it so if that works out I'd propose to use that instead. In the future, we might be able to use the |
The tool is at https://github.com/keewis/black-doctest. It is still experimental and is missing a lot of the features changes for xarray/core/dataarray.pydiff --git a/xarray/core/dataarray.py b/xarray/core/dataarray.py
index 7a95aedc..0fafd69b 100644
--- a/xarray/core/dataarray.py
+++ b/xarray/core/dataarray.py
@@ -875,8 +875,7 @@ class DataArray(AbstractArray, DataWithCoords):
Shallow versus deep copy
- >>> array = xr.DataArray([1, 2, 3], dims='x',
- ... coords={'x': ['a', 'b', 'c']})
+ >>> array = xr.DataArray([1, 2, 3], dims="x", coords={"x": ["a", "b", "c"]})
>>> array.copy()
<xarray.DataArray (x: 3)>
array([1, 2, 3])
@@ -1344,7 +1343,7 @@ class DataArray(AbstractArray, DataWithCoords):
Examples
--------
- >>> da = xr.DataArray([1, 3], [('x', np.arange(2))])
+ >>> da = xr.DataArray([1, 3], [("x", np.arange(2))])
>>> da.interp(x=0.5)
<xarray.DataArray ()>
array(2.0)
@@ -1475,8 +1474,9 @@ class DataArray(AbstractArray, DataWithCoords):
Examples
--------
- >>> arr = xr.DataArray(data=[0, 1], dims="x",
- coords={"x": ["a", "b"], "y": ("x", [0, 1])})
+ >>> arr = xr.DataArray(
+ ... data=[0, 1], dims="x", coords={"x": ["a", "b"], "y": ("x", [0, 1])}
+ ... )
>>> arr
<xarray.DataArray (x: 2)>
array([0, 1])
@@ -1589,12 +1589,11 @@ class DataArray(AbstractArray, DataWithCoords):
Examples
--------
- >>> arr = xr.DataArray(data=np.ones((2, 3)),
- ... dims=['x', 'y'],
- ... coords={'x':
- ... range(2), 'y':
- ... range(3), 'a': ('x', [3, 4])
- ... })
+ >>> arr = xr.DataArray(
+ ... data=np.ones((2, 3)),
+ ... dims=["x", "y"],
+ ... coords={"x": range(2), "y": range(3), "a": ("x", [3, 4])},
+ ... )
>>> arr
<xarray.DataArray (x: 2, y: 3)>
array([[1., 1., 1.],
@@ -1603,7 +1602,7 @@ class DataArray(AbstractArray, DataWithCoords):
* x (x) int64 0 1
* y (y) int64 0 1 2
a (x) int64 3 4
- >>> arr.set_index(x='a')
+ >>> arr.set_index(x="a")
<xarray.DataArray (x: 2, y: 3)>
array([[1., 1., 1.],
[1., 1., 1.]])
@@ -1718,8 +1717,9 @@ class DataArray(AbstractArray, DataWithCoords):
Examples
--------
- >>> arr = DataArray(np.arange(6).reshape(2, 3),
- ... coords=[('x', ['a', 'b']), ('y', [0, 1, 2])])
+ >>> arr = DataArray(
+ ... np.arange(6).reshape(2, 3), coords=[("x", ["a", "b"]), ("y", [0, 1, 2])]
+ ... )
>>> arr
<xarray.DataArray (x: 2, y: 3)>
array([[0, 1, 2],
@@ -1727,8 +1727,8 @@ class DataArray(AbstractArray, DataWithCoords):
Coordinates:
* x (x) |S1 'a' 'b'
* y (y) int64 0 1 2
- >>> stacked = arr.stack(z=('x', 'y'))
- >>> stacked.indexes['z']
+ >>> stacked = arr.stack(z=("x", "y"))
+ >>> stacked.indexes["z"]
MultiIndex(levels=[['a', 'b'], [0, 1, 2]],
codes=[[0, 0, 0, 1, 1, 1], [0, 1, 2, 0, 1, 2]],
names=['x', 'y'])
@@ -1768,8 +1768,9 @@ class DataArray(AbstractArray, DataWithCoords):
Examples
--------
- >>> arr = DataArray(np.arange(6).reshape(2, 3),
- ... coords=[('x', ['a', 'b']), ('y', [0, 1, 2])])
+ >>> arr = DataArray(
+ ... np.arange(6).reshape(2, 3), coords=[("x", ["a", "b"]), ("y", [0, 1, 2])]
+ ... )
>>> arr
<xarray.DataArray (x: 2, y: 3)>
array([[0, 1, 2],
@@ -1777,8 +1778,8 @@ class DataArray(AbstractArray, DataWithCoords):
Coordinates:
* x (x) |S1 'a' 'b'
* y (y) int64 0 1 2
- >>> stacked = arr.stack(z=('x', 'y'))
- >>> stacked.indexes['z']
+ >>> stacked = arr.stack(z=("x", "y"))
+ >>> stacked.indexes["z"]
MultiIndex(levels=[['a', 'b'], [0, 1, 2]],
codes=[[0, 0, 0, 1, 1, 1], [0, 1, 2, 0, 1, 2]],
names=['x', 'y'])
@@ -1817,9 +1818,10 @@ class DataArray(AbstractArray, DataWithCoords):
Examples
--------
>>> import xarray as xr
- >>> arr = DataArray(np.arange(6).reshape(2, 3),
- ... coords=[('x', ['a', 'b']), ('y', [0, 1, 2])])
- >>> data = xr.Dataset({'a': arr, 'b': arr.isel(y=0)})
+ >>> arr = DataArray(
+ ... np.arange(6).reshape(2, 3), coords=[("x", ["a", "b"]), ("y", [0, 1, 2])]
+ ... )
+ >>> data = xr.Dataset({"a": arr, "b": arr.isel(y=0)})
>>> data
<xarray.Dataset>
Dimensions: (x: 2, y: 3)
@@ -1829,12 +1831,12 @@ class DataArray(AbstractArray, DataWithCoords):
Data variables:
a (x, y) int64 0 1 2 3 4 5
b (x) int64 0 3
- >>> stacked = data.to_stacked_array("z", ['y'])
- >>> stacked.indexes['z']
+ >>> stacked = data.to_stacked_array("z", ["y"])
+ >>> stacked.indexes["z"]
MultiIndex(levels=[['a', 'b'], [0, 1, 2]],
labels=[[0, 0, 0, 1], [0, 1, 2, -1]],
names=['variable', 'y'])
- >>> roundtripped = stacked.to_unstacked_dataset(dim='z')
+ >>> roundtripped = stacked.to_unstacked_dataset(dim="z")
>>> data.identical(roundtripped)
True
@@ -2694,13 +2696,13 @@ class DataArray(AbstractArray, DataWithCoords):
Examples
--------
- >>> arr = xr.DataArray([5, 5, 6, 6], [[1, 2, 3, 4]], ['x'])
- >>> arr.diff('x')
+ >>> arr = xr.DataArray([5, 5, 6, 6], [[1, 2, 3, 4]], ["x"])
+ >>> arr.diff("x")
<xarray.DataArray (x: 3)>
array([0, 1, 0])
Coordinates:
* x (x) int64 2 3 4
- >>> arr.diff('x', 2)
+ >>> arr.diff("x", 2)
<xarray.DataArray (x: 2)>
array([ 1, -1])
Coordinates:
@@ -2750,7 +2752,7 @@ class DataArray(AbstractArray, DataWithCoords):
Examples
--------
- >>> arr = xr.DataArray([5, 6, 7], dims='x')
+ >>> arr = xr.DataArray([5, 6, 7], dims="x")
>>> arr.shift(x=1)
<xarray.DataArray (x: 3)>
array([ nan, 5., 6.])
@@ -2800,7 +2802,7 @@ class DataArray(AbstractArray, DataWithCoords):
Examples
--------
- >>> arr = xr.DataArray([5, 6, 7], dims='x')
+ >>> arr = xr.DataArray([5, 6, 7], dims="x")
>>> arr.roll(x=1)
<xarray.DataArray (x: 3)>
array([7, 5, 6])
@@ -2849,9 +2851,9 @@ class DataArray(AbstractArray, DataWithCoords):
--------
>>> da_vals = np.arange(6 * 5 * 4).reshape((6, 5, 4))
- >>> da = DataArray(da_vals, dims=['x', 'y', 'z'])
+ >>> da = DataArray(da_vals, dims=["x", "y", "z"])
>>> dm_vals = np.arange(4)
- >>> dm = DataArray(dm_vals, dims=['z'])
+ >>> dm = DataArray(dm_vals, dims=["z"])
>>> dm.dims
('z')
@@ -2909,9 +2911,11 @@ class DataArray(AbstractArray, DataWithCoords):
Examples
--------
- >>> da = xr.DataArray(np.random.rand(5),
- ... coords=[pd.date_range('1/1/2000', periods=5)],
- ... dims='time')
+ >>> da = xr.DataArray(
+ ... np.random.rand(5),
+ ... coords=[pd.date_range("1/1/2000", periods=5)],
+ ... dims="time",
+ ... )
>>> da
<xarray.DataArray (time: 5)>
array([ 0.965471, 0.615637, 0.26532 , 0.270962, 0.552878])
@@ -3052,8 +3056,8 @@ class DataArray(AbstractArray, DataWithCoords):
Examples
--------
- >>> arr = xr.DataArray([5, 6, 7], dims='x')
- >>> arr.rank('x')
+ >>> arr = xr.DataArray([5, 6, 7], dims="x")
+ >>> arr.rank("x")
<xarray.DataArray (x: 3)>
array([ 1., 2., 3.])
Dimensions without coordinates: x
@@ -3093,8 +3097,11 @@ class DataArray(AbstractArray, DataWithCoords):
Examples
--------
- >>> da = xr.DataArray(np.arange(12).reshape(4, 3), dims=['x', 'y'],
- ... coords={'x': [0, 0.1, 1.1, 1.2]})
+ >>> da = xr.DataArray(
+ ... np.arange(12).reshape(4, 3),
+ ... dims=["x", "y"],
+ ... coords={"x": [0, 0.1, 1.1, 1.2]},
+ ... )
>>> da
<xarray.DataArray (x: 4, y: 3)>
array([[ 0, 1, 2],
@@ -3105,7 +3112,7 @@ class DataArray(AbstractArray, DataWithCoords):
* x (x) float64 0.0 0.1 1.1 1.2
Dimensions without coordinates: y
>>>
- >>> da.differentiate('x')
+ >>> da.differentiate("x")
<xarray.DataArray (x: 4, y: 3)>
array([[30. , 30. , 30. ],
[27.545455, 27.545455, 27.545455],
@@ -3147,8 +3154,11 @@ class DataArray(AbstractArray, DataWithCoords):
Examples
--------
- >>> da = xr.DataArray(np.arange(12).reshape(4, 3), dims=['x', 'y'],
- ... coords={'x': [0, 0.1, 1.1, 1.2]})
+ >>> da = xr.DataArray(
+ ... np.arange(12).reshape(4, 3),
+ ... dims=["x", "y"],
+ ... coords={"x": [0, 0.1, 1.1, 1.2]},
+ ... )
>>> da
<xarray.DataArray (x: 4, y: 3)>
array([[ 0, 1, 2],
@@ -3159,7 +3169,7 @@ class DataArray(AbstractArray, DataWithCoords):
* x (x) float64 0.0 0.1 1.1 1.2
Dimensions without coordinates: y
>>>
- >>> da.integrate('x')
+ >>> da.integrate("x")
<xarray.DataArray (y: 3)>
array([5.4, 6.6, 7.8])
Dimensions without coordinates: y |
That's awesome @keewis ! Cool tool... Shall I merge this and then you do a PR with those changes on top? And from there we can start adding subset of the files to run in CI? |
sounds good. By then I might also have the CLI ready so we hopefully could then use it the same way we use Also note that it currently requires valid doctest lines. There is at least one instance in the code where that is not true (a missing continuation line prompt ( |
…e-size * upstream/master: (24 commits) Fix alignment with join="override" when some dims are unindexed (pydata#3839) Fix CFTimeIndex-related errors stemming from updates in pandas (pydata#3764) Doctests fixes (pydata#3846) add xpublish to related projects (pydata#3850) update installation instruction (pydata#3849) Pint support for top-level functions (pydata#3611) un-xfail tests that append to netCDF files with scipy (pydata#3805) remove panel conversion (pydata#3845) Add nxarray to related-projects.rst (pydata#3848) Implement skipna kwarg in xr.quantile (pydata#3844) Allow `where` to receive a callable (pydata#3827) update macos image (pydata#3838) Label "Installed Versions" item in Issue template (pydata#3832) Add note on diff's n differing from pandas (pydata#3822) DOC: Add rioxarray and other external examples (pydata#3757) Use stable RTD image. removed mention that 'dims' are inferred from 'coords'-dict when omit… (pydata#3821) Coarsen keep attrs 3376 (pydata#3801) Turn on html repr by default (pydata#3812) Fix zarr append with groups (pydata#3610) ...
isort -rc . && black . && mypy . && flake8
whats-new.rst
for all changes andapi.rst
for new APIStarting to get some fixes in.
It's going to be a long journey though. I think maybe we whitelist some files and move gradually through before whitelisting the whole library.