By defaults pybind handle just unique ptr [see here](https://stackoverflow.com/questions/54827899/pybind-invoke-function-with-shared-pointer-to-derived-class). We need to expose to python functions that returns shared pointers. see [here](https://pybind11.readthedocs.io/en/stable/advanced/smart_ptrs.html)
By defaults pybind handle just unique ptr see here. We need to expose to python functions that returns shared pointers.
see here