diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 0c85b02e4e..59a973571f 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -29,7 +29,7 @@ repos: exclude: ^source/3rdparty - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: v0.14.13 + rev: v0.14.14 hooks: - id: ruff args: ["--fix"] diff --git a/deepmd/dpmodel/modifier/base_modifier.py b/deepmd/dpmodel/modifier/base_modifier.py index febb9b75e8..b3e3c2ca7b 100644 --- a/deepmd/dpmodel/modifier/base_modifier.py +++ b/deepmd/dpmodel/modifier/base_modifier.py @@ -8,6 +8,10 @@ Any, ) +from typing_extensions import ( + Self, +) + from deepmd.utils.plugin import ( PluginVariant, make_plugin_registry, @@ -18,7 +22,7 @@ def make_base_modifier() -> type[object]: class BaseModifier(ABC, PluginVariant, make_plugin_registry("modifier")): """Base class for data modifier.""" - def __new__(cls, *args: Any, **kwargs: Any) -> "BaseModifier": + def __new__(cls, *args: Any, **kwargs: Any) -> Self: if cls is BaseModifier: cls = cls.get_class_by_type(kwargs["type"]) return super().__new__(cls) diff --git a/deepmd/infer/deep_eval.py b/deepmd/infer/deep_eval.py index 0a8686a98b..d375a2ecd7 100644 --- a/deepmd/infer/deep_eval.py +++ b/deepmd/infer/deep_eval.py @@ -11,6 +11,9 @@ ) import numpy as np +from typing_extensions import ( + Self, +) from deepmd.backend.backend import ( Backend, @@ -89,9 +92,7 @@ def __init__( ) -> None: pass - def __new__( - cls, model_file: str, *args: object, **kwargs: object - ) -> "DeepEvalBackend": + def __new__(cls, model_file: str, *args: object, **kwargs: object) -> Self: if cls is DeepEvalBackend: backend = Backend.detect_backend_by_model(model_file) return super().__new__(backend().deep_eval) @@ -384,7 +385,7 @@ class DeepEval(ABC): Keyword arguments. """ - def __new__(cls, model_file: str, *args: object, **kwargs: object) -> "DeepEval": + def __new__(cls, model_file: str, *args: object, **kwargs: object) -> Self: if cls is DeepEval: deep_eval = DeepEvalBackend( model_file, diff --git a/deepmd/pd/model/descriptor/descriptor.py b/deepmd/pd/model/descriptor/descriptor.py index 53c7f4dc1a..6071ab7d2b 100644 --- a/deepmd/pd/model/descriptor/descriptor.py +++ b/deepmd/pd/model/descriptor/descriptor.py @@ -13,6 +13,9 @@ ) import paddle +from typing_extensions import ( + Self, +) from deepmd.pd.model.network.network import ( TypeEmbedNet, @@ -44,7 +47,7 @@ class DescriptorBlock(paddle.nn.Layer, ABC, make_plugin_registry("DescriptorBloc local_cluster = False - def __new__(cls, *args: Any, **kwargs: Any) -> "DescriptorBlock": + def __new__(cls, *args: Any, **kwargs: Any) -> Self: if cls is DescriptorBlock: try: descrpt_type = kwargs["type"] diff --git a/deepmd/pd/model/task/fitting.py b/deepmd/pd/model/task/fitting.py index ad39e3a0a6..01ba370c2b 100644 --- a/deepmd/pd/model/task/fitting.py +++ b/deepmd/pd/model/task/fitting.py @@ -12,6 +12,9 @@ import numpy as np import paddle +from typing_extensions import ( + Self, +) from deepmd.dpmodel.utils.seed import ( child_seed, @@ -54,7 +57,7 @@ class Fitting(paddle.nn.Layer, BaseFitting): # plugin moved to BaseFitting - def __new__(cls, *args: Any, **kwargs: Any) -> "Fitting": + def __new__(cls, *args: Any, **kwargs: Any) -> Self: if cls is Fitting: return BaseFitting.__new__(BaseFitting, *args, **kwargs) return super().__new__(cls) diff --git a/deepmd/pt/model/descriptor/descriptor.py b/deepmd/pt/model/descriptor/descriptor.py index 2a6e857a6f..7b0ff403c5 100644 --- a/deepmd/pt/model/descriptor/descriptor.py +++ b/deepmd/pt/model/descriptor/descriptor.py @@ -13,6 +13,9 @@ ) import torch +from typing_extensions import ( + Self, +) from deepmd.pt.model.network.network import ( TypeEmbedNet, @@ -44,7 +47,7 @@ class DescriptorBlock(torch.nn.Module, ABC, make_plugin_registry("DescriptorBloc local_cluster = False - def __new__(cls, *args: Any, **kwargs: Any) -> "DescriptorBlock": + def __new__(cls, *args: Any, **kwargs: Any) -> Self: if cls is DescriptorBlock: try: descrpt_type = kwargs["type"] diff --git a/deepmd/pt/model/task/fitting.py b/deepmd/pt/model/task/fitting.py index f46bc0fb7d..7aac7b9a29 100644 --- a/deepmd/pt/model/task/fitting.py +++ b/deepmd/pt/model/task/fitting.py @@ -13,6 +13,9 @@ import numpy as np import torch +from typing_extensions import ( + Self, +) from deepmd.dpmodel.utils.seed import ( child_seed, @@ -58,7 +61,7 @@ class Fitting(torch.nn.Module, BaseFitting): # plugin moved to BaseFitting - def __new__(cls, *args: Any, **kwargs: Any) -> "Fitting": + def __new__(cls, *args: Any, **kwargs: Any) -> Self: if cls is Fitting: return BaseFitting.__new__(BaseFitting, *args, **kwargs) return super().__new__(cls) diff --git a/deepmd/utils/path.py b/deepmd/utils/path.py index 5f156298e3..b9e48fe531 100644 --- a/deepmd/utils/path.py +++ b/deepmd/utils/path.py @@ -18,6 +18,9 @@ import h5py import numpy as np +from typing_extensions import ( + Self, +) from wcmatch.glob import ( globfilter, ) @@ -34,7 +37,7 @@ class DPPath(ABC): mode, by default "r" """ - def __new__(cls, path: str, mode: str = "r") -> "DPPath": + def __new__(cls, path: str, mode: str = "r") -> Self: if cls is DPPath: if os.path.isdir(path): return super().__new__(DPOSPath) diff --git a/pyproject.toml b/pyproject.toml index 9a66783358..bd403dfaf2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -45,7 +45,7 @@ dependencies = [ 'scipy', 'pyyaml', 'dargs >= 0.4.7', - 'typing_extensions; python_version < "3.8"', + 'typing_extensions>=4.0.0', 'importlib_metadata>=1.4; python_version < "3.8"', 'h5py', "h5py>=3.6.0,!=3.11.0; platform_system=='Linux' and platform_machine=='aarch64'",