-
-
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
Migrate VariableArithmetic to NamedArrayArithmetic #8244
base: main
Are you sure you want to change the base?
Migrate VariableArithmetic to NamedArrayArithmetic #8244
Conversation
Could you do dtypes.py in separate PR @andersy005 ? That one can be merged quite easily I think. |
@andersy005 what are your thoughts on migrating tests for this. In theory it seems like we'd want to test both Variable and NamedArray, but I also don't like the idea of them potentially diverging once we switch to a new repo. OTOH perhaps there won't be much updating of such core functionality. cc @pydata/xarray for opinions |
|
Maybe we could avoid divergence by importing from the NamedArray test suite and using the same arithmetic tests but on the Variable class? |
i'm of the same opinion as @TomNicholas that we can package the shared tests in namedarray, and have the tests for Variable inherit those tests while also including their own specific tests. |
It should work to use @andersy005 when do you think would be the best time to test out this method for migrating tests? I could try it out anytime and don't see many downsides to testing while namedarray is still coupled with xarray. # namedarray/testing.py
import numpy as np
class NamedArrayTestSuite:
@pytest.fixture
def target(self):
"""Fixture that needs to be re-declared"""
assert 0
@pytest.fixture
def data(self):
return 0.5 * np.arange(10).reshape(2, 5)
def test_properties(self, target, data):
assert target.dims == ("x", "y")
assert np.array_equal(target.data, data)
assert target.attrs == {"key": "value"}
assert target.ndim == 2
assert target.sizes == {"x": 2, "y": 5}
assert target.size == 10
assert target.nbytes == 80
assert len(target) == 2 # namedarray/tests/test_namedarray.py
from namedarray.testing import NamedArrayTestSuite
from namedarray import NamedArray
class TestNamedArray(NamedArrayTestSuite):
@pytest.fixture
def target(self, data):
return NamedArray(["x", "y"], data, {"key": "value"}) # xarray/tests/test_variable.py
from namedarray.testing import NamedArrayTestSuite
from xarray import Variable
class TestVariable(NamedArrayTestSuite):
@pytest.fixture
def target(self, data):
data = 0.5 * np.arange(10).reshape(2, 5)
return Variable(["x", "y"], data, {"key": "value"}) |
whats-new.rst
api.rst