iglint
Copyright (c) 2026 Mustry Solutions and iglint contributors

Licensed under either of the Apache License, Version 2.0 (LICENSE-APACHE) or
the MIT License (LICENSE-MIT), at your option.

iglint is not affiliated with or endorsed by Inductive Automation. Ignition
and Perspective are trademarks of Inductive Automation, LLC.

Third-party material
====================

ign-lint (ignition-lint)
------------------------
https://github.com/bw-design-group/ignition-lint, MIT License,
Copyright (c) 2024 Eric Knorr.

* crates/iglint_linter/tests/fixtures/ign-lint/cases/: test views copied
  unchanged from ign-lint v0.6.4 (tag v0.6.4, commit dace01d). The licence
  and attribution are in crates/iglint_linter/tests/fixtures/ign-lint/LICENSE.
  The expected*.json files next to them are outputs of running ign-lint 0.6.4
  on those views.
* crates/iglint_linter/src/rules/script/pylint/ignition-pylintrc: the pylint
  configuration bundled with ign-lint 0.6.4, with four messages added to
  `disable`. It is compiled into the iglint binary as the default
  configuration of rule SCR900. The licence is reproduced in the file header.
* docs/compat/: a description of ign-lint's observable behaviour, written for
  iglint from running ign-lint 0.6.4. It contains no ign-lint source code.

ignition-api (ignition-devs)
----------------------------
https://github.com/ignition-devs/ignition-api, MIT License.

* stubs-gen/CROSSCHECK.md is a report produced by stubs-gen/crosscheck.py. It
  compares function names, argument counts and keyword names of the
  `system.*` API generated by iglint with the type stubs of ignition-api
  (branch 8.3, commit 0a4d80dc90714cb0125c9af8cbc5ae392cfc008b). It lists
  names and counts only; no stub files or documentation text are copied.
* No data in crates/iglint_stubs comes from ignition-api.

Ignition 8.3.3 (Inductive Automation)
-------------------------------------
crates/iglint_stubs/data/*.json and crates/iglint_stubs/src/generated.rs hold
facts about the Ignition 8.3.3 scripting API, expression functions and
Perspective component types (names, scopes, parameter names, types, arities,
deprecations with their replacement, constant values, property structure with
small defaults). They were recorded by introspecting
a gateway started from the public `inductiveautomation/ignition:8.3.3` Docker
image (stubs-gen/run.sh). Descriptions, titles, examples, deprecation messages and
sample content are dropped during normalisation (stubs-gen/normalize.py).

Oracle expectations (crates/*/tests/oracle/) are outputs of the Jython parser,
the expression parser and the tag path parser shipped in that image, recorded
for inputs that are hand-written or generated from seeds.

Unicode Character Database
--------------------------
crates/iglint_python/src/unicode_names/table.bin and table.rs hold the
Unicode character names (with their code points) that `\N{...}` escapes
accept, and the characters that Java accepts as hexadecimal digits. They are
re-encoded by oracle/generate-unicode-names.sh from ucnhash.dat, the name
table of the Jython 2.7.3 jar in the Ignition 8.3.3 image (Jython, Python
Software Foundation License Version 2), which is derived from UnicodeData.txt
of the Unicode Character Database, version 9.0.0. Unicode data is provided
under the following licence (https://www.unicode.org/license.txt):

    UNICODE LICENSE V3

    COPYRIGHT AND PERMISSION NOTICE

    Copyright © 1991-2016 Unicode, Inc.

    NOTICE TO USER: Carefully read the following legal agreement. BY
    DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
    SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
    TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
    DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.

    Permission is hereby granted, free of charge, to any person obtaining a
    copy of data files and any associated documentation (the "Data Files") or
    software and any associated documentation (the "Software") to deal in the
    Data Files or Software without restriction, including without limitation
    the rights to use, copy, modify, merge, publish, distribute, and/or sell
    copies of the Data Files or Software, and to permit persons to whom the
    Data Files or Software are furnished to do so, provided that either (a)
    this copyright and permission notice appear with all copies of the Data
    Files or Software, or (b) this copyright and permission notice appear in
    associated Documentation.

    THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
    KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
    THIRD PARTY RIGHTS.

    IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
    BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
    OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
    WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
    ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
    FILES OR SOFTWARE.

    Except as contained in this notice, the name of a copyright holder shall
    not be used in advertising or otherwise to promote the sale, use or other
    dealings in these Data Files or Software without prior written
    authorization of the copyright holder.
