3030
3131from functools import wraps
3232import sys
33+ from typing import TYPE_CHECKING
3334import weakref
3435
3536from ansys .dpf .core import errors as dpf_errors
3637
38+ if TYPE_CHECKING : # pragma: nocover
39+ from ansys .dpf .core .server_types import AnyServerType
3740
38- def server_meet_version (required_version , server : BaseServer ):
41+
42+ def server_meet_version (required_version : str , server : AnyServerType ) -> bool :
3943 """Check if a given server version matches with a required version.
4044
4145 Parameters
4246 ----------
43- required_version : str
47+ required_version:
4448 Required version to compare with the server version.
45- server : :class:`ansys.dpf.core.server_types.BaseServer`
49+ server:
4650 DPF server object.
4751
48- Returns
49- -------
50- bool
51- ``True`` when successful, ``False`` when failed.
5252 """
5353 return server .meet_version (required_version )
5454
5555
56- def server_meet_version_and_raise (required_version , server , msg = None ):
56+ def server_meet_version_and_raise (
57+ required_version : str , server : AnyServerType , msg : str = None
58+ ) -> bool :
5759 """Check if a given server version matches with a required version and raise an exception if it does not match.
5860
5961 Parameters
6062 ----------
61- required_version : str
63+ required_version:
6264 Required version to compare with the server version.
63- server : :class:`dpf.core.server_types.BaseServer`
65+ server:
6466 DPF server object.
65- msg : str, optional
67+ msg:
6668 Message contained in the raised exception if the versions do
6769 not match. The default is ``None``, in which case the default message
6870 is used.
6971
7072 Raises
7173 ------
72- dpf_errors : errors
73- errors.DpfVersionNotSupported is raised if the versions do not match.
74+ dpf_errors: errors.DpfVersionNotSupported
75+ En error is raised if the versions do not match.
7476
7577 Returns
7678 -------
@@ -86,14 +88,14 @@ def server_meet_version_and_raise(required_version, server, msg=None):
8688 return True
8789
8890
89- def meets_version (version , meets ) :
91+ def meets_version (version : str , meets : str ) -> bool :
9092 """Check if a version string meets a minimum version.
9193
9294 Parameters
9395 ----------
94- version : str
96+ version:
9597 Version string to check. For example, ``"1.32.1"``.
96- meets : str
98+ meets:
9799 Required version for comparison. For example, ``"1.32.2"``.
98100
99101 Returns
@@ -106,13 +108,13 @@ def meets_version(version, meets):
106108 return parse (version ) >= parse (meets )
107109
108110
109- def get_server_version (server = None ):
111+ def get_server_version (server : AnyServerType = None ) -> str :
110112 """Retrieve the server version as a string.
111113
112114 Parameters
113115 ----------
114- server : :class:`ansys.dpf.core.server`, optional
115- DPF server object. The default is ``None ``.
116+ server:
117+ DPF server object. Default is to ``ansys.dpf.core.SERVER ``.
116118
117119 Returns
118120 -------
@@ -128,11 +130,17 @@ def get_server_version(server=None):
128130 return version
129131
130132
131- def version_requires (min_version ):
133+ def version_requires (min_version : str ):
132134 """Check that the method being called matches a certain server version.
133135
134136 .. note::
135137 The method must be used as a decorator.
138+
139+ Parameters
140+ ----------
141+ min_version:
142+ Version string to check. For example, ``"1.32.1"``.
143+
136144 """
137145
138146 def decorator (func ):
@@ -143,10 +151,15 @@ def decorator(func):
143151 @wraps (func )
144152 def wrapper (self , * args , ** kwargs ):
145153 """Call the original function."""
146- if isinstance (self ._server , weakref .ref ):
147- server = self ._server ()
148- else :
149- server = self ._server
154+ from ansys .dpf .core .server_types import AnyServerType
155+
156+ if hasattr (self , "_server" ):
157+ if isinstance (self ._server , weakref .ref ):
158+ server = self ._server ()
159+ else :
160+ server = self ._server
161+ elif isinstance (self , AnyServerType ):
162+ server = self
150163 func_name = func .__name__
151164
152165 # particular cases
0 commit comments