From 9d9dfe02c46893e498972bc77e95f0b8751a96fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Robert?= Date: Sun, 3 Jan 2021 17:40:52 +0100 Subject: [PATCH 1/6] maint: remove yt/__init__.py from exclude lists for isort --- .pre-commit-config.yaml | 2 -- pyproject.toml | 3 +-- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 2ec27703fd8..416e81f3fe1 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -2,7 +2,6 @@ # however `minimum_pre_commit_version` itself requires 1.15.0 minimum_pre_commit_version: "1.15.0" -# note: isort can't be applied to yt/__init__.py because it creates circular imports exclude: "^(\ yt/extern\ |yt/frontends/stream/sample_data\ @@ -11,7 +10,6 @@ yt/extern\ |benchmark\ |setupext.py\ |yt/visualization/_colormap_data.py\ -|yt/__init__.py\ )" repos: diff --git a/pyproject.toml b/pyproject.toml index deae6107bdc..c5bc6a6e971 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -37,8 +37,7 @@ exclude = ''' [tool.isort] profile = "black" combine_as_imports = true -# isort can't be applied to yt/__init__.py because it creates circular imports -skip = ["venv", "benchmarks", "yt/__init__.py"] +skip = ["venv", "benchmarks"] known_third_party = [ "IPython", "nose", From 6ec2b9893bb1016b89fd61b2aa6389a8cbebf50f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Robert?= Date: Sun, 3 Jan 2021 17:42:30 +0100 Subject: [PATCH 2/6] maint: fix fragiles imports --- yt/data_objects/selection_objects/data_selection_objects.py | 3 +-- yt/data_objects/selection_objects/point.py | 2 +- yt/data_objects/selection_objects/ray.py | 2 +- yt/data_objects/selection_objects/region.py | 2 +- yt/data_objects/selection_objects/spheroids.py | 2 +- yt/frontends/amrvac/fields.py | 2 +- yt/utilities/grid_data_format/writer.py | 2 +- 7 files changed, 7 insertions(+), 8 deletions(-) diff --git a/yt/data_objects/selection_objects/data_selection_objects.py b/yt/data_objects/selection_objects/data_selection_objects.py index 8ef90ef8c94..d9aa76fb54e 100644 --- a/yt/data_objects/selection_objects/data_selection_objects.py +++ b/yt/data_objects/selection_objects/data_selection_objects.py @@ -8,14 +8,13 @@ from unyt.exceptions import UnitConversionError, UnitParseError import yt.geometry -from yt import YTArray from yt.data_objects.data_containers import YTDataContainer from yt.data_objects.derived_quantities import DerivedQuantityCollection from yt.data_objects.field_data import YTFieldData from yt.fields.field_exceptions import NeedsGridType from yt.funcs import fix_axis, is_sequence, iter_fields, validate_width_tuple from yt.geometry.selection_routines import compose_selector -from yt.units import dimensions as ytdims +from yt.units import YTArray, dimensions as ytdims from yt.utilities.exceptions import ( GenerationInProgress, YTBooleanObjectError, diff --git a/yt/data_objects/selection_objects/point.py b/yt/data_objects/selection_objects/point.py index 6f86a309515..17cdd5693f8 100644 --- a/yt/data_objects/selection_objects/point.py +++ b/yt/data_objects/selection_objects/point.py @@ -1,10 +1,10 @@ -from yt import YTArray from yt.data_objects.selection_objects.data_selection_objects import ( YTSelectionContainer, YTSelectionContainer0D, ) from yt.data_objects.static_output import Dataset from yt.funcs import validate_3d_array, validate_object +from yt.units import YTArray class YTPoint(YTSelectionContainer0D): diff --git a/yt/data_objects/selection_objects/ray.py b/yt/data_objects/selection_objects/ray.py index d8709475701..b85341eaa2f 100644 --- a/yt/data_objects/selection_objects/ray.py +++ b/yt/data_objects/selection_objects/ray.py @@ -1,7 +1,6 @@ import numpy as np from unyt import udot, unorm -from yt import YTArray, YTQuantity from yt.data_objects.selection_objects.data_selection_objects import ( YTSelectionContainer, YTSelectionContainer1D, @@ -16,6 +15,7 @@ validate_object, validate_sequence, ) +from yt.units import YTArray, YTQuantity from yt.utilities.lib.pixelization_routines import SPHKernelInterpolationTable from yt.utilities.logger import ytLogger as mylog diff --git a/yt/data_objects/selection_objects/region.py b/yt/data_objects/selection_objects/region.py index 72a4b929b23..9e100e19a0c 100644 --- a/yt/data_objects/selection_objects/region.py +++ b/yt/data_objects/selection_objects/region.py @@ -1,4 +1,3 @@ -from yt import YTArray from yt.data_objects.selection_objects.data_selection_objects import ( YTSelectionContainer, YTSelectionContainer3D, @@ -10,6 +9,7 @@ validate_object, validate_sequence, ) +from yt.units import YTArray class YTRegion(YTSelectionContainer3D): diff --git a/yt/data_objects/selection_objects/spheroids.py b/yt/data_objects/selection_objects/spheroids.py index 37fe20fa01b..34474c99897 100644 --- a/yt/data_objects/selection_objects/spheroids.py +++ b/yt/data_objects/selection_objects/spheroids.py @@ -1,6 +1,5 @@ import numpy as np -from yt import YTArray from yt.data_objects.selection_objects.data_selection_objects import ( YTSelectionContainer, YTSelectionContainer3D, @@ -14,6 +13,7 @@ validate_object, validate_sequence, ) +from yt.units import YTArray from yt.utilities.exceptions import YTEllipsoidOrdering, YTException, YTSphereTooSmall from yt.utilities.logger import ytLogger as mylog from yt.utilities.math_utils import get_rotation_matrix diff --git a/yt/frontends/amrvac/fields.py b/yt/frontends/amrvac/fields.py index 3c0efacb850..28c05165c35 100644 --- a/yt/frontends/amrvac/fields.py +++ b/yt/frontends/amrvac/fields.py @@ -8,10 +8,10 @@ import numpy as np -from yt import mylog from yt.fields.field_info_container import FieldInfoContainer from yt.fields.magnetic_field import setup_magnetic_field_aliases from yt.units import dimensions +from yt.utilities.logger import ytLogger as mylog # We need to specify which fields we might have in our dataset. The field info # container subclass here will define which fields it knows about. There are diff --git a/yt/utilities/grid_data_format/writer.py b/yt/utilities/grid_data_format/writer.py index 6e3f12f9cca..42994fa259d 100644 --- a/yt/utilities/grid_data_format/writer.py +++ b/yt/utilities/grid_data_format/writer.py @@ -4,7 +4,6 @@ import numpy as np -from yt import __version__ as yt_version from yt.funcs import issue_deprecation_warning, iter_fields from yt.utilities.exceptions import YTGDFAlreadyExists from yt.utilities.on_demand_imports import _h5py as h5py @@ -259,6 +258,7 @@ def _create_new_gdf( overwrite=False, **kwargs, ): + from yt import __version__ as yt_version if "clobber" in kwargs: issue_deprecation_warning( From 556636e64712a4e161b1d09aeba5833540d05994 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Robert?= Date: Sun, 3 Jan 2021 17:42:54 +0100 Subject: [PATCH 3/6] fix: run isort on yt/__init__.py --- yt/__init__.py | 197 +++++++++++++++++++++++-------------------------- 1 file changed, 93 insertions(+), 104 deletions(-) diff --git a/yt/__init__.py b/yt/__init__.py index 05ff3f0f202..85b626e2d2b 100644 --- a/yt/__init__.py +++ b/yt/__init__.py @@ -17,77 +17,72 @@ __version__ = "4.0.dev0" # First module imports -import numpy as np # For modern purposes import numpy # In case anyone wishes to use it by name +import numpy as np # In case anyone wishes to use it by name +import yt.units as units +import yt.utilities.physical_constants as physical_constants +from yt.data_objects.api import ( + DatasetSeries, + ImageArray, + ParticleProfile, + Profile1D, + Profile2D, + Profile3D, + add_particle_filter, + create_profile, + particle_filter, +) +from yt.fields.api import ( + DerivedField, + FieldDetector, + FieldInfoContainer, + ValidateDataField, + ValidateGridType, + ValidateParameter, + ValidateProperty, + ValidateSpatial, + add_field, + add_xray_emissivity_field, + derived_field, + field_plugins, +) from yt.funcs import ( - is_sequence, + deprecated_class, + enable_plugins, get_memory_usage, - print_tb, - rootonly, - insert_ipython, get_pbar, - only_on_root, - is_root, get_version_stack, get_yt_supp, get_yt_version, - parallel_profile, - enable_plugins, + insert_ipython, + is_root, + is_sequence, memory_checker, - deprecated_class, + only_on_root, + parallel_profile, + print_tb, + rootonly, toggle_interactivity, ) -from yt.utilities.logger import ytLogger as mylog -from yt.utilities.logger import set_log_level - - -import yt.utilities.physical_constants as physical_constants -import yt.units as units -from yt.units.unit_object import define_unit from yt.units import ( YTArray, YTQuantity, + display_ytarray, + loadtxt, + savetxt, uconcatenate, ucross, + udot, + uhstack, uintersect1d, - uunion1d, unorm, - udot, ustack, + uunion1d, uvstack, - uhstack, - loadtxt, - savetxt, - display_ytarray, -) - -from yt.fields.api import ( - field_plugins, - DerivedField, - FieldDetector, - FieldInfoContainer, - ValidateParameter, - ValidateDataField, - ValidateProperty, - ValidateSpatial, - ValidateGridType, - add_field, - derived_field, - add_xray_emissivity_field, -) - -from yt.data_objects.api import ( - DatasetSeries, - ImageArray, - particle_filter, - add_particle_filter, - create_profile, - Profile1D, - Profile2D, - Profile3D, - ParticleProfile, ) +from yt.units.unit_object import define_unit +from yt.utilities.logger import set_log_level, ytLogger as mylog # For backwards compatibility TimeSeriesData = deprecated_class(DatasetSeries) @@ -97,8 +92,6 @@ frontends = _frontend_container() from yt.frontends.stream.api import hexahedral_connectivity - - from yt.frontends.ytdata.api import save_as_dataset # For backwards compatibility @@ -107,77 +100,73 @@ TipsyDataset = frontends.tipsy.TipsyDataset TipsyStaticOutput = deprecated_class(TipsyDataset) +import yt.visualization.volume_rendering.api as volume_rendering +from yt.loaders import simulation # deprecated alias for load_simulation +from yt.loaders import ( + load, + load_amr_grids, + load_hexahedral_mesh, + load_octree, + load_particles, + load_sample, + load_simulation, + load_uniform_grid, + load_unstructured_mesh, +) +from yt.testing import run_nose +from yt.units.unit_systems import UnitSystem, unit_system_registry + +# Import some helpful math utilities +from yt.utilities.math_utils import ortho_find, periodic_position, quartiles +from yt.utilities.parallel_tools.parallel_analysis_interface import ( + communication_system, + enable_parallelism, + parallel_objects, +) + # Now individual component imports from the visualization API from yt.visualization.api import ( + AxisAlignedSlicePlot, + FITSImageData, + FITSOffAxisProjection, + FITSOffAxisSlice, + FITSProjection, + FITSSlice, FixedResolutionBuffer, + LineBuffer, + LinePlot, ObliqueFixedResolutionBuffer, - write_bitmap, - write_image, - apply_colormap, - scale_image, - write_projection, - SlicePlot, - AxisAlignedSlicePlot, + OffAxisProjectionPlot, OffAxisSlicePlot, - LinePlot, - LineBuffer, + ParticleImageBuffer, + ParticlePhasePlot, + ParticlePlot, + ParticleProjectionPlot, + PhasePlot, + ProfilePlot, ProjectionPlot, - OffAxisProjectionPlot, - show_colormaps, + SlicePlot, add_colormap, + apply_colormap, make_colormap, - ProfilePlot, - PhasePlot, - ParticlePhasePlot, - ParticleProjectionPlot, - ParticleImageBuffer, - ParticlePlot, - FITSImageData, - FITSSlice, - FITSProjection, - FITSOffAxisSlice, - FITSOffAxisProjection, plot_2d, + scale_image, + show_colormaps, + write_bitmap, + write_image, + write_projection, ) - from yt.visualization.volume_rendering.api import ( - volume_render, - create_scene, ColorTransferFunction, TransferFunction, + create_scene, off_axis_projection, + volume_render, ) -import yt.visualization.volume_rendering.api as volume_rendering # TransferFunctionHelper, MultiVariateTransferFunction # off_axis_projection -from yt.utilities.parallel_tools.parallel_analysis_interface import ( - parallel_objects, - enable_parallelism, - communication_system, -) - -from yt.loaders import ( - load, - load_simulation, - simulation, # deprecated alias for load_simulation - load_uniform_grid, - load_amr_grids, - load_particles, - load_hexahedral_mesh, - load_octree, - load_unstructured_mesh, - load_sample, -) - -from yt.testing import run_nose - -# Import some helpful math utilities -from yt.utilities.math_utils import ortho_find, quartiles, periodic_position - -from yt.units.unit_systems import UnitSystem, unit_system_registry - def _check_deprecated_parameters(): from yt.config import ytcfg From 0a97dd95fe3de263c1bd8037cd6e9713e07c19c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Robert?= Date: Sun, 3 Jan 2021 17:46:16 +0100 Subject: [PATCH 4/6] add previous commit to git-blame-ignore-revs list --- .git-blame-ignore-revs | 1 + 1 file changed, 1 insertion(+) diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs index 067c19319af..f66dc29a5a6 100644 --- a/.git-blame-ignore-revs +++ b/.git-blame-ignore-revs @@ -2,6 +2,7 @@ 7edfcee093cca277307aabdb180e0ffc69768291 81418e459f16c48d6b7a75d6ef8035dfe9651b39 60f670d75a23a6d094879437a8df455a66acbeaf +556636e64712a4e161b1d09aeba5833540d05994 # transition to black ebadee629414aed2c7b6526e22a419205329ec38 From ca4d9ec680856d66d5177b0504726da00de49f96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Robert?= Date: Mon, 4 Jan 2021 17:08:16 +0100 Subject: [PATCH 5/6] maint: remove top level imports from numpy --- yt/__init__.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/yt/__init__.py b/yt/__init__.py index 85b626e2d2b..927b4b74b9b 100644 --- a/yt/__init__.py +++ b/yt/__init__.py @@ -16,10 +16,6 @@ __version__ = "4.0.dev0" -# First module imports -import numpy # In case anyone wishes to use it by name -import numpy as np # In case anyone wishes to use it by name - import yt.units as units import yt.utilities.physical_constants as physical_constants from yt.data_objects.api import ( From 839eb01f93e18c78504a184257223a72e9a75c7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Robert?= Date: Mon, 4 Jan 2021 17:52:53 +0100 Subject: [PATCH 6/6] fix import error in test plugin file --- yt/fields/tests/test_fields_plugins.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/yt/fields/tests/test_fields_plugins.py b/yt/fields/tests/test_fields_plugins.py index d00493d0e9c..d7137a1b5fc 100644 --- a/yt/fields/tests/test_fields_plugins.py +++ b/yt/fields/tests/test_fields_plugins.py @@ -6,6 +6,8 @@ from yt.testing import assert_raises, fake_random_ds TEST_PLUGIN_FILE = """ +import numpy as np + def _myfunc(field, data): return np.random.random(data['density'].shape) add_field('random', dimensions='dimensionless',