ObjectMapper is a class for automatic object mapping in Python
Version 1.1.0
Author marazt
Copyright marazt
License The MIT License (MIT)
Last updated 13 July 2019
Package Download https://pypi.python.org/pypi/object-mapper
1.1.0 - 2019/07/13
1.0.7 - 2019/06/19
1.0.6 - 2018/10/28
1.0.5 - 2018/02/21
1.0.4 - 2017/11/03
1.0.3 - 2015/05/15
1.0.2 - 2015/05/06
1.0.1 - 2015/02/19
1.0.0 - 2015/02/19
ObjectMapper is a class for automatic object mapping inspired by .NET AutoMapper. It helps you to create objects between project layers (data layer, service layer, view) in a simple, transparent way.
In this case are mapped only these properties of the target class which
are in target and source classes. Other properties are not mapped.
Suppose we have class A
with attributes name
and last_name
and class B
with attribute name
.
Initialization of the ObjectMapper will be:
mapper = ObjectMapper()
mapper.create_map(A, B)
instance_b = mapper.map(A(), B)
In this case, value of A.name will be copied into B.name.
Suppose we have class A
with attributes first_name
and last_name
, class B
with attribute full_name
and class C
with attribute reverse_name.
And want to map it in a way B.full_name = A.first_name + A.last_name
and
C.reverse_name = A.last_name + A.first_name
Initialization of the ObjectMapper will be:
mapper = ObjectMapper()
mapper.create_map(A, B, {'name': lambda a : a.first_name + " " + a.last_name})
mapper.create_map(A, C, {'name': lambda a : a.last_name + " " + a.first_name})
instance_b = mapper.map(A(), B)
instance_c = mapper.map(A(), C)
In this case, to the B.name
will be mapped A.first_name + " " + A.last_name
In this case, to the C.name
will be mapped A.last_name + " " + A.first_name
For some purposes, it can be needed to suppress some mapping.
Suppose we have class A
with attributes name
and last_name
and class B
with attributes name
and last_name
.
And we want to map only the A.name
into B.name
, but not A.last_name
to
B.last_name
Initialization of the ObjectMapper will be:
mapper = ObjectMapper()
mapper.create_map(A, B, {'last_name': None})
instance_b = mapper.map(A(), B)
In this case, value of A.name will be copied into B.name
automatically by the attribute name name
.
Attribute A.last_name
will be not mapped thanks the suppression (lambda function is None).
Suppose we have class A
with attributes Name
and Age
and
class B
with attributes name
and age
and we want to map A
to B
in a way
B.name
= A.Name
and B.age
= A.Age
Initialization of the ObjectMapper will be:
mapper = ObjectMapper()
mapper.create_map(A, B)
instance_b = mapper.map(A(), B, ignore_case=True)
In this case, the value of A.Name will be copied into B.name and the value of A.Age will be copied into B.age.
Note: You can find more examples in tests package