I use a commercial software called Petrel. Petrel has a software development kit (SDK) that allows the user to develop plugins in C#/.NET via the Ocean core API.
At our offices, we have installed a plugin called the Python Tool-Kit that allows the user to access and use data items in Petrel and run calculations using Python scripts. The Python Tool is an API consisting of a small number of classes allowing you to read and write values from select types of Petrel objects. This plugin would have to have been written in C#/.NET.
The downside to the Python API, is that it has not been developed very far and is not able to access very many different data objects.
I am wondering, how would you go about creating a tool like this? I would like to create my own copy of this Python Tool, but implement additional classes to access other data objects, since the tool is fairly limited as-is.
So I guess my question is: How do you create an API that gives Python the ability to access these Petrel data objects? I guess you have to write C# code to get at the Petrel objects... But then how do you make those available to Python?