diff --git a/examples/mpi/global_timings.py b/examples/mpi/global_timings.py index 0921acd1..9e3ecdb1 100644 --- a/examples/mpi/global_timings.py +++ b/examples/mpi/global_timings.py @@ -3,7 +3,7 @@ import numpy as np from mpi4py import MPI -from ndsl.performance.timer import Timer +from ndsl import Timer @contextlib.contextmanager diff --git a/examples/mpi/zarr_monitor.py b/examples/mpi/zarr_monitor.py index 20d418f1..0c089af4 100644 --- a/examples/mpi/zarr_monitor.py +++ b/examples/mpi/zarr_monitor.py @@ -5,11 +5,14 @@ import zarr from mpi4py import MPI -from ndsl.comm.partitioner import CubedSpherePartitioner, TilePartitioner +from ndsl import ( + CubedSpherePartitioner, + QuantityFactory, + SubtileGridSizer, + TilePartitioner, + ZarrMonitor, +) from ndsl.constants import X_DIM, Y_DIM, Z_DIM -from ndsl.initialization.allocator import QuantityFactory -from ndsl.initialization.sizer import SubtileGridSizer -from ndsl.monitor import ZarrMonitor OUTPUT_PATH = "output/zarr_monitor.zarr" diff --git a/ndsl/__init__.py b/ndsl/__init__.py index e023b273..a2f771cd 100644 --- a/ndsl/__init__.py +++ b/ndsl/__init__.py @@ -1 +1,33 @@ +from .comm.communicator import CubedSphereCommunicator, TileCommunicator +from .comm.local_comm import LocalComm +from .comm.mpi import MPIComm +from .comm.null_comm import NullComm +from .comm.partitioner import CubedSpherePartitioner, TilePartitioner +from .constants import ConstantVersions +from .dsl.caches.codepath import FV3CodePath +from .dsl.dace.dace_config import DaceConfig, DaCeOrchestration, FrozenCompiledSDFG +from .dsl.dace.orchestration import orchestrate, orchestrate_function +from .dsl.dace.utils import ( + ArrayReport, + DaCeProgress, + MaxBandwithBenchmarkProgram, + StorageReport, +) +from .dsl.dace.wrapped_halo_exchange import WrappedHaloUpdater +from .dsl.stencil import FrozenStencil, GridIndexing, StencilFactory, TimingCollector +from .dsl.stencil_config import CompilationConfig, RunMode, StencilConfig +from .exceptions import OutOfBoundsError +from .halo.data_transformer import HaloExchangeSpec +from .halo.updater import HaloUpdater, HaloUpdateRequest, VectorInterfaceHaloUpdater +from .initialization.allocator import QuantityFactory +from .initialization.sizer import GridSizer, SubtileGridSizer from .logging import ndsl_log +from .monitor.netcdf_monitor import NetCDFMonitor +from .namelist import Namelist +from .performance.collector import NullPerformanceCollector, PerformanceCollector +from .performance.profiler import NullProfiler, Profiler +from .performance.report import Experiment, Report, TimeReport +from .quantity import Quantity +from .testing.dummy_comm import DummyComm +from .types import Allocator +from .utils import MetaEnumStr diff --git a/ndsl/checkpointer/__init__.py b/ndsl/checkpointer/__init__.py index a51a4d9e..8fee4dc1 100644 --- a/ndsl/checkpointer/__init__.py +++ b/ndsl/checkpointer/__init__.py @@ -1,4 +1,3 @@ -from .base import Checkpointer from .null import NullCheckpointer from .snapshots import SnapshotCheckpointer from .thresholds import ( diff --git a/ndsl/checkpointer/null.py b/ndsl/checkpointer/null.py index e707d589..fbc78755 100644 --- a/ndsl/checkpointer/null.py +++ b/ndsl/checkpointer/null.py @@ -1,4 +1,4 @@ -from .base import Checkpointer +from ndsl.checkpointer.base import Checkpointer class NullCheckpointer(Checkpointer): diff --git a/ndsl/checkpointer/snapshots.py b/ndsl/checkpointer/snapshots.py index 11b7b89d..aa806b21 100644 --- a/ndsl/checkpointer/snapshots.py +++ b/ndsl/checkpointer/snapshots.py @@ -2,11 +2,10 @@ import numpy as np +from ndsl.checkpointer.base import Checkpointer from ndsl.optional_imports import cupy as cp from ndsl.optional_imports import xarray as xr -from .base import Checkpointer - def make_dims(savepoint_dim, label, data_list): """ diff --git a/ndsl/checkpointer/thresholds.py b/ndsl/checkpointer/thresholds.py index 86133a81..ded73b39 100644 --- a/ndsl/checkpointer/thresholds.py +++ b/ndsl/checkpointer/thresholds.py @@ -5,8 +5,8 @@ import numpy as np -from ..quantity import Quantity -from .base import Checkpointer +from ndsl.checkpointer.base import Checkpointer +from ndsl.quantity import Quantity try: diff --git a/ndsl/checkpointer/validation.py b/ndsl/checkpointer/validation.py index 360c6a1b..8af11317 100644 --- a/ndsl/checkpointer/validation.py +++ b/ndsl/checkpointer/validation.py @@ -5,11 +5,15 @@ import numpy as np +from ndsl.checkpointer.base import Checkpointer +from ndsl.checkpointer.thresholds import ( + ArrayLike, + SavepointName, + SavepointThresholds, + cast_to_ndarray, +) from ndsl.optional_imports import xarray as xr -from .base import Checkpointer -from .thresholds import ArrayLike, SavepointName, SavepointThresholds, cast_to_ndarray - def _clip_pace_array_to_target( array: np.ndarray, target_shape: Tuple[int, ...] diff --git a/ndsl/comm/__init__.py b/ndsl/comm/__init__.py index e69de29b..c4a58658 100644 --- a/ndsl/comm/__init__.py +++ b/ndsl/comm/__init__.py @@ -0,0 +1,8 @@ +from .caching_comm import ( + CachingCommData, + CachingCommReader, + CachingCommWriter, + CachingRequestReader, + CachingRequestWriter, +) +from .comm_abc import Comm, Request diff --git a/ndsl/comm/boundary.py b/ndsl/comm/boundary.py index 540f0256..020798c6 100644 --- a/ndsl/comm/boundary.py +++ b/ndsl/comm/boundary.py @@ -1,8 +1,8 @@ import dataclasses from typing import Tuple -from ..quantity import Quantity, QuantityHaloSpec -from ._boundary_utils import get_boundary_slice +from ndsl.comm._boundary_utils import get_boundary_slice +from ndsl.quantity import Quantity, QuantityHaloSpec @dataclasses.dataclass diff --git a/ndsl/comm/communicator.py b/ndsl/comm/communicator.py index 9149c1ed..ff270df5 100644 --- a/ndsl/comm/communicator.py +++ b/ndsl/comm/communicator.py @@ -4,14 +4,13 @@ import numpy as np import ndsl.constants as constants -from ndsl.buffer import array_buffer, recv_buffer, send_buffer +from ndsl.buffer import array_buffer, device_synchronize, recv_buffer, send_buffer from ndsl.comm.boundary import Boundary from ndsl.comm.partitioner import CubedSpherePartitioner, Partitioner, TilePartitioner from ndsl.halo.updater import HaloUpdater, HaloUpdateRequest, VectorInterfaceHaloUpdater from ndsl.performance.timer import NullTimer, Timer from ndsl.quantity import Quantity, QuantityHaloSpec, QuantityMetadata from ndsl.types import NumpyModule -from ndsl.utils import device_synchronize try: @@ -43,21 +42,6 @@ def to_numpy(array, dtype=None) -> np.ndarray: return output -def bcast_metadata_list(comm, quantity_list): - is_root = comm.Get_rank() == constants.ROOT_RANK - if is_root: - metadata_list = [] - for quantity in quantity_list: - metadata_list.append(quantity.metadata) - else: - metadata_list = None - return comm.bcast(metadata_list, root=constants.ROOT_RANK) - - -def bcast_metadata(comm, array): - return bcast_metadata_list(comm, [array])[0] - - class Communicator(abc.ABC): def __init__( self, comm, partitioner, force_cpu: bool = False, timer: Optional[Timer] = None @@ -585,6 +569,21 @@ def boundaries(self) -> Mapping[int, Boundary]: return self._boundaries +def bcast_metadata_list(comm, quantity_list): + is_root = comm.Get_rank() == constants.ROOT_RANK + if is_root: + metadata_list = [] + for quantity in quantity_list: + metadata_list.append(quantity.metadata) + else: + metadata_list = None + return comm.bcast(metadata_list, root=constants.ROOT_RANK) + + +def bcast_metadata(comm, array): + return bcast_metadata_list(comm, [array])[0] + + class TileCommunicator(Communicator): """Performs communications within a single tile or region of a tile""" diff --git a/ndsl/dsl/__init__.py b/ndsl/dsl/__init__.py index 5dd32b25..ed44420a 100644 --- a/ndsl/dsl/__init__.py +++ b/ndsl/dsl/__init__.py @@ -2,17 +2,6 @@ from ndsl.comm.mpi import MPI -from . import dace -from .dace.dace_config import DaceConfig, DaCeOrchestration -from .dace.orchestration import orchestrate, orchestrate_function -from .stencil import ( - CompilationConfig, - FrozenStencil, - GridIndexing, - StencilConfig, - StencilFactory, -) - if MPI is not None: import os diff --git a/ndsl/dsl/caches/__init__.py b/ndsl/dsl/caches/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ndsl/dsl/dace/__init__.py b/ndsl/dsl/dace/__init__.py index bcae0c46..e69de29b 100644 --- a/ndsl/dsl/dace/__init__.py +++ b/ndsl/dsl/dace/__init__.py @@ -1,2 +0,0 @@ -from ndsl.dsl.dace.dace_config import DaceConfig -from ndsl.dsl.dace.orchestration import orchestrate diff --git a/ndsl/dsl/dace/dace_config.py b/ndsl/dsl/dace/dace_config.py index 7671b464..7f1c1477 100644 --- a/ndsl/dsl/dace/dace_config.py +++ b/ndsl/dsl/dace/dace_config.py @@ -6,7 +6,8 @@ from dace.codegen.compiled_sdfg import CompiledSDFG from dace.frontend.python.parser import DaceProgram -from ndsl.comm.communicator import Communicator, Partitioner +from ndsl.comm.communicator import Communicator +from ndsl.comm.partitioner import Partitioner from ndsl.dsl.caches.cache_location import identify_code_path from ndsl.dsl.caches.codepath import FV3CodePath from ndsl.dsl.gt4py_utils import is_gpu_backend diff --git a/ndsl/dsl/stencil.py b/ndsl/dsl/stencil.py index a7a4f941..75ef28ea 100644 --- a/ndsl/dsl/stencil.py +++ b/ndsl/dsl/stencil.py @@ -22,7 +22,6 @@ from gt4py.cartesian import gtscript from gt4py.cartesian.gtc.passes.oir_pipeline import DefaultPipeline, OirPipeline -from ndsl import testing from ndsl.comm.comm_abc import Comm from ndsl.comm.communicator import Communicator from ndsl.comm.decomposition import block_waiting_for_compilation, unblock_waiting_tiles @@ -31,8 +30,9 @@ from ndsl.dsl.dace.orchestration import SDFGConvertible from ndsl.dsl.stencil_config import CompilationConfig, RunMode, StencilConfig from ndsl.dsl.typing import Float, Index3D, cast_to_index3d -from ndsl.initialization import GridSizer, SubtileGridSizer +from ndsl.initialization.sizer import GridSizer, SubtileGridSizer from ndsl.quantity import Quantity +from ndsl.testing import comparison try: @@ -68,7 +68,7 @@ def report_difference(args, kwargs, args_copy, kwargs_copy, function_name, gt_id def report_diff(arg: np.ndarray, numpy_arg: np.ndarray, label) -> str: - metric_err = testing.compare_arr(arg, numpy_arg) + metric_err = comparison.compare_arr(arg, numpy_arg) nans_match = np.logical_and(np.isnan(arg), np.isnan(numpy_arg)) n_points = np.product(arg.shape) failures_14 = n_points - np.sum( diff --git a/ndsl/exceptions.py b/ndsl/exceptions.py index 329b1b54..fa5d118a 100644 --- a/ndsl/exceptions.py +++ b/ndsl/exceptions.py @@ -1,2 +1,7 @@ +# flake8: noqa +from ndsl.comm.local_comm import ConcurrencyError +from ndsl.units import UnitsError + + class OutOfBoundsError(ValueError): pass diff --git a/ndsl/grid/__init__.py b/ndsl/grid/__init__.py index 5e488743..fabe72bf 100644 --- a/ndsl/grid/__init__.py +++ b/ndsl/grid/__init__.py @@ -1,16 +1,5 @@ -# flake8: noqa: F401 - -from .eta import set_hybrid_pressure_coefficients +from .eta import HybridPressureCoefficients from .generation import GridDefinitions, MetricTerms -from .gnomonic import ( - great_circle_distance_along_axis, - great_circle_distance_lon_lat, - lon_lat_corner_to_cell_center, - lon_lat_midpoint, - lon_lat_to_xyz, - xyz_midpoint, - xyz_to_lon_lat, -) from .helper import ( AngleGridData, ContravariantGridData, @@ -20,4 +9,3 @@ HorizontalGridData, VerticalGridData, ) -from .stretch_transformation import direct_transform diff --git a/ndsl/grid/generation.py b/ndsl/grid/generation.py index b38dbf2f..12275d7d 100644 --- a/ndsl/grid/generation.py +++ b/ndsl/grid/generation.py @@ -21,17 +21,7 @@ from ndsl.dsl.stencil import GridIndexing from ndsl.dsl.typing import Float from ndsl.grid import eta -from ndsl.initialization.allocator import QuantityFactory -from ndsl.initialization.sizer import SubtileGridSizer -from ndsl.quantity import Quantity -from ndsl.stencils.corners import ( - fill_corners_2d, - fill_corners_agrid, - fill_corners_cgrid, - fill_corners_dgrid, -) - -from .geometry import ( +from ndsl.grid.geometry import ( calc_unit_vector_south, calc_unit_vector_west, calculate_divg_del6, @@ -47,7 +37,7 @@ supergrid_corner_fix, unit_vector_lonlat, ) -from .gnomonic import ( +from ndsl.grid.gnomonic import ( get_area, great_circle_distance_along_axis, local_gnomonic_ed, @@ -59,7 +49,16 @@ set_tile_border_dxc, set_tile_border_dyc, ) -from .mirror import mirror_grid +from ndsl.grid.mirror import mirror_grid +from ndsl.initialization.allocator import QuantityFactory +from ndsl.initialization.sizer import SubtileGridSizer +from ndsl.quantity import Quantity +from ndsl.stencils.corners import ( + fill_corners_2d, + fill_corners_agrid, + fill_corners_cgrid, + fill_corners_dgrid, +) # TODO: when every environment in python3.8, remove diff --git a/ndsl/grid/geometry.py b/ndsl/grid/geometry.py index 5b2ec028..804be0fe 100644 --- a/ndsl/grid/geometry.py +++ b/ndsl/grid/geometry.py @@ -1,7 +1,5 @@ from ndsl.comm.partitioner import TilePartitioner -from ndsl.quantity import Quantity - -from .gnomonic import ( +from ndsl.grid.gnomonic import ( get_lonlat_vect, get_unit_vector_direction, great_circle_distance_lon_lat, @@ -10,6 +8,7 @@ spherical_cos, xyz_midpoint, ) +from ndsl.quantity import Quantity def get_center_vector( diff --git a/ndsl/grid/global_setup.py b/ndsl/grid/global_setup.py index 46c0c902..a0237ec6 100644 --- a/ndsl/grid/global_setup.py +++ b/ndsl/grid/global_setup.py @@ -1,16 +1,15 @@ import math from ndsl.constants import PI, RADIUS - -from .generation import MetricTerms -from .gnomonic import ( +from ndsl.grid.generation import MetricTerms +from ndsl.grid.gnomonic import ( _cart_to_latlon, _check_shapes, _latlon2xyz, _mirror_latlon, symm_ed, ) -from .mirror import _rot_3d +from ndsl.grid.mirror import _rot_3d def gnomonic_grid(grid_type: int, lon, lat, np): diff --git a/ndsl/grid/helper.py b/ndsl/grid/helper.py index 89a8c0e7..fd62d771 100644 --- a/ndsl/grid/helper.py +++ b/ndsl/grid/helper.py @@ -13,11 +13,10 @@ import ndsl.constants as constants from ndsl.constants import Z_DIM, Z_INTERFACE_DIM from ndsl.filesystem import get_fs -from ndsl.initialization import QuantityFactory +from ndsl.grid.generation import MetricTerms +from ndsl.initialization.allocator import QuantityFactory from ndsl.quantity import Quantity -from .generation import MetricTerms - @dataclasses.dataclass(frozen=True) class DampingCoefficients: diff --git a/ndsl/halo/__init__.py b/ndsl/halo/__init__.py index e69de29b..e16177d5 100644 --- a/ndsl/halo/__init__.py +++ b/ndsl/halo/__init__.py @@ -0,0 +1,5 @@ +from .data_transformer import ( + HaloDataTransformer, + HaloDataTransformerCPU, + HaloDataTransformerGPU, +) diff --git a/ndsl/initialization/__init__.py b/ndsl/initialization/__init__.py index fe15db8b..8f40c7af 100644 --- a/ndsl/initialization/__init__.py +++ b/ndsl/initialization/__init__.py @@ -1,2 +1 @@ -from .allocator import QuantityFactory -from .sizer import GridSizer, SubtileGridSizer +from .sizer import GridSizer diff --git a/ndsl/initialization/allocator.py b/ndsl/initialization/allocator.py index cbbd78de..5320e4c6 100644 --- a/ndsl/initialization/allocator.py +++ b/ndsl/initialization/allocator.py @@ -2,10 +2,10 @@ import numpy as np -from ..constants import SPATIAL_DIMS -from ..optional_imports import gt4py -from ..quantity import Quantity, QuantityHaloSpec -from .sizer import GridSizer +from ndsl.constants import SPATIAL_DIMS +from ndsl.initialization.sizer import GridSizer +from ndsl.optional_imports import gt4py +from ndsl.quantity import Quantity, QuantityHaloSpec class StorageNumpy: diff --git a/ndsl/monitor/__init__.py b/ndsl/monitor/__init__.py index a0c7e036..5d732315 100644 --- a/ndsl/monitor/__init__.py +++ b/ndsl/monitor/__init__.py @@ -1,3 +1,2 @@ -from .netcdf_monitor import NetCDFMonitor from .protocol import Monitor from .zarr_monitor import ZarrMonitor diff --git a/ndsl/monitor/convert.py b/ndsl/monitor/convert.py index ad05b27d..a62af01a 100644 --- a/ndsl/monitor/convert.py +++ b/ndsl/monitor/convert.py @@ -1,6 +1,6 @@ import numpy as np -from ..optional_imports import cupy +from ndsl.optional_imports import cupy def to_numpy(array, dtype=None) -> np.ndarray: diff --git a/ndsl/monitor/netcdf_monitor.py b/ndsl/monitor/netcdf_monitor.py index 3d950ae0..8a0b96fd 100644 --- a/ndsl/monitor/netcdf_monitor.py +++ b/ndsl/monitor/netcdf_monitor.py @@ -6,12 +6,11 @@ import numpy as np from ndsl.comm.communicator import Communicator +from ndsl.filesystem import get_fs +from ndsl.logging import ndsl_log +from ndsl.monitor.convert import to_numpy from ndsl.optional_imports import xarray as xr - -from ..filesystem import get_fs -from ..logging import ndsl_log -from ..quantity import Quantity -from .convert import to_numpy +from ndsl.quantity import Quantity class _TimeChunkedVariable: diff --git a/ndsl/performance/collector.py b/ndsl/performance/collector.py index 4df04407..8ec7a817 100644 --- a/ndsl/performance/collector.py +++ b/ndsl/performance/collector.py @@ -11,6 +11,7 @@ from ndsl.performance.report import ( Report, TimeReport, + collect_data_and_write_to_file, collect_keys_from_data, gather_hit_counts, get_experiment_info, @@ -19,8 +20,6 @@ from ndsl.performance.timer import NullTimer, Timer from ndsl.utils import GPU_AVAILABLE -from .report import collect_data_and_write_to_file - class AbstractPerformanceCollector(Protocol): total_timer: Timer diff --git a/ndsl/performance/config.py b/ndsl/performance/config.py index fa1ce8ed..99e6109f 100644 --- a/ndsl/performance/config.py +++ b/ndsl/performance/config.py @@ -1,13 +1,12 @@ import dataclasses from ndsl.comm.comm_abc import Comm -from ndsl.performance.profiler import NullProfiler, Profiler - -from .collector import ( +from ndsl.performance.collector import ( AbstractPerformanceCollector, NullPerformanceCollector, PerformanceCollector, ) +from ndsl.performance.profiler import NullProfiler, Profiler @dataclasses.dataclass diff --git a/ndsl/stencils/__init__.py b/ndsl/stencils/__init__.py index d3ec452c..641e032a 100644 --- a/ndsl/stencils/__init__.py +++ b/ndsl/stencils/__init__.py @@ -1 +1,5 @@ +from .c2l_ord import CubedToLatLon +from .corners import CopyCorners, CopyCornersXY, FillCornersBGrid + + __version__ = "0.2.0" diff --git a/ndsl/stencils/c2l_ord.py b/ndsl/stencils/c2l_ord.py index 4e18c1ff..67f2b5a1 100644 --- a/ndsl/stencils/c2l_ord.py +++ b/ndsl/stencils/c2l_ord.py @@ -13,7 +13,7 @@ from ndsl.dsl.dace.wrapped_halo_exchange import WrappedHaloUpdater from ndsl.dsl.stencil import StencilFactory from ndsl.dsl.typing import Float, FloatField, FloatFieldIJ -from ndsl.grid import GridData +from ndsl.grid.helper import GridData from ndsl.initialization.allocator import QuantityFactory diff --git a/ndsl/stencils/testing/__init__.py b/ndsl/stencils/testing/__init__.py index d676e871..4be2c60a 100644 --- a/ndsl/stencils/testing/__init__.py +++ b/ndsl/stencils/testing/__init__.py @@ -1,9 +1,10 @@ -from . import parallel_translate, translate +from .grid import Grid # type: ignore from .parallel_translate import ( ParallelTranslate, ParallelTranslate2Py, ParallelTranslate2PyState, ParallelTranslateBaseSlicing, + ParallelTranslateGrid, ) from .savepoint import SavepointCase, Translate, dataset_to_dict from .temporaries import assert_same_temporaries, copy_temporaries diff --git a/ndsl/stencils/testing/conftest.py b/ndsl/stencils/testing/conftest.py index 65ac8c03..d000e1fa 100644 --- a/ndsl/stencils/testing/conftest.py +++ b/ndsl/stencils/testing/conftest.py @@ -17,8 +17,9 @@ from ndsl.comm.partitioner import CubedSpherePartitioner, TilePartitioner from ndsl.dsl.dace.dace_config import DaceConfig from ndsl.namelist import Namelist -from ndsl.stencils.testing import ParallelTranslate, TranslateGrid +from ndsl.stencils.testing.parallel_translate import ParallelTranslate from ndsl.stencils.testing.savepoint import SavepointCase, dataset_to_dict +from ndsl.stencils.testing.translate import TranslateGrid @pytest.fixture() diff --git a/ndsl/stencils/testing/grid.py b/ndsl/stencils/testing/grid.py index b6a55133..273a0f3d 100644 --- a/ndsl/stencils/testing/grid.py +++ b/ndsl/stencils/testing/grid.py @@ -8,13 +8,13 @@ from ndsl.dsl import gt4py_utils as utils from ndsl.dsl.stencil import GridIndexing from ndsl.dsl.typing import Float -from ndsl.grid import ( +from ndsl.grid.generation import GridDefinitions +from ndsl.grid.helper import ( AngleGridData, ContravariantGridData, DampingCoefficients, DriverGridData, GridData, - GridDefinitions, HorizontalGridData, MetricTerms, VerticalGridData, diff --git a/ndsl/stencils/testing/parallel_translate.py b/ndsl/stencils/testing/parallel_translate.py index 7481a41e..e0669994 100644 --- a/ndsl/stencils/testing/parallel_translate.py +++ b/ndsl/stencils/testing/parallel_translate.py @@ -8,8 +8,10 @@ from ndsl.constants import HORIZONTAL_DIMS, N_HALO_DEFAULT, X_DIMS, Y_DIMS from ndsl.dsl import gt4py_utils as utils from ndsl.quantity import Quantity - -from .translate import TranslateFortranData2Py, read_serialized_data +from ndsl.stencils.testing.translate import ( + TranslateFortranData2Py, + read_serialized_data, +) class ParallelTranslate: diff --git a/ndsl/stencils/testing/savepoint.py b/ndsl/stencils/testing/savepoint.py index 04d01e21..77d71917 100644 --- a/ndsl/stencils/testing/savepoint.py +++ b/ndsl/stencils/testing/savepoint.py @@ -5,7 +5,7 @@ import numpy as np import xarray as xr -from .grid import Grid # type: ignore +from ndsl.stencils.testing.grid import Grid # type: ignore def dataset_to_dict(ds: xr.Dataset) -> Dict[str, Union[np.ndarray, float, int]]: diff --git a/ndsl/stencils/testing/test_translate.py b/ndsl/stencils/testing/test_translate.py index 2e42e273..29c4ed65 100644 --- a/ndsl/stencils/testing/test_translate.py +++ b/ndsl/stencils/testing/test_translate.py @@ -14,8 +14,9 @@ from ndsl.dsl.stencil import CompilationConfig, StencilConfig from ndsl.quantity import Quantity from ndsl.restart._legacy_restart import RESTART_PROPERTIES -from ndsl.stencils.testing import SavepointCase, dataset_to_dict -from ndsl.testing import compare_scalar, perturb, success, success_array +from ndsl.stencils.testing.savepoint import SavepointCase, dataset_to_dict +from ndsl.testing.comparison import compare_scalar, success, success_array +from ndsl.testing.perturbation import perturb # this only matters for manually-added print statements diff --git a/ndsl/testing/__init__.py b/ndsl/testing/__init__.py index a1c927e9..e69de29b 100644 --- a/ndsl/testing/__init__.py +++ b/ndsl/testing/__init__.py @@ -1,3 +0,0 @@ -from .comparison import compare_arr, compare_scalar, success, success_array -from .dummy_comm import ConcurrencyError, DummyComm -from .perturbation import perturb diff --git a/ndsl/testing/dummy_comm.py b/ndsl/testing/dummy_comm.py index b4df2347..f3e93817 100644 --- a/ndsl/testing/dummy_comm.py +++ b/ndsl/testing/dummy_comm.py @@ -1,2 +1 @@ -from ndsl.comm.local_comm import ConcurrencyError # noqa from ndsl.comm.local_comm import LocalComm as DummyComm # noqa diff --git a/ndsl/typing.py b/ndsl/typing.py new file mode 100644 index 00000000..ddbf1681 --- /dev/null +++ b/ndsl/typing.py @@ -0,0 +1,6 @@ +# flake8: noqa +from ndsl.checkpointer.base import Checkpointer +from ndsl.comm.communicator import Communicator +from ndsl.comm.partitioner import Partitioner +from ndsl.performance.collector import AbstractPerformanceCollector +from ndsl.types import AsyncRequest, NumpyModule diff --git a/setup.py b/setup.py index 73ec210a..c0d71813 100644 --- a/setup.py +++ b/setup.py @@ -22,6 +22,7 @@ def local_pkg(name: str, relative_path: str) -> str: "mpi4py", "cftime", "xarray", + "f90nml>=1.1.0", "fsspec", "netcdf4", "scipy", # restart capacities only diff --git a/tests/dsl/test_caches.py b/tests/dsl/test_caches.py index a7218b05..893fb89d 100644 --- a/tests/dsl/test_caches.py +++ b/tests/dsl/test_caches.py @@ -2,15 +2,16 @@ from gt4py.cartesian.gtscript import PARALLEL, Field, computation, interval from gt4py.storage import empty, ones -from ndsl.comm.mpi import MPI -from ndsl.dsl.dace import orchestrate -from ndsl.dsl.dace.dace_config import DaceConfig, DaCeOrchestration -from ndsl.dsl.stencil import ( +from ndsl import ( CompilationConfig, + DaceConfig, + DaCeOrchestration, GridIndexing, StencilConfig, StencilFactory, ) +from ndsl.comm.mpi import MPI +from ndsl.dsl.dace.orchestration import orchestrate def _make_storage( diff --git a/tests/dsl/test_compilation_config.py b/tests/dsl/test_compilation_config.py index 14b240a0..62049d91 100644 --- a/tests/dsl/test_compilation_config.py +++ b/tests/dsl/test_compilation_config.py @@ -3,9 +3,13 @@ import pytest -from ndsl.comm.communicator import CubedSphereCommunicator -from ndsl.comm.partitioner import CubedSpherePartitioner, TilePartitioner -from ndsl.dsl.stencil import CompilationConfig, RunMode +from ndsl import ( + CompilationConfig, + CubedSphereCommunicator, + CubedSpherePartitioner, + RunMode, + TilePartitioner, +) def test_safety_checks(): diff --git a/tests/dsl/test_dace_config.py b/tests/dsl/test_dace_config.py index 0aca1764..c044cb16 100644 --- a/tests/dsl/test_dace_config.py +++ b/tests/dsl/test_dace_config.py @@ -1,12 +1,8 @@ import unittest.mock -from ndsl.comm.communicator import CubedSpherePartitioner, TilePartitioner -from ndsl.dsl.dace.dace_config import DaceConfig, _determine_compiling_ranks -from ndsl.dsl.dace.orchestration import ( - DaCeOrchestration, - orchestrate, - orchestrate_function, -) +from ndsl import CubedSpherePartitioner, DaceConfig, DaCeOrchestration, TilePartitioner +from ndsl.dsl.dace.dace_config import _determine_compiling_ranks +from ndsl.dsl.dace.orchestration import orchestrate, orchestrate_function """ diff --git a/tests/dsl/test_skip_passes.py b/tests/dsl/test_skip_passes.py index c1f3a712..e0173b7b 100644 --- a/tests/dsl/test_skip_passes.py +++ b/tests/dsl/test_skip_passes.py @@ -7,14 +7,14 @@ from gt4py.cartesian.gtc.passes.oir_pipeline import DefaultPipeline from gt4py.cartesian.gtscript import PARALLEL, computation, interval -from ndsl.constants import X_DIM, Y_DIM, Z_DIM -from ndsl.dsl.dace.dace_config import DaceConfig -from ndsl.dsl.stencil import ( +from ndsl import ( CompilationConfig, + DaceConfig, GridIndexing, StencilConfig, StencilFactory, ) +from ndsl.constants import X_DIM, Y_DIM, Z_DIM from ndsl.dsl.typing import FloatField diff --git a/tests/dsl/test_stencil.py b/tests/dsl/test_stencil.py index 18cb99af..180b7ba2 100644 --- a/tests/dsl/test_stencil.py +++ b/tests/dsl/test_stencil.py @@ -1,12 +1,7 @@ from gt4py.cartesian.gtscript import PARALLEL, Field, computation, interval from gt4py.storage import empty, ones -from ndsl.dsl.stencil import ( - CompilationConfig, - GridIndexing, - StencilConfig, - StencilFactory, -) +from ndsl import CompilationConfig, GridIndexing, StencilConfig, StencilFactory def _make_storage( diff --git a/tests/dsl/test_stencil_config.py b/tests/dsl/test_stencil_config.py index 45891df4..7e6b4da3 100644 --- a/tests/dsl/test_stencil_config.py +++ b/tests/dsl/test_stencil_config.py @@ -1,7 +1,6 @@ import pytest -from ndsl.dsl.dace.dace_config import DaceConfig -from ndsl.dsl.stencil import CompilationConfig, StencilConfig +from ndsl import CompilationConfig, DaceConfig, StencilConfig @pytest.mark.parametrize("validate_args", [True, False]) diff --git a/tests/dsl/test_stencil_factory.py b/tests/dsl/test_stencil_factory.py index 364e5a3b..ac189ad8 100644 --- a/tests/dsl/test_stencil_factory.py +++ b/tests/dsl/test_stencil_factory.py @@ -2,17 +2,17 @@ import pytest from gt4py.cartesian.gtscript import PARALLEL, computation, horizontal, interval, region -from ndsl.constants import X_DIM, Y_DIM, Z_DIM -from ndsl.dsl.dace.dace_config import DaceConfig -from ndsl.dsl.gt4py_utils import make_storage_from_shape -from ndsl.dsl.stencil import ( - CompareToNumpyStencil, +from ndsl import ( + CompilationConfig, + DaceConfig, FrozenStencil, GridIndexing, + StencilConfig, StencilFactory, - get_stencils_with_varied_bounds, ) -from ndsl.dsl.stencil_config import CompilationConfig, StencilConfig +from ndsl.constants import X_DIM, Y_DIM, Z_DIM +from ndsl.dsl.gt4py_utils import make_storage_from_shape +from ndsl.dsl.stencil import CompareToNumpyStencil, get_stencils_with_varied_bounds from ndsl.dsl.typing import FloatField diff --git a/tests/dsl/test_stencil_wrapper.py b/tests/dsl/test_stencil_wrapper.py index ba3da536..986883dc 100644 --- a/tests/dsl/test_stencil_wrapper.py +++ b/tests/dsl/test_stencil_wrapper.py @@ -6,12 +6,17 @@ import pytest from gt4py.cartesian.gtscript import PARALLEL, computation, interval -from ndsl.dsl.dace.dace_config import DaceConfig, DaCeOrchestration +from ndsl import ( + CompilationConfig, + DaceConfig, + DaCeOrchestration, + FrozenStencil, + Quantity, + StencilConfig, +) from ndsl.dsl.gt4py_utils import make_storage_from_shape -from ndsl.dsl.stencil import FrozenStencil, _convert_quantities_to_storage -from ndsl.dsl.stencil_config import CompilationConfig, StencilConfig +from ndsl.dsl.stencil import _convert_quantities_to_storage from ndsl.dsl.typing import Float, FloatField -from ndsl.quantity import Quantity def get_stencil_config( diff --git a/tests/mpi/__init__.py b/tests/mpi/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/mpi/test_mpi_halo_update.py b/tests/mpi/test_mpi_halo_update.py index 4d5133d4..ab11b16e 100644 --- a/tests/mpi/test_mpi_halo_update.py +++ b/tests/mpi/test_mpi_halo_update.py @@ -1,11 +1,14 @@ import copy import pytest -from mpi_comm import MPI +from ndsl import ( + CubedSphereCommunicator, + CubedSpherePartitioner, + Quantity, + TilePartitioner, +) from ndsl.comm._boundary_utils import get_boundary_slice -from ndsl.comm.communicator import CubedSphereCommunicator -from ndsl.comm.partitioner import CubedSpherePartitioner, TilePartitioner from ndsl.constants import ( BOUNDARY_TYPES, EDGE_BOUNDARY_TYPES, @@ -23,7 +26,7 @@ Z_DIM, Z_INTERFACE_DIM, ) -from ndsl.quantity import Quantity +from tests.mpi.mpi_comm import MPI @pytest.fixture diff --git a/tests/mpi/test_mpi_mock.py b/tests/mpi/test_mpi_mock.py index c9d3d610..b8202995 100644 --- a/tests/mpi/test_mpi_mock.py +++ b/tests/mpi/test_mpi_mock.py @@ -1,9 +1,10 @@ import numpy as np import pytest -from mpi_comm import MPI -from ndsl.comm.communicator import recv_buffer -from ndsl.testing import ConcurrencyError, DummyComm +from ndsl import DummyComm +from ndsl.buffer import recv_buffer +from ndsl.exceptions import ConcurrencyError +from tests.mpi.mpi_comm import MPI worker_function_list = [] diff --git a/tests/quantity/test_boundary.py b/tests/quantity/test_boundary.py index 42db16ab..a4f8e812 100644 --- a/tests/quantity/test_boundary.py +++ b/tests/quantity/test_boundary.py @@ -1,6 +1,7 @@ import numpy as np import pytest +from ndsl import Quantity from ndsl.comm._boundary_utils import _shift_boundary_slice, get_boundary_slice from ndsl.constants import ( EAST, @@ -12,7 +13,6 @@ Y_DIM, Z_DIM, ) -from ndsl.quantity import Quantity def boundary_data(quantity, boundary_type, n_points, interior=True): diff --git a/tests/quantity/test_deepcopy.py b/tests/quantity/test_deepcopy.py index c44ea394..a7b1564c 100644 --- a/tests/quantity/test_deepcopy.py +++ b/tests/quantity/test_deepcopy.py @@ -3,7 +3,7 @@ import numpy as np -from ndsl.quantity import Quantity +from ndsl import Quantity def test_deepcopy_copy_is_editable_by_view(): diff --git a/tests/quantity/test_quantity.py b/tests/quantity/test_quantity.py index 7d0d75f0..a6de628b 100644 --- a/tests/quantity/test_quantity.py +++ b/tests/quantity/test_quantity.py @@ -2,7 +2,7 @@ import pytest import ndsl.quantity as qty -from ndsl.quantity import Quantity +from ndsl import Quantity try: diff --git a/tests/quantity/test_storage.py b/tests/quantity/test_storage.py index 172d78d6..2cdb8d49 100644 --- a/tests/quantity/test_storage.py +++ b/tests/quantity/test_storage.py @@ -1,7 +1,7 @@ import numpy as np import pytest -from ndsl.quantity import Quantity +from ndsl import Quantity try: diff --git a/tests/quantity/test_transpose.py b/tests/quantity/test_transpose.py index be1569a4..5e527279 100644 --- a/tests/quantity/test_transpose.py +++ b/tests/quantity/test_transpose.py @@ -1,5 +1,6 @@ import pytest +from ndsl import Quantity from ndsl.constants import ( X_DIM, X_DIMS, @@ -10,7 +11,6 @@ Z_DIM, Z_DIMS, ) -from ndsl.quantity import Quantity @pytest.fixture diff --git a/tests/quantity/test_view.py b/tests/quantity/test_view.py index a1ba5e57..73245093 100644 --- a/tests/quantity/test_view.py +++ b/tests/quantity/test_view.py @@ -1,8 +1,8 @@ import numpy as np import pytest +from ndsl import Quantity from ndsl.constants import X_DIM, Y_DIM -from ndsl.quantity import Quantity @pytest.fixture diff --git a/tests/test_caching_comm.py b/tests/test_caching_comm.py index 6481315a..5674bfc9 100644 --- a/tests/test_caching_comm.py +++ b/tests/test_caching_comm.py @@ -4,13 +4,16 @@ import numpy as np -from ndsl.comm.caching_comm import CachingCommReader, CachingCommWriter -from ndsl.comm.communicator import CubedSphereCommunicator -from ndsl.comm.local_comm import LocalComm -from ndsl.comm.null_comm import NullComm -from ndsl.comm.partitioner import CubedSpherePartitioner, TilePartitioner +from ndsl import ( + CubedSphereCommunicator, + CubedSpherePartitioner, + LocalComm, + NullComm, + Quantity, + TilePartitioner, +) +from ndsl.comm import CachingCommReader, CachingCommWriter from ndsl.constants import X_DIM, Y_DIM -from ndsl.quantity import Quantity def test_halo_update_integration(): diff --git a/tests/test_cube_scatter_gather.py b/tests/test_cube_scatter_gather.py index 855422bd..aee22533 100644 --- a/tests/test_cube_scatter_gather.py +++ b/tests/test_cube_scatter_gather.py @@ -3,8 +3,13 @@ import pytest -from ndsl.comm.communicator import CubedSphereCommunicator -from ndsl.comm.partitioner import CubedSpherePartitioner, TilePartitioner +from ndsl import ( + CubedSphereCommunicator, + CubedSpherePartitioner, + DummyComm, + Quantity, + TilePartitioner, +) from ndsl.constants import ( HORIZONTAL_DIMS, TILE_DIM, @@ -15,9 +20,7 @@ Z_DIM, Z_INTERFACE_DIM, ) -from ndsl.performance.timer import Timer -from ndsl.quantity import Quantity -from ndsl.testing import DummyComm +from ndsl.performance import Timer try: diff --git a/tests/test_decomposition.py b/tests/test_decomposition.py index de4d40c2..bf7363e3 100644 --- a/tests/test_decomposition.py +++ b/tests/test_decomposition.py @@ -4,6 +4,7 @@ import pytest +from ndsl import CubedSpherePartitioner, TilePartitioner from ndsl.comm.decomposition import ( block_waiting_for_compilation, build_cache_path, @@ -11,9 +12,7 @@ determine_rank_is_compiling, unblock_waiting_tiles, ) -from ndsl.comm.partitioner import CubedSpherePartitioner, TilePartitioner - -from .mpi.mpi_comm import MPI +from tests.mpi.mpi_comm import MPI @pytest.mark.parametrize( diff --git a/tests/test_dimension_sizer.py b/tests/test_dimension_sizer.py index 3f2cdded..a401e698 100644 --- a/tests/test_dimension_sizer.py +++ b/tests/test_dimension_sizer.py @@ -2,6 +2,7 @@ import pytest +from ndsl import QuantityFactory, SubtileGridSizer from ndsl.constants import ( N_HALO_DEFAULT, X_DIM, @@ -11,8 +12,6 @@ Z_DIM, Z_INTERFACE_DIM, ) -from ndsl.initialization.allocator import QuantityFactory -from ndsl.initialization.sizer import SubtileGridSizer @pytest.fixture(params=[48, 96]) diff --git a/tests/test_g2g_communication.py b/tests/test_g2g_communication.py index a05b0fb3..17a58785 100644 --- a/tests/test_g2g_communication.py +++ b/tests/test_g2g_communication.py @@ -8,12 +8,15 @@ import numpy as np import pytest -from ndsl.comm.communicator import CubedSphereCommunicator -from ndsl.comm.partitioner import CubedSpherePartitioner, TilePartitioner +from ndsl import ( + CubedSphereCommunicator, + CubedSpherePartitioner, + DummyComm, + Quantity, + TilePartitioner, +) from ndsl.constants import X_DIM, Y_DIM, Z_DIM -from ndsl.performance.timer import Timer -from ndsl.quantity import Quantity -from ndsl.testing import DummyComm +from ndsl.performance import Timer try: diff --git a/tests/test_halo_data_transformer.py b/tests/test_halo_data_transformer.py index 10d7f996..e3f6d851 100644 --- a/tests/test_halo_data_transformer.py +++ b/tests/test_halo_data_transformer.py @@ -4,6 +4,7 @@ import numpy as np import pytest +from ndsl import HaloExchangeSpec, Quantity from ndsl.buffer import Buffer from ndsl.comm import _boundary_utils from ndsl.constants import ( @@ -22,9 +23,9 @@ Z_DIM, Z_INTERFACE_DIM, ) -from ndsl.halo.data_transformer import HaloDataTransformer, HaloExchangeSpec +from ndsl.halo import HaloDataTransformer from ndsl.halo.rotate import rotate_scalar_data, rotate_vector_data -from ndsl.quantity import Quantity, QuantityHaloSpec +from ndsl.quantity import QuantityHaloSpec @pytest.fixture diff --git a/tests/test_halo_update.py b/tests/test_halo_update.py index c17903cd..3d3bf501 100644 --- a/tests/test_halo_update.py +++ b/tests/test_halo_update.py @@ -3,10 +3,18 @@ import pytest +from ndsl import ( + CubedSphereCommunicator, + CubedSpherePartitioner, + DummyComm, + HaloUpdater, + OutOfBoundsError, + Quantity, + TileCommunicator, + TilePartitioner, +) from ndsl.buffer import BUFFER_CACHE from ndsl.comm._boundary_utils import get_boundary_slice -from ndsl.comm.communicator import CubedSphereCommunicator, TileCommunicator -from ndsl.comm.partitioner import CubedSpherePartitioner, TilePartitioner from ndsl.constants import ( BOUNDARY_TYPES, EDGE_BOUNDARY_TYPES, @@ -24,11 +32,8 @@ Z_DIM, Z_INTERFACE_DIM, ) -from ndsl.exceptions import OutOfBoundsError -from ndsl.halo.updater import HaloUpdater -from ndsl.performance.timer import Timer -from ndsl.quantity import Quantity, QuantityHaloSpec -from ndsl.testing import DummyComm +from ndsl.performance import Timer +from ndsl.quantity import QuantityHaloSpec @pytest.fixture diff --git a/tests/test_halo_update_ranks.py b/tests/test_halo_update_ranks.py index e33f0d66..6ceb4886 100644 --- a/tests/test_halo_update_ranks.py +++ b/tests/test_halo_update_ranks.py @@ -1,7 +1,12 @@ import pytest -from ndsl.comm.communicator import CubedSphereCommunicator -from ndsl.comm.partitioner import CubedSpherePartitioner, TilePartitioner +from ndsl import ( + CubedSphereCommunicator, + CubedSpherePartitioner, + DummyComm, + Quantity, + TilePartitioner, +) from ndsl.constants import ( X_DIM, X_INTERFACE_DIM, @@ -10,9 +15,7 @@ Z_DIM, Z_INTERFACE_DIM, ) -from ndsl.performance.timer import Timer -from ndsl.quantity import Quantity -from ndsl.testing import DummyComm +from ndsl.performance import Timer @pytest.fixture diff --git a/tests/test_legacy_restart.py b/tests/test_legacy_restart.py index 3728b94c..2034c04c 100644 --- a/tests/test_legacy_restart.py +++ b/tests/test_legacy_restart.py @@ -12,17 +12,20 @@ import pytest import ndsl.io as io -from ndsl.comm.communicator import CubedSphereCommunicator -from ndsl.comm.partitioner import CubedSpherePartitioner, TilePartitioner +from ndsl import ( + CubedSphereCommunicator, + CubedSpherePartitioner, + DummyComm, + Quantity, + TilePartitioner, +) from ndsl.constants import X_DIM, X_INTERFACE_DIM, Y_DIM, Y_INTERFACE_DIM, Z_DIM -from ndsl.quantity import Quantity from ndsl.restart._legacy_restart import ( _apply_dims, get_rank_suffix, map_keys, open_restart, ) -from ndsl.testing import DummyComm requires_xarray = pytest.mark.skipif(xr is None, reason="xarray is not installed") diff --git a/tests/test_local_comm.py b/tests/test_local_comm.py index 0b8072af..c549ee2a 100644 --- a/tests/test_local_comm.py +++ b/tests/test_local_comm.py @@ -1,7 +1,7 @@ import numpy import pytest -from ndsl.comm.local_comm import LocalComm +from ndsl import LocalComm @pytest.fixture diff --git a/tests/test_netcdf_monitor.py b/tests/test_netcdf_monitor.py index 6e20537f..7a21dd78 100644 --- a/tests/test_netcdf_monitor.py +++ b/tests/test_netcdf_monitor.py @@ -6,12 +6,15 @@ import numpy as np import pytest -from ndsl.comm.communicator import CubedSphereCommunicator -from ndsl.comm.partitioner import CubedSpherePartitioner, TilePartitioner -from ndsl.monitor import NetCDFMonitor +from ndsl import ( + CubedSphereCommunicator, + CubedSpherePartitioner, + DummyComm, + NetCDFMonitor, + Quantity, + TilePartitioner, +) from ndsl.optional_imports import xarray as xr -from ndsl.quantity import Quantity -from ndsl.testing import DummyComm requires_xarray = pytest.mark.skipif(xr is None, reason="xarray is not installed") diff --git a/tests/test_null_comm.py b/tests/test_null_comm.py index 0a384767..74065f67 100644 --- a/tests/test_null_comm.py +++ b/tests/test_null_comm.py @@ -1,6 +1,9 @@ -from ndsl.comm.communicator import CubedSphereCommunicator -from ndsl.comm.null_comm import NullComm -from ndsl.comm.partitioner import CubedSpherePartitioner, TilePartitioner +from ndsl import ( + CubedSphereCommunicator, + CubedSpherePartitioner, + NullComm, + TilePartitioner, +) def test_can_create_cube_communicator(): diff --git a/tests/test_partitioner.py b/tests/test_partitioner.py index 99f1fb6b..6bd15eda 100644 --- a/tests/test_partitioner.py +++ b/tests/test_partitioner.py @@ -1,9 +1,8 @@ import numpy as np import pytest +from ndsl import CubedSpherePartitioner, Quantity, TilePartitioner from ndsl.comm.partitioner import ( - CubedSpherePartitioner, - TilePartitioner, _subtile_extents_from_tile_metadata, get_tile_index, get_tile_number, @@ -18,7 +17,6 @@ Z_DIM, Z_INTERFACE_DIM, ) -from ndsl.quantity import Quantity rank_list = [] diff --git a/tests/test_partitioner_boundaries.py b/tests/test_partitioner_boundaries.py index 71574ee6..eff528fd 100644 --- a/tests/test_partitioner_boundaries.py +++ b/tests/test_partitioner_boundaries.py @@ -1,10 +1,7 @@ import pytest -from ndsl.comm.partitioner import ( - CubedSpherePartitioner, - TilePartitioner, - rotate_subtile_rank, -) +from ndsl import CubedSpherePartitioner, TilePartitioner +from ndsl.comm.partitioner import rotate_subtile_rank from ndsl.constants import ( BOUNDARY_TYPES, CORNER_BOUNDARY_TYPES, diff --git a/tests/test_sync_shared_boundary.py b/tests/test_sync_shared_boundary.py index 37711009..7db5a621 100644 --- a/tests/test_sync_shared_boundary.py +++ b/tests/test_sync_shared_boundary.py @@ -1,11 +1,14 @@ import pytest -from ndsl.comm.communicator import CubedSphereCommunicator -from ndsl.comm.partitioner import CubedSpherePartitioner, TilePartitioner +from ndsl import ( + CubedSphereCommunicator, + CubedSpherePartitioner, + DummyComm, + Quantity, + TilePartitioner, +) from ndsl.constants import X_DIM, X_INTERFACE_DIM, Y_DIM, Y_INTERFACE_DIM -from ndsl.performance.timer import Timer -from ndsl.quantity import Quantity -from ndsl.testing import DummyComm +from ndsl.performance import Timer @pytest.fixture diff --git a/tests/test_tile_scatter.py b/tests/test_tile_scatter.py index 26aa3d0d..d768bb15 100644 --- a/tests/test_tile_scatter.py +++ b/tests/test_tile_scatter.py @@ -1,10 +1,7 @@ import pytest -from ndsl.comm.communicator import TileCommunicator -from ndsl.comm.partitioner import TilePartitioner +from ndsl import DummyComm, Quantity, TileCommunicator, TilePartitioner from ndsl.constants import X_DIM, X_INTERFACE_DIM, Y_DIM, Y_INTERFACE_DIM -from ndsl.quantity import Quantity -from ndsl.testing import DummyComm def rank_scatter_results(communicator_list, quantity): diff --git a/tests/test_tile_scatter_gather.py b/tests/test_tile_scatter_gather.py index 2669f5fc..6d56dd6f 100644 --- a/tests/test_tile_scatter_gather.py +++ b/tests/test_tile_scatter_gather.py @@ -3,8 +3,7 @@ import pytest -from ndsl.comm.communicator import TileCommunicator -from ndsl.comm.partitioner import TilePartitioner +from ndsl import DummyComm, Quantity, TileCommunicator, TilePartitioner from ndsl.constants import ( HORIZONTAL_DIMS, X_DIM, @@ -14,8 +13,6 @@ Z_DIM, Z_INTERFACE_DIM, ) -from ndsl.quantity import Quantity -from ndsl.testing import DummyComm try: diff --git a/tests/test_timer.py b/tests/test_timer.py index 0b0cd4bf..bb8ec3a6 100644 --- a/tests/test_timer.py +++ b/tests/test_timer.py @@ -2,7 +2,7 @@ import pytest -from ndsl.performance.timer import NullTimer, Timer +from ndsl.performance import NullTimer, Timer @pytest.fixture diff --git a/tests/test_zarr_monitor.py b/tests/test_zarr_monitor.py index fbe90408..e40d5210 100644 --- a/tests/test_zarr_monitor.py +++ b/tests/test_zarr_monitor.py @@ -12,7 +12,7 @@ import cftime import pytest -from ndsl.comm.partitioner import CubedSpherePartitioner, TilePartitioner +from ndsl import CubedSpherePartitioner, DummyComm, Quantity, TilePartitioner from ndsl.constants import ( X_DIM, X_DIMS, @@ -22,11 +22,8 @@ Y_INTERFACE_DIM, Z_DIM, ) -from ndsl.monitor import ZarrMonitor -from ndsl.monitor.zarr_monitor import array_chunks, get_calendar +from ndsl.monitor.zarr_monitor import ZarrMonitor, array_chunks, get_calendar from ndsl.optional_imports import xarray as xr -from ndsl.quantity import Quantity -from ndsl.testing import DummyComm requires_zarr = pytest.mark.skipif(zarr is None, reason="zarr is not installed")