Dependencies and distribution boundaries
The core has no mandatory third-party Python dependency. The declared build
and optional requirements are in pyproject.toml. Versions are not locked:
dependency licenses and binary payloads must be reviewed for each combined
application or installer that redistributes them.
| Group | Components | Terms |
|---|---|---|
| Optional rendering | Pillow; aggdraw, including AGG 2.0 | MIT-CMU/PIL-style permissive notices; AGG's specific notice |
| Optional arrays/compiler | NumPy; Numba; llvmlite; LLVM | BSD, additional bundled notices, Apache-2.0 with LLVM exception |
| Build and validation | setuptools, build, wheel, pytest, twine, packaging, PyYAML, tomli | MIT/BSD/Apache as applicable; preserve component notices if redistributing the tools themselves |
| Comparisons and font preparation | Matplotlib, fontTools, cycler, contourpy | Matplotlib's agreement; MIT; BSD. No runtime backend or vendored implementation |
| GUI/browser comparisons | Playwright/browser | Playwright Apache-2.0; browser terms vary. Not included in the wheel |
| Hosted CI | GitHub checkout/setup-python/upload-artifact actions; Xvfb/xauth | Separate CI tooling; no action implementation is shipped in Azimlib |
| Local history remediation | git-filter-repo 2.47.0 | MIT; external one-off tool, not vendored or required by Azimlib |
Relevant transitive packages
Packaging tools can install pyproject_hooks, requests, urllib3, charset-normalizer, idna, certifi, keyring, jaraco.classes/context/functools, more-itertools, rich, markdown-it-py, mdurl, nh3, Pygments, docutils, requests-toolbelt, rfc3986 and id. Comparators can install python-dateutil, six, pyparsing, kiwisolver and tornado. Conditional dependencies include SecretStorage, jeepney, cryptography, cffi, pycparser, importlib-metadata, zipp, pluggy, iniconfig and exceptiongroup.
Most use permissive MIT/BSD/Apache terms, but certifi is MPL-2.0. Some tool distributions include additional files: setuptools can include LGPL-licensed autocommand; Docutils includes separately licensed editor integration. Their presence in a build environment does not mean they are embedded in the wheel. Do not summarize the entire development environment as exclusively BSD/MIT.
Pillow binaries can include FreeType, HarfBuzz, Brotli, Little CMS, libavif, libjpeg-turbo, libpng, libwebp, OpenJPEG, TIFF, XZ and zlib-ng. NumPy binaries can include OpenBLAS, LAPACK and a GCC runtime under GPL with its runtime exception. Check complete bundled licenses and the exception for the exact binary shipped. Do not infer a license only from the top-level project's package metadata.
No package-level third-party license is replaced by Azimlib's BSD-3-Clause. Materials actually shipped by Azimlib are inventoried in THIRD_PARTY_LICENSES.
The observed development inventory records
versions, declared requirements and hashes of available installed license files.
It is evidence of that environment, not a lockfile or a license clearance for
future binaries. tools/inventory_dependency_licenses.py regenerates it without
publishing home-directory paths.
Geographic numeric comparison — development only
Stage3 uses an isolated pyproj 3.8.0/GeographicLib 2.1 environment exclusively as black-box numerical oracles. Neither package is imported by runtime or required by tests; no source code or upstream test dataset is vendored. Recorded numeric outputs and versions are in the core guide. These tools are not included in wheel/sdist or package requirements. Redistributing an oracle environment would require reviewing its own licenses and binary dependencies.
Optional UI integration in 0.3 development
The qt extra requires Pillow and PySide6-Essentials >=6.5; shiboken6 is its
binding dependency. Local 6.11.2 metadata declares LGPL-3.0-only OR GPL-2.0-only
OR GPL-3.0-only; Qt's proprietary commercial route is separate. Only QtCore,
QtGui and QtWidgets are used. Code/binaries/modules/licenses from this dependency
are not bundled into Azimlib's wheel/sdist. A frozen or combined application that
redistributes Qt must comply with its chosen license and the exact binary's
third-party terms; declaring the application BSD does not cancel those duties.
See material boundaries.
The notebook extra uses IPython >=8, public display_id/update and post_run_cell
hooks. IPython 9.17.1 has BSD-3-Clause metadata. Its transitive traitlets and
prompt_toolkit retain BSD notices; jedi/parso retain MIT; Pygments BSD-2-Clause;
asttokens, executing, pure-eval, decorator, stack-data, wcwidth, colorama/pexpect
and conditional typing/exception packages must be reviewed at their resolved
versions when bundling. None are vendored. Both extras are absent from core
installation/imports. Stdlib HTTP/threading/JSON supply the local live bridge.
Node is a development-only executable for the own client-protocol fixture.
The observed optional dependency closure records actual Windows versions, declared requirements and license-file hashes for the two new extras. It is not a lockfile or permission to redistribute an entire Qt binary installation without reviewing its complete notices.
Optional development PDF check
tools/audit_atlas_pdf.py may use a separately installed pypdf (BSD-3-Clause)
for an independent strict read of page trees/content streams/font attachments.
Poppler (GPL terms for its exact build) may render development previews outside
the project. Neither pypdf nor Poppler is required, embedded or invoked by the
Azimlib runtime/PDF writer, and neither binary/implementation is distributed in
Python archives. Their own licenses remain applicable if they are redistributed.
The writer and generated gallery are independently produced by Azimlib; a reader
check does not import/reproduce the reader's implementation into the project.
Optional documentation build
The docs extra installs markdown-it-py (MIT) and mdurl (MIT) as a generic
Markdown parser for the original static documentation builder. They are not
vendored, copied into the HTML, required by map runtime or bundled in wheel/sdist.
Resolved license files must be preserved if redistributing those packages.