User guide#
The fundamental object provided by ansys.tools.versioning
is a decorator
named ansys.tools.versioning.utils.requires_version()
which accepts:
The required version as a string
"<Major>.<Minor>.<Patch>"
or tuple(<Major>, <Minor>, <Patch>)
.A version map in the form of dictionary relating the required version and its Ansys unified install,
VERSION_MAP = {(<Major>, <Minor>, <Patch>): "2022R1"}
How to use#
The requires_version
decorator is expected to be used in all the desired
methods of a class containing a _server_version
attribute. If the class in
which it is used does not contain this attribute, an AttributeError
is
raised.
As an example, consider the following code declaring a generic Server
class
and a VERSION_MAP
dictionary
VERSION_MAP = {
(0, 2, 3): "2021R1",
(0, 4, 5): "2021R2",
(0, 5, 1): "2022R1",
}
class Server:
"""A basic class for modelling a server."""
def __init__(self, version):
"""Initializes the server."""
self._server_version = version
@requires_version("0.2.0", VERSION_MAP)
def old_method(self):
pass
@requires_version("0.5.1", VERSION_MAP)
def new_method(self):
pass
Suppose that two servers are created using previous class. Each of the servers is using a different version, meaning that some of the methods are available while some others are not:
>>> old_server = Server("0.4.5") # Can use "old_method" but not "new_method"
>>> new_server = Server("0.5.5") # Can use "old_method" and "new_method"
Executing each one of the methods it is possible to see that both instances can
execute the old_method
function:
>>> for server in [old_server, new_server]:
... server.old_method()
...
However, when trying to run new_method
, the old server raises a
VersionError
exception, indicating that a higher server version is required:
>>> new_server.new_method()
>>> old_server.new_method()
ansys.tools.versioning.exceptions.VersionError: Class method ``new_method`` requires server version >= 2022R1.