Writing a model¶
Getting started¶
In aztk/models
create a new file with the name of your model my_model.py
In aztk/models/__init__.py
add from .my_model import MyModel
Create a new class MyModel
that inherit ConfigurationBase
from aztk.internal import ConfigurationBase
class MyModel(ConfigurationBase):
"""
MyModel is an sample model
Args:
input1 (str): This is the first input
"""
def __init__(self, input1: str):
self.input1 = input1
def validate(self):
pass
Add validation¶
In def validate
do any kind of checks and raise a InvalidModelError
if there is any problems with the values
Validate required¶
To validate required attributes call the parent _validate_required
method. Method takes a list of attributes which should not be None
def validate(self) -> bool:
self._validate_required(["input1"])
Custom validation¶
def validate(self) -> bool:
if "foo" in self.input1:
raise InvalidModelError("foo cannot be in input1")
Convert dict to model¶
When inheriting from ConfigurationBase
it comes with a from_dict
class method which allows to convert a dict to this class
It works great for simple case where values are simple types(str, int, etc). If however you need to process it you can override the _from_dict
method.
** Important: Do not override the from_dict
method as this one will handle error and display them nicely **
@classmethod
def _from_dict(cls, args: dict):
if "input1" in args:
args["input1"] = MyInput1Model.from_dict(args["input1"])
return super()._from_dict(args)