I’d probably recommend a two-function approach: Create the C++ function how you would, using the special wrapped-map object. Then on the Python/PyRosetta side make a simple wrapper function which takes a standard Python dict and converts it to the needed C++ version.
There’s a bunch of issues working with Python objects on the C++ side, not the least of which is that Python dicts can contain arbitrary objects in a mixed fashion. Having a wrapper on the Python side allows you to easily clean up/check the contents of the dict before passing it to the C++ interface.