The future of incendium

Hello community,

We come to you with, what we consider, an important announcement regarding the future of the incendium project (Ignition Exchange, GitHub).

Starting with version 2024.4.0 (if we manage to ship it before April 30, 2024) we will only distribute it as a [J/P]ython package, meaning you will be able to install it via python2 -m pip install as a dependency to your scripting projects, and via jython -m pip install if you'd like to install it under IGNITION_HOME/user-lib/pylib/site-packages (Ref: Using pip from the Python In Ignition article)

We also intend to refactor the incendium.util module and find a better place for most of the functions, except two which are getting the axe: get_timer and get_timestamp.

Pros:

  • We will reduce maintainer burnout, so instead of maintaining three repos (incendium, project and stubs), we will only support and continue development on two.
  • incendium will be pip-installable on Jython and Python 2.7.
  • We will add the following modules: gui[1], and l10n as a result from refactoring the util module.
  • We will add the following classes under incendium.exceptions: Error, GatewayError, JavaError, and MSSQLError[2].

Cons:

  • You will lose code completion on the Designer and Script Console until Inductive Automation enables code analysis on third-party Python libraries[3].
  • We're removing incendium.util.get_timer and incendium.util.get_timestamp.

Stay tuned for more.


  1. Why incendium.gui if we already have incendium.vision.gui? Because we intend to add incendium.perspective.gui in the future. ↩︎

  2. If you'd like to do the same for MariaDB, MySQL, Oracle, PostgreSQL, and SQLite, you may create your own class and inherit from JavaError and create a PR while you're at it. ↩︎

  3. Learn more here: Coming in 8.1.18: Script editor improvements ↩︎

2 Likes

Announcing the release of incendium 2024.5.0, we were not able to release it before May 1, but that's all right.

v2024.5.0 (2024-05-01)

BREAKING CHANGE

  • deprecate incendium.util module

Refactor

  • util: move functions out of util (#199)

With some minor corrections on our previous announcements.

We did not get rid of get_timer and get_timestamp. These can still be used, with a workaround if you're calling them from an Expression Function. You may find code examples on our Wiki.

Installation

NOTE: You may use Python 2.7.18 or Jython 2.7.3.

pip-install incendium:

$ jython -m pip install incendium
DEPRECATION: A future version of pip will drop support for Python 2.7.
Collecting incendium
  Downloading https://files.pythonhosted.org/packages/b5/dc/4765f1f7cbfc163c305e428007a03a7ccfc03bba9ca02bdb7a4aca23f6be/incendium-2024.5.0-py2-none-any.whl
Collecting typing; platform_python_implementation == "Jython" (from incendium)
  Downloading https://files.pythonhosted.org/packages/0b/cb/da856e81731833b94da70a08712f658416266a5fb2a9d9e426c8061becef/typing-3.10.0.0-py2-none-any.whl
Installing collected packages: typing, incendium
Successfully installed incendium-2024.5.0 typing-3.10.0.0
WARNING: You are using pip version 19.1, however version 20.3.4 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

Then, copy the incendium directory and typing.py to $IGNITION/user-lib/pylib:

$ cp ~/.pyenv/versions/jython-2.7.3/Lib/site-packages/typing.py /opt/homebrew/opt/ignition/libexec/user-lib/pylib/site-packages

$ cp -r ~/.pyenv/versions/jython-2.7.3/Lib/site-packages/incendium /opt/homebrew/opt/ignition/libexec/user-lib/pylib/site-packages

Verify installation:

$ ls -alF /opt/homebrew/opt/ignition/libexec/user-lib/pylib/site-packages 
total 176
drwxr-xr-x    5 cesarcoatl  admin    160 May  1 08:21 ./
drwxr-xr-x  252 cesarcoatl  admin   8064 Apr 25 13:57 ../
-rw-r--r--    1 cesarcoatl  admin    119 Apr  9 10:15 README
drwxr-xr-x   32 cesarcoatl  admin   1024 May  1 08:21 incendium/
-rw-r--r--    1 cesarcoatl  admin  84492 May  1 08:21 typing.py

If you don' want to use Jython, you may still install incendium with Python 2.7.18, please note that we do install additional depencendies like enum34==1.1.10, ignition-api>=8.1 and typing==3.10.0.0, just note that ignition-api does not belong under $IGNITION/user-lib/pylib/site-packages, it is only intended for code completion when coding on your IDE of choice.

If you're already a user, upgrade to the latest version at your own convenience. If you're not yet a user, feel free to drop it on your Ignition Gateway, this works for both Standard and Edge editions.

Thanks for reading, and happy coding!

The coatl.dev Team


Links of interest: