Metadata-Version: 2.1
Name: py-automapper
Version: 0.0.1
Summary: Library for automatically mapping one object to another
Home-page: https://github.com/anikolaienko/py-automapper
License: MIT
Keywords: utils,dto,object-mapper,mapping,development
Author: Andrii Nikolaienko
Author-email: anikolaienko14@gmail.com
Requires-Python: >=3.6,<4.0
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Software Development :: Build Tools
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Project-URL: Repository, https://github.com/anikolaienko/py-automapper.git
Description-Content-Type: text/markdown

# py-automapper
Python object auto mapper

TODO:
* use custom exception type
* use https://docs.readthedocs.io/en/stable/index.html
* configure poetry for building a package: https://python-poetry.org/docs/pyproject/
* using TortoiseORM as an example of package building: https://github.com/tortoise/tortoise-orm/blob/develop


Requirements:
```python
from automapper import mapper

mapper.register_cls_extractor(ParentClassA, fields_name_extractor_function)

mapper.add(ClassA, ClassB)

# output type is known from registered before
mapper.map(obj)

# output type specified
mapper.to(TargetClass).map(obj)

# TODO: extra mappings, they override default mapping from `obj`
mapper.map(obj, field1=value1, field2=value2)

# TODO: same extra mappings with specific type, field1 and field2 coming from SpecificType
mapper.map(obj, SpecificType, field1=value1, field2=value2)

# TODO: don't map None values, by default skip_none_values == False
mapper.map(obj, skip_none_values = True)

# TODO: Mapping should be recursive
# TODO: Add optional dependencies for 

# TODO: Advanced: multiple from classes
mapper.add(FromClassA, FromClassB, ToClassC)

# TODO: Advanced: add custom mappings for fields
mapper.add(ClassA, ClassB, {"ClassA.field1", "ClassB.field2", "ClassA.field2", "ClassB.field1"})

# TODO: Advanced: map multiple objects to output type
mapper.multimap(obj1, obj2)
mapper.to(TargetType).multimap(obj1, obj2)

# TODO: Advanced: Verify correctness of all mappings and if it's possible to construct object

```
