Limits of Python Script inside of Ignition

Hi
Is there a Maximum number of rows ( or other limits to know) with python script?
I created a script inside a button in the event of “actionperformed” ( 1055 rows) , everything worked correctly, but after a small modification, I cannot save anymore the script.

I have always the following Java error:
anyone can give me a suggestion
Thank you very much!

Andrea

[i]
Parse error for event handler “actionPerformed”
java.lang.NullPointerException

at org.python.objectweb.asm.MethodWriter.b(Unknown Source)

at org.python.objectweb.asm.MethodWriter.d(Unknown Source)

at org.python.objectweb.asm.MethodWriter.a(Unknown Source)

at org.python.objectweb.asm.ClassWriter.toByteArray(Unknown Source)

at org.python.compiler.ClassFile.write(ClassFile.java:124)

at org.python.compiler.Module.write(Module.java:613)

at org.python.compiler.Module.compile(Module.java:669)

at org.python.compiler.Module.compile(Module.java:648)

at org.python.compiler.LegacyCompiler$LazyLegacyBundle.ostream(LegacyCompiler.java:64)

at org.python.compiler.LegacyCompiler$LazyLegacyBundle.saveCode(LegacyCompiler.java:58)

at org.python.core.CompilerFacade.compile(CompilerFacade.java:33)

at org.python.core.Py.compile_flags(Py.java:1717)

at org.python.core.Py.compile_flags(Py.java:1722)

at org.python.core.Py.compile_flags(Py.java:1752)

at com.inductiveautomation.factorypmi.designer.eventhandling.ComponentScriptEditor.applyChanges(ComponentScriptEditor.java:518)

at com.inductiveautomation.factorypmi.designer.eventhandling.ComponentScriptEditor.access$600(ComponentScriptEditor.java:87)

at com.inductiveautomation.factorypmi.designer.eventhandling.ComponentScriptEditor$5.actionPerformed(ComponentScriptEditor.java:342)

at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)

at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.setPressed(Unknown Source)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)

at java.awt.Component.processMouseEvent(Unknown Source)

at javax.swing.JComponent.processMouseEvent(Unknown Source)

at java.awt.Component.processEvent(Unknown Source)

at java.awt.Container.processEvent(Unknown Source)

at java.awt.Component.dispatchEventImpl(Unknown Source)

at java.awt.Container.dispatchEventImpl(Unknown Source)

at java.awt.Component.dispatchEvent(Unknown Source)

at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)

at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)

at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)

at java.awt.Container.dispatchEventImpl(Unknown Source)

at java.awt.Window.dispatchEventImpl(Unknown Source)

at java.awt.Component.dispatchEvent(Unknown Source)

at java.awt.EventQueue.dispatchEventImpl(Unknown Source)

at java.awt.EventQueue.access$500(Unknown Source)

at java.awt.EventQueue$3.run(Unknown Source)

at java.awt.EventQueue$3.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)

at java.awt.EventQueue$4.run(Unknown Source)

at java.awt.EventQueue$4.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)

at java.awt.EventQueue.dispatchEvent(Unknown Source)

at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.run(Unknown Source)

java.lang.NullPointerException: java.lang.NullPointerExceptio[/i]

Hmmm. I’ve never run across such a limit, but your stacktrace suggests a limit on the bytes of the compiled code (not the number of lines). I don’t let event scripts get beyond a couple dozen lines, though, before I move the code to a project script. Project scripts are much easier to maintain, and the functions can be re-used more easily.

I don’t know if this is your case, but I see this limitation, from one time that I try to import a third party python library (that it’s not jython compatible).

Apparently, it’s a jython issue, related to a JVM limitation. Any java compiled class must be lower than 64 Kb.

More info in: bugs.jython.org/issue527524

Regards,

Hi

Thank you very much for the your replies

Andrea