diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index be961ba0422..cd80de6e73d 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -34,13 +34,20 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit rev: v0.16.10 hooks: - - id: ruff-check + - id: ruff-check args: ["--fix"] exclude: | (?x)( ^versioneer.py| ^monai/_version.py ) + # - id: ruff-format + # args: ["format"] + # exclude: | + # (?x)( + # ^versioneer.py| + # ^monai/_version.py + # ) - repo: https://github.com/psf/black-pre-commit-mirror rev: 26.10.0 # Black version, keep synced with MONAI requirements @@ -54,16 +61,6 @@ repos: ^monai/_version.py ) - - repo: https://github.com/pycqa/isort - rev: 9.0.2 # isort version, keep synced with MONAI requirements - hooks: - - id: isort - name: isort (python) - exclude: | - (?x)( - ^versioneer.py| - ^monai/_version.py - ) - repo: local hooks: - id: dco diff --git a/docs/source/conf.py b/docs/source/conf.py index a91f38081f1..4fccebf56c1 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -10,11 +10,11 @@ # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. # +import importlib +import inspect import os import subprocess import sys -import importlib -import inspect sys.path.insert(0, os.path.abspath("..")) sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "..", ".."))) @@ -59,7 +59,8 @@ def generate_apidocs(*args): """Generate API docs automatically by trawling the available modules""" import pandas as pd - from monai.bundle.properties import TrainProperties, InferProperties, MetaProperties + + from monai.bundle.properties import InferProperties, MetaProperties, TrainProperties csv_file = os.path.join(os.path.dirname(__file__), "train_properties.csv") # used in mb_properties.rst pd.DataFrame.from_dict(TrainProperties, orient="index").iloc[:, :3].to_csv(csv_file) diff --git a/monai/apps/detection/networks/retinanet_detector.py b/monai/apps/detection/networks/retinanet_detector.py index 1b73108756b..23b6fb34208 100644 --- a/monai/apps/detection/networks/retinanet_detector.py +++ b/monai/apps/detection/networks/retinanet_detector.py @@ -47,8 +47,8 @@ from torch import Tensor, nn from monai.apps.detection.networks.retinanet_network import RetinaNet, resnet_fpn_feature_extractor -from monai.apps.detection.utils.anchor_utils import AnchorGenerator from monai.apps.detection.utils.ATSS_matcher import ATSSMatcher +from monai.apps.detection.utils.anchor_utils import AnchorGenerator from monai.apps.detection.utils.box_coder import BoxCoder from monai.apps.detection.utils.box_selector import BoxSelector from monai.apps.detection.utils.detector_utils import check_training_targets, preprocess_images diff --git a/monai/apps/pathology/__init__.py b/monai/apps/pathology/__init__.py index f4865e38dbd..51aae730351 100644 --- a/monai/apps/pathology/__init__.py +++ b/monai/apps/pathology/__init__.py @@ -15,11 +15,11 @@ from .metrics import LesionFROC from .transforms.stain.array import ExtractHEStains, NormalizeHEStains from .transforms.stain.dictionary import ( - ExtractHEStainsd, ExtractHEStainsD, ExtractHEStainsDict, - NormalizeHEStainsd, + ExtractHEStainsd, NormalizeHEStainsD, NormalizeHEStainsDict, + NormalizeHEStainsd, ) from .utils import PathologyProbNMS, compute_isolated_tumor_cells, compute_multi_instance_mask diff --git a/monai/apps/pathology/transforms/__init__.py b/monai/apps/pathology/transforms/__init__.py index f72eec6834b..f133ade3701 100644 --- a/monai/apps/pathology/transforms/__init__.py +++ b/monai/apps/pathology/transforms/__init__.py @@ -26,45 +26,45 @@ ) from .post.dictionary import ( GenerateDistanceMapD, - GenerateDistanceMapd, GenerateDistanceMapDict, + GenerateDistanceMapd, GenerateInstanceBorderD, - GenerateInstanceBorderd, GenerateInstanceBorderDict, + GenerateInstanceBorderd, GenerateInstanceCentroidD, - GenerateInstanceCentroidd, GenerateInstanceCentroidDict, + GenerateInstanceCentroidd, GenerateInstanceContourD, - GenerateInstanceContourd, GenerateInstanceContourDict, + GenerateInstanceContourd, GenerateInstanceTypeD, - GenerateInstanceTyped, GenerateInstanceTypeDict, + GenerateInstanceTyped, GenerateSuccinctContourD, - GenerateSuccinctContourd, GenerateSuccinctContourDict, + GenerateSuccinctContourd, GenerateWatershedMarkersD, - GenerateWatershedMarkersd, GenerateWatershedMarkersDict, + GenerateWatershedMarkersd, GenerateWatershedMaskD, - GenerateWatershedMaskd, GenerateWatershedMaskDict, + GenerateWatershedMaskd, HoVerNetInstanceMapPostProcessingD, - HoVerNetInstanceMapPostProcessingd, HoVerNetInstanceMapPostProcessingDict, + HoVerNetInstanceMapPostProcessingd, HoVerNetNuclearTypePostProcessingD, - HoVerNetNuclearTypePostProcessingd, HoVerNetNuclearTypePostProcessingDict, + HoVerNetNuclearTypePostProcessingd, WatershedD, - Watershedd, WatershedDict, + Watershedd, ) from .stain.array import ExtractHEStains, NormalizeHEStains from .stain.dictionary import ( - ExtractHEStainsd, ExtractHEStainsD, ExtractHEStainsDict, - NormalizeHEStainsd, + ExtractHEStainsd, NormalizeHEStainsD, NormalizeHEStainsDict, + NormalizeHEStainsd, ) diff --git a/monai/apps/pathology/transforms/post/__init__.py b/monai/apps/pathology/transforms/post/__init__.py index dfdf7d31eb6..f69d78aedcb 100644 --- a/monai/apps/pathology/transforms/post/__init__.py +++ b/monai/apps/pathology/transforms/post/__init__.py @@ -26,36 +26,36 @@ ) from .dictionary import ( GenerateDistanceMapD, - GenerateDistanceMapd, GenerateDistanceMapDict, + GenerateDistanceMapd, GenerateInstanceBorderD, - GenerateInstanceBorderd, GenerateInstanceBorderDict, + GenerateInstanceBorderd, GenerateInstanceCentroidD, - GenerateInstanceCentroidd, GenerateInstanceCentroidDict, + GenerateInstanceCentroidd, GenerateInstanceContourD, - GenerateInstanceContourd, GenerateInstanceContourDict, + GenerateInstanceContourd, GenerateInstanceTypeD, - GenerateInstanceTyped, GenerateInstanceTypeDict, + GenerateInstanceTyped, GenerateSuccinctContourD, - GenerateSuccinctContourd, GenerateSuccinctContourDict, + GenerateSuccinctContourd, GenerateWatershedMarkersD, - GenerateWatershedMarkersd, GenerateWatershedMarkersDict, + GenerateWatershedMarkersd, GenerateWatershedMaskD, - GenerateWatershedMaskd, GenerateWatershedMaskDict, + GenerateWatershedMaskd, HoVerNetInstanceMapPostProcessingD, - HoVerNetInstanceMapPostProcessingd, HoVerNetInstanceMapPostProcessingDict, + HoVerNetInstanceMapPostProcessingd, HoVerNetNuclearTypePostProcessingD, - HoVerNetNuclearTypePostProcessingd, HoVerNetNuclearTypePostProcessingDict, + HoVerNetNuclearTypePostProcessingd, WatershedD, - Watershedd, WatershedDict, + Watershedd, ) diff --git a/monai/apps/pathology/transforms/stain/__init__.py b/monai/apps/pathology/transforms/stain/__init__.py index 3239fcbce32..299fc70879a 100644 --- a/monai/apps/pathology/transforms/stain/__init__.py +++ b/monai/apps/pathology/transforms/stain/__init__.py @@ -13,10 +13,10 @@ from .array import ExtractHEStains, NormalizeHEStains from .dictionary import ( - ExtractHEStainsd, ExtractHEStainsD, ExtractHEStainsDict, - NormalizeHEStainsd, + ExtractHEStainsd, NormalizeHEStainsD, NormalizeHEStainsDict, + NormalizeHEStainsd, ) diff --git a/monai/data/__init__.py b/monai/data/__init__.py index 562289edcbc..5ffc8670df9 100644 --- a/monai/data/__init__.py +++ b/monai/data/__init__.py @@ -28,9 +28,9 @@ from .dataloader import DataLoader from .dataset import ( ArrayDataset, + CSVDataset, CacheDataset, CacheNTransDataset, - CSVDataset, Dataset, DatasetFunc, GDSDataset, @@ -51,8 +51,8 @@ from .grid_dataset import GridPatchDataset, PatchDataset, PatchIter, PatchIterd from .image_dataset import ImageDataset from .image_reader import ( - ImageReader, ITKReader, + ImageReader, NibabelReader, NrrdReader, NumpyReader, @@ -62,8 +62,8 @@ ) from .image_writer import ( SUPPORTED_WRITERS, - ImageWriter, ITKWriter, + ImageWriter, NibabelWriter, PILWriter, logger, diff --git a/monai/data/image_reader.py b/monai/data/image_reader.py index 0a853372f43..b00b33a8792 100644 --- a/monai/data/image_reader.py +++ b/monai/data/image_reader.py @@ -42,8 +42,8 @@ import nibabel as nib import nrrd import pydicom - from nibabel.nifti1 import Nifti1Image from PIL import Image as PILImage + from nibabel.nifti1 import Nifti1Image has_nrrd = has_itk = has_nib = has_pil = has_pydicom = True else: diff --git a/monai/handlers/classification_saver.py b/monai/handlers/classification_saver.py index ffcfe3c1fb3..dd2d69b53ff 100644 --- a/monai/handlers/classification_saver.py +++ b/monai/handlers/classification_saver.py @@ -19,9 +19,8 @@ import torch from monai.data import CSVSaver, decollate_batch -from monai.utils import IgniteInfo +from monai.utils import IgniteInfo, evenly_divisible_all_gather, min_version, optional_import, string_list_all_gather from monai.utils import ImageMetaKey as Key -from monai.utils import evenly_divisible_all_gather, min_version, optional_import, string_list_all_gather idist, _ = optional_import("ignite", IgniteInfo.OPT_IMPORT_VERSION, min_version, "distributed") Events, _ = optional_import("ignite.engine", IgniteInfo.OPT_IMPORT_VERSION, min_version, "Events") diff --git a/monai/handlers/metrics_saver.py b/monai/handlers/metrics_saver.py index 6175b1242a8..65f592ff360 100644 --- a/monai/handlers/metrics_saver.py +++ b/monai/handlers/metrics_saver.py @@ -16,9 +16,8 @@ from monai.data import decollate_batch from monai.handlers.utils import write_metrics_reports -from monai.utils import IgniteInfo +from monai.utils import IgniteInfo, ensure_tuple, min_version, optional_import, string_list_all_gather from monai.utils import ImageMetaKey as Key -from monai.utils import ensure_tuple, min_version, optional_import, string_list_all_gather Events, _ = optional_import("ignite.engine", IgniteInfo.OPT_IMPORT_VERSION, min_version, "Events") idist, _ = optional_import("ignite", IgniteInfo.OPT_IMPORT_VERSION, min_version, "distributed") diff --git a/monai/losses/__init__.py b/monai/losses/__init__.py index c6bc5e3810f..867f5e0010e 100644 --- a/monai/losses/__init__.py +++ b/monai/losses/__init__.py @@ -16,7 +16,7 @@ from .barlow_twins import BarlowTwinsLoss from .boundary_loss import BoundaryLoss from .calibration import HardL1ACELoss, SoftL1ACELoss -from .cldice import SoftclDiceLoss, SoftDiceclDiceLoss +from .cldice import SoftDiceclDiceLoss, SoftclDiceLoss from .contrastive import ContrastiveLoss from .deform import BendingEnergyLoss, DiffusionLoss from .dice import ( diff --git a/monai/networks/blocks/__init__.py b/monai/networks/blocks/__init__.py index 5932aba7fe2..f336a5b490b 100644 --- a/monai/networks/blocks/__init__.py +++ b/monai/networks/blocks/__init__.py @@ -21,7 +21,7 @@ from .crossattention import CrossAttentionBlock from .denseblock import ConvDenseBlock, DenseBlock from .dints_block import ActiConvNormBlock, FactorizedIncreaseBlock, FactorizedReduceBlock, P3DActiConvNormBlock -from .downsample import DownSample, Downsample, MaxAvgPool, SubpixelDownsample, SubpixelDownSample, Subpixeldownsample +from .downsample import DownSample, Downsample, MaxAvgPool, SubpixelDownSample, SubpixelDownsample, Subpixeldownsample from .dynunet_block import UnetBasicBlock, UnetOutBlock, UnetResBlock, UnetUpBlock, get_output_padding, get_padding from .encoder import BaseEncoder from .fcn import FCN, GCN, MCFCN, Refine @@ -47,10 +47,10 @@ ResidualSELayer, SEBlock, SEBottleneck, - SEResNetBottleneck, SEResNeXtBottleneck, + SEResNetBottleneck, ) from .transformerblock import TransformerBlock from .unetr_block import UnetrBasicBlock, UnetrPrUpBlock, UnetrUpBlock -from .upsample import SubpixelUpsample, Subpixelupsample, SubpixelUpSample, Upsample, UpSample +from .upsample import SubpixelUpSample, SubpixelUpsample, Subpixelupsample, UpSample, Upsample from .warp import DVF2DDF, Warp diff --git a/monai/networks/nets/__init__.py b/monai/networks/nets/__init__.py index d33f4dbf9cd..8e48680b8ce 100644 --- a/monai/networks/nets/__init__.py +++ b/monai/networks/nets/__init__.py @@ -11,7 +11,7 @@ from __future__ import annotations -from .ahnet import AHnet, Ahnet, AHNet +from .ahnet import AHNet, AHnet, Ahnet from .attentionunet import AttentionUnet from .autoencoder import AutoEncoder from .autoencoderkl import AutoencoderKL @@ -22,14 +22,14 @@ from .daf3d import DAF3D from .densenet import ( DenseNet, - Densenet, DenseNet121, - Densenet121, DenseNet169, - Densenet169, DenseNet201, - Densenet201, DenseNet264, + Densenet, + Densenet121, + Densenet169, + Densenet201, Densenet264, densenet121, densenet169, @@ -48,30 +48,30 @@ drop_connect, get_efficientnet_image_size, ) -from .flexible_unet import FLEXUNET_BACKBONE, FlexibleUNet, FlexUNet, FlexUNetEncoderRegister +from .flexible_unet import FLEXUNET_BACKBONE, FlexUNet, FlexUNetEncoderRegister, FlexibleUNet from .fullyconnectednet import FullyConnectedNet, VarFullyConnectedNet from .generator import Generator from .highresnet import HighResBlock, HighResNet -from .hovernet import Hovernet, HoVernet, HoVerNet, HoverNet +from .hovernet import HoVerNet, HoVernet, HoverNet, Hovernet from .hyena_nd_unetr import HyenaNDUNETR from .masked_autoencoder_vit import MaskedAutoEncoderViT from .mednext import ( MedNeXt, + MedNeXtB, + MedNeXtL, + MedNeXtLarge, + MedNeXtM, + MedNeXtMedium, + MedNeXtS, + MedNeXtSmall, MedNext, MedNextB, - MedNeXtB, MedNextBase, MedNextL, - MedNeXtL, - MedNeXtLarge, MedNextLarge, MedNextM, - MedNeXtM, - MedNeXtMedium, MedNextMedium, MedNextS, - MedNeXtS, - MedNeXtSmall, MedNextSmall, ) from .milmodel import MILModel @@ -101,27 +101,27 @@ from .segresnet_ds import SegResNetDS, SegResNetDS2 from .senet import ( SENet, - SEnet, - Senet, SENet154, - SEnet154, - Senet154, + SEResNeXt50, + SEResNeXt101, SEResNet50, - SEresnet50, - Seresnet50, SEResNet101, - SEresnet101, - Seresnet101, SEResNet152, - SEresnet152, - Seresnet152, SEResNext50, - SEResNeXt50, - SEresnext50, - Seresnext50, SEResNext101, - SEResNeXt101, + SEnet, + SEnet154, + SEresnet50, + SEresnet101, + SEresnet152, + SEresnext50, SEresnext101, + Senet, + Senet154, + Seresnet50, + Seresnet101, + Seresnet152, + Seresnext50, Seresnext101, senet154, seresnet50, diff --git a/monai/networks/nets/senet.py b/monai/networks/nets/senet.py index 668125b1428..23aca27ed97 100644 --- a/monai/networks/nets/senet.py +++ b/monai/networks/nets/senet.py @@ -22,7 +22,7 @@ from monai.apps.utils import download_url from monai.networks.blocks.convolutions import Convolution -from monai.networks.blocks.squeeze_and_excitation import SEBottleneck, SEResNetBottleneck, SEResNeXtBottleneck +from monai.networks.blocks.squeeze_and_excitation import SEBottleneck, SEResNeXtBottleneck, SEResNetBottleneck from monai.networks.layers.factories import Act, Conv, Dropout, Norm, Pool from monai.utils.module import look_up_option diff --git a/monai/networks/nets/spade_diffusion_model_unet.py b/monai/networks/nets/spade_diffusion_model_unet.py index adf321ec88e..d9f60165fe3 100644 --- a/monai/networks/nets/spade_diffusion_model_unet.py +++ b/monai/networks/nets/spade_diffusion_model_unet.py @@ -39,8 +39,8 @@ from monai.networks.blocks import Convolution, SpatialAttentionBlock from monai.networks.blocks.spade_norm import SPADE from monai.networks.nets.diffusion_model_unet import ( - DiffusionUnetDownsample, DiffusionUNetResnetBlock, + DiffusionUnetDownsample, SpatialTransformer, WrappedUpsample, get_down_block, diff --git a/monai/networks/nets/vista3d.py b/monai/networks/nets/vista3d.py index 232b8c1c11a..ac0a026dfb5 100644 --- a/monai/networks/nets/vista3d.py +++ b/monai/networks/nets/vista3d.py @@ -23,9 +23,8 @@ import monai from monai.networks.blocks import MLPBlock, UnetrBasicBlock from monai.networks.nets import SegResNetDS2 -from monai.transforms.utils import convert_points_to_disc +from monai.transforms.utils import convert_points_to_disc, sample_points_from_label from monai.transforms.utils import keep_merge_components_with_points as lcc -from monai.transforms.utils import sample_points_from_label from monai.utils import optional_import, unsqueeze_left, unsqueeze_right rearrange, _ = optional_import("einops", name="rearrange") diff --git a/monai/transforms/__init__.py b/monai/transforms/__init__.py index c7ac4b77e6f..1249d7d18ad 100644 --- a/monai/transforms/__init__.py +++ b/monai/transforms/__init__.py @@ -34,60 +34,60 @@ ) from .croppad.batch import PadListDataCollate from .croppad.dictionary import ( - BorderPadd, BorderPadD, BorderPadDict, - BoundingRectd, + BorderPadd, BoundingRectD, BoundingRectDict, - CenterScaleCropd, + BoundingRectd, CenterScaleCropD, CenterScaleCropDict, - CenterSpatialCropd, + CenterScaleCropd, CenterSpatialCropD, CenterSpatialCropDict, - Cropd, + CenterSpatialCropd, CropD, CropDict, - CropForegroundd, CropForegroundD, CropForegroundDict, - DivisiblePadd, + CropForegroundd, + Cropd, DivisiblePadD, DivisiblePadDict, - Padd, + DivisiblePadd, PadD, PadDict, - RandCropByLabelClassesd, + Padd, RandCropByLabelClassesD, RandCropByLabelClassesDict, - RandCropByPosNegLabeld, + RandCropByLabelClassesd, RandCropByPosNegLabelD, RandCropByPosNegLabelDict, - RandCropd, + RandCropByPosNegLabeld, RandCropD, RandCropDict, - RandScaleCropd, + RandCropd, RandScaleCropD, RandScaleCropDict, - RandSpatialCropd, + RandScaleCropd, RandSpatialCropD, RandSpatialCropDict, - RandSpatialCropSamplesd, RandSpatialCropSamplesD, RandSpatialCropSamplesDict, - RandWeightedCropd, + RandSpatialCropSamplesd, + RandSpatialCropd, RandWeightedCropD, RandWeightedCropDict, - ResizeWithPadOrCropd, + RandWeightedCropd, ResizeWithPadOrCropD, ResizeWithPadOrCropDict, - SpatialCropd, + ResizeWithPadOrCropd, SpatialCropD, SpatialCropDict, - SpatialPadd, + SpatialCropd, SpatialPadD, SpatialPadDict, + SpatialPadd, ) from .croppad.functional import crop_func, crop_or_pad_nd, pad_func, pad_nd from .intensity.array import ( @@ -133,160 +133,160 @@ UltrasoundConfidenceMapTransform, ) from .intensity.dictionary import ( - AdjustContrastd, AdjustContrastD, AdjustContrastDict, - ClipIntensityPercentilesd, + AdjustContrastd, ClipIntensityPercentilesD, ClipIntensityPercentilesDict, - ComputeHoVerMapsd, + ClipIntensityPercentilesd, ComputeHoVerMapsD, ComputeHoVerMapsDict, - ForegroundMaskd, + ComputeHoVerMapsd, ForegroundMaskD, ForegroundMaskDict, - GaussianSharpend, + ForegroundMaskd, GaussianSharpenD, GaussianSharpenDict, - GaussianSmoothd, + GaussianSharpend, GaussianSmoothD, GaussianSmoothDict, - GibbsNoised, + GaussianSmoothd, GibbsNoiseD, GibbsNoiseDict, - HistogramNormalized, + GibbsNoised, HistogramNormalizeD, HistogramNormalizeDict, - KSpaceSpikeNoised, + HistogramNormalized, KSpaceSpikeNoiseD, KSpaceSpikeNoiseDict, - MaskIntensityd, + KSpaceSpikeNoised, MaskIntensityD, MaskIntensityDict, - MedianSmoothd, + MaskIntensityd, MedianSmoothD, MedianSmoothDict, - NormalizeIntensityd, + MedianSmoothd, NormalizeIntensityD, NormalizeIntensityDict, - RandAdjustContrastd, + NormalizeIntensityd, RandAdjustContrastD, RandAdjustContrastDict, - RandBiasFieldd, + RandAdjustContrastd, RandBiasFieldD, RandBiasFieldDict, - RandCoarseDropoutd, + RandBiasFieldd, RandCoarseDropoutD, RandCoarseDropoutDict, - RandCoarseShuffled, + RandCoarseDropoutd, RandCoarseShuffleD, RandCoarseShuffleDict, - RandGaussianNoised, + RandCoarseShuffled, RandGaussianNoiseD, RandGaussianNoiseDict, - RandGaussianSharpend, + RandGaussianNoised, RandGaussianSharpenD, RandGaussianSharpenDict, - RandGaussianSmoothd, + RandGaussianSharpend, RandGaussianSmoothD, RandGaussianSmoothDict, - RandGibbsNoised, + RandGaussianSmoothd, RandGibbsNoiseD, RandGibbsNoiseDict, - RandHistogramShiftd, + RandGibbsNoised, RandHistogramShiftD, RandHistogramShiftDict, - RandKSpaceSpikeNoised, + RandHistogramShiftd, RandKSpaceSpikeNoiseD, RandKSpaceSpikeNoiseDict, - RandRicianNoised, + RandKSpaceSpikeNoised, RandRicianNoiseD, RandRicianNoiseDict, - RandScaleIntensityd, + RandRicianNoised, RandScaleIntensityD, RandScaleIntensityDict, - RandScaleIntensityFixedMeand, RandScaleIntensityFixedMeanD, RandScaleIntensityFixedMeanDict, - RandShiftIntensityd, + RandScaleIntensityFixedMeand, + RandScaleIntensityd, RandShiftIntensityD, RandShiftIntensityDict, - RandStdShiftIntensityd, + RandShiftIntensityd, RandStdShiftIntensityD, RandStdShiftIntensityDict, - SavitzkyGolaySmoothd, + RandStdShiftIntensityd, SavitzkyGolaySmoothD, SavitzkyGolaySmoothDict, - ScaleIntensityd, + SavitzkyGolaySmoothd, ScaleIntensityD, ScaleIntensityDict, - ScaleIntensityRanged, ScaleIntensityRangeD, ScaleIntensityRangeDict, - ScaleIntensityRangePercentilesd, ScaleIntensityRangePercentilesD, ScaleIntensityRangePercentilesDict, - ShiftIntensityd, + ScaleIntensityRangePercentilesd, + ScaleIntensityRanged, + ScaleIntensityd, ShiftIntensityD, ShiftIntensityDict, - StdShiftIntensityd, + ShiftIntensityd, StdShiftIntensityD, StdShiftIntensityDict, - ThresholdIntensityd, + StdShiftIntensityd, ThresholdIntensityD, ThresholdIntensityDict, + ThresholdIntensityd, ) from .inverse import InvertibleTransform, TraceableTransform -from .inverse_batch_transform import BatchInverseTransform, Decollated, DecollateD, DecollateDict +from .inverse_batch_transform import BatchInverseTransform, DecollateD, DecollateDict, Decollated from .io.array import SUPPORTED_READERS, LoadImage, SaveImage, WriteFileMapping from .io.dictionary import ( - LoadImaged, LoadImageD, LoadImageDict, - SaveImaged, + LoadImaged, SaveImageD, SaveImageDict, - WriteFileMappingd, + SaveImaged, WriteFileMappingD, WriteFileMappingDict, + WriteFileMappingd, ) from .lazy.array import ApplyPending -from .lazy.dictionary import ApplyPendingd, ApplyPendingD, ApplyPendingDict +from .lazy.dictionary import ApplyPendingD, ApplyPendingDict, ApplyPendingd from .lazy.functional import apply_pending from .lazy.utils import combine_transforms, resample from .meta_utility.dictionary import ( - FromMetaTensord, FromMetaTensorD, FromMetaTensorDict, - ToMetaTensord, + FromMetaTensord, ToMetaTensorD, ToMetaTensorDict, + ToMetaTensord, ) from .nvtx import ( Mark, - Markd, MarkD, MarkDict, + Markd, RandMark, - RandMarkd, RandMarkD, RandMarkDict, + RandMarkd, RandRangePop, - RandRangePopd, RandRangePopD, RandRangePopDict, + RandRangePopd, RandRangePush, - RandRangePushd, RandRangePushD, RandRangePushDict, + RandRangePushd, RangePop, - RangePopd, RangePopD, RangePopDict, + RangePopd, RangePush, - RangePushd, RangePushD, RangePushDict, + RangePushd, ) from .post.array import ( Activations, @@ -306,65 +306,65 @@ ) from .post.dictionary import ( ActivationsD, - Activationsd, ActivationsDict, + Activationsd, AsDiscreteD, - AsDiscreted, AsDiscreteDict, - DistanceTransformEDTd, + AsDiscreted, DistanceTransformEDTD, DistanceTransformEDTDict, - Ensembled, + DistanceTransformEDTd, EnsembleD, EnsembleDict, + Ensembled, FillHolesD, - FillHolesd, FillHolesDict, - GenerateHeatmapd, + FillHolesd, GenerateHeatmapD, GenerateHeatmapDict, + GenerateHeatmapd, InvertD, - Invertd, InvertDict, + Invertd, KeepLargestConnectedComponentD, - KeepLargestConnectedComponentd, KeepLargestConnectedComponentDict, + KeepLargestConnectedComponentd, LabelFilterD, - LabelFilterd, LabelFilterDict, + LabelFilterd, LabelToContourD, - LabelToContourd, LabelToContourDict, + LabelToContourd, MeanEnsembleD, - MeanEnsembled, MeanEnsembleDict, + MeanEnsembled, ProbNMSD, - ProbNMSd, ProbNMSDict, + ProbNMSd, RemoveSmallObjectsD, - RemoveSmallObjectsd, RemoveSmallObjectsDict, + RemoveSmallObjectsd, SaveClassificationD, - SaveClassificationd, SaveClassificationDict, - SobelGradientsd, + SaveClassificationd, SobelGradientsD, SobelGradientsDict, + SobelGradientsd, VoteEnsembleD, - VoteEnsembled, VoteEnsembleDict, + VoteEnsembled, ) from .regularization.array import CutMix, CutOut, MixUp from .regularization.dictionary import ( - CutMixd, CutMixD, CutMixDict, - CutOutd, + CutMixd, CutOutD, CutOutDict, - MixUpd, + CutOutd, MixUpD, MixUpDict, + MixUpd, ) from .signal.array import ( SignalContinuousWavelet, @@ -379,7 +379,7 @@ SignalRandShift, SignalRemoveFrequency, ) -from .signal.dictionary import SignalFillEmptyd, SignalFillEmptyD, SignalFillEmptyDict +from .signal.dictionary import SignalFillEmptyD, SignalFillEmptyDict, SignalFillEmptyd from .smooth_field.array import ( RandSmoothDeform, RandSmoothFieldAdjustContrast, @@ -387,15 +387,15 @@ SmoothField, ) from .smooth_field.dictionary import ( - RandSmoothDeformd, RandSmoothDeformD, RandSmoothDeformDict, - RandSmoothFieldAdjustContrastd, + RandSmoothDeformd, RandSmoothFieldAdjustContrastD, RandSmoothFieldAdjustContrastDict, - RandSmoothFieldAdjustIntensityd, + RandSmoothFieldAdjustContrastd, RandSmoothFieldAdjustIntensityD, RandSmoothFieldAdjustIntensityDict, + RandSmoothFieldAdjustIntensityd, ) from .spatial.array import ( Affine, @@ -430,84 +430,84 @@ Zoom, ) from .spatial.dictionary import ( - Affined, AffineD, AffineDict, - ConvertBoxToPointsd, + Affined, ConvertBoxToPointsD, ConvertBoxToPointsDict, - ConvertPointsToBoxesd, + ConvertBoxToPointsd, ConvertPointsToBoxesD, ConvertPointsToBoxesDict, - Flipd, + ConvertPointsToBoxesd, FlipD, FlipDict, - GridDistortiond, + Flipd, GridDistortionD, GridDistortionDict, - GridPatchd, + GridDistortiond, GridPatchD, GridPatchDict, - GridSplitd, + GridPatchd, GridSplitD, GridSplitDict, - Orientationd, + GridSplitd, OrientationD, OrientationDict, - Rand2DElasticd, + Orientationd, Rand2DElasticD, Rand2DElasticDict, - Rand3DElasticd, + Rand2DElasticd, Rand3DElasticD, Rand3DElasticDict, - RandAffined, + Rand3DElasticd, RandAffineD, RandAffineDict, - RandAxisFlipd, + RandAffined, RandAxisFlipD, RandAxisFlipDict, - RandFlipd, + RandAxisFlipd, RandFlipD, RandFlipDict, - RandGridDistortiond, + RandFlipd, RandGridDistortionD, RandGridDistortionDict, - RandGridPatchd, + RandGridDistortiond, RandGridPatchD, RandGridPatchDict, - RandRotate90d, + RandGridPatchd, RandRotate90D, RandRotate90Dict, - RandRotated, + RandRotate90d, RandRotateD, RandRotateDict, - RandSimulateLowResolutiond, + RandRotated, RandSimulateLowResolutionD, RandSimulateLowResolutionDict, - RandZoomd, + RandSimulateLowResolutiond, RandZoomD, RandZoomDict, - ResampleToMatchd, + RandZoomd, ResampleToMatchD, ResampleToMatchDict, - Resized, + ResampleToMatchd, ResizeD, ResizeDict, - Rotate90d, + Resized, Rotate90D, Rotate90Dict, - Rotated, + Rotate90d, RotateD, RotateDict, - Spacingd, + Rotated, SpacingD, SpacingDict, - SpatialResampled, + Spacingd, SpatialResampleD, SpatialResampleDict, - Zoomd, + SpatialResampled, ZoomD, ZoomDict, + Zoomd, ) from .spatial.functional import spatial_resample from .traits import LazyTrait, MultiSampleTrait, RandomizableTrait, ReduceTrait, ThreadUnsafe @@ -547,144 +547,144 @@ ToDevice, ToNumpy, ToPIL, + ToTensor, TorchIO, TorchVision, - ToTensor, Transpose, ) from .utility.dictionary import ( - AddCoordinateChannelsd, AddCoordinateChannelsD, AddCoordinateChannelsDict, - AddExtremePointsChanneld, + AddCoordinateChannelsd, AddExtremePointsChannelD, AddExtremePointsChannelDict, - ApplyTransformToPointsd, + AddExtremePointsChanneld, ApplyTransformToPointsD, ApplyTransformToPointsDict, - AsChannelLastd, + ApplyTransformToPointsd, AsChannelLastD, AsChannelLastDict, - CastToTyped, + AsChannelLastd, CastToTypeD, CastToTypeDict, - ClassesToIndicesd, + CastToTyped, ClassesToIndicesD, ClassesToIndicesDict, - ConcatItemsd, + ClassesToIndicesd, ConcatItemsD, ConcatItemsDict, - ConvertToMultiChannelBasedOnBratsClassesd, + ConcatItemsd, ConvertToMultiChannelBasedOnBratsClassesD, ConvertToMultiChannelBasedOnBratsClassesDict, - CopyItemsd, + ConvertToMultiChannelBasedOnBratsClassesd, CopyItemsD, CopyItemsDict, - CuCIMd, + CopyItemsd, CuCIMD, CuCIMDict, - DataStatsd, + CuCIMd, DataStatsD, DataStatsDict, - DeleteItemsd, + DataStatsd, DeleteItemsD, DeleteItemsDict, - EnsureChannelFirstd, + DeleteItemsd, EnsureChannelFirstD, EnsureChannelFirstDict, - EnsureTyped, + EnsureChannelFirstd, EnsureTypeD, EnsureTypeDict, - FgBgToIndicesd, + EnsureTyped, FgBgToIndicesD, FgBgToIndicesDict, - FlattenSequenced, + FgBgToIndicesd, FlattenSequenceD, FlattenSequenceDict, - FlattenSubKeysd, + FlattenSequenced, FlattenSubKeysD, FlattenSubKeysDict, - Identityd, + FlattenSubKeysd, IdentityD, IdentityDict, - ImageFilterd, + Identityd, ImageFilterD, ImageFilterDict, - IntensityStatsd, + ImageFilterd, IntensityStatsD, IntensityStatsDict, - LabelToMaskd, + IntensityStatsd, LabelToMaskD, LabelToMaskDict, - Lambdad, + LabelToMaskd, LambdaD, LambdaDict, - MapLabelValued, + Lambdad, MapLabelValueD, MapLabelValueDict, - RandCuCIMd, + MapLabelValued, RandCuCIMD, RandCuCIMDict, - RandImageFilterd, + RandCuCIMd, RandImageFilterD, RandImageFilterDict, - RandLambdad, + RandImageFilterd, RandLambdaD, RandLambdaDict, - RandTorchIOd, + RandLambdad, RandTorchIOD, RandTorchIODict, - RandTorchVisiond, + RandTorchIOd, RandTorchVisionD, RandTorchVisionDict, - RemoveRepeatedChanneld, + RandTorchVisiond, RemoveRepeatedChannelD, RemoveRepeatedChannelDict, - RepeatChanneld, + RemoveRepeatedChanneld, RepeatChannelD, RepeatChannelDict, - SelectItemsd, + RepeatChanneld, SelectItemsD, SelectItemsDict, - SimulateDelayd, + SelectItemsd, SimulateDelayD, SimulateDelayDict, - SplitDimd, + SimulateDelayd, SplitDimD, SplitDimDict, - SqueezeDimd, + SplitDimd, SqueezeDimD, SqueezeDimDict, - ToCupyd, + SqueezeDimd, ToCupyD, ToCupyDict, - ToDeviced, + ToCupyd, ToDeviceD, ToDeviceDict, - ToNumpyd, + ToDeviced, ToNumpyD, ToNumpyDict, - ToPILd, + ToNumpyd, ToPILD, ToPILDict, - TorchIOd, + ToPILd, + ToTensorD, + ToTensorDict, + ToTensord, TorchIOD, TorchIODict, - TorchVisiond, + TorchIOd, TorchVisionD, TorchVisionDict, - ToTensord, - ToTensorD, - ToTensorDict, - TransformPointsImageToWorldd, + TorchVisiond, TransformPointsImageToWorldD, TransformPointsImageToWorldDict, - TransformPointsWorldToImaged, + TransformPointsImageToWorldd, TransformPointsWorldToImageD, TransformPointsWorldToImageDict, - Transposed, + TransformPointsWorldToImaged, TransposeD, TransposeDict, + Transposed, ) from .utils import ( Fourier, diff --git a/monai/transforms/io/array.py b/monai/transforms/io/array.py index 6fc278211f6..76883f566d9 100644 --- a/monai/transforms/io/array.py +++ b/monai/transforms/io/array.py @@ -31,8 +31,8 @@ from monai.data import image_writer from monai.data.folder_layout import FolderLayout, FolderLayoutBase, default_name_formatter from monai.data.image_reader import ( - ImageReader, ITKReader, + ImageReader, NibabelReader, NrrdReader, NumpyReader, diff --git a/monai/transforms/utility/dictionary.py b/monai/transforms/utility/dictionary.py index 4edf2ce45f4..f37ef5d796e 100644 --- a/monai/transforms/utility/dictionary.py +++ b/monai/transforms/utility/dictionary.py @@ -61,9 +61,9 @@ ToDevice, ToNumpy, ToPIL, + ToTensor, TorchIO, TorchVision, - ToTensor, Transpose, ) from monai.transforms.utils import extreme_points_to_image, get_extreme_points diff --git a/monai/transforms/utils_create_transform_ims.py b/monai/transforms/utils_create_transform_ims.py index a29fd4dbf9f..e5b5b1f0eba 100644 --- a/monai/transforms/utils_create_transform_ims.py +++ b/monai/transforms/utils_create_transform_ims.py @@ -39,11 +39,11 @@ Rand3DElasticd, RandFlip, RandFlipd, - Randomizable, RandRotate, RandRotated, RandZoom, RandZoomd, + Randomizable, Rotate, Rotate90, Rotate90d, @@ -79,8 +79,8 @@ RandCropByLabelClassesd, RandCropByPosNegLabeld, RandScaleCropd, - RandSpatialCropd, RandSpatialCropSamplesd, + RandSpatialCropd, RandWeightedCropd, ResizeWithPadOrCropd, SpatialCropd, @@ -143,8 +143,8 @@ RandShiftIntensityd, RandStdShiftIntensityd, SavitzkyGolaySmoothd, - ScaleIntensityRanged, ScaleIntensityRangePercentilesd, + ScaleIntensityRanged, ShiftIntensityd, StdShiftIntensityd, ThresholdIntensityd, diff --git a/monai/utils/__init__.py b/monai/utils/__init__.py index f844789cd78..f339113f705 100644 --- a/monai/utils/__init__.py +++ b/monai/utils/__init__.py @@ -64,8 +64,8 @@ TraceStatusKeys, TransformBackends, UpsampleMode, - Weight, WSIPatchKeys, + Weight, ) from .jupyter_utils import StatusMembers, ThreadContainer from .misc import ( diff --git a/pyproject.toml b/pyproject.toml index aa434b364fa..8f60c80b963 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -310,6 +310,7 @@ select = [ "C90", # mccabe (complexity) - https://docs.astral.sh/ruff/rules/#mccabe-c90 "E", # pycodestyle errors - https://docs.astral.sh/ruff/rules/#error-e "F", # pyflakes - https://docs.astral.sh/ruff/rules/#pyflakes-f + "I", # isort like import sorting - https://docs.astral.sh/ruff/rules/unsorted-imports/ "N", # pep8-naming - https://docs.astral.sh/ruff/rules/#pep8-naming-n "PIE", # flake8-pie - https://docs.astral.sh/ruff/rules/#flake8-pie-pie "TID", # flake8-tidy-imports - https://docs.astral.sh/ruff/rules/#flake8-tidy-imports-tid @@ -319,7 +320,7 @@ select = [ "RUF100", # aka yesqa - https://docs.astral.sh/ruff/rules/unused-noqa/ "F401", # unused imports - https://docs.astral.sh/ruff/rules/unused-import/ ] -extend-ignore = [ +ignore = [ "E741", # ambiguous variable name "NPY002", # numpy-legacy-random "E203", # whitespace before ':' (pycodestyle) @@ -347,6 +348,11 @@ extend-ignore = [ [tool.ruff.lint.mccabe] max-complexity = 50 # todo lower this treshold when yesqa id replaced with Ruff's RUF100 +[tool.ruff.lint.isort] +known-first-party = ["monai"] +combine-as-imports = false +case-sensitive = true + [tool.pytest.ini_options] pythonpath = ["."] diff --git a/runtests.sh b/runtests.sh index 8454c2152f1..3b694c5f640 100755 --- a/runtests.sh +++ b/runtests.sh @@ -623,6 +623,7 @@ then if [ $doRuffFix = true ] then + "${PY_EXE}" -m ruff format "$homedir" "${PY_EXE}" -m ruff check --fix --unsafe-fixes "$homedir" else "${PY_EXE}" -m ruff check "$homedir" diff --git a/tests/data/test_pil_reader.py b/tests/data/test_pil_reader.py index 078812513d4..047326c5186 100644 --- a/tests/data/test_pil_reader.py +++ b/tests/data/test_pil_reader.py @@ -16,8 +16,8 @@ import unittest import numpy as np -from parameterized import parameterized from PIL import Image +from parameterized import parameterized from monai.data import PILReader diff --git a/tests/losses/test_cldice_loss.py b/tests/losses/test_cldice_loss.py index 23c22dd395e..a3e7716e1a7 100644 --- a/tests/losses/test_cldice_loss.py +++ b/tests/losses/test_cldice_loss.py @@ -17,7 +17,7 @@ import torch from parameterized import parameterized -from monai.losses import SoftclDiceLoss, SoftDiceclDiceLoss +from monai.losses import SoftDiceclDiceLoss, SoftclDiceLoss from tests.test_utils import skip_if_no_cuda # Reusable test tensors diff --git a/tests/networks/nets/test_densenet.py b/tests/networks/nets/test_densenet.py index bc6d6d00948..0d2853fef40 100644 --- a/tests/networks/nets/test_densenet.py +++ b/tests/networks/nets/test_densenet.py @@ -19,7 +19,7 @@ from parameterized import parameterized from monai.networks import eval_mode -from monai.networks.nets import DenseNet121, Densenet169, DenseNet264, densenet201 +from monai.networks.nets import DenseNet121, DenseNet264, Densenet169, densenet201 from monai.utils import optional_import from tests.test_utils import skip_if_downloading_fails, skip_if_quick, test_script_save diff --git a/tests/networks/nets/test_flexible_unet.py b/tests/networks/nets/test_flexible_unet.py index 5efe436c279..56bdf1acecc 100644 --- a/tests/networks/nets/test_flexible_unet.py +++ b/tests/networks/nets/test_flexible_unet.py @@ -21,8 +21,8 @@ from monai.networks.nets import ( FLEXUNET_BACKBONE, EfficientNetBNFeatures, - FlexibleUNet, FlexUNetEncoderRegister, + FlexibleUNet, ResNetEncoder, ResNetFeatures, ) diff --git a/tests/networks/test_convert_to_onnx.py b/tests/networks/test_convert_to_onnx.py index 863d52be473..ef38c099bac 100644 --- a/tests/networks/test_convert_to_onnx.py +++ b/tests/networks/test_convert_to_onnx.py @@ -28,8 +28,8 @@ DynUNet, FullyConnectedNet, HighResNet, - SegResNet, SEResNet50, + SegResNet, UNet, VNet, resnet10, diff --git a/tests/nonconfig_workflow.py b/tests/nonconfig_workflow.py index bcbdc67b71a..0d1f2f8ff46 100644 --- a/tests/nonconfig_workflow.py +++ b/tests/nonconfig_workflow.py @@ -25,8 +25,8 @@ EnsureChannelFirstd, LoadImaged, SaveImaged, - ScaleIntensityd, ScaleIntensityRanged, + ScaleIntensityd, ) from monai.utils import BundleProperty, CommonKeys, set_determinism diff --git a/tests/transforms/inverse/test_inverse.py b/tests/transforms/inverse/test_inverse.py index 01d32e4baf4..b6be045b4f7 100644 --- a/tests/transforms/inverse/test_inverse.py +++ b/tests/transforms/inverse/test_inverse.py @@ -46,16 +46,16 @@ RandCropByPosNegLabeld, RandFlipd, RandLambdad, - Randomizable, RandRotate90d, RandRotated, - RandSpatialCropd, RandSpatialCropSamplesd, + RandSpatialCropd, RandWeightedCropd, RandZoomd, - Resized, + Randomizable, ResizeWithPadOrCrop, ResizeWithPadOrCropd, + Resized, Rotate90d, Rotated, Spacingd, diff --git a/tests/transforms/test_ensure_channel_first.py b/tests/transforms/test_ensure_channel_first.py index fe046a4cdf9..4e308a7b8eb 100644 --- a/tests/transforms/test_ensure_channel_first.py +++ b/tests/transforms/test_ensure_channel_first.py @@ -18,8 +18,8 @@ import nibabel as nib import numpy as np import torch -from parameterized import parameterized from PIL import Image +from parameterized import parameterized from monai.data.meta_tensor import MetaTensor from monai.transforms import EnsureChannelFirst, LoadImage diff --git a/tests/transforms/test_ensure_channel_firstd.py b/tests/transforms/test_ensure_channel_firstd.py index e9effad9516..57279b9cb8d 100644 --- a/tests/transforms/test_ensure_channel_firstd.py +++ b/tests/transforms/test_ensure_channel_firstd.py @@ -18,8 +18,8 @@ import nibabel as nib import numpy as np import torch -from parameterized import parameterized from PIL import Image +from parameterized import parameterized from monai.data.meta_tensor import MetaTensor from monai.transforms import EnsureChannelFirstd, LoadImaged diff --git a/tests/transforms/test_load_image.py b/tests/transforms/test_load_image.py index 8c3e08f1e93..3ed4ac74d99 100644 --- a/tests/transforms/test_load_image.py +++ b/tests/transforms/test_load_image.py @@ -22,8 +22,8 @@ import nibabel as nib import numpy as np import torch -from parameterized import parameterized from PIL import Image +from parameterized import parameterized from monai.apps import download_and_extract from monai.data import ImageReader, NibabelReader, PydicomReader diff --git a/tests/transforms/test_nvtx_decorator.py b/tests/transforms/test_nvtx_decorator.py index 664d6c32c73..09d7ca05138 100644 --- a/tests/transforms/test_nvtx_decorator.py +++ b/tests/transforms/test_nvtx_decorator.py @@ -30,9 +30,9 @@ Rotate90, ToCupy, ToNumpy, - TorchVision, ToTensor, ToTensord, + TorchVision, ) from monai.utils import Range, optional_import from tests.test_utils import HAS_CUPY diff --git a/tests/transforms/test_randtorchvisiond.py b/tests/transforms/test_randtorchvisiond.py index e2324c44993..94188692b03 100644 --- a/tests/transforms/test_randtorchvisiond.py +++ b/tests/transforms/test_randtorchvisiond.py @@ -16,7 +16,7 @@ import torch from parameterized import parameterized -from monai.transforms import RandomizableTrait, RandTorchVisiond +from monai.transforms import RandTorchVisiond, RandomizableTrait from monai.utils import set_determinism from tests.test_utils import assert_allclose diff --git a/tests/transforms/test_ultrasound_confidence_map_transform.py b/tests/transforms/test_ultrasound_confidence_map_transform.py index 331c46ee007..d46832075de 100644 --- a/tests/transforms/test_ultrasound_confidence_map_transform.py +++ b/tests/transforms/test_ultrasound_confidence_map_transform.py @@ -17,8 +17,8 @@ import numpy as np import torch -from parameterized import parameterized from PIL import Image +from parameterized import parameterized from monai.transforms import UltrasoundConfidenceMapTransform from monai.utils import optional_import