THIRD-PARTY SOFTWARE NOTICES
============================

Netcanon itself is distributed under the MIT License (see the bundled
LICENSE file).  The Windows desktop installer (MSI), built with cx_Freeze,
*redistributes* the third-party components listed below as compiled
binaries / bundled Python packages.  This file satisfies their attribution
requirement and, for the copyleft (LGPL) components, records the written
offer of source and the right to relink.

The PyPI wheel and the source distribution declare these only as
dependencies (resolved + downloaded by the user's own package manager) and
do not redistribute their binaries — this notice is primarily relevant to
the MSI.

How to read this file
---------------------
Each entry lists the component, its SPDX license identifier, the copyright
holder, and the canonical project URL.  The full, authoritative license
text for each component ships inside that component's own distribution
(e.g. the package's `LICENSE` / `LICENSE.txt`) and is available at the URL
shown; the well-known GNU license texts are published verbatim at
https://www.gnu.org/licenses/ (LGPL-3.0: lgpl-3.0.txt, LGPL-2.1:
lgpl-2.1.txt).  SPDX identifiers map to texts at https://spdx.org/licenses/.

Copyleft (LGPL) components — source offer + relink right
--------------------------------------------------------
For each LGPL component below, the corresponding source code (the exact
version bundled in this installer) is obtainable from its project URL or
from PyPI (`pip download <name>==<version>`).  You may modify and relink
that component with this application as permitted by its license.

* Qt for Python (PySide6) and the underlying Qt 6 libraries
  License: LGPL-3.0-only (also available under GPL / commercial terms)
  Copyright: The Qt Company Ltd. and Qt contributors
  Homepage: https://www.qt.io/qt-for-python  ·  https://www.qt.io/licensing

* paramiko (SSH transport used by the backup collectors)
  License: LGPL-2.1-or-later
  Copyright: Jeff Forcier and contributors
  Homepage: https://www.paramiko.org  ·  https://github.com/paramiko/paramiko

* scp (SCP transfer helper, pulled in transitively by netmiko)
  License: LGPL-2.1-or-later
  Copyright: James Bardin, Remi Rampin and contributors
  Homepage: https://github.com/jbardin/scp.py

* pystray (system-tray integration for the desktop shell)
  License: LGPL-3.0-or-later
  Copyright: Moses Palmér
  Homepage: https://github.com/moses-palmer/pystray

Permissive components (attribution)
-----------------------------------
* Pillow            — HPND (PIL/MIT-CMU style) — Jeffrey A. Clark and contributors — https://python-pillow.github.io
* FastAPI           — MIT            — Sebastián Ramírez — https://github.com/fastapi/fastapi
* Starlette         — BSD-3-Clause   — Encode OSS Ltd.   — https://www.starlette.io
* Uvicorn           — BSD-3-Clause   — Encode OSS Ltd.   — https://www.uvicorn.org
* Pydantic / pydantic-core — MIT     — Pydantic Services Inc. and contributors — https://docs.pydantic.dev
* Jinja2            — BSD-3-Clause   — Pallets           — https://palletsprojects.com/p/jinja/
* Netmiko           — MIT            — Kirk Byers         — https://github.com/ktbyers/netmiko
* PyYAML            — MIT            — Ingy döt Net, Kirill Simonov and contributors — https://pyyaml.org
* anyio             — MIT            — Alex Grönholm      — https://github.com/agronholm/anyio
* cryptography      — Apache-2.0 OR BSD-3-Clause — The cryptography developers — https://cryptography.io
* keyring           — MIT            — Jason R. Coombs    — https://github.com/jaraco/keyring
* defusedxml        — PSF-2.0        — Christian Heimes   — https://github.com/tiran/defusedxml
* CPython runtime   — PSF-2.0        — Python Software Foundation — https://www.python.org

Additional permissive components (direct + transitive deps redistributed in the MSI)
------------------------------------------------------------------------------------
Licenses below were read from the components' own installed package metadata.
* bcrypt            — Apache-2.0     — The Python Cryptographic Authority — https://github.com/pyca/bcrypt
* PyNaCl            — Apache-2.0     — The PyNaCl developers (PyCA) — https://github.com/pyca/pynacl
* cffi              — MIT            — Armin Rigo, Maciej Fijałkowski — https://github.com/python-cffi/cffi
* pycparser         — BSD-3-Clause   — Eli Bendersky — https://github.com/eliben/pycparser
* click             — BSD-3-Clause   — Pallets — https://palletsprojects.com/p/click/
* h11               — MIT            — Nathaniel J. Smith — https://github.com/python-hyper/h11
* MarkupSafe        — BSD-3-Clause   — Pallets — https://palletsprojects.com/p/markupsafe/
* annotated-types   — MIT            — Adrian Garcia Badaracco and contributors — https://github.com/annotated-types/annotated-types
* typing_extensions — PSF-2.0        — Python Software Foundation — https://github.com/python/typing_extensions
* idna              — BSD-3-Clause   — Kim Davies and contributors — https://github.com/kjd/idna
* textfsm           — Apache-2.0     — Google LLC — https://github.com/google/textfsm
* ntc-templates     — Apache-2.0     — Network to Code, LLC — https://github.com/networktocode/ntc-templates
* pyserial          — BSD-3-Clause   — Chris Liechti — https://github.com/pyserial/pyserial
* python-multipart  — Apache-2.0     — Andrew Dunham and contributors — https://github.com/Kludex/python-multipart
* python-dotenv     — BSD-3-Clause   — Saurabh Kumar and contributors — https://github.com/theskumar/python-dotenv
* six               — MIT            — Benjamin Peterson — https://github.com/benjaminp/six

Notes
-----
* Version ranges for each component are declared in `pyproject.toml`
  (`dependencies` + the `desktop` / `desktop-build` extras).  The exact
  versions bundled in a given MSI are those resolved at build time; run
  `pip freeze` in the build environment for the precise pin set.
* This is an attribution + source-offer notice.  If you require the full
  verbatim license texts bundled alongside the binaries, drop the
  upstream `LICENSE` files into a `licenses/` directory and add it to
  `setup_desktop.py`'s `include_files`; the URLs above are authoritative.
