Validates and canonicalizes PEP 639-compatible SPDX license expressions.
The parser embeds SPDX License List 3.28.0, rejects deprecated identifiers, and limits input to 65,536 bytes and 128 parenthesis levels. It validates syntax and identifiers; it does not determine legal compatibility or organizational license policy.
Summary
Functions
Validates and canonicalizes an SPDX license expression.
Validates and canonicalizes an expression, raising on invalid input.
Returns the embedded SPDX License List version.
Returns whether a term is a supported, non-deprecated SPDX expression.
Functions
@spec canonicalize(term()) :: {:ok, String.t()} | {:error, SpdxExpression.Error.t()}
Validates and canonicalizes an SPDX license expression.
Examples
iex> SpdxExpression.canonicalize("mit and (apache-2.0 or bsd-2-clause)")
{:ok, "MIT AND (Apache-2.0 OR BSD-2-Clause)"}
iex> {:error, error} = SpdxExpression.canonicalize("Unknown-License")
iex> error.kind
:unknown_license
Validates and canonicalizes an expression, raising on invalid input.
Examples
iex> SpdxExpression.canonicalize!("mit")
"MIT"
@spec license_list_version() :: String.t()
Returns the embedded SPDX License List version.
Examples
iex> SpdxExpression.license_list_version()
"3.28.0"
Returns whether a term is a supported, non-deprecated SPDX expression.
Examples
iex> SpdxExpression.valid?("MIT OR Apache-2.0")
true
iex> SpdxExpression.valid?("Unknown-License")
false