From fc78c7fd278825907f15a79b57a7a02165da89f7 Mon Sep 17 00:00:00 2001 From: Phil Relton Date: Mon, 3 Nov 2025 09:36:10 +0000 Subject: [PATCH 1/3] Adding a type hint to the process method of the `BasePlugin` class this will allow other child classes to type hint without their type checker demanding that they return None from process. The type hint is set to `Any` as there are multiple process methods that return different types. --- improver/__init__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/improver/__init__.py b/improver/__init__.py index 5091c1056d..29dce78cf5 100644 --- a/improver/__init__.py +++ b/improver/__init__.py @@ -7,6 +7,7 @@ from abc import ABC, abstractmethod from collections.abc import Iterable from importlib.metadata import PackageNotFoundError, version +from typing import Any try: __version__ = version("improver") @@ -34,7 +35,7 @@ def __call__(self, *args, **kwargs): return self.process(*args, **kwargs) @abstractmethod - def process(self, *args, **kwargs): + def process(self, *args, **kwargs) -> Any: """Abstract class for rest to implement.""" pass From 1102fc1b076f37508708e2ad0ea295a2d03fa53c Mon Sep 17 00:00:00 2001 From: Phil Relton Date: Mon, 3 Nov 2025 13:37:00 +0000 Subject: [PATCH 2/3] Type hinting changes requested for PostProcessingPlugin --- improver/__init__.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/improver/__init__.py b/improver/__init__.py index 29dce78cf5..847608ca09 100644 --- a/improver/__init__.py +++ b/improver/__init__.py @@ -7,7 +7,10 @@ from abc import ABC, abstractmethod from collections.abc import Iterable from importlib.metadata import PackageNotFoundError, version -from typing import Any +from typing import TYPE_CHECKING, Any + +if TYPE_CHECKING: + from iris.cube import Cube try: __version__ = version("improver") @@ -22,7 +25,7 @@ class BasePlugin(ABC): method by redirecting to __call__. """ - def __call__(self, *args, **kwargs): + def __call__(self, *args, **kwargs) -> Any: """Makes subclasses callable to use process Args: *args: @@ -45,7 +48,7 @@ class PostProcessingPlugin(BasePlugin): Makes generalised changes to metadata relating to post-processing. """ - def __call__(self, *args, **kwargs): + def __call__(self, *args, **kwargs) -> "Cube": """Makes subclasses callable to use process Args: *args: From d255fffdd4a5ac40dd7aa6bf0dd15693db863f50 Mon Sep 17 00:00:00 2001 From: Phil Relton Date: Mon, 3 Nov 2025 13:58:52 +0000 Subject: [PATCH 3/3] Reverting to __call__(...) -> Any for simplicity and speed of execution --- improver/__init__.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/improver/__init__.py b/improver/__init__.py index 847608ca09..cb06260906 100644 --- a/improver/__init__.py +++ b/improver/__init__.py @@ -7,10 +7,7 @@ from abc import ABC, abstractmethod from collections.abc import Iterable from importlib.metadata import PackageNotFoundError, version -from typing import TYPE_CHECKING, Any - -if TYPE_CHECKING: - from iris.cube import Cube +from typing import Any try: __version__ = version("improver") @@ -48,7 +45,7 @@ class PostProcessingPlugin(BasePlugin): Makes generalised changes to metadata relating to post-processing. """ - def __call__(self, *args, **kwargs) -> "Cube": + def __call__(self, *args, **kwargs) -> Any: """Makes subclasses callable to use process Args: *args: