.

Release Notes: CODESYS Scripting 4.2.0.0

Key Issue Type Summary Resolution Note
SCRIPT-344 Bug

PLCOpenXML Import: First import all xml-files then start git-routine

Fixed
SCRIPT-327 Bug

manual_iec_address is not possible for outputs

Fixed
SCRIPT-319 Improvement

Add additional overload for find method to filter transient objects

Fixed [[GENERAL]]
In order to enable users to handle transient objects (ITransientObject) such as the call objects of an application's task, the following new methods have been added:
- The ScriptProject and ScriptObject classes have been extended with a new method "find_ignore_transient_objects(str name, bool recursive)", that provides the same functionality as "find(str name, bool recursive)", but without transient objects
- The ScriptProject class now has the method "finish_load_project()", that enforces otherwise lazy loaded contents to be loaded immediately. This often, but not always implies, that transient object be available afterwards.
- The ScriptObject class now offers the bool property "is_transient_object", that indicates, whether the object instance is a transient object or not.
SCRIPT-235 Bug

Documentation of IScriptDeviceDescription is misleading

Fixed
SCRIPT-231 Bug

Method create_pou("FuncName", PouType.Function) is documented and implemented badly

Fixed [[GENERAL]]
Both overloads of 'create_pou' are already correctly included in the PyStubs. But because of technical restrictions it is currently not possible to make both overloads available for the online help.
Therefore and for usability, there are now three new functions:
* create_function
* create_function_block
* create_program
All three of them only use the subset of parameters of 'create_pou' that each of them actually requires.
SCRIPT-214 Improvement

Remove outdated and redundant CHM-based Online Help from AddOn package

Fixed [[GENERAL]]
Old CHM-based online help is no longer part of the scripting package.
SCRIPT-212 Improvement

Create dedicated exception for invalid prompt_answers entries

Fixed [[COMPATIBILITY_INFORMATION]]
Added two new scripting exceptions:
* ScriptingInvalidPromptAnswersEntryException
→ will be thrown, if an entry of the dictionary 'system.prompt_answers' contains the wrong type or format
* ScriptingMissingPromptHandlingException
→ will be thrown, if neither 'ScriptPromptHandling.AlwaysForwardPrompts' is set nor 'ScriptPromptHandling.ForwardUnknownPrompts' is set nor the dictionary 'system.prompt_answers' contains a prompt handling for a 'select many' prompt with message key

Important:
* the missing 'select many' prompt handling is a breaking change compared to the behavior of CODESYS Scripting 4.1.0.0
→ it was necessary because the scripting add-on does not know the context of a prompt, so it is not possible to provide a reliable default selection, which may never cause trouble
→ additionally, the old behavior did not match the default behavior of the UI
SCRIPT-191 Improvement

open_archive: Add argument to choose categories

Fixed
SCRIPT-189 Bug

LibMan, Scripting: call of add_placeholder results in Namespace set to NOTIMPLEMENTEDBYDEVICE

Fixed
SCRIPT-187 Bug

[API-Docu] Python Stub files contain wrong variable name for LibManager

Fixed
SCRIPT-176 Bug

Method register_trusts_certificate must be removed

Fixed [[COMPATIBILITY_INFORMATION]]
The following functions are no longer supported:
* online.register_trusts_certificate
* online.unregister_trusts_certificate
* online.unregister_all_trusts_certificate
SCRIPT-164 Improvement

MsgSrv: MessageService / system.prompt_answers has no check for valid PromptResult

Won't Fix [[GENERAL]]
Won't fix: this improvement would cause a major incompatibility, which may result in failing automated processes. Therefore, and because the CODESYS Scripting functionality should only be an additional user interface, the prompt handling via scripting won't provide this additional check. Instead, the functionality causing the prompt has to check, if a given result is valid.
SCRIPT-154 Bug

export_doc fails for external objects if only path argument is provided

Fixed
SCRIPT-152 Bug

IScriptProject.check_all_pool_objects should be restricted to libraries

Fixed
SCRIPT-146 Bug

Set active_application is allowed for non-application objects

Fixed
SCRIPT-129 Bug

Scripting: Activate system.trace out of a script does not work

Cannot Reproduce
SCRIPT-128 Improvement

Scripting interface for project global defines

Fixed [[GENERAL]]
Scripts can now modify/query the project defines (project_settings contains project_defines) if the compilerversion is 3.5.20.0 or newer.
SCRIPT-127 Bug

Scripting: Error shown when canceling Execute Script

Fixed
SCRIPT-126 Bug

Scripting, Device: Read only parameters can be changed via Scripting API

Won't Fix [[GENERAL]]
Like in AP the scripting also allows parameters to be changed.
If necessary then evaluate the access flags in the script.
Therefore won't fix
SCRIPT-125 Bug

project.save() throws an exception if script is running with --noUI

Cannot Reproduce [[GENERAL]]
This problem has been fixed with COMM-641
SCRIPT-105 Bug

Scripting: project.find function returns different results

Won't Fix [[GENERAL]]
Won't fix:
The behavior is caused by transient objects. Because the time when transient objects are created is defined by the providing product, there is no global trigger when all transient objects are created.
For this specific issue SCRIPT-319 was created to provide the possibility to register an event handler for 'ProjectLoadFinished' which should be good enought for transient "Call" objects of tasks
SCRIPT-84 Bug

Scripting: Creating boot application fails if project is opened with relative path

Cannot Reproduce Cannot reproduce with CODESYS 3.5.22.0 CurDev 145
SCRIPT-80 Bug

Scripting: print(platform.python_version()) creates an parsing error

Won't Fix [[GENERAL]]
Won't fix:
This behavior is as designed, because we use platform.python_version to provide version information about CODESYS Scripting.

If the actual IronPython version is required, the workaround mentioned in the description can be used.
-> sys.version_info[:3]
SCRIPT-78 Improvement

LibMan: Scripting API to modify values of parameter lists

Won't Fix [[GENERAL]]
Won't fix, because the API to access the library parameters has been introduced with V3.5 SP19 whereas the Scripting addon uses SDK V3.5 SP17.
Additional with the version V4.2 of the Scripting addon a direct access to AutomationPlatform APIs will be possible, which allows to access the library parameters directly.
SCRIPT-75 Improvement

Scripting: Get and set the compiler version

Fixed [[GENERAL]]
There are two new interfaces that can be called directly by a python script:
1. projects.primary.project_settings.get_compilerversion()
Gets the current set compilerversion as string
2. projects.primary.project_settings.set_compilerversion_to_newest()
Sets the compilerversion to the newest available
SCRIPT-61 Bug

Phyton-Script: The option "Enable Script Tracing" leads to duplicate messages

Won't Fix [[GENERAL]]
Won't fix:
CODESYS Scripting registers its trace delegate exactly once and removes this trace delegate after the script execution as expected.
But the trace handler will be called twice with event "line" from within IronPython itself. So this is probably something like "line enter" and "line leave" and seems to be as designed.
Nevertheless, even if it is not as designed, it is a bug within IronPython and not a bug of CODESYS Scripting.
SCRIPT-57 Bug

ScriptEngine: Add library doesn't resolve library as unbound placeholder

Cannot Reproduce
SCRIPT-43 Improvement

Script Driver LibManObject: Add method to install missing libraries

Fixed [[GENERAL]]
New method download_missing_libraries is available on libmanobject.
SCRIPT-31 Bug

ScriptComparedObject has wrong property in documentation

Fixed
SCRIPT-23 Bug

ScriptEngine: is_external_file_object returns false for ScriptExternalFileObject

Fixed
SCRIPT-22 Improvement

ScriptEngine: is_external_file_object is not available for all IScriptObjects

Fixed