I am using the license-expression library to feed it a large string of licenses from different package files to propose a derived package license. Unfortunately, this approach omits important licenses.
Let's consider the following example:
>>> from license_expression import get_spdx_licensing
>>> licensing = get_spdx_licensing()
>>> expression = "MIT AND BSD-3-Clause AND (MIT OR GPL-2.0-or-later OR (Apache-2.0 AND BSD-2-Clause)) AND MIT"
>>> parsed = licensing.parse(expression)
>>> str(parsed.simplify())
BSD-3-Clause AND MIT
>>> expression = "MIT AND BSD-3-Clause AND (MIT OR GPL-2.0-or-later OR Apache-2.0) AND MIT"
>>> parsed = licensing.parse(expression)
>>> str(parsed.simplify())
BSD-3-Clause AND MIT
As we can see, the whole OR sections have been removed, which would imply I already exercised a choice, which is not the case.
I am using the license-expression library to feed it a large string of licenses from different package files to propose a derived package license. Unfortunately, this approach omits important licenses.
Let's consider the following example:
As we can see, the whole OR sections have been removed, which would imply I already exercised a choice, which is not the case.