Type Relations

All relations implement two methods is_relation and transform. is_relation is responsible for testing the validity of a relation while transform applies whatever transformation is required to map between the types defined on the relation.

Going back to our integer example.

>>> import visions as v
>>> v.Integer.relations
[IdentityRelation(Generic -> Integer),
 InferenceRelation(Float -> Integer),
 InferenceRelation(String -> Integer)]

Now imagine a series of floats like [1.0, 2.0, 3.0].

>>> float_int_relation = v.Integer.relations[v.Float]
>>> series = pd.Series([1.0, 2.0, 3.0])

>>> series in v.Integer
False

>>> float_int_relation.is_relation(series)
True

Not yet an integer, but it can be mapped to one!

>>> transformed_series = float_int_relation.transform(series)

>>> transformed_series in v.Integer
True

… and the transform method is how.

The relations between types represent the invisible bonds between types which allow visions to map between them.