Source code for pyleecan.Classes.OptiObjFunc
# -*- coding: utf-8 -*-
"""File generated according to Generator/ClassesRef/Optimization/OptiObjFunc.csv
WARNING! All changes made in this file will be lost!
"""
from os import linesep
from logging import getLogger
from ._check import check_var, raise_
from ..Functions.get_logger import get_logger
from ..Functions.save import save
from ._frozen import FrozenClass
from inspect import getsource
from cloudpickle import dumps, loads
from ._check import CheckTypeError
from ._check import InitUnKnowClassError
[docs]class OptiObjFunc(FrozenClass):
"""Optimization"""
VERSION = 1
# save method is available in all object
save = save
# generic copy method
[docs] def copy(self):
"""Return a copy of the class
"""
return type(self)(init_dict=self.as_dict())
# get_logger method is available in all object
get_logger = get_logger
def __init__(self, description="'", func=None, init_dict=None, init_str=None):
"""Constructor of the class. Can be use in three ways :
- __init__ (arg1 = 1, arg3 = 5) every parameters have name and default values
for Matrix, None will initialise the property with an empty Matrix
for pyleecan type, None will call the default constructor
- __init__ (init_dict = d) d must be a dictionnary with every properties as keys
- __init__ (init_str = s) s must be a string
s is the file path to load
ndarray or list can be given for Vector and Matrix
object or dict can be given for pyleecan Object"""
if init_str is not None: # Initialisation by str
from ..Functions.load import load
assert type(init_str) is str
# load the object from a file
obj = load(init_str)
assert type(obj) is type(self)
description = obj.description
func = obj.func
if init_dict is not None: # Initialisation by dict
assert type(init_dict) is dict
# Overwrite default value with init_dict content
if "description" in list(init_dict.keys()):
description = init_dict["description"]
if "func" in list(init_dict.keys()):
func = init_dict["func"]
# Initialisation by argument
self.parent = None
self.description = description
self.func = func
# The class is frozen, for now it's impossible to add new properties
self._freeze()
def __str__(self):
"""Convert this objet in a readeable string (for print)"""
OptiObjFunc_str = ""
if self.parent is None:
OptiObjFunc_str += "parent = None " + linesep
else:
OptiObjFunc_str += (
"parent = " + str(type(self.parent)) + " object" + linesep
)
OptiObjFunc_str += 'description = "' + str(self.description) + '"' + linesep
if self._func[1] is None:
OptiObjFunc_str += "func = " + str(self._func[1])
else:
OptiObjFunc_str += (
"func = " + linesep + str(self._func[1]) + linesep + linesep
)
return OptiObjFunc_str
def __eq__(self, other):
"""Compare two objects (skip parent)"""
if type(other) != type(self):
return False
if other.description != self.description:
return False
if other.func != self.func:
return False
return True
[docs] def as_dict(self):
"""Convert this objet in a json seriable dict (can be use in __init__)
"""
OptiObjFunc_dict = dict()
OptiObjFunc_dict["description"] = self.description
if self.func is None:
OptiObjFunc_dict["func"] = None
else:
OptiObjFunc_dict["func"] = [
dumps(self._func[0]).decode("ISO-8859-2"),
self._func[1],
]
# The class name is added to the dict fordeserialisation purpose
OptiObjFunc_dict["__class__"] = "OptiObjFunc"
return OptiObjFunc_dict
def _set_None(self):
"""Set all the properties to None (except pyleecan object)"""
self.description = None
self.func = None
def _get_description(self):
"""getter of description"""
return self._description
def _set_description(self, value):
"""setter of description"""
check_var("description", value, "str")
self._description = value
# Description of the objective
# Type : str
description = property(
fget=_get_description,
fset=_set_description,
doc=u"""Description of the objective""",
)
def _get_func(self):
"""getter of func"""
return self._func[0]
def _set_func(self, value):
"""setter of func"""
try:
check_var("func", value, "list")
except CheckTypeError:
check_var("func", value, "function")
if isinstance(value, list): # Load function from saved dict
self._func = [loads(value[0].encode("ISO-8859-2")), value[1]]
elif value is None:
self._func = [None, None]
elif callable(value):
self._func = [value, getsource(value)]
else:
raise TypeError(
"Expected function or list from a saved file, got: " + str(type(value))
)
# Function to minimize
# Type : function
func = property(fget=_get_func, fset=_set_func, doc=u"""Function to minimize""")