Customizing
Version 27 Version 26 39.5.25 39.5.23 39.5.22 39.5.21 39.5.20 39.5.19 39.5.18 39.5.17 German English
Version 27 Version 26 39.5.25 39.5.23 39.5.22 39.5.21 39.5.20 39.5.19 39.5.18 39.5.17 German English

IronPython API

Die nachfolgenden Inhalte sind nur in englischer Sprache verfügbar.

Details

  • A detailed description of the API is located in the client's help folder (%client_folder%\help).

  • If you have trouble opening the file, see the hints below.

  • Another version can be found here: Iron_python_API_C39521.chm

How to

  • To access the documentation, download the file mentioned above.

  • Right-click on the file and select properties.

  • Click on Unblock and then on Apply.

Please note

  • We only support the methods listed in the appropriate IronPythonAPI.

  • Every Client function that is used via IronPython but which is not part of the official API may not work anymore after a Client update.

Various Know-how

Embedding IronPython code in a module

How to

  • Select a DA in your module

  • Insert a new DF with ID 004336 and change DF-Verhalten to py

  • Close the DA and reopen it

  • Expand the DI and paste your code into IronPython Skript

  • Save and start the module

  • Add the following code at the top:

    # coding: latin-1"
    


  • Code that looks like this in C#:

    GetValue<T>()
    


  • Will look like this in IronPython:

    GetValue[T]()
    


Note

  • Keep in mind that in C#, Visual Basic, and Visual C++ it is "String" but in Python it is "str"

  • Due to the IronPython bug, the indexers of the generic .NET collections will not work if a first access to them was not correct (for example the indexer requires int but you put a string value). So explicitly use the attribute getitem instead of [] or please make sure that indexers are used correctly.

Reload modules on local client without client restart

Information

  • In order to apply code changes without a client restart being necessary, use the following guideline.

How to

  • Insert the following code prior to the import statement of the target module:

    sys.modules.Remove("MyModule")
    


  • After the statement above, place your unchanged import statement:

    from MyModule import MyModule
    


  • The conditions for your AddReference-statement stays the same as before - it needs to stay prior to your import statement but it can stay before or after the statement of step 1.

Remembering data across multiple modules

  • Data can be stored somewhere in the __builtins__ dictionary

  • Unlike the server, each Client has its own IronPython interpreter, so everyone has their own copy of __builtins__

Stop

  • Do not use __builtins__ when calling server code, for example with server_execute()

Useful snippets

Method

Parameter

Return value

Comment

df


Returns the DF the IronPython script was executed from


Getting the value of a DI that is in the same DA as the IronPython macro:


df.DataArea.ChildrenDF[df.DataArea.Customizing.get_df_by_name(DF-Python-ID)].GetValue[T]()

Microsoft .NET Framework