-
Notifications
You must be signed in to change notification settings - Fork 1
Auto Python Bindings #44
Comments
Since you mention that it is a "drastic change" and since you mention you're still "collecting notes," I'll take the liberty to provide some more background that is hopefully helpful in the decision making. :)
Actually, there is no such thing as pre-compiling python bindings. The only thing that gets compiled is the recipe of bindings construction, not the bindings themselves, so there is no (and can not be any) performance benefit. In fact, it may even be detrimental. If you care mainly about CPU performance, Functionality-wise, I recommend As for |
Thank you for the correction and this extra detail @wlav ! 🎉 I appreciate the input :) |
@omar-moreno and I have chatted about this idea on-and-off and I am really excited about it. I've done some surface-level research and just wanted to open an issue to keep track of my notes.
Goal
The long term goal would be to get rid of
ConfigurePython
andfire
altogether. We would instead callProcess::run
directly from a script run inside python after doing all the necessary configuration. i.e. instead of having a "configuration script", we would have a running script that is really similar.Another goal that would be awesome if we can get it to work is to have a Python parent class for both the Cpp pythonizations and potentially new Python processors. i.e. Something like the following
Both of these would be run through python instead of
fire
:Tools
Both have their pros and cons from my research.
Long story short. It seems like Boost.Python would be the way to go if we were rebuilding from the ground-up. That way, the python module would be pre-compiled (i.e. faster) and we would have more control over its behavior. However, I am not interested in rebuilding from the ground up and therefore I am interested in using cppyy to "attach" our C++ objects to pythonic ones similar to how ROOT does it (versions > 6.18ish).
Plan
This is a drastic change to the Framework code-base, so I think this would necessarily be a long way off. Since this is also a big change in terms of user-interaction, we would need to be patient with merging anything like this in and potentially make a release separating our current method from this more pythonic one. For now, I am just collecting notes and links and maybe dipping my toe into the coding pool.
The text was updated successfully, but these errors were encountered: