#!/usr/bin/env bash set -euo pipefail # Allowed license families (partial-match against the License metadata field). # Covers the standard permissive + weak-copyleft licenses the project accepts. # Build the semicolon-separated allowlist for --partial-match. # Each entry is matched as a case-insensitive substring against the package's # License metadata field. Order does not matter. ALLOWED="Apache;\ BSD;\ MIT;\ ISC;\ MPL;\ Mozilla;\ LGPL;\ GNU Lesser General Public License;\ GNU Library or Lesser General Public License;\ GNU General Public License v2;\ PSF;\ Python Software Foundation;\ Unlicense;\ HPND;\ Historical Permission Notice and Disclaimer;\ CNRI-Python;\ Python-2.0" # Packages whose license metadata is missing, non-standard, or proprietary but # known-good for this project. Each has been manually verified against the # upstream source repository. IGNORED_PACKAGES=( # Metadata missing -- verified permissive on GitHub arro3-core # MIT / Apache-2.0 (geoarrow/geoarrow-rs) chroma-hnswlib # Apache-2.0 (chroma-core/hnswlib) google-crc32c # Apache-2.0 (googleapis/python-crc32c) iopath # MIT (facebookresearch/iopath) pypdfium2 # BSD-3-Clause (PDFium/PDFium) sentencepiece # Apache-2.0 (google/sentencepiece) voyageai # MIT (voyage-ai/voyageai-python) matplotlib-inline # BSD 3-Clause (ipython/matplotlib-inline) # Permissive but non-standard classifier lmdb # OpenLDAP Public License (BSD-style, jnwatson/py-lmdb) pykx # KDB+ proprietary (KxSystems/pykx, transitive dep of kdbai-client) # NVIDIA CUDA runtime libs (proprietary, torch transitive dependencies) cuda-bindings nvidia-cublas-cu12 nvidia-cuda-cupti-cu12 nvidia-cuda-nvrtc-cu12 nvidia-cuda-runtime-cu12 nvidia-cudnn-cu12 nvidia-cufft-cu12 nvidia-cufile-cu12 nvidia-curand-cu12 nvidia-cusolver-cu12 nvidia-cusparse-cu12 nvidia-cusparselt-cu12 nvidia-nccl-cu12 nvidia-nvjitlink-cu12 nvidia-nvshmem-cu12 nvidia-nvtx-cu12 ) echo "Checking licenses for installed packages..." uv run pip-licenses \ --partial-match \ --allow-only="$ALLOWED" \ --ignore-packages "${IGNORED_PACKAGES[@]}" EXIT_CODE=$? if [ "$EXIT_CODE" -eq 0 ]; then echo "All dependencies have authorized licenses." else echo "There are dependencies with unauthorized or unknown licenses." exit 1 fi