From 7e95a9066072f0027f979dafa9155ea7bef690d5 Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Mon, 7 Jul 2025 13:32:42 +0200 Subject: [PATCH 01/49] feat: finalize PEP639 Signed-off-by: Jan Kowalleck --- cyclonedx_py/_internal/cli_common.py | 3 +- cyclonedx_py/_internal/environment.py | 46 +++++++------------ cyclonedx_py/_internal/pipenv.py | 2 +- cyclonedx_py/_internal/requirements.py | 2 +- cyclonedx_py/_internal/utils/cdx.py | 25 +++++++--- cyclonedx_py/_internal/utils/packaging.py | 5 +- cyclonedx_py/_internal/utils/pep621.py | 16 ++++--- cyclonedx_py/_internal/utils/pep639.py | 41 ++++++++++++++--- cyclonedx_py/_internal/utils/poetry.py | 28 +++++------ cyclonedx_py/_internal/utils/pyproject.py | 37 ++++++++++++--- .../with-license-pep639/AUTHORS.example | 1 + .../with-license-pep639/LICENCE.dummy | 1 + .../with-license-pep639/LICENSE.txt | 1 + .../licenses_a/LICENSE.CC0 | 1 + .../licenses_a/LICENSE.MIT | 1 + .../with-license-pep639/licenses_b/LICENSE.md | 1 + .../with-license-pep639/pyproject.toml | 18 ++++++++ 17 files changed, 152 insertions(+), 77 deletions(-) create mode 100644 tests/_data/infiles/environment/with-license-pep639/AUTHORS.example create mode 100644 tests/_data/infiles/environment/with-license-pep639/LICENCE.dummy create mode 100644 tests/_data/infiles/environment/with-license-pep639/LICENSE.txt create mode 100644 tests/_data/infiles/environment/with-license-pep639/licenses_a/LICENSE.CC0 create mode 100644 tests/_data/infiles/environment/with-license-pep639/licenses_a/LICENSE.MIT create mode 100644 tests/_data/infiles/environment/with-license-pep639/licenses_b/LICENSE.md diff --git a/cyclonedx_py/_internal/cli_common.py b/cyclonedx_py/_internal/cli_common.py index 5daef3084..be7455ebb 100644 --- a/cyclonedx_py/_internal/cli_common.py +++ b/cyclonedx_py/_internal/cli_common.py @@ -30,8 +30,7 @@ def add_argument_pyproject(p: 'ArgumentParser') -> 'Action': return p.add_argument('--pyproject', metavar='', help="Path to the root component's `pyproject.toml` file. " - 'This should point to a file compliant with PEP 621 ' - '(storing project metadata).', + 'This should point to a file compliant with PEP 621 (storing project metadata).', dest='pyproject_file', default=None) diff --git a/cyclonedx_py/_internal/environment.py b/cyclonedx_py/_internal/environment.py index 81a5e64d2..876ee40e2 100644 --- a/cyclonedx_py/_internal/environment.py +++ b/cyclonedx_py/_internal/environment.py @@ -27,21 +27,18 @@ from textwrap import dedent from typing import TYPE_CHECKING, Any, Optional +from cyclonedx.factory.license import LicenseFactory from cyclonedx.model import Property -from cyclonedx.model.component import ( # type:ignore[attr-defined] # ComponentEvidence was moved, but is still importable - ignore/wont-fix for backwards compatibility # noqa:E501 - Component, - ComponentEvidence, - ComponentType, -) +from cyclonedx.model.component import Component, ComponentType from packageurl import PackageURL from packaging.requirements import Requirement from . import BomBuilder, PropertyName, PurlTypePypi from .cli_common import add_argument_mc_type, add_argument_pyproject -from .utils.cdx import find_LicenseExpression, licenses_fixup, make_bom +from .utils.cdx import licenses_fixup, make_bom from .utils.packaging import metadata2extrefs, metadata2licenses, normalize_packagename from .utils.pep610 import PackageSourceArchive, PackageSourceVcs, packagesource2extref, packagesource4dist -from .utils.pep639 import dist2licenses as dist2licenses_pep639 +from .utils.pep639 import dist2licenses as pep639_dist2licenses from .utils.pyproject import pyproject2component, pyproject2dependencies, pyproject_load if TYPE_CHECKING: # pragma: no cover @@ -114,12 +111,6 @@ def make_argument_parser(**kwargs: Any) -> 'ArgumentParser': • Build an SBOM from uv environment: $ %(prog)s "$(uv python find)" """) - p.add_argument('--PEP-639', - action='store_true', - dest='pep639', - help='Enable license gathering according to PEP 639 ' - '(improving license clarity with better package metadata).\n' - 'The behavior may change during the draft development of the PEP.') p.add_argument('--gather-license-texts', action='store_true', dest='gather_license_texts', @@ -156,7 +147,7 @@ def __call__(self, *, # type:ignore[override] rc = None else: pyproject = pyproject_load(pyproject_file) - root_c = pyproject2component(pyproject, ctype=mc_type, fpath=pyproject_file) + root_c = pyproject2component(pyproject, ctype=mc_type, fpath=pyproject_file, gather_license_texts=False) root_c.bom_ref.value = 'root-component' root_d = tuple(pyproject2dependencies(pyproject)) rc = (root_c, root_d) @@ -189,25 +180,20 @@ def __add_components(self, bom: 'Bom', name=dist_name, version=dist_version, description=dist_meta['Summary'] if 'Summary' in dist_meta else None, - licenses=licenses_fixup(metadata2licenses(dist_meta)), external_references=metadata2extrefs(dist_meta), # path of dist-package on disc? naaa... a package may have multiple files/folders on disc ) - if self._pep639: - pep639_licenses = list(dist2licenses_pep639(dist, self._gather_license_texts, self._logger)) - pep639_lexp = find_LicenseExpression(pep639_licenses) - if pep639_lexp is not None: - component.licenses = (pep639_lexp,) - pep639_licenses.remove(pep639_lexp) - if len(pep639_licenses) > 0: - if find_LicenseExpression(component.licenses) is None: - component.licenses.update(pep639_licenses) - else: - # hack for preventing expressions AND named licenses. - # see https://github.com/CycloneDX/cyclonedx-python/issues/826 - # see https://github.com/CycloneDX/specification/issues/454 - component.evidence = ComponentEvidence(licenses=pep639_licenses) - del pep639_lexp, pep639_licenses + + # region licenses + lfac = LicenseFactory() + component.licenses.update(pep639_dist2licenses(dist, lfac, self._gather_license_texts, self._logger)) + if len(component.licenses) == 0: + # According to PEP 639 spec, if licenses are declared in the "new" style, + # all other license declarations MUST be ignored. + # https://peps.python.org/pep-0639/#converting-legacy-metadata + component.licenses.update(metadata2licenses(dist_meta, lfac)) + licenses_fixup(component) + # endregion licenses del dist_meta, dist_name, dist_version self.__component_add_extref_and_purl(component, packagesource4dist(dist)) diff --git a/cyclonedx_py/_internal/pipenv.py b/cyclonedx_py/_internal/pipenv.py index 6cbf1c564..ba644ccc8 100644 --- a/cyclonedx_py/_internal/pipenv.py +++ b/cyclonedx_py/_internal/pipenv.py @@ -132,7 +132,7 @@ def __call__(self, *, # type:ignore[override] if pyproject_file is None: rc = None else: - rc = pyproject_file2component(pyproject_file, ctype=mc_type) + rc = pyproject_file2component(pyproject_file, ctype=mc_type, gather_license_texts=False) rc.bom_ref.value = 'root-component' return self._make_bom(rc, diff --git a/cyclonedx_py/_internal/requirements.py b/cyclonedx_py/_internal/requirements.py index 0e770c9bd..369680c9f 100644 --- a/cyclonedx_py/_internal/requirements.py +++ b/cyclonedx_py/_internal/requirements.py @@ -116,7 +116,7 @@ def __call__(self, *, # type:ignore[override] if pyproject_file is None: rc = None else: - rc = pyproject_file2component(pyproject_file, ctype=mc_type) + rc = pyproject_file2component(pyproject_file, ctype=mc_type, gather_license_texts=False) rc.bom_ref.value = 'root-component' if requirements_file == '-': diff --git a/cyclonedx_py/_internal/utils/cdx.py b/cyclonedx_py/_internal/utils/cdx.py index b5100c6c8..9aff7b4b8 100644 --- a/cyclonedx_py/_internal/utils/cdx.py +++ b/cyclonedx_py/_internal/utils/cdx.py @@ -27,7 +27,11 @@ from cyclonedx.builder.this import this_component as lib_component from cyclonedx.model import ExternalReference, ExternalReferenceType, XsUri from cyclonedx.model.bom import Bom -from cyclonedx.model.component import Component, ComponentType +from cyclonedx.model.component import ( # type:ignore[attr-defined] # ComponentEvidence was moved, but is still importable - ignore/wont-fix for backwards compatibility # noqa:E501 + Component, + ComponentEvidence, + ComponentType, +) from cyclonedx.model.license import DisjunctiveLicense, License, LicenseAcknowledgement, LicenseExpression from ... import __version__ as _THIS_VERSION # noqa:N812 @@ -95,11 +99,20 @@ def find_LicenseExpression(licenses: Iterable['License']) -> Optional[LicenseExp return None -def licenses_fixup(licenses: Iterable['License']) -> Iterable['License']: - licenses = set(licenses) - if (lexp := find_LicenseExpression(licenses)) is not None: - return (lexp,) - return licenses +def licenses_fixup(component: 'Component') -> None: + """ + Per CycloneDX spec, there must be EITHER one license expression OR multiple license id/name. + If there is an expression, it is used and everything else is moved to evidences, so it is not lost. + """ + licenses = list(component.licenses) + lexp = find_LicenseExpression(licenses) + if lexp is None: + return + component.licenses = (lexp,) + licenses.remove(lexp) + if component.evidence is None: + component.evidence = ComponentEvidence() + component.evidence.licenses.update(licenses) _MAP_KNOWN_URL_LABELS: dict[str, ExternalReferenceType] = { diff --git a/cyclonedx_py/_internal/utils/packaging.py b/cyclonedx_py/_internal/utils/packaging.py index 5b664bb3e..723d31e54 100644 --- a/cyclonedx_py/_internal/utils/packaging.py +++ b/cyclonedx_py/_internal/utils/packaging.py @@ -20,7 +20,6 @@ from typing import TYPE_CHECKING from cyclonedx.exception.model import InvalidUriException -from cyclonedx.factory.license import LicenseFactory from cyclonedx.model import AttachedText, ExternalReference, ExternalReferenceType, XsUri from cyclonedx.model.license import DisjunctiveLicense, LicenseAcknowledgement @@ -30,6 +29,7 @@ if TYPE_CHECKING: # pragma: no cover import sys + from cyclonedx.factory.license import LicenseFactory from cyclonedx.model.license import License if sys.version_info >= (3, 10): @@ -38,8 +38,7 @@ from email.message import Message as PackageMetadata -def metadata2licenses(metadata: 'PackageMetadata') -> Generator['License', None, None]: - lfac = LicenseFactory() +def metadata2licenses(metadata: 'PackageMetadata', lfac: 'LicenseFactory') -> Generator['License', None, None]: lack = LicenseAcknowledgement.DECLARED if 'Classifier' in metadata: # see spec: https://packaging.python.org/en/latest/specifications/core-metadata/#classifier-multiple-use diff --git a/cyclonedx_py/_internal/utils/pep621.py b/cyclonedx_py/_internal/utils/pep621.py index cfb3ac979..1f1c6cbf4 100644 --- a/cyclonedx_py/_internal/utils/pep621.py +++ b/cyclonedx_py/_internal/utils/pep621.py @@ -29,16 +29,16 @@ from typing import TYPE_CHECKING, Any from cyclonedx.exception.model import InvalidUriException -from cyclonedx.factory.license import LicenseFactory from cyclonedx.model import AttachedText, Encoding, ExternalReference, XsUri from cyclonedx.model.component import Component from cyclonedx.model.license import DisjunctiveLicense, LicenseAcknowledgement from packaging.requirements import Requirement -from .cdx import licenses_fixup, url_label_to_ert +from .cdx import url_label_to_ert from .license_trove_classifier import is_license_trove, license_trove2spdx if TYPE_CHECKING: + from cyclonedx.factory.license import LicenseFactory from cyclonedx.model.component import ComponentType from cyclonedx.model.license import License @@ -52,7 +52,8 @@ def classifiers2licenses(classifiers: Iterable[str], lfac: 'LicenseFactory', license_acknowledgement=lack) -def project2licenses(project: dict[str, Any], lfac: 'LicenseFactory', *, +def project2licenses(project: dict[str, Any], lfac: 'LicenseFactory', + gather_text: bool, *, fpath: str) -> Generator['License', None, None]: lack = LicenseAcknowledgement.DECLARED if classifiers := project.get('classifiers'): @@ -68,10 +69,11 @@ def project2licenses(project: dict[str, Any], lfac: 'LicenseFactory', *, # per spec: # > These keys are mutually exclusive, so a tool MUST raise an error if the metadata specifies both keys. raise ValueError('`license.file` and `license.text` are mutually exclusive,') - if 'file' in plicense: + if gather_text and 'file' in plicense: # per spec: # > [...] a string value that is a relative file path [...]. # > Tools MUST assume the file’s encoding is UTF-8. + # anyway, we don't trust this and assume binary with open(join(dirname(fpath), plicense['file']), 'rb') as plicense_fileh: yield DisjunctiveLicense(name=f"declared license of '{project['name']}'", acknowledgement=lack, @@ -80,7 +82,7 @@ def project2licenses(project: dict[str, Any], lfac: 'LicenseFactory', *, elif len(plicense_text := plicense.get('text', '')) > 0: license = lfac.make_from_string(plicense_text, license_acknowledgement=lack) - if isinstance(license, DisjunctiveLicense) and license.id is None: + if isinstance(license, DisjunctiveLicense) and license.id is None and gather_text: # per spec, `License` is either a SPDX ID/Expression, or a license text(not name!) yield DisjunctiveLicense(name=f"declared license of '{project['name']}'", acknowledgement=lack, @@ -103,15 +105,15 @@ def project2extrefs(project: dict[str, Any]) -> Generator['ExternalReference', N def project2component(project: dict[str, Any], *, - ctype: 'ComponentType', fpath: str) -> 'Component': + ctype: 'ComponentType') -> 'Component': dynamic = project.get('dynamic', ()) return Component( type=ctype, name=project['name'], version=project.get('version', None) if 'version' not in dynamic else None, description=project.get('description', None) if 'description' not in dynamic else None, - licenses=licenses_fixup(project2licenses(project, LicenseFactory(), fpath=fpath)), external_references=project2extrefs(project), + # licenses are not gathered here per default, they may be sourced otherwise # TODO add more properties according to spec ) diff --git a/cyclonedx_py/_internal/utils/pep639.py b/cyclonedx_py/_internal/utils/pep639.py index 03f93bcff..7b1f86fb8 100644 --- a/cyclonedx_py/_internal/utils/pep639.py +++ b/cyclonedx_py/_internal/utils/pep639.py @@ -23,10 +23,10 @@ from base64 import b64encode from collections.abc import Generator -from os.path import join -from typing import TYPE_CHECKING +from glob import glob +from os.path import dirname, join +from typing import TYPE_CHECKING, Any -from cyclonedx.factory.license import LicenseFactory from cyclonedx.model import AttachedText, Encoding from cyclonedx.model.license import DisjunctiveLicense, LicenseAcknowledgement @@ -37,26 +37,53 @@ from importlib.metadata import Distribution from logging import Logger + from cyclonedx.factory.license import LicenseFactory from cyclonedx.model.license import License + +def project2licenses(project: dict[str, Any], lfac: 'LicenseFactory', + gather_texts: bool, *, + fpath: str) -> Generator['License', None, None]: + lack = LicenseAcknowledgement.DECLARED + if isinstance(plicense := project.get('license'), str) \ + and len(plicense) > 0: + # https://peps.python.org/pep-0639/#add-string-value-to-license-key + yield lfac.make_from_string(plicense, + license_acknowledgement=lack) + if gather_texts and isinstance(plfiles := project.get('license-files'), list): + # https://peps.python.org/pep-0639/#add-license-files-key + plfiles_root = dirname(fpath) + for plfile_glob in plfiles: + for plfile in glob(plfile_glob, root_dir=plfiles_root): + # per spec: + # > Tools MUST assume that license file content is valid UTF-8 encoded text + # anyway, we don't trust this and assume binary + with open(join(plfiles_root, plfile), 'rb') as plicense_fileh: + yield DisjunctiveLicense(name=f'declared license file: {plfile}', + acknowledgement=lack, + text=AttachedText(encoding=Encoding.BASE_64, + content=b64encode(plicense_fileh.read()).decode())) + # Silently skip any other types (including string/PEP 621) + return None + + # per spec > license files are stored in the `.dist-info/licenses/` subdirectory of the produced wheel. # but in practice, other locations are used, too. _LICENSE_LOCATIONS = ('licenses', 'license_files', '') def dist2licenses( - dist: 'Distribution', - gather_text: bool, + dist: 'Distribution', lfac: 'LicenseFactory', + gather_texts: bool, logger: 'Logger' ) -> Generator['License', None, None]: - lfac = LicenseFactory() lack = LicenseAcknowledgement.DECLARED metadata = dist.metadata # see https://packaging.python.org/en/latest/specifications/core-metadata/ if (lexp := metadata['License-Expression']) is not None: # see spec: https://peps.python.org/pep-0639/#add-license-expression-field yield lfac.make_from_string(lexp, license_acknowledgement=lack) - if gather_text: + if gather_texts: for mlfile in set(metadata.get_all('License-File', ())): # see spec: https://peps.python.org/pep-0639/#add-license-file-field # latest spec rev: https://discuss.python.org/t/pep-639-round-3-improving-license-clarity-with-better-package-metadata/53020 # noqa: E501 diff --git a/cyclonedx_py/_internal/utils/poetry.py b/cyclonedx_py/_internal/utils/poetry.py index 19cb88262..78adbb905 100644 --- a/cyclonedx_py/_internal/utils/poetry.py +++ b/cyclonedx_py/_internal/utils/poetry.py @@ -37,7 +37,6 @@ if TYPE_CHECKING: from cyclonedx.model.component import ComponentType - from cyclonedx.model.license import License def poetry2extrefs(poetry: dict[str, Any]) -> Generator['ExternalReference', None, None]: @@ -64,26 +63,27 @@ def poetry2extrefs(poetry: dict[str, Any]) -> Generator['ExternalReference', Non def poetry2component(poetry: dict[str, Any], *, ctype: 'ComponentType') -> 'Component': - licenses: list['License'] = [] - lfac = LicenseFactory() - lack = LicenseAcknowledgement.DECLARED - if 'classifiers' in poetry: - licenses.extend(classifiers2licenses(poetry['classifiers'], lfac, lack)) - if 'license' in poetry: - # per spec(https://python-poetry.org/docs/pyproject#license): - # the `license` is intended to be the name of a license, not the license text itself. - licenses.append(lfac.make_from_string(poetry['license'], - license_acknowledgement=lack)) - - return Component( + component = Component( type=ctype, name=poetry['name'], version=poetry.get('version'), description=poetry.get('description'), - licenses=licenses_fixup(licenses), external_references=poetry2extrefs(poetry), # TODO add more properties according to spec ) + # region licenses + lfac = LicenseFactory() + lack = LicenseAcknowledgement.DECLARED + if 'classifiers' in poetry: + component.licenses.update(classifiers2licenses(poetry['classifiers'], lfac, lack)) + if 'license' in poetry: + # per spec(https://python-poetry.org/docs/pyproject#license): + # the `license` is intended to be the name of a license, not the license text itself. + component.licenses.add(lfac.make_from_string(poetry['license'], + license_acknowledgement=lack)) + licenses_fixup(component) + # endregion licenses + return component def poetry2dependencies(poetry: dict[str, Any]) -> Generator['Requirement', None, None]: diff --git a/cyclonedx_py/_internal/utils/pyproject.py b/cyclonedx_py/_internal/utils/pyproject.py index a45efce02..09170a09f 100644 --- a/cyclonedx_py/_internal/utils/pyproject.py +++ b/cyclonedx_py/_internal/utils/pyproject.py @@ -22,7 +22,15 @@ from collections.abc import Iterator from typing import TYPE_CHECKING, Any -from .pep621 import project2component, project2dependencies +from cyclonedx.factory.license import LicenseFactory + +from .cdx import licenses_fixup +from .pep621 import ( + project2component as pep621_project2component, + project2dependencies as pep621_project2dependencies, + project2licenses as pep621_project2licenses, +) +from .pep639 import project2licenses as pep639_project2licenses from .poetry import poetry2component, poetry2dependencies from .toml import toml_loads @@ -32,12 +40,26 @@ def pyproject2component(data: dict[str, Any], *, - ctype: 'ComponentType', fpath: str) -> 'Component': + ctype: 'ComponentType', + fpath: str, + gather_license_texts: bool + ) -> 'Component': tool = data.get('tool', {}) if poetry := tool.get('poetry'): return poetry2component(poetry, ctype=ctype) if project := data.get('project'): - return project2component(project, ctype=ctype, fpath=fpath) + component = pep621_project2component(project, ctype=ctype) + # region licenses + lfac = LicenseFactory() + component.licenses.update(pep639_project2licenses(project, lfac, gather_license_texts, fpath=fpath)) + if len(component.licenses) == 0: + # According to PEP 639 spec, if licenses are declared in the "new" style, + # all other license declarations MUST be ignored. + # https://peps.python.org/pep-0639/#converting-legacy-metadata + component.licenses.update(pep621_project2licenses(project, lfac, gather_license_texts, fpath=fpath)) + licenses_fixup(component) + # endregion licenses + return component raise ValueError('Unable to build component from pyproject') @@ -51,10 +73,13 @@ def pyproject_load(pyproject_file: str) -> dict[str, Any]: def pyproject_file2component(pyproject_file: str, *, - ctype: 'ComponentType') -> 'Component': + ctype: 'ComponentType', + gather_license_texts: bool + ) -> 'Component': return pyproject2component( pyproject_load(pyproject_file), - ctype=ctype, fpath=pyproject_file + ctype=ctype, fpath=pyproject_file, + gather_license_texts=gather_license_texts ) @@ -63,5 +88,5 @@ def pyproject2dependencies(data: dict[str, Any]) -> Iterator['Requirement']: if 'poetry' in tool: return poetry2dependencies(tool['poetry']) if 'project' in data: - return project2dependencies(data['project']) + return pep621_project2dependencies(data['project']) return iter(()) diff --git a/tests/_data/infiles/environment/with-license-pep639/AUTHORS.example b/tests/_data/infiles/environment/with-license-pep639/AUTHORS.example new file mode 100644 index 000000000..8a6e8d6f9 --- /dev/null +++ b/tests/_data/infiles/environment/with-license-pep639/AUTHORS.example @@ -0,0 +1 @@ +this is AUTHORS.example content diff --git a/tests/_data/infiles/environment/with-license-pep639/LICENCE.dummy b/tests/_data/infiles/environment/with-license-pep639/LICENCE.dummy new file mode 100644 index 000000000..6413df7f3 --- /dev/null +++ b/tests/_data/infiles/environment/with-license-pep639/LICENCE.dummy @@ -0,0 +1 @@ +this is LICENCE.dummy content diff --git a/tests/_data/infiles/environment/with-license-pep639/LICENSE.txt b/tests/_data/infiles/environment/with-license-pep639/LICENSE.txt new file mode 100644 index 000000000..6449ab886 --- /dev/null +++ b/tests/_data/infiles/environment/with-license-pep639/LICENSE.txt @@ -0,0 +1 @@ +this is LICENSE.txt content diff --git a/tests/_data/infiles/environment/with-license-pep639/licenses_a/LICENSE.CC0 b/tests/_data/infiles/environment/with-license-pep639/licenses_a/LICENSE.CC0 new file mode 100644 index 000000000..4a28db465 --- /dev/null +++ b/tests/_data/infiles/environment/with-license-pep639/licenses_a/LICENSE.CC0 @@ -0,0 +1 @@ +this is licenses_a/LICENSE.CC0 content diff --git a/tests/_data/infiles/environment/with-license-pep639/licenses_a/LICENSE.MIT b/tests/_data/infiles/environment/with-license-pep639/licenses_a/LICENSE.MIT new file mode 100644 index 000000000..b845be73b --- /dev/null +++ b/tests/_data/infiles/environment/with-license-pep639/licenses_a/LICENSE.MIT @@ -0,0 +1 @@ +this is licenses_a/LICENSE.MIT content diff --git a/tests/_data/infiles/environment/with-license-pep639/licenses_b/LICENSE.md b/tests/_data/infiles/environment/with-license-pep639/licenses_b/LICENSE.md new file mode 100644 index 000000000..b103f4c19 --- /dev/null +++ b/tests/_data/infiles/environment/with-license-pep639/licenses_b/LICENSE.md @@ -0,0 +1 @@ +this is licenses_b/LICENSE.md content diff --git a/tests/_data/infiles/environment/with-license-pep639/pyproject.toml b/tests/_data/infiles/environment/with-license-pep639/pyproject.toml index 170836905..7f30bb40d 100644 --- a/tests/_data/infiles/environment/with-license-pep639/pyproject.toml +++ b/tests/_data/infiles/environment/with-license-pep639/pyproject.toml @@ -4,6 +4,24 @@ name = "with-extras" version = "0.1.0" description = "depenndencies with license declaration accoring to PEP 639" +# https://peps.python.org/pep-0639/#add-string-value-to-license-key +license = "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" +# https://peps.python.org/pep-0639/#add-license-files-key +license-files = [ + "LICEN[CS]E*", "AUTHORS*", + "licenses_a/LICENSE.MIT", "licenses_a/LICENSE.CC0", + "LICENSE.txt", "licenses_b/*", + "nonexisting_file", "nonexisting_dir/foo", +] + +classifiers = [ + "Classifier: Development Status :: 4 - Beta", + "Intended Audience :: Developers", + # Per PEP 639, license classifiers MUST be ignored. + "License :: OSI Approved :: Apache Software License", + "License :: OSI Approved :: MIT License" +] + [project.dependencies] # with License-Expression "attrs" = { } From 4cd95f1186d674f26b97fbccba6348745cd3a367 Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Mon, 7 Jul 2025 13:48:35 +0200 Subject: [PATCH 02/49] docs Signed-off-by: Jan Kowalleck --- cyclonedx_py/_internal/utils/cdx.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cyclonedx_py/_internal/utils/cdx.py b/cyclonedx_py/_internal/utils/cdx.py index 9aff7b4b8..d1d939dcc 100644 --- a/cyclonedx_py/_internal/utils/cdx.py +++ b/cyclonedx_py/_internal/utils/cdx.py @@ -104,6 +104,9 @@ def licenses_fixup(component: 'Component') -> None: Per CycloneDX spec, there must be EITHER one license expression OR multiple license id/name. If there is an expression, it is used and everything else is moved to evidences, so it is not lost. """ + # hack for preventing expressions AND named licenses. + # see https://github.com/CycloneDX/cyclonedx-python/issues/826 + # see https://github.com/CycloneDX/specification/issues/454 licenses = list(component.licenses) lexp = find_LicenseExpression(licenses) if lexp is None: From 1deafce3075b47c1f6fc91f9f22aee568723af8e Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Mon, 7 Jul 2025 13:58:52 +0200 Subject: [PATCH 03/49] fix Signed-off-by: Jan Kowalleck --- cyclonedx_py/_internal/environment.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/cyclonedx_py/_internal/environment.py b/cyclonedx_py/_internal/environment.py index 876ee40e2..21da49e6b 100644 --- a/cyclonedx_py/_internal/environment.py +++ b/cyclonedx_py/_internal/environment.py @@ -131,11 +131,9 @@ def make_argument_parser(**kwargs: Any) -> 'ArgumentParser': def __init__(self, *, logger: 'Logger', - pep639: bool, gather_license_texts: bool, **__: Any) -> None: self._logger = logger - self._pep639 = pep639 self._gather_license_texts = gather_license_texts def __call__(self, *, # type:ignore[override] From fa9072e85f0681020b0e9d72d400cb451269b760 Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Mon, 7 Jul 2025 14:00:15 +0200 Subject: [PATCH 04/49] wip Signed-off-by: Jan Kowalleck --- ...p639-texts_with-license-pep639_1.1.xml.bin | 264 +++- ...639-texts_with-license-pep639_1.2.json.bin | 65 +- ...p639-texts_with-license-pep639_1.2.xml.bin | 267 +++- ...639-texts_with-license-pep639_1.3.json.bin | 97 +- ...p639-texts_with-license-pep639_1.3.xml.bin | 100 +- ...639-texts_with-license-pep639_1.4.json.bin | 97 +- ...p639-texts_with-license-pep639_1.4.xml.bin | 100 +- ...639-texts_with-license-pep639_1.5.json.bin | 97 +- ...p639-texts_with-license-pep639_1.5.xml.bin | 100 +- ...639-texts_with-license-pep639_1.6.json.bin | 111 +- ...p639-texts_with-license-pep639_1.6.xml.bin | 100 +- .../pep639_with-license-pep639_1.2.json.bin | 5 + .../pep639_with-license-pep639_1.2.xml.bin | 3 + .../pep639_with-license-pep639_1.3.json.bin | 20 + .../pep639_with-license-pep639_1.3.xml.bin | 14 + .../pep639_with-license-pep639_1.4.json.bin | 20 + .../pep639_with-license-pep639_1.4.xml.bin | 14 + .../pep639_with-license-pep639_1.5.json.bin | 20 + .../pep639_with-license-pep639_1.5.xml.bin | 14 + .../pep639_with-license-pep639_1.6.json.bin | 23 + .../pep639_with-license-pep639_1.6.xml.bin | 14 + .../environment/plain_local_1.3.json.bin | 14 + .../environment/plain_local_1.3.xml.bin | 10 + .../environment/plain_local_1.4.json.bin | 14 + .../environment/plain_local_1.4.xml.bin | 10 + .../environment/plain_local_1.5.json.bin | 14 + .../environment/plain_local_1.5.xml.bin | 10 + .../environment/plain_local_1.6.json.bin | 16 + .../environment/plain_local_1.6.xml.bin | 10 + .../environment/plain_no-deps_1.3.json.bin | 14 + .../environment/plain_no-deps_1.3.xml.bin | 10 + .../environment/plain_no-deps_1.4.json.bin | 14 + .../environment/plain_no-deps_1.4.xml.bin | 10 + .../environment/plain_no-deps_1.5.json.bin | 14 + .../environment/plain_no-deps_1.5.xml.bin | 10 + .../environment/plain_no-deps_1.6.json.bin | 16 + .../environment/plain_no-deps_1.6.xml.bin | 10 + .../environment/plain_via-pdm_1.3.json.bin | 14 + .../environment/plain_via-pdm_1.3.xml.bin | 10 + .../environment/plain_via-pdm_1.4.json.bin | 14 + .../environment/plain_via-pdm_1.4.xml.bin | 10 + .../environment/plain_via-pdm_1.5.json.bin | 14 + .../environment/plain_via-pdm_1.5.xml.bin | 10 + .../environment/plain_via-pdm_1.6.json.bin | 16 + .../environment/plain_via-pdm_1.6.xml.bin | 10 + .../environment/plain_via-pipenv_1.3.json.bin | 14 + .../environment/plain_via-pipenv_1.3.xml.bin | 10 + .../environment/plain_via-pipenv_1.4.json.bin | 14 + .../environment/plain_via-pipenv_1.4.xml.bin | 10 + .../environment/plain_via-pipenv_1.5.json.bin | 14 + .../environment/plain_via-pipenv_1.5.xml.bin | 10 + .../environment/plain_via-pipenv_1.6.json.bin | 16 + .../environment/plain_via-pipenv_1.6.xml.bin | 10 + .../environment/plain_via-poetry_1.3.json.bin | 14 + .../environment/plain_via-poetry_1.3.xml.bin | 10 + .../environment/plain_via-poetry_1.4.json.bin | 14 + .../environment/plain_via-poetry_1.4.xml.bin | 10 + .../environment/plain_via-poetry_1.5.json.bin | 14 + .../environment/plain_via-poetry_1.5.xml.bin | 10 + .../environment/plain_via-poetry_1.6.json.bin | 16 + .../environment/plain_via-poetry_1.6.xml.bin | 10 + .../environment/plain_via-uv_1.3.json.bin | 14 + .../environment/plain_via-uv_1.3.xml.bin | 10 + .../environment/plain_via-uv_1.4.json.bin | 14 + .../environment/plain_via-uv_1.4.xml.bin | 10 + .../environment/plain_via-uv_1.5.json.bin | 14 + .../environment/plain_via-uv_1.5.xml.bin | 10 + .../environment/plain_via-uv_1.6.json.bin | 16 + .../environment/plain_via-uv_1.6.xml.bin | 10 + .../plain_with-license-file_1.2.json.bin | 12 - .../plain_with-license-file_1.2.xml.bin | 6 - .../plain_with-license-file_1.3.json.bin | 12 - .../plain_with-license-file_1.3.xml.bin | 6 - .../plain_with-license-file_1.4.json.bin | 12 - .../plain_with-license-file_1.4.xml.bin | 6 - .../plain_with-license-file_1.5.json.bin | 12 - .../plain_with-license-file_1.5.xml.bin | 6 - .../plain_with-license-file_1.6.json.bin | 13 - .../plain_with-license-file_1.6.xml.bin | 6 - .../plain_with-license-pep639_1.2.json.bin | 5 + .../plain_with-license-pep639_1.2.xml.bin | 3 + .../plain_with-license-pep639_1.3.json.bin | 20 + .../plain_with-license-pep639_1.3.xml.bin | 14 + .../plain_with-license-pep639_1.4.json.bin | 20 + .../plain_with-license-pep639_1.4.xml.bin | 14 + .../plain_with-license-pep639_1.5.json.bin | 20 + .../plain_with-license-pep639_1.5.xml.bin | 14 + .../plain_with-license-pep639_1.6.json.bin | 23 + .../plain_with-license-pep639_1.6.xml.bin | 14 + .../plain_with-license-text_1.2.xml.bin | 4 +- .../plain_with-license-text_1.3.json.bin | 20 +- .../plain_with-license-text_1.3.xml.bin | 14 +- .../plain_with-license-text_1.4.json.bin | 20 +- .../plain_with-license-text_1.4.xml.bin | 14 +- .../plain_with-license-text_1.5.json.bin | 20 +- .../plain_with-license-text_1.5.xml.bin | 14 +- .../plain_with-license-text_1.6.json.bin | 22 +- .../plain_with-license-text_1.6.xml.bin | 14 +- .../texts_with-license-pep639_1.1.xml.bin | 1139 +++++++++++++++- .../texts_with-license-pep639_1.2.json.bin | 176 ++- .../texts_with-license-pep639_1.2.xml.bin | 1142 +++++++++++++++- .../texts_with-license-pep639_1.3.json.bin | 177 ++- .../texts_with-license-pep639_1.3.xml.bin | 1143 ++++++++++++++++- .../texts_with-license-pep639_1.4.json.bin | 177 ++- .../texts_with-license-pep639_1.4.xml.bin | 1143 ++++++++++++++++- .../texts_with-license-pep639_1.5.json.bin | 177 ++- .../texts_with-license-pep639_1.5.xml.bin | 1143 ++++++++++++++++- .../texts_with-license-pep639_1.6.json.bin | 194 ++- .../texts_with-license-pep639_1.6.xml.bin | 1143 ++++++++++++++++- .../pipenv/plain_no-deps_1.3.json.bin | 14 + .../pipenv/plain_no-deps_1.3.xml.bin | 10 + .../pipenv/plain_no-deps_1.4.json.bin | 14 + .../pipenv/plain_no-deps_1.4.xml.bin | 10 + .../pipenv/plain_no-deps_1.5.json.bin | 14 + .../pipenv/plain_no-deps_1.5.xml.bin | 10 + .../pipenv/plain_no-deps_1.6.json.bin | 16 + .../pipenv/plain_no-deps_1.6.xml.bin | 10 + .../poetry/plain_no-deps_lock20_1.3.json.bin | 14 + .../poetry/plain_no-deps_lock20_1.3.xml.bin | 10 + .../poetry/plain_no-deps_lock20_1.4.json.bin | 14 + .../poetry/plain_no-deps_lock20_1.4.xml.bin | 10 + .../poetry/plain_no-deps_lock20_1.5.json.bin | 14 + .../poetry/plain_no-deps_lock20_1.5.xml.bin | 10 + .../poetry/plain_no-deps_lock20_1.6.json.bin | 16 + .../poetry/plain_no-deps_lock20_1.6.xml.bin | 10 + .../poetry/plain_no-deps_lock21_1.3.json.bin | 14 + .../poetry/plain_no-deps_lock21_1.3.xml.bin | 10 + .../poetry/plain_no-deps_lock21_1.4.json.bin | 14 + .../poetry/plain_no-deps_lock21_1.4.xml.bin | 10 + .../poetry/plain_no-deps_lock21_1.5.json.bin | 14 + .../poetry/plain_no-deps_lock21_1.5.xml.bin | 10 + .../poetry/plain_no-deps_lock21_1.6.json.bin | 16 + .../poetry/plain_no-deps_lock21_1.6.xml.bin | 10 + .../requirements/file_frozen_1.3.json.bin | 14 + .../requirements/file_frozen_1.3.xml.bin | 10 + .../requirements/file_frozen_1.4.json.bin | 14 + .../requirements/file_frozen_1.4.xml.bin | 10 + .../requirements/file_frozen_1.5.json.bin | 14 + .../requirements/file_frozen_1.5.xml.bin | 10 + .../requirements/file_frozen_1.6.json.bin | 16 + .../requirements/file_frozen_1.6.xml.bin | 10 + .../requirements/file_local_1.3.json.bin | 14 + .../requirements/file_local_1.3.xml.bin | 10 + .../requirements/file_local_1.4.json.bin | 14 + .../requirements/file_local_1.4.xml.bin | 10 + .../requirements/file_local_1.5.json.bin | 14 + .../requirements/file_local_1.5.xml.bin | 10 + .../requirements/file_local_1.6.json.bin | 16 + .../requirements/file_local_1.6.xml.bin | 10 + .../requirements/file_nested_1.3.json.bin | 14 + .../requirements/file_nested_1.3.xml.bin | 10 + .../requirements/file_nested_1.4.json.bin | 14 + .../requirements/file_nested_1.4.xml.bin | 10 + .../requirements/file_nested_1.5.json.bin | 14 + .../requirements/file_nested_1.5.xml.bin | 10 + .../requirements/file_nested_1.6.json.bin | 16 + .../requirements/file_nested_1.6.xml.bin | 10 + .../file_private-packages_1.3.json.bin | 14 + .../file_private-packages_1.3.xml.bin | 10 + .../file_private-packages_1.4.json.bin | 14 + .../file_private-packages_1.4.xml.bin | 10 + .../file_private-packages_1.5.json.bin | 14 + .../file_private-packages_1.5.xml.bin | 10 + .../file_private-packages_1.6.json.bin | 16 + .../file_private-packages_1.6.xml.bin | 10 + .../file_with-comments_1.3.json.bin | 14 + .../file_with-comments_1.3.xml.bin | 10 + .../file_with-comments_1.4.json.bin | 14 + .../file_with-comments_1.4.xml.bin | 10 + .../file_with-comments_1.5.json.bin | 14 + .../file_with-comments_1.5.xml.bin | 10 + .../file_with-comments_1.6.json.bin | 16 + .../file_with-comments_1.6.xml.bin | 10 + .../file_with-extras_1.3.json.bin | 14 + .../requirements/file_with-extras_1.3.xml.bin | 10 + .../file_with-extras_1.4.json.bin | 14 + .../requirements/file_with-extras_1.4.xml.bin | 10 + .../file_with-extras_1.5.json.bin | 14 + .../requirements/file_with-extras_1.5.xml.bin | 10 + .../file_with-extras_1.6.json.bin | 16 + .../requirements/file_with-extras_1.6.xml.bin | 10 + .../file_with-hashes_1.3.json.bin | 14 + .../requirements/file_with-hashes_1.3.xml.bin | 10 + .../file_with-hashes_1.4.json.bin | 14 + .../requirements/file_with-hashes_1.4.xml.bin | 10 + .../file_with-hashes_1.5.json.bin | 14 + .../requirements/file_with-hashes_1.5.xml.bin | 10 + .../file_with-hashes_1.6.json.bin | 16 + .../requirements/file_with-hashes_1.6.xml.bin | 10 + .../requirements/file_with-urls_1.3.json.bin | 14 + .../requirements/file_with-urls_1.3.xml.bin | 10 + .../requirements/file_with-urls_1.4.json.bin | 14 + .../requirements/file_with-urls_1.4.xml.bin | 10 + .../requirements/file_with-urls_1.5.json.bin | 14 + .../requirements/file_with-urls_1.5.xml.bin | 10 + .../requirements/file_with-urls_1.6.json.bin | 16 + .../requirements/file_with-urls_1.6.xml.bin | 10 + .../file_without-pinned-versions_1.3.json.bin | 14 + .../file_without-pinned-versions_1.3.xml.bin | 10 + .../file_without-pinned-versions_1.4.json.bin | 14 + .../file_without-pinned-versions_1.4.xml.bin | 10 + .../file_without-pinned-versions_1.5.json.bin | 14 + .../file_without-pinned-versions_1.5.xml.bin | 10 + .../file_without-pinned-versions_1.6.json.bin | 16 + .../file_without-pinned-versions_1.6.xml.bin | 10 + .../index_auth_frozen_1.3.json.bin | 14 + .../index_auth_frozen_1.3.xml.bin | 10 + .../index_auth_frozen_1.4.json.bin | 14 + .../index_auth_frozen_1.4.xml.bin | 10 + .../index_auth_frozen_1.5.json.bin | 14 + .../index_auth_frozen_1.5.xml.bin | 10 + .../index_auth_frozen_1.6.json.bin | 16 + .../index_auth_frozen_1.6.xml.bin | 10 + tests/integration/test_cli_environment.py | 2 - tests/integration/test_utils_pep621.py | 6 +- 215 files changed, 10740 insertions(+), 809 deletions(-) diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.1.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.1.xml.bin index afe85637c..ca121496e 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.1.xml.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.1.xml.bin @@ -64,9 +64,6 @@ SOFTWARE. 4.0 Define boolean algebras, create and parse boolean expressions and create custom boolean DSL. - - BSD-2-Clause - declared license file: CHANGELOG.rst @@ -359,7 +356,250 @@ SPDX-License-Identifier: BSD-2-Clause 43.0.1 cryptography is a package which provides cryptographic recipes and primitives to Python developers. - Apache-2.0 OR BSD-3-Clause + + declared license file: LICENSE + This software is made available under the terms of *either* of the licenses +found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made +under the terms of *both* these licenses. + + + + declared license file: LICENSE.APACHE + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + + declared license file: LICENSE.BSD + Copyright (c) Individual contributors. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. Neither the name of PyCA Cryptography nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + pkg:pypi/cryptography@43.0.1 @@ -390,9 +630,6 @@ SPDX-License-Identifier: BSD-2-Clause 2.4 Identify specific nodes in a JSON document (RFC 6901) - - License :: OSI Approved :: BSD License - declared license file: AUTHORS Stefan Kögl <stefan@skoegl.net> @@ -430,10 +667,6 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - declared license of 'jsonpointer' - Modified BSD License - pkg:pypi/jsonpointer@2.4 @@ -448,9 +681,6 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30.3.0 license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic. - - Apache-2.0 - declared license file: AUTHORS.rst The following organizations or individuals have contributed to this code: @@ -920,12 +1150,6 @@ https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 5.3.0 Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. - - BSD-3-Clause - - - License :: OSI Approved :: BSD License - declared license file: LICENSE.txt Copyright (c) 2004 Infrae. All rights reserved. diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.2.json.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.2.json.bin index b50bf7d0b..425b3f345 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.2.json.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.2.json.bin @@ -62,11 +62,6 @@ } ], "licenses": [ - { - "license": { - "id": "BSD-2-Clause" - } - }, { "license": { "name": "declared license file: CHANGELOG.rst", @@ -132,7 +127,31 @@ ], "licenses": [ { - "expression": "Apache-2.0 OR BSD-3-Clause" + "license": { + "name": "declared license file: LICENSE", + "text": { + "content": "This software is made available under the terms of *either* of the licenses\nfound in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made\nunder the terms of *both* these licenses.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: LICENSE.APACHE", + "text": { + "content": "\n Apache License\n Version 2.0, January 2004\n https://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: LICENSE.BSD", + "text": { + "content": "Copyright (c) Individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of PyCA Cryptography nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", + "contentType": "text/plain" + } + } } ], "name": "cryptography", @@ -151,11 +170,6 @@ } ], "licenses": [ - { - "license": { - "name": "License :: OSI Approved :: BSD License" - } - }, { "license": { "name": "declared license file: AUTHORS", @@ -173,15 +187,6 @@ "contentType": "text/plain" } } - }, - { - "license": { - "name": "declared license of 'jsonpointer'", - "text": { - "content": "Modified BSD License", - "contentType": "text/plain" - } - } } ], "name": "jsonpointer", @@ -200,11 +205,6 @@ } ], "licenses": [ - { - "license": { - "id": "Apache-2.0" - } - }, { "license": { "name": "declared license file: AUTHORS.rst", @@ -272,16 +272,6 @@ } ], "licenses": [ - { - "license": { - "id": "BSD-3-Clause" - } - }, - { - "license": { - "name": "License :: OSI Approved :: BSD License" - } - }, { "license": { "name": "declared license file: LICENSE.txt", @@ -410,6 +400,11 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", + "licenses": [ + { + "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" + } + ], "name": "with-extras", "type": "application", "version": "0.1.0" diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.2.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.2.xml.bin index b04e1589d..ac08ad865 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.2.xml.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.2.xml.bin @@ -17,6 +17,9 @@ with-extras 0.1.0 depenndencies with license declaration accoring to PEP 639 + + MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) + @@ -83,9 +86,6 @@ SOFTWARE. 4.0 Define boolean algebras, create and parse boolean expressions and create custom boolean DSL. - - BSD-2-Clause - declared license file: CHANGELOG.rst @@ -378,7 +378,250 @@ SPDX-License-Identifier: BSD-2-Clause 43.0.1 cryptography is a package which provides cryptographic recipes and primitives to Python developers. - Apache-2.0 OR BSD-3-Clause + + declared license file: LICENSE + This software is made available under the terms of *either* of the licenses +found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made +under the terms of *both* these licenses. + + + + declared license file: LICENSE.APACHE + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + + declared license file: LICENSE.BSD + Copyright (c) Individual contributors. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. Neither the name of PyCA Cryptography nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + pkg:pypi/cryptography@43.0.1 @@ -409,9 +652,6 @@ SPDX-License-Identifier: BSD-2-Clause 2.4 Identify specific nodes in a JSON document (RFC 6901) - - License :: OSI Approved :: BSD License - declared license file: AUTHORS Stefan Kögl <stefan@skoegl.net> @@ -449,10 +689,6 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - declared license of 'jsonpointer' - Modified BSD License - pkg:pypi/jsonpointer@2.4 @@ -467,9 +703,6 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30.3.0 license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic. - - Apache-2.0 - declared license file: AUTHORS.rst The following organizations or individuals have contributed to this code: @@ -939,12 +1172,6 @@ https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 5.3.0 Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. - - BSD-3-Clause - - - License :: OSI Approved :: BSD License - declared license file: LICENSE.txt Copyright (c) 2004 Infrae. All rights reserved. diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.json.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.json.bin index 2ed3df253..48bd16b3b 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.json.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.json.bin @@ -62,11 +62,6 @@ } ], "licenses": [ - { - "license": { - "id": "BSD-2-Clause" - } - }, { "license": { "name": "declared license file: CHANGELOG.rst", @@ -103,37 +98,6 @@ { "bom-ref": "cryptography==43.0.1", "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", - "evidence": { - "licenses": [ - { - "license": { - "name": "declared license file: LICENSE", - "text": { - "content": "This software is made available under the terms of *either* of the licenses\nfound in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made\nunder the terms of *both* these licenses.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.APACHE", - "text": { - "content": "\n Apache License\n Version 2.0, January 2004\n https://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.BSD", - "text": { - "content": "Copyright (c) Individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of PyCA Cryptography nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" - } - } - } - ] - }, "externalReferences": [ { "comment": "from packaging metadata Project-URL: documentation", @@ -163,7 +127,31 @@ ], "licenses": [ { - "expression": "Apache-2.0 OR BSD-3-Clause" + "license": { + "name": "declared license file: LICENSE", + "text": { + "content": "This software is made available under the terms of *either* of the licenses\nfound in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made\nunder the terms of *both* these licenses.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: LICENSE.APACHE", + "text": { + "content": "\n Apache License\n Version 2.0, January 2004\n https://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: LICENSE.BSD", + "text": { + "content": "Copyright (c) Individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of PyCA Cryptography nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", + "contentType": "text/plain" + } + } } ], "name": "cryptography", @@ -182,11 +170,6 @@ } ], "licenses": [ - { - "license": { - "name": "License :: OSI Approved :: BSD License" - } - }, { "license": { "name": "declared license file: AUTHORS", @@ -204,15 +187,6 @@ "contentType": "text/plain" } } - }, - { - "license": { - "name": "declared license of 'jsonpointer'", - "text": { - "content": "Modified BSD License", - "contentType": "text/plain" - } - } } ], "name": "jsonpointer", @@ -231,11 +205,6 @@ } ], "licenses": [ - { - "license": { - "id": "Apache-2.0" - } - }, { "license": { "name": "declared license file: AUTHORS.rst", @@ -303,16 +272,6 @@ } ], "licenses": [ - { - "license": { - "id": "BSD-3-Clause" - } - }, - { - "license": { - "name": "License :: OSI Approved :: BSD License" - } - }, { "license": { "name": "declared license file: LICENSE.txt", @@ -441,6 +400,12 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", + "evidence": {}, + "licenses": [ + { + "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" + } + ], "name": "with-extras", "type": "application", "version": "0.1.0" diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.xml.bin index f08f41b68..3fffe77e9 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.xml.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.xml.bin @@ -17,6 +17,10 @@ with-extras 0.1.0 depenndencies with license declaration accoring to PEP 639 + + MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) + + true @@ -86,9 +90,6 @@ SOFTWARE. 4.0 Define boolean algebras, create and parse boolean expressions and create custom boolean DSL. - - BSD-2-Clause - declared license file: CHANGELOG.rst @@ -381,43 +382,16 @@ SPDX-License-Identifier: BSD-2-Clause 43.0.1 cryptography is a package which provides cryptographic recipes and primitives to Python developers. - Apache-2.0 OR BSD-3-Clause - - pkg:pypi/cryptography@43.0.1 - - - https://cryptography.io/ - from packaging metadata Project-URL: documentation - - - https://github.com/pyca/cryptography/issues - from packaging metadata Project-URL: issues - - - https://github.com/pyca/cryptography/ - from packaging metadata Project-URL: source - - - https://cryptography.io/en/latest/changelog/ - from packaging metadata Project-URL: changelog - - - https://github.com/pyca/cryptography - from packaging metadata Project-URL: homepage - - - - - - declared license file: LICENSE - This software is made available under the terms of *either* of the licenses + + declared license file: LICENSE + This software is made available under the terms of *either* of the licenses found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made under the terms of *both* these licenses. - - - declared license file: LICENSE.APACHE - + + + declared license file: LICENSE.APACHE + Apache License Version 2.0, January 2004 https://www.apache.org/licenses/ @@ -620,10 +594,10 @@ under the terms of *both* these licenses. See the License for the specific language governing permissions and limitations under the License. - - - declared license file: LICENSE.BSD - Copyright (c) Individual contributors. + + + declared license file: LICENSE.BSD + Copyright (c) Individual contributors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -651,18 +625,37 @@ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - + + + pkg:pypi/cryptography@43.0.1 + + + https://cryptography.io/ + from packaging metadata Project-URL: documentation + + + https://github.com/pyca/cryptography/issues + from packaging metadata Project-URL: issues + + + https://github.com/pyca/cryptography/ + from packaging metadata Project-URL: source + + + https://cryptography.io/en/latest/changelog/ + from packaging metadata Project-URL: changelog + + + https://github.com/pyca/cryptography + from packaging metadata Project-URL: homepage + + jsonpointer 2.4 Identify specific nodes in a JSON document (RFC 6901) - - License :: OSI Approved :: BSD License - declared license file: AUTHORS Stefan Kögl <stefan@skoegl.net> @@ -700,10 +693,6 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - declared license of 'jsonpointer' - Modified BSD License - pkg:pypi/jsonpointer@2.4 @@ -718,9 +707,6 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30.3.0 license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic. - - Apache-2.0 - declared license file: AUTHORS.rst The following organizations or individuals have contributed to this code: @@ -1190,12 +1176,6 @@ https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 5.3.0 Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. - - BSD-3-Clause - - - License :: OSI Approved :: BSD License - declared license file: LICENSE.txt Copyright (c) 2004 Infrae. All rights reserved. diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.json.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.json.bin index 246ae8d22..146984826 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.json.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.json.bin @@ -62,11 +62,6 @@ } ], "licenses": [ - { - "license": { - "id": "BSD-2-Clause" - } - }, { "license": { "name": "declared license file: CHANGELOG.rst", @@ -103,37 +98,6 @@ { "bom-ref": "cryptography==43.0.1", "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", - "evidence": { - "licenses": [ - { - "license": { - "name": "declared license file: LICENSE", - "text": { - "content": "This software is made available under the terms of *either* of the licenses\nfound in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made\nunder the terms of *both* these licenses.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.APACHE", - "text": { - "content": "\n Apache License\n Version 2.0, January 2004\n https://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.BSD", - "text": { - "content": "Copyright (c) Individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of PyCA Cryptography nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" - } - } - } - ] - }, "externalReferences": [ { "comment": "from packaging metadata Project-URL: documentation", @@ -163,7 +127,31 @@ ], "licenses": [ { - "expression": "Apache-2.0 OR BSD-3-Clause" + "license": { + "name": "declared license file: LICENSE", + "text": { + "content": "This software is made available under the terms of *either* of the licenses\nfound in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made\nunder the terms of *both* these licenses.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: LICENSE.APACHE", + "text": { + "content": "\n Apache License\n Version 2.0, January 2004\n https://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: LICENSE.BSD", + "text": { + "content": "Copyright (c) Individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of PyCA Cryptography nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", + "contentType": "text/plain" + } + } } ], "name": "cryptography", @@ -182,11 +170,6 @@ } ], "licenses": [ - { - "license": { - "name": "License :: OSI Approved :: BSD License" - } - }, { "license": { "name": "declared license file: AUTHORS", @@ -204,15 +187,6 @@ "contentType": "text/plain" } } - }, - { - "license": { - "name": "declared license of 'jsonpointer'", - "text": { - "content": "Modified BSD License", - "contentType": "text/plain" - } - } } ], "name": "jsonpointer", @@ -231,11 +205,6 @@ } ], "licenses": [ - { - "license": { - "id": "Apache-2.0" - } - }, { "license": { "name": "declared license file: AUTHORS.rst", @@ -303,16 +272,6 @@ } ], "licenses": [ - { - "license": { - "id": "BSD-3-Clause" - } - }, - { - "license": { - "name": "License :: OSI Approved :: BSD License" - } - }, { "license": { "name": "declared license file: LICENSE.txt", @@ -441,6 +400,12 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", + "evidence": {}, + "licenses": [ + { + "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" + } + ], "name": "with-extras", "type": "application", "version": "0.1.0" diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.xml.bin index 72074d836..3ecfa593c 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.xml.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.xml.bin @@ -44,6 +44,10 @@ with-extras 0.1.0 depenndencies with license declaration accoring to PEP 639 + + MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) + + true @@ -113,9 +117,6 @@ SOFTWARE. 4.0 Define boolean algebras, create and parse boolean expressions and create custom boolean DSL. - - BSD-2-Clause - declared license file: CHANGELOG.rst @@ -408,43 +409,16 @@ SPDX-License-Identifier: BSD-2-Clause 43.0.1 cryptography is a package which provides cryptographic recipes and primitives to Python developers. - Apache-2.0 OR BSD-3-Clause - - pkg:pypi/cryptography@43.0.1 - - - https://cryptography.io/ - from packaging metadata Project-URL: documentation - - - https://github.com/pyca/cryptography/issues - from packaging metadata Project-URL: issues - - - https://github.com/pyca/cryptography/ - from packaging metadata Project-URL: source - - - https://cryptography.io/en/latest/changelog/ - from packaging metadata Project-URL: changelog - - - https://github.com/pyca/cryptography - from packaging metadata Project-URL: homepage - - - - - - declared license file: LICENSE - This software is made available under the terms of *either* of the licenses + + declared license file: LICENSE + This software is made available under the terms of *either* of the licenses found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made under the terms of *both* these licenses. - - - declared license file: LICENSE.APACHE - + + + declared license file: LICENSE.APACHE + Apache License Version 2.0, January 2004 https://www.apache.org/licenses/ @@ -647,10 +621,10 @@ under the terms of *both* these licenses. See the License for the specific language governing permissions and limitations under the License. - - - declared license file: LICENSE.BSD - Copyright (c) Individual contributors. + + + declared license file: LICENSE.BSD + Copyright (c) Individual contributors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -678,18 +652,37 @@ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - + + + pkg:pypi/cryptography@43.0.1 + + + https://cryptography.io/ + from packaging metadata Project-URL: documentation + + + https://github.com/pyca/cryptography/issues + from packaging metadata Project-URL: issues + + + https://github.com/pyca/cryptography/ + from packaging metadata Project-URL: source + + + https://cryptography.io/en/latest/changelog/ + from packaging metadata Project-URL: changelog + + + https://github.com/pyca/cryptography + from packaging metadata Project-URL: homepage + + jsonpointer 2.4 Identify specific nodes in a JSON document (RFC 6901) - - License :: OSI Approved :: BSD License - declared license file: AUTHORS Stefan Kögl <stefan@skoegl.net> @@ -727,10 +720,6 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - declared license of 'jsonpointer' - Modified BSD License - pkg:pypi/jsonpointer@2.4 @@ -745,9 +734,6 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30.3.0 license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic. - - Apache-2.0 - declared license file: AUTHORS.rst The following organizations or individuals have contributed to this code: @@ -1217,12 +1203,6 @@ https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 5.3.0 Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. - - BSD-3-Clause - - - License :: OSI Approved :: BSD License - declared license file: LICENSE.txt Copyright (c) 2004 Infrae. All rights reserved. diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.json.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.json.bin index 094a59f87..697af8ee8 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.json.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.json.bin @@ -62,11 +62,6 @@ } ], "licenses": [ - { - "license": { - "id": "BSD-2-Clause" - } - }, { "license": { "name": "declared license file: CHANGELOG.rst", @@ -103,37 +98,6 @@ { "bom-ref": "cryptography==43.0.1", "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", - "evidence": { - "licenses": [ - { - "license": { - "name": "declared license file: LICENSE", - "text": { - "content": "This software is made available under the terms of *either* of the licenses\nfound in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made\nunder the terms of *both* these licenses.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.APACHE", - "text": { - "content": "\n Apache License\n Version 2.0, January 2004\n https://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.BSD", - "text": { - "content": "Copyright (c) Individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of PyCA Cryptography nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" - } - } - } - ] - }, "externalReferences": [ { "comment": "from packaging metadata Project-URL: documentation", @@ -163,7 +127,31 @@ ], "licenses": [ { - "expression": "Apache-2.0 OR BSD-3-Clause" + "license": { + "name": "declared license file: LICENSE", + "text": { + "content": "This software is made available under the terms of *either* of the licenses\nfound in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made\nunder the terms of *both* these licenses.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: LICENSE.APACHE", + "text": { + "content": "\n Apache License\n Version 2.0, January 2004\n https://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: LICENSE.BSD", + "text": { + "content": "Copyright (c) Individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of PyCA Cryptography nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", + "contentType": "text/plain" + } + } } ], "name": "cryptography", @@ -182,11 +170,6 @@ } ], "licenses": [ - { - "license": { - "name": "License :: OSI Approved :: BSD License" - } - }, { "license": { "name": "declared license file: AUTHORS", @@ -204,15 +187,6 @@ "contentType": "text/plain" } } - }, - { - "license": { - "name": "declared license of 'jsonpointer'", - "text": { - "content": "Modified BSD License", - "contentType": "text/plain" - } - } } ], "name": "jsonpointer", @@ -231,11 +205,6 @@ } ], "licenses": [ - { - "license": { - "id": "Apache-2.0" - } - }, { "license": { "name": "declared license file: AUTHORS.rst", @@ -303,16 +272,6 @@ } ], "licenses": [ - { - "license": { - "id": "BSD-3-Clause" - } - }, - { - "license": { - "name": "License :: OSI Approved :: BSD License" - } - }, { "license": { "name": "declared license file: LICENSE.txt", @@ -441,6 +400,12 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", + "evidence": {}, + "licenses": [ + { + "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" + } + ], "name": "with-extras", "type": "application", "version": "0.1.0" diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.xml.bin index 7916b625d..1d2faeddb 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.xml.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.xml.bin @@ -54,6 +54,10 @@ with-extras 0.1.0 depenndencies with license declaration accoring to PEP 639 + + MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) + + true @@ -123,9 +127,6 @@ SOFTWARE. 4.0 Define boolean algebras, create and parse boolean expressions and create custom boolean DSL. - - BSD-2-Clause - declared license file: CHANGELOG.rst @@ -418,43 +419,16 @@ SPDX-License-Identifier: BSD-2-Clause 43.0.1 cryptography is a package which provides cryptographic recipes and primitives to Python developers. - Apache-2.0 OR BSD-3-Clause - - pkg:pypi/cryptography@43.0.1 - - - https://cryptography.io/ - from packaging metadata Project-URL: documentation - - - https://github.com/pyca/cryptography/issues - from packaging metadata Project-URL: issues - - - https://github.com/pyca/cryptography/ - from packaging metadata Project-URL: source - - - https://cryptography.io/en/latest/changelog/ - from packaging metadata Project-URL: changelog - - - https://github.com/pyca/cryptography - from packaging metadata Project-URL: homepage - - - - - - declared license file: LICENSE - This software is made available under the terms of *either* of the licenses + + declared license file: LICENSE + This software is made available under the terms of *either* of the licenses found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made under the terms of *both* these licenses. - - - declared license file: LICENSE.APACHE - + + + declared license file: LICENSE.APACHE + Apache License Version 2.0, January 2004 https://www.apache.org/licenses/ @@ -657,10 +631,10 @@ under the terms of *both* these licenses. See the License for the specific language governing permissions and limitations under the License. - - - declared license file: LICENSE.BSD - Copyright (c) Individual contributors. + + + declared license file: LICENSE.BSD + Copyright (c) Individual contributors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -688,18 +662,37 @@ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - + + + pkg:pypi/cryptography@43.0.1 + + + https://cryptography.io/ + from packaging metadata Project-URL: documentation + + + https://github.com/pyca/cryptography/issues + from packaging metadata Project-URL: issues + + + https://github.com/pyca/cryptography/ + from packaging metadata Project-URL: source + + + https://cryptography.io/en/latest/changelog/ + from packaging metadata Project-URL: changelog + + + https://github.com/pyca/cryptography + from packaging metadata Project-URL: homepage + + jsonpointer 2.4 Identify specific nodes in a JSON document (RFC 6901) - - License :: OSI Approved :: BSD License - declared license file: AUTHORS Stefan Kögl <stefan@skoegl.net> @@ -737,10 +730,6 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - declared license of 'jsonpointer' - Modified BSD License - pkg:pypi/jsonpointer@2.4 @@ -755,9 +744,6 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30.3.0 license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic. - - Apache-2.0 - declared license file: AUTHORS.rst The following organizations or individuals have contributed to this code: @@ -1227,12 +1213,6 @@ https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 5.3.0 Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. - - BSD-3-Clause - - - License :: OSI Approved :: BSD License - declared license file: LICENSE.txt Copyright (c) 2004 Infrae. All rights reserved. diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.json.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.json.bin index d380fdb32..5f8a14482 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.json.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.json.bin @@ -64,12 +64,6 @@ } ], "licenses": [ - { - "license": { - "acknowledgement": "declared", - "id": "BSD-2-Clause" - } - }, { "license": { "acknowledgement": "declared", @@ -109,40 +103,6 @@ { "bom-ref": "cryptography==43.0.1", "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", - "evidence": { - "licenses": [ - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: LICENSE", - "text": { - "content": "This software is made available under the terms of *either* of the licenses\nfound in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made\nunder the terms of *both* these licenses.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: LICENSE.APACHE", - "text": { - "content": "\n Apache License\n Version 2.0, January 2004\n https://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: LICENSE.BSD", - "text": { - "content": "Copyright (c) Individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of PyCA Cryptography nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" - } - } - } - ] - }, "externalReferences": [ { "comment": "from packaging metadata Project-URL: documentation", @@ -172,8 +132,34 @@ ], "licenses": [ { - "acknowledgement": "declared", - "expression": "Apache-2.0 OR BSD-3-Clause" + "license": { + "acknowledgement": "declared", + "name": "declared license file: LICENSE", + "text": { + "content": "This software is made available under the terms of *either* of the licenses\nfound in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made\nunder the terms of *both* these licenses.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: LICENSE.APACHE", + "text": { + "content": "\n Apache License\n Version 2.0, January 2004\n https://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: LICENSE.BSD", + "text": { + "content": "Copyright (c) Individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of PyCA Cryptography nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", + "contentType": "text/plain" + } + } } ], "name": "cryptography", @@ -192,12 +178,6 @@ } ], "licenses": [ - { - "license": { - "acknowledgement": "declared", - "name": "License :: OSI Approved :: BSD License" - } - }, { "license": { "acknowledgement": "declared", @@ -217,16 +197,6 @@ "contentType": "text/plain" } } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license of 'jsonpointer'", - "text": { - "content": "Modified BSD License", - "contentType": "text/plain" - } - } } ], "name": "jsonpointer", @@ -245,12 +215,6 @@ } ], "licenses": [ - { - "license": { - "acknowledgement": "declared", - "id": "Apache-2.0" - } - }, { "license": { "acknowledgement": "declared", @@ -323,18 +287,6 @@ } ], "licenses": [ - { - "license": { - "acknowledgement": "declared", - "id": "BSD-3-Clause" - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "License :: OSI Approved :: BSD License" - } - }, { "license": { "acknowledgement": "declared", @@ -470,6 +422,13 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", + "evidence": {}, + "licenses": [ + { + "acknowledgement": "declared", + "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" + } + ], "name": "with-extras", "type": "application", "version": "0.1.0" diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.xml.bin index 28cea0907..431df8f56 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.xml.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.xml.bin @@ -54,6 +54,10 @@ with-extras 0.1.0 depenndencies with license declaration accoring to PEP 639 + + MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) + + true @@ -123,9 +127,6 @@ SOFTWARE. 4.0 Define boolean algebras, create and parse boolean expressions and create custom boolean DSL. - - BSD-2-Clause - declared license file: CHANGELOG.rst @@ -418,43 +419,16 @@ SPDX-License-Identifier: BSD-2-Clause 43.0.1 cryptography is a package which provides cryptographic recipes and primitives to Python developers. - Apache-2.0 OR BSD-3-Clause - - pkg:pypi/cryptography@43.0.1 - - - https://cryptography.io/ - from packaging metadata Project-URL: documentation - - - https://github.com/pyca/cryptography/issues - from packaging metadata Project-URL: issues - - - https://github.com/pyca/cryptography/ - from packaging metadata Project-URL: source - - - https://cryptography.io/en/latest/changelog/ - from packaging metadata Project-URL: changelog - - - https://github.com/pyca/cryptography - from packaging metadata Project-URL: homepage - - - - - - declared license file: LICENSE - This software is made available under the terms of *either* of the licenses + + declared license file: LICENSE + This software is made available under the terms of *either* of the licenses found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made under the terms of *both* these licenses. - - - declared license file: LICENSE.APACHE - + + + declared license file: LICENSE.APACHE + Apache License Version 2.0, January 2004 https://www.apache.org/licenses/ @@ -657,10 +631,10 @@ under the terms of *both* these licenses. See the License for the specific language governing permissions and limitations under the License. - - - declared license file: LICENSE.BSD - Copyright (c) Individual contributors. + + + declared license file: LICENSE.BSD + Copyright (c) Individual contributors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -688,18 +662,37 @@ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - + + + pkg:pypi/cryptography@43.0.1 + + + https://cryptography.io/ + from packaging metadata Project-URL: documentation + + + https://github.com/pyca/cryptography/issues + from packaging metadata Project-URL: issues + + + https://github.com/pyca/cryptography/ + from packaging metadata Project-URL: source + + + https://cryptography.io/en/latest/changelog/ + from packaging metadata Project-URL: changelog + + + https://github.com/pyca/cryptography + from packaging metadata Project-URL: homepage + + jsonpointer 2.4 Identify specific nodes in a JSON document (RFC 6901) - - License :: OSI Approved :: BSD License - declared license file: AUTHORS Stefan Kögl <stefan@skoegl.net> @@ -737,10 +730,6 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - declared license of 'jsonpointer' - Modified BSD License - pkg:pypi/jsonpointer@2.4 @@ -755,9 +744,6 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30.3.0 license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic. - - Apache-2.0 - declared license file: AUTHORS.rst The following organizations or individuals have contributed to this code: @@ -1227,12 +1213,6 @@ https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 5.3.0 Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. - - BSD-3-Clause - - - License :: OSI Approved :: BSD License - declared license file: LICENSE.txt Copyright (c) 2004 Infrae. All rights reserved. diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.2.json.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.2.json.bin index 60dbfb7c1..e96dc6002 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.2.json.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.2.json.bin @@ -245,6 +245,11 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", + "licenses": [ + { + "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" + } + ], "name": "with-extras", "type": "application", "version": "0.1.0" diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.2.xml.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.2.xml.bin index 7f84c211c..dca173273 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.2.xml.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.2.xml.bin @@ -17,6 +17,9 @@ with-extras 0.1.0 depenndencies with license declaration accoring to PEP 639 + + MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) + diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.3.json.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.3.json.bin index 149dde3a2..910b0c2a6 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.3.json.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.3.json.bin @@ -67,6 +67,20 @@ { "bom-ref": "cryptography==43.0.1", "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", + "evidence": { + "licenses": [ + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + }, + { + "license": { + "name": "License :: OSI Approved :: BSD License" + } + } + ] + }, "externalReferences": [ { "comment": "from packaging metadata Project-URL: documentation", @@ -245,6 +259,12 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", + "evidence": {}, + "licenses": [ + { + "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" + } + ], "name": "with-extras", "type": "application", "version": "0.1.0" diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.3.xml.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.3.xml.bin index 24d43c9a4..c5cd4c7d4 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.3.xml.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.3.xml.bin @@ -17,6 +17,10 @@ with-extras 0.1.0 depenndencies with license declaration accoring to PEP 639 + + MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) + + true @@ -103,6 +107,16 @@ from packaging metadata Project-URL: homepage + + + + License :: OSI Approved :: Apache Software License + + + License :: OSI Approved :: BSD License + + + jsonpointer diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.4.json.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.4.json.bin index e8cfac9cb..47ae6c772 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.4.json.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.4.json.bin @@ -67,6 +67,20 @@ { "bom-ref": "cryptography==43.0.1", "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", + "evidence": { + "licenses": [ + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + }, + { + "license": { + "name": "License :: OSI Approved :: BSD License" + } + } + ] + }, "externalReferences": [ { "comment": "from packaging metadata Project-URL: documentation", @@ -245,6 +259,12 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", + "evidence": {}, + "licenses": [ + { + "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" + } + ], "name": "with-extras", "type": "application", "version": "0.1.0" diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.4.xml.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.4.xml.bin index d279b4edf..396965141 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.4.xml.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.4.xml.bin @@ -44,6 +44,10 @@ with-extras 0.1.0 depenndencies with license declaration accoring to PEP 639 + + MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) + + true @@ -130,6 +134,16 @@ from packaging metadata Project-URL: homepage + + + + License :: OSI Approved :: Apache Software License + + + License :: OSI Approved :: BSD License + + + jsonpointer diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.5.json.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.5.json.bin index 80f7c603b..30733e96e 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.5.json.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.5.json.bin @@ -67,6 +67,20 @@ { "bom-ref": "cryptography==43.0.1", "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", + "evidence": { + "licenses": [ + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + }, + { + "license": { + "name": "License :: OSI Approved :: BSD License" + } + } + ] + }, "externalReferences": [ { "comment": "from packaging metadata Project-URL: documentation", @@ -245,6 +259,12 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", + "evidence": {}, + "licenses": [ + { + "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" + } + ], "name": "with-extras", "type": "application", "version": "0.1.0" diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.5.xml.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.5.xml.bin index cf0b89298..a076f9d9a 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.5.xml.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.5.xml.bin @@ -54,6 +54,10 @@ with-extras 0.1.0 depenndencies with license declaration accoring to PEP 639 + + MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) + + true @@ -140,6 +144,16 @@ from packaging metadata Project-URL: homepage + + + + License :: OSI Approved :: Apache Software License + + + License :: OSI Approved :: BSD License + + + jsonpointer diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.6.json.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.6.json.bin index ef04c1266..513244ac8 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.6.json.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.6.json.bin @@ -69,6 +69,22 @@ { "bom-ref": "cryptography==43.0.1", "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", + "evidence": { + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: BSD License" + } + } + ] + }, "externalReferences": [ { "comment": "from packaging metadata Project-URL: documentation", @@ -253,6 +269,13 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", + "evidence": {}, + "licenses": [ + { + "acknowledgement": "declared", + "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" + } + ], "name": "with-extras", "type": "application", "version": "0.1.0" diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.6.xml.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.6.xml.bin index ad29652f9..ab3827fa7 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.6.xml.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.6.xml.bin @@ -54,6 +54,10 @@ with-extras 0.1.0 depenndencies with license declaration accoring to PEP 639 + + MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) + + true @@ -140,6 +144,16 @@ from packaging metadata Project-URL: homepage + + + + License :: OSI Approved :: Apache Software License + + + License :: OSI Approved :: BSD License + + + jsonpointer diff --git a/tests/_data/snapshots/environment/plain_local_1.3.json.bin b/tests/_data/snapshots/environment/plain_local_1.3.json.bin index 52504fb4f..efc4b3d3b 100644 --- a/tests/_data/snapshots/environment/plain_local_1.3.json.bin +++ b/tests/_data/snapshots/environment/plain_local_1.3.json.bin @@ -66,6 +66,20 @@ { "bom-ref": "package-c==23.42", "description": "some package C", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "PackageSource: Local", diff --git a/tests/_data/snapshots/environment/plain_local_1.3.xml.bin b/tests/_data/snapshots/environment/plain_local_1.3.xml.bin index 87fa1a2f3..0145c2d77 100644 --- a/tests/_data/snapshots/environment/plain_local_1.3.xml.bin +++ b/tests/_data/snapshots/environment/plain_local_1.3.xml.bin @@ -78,6 +78,16 @@ PackageSource: Local + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + diff --git a/tests/_data/snapshots/environment/plain_local_1.4.json.bin b/tests/_data/snapshots/environment/plain_local_1.4.json.bin index 9eecb3b55..51f5237bd 100644 --- a/tests/_data/snapshots/environment/plain_local_1.4.json.bin +++ b/tests/_data/snapshots/environment/plain_local_1.4.json.bin @@ -66,6 +66,20 @@ { "bom-ref": "package-c==23.42", "description": "some package C", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "PackageSource: Local", diff --git a/tests/_data/snapshots/environment/plain_local_1.4.xml.bin b/tests/_data/snapshots/environment/plain_local_1.4.xml.bin index 12cc36f1c..1688cf342 100644 --- a/tests/_data/snapshots/environment/plain_local_1.4.xml.bin +++ b/tests/_data/snapshots/environment/plain_local_1.4.xml.bin @@ -105,6 +105,16 @@ PackageSource: Local + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + diff --git a/tests/_data/snapshots/environment/plain_local_1.5.json.bin b/tests/_data/snapshots/environment/plain_local_1.5.json.bin index 861579e0f..57915c3f7 100644 --- a/tests/_data/snapshots/environment/plain_local_1.5.json.bin +++ b/tests/_data/snapshots/environment/plain_local_1.5.json.bin @@ -66,6 +66,20 @@ { "bom-ref": "package-c==23.42", "description": "some package C", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "PackageSource: Local", diff --git a/tests/_data/snapshots/environment/plain_local_1.5.xml.bin b/tests/_data/snapshots/environment/plain_local_1.5.xml.bin index a800704b6..47d7563e3 100644 --- a/tests/_data/snapshots/environment/plain_local_1.5.xml.bin +++ b/tests/_data/snapshots/environment/plain_local_1.5.xml.bin @@ -115,6 +115,16 @@ PackageSource: Local + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + diff --git a/tests/_data/snapshots/environment/plain_local_1.6.json.bin b/tests/_data/snapshots/environment/plain_local_1.6.json.bin index 9cf26e796..684714a03 100644 --- a/tests/_data/snapshots/environment/plain_local_1.6.json.bin +++ b/tests/_data/snapshots/environment/plain_local_1.6.json.bin @@ -69,6 +69,22 @@ { "bom-ref": "package-c==23.42", "description": "some package C", + "evidence": { + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "PackageSource: Local", diff --git a/tests/_data/snapshots/environment/plain_local_1.6.xml.bin b/tests/_data/snapshots/environment/plain_local_1.6.xml.bin index d1e6d73e8..45fad07d9 100644 --- a/tests/_data/snapshots/environment/plain_local_1.6.xml.bin +++ b/tests/_data/snapshots/environment/plain_local_1.6.xml.bin @@ -115,6 +115,16 @@ PackageSource: Local + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + diff --git a/tests/_data/snapshots/environment/plain_no-deps_1.3.json.bin b/tests/_data/snapshots/environment/plain_no-deps_1.3.json.bin index 3cfa3a05c..9254fa4cb 100644 --- a/tests/_data/snapshots/environment/plain_no-deps_1.3.json.bin +++ b/tests/_data/snapshots/environment/plain_no-deps_1.3.json.bin @@ -8,6 +8,20 @@ "component": { "bom-ref": "root-component", "description": "packages with all meta, but no deps", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/environment/plain_no-deps_1.3.xml.bin b/tests/_data/snapshots/environment/plain_no-deps_1.3.xml.bin index c326a1fb8..3add75d68 100644 --- a/tests/_data/snapshots/environment/plain_no-deps_1.3.xml.bin +++ b/tests/_data/snapshots/environment/plain_no-deps_1.3.xml.bin @@ -46,6 +46,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/environment/plain_no-deps_1.4.json.bin b/tests/_data/snapshots/environment/plain_no-deps_1.4.json.bin index 9c91dd7a0..11b1b8e7b 100644 --- a/tests/_data/snapshots/environment/plain_no-deps_1.4.json.bin +++ b/tests/_data/snapshots/environment/plain_no-deps_1.4.json.bin @@ -8,6 +8,20 @@ "component": { "bom-ref": "root-component", "description": "packages with all meta, but no deps", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/environment/plain_no-deps_1.4.xml.bin b/tests/_data/snapshots/environment/plain_no-deps_1.4.xml.bin index 374af51db..e66296747 100644 --- a/tests/_data/snapshots/environment/plain_no-deps_1.4.xml.bin +++ b/tests/_data/snapshots/environment/plain_no-deps_1.4.xml.bin @@ -73,6 +73,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/environment/plain_no-deps_1.5.json.bin b/tests/_data/snapshots/environment/plain_no-deps_1.5.json.bin index 5445beadf..6f36eac92 100644 --- a/tests/_data/snapshots/environment/plain_no-deps_1.5.json.bin +++ b/tests/_data/snapshots/environment/plain_no-deps_1.5.json.bin @@ -8,6 +8,20 @@ "component": { "bom-ref": "root-component", "description": "packages with all meta, but no deps", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/environment/plain_no-deps_1.5.xml.bin b/tests/_data/snapshots/environment/plain_no-deps_1.5.xml.bin index c08c97e18..0a26b51c4 100644 --- a/tests/_data/snapshots/environment/plain_no-deps_1.5.xml.bin +++ b/tests/_data/snapshots/environment/plain_no-deps_1.5.xml.bin @@ -83,6 +83,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/environment/plain_no-deps_1.6.json.bin b/tests/_data/snapshots/environment/plain_no-deps_1.6.json.bin index 4dba1ef28..960672b5b 100644 --- a/tests/_data/snapshots/environment/plain_no-deps_1.6.json.bin +++ b/tests/_data/snapshots/environment/plain_no-deps_1.6.json.bin @@ -8,6 +8,22 @@ "component": { "bom-ref": "root-component", "description": "packages with all meta, but no deps", + "evidence": { + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/environment/plain_no-deps_1.6.xml.bin b/tests/_data/snapshots/environment/plain_no-deps_1.6.xml.bin index aa980c042..805573888 100644 --- a/tests/_data/snapshots/environment/plain_no-deps_1.6.xml.bin +++ b/tests/_data/snapshots/environment/plain_no-deps_1.6.xml.bin @@ -83,6 +83,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/environment/plain_via-pdm_1.3.json.bin b/tests/_data/snapshots/environment/plain_via-pdm_1.3.json.bin index 2d8465d05..ee46f1835 100644 --- a/tests/_data/snapshots/environment/plain_via-pdm_1.3.json.bin +++ b/tests/_data/snapshots/environment/plain_via-pdm_1.3.json.bin @@ -38,6 +38,20 @@ "component": { "bom-ref": "root-component", "description": "environment via PDM", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "licenses": [ { "expression": "Apache-2.0 OR MIT" diff --git a/tests/_data/snapshots/environment/plain_via-pdm_1.3.xml.bin b/tests/_data/snapshots/environment/plain_via-pdm_1.3.xml.bin index 8b6cd0f1c..d790582fb 100644 --- a/tests/_data/snapshots/environment/plain_via-pdm_1.3.xml.bin +++ b/tests/_data/snapshots/environment/plain_via-pdm_1.3.xml.bin @@ -20,6 +20,16 @@ Apache-2.0 OR MIT + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/environment/plain_via-pdm_1.4.json.bin b/tests/_data/snapshots/environment/plain_via-pdm_1.4.json.bin index 7de548843..3d3359fa5 100644 --- a/tests/_data/snapshots/environment/plain_via-pdm_1.4.json.bin +++ b/tests/_data/snapshots/environment/plain_via-pdm_1.4.json.bin @@ -38,6 +38,20 @@ "component": { "bom-ref": "root-component", "description": "environment via PDM", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "licenses": [ { "expression": "Apache-2.0 OR MIT" diff --git a/tests/_data/snapshots/environment/plain_via-pdm_1.4.xml.bin b/tests/_data/snapshots/environment/plain_via-pdm_1.4.xml.bin index 766915a0e..c7d8692d7 100644 --- a/tests/_data/snapshots/environment/plain_via-pdm_1.4.xml.bin +++ b/tests/_data/snapshots/environment/plain_via-pdm_1.4.xml.bin @@ -47,6 +47,16 @@ Apache-2.0 OR MIT + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/environment/plain_via-pdm_1.5.json.bin b/tests/_data/snapshots/environment/plain_via-pdm_1.5.json.bin index 2128bdbac..677fd5dea 100644 --- a/tests/_data/snapshots/environment/plain_via-pdm_1.5.json.bin +++ b/tests/_data/snapshots/environment/plain_via-pdm_1.5.json.bin @@ -38,6 +38,20 @@ "component": { "bom-ref": "root-component", "description": "environment via PDM", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "licenses": [ { "expression": "Apache-2.0 OR MIT" diff --git a/tests/_data/snapshots/environment/plain_via-pdm_1.5.xml.bin b/tests/_data/snapshots/environment/plain_via-pdm_1.5.xml.bin index 0b2f2ca4d..caa1e581c 100644 --- a/tests/_data/snapshots/environment/plain_via-pdm_1.5.xml.bin +++ b/tests/_data/snapshots/environment/plain_via-pdm_1.5.xml.bin @@ -57,6 +57,16 @@ Apache-2.0 OR MIT + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/environment/plain_via-pdm_1.6.json.bin b/tests/_data/snapshots/environment/plain_via-pdm_1.6.json.bin index cf56a3c88..ab45221f9 100644 --- a/tests/_data/snapshots/environment/plain_via-pdm_1.6.json.bin +++ b/tests/_data/snapshots/environment/plain_via-pdm_1.6.json.bin @@ -39,6 +39,22 @@ "component": { "bom-ref": "root-component", "description": "environment via PDM", + "evidence": { + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "licenses": [ { "acknowledgement": "declared", diff --git a/tests/_data/snapshots/environment/plain_via-pdm_1.6.xml.bin b/tests/_data/snapshots/environment/plain_via-pdm_1.6.xml.bin index 0f8ffee96..44dd15f02 100644 --- a/tests/_data/snapshots/environment/plain_via-pdm_1.6.xml.bin +++ b/tests/_data/snapshots/environment/plain_via-pdm_1.6.xml.bin @@ -57,6 +57,16 @@ Apache-2.0 OR MIT + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/environment/plain_via-pipenv_1.3.json.bin b/tests/_data/snapshots/environment/plain_via-pipenv_1.3.json.bin index 52fe11eef..e1e621c05 100644 --- a/tests/_data/snapshots/environment/plain_via-pipenv_1.3.json.bin +++ b/tests/_data/snapshots/environment/plain_via-pipenv_1.3.json.bin @@ -38,6 +38,20 @@ "component": { "bom-ref": "root-component", "description": "environment via Pipenv", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/environment/plain_via-pipenv_1.3.xml.bin b/tests/_data/snapshots/environment/plain_via-pipenv_1.3.xml.bin index b317f5d85..c42bcd765 100644 --- a/tests/_data/snapshots/environment/plain_via-pipenv_1.3.xml.bin +++ b/tests/_data/snapshots/environment/plain_via-pipenv_1.3.xml.bin @@ -46,6 +46,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/environment/plain_via-pipenv_1.4.json.bin b/tests/_data/snapshots/environment/plain_via-pipenv_1.4.json.bin index ebddcb7d3..a07e9717a 100644 --- a/tests/_data/snapshots/environment/plain_via-pipenv_1.4.json.bin +++ b/tests/_data/snapshots/environment/plain_via-pipenv_1.4.json.bin @@ -38,6 +38,20 @@ "component": { "bom-ref": "root-component", "description": "environment via Pipenv", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/environment/plain_via-pipenv_1.4.xml.bin b/tests/_data/snapshots/environment/plain_via-pipenv_1.4.xml.bin index e56884315..5e9b64ac4 100644 --- a/tests/_data/snapshots/environment/plain_via-pipenv_1.4.xml.bin +++ b/tests/_data/snapshots/environment/plain_via-pipenv_1.4.xml.bin @@ -73,6 +73,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/environment/plain_via-pipenv_1.5.json.bin b/tests/_data/snapshots/environment/plain_via-pipenv_1.5.json.bin index 21836742d..854fe32c2 100644 --- a/tests/_data/snapshots/environment/plain_via-pipenv_1.5.json.bin +++ b/tests/_data/snapshots/environment/plain_via-pipenv_1.5.json.bin @@ -38,6 +38,20 @@ "component": { "bom-ref": "root-component", "description": "environment via Pipenv", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/environment/plain_via-pipenv_1.5.xml.bin b/tests/_data/snapshots/environment/plain_via-pipenv_1.5.xml.bin index 208a2e530..8cccfdf02 100644 --- a/tests/_data/snapshots/environment/plain_via-pipenv_1.5.xml.bin +++ b/tests/_data/snapshots/environment/plain_via-pipenv_1.5.xml.bin @@ -83,6 +83,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/environment/plain_via-pipenv_1.6.json.bin b/tests/_data/snapshots/environment/plain_via-pipenv_1.6.json.bin index 0c8973f9e..2e2c59bb3 100644 --- a/tests/_data/snapshots/environment/plain_via-pipenv_1.6.json.bin +++ b/tests/_data/snapshots/environment/plain_via-pipenv_1.6.json.bin @@ -39,6 +39,22 @@ "component": { "bom-ref": "root-component", "description": "environment via Pipenv", + "evidence": { + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/environment/plain_via-pipenv_1.6.xml.bin b/tests/_data/snapshots/environment/plain_via-pipenv_1.6.xml.bin index 741acb5fe..9cfbc58aa 100644 --- a/tests/_data/snapshots/environment/plain_via-pipenv_1.6.xml.bin +++ b/tests/_data/snapshots/environment/plain_via-pipenv_1.6.xml.bin @@ -83,6 +83,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/environment/plain_via-poetry_1.3.json.bin b/tests/_data/snapshots/environment/plain_via-poetry_1.3.json.bin index 4b29daa2c..c419de978 100644 --- a/tests/_data/snapshots/environment/plain_via-poetry_1.3.json.bin +++ b/tests/_data/snapshots/environment/plain_via-poetry_1.3.json.bin @@ -38,6 +38,20 @@ "component": { "bom-ref": "root-component", "description": "environment via Poetry", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from poetry: documentation", diff --git a/tests/_data/snapshots/environment/plain_via-poetry_1.3.xml.bin b/tests/_data/snapshots/environment/plain_via-poetry_1.3.xml.bin index cc721dde5..3df05578e 100644 --- a/tests/_data/snapshots/environment/plain_via-poetry_1.3.xml.bin +++ b/tests/_data/snapshots/environment/plain_via-poetry_1.3.xml.bin @@ -46,6 +46,16 @@ from poetry: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/environment/plain_via-poetry_1.4.json.bin b/tests/_data/snapshots/environment/plain_via-poetry_1.4.json.bin index 18f33bb32..731ce7675 100644 --- a/tests/_data/snapshots/environment/plain_via-poetry_1.4.json.bin +++ b/tests/_data/snapshots/environment/plain_via-poetry_1.4.json.bin @@ -38,6 +38,20 @@ "component": { "bom-ref": "root-component", "description": "environment via Poetry", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from poetry: documentation", diff --git a/tests/_data/snapshots/environment/plain_via-poetry_1.4.xml.bin b/tests/_data/snapshots/environment/plain_via-poetry_1.4.xml.bin index f56a2e3d5..8c0927bd1 100644 --- a/tests/_data/snapshots/environment/plain_via-poetry_1.4.xml.bin +++ b/tests/_data/snapshots/environment/plain_via-poetry_1.4.xml.bin @@ -73,6 +73,16 @@ from poetry: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/environment/plain_via-poetry_1.5.json.bin b/tests/_data/snapshots/environment/plain_via-poetry_1.5.json.bin index 8d4d2fee0..999cdf0af 100644 --- a/tests/_data/snapshots/environment/plain_via-poetry_1.5.json.bin +++ b/tests/_data/snapshots/environment/plain_via-poetry_1.5.json.bin @@ -38,6 +38,20 @@ "component": { "bom-ref": "root-component", "description": "environment via Poetry", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from poetry: documentation", diff --git a/tests/_data/snapshots/environment/plain_via-poetry_1.5.xml.bin b/tests/_data/snapshots/environment/plain_via-poetry_1.5.xml.bin index 56587e1c0..bee409570 100644 --- a/tests/_data/snapshots/environment/plain_via-poetry_1.5.xml.bin +++ b/tests/_data/snapshots/environment/plain_via-poetry_1.5.xml.bin @@ -83,6 +83,16 @@ from poetry: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/environment/plain_via-poetry_1.6.json.bin b/tests/_data/snapshots/environment/plain_via-poetry_1.6.json.bin index bd203fecf..8977068a5 100644 --- a/tests/_data/snapshots/environment/plain_via-poetry_1.6.json.bin +++ b/tests/_data/snapshots/environment/plain_via-poetry_1.6.json.bin @@ -39,6 +39,22 @@ "component": { "bom-ref": "root-component", "description": "environment via Poetry", + "evidence": { + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from poetry: documentation", diff --git a/tests/_data/snapshots/environment/plain_via-poetry_1.6.xml.bin b/tests/_data/snapshots/environment/plain_via-poetry_1.6.xml.bin index e68e76c04..dfdcb42d4 100644 --- a/tests/_data/snapshots/environment/plain_via-poetry_1.6.xml.bin +++ b/tests/_data/snapshots/environment/plain_via-poetry_1.6.xml.bin @@ -83,6 +83,16 @@ from poetry: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/environment/plain_via-uv_1.3.json.bin b/tests/_data/snapshots/environment/plain_via-uv_1.3.json.bin index 69b1c7c72..de9108d0d 100644 --- a/tests/_data/snapshots/environment/plain_via-uv_1.3.json.bin +++ b/tests/_data/snapshots/environment/plain_via-uv_1.3.json.bin @@ -38,6 +38,20 @@ "component": { "bom-ref": "root-component", "description": "environment via uv", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/environment/plain_via-uv_1.3.xml.bin b/tests/_data/snapshots/environment/plain_via-uv_1.3.xml.bin index 49e59fd6b..056f7cfc8 100644 --- a/tests/_data/snapshots/environment/plain_via-uv_1.3.xml.bin +++ b/tests/_data/snapshots/environment/plain_via-uv_1.3.xml.bin @@ -46,6 +46,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/environment/plain_via-uv_1.4.json.bin b/tests/_data/snapshots/environment/plain_via-uv_1.4.json.bin index 013509a07..692935df4 100644 --- a/tests/_data/snapshots/environment/plain_via-uv_1.4.json.bin +++ b/tests/_data/snapshots/environment/plain_via-uv_1.4.json.bin @@ -38,6 +38,20 @@ "component": { "bom-ref": "root-component", "description": "environment via uv", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/environment/plain_via-uv_1.4.xml.bin b/tests/_data/snapshots/environment/plain_via-uv_1.4.xml.bin index 91bb7c4de..59f9266eb 100644 --- a/tests/_data/snapshots/environment/plain_via-uv_1.4.xml.bin +++ b/tests/_data/snapshots/environment/plain_via-uv_1.4.xml.bin @@ -73,6 +73,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/environment/plain_via-uv_1.5.json.bin b/tests/_data/snapshots/environment/plain_via-uv_1.5.json.bin index ff2632a5e..4216572ee 100644 --- a/tests/_data/snapshots/environment/plain_via-uv_1.5.json.bin +++ b/tests/_data/snapshots/environment/plain_via-uv_1.5.json.bin @@ -38,6 +38,20 @@ "component": { "bom-ref": "root-component", "description": "environment via uv", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/environment/plain_via-uv_1.5.xml.bin b/tests/_data/snapshots/environment/plain_via-uv_1.5.xml.bin index 5c5a342f4..d5a017f75 100644 --- a/tests/_data/snapshots/environment/plain_via-uv_1.5.xml.bin +++ b/tests/_data/snapshots/environment/plain_via-uv_1.5.xml.bin @@ -83,6 +83,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/environment/plain_via-uv_1.6.json.bin b/tests/_data/snapshots/environment/plain_via-uv_1.6.json.bin index 76c94e9e2..ac5e5034e 100644 --- a/tests/_data/snapshots/environment/plain_via-uv_1.6.json.bin +++ b/tests/_data/snapshots/environment/plain_via-uv_1.6.json.bin @@ -39,6 +39,22 @@ "component": { "bom-ref": "root-component", "description": "environment via uv", + "evidence": { + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/environment/plain_via-uv_1.6.xml.bin b/tests/_data/snapshots/environment/plain_via-uv_1.6.xml.bin index f89b2f64e..8a23e33c3 100644 --- a/tests/_data/snapshots/environment/plain_via-uv_1.6.xml.bin +++ b/tests/_data/snapshots/environment/plain_via-uv_1.6.xml.bin @@ -83,6 +83,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/environment/plain_with-license-file_1.2.json.bin b/tests/_data/snapshots/environment/plain_with-license-file_1.2.json.bin index 7c99638f5..09915d4ce 100644 --- a/tests/_data/snapshots/environment/plain_with-license-file_1.2.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-file_1.2.json.bin @@ -8,18 +8,6 @@ "component": { "bom-ref": "root-component", "description": "with licenses from file, instead of SPDX ID/Expression", - "licenses": [ - { - "license": { - "name": "declared license of 'with-license-file'", - "text": { - "content": "VGhpcyBpcyB0aGUgbGljZW5zZSB0ZXh0IG9mIHRoaXMgY29tcG9uZW50LgpJdCBpcyBleHBlY3RlZCB0byBiZSBhdmFpbGFibGUgaW4gYSBTQk9NLgo=", - "contentType": "text/plain", - "encoding": "base64" - } - } - } - ], "name": "with-license-file", "type": "application", "version": "0.1.0" diff --git a/tests/_data/snapshots/environment/plain_with-license-file_1.2.xml.bin b/tests/_data/snapshots/environment/plain_with-license-file_1.2.xml.bin index 710c26d9f..5864bcc22 100644 --- a/tests/_data/snapshots/environment/plain_with-license-file_1.2.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-file_1.2.xml.bin @@ -17,12 +17,6 @@ with-license-file 0.1.0 with licenses from file, instead of SPDX ID/Expression - - - declared license of 'with-license-file' - VGhpcyBpcyB0aGUgbGljZW5zZSB0ZXh0IG9mIHRoaXMgY29tcG9uZW50LgpJdCBpcyBleHBlY3RlZCB0byBiZSBhdmFpbGFibGUgaW4gYSBTQk9NLgo= - - diff --git a/tests/_data/snapshots/environment/plain_with-license-file_1.3.json.bin b/tests/_data/snapshots/environment/plain_with-license-file_1.3.json.bin index 2e92b0936..80803a69f 100644 --- a/tests/_data/snapshots/environment/plain_with-license-file_1.3.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-file_1.3.json.bin @@ -8,18 +8,6 @@ "component": { "bom-ref": "root-component", "description": "with licenses from file, instead of SPDX ID/Expression", - "licenses": [ - { - "license": { - "name": "declared license of 'with-license-file'", - "text": { - "content": "VGhpcyBpcyB0aGUgbGljZW5zZSB0ZXh0IG9mIHRoaXMgY29tcG9uZW50LgpJdCBpcyBleHBlY3RlZCB0byBiZSBhdmFpbGFibGUgaW4gYSBTQk9NLgo=", - "contentType": "text/plain", - "encoding": "base64" - } - } - } - ], "name": "with-license-file", "type": "application", "version": "0.1.0" diff --git a/tests/_data/snapshots/environment/plain_with-license-file_1.3.xml.bin b/tests/_data/snapshots/environment/plain_with-license-file_1.3.xml.bin index 29a9c22a6..4f7e90c8f 100644 --- a/tests/_data/snapshots/environment/plain_with-license-file_1.3.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-file_1.3.xml.bin @@ -17,12 +17,6 @@ with-license-file 0.1.0 with licenses from file, instead of SPDX ID/Expression - - - declared license of 'with-license-file' - VGhpcyBpcyB0aGUgbGljZW5zZSB0ZXh0IG9mIHRoaXMgY29tcG9uZW50LgpJdCBpcyBleHBlY3RlZCB0byBiZSBhdmFpbGFibGUgaW4gYSBTQk9NLgo= - - true diff --git a/tests/_data/snapshots/environment/plain_with-license-file_1.4.json.bin b/tests/_data/snapshots/environment/plain_with-license-file_1.4.json.bin index 8d424333d..bcf506567 100644 --- a/tests/_data/snapshots/environment/plain_with-license-file_1.4.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-file_1.4.json.bin @@ -8,18 +8,6 @@ "component": { "bom-ref": "root-component", "description": "with licenses from file, instead of SPDX ID/Expression", - "licenses": [ - { - "license": { - "name": "declared license of 'with-license-file'", - "text": { - "content": "VGhpcyBpcyB0aGUgbGljZW5zZSB0ZXh0IG9mIHRoaXMgY29tcG9uZW50LgpJdCBpcyBleHBlY3RlZCB0byBiZSBhdmFpbGFibGUgaW4gYSBTQk9NLgo=", - "contentType": "text/plain", - "encoding": "base64" - } - } - } - ], "name": "with-license-file", "type": "application", "version": "0.1.0" diff --git a/tests/_data/snapshots/environment/plain_with-license-file_1.4.xml.bin b/tests/_data/snapshots/environment/plain_with-license-file_1.4.xml.bin index 08fd7e21f..a0b16db16 100644 --- a/tests/_data/snapshots/environment/plain_with-license-file_1.4.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-file_1.4.xml.bin @@ -44,12 +44,6 @@ with-license-file 0.1.0 with licenses from file, instead of SPDX ID/Expression - - - declared license of 'with-license-file' - VGhpcyBpcyB0aGUgbGljZW5zZSB0ZXh0IG9mIHRoaXMgY29tcG9uZW50LgpJdCBpcyBleHBlY3RlZCB0byBiZSBhdmFpbGFibGUgaW4gYSBTQk9NLgo= - - true diff --git a/tests/_data/snapshots/environment/plain_with-license-file_1.5.json.bin b/tests/_data/snapshots/environment/plain_with-license-file_1.5.json.bin index ab180b3f9..baabd67c2 100644 --- a/tests/_data/snapshots/environment/plain_with-license-file_1.5.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-file_1.5.json.bin @@ -8,18 +8,6 @@ "component": { "bom-ref": "root-component", "description": "with licenses from file, instead of SPDX ID/Expression", - "licenses": [ - { - "license": { - "name": "declared license of 'with-license-file'", - "text": { - "content": "VGhpcyBpcyB0aGUgbGljZW5zZSB0ZXh0IG9mIHRoaXMgY29tcG9uZW50LgpJdCBpcyBleHBlY3RlZCB0byBiZSBhdmFpbGFibGUgaW4gYSBTQk9NLgo=", - "contentType": "text/plain", - "encoding": "base64" - } - } - } - ], "name": "with-license-file", "type": "application", "version": "0.1.0" diff --git a/tests/_data/snapshots/environment/plain_with-license-file_1.5.xml.bin b/tests/_data/snapshots/environment/plain_with-license-file_1.5.xml.bin index 5c5345a5e..395033b50 100644 --- a/tests/_data/snapshots/environment/plain_with-license-file_1.5.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-file_1.5.xml.bin @@ -54,12 +54,6 @@ with-license-file 0.1.0 with licenses from file, instead of SPDX ID/Expression - - - declared license of 'with-license-file' - VGhpcyBpcyB0aGUgbGljZW5zZSB0ZXh0IG9mIHRoaXMgY29tcG9uZW50LgpJdCBpcyBleHBlY3RlZCB0byBiZSBhdmFpbGFibGUgaW4gYSBTQk9NLgo= - - true diff --git a/tests/_data/snapshots/environment/plain_with-license-file_1.6.json.bin b/tests/_data/snapshots/environment/plain_with-license-file_1.6.json.bin index 8da5bfc29..ab32c6620 100644 --- a/tests/_data/snapshots/environment/plain_with-license-file_1.6.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-file_1.6.json.bin @@ -8,19 +8,6 @@ "component": { "bom-ref": "root-component", "description": "with licenses from file, instead of SPDX ID/Expression", - "licenses": [ - { - "license": { - "acknowledgement": "declared", - "name": "declared license of 'with-license-file'", - "text": { - "content": "VGhpcyBpcyB0aGUgbGljZW5zZSB0ZXh0IG9mIHRoaXMgY29tcG9uZW50LgpJdCBpcyBleHBlY3RlZCB0byBiZSBhdmFpbGFibGUgaW4gYSBTQk9NLgo=", - "contentType": "text/plain", - "encoding": "base64" - } - } - } - ], "name": "with-license-file", "type": "application", "version": "0.1.0" diff --git a/tests/_data/snapshots/environment/plain_with-license-file_1.6.xml.bin b/tests/_data/snapshots/environment/plain_with-license-file_1.6.xml.bin index 0af5025b0..d7477e137 100644 --- a/tests/_data/snapshots/environment/plain_with-license-file_1.6.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-file_1.6.xml.bin @@ -54,12 +54,6 @@ with-license-file 0.1.0 with licenses from file, instead of SPDX ID/Expression - - - declared license of 'with-license-file' - VGhpcyBpcyB0aGUgbGljZW5zZSB0ZXh0IG9mIHRoaXMgY29tcG9uZW50LgpJdCBpcyBleHBlY3RlZCB0byBiZSBhdmFpbGFibGUgaW4gYSBTQk9NLgo= - - true diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.2.json.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.2.json.bin index 60dbfb7c1..e96dc6002 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.2.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.2.json.bin @@ -245,6 +245,11 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", + "licenses": [ + { + "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" + } + ], "name": "with-extras", "type": "application", "version": "0.1.0" diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.2.xml.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.2.xml.bin index 7f84c211c..dca173273 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.2.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.2.xml.bin @@ -17,6 +17,9 @@ with-extras 0.1.0 depenndencies with license declaration accoring to PEP 639 + + MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) + diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.json.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.json.bin index 149dde3a2..910b0c2a6 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.json.bin @@ -67,6 +67,20 @@ { "bom-ref": "cryptography==43.0.1", "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", + "evidence": { + "licenses": [ + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + }, + { + "license": { + "name": "License :: OSI Approved :: BSD License" + } + } + ] + }, "externalReferences": [ { "comment": "from packaging metadata Project-URL: documentation", @@ -245,6 +259,12 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", + "evidence": {}, + "licenses": [ + { + "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" + } + ], "name": "with-extras", "type": "application", "version": "0.1.0" diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.xml.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.xml.bin index 24d43c9a4..c5cd4c7d4 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.xml.bin @@ -17,6 +17,10 @@ with-extras 0.1.0 depenndencies with license declaration accoring to PEP 639 + + MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) + + true @@ -103,6 +107,16 @@ from packaging metadata Project-URL: homepage + + + + License :: OSI Approved :: Apache Software License + + + License :: OSI Approved :: BSD License + + + jsonpointer diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.json.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.json.bin index e8cfac9cb..47ae6c772 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.json.bin @@ -67,6 +67,20 @@ { "bom-ref": "cryptography==43.0.1", "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", + "evidence": { + "licenses": [ + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + }, + { + "license": { + "name": "License :: OSI Approved :: BSD License" + } + } + ] + }, "externalReferences": [ { "comment": "from packaging metadata Project-URL: documentation", @@ -245,6 +259,12 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", + "evidence": {}, + "licenses": [ + { + "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" + } + ], "name": "with-extras", "type": "application", "version": "0.1.0" diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.xml.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.xml.bin index d279b4edf..396965141 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.xml.bin @@ -44,6 +44,10 @@ with-extras 0.1.0 depenndencies with license declaration accoring to PEP 639 + + MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) + + true @@ -130,6 +134,16 @@ from packaging metadata Project-URL: homepage + + + + License :: OSI Approved :: Apache Software License + + + License :: OSI Approved :: BSD License + + + jsonpointer diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.json.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.json.bin index 80f7c603b..30733e96e 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.json.bin @@ -67,6 +67,20 @@ { "bom-ref": "cryptography==43.0.1", "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", + "evidence": { + "licenses": [ + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + }, + { + "license": { + "name": "License :: OSI Approved :: BSD License" + } + } + ] + }, "externalReferences": [ { "comment": "from packaging metadata Project-URL: documentation", @@ -245,6 +259,12 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", + "evidence": {}, + "licenses": [ + { + "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" + } + ], "name": "with-extras", "type": "application", "version": "0.1.0" diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.xml.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.xml.bin index cf0b89298..a076f9d9a 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.xml.bin @@ -54,6 +54,10 @@ with-extras 0.1.0 depenndencies with license declaration accoring to PEP 639 + + MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) + + true @@ -140,6 +144,16 @@ from packaging metadata Project-URL: homepage + + + + License :: OSI Approved :: Apache Software License + + + License :: OSI Approved :: BSD License + + + jsonpointer diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.json.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.json.bin index ef04c1266..513244ac8 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.json.bin @@ -69,6 +69,22 @@ { "bom-ref": "cryptography==43.0.1", "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", + "evidence": { + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: BSD License" + } + } + ] + }, "externalReferences": [ { "comment": "from packaging metadata Project-URL: documentation", @@ -253,6 +269,13 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", + "evidence": {}, + "licenses": [ + { + "acknowledgement": "declared", + "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" + } + ], "name": "with-extras", "type": "application", "version": "0.1.0" diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.xml.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.xml.bin index ad29652f9..ab3827fa7 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.xml.bin @@ -54,6 +54,10 @@ with-extras 0.1.0 depenndencies with license declaration accoring to PEP 639 + + MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) + + true @@ -140,6 +144,16 @@ from packaging metadata Project-URL: homepage + + + + License :: OSI Approved :: Apache Software License + + + License :: OSI Approved :: BSD License + + + jsonpointer diff --git a/tests/_data/snapshots/environment/plain_with-license-text_1.2.xml.bin b/tests/_data/snapshots/environment/plain_with-license-text_1.2.xml.bin index a8cff13d5..5c3682769 100644 --- a/tests/_data/snapshots/environment/plain_with-license-text_1.2.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-text_1.2.xml.bin @@ -19,9 +19,7 @@ with licenses as text, instead of SPDX ID/Expression - declared license of 'with-license-text' - This is the license text of this component. -It is expected to be available in a SBOM. + This is the license text of this component. It is expected to be available in a SBOM. diff --git a/tests/_data/snapshots/environment/plain_with-license-text_1.3.json.bin b/tests/_data/snapshots/environment/plain_with-license-text_1.3.json.bin index ff26e8763..c73d2b87d 100644 --- a/tests/_data/snapshots/environment/plain_with-license-text_1.3.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-text_1.3.json.bin @@ -66,6 +66,20 @@ { "bom-ref": "package-c==23.42", "description": "some package C", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "PackageSource: Archive", @@ -110,11 +124,7 @@ "licenses": [ { "license": { - "name": "declared license of 'with-license-text'", - "text": { - "content": "This is the license text of this component.\nIt is expected to be available in a SBOM.", - "contentType": "text/plain" - } + "name": "This is the license text of this component.\nIt is expected to be available in a SBOM." } } ], diff --git a/tests/_data/snapshots/environment/plain_with-license-text_1.3.xml.bin b/tests/_data/snapshots/environment/plain_with-license-text_1.3.xml.bin index feface8ad..5f57fd25b 100644 --- a/tests/_data/snapshots/environment/plain_with-license-text_1.3.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-text_1.3.xml.bin @@ -19,9 +19,7 @@ with licenses as text, instead of SPDX ID/Expression - declared license of 'with-license-text' - This is the license text of this component. -It is expected to be available in a SBOM. + This is the license text of this component. It is expected to be available in a SBOM. @@ -88,6 +86,16 @@ It is expected to be available in a SBOM. + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + diff --git a/tests/_data/snapshots/environment/plain_with-license-text_1.4.json.bin b/tests/_data/snapshots/environment/plain_with-license-text_1.4.json.bin index 01f585318..298516884 100644 --- a/tests/_data/snapshots/environment/plain_with-license-text_1.4.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-text_1.4.json.bin @@ -66,6 +66,20 @@ { "bom-ref": "package-c==23.42", "description": "some package C", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "PackageSource: Archive", @@ -110,11 +124,7 @@ "licenses": [ { "license": { - "name": "declared license of 'with-license-text'", - "text": { - "content": "This is the license text of this component.\nIt is expected to be available in a SBOM.", - "contentType": "text/plain" - } + "name": "This is the license text of this component.\nIt is expected to be available in a SBOM." } } ], diff --git a/tests/_data/snapshots/environment/plain_with-license-text_1.4.xml.bin b/tests/_data/snapshots/environment/plain_with-license-text_1.4.xml.bin index 96c298089..715884992 100644 --- a/tests/_data/snapshots/environment/plain_with-license-text_1.4.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-text_1.4.xml.bin @@ -46,9 +46,7 @@ with licenses as text, instead of SPDX ID/Expression - declared license of 'with-license-text' - This is the license text of this component. -It is expected to be available in a SBOM. + This is the license text of this component. It is expected to be available in a SBOM. @@ -115,6 +113,16 @@ It is expected to be available in a SBOM. + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + diff --git a/tests/_data/snapshots/environment/plain_with-license-text_1.5.json.bin b/tests/_data/snapshots/environment/plain_with-license-text_1.5.json.bin index 3ddaa8d0f..dfe9e4fb3 100644 --- a/tests/_data/snapshots/environment/plain_with-license-text_1.5.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-text_1.5.json.bin @@ -66,6 +66,20 @@ { "bom-ref": "package-c==23.42", "description": "some package C", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "PackageSource: Archive", @@ -110,11 +124,7 @@ "licenses": [ { "license": { - "name": "declared license of 'with-license-text'", - "text": { - "content": "This is the license text of this component.\nIt is expected to be available in a SBOM.", - "contentType": "text/plain" - } + "name": "This is the license text of this component.\nIt is expected to be available in a SBOM." } } ], diff --git a/tests/_data/snapshots/environment/plain_with-license-text_1.5.xml.bin b/tests/_data/snapshots/environment/plain_with-license-text_1.5.xml.bin index 96f4f29fc..4e6dcf8b7 100644 --- a/tests/_data/snapshots/environment/plain_with-license-text_1.5.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-text_1.5.xml.bin @@ -56,9 +56,7 @@ with licenses as text, instead of SPDX ID/Expression - declared license of 'with-license-text' - This is the license text of this component. -It is expected to be available in a SBOM. + This is the license text of this component. It is expected to be available in a SBOM. @@ -125,6 +123,16 @@ It is expected to be available in a SBOM. + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + diff --git a/tests/_data/snapshots/environment/plain_with-license-text_1.6.json.bin b/tests/_data/snapshots/environment/plain_with-license-text_1.6.json.bin index 01f249ed9..e28ebcd87 100644 --- a/tests/_data/snapshots/environment/plain_with-license-text_1.6.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-text_1.6.json.bin @@ -69,6 +69,22 @@ { "bom-ref": "package-c==23.42", "description": "some package C", + "evidence": { + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "PackageSource: Archive", @@ -115,11 +131,7 @@ { "license": { "acknowledgement": "declared", - "name": "declared license of 'with-license-text'", - "text": { - "content": "This is the license text of this component.\nIt is expected to be available in a SBOM.", - "contentType": "text/plain" - } + "name": "This is the license text of this component.\nIt is expected to be available in a SBOM." } } ], diff --git a/tests/_data/snapshots/environment/plain_with-license-text_1.6.xml.bin b/tests/_data/snapshots/environment/plain_with-license-text_1.6.xml.bin index a0d73953a..55b963d95 100644 --- a/tests/_data/snapshots/environment/plain_with-license-text_1.6.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-text_1.6.xml.bin @@ -56,9 +56,7 @@ with licenses as text, instead of SPDX ID/Expression - declared license of 'with-license-text' - This is the license text of this component. -It is expected to be available in a SBOM. + This is the license text of this component. It is expected to be available in a SBOM. @@ -125,6 +123,16 @@ It is expected to be available in a SBOM. + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.1.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.1.xml.bin index 4e48511fa..ca121496e 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.1.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.1.xml.bin @@ -9,6 +9,31 @@ MIT + + declared license file: LICENSE + The MIT License (MIT) + +Copyright (c) 2015 Hynek Schlawack and the attrs contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + pkg:pypi/attrs@23.2.0 @@ -40,7 +65,282 @@ Define boolean algebras, create and parse boolean expressions and create custom boolean DSL. - BSD-2-Clause + declared license file: CHANGELOG.rst + +Changelog +========= + + +next +---- + + +4.0 (2022-05-05) +---------------- + +* API changes + + * Drop support for Python 2. + * Test on Python 3.10 + * Make Expression.sort_order an instance attributes and not a class attribute + +* Misc. + + * Correct licensing documentation + * Improve docstringf and apply minor refactorings + * Adopt black code style and isort for imports + * Drop Travis and use GitHub actions for CI + + +3.8 (2020-06-10) +---------------- + +* API changes + + * Add support for evaluation of boolean expression. + Thank you to Lars van Gemerden @gemerden + +* Bug fixes + + * Fix parsing of tokens that have a number as the first character. + Thank you to Jeff Cohen @ jcohen28 + * Restore proper Python 2 compatibility. + Thank you to Benjy Weinberger @benjyw + +* Improve documentation + + * Add pointers to Linux distro packages. + Thank you to Max Mehl @mxmehl and Carmen Bianca Bakker @carmenbianca + * Fix typo. + Thank you to Gabriel Niebler @der-gabe + + +3.7 (2019-10-04) +---------------- + +* API changes + + * Add new sort argument to simplify() to optionally not sort when simplifying + expressions (e.g. not applying "commutativity"). Thank you to Steven Esser + @majurg for this + * Add new argument to tokenizer to optionally accept extra characters in symbol + tokens. Thank you to @carpie for this + + +3.6 (2018-08-06) +---------------- + +* No API changes + +* Bug fixes + + * Fix De Morgan's laws effect on double negation propositions. Thank you to Douglas Cardoso for this + * Improve error checking when parsing + + +3.5 (Nov 1, 2017) +----------------- + +* No API changes + +* Bug fixes + + * Documentation updates and add testing for Python 3.6. Thank you to Alexander Lisianoi @alisianoi + * Improve testng and expression equivalence checks + * Improve subs() method to an expression + + + +3.4 (May 12, 2017) +------------------ + +* No API changes + +* Bug fixes and improvements + + * Fix various documentation typos and improve tests . Thank you to Alexander Lisianoi @alisianoi + * Fix handling for literals vs. symbols in negations Thank you to @YaronK + + +3.3 (2017-02-09) +---------------- + +* API changes + + * #40 and #50 Expression.subs() now takes 'default' thanks to @kronuz + * #45 simplify=False is now the default for parse and related functions or methods. + * #40 Use "&" and "|" as default operators + +* Bug fixes + + * #60 Fix bug for "a or b c" which is not a valid expression + * #58 Fix math formula display in docs + * Improve handling of parse errors + + +2.0.0 (2016-05-11) +------------------ + +* API changes + + * New algebra definition. Refactored class hierarchy. Improved parsing. + +* New features + + * possibility to subclass algebra definition + * new normal forms shortcuts for DNF and CNF. + + +1.1 (2016-04-06) +------------------ + +* Initial release on Pypi. + + + + declared license file: LICENSE.txt + Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + + declared license file: README.rst + boolean.py +========== + +"boolean.py" is a small library implementing a boolean algebra. It +defines two base elements, TRUE and FALSE, and a Symbol class that can +take on one of these two values. Calculations are done in terms of AND, +OR and NOT - other compositions like XOR and NAND are not implemented +but can be emulated with AND or and NOT. Expressions are constructed +from parsed strings or in Python. + +It runs on Python 3.6+ +You can use older version 3.x for Python 2.7+ support. + +https://github.com/bastikr/boolean.py + +Build status: |Build Status| + + +Example +------- + +:: + + >>> import boolean + >>> algebra = boolean.BooleanAlgebra() + >>> expression1 = algebra.parse(u'apple and (oranges or banana) and not banana', simplify=False) + >>> expression1 + AND(Symbol('apple'), OR(Symbol('oranges'), Symbol('banana')), NOT(Symbol('banana'))) + + >>> expression2 = algebra.parse('(oranges | banana) and not banana & apple', simplify=True) + >>> expression2 + AND(Symbol('apple'), NOT(Symbol('banana')), Symbol('oranges')) + + >>> expression1 == expression2 + False + >>> expression1.simplify() == expression2 + True + + +Documentation +------------- + +http://readthedocs.org/docs/booleanpy/en/latest/ + + +Installation +------------ + +Installation via pip +~~~~~~~~~~~~~~~~~~~~ + +To install boolean.py, you need to have the following pieces of software +on your computer: + +- Python 3.6+ +- pip + +You then only need to run the following command: + +``pip install boolean.py`` + + +Installation via package managers +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +There are packages available for easy install on some operating systems. +You are welcome to help us package this tool for more distributions! + +- boolean.py has been packaged as Arch Linux, Fedora, openSus, + nixpkgs, Guix, DragonFly and FreeBSD + `packages <https://repology.org/project/python:boolean.py/versions>`__ . + +In particular: + +- Arch Linux (AUR): + `python-boolean.py <https://aur.archlinux.org/packages/python-boolean.py/>`__ +- Fedora: + `python-boolean.py <https://apps.fedoraproject.org/packages/python-boolean.py>`__ +- openSUSE: + `python-boolean.py <https://software.opensuse.org/package/python-boolean.py>`__ + + +Testing +------- + +Test ``boolean.py`` with your current Python environment: + +``python setup.py test`` + +Test with all of the supported Python environments using ``tox``: + +:: + + pip install -r requirements-dev.txt + tox + +If ``tox`` throws ``InterpreterNotFound``, limit it to python +interpreters that are actually installed on your machine: + +:: + + tox -e py36 + +Alternatively use pytest. + + +License +------- + +Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others +SPDX-License-Identifier: BSD-2-Clause + +.. |Build Status| image:: https://travis-ci.org/bastikr/boolean.py.svg?branch=master + :target: https://travis-ci.org/bastikr/boolean.py + pkg:pypi/boolean.py@4.0 @@ -56,7 +356,250 @@ 43.0.1 cryptography is a package which provides cryptographic recipes and primitives to Python developers. - Apache-2.0 OR BSD-3-Clause + + declared license file: LICENSE + This software is made available under the terms of *either* of the licenses +found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made +under the terms of *both* these licenses. + + + + declared license file: LICENSE.APACHE + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + + declared license file: LICENSE.BSD + Copyright (c) Individual contributors. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. Neither the name of PyCA Cryptography nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + pkg:pypi/cryptography@43.0.1 @@ -88,11 +631,41 @@ Identify specific nodes in a JSON document (RFC 6901) - License :: OSI Approved :: BSD License + declared license file: AUTHORS + Stefan Kögl <stefan@skoegl.net> +Alexander Shorin <kxepal@gmail.com> +Christopher J. White <chris@grierwhite.com> + - declared license of 'jsonpointer' - Modified BSD License + declared license file: LICENSE.txt + Copyright (c) 2011 Stefan Kögl <stefan@skoegl.net> +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + pkg:pypi/jsonpointer@2.4 @@ -109,7 +682,459 @@ license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic. - Apache-2.0 + declared license file: AUTHORS.rst + The following organizations or individuals have contributed to this code: + +- Ayan Sinha Mahapatra @AyanSinhaMahapatra +- Carmen Bianca Bakker @carmenbianca +- Chin-Yeung Li @chinyeungli +- Dennis Clark @DennisClark +- John Horan @johnmhoran +- Jono Yang @JonoYang +- Max Mehl @mxmehl +- nexB Inc. @nexB +- Peter Kolbus @pkolbus +- Philippe Ombredanne @pombredanne +- Sebastian Schuberth @sschuberth +- Steven Esser @majurg +- Thomas Druez @tdruez + + + + declared license file: CHANGELOG.rst + Changelog +========= + +v30.3.0 - 2024-03-18 +-------------------- + +This is a minor release without API changes: + +- Use latest skeleton +- Update license list to latest ScanCode and SPDX 3.23 +- Drop support for Python 3.7 + +v30.2.0 - 2023-11-29 +-------------------- + +This is a minor release without API changes: + +- Use latest skeleton +- Update license list to latest ScanCode and SPDX 3.22 +- Add Python 3.12 support in CI + + +v30.1.1 - 2023-01-16 +---------------------- + +This is a minor dot release without API changes + +- Use latest skeleton +- Update license list to latest ScanCode and SPDX 3.20 + + +v30.1.0 - 2023-01-16 +---------------------- + +This is a minor release without API changes + +- Use latest skeleton (and updated configure script) +- Update license list to latest ScanCode and SPDX 3.19 +- Use correct syntax for python_require +- Drop using Travis and Appveyor +- Drop support for Python 3.7 and add Python 3.11 in CI + + +v30.0.0 - 2022-05-10 +---------------------- + +This is a minor release with API changes + +- Use latest skeleton (and updated configure script) +- Drop using calver +- Improve error checking when combining licenses + + + +v21.6.14 - 2021-06-14 +---------------------- + +Added +~~~~~ + +- Switch to calver for package versioning to better convey the currency of the + bundled data. + +- Include https://scancode-licensedb.aboutcode.org/ licenses list with + ScanCode (v21.6.7) and SPDX licenses (v3.13) keys. Add new functions to + create Licensing using these licenses as LicenseSymbol. + +- Add new License.dedup() method to deduplicate and simplify license expressions + without over simplifying. + +- Add new License.validate() method to return a new ExpressionInfo object with + details on a license expression validation. + + +Changed +~~~~~~~ +- Drop support for Python 2. +- Adopt the project skeleton from https://github.com/nexB/skeleton + and its new configure script + + +v1.2 - 2019-11-14 +------------------ +Added +~~~~~ +- Add ability to render WITH expression wrapped in parenthesis + +Fixes +~~~~~ +- Fix anomalous backslashes in strings + +Changed +~~~~~~~ +- Update the thirdparty directory structure. + + +v1.0 - 2019-10-16 +------------------ +Added +~~~~~ +- New version of boolean.py library +- Add ability to leave license expressions unsorted when simplifying + +Changed +~~~~~~~ +- updated travis CI settings + + +v0.999 - 2019-04-29 +-------------------- +- Initial release +- license-expression is small utility library to parse, compare and + simplify and normalize license expressions. + + + + + declared license file: CODE_OF_CONDUCT.rst + Contributor Covenant Code of Conduct +==================================== + +Our Pledge +---------- + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our +project and our community a harassment-free experience for everyone, +regardless of age, body size, disability, ethnicity, gender identity and +expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity and +orientation. + +Our Standards +------------- + +Examples of behavior that contributes to creating a positive environment +include: + +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Gracefully accepting constructive criticism +- Focusing on what is best for the community +- Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +- The use of sexualized language or imagery and unwelcome sexual + attention or advances +- Trolling, insulting/derogatory comments, and personal or political + attacks +- Public or private harassment +- Publishing others’ private information, such as a physical or + electronic address, without explicit permission +- Other conduct which could reasonably be considered inappropriate in a + professional setting + +Our Responsibilities +-------------------- + +Project maintainers are responsible for clarifying the standards of +acceptable behavior and are expected to take appropriate and fair +corrective action in response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, +or reject comments, commits, code, wiki edits, issues, and other +contributions that are not aligned to this Code of Conduct, or to ban +temporarily or permanently any contributor for other behaviors that they +deem inappropriate, threatening, offensive, or harmful. + +Scope +----- + +This Code of Conduct applies both within project spaces and in public +spaces when an individual is representing the project or its community. +Examples of representing a project or community include using an +official project e-mail address, posting via an official social media +account, or acting as an appointed representative at an online or +offline event. Representation of a project may be further defined and +clarified by project maintainers. + +Enforcement +----------- + +Instances of abusive, harassing, or otherwise unacceptable behavior may +be reported by contacting the project team at pombredanne@gmail.com +or on the Gitter chat channel at https://gitter.im/aboutcode-org/discuss . +All complaints will be reviewed and investigated and will result in a +response that is deemed necessary and appropriate to the circumstances. +The project team is obligated to maintain confidentiality with regard to +the reporter of an incident. Further details of specific enforcement +policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in +good faith may face temporary or permanent repercussions as determined +by other members of the project’s leadership. + +Attribution +----------- + +This Code of Conduct is adapted from the `Contributor Covenant`_ , +version 1.4, available at +https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + +.. _Contributor Covenant: https://www.contributor-covenant.org + + + + declared license file: NOTICE + # +# Copyright (c) nexB Inc. and others. +# SPDX-License-Identifier: Apache-2.0 +# +# Visit https://aboutcode.org and https://github.com/nexB/license-expression +# for support and download. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + + + + declared license file: apache-2.0.LICENSE + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + pkg:pypi/license-expression@30.3.0 @@ -126,10 +1151,70 @@ Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. - BSD-3-Clause + declared license file: LICENSE.txt + Copyright (c) 2004 Infrae. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + 3. Neither the name of Infrae nor the names of its contributors may + be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INFRAE OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + - License :: OSI Approved :: BSD License + declared license file: LICENSES.txt + lxml is copyright Infrae and distributed under the BSD license (see +doc/licenses/BSD.txt), with the following exceptions: + +Some code, such a selftest.py, selftest2.py and +src/lxml/_elementpath.py are derived from ElementTree and +cElementTree. See doc/licenses/elementtree.txt for the license text. + +lxml.cssselect and lxml.html are copyright Ian Bicking and distributed +under the BSD license (see doc/licenses/BSD.txt). + +test.py, the test-runner script, is GPL and copyright Shuttleworth +Foundation. See doc/licenses/GPL.txt. It is believed the unchanged +inclusion of test.py to run the unit test suite falls under the +"aggregation" clause of the GPL and thus does not affect the license +of the rest of the package. + +The isoschematron implementation uses several XSL and RelaxNG resources: + * The (XML syntax) RelaxNG schema for schematron, copyright International + Organization for Standardization (see + src/lxml/isoschematron/resources/rng/iso-schematron.rng for the license + text) + * The skeleton iso-schematron-xlt1 pure-xslt schematron implementation + xsl stylesheets, copyright Rick Jelliffe and Academia Sinica Computing + Center, Taiwan (see the xsl files here for the license text: + src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/) + * The xsd/rng schema schematron extraction xsl transformations are unlicensed + and copyright the respective authors as noted (see + src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl and + src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl) + pkg:pypi/lxml@5.3.0 @@ -147,6 +1232,44 @@ regression-issue868 0.1 + + + declared license file: my_licenses/richtext.rtf + e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA= + + + declared license file: my_licenses/utf-16be_withBOM.txt + this file is +utf-16be encoded +with BOM +😃 + + + + declared license file: my_licenses/utf-16le_withBOM.txt + this file is +utf-16le encoded +with BOM +😃 + + + + declared license file: my_licenses/utf-8_noBOM.txt + this file is +utf-8 encoded +without BOM +😃 + + + + declared license file: my_licenses/utf-8_withBOM.txt + this file is +utf-8 encoded +with BOM +😃 + + + file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.json.bin index 60dbfb7c1..425b3f345 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.json.bin @@ -35,6 +35,15 @@ "license": { "id": "MIT" } + }, + { + "license": { + "name": "declared license file: LICENSE", + "text": { + "content": "The MIT License (MIT)\n\nCopyright (c) 2015 Hynek Schlawack and the attrs contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n", + "contentType": "text/plain" + } + } } ], "name": "attrs", @@ -55,7 +64,29 @@ "licenses": [ { "license": { - "id": "BSD-2-Clause" + "name": "declared license file: CHANGELOG.rst", + "text": { + "content": "\nChangelog\n=========\n\n\nnext\n----\n\n\n4.0 (2022-05-05)\n----------------\n\n* API changes\n\n * Drop support for Python 2.\n * Test on Python 3.10\n * Make Expression.sort_order an instance attributes and not a class attribute\n\n* Misc.\n\n * Correct licensing documentation\n * Improve docstringf and apply minor refactorings\n * Adopt black code style and isort for imports\n * Drop Travis and use GitHub actions for CI\n\n\n3.8 (2020-06-10)\n----------------\n\n* API changes\n\n * Add support for evaluation of boolean expression.\n Thank you to Lars van Gemerden @gemerden\n\n* Bug fixes\n\n * Fix parsing of tokens that have a number as the first character. \n Thank you to Jeff Cohen @ jcohen28\n * Restore proper Python 2 compatibility. \n Thank you to Benjy Weinberger @benjyw\n\n* Improve documentation\n\n * Add pointers to Linux distro packages.\n Thank you to Max Mehl @mxmehl and Carmen Bianca Bakker @carmenbianca\n * Fix typo.\n Thank you to Gabriel Niebler @der-gabe\n\n\n3.7 (2019-10-04)\n----------------\n\n* API changes\n\n * Add new sort argument to simplify() to optionally not sort when simplifying\n expressions (e.g. not applying \"commutativity\"). Thank you to Steven Esser\n @majurg for this\n * Add new argument to tokenizer to optionally accept extra characters in symbol\n tokens. Thank you to @carpie for this\n\n\n3.6 (2018-08-06)\n----------------\n\n* No API changes\n\n* Bug fixes\n\n * Fix De Morgan's laws effect on double negation propositions. Thank you to Douglas Cardoso for this\n * Improve error checking when parsing\n\n\n3.5 (Nov 1, 2017)\n-----------------\n\n* No API changes\n\n* Bug fixes\n\n * Documentation updates and add testing for Python 3.6. Thank you to Alexander Lisianoi @alisianoi\n * Improve testng and expression equivalence checks\n * Improve subs() method to an expression \n\n \n\n3.4 (May 12, 2017)\n------------------\n\n* No API changes\n\n* Bug fixes and improvements\n\n * Fix various documentation typos and improve tests . Thank you to Alexander Lisianoi @alisianoi\n * Fix handling for literals vs. symbols in negations Thank you to @YaronK\n\n\n3.3 (2017-02-09)\n----------------\n\n* API changes\n\n * #40 and #50 Expression.subs() now takes 'default' thanks to @kronuz\n * #45 simplify=False is now the default for parse and related functions or methods.\n * #40 Use \"&\" and \"|\" as default operators\n\n* Bug fixes\n\n * #60 Fix bug for \"a or b c\" which is not a valid expression\n * #58 Fix math formula display in docs\n * Improve handling of parse errors\n\n\n2.0.0 (2016-05-11)\n------------------\n\n* API changes\n\n * New algebra definition. Refactored class hierarchy. Improved parsing.\n\n* New features\n\n * possibility to subclass algebra definition\n * new normal forms shortcuts for DNF and CNF.\n\n\n1.1 (2016-04-06)\n------------------\n\n* Initial release on Pypi.\n", + "contentType": "text/prs.fallenstein.rst" + } + } + }, + { + "license": { + "name": "declared license file: LICENSE.txt", + "text": { + "content": "Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice, this\nlist of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice,\nthis list of conditions and the following disclaimer in the documentation and/or\nother materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: README.rst", + "text": { + "content": "boolean.py\n==========\n\n\"boolean.py\" is a small library implementing a boolean algebra. It\ndefines two base elements, TRUE and FALSE, and a Symbol class that can\ntake on one of these two values. Calculations are done in terms of AND,\nOR and NOT - other compositions like XOR and NAND are not implemented\nbut can be emulated with AND or and NOT. Expressions are constructed\nfrom parsed strings or in Python.\n\nIt runs on Python 3.6+\nYou can use older version 3.x for Python 2.7+ support.\n\nhttps://github.com/bastikr/boolean.py\n\nBuild status: |Build Status|\n\n\nExample\n-------\n\n::\n\n >>> import boolean\n >>> algebra = boolean.BooleanAlgebra()\n >>> expression1 = algebra.parse(u'apple and (oranges or banana) and not banana', simplify=False)\n >>> expression1\n AND(Symbol('apple'), OR(Symbol('oranges'), Symbol('banana')), NOT(Symbol('banana')))\n\n >>> expression2 = algebra.parse('(oranges | banana) and not banana & apple', simplify=True)\n >>> expression2\n AND(Symbol('apple'), NOT(Symbol('banana')), Symbol('oranges'))\n\n >>> expression1 == expression2\n False\n >>> expression1.simplify() == expression2\n True\n\n\nDocumentation\n-------------\n\nhttp://readthedocs.org/docs/booleanpy/en/latest/\n\n\nInstallation\n------------\n\nInstallation via pip\n~~~~~~~~~~~~~~~~~~~~\n\nTo install boolean.py, you need to have the following pieces of software\non your computer:\n\n- Python 3.6+\n- pip\n\nYou then only need to run the following command:\n\n``pip install boolean.py``\n\n\nInstallation via package managers\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThere are packages available for easy install on some operating systems.\nYou are welcome to help us package this tool for more distributions!\n\n- boolean.py has been packaged as Arch Linux, Fedora, openSus,\n nixpkgs, Guix, DragonFly and FreeBSD \n `packages `__ .\n\nIn particular:\n\n- Arch Linux (AUR):\n `python-boolean.py `__\n- Fedora:\n `python-boolean.py `__\n- openSUSE:\n `python-boolean.py `__\n\n\nTesting\n-------\n\nTest ``boolean.py`` with your current Python environment:\n\n``python setup.py test``\n\nTest with all of the supported Python environments using ``tox``:\n\n::\n\n pip install -r requirements-dev.txt\n tox\n\nIf ``tox`` throws ``InterpreterNotFound``, limit it to python\ninterpreters that are actually installed on your machine:\n\n::\n\n tox -e py36\n\nAlternatively use pytest.\n\n\nLicense\n-------\n\nCopyright (c) Sebastian Kraemer, basti.kr@gmail.com and others\nSPDX-License-Identifier: BSD-2-Clause\n\n.. |Build Status| image:: https://travis-ci.org/bastikr/boolean.py.svg?branch=master\n :target: https://travis-ci.org/bastikr/boolean.py\n", + "contentType": "text/prs.fallenstein.rst" + } } } ], @@ -96,7 +127,31 @@ ], "licenses": [ { - "expression": "Apache-2.0 OR BSD-3-Clause" + "license": { + "name": "declared license file: LICENSE", + "text": { + "content": "This software is made available under the terms of *either* of the licenses\nfound in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made\nunder the terms of *both* these licenses.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: LICENSE.APACHE", + "text": { + "content": "\n Apache License\n Version 2.0, January 2004\n https://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: LICENSE.BSD", + "text": { + "content": "Copyright (c) Individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of PyCA Cryptography nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", + "contentType": "text/plain" + } + } } ], "name": "cryptography", @@ -117,14 +172,18 @@ "licenses": [ { "license": { - "name": "License :: OSI Approved :: BSD License" + "name": "declared license file: AUTHORS", + "text": { + "content": "Stefan K\u00f6gl \nAlexander Shorin \nChristopher J. White \n", + "contentType": "text/plain" + } } }, { "license": { - "name": "declared license of 'jsonpointer'", + "name": "declared license file: LICENSE.txt", "text": { - "content": "Modified BSD License", + "content": "Copyright (c) 2011 Stefan K\u00f6gl \nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions\nare met:\n\n1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n3. The name of the author may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR\nIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\nOF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\nIN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\nNOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\nTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n", "contentType": "text/plain" } } @@ -148,7 +207,47 @@ "licenses": [ { "license": { - "id": "Apache-2.0" + "name": "declared license file: AUTHORS.rst", + "text": { + "content": "The following organizations or individuals have contributed to this code:\n\n- Ayan Sinha Mahapatra @AyanSinhaMahapatra\n- Carmen Bianca Bakker @carmenbianca\n- Chin-Yeung Li @chinyeungli\n- Dennis Clark @DennisClark\n- John Horan @johnmhoran\n- Jono Yang @JonoYang\n- Max Mehl @mxmehl\n- nexB Inc. @nexB\n- Peter Kolbus @pkolbus\n- Philippe Ombredanne @pombredanne\n- Sebastian Schuberth @sschuberth\n- Steven Esser @majurg\n- Thomas Druez @tdruez\n", + "contentType": "text/prs.fallenstein.rst" + } + } + }, + { + "license": { + "name": "declared license file: CHANGELOG.rst", + "text": { + "content": "Changelog\n=========\n\nv30.3.0 - 2024-03-18\n--------------------\n\nThis is a minor release without API changes:\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.23\n- Drop support for Python 3.7\n\nv30.2.0 - 2023-11-29\n--------------------\n\nThis is a minor release without API changes:\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.22\n- Add Python 3.12 support in CI\n\n\nv30.1.1 - 2023-01-16\n----------------------\n\nThis is a minor dot release without API changes\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.20\n\n\nv30.1.0 - 2023-01-16\n----------------------\n\nThis is a minor release without API changes\n\n- Use latest skeleton (and updated configure script)\n- Update license list to latest ScanCode and SPDX 3.19\n- Use correct syntax for python_require\n- Drop using Travis and Appveyor\n- Drop support for Python 3.7 and add Python 3.11 in CI\n\n\nv30.0.0 - 2022-05-10\n----------------------\n\nThis is a minor release with API changes\n\n- Use latest skeleton (and updated configure script)\n- Drop using calver\n- Improve error checking when combining licenses\n\n\n\nv21.6.14 - 2021-06-14\n----------------------\n\nAdded\n~~~~~\n\n- Switch to calver for package versioning to better convey the currency of the\n bundled data.\n\n- Include https://scancode-licensedb.aboutcode.org/ licenses list with\n ScanCode (v21.6.7) and SPDX licenses (v3.13) keys. Add new functions to\n create Licensing using these licenses as LicenseSymbol.\n\n- Add new License.dedup() method to deduplicate and simplify license expressions\n without over simplifying.\n\n- Add new License.validate() method to return a new ExpressionInfo object with\n details on a license expression validation.\n\n\nChanged\n~~~~~~~\n- Drop support for Python 2.\n- Adopt the project skeleton from https://github.com/nexB/skeleton\n and its new configure script\n\n\nv1.2 - 2019-11-14\n------------------\nAdded\n~~~~~\n- Add ability to render WITH expression wrapped in parenthesis\n\nFixes\n~~~~~\n- Fix anomalous backslashes in strings\n\nChanged\n~~~~~~~\n- Update the thirdparty directory structure.\n\n\nv1.0 - 2019-10-16\n------------------\nAdded\n~~~~~\n- New version of boolean.py library\n- Add ability to leave license expressions unsorted when simplifying\n\nChanged\n~~~~~~~\n- updated travis CI settings\n\n\nv0.999 - 2019-04-29\n--------------------\n- Initial release\n- license-expression is small utility library to parse, compare and\n simplify and normalize license expressions.\n\n", + "contentType": "text/prs.fallenstein.rst" + } + } + }, + { + "license": { + "name": "declared license file: CODE_OF_CONDUCT.rst", + "text": { + "content": "Contributor Covenant Code of Conduct\n====================================\n\nOur Pledge\n----------\n\nIn the interest of fostering an open and welcoming environment, we as\ncontributors and maintainers pledge to making participation in our\nproject and our community a harassment-free experience for everyone,\nregardless of age, body size, disability, ethnicity, gender identity and\nexpression, level of experience, education, socio-economic status,\nnationality, personal appearance, race, religion, or sexual identity and\norientation.\n\nOur Standards\n-------------\n\nExamples of behavior that contributes to creating a positive environment\ninclude:\n\n- Using welcoming and inclusive language\n- Being respectful of differing viewpoints and experiences\n- Gracefully accepting constructive criticism\n- Focusing on what is best for the community\n- Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n- The use of sexualized language or imagery and unwelcome sexual\n attention or advances\n- Trolling, insulting/derogatory comments, and personal or political\n attacks\n- Public or private harassment\n- Publishing others\u2019 private information, such as a physical or\n electronic address, without explicit permission\n- Other conduct which could reasonably be considered inappropriate in a\n professional setting\n\nOur Responsibilities\n--------------------\n\nProject maintainers are responsible for clarifying the standards of\nacceptable behavior and are expected to take appropriate and fair\ncorrective action in response to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit,\nor reject comments, commits, code, wiki edits, issues, and other\ncontributions that are not aligned to this Code of Conduct, or to ban\ntemporarily or permanently any contributor for other behaviors that they\ndeem inappropriate, threatening, offensive, or harmful.\n\nScope\n-----\n\nThis Code of Conduct applies both within project spaces and in public\nspaces when an individual is representing the project or its community.\nExamples of representing a project or community include using an\nofficial project e-mail address, posting via an official social media\naccount, or acting as an appointed representative at an online or\noffline event. Representation of a project may be further defined and\nclarified by project maintainers.\n\nEnforcement\n-----------\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may\nbe reported by contacting the project team at pombredanne@gmail.com\nor on the Gitter chat channel at https://gitter.im/aboutcode-org/discuss .\nAll complaints will be reviewed and investigated and will result in a\nresponse that is deemed necessary and appropriate to the circumstances.\nThe project team is obligated to maintain confidentiality with regard to\nthe reporter of an incident. Further details of specific enforcement\npolicies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in\ngood faith may face temporary or permanent repercussions as determined\nby other members of the project\u2019s leadership.\n\nAttribution\n-----------\n\nThis Code of Conduct is adapted from the `Contributor Covenant`_ ,\nversion 1.4, available at\nhttps://www.contributor-covenant.org/version/1/4/code-of-conduct.html\n\n.. _Contributor Covenant: https://www.contributor-covenant.org\n", + "contentType": "text/prs.fallenstein.rst" + } + } + }, + { + "license": { + "name": "declared license file: NOTICE", + "text": { + "content": "#\n# Copyright (c) nexB Inc. and others.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Visit https://aboutcode.org and https://github.com/nexB/license-expression\n# for support and download.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: apache-2.0.LICENSE", + "text": { + "content": " Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", + "contentType": "text/plain" + } } } ], @@ -175,12 +274,20 @@ "licenses": [ { "license": { - "id": "BSD-3-Clause" + "name": "declared license file: LICENSE.txt", + "text": { + "content": "Copyright (c) 2004 Infrae. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n 1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n \n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in\n the documentation and/or other materials provided with the\n distribution.\n\n 3. Neither the name of Infrae nor the names of its contributors may\n be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INFRAE OR\nCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\nEXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\nPROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", + "contentType": "text/plain" + } } }, { "license": { - "name": "License :: OSI Approved :: BSD License" + "name": "declared license file: LICENSES.txt", + "text": { + "content": "lxml is copyright Infrae and distributed under the BSD license (see\ndoc/licenses/BSD.txt), with the following exceptions:\n\nSome code, such a selftest.py, selftest2.py and\nsrc/lxml/_elementpath.py are derived from ElementTree and\ncElementTree. See doc/licenses/elementtree.txt for the license text.\n\nlxml.cssselect and lxml.html are copyright Ian Bicking and distributed\nunder the BSD license (see doc/licenses/BSD.txt).\n\ntest.py, the test-runner script, is GPL and copyright Shuttleworth\nFoundation. See doc/licenses/GPL.txt. It is believed the unchanged\ninclusion of test.py to run the unit test suite falls under the\n\"aggregation\" clause of the GPL and thus does not affect the license\nof the rest of the package.\n\nThe isoschematron implementation uses several XSL and RelaxNG resources:\n * The (XML syntax) RelaxNG schema for schematron, copyright International\n Organization for Standardization (see \n src/lxml/isoschematron/resources/rng/iso-schematron.rng for the license\n text)\n * The skeleton iso-schematron-xlt1 pure-xslt schematron implementation\n xsl stylesheets, copyright Rick Jelliffe and Academia Sinica Computing\n Center, Taiwan (see the xsl files here for the license text: \n src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/)\n * The xsd/rng schema schematron extraction xsl transformations are unlicensed\n and copyright the respective authors as noted (see \n src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl and\n src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl)\n", + "contentType": "text/plain" + } } } ], @@ -198,6 +305,54 @@ "url": "file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868" } ], + "licenses": [ + { + "license": { + "name": "declared license file: my_licenses/richtext.rtf", + "text": { + "content": "e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA=", + "contentType": "application/rtf", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: my_licenses/utf-16be_withBOM.txt", + "text": { + "content": "this file is\r\nutf-16be encoded\r\nwith BOM\r\n\ud83d\ude03\r\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: my_licenses/utf-16le_withBOM.txt", + "text": { + "content": "this file is\nutf-16le encoded\nwith BOM\n\ud83d\ude03\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: my_licenses/utf-8_noBOM.txt", + "text": { + "content": "this file is\nutf-8 encoded\nwithout BOM\n\ud83d\ude03\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: my_licenses/utf-8_withBOM.txt", + "text": { + "content": "\ufeffthis file is\nutf-8 encoded\nwith BOM\n\ud83d\ude03\n", + "contentType": "text/plain" + } + } + } + ], "name": "regression-issue868", "type": "library", "version": "0.1" @@ -245,6 +400,11 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", + "licenses": [ + { + "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" + } + ], "name": "with-extras", "type": "application", "version": "0.1.0" diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.xml.bin index 7f84c211c..ac08ad865 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.xml.bin @@ -17,6 +17,9 @@ with-extras 0.1.0 depenndencies with license declaration accoring to PEP 639 + + MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) + @@ -28,6 +31,31 @@ MIT + + declared license file: LICENSE + The MIT License (MIT) + +Copyright (c) 2015 Hynek Schlawack and the attrs contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + pkg:pypi/attrs@23.2.0 @@ -59,7 +87,282 @@ Define boolean algebras, create and parse boolean expressions and create custom boolean DSL. - BSD-2-Clause + declared license file: CHANGELOG.rst + +Changelog +========= + + +next +---- + + +4.0 (2022-05-05) +---------------- + +* API changes + + * Drop support for Python 2. + * Test on Python 3.10 + * Make Expression.sort_order an instance attributes and not a class attribute + +* Misc. + + * Correct licensing documentation + * Improve docstringf and apply minor refactorings + * Adopt black code style and isort for imports + * Drop Travis and use GitHub actions for CI + + +3.8 (2020-06-10) +---------------- + +* API changes + + * Add support for evaluation of boolean expression. + Thank you to Lars van Gemerden @gemerden + +* Bug fixes + + * Fix parsing of tokens that have a number as the first character. + Thank you to Jeff Cohen @ jcohen28 + * Restore proper Python 2 compatibility. + Thank you to Benjy Weinberger @benjyw + +* Improve documentation + + * Add pointers to Linux distro packages. + Thank you to Max Mehl @mxmehl and Carmen Bianca Bakker @carmenbianca + * Fix typo. + Thank you to Gabriel Niebler @der-gabe + + +3.7 (2019-10-04) +---------------- + +* API changes + + * Add new sort argument to simplify() to optionally not sort when simplifying + expressions (e.g. not applying "commutativity"). Thank you to Steven Esser + @majurg for this + * Add new argument to tokenizer to optionally accept extra characters in symbol + tokens. Thank you to @carpie for this + + +3.6 (2018-08-06) +---------------- + +* No API changes + +* Bug fixes + + * Fix De Morgan's laws effect on double negation propositions. Thank you to Douglas Cardoso for this + * Improve error checking when parsing + + +3.5 (Nov 1, 2017) +----------------- + +* No API changes + +* Bug fixes + + * Documentation updates and add testing for Python 3.6. Thank you to Alexander Lisianoi @alisianoi + * Improve testng and expression equivalence checks + * Improve subs() method to an expression + + + +3.4 (May 12, 2017) +------------------ + +* No API changes + +* Bug fixes and improvements + + * Fix various documentation typos and improve tests . Thank you to Alexander Lisianoi @alisianoi + * Fix handling for literals vs. symbols in negations Thank you to @YaronK + + +3.3 (2017-02-09) +---------------- + +* API changes + + * #40 and #50 Expression.subs() now takes 'default' thanks to @kronuz + * #45 simplify=False is now the default for parse and related functions or methods. + * #40 Use "&" and "|" as default operators + +* Bug fixes + + * #60 Fix bug for "a or b c" which is not a valid expression + * #58 Fix math formula display in docs + * Improve handling of parse errors + + +2.0.0 (2016-05-11) +------------------ + +* API changes + + * New algebra definition. Refactored class hierarchy. Improved parsing. + +* New features + + * possibility to subclass algebra definition + * new normal forms shortcuts for DNF and CNF. + + +1.1 (2016-04-06) +------------------ + +* Initial release on Pypi. + + + + declared license file: LICENSE.txt + Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + + declared license file: README.rst + boolean.py +========== + +"boolean.py" is a small library implementing a boolean algebra. It +defines two base elements, TRUE and FALSE, and a Symbol class that can +take on one of these two values. Calculations are done in terms of AND, +OR and NOT - other compositions like XOR and NAND are not implemented +but can be emulated with AND or and NOT. Expressions are constructed +from parsed strings or in Python. + +It runs on Python 3.6+ +You can use older version 3.x for Python 2.7+ support. + +https://github.com/bastikr/boolean.py + +Build status: |Build Status| + + +Example +------- + +:: + + >>> import boolean + >>> algebra = boolean.BooleanAlgebra() + >>> expression1 = algebra.parse(u'apple and (oranges or banana) and not banana', simplify=False) + >>> expression1 + AND(Symbol('apple'), OR(Symbol('oranges'), Symbol('banana')), NOT(Symbol('banana'))) + + >>> expression2 = algebra.parse('(oranges | banana) and not banana & apple', simplify=True) + >>> expression2 + AND(Symbol('apple'), NOT(Symbol('banana')), Symbol('oranges')) + + >>> expression1 == expression2 + False + >>> expression1.simplify() == expression2 + True + + +Documentation +------------- + +http://readthedocs.org/docs/booleanpy/en/latest/ + + +Installation +------------ + +Installation via pip +~~~~~~~~~~~~~~~~~~~~ + +To install boolean.py, you need to have the following pieces of software +on your computer: + +- Python 3.6+ +- pip + +You then only need to run the following command: + +``pip install boolean.py`` + + +Installation via package managers +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +There are packages available for easy install on some operating systems. +You are welcome to help us package this tool for more distributions! + +- boolean.py has been packaged as Arch Linux, Fedora, openSus, + nixpkgs, Guix, DragonFly and FreeBSD + `packages <https://repology.org/project/python:boolean.py/versions>`__ . + +In particular: + +- Arch Linux (AUR): + `python-boolean.py <https://aur.archlinux.org/packages/python-boolean.py/>`__ +- Fedora: + `python-boolean.py <https://apps.fedoraproject.org/packages/python-boolean.py>`__ +- openSUSE: + `python-boolean.py <https://software.opensuse.org/package/python-boolean.py>`__ + + +Testing +------- + +Test ``boolean.py`` with your current Python environment: + +``python setup.py test`` + +Test with all of the supported Python environments using ``tox``: + +:: + + pip install -r requirements-dev.txt + tox + +If ``tox`` throws ``InterpreterNotFound``, limit it to python +interpreters that are actually installed on your machine: + +:: + + tox -e py36 + +Alternatively use pytest. + + +License +------- + +Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others +SPDX-License-Identifier: BSD-2-Clause + +.. |Build Status| image:: https://travis-ci.org/bastikr/boolean.py.svg?branch=master + :target: https://travis-ci.org/bastikr/boolean.py + pkg:pypi/boolean.py@4.0 @@ -75,7 +378,250 @@ 43.0.1 cryptography is a package which provides cryptographic recipes and primitives to Python developers. - Apache-2.0 OR BSD-3-Clause + + declared license file: LICENSE + This software is made available under the terms of *either* of the licenses +found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made +under the terms of *both* these licenses. + + + + declared license file: LICENSE.APACHE + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + + declared license file: LICENSE.BSD + Copyright (c) Individual contributors. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. Neither the name of PyCA Cryptography nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + pkg:pypi/cryptography@43.0.1 @@ -107,11 +653,41 @@ Identify specific nodes in a JSON document (RFC 6901) - License :: OSI Approved :: BSD License + declared license file: AUTHORS + Stefan Kögl <stefan@skoegl.net> +Alexander Shorin <kxepal@gmail.com> +Christopher J. White <chris@grierwhite.com> + - declared license of 'jsonpointer' - Modified BSD License + declared license file: LICENSE.txt + Copyright (c) 2011 Stefan Kögl <stefan@skoegl.net> +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + pkg:pypi/jsonpointer@2.4 @@ -128,7 +704,459 @@ license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic. - Apache-2.0 + declared license file: AUTHORS.rst + The following organizations or individuals have contributed to this code: + +- Ayan Sinha Mahapatra @AyanSinhaMahapatra +- Carmen Bianca Bakker @carmenbianca +- Chin-Yeung Li @chinyeungli +- Dennis Clark @DennisClark +- John Horan @johnmhoran +- Jono Yang @JonoYang +- Max Mehl @mxmehl +- nexB Inc. @nexB +- Peter Kolbus @pkolbus +- Philippe Ombredanne @pombredanne +- Sebastian Schuberth @sschuberth +- Steven Esser @majurg +- Thomas Druez @tdruez + + + + declared license file: CHANGELOG.rst + Changelog +========= + +v30.3.0 - 2024-03-18 +-------------------- + +This is a minor release without API changes: + +- Use latest skeleton +- Update license list to latest ScanCode and SPDX 3.23 +- Drop support for Python 3.7 + +v30.2.0 - 2023-11-29 +-------------------- + +This is a minor release without API changes: + +- Use latest skeleton +- Update license list to latest ScanCode and SPDX 3.22 +- Add Python 3.12 support in CI + + +v30.1.1 - 2023-01-16 +---------------------- + +This is a minor dot release without API changes + +- Use latest skeleton +- Update license list to latest ScanCode and SPDX 3.20 + + +v30.1.0 - 2023-01-16 +---------------------- + +This is a minor release without API changes + +- Use latest skeleton (and updated configure script) +- Update license list to latest ScanCode and SPDX 3.19 +- Use correct syntax for python_require +- Drop using Travis and Appveyor +- Drop support for Python 3.7 and add Python 3.11 in CI + + +v30.0.0 - 2022-05-10 +---------------------- + +This is a minor release with API changes + +- Use latest skeleton (and updated configure script) +- Drop using calver +- Improve error checking when combining licenses + + + +v21.6.14 - 2021-06-14 +---------------------- + +Added +~~~~~ + +- Switch to calver for package versioning to better convey the currency of the + bundled data. + +- Include https://scancode-licensedb.aboutcode.org/ licenses list with + ScanCode (v21.6.7) and SPDX licenses (v3.13) keys. Add new functions to + create Licensing using these licenses as LicenseSymbol. + +- Add new License.dedup() method to deduplicate and simplify license expressions + without over simplifying. + +- Add new License.validate() method to return a new ExpressionInfo object with + details on a license expression validation. + + +Changed +~~~~~~~ +- Drop support for Python 2. +- Adopt the project skeleton from https://github.com/nexB/skeleton + and its new configure script + + +v1.2 - 2019-11-14 +------------------ +Added +~~~~~ +- Add ability to render WITH expression wrapped in parenthesis + +Fixes +~~~~~ +- Fix anomalous backslashes in strings + +Changed +~~~~~~~ +- Update the thirdparty directory structure. + + +v1.0 - 2019-10-16 +------------------ +Added +~~~~~ +- New version of boolean.py library +- Add ability to leave license expressions unsorted when simplifying + +Changed +~~~~~~~ +- updated travis CI settings + + +v0.999 - 2019-04-29 +-------------------- +- Initial release +- license-expression is small utility library to parse, compare and + simplify and normalize license expressions. + + + + + declared license file: CODE_OF_CONDUCT.rst + Contributor Covenant Code of Conduct +==================================== + +Our Pledge +---------- + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our +project and our community a harassment-free experience for everyone, +regardless of age, body size, disability, ethnicity, gender identity and +expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity and +orientation. + +Our Standards +------------- + +Examples of behavior that contributes to creating a positive environment +include: + +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Gracefully accepting constructive criticism +- Focusing on what is best for the community +- Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +- The use of sexualized language or imagery and unwelcome sexual + attention or advances +- Trolling, insulting/derogatory comments, and personal or political + attacks +- Public or private harassment +- Publishing others’ private information, such as a physical or + electronic address, without explicit permission +- Other conduct which could reasonably be considered inappropriate in a + professional setting + +Our Responsibilities +-------------------- + +Project maintainers are responsible for clarifying the standards of +acceptable behavior and are expected to take appropriate and fair +corrective action in response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, +or reject comments, commits, code, wiki edits, issues, and other +contributions that are not aligned to this Code of Conduct, or to ban +temporarily or permanently any contributor for other behaviors that they +deem inappropriate, threatening, offensive, or harmful. + +Scope +----- + +This Code of Conduct applies both within project spaces and in public +spaces when an individual is representing the project or its community. +Examples of representing a project or community include using an +official project e-mail address, posting via an official social media +account, or acting as an appointed representative at an online or +offline event. Representation of a project may be further defined and +clarified by project maintainers. + +Enforcement +----------- + +Instances of abusive, harassing, or otherwise unacceptable behavior may +be reported by contacting the project team at pombredanne@gmail.com +or on the Gitter chat channel at https://gitter.im/aboutcode-org/discuss . +All complaints will be reviewed and investigated and will result in a +response that is deemed necessary and appropriate to the circumstances. +The project team is obligated to maintain confidentiality with regard to +the reporter of an incident. Further details of specific enforcement +policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in +good faith may face temporary or permanent repercussions as determined +by other members of the project’s leadership. + +Attribution +----------- + +This Code of Conduct is adapted from the `Contributor Covenant`_ , +version 1.4, available at +https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + +.. _Contributor Covenant: https://www.contributor-covenant.org + + + + declared license file: NOTICE + # +# Copyright (c) nexB Inc. and others. +# SPDX-License-Identifier: Apache-2.0 +# +# Visit https://aboutcode.org and https://github.com/nexB/license-expression +# for support and download. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + + + + declared license file: apache-2.0.LICENSE + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + pkg:pypi/license-expression@30.3.0 @@ -145,10 +1173,70 @@ Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. - BSD-3-Clause + declared license file: LICENSE.txt + Copyright (c) 2004 Infrae. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + 3. Neither the name of Infrae nor the names of its contributors may + be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INFRAE OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + - License :: OSI Approved :: BSD License + declared license file: LICENSES.txt + lxml is copyright Infrae and distributed under the BSD license (see +doc/licenses/BSD.txt), with the following exceptions: + +Some code, such a selftest.py, selftest2.py and +src/lxml/_elementpath.py are derived from ElementTree and +cElementTree. See doc/licenses/elementtree.txt for the license text. + +lxml.cssselect and lxml.html are copyright Ian Bicking and distributed +under the BSD license (see doc/licenses/BSD.txt). + +test.py, the test-runner script, is GPL and copyright Shuttleworth +Foundation. See doc/licenses/GPL.txt. It is believed the unchanged +inclusion of test.py to run the unit test suite falls under the +"aggregation" clause of the GPL and thus does not affect the license +of the rest of the package. + +The isoschematron implementation uses several XSL and RelaxNG resources: + * The (XML syntax) RelaxNG schema for schematron, copyright International + Organization for Standardization (see + src/lxml/isoschematron/resources/rng/iso-schematron.rng for the license + text) + * The skeleton iso-schematron-xlt1 pure-xslt schematron implementation + xsl stylesheets, copyright Rick Jelliffe and Academia Sinica Computing + Center, Taiwan (see the xsl files here for the license text: + src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/) + * The xsd/rng schema schematron extraction xsl transformations are unlicensed + and copyright the respective authors as noted (see + src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl and + src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl) + pkg:pypi/lxml@5.3.0 @@ -166,6 +1254,44 @@ regression-issue868 0.1 + + + declared license file: my_licenses/richtext.rtf + e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA= + + + declared license file: my_licenses/utf-16be_withBOM.txt + this file is +utf-16be encoded +with BOM +😃 + + + + declared license file: my_licenses/utf-16le_withBOM.txt + this file is +utf-16le encoded +with BOM +😃 + + + + declared license file: my_licenses/utf-8_noBOM.txt + this file is +utf-8 encoded +without BOM +😃 + + + + declared license file: my_licenses/utf-8_withBOM.txt + this file is +utf-8 encoded +with BOM +😃 + + + file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.json.bin index 149dde3a2..48bd16b3b 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.json.bin @@ -35,6 +35,15 @@ "license": { "id": "MIT" } + }, + { + "license": { + "name": "declared license file: LICENSE", + "text": { + "content": "The MIT License (MIT)\n\nCopyright (c) 2015 Hynek Schlawack and the attrs contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n", + "contentType": "text/plain" + } + } } ], "name": "attrs", @@ -55,7 +64,29 @@ "licenses": [ { "license": { - "id": "BSD-2-Clause" + "name": "declared license file: CHANGELOG.rst", + "text": { + "content": "\nChangelog\n=========\n\n\nnext\n----\n\n\n4.0 (2022-05-05)\n----------------\n\n* API changes\n\n * Drop support for Python 2.\n * Test on Python 3.10\n * Make Expression.sort_order an instance attributes and not a class attribute\n\n* Misc.\n\n * Correct licensing documentation\n * Improve docstringf and apply minor refactorings\n * Adopt black code style and isort for imports\n * Drop Travis and use GitHub actions for CI\n\n\n3.8 (2020-06-10)\n----------------\n\n* API changes\n\n * Add support for evaluation of boolean expression.\n Thank you to Lars van Gemerden @gemerden\n\n* Bug fixes\n\n * Fix parsing of tokens that have a number as the first character. \n Thank you to Jeff Cohen @ jcohen28\n * Restore proper Python 2 compatibility. \n Thank you to Benjy Weinberger @benjyw\n\n* Improve documentation\n\n * Add pointers to Linux distro packages.\n Thank you to Max Mehl @mxmehl and Carmen Bianca Bakker @carmenbianca\n * Fix typo.\n Thank you to Gabriel Niebler @der-gabe\n\n\n3.7 (2019-10-04)\n----------------\n\n* API changes\n\n * Add new sort argument to simplify() to optionally not sort when simplifying\n expressions (e.g. not applying \"commutativity\"). Thank you to Steven Esser\n @majurg for this\n * Add new argument to tokenizer to optionally accept extra characters in symbol\n tokens. Thank you to @carpie for this\n\n\n3.6 (2018-08-06)\n----------------\n\n* No API changes\n\n* Bug fixes\n\n * Fix De Morgan's laws effect on double negation propositions. Thank you to Douglas Cardoso for this\n * Improve error checking when parsing\n\n\n3.5 (Nov 1, 2017)\n-----------------\n\n* No API changes\n\n* Bug fixes\n\n * Documentation updates and add testing for Python 3.6. Thank you to Alexander Lisianoi @alisianoi\n * Improve testng and expression equivalence checks\n * Improve subs() method to an expression \n\n \n\n3.4 (May 12, 2017)\n------------------\n\n* No API changes\n\n* Bug fixes and improvements\n\n * Fix various documentation typos and improve tests . Thank you to Alexander Lisianoi @alisianoi\n * Fix handling for literals vs. symbols in negations Thank you to @YaronK\n\n\n3.3 (2017-02-09)\n----------------\n\n* API changes\n\n * #40 and #50 Expression.subs() now takes 'default' thanks to @kronuz\n * #45 simplify=False is now the default for parse and related functions or methods.\n * #40 Use \"&\" and \"|\" as default operators\n\n* Bug fixes\n\n * #60 Fix bug for \"a or b c\" which is not a valid expression\n * #58 Fix math formula display in docs\n * Improve handling of parse errors\n\n\n2.0.0 (2016-05-11)\n------------------\n\n* API changes\n\n * New algebra definition. Refactored class hierarchy. Improved parsing.\n\n* New features\n\n * possibility to subclass algebra definition\n * new normal forms shortcuts for DNF and CNF.\n\n\n1.1 (2016-04-06)\n------------------\n\n* Initial release on Pypi.\n", + "contentType": "text/prs.fallenstein.rst" + } + } + }, + { + "license": { + "name": "declared license file: LICENSE.txt", + "text": { + "content": "Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice, this\nlist of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice,\nthis list of conditions and the following disclaimer in the documentation and/or\nother materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: README.rst", + "text": { + "content": "boolean.py\n==========\n\n\"boolean.py\" is a small library implementing a boolean algebra. It\ndefines two base elements, TRUE and FALSE, and a Symbol class that can\ntake on one of these two values. Calculations are done in terms of AND,\nOR and NOT - other compositions like XOR and NAND are not implemented\nbut can be emulated with AND or and NOT. Expressions are constructed\nfrom parsed strings or in Python.\n\nIt runs on Python 3.6+\nYou can use older version 3.x for Python 2.7+ support.\n\nhttps://github.com/bastikr/boolean.py\n\nBuild status: |Build Status|\n\n\nExample\n-------\n\n::\n\n >>> import boolean\n >>> algebra = boolean.BooleanAlgebra()\n >>> expression1 = algebra.parse(u'apple and (oranges or banana) and not banana', simplify=False)\n >>> expression1\n AND(Symbol('apple'), OR(Symbol('oranges'), Symbol('banana')), NOT(Symbol('banana')))\n\n >>> expression2 = algebra.parse('(oranges | banana) and not banana & apple', simplify=True)\n >>> expression2\n AND(Symbol('apple'), NOT(Symbol('banana')), Symbol('oranges'))\n\n >>> expression1 == expression2\n False\n >>> expression1.simplify() == expression2\n True\n\n\nDocumentation\n-------------\n\nhttp://readthedocs.org/docs/booleanpy/en/latest/\n\n\nInstallation\n------------\n\nInstallation via pip\n~~~~~~~~~~~~~~~~~~~~\n\nTo install boolean.py, you need to have the following pieces of software\non your computer:\n\n- Python 3.6+\n- pip\n\nYou then only need to run the following command:\n\n``pip install boolean.py``\n\n\nInstallation via package managers\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThere are packages available for easy install on some operating systems.\nYou are welcome to help us package this tool for more distributions!\n\n- boolean.py has been packaged as Arch Linux, Fedora, openSus,\n nixpkgs, Guix, DragonFly and FreeBSD \n `packages `__ .\n\nIn particular:\n\n- Arch Linux (AUR):\n `python-boolean.py `__\n- Fedora:\n `python-boolean.py `__\n- openSUSE:\n `python-boolean.py `__\n\n\nTesting\n-------\n\nTest ``boolean.py`` with your current Python environment:\n\n``python setup.py test``\n\nTest with all of the supported Python environments using ``tox``:\n\n::\n\n pip install -r requirements-dev.txt\n tox\n\nIf ``tox`` throws ``InterpreterNotFound``, limit it to python\ninterpreters that are actually installed on your machine:\n\n::\n\n tox -e py36\n\nAlternatively use pytest.\n\n\nLicense\n-------\n\nCopyright (c) Sebastian Kraemer, basti.kr@gmail.com and others\nSPDX-License-Identifier: BSD-2-Clause\n\n.. |Build Status| image:: https://travis-ci.org/bastikr/boolean.py.svg?branch=master\n :target: https://travis-ci.org/bastikr/boolean.py\n", + "contentType": "text/prs.fallenstein.rst" + } } } ], @@ -96,7 +127,31 @@ ], "licenses": [ { - "expression": "Apache-2.0 OR BSD-3-Clause" + "license": { + "name": "declared license file: LICENSE", + "text": { + "content": "This software is made available under the terms of *either* of the licenses\nfound in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made\nunder the terms of *both* these licenses.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: LICENSE.APACHE", + "text": { + "content": "\n Apache License\n Version 2.0, January 2004\n https://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: LICENSE.BSD", + "text": { + "content": "Copyright (c) Individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of PyCA Cryptography nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", + "contentType": "text/plain" + } + } } ], "name": "cryptography", @@ -117,14 +172,18 @@ "licenses": [ { "license": { - "name": "License :: OSI Approved :: BSD License" + "name": "declared license file: AUTHORS", + "text": { + "content": "Stefan K\u00f6gl \nAlexander Shorin \nChristopher J. White \n", + "contentType": "text/plain" + } } }, { "license": { - "name": "declared license of 'jsonpointer'", + "name": "declared license file: LICENSE.txt", "text": { - "content": "Modified BSD License", + "content": "Copyright (c) 2011 Stefan K\u00f6gl \nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions\nare met:\n\n1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n3. The name of the author may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR\nIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\nOF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\nIN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\nNOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\nTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n", "contentType": "text/plain" } } @@ -148,7 +207,47 @@ "licenses": [ { "license": { - "id": "Apache-2.0" + "name": "declared license file: AUTHORS.rst", + "text": { + "content": "The following organizations or individuals have contributed to this code:\n\n- Ayan Sinha Mahapatra @AyanSinhaMahapatra\n- Carmen Bianca Bakker @carmenbianca\n- Chin-Yeung Li @chinyeungli\n- Dennis Clark @DennisClark\n- John Horan @johnmhoran\n- Jono Yang @JonoYang\n- Max Mehl @mxmehl\n- nexB Inc. @nexB\n- Peter Kolbus @pkolbus\n- Philippe Ombredanne @pombredanne\n- Sebastian Schuberth @sschuberth\n- Steven Esser @majurg\n- Thomas Druez @tdruez\n", + "contentType": "text/prs.fallenstein.rst" + } + } + }, + { + "license": { + "name": "declared license file: CHANGELOG.rst", + "text": { + "content": "Changelog\n=========\n\nv30.3.0 - 2024-03-18\n--------------------\n\nThis is a minor release without API changes:\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.23\n- Drop support for Python 3.7\n\nv30.2.0 - 2023-11-29\n--------------------\n\nThis is a minor release without API changes:\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.22\n- Add Python 3.12 support in CI\n\n\nv30.1.1 - 2023-01-16\n----------------------\n\nThis is a minor dot release without API changes\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.20\n\n\nv30.1.0 - 2023-01-16\n----------------------\n\nThis is a minor release without API changes\n\n- Use latest skeleton (and updated configure script)\n- Update license list to latest ScanCode and SPDX 3.19\n- Use correct syntax for python_require\n- Drop using Travis and Appveyor\n- Drop support for Python 3.7 and add Python 3.11 in CI\n\n\nv30.0.0 - 2022-05-10\n----------------------\n\nThis is a minor release with API changes\n\n- Use latest skeleton (and updated configure script)\n- Drop using calver\n- Improve error checking when combining licenses\n\n\n\nv21.6.14 - 2021-06-14\n----------------------\n\nAdded\n~~~~~\n\n- Switch to calver for package versioning to better convey the currency of the\n bundled data.\n\n- Include https://scancode-licensedb.aboutcode.org/ licenses list with\n ScanCode (v21.6.7) and SPDX licenses (v3.13) keys. Add new functions to\n create Licensing using these licenses as LicenseSymbol.\n\n- Add new License.dedup() method to deduplicate and simplify license expressions\n without over simplifying.\n\n- Add new License.validate() method to return a new ExpressionInfo object with\n details on a license expression validation.\n\n\nChanged\n~~~~~~~\n- Drop support for Python 2.\n- Adopt the project skeleton from https://github.com/nexB/skeleton\n and its new configure script\n\n\nv1.2 - 2019-11-14\n------------------\nAdded\n~~~~~\n- Add ability to render WITH expression wrapped in parenthesis\n\nFixes\n~~~~~\n- Fix anomalous backslashes in strings\n\nChanged\n~~~~~~~\n- Update the thirdparty directory structure.\n\n\nv1.0 - 2019-10-16\n------------------\nAdded\n~~~~~\n- New version of boolean.py library\n- Add ability to leave license expressions unsorted when simplifying\n\nChanged\n~~~~~~~\n- updated travis CI settings\n\n\nv0.999 - 2019-04-29\n--------------------\n- Initial release\n- license-expression is small utility library to parse, compare and\n simplify and normalize license expressions.\n\n", + "contentType": "text/prs.fallenstein.rst" + } + } + }, + { + "license": { + "name": "declared license file: CODE_OF_CONDUCT.rst", + "text": { + "content": "Contributor Covenant Code of Conduct\n====================================\n\nOur Pledge\n----------\n\nIn the interest of fostering an open and welcoming environment, we as\ncontributors and maintainers pledge to making participation in our\nproject and our community a harassment-free experience for everyone,\nregardless of age, body size, disability, ethnicity, gender identity and\nexpression, level of experience, education, socio-economic status,\nnationality, personal appearance, race, religion, or sexual identity and\norientation.\n\nOur Standards\n-------------\n\nExamples of behavior that contributes to creating a positive environment\ninclude:\n\n- Using welcoming and inclusive language\n- Being respectful of differing viewpoints and experiences\n- Gracefully accepting constructive criticism\n- Focusing on what is best for the community\n- Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n- The use of sexualized language or imagery and unwelcome sexual\n attention or advances\n- Trolling, insulting/derogatory comments, and personal or political\n attacks\n- Public or private harassment\n- Publishing others\u2019 private information, such as a physical or\n electronic address, without explicit permission\n- Other conduct which could reasonably be considered inappropriate in a\n professional setting\n\nOur Responsibilities\n--------------------\n\nProject maintainers are responsible for clarifying the standards of\nacceptable behavior and are expected to take appropriate and fair\ncorrective action in response to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit,\nor reject comments, commits, code, wiki edits, issues, and other\ncontributions that are not aligned to this Code of Conduct, or to ban\ntemporarily or permanently any contributor for other behaviors that they\ndeem inappropriate, threatening, offensive, or harmful.\n\nScope\n-----\n\nThis Code of Conduct applies both within project spaces and in public\nspaces when an individual is representing the project or its community.\nExamples of representing a project or community include using an\nofficial project e-mail address, posting via an official social media\naccount, or acting as an appointed representative at an online or\noffline event. Representation of a project may be further defined and\nclarified by project maintainers.\n\nEnforcement\n-----------\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may\nbe reported by contacting the project team at pombredanne@gmail.com\nor on the Gitter chat channel at https://gitter.im/aboutcode-org/discuss .\nAll complaints will be reviewed and investigated and will result in a\nresponse that is deemed necessary and appropriate to the circumstances.\nThe project team is obligated to maintain confidentiality with regard to\nthe reporter of an incident. Further details of specific enforcement\npolicies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in\ngood faith may face temporary or permanent repercussions as determined\nby other members of the project\u2019s leadership.\n\nAttribution\n-----------\n\nThis Code of Conduct is adapted from the `Contributor Covenant`_ ,\nversion 1.4, available at\nhttps://www.contributor-covenant.org/version/1/4/code-of-conduct.html\n\n.. _Contributor Covenant: https://www.contributor-covenant.org\n", + "contentType": "text/prs.fallenstein.rst" + } + } + }, + { + "license": { + "name": "declared license file: NOTICE", + "text": { + "content": "#\n# Copyright (c) nexB Inc. and others.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Visit https://aboutcode.org and https://github.com/nexB/license-expression\n# for support and download.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: apache-2.0.LICENSE", + "text": { + "content": " Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", + "contentType": "text/plain" + } } } ], @@ -175,12 +274,20 @@ "licenses": [ { "license": { - "id": "BSD-3-Clause" + "name": "declared license file: LICENSE.txt", + "text": { + "content": "Copyright (c) 2004 Infrae. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n 1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n \n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in\n the documentation and/or other materials provided with the\n distribution.\n\n 3. Neither the name of Infrae nor the names of its contributors may\n be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INFRAE OR\nCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\nEXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\nPROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", + "contentType": "text/plain" + } } }, { "license": { - "name": "License :: OSI Approved :: BSD License" + "name": "declared license file: LICENSES.txt", + "text": { + "content": "lxml is copyright Infrae and distributed under the BSD license (see\ndoc/licenses/BSD.txt), with the following exceptions:\n\nSome code, such a selftest.py, selftest2.py and\nsrc/lxml/_elementpath.py are derived from ElementTree and\ncElementTree. See doc/licenses/elementtree.txt for the license text.\n\nlxml.cssselect and lxml.html are copyright Ian Bicking and distributed\nunder the BSD license (see doc/licenses/BSD.txt).\n\ntest.py, the test-runner script, is GPL and copyright Shuttleworth\nFoundation. See doc/licenses/GPL.txt. It is believed the unchanged\ninclusion of test.py to run the unit test suite falls under the\n\"aggregation\" clause of the GPL and thus does not affect the license\nof the rest of the package.\n\nThe isoschematron implementation uses several XSL and RelaxNG resources:\n * The (XML syntax) RelaxNG schema for schematron, copyright International\n Organization for Standardization (see \n src/lxml/isoschematron/resources/rng/iso-schematron.rng for the license\n text)\n * The skeleton iso-schematron-xlt1 pure-xslt schematron implementation\n xsl stylesheets, copyright Rick Jelliffe and Academia Sinica Computing\n Center, Taiwan (see the xsl files here for the license text: \n src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/)\n * The xsd/rng schema schematron extraction xsl transformations are unlicensed\n and copyright the respective authors as noted (see \n src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl and\n src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl)\n", + "contentType": "text/plain" + } } } ], @@ -198,6 +305,54 @@ "url": "file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868" } ], + "licenses": [ + { + "license": { + "name": "declared license file: my_licenses/richtext.rtf", + "text": { + "content": "e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA=", + "contentType": "application/rtf", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: my_licenses/utf-16be_withBOM.txt", + "text": { + "content": "this file is\r\nutf-16be encoded\r\nwith BOM\r\n\ud83d\ude03\r\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: my_licenses/utf-16le_withBOM.txt", + "text": { + "content": "this file is\nutf-16le encoded\nwith BOM\n\ud83d\ude03\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: my_licenses/utf-8_noBOM.txt", + "text": { + "content": "this file is\nutf-8 encoded\nwithout BOM\n\ud83d\ude03\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: my_licenses/utf-8_withBOM.txt", + "text": { + "content": "\ufeffthis file is\nutf-8 encoded\nwith BOM\n\ud83d\ude03\n", + "contentType": "text/plain" + } + } + } + ], "name": "regression-issue868", "type": "library", "version": "0.1" @@ -245,6 +400,12 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", + "evidence": {}, + "licenses": [ + { + "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" + } + ], "name": "with-extras", "type": "application", "version": "0.1.0" diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.xml.bin index 24d43c9a4..3fffe77e9 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.xml.bin @@ -17,6 +17,10 @@ with-extras 0.1.0 depenndencies with license declaration accoring to PEP 639 + + MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) + + true @@ -31,6 +35,31 @@ MIT + + declared license file: LICENSE + The MIT License (MIT) + +Copyright (c) 2015 Hynek Schlawack and the attrs contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + pkg:pypi/attrs@23.2.0 @@ -62,7 +91,282 @@ Define boolean algebras, create and parse boolean expressions and create custom boolean DSL. - BSD-2-Clause + declared license file: CHANGELOG.rst + +Changelog +========= + + +next +---- + + +4.0 (2022-05-05) +---------------- + +* API changes + + * Drop support for Python 2. + * Test on Python 3.10 + * Make Expression.sort_order an instance attributes and not a class attribute + +* Misc. + + * Correct licensing documentation + * Improve docstringf and apply minor refactorings + * Adopt black code style and isort for imports + * Drop Travis and use GitHub actions for CI + + +3.8 (2020-06-10) +---------------- + +* API changes + + * Add support for evaluation of boolean expression. + Thank you to Lars van Gemerden @gemerden + +* Bug fixes + + * Fix parsing of tokens that have a number as the first character. + Thank you to Jeff Cohen @ jcohen28 + * Restore proper Python 2 compatibility. + Thank you to Benjy Weinberger @benjyw + +* Improve documentation + + * Add pointers to Linux distro packages. + Thank you to Max Mehl @mxmehl and Carmen Bianca Bakker @carmenbianca + * Fix typo. + Thank you to Gabriel Niebler @der-gabe + + +3.7 (2019-10-04) +---------------- + +* API changes + + * Add new sort argument to simplify() to optionally not sort when simplifying + expressions (e.g. not applying "commutativity"). Thank you to Steven Esser + @majurg for this + * Add new argument to tokenizer to optionally accept extra characters in symbol + tokens. Thank you to @carpie for this + + +3.6 (2018-08-06) +---------------- + +* No API changes + +* Bug fixes + + * Fix De Morgan's laws effect on double negation propositions. Thank you to Douglas Cardoso for this + * Improve error checking when parsing + + +3.5 (Nov 1, 2017) +----------------- + +* No API changes + +* Bug fixes + + * Documentation updates and add testing for Python 3.6. Thank you to Alexander Lisianoi @alisianoi + * Improve testng and expression equivalence checks + * Improve subs() method to an expression + + + +3.4 (May 12, 2017) +------------------ + +* No API changes + +* Bug fixes and improvements + + * Fix various documentation typos and improve tests . Thank you to Alexander Lisianoi @alisianoi + * Fix handling for literals vs. symbols in negations Thank you to @YaronK + + +3.3 (2017-02-09) +---------------- + +* API changes + + * #40 and #50 Expression.subs() now takes 'default' thanks to @kronuz + * #45 simplify=False is now the default for parse and related functions or methods. + * #40 Use "&" and "|" as default operators + +* Bug fixes + + * #60 Fix bug for "a or b c" which is not a valid expression + * #58 Fix math formula display in docs + * Improve handling of parse errors + + +2.0.0 (2016-05-11) +------------------ + +* API changes + + * New algebra definition. Refactored class hierarchy. Improved parsing. + +* New features + + * possibility to subclass algebra definition + * new normal forms shortcuts for DNF and CNF. + + +1.1 (2016-04-06) +------------------ + +* Initial release on Pypi. + + + + declared license file: LICENSE.txt + Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + + declared license file: README.rst + boolean.py +========== + +"boolean.py" is a small library implementing a boolean algebra. It +defines two base elements, TRUE and FALSE, and a Symbol class that can +take on one of these two values. Calculations are done in terms of AND, +OR and NOT - other compositions like XOR and NAND are not implemented +but can be emulated with AND or and NOT. Expressions are constructed +from parsed strings or in Python. + +It runs on Python 3.6+ +You can use older version 3.x for Python 2.7+ support. + +https://github.com/bastikr/boolean.py + +Build status: |Build Status| + + +Example +------- + +:: + + >>> import boolean + >>> algebra = boolean.BooleanAlgebra() + >>> expression1 = algebra.parse(u'apple and (oranges or banana) and not banana', simplify=False) + >>> expression1 + AND(Symbol('apple'), OR(Symbol('oranges'), Symbol('banana')), NOT(Symbol('banana'))) + + >>> expression2 = algebra.parse('(oranges | banana) and not banana & apple', simplify=True) + >>> expression2 + AND(Symbol('apple'), NOT(Symbol('banana')), Symbol('oranges')) + + >>> expression1 == expression2 + False + >>> expression1.simplify() == expression2 + True + + +Documentation +------------- + +http://readthedocs.org/docs/booleanpy/en/latest/ + + +Installation +------------ + +Installation via pip +~~~~~~~~~~~~~~~~~~~~ + +To install boolean.py, you need to have the following pieces of software +on your computer: + +- Python 3.6+ +- pip + +You then only need to run the following command: + +``pip install boolean.py`` + + +Installation via package managers +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +There are packages available for easy install on some operating systems. +You are welcome to help us package this tool for more distributions! + +- boolean.py has been packaged as Arch Linux, Fedora, openSus, + nixpkgs, Guix, DragonFly and FreeBSD + `packages <https://repology.org/project/python:boolean.py/versions>`__ . + +In particular: + +- Arch Linux (AUR): + `python-boolean.py <https://aur.archlinux.org/packages/python-boolean.py/>`__ +- Fedora: + `python-boolean.py <https://apps.fedoraproject.org/packages/python-boolean.py>`__ +- openSUSE: + `python-boolean.py <https://software.opensuse.org/package/python-boolean.py>`__ + + +Testing +------- + +Test ``boolean.py`` with your current Python environment: + +``python setup.py test`` + +Test with all of the supported Python environments using ``tox``: + +:: + + pip install -r requirements-dev.txt + tox + +If ``tox`` throws ``InterpreterNotFound``, limit it to python +interpreters that are actually installed on your machine: + +:: + + tox -e py36 + +Alternatively use pytest. + + +License +------- + +Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others +SPDX-License-Identifier: BSD-2-Clause + +.. |Build Status| image:: https://travis-ci.org/bastikr/boolean.py.svg?branch=master + :target: https://travis-ci.org/bastikr/boolean.py + pkg:pypi/boolean.py@4.0 @@ -78,7 +382,250 @@ 43.0.1 cryptography is a package which provides cryptographic recipes and primitives to Python developers. - Apache-2.0 OR BSD-3-Clause + + declared license file: LICENSE + This software is made available under the terms of *either* of the licenses +found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made +under the terms of *both* these licenses. + + + + declared license file: LICENSE.APACHE + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + + declared license file: LICENSE.BSD + Copyright (c) Individual contributors. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. Neither the name of PyCA Cryptography nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + pkg:pypi/cryptography@43.0.1 @@ -110,11 +657,41 @@ Identify specific nodes in a JSON document (RFC 6901) - License :: OSI Approved :: BSD License + declared license file: AUTHORS + Stefan Kögl <stefan@skoegl.net> +Alexander Shorin <kxepal@gmail.com> +Christopher J. White <chris@grierwhite.com> + - declared license of 'jsonpointer' - Modified BSD License + declared license file: LICENSE.txt + Copyright (c) 2011 Stefan Kögl <stefan@skoegl.net> +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + pkg:pypi/jsonpointer@2.4 @@ -131,7 +708,459 @@ license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic. - Apache-2.0 + declared license file: AUTHORS.rst + The following organizations or individuals have contributed to this code: + +- Ayan Sinha Mahapatra @AyanSinhaMahapatra +- Carmen Bianca Bakker @carmenbianca +- Chin-Yeung Li @chinyeungli +- Dennis Clark @DennisClark +- John Horan @johnmhoran +- Jono Yang @JonoYang +- Max Mehl @mxmehl +- nexB Inc. @nexB +- Peter Kolbus @pkolbus +- Philippe Ombredanne @pombredanne +- Sebastian Schuberth @sschuberth +- Steven Esser @majurg +- Thomas Druez @tdruez + + + + declared license file: CHANGELOG.rst + Changelog +========= + +v30.3.0 - 2024-03-18 +-------------------- + +This is a minor release without API changes: + +- Use latest skeleton +- Update license list to latest ScanCode and SPDX 3.23 +- Drop support for Python 3.7 + +v30.2.0 - 2023-11-29 +-------------------- + +This is a minor release without API changes: + +- Use latest skeleton +- Update license list to latest ScanCode and SPDX 3.22 +- Add Python 3.12 support in CI + + +v30.1.1 - 2023-01-16 +---------------------- + +This is a minor dot release without API changes + +- Use latest skeleton +- Update license list to latest ScanCode and SPDX 3.20 + + +v30.1.0 - 2023-01-16 +---------------------- + +This is a minor release without API changes + +- Use latest skeleton (and updated configure script) +- Update license list to latest ScanCode and SPDX 3.19 +- Use correct syntax for python_require +- Drop using Travis and Appveyor +- Drop support for Python 3.7 and add Python 3.11 in CI + + +v30.0.0 - 2022-05-10 +---------------------- + +This is a minor release with API changes + +- Use latest skeleton (and updated configure script) +- Drop using calver +- Improve error checking when combining licenses + + + +v21.6.14 - 2021-06-14 +---------------------- + +Added +~~~~~ + +- Switch to calver for package versioning to better convey the currency of the + bundled data. + +- Include https://scancode-licensedb.aboutcode.org/ licenses list with + ScanCode (v21.6.7) and SPDX licenses (v3.13) keys. Add new functions to + create Licensing using these licenses as LicenseSymbol. + +- Add new License.dedup() method to deduplicate and simplify license expressions + without over simplifying. + +- Add new License.validate() method to return a new ExpressionInfo object with + details on a license expression validation. + + +Changed +~~~~~~~ +- Drop support for Python 2. +- Adopt the project skeleton from https://github.com/nexB/skeleton + and its new configure script + + +v1.2 - 2019-11-14 +------------------ +Added +~~~~~ +- Add ability to render WITH expression wrapped in parenthesis + +Fixes +~~~~~ +- Fix anomalous backslashes in strings + +Changed +~~~~~~~ +- Update the thirdparty directory structure. + + +v1.0 - 2019-10-16 +------------------ +Added +~~~~~ +- New version of boolean.py library +- Add ability to leave license expressions unsorted when simplifying + +Changed +~~~~~~~ +- updated travis CI settings + + +v0.999 - 2019-04-29 +-------------------- +- Initial release +- license-expression is small utility library to parse, compare and + simplify and normalize license expressions. + + + + + declared license file: CODE_OF_CONDUCT.rst + Contributor Covenant Code of Conduct +==================================== + +Our Pledge +---------- + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our +project and our community a harassment-free experience for everyone, +regardless of age, body size, disability, ethnicity, gender identity and +expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity and +orientation. + +Our Standards +------------- + +Examples of behavior that contributes to creating a positive environment +include: + +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Gracefully accepting constructive criticism +- Focusing on what is best for the community +- Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +- The use of sexualized language or imagery and unwelcome sexual + attention or advances +- Trolling, insulting/derogatory comments, and personal or political + attacks +- Public or private harassment +- Publishing others’ private information, such as a physical or + electronic address, without explicit permission +- Other conduct which could reasonably be considered inappropriate in a + professional setting + +Our Responsibilities +-------------------- + +Project maintainers are responsible for clarifying the standards of +acceptable behavior and are expected to take appropriate and fair +corrective action in response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, +or reject comments, commits, code, wiki edits, issues, and other +contributions that are not aligned to this Code of Conduct, or to ban +temporarily or permanently any contributor for other behaviors that they +deem inappropriate, threatening, offensive, or harmful. + +Scope +----- + +This Code of Conduct applies both within project spaces and in public +spaces when an individual is representing the project or its community. +Examples of representing a project or community include using an +official project e-mail address, posting via an official social media +account, or acting as an appointed representative at an online or +offline event. Representation of a project may be further defined and +clarified by project maintainers. + +Enforcement +----------- + +Instances of abusive, harassing, or otherwise unacceptable behavior may +be reported by contacting the project team at pombredanne@gmail.com +or on the Gitter chat channel at https://gitter.im/aboutcode-org/discuss . +All complaints will be reviewed and investigated and will result in a +response that is deemed necessary and appropriate to the circumstances. +The project team is obligated to maintain confidentiality with regard to +the reporter of an incident. Further details of specific enforcement +policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in +good faith may face temporary or permanent repercussions as determined +by other members of the project’s leadership. + +Attribution +----------- + +This Code of Conduct is adapted from the `Contributor Covenant`_ , +version 1.4, available at +https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + +.. _Contributor Covenant: https://www.contributor-covenant.org + + + + declared license file: NOTICE + # +# Copyright (c) nexB Inc. and others. +# SPDX-License-Identifier: Apache-2.0 +# +# Visit https://aboutcode.org and https://github.com/nexB/license-expression +# for support and download. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + + + + declared license file: apache-2.0.LICENSE + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + pkg:pypi/license-expression@30.3.0 @@ -148,10 +1177,70 @@ Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. - BSD-3-Clause + declared license file: LICENSE.txt + Copyright (c) 2004 Infrae. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + 3. Neither the name of Infrae nor the names of its contributors may + be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INFRAE OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + - License :: OSI Approved :: BSD License + declared license file: LICENSES.txt + lxml is copyright Infrae and distributed under the BSD license (see +doc/licenses/BSD.txt), with the following exceptions: + +Some code, such a selftest.py, selftest2.py and +src/lxml/_elementpath.py are derived from ElementTree and +cElementTree. See doc/licenses/elementtree.txt for the license text. + +lxml.cssselect and lxml.html are copyright Ian Bicking and distributed +under the BSD license (see doc/licenses/BSD.txt). + +test.py, the test-runner script, is GPL and copyright Shuttleworth +Foundation. See doc/licenses/GPL.txt. It is believed the unchanged +inclusion of test.py to run the unit test suite falls under the +"aggregation" clause of the GPL and thus does not affect the license +of the rest of the package. + +The isoschematron implementation uses several XSL and RelaxNG resources: + * The (XML syntax) RelaxNG schema for schematron, copyright International + Organization for Standardization (see + src/lxml/isoschematron/resources/rng/iso-schematron.rng for the license + text) + * The skeleton iso-schematron-xlt1 pure-xslt schematron implementation + xsl stylesheets, copyright Rick Jelliffe and Academia Sinica Computing + Center, Taiwan (see the xsl files here for the license text: + src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/) + * The xsd/rng schema schematron extraction xsl transformations are unlicensed + and copyright the respective authors as noted (see + src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl and + src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl) + pkg:pypi/lxml@5.3.0 @@ -169,6 +1258,44 @@ regression-issue868 0.1 + + + declared license file: my_licenses/richtext.rtf + e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA= + + + declared license file: my_licenses/utf-16be_withBOM.txt + this file is +utf-16be encoded +with BOM +😃 + + + + declared license file: my_licenses/utf-16le_withBOM.txt + this file is +utf-16le encoded +with BOM +😃 + + + + declared license file: my_licenses/utf-8_noBOM.txt + this file is +utf-8 encoded +without BOM +😃 + + + + declared license file: my_licenses/utf-8_withBOM.txt + this file is +utf-8 encoded +with BOM +😃 + + + file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.json.bin index e8cfac9cb..146984826 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.json.bin @@ -35,6 +35,15 @@ "license": { "id": "MIT" } + }, + { + "license": { + "name": "declared license file: LICENSE", + "text": { + "content": "The MIT License (MIT)\n\nCopyright (c) 2015 Hynek Schlawack and the attrs contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n", + "contentType": "text/plain" + } + } } ], "name": "attrs", @@ -55,7 +64,29 @@ "licenses": [ { "license": { - "id": "BSD-2-Clause" + "name": "declared license file: CHANGELOG.rst", + "text": { + "content": "\nChangelog\n=========\n\n\nnext\n----\n\n\n4.0 (2022-05-05)\n----------------\n\n* API changes\n\n * Drop support for Python 2.\n * Test on Python 3.10\n * Make Expression.sort_order an instance attributes and not a class attribute\n\n* Misc.\n\n * Correct licensing documentation\n * Improve docstringf and apply minor refactorings\n * Adopt black code style and isort for imports\n * Drop Travis and use GitHub actions for CI\n\n\n3.8 (2020-06-10)\n----------------\n\n* API changes\n\n * Add support for evaluation of boolean expression.\n Thank you to Lars van Gemerden @gemerden\n\n* Bug fixes\n\n * Fix parsing of tokens that have a number as the first character. \n Thank you to Jeff Cohen @ jcohen28\n * Restore proper Python 2 compatibility. \n Thank you to Benjy Weinberger @benjyw\n\n* Improve documentation\n\n * Add pointers to Linux distro packages.\n Thank you to Max Mehl @mxmehl and Carmen Bianca Bakker @carmenbianca\n * Fix typo.\n Thank you to Gabriel Niebler @der-gabe\n\n\n3.7 (2019-10-04)\n----------------\n\n* API changes\n\n * Add new sort argument to simplify() to optionally not sort when simplifying\n expressions (e.g. not applying \"commutativity\"). Thank you to Steven Esser\n @majurg for this\n * Add new argument to tokenizer to optionally accept extra characters in symbol\n tokens. Thank you to @carpie for this\n\n\n3.6 (2018-08-06)\n----------------\n\n* No API changes\n\n* Bug fixes\n\n * Fix De Morgan's laws effect on double negation propositions. Thank you to Douglas Cardoso for this\n * Improve error checking when parsing\n\n\n3.5 (Nov 1, 2017)\n-----------------\n\n* No API changes\n\n* Bug fixes\n\n * Documentation updates and add testing for Python 3.6. Thank you to Alexander Lisianoi @alisianoi\n * Improve testng and expression equivalence checks\n * Improve subs() method to an expression \n\n \n\n3.4 (May 12, 2017)\n------------------\n\n* No API changes\n\n* Bug fixes and improvements\n\n * Fix various documentation typos and improve tests . Thank you to Alexander Lisianoi @alisianoi\n * Fix handling for literals vs. symbols in negations Thank you to @YaronK\n\n\n3.3 (2017-02-09)\n----------------\n\n* API changes\n\n * #40 and #50 Expression.subs() now takes 'default' thanks to @kronuz\n * #45 simplify=False is now the default for parse and related functions or methods.\n * #40 Use \"&\" and \"|\" as default operators\n\n* Bug fixes\n\n * #60 Fix bug for \"a or b c\" which is not a valid expression\n * #58 Fix math formula display in docs\n * Improve handling of parse errors\n\n\n2.0.0 (2016-05-11)\n------------------\n\n* API changes\n\n * New algebra definition. Refactored class hierarchy. Improved parsing.\n\n* New features\n\n * possibility to subclass algebra definition\n * new normal forms shortcuts for DNF and CNF.\n\n\n1.1 (2016-04-06)\n------------------\n\n* Initial release on Pypi.\n", + "contentType": "text/prs.fallenstein.rst" + } + } + }, + { + "license": { + "name": "declared license file: LICENSE.txt", + "text": { + "content": "Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice, this\nlist of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice,\nthis list of conditions and the following disclaimer in the documentation and/or\nother materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: README.rst", + "text": { + "content": "boolean.py\n==========\n\n\"boolean.py\" is a small library implementing a boolean algebra. It\ndefines two base elements, TRUE and FALSE, and a Symbol class that can\ntake on one of these two values. Calculations are done in terms of AND,\nOR and NOT - other compositions like XOR and NAND are not implemented\nbut can be emulated with AND or and NOT. Expressions are constructed\nfrom parsed strings or in Python.\n\nIt runs on Python 3.6+\nYou can use older version 3.x for Python 2.7+ support.\n\nhttps://github.com/bastikr/boolean.py\n\nBuild status: |Build Status|\n\n\nExample\n-------\n\n::\n\n >>> import boolean\n >>> algebra = boolean.BooleanAlgebra()\n >>> expression1 = algebra.parse(u'apple and (oranges or banana) and not banana', simplify=False)\n >>> expression1\n AND(Symbol('apple'), OR(Symbol('oranges'), Symbol('banana')), NOT(Symbol('banana')))\n\n >>> expression2 = algebra.parse('(oranges | banana) and not banana & apple', simplify=True)\n >>> expression2\n AND(Symbol('apple'), NOT(Symbol('banana')), Symbol('oranges'))\n\n >>> expression1 == expression2\n False\n >>> expression1.simplify() == expression2\n True\n\n\nDocumentation\n-------------\n\nhttp://readthedocs.org/docs/booleanpy/en/latest/\n\n\nInstallation\n------------\n\nInstallation via pip\n~~~~~~~~~~~~~~~~~~~~\n\nTo install boolean.py, you need to have the following pieces of software\non your computer:\n\n- Python 3.6+\n- pip\n\nYou then only need to run the following command:\n\n``pip install boolean.py``\n\n\nInstallation via package managers\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThere are packages available for easy install on some operating systems.\nYou are welcome to help us package this tool for more distributions!\n\n- boolean.py has been packaged as Arch Linux, Fedora, openSus,\n nixpkgs, Guix, DragonFly and FreeBSD \n `packages `__ .\n\nIn particular:\n\n- Arch Linux (AUR):\n `python-boolean.py `__\n- Fedora:\n `python-boolean.py `__\n- openSUSE:\n `python-boolean.py `__\n\n\nTesting\n-------\n\nTest ``boolean.py`` with your current Python environment:\n\n``python setup.py test``\n\nTest with all of the supported Python environments using ``tox``:\n\n::\n\n pip install -r requirements-dev.txt\n tox\n\nIf ``tox`` throws ``InterpreterNotFound``, limit it to python\ninterpreters that are actually installed on your machine:\n\n::\n\n tox -e py36\n\nAlternatively use pytest.\n\n\nLicense\n-------\n\nCopyright (c) Sebastian Kraemer, basti.kr@gmail.com and others\nSPDX-License-Identifier: BSD-2-Clause\n\n.. |Build Status| image:: https://travis-ci.org/bastikr/boolean.py.svg?branch=master\n :target: https://travis-ci.org/bastikr/boolean.py\n", + "contentType": "text/prs.fallenstein.rst" + } } } ], @@ -96,7 +127,31 @@ ], "licenses": [ { - "expression": "Apache-2.0 OR BSD-3-Clause" + "license": { + "name": "declared license file: LICENSE", + "text": { + "content": "This software is made available under the terms of *either* of the licenses\nfound in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made\nunder the terms of *both* these licenses.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: LICENSE.APACHE", + "text": { + "content": "\n Apache License\n Version 2.0, January 2004\n https://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: LICENSE.BSD", + "text": { + "content": "Copyright (c) Individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of PyCA Cryptography nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", + "contentType": "text/plain" + } + } } ], "name": "cryptography", @@ -117,14 +172,18 @@ "licenses": [ { "license": { - "name": "License :: OSI Approved :: BSD License" + "name": "declared license file: AUTHORS", + "text": { + "content": "Stefan K\u00f6gl \nAlexander Shorin \nChristopher J. White \n", + "contentType": "text/plain" + } } }, { "license": { - "name": "declared license of 'jsonpointer'", + "name": "declared license file: LICENSE.txt", "text": { - "content": "Modified BSD License", + "content": "Copyright (c) 2011 Stefan K\u00f6gl \nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions\nare met:\n\n1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n3. The name of the author may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR\nIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\nOF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\nIN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\nNOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\nTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n", "contentType": "text/plain" } } @@ -148,7 +207,47 @@ "licenses": [ { "license": { - "id": "Apache-2.0" + "name": "declared license file: AUTHORS.rst", + "text": { + "content": "The following organizations or individuals have contributed to this code:\n\n- Ayan Sinha Mahapatra @AyanSinhaMahapatra\n- Carmen Bianca Bakker @carmenbianca\n- Chin-Yeung Li @chinyeungli\n- Dennis Clark @DennisClark\n- John Horan @johnmhoran\n- Jono Yang @JonoYang\n- Max Mehl @mxmehl\n- nexB Inc. @nexB\n- Peter Kolbus @pkolbus\n- Philippe Ombredanne @pombredanne\n- Sebastian Schuberth @sschuberth\n- Steven Esser @majurg\n- Thomas Druez @tdruez\n", + "contentType": "text/prs.fallenstein.rst" + } + } + }, + { + "license": { + "name": "declared license file: CHANGELOG.rst", + "text": { + "content": "Changelog\n=========\n\nv30.3.0 - 2024-03-18\n--------------------\n\nThis is a minor release without API changes:\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.23\n- Drop support for Python 3.7\n\nv30.2.0 - 2023-11-29\n--------------------\n\nThis is a minor release without API changes:\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.22\n- Add Python 3.12 support in CI\n\n\nv30.1.1 - 2023-01-16\n----------------------\n\nThis is a minor dot release without API changes\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.20\n\n\nv30.1.0 - 2023-01-16\n----------------------\n\nThis is a minor release without API changes\n\n- Use latest skeleton (and updated configure script)\n- Update license list to latest ScanCode and SPDX 3.19\n- Use correct syntax for python_require\n- Drop using Travis and Appveyor\n- Drop support for Python 3.7 and add Python 3.11 in CI\n\n\nv30.0.0 - 2022-05-10\n----------------------\n\nThis is a minor release with API changes\n\n- Use latest skeleton (and updated configure script)\n- Drop using calver\n- Improve error checking when combining licenses\n\n\n\nv21.6.14 - 2021-06-14\n----------------------\n\nAdded\n~~~~~\n\n- Switch to calver for package versioning to better convey the currency of the\n bundled data.\n\n- Include https://scancode-licensedb.aboutcode.org/ licenses list with\n ScanCode (v21.6.7) and SPDX licenses (v3.13) keys. Add new functions to\n create Licensing using these licenses as LicenseSymbol.\n\n- Add new License.dedup() method to deduplicate and simplify license expressions\n without over simplifying.\n\n- Add new License.validate() method to return a new ExpressionInfo object with\n details on a license expression validation.\n\n\nChanged\n~~~~~~~\n- Drop support for Python 2.\n- Adopt the project skeleton from https://github.com/nexB/skeleton\n and its new configure script\n\n\nv1.2 - 2019-11-14\n------------------\nAdded\n~~~~~\n- Add ability to render WITH expression wrapped in parenthesis\n\nFixes\n~~~~~\n- Fix anomalous backslashes in strings\n\nChanged\n~~~~~~~\n- Update the thirdparty directory structure.\n\n\nv1.0 - 2019-10-16\n------------------\nAdded\n~~~~~\n- New version of boolean.py library\n- Add ability to leave license expressions unsorted when simplifying\n\nChanged\n~~~~~~~\n- updated travis CI settings\n\n\nv0.999 - 2019-04-29\n--------------------\n- Initial release\n- license-expression is small utility library to parse, compare and\n simplify and normalize license expressions.\n\n", + "contentType": "text/prs.fallenstein.rst" + } + } + }, + { + "license": { + "name": "declared license file: CODE_OF_CONDUCT.rst", + "text": { + "content": "Contributor Covenant Code of Conduct\n====================================\n\nOur Pledge\n----------\n\nIn the interest of fostering an open and welcoming environment, we as\ncontributors and maintainers pledge to making participation in our\nproject and our community a harassment-free experience for everyone,\nregardless of age, body size, disability, ethnicity, gender identity and\nexpression, level of experience, education, socio-economic status,\nnationality, personal appearance, race, religion, or sexual identity and\norientation.\n\nOur Standards\n-------------\n\nExamples of behavior that contributes to creating a positive environment\ninclude:\n\n- Using welcoming and inclusive language\n- Being respectful of differing viewpoints and experiences\n- Gracefully accepting constructive criticism\n- Focusing on what is best for the community\n- Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n- The use of sexualized language or imagery and unwelcome sexual\n attention or advances\n- Trolling, insulting/derogatory comments, and personal or political\n attacks\n- Public or private harassment\n- Publishing others\u2019 private information, such as a physical or\n electronic address, without explicit permission\n- Other conduct which could reasonably be considered inappropriate in a\n professional setting\n\nOur Responsibilities\n--------------------\n\nProject maintainers are responsible for clarifying the standards of\nacceptable behavior and are expected to take appropriate and fair\ncorrective action in response to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit,\nor reject comments, commits, code, wiki edits, issues, and other\ncontributions that are not aligned to this Code of Conduct, or to ban\ntemporarily or permanently any contributor for other behaviors that they\ndeem inappropriate, threatening, offensive, or harmful.\n\nScope\n-----\n\nThis Code of Conduct applies both within project spaces and in public\nspaces when an individual is representing the project or its community.\nExamples of representing a project or community include using an\nofficial project e-mail address, posting via an official social media\naccount, or acting as an appointed representative at an online or\noffline event. Representation of a project may be further defined and\nclarified by project maintainers.\n\nEnforcement\n-----------\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may\nbe reported by contacting the project team at pombredanne@gmail.com\nor on the Gitter chat channel at https://gitter.im/aboutcode-org/discuss .\nAll complaints will be reviewed and investigated and will result in a\nresponse that is deemed necessary and appropriate to the circumstances.\nThe project team is obligated to maintain confidentiality with regard to\nthe reporter of an incident. Further details of specific enforcement\npolicies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in\ngood faith may face temporary or permanent repercussions as determined\nby other members of the project\u2019s leadership.\n\nAttribution\n-----------\n\nThis Code of Conduct is adapted from the `Contributor Covenant`_ ,\nversion 1.4, available at\nhttps://www.contributor-covenant.org/version/1/4/code-of-conduct.html\n\n.. _Contributor Covenant: https://www.contributor-covenant.org\n", + "contentType": "text/prs.fallenstein.rst" + } + } + }, + { + "license": { + "name": "declared license file: NOTICE", + "text": { + "content": "#\n# Copyright (c) nexB Inc. and others.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Visit https://aboutcode.org and https://github.com/nexB/license-expression\n# for support and download.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: apache-2.0.LICENSE", + "text": { + "content": " Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", + "contentType": "text/plain" + } } } ], @@ -175,12 +274,20 @@ "licenses": [ { "license": { - "id": "BSD-3-Clause" + "name": "declared license file: LICENSE.txt", + "text": { + "content": "Copyright (c) 2004 Infrae. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n 1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n \n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in\n the documentation and/or other materials provided with the\n distribution.\n\n 3. Neither the name of Infrae nor the names of its contributors may\n be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INFRAE OR\nCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\nEXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\nPROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", + "contentType": "text/plain" + } } }, { "license": { - "name": "License :: OSI Approved :: BSD License" + "name": "declared license file: LICENSES.txt", + "text": { + "content": "lxml is copyright Infrae and distributed under the BSD license (see\ndoc/licenses/BSD.txt), with the following exceptions:\n\nSome code, such a selftest.py, selftest2.py and\nsrc/lxml/_elementpath.py are derived from ElementTree and\ncElementTree. See doc/licenses/elementtree.txt for the license text.\n\nlxml.cssselect and lxml.html are copyright Ian Bicking and distributed\nunder the BSD license (see doc/licenses/BSD.txt).\n\ntest.py, the test-runner script, is GPL and copyright Shuttleworth\nFoundation. See doc/licenses/GPL.txt. It is believed the unchanged\ninclusion of test.py to run the unit test suite falls under the\n\"aggregation\" clause of the GPL and thus does not affect the license\nof the rest of the package.\n\nThe isoschematron implementation uses several XSL and RelaxNG resources:\n * The (XML syntax) RelaxNG schema for schematron, copyright International\n Organization for Standardization (see \n src/lxml/isoschematron/resources/rng/iso-schematron.rng for the license\n text)\n * The skeleton iso-schematron-xlt1 pure-xslt schematron implementation\n xsl stylesheets, copyright Rick Jelliffe and Academia Sinica Computing\n Center, Taiwan (see the xsl files here for the license text: \n src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/)\n * The xsd/rng schema schematron extraction xsl transformations are unlicensed\n and copyright the respective authors as noted (see \n src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl and\n src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl)\n", + "contentType": "text/plain" + } } } ], @@ -198,6 +305,54 @@ "url": "file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868" } ], + "licenses": [ + { + "license": { + "name": "declared license file: my_licenses/richtext.rtf", + "text": { + "content": "e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA=", + "contentType": "application/rtf", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: my_licenses/utf-16be_withBOM.txt", + "text": { + "content": "this file is\r\nutf-16be encoded\r\nwith BOM\r\n\ud83d\ude03\r\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: my_licenses/utf-16le_withBOM.txt", + "text": { + "content": "this file is\nutf-16le encoded\nwith BOM\n\ud83d\ude03\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: my_licenses/utf-8_noBOM.txt", + "text": { + "content": "this file is\nutf-8 encoded\nwithout BOM\n\ud83d\ude03\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: my_licenses/utf-8_withBOM.txt", + "text": { + "content": "\ufeffthis file is\nutf-8 encoded\nwith BOM\n\ud83d\ude03\n", + "contentType": "text/plain" + } + } + } + ], "name": "regression-issue868", "type": "library", "version": "0.1" @@ -245,6 +400,12 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", + "evidence": {}, + "licenses": [ + { + "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" + } + ], "name": "with-extras", "type": "application", "version": "0.1.0" diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.xml.bin index d279b4edf..3ecfa593c 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.xml.bin @@ -44,6 +44,10 @@ with-extras 0.1.0 depenndencies with license declaration accoring to PEP 639 + + MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) + + true @@ -58,6 +62,31 @@ MIT + + declared license file: LICENSE + The MIT License (MIT) + +Copyright (c) 2015 Hynek Schlawack and the attrs contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + pkg:pypi/attrs@23.2.0 @@ -89,7 +118,282 @@ Define boolean algebras, create and parse boolean expressions and create custom boolean DSL. - BSD-2-Clause + declared license file: CHANGELOG.rst + +Changelog +========= + + +next +---- + + +4.0 (2022-05-05) +---------------- + +* API changes + + * Drop support for Python 2. + * Test on Python 3.10 + * Make Expression.sort_order an instance attributes and not a class attribute + +* Misc. + + * Correct licensing documentation + * Improve docstringf and apply minor refactorings + * Adopt black code style and isort for imports + * Drop Travis and use GitHub actions for CI + + +3.8 (2020-06-10) +---------------- + +* API changes + + * Add support for evaluation of boolean expression. + Thank you to Lars van Gemerden @gemerden + +* Bug fixes + + * Fix parsing of tokens that have a number as the first character. + Thank you to Jeff Cohen @ jcohen28 + * Restore proper Python 2 compatibility. + Thank you to Benjy Weinberger @benjyw + +* Improve documentation + + * Add pointers to Linux distro packages. + Thank you to Max Mehl @mxmehl and Carmen Bianca Bakker @carmenbianca + * Fix typo. + Thank you to Gabriel Niebler @der-gabe + + +3.7 (2019-10-04) +---------------- + +* API changes + + * Add new sort argument to simplify() to optionally not sort when simplifying + expressions (e.g. not applying "commutativity"). Thank you to Steven Esser + @majurg for this + * Add new argument to tokenizer to optionally accept extra characters in symbol + tokens. Thank you to @carpie for this + + +3.6 (2018-08-06) +---------------- + +* No API changes + +* Bug fixes + + * Fix De Morgan's laws effect on double negation propositions. Thank you to Douglas Cardoso for this + * Improve error checking when parsing + + +3.5 (Nov 1, 2017) +----------------- + +* No API changes + +* Bug fixes + + * Documentation updates and add testing for Python 3.6. Thank you to Alexander Lisianoi @alisianoi + * Improve testng and expression equivalence checks + * Improve subs() method to an expression + + + +3.4 (May 12, 2017) +------------------ + +* No API changes + +* Bug fixes and improvements + + * Fix various documentation typos and improve tests . Thank you to Alexander Lisianoi @alisianoi + * Fix handling for literals vs. symbols in negations Thank you to @YaronK + + +3.3 (2017-02-09) +---------------- + +* API changes + + * #40 and #50 Expression.subs() now takes 'default' thanks to @kronuz + * #45 simplify=False is now the default for parse and related functions or methods. + * #40 Use "&" and "|" as default operators + +* Bug fixes + + * #60 Fix bug for "a or b c" which is not a valid expression + * #58 Fix math formula display in docs + * Improve handling of parse errors + + +2.0.0 (2016-05-11) +------------------ + +* API changes + + * New algebra definition. Refactored class hierarchy. Improved parsing. + +* New features + + * possibility to subclass algebra definition + * new normal forms shortcuts for DNF and CNF. + + +1.1 (2016-04-06) +------------------ + +* Initial release on Pypi. + + + + declared license file: LICENSE.txt + Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + + declared license file: README.rst + boolean.py +========== + +"boolean.py" is a small library implementing a boolean algebra. It +defines two base elements, TRUE and FALSE, and a Symbol class that can +take on one of these two values. Calculations are done in terms of AND, +OR and NOT - other compositions like XOR and NAND are not implemented +but can be emulated with AND or and NOT. Expressions are constructed +from parsed strings or in Python. + +It runs on Python 3.6+ +You can use older version 3.x for Python 2.7+ support. + +https://github.com/bastikr/boolean.py + +Build status: |Build Status| + + +Example +------- + +:: + + >>> import boolean + >>> algebra = boolean.BooleanAlgebra() + >>> expression1 = algebra.parse(u'apple and (oranges or banana) and not banana', simplify=False) + >>> expression1 + AND(Symbol('apple'), OR(Symbol('oranges'), Symbol('banana')), NOT(Symbol('banana'))) + + >>> expression2 = algebra.parse('(oranges | banana) and not banana & apple', simplify=True) + >>> expression2 + AND(Symbol('apple'), NOT(Symbol('banana')), Symbol('oranges')) + + >>> expression1 == expression2 + False + >>> expression1.simplify() == expression2 + True + + +Documentation +------------- + +http://readthedocs.org/docs/booleanpy/en/latest/ + + +Installation +------------ + +Installation via pip +~~~~~~~~~~~~~~~~~~~~ + +To install boolean.py, you need to have the following pieces of software +on your computer: + +- Python 3.6+ +- pip + +You then only need to run the following command: + +``pip install boolean.py`` + + +Installation via package managers +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +There are packages available for easy install on some operating systems. +You are welcome to help us package this tool for more distributions! + +- boolean.py has been packaged as Arch Linux, Fedora, openSus, + nixpkgs, Guix, DragonFly and FreeBSD + `packages <https://repology.org/project/python:boolean.py/versions>`__ . + +In particular: + +- Arch Linux (AUR): + `python-boolean.py <https://aur.archlinux.org/packages/python-boolean.py/>`__ +- Fedora: + `python-boolean.py <https://apps.fedoraproject.org/packages/python-boolean.py>`__ +- openSUSE: + `python-boolean.py <https://software.opensuse.org/package/python-boolean.py>`__ + + +Testing +------- + +Test ``boolean.py`` with your current Python environment: + +``python setup.py test`` + +Test with all of the supported Python environments using ``tox``: + +:: + + pip install -r requirements-dev.txt + tox + +If ``tox`` throws ``InterpreterNotFound``, limit it to python +interpreters that are actually installed on your machine: + +:: + + tox -e py36 + +Alternatively use pytest. + + +License +------- + +Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others +SPDX-License-Identifier: BSD-2-Clause + +.. |Build Status| image:: https://travis-ci.org/bastikr/boolean.py.svg?branch=master + :target: https://travis-ci.org/bastikr/boolean.py + pkg:pypi/boolean.py@4.0 @@ -105,7 +409,250 @@ 43.0.1 cryptography is a package which provides cryptographic recipes and primitives to Python developers. - Apache-2.0 OR BSD-3-Clause + + declared license file: LICENSE + This software is made available under the terms of *either* of the licenses +found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made +under the terms of *both* these licenses. + + + + declared license file: LICENSE.APACHE + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + + declared license file: LICENSE.BSD + Copyright (c) Individual contributors. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. Neither the name of PyCA Cryptography nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + pkg:pypi/cryptography@43.0.1 @@ -137,11 +684,41 @@ Identify specific nodes in a JSON document (RFC 6901) - License :: OSI Approved :: BSD License + declared license file: AUTHORS + Stefan Kögl <stefan@skoegl.net> +Alexander Shorin <kxepal@gmail.com> +Christopher J. White <chris@grierwhite.com> + - declared license of 'jsonpointer' - Modified BSD License + declared license file: LICENSE.txt + Copyright (c) 2011 Stefan Kögl <stefan@skoegl.net> +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + pkg:pypi/jsonpointer@2.4 @@ -158,7 +735,459 @@ license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic. - Apache-2.0 + declared license file: AUTHORS.rst + The following organizations or individuals have contributed to this code: + +- Ayan Sinha Mahapatra @AyanSinhaMahapatra +- Carmen Bianca Bakker @carmenbianca +- Chin-Yeung Li @chinyeungli +- Dennis Clark @DennisClark +- John Horan @johnmhoran +- Jono Yang @JonoYang +- Max Mehl @mxmehl +- nexB Inc. @nexB +- Peter Kolbus @pkolbus +- Philippe Ombredanne @pombredanne +- Sebastian Schuberth @sschuberth +- Steven Esser @majurg +- Thomas Druez @tdruez + + + + declared license file: CHANGELOG.rst + Changelog +========= + +v30.3.0 - 2024-03-18 +-------------------- + +This is a minor release without API changes: + +- Use latest skeleton +- Update license list to latest ScanCode and SPDX 3.23 +- Drop support for Python 3.7 + +v30.2.0 - 2023-11-29 +-------------------- + +This is a minor release without API changes: + +- Use latest skeleton +- Update license list to latest ScanCode and SPDX 3.22 +- Add Python 3.12 support in CI + + +v30.1.1 - 2023-01-16 +---------------------- + +This is a minor dot release without API changes + +- Use latest skeleton +- Update license list to latest ScanCode and SPDX 3.20 + + +v30.1.0 - 2023-01-16 +---------------------- + +This is a minor release without API changes + +- Use latest skeleton (and updated configure script) +- Update license list to latest ScanCode and SPDX 3.19 +- Use correct syntax for python_require +- Drop using Travis and Appveyor +- Drop support for Python 3.7 and add Python 3.11 in CI + + +v30.0.0 - 2022-05-10 +---------------------- + +This is a minor release with API changes + +- Use latest skeleton (and updated configure script) +- Drop using calver +- Improve error checking when combining licenses + + + +v21.6.14 - 2021-06-14 +---------------------- + +Added +~~~~~ + +- Switch to calver for package versioning to better convey the currency of the + bundled data. + +- Include https://scancode-licensedb.aboutcode.org/ licenses list with + ScanCode (v21.6.7) and SPDX licenses (v3.13) keys. Add new functions to + create Licensing using these licenses as LicenseSymbol. + +- Add new License.dedup() method to deduplicate and simplify license expressions + without over simplifying. + +- Add new License.validate() method to return a new ExpressionInfo object with + details on a license expression validation. + + +Changed +~~~~~~~ +- Drop support for Python 2. +- Adopt the project skeleton from https://github.com/nexB/skeleton + and its new configure script + + +v1.2 - 2019-11-14 +------------------ +Added +~~~~~ +- Add ability to render WITH expression wrapped in parenthesis + +Fixes +~~~~~ +- Fix anomalous backslashes in strings + +Changed +~~~~~~~ +- Update the thirdparty directory structure. + + +v1.0 - 2019-10-16 +------------------ +Added +~~~~~ +- New version of boolean.py library +- Add ability to leave license expressions unsorted when simplifying + +Changed +~~~~~~~ +- updated travis CI settings + + +v0.999 - 2019-04-29 +-------------------- +- Initial release +- license-expression is small utility library to parse, compare and + simplify and normalize license expressions. + + + + + declared license file: CODE_OF_CONDUCT.rst + Contributor Covenant Code of Conduct +==================================== + +Our Pledge +---------- + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our +project and our community a harassment-free experience for everyone, +regardless of age, body size, disability, ethnicity, gender identity and +expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity and +orientation. + +Our Standards +------------- + +Examples of behavior that contributes to creating a positive environment +include: + +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Gracefully accepting constructive criticism +- Focusing on what is best for the community +- Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +- The use of sexualized language or imagery and unwelcome sexual + attention or advances +- Trolling, insulting/derogatory comments, and personal or political + attacks +- Public or private harassment +- Publishing others’ private information, such as a physical or + electronic address, without explicit permission +- Other conduct which could reasonably be considered inappropriate in a + professional setting + +Our Responsibilities +-------------------- + +Project maintainers are responsible for clarifying the standards of +acceptable behavior and are expected to take appropriate and fair +corrective action in response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, +or reject comments, commits, code, wiki edits, issues, and other +contributions that are not aligned to this Code of Conduct, or to ban +temporarily or permanently any contributor for other behaviors that they +deem inappropriate, threatening, offensive, or harmful. + +Scope +----- + +This Code of Conduct applies both within project spaces and in public +spaces when an individual is representing the project or its community. +Examples of representing a project or community include using an +official project e-mail address, posting via an official social media +account, or acting as an appointed representative at an online or +offline event. Representation of a project may be further defined and +clarified by project maintainers. + +Enforcement +----------- + +Instances of abusive, harassing, or otherwise unacceptable behavior may +be reported by contacting the project team at pombredanne@gmail.com +or on the Gitter chat channel at https://gitter.im/aboutcode-org/discuss . +All complaints will be reviewed and investigated and will result in a +response that is deemed necessary and appropriate to the circumstances. +The project team is obligated to maintain confidentiality with regard to +the reporter of an incident. Further details of specific enforcement +policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in +good faith may face temporary or permanent repercussions as determined +by other members of the project’s leadership. + +Attribution +----------- + +This Code of Conduct is adapted from the `Contributor Covenant`_ , +version 1.4, available at +https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + +.. _Contributor Covenant: https://www.contributor-covenant.org + + + + declared license file: NOTICE + # +# Copyright (c) nexB Inc. and others. +# SPDX-License-Identifier: Apache-2.0 +# +# Visit https://aboutcode.org and https://github.com/nexB/license-expression +# for support and download. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + + + + declared license file: apache-2.0.LICENSE + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + pkg:pypi/license-expression@30.3.0 @@ -175,10 +1204,70 @@ Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. - BSD-3-Clause + declared license file: LICENSE.txt + Copyright (c) 2004 Infrae. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + 3. Neither the name of Infrae nor the names of its contributors may + be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INFRAE OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + - License :: OSI Approved :: BSD License + declared license file: LICENSES.txt + lxml is copyright Infrae and distributed under the BSD license (see +doc/licenses/BSD.txt), with the following exceptions: + +Some code, such a selftest.py, selftest2.py and +src/lxml/_elementpath.py are derived from ElementTree and +cElementTree. See doc/licenses/elementtree.txt for the license text. + +lxml.cssselect and lxml.html are copyright Ian Bicking and distributed +under the BSD license (see doc/licenses/BSD.txt). + +test.py, the test-runner script, is GPL and copyright Shuttleworth +Foundation. See doc/licenses/GPL.txt. It is believed the unchanged +inclusion of test.py to run the unit test suite falls under the +"aggregation" clause of the GPL and thus does not affect the license +of the rest of the package. + +The isoschematron implementation uses several XSL and RelaxNG resources: + * The (XML syntax) RelaxNG schema for schematron, copyright International + Organization for Standardization (see + src/lxml/isoschematron/resources/rng/iso-schematron.rng for the license + text) + * The skeleton iso-schematron-xlt1 pure-xslt schematron implementation + xsl stylesheets, copyright Rick Jelliffe and Academia Sinica Computing + Center, Taiwan (see the xsl files here for the license text: + src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/) + * The xsd/rng schema schematron extraction xsl transformations are unlicensed + and copyright the respective authors as noted (see + src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl and + src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl) + pkg:pypi/lxml@5.3.0 @@ -196,6 +1285,44 @@ regression-issue868 0.1 + + + declared license file: my_licenses/richtext.rtf + e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA= + + + declared license file: my_licenses/utf-16be_withBOM.txt + this file is +utf-16be encoded +with BOM +😃 + + + + declared license file: my_licenses/utf-16le_withBOM.txt + this file is +utf-16le encoded +with BOM +😃 + + + + declared license file: my_licenses/utf-8_noBOM.txt + this file is +utf-8 encoded +without BOM +😃 + + + + declared license file: my_licenses/utf-8_withBOM.txt + this file is +utf-8 encoded +with BOM +😃 + + + file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.json.bin index 80f7c603b..697af8ee8 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.json.bin @@ -35,6 +35,15 @@ "license": { "id": "MIT" } + }, + { + "license": { + "name": "declared license file: LICENSE", + "text": { + "content": "The MIT License (MIT)\n\nCopyright (c) 2015 Hynek Schlawack and the attrs contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n", + "contentType": "text/plain" + } + } } ], "name": "attrs", @@ -55,7 +64,29 @@ "licenses": [ { "license": { - "id": "BSD-2-Clause" + "name": "declared license file: CHANGELOG.rst", + "text": { + "content": "\nChangelog\n=========\n\n\nnext\n----\n\n\n4.0 (2022-05-05)\n----------------\n\n* API changes\n\n * Drop support for Python 2.\n * Test on Python 3.10\n * Make Expression.sort_order an instance attributes and not a class attribute\n\n* Misc.\n\n * Correct licensing documentation\n * Improve docstringf and apply minor refactorings\n * Adopt black code style and isort for imports\n * Drop Travis and use GitHub actions for CI\n\n\n3.8 (2020-06-10)\n----------------\n\n* API changes\n\n * Add support for evaluation of boolean expression.\n Thank you to Lars van Gemerden @gemerden\n\n* Bug fixes\n\n * Fix parsing of tokens that have a number as the first character. \n Thank you to Jeff Cohen @ jcohen28\n * Restore proper Python 2 compatibility. \n Thank you to Benjy Weinberger @benjyw\n\n* Improve documentation\n\n * Add pointers to Linux distro packages.\n Thank you to Max Mehl @mxmehl and Carmen Bianca Bakker @carmenbianca\n * Fix typo.\n Thank you to Gabriel Niebler @der-gabe\n\n\n3.7 (2019-10-04)\n----------------\n\n* API changes\n\n * Add new sort argument to simplify() to optionally not sort when simplifying\n expressions (e.g. not applying \"commutativity\"). Thank you to Steven Esser\n @majurg for this\n * Add new argument to tokenizer to optionally accept extra characters in symbol\n tokens. Thank you to @carpie for this\n\n\n3.6 (2018-08-06)\n----------------\n\n* No API changes\n\n* Bug fixes\n\n * Fix De Morgan's laws effect on double negation propositions. Thank you to Douglas Cardoso for this\n * Improve error checking when parsing\n\n\n3.5 (Nov 1, 2017)\n-----------------\n\n* No API changes\n\n* Bug fixes\n\n * Documentation updates and add testing for Python 3.6. Thank you to Alexander Lisianoi @alisianoi\n * Improve testng and expression equivalence checks\n * Improve subs() method to an expression \n\n \n\n3.4 (May 12, 2017)\n------------------\n\n* No API changes\n\n* Bug fixes and improvements\n\n * Fix various documentation typos and improve tests . Thank you to Alexander Lisianoi @alisianoi\n * Fix handling for literals vs. symbols in negations Thank you to @YaronK\n\n\n3.3 (2017-02-09)\n----------------\n\n* API changes\n\n * #40 and #50 Expression.subs() now takes 'default' thanks to @kronuz\n * #45 simplify=False is now the default for parse and related functions or methods.\n * #40 Use \"&\" and \"|\" as default operators\n\n* Bug fixes\n\n * #60 Fix bug for \"a or b c\" which is not a valid expression\n * #58 Fix math formula display in docs\n * Improve handling of parse errors\n\n\n2.0.0 (2016-05-11)\n------------------\n\n* API changes\n\n * New algebra definition. Refactored class hierarchy. Improved parsing.\n\n* New features\n\n * possibility to subclass algebra definition\n * new normal forms shortcuts for DNF and CNF.\n\n\n1.1 (2016-04-06)\n------------------\n\n* Initial release on Pypi.\n", + "contentType": "text/prs.fallenstein.rst" + } + } + }, + { + "license": { + "name": "declared license file: LICENSE.txt", + "text": { + "content": "Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice, this\nlist of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice,\nthis list of conditions and the following disclaimer in the documentation and/or\nother materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: README.rst", + "text": { + "content": "boolean.py\n==========\n\n\"boolean.py\" is a small library implementing a boolean algebra. It\ndefines two base elements, TRUE and FALSE, and a Symbol class that can\ntake on one of these two values. Calculations are done in terms of AND,\nOR and NOT - other compositions like XOR and NAND are not implemented\nbut can be emulated with AND or and NOT. Expressions are constructed\nfrom parsed strings or in Python.\n\nIt runs on Python 3.6+\nYou can use older version 3.x for Python 2.7+ support.\n\nhttps://github.com/bastikr/boolean.py\n\nBuild status: |Build Status|\n\n\nExample\n-------\n\n::\n\n >>> import boolean\n >>> algebra = boolean.BooleanAlgebra()\n >>> expression1 = algebra.parse(u'apple and (oranges or banana) and not banana', simplify=False)\n >>> expression1\n AND(Symbol('apple'), OR(Symbol('oranges'), Symbol('banana')), NOT(Symbol('banana')))\n\n >>> expression2 = algebra.parse('(oranges | banana) and not banana & apple', simplify=True)\n >>> expression2\n AND(Symbol('apple'), NOT(Symbol('banana')), Symbol('oranges'))\n\n >>> expression1 == expression2\n False\n >>> expression1.simplify() == expression2\n True\n\n\nDocumentation\n-------------\n\nhttp://readthedocs.org/docs/booleanpy/en/latest/\n\n\nInstallation\n------------\n\nInstallation via pip\n~~~~~~~~~~~~~~~~~~~~\n\nTo install boolean.py, you need to have the following pieces of software\non your computer:\n\n- Python 3.6+\n- pip\n\nYou then only need to run the following command:\n\n``pip install boolean.py``\n\n\nInstallation via package managers\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThere are packages available for easy install on some operating systems.\nYou are welcome to help us package this tool for more distributions!\n\n- boolean.py has been packaged as Arch Linux, Fedora, openSus,\n nixpkgs, Guix, DragonFly and FreeBSD \n `packages `__ .\n\nIn particular:\n\n- Arch Linux (AUR):\n `python-boolean.py `__\n- Fedora:\n `python-boolean.py `__\n- openSUSE:\n `python-boolean.py `__\n\n\nTesting\n-------\n\nTest ``boolean.py`` with your current Python environment:\n\n``python setup.py test``\n\nTest with all of the supported Python environments using ``tox``:\n\n::\n\n pip install -r requirements-dev.txt\n tox\n\nIf ``tox`` throws ``InterpreterNotFound``, limit it to python\ninterpreters that are actually installed on your machine:\n\n::\n\n tox -e py36\n\nAlternatively use pytest.\n\n\nLicense\n-------\n\nCopyright (c) Sebastian Kraemer, basti.kr@gmail.com and others\nSPDX-License-Identifier: BSD-2-Clause\n\n.. |Build Status| image:: https://travis-ci.org/bastikr/boolean.py.svg?branch=master\n :target: https://travis-ci.org/bastikr/boolean.py\n", + "contentType": "text/prs.fallenstein.rst" + } } } ], @@ -96,7 +127,31 @@ ], "licenses": [ { - "expression": "Apache-2.0 OR BSD-3-Clause" + "license": { + "name": "declared license file: LICENSE", + "text": { + "content": "This software is made available under the terms of *either* of the licenses\nfound in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made\nunder the terms of *both* these licenses.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: LICENSE.APACHE", + "text": { + "content": "\n Apache License\n Version 2.0, January 2004\n https://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: LICENSE.BSD", + "text": { + "content": "Copyright (c) Individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of PyCA Cryptography nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", + "contentType": "text/plain" + } + } } ], "name": "cryptography", @@ -117,14 +172,18 @@ "licenses": [ { "license": { - "name": "License :: OSI Approved :: BSD License" + "name": "declared license file: AUTHORS", + "text": { + "content": "Stefan K\u00f6gl \nAlexander Shorin \nChristopher J. White \n", + "contentType": "text/plain" + } } }, { "license": { - "name": "declared license of 'jsonpointer'", + "name": "declared license file: LICENSE.txt", "text": { - "content": "Modified BSD License", + "content": "Copyright (c) 2011 Stefan K\u00f6gl \nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions\nare met:\n\n1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n3. The name of the author may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR\nIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\nOF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\nIN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\nNOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\nTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n", "contentType": "text/plain" } } @@ -148,7 +207,47 @@ "licenses": [ { "license": { - "id": "Apache-2.0" + "name": "declared license file: AUTHORS.rst", + "text": { + "content": "The following organizations or individuals have contributed to this code:\n\n- Ayan Sinha Mahapatra @AyanSinhaMahapatra\n- Carmen Bianca Bakker @carmenbianca\n- Chin-Yeung Li @chinyeungli\n- Dennis Clark @DennisClark\n- John Horan @johnmhoran\n- Jono Yang @JonoYang\n- Max Mehl @mxmehl\n- nexB Inc. @nexB\n- Peter Kolbus @pkolbus\n- Philippe Ombredanne @pombredanne\n- Sebastian Schuberth @sschuberth\n- Steven Esser @majurg\n- Thomas Druez @tdruez\n", + "contentType": "text/prs.fallenstein.rst" + } + } + }, + { + "license": { + "name": "declared license file: CHANGELOG.rst", + "text": { + "content": "Changelog\n=========\n\nv30.3.0 - 2024-03-18\n--------------------\n\nThis is a minor release without API changes:\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.23\n- Drop support for Python 3.7\n\nv30.2.0 - 2023-11-29\n--------------------\n\nThis is a minor release without API changes:\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.22\n- Add Python 3.12 support in CI\n\n\nv30.1.1 - 2023-01-16\n----------------------\n\nThis is a minor dot release without API changes\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.20\n\n\nv30.1.0 - 2023-01-16\n----------------------\n\nThis is a minor release without API changes\n\n- Use latest skeleton (and updated configure script)\n- Update license list to latest ScanCode and SPDX 3.19\n- Use correct syntax for python_require\n- Drop using Travis and Appveyor\n- Drop support for Python 3.7 and add Python 3.11 in CI\n\n\nv30.0.0 - 2022-05-10\n----------------------\n\nThis is a minor release with API changes\n\n- Use latest skeleton (and updated configure script)\n- Drop using calver\n- Improve error checking when combining licenses\n\n\n\nv21.6.14 - 2021-06-14\n----------------------\n\nAdded\n~~~~~\n\n- Switch to calver for package versioning to better convey the currency of the\n bundled data.\n\n- Include https://scancode-licensedb.aboutcode.org/ licenses list with\n ScanCode (v21.6.7) and SPDX licenses (v3.13) keys. Add new functions to\n create Licensing using these licenses as LicenseSymbol.\n\n- Add new License.dedup() method to deduplicate and simplify license expressions\n without over simplifying.\n\n- Add new License.validate() method to return a new ExpressionInfo object with\n details on a license expression validation.\n\n\nChanged\n~~~~~~~\n- Drop support for Python 2.\n- Adopt the project skeleton from https://github.com/nexB/skeleton\n and its new configure script\n\n\nv1.2 - 2019-11-14\n------------------\nAdded\n~~~~~\n- Add ability to render WITH expression wrapped in parenthesis\n\nFixes\n~~~~~\n- Fix anomalous backslashes in strings\n\nChanged\n~~~~~~~\n- Update the thirdparty directory structure.\n\n\nv1.0 - 2019-10-16\n------------------\nAdded\n~~~~~\n- New version of boolean.py library\n- Add ability to leave license expressions unsorted when simplifying\n\nChanged\n~~~~~~~\n- updated travis CI settings\n\n\nv0.999 - 2019-04-29\n--------------------\n- Initial release\n- license-expression is small utility library to parse, compare and\n simplify and normalize license expressions.\n\n", + "contentType": "text/prs.fallenstein.rst" + } + } + }, + { + "license": { + "name": "declared license file: CODE_OF_CONDUCT.rst", + "text": { + "content": "Contributor Covenant Code of Conduct\n====================================\n\nOur Pledge\n----------\n\nIn the interest of fostering an open and welcoming environment, we as\ncontributors and maintainers pledge to making participation in our\nproject and our community a harassment-free experience for everyone,\nregardless of age, body size, disability, ethnicity, gender identity and\nexpression, level of experience, education, socio-economic status,\nnationality, personal appearance, race, religion, or sexual identity and\norientation.\n\nOur Standards\n-------------\n\nExamples of behavior that contributes to creating a positive environment\ninclude:\n\n- Using welcoming and inclusive language\n- Being respectful of differing viewpoints and experiences\n- Gracefully accepting constructive criticism\n- Focusing on what is best for the community\n- Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n- The use of sexualized language or imagery and unwelcome sexual\n attention or advances\n- Trolling, insulting/derogatory comments, and personal or political\n attacks\n- Public or private harassment\n- Publishing others\u2019 private information, such as a physical or\n electronic address, without explicit permission\n- Other conduct which could reasonably be considered inappropriate in a\n professional setting\n\nOur Responsibilities\n--------------------\n\nProject maintainers are responsible for clarifying the standards of\nacceptable behavior and are expected to take appropriate and fair\ncorrective action in response to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit,\nor reject comments, commits, code, wiki edits, issues, and other\ncontributions that are not aligned to this Code of Conduct, or to ban\ntemporarily or permanently any contributor for other behaviors that they\ndeem inappropriate, threatening, offensive, or harmful.\n\nScope\n-----\n\nThis Code of Conduct applies both within project spaces and in public\nspaces when an individual is representing the project or its community.\nExamples of representing a project or community include using an\nofficial project e-mail address, posting via an official social media\naccount, or acting as an appointed representative at an online or\noffline event. Representation of a project may be further defined and\nclarified by project maintainers.\n\nEnforcement\n-----------\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may\nbe reported by contacting the project team at pombredanne@gmail.com\nor on the Gitter chat channel at https://gitter.im/aboutcode-org/discuss .\nAll complaints will be reviewed and investigated and will result in a\nresponse that is deemed necessary and appropriate to the circumstances.\nThe project team is obligated to maintain confidentiality with regard to\nthe reporter of an incident. Further details of specific enforcement\npolicies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in\ngood faith may face temporary or permanent repercussions as determined\nby other members of the project\u2019s leadership.\n\nAttribution\n-----------\n\nThis Code of Conduct is adapted from the `Contributor Covenant`_ ,\nversion 1.4, available at\nhttps://www.contributor-covenant.org/version/1/4/code-of-conduct.html\n\n.. _Contributor Covenant: https://www.contributor-covenant.org\n", + "contentType": "text/prs.fallenstein.rst" + } + } + }, + { + "license": { + "name": "declared license file: NOTICE", + "text": { + "content": "#\n# Copyright (c) nexB Inc. and others.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Visit https://aboutcode.org and https://github.com/nexB/license-expression\n# for support and download.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: apache-2.0.LICENSE", + "text": { + "content": " Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", + "contentType": "text/plain" + } } } ], @@ -175,12 +274,20 @@ "licenses": [ { "license": { - "id": "BSD-3-Clause" + "name": "declared license file: LICENSE.txt", + "text": { + "content": "Copyright (c) 2004 Infrae. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n 1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n \n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in\n the documentation and/or other materials provided with the\n distribution.\n\n 3. Neither the name of Infrae nor the names of its contributors may\n be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INFRAE OR\nCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\nEXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\nPROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", + "contentType": "text/plain" + } } }, { "license": { - "name": "License :: OSI Approved :: BSD License" + "name": "declared license file: LICENSES.txt", + "text": { + "content": "lxml is copyright Infrae and distributed under the BSD license (see\ndoc/licenses/BSD.txt), with the following exceptions:\n\nSome code, such a selftest.py, selftest2.py and\nsrc/lxml/_elementpath.py are derived from ElementTree and\ncElementTree. See doc/licenses/elementtree.txt for the license text.\n\nlxml.cssselect and lxml.html are copyright Ian Bicking and distributed\nunder the BSD license (see doc/licenses/BSD.txt).\n\ntest.py, the test-runner script, is GPL and copyright Shuttleworth\nFoundation. See doc/licenses/GPL.txt. It is believed the unchanged\ninclusion of test.py to run the unit test suite falls under the\n\"aggregation\" clause of the GPL and thus does not affect the license\nof the rest of the package.\n\nThe isoschematron implementation uses several XSL and RelaxNG resources:\n * The (XML syntax) RelaxNG schema for schematron, copyright International\n Organization for Standardization (see \n src/lxml/isoschematron/resources/rng/iso-schematron.rng for the license\n text)\n * The skeleton iso-schematron-xlt1 pure-xslt schematron implementation\n xsl stylesheets, copyright Rick Jelliffe and Academia Sinica Computing\n Center, Taiwan (see the xsl files here for the license text: \n src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/)\n * The xsd/rng schema schematron extraction xsl transformations are unlicensed\n and copyright the respective authors as noted (see \n src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl and\n src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl)\n", + "contentType": "text/plain" + } } } ], @@ -198,6 +305,54 @@ "url": "file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868" } ], + "licenses": [ + { + "license": { + "name": "declared license file: my_licenses/richtext.rtf", + "text": { + "content": "e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA=", + "contentType": "application/rtf", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: my_licenses/utf-16be_withBOM.txt", + "text": { + "content": "this file is\r\nutf-16be encoded\r\nwith BOM\r\n\ud83d\ude03\r\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: my_licenses/utf-16le_withBOM.txt", + "text": { + "content": "this file is\nutf-16le encoded\nwith BOM\n\ud83d\ude03\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: my_licenses/utf-8_noBOM.txt", + "text": { + "content": "this file is\nutf-8 encoded\nwithout BOM\n\ud83d\ude03\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: my_licenses/utf-8_withBOM.txt", + "text": { + "content": "\ufeffthis file is\nutf-8 encoded\nwith BOM\n\ud83d\ude03\n", + "contentType": "text/plain" + } + } + } + ], "name": "regression-issue868", "type": "library", "version": "0.1" @@ -245,6 +400,12 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", + "evidence": {}, + "licenses": [ + { + "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" + } + ], "name": "with-extras", "type": "application", "version": "0.1.0" diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.xml.bin index cf0b89298..1d2faeddb 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.xml.bin @@ -54,6 +54,10 @@ with-extras 0.1.0 depenndencies with license declaration accoring to PEP 639 + + MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) + + true @@ -68,6 +72,31 @@ MIT + + declared license file: LICENSE + The MIT License (MIT) + +Copyright (c) 2015 Hynek Schlawack and the attrs contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + pkg:pypi/attrs@23.2.0 @@ -99,7 +128,282 @@ Define boolean algebras, create and parse boolean expressions and create custom boolean DSL. - BSD-2-Clause + declared license file: CHANGELOG.rst + +Changelog +========= + + +next +---- + + +4.0 (2022-05-05) +---------------- + +* API changes + + * Drop support for Python 2. + * Test on Python 3.10 + * Make Expression.sort_order an instance attributes and not a class attribute + +* Misc. + + * Correct licensing documentation + * Improve docstringf and apply minor refactorings + * Adopt black code style and isort for imports + * Drop Travis and use GitHub actions for CI + + +3.8 (2020-06-10) +---------------- + +* API changes + + * Add support for evaluation of boolean expression. + Thank you to Lars van Gemerden @gemerden + +* Bug fixes + + * Fix parsing of tokens that have a number as the first character. + Thank you to Jeff Cohen @ jcohen28 + * Restore proper Python 2 compatibility. + Thank you to Benjy Weinberger @benjyw + +* Improve documentation + + * Add pointers to Linux distro packages. + Thank you to Max Mehl @mxmehl and Carmen Bianca Bakker @carmenbianca + * Fix typo. + Thank you to Gabriel Niebler @der-gabe + + +3.7 (2019-10-04) +---------------- + +* API changes + + * Add new sort argument to simplify() to optionally not sort when simplifying + expressions (e.g. not applying "commutativity"). Thank you to Steven Esser + @majurg for this + * Add new argument to tokenizer to optionally accept extra characters in symbol + tokens. Thank you to @carpie for this + + +3.6 (2018-08-06) +---------------- + +* No API changes + +* Bug fixes + + * Fix De Morgan's laws effect on double negation propositions. Thank you to Douglas Cardoso for this + * Improve error checking when parsing + + +3.5 (Nov 1, 2017) +----------------- + +* No API changes + +* Bug fixes + + * Documentation updates and add testing for Python 3.6. Thank you to Alexander Lisianoi @alisianoi + * Improve testng and expression equivalence checks + * Improve subs() method to an expression + + + +3.4 (May 12, 2017) +------------------ + +* No API changes + +* Bug fixes and improvements + + * Fix various documentation typos and improve tests . Thank you to Alexander Lisianoi @alisianoi + * Fix handling for literals vs. symbols in negations Thank you to @YaronK + + +3.3 (2017-02-09) +---------------- + +* API changes + + * #40 and #50 Expression.subs() now takes 'default' thanks to @kronuz + * #45 simplify=False is now the default for parse and related functions or methods. + * #40 Use "&" and "|" as default operators + +* Bug fixes + + * #60 Fix bug for "a or b c" which is not a valid expression + * #58 Fix math formula display in docs + * Improve handling of parse errors + + +2.0.0 (2016-05-11) +------------------ + +* API changes + + * New algebra definition. Refactored class hierarchy. Improved parsing. + +* New features + + * possibility to subclass algebra definition + * new normal forms shortcuts for DNF and CNF. + + +1.1 (2016-04-06) +------------------ + +* Initial release on Pypi. + + + + declared license file: LICENSE.txt + Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + + declared license file: README.rst + boolean.py +========== + +"boolean.py" is a small library implementing a boolean algebra. It +defines two base elements, TRUE and FALSE, and a Symbol class that can +take on one of these two values. Calculations are done in terms of AND, +OR and NOT - other compositions like XOR and NAND are not implemented +but can be emulated with AND or and NOT. Expressions are constructed +from parsed strings or in Python. + +It runs on Python 3.6+ +You can use older version 3.x for Python 2.7+ support. + +https://github.com/bastikr/boolean.py + +Build status: |Build Status| + + +Example +------- + +:: + + >>> import boolean + >>> algebra = boolean.BooleanAlgebra() + >>> expression1 = algebra.parse(u'apple and (oranges or banana) and not banana', simplify=False) + >>> expression1 + AND(Symbol('apple'), OR(Symbol('oranges'), Symbol('banana')), NOT(Symbol('banana'))) + + >>> expression2 = algebra.parse('(oranges | banana) and not banana & apple', simplify=True) + >>> expression2 + AND(Symbol('apple'), NOT(Symbol('banana')), Symbol('oranges')) + + >>> expression1 == expression2 + False + >>> expression1.simplify() == expression2 + True + + +Documentation +------------- + +http://readthedocs.org/docs/booleanpy/en/latest/ + + +Installation +------------ + +Installation via pip +~~~~~~~~~~~~~~~~~~~~ + +To install boolean.py, you need to have the following pieces of software +on your computer: + +- Python 3.6+ +- pip + +You then only need to run the following command: + +``pip install boolean.py`` + + +Installation via package managers +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +There are packages available for easy install on some operating systems. +You are welcome to help us package this tool for more distributions! + +- boolean.py has been packaged as Arch Linux, Fedora, openSus, + nixpkgs, Guix, DragonFly and FreeBSD + `packages <https://repology.org/project/python:boolean.py/versions>`__ . + +In particular: + +- Arch Linux (AUR): + `python-boolean.py <https://aur.archlinux.org/packages/python-boolean.py/>`__ +- Fedora: + `python-boolean.py <https://apps.fedoraproject.org/packages/python-boolean.py>`__ +- openSUSE: + `python-boolean.py <https://software.opensuse.org/package/python-boolean.py>`__ + + +Testing +------- + +Test ``boolean.py`` with your current Python environment: + +``python setup.py test`` + +Test with all of the supported Python environments using ``tox``: + +:: + + pip install -r requirements-dev.txt + tox + +If ``tox`` throws ``InterpreterNotFound``, limit it to python +interpreters that are actually installed on your machine: + +:: + + tox -e py36 + +Alternatively use pytest. + + +License +------- + +Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others +SPDX-License-Identifier: BSD-2-Clause + +.. |Build Status| image:: https://travis-ci.org/bastikr/boolean.py.svg?branch=master + :target: https://travis-ci.org/bastikr/boolean.py + pkg:pypi/boolean.py@4.0 @@ -115,7 +419,250 @@ 43.0.1 cryptography is a package which provides cryptographic recipes and primitives to Python developers. - Apache-2.0 OR BSD-3-Clause + + declared license file: LICENSE + This software is made available under the terms of *either* of the licenses +found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made +under the terms of *both* these licenses. + + + + declared license file: LICENSE.APACHE + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + + declared license file: LICENSE.BSD + Copyright (c) Individual contributors. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. Neither the name of PyCA Cryptography nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + pkg:pypi/cryptography@43.0.1 @@ -147,11 +694,41 @@ Identify specific nodes in a JSON document (RFC 6901) - License :: OSI Approved :: BSD License + declared license file: AUTHORS + Stefan Kögl <stefan@skoegl.net> +Alexander Shorin <kxepal@gmail.com> +Christopher J. White <chris@grierwhite.com> + - declared license of 'jsonpointer' - Modified BSD License + declared license file: LICENSE.txt + Copyright (c) 2011 Stefan Kögl <stefan@skoegl.net> +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + pkg:pypi/jsonpointer@2.4 @@ -168,7 +745,459 @@ license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic. - Apache-2.0 + declared license file: AUTHORS.rst + The following organizations or individuals have contributed to this code: + +- Ayan Sinha Mahapatra @AyanSinhaMahapatra +- Carmen Bianca Bakker @carmenbianca +- Chin-Yeung Li @chinyeungli +- Dennis Clark @DennisClark +- John Horan @johnmhoran +- Jono Yang @JonoYang +- Max Mehl @mxmehl +- nexB Inc. @nexB +- Peter Kolbus @pkolbus +- Philippe Ombredanne @pombredanne +- Sebastian Schuberth @sschuberth +- Steven Esser @majurg +- Thomas Druez @tdruez + + + + declared license file: CHANGELOG.rst + Changelog +========= + +v30.3.0 - 2024-03-18 +-------------------- + +This is a minor release without API changes: + +- Use latest skeleton +- Update license list to latest ScanCode and SPDX 3.23 +- Drop support for Python 3.7 + +v30.2.0 - 2023-11-29 +-------------------- + +This is a minor release without API changes: + +- Use latest skeleton +- Update license list to latest ScanCode and SPDX 3.22 +- Add Python 3.12 support in CI + + +v30.1.1 - 2023-01-16 +---------------------- + +This is a minor dot release without API changes + +- Use latest skeleton +- Update license list to latest ScanCode and SPDX 3.20 + + +v30.1.0 - 2023-01-16 +---------------------- + +This is a minor release without API changes + +- Use latest skeleton (and updated configure script) +- Update license list to latest ScanCode and SPDX 3.19 +- Use correct syntax for python_require +- Drop using Travis and Appveyor +- Drop support for Python 3.7 and add Python 3.11 in CI + + +v30.0.0 - 2022-05-10 +---------------------- + +This is a minor release with API changes + +- Use latest skeleton (and updated configure script) +- Drop using calver +- Improve error checking when combining licenses + + + +v21.6.14 - 2021-06-14 +---------------------- + +Added +~~~~~ + +- Switch to calver for package versioning to better convey the currency of the + bundled data. + +- Include https://scancode-licensedb.aboutcode.org/ licenses list with + ScanCode (v21.6.7) and SPDX licenses (v3.13) keys. Add new functions to + create Licensing using these licenses as LicenseSymbol. + +- Add new License.dedup() method to deduplicate and simplify license expressions + without over simplifying. + +- Add new License.validate() method to return a new ExpressionInfo object with + details on a license expression validation. + + +Changed +~~~~~~~ +- Drop support for Python 2. +- Adopt the project skeleton from https://github.com/nexB/skeleton + and its new configure script + + +v1.2 - 2019-11-14 +------------------ +Added +~~~~~ +- Add ability to render WITH expression wrapped in parenthesis + +Fixes +~~~~~ +- Fix anomalous backslashes in strings + +Changed +~~~~~~~ +- Update the thirdparty directory structure. + + +v1.0 - 2019-10-16 +------------------ +Added +~~~~~ +- New version of boolean.py library +- Add ability to leave license expressions unsorted when simplifying + +Changed +~~~~~~~ +- updated travis CI settings + + +v0.999 - 2019-04-29 +-------------------- +- Initial release +- license-expression is small utility library to parse, compare and + simplify and normalize license expressions. + + + + + declared license file: CODE_OF_CONDUCT.rst + Contributor Covenant Code of Conduct +==================================== + +Our Pledge +---------- + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our +project and our community a harassment-free experience for everyone, +regardless of age, body size, disability, ethnicity, gender identity and +expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity and +orientation. + +Our Standards +------------- + +Examples of behavior that contributes to creating a positive environment +include: + +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Gracefully accepting constructive criticism +- Focusing on what is best for the community +- Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +- The use of sexualized language or imagery and unwelcome sexual + attention or advances +- Trolling, insulting/derogatory comments, and personal or political + attacks +- Public or private harassment +- Publishing others’ private information, such as a physical or + electronic address, without explicit permission +- Other conduct which could reasonably be considered inappropriate in a + professional setting + +Our Responsibilities +-------------------- + +Project maintainers are responsible for clarifying the standards of +acceptable behavior and are expected to take appropriate and fair +corrective action in response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, +or reject comments, commits, code, wiki edits, issues, and other +contributions that are not aligned to this Code of Conduct, or to ban +temporarily or permanently any contributor for other behaviors that they +deem inappropriate, threatening, offensive, or harmful. + +Scope +----- + +This Code of Conduct applies both within project spaces and in public +spaces when an individual is representing the project or its community. +Examples of representing a project or community include using an +official project e-mail address, posting via an official social media +account, or acting as an appointed representative at an online or +offline event. Representation of a project may be further defined and +clarified by project maintainers. + +Enforcement +----------- + +Instances of abusive, harassing, or otherwise unacceptable behavior may +be reported by contacting the project team at pombredanne@gmail.com +or on the Gitter chat channel at https://gitter.im/aboutcode-org/discuss . +All complaints will be reviewed and investigated and will result in a +response that is deemed necessary and appropriate to the circumstances. +The project team is obligated to maintain confidentiality with regard to +the reporter of an incident. Further details of specific enforcement +policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in +good faith may face temporary or permanent repercussions as determined +by other members of the project’s leadership. + +Attribution +----------- + +This Code of Conduct is adapted from the `Contributor Covenant`_ , +version 1.4, available at +https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + +.. _Contributor Covenant: https://www.contributor-covenant.org + + + + declared license file: NOTICE + # +# Copyright (c) nexB Inc. and others. +# SPDX-License-Identifier: Apache-2.0 +# +# Visit https://aboutcode.org and https://github.com/nexB/license-expression +# for support and download. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + + + + declared license file: apache-2.0.LICENSE + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + pkg:pypi/license-expression@30.3.0 @@ -185,10 +1214,70 @@ Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. - BSD-3-Clause + declared license file: LICENSE.txt + Copyright (c) 2004 Infrae. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + 3. Neither the name of Infrae nor the names of its contributors may + be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INFRAE OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + - License :: OSI Approved :: BSD License + declared license file: LICENSES.txt + lxml is copyright Infrae and distributed under the BSD license (see +doc/licenses/BSD.txt), with the following exceptions: + +Some code, such a selftest.py, selftest2.py and +src/lxml/_elementpath.py are derived from ElementTree and +cElementTree. See doc/licenses/elementtree.txt for the license text. + +lxml.cssselect and lxml.html are copyright Ian Bicking and distributed +under the BSD license (see doc/licenses/BSD.txt). + +test.py, the test-runner script, is GPL and copyright Shuttleworth +Foundation. See doc/licenses/GPL.txt. It is believed the unchanged +inclusion of test.py to run the unit test suite falls under the +"aggregation" clause of the GPL and thus does not affect the license +of the rest of the package. + +The isoschematron implementation uses several XSL and RelaxNG resources: + * The (XML syntax) RelaxNG schema for schematron, copyright International + Organization for Standardization (see + src/lxml/isoschematron/resources/rng/iso-schematron.rng for the license + text) + * The skeleton iso-schematron-xlt1 pure-xslt schematron implementation + xsl stylesheets, copyright Rick Jelliffe and Academia Sinica Computing + Center, Taiwan (see the xsl files here for the license text: + src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/) + * The xsd/rng schema schematron extraction xsl transformations are unlicensed + and copyright the respective authors as noted (see + src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl and + src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl) + pkg:pypi/lxml@5.3.0 @@ -206,6 +1295,44 @@ regression-issue868 0.1 + + + declared license file: my_licenses/richtext.rtf + e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA= + + + declared license file: my_licenses/utf-16be_withBOM.txt + this file is +utf-16be encoded +with BOM +😃 + + + + declared license file: my_licenses/utf-16le_withBOM.txt + this file is +utf-16le encoded +with BOM +😃 + + + + declared license file: my_licenses/utf-8_noBOM.txt + this file is +utf-8 encoded +without BOM +😃 + + + + declared license file: my_licenses/utf-8_withBOM.txt + this file is +utf-8 encoded +with BOM +😃 + + + file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.json.bin index ef04c1266..5f8a14482 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.json.bin @@ -36,6 +36,16 @@ "acknowledgement": "declared", "id": "MIT" } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: LICENSE", + "text": { + "content": "The MIT License (MIT)\n\nCopyright (c) 2015 Hynek Schlawack and the attrs contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n", + "contentType": "text/plain" + } + } } ], "name": "attrs", @@ -57,7 +67,31 @@ { "license": { "acknowledgement": "declared", - "id": "BSD-2-Clause" + "name": "declared license file: CHANGELOG.rst", + "text": { + "content": "\nChangelog\n=========\n\n\nnext\n----\n\n\n4.0 (2022-05-05)\n----------------\n\n* API changes\n\n * Drop support for Python 2.\n * Test on Python 3.10\n * Make Expression.sort_order an instance attributes and not a class attribute\n\n* Misc.\n\n * Correct licensing documentation\n * Improve docstringf and apply minor refactorings\n * Adopt black code style and isort for imports\n * Drop Travis and use GitHub actions for CI\n\n\n3.8 (2020-06-10)\n----------------\n\n* API changes\n\n * Add support for evaluation of boolean expression.\n Thank you to Lars van Gemerden @gemerden\n\n* Bug fixes\n\n * Fix parsing of tokens that have a number as the first character. \n Thank you to Jeff Cohen @ jcohen28\n * Restore proper Python 2 compatibility. \n Thank you to Benjy Weinberger @benjyw\n\n* Improve documentation\n\n * Add pointers to Linux distro packages.\n Thank you to Max Mehl @mxmehl and Carmen Bianca Bakker @carmenbianca\n * Fix typo.\n Thank you to Gabriel Niebler @der-gabe\n\n\n3.7 (2019-10-04)\n----------------\n\n* API changes\n\n * Add new sort argument to simplify() to optionally not sort when simplifying\n expressions (e.g. not applying \"commutativity\"). Thank you to Steven Esser\n @majurg for this\n * Add new argument to tokenizer to optionally accept extra characters in symbol\n tokens. Thank you to @carpie for this\n\n\n3.6 (2018-08-06)\n----------------\n\n* No API changes\n\n* Bug fixes\n\n * Fix De Morgan's laws effect on double negation propositions. Thank you to Douglas Cardoso for this\n * Improve error checking when parsing\n\n\n3.5 (Nov 1, 2017)\n-----------------\n\n* No API changes\n\n* Bug fixes\n\n * Documentation updates and add testing for Python 3.6. Thank you to Alexander Lisianoi @alisianoi\n * Improve testng and expression equivalence checks\n * Improve subs() method to an expression \n\n \n\n3.4 (May 12, 2017)\n------------------\n\n* No API changes\n\n* Bug fixes and improvements\n\n * Fix various documentation typos and improve tests . Thank you to Alexander Lisianoi @alisianoi\n * Fix handling for literals vs. symbols in negations Thank you to @YaronK\n\n\n3.3 (2017-02-09)\n----------------\n\n* API changes\n\n * #40 and #50 Expression.subs() now takes 'default' thanks to @kronuz\n * #45 simplify=False is now the default for parse and related functions or methods.\n * #40 Use \"&\" and \"|\" as default operators\n\n* Bug fixes\n\n * #60 Fix bug for \"a or b c\" which is not a valid expression\n * #58 Fix math formula display in docs\n * Improve handling of parse errors\n\n\n2.0.0 (2016-05-11)\n------------------\n\n* API changes\n\n * New algebra definition. Refactored class hierarchy. Improved parsing.\n\n* New features\n\n * possibility to subclass algebra definition\n * new normal forms shortcuts for DNF and CNF.\n\n\n1.1 (2016-04-06)\n------------------\n\n* Initial release on Pypi.\n", + "contentType": "text/prs.fallenstein.rst" + } + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: LICENSE.txt", + "text": { + "content": "Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice, this\nlist of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice,\nthis list of conditions and the following disclaimer in the documentation and/or\nother materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: README.rst", + "text": { + "content": "boolean.py\n==========\n\n\"boolean.py\" is a small library implementing a boolean algebra. It\ndefines two base elements, TRUE and FALSE, and a Symbol class that can\ntake on one of these two values. Calculations are done in terms of AND,\nOR and NOT - other compositions like XOR and NAND are not implemented\nbut can be emulated with AND or and NOT. Expressions are constructed\nfrom parsed strings or in Python.\n\nIt runs on Python 3.6+\nYou can use older version 3.x for Python 2.7+ support.\n\nhttps://github.com/bastikr/boolean.py\n\nBuild status: |Build Status|\n\n\nExample\n-------\n\n::\n\n >>> import boolean\n >>> algebra = boolean.BooleanAlgebra()\n >>> expression1 = algebra.parse(u'apple and (oranges or banana) and not banana', simplify=False)\n >>> expression1\n AND(Symbol('apple'), OR(Symbol('oranges'), Symbol('banana')), NOT(Symbol('banana')))\n\n >>> expression2 = algebra.parse('(oranges | banana) and not banana & apple', simplify=True)\n >>> expression2\n AND(Symbol('apple'), NOT(Symbol('banana')), Symbol('oranges'))\n\n >>> expression1 == expression2\n False\n >>> expression1.simplify() == expression2\n True\n\n\nDocumentation\n-------------\n\nhttp://readthedocs.org/docs/booleanpy/en/latest/\n\n\nInstallation\n------------\n\nInstallation via pip\n~~~~~~~~~~~~~~~~~~~~\n\nTo install boolean.py, you need to have the following pieces of software\non your computer:\n\n- Python 3.6+\n- pip\n\nYou then only need to run the following command:\n\n``pip install boolean.py``\n\n\nInstallation via package managers\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThere are packages available for easy install on some operating systems.\nYou are welcome to help us package this tool for more distributions!\n\n- boolean.py has been packaged as Arch Linux, Fedora, openSus,\n nixpkgs, Guix, DragonFly and FreeBSD \n `packages `__ .\n\nIn particular:\n\n- Arch Linux (AUR):\n `python-boolean.py `__\n- Fedora:\n `python-boolean.py `__\n- openSUSE:\n `python-boolean.py `__\n\n\nTesting\n-------\n\nTest ``boolean.py`` with your current Python environment:\n\n``python setup.py test``\n\nTest with all of the supported Python environments using ``tox``:\n\n::\n\n pip install -r requirements-dev.txt\n tox\n\nIf ``tox`` throws ``InterpreterNotFound``, limit it to python\ninterpreters that are actually installed on your machine:\n\n::\n\n tox -e py36\n\nAlternatively use pytest.\n\n\nLicense\n-------\n\nCopyright (c) Sebastian Kraemer, basti.kr@gmail.com and others\nSPDX-License-Identifier: BSD-2-Clause\n\n.. |Build Status| image:: https://travis-ci.org/bastikr/boolean.py.svg?branch=master\n :target: https://travis-ci.org/bastikr/boolean.py\n", + "contentType": "text/prs.fallenstein.rst" + } } } ], @@ -98,8 +132,34 @@ ], "licenses": [ { - "acknowledgement": "declared", - "expression": "Apache-2.0 OR BSD-3-Clause" + "license": { + "acknowledgement": "declared", + "name": "declared license file: LICENSE", + "text": { + "content": "This software is made available under the terms of *either* of the licenses\nfound in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made\nunder the terms of *both* these licenses.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: LICENSE.APACHE", + "text": { + "content": "\n Apache License\n Version 2.0, January 2004\n https://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: LICENSE.BSD", + "text": { + "content": "Copyright (c) Individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of PyCA Cryptography nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", + "contentType": "text/plain" + } + } } ], "name": "cryptography", @@ -121,15 +181,19 @@ { "license": { "acknowledgement": "declared", - "name": "License :: OSI Approved :: BSD License" + "name": "declared license file: AUTHORS", + "text": { + "content": "Stefan K\u00f6gl \nAlexander Shorin \nChristopher J. White \n", + "contentType": "text/plain" + } } }, { "license": { "acknowledgement": "declared", - "name": "declared license of 'jsonpointer'", + "name": "declared license file: LICENSE.txt", "text": { - "content": "Modified BSD License", + "content": "Copyright (c) 2011 Stefan K\u00f6gl \nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions\nare met:\n\n1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n3. The name of the author may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR\nIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\nOF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\nIN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\nNOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\nTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n", "contentType": "text/plain" } } @@ -154,7 +218,51 @@ { "license": { "acknowledgement": "declared", - "id": "Apache-2.0" + "name": "declared license file: AUTHORS.rst", + "text": { + "content": "The following organizations or individuals have contributed to this code:\n\n- Ayan Sinha Mahapatra @AyanSinhaMahapatra\n- Carmen Bianca Bakker @carmenbianca\n- Chin-Yeung Li @chinyeungli\n- Dennis Clark @DennisClark\n- John Horan @johnmhoran\n- Jono Yang @JonoYang\n- Max Mehl @mxmehl\n- nexB Inc. @nexB\n- Peter Kolbus @pkolbus\n- Philippe Ombredanne @pombredanne\n- Sebastian Schuberth @sschuberth\n- Steven Esser @majurg\n- Thomas Druez @tdruez\n", + "contentType": "text/prs.fallenstein.rst" + } + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: CHANGELOG.rst", + "text": { + "content": "Changelog\n=========\n\nv30.3.0 - 2024-03-18\n--------------------\n\nThis is a minor release without API changes:\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.23\n- Drop support for Python 3.7\n\nv30.2.0 - 2023-11-29\n--------------------\n\nThis is a minor release without API changes:\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.22\n- Add Python 3.12 support in CI\n\n\nv30.1.1 - 2023-01-16\n----------------------\n\nThis is a minor dot release without API changes\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.20\n\n\nv30.1.0 - 2023-01-16\n----------------------\n\nThis is a minor release without API changes\n\n- Use latest skeleton (and updated configure script)\n- Update license list to latest ScanCode and SPDX 3.19\n- Use correct syntax for python_require\n- Drop using Travis and Appveyor\n- Drop support for Python 3.7 and add Python 3.11 in CI\n\n\nv30.0.0 - 2022-05-10\n----------------------\n\nThis is a minor release with API changes\n\n- Use latest skeleton (and updated configure script)\n- Drop using calver\n- Improve error checking when combining licenses\n\n\n\nv21.6.14 - 2021-06-14\n----------------------\n\nAdded\n~~~~~\n\n- Switch to calver for package versioning to better convey the currency of the\n bundled data.\n\n- Include https://scancode-licensedb.aboutcode.org/ licenses list with\n ScanCode (v21.6.7) and SPDX licenses (v3.13) keys. Add new functions to\n create Licensing using these licenses as LicenseSymbol.\n\n- Add new License.dedup() method to deduplicate and simplify license expressions\n without over simplifying.\n\n- Add new License.validate() method to return a new ExpressionInfo object with\n details on a license expression validation.\n\n\nChanged\n~~~~~~~\n- Drop support for Python 2.\n- Adopt the project skeleton from https://github.com/nexB/skeleton\n and its new configure script\n\n\nv1.2 - 2019-11-14\n------------------\nAdded\n~~~~~\n- Add ability to render WITH expression wrapped in parenthesis\n\nFixes\n~~~~~\n- Fix anomalous backslashes in strings\n\nChanged\n~~~~~~~\n- Update the thirdparty directory structure.\n\n\nv1.0 - 2019-10-16\n------------------\nAdded\n~~~~~\n- New version of boolean.py library\n- Add ability to leave license expressions unsorted when simplifying\n\nChanged\n~~~~~~~\n- updated travis CI settings\n\n\nv0.999 - 2019-04-29\n--------------------\n- Initial release\n- license-expression is small utility library to parse, compare and\n simplify and normalize license expressions.\n\n", + "contentType": "text/prs.fallenstein.rst" + } + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: CODE_OF_CONDUCT.rst", + "text": { + "content": "Contributor Covenant Code of Conduct\n====================================\n\nOur Pledge\n----------\n\nIn the interest of fostering an open and welcoming environment, we as\ncontributors and maintainers pledge to making participation in our\nproject and our community a harassment-free experience for everyone,\nregardless of age, body size, disability, ethnicity, gender identity and\nexpression, level of experience, education, socio-economic status,\nnationality, personal appearance, race, religion, or sexual identity and\norientation.\n\nOur Standards\n-------------\n\nExamples of behavior that contributes to creating a positive environment\ninclude:\n\n- Using welcoming and inclusive language\n- Being respectful of differing viewpoints and experiences\n- Gracefully accepting constructive criticism\n- Focusing on what is best for the community\n- Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n- The use of sexualized language or imagery and unwelcome sexual\n attention or advances\n- Trolling, insulting/derogatory comments, and personal or political\n attacks\n- Public or private harassment\n- Publishing others\u2019 private information, such as a physical or\n electronic address, without explicit permission\n- Other conduct which could reasonably be considered inappropriate in a\n professional setting\n\nOur Responsibilities\n--------------------\n\nProject maintainers are responsible for clarifying the standards of\nacceptable behavior and are expected to take appropriate and fair\ncorrective action in response to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit,\nor reject comments, commits, code, wiki edits, issues, and other\ncontributions that are not aligned to this Code of Conduct, or to ban\ntemporarily or permanently any contributor for other behaviors that they\ndeem inappropriate, threatening, offensive, or harmful.\n\nScope\n-----\n\nThis Code of Conduct applies both within project spaces and in public\nspaces when an individual is representing the project or its community.\nExamples of representing a project or community include using an\nofficial project e-mail address, posting via an official social media\naccount, or acting as an appointed representative at an online or\noffline event. Representation of a project may be further defined and\nclarified by project maintainers.\n\nEnforcement\n-----------\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may\nbe reported by contacting the project team at pombredanne@gmail.com\nor on the Gitter chat channel at https://gitter.im/aboutcode-org/discuss .\nAll complaints will be reviewed and investigated and will result in a\nresponse that is deemed necessary and appropriate to the circumstances.\nThe project team is obligated to maintain confidentiality with regard to\nthe reporter of an incident. Further details of specific enforcement\npolicies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in\ngood faith may face temporary or permanent repercussions as determined\nby other members of the project\u2019s leadership.\n\nAttribution\n-----------\n\nThis Code of Conduct is adapted from the `Contributor Covenant`_ ,\nversion 1.4, available at\nhttps://www.contributor-covenant.org/version/1/4/code-of-conduct.html\n\n.. _Contributor Covenant: https://www.contributor-covenant.org\n", + "contentType": "text/prs.fallenstein.rst" + } + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: NOTICE", + "text": { + "content": "#\n# Copyright (c) nexB Inc. and others.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Visit https://aboutcode.org and https://github.com/nexB/license-expression\n# for support and download.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: apache-2.0.LICENSE", + "text": { + "content": " Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", + "contentType": "text/plain" + } } } ], @@ -182,13 +290,21 @@ { "license": { "acknowledgement": "declared", - "id": "BSD-3-Clause" + "name": "declared license file: LICENSE.txt", + "text": { + "content": "Copyright (c) 2004 Infrae. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n 1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n \n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in\n the documentation and/or other materials provided with the\n distribution.\n\n 3. Neither the name of Infrae nor the names of its contributors may\n be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INFRAE OR\nCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\nEXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\nPROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", + "contentType": "text/plain" + } } }, { "license": { "acknowledgement": "declared", - "name": "License :: OSI Approved :: BSD License" + "name": "declared license file: LICENSES.txt", + "text": { + "content": "lxml is copyright Infrae and distributed under the BSD license (see\ndoc/licenses/BSD.txt), with the following exceptions:\n\nSome code, such a selftest.py, selftest2.py and\nsrc/lxml/_elementpath.py are derived from ElementTree and\ncElementTree. See doc/licenses/elementtree.txt for the license text.\n\nlxml.cssselect and lxml.html are copyright Ian Bicking and distributed\nunder the BSD license (see doc/licenses/BSD.txt).\n\ntest.py, the test-runner script, is GPL and copyright Shuttleworth\nFoundation. See doc/licenses/GPL.txt. It is believed the unchanged\ninclusion of test.py to run the unit test suite falls under the\n\"aggregation\" clause of the GPL and thus does not affect the license\nof the rest of the package.\n\nThe isoschematron implementation uses several XSL and RelaxNG resources:\n * The (XML syntax) RelaxNG schema for schematron, copyright International\n Organization for Standardization (see \n src/lxml/isoschematron/resources/rng/iso-schematron.rng for the license\n text)\n * The skeleton iso-schematron-xlt1 pure-xslt schematron implementation\n xsl stylesheets, copyright Rick Jelliffe and Academia Sinica Computing\n Center, Taiwan (see the xsl files here for the license text: \n src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/)\n * The xsd/rng schema schematron extraction xsl transformations are unlicensed\n and copyright the respective authors as noted (see \n src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl and\n src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl)\n", + "contentType": "text/plain" + } } } ], @@ -206,6 +322,59 @@ "url": "file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868" } ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: my_licenses/richtext.rtf", + "text": { + "content": "e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA=", + "contentType": "application/rtf", + "encoding": "base64" + } + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: my_licenses/utf-16be_withBOM.txt", + "text": { + "content": "this file is\r\nutf-16be encoded\r\nwith BOM\r\n\ud83d\ude03\r\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: my_licenses/utf-16le_withBOM.txt", + "text": { + "content": "this file is\nutf-16le encoded\nwith BOM\n\ud83d\ude03\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: my_licenses/utf-8_noBOM.txt", + "text": { + "content": "this file is\nutf-8 encoded\nwithout BOM\n\ud83d\ude03\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: my_licenses/utf-8_withBOM.txt", + "text": { + "content": "\ufeffthis file is\nutf-8 encoded\nwith BOM\n\ud83d\ude03\n", + "contentType": "text/plain" + } + } + } + ], "name": "regression-issue868", "type": "library", "version": "0.1" @@ -253,6 +422,13 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", + "evidence": {}, + "licenses": [ + { + "acknowledgement": "declared", + "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" + } + ], "name": "with-extras", "type": "application", "version": "0.1.0" diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.xml.bin index ad29652f9..431df8f56 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.xml.bin @@ -54,6 +54,10 @@ with-extras 0.1.0 depenndencies with license declaration accoring to PEP 639 + + MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) + + true @@ -68,6 +72,31 @@ MIT + + declared license file: LICENSE + The MIT License (MIT) + +Copyright (c) 2015 Hynek Schlawack and the attrs contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + pkg:pypi/attrs@23.2.0 @@ -99,7 +128,282 @@ Define boolean algebras, create and parse boolean expressions and create custom boolean DSL. - BSD-2-Clause + declared license file: CHANGELOG.rst + +Changelog +========= + + +next +---- + + +4.0 (2022-05-05) +---------------- + +* API changes + + * Drop support for Python 2. + * Test on Python 3.10 + * Make Expression.sort_order an instance attributes and not a class attribute + +* Misc. + + * Correct licensing documentation + * Improve docstringf and apply minor refactorings + * Adopt black code style and isort for imports + * Drop Travis and use GitHub actions for CI + + +3.8 (2020-06-10) +---------------- + +* API changes + + * Add support for evaluation of boolean expression. + Thank you to Lars van Gemerden @gemerden + +* Bug fixes + + * Fix parsing of tokens that have a number as the first character. + Thank you to Jeff Cohen @ jcohen28 + * Restore proper Python 2 compatibility. + Thank you to Benjy Weinberger @benjyw + +* Improve documentation + + * Add pointers to Linux distro packages. + Thank you to Max Mehl @mxmehl and Carmen Bianca Bakker @carmenbianca + * Fix typo. + Thank you to Gabriel Niebler @der-gabe + + +3.7 (2019-10-04) +---------------- + +* API changes + + * Add new sort argument to simplify() to optionally not sort when simplifying + expressions (e.g. not applying "commutativity"). Thank you to Steven Esser + @majurg for this + * Add new argument to tokenizer to optionally accept extra characters in symbol + tokens. Thank you to @carpie for this + + +3.6 (2018-08-06) +---------------- + +* No API changes + +* Bug fixes + + * Fix De Morgan's laws effect on double negation propositions. Thank you to Douglas Cardoso for this + * Improve error checking when parsing + + +3.5 (Nov 1, 2017) +----------------- + +* No API changes + +* Bug fixes + + * Documentation updates and add testing for Python 3.6. Thank you to Alexander Lisianoi @alisianoi + * Improve testng and expression equivalence checks + * Improve subs() method to an expression + + + +3.4 (May 12, 2017) +------------------ + +* No API changes + +* Bug fixes and improvements + + * Fix various documentation typos and improve tests . Thank you to Alexander Lisianoi @alisianoi + * Fix handling for literals vs. symbols in negations Thank you to @YaronK + + +3.3 (2017-02-09) +---------------- + +* API changes + + * #40 and #50 Expression.subs() now takes 'default' thanks to @kronuz + * #45 simplify=False is now the default for parse and related functions or methods. + * #40 Use "&" and "|" as default operators + +* Bug fixes + + * #60 Fix bug for "a or b c" which is not a valid expression + * #58 Fix math formula display in docs + * Improve handling of parse errors + + +2.0.0 (2016-05-11) +------------------ + +* API changes + + * New algebra definition. Refactored class hierarchy. Improved parsing. + +* New features + + * possibility to subclass algebra definition + * new normal forms shortcuts for DNF and CNF. + + +1.1 (2016-04-06) +------------------ + +* Initial release on Pypi. + + + + declared license file: LICENSE.txt + Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + + declared license file: README.rst + boolean.py +========== + +"boolean.py" is a small library implementing a boolean algebra. It +defines two base elements, TRUE and FALSE, and a Symbol class that can +take on one of these two values. Calculations are done in terms of AND, +OR and NOT - other compositions like XOR and NAND are not implemented +but can be emulated with AND or and NOT. Expressions are constructed +from parsed strings or in Python. + +It runs on Python 3.6+ +You can use older version 3.x for Python 2.7+ support. + +https://github.com/bastikr/boolean.py + +Build status: |Build Status| + + +Example +------- + +:: + + >>> import boolean + >>> algebra = boolean.BooleanAlgebra() + >>> expression1 = algebra.parse(u'apple and (oranges or banana) and not banana', simplify=False) + >>> expression1 + AND(Symbol('apple'), OR(Symbol('oranges'), Symbol('banana')), NOT(Symbol('banana'))) + + >>> expression2 = algebra.parse('(oranges | banana) and not banana & apple', simplify=True) + >>> expression2 + AND(Symbol('apple'), NOT(Symbol('banana')), Symbol('oranges')) + + >>> expression1 == expression2 + False + >>> expression1.simplify() == expression2 + True + + +Documentation +------------- + +http://readthedocs.org/docs/booleanpy/en/latest/ + + +Installation +------------ + +Installation via pip +~~~~~~~~~~~~~~~~~~~~ + +To install boolean.py, you need to have the following pieces of software +on your computer: + +- Python 3.6+ +- pip + +You then only need to run the following command: + +``pip install boolean.py`` + + +Installation via package managers +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +There are packages available for easy install on some operating systems. +You are welcome to help us package this tool for more distributions! + +- boolean.py has been packaged as Arch Linux, Fedora, openSus, + nixpkgs, Guix, DragonFly and FreeBSD + `packages <https://repology.org/project/python:boolean.py/versions>`__ . + +In particular: + +- Arch Linux (AUR): + `python-boolean.py <https://aur.archlinux.org/packages/python-boolean.py/>`__ +- Fedora: + `python-boolean.py <https://apps.fedoraproject.org/packages/python-boolean.py>`__ +- openSUSE: + `python-boolean.py <https://software.opensuse.org/package/python-boolean.py>`__ + + +Testing +------- + +Test ``boolean.py`` with your current Python environment: + +``python setup.py test`` + +Test with all of the supported Python environments using ``tox``: + +:: + + pip install -r requirements-dev.txt + tox + +If ``tox`` throws ``InterpreterNotFound``, limit it to python +interpreters that are actually installed on your machine: + +:: + + tox -e py36 + +Alternatively use pytest. + + +License +------- + +Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others +SPDX-License-Identifier: BSD-2-Clause + +.. |Build Status| image:: https://travis-ci.org/bastikr/boolean.py.svg?branch=master + :target: https://travis-ci.org/bastikr/boolean.py + pkg:pypi/boolean.py@4.0 @@ -115,7 +419,250 @@ 43.0.1 cryptography is a package which provides cryptographic recipes and primitives to Python developers. - Apache-2.0 OR BSD-3-Clause + + declared license file: LICENSE + This software is made available under the terms of *either* of the licenses +found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made +under the terms of *both* these licenses. + + + + declared license file: LICENSE.APACHE + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + + declared license file: LICENSE.BSD + Copyright (c) Individual contributors. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. Neither the name of PyCA Cryptography nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + pkg:pypi/cryptography@43.0.1 @@ -147,11 +694,41 @@ Identify specific nodes in a JSON document (RFC 6901) - License :: OSI Approved :: BSD License + declared license file: AUTHORS + Stefan Kögl <stefan@skoegl.net> +Alexander Shorin <kxepal@gmail.com> +Christopher J. White <chris@grierwhite.com> + - declared license of 'jsonpointer' - Modified BSD License + declared license file: LICENSE.txt + Copyright (c) 2011 Stefan Kögl <stefan@skoegl.net> +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + pkg:pypi/jsonpointer@2.4 @@ -168,7 +745,459 @@ license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic. - Apache-2.0 + declared license file: AUTHORS.rst + The following organizations or individuals have contributed to this code: + +- Ayan Sinha Mahapatra @AyanSinhaMahapatra +- Carmen Bianca Bakker @carmenbianca +- Chin-Yeung Li @chinyeungli +- Dennis Clark @DennisClark +- John Horan @johnmhoran +- Jono Yang @JonoYang +- Max Mehl @mxmehl +- nexB Inc. @nexB +- Peter Kolbus @pkolbus +- Philippe Ombredanne @pombredanne +- Sebastian Schuberth @sschuberth +- Steven Esser @majurg +- Thomas Druez @tdruez + + + + declared license file: CHANGELOG.rst + Changelog +========= + +v30.3.0 - 2024-03-18 +-------------------- + +This is a minor release without API changes: + +- Use latest skeleton +- Update license list to latest ScanCode and SPDX 3.23 +- Drop support for Python 3.7 + +v30.2.0 - 2023-11-29 +-------------------- + +This is a minor release without API changes: + +- Use latest skeleton +- Update license list to latest ScanCode and SPDX 3.22 +- Add Python 3.12 support in CI + + +v30.1.1 - 2023-01-16 +---------------------- + +This is a minor dot release without API changes + +- Use latest skeleton +- Update license list to latest ScanCode and SPDX 3.20 + + +v30.1.0 - 2023-01-16 +---------------------- + +This is a minor release without API changes + +- Use latest skeleton (and updated configure script) +- Update license list to latest ScanCode and SPDX 3.19 +- Use correct syntax for python_require +- Drop using Travis and Appveyor +- Drop support for Python 3.7 and add Python 3.11 in CI + + +v30.0.0 - 2022-05-10 +---------------------- + +This is a minor release with API changes + +- Use latest skeleton (and updated configure script) +- Drop using calver +- Improve error checking when combining licenses + + + +v21.6.14 - 2021-06-14 +---------------------- + +Added +~~~~~ + +- Switch to calver for package versioning to better convey the currency of the + bundled data. + +- Include https://scancode-licensedb.aboutcode.org/ licenses list with + ScanCode (v21.6.7) and SPDX licenses (v3.13) keys. Add new functions to + create Licensing using these licenses as LicenseSymbol. + +- Add new License.dedup() method to deduplicate and simplify license expressions + without over simplifying. + +- Add new License.validate() method to return a new ExpressionInfo object with + details on a license expression validation. + + +Changed +~~~~~~~ +- Drop support for Python 2. +- Adopt the project skeleton from https://github.com/nexB/skeleton + and its new configure script + + +v1.2 - 2019-11-14 +------------------ +Added +~~~~~ +- Add ability to render WITH expression wrapped in parenthesis + +Fixes +~~~~~ +- Fix anomalous backslashes in strings + +Changed +~~~~~~~ +- Update the thirdparty directory structure. + + +v1.0 - 2019-10-16 +------------------ +Added +~~~~~ +- New version of boolean.py library +- Add ability to leave license expressions unsorted when simplifying + +Changed +~~~~~~~ +- updated travis CI settings + + +v0.999 - 2019-04-29 +-------------------- +- Initial release +- license-expression is small utility library to parse, compare and + simplify and normalize license expressions. + + + + + declared license file: CODE_OF_CONDUCT.rst + Contributor Covenant Code of Conduct +==================================== + +Our Pledge +---------- + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our +project and our community a harassment-free experience for everyone, +regardless of age, body size, disability, ethnicity, gender identity and +expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity and +orientation. + +Our Standards +------------- + +Examples of behavior that contributes to creating a positive environment +include: + +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Gracefully accepting constructive criticism +- Focusing on what is best for the community +- Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +- The use of sexualized language or imagery and unwelcome sexual + attention or advances +- Trolling, insulting/derogatory comments, and personal or political + attacks +- Public or private harassment +- Publishing others’ private information, such as a physical or + electronic address, without explicit permission +- Other conduct which could reasonably be considered inappropriate in a + professional setting + +Our Responsibilities +-------------------- + +Project maintainers are responsible for clarifying the standards of +acceptable behavior and are expected to take appropriate and fair +corrective action in response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, +or reject comments, commits, code, wiki edits, issues, and other +contributions that are not aligned to this Code of Conduct, or to ban +temporarily or permanently any contributor for other behaviors that they +deem inappropriate, threatening, offensive, or harmful. + +Scope +----- + +This Code of Conduct applies both within project spaces and in public +spaces when an individual is representing the project or its community. +Examples of representing a project or community include using an +official project e-mail address, posting via an official social media +account, or acting as an appointed representative at an online or +offline event. Representation of a project may be further defined and +clarified by project maintainers. + +Enforcement +----------- + +Instances of abusive, harassing, or otherwise unacceptable behavior may +be reported by contacting the project team at pombredanne@gmail.com +or on the Gitter chat channel at https://gitter.im/aboutcode-org/discuss . +All complaints will be reviewed and investigated and will result in a +response that is deemed necessary and appropriate to the circumstances. +The project team is obligated to maintain confidentiality with regard to +the reporter of an incident. Further details of specific enforcement +policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in +good faith may face temporary or permanent repercussions as determined +by other members of the project’s leadership. + +Attribution +----------- + +This Code of Conduct is adapted from the `Contributor Covenant`_ , +version 1.4, available at +https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + +.. _Contributor Covenant: https://www.contributor-covenant.org + + + + declared license file: NOTICE + # +# Copyright (c) nexB Inc. and others. +# SPDX-License-Identifier: Apache-2.0 +# +# Visit https://aboutcode.org and https://github.com/nexB/license-expression +# for support and download. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + + + + declared license file: apache-2.0.LICENSE + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + pkg:pypi/license-expression@30.3.0 @@ -185,10 +1214,70 @@ Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. - BSD-3-Clause + declared license file: LICENSE.txt + Copyright (c) 2004 Infrae. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + 3. Neither the name of Infrae nor the names of its contributors may + be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INFRAE OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + - License :: OSI Approved :: BSD License + declared license file: LICENSES.txt + lxml is copyright Infrae and distributed under the BSD license (see +doc/licenses/BSD.txt), with the following exceptions: + +Some code, such a selftest.py, selftest2.py and +src/lxml/_elementpath.py are derived from ElementTree and +cElementTree. See doc/licenses/elementtree.txt for the license text. + +lxml.cssselect and lxml.html are copyright Ian Bicking and distributed +under the BSD license (see doc/licenses/BSD.txt). + +test.py, the test-runner script, is GPL and copyright Shuttleworth +Foundation. See doc/licenses/GPL.txt. It is believed the unchanged +inclusion of test.py to run the unit test suite falls under the +"aggregation" clause of the GPL and thus does not affect the license +of the rest of the package. + +The isoschematron implementation uses several XSL and RelaxNG resources: + * The (XML syntax) RelaxNG schema for schematron, copyright International + Organization for Standardization (see + src/lxml/isoschematron/resources/rng/iso-schematron.rng for the license + text) + * The skeleton iso-schematron-xlt1 pure-xslt schematron implementation + xsl stylesheets, copyright Rick Jelliffe and Academia Sinica Computing + Center, Taiwan (see the xsl files here for the license text: + src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/) + * The xsd/rng schema schematron extraction xsl transformations are unlicensed + and copyright the respective authors as noted (see + src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl and + src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl) + pkg:pypi/lxml@5.3.0 @@ -206,6 +1295,44 @@ regression-issue868 0.1 + + + declared license file: my_licenses/richtext.rtf + e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA= + + + declared license file: my_licenses/utf-16be_withBOM.txt + this file is +utf-16be encoded +with BOM +😃 + + + + declared license file: my_licenses/utf-16le_withBOM.txt + this file is +utf-16le encoded +with BOM +😃 + + + + declared license file: my_licenses/utf-8_noBOM.txt + this file is +utf-8 encoded +without BOM +😃 + + + + declared license file: my_licenses/utf-8_withBOM.txt + this file is +utf-8 encoded +with BOM +😃 + + + file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 diff --git a/tests/_data/snapshots/pipenv/plain_no-deps_1.3.json.bin b/tests/_data/snapshots/pipenv/plain_no-deps_1.3.json.bin index 3cfa3a05c..9254fa4cb 100644 --- a/tests/_data/snapshots/pipenv/plain_no-deps_1.3.json.bin +++ b/tests/_data/snapshots/pipenv/plain_no-deps_1.3.json.bin @@ -8,6 +8,20 @@ "component": { "bom-ref": "root-component", "description": "packages with all meta, but no deps", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/pipenv/plain_no-deps_1.3.xml.bin b/tests/_data/snapshots/pipenv/plain_no-deps_1.3.xml.bin index c326a1fb8..3add75d68 100644 --- a/tests/_data/snapshots/pipenv/plain_no-deps_1.3.xml.bin +++ b/tests/_data/snapshots/pipenv/plain_no-deps_1.3.xml.bin @@ -46,6 +46,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/pipenv/plain_no-deps_1.4.json.bin b/tests/_data/snapshots/pipenv/plain_no-deps_1.4.json.bin index 9c91dd7a0..11b1b8e7b 100644 --- a/tests/_data/snapshots/pipenv/plain_no-deps_1.4.json.bin +++ b/tests/_data/snapshots/pipenv/plain_no-deps_1.4.json.bin @@ -8,6 +8,20 @@ "component": { "bom-ref": "root-component", "description": "packages with all meta, but no deps", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/pipenv/plain_no-deps_1.4.xml.bin b/tests/_data/snapshots/pipenv/plain_no-deps_1.4.xml.bin index 374af51db..e66296747 100644 --- a/tests/_data/snapshots/pipenv/plain_no-deps_1.4.xml.bin +++ b/tests/_data/snapshots/pipenv/plain_no-deps_1.4.xml.bin @@ -73,6 +73,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/pipenv/plain_no-deps_1.5.json.bin b/tests/_data/snapshots/pipenv/plain_no-deps_1.5.json.bin index 5445beadf..6f36eac92 100644 --- a/tests/_data/snapshots/pipenv/plain_no-deps_1.5.json.bin +++ b/tests/_data/snapshots/pipenv/plain_no-deps_1.5.json.bin @@ -8,6 +8,20 @@ "component": { "bom-ref": "root-component", "description": "packages with all meta, but no deps", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/pipenv/plain_no-deps_1.5.xml.bin b/tests/_data/snapshots/pipenv/plain_no-deps_1.5.xml.bin index c08c97e18..0a26b51c4 100644 --- a/tests/_data/snapshots/pipenv/plain_no-deps_1.5.xml.bin +++ b/tests/_data/snapshots/pipenv/plain_no-deps_1.5.xml.bin @@ -83,6 +83,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/pipenv/plain_no-deps_1.6.json.bin b/tests/_data/snapshots/pipenv/plain_no-deps_1.6.json.bin index 4dba1ef28..960672b5b 100644 --- a/tests/_data/snapshots/pipenv/plain_no-deps_1.6.json.bin +++ b/tests/_data/snapshots/pipenv/plain_no-deps_1.6.json.bin @@ -8,6 +8,22 @@ "component": { "bom-ref": "root-component", "description": "packages with all meta, but no deps", + "evidence": { + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/pipenv/plain_no-deps_1.6.xml.bin b/tests/_data/snapshots/pipenv/plain_no-deps_1.6.xml.bin index aa980c042..805573888 100644 --- a/tests/_data/snapshots/pipenv/plain_no-deps_1.6.xml.bin +++ b/tests/_data/snapshots/pipenv/plain_no-deps_1.6.xml.bin @@ -83,6 +83,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/poetry/plain_no-deps_lock20_1.3.json.bin b/tests/_data/snapshots/poetry/plain_no-deps_lock20_1.3.json.bin index f128f6f5a..4169049bc 100644 --- a/tests/_data/snapshots/poetry/plain_no-deps_lock20_1.3.json.bin +++ b/tests/_data/snapshots/poetry/plain_no-deps_lock20_1.3.json.bin @@ -8,6 +8,20 @@ "component": { "bom-ref": "no-deps", "description": "packages with all meta, but no deps", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from poetry: documentation", diff --git a/tests/_data/snapshots/poetry/plain_no-deps_lock20_1.3.xml.bin b/tests/_data/snapshots/poetry/plain_no-deps_lock20_1.3.xml.bin index 131df14aa..e69e01ca1 100644 --- a/tests/_data/snapshots/poetry/plain_no-deps_lock20_1.3.xml.bin +++ b/tests/_data/snapshots/poetry/plain_no-deps_lock20_1.3.xml.bin @@ -46,6 +46,16 @@ from poetry: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/poetry/plain_no-deps_lock20_1.4.json.bin b/tests/_data/snapshots/poetry/plain_no-deps_lock20_1.4.json.bin index e4bd83e61..ba4c75dd7 100644 --- a/tests/_data/snapshots/poetry/plain_no-deps_lock20_1.4.json.bin +++ b/tests/_data/snapshots/poetry/plain_no-deps_lock20_1.4.json.bin @@ -8,6 +8,20 @@ "component": { "bom-ref": "no-deps", "description": "packages with all meta, but no deps", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from poetry: documentation", diff --git a/tests/_data/snapshots/poetry/plain_no-deps_lock20_1.4.xml.bin b/tests/_data/snapshots/poetry/plain_no-deps_lock20_1.4.xml.bin index 262918795..2874c9620 100644 --- a/tests/_data/snapshots/poetry/plain_no-deps_lock20_1.4.xml.bin +++ b/tests/_data/snapshots/poetry/plain_no-deps_lock20_1.4.xml.bin @@ -73,6 +73,16 @@ from poetry: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/poetry/plain_no-deps_lock20_1.5.json.bin b/tests/_data/snapshots/poetry/plain_no-deps_lock20_1.5.json.bin index dae427cc5..e35f94298 100644 --- a/tests/_data/snapshots/poetry/plain_no-deps_lock20_1.5.json.bin +++ b/tests/_data/snapshots/poetry/plain_no-deps_lock20_1.5.json.bin @@ -8,6 +8,20 @@ "component": { "bom-ref": "no-deps", "description": "packages with all meta, but no deps", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from poetry: documentation", diff --git a/tests/_data/snapshots/poetry/plain_no-deps_lock20_1.5.xml.bin b/tests/_data/snapshots/poetry/plain_no-deps_lock20_1.5.xml.bin index e0727ef51..7efb1f741 100644 --- a/tests/_data/snapshots/poetry/plain_no-deps_lock20_1.5.xml.bin +++ b/tests/_data/snapshots/poetry/plain_no-deps_lock20_1.5.xml.bin @@ -83,6 +83,16 @@ from poetry: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/poetry/plain_no-deps_lock20_1.6.json.bin b/tests/_data/snapshots/poetry/plain_no-deps_lock20_1.6.json.bin index 6e4b11b23..f1aa9c057 100644 --- a/tests/_data/snapshots/poetry/plain_no-deps_lock20_1.6.json.bin +++ b/tests/_data/snapshots/poetry/plain_no-deps_lock20_1.6.json.bin @@ -8,6 +8,22 @@ "component": { "bom-ref": "no-deps", "description": "packages with all meta, but no deps", + "evidence": { + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from poetry: documentation", diff --git a/tests/_data/snapshots/poetry/plain_no-deps_lock20_1.6.xml.bin b/tests/_data/snapshots/poetry/plain_no-deps_lock20_1.6.xml.bin index 255c11236..73ec5ee22 100644 --- a/tests/_data/snapshots/poetry/plain_no-deps_lock20_1.6.xml.bin +++ b/tests/_data/snapshots/poetry/plain_no-deps_lock20_1.6.xml.bin @@ -83,6 +83,16 @@ from poetry: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/poetry/plain_no-deps_lock21_1.3.json.bin b/tests/_data/snapshots/poetry/plain_no-deps_lock21_1.3.json.bin index f128f6f5a..4169049bc 100644 --- a/tests/_data/snapshots/poetry/plain_no-deps_lock21_1.3.json.bin +++ b/tests/_data/snapshots/poetry/plain_no-deps_lock21_1.3.json.bin @@ -8,6 +8,20 @@ "component": { "bom-ref": "no-deps", "description": "packages with all meta, but no deps", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from poetry: documentation", diff --git a/tests/_data/snapshots/poetry/plain_no-deps_lock21_1.3.xml.bin b/tests/_data/snapshots/poetry/plain_no-deps_lock21_1.3.xml.bin index 131df14aa..e69e01ca1 100644 --- a/tests/_data/snapshots/poetry/plain_no-deps_lock21_1.3.xml.bin +++ b/tests/_data/snapshots/poetry/plain_no-deps_lock21_1.3.xml.bin @@ -46,6 +46,16 @@ from poetry: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/poetry/plain_no-deps_lock21_1.4.json.bin b/tests/_data/snapshots/poetry/plain_no-deps_lock21_1.4.json.bin index e4bd83e61..ba4c75dd7 100644 --- a/tests/_data/snapshots/poetry/plain_no-deps_lock21_1.4.json.bin +++ b/tests/_data/snapshots/poetry/plain_no-deps_lock21_1.4.json.bin @@ -8,6 +8,20 @@ "component": { "bom-ref": "no-deps", "description": "packages with all meta, but no deps", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from poetry: documentation", diff --git a/tests/_data/snapshots/poetry/plain_no-deps_lock21_1.4.xml.bin b/tests/_data/snapshots/poetry/plain_no-deps_lock21_1.4.xml.bin index 262918795..2874c9620 100644 --- a/tests/_data/snapshots/poetry/plain_no-deps_lock21_1.4.xml.bin +++ b/tests/_data/snapshots/poetry/plain_no-deps_lock21_1.4.xml.bin @@ -73,6 +73,16 @@ from poetry: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/poetry/plain_no-deps_lock21_1.5.json.bin b/tests/_data/snapshots/poetry/plain_no-deps_lock21_1.5.json.bin index dae427cc5..e35f94298 100644 --- a/tests/_data/snapshots/poetry/plain_no-deps_lock21_1.5.json.bin +++ b/tests/_data/snapshots/poetry/plain_no-deps_lock21_1.5.json.bin @@ -8,6 +8,20 @@ "component": { "bom-ref": "no-deps", "description": "packages with all meta, but no deps", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from poetry: documentation", diff --git a/tests/_data/snapshots/poetry/plain_no-deps_lock21_1.5.xml.bin b/tests/_data/snapshots/poetry/plain_no-deps_lock21_1.5.xml.bin index e0727ef51..7efb1f741 100644 --- a/tests/_data/snapshots/poetry/plain_no-deps_lock21_1.5.xml.bin +++ b/tests/_data/snapshots/poetry/plain_no-deps_lock21_1.5.xml.bin @@ -83,6 +83,16 @@ from poetry: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/poetry/plain_no-deps_lock21_1.6.json.bin b/tests/_data/snapshots/poetry/plain_no-deps_lock21_1.6.json.bin index 6e4b11b23..f1aa9c057 100644 --- a/tests/_data/snapshots/poetry/plain_no-deps_lock21_1.6.json.bin +++ b/tests/_data/snapshots/poetry/plain_no-deps_lock21_1.6.json.bin @@ -8,6 +8,22 @@ "component": { "bom-ref": "no-deps", "description": "packages with all meta, but no deps", + "evidence": { + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from poetry: documentation", diff --git a/tests/_data/snapshots/poetry/plain_no-deps_lock21_1.6.xml.bin b/tests/_data/snapshots/poetry/plain_no-deps_lock21_1.6.xml.bin index 255c11236..73ec5ee22 100644 --- a/tests/_data/snapshots/poetry/plain_no-deps_lock21_1.6.xml.bin +++ b/tests/_data/snapshots/poetry/plain_no-deps_lock21_1.6.xml.bin @@ -83,6 +83,16 @@ from poetry: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/file_frozen_1.3.json.bin b/tests/_data/snapshots/requirements/file_frozen_1.3.json.bin index be5d62f3b..258fb467a 100644 --- a/tests/_data/snapshots/requirements/file_frozen_1.3.json.bin +++ b/tests/_data/snapshots/requirements/file_frozen_1.3.json.bin @@ -56,6 +56,20 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/file_frozen_1.3.xml.bin b/tests/_data/snapshots/requirements/file_frozen_1.3.xml.bin index ea5cee203..ebfd24686 100644 --- a/tests/_data/snapshots/requirements/file_frozen_1.3.xml.bin +++ b/tests/_data/snapshots/requirements/file_frozen_1.3.xml.bin @@ -46,6 +46,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/file_frozen_1.4.json.bin b/tests/_data/snapshots/requirements/file_frozen_1.4.json.bin index fd0e22b2f..b145694c2 100644 --- a/tests/_data/snapshots/requirements/file_frozen_1.4.json.bin +++ b/tests/_data/snapshots/requirements/file_frozen_1.4.json.bin @@ -56,6 +56,20 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/file_frozen_1.4.xml.bin b/tests/_data/snapshots/requirements/file_frozen_1.4.xml.bin index 1fc439909..7d9634e0d 100644 --- a/tests/_data/snapshots/requirements/file_frozen_1.4.xml.bin +++ b/tests/_data/snapshots/requirements/file_frozen_1.4.xml.bin @@ -73,6 +73,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/file_frozen_1.5.json.bin b/tests/_data/snapshots/requirements/file_frozen_1.5.json.bin index 3be98202c..71abbf2b5 100644 --- a/tests/_data/snapshots/requirements/file_frozen_1.5.json.bin +++ b/tests/_data/snapshots/requirements/file_frozen_1.5.json.bin @@ -56,6 +56,20 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/file_frozen_1.5.xml.bin b/tests/_data/snapshots/requirements/file_frozen_1.5.xml.bin index 0dfbe4c30..8e560c2aa 100644 --- a/tests/_data/snapshots/requirements/file_frozen_1.5.xml.bin +++ b/tests/_data/snapshots/requirements/file_frozen_1.5.xml.bin @@ -83,6 +83,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/file_frozen_1.6.json.bin b/tests/_data/snapshots/requirements/file_frozen_1.6.json.bin index 2dff83fa9..20c5e7264 100644 --- a/tests/_data/snapshots/requirements/file_frozen_1.6.json.bin +++ b/tests/_data/snapshots/requirements/file_frozen_1.6.json.bin @@ -56,6 +56,22 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/file_frozen_1.6.xml.bin b/tests/_data/snapshots/requirements/file_frozen_1.6.xml.bin index d2c5fde0c..8d4f94378 100644 --- a/tests/_data/snapshots/requirements/file_frozen_1.6.xml.bin +++ b/tests/_data/snapshots/requirements/file_frozen_1.6.xml.bin @@ -83,6 +83,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/file_local_1.3.json.bin b/tests/_data/snapshots/requirements/file_local_1.3.json.bin index 1e58fb3d7..d57761d2e 100644 --- a/tests/_data/snapshots/requirements/file_local_1.3.json.bin +++ b/tests/_data/snapshots/requirements/file_local_1.3.json.bin @@ -118,6 +118,20 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/file_local_1.3.xml.bin b/tests/_data/snapshots/requirements/file_local_1.3.xml.bin index 8e639806a..82dff4ea0 100644 --- a/tests/_data/snapshots/requirements/file_local_1.3.xml.bin +++ b/tests/_data/snapshots/requirements/file_local_1.3.xml.bin @@ -46,6 +46,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/file_local_1.4.json.bin b/tests/_data/snapshots/requirements/file_local_1.4.json.bin index 3681c80fe..12d5da689 100644 --- a/tests/_data/snapshots/requirements/file_local_1.4.json.bin +++ b/tests/_data/snapshots/requirements/file_local_1.4.json.bin @@ -113,6 +113,20 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/file_local_1.4.xml.bin b/tests/_data/snapshots/requirements/file_local_1.4.xml.bin index 93554d6ec..0efea4629 100644 --- a/tests/_data/snapshots/requirements/file_local_1.4.xml.bin +++ b/tests/_data/snapshots/requirements/file_local_1.4.xml.bin @@ -73,6 +73,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/file_local_1.5.json.bin b/tests/_data/snapshots/requirements/file_local_1.5.json.bin index 2ceac6090..cab93b1da 100644 --- a/tests/_data/snapshots/requirements/file_local_1.5.json.bin +++ b/tests/_data/snapshots/requirements/file_local_1.5.json.bin @@ -113,6 +113,20 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/file_local_1.5.xml.bin b/tests/_data/snapshots/requirements/file_local_1.5.xml.bin index c5cd20a8d..f19ecc1cf 100644 --- a/tests/_data/snapshots/requirements/file_local_1.5.xml.bin +++ b/tests/_data/snapshots/requirements/file_local_1.5.xml.bin @@ -83,6 +83,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/file_local_1.6.json.bin b/tests/_data/snapshots/requirements/file_local_1.6.json.bin index 6d25b0e96..8a126c541 100644 --- a/tests/_data/snapshots/requirements/file_local_1.6.json.bin +++ b/tests/_data/snapshots/requirements/file_local_1.6.json.bin @@ -113,6 +113,22 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/file_local_1.6.xml.bin b/tests/_data/snapshots/requirements/file_local_1.6.xml.bin index 1249e46a6..fb4fbf822 100644 --- a/tests/_data/snapshots/requirements/file_local_1.6.xml.bin +++ b/tests/_data/snapshots/requirements/file_local_1.6.xml.bin @@ -83,6 +83,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/file_nested_1.3.json.bin b/tests/_data/snapshots/requirements/file_nested_1.3.json.bin index be5d62f3b..258fb467a 100644 --- a/tests/_data/snapshots/requirements/file_nested_1.3.json.bin +++ b/tests/_data/snapshots/requirements/file_nested_1.3.json.bin @@ -56,6 +56,20 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/file_nested_1.3.xml.bin b/tests/_data/snapshots/requirements/file_nested_1.3.xml.bin index ea5cee203..ebfd24686 100644 --- a/tests/_data/snapshots/requirements/file_nested_1.3.xml.bin +++ b/tests/_data/snapshots/requirements/file_nested_1.3.xml.bin @@ -46,6 +46,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/file_nested_1.4.json.bin b/tests/_data/snapshots/requirements/file_nested_1.4.json.bin index fd0e22b2f..b145694c2 100644 --- a/tests/_data/snapshots/requirements/file_nested_1.4.json.bin +++ b/tests/_data/snapshots/requirements/file_nested_1.4.json.bin @@ -56,6 +56,20 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/file_nested_1.4.xml.bin b/tests/_data/snapshots/requirements/file_nested_1.4.xml.bin index 1fc439909..7d9634e0d 100644 --- a/tests/_data/snapshots/requirements/file_nested_1.4.xml.bin +++ b/tests/_data/snapshots/requirements/file_nested_1.4.xml.bin @@ -73,6 +73,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/file_nested_1.5.json.bin b/tests/_data/snapshots/requirements/file_nested_1.5.json.bin index 3be98202c..71abbf2b5 100644 --- a/tests/_data/snapshots/requirements/file_nested_1.5.json.bin +++ b/tests/_data/snapshots/requirements/file_nested_1.5.json.bin @@ -56,6 +56,20 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/file_nested_1.5.xml.bin b/tests/_data/snapshots/requirements/file_nested_1.5.xml.bin index 0dfbe4c30..8e560c2aa 100644 --- a/tests/_data/snapshots/requirements/file_nested_1.5.xml.bin +++ b/tests/_data/snapshots/requirements/file_nested_1.5.xml.bin @@ -83,6 +83,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/file_nested_1.6.json.bin b/tests/_data/snapshots/requirements/file_nested_1.6.json.bin index 2dff83fa9..20c5e7264 100644 --- a/tests/_data/snapshots/requirements/file_nested_1.6.json.bin +++ b/tests/_data/snapshots/requirements/file_nested_1.6.json.bin @@ -56,6 +56,22 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/file_nested_1.6.xml.bin b/tests/_data/snapshots/requirements/file_nested_1.6.xml.bin index d2c5fde0c..8d4f94378 100644 --- a/tests/_data/snapshots/requirements/file_nested_1.6.xml.bin +++ b/tests/_data/snapshots/requirements/file_nested_1.6.xml.bin @@ -83,6 +83,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/file_private-packages_1.3.json.bin b/tests/_data/snapshots/requirements/file_private-packages_1.3.json.bin index be3165409..5be05aa19 100644 --- a/tests/_data/snapshots/requirements/file_private-packages_1.3.json.bin +++ b/tests/_data/snapshots/requirements/file_private-packages_1.3.json.bin @@ -56,6 +56,20 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/file_private-packages_1.3.xml.bin b/tests/_data/snapshots/requirements/file_private-packages_1.3.xml.bin index 54b9c31b1..18f1b92ca 100644 --- a/tests/_data/snapshots/requirements/file_private-packages_1.3.xml.bin +++ b/tests/_data/snapshots/requirements/file_private-packages_1.3.xml.bin @@ -46,6 +46,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/file_private-packages_1.4.json.bin b/tests/_data/snapshots/requirements/file_private-packages_1.4.json.bin index 1910d17cc..b768c4272 100644 --- a/tests/_data/snapshots/requirements/file_private-packages_1.4.json.bin +++ b/tests/_data/snapshots/requirements/file_private-packages_1.4.json.bin @@ -55,6 +55,20 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/file_private-packages_1.4.xml.bin b/tests/_data/snapshots/requirements/file_private-packages_1.4.xml.bin index 2b3b69ef9..6bca48004 100644 --- a/tests/_data/snapshots/requirements/file_private-packages_1.4.xml.bin +++ b/tests/_data/snapshots/requirements/file_private-packages_1.4.xml.bin @@ -73,6 +73,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/file_private-packages_1.5.json.bin b/tests/_data/snapshots/requirements/file_private-packages_1.5.json.bin index 8ac03d380..b606e05cd 100644 --- a/tests/_data/snapshots/requirements/file_private-packages_1.5.json.bin +++ b/tests/_data/snapshots/requirements/file_private-packages_1.5.json.bin @@ -55,6 +55,20 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/file_private-packages_1.5.xml.bin b/tests/_data/snapshots/requirements/file_private-packages_1.5.xml.bin index d0f98043b..5b3a12b6d 100644 --- a/tests/_data/snapshots/requirements/file_private-packages_1.5.xml.bin +++ b/tests/_data/snapshots/requirements/file_private-packages_1.5.xml.bin @@ -83,6 +83,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/file_private-packages_1.6.json.bin b/tests/_data/snapshots/requirements/file_private-packages_1.6.json.bin index 7d856d559..60f5d7892 100644 --- a/tests/_data/snapshots/requirements/file_private-packages_1.6.json.bin +++ b/tests/_data/snapshots/requirements/file_private-packages_1.6.json.bin @@ -55,6 +55,22 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/file_private-packages_1.6.xml.bin b/tests/_data/snapshots/requirements/file_private-packages_1.6.xml.bin index 6705413b7..1fe4a4298 100644 --- a/tests/_data/snapshots/requirements/file_private-packages_1.6.xml.bin +++ b/tests/_data/snapshots/requirements/file_private-packages_1.6.xml.bin @@ -83,6 +83,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/file_with-comments_1.3.json.bin b/tests/_data/snapshots/requirements/file_with-comments_1.3.json.bin index 8ab41aa21..24c0d1c2f 100644 --- a/tests/_data/snapshots/requirements/file_with-comments_1.3.json.bin +++ b/tests/_data/snapshots/requirements/file_with-comments_1.3.json.bin @@ -100,6 +100,20 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/file_with-comments_1.3.xml.bin b/tests/_data/snapshots/requirements/file_with-comments_1.3.xml.bin index 40ff493b3..1dfea5535 100644 --- a/tests/_data/snapshots/requirements/file_with-comments_1.3.xml.bin +++ b/tests/_data/snapshots/requirements/file_with-comments_1.3.xml.bin @@ -46,6 +46,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/file_with-comments_1.4.json.bin b/tests/_data/snapshots/requirements/file_with-comments_1.4.json.bin index 74bddba59..2be72be41 100644 --- a/tests/_data/snapshots/requirements/file_with-comments_1.4.json.bin +++ b/tests/_data/snapshots/requirements/file_with-comments_1.4.json.bin @@ -100,6 +100,20 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/file_with-comments_1.4.xml.bin b/tests/_data/snapshots/requirements/file_with-comments_1.4.xml.bin index 12db5cb63..46199f3eb 100644 --- a/tests/_data/snapshots/requirements/file_with-comments_1.4.xml.bin +++ b/tests/_data/snapshots/requirements/file_with-comments_1.4.xml.bin @@ -73,6 +73,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/file_with-comments_1.5.json.bin b/tests/_data/snapshots/requirements/file_with-comments_1.5.json.bin index 8f0de2cae..84b75532d 100644 --- a/tests/_data/snapshots/requirements/file_with-comments_1.5.json.bin +++ b/tests/_data/snapshots/requirements/file_with-comments_1.5.json.bin @@ -100,6 +100,20 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/file_with-comments_1.5.xml.bin b/tests/_data/snapshots/requirements/file_with-comments_1.5.xml.bin index 2f0ddc2cf..8b4d04f22 100644 --- a/tests/_data/snapshots/requirements/file_with-comments_1.5.xml.bin +++ b/tests/_data/snapshots/requirements/file_with-comments_1.5.xml.bin @@ -83,6 +83,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/file_with-comments_1.6.json.bin b/tests/_data/snapshots/requirements/file_with-comments_1.6.json.bin index 46e98fa41..244683328 100644 --- a/tests/_data/snapshots/requirements/file_with-comments_1.6.json.bin +++ b/tests/_data/snapshots/requirements/file_with-comments_1.6.json.bin @@ -100,6 +100,22 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/file_with-comments_1.6.xml.bin b/tests/_data/snapshots/requirements/file_with-comments_1.6.xml.bin index 24254884f..e3acfeadc 100644 --- a/tests/_data/snapshots/requirements/file_with-comments_1.6.xml.bin +++ b/tests/_data/snapshots/requirements/file_with-comments_1.6.xml.bin @@ -83,6 +83,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/file_with-extras_1.3.json.bin b/tests/_data/snapshots/requirements/file_with-extras_1.3.json.bin index 6e3b0f185..70da24041 100644 --- a/tests/_data/snapshots/requirements/file_with-extras_1.3.json.bin +++ b/tests/_data/snapshots/requirements/file_with-extras_1.3.json.bin @@ -38,6 +38,20 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/file_with-extras_1.3.xml.bin b/tests/_data/snapshots/requirements/file_with-extras_1.3.xml.bin index 0089297d4..3cb37333d 100644 --- a/tests/_data/snapshots/requirements/file_with-extras_1.3.xml.bin +++ b/tests/_data/snapshots/requirements/file_with-extras_1.3.xml.bin @@ -46,6 +46,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/file_with-extras_1.4.json.bin b/tests/_data/snapshots/requirements/file_with-extras_1.4.json.bin index 0bdb288f5..0830156b8 100644 --- a/tests/_data/snapshots/requirements/file_with-extras_1.4.json.bin +++ b/tests/_data/snapshots/requirements/file_with-extras_1.4.json.bin @@ -38,6 +38,20 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/file_with-extras_1.4.xml.bin b/tests/_data/snapshots/requirements/file_with-extras_1.4.xml.bin index 0d3d27b82..3541cf662 100644 --- a/tests/_data/snapshots/requirements/file_with-extras_1.4.xml.bin +++ b/tests/_data/snapshots/requirements/file_with-extras_1.4.xml.bin @@ -73,6 +73,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/file_with-extras_1.5.json.bin b/tests/_data/snapshots/requirements/file_with-extras_1.5.json.bin index e72d74577..6ba1b725c 100644 --- a/tests/_data/snapshots/requirements/file_with-extras_1.5.json.bin +++ b/tests/_data/snapshots/requirements/file_with-extras_1.5.json.bin @@ -38,6 +38,20 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/file_with-extras_1.5.xml.bin b/tests/_data/snapshots/requirements/file_with-extras_1.5.xml.bin index c27b9ccb8..1ca7f0031 100644 --- a/tests/_data/snapshots/requirements/file_with-extras_1.5.xml.bin +++ b/tests/_data/snapshots/requirements/file_with-extras_1.5.xml.bin @@ -83,6 +83,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/file_with-extras_1.6.json.bin b/tests/_data/snapshots/requirements/file_with-extras_1.6.json.bin index 7855dfe8b..0d1b6cf58 100644 --- a/tests/_data/snapshots/requirements/file_with-extras_1.6.json.bin +++ b/tests/_data/snapshots/requirements/file_with-extras_1.6.json.bin @@ -38,6 +38,22 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/file_with-extras_1.6.xml.bin b/tests/_data/snapshots/requirements/file_with-extras_1.6.xml.bin index 4a64e4bfe..c6e07e06e 100644 --- a/tests/_data/snapshots/requirements/file_with-extras_1.6.xml.bin +++ b/tests/_data/snapshots/requirements/file_with-extras_1.6.xml.bin @@ -83,6 +83,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/file_with-hashes_1.3.json.bin b/tests/_data/snapshots/requirements/file_with-hashes_1.3.json.bin index fea16d2af..1884d24a7 100644 --- a/tests/_data/snapshots/requirements/file_with-hashes_1.3.json.bin +++ b/tests/_data/snapshots/requirements/file_with-hashes_1.3.json.bin @@ -140,6 +140,20 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/file_with-hashes_1.3.xml.bin b/tests/_data/snapshots/requirements/file_with-hashes_1.3.xml.bin index bb3d05755..5c49ddd42 100644 --- a/tests/_data/snapshots/requirements/file_with-hashes_1.3.xml.bin +++ b/tests/_data/snapshots/requirements/file_with-hashes_1.3.xml.bin @@ -46,6 +46,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/file_with-hashes_1.4.json.bin b/tests/_data/snapshots/requirements/file_with-hashes_1.4.json.bin index 3f9a2292b..92f736ec7 100644 --- a/tests/_data/snapshots/requirements/file_with-hashes_1.4.json.bin +++ b/tests/_data/snapshots/requirements/file_with-hashes_1.4.json.bin @@ -139,6 +139,20 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/file_with-hashes_1.4.xml.bin b/tests/_data/snapshots/requirements/file_with-hashes_1.4.xml.bin index 1c72957e1..91651bfdf 100644 --- a/tests/_data/snapshots/requirements/file_with-hashes_1.4.xml.bin +++ b/tests/_data/snapshots/requirements/file_with-hashes_1.4.xml.bin @@ -73,6 +73,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/file_with-hashes_1.5.json.bin b/tests/_data/snapshots/requirements/file_with-hashes_1.5.json.bin index bb00c47d0..9224eeea0 100644 --- a/tests/_data/snapshots/requirements/file_with-hashes_1.5.json.bin +++ b/tests/_data/snapshots/requirements/file_with-hashes_1.5.json.bin @@ -139,6 +139,20 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/file_with-hashes_1.5.xml.bin b/tests/_data/snapshots/requirements/file_with-hashes_1.5.xml.bin index 559cfaf9f..e5a2c1e6e 100644 --- a/tests/_data/snapshots/requirements/file_with-hashes_1.5.xml.bin +++ b/tests/_data/snapshots/requirements/file_with-hashes_1.5.xml.bin @@ -83,6 +83,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/file_with-hashes_1.6.json.bin b/tests/_data/snapshots/requirements/file_with-hashes_1.6.json.bin index e04508c78..fbc277874 100644 --- a/tests/_data/snapshots/requirements/file_with-hashes_1.6.json.bin +++ b/tests/_data/snapshots/requirements/file_with-hashes_1.6.json.bin @@ -139,6 +139,22 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/file_with-hashes_1.6.xml.bin b/tests/_data/snapshots/requirements/file_with-hashes_1.6.xml.bin index 669a50119..b05c949ff 100644 --- a/tests/_data/snapshots/requirements/file_with-hashes_1.6.xml.bin +++ b/tests/_data/snapshots/requirements/file_with-hashes_1.6.xml.bin @@ -83,6 +83,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/file_with-urls_1.3.json.bin b/tests/_data/snapshots/requirements/file_with-urls_1.3.json.bin index db7bb3aed..1743e3594 100644 --- a/tests/_data/snapshots/requirements/file_with-urls_1.3.json.bin +++ b/tests/_data/snapshots/requirements/file_with-urls_1.3.json.bin @@ -153,6 +153,20 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/file_with-urls_1.3.xml.bin b/tests/_data/snapshots/requirements/file_with-urls_1.3.xml.bin index ae8eea857..1201b6507 100644 --- a/tests/_data/snapshots/requirements/file_with-urls_1.3.xml.bin +++ b/tests/_data/snapshots/requirements/file_with-urls_1.3.xml.bin @@ -46,6 +46,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/file_with-urls_1.4.json.bin b/tests/_data/snapshots/requirements/file_with-urls_1.4.json.bin index 9fecb15e4..d7f08c5c1 100644 --- a/tests/_data/snapshots/requirements/file_with-urls_1.4.json.bin +++ b/tests/_data/snapshots/requirements/file_with-urls_1.4.json.bin @@ -146,6 +146,20 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/file_with-urls_1.4.xml.bin b/tests/_data/snapshots/requirements/file_with-urls_1.4.xml.bin index ebc409d69..a2c89f4b3 100644 --- a/tests/_data/snapshots/requirements/file_with-urls_1.4.xml.bin +++ b/tests/_data/snapshots/requirements/file_with-urls_1.4.xml.bin @@ -73,6 +73,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/file_with-urls_1.5.json.bin b/tests/_data/snapshots/requirements/file_with-urls_1.5.json.bin index 4403668b0..95a3ed0d7 100644 --- a/tests/_data/snapshots/requirements/file_with-urls_1.5.json.bin +++ b/tests/_data/snapshots/requirements/file_with-urls_1.5.json.bin @@ -146,6 +146,20 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/file_with-urls_1.5.xml.bin b/tests/_data/snapshots/requirements/file_with-urls_1.5.xml.bin index 536337311..a20c14876 100644 --- a/tests/_data/snapshots/requirements/file_with-urls_1.5.xml.bin +++ b/tests/_data/snapshots/requirements/file_with-urls_1.5.xml.bin @@ -83,6 +83,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/file_with-urls_1.6.json.bin b/tests/_data/snapshots/requirements/file_with-urls_1.6.json.bin index 1751ed27e..7752aa68d 100644 --- a/tests/_data/snapshots/requirements/file_with-urls_1.6.json.bin +++ b/tests/_data/snapshots/requirements/file_with-urls_1.6.json.bin @@ -146,6 +146,22 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/file_with-urls_1.6.xml.bin b/tests/_data/snapshots/requirements/file_with-urls_1.6.xml.bin index 639e8a297..83ad54fe7 100644 --- a/tests/_data/snapshots/requirements/file_with-urls_1.6.xml.bin +++ b/tests/_data/snapshots/requirements/file_with-urls_1.6.xml.bin @@ -83,6 +83,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/file_without-pinned-versions_1.3.json.bin b/tests/_data/snapshots/requirements/file_without-pinned-versions_1.3.json.bin index 2d8883741..e7b405439 100644 --- a/tests/_data/snapshots/requirements/file_without-pinned-versions_1.3.json.bin +++ b/tests/_data/snapshots/requirements/file_without-pinned-versions_1.3.json.bin @@ -64,6 +64,20 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/file_without-pinned-versions_1.3.xml.bin b/tests/_data/snapshots/requirements/file_without-pinned-versions_1.3.xml.bin index d6d312ea2..f03bc39f2 100644 --- a/tests/_data/snapshots/requirements/file_without-pinned-versions_1.3.xml.bin +++ b/tests/_data/snapshots/requirements/file_without-pinned-versions_1.3.xml.bin @@ -46,6 +46,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/file_without-pinned-versions_1.4.json.bin b/tests/_data/snapshots/requirements/file_without-pinned-versions_1.4.json.bin index 6fb5b0ac1..db3f4f288 100644 --- a/tests/_data/snapshots/requirements/file_without-pinned-versions_1.4.json.bin +++ b/tests/_data/snapshots/requirements/file_without-pinned-versions_1.4.json.bin @@ -61,6 +61,20 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/file_without-pinned-versions_1.4.xml.bin b/tests/_data/snapshots/requirements/file_without-pinned-versions_1.4.xml.bin index a2cca2415..73506ab72 100644 --- a/tests/_data/snapshots/requirements/file_without-pinned-versions_1.4.xml.bin +++ b/tests/_data/snapshots/requirements/file_without-pinned-versions_1.4.xml.bin @@ -73,6 +73,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/file_without-pinned-versions_1.5.json.bin b/tests/_data/snapshots/requirements/file_without-pinned-versions_1.5.json.bin index 5669d0523..af33d0cb7 100644 --- a/tests/_data/snapshots/requirements/file_without-pinned-versions_1.5.json.bin +++ b/tests/_data/snapshots/requirements/file_without-pinned-versions_1.5.json.bin @@ -61,6 +61,20 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/file_without-pinned-versions_1.5.xml.bin b/tests/_data/snapshots/requirements/file_without-pinned-versions_1.5.xml.bin index 0b62229c0..f65fc9ad9 100644 --- a/tests/_data/snapshots/requirements/file_without-pinned-versions_1.5.xml.bin +++ b/tests/_data/snapshots/requirements/file_without-pinned-versions_1.5.xml.bin @@ -83,6 +83,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/file_without-pinned-versions_1.6.json.bin b/tests/_data/snapshots/requirements/file_without-pinned-versions_1.6.json.bin index c99444a7d..ee2d7ebc5 100644 --- a/tests/_data/snapshots/requirements/file_without-pinned-versions_1.6.json.bin +++ b/tests/_data/snapshots/requirements/file_without-pinned-versions_1.6.json.bin @@ -61,6 +61,22 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/file_without-pinned-versions_1.6.xml.bin b/tests/_data/snapshots/requirements/file_without-pinned-versions_1.6.xml.bin index e603eee33..7c2e39e23 100644 --- a/tests/_data/snapshots/requirements/file_without-pinned-versions_1.6.xml.bin +++ b/tests/_data/snapshots/requirements/file_without-pinned-versions_1.6.xml.bin @@ -83,6 +83,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/index_auth_frozen_1.3.json.bin b/tests/_data/snapshots/requirements/index_auth_frozen_1.3.json.bin index ecf51b84b..01d253a80 100644 --- a/tests/_data/snapshots/requirements/index_auth_frozen_1.3.json.bin +++ b/tests/_data/snapshots/requirements/index_auth_frozen_1.3.json.bin @@ -96,6 +96,20 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/index_auth_frozen_1.3.xml.bin b/tests/_data/snapshots/requirements/index_auth_frozen_1.3.xml.bin index d61de3bc8..3966a7178 100644 --- a/tests/_data/snapshots/requirements/index_auth_frozen_1.3.xml.bin +++ b/tests/_data/snapshots/requirements/index_auth_frozen_1.3.xml.bin @@ -46,6 +46,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/index_auth_frozen_1.4.json.bin b/tests/_data/snapshots/requirements/index_auth_frozen_1.4.json.bin index 93dc4d55e..a8774b066 100644 --- a/tests/_data/snapshots/requirements/index_auth_frozen_1.4.json.bin +++ b/tests/_data/snapshots/requirements/index_auth_frozen_1.4.json.bin @@ -96,6 +96,20 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/index_auth_frozen_1.4.xml.bin b/tests/_data/snapshots/requirements/index_auth_frozen_1.4.xml.bin index c713aad3b..279631881 100644 --- a/tests/_data/snapshots/requirements/index_auth_frozen_1.4.xml.bin +++ b/tests/_data/snapshots/requirements/index_auth_frozen_1.4.xml.bin @@ -73,6 +73,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/index_auth_frozen_1.5.json.bin b/tests/_data/snapshots/requirements/index_auth_frozen_1.5.json.bin index 3ba9fe716..05da5f046 100644 --- a/tests/_data/snapshots/requirements/index_auth_frozen_1.5.json.bin +++ b/tests/_data/snapshots/requirements/index_auth_frozen_1.5.json.bin @@ -96,6 +96,20 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/index_auth_frozen_1.5.xml.bin b/tests/_data/snapshots/requirements/index_auth_frozen_1.5.xml.bin index 6732a1d65..583d5e994 100644 --- a/tests/_data/snapshots/requirements/index_auth_frozen_1.5.xml.bin +++ b/tests/_data/snapshots/requirements/index_auth_frozen_1.5.xml.bin @@ -83,6 +83,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/index_auth_frozen_1.6.json.bin b/tests/_data/snapshots/requirements/index_auth_frozen_1.6.json.bin index 98edf0f6a..042855929 100644 --- a/tests/_data/snapshots/requirements/index_auth_frozen_1.6.json.bin +++ b/tests/_data/snapshots/requirements/index_auth_frozen_1.6.json.bin @@ -96,6 +96,22 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/index_auth_frozen_1.6.xml.bin b/tests/_data/snapshots/requirements/index_auth_frozen_1.6.xml.bin index ef0e95847..e49a84ec7 100644 --- a/tests/_data/snapshots/requirements/index_auth_frozen_1.6.xml.bin +++ b/tests/_data/snapshots/requirements/index_auth_frozen_1.6.xml.bin @@ -83,6 +83,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/integration/test_cli_environment.py b/tests/integration/test_cli_environment.py index 31ddff320..ab94fc9a0 100644 --- a/tests/integration/test_cli_environment.py +++ b/tests/integration/test_cli_environment.py @@ -168,7 +168,6 @@ def test_pep639_as_expected(self, projectdir: str, sv: SchemaVersion, of: Output '--output-reproducible', '-o=-', '--pyproject', join(projectdir, 'pyproject.toml'), - '--PEP-639', join(projectdir, '.venv')) self.assertEqual(0, res, err) self.assertEqualSnapshot(out, 'pep639', projectdir, sv, of) @@ -183,7 +182,6 @@ def test_pep639_texts_as_expected(self, projectdir: str, sv: SchemaVersion, of: '--output-reproducible', '-o=-', '--pyproject', join(projectdir, 'pyproject.toml'), - '--PEP-639', '--gather-license-texts', join(projectdir, '.venv')) self.assertEqual(0, res, err) diff --git a/tests/integration/test_utils_pep621.py b/tests/integration/test_utils_pep621.py index 463cddd48..57848fbe6 100644 --- a/tests/integration/test_utils_pep621.py +++ b/tests/integration/test_utils_pep621.py @@ -37,7 +37,7 @@ def test_project2licenses_license_dict_text(self) -> None: } lfac = LicenseFactory() with TemporaryDirectory() as tmpdir: - licenses = list(project2licenses(project, lfac, fpath=join(tmpdir, 'pyproject.toml'))) + licenses = list(project2licenses(project, lfac, True, fpath=join(tmpdir, 'pyproject.toml'))) self.assertEqual(len(licenses), 1) lic = licenses[0] self.assertIsInstance(lic, DisjunctiveLicense) @@ -55,7 +55,7 @@ def test_project2licenses_license_dict_file(self) -> None: with TemporaryDirectory() as tmpdir: with open(join(tmpdir, project['license']['file']), 'w') as tf: tf.write('File license text') - licenses = list(project2licenses(project, lfac, fpath=join(tmpdir, 'pyproject.toml'))) + licenses = list(project2licenses(project, lfac, True, fpath=join(tmpdir, 'pyproject.toml'))) self.assertEqual(len(licenses), 1) lic = licenses[0] self.assertIsInstance(lic, DisjunctiveLicense) @@ -75,5 +75,5 @@ def test_project2licenses_license_non_dict(self, license: any) -> None: } lfac = LicenseFactory() with TemporaryDirectory() as tmpdir: - licenses = list(project2licenses(project, lfac, fpath=join(tmpdir, 'pyproject.toml'))) + licenses = list(project2licenses(project, lfac, True, fpath=join(tmpdir, 'pyproject.toml'))) self.assertEqual(len(licenses), 0) From 06762b8c94482c83c8e1fd743ba744b138db227a Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Tue, 8 Jul 2025 12:16:29 +0200 Subject: [PATCH 05/49] wip Signed-off-by: Jan Kowalleck --- cyclonedx_py/_internal/utils/pep639.py | 4 +- cyclonedx_py/_internal/utils/py_interop.py | 37 +++++++++++++++++++ .../licenses_b/legal/NOTICE.txt | 1 + .../with-license-pep639/pyproject.toml | 4 +- 4 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 cyclonedx_py/_internal/utils/py_interop.py create mode 100644 tests/_data/infiles/environment/with-license-pep639/licenses_b/legal/NOTICE.txt diff --git a/cyclonedx_py/_internal/utils/pep639.py b/cyclonedx_py/_internal/utils/pep639.py index 7b1f86fb8..e1ece08d1 100644 --- a/cyclonedx_py/_internal/utils/pep639.py +++ b/cyclonedx_py/_internal/utils/pep639.py @@ -23,7 +23,6 @@ from base64 import b64encode from collections.abc import Generator -from glob import glob from os.path import dirname, join from typing import TYPE_CHECKING, Any @@ -32,6 +31,7 @@ from .bytes import bytes2str from .mimetypes import guess_type +from .py_interop import glob if TYPE_CHECKING: # pragma: no cover from importlib.metadata import Distribution @@ -54,7 +54,7 @@ def project2licenses(project: dict[str, Any], lfac: 'LicenseFactory', # https://peps.python.org/pep-0639/#add-license-files-key plfiles_root = dirname(fpath) for plfile_glob in plfiles: - for plfile in glob(plfile_glob, root_dir=plfiles_root): + for plfile in glob(plfile_glob, root_dir=plfiles_root, recursive=True): # per spec: # > Tools MUST assume that license file content is valid UTF-8 encoded text # anyway, we don't trust this and assume binary diff --git a/cyclonedx_py/_internal/utils/py_interop.py b/cyclonedx_py/_internal/utils/py_interop.py new file mode 100644 index 000000000..48f3f69ce --- /dev/null +++ b/cyclonedx_py/_internal/utils/py_interop.py @@ -0,0 +1,37 @@ +# This file is part of CycloneDX Python +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# Copyright (c) OWASP Foundation. All Rights Reserved. + +__all__ = ['glob'] + +import sys +from glob import glob as _glob + +if sys.version_info > (3, 10): + glob = _glob +else: + from os.path import join, sep + from typing import Optional + + def glob(pathname: str, *, root_dir: Optional[str] = None, recursive: bool = False) -> list[str]: + if root_dir is not None: + pathname = join(root_dir, pathname) + files = glob(pathname, recursive=recursive) + if root_dir is not None: + if not root_dir.endswith(sep): + root_dir += sep + files = [f.removeprefix(root_dir) for f in files] + return files diff --git a/tests/_data/infiles/environment/with-license-pep639/licenses_b/legal/NOTICE.txt b/tests/_data/infiles/environment/with-license-pep639/licenses_b/legal/NOTICE.txt new file mode 100644 index 000000000..cfb48f500 --- /dev/null +++ b/tests/_data/infiles/environment/with-license-pep639/licenses_b/legal/NOTICE.txt @@ -0,0 +1 @@ +this is the content of licenses_b/legal/NOTICE.txt file. it is expected to be detected. diff --git a/tests/_data/infiles/environment/with-license-pep639/pyproject.toml b/tests/_data/infiles/environment/with-license-pep639/pyproject.toml index 7f30bb40d..a4daf9fb5 100644 --- a/tests/_data/infiles/environment/with-license-pep639/pyproject.toml +++ b/tests/_data/infiles/environment/with-license-pep639/pyproject.toml @@ -9,8 +9,8 @@ license = "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" # https://peps.python.org/pep-0639/#add-license-files-key license-files = [ "LICEN[CS]E*", "AUTHORS*", - "licenses_a/LICENSE.MIT", "licenses_a/LICENSE.CC0", - "LICENSE.txt", "licenses_b/*", + "licenses_a/LICENSE.MIT", "licenses_a/*.CC0", + "LICENSE.txt", "licenses_b/**", "nonexisting_file", "nonexisting_dir/foo", ] From b9d65d219441aa2b671f62de1f981f180f973c9f Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Tue, 8 Jul 2025 12:19:18 +0200 Subject: [PATCH 06/49] wip Signed-off-by: Jan Kowalleck --- cyclonedx_py/_internal/utils/pep639.py | 2 +- .../_internal/utils/py_interop/__init__.py | 16 ++++++++++++++++ .../utils/{py_interop.py => py_interop/glob.py} | 0 3 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 cyclonedx_py/_internal/utils/py_interop/__init__.py rename cyclonedx_py/_internal/utils/{py_interop.py => py_interop/glob.py} (100%) diff --git a/cyclonedx_py/_internal/utils/pep639.py b/cyclonedx_py/_internal/utils/pep639.py index e1ece08d1..7c9e484c2 100644 --- a/cyclonedx_py/_internal/utils/pep639.py +++ b/cyclonedx_py/_internal/utils/pep639.py @@ -31,7 +31,7 @@ from .bytes import bytes2str from .mimetypes import guess_type -from .py_interop import glob +from .py_interop.glob import glob if TYPE_CHECKING: # pragma: no cover from importlib.metadata import Distribution diff --git a/cyclonedx_py/_internal/utils/py_interop/__init__.py b/cyclonedx_py/_internal/utils/py_interop/__init__.py new file mode 100644 index 000000000..e6cc23156 --- /dev/null +++ b/cyclonedx_py/_internal/utils/py_interop/__init__.py @@ -0,0 +1,16 @@ +# This file is part of CycloneDX Python +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# Copyright (c) OWASP Foundation. All Rights Reserved. diff --git a/cyclonedx_py/_internal/utils/py_interop.py b/cyclonedx_py/_internal/utils/py_interop/glob.py similarity index 100% rename from cyclonedx_py/_internal/utils/py_interop.py rename to cyclonedx_py/_internal/utils/py_interop/glob.py From 810c54ab359b1c2b33d3f60aff93a01a4baac82e Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Tue, 8 Jul 2025 12:21:22 +0200 Subject: [PATCH 07/49] wip Signed-off-by: Jan Kowalleck --- cyclonedx_py/_internal/{utils => }/py_interop/__init__.py | 2 ++ cyclonedx_py/_internal/{utils => }/py_interop/glob.py | 0 cyclonedx_py/_internal/utils/pep639.py | 2 +- .../environment/plain_with-license-text_1.2.json.bin | 6 +----- 4 files changed, 4 insertions(+), 6 deletions(-) rename cyclonedx_py/_internal/{utils => }/py_interop/__init__.py (86%) rename cyclonedx_py/_internal/{utils => }/py_interop/glob.py (100%) diff --git a/cyclonedx_py/_internal/utils/py_interop/__init__.py b/cyclonedx_py/_internal/py_interop/__init__.py similarity index 86% rename from cyclonedx_py/_internal/utils/py_interop/__init__.py rename to cyclonedx_py/_internal/py_interop/__init__.py index e6cc23156..afde1c15d 100644 --- a/cyclonedx_py/_internal/utils/py_interop/__init__.py +++ b/cyclonedx_py/_internal/py_interop/__init__.py @@ -14,3 +14,5 @@ # # SPDX-License-Identifier: Apache-2.0 # Copyright (c) OWASP Foundation. All Rights Reserved. + +"""this package contains polyfills and alike, so that all pyhton-versions support the same feature set.""" diff --git a/cyclonedx_py/_internal/utils/py_interop/glob.py b/cyclonedx_py/_internal/py_interop/glob.py similarity index 100% rename from cyclonedx_py/_internal/utils/py_interop/glob.py rename to cyclonedx_py/_internal/py_interop/glob.py diff --git a/cyclonedx_py/_internal/utils/pep639.py b/cyclonedx_py/_internal/utils/pep639.py index 7c9e484c2..7ac3e07ef 100644 --- a/cyclonedx_py/_internal/utils/pep639.py +++ b/cyclonedx_py/_internal/utils/pep639.py @@ -29,9 +29,9 @@ from cyclonedx.model import AttachedText, Encoding from cyclonedx.model.license import DisjunctiveLicense, LicenseAcknowledgement +from ..py_interop.glob import glob from .bytes import bytes2str from .mimetypes import guess_type -from .py_interop.glob import glob if TYPE_CHECKING: # pragma: no cover from importlib.metadata import Distribution diff --git a/tests/_data/snapshots/environment/plain_with-license-text_1.2.json.bin b/tests/_data/snapshots/environment/plain_with-license-text_1.2.json.bin index 14ac614bb..3ae0740ea 100644 --- a/tests/_data/snapshots/environment/plain_with-license-text_1.2.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-text_1.2.json.bin @@ -92,11 +92,7 @@ "licenses": [ { "license": { - "name": "declared license of 'with-license-text'", - "text": { - "content": "This is the license text of this component.\nIt is expected to be available in a SBOM.", - "contentType": "text/plain" - } + "name": "This is the license text of this component.\nIt is expected to be available in a SBOM." } } ], From 6e64c3aa2019ad4963f70da5e59f4352059a1f63 Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Tue, 8 Jul 2025 13:12:30 +0200 Subject: [PATCH 08/49] wip Signed-off-by: Jan Kowalleck --- cyclonedx_py/_internal/environment.py | 13 +- .../_internal/py_interop/packagemetadata.py | 25 ++ cyclonedx_py/_internal/utils/packaging.py | 53 ++-- cyclonedx_py/_internal/utils/pep639.py | 78 +++--- ...p639-texts_with-license-pep639_1.1.xml.bin | 264 ++---------------- ...639-texts_with-license-pep639_1.2.json.bin | 60 ++-- ...p639-texts_with-license-pep639_1.2.xml.bin | 264 ++---------------- ...639-texts_with-license-pep639_1.3.json.bin | 101 +++++-- ...p639-texts_with-license-pep639_1.3.xml.bin | 102 ++++--- ...639-texts_with-license-pep639_1.4.json.bin | 101 +++++-- ...p639-texts_with-license-pep639_1.4.xml.bin | 102 ++++--- ...639-texts_with-license-pep639_1.5.json.bin | 101 +++++-- ...p639-texts_with-license-pep639_1.5.xml.bin | 102 ++++--- ...639-texts_with-license-pep639_1.6.json.bin | 116 ++++++-- ...p639-texts_with-license-pep639_1.6.xml.bin | 102 ++++--- .../pep639_with-license-pep639_1.1.xml.bin | 4 - .../pep639_with-license-pep639_1.2.json.bin | 9 - .../pep639_with-license-pep639_1.2.xml.bin | 4 - .../pep639_with-license-pep639_1.3.json.bin | 9 - .../pep639_with-license-pep639_1.3.xml.bin | 4 - .../pep639_with-license-pep639_1.4.json.bin | 9 - .../pep639_with-license-pep639_1.4.xml.bin | 4 - .../pep639_with-license-pep639_1.5.json.bin | 9 - .../pep639_with-license-pep639_1.5.xml.bin | 4 - .../pep639_with-license-pep639_1.6.json.bin | 10 - .../pep639_with-license-pep639_1.6.xml.bin | 4 - .../environment/plain_local_1.1.xml.bin | 6 - .../environment/plain_local_1.2.json.bin | 11 - .../environment/plain_local_1.2.xml.bin | 6 - .../environment/plain_local_1.3.json.bin | 11 - .../environment/plain_local_1.3.xml.bin | 6 - .../environment/plain_local_1.4.json.bin | 11 - .../environment/plain_local_1.4.xml.bin | 6 - .../environment/plain_local_1.5.json.bin | 11 - .../environment/plain_local_1.5.xml.bin | 6 - .../environment/plain_local_1.6.json.bin | 12 - .../environment/plain_local_1.6.xml.bin | 6 - .../plain_normalize-packagename_1.1.xml.bin | 4 - .../plain_normalize-packagename_1.2.json.bin | 9 - .../plain_normalize-packagename_1.2.xml.bin | 4 - .../plain_normalize-packagename_1.3.json.bin | 9 - .../plain_normalize-packagename_1.3.xml.bin | 4 - .../plain_normalize-packagename_1.4.json.bin | 9 - .../plain_normalize-packagename_1.4.xml.bin | 4 - .../plain_normalize-packagename_1.5.json.bin | 9 - .../plain_normalize-packagename_1.5.xml.bin | 4 - .../plain_normalize-packagename_1.6.json.bin | 10 - .../plain_normalize-packagename_1.6.xml.bin | 4 - .../environment/plain_with-extras_1.1.xml.bin | 36 --- .../plain_with-extras_1.2.json.bin | 81 ------ .../environment/plain_with-extras_1.2.xml.bin | 36 --- .../plain_with-extras_1.3.json.bin | 81 ------ .../environment/plain_with-extras_1.3.xml.bin | 36 --- .../plain_with-extras_1.4.json.bin | 81 ------ .../environment/plain_with-extras_1.4.xml.bin | 36 --- .../plain_with-extras_1.5.json.bin | 81 ------ .../environment/plain_with-extras_1.5.xml.bin | 36 --- .../plain_with-extras_1.6.json.bin | 90 ------ .../environment/plain_with-extras_1.6.xml.bin | 36 --- .../plain_with-license-pep639_1.1.xml.bin | 4 - .../plain_with-license-pep639_1.2.json.bin | 9 - .../plain_with-license-pep639_1.2.xml.bin | 4 - .../plain_with-license-pep639_1.3.json.bin | 9 - .../plain_with-license-pep639_1.3.xml.bin | 4 - .../plain_with-license-pep639_1.4.json.bin | 9 - .../plain_with-license-pep639_1.4.xml.bin | 4 - .../plain_with-license-pep639_1.5.json.bin | 9 - .../plain_with-license-pep639_1.5.xml.bin | 4 - .../plain_with-license-pep639_1.6.json.bin | 10 - .../plain_with-license-pep639_1.6.xml.bin | 4 - .../plain_with-license-text_1.1.xml.bin | 6 - .../plain_with-license-text_1.2.json.bin | 11 - .../plain_with-license-text_1.2.xml.bin | 6 - .../plain_with-license-text_1.3.json.bin | 11 - .../plain_with-license-text_1.3.xml.bin | 6 - .../plain_with-license-text_1.4.json.bin | 11 - .../plain_with-license-text_1.4.xml.bin | 6 - .../plain_with-license-text_1.5.json.bin | 11 - .../plain_with-license-text_1.5.xml.bin | 6 - .../plain_with-license-text_1.6.json.bin | 12 - .../plain_with-license-text_1.6.xml.bin | 6 - .../texts_with-license-pep639_1.1.xml.bin | 264 ++---------------- .../texts_with-license-pep639_1.2.json.bin | 60 ++-- .../texts_with-license-pep639_1.2.xml.bin | 264 ++---------------- .../texts_with-license-pep639_1.3.json.bin | 101 +++++-- .../texts_with-license-pep639_1.3.xml.bin | 102 ++++--- .../texts_with-license-pep639_1.4.json.bin | 101 +++++-- .../texts_with-license-pep639_1.4.xml.bin | 102 ++++--- .../texts_with-license-pep639_1.5.json.bin | 101 +++++-- .../texts_with-license-pep639_1.5.xml.bin | 102 ++++--- .../texts_with-license-pep639_1.6.json.bin | 116 ++++++-- .../texts_with-license-pep639_1.6.xml.bin | 102 ++++--- 92 files changed, 1408 insertions(+), 2615 deletions(-) create mode 100644 cyclonedx_py/_internal/py_interop/packagemetadata.py diff --git a/cyclonedx_py/_internal/environment.py b/cyclonedx_py/_internal/environment.py index 21da49e6b..0944e9f9e 100644 --- a/cyclonedx_py/_internal/environment.py +++ b/cyclonedx_py/_internal/environment.py @@ -38,7 +38,7 @@ from .utils.cdx import licenses_fixup, make_bom from .utils.packaging import metadata2extrefs, metadata2licenses, normalize_packagename from .utils.pep610 import PackageSourceArchive, PackageSourceVcs, packagesource2extref, packagesource4dist -from .utils.pep639 import dist2licenses as pep639_dist2licenses +from .utils.pep639 import dist2licenses_from_files as pep639_dist2licenses_from_files from .utils.pyproject import pyproject2component, pyproject2dependencies, pyproject_load if TYPE_CHECKING: # pragma: no cover @@ -184,13 +184,12 @@ def __add_components(self, bom: 'Bom', # region licenses lfac = LicenseFactory() - component.licenses.update(pep639_dist2licenses(dist, lfac, self._gather_license_texts, self._logger)) - if len(component.licenses) == 0: - # According to PEP 639 spec, if licenses are declared in the "new" style, - # all other license declarations MUST be ignored. - # https://peps.python.org/pep-0639/#converting-legacy-metadata - component.licenses.update(metadata2licenses(dist_meta, lfac)) + component.licenses.update(metadata2licenses(dist_meta, lfac, + gather_texts=self._gather_license_texts)) + if self._gather_license_texts: + component.licenses.update(pep639_dist2licenses_from_files(dist, lfac, logger=self._logger)) licenses_fixup(component) + del lfac # endregion licenses del dist_meta, dist_name, dist_version diff --git a/cyclonedx_py/_internal/py_interop/packagemetadata.py b/cyclonedx_py/_internal/py_interop/packagemetadata.py new file mode 100644 index 000000000..033cd1a07 --- /dev/null +++ b/cyclonedx_py/_internal/py_interop/packagemetadata.py @@ -0,0 +1,25 @@ +# This file is part of CycloneDX Python +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# Copyright (c) OWASP Foundation. All Rights Reserved. + +__all__ = ['PackageMetadata'] + +import sys + +if sys.version_info >= (3, 10): + from importlib.metadata import PackageMetadata +else: + from email.message import Message as PackageMetadata diff --git a/cyclonedx_py/_internal/utils/packaging.py b/cyclonedx_py/_internal/utils/packaging.py index 723d31e54..06aeef468 100644 --- a/cyclonedx_py/_internal/utils/packaging.py +++ b/cyclonedx_py/_internal/utils/packaging.py @@ -24,39 +24,46 @@ from cyclonedx.model.license import DisjunctiveLicense, LicenseAcknowledgement from .cdx import url_label_to_ert -from .pep621 import classifiers2licenses +from .pep621 import classifiers2licenses as pep621_classifiers2licenses +from .pep639 import dist2licenses_from_files as pep639_dist2licenses_from_files if TYPE_CHECKING: # pragma: no cover import sys + from logging import Logger from cyclonedx.factory.license import LicenseFactory from cyclonedx.model.license import License - if sys.version_info >= (3, 10): - from importlib.metadata import PackageMetadata - else: - from email.message import Message as PackageMetadata + from ..py_interop.packagemetadata import PackageMetadata -def metadata2licenses(metadata: 'PackageMetadata', lfac: 'LicenseFactory') -> Generator['License', None, None]: +def metadata2licenses(metadata: 'PackageMetadata', lfac: 'LicenseFactory', + gather_texts: bool + ) -> Generator['License', None, None]: lack = LicenseAcknowledgement.DECLARED - if 'Classifier' in metadata: - # see spec: https://packaging.python.org/en/latest/specifications/core-metadata/#classifier-multiple-use - classifiers: list[str] = metadata.get_all('Classifier') # type:ignore[assignment] - yield from classifiers2licenses(classifiers, lfac, lack) - for mlicense in set(metadata.get_all('License', ())): - # see spec: https://packaging.python.org/en/latest/specifications/core-metadata/#license - if len(mlicense) <= 0: - continue - license = lfac.make_from_string(mlicense, - license_acknowledgement=lack) - if isinstance(license, DisjunctiveLicense) and license.id is None: - # per spec, `License` is either a SPDX ID/Expression, or a license text(not name!) - yield DisjunctiveLicense(name=f"declared license of '{metadata['Name']}'", - acknowledgement=lack, - text=AttachedText(content=mlicense)) - else: - yield license + if (lexp := metadata.get('License-Expression')) is not None: + # see spec: https://peps.python.org/pep-0639/#add-license-expression-field + yield lfac.make_from_string(lexp, + license_acknowledgement=lack) + else: # per PEP630, if License-Expression exists, the deprecated declarations MUST be ignored + if 'Classifier' in metadata: + # see spec: https://packaging.python.org/en/latest/specifications/core-metadata/#classifier-multiple-use + classifiers: list[str] = metadata.get_all('Classifier') # type:ignore[assignment] + yield from pep621_classifiers2licenses(classifiers, lfac, lack) + for mlicense in set(metadata.get_all('License', ())): + # see spec: https://packaging.python.org/en/latest/specifications/core-metadata/#license + if len(mlicense) <= 0: + continue + license = lfac.make_from_string(mlicense, + license_acknowledgement=lack) + if isinstance(license, DisjunctiveLicense) and license.id is None: + if gather_texts: + # per spec, `License` is either a SPDX ID/Expression, or a license text(not name!) + yield DisjunctiveLicense(name=f"declared license of '{metadata['Name']}'", + acknowledgement=lack, + text=AttachedText(content=mlicense)) + else: + yield license def metadata2extrefs(metadata: 'PackageMetadata') -> Generator['ExternalReference', None, None]: diff --git a/cyclonedx_py/_internal/utils/pep639.py b/cyclonedx_py/_internal/utils/pep639.py index 7ac3e07ef..7c9082a19 100644 --- a/cyclonedx_py/_internal/utils/pep639.py +++ b/cyclonedx_py/_internal/utils/pep639.py @@ -40,6 +40,8 @@ from cyclonedx.factory.license import LicenseFactory from cyclonedx.model.license import License + from ..py_interop.packagemetadata import PackageMetadata + def project2licenses(project: dict[str, Any], lfac: 'LicenseFactory', gather_texts: bool, *, @@ -72,50 +74,44 @@ def project2licenses(project: dict[str, Any], lfac: 'LicenseFactory', _LICENSE_LOCATIONS = ('licenses', 'license_files', '') -def dist2licenses( +def dist2licenses_from_files( dist: 'Distribution', lfac: 'LicenseFactory', - gather_texts: bool, logger: 'Logger' ) -> Generator['License', None, None]: lack = LicenseAcknowledgement.DECLARED - metadata = dist.metadata # see https://packaging.python.org/en/latest/specifications/core-metadata/ - if (lexp := metadata['License-Expression']) is not None: - # see spec: https://peps.python.org/pep-0639/#add-license-expression-field - yield lfac.make_from_string(lexp, - license_acknowledgement=lack) - if gather_texts: - for mlfile in set(metadata.get_all('License-File', ())): - # see spec: https://peps.python.org/pep-0639/#add-license-file-field - # latest spec rev: https://discuss.python.org/t/pep-639-round-3-improving-license-clarity-with-better-package-metadata/53020 # noqa: E501 - content = None - for mlpath in _LICENSE_LOCATIONS: + metadata: 'PackageMetadata' = dist.metadata # see https://packaging.python.org/en/latest/specifications/core-metadata/ + for mlfile in set(metadata.get_all('License-File', ())): + # see spec: https://peps.python.org/pep-0639/#add-license-file-field + # latest spec rev: https://discuss.python.org/t/pep-639-round-3-improving-license-clarity-with-better-package-metadata/53020 # noqa: E501 + content = None + for mlpath in _LICENSE_LOCATIONS: + try: + content = dist.read_text(join(mlpath, mlfile)) + except UnicodeDecodeError as err: try: - content = dist.read_text(join(mlpath, mlfile)) - except UnicodeDecodeError as err: - try: - content = bytes2str(err.object) - except UnicodeDecodeError: - pass - else: - break # for-loop + content = bytes2str(err.object) + except UnicodeDecodeError: + pass else: - if content is not None: - break # for-loop - if content is None: # pragma: no cover - logger.debug('Error: failed to read license file %r for dist %r', - mlfile, metadata['Name']) - continue - encoding = None - content_type = guess_type(mlfile) or AttachedText.DEFAULT_CONTENT_TYPE - # per default, license files are human-readable texts. - if not content_type.startswith('text/'): - encoding = Encoding.BASE_64 - content = b64encode(content.encode('utf-8')).decode('ascii') - yield DisjunctiveLicense( - name=f'declared license file: {mlfile}', - acknowledgement=lack, - text=AttachedText( - content=content, - encoding=encoding, - content_type=content_type - )) + break # for-loop + else: + if content is not None: + break # for-loop + if content is None: # pragma: no cover + logger.debug('Error: failed to read license file %r for dist %r', + mlfile, metadata['Name']) + continue + encoding = None + content_type = guess_type(mlfile) or AttachedText.DEFAULT_CONTENT_TYPE + # per default, license files are human-readable texts. + if not content_type.startswith('text/'): + encoding = Encoding.BASE_64 + content = b64encode(content.encode('utf-8')).decode('ascii') + yield DisjunctiveLicense( + name=f'declared license file: {mlfile}', + acknowledgement=lack, + text=AttachedText( + content=content, + encoding=encoding, + content_type=content_type + )) diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.1.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.1.xml.bin index ca121496e..afe85637c 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.1.xml.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.1.xml.bin @@ -64,6 +64,9 @@ SOFTWARE. 4.0 Define boolean algebras, create and parse boolean expressions and create custom boolean DSL. + + BSD-2-Clause + declared license file: CHANGELOG.rst @@ -356,250 +359,7 @@ SPDX-License-Identifier: BSD-2-Clause 43.0.1 cryptography is a package which provides cryptographic recipes and primitives to Python developers. - - declared license file: LICENSE - This software is made available under the terms of *either* of the licenses -found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made -under the terms of *both* these licenses. - - - - declared license file: LICENSE.APACHE - - Apache License - Version 2.0, January 2004 - https://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - https://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - - declared license file: LICENSE.BSD - Copyright (c) Individual contributors. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. Neither the name of PyCA Cryptography nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - + Apache-2.0 OR BSD-3-Clause pkg:pypi/cryptography@43.0.1 @@ -630,6 +390,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2.4 Identify specific nodes in a JSON document (RFC 6901) + + License :: OSI Approved :: BSD License + declared license file: AUTHORS Stefan Kögl <stefan@skoegl.net> @@ -667,6 +430,10 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + declared license of 'jsonpointer' + Modified BSD License + pkg:pypi/jsonpointer@2.4 @@ -681,6 +448,9 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30.3.0 license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic. + + Apache-2.0 + declared license file: AUTHORS.rst The following organizations or individuals have contributed to this code: @@ -1150,6 +920,12 @@ https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 5.3.0 Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. + + BSD-3-Clause + + + License :: OSI Approved :: BSD License + declared license file: LICENSE.txt Copyright (c) 2004 Infrae. All rights reserved. diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.2.json.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.2.json.bin index 425b3f345..2778f52d5 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.2.json.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.2.json.bin @@ -62,6 +62,11 @@ } ], "licenses": [ + { + "license": { + "id": "BSD-2-Clause" + } + }, { "license": { "name": "declared license file: CHANGELOG.rst", @@ -127,31 +132,7 @@ ], "licenses": [ { - "license": { - "name": "declared license file: LICENSE", - "text": { - "content": "This software is made available under the terms of *either* of the licenses\nfound in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made\nunder the terms of *both* these licenses.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.APACHE", - "text": { - "content": "\n Apache License\n Version 2.0, January 2004\n https://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.BSD", - "text": { - "content": "Copyright (c) Individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of PyCA Cryptography nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" - } - } + "expression": "Apache-2.0 OR BSD-3-Clause" } ], "name": "cryptography", @@ -170,6 +151,11 @@ } ], "licenses": [ + { + "license": { + "name": "License :: OSI Approved :: BSD License" + } + }, { "license": { "name": "declared license file: AUTHORS", @@ -187,6 +173,15 @@ "contentType": "text/plain" } } + }, + { + "license": { + "name": "declared license of 'jsonpointer'", + "text": { + "content": "Modified BSD License", + "contentType": "text/plain" + } + } } ], "name": "jsonpointer", @@ -205,6 +200,11 @@ } ], "licenses": [ + { + "license": { + "id": "Apache-2.0" + } + }, { "license": { "name": "declared license file: AUTHORS.rst", @@ -272,6 +272,16 @@ } ], "licenses": [ + { + "license": { + "id": "BSD-3-Clause" + } + }, + { + "license": { + "name": "License :: OSI Approved :: BSD License" + } + }, { "license": { "name": "declared license file: LICENSE.txt", diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.2.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.2.xml.bin index ac08ad865..cf2ee36f4 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.2.xml.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.2.xml.bin @@ -86,6 +86,9 @@ SOFTWARE. 4.0 Define boolean algebras, create and parse boolean expressions and create custom boolean DSL. + + BSD-2-Clause + declared license file: CHANGELOG.rst @@ -378,250 +381,7 @@ SPDX-License-Identifier: BSD-2-Clause 43.0.1 cryptography is a package which provides cryptographic recipes and primitives to Python developers. - - declared license file: LICENSE - This software is made available under the terms of *either* of the licenses -found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made -under the terms of *both* these licenses. - - - - declared license file: LICENSE.APACHE - - Apache License - Version 2.0, January 2004 - https://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - https://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - - declared license file: LICENSE.BSD - Copyright (c) Individual contributors. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. Neither the name of PyCA Cryptography nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - + Apache-2.0 OR BSD-3-Clause pkg:pypi/cryptography@43.0.1 @@ -652,6 +412,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2.4 Identify specific nodes in a JSON document (RFC 6901) + + License :: OSI Approved :: BSD License + declared license file: AUTHORS Stefan Kögl <stefan@skoegl.net> @@ -689,6 +452,10 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + declared license of 'jsonpointer' + Modified BSD License + pkg:pypi/jsonpointer@2.4 @@ -703,6 +470,9 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30.3.0 license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic. + + Apache-2.0 + declared license file: AUTHORS.rst The following organizations or individuals have contributed to this code: @@ -1172,6 +942,12 @@ https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 5.3.0 Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. + + BSD-3-Clause + + + License :: OSI Approved :: BSD License + declared license file: LICENSE.txt Copyright (c) 2004 Infrae. All rights reserved. diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.json.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.json.bin index 48bd16b3b..488811233 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.json.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.json.bin @@ -62,6 +62,11 @@ } ], "licenses": [ + { + "license": { + "id": "BSD-2-Clause" + } + }, { "license": { "name": "declared license file: CHANGELOG.rst", @@ -98,6 +103,47 @@ { "bom-ref": "cryptography==43.0.1", "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", + "evidence": { + "licenses": [ + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + }, + { + "license": { + "name": "License :: OSI Approved :: BSD License" + } + }, + { + "license": { + "name": "declared license file: LICENSE", + "text": { + "content": "This software is made available under the terms of *either* of the licenses\nfound in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made\nunder the terms of *both* these licenses.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: LICENSE.APACHE", + "text": { + "content": "\n Apache License\n Version 2.0, January 2004\n https://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: LICENSE.BSD", + "text": { + "content": "Copyright (c) Individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of PyCA Cryptography nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", + "contentType": "text/plain" + } + } + } + ] + }, "externalReferences": [ { "comment": "from packaging metadata Project-URL: documentation", @@ -127,31 +173,7 @@ ], "licenses": [ { - "license": { - "name": "declared license file: LICENSE", - "text": { - "content": "This software is made available under the terms of *either* of the licenses\nfound in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made\nunder the terms of *both* these licenses.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.APACHE", - "text": { - "content": "\n Apache License\n Version 2.0, January 2004\n https://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.BSD", - "text": { - "content": "Copyright (c) Individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of PyCA Cryptography nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" - } - } + "expression": "Apache-2.0 OR BSD-3-Clause" } ], "name": "cryptography", @@ -170,6 +192,11 @@ } ], "licenses": [ + { + "license": { + "name": "License :: OSI Approved :: BSD License" + } + }, { "license": { "name": "declared license file: AUTHORS", @@ -187,6 +214,15 @@ "contentType": "text/plain" } } + }, + { + "license": { + "name": "declared license of 'jsonpointer'", + "text": { + "content": "Modified BSD License", + "contentType": "text/plain" + } + } } ], "name": "jsonpointer", @@ -205,6 +241,11 @@ } ], "licenses": [ + { + "license": { + "id": "Apache-2.0" + } + }, { "license": { "name": "declared license file: AUTHORS.rst", @@ -272,6 +313,16 @@ } ], "licenses": [ + { + "license": { + "id": "BSD-3-Clause" + } + }, + { + "license": { + "name": "License :: OSI Approved :: BSD License" + } + }, { "license": { "name": "declared license file: LICENSE.txt", diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.xml.bin index 3fffe77e9..f4962ed7a 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.xml.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.xml.bin @@ -90,6 +90,9 @@ SOFTWARE. 4.0 Define boolean algebras, create and parse boolean expressions and create custom boolean DSL. + + BSD-2-Clause + declared license file: CHANGELOG.rst @@ -382,16 +385,49 @@ SPDX-License-Identifier: BSD-2-Clause 43.0.1 cryptography is a package which provides cryptographic recipes and primitives to Python developers. - - declared license file: LICENSE - This software is made available under the terms of *either* of the licenses + Apache-2.0 OR BSD-3-Clause + + pkg:pypi/cryptography@43.0.1 + + + https://cryptography.io/ + from packaging metadata Project-URL: documentation + + + https://github.com/pyca/cryptography/issues + from packaging metadata Project-URL: issues + + + https://github.com/pyca/cryptography/ + from packaging metadata Project-URL: source + + + https://cryptography.io/en/latest/changelog/ + from packaging metadata Project-URL: changelog + + + https://github.com/pyca/cryptography + from packaging metadata Project-URL: homepage + + + + + + License :: OSI Approved :: Apache Software License + + + License :: OSI Approved :: BSD License + + + declared license file: LICENSE + This software is made available under the terms of *either* of the licenses found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made under the terms of *both* these licenses. - - - declared license file: LICENSE.APACHE - + + + declared license file: LICENSE.APACHE + Apache License Version 2.0, January 2004 https://www.apache.org/licenses/ @@ -594,10 +630,10 @@ under the terms of *both* these licenses. See the License for the specific language governing permissions and limitations under the License. - - - declared license file: LICENSE.BSD - Copyright (c) Individual contributors. + + + declared license file: LICENSE.BSD + Copyright (c) Individual contributors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -625,37 +661,18 @@ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - pkg:pypi/cryptography@43.0.1 - - - https://cryptography.io/ - from packaging metadata Project-URL: documentation - - - https://github.com/pyca/cryptography/issues - from packaging metadata Project-URL: issues - - - https://github.com/pyca/cryptography/ - from packaging metadata Project-URL: source - - - https://cryptography.io/en/latest/changelog/ - from packaging metadata Project-URL: changelog - - - https://github.com/pyca/cryptography - from packaging metadata Project-URL: homepage - - + + + jsonpointer 2.4 Identify specific nodes in a JSON document (RFC 6901) + + License :: OSI Approved :: BSD License + declared license file: AUTHORS Stefan Kögl <stefan@skoegl.net> @@ -693,6 +710,10 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + declared license of 'jsonpointer' + Modified BSD License + pkg:pypi/jsonpointer@2.4 @@ -707,6 +728,9 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30.3.0 license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic. + + Apache-2.0 + declared license file: AUTHORS.rst The following organizations or individuals have contributed to this code: @@ -1176,6 +1200,12 @@ https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 5.3.0 Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. + + BSD-3-Clause + + + License :: OSI Approved :: BSD License + declared license file: LICENSE.txt Copyright (c) 2004 Infrae. All rights reserved. diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.json.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.json.bin index 146984826..e4b7a92b2 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.json.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.json.bin @@ -62,6 +62,11 @@ } ], "licenses": [ + { + "license": { + "id": "BSD-2-Clause" + } + }, { "license": { "name": "declared license file: CHANGELOG.rst", @@ -98,6 +103,47 @@ { "bom-ref": "cryptography==43.0.1", "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", + "evidence": { + "licenses": [ + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + }, + { + "license": { + "name": "License :: OSI Approved :: BSD License" + } + }, + { + "license": { + "name": "declared license file: LICENSE", + "text": { + "content": "This software is made available under the terms of *either* of the licenses\nfound in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made\nunder the terms of *both* these licenses.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: LICENSE.APACHE", + "text": { + "content": "\n Apache License\n Version 2.0, January 2004\n https://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: LICENSE.BSD", + "text": { + "content": "Copyright (c) Individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of PyCA Cryptography nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", + "contentType": "text/plain" + } + } + } + ] + }, "externalReferences": [ { "comment": "from packaging metadata Project-URL: documentation", @@ -127,31 +173,7 @@ ], "licenses": [ { - "license": { - "name": "declared license file: LICENSE", - "text": { - "content": "This software is made available under the terms of *either* of the licenses\nfound in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made\nunder the terms of *both* these licenses.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.APACHE", - "text": { - "content": "\n Apache License\n Version 2.0, January 2004\n https://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.BSD", - "text": { - "content": "Copyright (c) Individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of PyCA Cryptography nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" - } - } + "expression": "Apache-2.0 OR BSD-3-Clause" } ], "name": "cryptography", @@ -170,6 +192,11 @@ } ], "licenses": [ + { + "license": { + "name": "License :: OSI Approved :: BSD License" + } + }, { "license": { "name": "declared license file: AUTHORS", @@ -187,6 +214,15 @@ "contentType": "text/plain" } } + }, + { + "license": { + "name": "declared license of 'jsonpointer'", + "text": { + "content": "Modified BSD License", + "contentType": "text/plain" + } + } } ], "name": "jsonpointer", @@ -205,6 +241,11 @@ } ], "licenses": [ + { + "license": { + "id": "Apache-2.0" + } + }, { "license": { "name": "declared license file: AUTHORS.rst", @@ -272,6 +313,16 @@ } ], "licenses": [ + { + "license": { + "id": "BSD-3-Clause" + } + }, + { + "license": { + "name": "License :: OSI Approved :: BSD License" + } + }, { "license": { "name": "declared license file: LICENSE.txt", diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.xml.bin index 3ecfa593c..bb6b58254 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.xml.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.xml.bin @@ -117,6 +117,9 @@ SOFTWARE. 4.0 Define boolean algebras, create and parse boolean expressions and create custom boolean DSL. + + BSD-2-Clause + declared license file: CHANGELOG.rst @@ -409,16 +412,49 @@ SPDX-License-Identifier: BSD-2-Clause 43.0.1 cryptography is a package which provides cryptographic recipes and primitives to Python developers. - - declared license file: LICENSE - This software is made available under the terms of *either* of the licenses + Apache-2.0 OR BSD-3-Clause + + pkg:pypi/cryptography@43.0.1 + + + https://cryptography.io/ + from packaging metadata Project-URL: documentation + + + https://github.com/pyca/cryptography/issues + from packaging metadata Project-URL: issues + + + https://github.com/pyca/cryptography/ + from packaging metadata Project-URL: source + + + https://cryptography.io/en/latest/changelog/ + from packaging metadata Project-URL: changelog + + + https://github.com/pyca/cryptography + from packaging metadata Project-URL: homepage + + + + + + License :: OSI Approved :: Apache Software License + + + License :: OSI Approved :: BSD License + + + declared license file: LICENSE + This software is made available under the terms of *either* of the licenses found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made under the terms of *both* these licenses. - - - declared license file: LICENSE.APACHE - + + + declared license file: LICENSE.APACHE + Apache License Version 2.0, January 2004 https://www.apache.org/licenses/ @@ -621,10 +657,10 @@ under the terms of *both* these licenses. See the License for the specific language governing permissions and limitations under the License. - - - declared license file: LICENSE.BSD - Copyright (c) Individual contributors. + + + declared license file: LICENSE.BSD + Copyright (c) Individual contributors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -652,37 +688,18 @@ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - pkg:pypi/cryptography@43.0.1 - - - https://cryptography.io/ - from packaging metadata Project-URL: documentation - - - https://github.com/pyca/cryptography/issues - from packaging metadata Project-URL: issues - - - https://github.com/pyca/cryptography/ - from packaging metadata Project-URL: source - - - https://cryptography.io/en/latest/changelog/ - from packaging metadata Project-URL: changelog - - - https://github.com/pyca/cryptography - from packaging metadata Project-URL: homepage - - + + + jsonpointer 2.4 Identify specific nodes in a JSON document (RFC 6901) + + License :: OSI Approved :: BSD License + declared license file: AUTHORS Stefan Kögl <stefan@skoegl.net> @@ -720,6 +737,10 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + declared license of 'jsonpointer' + Modified BSD License + pkg:pypi/jsonpointer@2.4 @@ -734,6 +755,9 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30.3.0 license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic. + + Apache-2.0 + declared license file: AUTHORS.rst The following organizations or individuals have contributed to this code: @@ -1203,6 +1227,12 @@ https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 5.3.0 Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. + + BSD-3-Clause + + + License :: OSI Approved :: BSD License + declared license file: LICENSE.txt Copyright (c) 2004 Infrae. All rights reserved. diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.json.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.json.bin index 697af8ee8..feaf0d7ba 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.json.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.json.bin @@ -62,6 +62,11 @@ } ], "licenses": [ + { + "license": { + "id": "BSD-2-Clause" + } + }, { "license": { "name": "declared license file: CHANGELOG.rst", @@ -98,6 +103,47 @@ { "bom-ref": "cryptography==43.0.1", "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", + "evidence": { + "licenses": [ + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + }, + { + "license": { + "name": "License :: OSI Approved :: BSD License" + } + }, + { + "license": { + "name": "declared license file: LICENSE", + "text": { + "content": "This software is made available under the terms of *either* of the licenses\nfound in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made\nunder the terms of *both* these licenses.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: LICENSE.APACHE", + "text": { + "content": "\n Apache License\n Version 2.0, January 2004\n https://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: LICENSE.BSD", + "text": { + "content": "Copyright (c) Individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of PyCA Cryptography nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", + "contentType": "text/plain" + } + } + } + ] + }, "externalReferences": [ { "comment": "from packaging metadata Project-URL: documentation", @@ -127,31 +173,7 @@ ], "licenses": [ { - "license": { - "name": "declared license file: LICENSE", - "text": { - "content": "This software is made available under the terms of *either* of the licenses\nfound in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made\nunder the terms of *both* these licenses.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.APACHE", - "text": { - "content": "\n Apache License\n Version 2.0, January 2004\n https://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.BSD", - "text": { - "content": "Copyright (c) Individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of PyCA Cryptography nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" - } - } + "expression": "Apache-2.0 OR BSD-3-Clause" } ], "name": "cryptography", @@ -170,6 +192,11 @@ } ], "licenses": [ + { + "license": { + "name": "License :: OSI Approved :: BSD License" + } + }, { "license": { "name": "declared license file: AUTHORS", @@ -187,6 +214,15 @@ "contentType": "text/plain" } } + }, + { + "license": { + "name": "declared license of 'jsonpointer'", + "text": { + "content": "Modified BSD License", + "contentType": "text/plain" + } + } } ], "name": "jsonpointer", @@ -205,6 +241,11 @@ } ], "licenses": [ + { + "license": { + "id": "Apache-2.0" + } + }, { "license": { "name": "declared license file: AUTHORS.rst", @@ -272,6 +313,16 @@ } ], "licenses": [ + { + "license": { + "id": "BSD-3-Clause" + } + }, + { + "license": { + "name": "License :: OSI Approved :: BSD License" + } + }, { "license": { "name": "declared license file: LICENSE.txt", diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.xml.bin index 1d2faeddb..e61bd7e0a 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.xml.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.xml.bin @@ -127,6 +127,9 @@ SOFTWARE. 4.0 Define boolean algebras, create and parse boolean expressions and create custom boolean DSL. + + BSD-2-Clause + declared license file: CHANGELOG.rst @@ -419,16 +422,49 @@ SPDX-License-Identifier: BSD-2-Clause 43.0.1 cryptography is a package which provides cryptographic recipes and primitives to Python developers. - - declared license file: LICENSE - This software is made available under the terms of *either* of the licenses + Apache-2.0 OR BSD-3-Clause + + pkg:pypi/cryptography@43.0.1 + + + https://cryptography.io/ + from packaging metadata Project-URL: documentation + + + https://github.com/pyca/cryptography/issues + from packaging metadata Project-URL: issues + + + https://github.com/pyca/cryptography/ + from packaging metadata Project-URL: source + + + https://cryptography.io/en/latest/changelog/ + from packaging metadata Project-URL: changelog + + + https://github.com/pyca/cryptography + from packaging metadata Project-URL: homepage + + + + + + License :: OSI Approved :: Apache Software License + + + License :: OSI Approved :: BSD License + + + declared license file: LICENSE + This software is made available under the terms of *either* of the licenses found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made under the terms of *both* these licenses. - - - declared license file: LICENSE.APACHE - + + + declared license file: LICENSE.APACHE + Apache License Version 2.0, January 2004 https://www.apache.org/licenses/ @@ -631,10 +667,10 @@ under the terms of *both* these licenses. See the License for the specific language governing permissions and limitations under the License. - - - declared license file: LICENSE.BSD - Copyright (c) Individual contributors. + + + declared license file: LICENSE.BSD + Copyright (c) Individual contributors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -662,37 +698,18 @@ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - pkg:pypi/cryptography@43.0.1 - - - https://cryptography.io/ - from packaging metadata Project-URL: documentation - - - https://github.com/pyca/cryptography/issues - from packaging metadata Project-URL: issues - - - https://github.com/pyca/cryptography/ - from packaging metadata Project-URL: source - - - https://cryptography.io/en/latest/changelog/ - from packaging metadata Project-URL: changelog - - - https://github.com/pyca/cryptography - from packaging metadata Project-URL: homepage - - + + + jsonpointer 2.4 Identify specific nodes in a JSON document (RFC 6901) + + License :: OSI Approved :: BSD License + declared license file: AUTHORS Stefan Kögl <stefan@skoegl.net> @@ -730,6 +747,10 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + declared license of 'jsonpointer' + Modified BSD License + pkg:pypi/jsonpointer@2.4 @@ -744,6 +765,9 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30.3.0 license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic. + + Apache-2.0 + declared license file: AUTHORS.rst The following organizations or individuals have contributed to this code: @@ -1213,6 +1237,12 @@ https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 5.3.0 Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. + + BSD-3-Clause + + + License :: OSI Approved :: BSD License + declared license file: LICENSE.txt Copyright (c) 2004 Infrae. All rights reserved. diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.json.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.json.bin index 5f8a14482..694ba3536 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.json.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.json.bin @@ -64,6 +64,12 @@ } ], "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "BSD-2-Clause" + } + }, { "license": { "acknowledgement": "declared", @@ -103,6 +109,52 @@ { "bom-ref": "cryptography==43.0.1", "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", + "evidence": { + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: BSD License" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: LICENSE", + "text": { + "content": "This software is made available under the terms of *either* of the licenses\nfound in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made\nunder the terms of *both* these licenses.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: LICENSE.APACHE", + "text": { + "content": "\n Apache License\n Version 2.0, January 2004\n https://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: LICENSE.BSD", + "text": { + "content": "Copyright (c) Individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of PyCA Cryptography nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", + "contentType": "text/plain" + } + } + } + ] + }, "externalReferences": [ { "comment": "from packaging metadata Project-URL: documentation", @@ -132,34 +184,8 @@ ], "licenses": [ { - "license": { - "acknowledgement": "declared", - "name": "declared license file: LICENSE", - "text": { - "content": "This software is made available under the terms of *either* of the licenses\nfound in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made\nunder the terms of *both* these licenses.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: LICENSE.APACHE", - "text": { - "content": "\n Apache License\n Version 2.0, January 2004\n https://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: LICENSE.BSD", - "text": { - "content": "Copyright (c) Individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of PyCA Cryptography nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" - } - } + "acknowledgement": "declared", + "expression": "Apache-2.0 OR BSD-3-Clause" } ], "name": "cryptography", @@ -178,6 +204,12 @@ } ], "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: BSD License" + } + }, { "license": { "acknowledgement": "declared", @@ -197,6 +229,16 @@ "contentType": "text/plain" } } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license of 'jsonpointer'", + "text": { + "content": "Modified BSD License", + "contentType": "text/plain" + } + } } ], "name": "jsonpointer", @@ -215,6 +257,12 @@ } ], "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "Apache-2.0" + } + }, { "license": { "acknowledgement": "declared", @@ -287,6 +335,18 @@ } ], "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "BSD-3-Clause" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: BSD License" + } + }, { "license": { "acknowledgement": "declared", diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.xml.bin index 431df8f56..571cde68a 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.xml.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.xml.bin @@ -127,6 +127,9 @@ SOFTWARE. 4.0 Define boolean algebras, create and parse boolean expressions and create custom boolean DSL. + + BSD-2-Clause + declared license file: CHANGELOG.rst @@ -419,16 +422,49 @@ SPDX-License-Identifier: BSD-2-Clause 43.0.1 cryptography is a package which provides cryptographic recipes and primitives to Python developers. - - declared license file: LICENSE - This software is made available under the terms of *either* of the licenses + Apache-2.0 OR BSD-3-Clause + + pkg:pypi/cryptography@43.0.1 + + + https://cryptography.io/ + from packaging metadata Project-URL: documentation + + + https://github.com/pyca/cryptography/issues + from packaging metadata Project-URL: issues + + + https://github.com/pyca/cryptography/ + from packaging metadata Project-URL: source + + + https://cryptography.io/en/latest/changelog/ + from packaging metadata Project-URL: changelog + + + https://github.com/pyca/cryptography + from packaging metadata Project-URL: homepage + + + + + + License :: OSI Approved :: Apache Software License + + + License :: OSI Approved :: BSD License + + + declared license file: LICENSE + This software is made available under the terms of *either* of the licenses found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made under the terms of *both* these licenses. - - - declared license file: LICENSE.APACHE - + + + declared license file: LICENSE.APACHE + Apache License Version 2.0, January 2004 https://www.apache.org/licenses/ @@ -631,10 +667,10 @@ under the terms of *both* these licenses. See the License for the specific language governing permissions and limitations under the License. - - - declared license file: LICENSE.BSD - Copyright (c) Individual contributors. + + + declared license file: LICENSE.BSD + Copyright (c) Individual contributors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -662,37 +698,18 @@ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - pkg:pypi/cryptography@43.0.1 - - - https://cryptography.io/ - from packaging metadata Project-URL: documentation - - - https://github.com/pyca/cryptography/issues - from packaging metadata Project-URL: issues - - - https://github.com/pyca/cryptography/ - from packaging metadata Project-URL: source - - - https://cryptography.io/en/latest/changelog/ - from packaging metadata Project-URL: changelog - - - https://github.com/pyca/cryptography - from packaging metadata Project-URL: homepage - - + + + jsonpointer 2.4 Identify specific nodes in a JSON document (RFC 6901) + + License :: OSI Approved :: BSD License + declared license file: AUTHORS Stefan Kögl <stefan@skoegl.net> @@ -730,6 +747,10 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + declared license of 'jsonpointer' + Modified BSD License + pkg:pypi/jsonpointer@2.4 @@ -744,6 +765,9 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30.3.0 license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic. + + Apache-2.0 + declared license file: AUTHORS.rst The following organizations or individuals have contributed to this code: @@ -1213,6 +1237,12 @@ https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 5.3.0 Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. + + BSD-3-Clause + + + License :: OSI Approved :: BSD License + declared license file: LICENSE.txt Copyright (c) 2004 Infrae. All rights reserved. diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.1.xml.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.1.xml.bin index 4e48511fa..11dccab11 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.1.xml.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.1.xml.bin @@ -90,10 +90,6 @@ License :: OSI Approved :: BSD License - - declared license of 'jsonpointer' - Modified BSD License - pkg:pypi/jsonpointer@2.4 diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.2.json.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.2.json.bin index e96dc6002..6789eee25 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.2.json.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.2.json.bin @@ -119,15 +119,6 @@ "license": { "name": "License :: OSI Approved :: BSD License" } - }, - { - "license": { - "name": "declared license of 'jsonpointer'", - "text": { - "content": "Modified BSD License", - "contentType": "text/plain" - } - } } ], "name": "jsonpointer", diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.2.xml.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.2.xml.bin index dca173273..ad5f02893 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.2.xml.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.2.xml.bin @@ -112,10 +112,6 @@ License :: OSI Approved :: BSD License - - declared license of 'jsonpointer' - Modified BSD License - pkg:pypi/jsonpointer@2.4 diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.3.json.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.3.json.bin index 910b0c2a6..4c89829f0 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.3.json.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.3.json.bin @@ -133,15 +133,6 @@ "license": { "name": "License :: OSI Approved :: BSD License" } - }, - { - "license": { - "name": "declared license of 'jsonpointer'", - "text": { - "content": "Modified BSD License", - "contentType": "text/plain" - } - } } ], "name": "jsonpointer", diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.3.xml.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.3.xml.bin index c5cd4c7d4..010f686ba 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.3.xml.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.3.xml.bin @@ -126,10 +126,6 @@ License :: OSI Approved :: BSD License - - declared license of 'jsonpointer' - Modified BSD License - pkg:pypi/jsonpointer@2.4 diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.4.json.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.4.json.bin index 47ae6c772..280e8386d 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.4.json.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.4.json.bin @@ -133,15 +133,6 @@ "license": { "name": "License :: OSI Approved :: BSD License" } - }, - { - "license": { - "name": "declared license of 'jsonpointer'", - "text": { - "content": "Modified BSD License", - "contentType": "text/plain" - } - } } ], "name": "jsonpointer", diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.4.xml.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.4.xml.bin index 396965141..0406e4bb8 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.4.xml.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.4.xml.bin @@ -153,10 +153,6 @@ License :: OSI Approved :: BSD License - - declared license of 'jsonpointer' - Modified BSD License - pkg:pypi/jsonpointer@2.4 diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.5.json.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.5.json.bin index 30733e96e..f7896cf29 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.5.json.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.5.json.bin @@ -133,15 +133,6 @@ "license": { "name": "License :: OSI Approved :: BSD License" } - }, - { - "license": { - "name": "declared license of 'jsonpointer'", - "text": { - "content": "Modified BSD License", - "contentType": "text/plain" - } - } } ], "name": "jsonpointer", diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.5.xml.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.5.xml.bin index a076f9d9a..2bb3ca72e 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.5.xml.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.5.xml.bin @@ -163,10 +163,6 @@ License :: OSI Approved :: BSD License - - declared license of 'jsonpointer' - Modified BSD License - pkg:pypi/jsonpointer@2.4 diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.6.json.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.6.json.bin index 513244ac8..360286af2 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.6.json.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.6.json.bin @@ -139,16 +139,6 @@ "acknowledgement": "declared", "name": "License :: OSI Approved :: BSD License" } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license of 'jsonpointer'", - "text": { - "content": "Modified BSD License", - "contentType": "text/plain" - } - } } ], "name": "jsonpointer", diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.6.xml.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.6.xml.bin index ab3827fa7..bb74b8fba 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.6.xml.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.6.xml.bin @@ -163,10 +163,6 @@ License :: OSI Approved :: BSD License - - declared license of 'jsonpointer' - Modified BSD License - pkg:pypi/jsonpointer@2.4 diff --git a/tests/_data/snapshots/environment/plain_local_1.1.xml.bin b/tests/_data/snapshots/environment/plain_local_1.1.xml.bin index d1db27470..55b0215ef 100644 --- a/tests/_data/snapshots/environment/plain_local_1.1.xml.bin +++ b/tests/_data/snapshots/environment/plain_local_1.1.xml.bin @@ -5,12 +5,6 @@ package-a 23.42 some package A - - - declared license of 'package-a' - some license text - - file://.../tests/_data/infiles/_helpers/local_pckages/a/dist/package_a-23.42-py3-none-any.whl diff --git a/tests/_data/snapshots/environment/plain_local_1.2.json.bin b/tests/_data/snapshots/environment/plain_local_1.2.json.bin index 0a7dbfd06..0ef10e770 100644 --- a/tests/_data/snapshots/environment/plain_local_1.2.json.bin +++ b/tests/_data/snapshots/environment/plain_local_1.2.json.bin @@ -10,17 +10,6 @@ "url": "file://.../tests/_data/infiles/_helpers/local_pckages/a/dist/package_a-23.42-py3-none-any.whl" } ], - "licenses": [ - { - "license": { - "name": "declared license of 'package-a'", - "text": { - "content": "some license text", - "contentType": "text/plain" - } - } - } - ], "name": "package-a", "type": "library", "version": "23.42" diff --git a/tests/_data/snapshots/environment/plain_local_1.2.xml.bin b/tests/_data/snapshots/environment/plain_local_1.2.xml.bin index 277351d18..47171825b 100644 --- a/tests/_data/snapshots/environment/plain_local_1.2.xml.bin +++ b/tests/_data/snapshots/environment/plain_local_1.2.xml.bin @@ -24,12 +24,6 @@ package-a 23.42 some package A - - - declared license of 'package-a' - some license text - - file://.../tests/_data/infiles/_helpers/local_pckages/a/dist/package_a-23.42-py3-none-any.whl diff --git a/tests/_data/snapshots/environment/plain_local_1.3.json.bin b/tests/_data/snapshots/environment/plain_local_1.3.json.bin index efc4b3d3b..951a65e63 100644 --- a/tests/_data/snapshots/environment/plain_local_1.3.json.bin +++ b/tests/_data/snapshots/environment/plain_local_1.3.json.bin @@ -16,17 +16,6 @@ "url": "file://.../tests/_data/infiles/_helpers/local_pckages/a/dist/package_a-23.42-py3-none-any.whl" } ], - "licenses": [ - { - "license": { - "name": "declared license of 'package-a'", - "text": { - "content": "some license text", - "contentType": "text/plain" - } - } - } - ], "name": "package-a", "type": "library", "version": "23.42" diff --git a/tests/_data/snapshots/environment/plain_local_1.3.xml.bin b/tests/_data/snapshots/environment/plain_local_1.3.xml.bin index 0145c2d77..87ae56065 100644 --- a/tests/_data/snapshots/environment/plain_local_1.3.xml.bin +++ b/tests/_data/snapshots/environment/plain_local_1.3.xml.bin @@ -27,12 +27,6 @@ package-a 23.42 some package A - - - declared license of 'package-a' - some license text - - file://.../tests/_data/infiles/_helpers/local_pckages/a/dist/package_a-23.42-py3-none-any.whl diff --git a/tests/_data/snapshots/environment/plain_local_1.4.json.bin b/tests/_data/snapshots/environment/plain_local_1.4.json.bin index 51f5237bd..e638d09d9 100644 --- a/tests/_data/snapshots/environment/plain_local_1.4.json.bin +++ b/tests/_data/snapshots/environment/plain_local_1.4.json.bin @@ -16,17 +16,6 @@ "url": "file://.../tests/_data/infiles/_helpers/local_pckages/a/dist/package_a-23.42-py3-none-any.whl" } ], - "licenses": [ - { - "license": { - "name": "declared license of 'package-a'", - "text": { - "content": "some license text", - "contentType": "text/plain" - } - } - } - ], "name": "package-a", "type": "library", "version": "23.42" diff --git a/tests/_data/snapshots/environment/plain_local_1.4.xml.bin b/tests/_data/snapshots/environment/plain_local_1.4.xml.bin index 1688cf342..3f13ac541 100644 --- a/tests/_data/snapshots/environment/plain_local_1.4.xml.bin +++ b/tests/_data/snapshots/environment/plain_local_1.4.xml.bin @@ -54,12 +54,6 @@ package-a 23.42 some package A - - - declared license of 'package-a' - some license text - - file://.../tests/_data/infiles/_helpers/local_pckages/a/dist/package_a-23.42-py3-none-any.whl diff --git a/tests/_data/snapshots/environment/plain_local_1.5.json.bin b/tests/_data/snapshots/environment/plain_local_1.5.json.bin index 57915c3f7..3b03c8dab 100644 --- a/tests/_data/snapshots/environment/plain_local_1.5.json.bin +++ b/tests/_data/snapshots/environment/plain_local_1.5.json.bin @@ -16,17 +16,6 @@ "url": "file://.../tests/_data/infiles/_helpers/local_pckages/a/dist/package_a-23.42-py3-none-any.whl" } ], - "licenses": [ - { - "license": { - "name": "declared license of 'package-a'", - "text": { - "content": "some license text", - "contentType": "text/plain" - } - } - } - ], "name": "package-a", "type": "library", "version": "23.42" diff --git a/tests/_data/snapshots/environment/plain_local_1.5.xml.bin b/tests/_data/snapshots/environment/plain_local_1.5.xml.bin index 47d7563e3..32415bae1 100644 --- a/tests/_data/snapshots/environment/plain_local_1.5.xml.bin +++ b/tests/_data/snapshots/environment/plain_local_1.5.xml.bin @@ -64,12 +64,6 @@ package-a 23.42 some package A - - - declared license of 'package-a' - some license text - - file://.../tests/_data/infiles/_helpers/local_pckages/a/dist/package_a-23.42-py3-none-any.whl diff --git a/tests/_data/snapshots/environment/plain_local_1.6.json.bin b/tests/_data/snapshots/environment/plain_local_1.6.json.bin index 684714a03..961cc548e 100644 --- a/tests/_data/snapshots/environment/plain_local_1.6.json.bin +++ b/tests/_data/snapshots/environment/plain_local_1.6.json.bin @@ -16,18 +16,6 @@ "url": "file://.../tests/_data/infiles/_helpers/local_pckages/a/dist/package_a-23.42-py3-none-any.whl" } ], - "licenses": [ - { - "license": { - "acknowledgement": "declared", - "name": "declared license of 'package-a'", - "text": { - "content": "some license text", - "contentType": "text/plain" - } - } - } - ], "name": "package-a", "type": "library", "version": "23.42" diff --git a/tests/_data/snapshots/environment/plain_local_1.6.xml.bin b/tests/_data/snapshots/environment/plain_local_1.6.xml.bin index 45fad07d9..6cd6b336e 100644 --- a/tests/_data/snapshots/environment/plain_local_1.6.xml.bin +++ b/tests/_data/snapshots/environment/plain_local_1.6.xml.bin @@ -64,12 +64,6 @@ package-a 23.42 some package A - - - declared license of 'package-a' - some license text - - file://.../tests/_data/infiles/_helpers/local_pckages/a/dist/package_a-23.42-py3-none-any.whl diff --git a/tests/_data/snapshots/environment/plain_normalize-packagename_1.1.xml.bin b/tests/_data/snapshots/environment/plain_normalize-packagename_1.1.xml.bin index b93650a85..913e43499 100644 --- a/tests/_data/snapshots/environment/plain_normalize-packagename_1.1.xml.bin +++ b/tests/_data/snapshots/environment/plain_normalize-packagename_1.1.xml.bin @@ -9,10 +9,6 @@ MIT - - declared license of 'ruamel.yaml' - MIT license - pkg:pypi/ruamel.yaml@0.18.5 diff --git a/tests/_data/snapshots/environment/plain_normalize-packagename_1.2.json.bin b/tests/_data/snapshots/environment/plain_normalize-packagename_1.2.json.bin index d38fa0af1..a225a2802 100644 --- a/tests/_data/snapshots/environment/plain_normalize-packagename_1.2.json.bin +++ b/tests/_data/snapshots/environment/plain_normalize-packagename_1.2.json.bin @@ -30,15 +30,6 @@ "license": { "id": "MIT" } - }, - { - "license": { - "name": "declared license of 'ruamel.yaml'", - "text": { - "content": "MIT license", - "contentType": "text/plain" - } - } } ], "name": "ruamel.yaml", diff --git a/tests/_data/snapshots/environment/plain_normalize-packagename_1.2.xml.bin b/tests/_data/snapshots/environment/plain_normalize-packagename_1.2.xml.bin index dd132f329..a1961673d 100644 --- a/tests/_data/snapshots/environment/plain_normalize-packagename_1.2.xml.bin +++ b/tests/_data/snapshots/environment/plain_normalize-packagename_1.2.xml.bin @@ -28,10 +28,6 @@ MIT - - declared license of 'ruamel.yaml' - MIT license - pkg:pypi/ruamel.yaml@0.18.5 diff --git a/tests/_data/snapshots/environment/plain_normalize-packagename_1.3.json.bin b/tests/_data/snapshots/environment/plain_normalize-packagename_1.3.json.bin index cdc37eb67..524ad20bd 100644 --- a/tests/_data/snapshots/environment/plain_normalize-packagename_1.3.json.bin +++ b/tests/_data/snapshots/environment/plain_normalize-packagename_1.3.json.bin @@ -30,15 +30,6 @@ "license": { "id": "MIT" } - }, - { - "license": { - "name": "declared license of 'ruamel.yaml'", - "text": { - "content": "MIT license", - "contentType": "text/plain" - } - } } ], "name": "ruamel.yaml", diff --git a/tests/_data/snapshots/environment/plain_normalize-packagename_1.3.xml.bin b/tests/_data/snapshots/environment/plain_normalize-packagename_1.3.xml.bin index 42e56d305..9a6cc0b2d 100644 --- a/tests/_data/snapshots/environment/plain_normalize-packagename_1.3.xml.bin +++ b/tests/_data/snapshots/environment/plain_normalize-packagename_1.3.xml.bin @@ -31,10 +31,6 @@ MIT - - declared license of 'ruamel.yaml' - MIT license - pkg:pypi/ruamel.yaml@0.18.5 diff --git a/tests/_data/snapshots/environment/plain_normalize-packagename_1.4.json.bin b/tests/_data/snapshots/environment/plain_normalize-packagename_1.4.json.bin index 43250e66c..036cd6509 100644 --- a/tests/_data/snapshots/environment/plain_normalize-packagename_1.4.json.bin +++ b/tests/_data/snapshots/environment/plain_normalize-packagename_1.4.json.bin @@ -30,15 +30,6 @@ "license": { "id": "MIT" } - }, - { - "license": { - "name": "declared license of 'ruamel.yaml'", - "text": { - "content": "MIT license", - "contentType": "text/plain" - } - } } ], "name": "ruamel.yaml", diff --git a/tests/_data/snapshots/environment/plain_normalize-packagename_1.4.xml.bin b/tests/_data/snapshots/environment/plain_normalize-packagename_1.4.xml.bin index 201e0bff7..545b48684 100644 --- a/tests/_data/snapshots/environment/plain_normalize-packagename_1.4.xml.bin +++ b/tests/_data/snapshots/environment/plain_normalize-packagename_1.4.xml.bin @@ -58,10 +58,6 @@ MIT - - declared license of 'ruamel.yaml' - MIT license - pkg:pypi/ruamel.yaml@0.18.5 diff --git a/tests/_data/snapshots/environment/plain_normalize-packagename_1.5.json.bin b/tests/_data/snapshots/environment/plain_normalize-packagename_1.5.json.bin index e08c89fa1..5a0fb10bd 100644 --- a/tests/_data/snapshots/environment/plain_normalize-packagename_1.5.json.bin +++ b/tests/_data/snapshots/environment/plain_normalize-packagename_1.5.json.bin @@ -30,15 +30,6 @@ "license": { "id": "MIT" } - }, - { - "license": { - "name": "declared license of 'ruamel.yaml'", - "text": { - "content": "MIT license", - "contentType": "text/plain" - } - } } ], "name": "ruamel.yaml", diff --git a/tests/_data/snapshots/environment/plain_normalize-packagename_1.5.xml.bin b/tests/_data/snapshots/environment/plain_normalize-packagename_1.5.xml.bin index 9820effdd..51adc4aa7 100644 --- a/tests/_data/snapshots/environment/plain_normalize-packagename_1.5.xml.bin +++ b/tests/_data/snapshots/environment/plain_normalize-packagename_1.5.xml.bin @@ -68,10 +68,6 @@ MIT - - declared license of 'ruamel.yaml' - MIT license - pkg:pypi/ruamel.yaml@0.18.5 diff --git a/tests/_data/snapshots/environment/plain_normalize-packagename_1.6.json.bin b/tests/_data/snapshots/environment/plain_normalize-packagename_1.6.json.bin index 5b77848a4..2b716f80c 100644 --- a/tests/_data/snapshots/environment/plain_normalize-packagename_1.6.json.bin +++ b/tests/_data/snapshots/environment/plain_normalize-packagename_1.6.json.bin @@ -31,16 +31,6 @@ "acknowledgement": "declared", "id": "MIT" } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license of 'ruamel.yaml'", - "text": { - "content": "MIT license", - "contentType": "text/plain" - } - } } ], "name": "ruamel.yaml", diff --git a/tests/_data/snapshots/environment/plain_normalize-packagename_1.6.xml.bin b/tests/_data/snapshots/environment/plain_normalize-packagename_1.6.xml.bin index adb0ca3e6..27360cf0b 100644 --- a/tests/_data/snapshots/environment/plain_normalize-packagename_1.6.xml.bin +++ b/tests/_data/snapshots/environment/plain_normalize-packagename_1.6.xml.bin @@ -68,10 +68,6 @@ MIT - - declared license of 'ruamel.yaml' - MIT license - pkg:pypi/ruamel.yaml@0.18.5 diff --git a/tests/_data/snapshots/environment/plain_with-extras_1.1.xml.bin b/tests/_data/snapshots/environment/plain_with-extras_1.1.xml.bin index bb4a0dd06..d8c26272c 100644 --- a/tests/_data/snapshots/environment/plain_with-extras_1.1.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-extras_1.1.xml.bin @@ -120,10 +120,6 @@ Python-2.0 - - declared license of 'defusedxml' - PSFL - pkg:pypi/defusedxml@0.7.1 @@ -145,10 +141,6 @@ License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0) - - declared license of 'fqdn' - MPL 2.0 - pkg:pypi/fqdn@1.5.1 @@ -208,10 +200,6 @@ ISC - - declared license of 'isoduration' - UNKNOWN - pkg:pypi/isoduration@20.11.0 @@ -241,10 +229,6 @@ License :: OSI Approved :: BSD License - - declared license of 'jsonpointer' - Modified BSD License - pkg:pypi/jsonpointer@3.0.0 @@ -446,10 +430,6 @@ License :: OSI Approved :: BSD License - - declared license of 'python-dateutil' - Dual License - pkg:pypi/python-dateutil@2.9.0.post0 @@ -516,10 +496,6 @@ MIT - - declared license of 'rfc3339-validator' - MIT license - pkg:pypi/rfc3339-validator@0.1.4 @@ -537,10 +513,6 @@ GPL-3.0-or-later - - declared license of 'rfc3987' - GNU GPLv3+ - pkg:pypi/rfc3987@1.3.8 @@ -616,10 +588,6 @@ License :: OSI Approved :: Apache Software License - - declared license of 'sortedcontainers' - Apache 2.0 - pkg:pypi/sortedcontainers@2.4.0 @@ -673,10 +641,6 @@ MIT - - declared license of 'uri-template' - MIT License - pkg:pypi/uri-template@1.3.0 diff --git a/tests/_data/snapshots/environment/plain_with-extras_1.2.json.bin b/tests/_data/snapshots/environment/plain_with-extras_1.2.json.bin index a579be150..dae67ce2e 100644 --- a/tests/_data/snapshots/environment/plain_with-extras_1.2.json.bin +++ b/tests/_data/snapshots/environment/plain_with-extras_1.2.json.bin @@ -163,15 +163,6 @@ "license": { "id": "Python-2.0" } - }, - { - "license": { - "name": "declared license of 'defusedxml'", - "text": { - "content": "PSFL", - "contentType": "text/plain" - } - } } ], "name": "defusedxml", @@ -194,15 +185,6 @@ "license": { "name": "License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)" } - }, - { - "license": { - "name": "declared license of 'fqdn'", - "text": { - "content": "MPL 2.0", - "contentType": "text/plain" - } - } } ], "name": "fqdn", @@ -294,15 +276,6 @@ "license": { "id": "ISC" } - }, - { - "license": { - "name": "declared license of 'isoduration'", - "text": { - "content": "UNKNOWN", - "contentType": "text/plain" - } - } } ], "name": "isoduration", @@ -325,15 +298,6 @@ "license": { "name": "License :: OSI Approved :: BSD License" } - }, - { - "license": { - "name": "declared license of 'jsonpointer'", - "text": { - "content": "Modified BSD License", - "contentType": "text/plain" - } - } } ], "name": "jsonpointer", @@ -605,15 +569,6 @@ "license": { "name": "License :: OSI Approved :: BSD License" } - }, - { - "license": { - "name": "declared license of 'python-dateutil'", - "text": { - "content": "Dual License", - "contentType": "text/plain" - } - } } ], "name": "python-dateutil", @@ -688,15 +643,6 @@ "license": { "id": "MIT" } - }, - { - "license": { - "name": "declared license of 'rfc3339-validator'", - "text": { - "content": "MIT license", - "contentType": "text/plain" - } - } } ], "name": "rfc3339-validator", @@ -724,15 +670,6 @@ "license": { "id": "GPL-3.0-or-later" } - }, - { - "license": { - "name": "declared license of 'rfc3987'", - "text": { - "content": "GNU GPLv3+", - "contentType": "text/plain" - } - } } ], "name": "rfc3987", @@ -824,15 +761,6 @@ "license": { "name": "License :: OSI Approved :: Apache Software License" } - }, - { - "license": { - "name": "declared license of 'sortedcontainers'", - "text": { - "content": "Apache 2.0", - "contentType": "text/plain" - } - } } ], "name": "sortedcontainers", @@ -902,15 +830,6 @@ "license": { "id": "MIT" } - }, - { - "license": { - "name": "declared license of 'uri-template'", - "text": { - "content": "MIT License", - "contentType": "text/plain" - } - } } ], "name": "uri-template", diff --git a/tests/_data/snapshots/environment/plain_with-extras_1.2.xml.bin b/tests/_data/snapshots/environment/plain_with-extras_1.2.xml.bin index 8486b18a4..848bffce3 100644 --- a/tests/_data/snapshots/environment/plain_with-extras_1.2.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-extras_1.2.xml.bin @@ -139,10 +139,6 @@ Python-2.0 - - declared license of 'defusedxml' - PSFL - pkg:pypi/defusedxml@0.7.1 @@ -164,10 +160,6 @@ License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0) - - declared license of 'fqdn' - MPL 2.0 - pkg:pypi/fqdn@1.5.1 @@ -227,10 +219,6 @@ ISC - - declared license of 'isoduration' - UNKNOWN - pkg:pypi/isoduration@20.11.0 @@ -260,10 +248,6 @@ License :: OSI Approved :: BSD License - - declared license of 'jsonpointer' - Modified BSD License - pkg:pypi/jsonpointer@3.0.0 @@ -465,10 +449,6 @@ License :: OSI Approved :: BSD License - - declared license of 'python-dateutil' - Dual License - pkg:pypi/python-dateutil@2.9.0.post0 @@ -535,10 +515,6 @@ MIT - - declared license of 'rfc3339-validator' - MIT license - pkg:pypi/rfc3339-validator@0.1.4 @@ -556,10 +532,6 @@ GPL-3.0-or-later - - declared license of 'rfc3987' - GNU GPLv3+ - pkg:pypi/rfc3987@1.3.8 @@ -635,10 +607,6 @@ License :: OSI Approved :: Apache Software License - - declared license of 'sortedcontainers' - Apache 2.0 - pkg:pypi/sortedcontainers@2.4.0 @@ -692,10 +660,6 @@ MIT - - declared license of 'uri-template' - MIT License - pkg:pypi/uri-template@1.3.0 diff --git a/tests/_data/snapshots/environment/plain_with-extras_1.3.json.bin b/tests/_data/snapshots/environment/plain_with-extras_1.3.json.bin index f66d4161e..58dd4b900 100644 --- a/tests/_data/snapshots/environment/plain_with-extras_1.3.json.bin +++ b/tests/_data/snapshots/environment/plain_with-extras_1.3.json.bin @@ -169,15 +169,6 @@ "license": { "id": "Python-2.0" } - }, - { - "license": { - "name": "declared license of 'defusedxml'", - "text": { - "content": "PSFL", - "contentType": "text/plain" - } - } } ], "name": "defusedxml", @@ -200,15 +191,6 @@ "license": { "name": "License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)" } - }, - { - "license": { - "name": "declared license of 'fqdn'", - "text": { - "content": "MPL 2.0", - "contentType": "text/plain" - } - } } ], "name": "fqdn", @@ -300,15 +282,6 @@ "license": { "id": "ISC" } - }, - { - "license": { - "name": "declared license of 'isoduration'", - "text": { - "content": "UNKNOWN", - "contentType": "text/plain" - } - } } ], "name": "isoduration", @@ -331,15 +304,6 @@ "license": { "name": "License :: OSI Approved :: BSD License" } - }, - { - "license": { - "name": "declared license of 'jsonpointer'", - "text": { - "content": "Modified BSD License", - "contentType": "text/plain" - } - } } ], "name": "jsonpointer", @@ -617,15 +581,6 @@ "license": { "name": "License :: OSI Approved :: BSD License" } - }, - { - "license": { - "name": "declared license of 'python-dateutil'", - "text": { - "content": "Dual License", - "contentType": "text/plain" - } - } } ], "name": "python-dateutil", @@ -700,15 +655,6 @@ "license": { "id": "MIT" } - }, - { - "license": { - "name": "declared license of 'rfc3339-validator'", - "text": { - "content": "MIT license", - "contentType": "text/plain" - } - } } ], "name": "rfc3339-validator", @@ -736,15 +682,6 @@ "license": { "id": "GPL-3.0-or-later" } - }, - { - "license": { - "name": "declared license of 'rfc3987'", - "text": { - "content": "GNU GPLv3+", - "contentType": "text/plain" - } - } } ], "name": "rfc3987", @@ -836,15 +773,6 @@ "license": { "name": "License :: OSI Approved :: Apache Software License" } - }, - { - "license": { - "name": "declared license of 'sortedcontainers'", - "text": { - "content": "Apache 2.0", - "contentType": "text/plain" - } - } } ], "name": "sortedcontainers", @@ -914,15 +842,6 @@ "license": { "id": "MIT" } - }, - { - "license": { - "name": "declared license of 'uri-template'", - "text": { - "content": "MIT License", - "contentType": "text/plain" - } - } } ], "name": "uri-template", diff --git a/tests/_data/snapshots/environment/plain_with-extras_1.3.xml.bin b/tests/_data/snapshots/environment/plain_with-extras_1.3.xml.bin index cc40e9bd9..4f7eb1af8 100644 --- a/tests/_data/snapshots/environment/plain_with-extras_1.3.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-extras_1.3.xml.bin @@ -145,10 +145,6 @@ Python-2.0 - - declared license of 'defusedxml' - PSFL - pkg:pypi/defusedxml@0.7.1 @@ -170,10 +166,6 @@ License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0) - - declared license of 'fqdn' - MPL 2.0 - pkg:pypi/fqdn@1.5.1 @@ -233,10 +225,6 @@ ISC - - declared license of 'isoduration' - UNKNOWN - pkg:pypi/isoduration@20.11.0 @@ -266,10 +254,6 @@ License :: OSI Approved :: BSD License - - declared license of 'jsonpointer' - Modified BSD License - pkg:pypi/jsonpointer@3.0.0 @@ -474,10 +458,6 @@ License :: OSI Approved :: BSD License - - declared license of 'python-dateutil' - Dual License - pkg:pypi/python-dateutil@2.9.0.post0 @@ -544,10 +524,6 @@ MIT - - declared license of 'rfc3339-validator' - MIT license - pkg:pypi/rfc3339-validator@0.1.4 @@ -565,10 +541,6 @@ GPL-3.0-or-later - - declared license of 'rfc3987' - GNU GPLv3+ - pkg:pypi/rfc3987@1.3.8 @@ -644,10 +616,6 @@ License :: OSI Approved :: Apache Software License - - declared license of 'sortedcontainers' - Apache 2.0 - pkg:pypi/sortedcontainers@2.4.0 @@ -701,10 +669,6 @@ MIT - - declared license of 'uri-template' - MIT License - pkg:pypi/uri-template@1.3.0 diff --git a/tests/_data/snapshots/environment/plain_with-extras_1.4.json.bin b/tests/_data/snapshots/environment/plain_with-extras_1.4.json.bin index f8768d791..e01cccf45 100644 --- a/tests/_data/snapshots/environment/plain_with-extras_1.4.json.bin +++ b/tests/_data/snapshots/environment/plain_with-extras_1.4.json.bin @@ -169,15 +169,6 @@ "license": { "id": "Python-2.0" } - }, - { - "license": { - "name": "declared license of 'defusedxml'", - "text": { - "content": "PSFL", - "contentType": "text/plain" - } - } } ], "name": "defusedxml", @@ -200,15 +191,6 @@ "license": { "name": "License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)" } - }, - { - "license": { - "name": "declared license of 'fqdn'", - "text": { - "content": "MPL 2.0", - "contentType": "text/plain" - } - } } ], "name": "fqdn", @@ -300,15 +282,6 @@ "license": { "id": "ISC" } - }, - { - "license": { - "name": "declared license of 'isoduration'", - "text": { - "content": "UNKNOWN", - "contentType": "text/plain" - } - } } ], "name": "isoduration", @@ -331,15 +304,6 @@ "license": { "name": "License :: OSI Approved :: BSD License" } - }, - { - "license": { - "name": "declared license of 'jsonpointer'", - "text": { - "content": "Modified BSD License", - "contentType": "text/plain" - } - } } ], "name": "jsonpointer", @@ -617,15 +581,6 @@ "license": { "name": "License :: OSI Approved :: BSD License" } - }, - { - "license": { - "name": "declared license of 'python-dateutil'", - "text": { - "content": "Dual License", - "contentType": "text/plain" - } - } } ], "name": "python-dateutil", @@ -700,15 +655,6 @@ "license": { "id": "MIT" } - }, - { - "license": { - "name": "declared license of 'rfc3339-validator'", - "text": { - "content": "MIT license", - "contentType": "text/plain" - } - } } ], "name": "rfc3339-validator", @@ -736,15 +682,6 @@ "license": { "id": "GPL-3.0-or-later" } - }, - { - "license": { - "name": "declared license of 'rfc3987'", - "text": { - "content": "GNU GPLv3+", - "contentType": "text/plain" - } - } } ], "name": "rfc3987", @@ -836,15 +773,6 @@ "license": { "name": "License :: OSI Approved :: Apache Software License" } - }, - { - "license": { - "name": "declared license of 'sortedcontainers'", - "text": { - "content": "Apache 2.0", - "contentType": "text/plain" - } - } } ], "name": "sortedcontainers", @@ -914,15 +842,6 @@ "license": { "id": "MIT" } - }, - { - "license": { - "name": "declared license of 'uri-template'", - "text": { - "content": "MIT License", - "contentType": "text/plain" - } - } } ], "name": "uri-template", diff --git a/tests/_data/snapshots/environment/plain_with-extras_1.4.xml.bin b/tests/_data/snapshots/environment/plain_with-extras_1.4.xml.bin index ab0774ad2..d6f2a8ec3 100644 --- a/tests/_data/snapshots/environment/plain_with-extras_1.4.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-extras_1.4.xml.bin @@ -172,10 +172,6 @@ Python-2.0 - - declared license of 'defusedxml' - PSFL - pkg:pypi/defusedxml@0.7.1 @@ -197,10 +193,6 @@ License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0) - - declared license of 'fqdn' - MPL 2.0 - pkg:pypi/fqdn@1.5.1 @@ -260,10 +252,6 @@ ISC - - declared license of 'isoduration' - UNKNOWN - pkg:pypi/isoduration@20.11.0 @@ -293,10 +281,6 @@ License :: OSI Approved :: BSD License - - declared license of 'jsonpointer' - Modified BSD License - pkg:pypi/jsonpointer@3.0.0 @@ -501,10 +485,6 @@ License :: OSI Approved :: BSD License - - declared license of 'python-dateutil' - Dual License - pkg:pypi/python-dateutil@2.9.0.post0 @@ -571,10 +551,6 @@ MIT - - declared license of 'rfc3339-validator' - MIT license - pkg:pypi/rfc3339-validator@0.1.4 @@ -592,10 +568,6 @@ GPL-3.0-or-later - - declared license of 'rfc3987' - GNU GPLv3+ - pkg:pypi/rfc3987@1.3.8 @@ -671,10 +643,6 @@ License :: OSI Approved :: Apache Software License - - declared license of 'sortedcontainers' - Apache 2.0 - pkg:pypi/sortedcontainers@2.4.0 @@ -728,10 +696,6 @@ MIT - - declared license of 'uri-template' - MIT License - pkg:pypi/uri-template@1.3.0 diff --git a/tests/_data/snapshots/environment/plain_with-extras_1.5.json.bin b/tests/_data/snapshots/environment/plain_with-extras_1.5.json.bin index bb5d5efef..333b25a36 100644 --- a/tests/_data/snapshots/environment/plain_with-extras_1.5.json.bin +++ b/tests/_data/snapshots/environment/plain_with-extras_1.5.json.bin @@ -169,15 +169,6 @@ "license": { "id": "Python-2.0" } - }, - { - "license": { - "name": "declared license of 'defusedxml'", - "text": { - "content": "PSFL", - "contentType": "text/plain" - } - } } ], "name": "defusedxml", @@ -200,15 +191,6 @@ "license": { "name": "License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)" } - }, - { - "license": { - "name": "declared license of 'fqdn'", - "text": { - "content": "MPL 2.0", - "contentType": "text/plain" - } - } } ], "name": "fqdn", @@ -300,15 +282,6 @@ "license": { "id": "ISC" } - }, - { - "license": { - "name": "declared license of 'isoduration'", - "text": { - "content": "UNKNOWN", - "contentType": "text/plain" - } - } } ], "name": "isoduration", @@ -331,15 +304,6 @@ "license": { "name": "License :: OSI Approved :: BSD License" } - }, - { - "license": { - "name": "declared license of 'jsonpointer'", - "text": { - "content": "Modified BSD License", - "contentType": "text/plain" - } - } } ], "name": "jsonpointer", @@ -617,15 +581,6 @@ "license": { "name": "License :: OSI Approved :: BSD License" } - }, - { - "license": { - "name": "declared license of 'python-dateutil'", - "text": { - "content": "Dual License", - "contentType": "text/plain" - } - } } ], "name": "python-dateutil", @@ -700,15 +655,6 @@ "license": { "id": "MIT" } - }, - { - "license": { - "name": "declared license of 'rfc3339-validator'", - "text": { - "content": "MIT license", - "contentType": "text/plain" - } - } } ], "name": "rfc3339-validator", @@ -736,15 +682,6 @@ "license": { "id": "GPL-3.0-or-later" } - }, - { - "license": { - "name": "declared license of 'rfc3987'", - "text": { - "content": "GNU GPLv3+", - "contentType": "text/plain" - } - } } ], "name": "rfc3987", @@ -836,15 +773,6 @@ "license": { "name": "License :: OSI Approved :: Apache Software License" } - }, - { - "license": { - "name": "declared license of 'sortedcontainers'", - "text": { - "content": "Apache 2.0", - "contentType": "text/plain" - } - } } ], "name": "sortedcontainers", @@ -914,15 +842,6 @@ "license": { "id": "MIT" } - }, - { - "license": { - "name": "declared license of 'uri-template'", - "text": { - "content": "MIT License", - "contentType": "text/plain" - } - } } ], "name": "uri-template", diff --git a/tests/_data/snapshots/environment/plain_with-extras_1.5.xml.bin b/tests/_data/snapshots/environment/plain_with-extras_1.5.xml.bin index 3d7a37d70..fcde2541a 100644 --- a/tests/_data/snapshots/environment/plain_with-extras_1.5.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-extras_1.5.xml.bin @@ -182,10 +182,6 @@ Python-2.0 - - declared license of 'defusedxml' - PSFL - pkg:pypi/defusedxml@0.7.1 @@ -207,10 +203,6 @@ License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0) - - declared license of 'fqdn' - MPL 2.0 - pkg:pypi/fqdn@1.5.1 @@ -270,10 +262,6 @@ ISC - - declared license of 'isoduration' - UNKNOWN - pkg:pypi/isoduration@20.11.0 @@ -303,10 +291,6 @@ License :: OSI Approved :: BSD License - - declared license of 'jsonpointer' - Modified BSD License - pkg:pypi/jsonpointer@3.0.0 @@ -511,10 +495,6 @@ License :: OSI Approved :: BSD License - - declared license of 'python-dateutil' - Dual License - pkg:pypi/python-dateutil@2.9.0.post0 @@ -581,10 +561,6 @@ MIT - - declared license of 'rfc3339-validator' - MIT license - pkg:pypi/rfc3339-validator@0.1.4 @@ -602,10 +578,6 @@ GPL-3.0-or-later - - declared license of 'rfc3987' - GNU GPLv3+ - pkg:pypi/rfc3987@1.3.8 @@ -681,10 +653,6 @@ License :: OSI Approved :: Apache Software License - - declared license of 'sortedcontainers' - Apache 2.0 - pkg:pypi/sortedcontainers@2.4.0 @@ -738,10 +706,6 @@ MIT - - declared license of 'uri-template' - MIT License - pkg:pypi/uri-template@1.3.0 diff --git a/tests/_data/snapshots/environment/plain_with-extras_1.6.json.bin b/tests/_data/snapshots/environment/plain_with-extras_1.6.json.bin index 7620bcec4..e1b260f23 100644 --- a/tests/_data/snapshots/environment/plain_with-extras_1.6.json.bin +++ b/tests/_data/snapshots/environment/plain_with-extras_1.6.json.bin @@ -175,16 +175,6 @@ "acknowledgement": "declared", "id": "Python-2.0" } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license of 'defusedxml'", - "text": { - "content": "PSFL", - "contentType": "text/plain" - } - } } ], "name": "defusedxml", @@ -208,16 +198,6 @@ "acknowledgement": "declared", "name": "License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)" } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license of 'fqdn'", - "text": { - "content": "MPL 2.0", - "contentType": "text/plain" - } - } } ], "name": "fqdn", @@ -312,16 +292,6 @@ "acknowledgement": "declared", "id": "ISC" } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license of 'isoduration'", - "text": { - "content": "UNKNOWN", - "contentType": "text/plain" - } - } } ], "name": "isoduration", @@ -345,16 +315,6 @@ "acknowledgement": "declared", "name": "License :: OSI Approved :: BSD License" } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license of 'jsonpointer'", - "text": { - "content": "Modified BSD License", - "contentType": "text/plain" - } - } } ], "name": "jsonpointer", @@ -643,16 +603,6 @@ "acknowledgement": "declared", "name": "License :: OSI Approved :: BSD License" } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license of 'python-dateutil'", - "text": { - "content": "Dual License", - "contentType": "text/plain" - } - } } ], "name": "python-dateutil", @@ -729,16 +679,6 @@ "acknowledgement": "declared", "id": "MIT" } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license of 'rfc3339-validator'", - "text": { - "content": "MIT license", - "contentType": "text/plain" - } - } } ], "name": "rfc3339-validator", @@ -767,16 +707,6 @@ "acknowledgement": "declared", "id": "GPL-3.0-or-later" } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license of 'rfc3987'", - "text": { - "content": "GNU GPLv3+", - "contentType": "text/plain" - } - } } ], "name": "rfc3987", @@ -871,16 +801,6 @@ "acknowledgement": "declared", "name": "License :: OSI Approved :: Apache Software License" } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license of 'sortedcontainers'", - "text": { - "content": "Apache 2.0", - "contentType": "text/plain" - } - } } ], "name": "sortedcontainers", @@ -953,16 +873,6 @@ "acknowledgement": "declared", "id": "MIT" } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license of 'uri-template'", - "text": { - "content": "MIT License", - "contentType": "text/plain" - } - } } ], "name": "uri-template", diff --git a/tests/_data/snapshots/environment/plain_with-extras_1.6.xml.bin b/tests/_data/snapshots/environment/plain_with-extras_1.6.xml.bin index a4fb2708c..6de3ed477 100644 --- a/tests/_data/snapshots/environment/plain_with-extras_1.6.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-extras_1.6.xml.bin @@ -182,10 +182,6 @@ Python-2.0 - - declared license of 'defusedxml' - PSFL - pkg:pypi/defusedxml@0.7.1 @@ -207,10 +203,6 @@ License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0) - - declared license of 'fqdn' - MPL 2.0 - pkg:pypi/fqdn@1.5.1 @@ -270,10 +262,6 @@ ISC - - declared license of 'isoduration' - UNKNOWN - pkg:pypi/isoduration@20.11.0 @@ -303,10 +291,6 @@ License :: OSI Approved :: BSD License - - declared license of 'jsonpointer' - Modified BSD License - pkg:pypi/jsonpointer@3.0.0 @@ -511,10 +495,6 @@ License :: OSI Approved :: BSD License - - declared license of 'python-dateutil' - Dual License - pkg:pypi/python-dateutil@2.9.0.post0 @@ -581,10 +561,6 @@ MIT - - declared license of 'rfc3339-validator' - MIT license - pkg:pypi/rfc3339-validator@0.1.4 @@ -602,10 +578,6 @@ GPL-3.0-or-later - - declared license of 'rfc3987' - GNU GPLv3+ - pkg:pypi/rfc3987@1.3.8 @@ -681,10 +653,6 @@ License :: OSI Approved :: Apache Software License - - declared license of 'sortedcontainers' - Apache 2.0 - pkg:pypi/sortedcontainers@2.4.0 @@ -738,10 +706,6 @@ MIT - - declared license of 'uri-template' - MIT License - pkg:pypi/uri-template@1.3.0 diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.1.xml.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.1.xml.bin index 4e48511fa..11dccab11 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.1.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.1.xml.bin @@ -90,10 +90,6 @@ License :: OSI Approved :: BSD License - - declared license of 'jsonpointer' - Modified BSD License - pkg:pypi/jsonpointer@2.4 diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.2.json.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.2.json.bin index e96dc6002..6789eee25 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.2.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.2.json.bin @@ -119,15 +119,6 @@ "license": { "name": "License :: OSI Approved :: BSD License" } - }, - { - "license": { - "name": "declared license of 'jsonpointer'", - "text": { - "content": "Modified BSD License", - "contentType": "text/plain" - } - } } ], "name": "jsonpointer", diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.2.xml.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.2.xml.bin index dca173273..ad5f02893 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.2.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.2.xml.bin @@ -112,10 +112,6 @@ License :: OSI Approved :: BSD License - - declared license of 'jsonpointer' - Modified BSD License - pkg:pypi/jsonpointer@2.4 diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.json.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.json.bin index 910b0c2a6..4c89829f0 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.json.bin @@ -133,15 +133,6 @@ "license": { "name": "License :: OSI Approved :: BSD License" } - }, - { - "license": { - "name": "declared license of 'jsonpointer'", - "text": { - "content": "Modified BSD License", - "contentType": "text/plain" - } - } } ], "name": "jsonpointer", diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.xml.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.xml.bin index c5cd4c7d4..010f686ba 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.xml.bin @@ -126,10 +126,6 @@ License :: OSI Approved :: BSD License - - declared license of 'jsonpointer' - Modified BSD License - pkg:pypi/jsonpointer@2.4 diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.json.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.json.bin index 47ae6c772..280e8386d 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.json.bin @@ -133,15 +133,6 @@ "license": { "name": "License :: OSI Approved :: BSD License" } - }, - { - "license": { - "name": "declared license of 'jsonpointer'", - "text": { - "content": "Modified BSD License", - "contentType": "text/plain" - } - } } ], "name": "jsonpointer", diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.xml.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.xml.bin index 396965141..0406e4bb8 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.xml.bin @@ -153,10 +153,6 @@ License :: OSI Approved :: BSD License - - declared license of 'jsonpointer' - Modified BSD License - pkg:pypi/jsonpointer@2.4 diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.json.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.json.bin index 30733e96e..f7896cf29 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.json.bin @@ -133,15 +133,6 @@ "license": { "name": "License :: OSI Approved :: BSD License" } - }, - { - "license": { - "name": "declared license of 'jsonpointer'", - "text": { - "content": "Modified BSD License", - "contentType": "text/plain" - } - } } ], "name": "jsonpointer", diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.xml.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.xml.bin index a076f9d9a..2bb3ca72e 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.xml.bin @@ -163,10 +163,6 @@ License :: OSI Approved :: BSD License - - declared license of 'jsonpointer' - Modified BSD License - pkg:pypi/jsonpointer@2.4 diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.json.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.json.bin index 513244ac8..360286af2 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.json.bin @@ -139,16 +139,6 @@ "acknowledgement": "declared", "name": "License :: OSI Approved :: BSD License" } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license of 'jsonpointer'", - "text": { - "content": "Modified BSD License", - "contentType": "text/plain" - } - } } ], "name": "jsonpointer", diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.xml.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.xml.bin index ab3827fa7..bb74b8fba 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.xml.bin @@ -163,10 +163,6 @@ License :: OSI Approved :: BSD License - - declared license of 'jsonpointer' - Modified BSD License - pkg:pypi/jsonpointer@2.4 diff --git a/tests/_data/snapshots/environment/plain_with-license-text_1.1.xml.bin b/tests/_data/snapshots/environment/plain_with-license-text_1.1.xml.bin index 7b5ef01bb..f8b0ee087 100644 --- a/tests/_data/snapshots/environment/plain_with-license-text_1.1.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-text_1.1.xml.bin @@ -5,12 +5,6 @@ package-a 23.42 some package A - - - declared license of 'package-a' - some license text - - file://.../tests/_data/infiles/_helpers/local_pckages/a/dist/package_a-23.42-py3-none-any.whl diff --git a/tests/_data/snapshots/environment/plain_with-license-text_1.2.json.bin b/tests/_data/snapshots/environment/plain_with-license-text_1.2.json.bin index 3ae0740ea..85fcdc06f 100644 --- a/tests/_data/snapshots/environment/plain_with-license-text_1.2.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-text_1.2.json.bin @@ -10,17 +10,6 @@ "url": "file://.../tests/_data/infiles/_helpers/local_pckages/a/dist/package_a-23.42-py3-none-any.whl" } ], - "licenses": [ - { - "license": { - "name": "declared license of 'package-a'", - "text": { - "content": "some license text", - "contentType": "text/plain" - } - } - } - ], "name": "package-a", "type": "library", "version": "23.42" diff --git a/tests/_data/snapshots/environment/plain_with-license-text_1.2.xml.bin b/tests/_data/snapshots/environment/plain_with-license-text_1.2.xml.bin index 5c3682769..20892fafc 100644 --- a/tests/_data/snapshots/environment/plain_with-license-text_1.2.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-text_1.2.xml.bin @@ -29,12 +29,6 @@ package-a 23.42 some package A - - - declared license of 'package-a' - some license text - - file://.../tests/_data/infiles/_helpers/local_pckages/a/dist/package_a-23.42-py3-none-any.whl diff --git a/tests/_data/snapshots/environment/plain_with-license-text_1.3.json.bin b/tests/_data/snapshots/environment/plain_with-license-text_1.3.json.bin index c73d2b87d..669d5b584 100644 --- a/tests/_data/snapshots/environment/plain_with-license-text_1.3.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-text_1.3.json.bin @@ -16,17 +16,6 @@ "url": "file://.../tests/_data/infiles/_helpers/local_pckages/a/dist/package_a-23.42-py3-none-any.whl" } ], - "licenses": [ - { - "license": { - "name": "declared license of 'package-a'", - "text": { - "content": "some license text", - "contentType": "text/plain" - } - } - } - ], "name": "package-a", "type": "library", "version": "23.42" diff --git a/tests/_data/snapshots/environment/plain_with-license-text_1.3.xml.bin b/tests/_data/snapshots/environment/plain_with-license-text_1.3.xml.bin index 5f57fd25b..3c07eec33 100644 --- a/tests/_data/snapshots/environment/plain_with-license-text_1.3.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-text_1.3.xml.bin @@ -32,12 +32,6 @@ package-a 23.42 some package A - - - declared license of 'package-a' - some license text - - file://.../tests/_data/infiles/_helpers/local_pckages/a/dist/package_a-23.42-py3-none-any.whl diff --git a/tests/_data/snapshots/environment/plain_with-license-text_1.4.json.bin b/tests/_data/snapshots/environment/plain_with-license-text_1.4.json.bin index 298516884..bdd1343db 100644 --- a/tests/_data/snapshots/environment/plain_with-license-text_1.4.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-text_1.4.json.bin @@ -16,17 +16,6 @@ "url": "file://.../tests/_data/infiles/_helpers/local_pckages/a/dist/package_a-23.42-py3-none-any.whl" } ], - "licenses": [ - { - "license": { - "name": "declared license of 'package-a'", - "text": { - "content": "some license text", - "contentType": "text/plain" - } - } - } - ], "name": "package-a", "type": "library", "version": "23.42" diff --git a/tests/_data/snapshots/environment/plain_with-license-text_1.4.xml.bin b/tests/_data/snapshots/environment/plain_with-license-text_1.4.xml.bin index 715884992..23a4358e1 100644 --- a/tests/_data/snapshots/environment/plain_with-license-text_1.4.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-text_1.4.xml.bin @@ -59,12 +59,6 @@ package-a 23.42 some package A - - - declared license of 'package-a' - some license text - - file://.../tests/_data/infiles/_helpers/local_pckages/a/dist/package_a-23.42-py3-none-any.whl diff --git a/tests/_data/snapshots/environment/plain_with-license-text_1.5.json.bin b/tests/_data/snapshots/environment/plain_with-license-text_1.5.json.bin index dfe9e4fb3..07edbb213 100644 --- a/tests/_data/snapshots/environment/plain_with-license-text_1.5.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-text_1.5.json.bin @@ -16,17 +16,6 @@ "url": "file://.../tests/_data/infiles/_helpers/local_pckages/a/dist/package_a-23.42-py3-none-any.whl" } ], - "licenses": [ - { - "license": { - "name": "declared license of 'package-a'", - "text": { - "content": "some license text", - "contentType": "text/plain" - } - } - } - ], "name": "package-a", "type": "library", "version": "23.42" diff --git a/tests/_data/snapshots/environment/plain_with-license-text_1.5.xml.bin b/tests/_data/snapshots/environment/plain_with-license-text_1.5.xml.bin index 4e6dcf8b7..fcb16c931 100644 --- a/tests/_data/snapshots/environment/plain_with-license-text_1.5.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-text_1.5.xml.bin @@ -69,12 +69,6 @@ package-a 23.42 some package A - - - declared license of 'package-a' - some license text - - file://.../tests/_data/infiles/_helpers/local_pckages/a/dist/package_a-23.42-py3-none-any.whl diff --git a/tests/_data/snapshots/environment/plain_with-license-text_1.6.json.bin b/tests/_data/snapshots/environment/plain_with-license-text_1.6.json.bin index e28ebcd87..1fef9b83d 100644 --- a/tests/_data/snapshots/environment/plain_with-license-text_1.6.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-text_1.6.json.bin @@ -16,18 +16,6 @@ "url": "file://.../tests/_data/infiles/_helpers/local_pckages/a/dist/package_a-23.42-py3-none-any.whl" } ], - "licenses": [ - { - "license": { - "acknowledgement": "declared", - "name": "declared license of 'package-a'", - "text": { - "content": "some license text", - "contentType": "text/plain" - } - } - } - ], "name": "package-a", "type": "library", "version": "23.42" diff --git a/tests/_data/snapshots/environment/plain_with-license-text_1.6.xml.bin b/tests/_data/snapshots/environment/plain_with-license-text_1.6.xml.bin index 55b963d95..cc631c23e 100644 --- a/tests/_data/snapshots/environment/plain_with-license-text_1.6.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-text_1.6.xml.bin @@ -69,12 +69,6 @@ package-a 23.42 some package A - - - declared license of 'package-a' - some license text - - file://.../tests/_data/infiles/_helpers/local_pckages/a/dist/package_a-23.42-py3-none-any.whl diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.1.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.1.xml.bin index ca121496e..afe85637c 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.1.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.1.xml.bin @@ -64,6 +64,9 @@ SOFTWARE. 4.0 Define boolean algebras, create and parse boolean expressions and create custom boolean DSL. + + BSD-2-Clause + declared license file: CHANGELOG.rst @@ -356,250 +359,7 @@ SPDX-License-Identifier: BSD-2-Clause 43.0.1 cryptography is a package which provides cryptographic recipes and primitives to Python developers. - - declared license file: LICENSE - This software is made available under the terms of *either* of the licenses -found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made -under the terms of *both* these licenses. - - - - declared license file: LICENSE.APACHE - - Apache License - Version 2.0, January 2004 - https://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - https://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - - declared license file: LICENSE.BSD - Copyright (c) Individual contributors. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. Neither the name of PyCA Cryptography nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - + Apache-2.0 OR BSD-3-Clause pkg:pypi/cryptography@43.0.1 @@ -630,6 +390,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2.4 Identify specific nodes in a JSON document (RFC 6901) + + License :: OSI Approved :: BSD License + declared license file: AUTHORS Stefan Kögl <stefan@skoegl.net> @@ -667,6 +430,10 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + declared license of 'jsonpointer' + Modified BSD License + pkg:pypi/jsonpointer@2.4 @@ -681,6 +448,9 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30.3.0 license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic. + + Apache-2.0 + declared license file: AUTHORS.rst The following organizations or individuals have contributed to this code: @@ -1150,6 +920,12 @@ https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 5.3.0 Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. + + BSD-3-Clause + + + License :: OSI Approved :: BSD License + declared license file: LICENSE.txt Copyright (c) 2004 Infrae. All rights reserved. diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.json.bin index 425b3f345..2778f52d5 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.json.bin @@ -62,6 +62,11 @@ } ], "licenses": [ + { + "license": { + "id": "BSD-2-Clause" + } + }, { "license": { "name": "declared license file: CHANGELOG.rst", @@ -127,31 +132,7 @@ ], "licenses": [ { - "license": { - "name": "declared license file: LICENSE", - "text": { - "content": "This software is made available under the terms of *either* of the licenses\nfound in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made\nunder the terms of *both* these licenses.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.APACHE", - "text": { - "content": "\n Apache License\n Version 2.0, January 2004\n https://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.BSD", - "text": { - "content": "Copyright (c) Individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of PyCA Cryptography nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" - } - } + "expression": "Apache-2.0 OR BSD-3-Clause" } ], "name": "cryptography", @@ -170,6 +151,11 @@ } ], "licenses": [ + { + "license": { + "name": "License :: OSI Approved :: BSD License" + } + }, { "license": { "name": "declared license file: AUTHORS", @@ -187,6 +173,15 @@ "contentType": "text/plain" } } + }, + { + "license": { + "name": "declared license of 'jsonpointer'", + "text": { + "content": "Modified BSD License", + "contentType": "text/plain" + } + } } ], "name": "jsonpointer", @@ -205,6 +200,11 @@ } ], "licenses": [ + { + "license": { + "id": "Apache-2.0" + } + }, { "license": { "name": "declared license file: AUTHORS.rst", @@ -272,6 +272,16 @@ } ], "licenses": [ + { + "license": { + "id": "BSD-3-Clause" + } + }, + { + "license": { + "name": "License :: OSI Approved :: BSD License" + } + }, { "license": { "name": "declared license file: LICENSE.txt", diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.xml.bin index ac08ad865..cf2ee36f4 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.xml.bin @@ -86,6 +86,9 @@ SOFTWARE. 4.0 Define boolean algebras, create and parse boolean expressions and create custom boolean DSL. + + BSD-2-Clause + declared license file: CHANGELOG.rst @@ -378,250 +381,7 @@ SPDX-License-Identifier: BSD-2-Clause 43.0.1 cryptography is a package which provides cryptographic recipes and primitives to Python developers. - - declared license file: LICENSE - This software is made available under the terms of *either* of the licenses -found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made -under the terms of *both* these licenses. - - - - declared license file: LICENSE.APACHE - - Apache License - Version 2.0, January 2004 - https://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - https://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - - declared license file: LICENSE.BSD - Copyright (c) Individual contributors. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. Neither the name of PyCA Cryptography nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - + Apache-2.0 OR BSD-3-Clause pkg:pypi/cryptography@43.0.1 @@ -652,6 +412,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2.4 Identify specific nodes in a JSON document (RFC 6901) + + License :: OSI Approved :: BSD License + declared license file: AUTHORS Stefan Kögl <stefan@skoegl.net> @@ -689,6 +452,10 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + declared license of 'jsonpointer' + Modified BSD License + pkg:pypi/jsonpointer@2.4 @@ -703,6 +470,9 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30.3.0 license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic. + + Apache-2.0 + declared license file: AUTHORS.rst The following organizations or individuals have contributed to this code: @@ -1172,6 +942,12 @@ https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 5.3.0 Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. + + BSD-3-Clause + + + License :: OSI Approved :: BSD License + declared license file: LICENSE.txt Copyright (c) 2004 Infrae. All rights reserved. diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.json.bin index 48bd16b3b..488811233 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.json.bin @@ -62,6 +62,11 @@ } ], "licenses": [ + { + "license": { + "id": "BSD-2-Clause" + } + }, { "license": { "name": "declared license file: CHANGELOG.rst", @@ -98,6 +103,47 @@ { "bom-ref": "cryptography==43.0.1", "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", + "evidence": { + "licenses": [ + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + }, + { + "license": { + "name": "License :: OSI Approved :: BSD License" + } + }, + { + "license": { + "name": "declared license file: LICENSE", + "text": { + "content": "This software is made available under the terms of *either* of the licenses\nfound in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made\nunder the terms of *both* these licenses.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: LICENSE.APACHE", + "text": { + "content": "\n Apache License\n Version 2.0, January 2004\n https://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: LICENSE.BSD", + "text": { + "content": "Copyright (c) Individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of PyCA Cryptography nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", + "contentType": "text/plain" + } + } + } + ] + }, "externalReferences": [ { "comment": "from packaging metadata Project-URL: documentation", @@ -127,31 +173,7 @@ ], "licenses": [ { - "license": { - "name": "declared license file: LICENSE", - "text": { - "content": "This software is made available under the terms of *either* of the licenses\nfound in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made\nunder the terms of *both* these licenses.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.APACHE", - "text": { - "content": "\n Apache License\n Version 2.0, January 2004\n https://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.BSD", - "text": { - "content": "Copyright (c) Individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of PyCA Cryptography nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" - } - } + "expression": "Apache-2.0 OR BSD-3-Clause" } ], "name": "cryptography", @@ -170,6 +192,11 @@ } ], "licenses": [ + { + "license": { + "name": "License :: OSI Approved :: BSD License" + } + }, { "license": { "name": "declared license file: AUTHORS", @@ -187,6 +214,15 @@ "contentType": "text/plain" } } + }, + { + "license": { + "name": "declared license of 'jsonpointer'", + "text": { + "content": "Modified BSD License", + "contentType": "text/plain" + } + } } ], "name": "jsonpointer", @@ -205,6 +241,11 @@ } ], "licenses": [ + { + "license": { + "id": "Apache-2.0" + } + }, { "license": { "name": "declared license file: AUTHORS.rst", @@ -272,6 +313,16 @@ } ], "licenses": [ + { + "license": { + "id": "BSD-3-Clause" + } + }, + { + "license": { + "name": "License :: OSI Approved :: BSD License" + } + }, { "license": { "name": "declared license file: LICENSE.txt", diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.xml.bin index 3fffe77e9..f4962ed7a 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.xml.bin @@ -90,6 +90,9 @@ SOFTWARE. 4.0 Define boolean algebras, create and parse boolean expressions and create custom boolean DSL. + + BSD-2-Clause + declared license file: CHANGELOG.rst @@ -382,16 +385,49 @@ SPDX-License-Identifier: BSD-2-Clause 43.0.1 cryptography is a package which provides cryptographic recipes and primitives to Python developers. - - declared license file: LICENSE - This software is made available under the terms of *either* of the licenses + Apache-2.0 OR BSD-3-Clause + + pkg:pypi/cryptography@43.0.1 + + + https://cryptography.io/ + from packaging metadata Project-URL: documentation + + + https://github.com/pyca/cryptography/issues + from packaging metadata Project-URL: issues + + + https://github.com/pyca/cryptography/ + from packaging metadata Project-URL: source + + + https://cryptography.io/en/latest/changelog/ + from packaging metadata Project-URL: changelog + + + https://github.com/pyca/cryptography + from packaging metadata Project-URL: homepage + + + + + + License :: OSI Approved :: Apache Software License + + + License :: OSI Approved :: BSD License + + + declared license file: LICENSE + This software is made available under the terms of *either* of the licenses found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made under the terms of *both* these licenses. - - - declared license file: LICENSE.APACHE - + + + declared license file: LICENSE.APACHE + Apache License Version 2.0, January 2004 https://www.apache.org/licenses/ @@ -594,10 +630,10 @@ under the terms of *both* these licenses. See the License for the specific language governing permissions and limitations under the License. - - - declared license file: LICENSE.BSD - Copyright (c) Individual contributors. + + + declared license file: LICENSE.BSD + Copyright (c) Individual contributors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -625,37 +661,18 @@ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - pkg:pypi/cryptography@43.0.1 - - - https://cryptography.io/ - from packaging metadata Project-URL: documentation - - - https://github.com/pyca/cryptography/issues - from packaging metadata Project-URL: issues - - - https://github.com/pyca/cryptography/ - from packaging metadata Project-URL: source - - - https://cryptography.io/en/latest/changelog/ - from packaging metadata Project-URL: changelog - - - https://github.com/pyca/cryptography - from packaging metadata Project-URL: homepage - - + + + jsonpointer 2.4 Identify specific nodes in a JSON document (RFC 6901) + + License :: OSI Approved :: BSD License + declared license file: AUTHORS Stefan Kögl <stefan@skoegl.net> @@ -693,6 +710,10 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + declared license of 'jsonpointer' + Modified BSD License + pkg:pypi/jsonpointer@2.4 @@ -707,6 +728,9 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30.3.0 license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic. + + Apache-2.0 + declared license file: AUTHORS.rst The following organizations or individuals have contributed to this code: @@ -1176,6 +1200,12 @@ https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 5.3.0 Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. + + BSD-3-Clause + + + License :: OSI Approved :: BSD License + declared license file: LICENSE.txt Copyright (c) 2004 Infrae. All rights reserved. diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.json.bin index 146984826..e4b7a92b2 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.json.bin @@ -62,6 +62,11 @@ } ], "licenses": [ + { + "license": { + "id": "BSD-2-Clause" + } + }, { "license": { "name": "declared license file: CHANGELOG.rst", @@ -98,6 +103,47 @@ { "bom-ref": "cryptography==43.0.1", "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", + "evidence": { + "licenses": [ + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + }, + { + "license": { + "name": "License :: OSI Approved :: BSD License" + } + }, + { + "license": { + "name": "declared license file: LICENSE", + "text": { + "content": "This software is made available under the terms of *either* of the licenses\nfound in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made\nunder the terms of *both* these licenses.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: LICENSE.APACHE", + "text": { + "content": "\n Apache License\n Version 2.0, January 2004\n https://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: LICENSE.BSD", + "text": { + "content": "Copyright (c) Individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of PyCA Cryptography nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", + "contentType": "text/plain" + } + } + } + ] + }, "externalReferences": [ { "comment": "from packaging metadata Project-URL: documentation", @@ -127,31 +173,7 @@ ], "licenses": [ { - "license": { - "name": "declared license file: LICENSE", - "text": { - "content": "This software is made available under the terms of *either* of the licenses\nfound in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made\nunder the terms of *both* these licenses.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.APACHE", - "text": { - "content": "\n Apache License\n Version 2.0, January 2004\n https://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.BSD", - "text": { - "content": "Copyright (c) Individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of PyCA Cryptography nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" - } - } + "expression": "Apache-2.0 OR BSD-3-Clause" } ], "name": "cryptography", @@ -170,6 +192,11 @@ } ], "licenses": [ + { + "license": { + "name": "License :: OSI Approved :: BSD License" + } + }, { "license": { "name": "declared license file: AUTHORS", @@ -187,6 +214,15 @@ "contentType": "text/plain" } } + }, + { + "license": { + "name": "declared license of 'jsonpointer'", + "text": { + "content": "Modified BSD License", + "contentType": "text/plain" + } + } } ], "name": "jsonpointer", @@ -205,6 +241,11 @@ } ], "licenses": [ + { + "license": { + "id": "Apache-2.0" + } + }, { "license": { "name": "declared license file: AUTHORS.rst", @@ -272,6 +313,16 @@ } ], "licenses": [ + { + "license": { + "id": "BSD-3-Clause" + } + }, + { + "license": { + "name": "License :: OSI Approved :: BSD License" + } + }, { "license": { "name": "declared license file: LICENSE.txt", diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.xml.bin index 3ecfa593c..bb6b58254 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.xml.bin @@ -117,6 +117,9 @@ SOFTWARE. 4.0 Define boolean algebras, create and parse boolean expressions and create custom boolean DSL. + + BSD-2-Clause + declared license file: CHANGELOG.rst @@ -409,16 +412,49 @@ SPDX-License-Identifier: BSD-2-Clause 43.0.1 cryptography is a package which provides cryptographic recipes and primitives to Python developers. - - declared license file: LICENSE - This software is made available under the terms of *either* of the licenses + Apache-2.0 OR BSD-3-Clause + + pkg:pypi/cryptography@43.0.1 + + + https://cryptography.io/ + from packaging metadata Project-URL: documentation + + + https://github.com/pyca/cryptography/issues + from packaging metadata Project-URL: issues + + + https://github.com/pyca/cryptography/ + from packaging metadata Project-URL: source + + + https://cryptography.io/en/latest/changelog/ + from packaging metadata Project-URL: changelog + + + https://github.com/pyca/cryptography + from packaging metadata Project-URL: homepage + + + + + + License :: OSI Approved :: Apache Software License + + + License :: OSI Approved :: BSD License + + + declared license file: LICENSE + This software is made available under the terms of *either* of the licenses found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made under the terms of *both* these licenses. - - - declared license file: LICENSE.APACHE - + + + declared license file: LICENSE.APACHE + Apache License Version 2.0, January 2004 https://www.apache.org/licenses/ @@ -621,10 +657,10 @@ under the terms of *both* these licenses. See the License for the specific language governing permissions and limitations under the License. - - - declared license file: LICENSE.BSD - Copyright (c) Individual contributors. + + + declared license file: LICENSE.BSD + Copyright (c) Individual contributors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -652,37 +688,18 @@ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - pkg:pypi/cryptography@43.0.1 - - - https://cryptography.io/ - from packaging metadata Project-URL: documentation - - - https://github.com/pyca/cryptography/issues - from packaging metadata Project-URL: issues - - - https://github.com/pyca/cryptography/ - from packaging metadata Project-URL: source - - - https://cryptography.io/en/latest/changelog/ - from packaging metadata Project-URL: changelog - - - https://github.com/pyca/cryptography - from packaging metadata Project-URL: homepage - - + + + jsonpointer 2.4 Identify specific nodes in a JSON document (RFC 6901) + + License :: OSI Approved :: BSD License + declared license file: AUTHORS Stefan Kögl <stefan@skoegl.net> @@ -720,6 +737,10 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + declared license of 'jsonpointer' + Modified BSD License + pkg:pypi/jsonpointer@2.4 @@ -734,6 +755,9 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30.3.0 license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic. + + Apache-2.0 + declared license file: AUTHORS.rst The following organizations or individuals have contributed to this code: @@ -1203,6 +1227,12 @@ https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 5.3.0 Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. + + BSD-3-Clause + + + License :: OSI Approved :: BSD License + declared license file: LICENSE.txt Copyright (c) 2004 Infrae. All rights reserved. diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.json.bin index 697af8ee8..feaf0d7ba 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.json.bin @@ -62,6 +62,11 @@ } ], "licenses": [ + { + "license": { + "id": "BSD-2-Clause" + } + }, { "license": { "name": "declared license file: CHANGELOG.rst", @@ -98,6 +103,47 @@ { "bom-ref": "cryptography==43.0.1", "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", + "evidence": { + "licenses": [ + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + }, + { + "license": { + "name": "License :: OSI Approved :: BSD License" + } + }, + { + "license": { + "name": "declared license file: LICENSE", + "text": { + "content": "This software is made available under the terms of *either* of the licenses\nfound in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made\nunder the terms of *both* these licenses.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: LICENSE.APACHE", + "text": { + "content": "\n Apache License\n Version 2.0, January 2004\n https://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: LICENSE.BSD", + "text": { + "content": "Copyright (c) Individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of PyCA Cryptography nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", + "contentType": "text/plain" + } + } + } + ] + }, "externalReferences": [ { "comment": "from packaging metadata Project-URL: documentation", @@ -127,31 +173,7 @@ ], "licenses": [ { - "license": { - "name": "declared license file: LICENSE", - "text": { - "content": "This software is made available under the terms of *either* of the licenses\nfound in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made\nunder the terms of *both* these licenses.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.APACHE", - "text": { - "content": "\n Apache License\n Version 2.0, January 2004\n https://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.BSD", - "text": { - "content": "Copyright (c) Individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of PyCA Cryptography nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" - } - } + "expression": "Apache-2.0 OR BSD-3-Clause" } ], "name": "cryptography", @@ -170,6 +192,11 @@ } ], "licenses": [ + { + "license": { + "name": "License :: OSI Approved :: BSD License" + } + }, { "license": { "name": "declared license file: AUTHORS", @@ -187,6 +214,15 @@ "contentType": "text/plain" } } + }, + { + "license": { + "name": "declared license of 'jsonpointer'", + "text": { + "content": "Modified BSD License", + "contentType": "text/plain" + } + } } ], "name": "jsonpointer", @@ -205,6 +241,11 @@ } ], "licenses": [ + { + "license": { + "id": "Apache-2.0" + } + }, { "license": { "name": "declared license file: AUTHORS.rst", @@ -272,6 +313,16 @@ } ], "licenses": [ + { + "license": { + "id": "BSD-3-Clause" + } + }, + { + "license": { + "name": "License :: OSI Approved :: BSD License" + } + }, { "license": { "name": "declared license file: LICENSE.txt", diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.xml.bin index 1d2faeddb..e61bd7e0a 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.xml.bin @@ -127,6 +127,9 @@ SOFTWARE. 4.0 Define boolean algebras, create and parse boolean expressions and create custom boolean DSL. + + BSD-2-Clause + declared license file: CHANGELOG.rst @@ -419,16 +422,49 @@ SPDX-License-Identifier: BSD-2-Clause 43.0.1 cryptography is a package which provides cryptographic recipes and primitives to Python developers. - - declared license file: LICENSE - This software is made available under the terms of *either* of the licenses + Apache-2.0 OR BSD-3-Clause + + pkg:pypi/cryptography@43.0.1 + + + https://cryptography.io/ + from packaging metadata Project-URL: documentation + + + https://github.com/pyca/cryptography/issues + from packaging metadata Project-URL: issues + + + https://github.com/pyca/cryptography/ + from packaging metadata Project-URL: source + + + https://cryptography.io/en/latest/changelog/ + from packaging metadata Project-URL: changelog + + + https://github.com/pyca/cryptography + from packaging metadata Project-URL: homepage + + + + + + License :: OSI Approved :: Apache Software License + + + License :: OSI Approved :: BSD License + + + declared license file: LICENSE + This software is made available under the terms of *either* of the licenses found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made under the terms of *both* these licenses. - - - declared license file: LICENSE.APACHE - + + + declared license file: LICENSE.APACHE + Apache License Version 2.0, January 2004 https://www.apache.org/licenses/ @@ -631,10 +667,10 @@ under the terms of *both* these licenses. See the License for the specific language governing permissions and limitations under the License. - - - declared license file: LICENSE.BSD - Copyright (c) Individual contributors. + + + declared license file: LICENSE.BSD + Copyright (c) Individual contributors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -662,37 +698,18 @@ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - pkg:pypi/cryptography@43.0.1 - - - https://cryptography.io/ - from packaging metadata Project-URL: documentation - - - https://github.com/pyca/cryptography/issues - from packaging metadata Project-URL: issues - - - https://github.com/pyca/cryptography/ - from packaging metadata Project-URL: source - - - https://cryptography.io/en/latest/changelog/ - from packaging metadata Project-URL: changelog - - - https://github.com/pyca/cryptography - from packaging metadata Project-URL: homepage - - + + + jsonpointer 2.4 Identify specific nodes in a JSON document (RFC 6901) + + License :: OSI Approved :: BSD License + declared license file: AUTHORS Stefan Kögl <stefan@skoegl.net> @@ -730,6 +747,10 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + declared license of 'jsonpointer' + Modified BSD License + pkg:pypi/jsonpointer@2.4 @@ -744,6 +765,9 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30.3.0 license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic. + + Apache-2.0 + declared license file: AUTHORS.rst The following organizations or individuals have contributed to this code: @@ -1213,6 +1237,12 @@ https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 5.3.0 Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. + + BSD-3-Clause + + + License :: OSI Approved :: BSD License + declared license file: LICENSE.txt Copyright (c) 2004 Infrae. All rights reserved. diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.json.bin index 5f8a14482..694ba3536 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.json.bin @@ -64,6 +64,12 @@ } ], "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "BSD-2-Clause" + } + }, { "license": { "acknowledgement": "declared", @@ -103,6 +109,52 @@ { "bom-ref": "cryptography==43.0.1", "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", + "evidence": { + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: BSD License" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: LICENSE", + "text": { + "content": "This software is made available under the terms of *either* of the licenses\nfound in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made\nunder the terms of *both* these licenses.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: LICENSE.APACHE", + "text": { + "content": "\n Apache License\n Version 2.0, January 2004\n https://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: LICENSE.BSD", + "text": { + "content": "Copyright (c) Individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of PyCA Cryptography nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", + "contentType": "text/plain" + } + } + } + ] + }, "externalReferences": [ { "comment": "from packaging metadata Project-URL: documentation", @@ -132,34 +184,8 @@ ], "licenses": [ { - "license": { - "acknowledgement": "declared", - "name": "declared license file: LICENSE", - "text": { - "content": "This software is made available under the terms of *either* of the licenses\nfound in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made\nunder the terms of *both* these licenses.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: LICENSE.APACHE", - "text": { - "content": "\n Apache License\n Version 2.0, January 2004\n https://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: LICENSE.BSD", - "text": { - "content": "Copyright (c) Individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of PyCA Cryptography nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" - } - } + "acknowledgement": "declared", + "expression": "Apache-2.0 OR BSD-3-Clause" } ], "name": "cryptography", @@ -178,6 +204,12 @@ } ], "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: BSD License" + } + }, { "license": { "acknowledgement": "declared", @@ -197,6 +229,16 @@ "contentType": "text/plain" } } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license of 'jsonpointer'", + "text": { + "content": "Modified BSD License", + "contentType": "text/plain" + } + } } ], "name": "jsonpointer", @@ -215,6 +257,12 @@ } ], "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "Apache-2.0" + } + }, { "license": { "acknowledgement": "declared", @@ -287,6 +335,18 @@ } ], "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "BSD-3-Clause" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: BSD License" + } + }, { "license": { "acknowledgement": "declared", diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.xml.bin index 431df8f56..571cde68a 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.xml.bin @@ -127,6 +127,9 @@ SOFTWARE. 4.0 Define boolean algebras, create and parse boolean expressions and create custom boolean DSL. + + BSD-2-Clause + declared license file: CHANGELOG.rst @@ -419,16 +422,49 @@ SPDX-License-Identifier: BSD-2-Clause 43.0.1 cryptography is a package which provides cryptographic recipes and primitives to Python developers. - - declared license file: LICENSE - This software is made available under the terms of *either* of the licenses + Apache-2.0 OR BSD-3-Clause + + pkg:pypi/cryptography@43.0.1 + + + https://cryptography.io/ + from packaging metadata Project-URL: documentation + + + https://github.com/pyca/cryptography/issues + from packaging metadata Project-URL: issues + + + https://github.com/pyca/cryptography/ + from packaging metadata Project-URL: source + + + https://cryptography.io/en/latest/changelog/ + from packaging metadata Project-URL: changelog + + + https://github.com/pyca/cryptography + from packaging metadata Project-URL: homepage + + + + + + License :: OSI Approved :: Apache Software License + + + License :: OSI Approved :: BSD License + + + declared license file: LICENSE + This software is made available under the terms of *either* of the licenses found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made under the terms of *both* these licenses. - - - declared license file: LICENSE.APACHE - + + + declared license file: LICENSE.APACHE + Apache License Version 2.0, January 2004 https://www.apache.org/licenses/ @@ -631,10 +667,10 @@ under the terms of *both* these licenses. See the License for the specific language governing permissions and limitations under the License. - - - declared license file: LICENSE.BSD - Copyright (c) Individual contributors. + + + declared license file: LICENSE.BSD + Copyright (c) Individual contributors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -662,37 +698,18 @@ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - pkg:pypi/cryptography@43.0.1 - - - https://cryptography.io/ - from packaging metadata Project-URL: documentation - - - https://github.com/pyca/cryptography/issues - from packaging metadata Project-URL: issues - - - https://github.com/pyca/cryptography/ - from packaging metadata Project-URL: source - - - https://cryptography.io/en/latest/changelog/ - from packaging metadata Project-URL: changelog - - - https://github.com/pyca/cryptography - from packaging metadata Project-URL: homepage - - + + + jsonpointer 2.4 Identify specific nodes in a JSON document (RFC 6901) + + License :: OSI Approved :: BSD License + declared license file: AUTHORS Stefan Kögl <stefan@skoegl.net> @@ -730,6 +747,10 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + declared license of 'jsonpointer' + Modified BSD License + pkg:pypi/jsonpointer@2.4 @@ -744,6 +765,9 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30.3.0 license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic. + + Apache-2.0 + declared license file: AUTHORS.rst The following organizations or individuals have contributed to this code: @@ -1213,6 +1237,12 @@ https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 5.3.0 Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. + + BSD-3-Clause + + + License :: OSI Approved :: BSD License + declared license file: LICENSE.txt Copyright (c) 2004 Infrae. All rights reserved. From 06b729a9aadd884bcfc48e669f6bbfff0d868c93 Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Tue, 8 Jul 2025 13:24:29 +0200 Subject: [PATCH 09/49] wip Signed-off-by: Jan Kowalleck --- cyclonedx_py/_internal/utils/cdx.py | 7 ++++--- .../pep639-texts_with-license-pep639_1.3.json.bin | 1 - .../pep639-texts_with-license-pep639_1.3.xml.bin | 1 - .../pep639-texts_with-license-pep639_1.4.json.bin | 1 - .../pep639-texts_with-license-pep639_1.4.xml.bin | 1 - .../pep639-texts_with-license-pep639_1.5.json.bin | 1 - .../pep639-texts_with-license-pep639_1.5.xml.bin | 1 - .../pep639-texts_with-license-pep639_1.6.json.bin | 1 - .../pep639-texts_with-license-pep639_1.6.xml.bin | 1 - .../environment/pep639_with-license-pep639_1.3.json.bin | 1 - .../environment/pep639_with-license-pep639_1.3.xml.bin | 1 - .../environment/pep639_with-license-pep639_1.4.json.bin | 1 - .../environment/pep639_with-license-pep639_1.4.xml.bin | 1 - .../environment/pep639_with-license-pep639_1.5.json.bin | 1 - .../environment/pep639_with-license-pep639_1.5.xml.bin | 1 - .../environment/pep639_with-license-pep639_1.6.json.bin | 1 - .../environment/pep639_with-license-pep639_1.6.xml.bin | 1 - .../environment/plain_with-license-pep639_1.3.json.bin | 1 - .../environment/plain_with-license-pep639_1.3.xml.bin | 1 - .../environment/plain_with-license-pep639_1.4.json.bin | 1 - .../environment/plain_with-license-pep639_1.4.xml.bin | 1 - .../environment/plain_with-license-pep639_1.5.json.bin | 1 - .../environment/plain_with-license-pep639_1.5.xml.bin | 1 - .../environment/plain_with-license-pep639_1.6.json.bin | 1 - .../environment/plain_with-license-pep639_1.6.xml.bin | 1 - .../environment/texts_with-license-pep639_1.3.json.bin | 1 - .../environment/texts_with-license-pep639_1.3.xml.bin | 1 - .../environment/texts_with-license-pep639_1.4.json.bin | 1 - .../environment/texts_with-license-pep639_1.4.xml.bin | 1 - .../environment/texts_with-license-pep639_1.5.json.bin | 1 - .../environment/texts_with-license-pep639_1.5.xml.bin | 1 - .../environment/texts_with-license-pep639_1.6.json.bin | 1 - .../environment/texts_with-license-pep639_1.6.xml.bin | 1 - 33 files changed, 4 insertions(+), 35 deletions(-) diff --git a/cyclonedx_py/_internal/utils/cdx.py b/cyclonedx_py/_internal/utils/cdx.py index d1d939dcc..3e331015c 100644 --- a/cyclonedx_py/_internal/utils/cdx.py +++ b/cyclonedx_py/_internal/utils/cdx.py @@ -113,9 +113,10 @@ def licenses_fixup(component: 'Component') -> None: return component.licenses = (lexp,) licenses.remove(lexp) - if component.evidence is None: - component.evidence = ComponentEvidence() - component.evidence.licenses.update(licenses) + if len(licenses) > 0: + if component.evidence is None: + component.evidence = ComponentEvidence() + component.evidence.licenses.update(licenses) _MAP_KNOWN_URL_LABELS: dict[str, ExternalReferenceType] = { diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.json.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.json.bin index 488811233..db01e0789 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.json.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.json.bin @@ -451,7 +451,6 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", - "evidence": {}, "licenses": [ { "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.xml.bin index f4962ed7a..06fa74673 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.xml.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.xml.bin @@ -20,7 +20,6 @@ MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) - true diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.json.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.json.bin index e4b7a92b2..3565a8510 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.json.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.json.bin @@ -451,7 +451,6 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", - "evidence": {}, "licenses": [ { "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.xml.bin index bb6b58254..e36e0b4c1 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.xml.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.xml.bin @@ -47,7 +47,6 @@ MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) - true diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.json.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.json.bin index feaf0d7ba..30eeb4642 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.json.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.json.bin @@ -451,7 +451,6 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", - "evidence": {}, "licenses": [ { "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.xml.bin index e61bd7e0a..d928542e4 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.xml.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.xml.bin @@ -57,7 +57,6 @@ MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) - true diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.json.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.json.bin index 694ba3536..6280ed936 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.json.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.json.bin @@ -482,7 +482,6 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", - "evidence": {}, "licenses": [ { "acknowledgement": "declared", diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.xml.bin index 571cde68a..d8d78b19c 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.xml.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.xml.bin @@ -57,7 +57,6 @@ MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) - true diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.3.json.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.3.json.bin index 4c89829f0..9334dd23d 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.3.json.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.3.json.bin @@ -250,7 +250,6 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", - "evidence": {}, "licenses": [ { "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.3.xml.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.3.xml.bin index 010f686ba..f725178ae 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.3.xml.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.3.xml.bin @@ -20,7 +20,6 @@ MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) - true diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.4.json.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.4.json.bin index 280e8386d..fb6420211 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.4.json.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.4.json.bin @@ -250,7 +250,6 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", - "evidence": {}, "licenses": [ { "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.4.xml.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.4.xml.bin index 0406e4bb8..92849ffd9 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.4.xml.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.4.xml.bin @@ -47,7 +47,6 @@ MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) - true diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.5.json.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.5.json.bin index f7896cf29..9f3dcde33 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.5.json.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.5.json.bin @@ -250,7 +250,6 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", - "evidence": {}, "licenses": [ { "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.5.xml.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.5.xml.bin index 2bb3ca72e..faa0a6bca 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.5.xml.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.5.xml.bin @@ -57,7 +57,6 @@ MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) - true diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.6.json.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.6.json.bin index 360286af2..7ab328531 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.6.json.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.6.json.bin @@ -259,7 +259,6 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", - "evidence": {}, "licenses": [ { "acknowledgement": "declared", diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.6.xml.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.6.xml.bin index bb74b8fba..65ff7dece 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.6.xml.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.6.xml.bin @@ -57,7 +57,6 @@ MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) - true diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.json.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.json.bin index 4c89829f0..9334dd23d 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.json.bin @@ -250,7 +250,6 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", - "evidence": {}, "licenses": [ { "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.xml.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.xml.bin index 010f686ba..f725178ae 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.xml.bin @@ -20,7 +20,6 @@ MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) - true diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.json.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.json.bin index 280e8386d..fb6420211 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.json.bin @@ -250,7 +250,6 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", - "evidence": {}, "licenses": [ { "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.xml.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.xml.bin index 0406e4bb8..92849ffd9 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.xml.bin @@ -47,7 +47,6 @@ MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) - true diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.json.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.json.bin index f7896cf29..9f3dcde33 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.json.bin @@ -250,7 +250,6 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", - "evidence": {}, "licenses": [ { "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.xml.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.xml.bin index 2bb3ca72e..faa0a6bca 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.xml.bin @@ -57,7 +57,6 @@ MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) - true diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.json.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.json.bin index 360286af2..7ab328531 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.json.bin @@ -259,7 +259,6 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", - "evidence": {}, "licenses": [ { "acknowledgement": "declared", diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.xml.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.xml.bin index bb74b8fba..65ff7dece 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.xml.bin @@ -57,7 +57,6 @@ MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) - true diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.json.bin index 488811233..db01e0789 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.json.bin @@ -451,7 +451,6 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", - "evidence": {}, "licenses": [ { "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.xml.bin index f4962ed7a..06fa74673 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.xml.bin @@ -20,7 +20,6 @@ MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) - true diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.json.bin index e4b7a92b2..3565a8510 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.json.bin @@ -451,7 +451,6 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", - "evidence": {}, "licenses": [ { "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.xml.bin index bb6b58254..e36e0b4c1 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.xml.bin @@ -47,7 +47,6 @@ MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) - true diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.json.bin index feaf0d7ba..30eeb4642 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.json.bin @@ -451,7 +451,6 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", - "evidence": {}, "licenses": [ { "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.xml.bin index e61bd7e0a..d928542e4 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.xml.bin @@ -57,7 +57,6 @@ MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) - true diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.json.bin index 694ba3536..6280ed936 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.json.bin @@ -482,7 +482,6 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", - "evidence": {}, "licenses": [ { "acknowledgement": "declared", diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.xml.bin index 571cde68a..d8d78b19c 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.xml.bin @@ -57,7 +57,6 @@ MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) - true From acaa5624320f720b13a66b8189f9f4a90faf6b03 Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Tue, 8 Jul 2025 14:00:27 +0200 Subject: [PATCH 10/49] wip Signed-off-by: Jan Kowalleck --- cyclonedx_py/_internal/environment.py | 5 +- cyclonedx_py/_internal/pipenv.py | 3 +- cyclonedx_py/_internal/requirements.py | 3 +- cyclonedx_py/_internal/utils/packaging.py | 4 - cyclonedx_py/_internal/utils/pep639.py | 16 +++- cyclonedx_py/_internal/utils/pyproject.py | 14 ++- .../environment/with-license-pep639/NOTICE | 1 + .../with-license-pep639/pyproject.toml | 4 +- ...639-texts_with-license-pep639_1.3.json.bin | 84 +++++++++++++++++ ...p639-texts_with-license-pep639_1.3.xml.bin | 36 ++++++++ ...639-texts_with-license-pep639_1.4.json.bin | 84 +++++++++++++++++ ...p639-texts_with-license-pep639_1.4.xml.bin | 36 ++++++++ ...639-texts_with-license-pep639_1.5.json.bin | 84 +++++++++++++++++ ...p639-texts_with-license-pep639_1.5.xml.bin | 36 ++++++++ ...639-texts_with-license-pep639_1.6.json.bin | 92 +++++++++++++++++++ ...p639-texts_with-license-pep639_1.6.xml.bin | 36 ++++++++ .../texts_with-license-pep639_1.3.json.bin | 84 +++++++++++++++++ .../texts_with-license-pep639_1.3.xml.bin | 36 ++++++++ .../texts_with-license-pep639_1.4.json.bin | 84 +++++++++++++++++ .../texts_with-license-pep639_1.4.xml.bin | 36 ++++++++ .../texts_with-license-pep639_1.5.json.bin | 84 +++++++++++++++++ .../texts_with-license-pep639_1.5.xml.bin | 36 ++++++++ .../texts_with-license-pep639_1.6.json.bin | 92 +++++++++++++++++++ .../texts_with-license-pep639_1.6.xml.bin | 36 ++++++++ 24 files changed, 1008 insertions(+), 18 deletions(-) create mode 100644 tests/_data/infiles/environment/with-license-pep639/NOTICE diff --git a/cyclonedx_py/_internal/environment.py b/cyclonedx_py/_internal/environment.py index 0944e9f9e..02dda2a56 100644 --- a/cyclonedx_py/_internal/environment.py +++ b/cyclonedx_py/_internal/environment.py @@ -145,7 +145,10 @@ def __call__(self, *, # type:ignore[override] rc = None else: pyproject = pyproject_load(pyproject_file) - root_c = pyproject2component(pyproject, ctype=mc_type, fpath=pyproject_file, gather_license_texts=False) + root_c = pyproject2component(pyproject, ctype=mc_type, + fpath=pyproject_file, + gather_license_texts=self._gather_license_texts, + logger=self._logger) root_c.bom_ref.value = 'root-component' root_d = tuple(pyproject2dependencies(pyproject)) rc = (root_c, root_d) diff --git a/cyclonedx_py/_internal/pipenv.py b/cyclonedx_py/_internal/pipenv.py index ba644ccc8..0c1d5997d 100644 --- a/cyclonedx_py/_internal/pipenv.py +++ b/cyclonedx_py/_internal/pipenv.py @@ -132,7 +132,8 @@ def __call__(self, *, # type:ignore[override] if pyproject_file is None: rc = None else: - rc = pyproject_file2component(pyproject_file, ctype=mc_type, gather_license_texts=False) + rc = pyproject_file2component(pyproject_file, ctype=mc_type, + gather_license_texts=False, logger=self._logger) rc.bom_ref.value = 'root-component' return self._make_bom(rc, diff --git a/cyclonedx_py/_internal/requirements.py b/cyclonedx_py/_internal/requirements.py index 369680c9f..43b243bec 100644 --- a/cyclonedx_py/_internal/requirements.py +++ b/cyclonedx_py/_internal/requirements.py @@ -116,7 +116,8 @@ def __call__(self, *, # type:ignore[override] if pyproject_file is None: rc = None else: - rc = pyproject_file2component(pyproject_file, ctype=mc_type, gather_license_texts=False) + rc = pyproject_file2component(pyproject_file, ctype=mc_type, + gather_license_texts=False, logger=self._logger) rc.bom_ref.value = 'root-component' if requirements_file == '-': diff --git a/cyclonedx_py/_internal/utils/packaging.py b/cyclonedx_py/_internal/utils/packaging.py index 06aeef468..c764e1992 100644 --- a/cyclonedx_py/_internal/utils/packaging.py +++ b/cyclonedx_py/_internal/utils/packaging.py @@ -25,12 +25,8 @@ from .cdx import url_label_to_ert from .pep621 import classifiers2licenses as pep621_classifiers2licenses -from .pep639 import dist2licenses_from_files as pep639_dist2licenses_from_files if TYPE_CHECKING: # pragma: no cover - import sys - from logging import Logger - from cyclonedx.factory.license import LicenseFactory from cyclonedx.model.license import License diff --git a/cyclonedx_py/_internal/utils/pep639.py b/cyclonedx_py/_internal/utils/pep639.py index 7c9082a19..4d9c1d860 100644 --- a/cyclonedx_py/_internal/utils/pep639.py +++ b/cyclonedx_py/_internal/utils/pep639.py @@ -40,12 +40,11 @@ from cyclonedx.factory.license import LicenseFactory from cyclonedx.model.license import License - from ..py_interop.packagemetadata import PackageMetadata - def project2licenses(project: dict[str, Any], lfac: 'LicenseFactory', gather_texts: bool, *, - fpath: str) -> Generator['License', None, None]: + fpath: str, + logger: 'Logger') -> Generator['License', None, None]: lack = LicenseAcknowledgement.DECLARED if isinstance(plicense := project.get('license'), str) \ and len(plicense) > 0: @@ -60,7 +59,14 @@ def project2licenses(project: dict[str, Any], lfac: 'LicenseFactory', # per spec: # > Tools MUST assume that license file content is valid UTF-8 encoded text # anyway, we don't trust this and assume binary - with open(join(plfiles_root, plfile), 'rb') as plicense_fileh: + try: + plicense_fileh = open(join(plfiles_root, plfile), 'rb') + except Exception as err: # pragma: nocover + logger.debug('Error: failed to read license file %r for project %r: %r', + plfile, project.get('name', ''), err) + del err + continue + with plicense_fileh: yield DisjunctiveLicense(name=f'declared license file: {plfile}', acknowledgement=lack, text=AttachedText(encoding=Encoding.BASE_64, @@ -79,7 +85,7 @@ def dist2licenses_from_files( logger: 'Logger' ) -> Generator['License', None, None]: lack = LicenseAcknowledgement.DECLARED - metadata: 'PackageMetadata' = dist.metadata # see https://packaging.python.org/en/latest/specifications/core-metadata/ + metadata = dist.metadata # see https://packaging.python.org/en/latest/specifications/core-metadata/ for mlfile in set(metadata.get_all('License-File', ())): # see spec: https://peps.python.org/pep-0639/#add-license-file-field # latest spec rev: https://discuss.python.org/t/pep-639-round-3-improving-license-clarity-with-better-package-metadata/53020 # noqa: E501 diff --git a/cyclonedx_py/_internal/utils/pyproject.py b/cyclonedx_py/_internal/utils/pyproject.py index 09170a09f..1f98ab7fb 100644 --- a/cyclonedx_py/_internal/utils/pyproject.py +++ b/cyclonedx_py/_internal/utils/pyproject.py @@ -35,6 +35,8 @@ from .toml import toml_loads if TYPE_CHECKING: # pragma: no cover + from logging import Logger + from cyclonedx.model.component import Component, ComponentType from packaging.requirements import Requirement @@ -42,7 +44,8 @@ def pyproject2component(data: dict[str, Any], *, ctype: 'ComponentType', fpath: str, - gather_license_texts: bool + gather_license_texts: bool, + logger: 'Logger' ) -> 'Component': tool = data.get('tool', {}) if poetry := tool.get('poetry'): @@ -51,7 +54,8 @@ def pyproject2component(data: dict[str, Any], *, component = pep621_project2component(project, ctype=ctype) # region licenses lfac = LicenseFactory() - component.licenses.update(pep639_project2licenses(project, lfac, gather_license_texts, fpath=fpath)) + component.licenses.update(pep639_project2licenses(project, lfac, gather_license_texts, + fpath=fpath, logger=logger)) if len(component.licenses) == 0: # According to PEP 639 spec, if licenses are declared in the "new" style, # all other license declarations MUST be ignored. @@ -74,12 +78,14 @@ def pyproject_load(pyproject_file: str) -> dict[str, Any]: def pyproject_file2component(pyproject_file: str, *, ctype: 'ComponentType', - gather_license_texts: bool + gather_license_texts: bool, + logger: 'Logger' ) -> 'Component': return pyproject2component( pyproject_load(pyproject_file), ctype=ctype, fpath=pyproject_file, - gather_license_texts=gather_license_texts + gather_license_texts=gather_license_texts, + logger=logger ) diff --git a/tests/_data/infiles/environment/with-license-pep639/NOTICE b/tests/_data/infiles/environment/with-license-pep639/NOTICE new file mode 100644 index 000000000..af5d43222 --- /dev/null +++ b/tests/_data/infiles/environment/with-license-pep639/NOTICE @@ -0,0 +1 @@ +thisis the content of the NOTICE file. diff --git a/tests/_data/infiles/environment/with-license-pep639/pyproject.toml b/tests/_data/infiles/environment/with-license-pep639/pyproject.toml index a4daf9fb5..07ef67c9f 100644 --- a/tests/_data/infiles/environment/with-license-pep639/pyproject.toml +++ b/tests/_data/infiles/environment/with-license-pep639/pyproject.toml @@ -8,9 +8,9 @@ description = "depenndencies with license declaration accoring to PEP 639" license = "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" # https://peps.python.org/pep-0639/#add-license-files-key license-files = [ - "LICEN[CS]E*", "AUTHORS*", + "LICEN[CS]E*", "AUTHORS*", "NOTICE", "licenses_a/LICENSE.MIT", "licenses_a/*.CC0", - "LICENSE.txt", "licenses_b/**", + "licenses_b/**", "nonexisting_file", "nonexisting_dir/foo", ] diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.json.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.json.bin index db01e0789..73258a1ef 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.json.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.json.bin @@ -451,6 +451,90 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", + "evidence": { + "licenses": [ + { + "license": { + "name": "declared license file: AUTHORS.example", + "text": { + "content": "dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUgY29udGVudAo=", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: LICENCE.dummy", + "text": { + "content": "dGhpcyBpcyBMSUNFTkNFLmR1bW15IGNvbnRlbnQK", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: LICENSE.txt", + "text": { + "content": "dGhpcyBpcyBMSUNFTlNFLnR4dCBjb250ZW50Cg==", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: NOTICE", + "text": { + "content": "dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4K", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: licenses_a/LICENSE.CC0", + "text": { + "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwIGNvbnRlbnQK", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: licenses_a/LICENSE.MIT", + "text": { + "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlUIGNvbnRlbnQK", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: licenses_b/LICENSE.md", + "text": { + "content": "dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQgY29udGVudAo=", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: licenses_b/legal/NOTICE.txt", + "text": { + "content": "dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQgZmlsZS4gaXQgaXMgZXhwZWN0ZWQgdG8gYmUgZGV0ZWN0ZWQuCg==", + "contentType": "text/plain", + "encoding": "base64" + } + } + } + ] + }, "licenses": [ { "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.xml.bin index 06fa74673..950b0addf 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.xml.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.xml.bin @@ -20,6 +20,42 @@ MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) + + + + declared license file: AUTHORS.example + dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUgY29udGVudAo= + + + declared license file: LICENCE.dummy + dGhpcyBpcyBMSUNFTkNFLmR1bW15IGNvbnRlbnQK + + + declared license file: LICENSE.txt + dGhpcyBpcyBMSUNFTlNFLnR4dCBjb250ZW50Cg== + + + declared license file: NOTICE + dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4K + + + declared license file: licenses_a/LICENSE.CC0 + dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwIGNvbnRlbnQK + + + declared license file: licenses_a/LICENSE.MIT + dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlUIGNvbnRlbnQK + + + declared license file: licenses_b/LICENSE.md + dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQgY29udGVudAo= + + + declared license file: licenses_b/legal/NOTICE.txt + dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQgZmlsZS4gaXQgaXMgZXhwZWN0ZWQgdG8gYmUgZGV0ZWN0ZWQuCg== + + + true diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.json.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.json.bin index 3565a8510..e3b13e6b8 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.json.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.json.bin @@ -451,6 +451,90 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", + "evidence": { + "licenses": [ + { + "license": { + "name": "declared license file: AUTHORS.example", + "text": { + "content": "dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUgY29udGVudAo=", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: LICENCE.dummy", + "text": { + "content": "dGhpcyBpcyBMSUNFTkNFLmR1bW15IGNvbnRlbnQK", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: LICENSE.txt", + "text": { + "content": "dGhpcyBpcyBMSUNFTlNFLnR4dCBjb250ZW50Cg==", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: NOTICE", + "text": { + "content": "dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4K", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: licenses_a/LICENSE.CC0", + "text": { + "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwIGNvbnRlbnQK", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: licenses_a/LICENSE.MIT", + "text": { + "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlUIGNvbnRlbnQK", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: licenses_b/LICENSE.md", + "text": { + "content": "dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQgY29udGVudAo=", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: licenses_b/legal/NOTICE.txt", + "text": { + "content": "dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQgZmlsZS4gaXQgaXMgZXhwZWN0ZWQgdG8gYmUgZGV0ZWN0ZWQuCg==", + "contentType": "text/plain", + "encoding": "base64" + } + } + } + ] + }, "licenses": [ { "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.xml.bin index e36e0b4c1..98f3d05c9 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.xml.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.xml.bin @@ -47,6 +47,42 @@ MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) + + + + declared license file: AUTHORS.example + dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUgY29udGVudAo= + + + declared license file: LICENCE.dummy + dGhpcyBpcyBMSUNFTkNFLmR1bW15IGNvbnRlbnQK + + + declared license file: LICENSE.txt + dGhpcyBpcyBMSUNFTlNFLnR4dCBjb250ZW50Cg== + + + declared license file: NOTICE + dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4K + + + declared license file: licenses_a/LICENSE.CC0 + dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwIGNvbnRlbnQK + + + declared license file: licenses_a/LICENSE.MIT + dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlUIGNvbnRlbnQK + + + declared license file: licenses_b/LICENSE.md + dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQgY29udGVudAo= + + + declared license file: licenses_b/legal/NOTICE.txt + dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQgZmlsZS4gaXQgaXMgZXhwZWN0ZWQgdG8gYmUgZGV0ZWN0ZWQuCg== + + + true diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.json.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.json.bin index 30eeb4642..9a7bb8681 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.json.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.json.bin @@ -451,6 +451,90 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", + "evidence": { + "licenses": [ + { + "license": { + "name": "declared license file: AUTHORS.example", + "text": { + "content": "dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUgY29udGVudAo=", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: LICENCE.dummy", + "text": { + "content": "dGhpcyBpcyBMSUNFTkNFLmR1bW15IGNvbnRlbnQK", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: LICENSE.txt", + "text": { + "content": "dGhpcyBpcyBMSUNFTlNFLnR4dCBjb250ZW50Cg==", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: NOTICE", + "text": { + "content": "dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4K", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: licenses_a/LICENSE.CC0", + "text": { + "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwIGNvbnRlbnQK", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: licenses_a/LICENSE.MIT", + "text": { + "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlUIGNvbnRlbnQK", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: licenses_b/LICENSE.md", + "text": { + "content": "dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQgY29udGVudAo=", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: licenses_b/legal/NOTICE.txt", + "text": { + "content": "dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQgZmlsZS4gaXQgaXMgZXhwZWN0ZWQgdG8gYmUgZGV0ZWN0ZWQuCg==", + "contentType": "text/plain", + "encoding": "base64" + } + } + } + ] + }, "licenses": [ { "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.xml.bin index d928542e4..89eafa7a8 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.xml.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.xml.bin @@ -57,6 +57,42 @@ MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) + + + + declared license file: AUTHORS.example + dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUgY29udGVudAo= + + + declared license file: LICENCE.dummy + dGhpcyBpcyBMSUNFTkNFLmR1bW15IGNvbnRlbnQK + + + declared license file: LICENSE.txt + dGhpcyBpcyBMSUNFTlNFLnR4dCBjb250ZW50Cg== + + + declared license file: NOTICE + dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4K + + + declared license file: licenses_a/LICENSE.CC0 + dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwIGNvbnRlbnQK + + + declared license file: licenses_a/LICENSE.MIT + dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlUIGNvbnRlbnQK + + + declared license file: licenses_b/LICENSE.md + dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQgY29udGVudAo= + + + declared license file: licenses_b/legal/NOTICE.txt + dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQgZmlsZS4gaXQgaXMgZXhwZWN0ZWQgdG8gYmUgZGV0ZWN0ZWQuCg== + + + true diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.json.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.json.bin index 6280ed936..8749333ca 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.json.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.json.bin @@ -482,6 +482,98 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", + "evidence": { + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: AUTHORS.example", + "text": { + "content": "dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUgY29udGVudAo=", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: LICENCE.dummy", + "text": { + "content": "dGhpcyBpcyBMSUNFTkNFLmR1bW15IGNvbnRlbnQK", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: LICENSE.txt", + "text": { + "content": "dGhpcyBpcyBMSUNFTlNFLnR4dCBjb250ZW50Cg==", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: NOTICE", + "text": { + "content": "dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4K", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: licenses_a/LICENSE.CC0", + "text": { + "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwIGNvbnRlbnQK", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: licenses_a/LICENSE.MIT", + "text": { + "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlUIGNvbnRlbnQK", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: licenses_b/LICENSE.md", + "text": { + "content": "dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQgY29udGVudAo=", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: licenses_b/legal/NOTICE.txt", + "text": { + "content": "dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQgZmlsZS4gaXQgaXMgZXhwZWN0ZWQgdG8gYmUgZGV0ZWN0ZWQuCg==", + "contentType": "text/plain", + "encoding": "base64" + } + } + } + ] + }, "licenses": [ { "acknowledgement": "declared", diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.xml.bin index d8d78b19c..dd745840e 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.xml.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.xml.bin @@ -57,6 +57,42 @@ MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) + + + + declared license file: AUTHORS.example + dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUgY29udGVudAo= + + + declared license file: LICENCE.dummy + dGhpcyBpcyBMSUNFTkNFLmR1bW15IGNvbnRlbnQK + + + declared license file: LICENSE.txt + dGhpcyBpcyBMSUNFTlNFLnR4dCBjb250ZW50Cg== + + + declared license file: NOTICE + dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4K + + + declared license file: licenses_a/LICENSE.CC0 + dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwIGNvbnRlbnQK + + + declared license file: licenses_a/LICENSE.MIT + dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlUIGNvbnRlbnQK + + + declared license file: licenses_b/LICENSE.md + dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQgY29udGVudAo= + + + declared license file: licenses_b/legal/NOTICE.txt + dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQgZmlsZS4gaXQgaXMgZXhwZWN0ZWQgdG8gYmUgZGV0ZWN0ZWQuCg== + + + true diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.json.bin index db01e0789..73258a1ef 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.json.bin @@ -451,6 +451,90 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", + "evidence": { + "licenses": [ + { + "license": { + "name": "declared license file: AUTHORS.example", + "text": { + "content": "dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUgY29udGVudAo=", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: LICENCE.dummy", + "text": { + "content": "dGhpcyBpcyBMSUNFTkNFLmR1bW15IGNvbnRlbnQK", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: LICENSE.txt", + "text": { + "content": "dGhpcyBpcyBMSUNFTlNFLnR4dCBjb250ZW50Cg==", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: NOTICE", + "text": { + "content": "dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4K", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: licenses_a/LICENSE.CC0", + "text": { + "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwIGNvbnRlbnQK", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: licenses_a/LICENSE.MIT", + "text": { + "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlUIGNvbnRlbnQK", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: licenses_b/LICENSE.md", + "text": { + "content": "dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQgY29udGVudAo=", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: licenses_b/legal/NOTICE.txt", + "text": { + "content": "dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQgZmlsZS4gaXQgaXMgZXhwZWN0ZWQgdG8gYmUgZGV0ZWN0ZWQuCg==", + "contentType": "text/plain", + "encoding": "base64" + } + } + } + ] + }, "licenses": [ { "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.xml.bin index 06fa74673..950b0addf 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.xml.bin @@ -20,6 +20,42 @@ MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) + + + + declared license file: AUTHORS.example + dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUgY29udGVudAo= + + + declared license file: LICENCE.dummy + dGhpcyBpcyBMSUNFTkNFLmR1bW15IGNvbnRlbnQK + + + declared license file: LICENSE.txt + dGhpcyBpcyBMSUNFTlNFLnR4dCBjb250ZW50Cg== + + + declared license file: NOTICE + dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4K + + + declared license file: licenses_a/LICENSE.CC0 + dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwIGNvbnRlbnQK + + + declared license file: licenses_a/LICENSE.MIT + dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlUIGNvbnRlbnQK + + + declared license file: licenses_b/LICENSE.md + dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQgY29udGVudAo= + + + declared license file: licenses_b/legal/NOTICE.txt + dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQgZmlsZS4gaXQgaXMgZXhwZWN0ZWQgdG8gYmUgZGV0ZWN0ZWQuCg== + + + true diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.json.bin index 3565a8510..e3b13e6b8 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.json.bin @@ -451,6 +451,90 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", + "evidence": { + "licenses": [ + { + "license": { + "name": "declared license file: AUTHORS.example", + "text": { + "content": "dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUgY29udGVudAo=", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: LICENCE.dummy", + "text": { + "content": "dGhpcyBpcyBMSUNFTkNFLmR1bW15IGNvbnRlbnQK", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: LICENSE.txt", + "text": { + "content": "dGhpcyBpcyBMSUNFTlNFLnR4dCBjb250ZW50Cg==", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: NOTICE", + "text": { + "content": "dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4K", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: licenses_a/LICENSE.CC0", + "text": { + "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwIGNvbnRlbnQK", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: licenses_a/LICENSE.MIT", + "text": { + "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlUIGNvbnRlbnQK", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: licenses_b/LICENSE.md", + "text": { + "content": "dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQgY29udGVudAo=", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: licenses_b/legal/NOTICE.txt", + "text": { + "content": "dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQgZmlsZS4gaXQgaXMgZXhwZWN0ZWQgdG8gYmUgZGV0ZWN0ZWQuCg==", + "contentType": "text/plain", + "encoding": "base64" + } + } + } + ] + }, "licenses": [ { "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.xml.bin index e36e0b4c1..98f3d05c9 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.xml.bin @@ -47,6 +47,42 @@ MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) + + + + declared license file: AUTHORS.example + dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUgY29udGVudAo= + + + declared license file: LICENCE.dummy + dGhpcyBpcyBMSUNFTkNFLmR1bW15IGNvbnRlbnQK + + + declared license file: LICENSE.txt + dGhpcyBpcyBMSUNFTlNFLnR4dCBjb250ZW50Cg== + + + declared license file: NOTICE + dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4K + + + declared license file: licenses_a/LICENSE.CC0 + dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwIGNvbnRlbnQK + + + declared license file: licenses_a/LICENSE.MIT + dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlUIGNvbnRlbnQK + + + declared license file: licenses_b/LICENSE.md + dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQgY29udGVudAo= + + + declared license file: licenses_b/legal/NOTICE.txt + dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQgZmlsZS4gaXQgaXMgZXhwZWN0ZWQgdG8gYmUgZGV0ZWN0ZWQuCg== + + + true diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.json.bin index 30eeb4642..9a7bb8681 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.json.bin @@ -451,6 +451,90 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", + "evidence": { + "licenses": [ + { + "license": { + "name": "declared license file: AUTHORS.example", + "text": { + "content": "dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUgY29udGVudAo=", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: LICENCE.dummy", + "text": { + "content": "dGhpcyBpcyBMSUNFTkNFLmR1bW15IGNvbnRlbnQK", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: LICENSE.txt", + "text": { + "content": "dGhpcyBpcyBMSUNFTlNFLnR4dCBjb250ZW50Cg==", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: NOTICE", + "text": { + "content": "dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4K", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: licenses_a/LICENSE.CC0", + "text": { + "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwIGNvbnRlbnQK", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: licenses_a/LICENSE.MIT", + "text": { + "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlUIGNvbnRlbnQK", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: licenses_b/LICENSE.md", + "text": { + "content": "dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQgY29udGVudAo=", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: licenses_b/legal/NOTICE.txt", + "text": { + "content": "dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQgZmlsZS4gaXQgaXMgZXhwZWN0ZWQgdG8gYmUgZGV0ZWN0ZWQuCg==", + "contentType": "text/plain", + "encoding": "base64" + } + } + } + ] + }, "licenses": [ { "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.xml.bin index d928542e4..89eafa7a8 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.xml.bin @@ -57,6 +57,42 @@ MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) + + + + declared license file: AUTHORS.example + dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUgY29udGVudAo= + + + declared license file: LICENCE.dummy + dGhpcyBpcyBMSUNFTkNFLmR1bW15IGNvbnRlbnQK + + + declared license file: LICENSE.txt + dGhpcyBpcyBMSUNFTlNFLnR4dCBjb250ZW50Cg== + + + declared license file: NOTICE + dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4K + + + declared license file: licenses_a/LICENSE.CC0 + dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwIGNvbnRlbnQK + + + declared license file: licenses_a/LICENSE.MIT + dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlUIGNvbnRlbnQK + + + declared license file: licenses_b/LICENSE.md + dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQgY29udGVudAo= + + + declared license file: licenses_b/legal/NOTICE.txt + dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQgZmlsZS4gaXQgaXMgZXhwZWN0ZWQgdG8gYmUgZGV0ZWN0ZWQuCg== + + + true diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.json.bin index 6280ed936..8749333ca 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.json.bin @@ -482,6 +482,98 @@ "component": { "bom-ref": "root-component", "description": "depenndencies with license declaration accoring to PEP 639", + "evidence": { + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: AUTHORS.example", + "text": { + "content": "dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUgY29udGVudAo=", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: LICENCE.dummy", + "text": { + "content": "dGhpcyBpcyBMSUNFTkNFLmR1bW15IGNvbnRlbnQK", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: LICENSE.txt", + "text": { + "content": "dGhpcyBpcyBMSUNFTlNFLnR4dCBjb250ZW50Cg==", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: NOTICE", + "text": { + "content": "dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4K", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: licenses_a/LICENSE.CC0", + "text": { + "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwIGNvbnRlbnQK", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: licenses_a/LICENSE.MIT", + "text": { + "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlUIGNvbnRlbnQK", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: licenses_b/LICENSE.md", + "text": { + "content": "dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQgY29udGVudAo=", + "contentType": "text/plain", + "encoding": "base64" + } + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: licenses_b/legal/NOTICE.txt", + "text": { + "content": "dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQgZmlsZS4gaXQgaXMgZXhwZWN0ZWQgdG8gYmUgZGV0ZWN0ZWQuCg==", + "contentType": "text/plain", + "encoding": "base64" + } + } + } + ] + }, "licenses": [ { "acknowledgement": "declared", diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.xml.bin index d8d78b19c..dd745840e 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.xml.bin @@ -57,6 +57,42 @@ MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) + + + + declared license file: AUTHORS.example + dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUgY29udGVudAo= + + + declared license file: LICENCE.dummy + dGhpcyBpcyBMSUNFTkNFLmR1bW15IGNvbnRlbnQK + + + declared license file: LICENSE.txt + dGhpcyBpcyBMSUNFTlNFLnR4dCBjb250ZW50Cg== + + + declared license file: NOTICE + dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4K + + + declared license file: licenses_a/LICENSE.CC0 + dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwIGNvbnRlbnQK + + + declared license file: licenses_a/LICENSE.MIT + dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlUIGNvbnRlbnQK + + + declared license file: licenses_b/LICENSE.md + dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQgY29udGVudAo= + + + declared license file: licenses_b/legal/NOTICE.txt + dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQgZmlsZS4gaXQgaXMgZXhwZWN0ZWQgdG8gYmUgZGV0ZWN0ZWQuCg== + + + true From 11f6584e345e66d1cfefa342c565f5ea151ee95f Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Tue, 8 Jul 2025 14:03:34 +0200 Subject: [PATCH 11/49] wip Signed-off-by: Jan Kowalleck --- .../infiles/environment/with-license-pep639/LICENSES/readme.md | 1 + .../infiles/environment/with-license-pep639/pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 tests/_data/infiles/environment/with-license-pep639/LICENSES/readme.md diff --git a/tests/_data/infiles/environment/with-license-pep639/LICENSES/readme.md b/tests/_data/infiles/environment/with-license-pep639/LICENSES/readme.md new file mode 100644 index 000000000..a97a7ec4b --- /dev/null +++ b/tests/_data/infiles/environment/with-license-pep639/LICENSES/readme.md @@ -0,0 +1 @@ +the content in this dir is to be ignored. diff --git a/tests/_data/infiles/environment/with-license-pep639/pyproject.toml b/tests/_data/infiles/environment/with-license-pep639/pyproject.toml index 07ef67c9f..648c7fcef 100644 --- a/tests/_data/infiles/environment/with-license-pep639/pyproject.toml +++ b/tests/_data/infiles/environment/with-license-pep639/pyproject.toml @@ -10,7 +10,7 @@ license = "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" license-files = [ "LICEN[CS]E*", "AUTHORS*", "NOTICE", "licenses_a/LICENSE.MIT", "licenses_a/*.CC0", - "licenses_b/**", + "licenses_b/**", "nonexisting_file", "nonexisting_dir/foo", ] From 49acd6f9353a8b24cbdf0ab3d9d69078254bee41 Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Tue, 8 Jul 2025 14:04:14 +0200 Subject: [PATCH 12/49] wip Signed-off-by: Jan Kowalleck --- .../infiles/environment/with-license-pep639/LICENSES/readme.md | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/_data/infiles/environment/with-license-pep639/LICENSES/readme.md b/tests/_data/infiles/environment/with-license-pep639/LICENSES/readme.md index a97a7ec4b..b94f073b4 100644 --- a/tests/_data/infiles/environment/with-license-pep639/LICENSES/readme.md +++ b/tests/_data/infiles/environment/with-license-pep639/LICENSES/readme.md @@ -1 +1,2 @@ the content in this dir is to be ignored. +yet, the glob pattern `LICEN[CS]E*` matches it, bit tis is a a dir, not a file ... From b8de27d447e949858edb71f320bd14466e305ac9 Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Tue, 8 Jul 2025 14:04:39 +0200 Subject: [PATCH 13/49] wip Signed-off-by: Jan Kowalleck --- .../infiles/environment/with-license-pep639/LICENSES/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/_data/infiles/environment/with-license-pep639/LICENSES/readme.md b/tests/_data/infiles/environment/with-license-pep639/LICENSES/readme.md index b94f073b4..0e77dd904 100644 --- a/tests/_data/infiles/environment/with-license-pep639/LICENSES/readme.md +++ b/tests/_data/infiles/environment/with-license-pep639/LICENSES/readme.md @@ -1,2 +1,2 @@ the content in this dir is to be ignored. -yet, the glob pattern `LICEN[CS]E*` matches it, bit tis is a a dir, not a file ... +yet, the glob pattern `LICEN[CS]E*` matches it, but this is a a dir, not a file ... From 9bc8fc832ad86b5b85adfc7679efecd835071536 Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Tue, 8 Jul 2025 14:28:42 +0200 Subject: [PATCH 14/49] wip Signed-off-by: Jan Kowalleck --- cyclonedx_py/_internal/utils/pep639.py | 48 +++++++++++-------- ...639-texts_with-license-pep639_1.3.json.bin | 40 +++++++--------- ...p639-texts_with-license-pep639_1.3.xml.bin | 24 ++++++---- ...639-texts_with-license-pep639_1.4.json.bin | 40 +++++++--------- ...p639-texts_with-license-pep639_1.4.xml.bin | 24 ++++++---- ...639-texts_with-license-pep639_1.5.json.bin | 40 +++++++--------- ...p639-texts_with-license-pep639_1.5.xml.bin | 24 ++++++---- ...639-texts_with-license-pep639_1.6.json.bin | 40 +++++++--------- ...p639-texts_with-license-pep639_1.6.xml.bin | 24 ++++++---- .../texts_with-license-pep639_1.3.json.bin | 40 +++++++--------- .../texts_with-license-pep639_1.3.xml.bin | 24 ++++++---- .../texts_with-license-pep639_1.4.json.bin | 40 +++++++--------- .../texts_with-license-pep639_1.4.xml.bin | 24 ++++++---- .../texts_with-license-pep639_1.5.json.bin | 40 +++++++--------- .../texts_with-license-pep639_1.5.xml.bin | 24 ++++++---- .../texts_with-license-pep639_1.6.json.bin | 40 +++++++--------- .../texts_with-license-pep639_1.6.xml.bin | 24 ++++++---- 17 files changed, 285 insertions(+), 275 deletions(-) diff --git a/cyclonedx_py/_internal/utils/pep639.py b/cyclonedx_py/_internal/utils/pep639.py index 4d9c1d860..ebf141d67 100644 --- a/cyclonedx_py/_internal/utils/pep639.py +++ b/cyclonedx_py/_internal/utils/pep639.py @@ -24,7 +24,7 @@ from base64 import b64encode from collections.abc import Generator from os.path import dirname, join -from typing import TYPE_CHECKING, Any +from typing import TYPE_CHECKING, Any, AnyStr from cyclonedx.model import AttachedText, Encoding from cyclonedx.model.license import DisjunctiveLicense, LicenseAcknowledgement @@ -67,10 +67,8 @@ def project2licenses(project: dict[str, Any], lfac: 'LicenseFactory', del err continue with plicense_fileh: - yield DisjunctiveLicense(name=f'declared license file: {plfile}', - acknowledgement=lack, - text=AttachedText(encoding=Encoding.BASE_64, - content=b64encode(plicense_fileh.read()).decode())) + content = plicense_fileh.read() + yield _make_license_from_content(plfile, content, lack) # Silently skip any other types (including string/PEP 621) return None @@ -107,17 +105,29 @@ def dist2licenses_from_files( logger.debug('Error: failed to read license file %r for dist %r', mlfile, metadata['Name']) continue - encoding = None - content_type = guess_type(mlfile) or AttachedText.DEFAULT_CONTENT_TYPE - # per default, license files are human-readable texts. - if not content_type.startswith('text/'): - encoding = Encoding.BASE_64 - content = b64encode(content.encode('utf-8')).decode('ascii') - yield DisjunctiveLicense( - name=f'declared license file: {mlfile}', - acknowledgement=lack, - text=AttachedText( - content=content, - encoding=encoding, - content_type=content_type - )) + yield _make_license_from_content(mlfile, content, lack) + + +def _make_license_from_content(file_name: str, content: AnyStr, lack: 'LicenseAcknowledgement') -> DisjunctiveLicense: + encoding = None + content_type = guess_type(file_name) or AttachedText.DEFAULT_CONTENT_TYPE + # per default, license files are human-readable texts. + if content_type.startswith('text/'): + content_s = bytes2str(content) \ + if isinstance(content, bytes) \ + else content + else: + encoding = Encoding.BASE_64 + content_s = b64encode( + content + if isinstance(content, bytes) + else content.encode('utf-8') + ).decode('ascii') + return DisjunctiveLicense( + name=f'{lack.value} license file: {file_name}', + acknowledgement=lack, + text=AttachedText( + content=content_s, + encoding=encoding, + content_type=content_type + )) diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.json.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.json.bin index 73258a1ef..7d3ff96ff 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.json.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.json.bin @@ -457,9 +457,8 @@ "license": { "name": "declared license file: AUTHORS.example", "text": { - "content": "dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUgY29udGVudAo=", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is AUTHORS.example content\n", + "contentType": "text/plain" } } }, @@ -467,9 +466,8 @@ "license": { "name": "declared license file: LICENCE.dummy", "text": { - "content": "dGhpcyBpcyBMSUNFTkNFLmR1bW15IGNvbnRlbnQK", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is LICENCE.dummy content\n", + "contentType": "text/plain" } } }, @@ -477,9 +475,8 @@ "license": { "name": "declared license file: LICENSE.txt", "text": { - "content": "dGhpcyBpcyBMSUNFTlNFLnR4dCBjb250ZW50Cg==", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is LICENSE.txt content\n", + "contentType": "text/plain" } } }, @@ -487,9 +484,8 @@ "license": { "name": "declared license file: NOTICE", "text": { - "content": "dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4K", - "contentType": "text/plain", - "encoding": "base64" + "content": "thisis the content of the NOTICE file.\n", + "contentType": "text/plain" } } }, @@ -497,9 +493,8 @@ "license": { "name": "declared license file: licenses_a/LICENSE.CC0", "text": { - "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwIGNvbnRlbnQK", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is licenses_a/LICENSE.CC0 content\n", + "contentType": "text/plain" } } }, @@ -507,9 +502,8 @@ "license": { "name": "declared license file: licenses_a/LICENSE.MIT", "text": { - "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlUIGNvbnRlbnQK", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is licenses_a/LICENSE.MIT content\n", + "contentType": "text/plain" } } }, @@ -517,9 +511,8 @@ "license": { "name": "declared license file: licenses_b/LICENSE.md", "text": { - "content": "dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQgY29udGVudAo=", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is licenses_b/LICENSE.md content\n", + "contentType": "text/markdown" } } }, @@ -527,9 +520,8 @@ "license": { "name": "declared license file: licenses_b/legal/NOTICE.txt", "text": { - "content": "dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQgZmlsZS4gaXQgaXMgZXhwZWN0ZWQgdG8gYmUgZGV0ZWN0ZWQuCg==", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is the content of licenses_b/legal/NOTICE.txt file. it is expected to be detected.\n", + "contentType": "text/plain" } } } diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.xml.bin index 950b0addf..ee71c7168 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.xml.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.xml.bin @@ -24,35 +24,43 @@ declared license file: AUTHORS.example - dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUgY29udGVudAo= + this is AUTHORS.example content + declared license file: LICENCE.dummy - dGhpcyBpcyBMSUNFTkNFLmR1bW15IGNvbnRlbnQK + this is LICENCE.dummy content + declared license file: LICENSE.txt - dGhpcyBpcyBMSUNFTlNFLnR4dCBjb250ZW50Cg== + this is LICENSE.txt content + declared license file: NOTICE - dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4K + thisis the content of the NOTICE file. + declared license file: licenses_a/LICENSE.CC0 - dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwIGNvbnRlbnQK + this is licenses_a/LICENSE.CC0 content + declared license file: licenses_a/LICENSE.MIT - dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlUIGNvbnRlbnQK + this is licenses_a/LICENSE.MIT content + declared license file: licenses_b/LICENSE.md - dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQgY29udGVudAo= + this is licenses_b/LICENSE.md content + declared license file: licenses_b/legal/NOTICE.txt - dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQgZmlsZS4gaXQgaXMgZXhwZWN0ZWQgdG8gYmUgZGV0ZWN0ZWQuCg== + this is the content of licenses_b/legal/NOTICE.txt file. it is expected to be detected. + diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.json.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.json.bin index e3b13e6b8..24396f7f7 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.json.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.json.bin @@ -457,9 +457,8 @@ "license": { "name": "declared license file: AUTHORS.example", "text": { - "content": "dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUgY29udGVudAo=", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is AUTHORS.example content\n", + "contentType": "text/plain" } } }, @@ -467,9 +466,8 @@ "license": { "name": "declared license file: LICENCE.dummy", "text": { - "content": "dGhpcyBpcyBMSUNFTkNFLmR1bW15IGNvbnRlbnQK", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is LICENCE.dummy content\n", + "contentType": "text/plain" } } }, @@ -477,9 +475,8 @@ "license": { "name": "declared license file: LICENSE.txt", "text": { - "content": "dGhpcyBpcyBMSUNFTlNFLnR4dCBjb250ZW50Cg==", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is LICENSE.txt content\n", + "contentType": "text/plain" } } }, @@ -487,9 +484,8 @@ "license": { "name": "declared license file: NOTICE", "text": { - "content": "dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4K", - "contentType": "text/plain", - "encoding": "base64" + "content": "thisis the content of the NOTICE file.\n", + "contentType": "text/plain" } } }, @@ -497,9 +493,8 @@ "license": { "name": "declared license file: licenses_a/LICENSE.CC0", "text": { - "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwIGNvbnRlbnQK", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is licenses_a/LICENSE.CC0 content\n", + "contentType": "text/plain" } } }, @@ -507,9 +502,8 @@ "license": { "name": "declared license file: licenses_a/LICENSE.MIT", "text": { - "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlUIGNvbnRlbnQK", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is licenses_a/LICENSE.MIT content\n", + "contentType": "text/plain" } } }, @@ -517,9 +511,8 @@ "license": { "name": "declared license file: licenses_b/LICENSE.md", "text": { - "content": "dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQgY29udGVudAo=", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is licenses_b/LICENSE.md content\n", + "contentType": "text/markdown" } } }, @@ -527,9 +520,8 @@ "license": { "name": "declared license file: licenses_b/legal/NOTICE.txt", "text": { - "content": "dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQgZmlsZS4gaXQgaXMgZXhwZWN0ZWQgdG8gYmUgZGV0ZWN0ZWQuCg==", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is the content of licenses_b/legal/NOTICE.txt file. it is expected to be detected.\n", + "contentType": "text/plain" } } } diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.xml.bin index 98f3d05c9..d8071f64c 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.xml.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.xml.bin @@ -51,35 +51,43 @@ declared license file: AUTHORS.example - dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUgY29udGVudAo= + this is AUTHORS.example content + declared license file: LICENCE.dummy - dGhpcyBpcyBMSUNFTkNFLmR1bW15IGNvbnRlbnQK + this is LICENCE.dummy content + declared license file: LICENSE.txt - dGhpcyBpcyBMSUNFTlNFLnR4dCBjb250ZW50Cg== + this is LICENSE.txt content + declared license file: NOTICE - dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4K + thisis the content of the NOTICE file. + declared license file: licenses_a/LICENSE.CC0 - dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwIGNvbnRlbnQK + this is licenses_a/LICENSE.CC0 content + declared license file: licenses_a/LICENSE.MIT - dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlUIGNvbnRlbnQK + this is licenses_a/LICENSE.MIT content + declared license file: licenses_b/LICENSE.md - dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQgY29udGVudAo= + this is licenses_b/LICENSE.md content + declared license file: licenses_b/legal/NOTICE.txt - dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQgZmlsZS4gaXQgaXMgZXhwZWN0ZWQgdG8gYmUgZGV0ZWN0ZWQuCg== + this is the content of licenses_b/legal/NOTICE.txt file. it is expected to be detected. + diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.json.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.json.bin index 9a7bb8681..9bf685ae8 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.json.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.json.bin @@ -457,9 +457,8 @@ "license": { "name": "declared license file: AUTHORS.example", "text": { - "content": "dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUgY29udGVudAo=", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is AUTHORS.example content\n", + "contentType": "text/plain" } } }, @@ -467,9 +466,8 @@ "license": { "name": "declared license file: LICENCE.dummy", "text": { - "content": "dGhpcyBpcyBMSUNFTkNFLmR1bW15IGNvbnRlbnQK", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is LICENCE.dummy content\n", + "contentType": "text/plain" } } }, @@ -477,9 +475,8 @@ "license": { "name": "declared license file: LICENSE.txt", "text": { - "content": "dGhpcyBpcyBMSUNFTlNFLnR4dCBjb250ZW50Cg==", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is LICENSE.txt content\n", + "contentType": "text/plain" } } }, @@ -487,9 +484,8 @@ "license": { "name": "declared license file: NOTICE", "text": { - "content": "dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4K", - "contentType": "text/plain", - "encoding": "base64" + "content": "thisis the content of the NOTICE file.\n", + "contentType": "text/plain" } } }, @@ -497,9 +493,8 @@ "license": { "name": "declared license file: licenses_a/LICENSE.CC0", "text": { - "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwIGNvbnRlbnQK", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is licenses_a/LICENSE.CC0 content\n", + "contentType": "text/plain" } } }, @@ -507,9 +502,8 @@ "license": { "name": "declared license file: licenses_a/LICENSE.MIT", "text": { - "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlUIGNvbnRlbnQK", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is licenses_a/LICENSE.MIT content\n", + "contentType": "text/plain" } } }, @@ -517,9 +511,8 @@ "license": { "name": "declared license file: licenses_b/LICENSE.md", "text": { - "content": "dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQgY29udGVudAo=", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is licenses_b/LICENSE.md content\n", + "contentType": "text/markdown" } } }, @@ -527,9 +520,8 @@ "license": { "name": "declared license file: licenses_b/legal/NOTICE.txt", "text": { - "content": "dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQgZmlsZS4gaXQgaXMgZXhwZWN0ZWQgdG8gYmUgZGV0ZWN0ZWQuCg==", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is the content of licenses_b/legal/NOTICE.txt file. it is expected to be detected.\n", + "contentType": "text/plain" } } } diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.xml.bin index 89eafa7a8..f54e73655 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.xml.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.xml.bin @@ -61,35 +61,43 @@ declared license file: AUTHORS.example - dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUgY29udGVudAo= + this is AUTHORS.example content + declared license file: LICENCE.dummy - dGhpcyBpcyBMSUNFTkNFLmR1bW15IGNvbnRlbnQK + this is LICENCE.dummy content + declared license file: LICENSE.txt - dGhpcyBpcyBMSUNFTlNFLnR4dCBjb250ZW50Cg== + this is LICENSE.txt content + declared license file: NOTICE - dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4K + thisis the content of the NOTICE file. + declared license file: licenses_a/LICENSE.CC0 - dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwIGNvbnRlbnQK + this is licenses_a/LICENSE.CC0 content + declared license file: licenses_a/LICENSE.MIT - dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlUIGNvbnRlbnQK + this is licenses_a/LICENSE.MIT content + declared license file: licenses_b/LICENSE.md - dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQgY29udGVudAo= + this is licenses_b/LICENSE.md content + declared license file: licenses_b/legal/NOTICE.txt - dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQgZmlsZS4gaXQgaXMgZXhwZWN0ZWQgdG8gYmUgZGV0ZWN0ZWQuCg== + this is the content of licenses_b/legal/NOTICE.txt file. it is expected to be detected. + diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.json.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.json.bin index 8749333ca..a3895fb11 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.json.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.json.bin @@ -489,9 +489,8 @@ "acknowledgement": "declared", "name": "declared license file: AUTHORS.example", "text": { - "content": "dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUgY29udGVudAo=", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is AUTHORS.example content\n", + "contentType": "text/plain" } } }, @@ -500,9 +499,8 @@ "acknowledgement": "declared", "name": "declared license file: LICENCE.dummy", "text": { - "content": "dGhpcyBpcyBMSUNFTkNFLmR1bW15IGNvbnRlbnQK", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is LICENCE.dummy content\n", + "contentType": "text/plain" } } }, @@ -511,9 +509,8 @@ "acknowledgement": "declared", "name": "declared license file: LICENSE.txt", "text": { - "content": "dGhpcyBpcyBMSUNFTlNFLnR4dCBjb250ZW50Cg==", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is LICENSE.txt content\n", + "contentType": "text/plain" } } }, @@ -522,9 +519,8 @@ "acknowledgement": "declared", "name": "declared license file: NOTICE", "text": { - "content": "dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4K", - "contentType": "text/plain", - "encoding": "base64" + "content": "thisis the content of the NOTICE file.\n", + "contentType": "text/plain" } } }, @@ -533,9 +529,8 @@ "acknowledgement": "declared", "name": "declared license file: licenses_a/LICENSE.CC0", "text": { - "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwIGNvbnRlbnQK", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is licenses_a/LICENSE.CC0 content\n", + "contentType": "text/plain" } } }, @@ -544,9 +539,8 @@ "acknowledgement": "declared", "name": "declared license file: licenses_a/LICENSE.MIT", "text": { - "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlUIGNvbnRlbnQK", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is licenses_a/LICENSE.MIT content\n", + "contentType": "text/plain" } } }, @@ -555,9 +549,8 @@ "acknowledgement": "declared", "name": "declared license file: licenses_b/LICENSE.md", "text": { - "content": "dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQgY29udGVudAo=", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is licenses_b/LICENSE.md content\n", + "contentType": "text/markdown" } } }, @@ -566,9 +559,8 @@ "acknowledgement": "declared", "name": "declared license file: licenses_b/legal/NOTICE.txt", "text": { - "content": "dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQgZmlsZS4gaXQgaXMgZXhwZWN0ZWQgdG8gYmUgZGV0ZWN0ZWQuCg==", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is the content of licenses_b/legal/NOTICE.txt file. it is expected to be detected.\n", + "contentType": "text/plain" } } } diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.xml.bin index dd745840e..2326b6849 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.xml.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.xml.bin @@ -61,35 +61,43 @@ declared license file: AUTHORS.example - dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUgY29udGVudAo= + this is AUTHORS.example content + declared license file: LICENCE.dummy - dGhpcyBpcyBMSUNFTkNFLmR1bW15IGNvbnRlbnQK + this is LICENCE.dummy content + declared license file: LICENSE.txt - dGhpcyBpcyBMSUNFTlNFLnR4dCBjb250ZW50Cg== + this is LICENSE.txt content + declared license file: NOTICE - dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4K + thisis the content of the NOTICE file. + declared license file: licenses_a/LICENSE.CC0 - dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwIGNvbnRlbnQK + this is licenses_a/LICENSE.CC0 content + declared license file: licenses_a/LICENSE.MIT - dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlUIGNvbnRlbnQK + this is licenses_a/LICENSE.MIT content + declared license file: licenses_b/LICENSE.md - dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQgY29udGVudAo= + this is licenses_b/LICENSE.md content + declared license file: licenses_b/legal/NOTICE.txt - dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQgZmlsZS4gaXQgaXMgZXhwZWN0ZWQgdG8gYmUgZGV0ZWN0ZWQuCg== + this is the content of licenses_b/legal/NOTICE.txt file. it is expected to be detected. + diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.json.bin index 73258a1ef..7d3ff96ff 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.json.bin @@ -457,9 +457,8 @@ "license": { "name": "declared license file: AUTHORS.example", "text": { - "content": "dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUgY29udGVudAo=", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is AUTHORS.example content\n", + "contentType": "text/plain" } } }, @@ -467,9 +466,8 @@ "license": { "name": "declared license file: LICENCE.dummy", "text": { - "content": "dGhpcyBpcyBMSUNFTkNFLmR1bW15IGNvbnRlbnQK", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is LICENCE.dummy content\n", + "contentType": "text/plain" } } }, @@ -477,9 +475,8 @@ "license": { "name": "declared license file: LICENSE.txt", "text": { - "content": "dGhpcyBpcyBMSUNFTlNFLnR4dCBjb250ZW50Cg==", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is LICENSE.txt content\n", + "contentType": "text/plain" } } }, @@ -487,9 +484,8 @@ "license": { "name": "declared license file: NOTICE", "text": { - "content": "dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4K", - "contentType": "text/plain", - "encoding": "base64" + "content": "thisis the content of the NOTICE file.\n", + "contentType": "text/plain" } } }, @@ -497,9 +493,8 @@ "license": { "name": "declared license file: licenses_a/LICENSE.CC0", "text": { - "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwIGNvbnRlbnQK", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is licenses_a/LICENSE.CC0 content\n", + "contentType": "text/plain" } } }, @@ -507,9 +502,8 @@ "license": { "name": "declared license file: licenses_a/LICENSE.MIT", "text": { - "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlUIGNvbnRlbnQK", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is licenses_a/LICENSE.MIT content\n", + "contentType": "text/plain" } } }, @@ -517,9 +511,8 @@ "license": { "name": "declared license file: licenses_b/LICENSE.md", "text": { - "content": "dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQgY29udGVudAo=", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is licenses_b/LICENSE.md content\n", + "contentType": "text/markdown" } } }, @@ -527,9 +520,8 @@ "license": { "name": "declared license file: licenses_b/legal/NOTICE.txt", "text": { - "content": "dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQgZmlsZS4gaXQgaXMgZXhwZWN0ZWQgdG8gYmUgZGV0ZWN0ZWQuCg==", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is the content of licenses_b/legal/NOTICE.txt file. it is expected to be detected.\n", + "contentType": "text/plain" } } } diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.xml.bin index 950b0addf..ee71c7168 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.xml.bin @@ -24,35 +24,43 @@ declared license file: AUTHORS.example - dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUgY29udGVudAo= + this is AUTHORS.example content + declared license file: LICENCE.dummy - dGhpcyBpcyBMSUNFTkNFLmR1bW15IGNvbnRlbnQK + this is LICENCE.dummy content + declared license file: LICENSE.txt - dGhpcyBpcyBMSUNFTlNFLnR4dCBjb250ZW50Cg== + this is LICENSE.txt content + declared license file: NOTICE - dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4K + thisis the content of the NOTICE file. + declared license file: licenses_a/LICENSE.CC0 - dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwIGNvbnRlbnQK + this is licenses_a/LICENSE.CC0 content + declared license file: licenses_a/LICENSE.MIT - dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlUIGNvbnRlbnQK + this is licenses_a/LICENSE.MIT content + declared license file: licenses_b/LICENSE.md - dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQgY29udGVudAo= + this is licenses_b/LICENSE.md content + declared license file: licenses_b/legal/NOTICE.txt - dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQgZmlsZS4gaXQgaXMgZXhwZWN0ZWQgdG8gYmUgZGV0ZWN0ZWQuCg== + this is the content of licenses_b/legal/NOTICE.txt file. it is expected to be detected. + diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.json.bin index e3b13e6b8..24396f7f7 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.json.bin @@ -457,9 +457,8 @@ "license": { "name": "declared license file: AUTHORS.example", "text": { - "content": "dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUgY29udGVudAo=", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is AUTHORS.example content\n", + "contentType": "text/plain" } } }, @@ -467,9 +466,8 @@ "license": { "name": "declared license file: LICENCE.dummy", "text": { - "content": "dGhpcyBpcyBMSUNFTkNFLmR1bW15IGNvbnRlbnQK", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is LICENCE.dummy content\n", + "contentType": "text/plain" } } }, @@ -477,9 +475,8 @@ "license": { "name": "declared license file: LICENSE.txt", "text": { - "content": "dGhpcyBpcyBMSUNFTlNFLnR4dCBjb250ZW50Cg==", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is LICENSE.txt content\n", + "contentType": "text/plain" } } }, @@ -487,9 +484,8 @@ "license": { "name": "declared license file: NOTICE", "text": { - "content": "dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4K", - "contentType": "text/plain", - "encoding": "base64" + "content": "thisis the content of the NOTICE file.\n", + "contentType": "text/plain" } } }, @@ -497,9 +493,8 @@ "license": { "name": "declared license file: licenses_a/LICENSE.CC0", "text": { - "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwIGNvbnRlbnQK", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is licenses_a/LICENSE.CC0 content\n", + "contentType": "text/plain" } } }, @@ -507,9 +502,8 @@ "license": { "name": "declared license file: licenses_a/LICENSE.MIT", "text": { - "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlUIGNvbnRlbnQK", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is licenses_a/LICENSE.MIT content\n", + "contentType": "text/plain" } } }, @@ -517,9 +511,8 @@ "license": { "name": "declared license file: licenses_b/LICENSE.md", "text": { - "content": "dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQgY29udGVudAo=", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is licenses_b/LICENSE.md content\n", + "contentType": "text/markdown" } } }, @@ -527,9 +520,8 @@ "license": { "name": "declared license file: licenses_b/legal/NOTICE.txt", "text": { - "content": "dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQgZmlsZS4gaXQgaXMgZXhwZWN0ZWQgdG8gYmUgZGV0ZWN0ZWQuCg==", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is the content of licenses_b/legal/NOTICE.txt file. it is expected to be detected.\n", + "contentType": "text/plain" } } } diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.xml.bin index 98f3d05c9..d8071f64c 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.xml.bin @@ -51,35 +51,43 @@ declared license file: AUTHORS.example - dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUgY29udGVudAo= + this is AUTHORS.example content + declared license file: LICENCE.dummy - dGhpcyBpcyBMSUNFTkNFLmR1bW15IGNvbnRlbnQK + this is LICENCE.dummy content + declared license file: LICENSE.txt - dGhpcyBpcyBMSUNFTlNFLnR4dCBjb250ZW50Cg== + this is LICENSE.txt content + declared license file: NOTICE - dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4K + thisis the content of the NOTICE file. + declared license file: licenses_a/LICENSE.CC0 - dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwIGNvbnRlbnQK + this is licenses_a/LICENSE.CC0 content + declared license file: licenses_a/LICENSE.MIT - dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlUIGNvbnRlbnQK + this is licenses_a/LICENSE.MIT content + declared license file: licenses_b/LICENSE.md - dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQgY29udGVudAo= + this is licenses_b/LICENSE.md content + declared license file: licenses_b/legal/NOTICE.txt - dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQgZmlsZS4gaXQgaXMgZXhwZWN0ZWQgdG8gYmUgZGV0ZWN0ZWQuCg== + this is the content of licenses_b/legal/NOTICE.txt file. it is expected to be detected. + diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.json.bin index 9a7bb8681..9bf685ae8 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.json.bin @@ -457,9 +457,8 @@ "license": { "name": "declared license file: AUTHORS.example", "text": { - "content": "dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUgY29udGVudAo=", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is AUTHORS.example content\n", + "contentType": "text/plain" } } }, @@ -467,9 +466,8 @@ "license": { "name": "declared license file: LICENCE.dummy", "text": { - "content": "dGhpcyBpcyBMSUNFTkNFLmR1bW15IGNvbnRlbnQK", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is LICENCE.dummy content\n", + "contentType": "text/plain" } } }, @@ -477,9 +475,8 @@ "license": { "name": "declared license file: LICENSE.txt", "text": { - "content": "dGhpcyBpcyBMSUNFTlNFLnR4dCBjb250ZW50Cg==", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is LICENSE.txt content\n", + "contentType": "text/plain" } } }, @@ -487,9 +484,8 @@ "license": { "name": "declared license file: NOTICE", "text": { - "content": "dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4K", - "contentType": "text/plain", - "encoding": "base64" + "content": "thisis the content of the NOTICE file.\n", + "contentType": "text/plain" } } }, @@ -497,9 +493,8 @@ "license": { "name": "declared license file: licenses_a/LICENSE.CC0", "text": { - "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwIGNvbnRlbnQK", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is licenses_a/LICENSE.CC0 content\n", + "contentType": "text/plain" } } }, @@ -507,9 +502,8 @@ "license": { "name": "declared license file: licenses_a/LICENSE.MIT", "text": { - "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlUIGNvbnRlbnQK", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is licenses_a/LICENSE.MIT content\n", + "contentType": "text/plain" } } }, @@ -517,9 +511,8 @@ "license": { "name": "declared license file: licenses_b/LICENSE.md", "text": { - "content": "dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQgY29udGVudAo=", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is licenses_b/LICENSE.md content\n", + "contentType": "text/markdown" } } }, @@ -527,9 +520,8 @@ "license": { "name": "declared license file: licenses_b/legal/NOTICE.txt", "text": { - "content": "dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQgZmlsZS4gaXQgaXMgZXhwZWN0ZWQgdG8gYmUgZGV0ZWN0ZWQuCg==", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is the content of licenses_b/legal/NOTICE.txt file. it is expected to be detected.\n", + "contentType": "text/plain" } } } diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.xml.bin index 89eafa7a8..f54e73655 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.xml.bin @@ -61,35 +61,43 @@ declared license file: AUTHORS.example - dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUgY29udGVudAo= + this is AUTHORS.example content + declared license file: LICENCE.dummy - dGhpcyBpcyBMSUNFTkNFLmR1bW15IGNvbnRlbnQK + this is LICENCE.dummy content + declared license file: LICENSE.txt - dGhpcyBpcyBMSUNFTlNFLnR4dCBjb250ZW50Cg== + this is LICENSE.txt content + declared license file: NOTICE - dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4K + thisis the content of the NOTICE file. + declared license file: licenses_a/LICENSE.CC0 - dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwIGNvbnRlbnQK + this is licenses_a/LICENSE.CC0 content + declared license file: licenses_a/LICENSE.MIT - dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlUIGNvbnRlbnQK + this is licenses_a/LICENSE.MIT content + declared license file: licenses_b/LICENSE.md - dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQgY29udGVudAo= + this is licenses_b/LICENSE.md content + declared license file: licenses_b/legal/NOTICE.txt - dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQgZmlsZS4gaXQgaXMgZXhwZWN0ZWQgdG8gYmUgZGV0ZWN0ZWQuCg== + this is the content of licenses_b/legal/NOTICE.txt file. it is expected to be detected. + diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.json.bin index 8749333ca..a3895fb11 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.json.bin @@ -489,9 +489,8 @@ "acknowledgement": "declared", "name": "declared license file: AUTHORS.example", "text": { - "content": "dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUgY29udGVudAo=", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is AUTHORS.example content\n", + "contentType": "text/plain" } } }, @@ -500,9 +499,8 @@ "acknowledgement": "declared", "name": "declared license file: LICENCE.dummy", "text": { - "content": "dGhpcyBpcyBMSUNFTkNFLmR1bW15IGNvbnRlbnQK", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is LICENCE.dummy content\n", + "contentType": "text/plain" } } }, @@ -511,9 +509,8 @@ "acknowledgement": "declared", "name": "declared license file: LICENSE.txt", "text": { - "content": "dGhpcyBpcyBMSUNFTlNFLnR4dCBjb250ZW50Cg==", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is LICENSE.txt content\n", + "contentType": "text/plain" } } }, @@ -522,9 +519,8 @@ "acknowledgement": "declared", "name": "declared license file: NOTICE", "text": { - "content": "dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4K", - "contentType": "text/plain", - "encoding": "base64" + "content": "thisis the content of the NOTICE file.\n", + "contentType": "text/plain" } } }, @@ -533,9 +529,8 @@ "acknowledgement": "declared", "name": "declared license file: licenses_a/LICENSE.CC0", "text": { - "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwIGNvbnRlbnQK", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is licenses_a/LICENSE.CC0 content\n", + "contentType": "text/plain" } } }, @@ -544,9 +539,8 @@ "acknowledgement": "declared", "name": "declared license file: licenses_a/LICENSE.MIT", "text": { - "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlUIGNvbnRlbnQK", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is licenses_a/LICENSE.MIT content\n", + "contentType": "text/plain" } } }, @@ -555,9 +549,8 @@ "acknowledgement": "declared", "name": "declared license file: licenses_b/LICENSE.md", "text": { - "content": "dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQgY29udGVudAo=", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is licenses_b/LICENSE.md content\n", + "contentType": "text/markdown" } } }, @@ -566,9 +559,8 @@ "acknowledgement": "declared", "name": "declared license file: licenses_b/legal/NOTICE.txt", "text": { - "content": "dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQgZmlsZS4gaXQgaXMgZXhwZWN0ZWQgdG8gYmUgZGV0ZWN0ZWQuCg==", - "contentType": "text/plain", - "encoding": "base64" + "content": "this is the content of licenses_b/legal/NOTICE.txt file. it is expected to be detected.\n", + "contentType": "text/plain" } } } diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.xml.bin index dd745840e..2326b6849 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.xml.bin @@ -61,35 +61,43 @@ declared license file: AUTHORS.example - dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUgY29udGVudAo= + this is AUTHORS.example content + declared license file: LICENCE.dummy - dGhpcyBpcyBMSUNFTkNFLmR1bW15IGNvbnRlbnQK + this is LICENCE.dummy content + declared license file: LICENSE.txt - dGhpcyBpcyBMSUNFTlNFLnR4dCBjb250ZW50Cg== + this is LICENSE.txt content + declared license file: NOTICE - dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4K + thisis the content of the NOTICE file. + declared license file: licenses_a/LICENSE.CC0 - dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwIGNvbnRlbnQK + this is licenses_a/LICENSE.CC0 content + declared license file: licenses_a/LICENSE.MIT - dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlUIGNvbnRlbnQK + this is licenses_a/LICENSE.MIT content + declared license file: licenses_b/LICENSE.md - dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQgY29udGVudAo= + this is licenses_b/LICENSE.md content + declared license file: licenses_b/legal/NOTICE.txt - dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQgZmlsZS4gaXQgaXMgZXhwZWN0ZWQgdG8gYmUgZGV0ZWN0ZWQuCg== + this is the content of licenses_b/legal/NOTICE.txt file. it is expected to be detected. + From 59dd16e60b4faa5821d17eed725231b70d5b61c7 Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Tue, 8 Jul 2025 15:49:47 +0200 Subject: [PATCH 15/49] wip Signed-off-by: Jan Kowalleck --- cyclonedx_py/_internal/py_interop/glob.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cyclonedx_py/_internal/py_interop/glob.py b/cyclonedx_py/_internal/py_interop/glob.py index 48f3f69ce..05f519934 100644 --- a/cyclonedx_py/_internal/py_interop/glob.py +++ b/cyclonedx_py/_internal/py_interop/glob.py @@ -20,7 +20,7 @@ import sys from glob import glob as _glob -if sys.version_info > (3, 10): +if sys.version_info >= (3, 10): glob = _glob else: from os.path import join, sep From 59fd13d73877088ee765c52acdd294c7380656e5 Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Tue, 8 Jul 2025 15:51:18 +0200 Subject: [PATCH 16/49] wip Signed-off-by: Jan Kowalleck --- cyclonedx_py/_internal/py_interop/glob.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cyclonedx_py/_internal/py_interop/glob.py b/cyclonedx_py/_internal/py_interop/glob.py index 05f519934..3ced6ddac 100644 --- a/cyclonedx_py/_internal/py_interop/glob.py +++ b/cyclonedx_py/_internal/py_interop/glob.py @@ -29,7 +29,7 @@ def glob(pathname: str, *, root_dir: Optional[str] = None, recursive: bool = False) -> list[str]: if root_dir is not None: pathname = join(root_dir, pathname) - files = glob(pathname, recursive=recursive) + files = _glob(pathname, recursive=recursive) if root_dir is not None: if not root_dir.endswith(sep): root_dir += sep From 345241c31d68605298fb9d28c020d788078e5bde Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Tue, 8 Jul 2025 16:51:03 +0200 Subject: [PATCH 17/49] wip Signed-off-by: Jan Kowalleck --- cyclonedx_py/_internal/utils/pep639.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cyclonedx_py/_internal/utils/pep639.py b/cyclonedx_py/_internal/utils/pep639.py index ebf141d67..29ed3a5e0 100644 --- a/cyclonedx_py/_internal/utils/pep639.py +++ b/cyclonedx_py/_internal/utils/pep639.py @@ -25,6 +25,7 @@ from collections.abc import Generator from os.path import dirname, join from typing import TYPE_CHECKING, Any, AnyStr +from pathlib import PurePosixPath, Path from cyclonedx.model import AttachedText, Encoding from cyclonedx.model.license import DisjunctiveLicense, LicenseAcknowledgement @@ -55,7 +56,7 @@ def project2licenses(project: dict[str, Any], lfac: 'LicenseFactory', # https://peps.python.org/pep-0639/#add-license-files-key plfiles_root = dirname(fpath) for plfile_glob in plfiles: - for plfile in glob(plfile_glob, root_dir=plfiles_root, recursive=True): + for plfile in glob(join(*PurePosixPath(plfile_glob).parts), root_dir=plfiles_root, recursive=True): # per spec: # > Tools MUST assume that license file content is valid UTF-8 encoded text # anyway, we don't trust this and assume binary @@ -68,7 +69,7 @@ def project2licenses(project: dict[str, Any], lfac: 'LicenseFactory', continue with plicense_fileh: content = plicense_fileh.read() - yield _make_license_from_content(plfile, content, lack) + yield _make_license_from_content('/'.join(Path(plfile).parts), content, lack) # Silently skip any other types (including string/PEP 621) return None From ea44f503288cd5a760a480c3f538620f530a6333 Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Tue, 8 Jul 2025 16:53:49 +0200 Subject: [PATCH 18/49] wip Signed-off-by: Jan Kowalleck --- cyclonedx_py/_internal/utils/pep639.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cyclonedx_py/_internal/utils/pep639.py b/cyclonedx_py/_internal/utils/pep639.py index 29ed3a5e0..0cdd25065 100644 --- a/cyclonedx_py/_internal/utils/pep639.py +++ b/cyclonedx_py/_internal/utils/pep639.py @@ -24,8 +24,8 @@ from base64 import b64encode from collections.abc import Generator from os.path import dirname, join +from pathlib import Path, PurePosixPath from typing import TYPE_CHECKING, Any, AnyStr -from pathlib import PurePosixPath, Path from cyclonedx.model import AttachedText, Encoding from cyclonedx.model.license import DisjunctiveLicense, LicenseAcknowledgement @@ -69,7 +69,7 @@ def project2licenses(project: dict[str, Any], lfac: 'LicenseFactory', continue with plicense_fileh: content = plicense_fileh.read() - yield _make_license_from_content('/'.join(Path(plfile).parts), content, lack) + yield _make_license_from_content(plfile, content, lack) # Silently skip any other types (including string/PEP 621) return None @@ -125,7 +125,7 @@ def _make_license_from_content(file_name: str, content: AnyStr, lack: 'LicenseAc else content.encode('utf-8') ).decode('ascii') return DisjunctiveLicense( - name=f'{lack.value} license file: {file_name}', + name=f'{lack.value} license file: {'/'.join(Path(file_name).parts)}', acknowledgement=lack, text=AttachedText( content=content_s, From 2a58f1361a6bcbe4974d5d620cc6c0d26a1a1b7e Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Tue, 8 Jul 2025 17:04:09 +0200 Subject: [PATCH 19/49] wip Signed-off-by: Jan Kowalleck --- cyclonedx_py/_internal/utils/pep639.py | 2 +- .../with-license-pep639/AUTHORS.example | 1 - .../with-license-pep639/AUTHORS.example.bin | 1 + .../with-license-pep639/LICENCE.dummy | 1 - .../with-license-pep639/LICENCE.dummy.bin | 1 + .../with-license-pep639/LICENSE.txt | 1 - .../with-license-pep639/LICENSE.txt.bin | 1 + .../environment/with-license-pep639/NOTICE | 1 - .../with-license-pep639/NOTICE.bin | 1 + .../licenses_a/LICENSE.CC0 | 1 - .../licenses_a/LICENSE.CC0.bin | 1 + .../licenses_a/LICENSE.MIT | 1 - .../licenses_a/LICENSE.MIT.bin | 1 + .../with-license-pep639/licenses_b/LICENSE.md | 1 - .../licenses_b/LICENSE.md.bin | 1 + .../licenses_b/legal/NOTICE.txt | 1 - .../licenses_b/legal/NOTICE.txt.bin | 1 + .../with-license-pep639/pyproject.toml | 4 +- ...639-texts_with-license-pep639_1.3.json.bin | 56 +++++++++++-------- ...p639-texts_with-license-pep639_1.3.xml.bin | 40 ++++++------- ...639-texts_with-license-pep639_1.4.json.bin | 56 +++++++++++-------- ...p639-texts_with-license-pep639_1.4.xml.bin | 40 ++++++------- ...639-texts_with-license-pep639_1.5.json.bin | 56 +++++++++++-------- ...p639-texts_with-license-pep639_1.5.xml.bin | 40 ++++++------- ...639-texts_with-license-pep639_1.6.json.bin | 56 +++++++++++-------- ...p639-texts_with-license-pep639_1.6.xml.bin | 40 ++++++------- .../texts_with-license-pep639_1.3.json.bin | 56 +++++++++++-------- .../texts_with-license-pep639_1.3.xml.bin | 40 ++++++------- .../texts_with-license-pep639_1.4.json.bin | 56 +++++++++++-------- .../texts_with-license-pep639_1.4.xml.bin | 40 ++++++------- .../texts_with-license-pep639_1.5.json.bin | 56 +++++++++++-------- .../texts_with-license-pep639_1.5.xml.bin | 40 ++++++------- .../texts_with-license-pep639_1.6.json.bin | 56 +++++++++++-------- .../texts_with-license-pep639_1.6.xml.bin | 40 ++++++------- 34 files changed, 395 insertions(+), 395 deletions(-) delete mode 100644 tests/_data/infiles/environment/with-license-pep639/AUTHORS.example create mode 100644 tests/_data/infiles/environment/with-license-pep639/AUTHORS.example.bin delete mode 100644 tests/_data/infiles/environment/with-license-pep639/LICENCE.dummy create mode 100644 tests/_data/infiles/environment/with-license-pep639/LICENCE.dummy.bin delete mode 100644 tests/_data/infiles/environment/with-license-pep639/LICENSE.txt create mode 100644 tests/_data/infiles/environment/with-license-pep639/LICENSE.txt.bin delete mode 100644 tests/_data/infiles/environment/with-license-pep639/NOTICE create mode 100644 tests/_data/infiles/environment/with-license-pep639/NOTICE.bin delete mode 100644 tests/_data/infiles/environment/with-license-pep639/licenses_a/LICENSE.CC0 create mode 100644 tests/_data/infiles/environment/with-license-pep639/licenses_a/LICENSE.CC0.bin delete mode 100644 tests/_data/infiles/environment/with-license-pep639/licenses_a/LICENSE.MIT create mode 100644 tests/_data/infiles/environment/with-license-pep639/licenses_a/LICENSE.MIT.bin delete mode 100644 tests/_data/infiles/environment/with-license-pep639/licenses_b/LICENSE.md create mode 100644 tests/_data/infiles/environment/with-license-pep639/licenses_b/LICENSE.md.bin delete mode 100644 tests/_data/infiles/environment/with-license-pep639/licenses_b/legal/NOTICE.txt create mode 100644 tests/_data/infiles/environment/with-license-pep639/licenses_b/legal/NOTICE.txt.bin diff --git a/cyclonedx_py/_internal/utils/pep639.py b/cyclonedx_py/_internal/utils/pep639.py index 0cdd25065..24945f6e2 100644 --- a/cyclonedx_py/_internal/utils/pep639.py +++ b/cyclonedx_py/_internal/utils/pep639.py @@ -125,7 +125,7 @@ def _make_license_from_content(file_name: str, content: AnyStr, lack: 'LicenseAc else content.encode('utf-8') ).decode('ascii') return DisjunctiveLicense( - name=f'{lack.value} license file: {'/'.join(Path(file_name).parts)}', + name=f'{lack.value} license file: {"/".join(Path(file_name).parts)}', acknowledgement=lack, text=AttachedText( content=content_s, diff --git a/tests/_data/infiles/environment/with-license-pep639/AUTHORS.example b/tests/_data/infiles/environment/with-license-pep639/AUTHORS.example deleted file mode 100644 index 8a6e8d6f9..000000000 --- a/tests/_data/infiles/environment/with-license-pep639/AUTHORS.example +++ /dev/null @@ -1 +0,0 @@ -this is AUTHORS.example content diff --git a/tests/_data/infiles/environment/with-license-pep639/AUTHORS.example.bin b/tests/_data/infiles/environment/with-license-pep639/AUTHORS.example.bin new file mode 100644 index 000000000..110fe0e83 --- /dev/null +++ b/tests/_data/infiles/environment/with-license-pep639/AUTHORS.example.bin @@ -0,0 +1 @@ +this is AUTHORS.example.bin content diff --git a/tests/_data/infiles/environment/with-license-pep639/LICENCE.dummy b/tests/_data/infiles/environment/with-license-pep639/LICENCE.dummy deleted file mode 100644 index 6413df7f3..000000000 --- a/tests/_data/infiles/environment/with-license-pep639/LICENCE.dummy +++ /dev/null @@ -1 +0,0 @@ -this is LICENCE.dummy content diff --git a/tests/_data/infiles/environment/with-license-pep639/LICENCE.dummy.bin b/tests/_data/infiles/environment/with-license-pep639/LICENCE.dummy.bin new file mode 100644 index 000000000..341151e50 --- /dev/null +++ b/tests/_data/infiles/environment/with-license-pep639/LICENCE.dummy.bin @@ -0,0 +1 @@ +this is LICENCE.dummy.bin content diff --git a/tests/_data/infiles/environment/with-license-pep639/LICENSE.txt b/tests/_data/infiles/environment/with-license-pep639/LICENSE.txt deleted file mode 100644 index 6449ab886..000000000 --- a/tests/_data/infiles/environment/with-license-pep639/LICENSE.txt +++ /dev/null @@ -1 +0,0 @@ -this is LICENSE.txt content diff --git a/tests/_data/infiles/environment/with-license-pep639/LICENSE.txt.bin b/tests/_data/infiles/environment/with-license-pep639/LICENSE.txt.bin new file mode 100644 index 000000000..a97c9eb9b --- /dev/null +++ b/tests/_data/infiles/environment/with-license-pep639/LICENSE.txt.bin @@ -0,0 +1 @@ +this is LICENSE.txt.bin content diff --git a/tests/_data/infiles/environment/with-license-pep639/NOTICE b/tests/_data/infiles/environment/with-license-pep639/NOTICE deleted file mode 100644 index af5d43222..000000000 --- a/tests/_data/infiles/environment/with-license-pep639/NOTICE +++ /dev/null @@ -1 +0,0 @@ -thisis the content of the NOTICE file. diff --git a/tests/_data/infiles/environment/with-license-pep639/NOTICE.bin b/tests/_data/infiles/environment/with-license-pep639/NOTICE.bin new file mode 100644 index 000000000..971f366ae --- /dev/null +++ b/tests/_data/infiles/environment/with-license-pep639/NOTICE.bin @@ -0,0 +1 @@ +thisis the content of the NOTICE.bin file. diff --git a/tests/_data/infiles/environment/with-license-pep639/licenses_a/LICENSE.CC0 b/tests/_data/infiles/environment/with-license-pep639/licenses_a/LICENSE.CC0 deleted file mode 100644 index 4a28db465..000000000 --- a/tests/_data/infiles/environment/with-license-pep639/licenses_a/LICENSE.CC0 +++ /dev/null @@ -1 +0,0 @@ -this is licenses_a/LICENSE.CC0 content diff --git a/tests/_data/infiles/environment/with-license-pep639/licenses_a/LICENSE.CC0.bin b/tests/_data/infiles/environment/with-license-pep639/licenses_a/LICENSE.CC0.bin new file mode 100644 index 000000000..87eb5f315 --- /dev/null +++ b/tests/_data/infiles/environment/with-license-pep639/licenses_a/LICENSE.CC0.bin @@ -0,0 +1 @@ +this is licenses_a/LICENSE.CC0.bin content diff --git a/tests/_data/infiles/environment/with-license-pep639/licenses_a/LICENSE.MIT b/tests/_data/infiles/environment/with-license-pep639/licenses_a/LICENSE.MIT deleted file mode 100644 index b845be73b..000000000 --- a/tests/_data/infiles/environment/with-license-pep639/licenses_a/LICENSE.MIT +++ /dev/null @@ -1 +0,0 @@ -this is licenses_a/LICENSE.MIT content diff --git a/tests/_data/infiles/environment/with-license-pep639/licenses_a/LICENSE.MIT.bin b/tests/_data/infiles/environment/with-license-pep639/licenses_a/LICENSE.MIT.bin new file mode 100644 index 000000000..9dd58a9cf --- /dev/null +++ b/tests/_data/infiles/environment/with-license-pep639/licenses_a/LICENSE.MIT.bin @@ -0,0 +1 @@ +this is licenses_a/LICENSE.MIT.bin content diff --git a/tests/_data/infiles/environment/with-license-pep639/licenses_b/LICENSE.md b/tests/_data/infiles/environment/with-license-pep639/licenses_b/LICENSE.md deleted file mode 100644 index b103f4c19..000000000 --- a/tests/_data/infiles/environment/with-license-pep639/licenses_b/LICENSE.md +++ /dev/null @@ -1 +0,0 @@ -this is licenses_b/LICENSE.md content diff --git a/tests/_data/infiles/environment/with-license-pep639/licenses_b/LICENSE.md.bin b/tests/_data/infiles/environment/with-license-pep639/licenses_b/LICENSE.md.bin new file mode 100644 index 000000000..8b55efc82 --- /dev/null +++ b/tests/_data/infiles/environment/with-license-pep639/licenses_b/LICENSE.md.bin @@ -0,0 +1 @@ +this is licenses_b/LICENSE.md.bin content diff --git a/tests/_data/infiles/environment/with-license-pep639/licenses_b/legal/NOTICE.txt b/tests/_data/infiles/environment/with-license-pep639/licenses_b/legal/NOTICE.txt deleted file mode 100644 index cfb48f500..000000000 --- a/tests/_data/infiles/environment/with-license-pep639/licenses_b/legal/NOTICE.txt +++ /dev/null @@ -1 +0,0 @@ -this is the content of licenses_b/legal/NOTICE.txt file. it is expected to be detected. diff --git a/tests/_data/infiles/environment/with-license-pep639/licenses_b/legal/NOTICE.txt.bin b/tests/_data/infiles/environment/with-license-pep639/licenses_b/legal/NOTICE.txt.bin new file mode 100644 index 000000000..8e5a00828 --- /dev/null +++ b/tests/_data/infiles/environment/with-license-pep639/licenses_b/legal/NOTICE.txt.bin @@ -0,0 +1 @@ +this is the content of licenses_b/legal/NOTICE.txt.bin file. it is expected to be detected. diff --git a/tests/_data/infiles/environment/with-license-pep639/pyproject.toml b/tests/_data/infiles/environment/with-license-pep639/pyproject.toml index 648c7fcef..67dc0da4e 100644 --- a/tests/_data/infiles/environment/with-license-pep639/pyproject.toml +++ b/tests/_data/infiles/environment/with-license-pep639/pyproject.toml @@ -8,8 +8,8 @@ description = "depenndencies with license declaration accoring to PEP 639" license = "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" # https://peps.python.org/pep-0639/#add-license-files-key license-files = [ - "LICEN[CS]E*", "AUTHORS*", "NOTICE", - "licenses_a/LICENSE.MIT", "licenses_a/*.CC0", + "LICEN[CS]E*", "AUTHORS*", "NOTICE.bin", + "licenses_a/LICENSE.MIT.bin", "licenses_a/*.CC0.bin", "licenses_b/**", "nonexisting_file", "nonexisting_dir/foo", ] diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.json.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.json.bin index 7d3ff96ff..542e8afdd 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.json.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.json.bin @@ -455,73 +455,81 @@ "licenses": [ { "license": { - "name": "declared license file: AUTHORS.example", + "name": "declared license file: AUTHORS.example.bin", "text": { - "content": "this is AUTHORS.example content\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUuYmluIGNvbnRlbnQK", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: LICENCE.dummy", + "name": "declared license file: LICENCE.dummy.bin", "text": { - "content": "this is LICENCE.dummy content\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyBMSUNFTkNFLmR1bW15LmJpbiBjb250ZW50Cg==", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: LICENSE.txt", + "name": "declared license file: LICENSE.txt.bin", "text": { - "content": "this is LICENSE.txt content\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyBMSUNFTlNFLnR4dC5iaW4gY29udGVudAo=", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: NOTICE", + "name": "declared license file: NOTICE.bin", "text": { - "content": "thisis the content of the NOTICE file.\n", - "contentType": "text/plain" + "content": "dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UuYmluIGZpbGUuCg==", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: licenses_a/LICENSE.CC0", + "name": "declared license file: licenses_a/LICENSE.CC0.bin", "text": { - "content": "this is licenses_a/LICENSE.CC0 content\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwLmJpbiBjb250ZW50Cg==", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: licenses_a/LICENSE.MIT", + "name": "declared license file: licenses_a/LICENSE.MIT.bin", "text": { - "content": "this is licenses_a/LICENSE.MIT content\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlULmJpbiBjb250ZW50Cg==", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: licenses_b/LICENSE.md", + "name": "declared license file: licenses_b/LICENSE.md.bin", "text": { - "content": "this is licenses_b/LICENSE.md content\n", - "contentType": "text/markdown" + "content": "dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQuYmluIGNvbnRlbnQK", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: licenses_b/legal/NOTICE.txt", + "name": "declared license file: licenses_b/legal/NOTICE.txt.bin", "text": { - "content": "this is the content of licenses_b/legal/NOTICE.txt file. it is expected to be detected.\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQuYmluIGZpbGUuIGl0IGlzIGV4cGVjdGVkIHRvIGJlIGRldGVjdGVkLgo=", + "contentType": "application/octet-stream", + "encoding": "base64" } } } diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.xml.bin index ee71c7168..25d48b220 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.xml.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.xml.bin @@ -23,44 +23,36 @@ - declared license file: AUTHORS.example - this is AUTHORS.example content - + declared license file: AUTHORS.example.bin + dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUuYmluIGNvbnRlbnQK - declared license file: LICENCE.dummy - this is LICENCE.dummy content - + declared license file: LICENCE.dummy.bin + dGhpcyBpcyBMSUNFTkNFLmR1bW15LmJpbiBjb250ZW50Cg== - declared license file: LICENSE.txt - this is LICENSE.txt content - + declared license file: LICENSE.txt.bin + dGhpcyBpcyBMSUNFTlNFLnR4dC5iaW4gY29udGVudAo= - declared license file: NOTICE - thisis the content of the NOTICE file. - + declared license file: NOTICE.bin + dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UuYmluIGZpbGUuCg== - declared license file: licenses_a/LICENSE.CC0 - this is licenses_a/LICENSE.CC0 content - + declared license file: licenses_a/LICENSE.CC0.bin + dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwLmJpbiBjb250ZW50Cg== - declared license file: licenses_a/LICENSE.MIT - this is licenses_a/LICENSE.MIT content - + declared license file: licenses_a/LICENSE.MIT.bin + dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlULmJpbiBjb250ZW50Cg== - declared license file: licenses_b/LICENSE.md - this is licenses_b/LICENSE.md content - + declared license file: licenses_b/LICENSE.md.bin + dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQuYmluIGNvbnRlbnQK - declared license file: licenses_b/legal/NOTICE.txt - this is the content of licenses_b/legal/NOTICE.txt file. it is expected to be detected. - + declared license file: licenses_b/legal/NOTICE.txt.bin + dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQuYmluIGZpbGUuIGl0IGlzIGV4cGVjdGVkIHRvIGJlIGRldGVjdGVkLgo= diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.json.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.json.bin index 24396f7f7..89b5fe985 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.json.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.json.bin @@ -455,73 +455,81 @@ "licenses": [ { "license": { - "name": "declared license file: AUTHORS.example", + "name": "declared license file: AUTHORS.example.bin", "text": { - "content": "this is AUTHORS.example content\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUuYmluIGNvbnRlbnQK", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: LICENCE.dummy", + "name": "declared license file: LICENCE.dummy.bin", "text": { - "content": "this is LICENCE.dummy content\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyBMSUNFTkNFLmR1bW15LmJpbiBjb250ZW50Cg==", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: LICENSE.txt", + "name": "declared license file: LICENSE.txt.bin", "text": { - "content": "this is LICENSE.txt content\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyBMSUNFTlNFLnR4dC5iaW4gY29udGVudAo=", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: NOTICE", + "name": "declared license file: NOTICE.bin", "text": { - "content": "thisis the content of the NOTICE file.\n", - "contentType": "text/plain" + "content": "dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UuYmluIGZpbGUuCg==", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: licenses_a/LICENSE.CC0", + "name": "declared license file: licenses_a/LICENSE.CC0.bin", "text": { - "content": "this is licenses_a/LICENSE.CC0 content\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwLmJpbiBjb250ZW50Cg==", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: licenses_a/LICENSE.MIT", + "name": "declared license file: licenses_a/LICENSE.MIT.bin", "text": { - "content": "this is licenses_a/LICENSE.MIT content\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlULmJpbiBjb250ZW50Cg==", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: licenses_b/LICENSE.md", + "name": "declared license file: licenses_b/LICENSE.md.bin", "text": { - "content": "this is licenses_b/LICENSE.md content\n", - "contentType": "text/markdown" + "content": "dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQuYmluIGNvbnRlbnQK", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: licenses_b/legal/NOTICE.txt", + "name": "declared license file: licenses_b/legal/NOTICE.txt.bin", "text": { - "content": "this is the content of licenses_b/legal/NOTICE.txt file. it is expected to be detected.\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQuYmluIGZpbGUuIGl0IGlzIGV4cGVjdGVkIHRvIGJlIGRldGVjdGVkLgo=", + "contentType": "application/octet-stream", + "encoding": "base64" } } } diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.xml.bin index d8071f64c..b4f4b5a31 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.xml.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.xml.bin @@ -50,44 +50,36 @@ - declared license file: AUTHORS.example - this is AUTHORS.example content - + declared license file: AUTHORS.example.bin + dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUuYmluIGNvbnRlbnQK - declared license file: LICENCE.dummy - this is LICENCE.dummy content - + declared license file: LICENCE.dummy.bin + dGhpcyBpcyBMSUNFTkNFLmR1bW15LmJpbiBjb250ZW50Cg== - declared license file: LICENSE.txt - this is LICENSE.txt content - + declared license file: LICENSE.txt.bin + dGhpcyBpcyBMSUNFTlNFLnR4dC5iaW4gY29udGVudAo= - declared license file: NOTICE - thisis the content of the NOTICE file. - + declared license file: NOTICE.bin + dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UuYmluIGZpbGUuCg== - declared license file: licenses_a/LICENSE.CC0 - this is licenses_a/LICENSE.CC0 content - + declared license file: licenses_a/LICENSE.CC0.bin + dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwLmJpbiBjb250ZW50Cg== - declared license file: licenses_a/LICENSE.MIT - this is licenses_a/LICENSE.MIT content - + declared license file: licenses_a/LICENSE.MIT.bin + dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlULmJpbiBjb250ZW50Cg== - declared license file: licenses_b/LICENSE.md - this is licenses_b/LICENSE.md content - + declared license file: licenses_b/LICENSE.md.bin + dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQuYmluIGNvbnRlbnQK - declared license file: licenses_b/legal/NOTICE.txt - this is the content of licenses_b/legal/NOTICE.txt file. it is expected to be detected. - + declared license file: licenses_b/legal/NOTICE.txt.bin + dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQuYmluIGZpbGUuIGl0IGlzIGV4cGVjdGVkIHRvIGJlIGRldGVjdGVkLgo= diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.json.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.json.bin index 9bf685ae8..72ce29c9a 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.json.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.json.bin @@ -455,73 +455,81 @@ "licenses": [ { "license": { - "name": "declared license file: AUTHORS.example", + "name": "declared license file: AUTHORS.example.bin", "text": { - "content": "this is AUTHORS.example content\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUuYmluIGNvbnRlbnQK", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: LICENCE.dummy", + "name": "declared license file: LICENCE.dummy.bin", "text": { - "content": "this is LICENCE.dummy content\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyBMSUNFTkNFLmR1bW15LmJpbiBjb250ZW50Cg==", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: LICENSE.txt", + "name": "declared license file: LICENSE.txt.bin", "text": { - "content": "this is LICENSE.txt content\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyBMSUNFTlNFLnR4dC5iaW4gY29udGVudAo=", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: NOTICE", + "name": "declared license file: NOTICE.bin", "text": { - "content": "thisis the content of the NOTICE file.\n", - "contentType": "text/plain" + "content": "dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UuYmluIGZpbGUuCg==", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: licenses_a/LICENSE.CC0", + "name": "declared license file: licenses_a/LICENSE.CC0.bin", "text": { - "content": "this is licenses_a/LICENSE.CC0 content\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwLmJpbiBjb250ZW50Cg==", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: licenses_a/LICENSE.MIT", + "name": "declared license file: licenses_a/LICENSE.MIT.bin", "text": { - "content": "this is licenses_a/LICENSE.MIT content\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlULmJpbiBjb250ZW50Cg==", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: licenses_b/LICENSE.md", + "name": "declared license file: licenses_b/LICENSE.md.bin", "text": { - "content": "this is licenses_b/LICENSE.md content\n", - "contentType": "text/markdown" + "content": "dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQuYmluIGNvbnRlbnQK", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: licenses_b/legal/NOTICE.txt", + "name": "declared license file: licenses_b/legal/NOTICE.txt.bin", "text": { - "content": "this is the content of licenses_b/legal/NOTICE.txt file. it is expected to be detected.\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQuYmluIGZpbGUuIGl0IGlzIGV4cGVjdGVkIHRvIGJlIGRldGVjdGVkLgo=", + "contentType": "application/octet-stream", + "encoding": "base64" } } } diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.xml.bin index f54e73655..c2725beb2 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.xml.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.xml.bin @@ -60,44 +60,36 @@ - declared license file: AUTHORS.example - this is AUTHORS.example content - + declared license file: AUTHORS.example.bin + dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUuYmluIGNvbnRlbnQK - declared license file: LICENCE.dummy - this is LICENCE.dummy content - + declared license file: LICENCE.dummy.bin + dGhpcyBpcyBMSUNFTkNFLmR1bW15LmJpbiBjb250ZW50Cg== - declared license file: LICENSE.txt - this is LICENSE.txt content - + declared license file: LICENSE.txt.bin + dGhpcyBpcyBMSUNFTlNFLnR4dC5iaW4gY29udGVudAo= - declared license file: NOTICE - thisis the content of the NOTICE file. - + declared license file: NOTICE.bin + dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UuYmluIGZpbGUuCg== - declared license file: licenses_a/LICENSE.CC0 - this is licenses_a/LICENSE.CC0 content - + declared license file: licenses_a/LICENSE.CC0.bin + dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwLmJpbiBjb250ZW50Cg== - declared license file: licenses_a/LICENSE.MIT - this is licenses_a/LICENSE.MIT content - + declared license file: licenses_a/LICENSE.MIT.bin + dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlULmJpbiBjb250ZW50Cg== - declared license file: licenses_b/LICENSE.md - this is licenses_b/LICENSE.md content - + declared license file: licenses_b/LICENSE.md.bin + dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQuYmluIGNvbnRlbnQK - declared license file: licenses_b/legal/NOTICE.txt - this is the content of licenses_b/legal/NOTICE.txt file. it is expected to be detected. - + declared license file: licenses_b/legal/NOTICE.txt.bin + dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQuYmluIGZpbGUuIGl0IGlzIGV4cGVjdGVkIHRvIGJlIGRldGVjdGVkLgo= diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.json.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.json.bin index a3895fb11..1d3176b10 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.json.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.json.bin @@ -487,80 +487,88 @@ { "license": { "acknowledgement": "declared", - "name": "declared license file: AUTHORS.example", + "name": "declared license file: AUTHORS.example.bin", "text": { - "content": "this is AUTHORS.example content\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUuYmluIGNvbnRlbnQK", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { "acknowledgement": "declared", - "name": "declared license file: LICENCE.dummy", + "name": "declared license file: LICENCE.dummy.bin", "text": { - "content": "this is LICENCE.dummy content\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyBMSUNFTkNFLmR1bW15LmJpbiBjb250ZW50Cg==", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { "acknowledgement": "declared", - "name": "declared license file: LICENSE.txt", + "name": "declared license file: LICENSE.txt.bin", "text": { - "content": "this is LICENSE.txt content\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyBMSUNFTlNFLnR4dC5iaW4gY29udGVudAo=", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { "acknowledgement": "declared", - "name": "declared license file: NOTICE", + "name": "declared license file: NOTICE.bin", "text": { - "content": "thisis the content of the NOTICE file.\n", - "contentType": "text/plain" + "content": "dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UuYmluIGZpbGUuCg==", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { "acknowledgement": "declared", - "name": "declared license file: licenses_a/LICENSE.CC0", + "name": "declared license file: licenses_a/LICENSE.CC0.bin", "text": { - "content": "this is licenses_a/LICENSE.CC0 content\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwLmJpbiBjb250ZW50Cg==", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { "acknowledgement": "declared", - "name": "declared license file: licenses_a/LICENSE.MIT", + "name": "declared license file: licenses_a/LICENSE.MIT.bin", "text": { - "content": "this is licenses_a/LICENSE.MIT content\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlULmJpbiBjb250ZW50Cg==", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { "acknowledgement": "declared", - "name": "declared license file: licenses_b/LICENSE.md", + "name": "declared license file: licenses_b/LICENSE.md.bin", "text": { - "content": "this is licenses_b/LICENSE.md content\n", - "contentType": "text/markdown" + "content": "dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQuYmluIGNvbnRlbnQK", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { "acknowledgement": "declared", - "name": "declared license file: licenses_b/legal/NOTICE.txt", + "name": "declared license file: licenses_b/legal/NOTICE.txt.bin", "text": { - "content": "this is the content of licenses_b/legal/NOTICE.txt file. it is expected to be detected.\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQuYmluIGZpbGUuIGl0IGlzIGV4cGVjdGVkIHRvIGJlIGRldGVjdGVkLgo=", + "contentType": "application/octet-stream", + "encoding": "base64" } } } diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.xml.bin index 2326b6849..b31147bfe 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.xml.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.xml.bin @@ -60,44 +60,36 @@ - declared license file: AUTHORS.example - this is AUTHORS.example content - + declared license file: AUTHORS.example.bin + dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUuYmluIGNvbnRlbnQK - declared license file: LICENCE.dummy - this is LICENCE.dummy content - + declared license file: LICENCE.dummy.bin + dGhpcyBpcyBMSUNFTkNFLmR1bW15LmJpbiBjb250ZW50Cg== - declared license file: LICENSE.txt - this is LICENSE.txt content - + declared license file: LICENSE.txt.bin + dGhpcyBpcyBMSUNFTlNFLnR4dC5iaW4gY29udGVudAo= - declared license file: NOTICE - thisis the content of the NOTICE file. - + declared license file: NOTICE.bin + dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UuYmluIGZpbGUuCg== - declared license file: licenses_a/LICENSE.CC0 - this is licenses_a/LICENSE.CC0 content - + declared license file: licenses_a/LICENSE.CC0.bin + dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwLmJpbiBjb250ZW50Cg== - declared license file: licenses_a/LICENSE.MIT - this is licenses_a/LICENSE.MIT content - + declared license file: licenses_a/LICENSE.MIT.bin + dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlULmJpbiBjb250ZW50Cg== - declared license file: licenses_b/LICENSE.md - this is licenses_b/LICENSE.md content - + declared license file: licenses_b/LICENSE.md.bin + dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQuYmluIGNvbnRlbnQK - declared license file: licenses_b/legal/NOTICE.txt - this is the content of licenses_b/legal/NOTICE.txt file. it is expected to be detected. - + declared license file: licenses_b/legal/NOTICE.txt.bin + dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQuYmluIGZpbGUuIGl0IGlzIGV4cGVjdGVkIHRvIGJlIGRldGVjdGVkLgo= diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.json.bin index 7d3ff96ff..542e8afdd 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.json.bin @@ -455,73 +455,81 @@ "licenses": [ { "license": { - "name": "declared license file: AUTHORS.example", + "name": "declared license file: AUTHORS.example.bin", "text": { - "content": "this is AUTHORS.example content\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUuYmluIGNvbnRlbnQK", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: LICENCE.dummy", + "name": "declared license file: LICENCE.dummy.bin", "text": { - "content": "this is LICENCE.dummy content\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyBMSUNFTkNFLmR1bW15LmJpbiBjb250ZW50Cg==", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: LICENSE.txt", + "name": "declared license file: LICENSE.txt.bin", "text": { - "content": "this is LICENSE.txt content\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyBMSUNFTlNFLnR4dC5iaW4gY29udGVudAo=", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: NOTICE", + "name": "declared license file: NOTICE.bin", "text": { - "content": "thisis the content of the NOTICE file.\n", - "contentType": "text/plain" + "content": "dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UuYmluIGZpbGUuCg==", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: licenses_a/LICENSE.CC0", + "name": "declared license file: licenses_a/LICENSE.CC0.bin", "text": { - "content": "this is licenses_a/LICENSE.CC0 content\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwLmJpbiBjb250ZW50Cg==", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: licenses_a/LICENSE.MIT", + "name": "declared license file: licenses_a/LICENSE.MIT.bin", "text": { - "content": "this is licenses_a/LICENSE.MIT content\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlULmJpbiBjb250ZW50Cg==", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: licenses_b/LICENSE.md", + "name": "declared license file: licenses_b/LICENSE.md.bin", "text": { - "content": "this is licenses_b/LICENSE.md content\n", - "contentType": "text/markdown" + "content": "dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQuYmluIGNvbnRlbnQK", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: licenses_b/legal/NOTICE.txt", + "name": "declared license file: licenses_b/legal/NOTICE.txt.bin", "text": { - "content": "this is the content of licenses_b/legal/NOTICE.txt file. it is expected to be detected.\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQuYmluIGZpbGUuIGl0IGlzIGV4cGVjdGVkIHRvIGJlIGRldGVjdGVkLgo=", + "contentType": "application/octet-stream", + "encoding": "base64" } } } diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.xml.bin index ee71c7168..25d48b220 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.xml.bin @@ -23,44 +23,36 @@ - declared license file: AUTHORS.example - this is AUTHORS.example content - + declared license file: AUTHORS.example.bin + dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUuYmluIGNvbnRlbnQK - declared license file: LICENCE.dummy - this is LICENCE.dummy content - + declared license file: LICENCE.dummy.bin + dGhpcyBpcyBMSUNFTkNFLmR1bW15LmJpbiBjb250ZW50Cg== - declared license file: LICENSE.txt - this is LICENSE.txt content - + declared license file: LICENSE.txt.bin + dGhpcyBpcyBMSUNFTlNFLnR4dC5iaW4gY29udGVudAo= - declared license file: NOTICE - thisis the content of the NOTICE file. - + declared license file: NOTICE.bin + dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UuYmluIGZpbGUuCg== - declared license file: licenses_a/LICENSE.CC0 - this is licenses_a/LICENSE.CC0 content - + declared license file: licenses_a/LICENSE.CC0.bin + dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwLmJpbiBjb250ZW50Cg== - declared license file: licenses_a/LICENSE.MIT - this is licenses_a/LICENSE.MIT content - + declared license file: licenses_a/LICENSE.MIT.bin + dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlULmJpbiBjb250ZW50Cg== - declared license file: licenses_b/LICENSE.md - this is licenses_b/LICENSE.md content - + declared license file: licenses_b/LICENSE.md.bin + dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQuYmluIGNvbnRlbnQK - declared license file: licenses_b/legal/NOTICE.txt - this is the content of licenses_b/legal/NOTICE.txt file. it is expected to be detected. - + declared license file: licenses_b/legal/NOTICE.txt.bin + dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQuYmluIGZpbGUuIGl0IGlzIGV4cGVjdGVkIHRvIGJlIGRldGVjdGVkLgo= diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.json.bin index 24396f7f7..89b5fe985 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.json.bin @@ -455,73 +455,81 @@ "licenses": [ { "license": { - "name": "declared license file: AUTHORS.example", + "name": "declared license file: AUTHORS.example.bin", "text": { - "content": "this is AUTHORS.example content\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUuYmluIGNvbnRlbnQK", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: LICENCE.dummy", + "name": "declared license file: LICENCE.dummy.bin", "text": { - "content": "this is LICENCE.dummy content\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyBMSUNFTkNFLmR1bW15LmJpbiBjb250ZW50Cg==", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: LICENSE.txt", + "name": "declared license file: LICENSE.txt.bin", "text": { - "content": "this is LICENSE.txt content\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyBMSUNFTlNFLnR4dC5iaW4gY29udGVudAo=", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: NOTICE", + "name": "declared license file: NOTICE.bin", "text": { - "content": "thisis the content of the NOTICE file.\n", - "contentType": "text/plain" + "content": "dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UuYmluIGZpbGUuCg==", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: licenses_a/LICENSE.CC0", + "name": "declared license file: licenses_a/LICENSE.CC0.bin", "text": { - "content": "this is licenses_a/LICENSE.CC0 content\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwLmJpbiBjb250ZW50Cg==", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: licenses_a/LICENSE.MIT", + "name": "declared license file: licenses_a/LICENSE.MIT.bin", "text": { - "content": "this is licenses_a/LICENSE.MIT content\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlULmJpbiBjb250ZW50Cg==", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: licenses_b/LICENSE.md", + "name": "declared license file: licenses_b/LICENSE.md.bin", "text": { - "content": "this is licenses_b/LICENSE.md content\n", - "contentType": "text/markdown" + "content": "dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQuYmluIGNvbnRlbnQK", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: licenses_b/legal/NOTICE.txt", + "name": "declared license file: licenses_b/legal/NOTICE.txt.bin", "text": { - "content": "this is the content of licenses_b/legal/NOTICE.txt file. it is expected to be detected.\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQuYmluIGZpbGUuIGl0IGlzIGV4cGVjdGVkIHRvIGJlIGRldGVjdGVkLgo=", + "contentType": "application/octet-stream", + "encoding": "base64" } } } diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.xml.bin index d8071f64c..b4f4b5a31 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.xml.bin @@ -50,44 +50,36 @@ - declared license file: AUTHORS.example - this is AUTHORS.example content - + declared license file: AUTHORS.example.bin + dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUuYmluIGNvbnRlbnQK - declared license file: LICENCE.dummy - this is LICENCE.dummy content - + declared license file: LICENCE.dummy.bin + dGhpcyBpcyBMSUNFTkNFLmR1bW15LmJpbiBjb250ZW50Cg== - declared license file: LICENSE.txt - this is LICENSE.txt content - + declared license file: LICENSE.txt.bin + dGhpcyBpcyBMSUNFTlNFLnR4dC5iaW4gY29udGVudAo= - declared license file: NOTICE - thisis the content of the NOTICE file. - + declared license file: NOTICE.bin + dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UuYmluIGZpbGUuCg== - declared license file: licenses_a/LICENSE.CC0 - this is licenses_a/LICENSE.CC0 content - + declared license file: licenses_a/LICENSE.CC0.bin + dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwLmJpbiBjb250ZW50Cg== - declared license file: licenses_a/LICENSE.MIT - this is licenses_a/LICENSE.MIT content - + declared license file: licenses_a/LICENSE.MIT.bin + dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlULmJpbiBjb250ZW50Cg== - declared license file: licenses_b/LICENSE.md - this is licenses_b/LICENSE.md content - + declared license file: licenses_b/LICENSE.md.bin + dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQuYmluIGNvbnRlbnQK - declared license file: licenses_b/legal/NOTICE.txt - this is the content of licenses_b/legal/NOTICE.txt file. it is expected to be detected. - + declared license file: licenses_b/legal/NOTICE.txt.bin + dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQuYmluIGZpbGUuIGl0IGlzIGV4cGVjdGVkIHRvIGJlIGRldGVjdGVkLgo= diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.json.bin index 9bf685ae8..72ce29c9a 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.json.bin @@ -455,73 +455,81 @@ "licenses": [ { "license": { - "name": "declared license file: AUTHORS.example", + "name": "declared license file: AUTHORS.example.bin", "text": { - "content": "this is AUTHORS.example content\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUuYmluIGNvbnRlbnQK", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: LICENCE.dummy", + "name": "declared license file: LICENCE.dummy.bin", "text": { - "content": "this is LICENCE.dummy content\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyBMSUNFTkNFLmR1bW15LmJpbiBjb250ZW50Cg==", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: LICENSE.txt", + "name": "declared license file: LICENSE.txt.bin", "text": { - "content": "this is LICENSE.txt content\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyBMSUNFTlNFLnR4dC5iaW4gY29udGVudAo=", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: NOTICE", + "name": "declared license file: NOTICE.bin", "text": { - "content": "thisis the content of the NOTICE file.\n", - "contentType": "text/plain" + "content": "dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UuYmluIGZpbGUuCg==", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: licenses_a/LICENSE.CC0", + "name": "declared license file: licenses_a/LICENSE.CC0.bin", "text": { - "content": "this is licenses_a/LICENSE.CC0 content\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwLmJpbiBjb250ZW50Cg==", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: licenses_a/LICENSE.MIT", + "name": "declared license file: licenses_a/LICENSE.MIT.bin", "text": { - "content": "this is licenses_a/LICENSE.MIT content\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlULmJpbiBjb250ZW50Cg==", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: licenses_b/LICENSE.md", + "name": "declared license file: licenses_b/LICENSE.md.bin", "text": { - "content": "this is licenses_b/LICENSE.md content\n", - "contentType": "text/markdown" + "content": "dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQuYmluIGNvbnRlbnQK", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { - "name": "declared license file: licenses_b/legal/NOTICE.txt", + "name": "declared license file: licenses_b/legal/NOTICE.txt.bin", "text": { - "content": "this is the content of licenses_b/legal/NOTICE.txt file. it is expected to be detected.\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQuYmluIGZpbGUuIGl0IGlzIGV4cGVjdGVkIHRvIGJlIGRldGVjdGVkLgo=", + "contentType": "application/octet-stream", + "encoding": "base64" } } } diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.xml.bin index f54e73655..c2725beb2 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.xml.bin @@ -60,44 +60,36 @@ - declared license file: AUTHORS.example - this is AUTHORS.example content - + declared license file: AUTHORS.example.bin + dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUuYmluIGNvbnRlbnQK - declared license file: LICENCE.dummy - this is LICENCE.dummy content - + declared license file: LICENCE.dummy.bin + dGhpcyBpcyBMSUNFTkNFLmR1bW15LmJpbiBjb250ZW50Cg== - declared license file: LICENSE.txt - this is LICENSE.txt content - + declared license file: LICENSE.txt.bin + dGhpcyBpcyBMSUNFTlNFLnR4dC5iaW4gY29udGVudAo= - declared license file: NOTICE - thisis the content of the NOTICE file. - + declared license file: NOTICE.bin + dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UuYmluIGZpbGUuCg== - declared license file: licenses_a/LICENSE.CC0 - this is licenses_a/LICENSE.CC0 content - + declared license file: licenses_a/LICENSE.CC0.bin + dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwLmJpbiBjb250ZW50Cg== - declared license file: licenses_a/LICENSE.MIT - this is licenses_a/LICENSE.MIT content - + declared license file: licenses_a/LICENSE.MIT.bin + dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlULmJpbiBjb250ZW50Cg== - declared license file: licenses_b/LICENSE.md - this is licenses_b/LICENSE.md content - + declared license file: licenses_b/LICENSE.md.bin + dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQuYmluIGNvbnRlbnQK - declared license file: licenses_b/legal/NOTICE.txt - this is the content of licenses_b/legal/NOTICE.txt file. it is expected to be detected. - + declared license file: licenses_b/legal/NOTICE.txt.bin + dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQuYmluIGZpbGUuIGl0IGlzIGV4cGVjdGVkIHRvIGJlIGRldGVjdGVkLgo= diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.json.bin index a3895fb11..1d3176b10 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.json.bin @@ -487,80 +487,88 @@ { "license": { "acknowledgement": "declared", - "name": "declared license file: AUTHORS.example", + "name": "declared license file: AUTHORS.example.bin", "text": { - "content": "this is AUTHORS.example content\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUuYmluIGNvbnRlbnQK", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { "acknowledgement": "declared", - "name": "declared license file: LICENCE.dummy", + "name": "declared license file: LICENCE.dummy.bin", "text": { - "content": "this is LICENCE.dummy content\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyBMSUNFTkNFLmR1bW15LmJpbiBjb250ZW50Cg==", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { "acknowledgement": "declared", - "name": "declared license file: LICENSE.txt", + "name": "declared license file: LICENSE.txt.bin", "text": { - "content": "this is LICENSE.txt content\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyBMSUNFTlNFLnR4dC5iaW4gY29udGVudAo=", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { "acknowledgement": "declared", - "name": "declared license file: NOTICE", + "name": "declared license file: NOTICE.bin", "text": { - "content": "thisis the content of the NOTICE file.\n", - "contentType": "text/plain" + "content": "dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UuYmluIGZpbGUuCg==", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { "acknowledgement": "declared", - "name": "declared license file: licenses_a/LICENSE.CC0", + "name": "declared license file: licenses_a/LICENSE.CC0.bin", "text": { - "content": "this is licenses_a/LICENSE.CC0 content\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwLmJpbiBjb250ZW50Cg==", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { "acknowledgement": "declared", - "name": "declared license file: licenses_a/LICENSE.MIT", + "name": "declared license file: licenses_a/LICENSE.MIT.bin", "text": { - "content": "this is licenses_a/LICENSE.MIT content\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlULmJpbiBjb250ZW50Cg==", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { "acknowledgement": "declared", - "name": "declared license file: licenses_b/LICENSE.md", + "name": "declared license file: licenses_b/LICENSE.md.bin", "text": { - "content": "this is licenses_b/LICENSE.md content\n", - "contentType": "text/markdown" + "content": "dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQuYmluIGNvbnRlbnQK", + "contentType": "application/octet-stream", + "encoding": "base64" } } }, { "license": { "acknowledgement": "declared", - "name": "declared license file: licenses_b/legal/NOTICE.txt", + "name": "declared license file: licenses_b/legal/NOTICE.txt.bin", "text": { - "content": "this is the content of licenses_b/legal/NOTICE.txt file. it is expected to be detected.\n", - "contentType": "text/plain" + "content": "dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQuYmluIGZpbGUuIGl0IGlzIGV4cGVjdGVkIHRvIGJlIGRldGVjdGVkLgo=", + "contentType": "application/octet-stream", + "encoding": "base64" } } } diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.xml.bin index 2326b6849..b31147bfe 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.xml.bin @@ -60,44 +60,36 @@ - declared license file: AUTHORS.example - this is AUTHORS.example content - + declared license file: AUTHORS.example.bin + dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUuYmluIGNvbnRlbnQK - declared license file: LICENCE.dummy - this is LICENCE.dummy content - + declared license file: LICENCE.dummy.bin + dGhpcyBpcyBMSUNFTkNFLmR1bW15LmJpbiBjb250ZW50Cg== - declared license file: LICENSE.txt - this is LICENSE.txt content - + declared license file: LICENSE.txt.bin + dGhpcyBpcyBMSUNFTlNFLnR4dC5iaW4gY29udGVudAo= - declared license file: NOTICE - thisis the content of the NOTICE file. - + declared license file: NOTICE.bin + dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UuYmluIGZpbGUuCg== - declared license file: licenses_a/LICENSE.CC0 - this is licenses_a/LICENSE.CC0 content - + declared license file: licenses_a/LICENSE.CC0.bin + dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwLmJpbiBjb250ZW50Cg== - declared license file: licenses_a/LICENSE.MIT - this is licenses_a/LICENSE.MIT content - + declared license file: licenses_a/LICENSE.MIT.bin + dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlULmJpbiBjb250ZW50Cg== - declared license file: licenses_b/LICENSE.md - this is licenses_b/LICENSE.md content - + declared license file: licenses_b/LICENSE.md.bin + dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQuYmluIGNvbnRlbnQK - declared license file: licenses_b/legal/NOTICE.txt - this is the content of licenses_b/legal/NOTICE.txt file. it is expected to be detected. - + declared license file: licenses_b/legal/NOTICE.txt.bin + dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQuYmluIGZpbGUuIGl0IGlzIGV4cGVjdGVkIHRvIGJlIGRldGVjdGVkLgo= From c214019b01e5ae00fa3c67bb864d4b35a14fdb9d Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Tue, 8 Jul 2025 19:41:10 +0200 Subject: [PATCH 20/49] wip Signed-off-by: Jan Kowalleck --- tests/integration/test_utils_pep621.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/integration/test_utils_pep621.py b/tests/integration/test_utils_pep621.py index 0e685b0fc..604dcde3c 100644 --- a/tests/integration/test_utils_pep621.py +++ b/tests/integration/test_utils_pep621.py @@ -56,7 +56,7 @@ def test_project2licenses_license_dict_file(self) -> None: with TemporaryDirectory() as tmpdir: with open(join(tmpdir, 'license.txt'), 'w') as tf: tf.write('File license text') - licenses = list(project2licenses(project, lfac, fpath=join(tmpdir, 'pyproject.toml'))) + licenses = list(project2licenses(project, lfac, True, fpath=join(tmpdir, 'pyproject.toml'))) self.assertEqual(len(licenses), 1) lic = licenses[0] self.assertIsInstance(lic, DisjunctiveLicense) From eacf6e8e9f113860d18d567a060d5ee130ef614e Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Wed, 9 Jul 2025 10:17:01 +0200 Subject: [PATCH 21/49] wip Signed-off-by: Jan Kowalleck --- .../plain_normalize-packagename_1.0.xml.bin | 7 +++++ .../plain_normalize-packagename_1.1.xml.bin | 17 ++++++++++++ .../plain_normalize-packagename_1.2.json.bin | 26 ++++++++++++++++++ .../plain_normalize-packagename_1.2.xml.bin | 19 +++++++++++++ .../plain_normalize-packagename_1.3.json.bin | 26 ++++++++++++++++++ .../plain_normalize-packagename_1.3.xml.bin | 19 +++++++++++++ .../plain_normalize-packagename_1.4.json.bin | 26 ++++++++++++++++++ .../plain_normalize-packagename_1.4.xml.bin | 19 +++++++++++++ .../plain_normalize-packagename_1.5.json.bin | 26 ++++++++++++++++++ .../plain_normalize-packagename_1.5.xml.bin | 19 +++++++++++++ .../plain_normalize-packagename_1.6.json.bin | 27 +++++++++++++++++++ .../plain_normalize-packagename_1.6.xml.bin | 19 +++++++++++++ ...egression-issue448.cp1252.txt_1.3.json.bin | 14 ++++++++++ ...regression-issue448.cp1252.txt_1.3.xml.bin | 10 +++++++ ...egression-issue448.cp1252.txt_1.4.json.bin | 14 ++++++++++ ...regression-issue448.cp1252.txt_1.4.xml.bin | 10 +++++++ ...egression-issue448.cp1252.txt_1.5.json.bin | 14 ++++++++++ ...regression-issue448.cp1252.txt_1.5.xml.bin | 10 +++++++ ...egression-issue448.cp1252.txt_1.6.json.bin | 16 +++++++++++ ...regression-issue448.cp1252.txt_1.6.xml.bin | 10 +++++++ 20 files changed, 348 insertions(+) diff --git a/tests/_data/snapshots/environment/plain_normalize-packagename_1.0.xml.bin b/tests/_data/snapshots/environment/plain_normalize-packagename_1.0.xml.bin index 72cd7c315..a493f9396 100644 --- a/tests/_data/snapshots/environment/plain_normalize-packagename_1.0.xml.bin +++ b/tests/_data/snapshots/environment/plain_normalize-packagename_1.0.xml.bin @@ -8,6 +8,13 @@ pkg:pypi/ruamel.yaml@0.18.5 false + + ruamel.yaml.clib + 0.2.8 + C version of reader, parser and emitter for ruamel.yaml derived from libyaml + pkg:pypi/ruamel.yaml.clib@0.2.8 + false + ruamel.yaml.jinja2 0.2.7 diff --git a/tests/_data/snapshots/environment/plain_normalize-packagename_1.1.xml.bin b/tests/_data/snapshots/environment/plain_normalize-packagename_1.1.xml.bin index 913e43499..ff813c972 100644 --- a/tests/_data/snapshots/environment/plain_normalize-packagename_1.1.xml.bin +++ b/tests/_data/snapshots/environment/plain_normalize-packagename_1.1.xml.bin @@ -30,6 +30,23 @@ + + ruamel.yaml.clib + 0.2.8 + C version of reader, parser and emitter for ruamel.yaml derived from libyaml + + + MIT + + + pkg:pypi/ruamel.yaml.clib@0.2.8 + + + https://sourceforge.net/p/ruamel-yaml-clib/code/ci/default/tree + from packaging metadata: Home-page + + + ruamel.yaml.jinja2 0.2.7 diff --git a/tests/_data/snapshots/environment/plain_normalize-packagename_1.2.json.bin b/tests/_data/snapshots/environment/plain_normalize-packagename_1.2.json.bin index a225a2802..91708102f 100644 --- a/tests/_data/snapshots/environment/plain_normalize-packagename_1.2.json.bin +++ b/tests/_data/snapshots/environment/plain_normalize-packagename_1.2.json.bin @@ -37,6 +37,28 @@ "type": "library", "version": "0.18.5" }, + { + "bom-ref": "ruamel.yaml.clib==0.2.8", + "description": "C version of reader, parser and emitter for ruamel.yaml derived from libyaml", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://sourceforge.net/p/ruamel-yaml-clib/code/ci/default/tree" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "name": "ruamel.yaml.clib", + "purl": "pkg:pypi/ruamel.yaml.clib@0.2.8", + "type": "library", + "version": "0.2.8" + }, { "bom-ref": "ruamel.yaml.jinja2==0.2.7", "description": "jinja2 pre and post-processor to update with YAML", @@ -67,6 +89,9 @@ ], "ref": "root-component" }, + { + "ref": "ruamel.yaml.clib==0.2.8" + }, { "dependsOn": [ "ruamel.yaml==0.18.5" @@ -75,6 +100,7 @@ }, { "dependsOn": [ + "ruamel.yaml.clib==0.2.8", "ruamel.yaml.jinja2==0.2.7" ], "ref": "ruamel.yaml==0.18.5" diff --git a/tests/_data/snapshots/environment/plain_normalize-packagename_1.2.xml.bin b/tests/_data/snapshots/environment/plain_normalize-packagename_1.2.xml.bin index a1961673d..ed9c8cf81 100644 --- a/tests/_data/snapshots/environment/plain_normalize-packagename_1.2.xml.bin +++ b/tests/_data/snapshots/environment/plain_normalize-packagename_1.2.xml.bin @@ -49,6 +49,23 @@ + + ruamel.yaml.clib + 0.2.8 + C version of reader, parser and emitter for ruamel.yaml derived from libyaml + + + MIT + + + pkg:pypi/ruamel.yaml.clib@0.2.8 + + + https://sourceforge.net/p/ruamel-yaml-clib/code/ci/default/tree + from packaging metadata: Home-page + + + ruamel.yaml.jinja2 0.2.7 @@ -71,10 +88,12 @@ + + diff --git a/tests/_data/snapshots/environment/plain_normalize-packagename_1.3.json.bin b/tests/_data/snapshots/environment/plain_normalize-packagename_1.3.json.bin index 524ad20bd..6d4e8734b 100644 --- a/tests/_data/snapshots/environment/plain_normalize-packagename_1.3.json.bin +++ b/tests/_data/snapshots/environment/plain_normalize-packagename_1.3.json.bin @@ -43,6 +43,28 @@ "type": "library", "version": "0.18.5" }, + { + "bom-ref": "ruamel.yaml.clib==0.2.8", + "description": "C version of reader, parser and emitter for ruamel.yaml derived from libyaml", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://sourceforge.net/p/ruamel-yaml-clib/code/ci/default/tree" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "name": "ruamel.yaml.clib", + "purl": "pkg:pypi/ruamel.yaml.clib@0.2.8", + "type": "library", + "version": "0.2.8" + }, { "bom-ref": "ruamel.yaml.jinja2==0.2.7", "description": "jinja2 pre and post-processor to update with YAML", @@ -73,6 +95,9 @@ ], "ref": "root-component" }, + { + "ref": "ruamel.yaml.clib==0.2.8" + }, { "dependsOn": [ "ruamel.yaml==0.18.5" @@ -81,6 +106,7 @@ }, { "dependsOn": [ + "ruamel.yaml.clib==0.2.8", "ruamel.yaml.jinja2==0.2.7" ], "ref": "ruamel.yaml==0.18.5" diff --git a/tests/_data/snapshots/environment/plain_normalize-packagename_1.3.xml.bin b/tests/_data/snapshots/environment/plain_normalize-packagename_1.3.xml.bin index 9a6cc0b2d..5eb7f2d4e 100644 --- a/tests/_data/snapshots/environment/plain_normalize-packagename_1.3.xml.bin +++ b/tests/_data/snapshots/environment/plain_normalize-packagename_1.3.xml.bin @@ -55,6 +55,23 @@ jinja2 + + ruamel.yaml.clib + 0.2.8 + C version of reader, parser and emitter for ruamel.yaml derived from libyaml + + + MIT + + + pkg:pypi/ruamel.yaml.clib@0.2.8 + + + https://sourceforge.net/p/ruamel-yaml-clib/code/ci/default/tree + from packaging metadata: Home-page + + + ruamel.yaml.jinja2 0.2.7 @@ -77,10 +94,12 @@ + + diff --git a/tests/_data/snapshots/environment/plain_normalize-packagename_1.4.json.bin b/tests/_data/snapshots/environment/plain_normalize-packagename_1.4.json.bin index 036cd6509..0544a3496 100644 --- a/tests/_data/snapshots/environment/plain_normalize-packagename_1.4.json.bin +++ b/tests/_data/snapshots/environment/plain_normalize-packagename_1.4.json.bin @@ -43,6 +43,28 @@ "type": "library", "version": "0.18.5" }, + { + "bom-ref": "ruamel.yaml.clib==0.2.8", + "description": "C version of reader, parser and emitter for ruamel.yaml derived from libyaml", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://sourceforge.net/p/ruamel-yaml-clib/code/ci/default/tree" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "name": "ruamel.yaml.clib", + "purl": "pkg:pypi/ruamel.yaml.clib@0.2.8", + "type": "library", + "version": "0.2.8" + }, { "bom-ref": "ruamel.yaml.jinja2==0.2.7", "description": "jinja2 pre and post-processor to update with YAML", @@ -73,6 +95,9 @@ ], "ref": "root-component" }, + { + "ref": "ruamel.yaml.clib==0.2.8" + }, { "dependsOn": [ "ruamel.yaml==0.18.5" @@ -81,6 +106,7 @@ }, { "dependsOn": [ + "ruamel.yaml.clib==0.2.8", "ruamel.yaml.jinja2==0.2.7" ], "ref": "ruamel.yaml==0.18.5" diff --git a/tests/_data/snapshots/environment/plain_normalize-packagename_1.4.xml.bin b/tests/_data/snapshots/environment/plain_normalize-packagename_1.4.xml.bin index 545b48684..0cfe9b1d3 100644 --- a/tests/_data/snapshots/environment/plain_normalize-packagename_1.4.xml.bin +++ b/tests/_data/snapshots/environment/plain_normalize-packagename_1.4.xml.bin @@ -82,6 +82,23 @@ jinja2 + + ruamel.yaml.clib + 0.2.8 + C version of reader, parser and emitter for ruamel.yaml derived from libyaml + + + MIT + + + pkg:pypi/ruamel.yaml.clib@0.2.8 + + + https://sourceforge.net/p/ruamel-yaml-clib/code/ci/default/tree + from packaging metadata: Home-page + + + ruamel.yaml.jinja2 0.2.7 @@ -104,10 +121,12 @@ + + diff --git a/tests/_data/snapshots/environment/plain_normalize-packagename_1.5.json.bin b/tests/_data/snapshots/environment/plain_normalize-packagename_1.5.json.bin index 5a0fb10bd..d6ee9708d 100644 --- a/tests/_data/snapshots/environment/plain_normalize-packagename_1.5.json.bin +++ b/tests/_data/snapshots/environment/plain_normalize-packagename_1.5.json.bin @@ -43,6 +43,28 @@ "type": "library", "version": "0.18.5" }, + { + "bom-ref": "ruamel.yaml.clib==0.2.8", + "description": "C version of reader, parser and emitter for ruamel.yaml derived from libyaml", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://sourceforge.net/p/ruamel-yaml-clib/code/ci/default/tree" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "name": "ruamel.yaml.clib", + "purl": "pkg:pypi/ruamel.yaml.clib@0.2.8", + "type": "library", + "version": "0.2.8" + }, { "bom-ref": "ruamel.yaml.jinja2==0.2.7", "description": "jinja2 pre and post-processor to update with YAML", @@ -73,6 +95,9 @@ ], "ref": "root-component" }, + { + "ref": "ruamel.yaml.clib==0.2.8" + }, { "dependsOn": [ "ruamel.yaml==0.18.5" @@ -81,6 +106,7 @@ }, { "dependsOn": [ + "ruamel.yaml.clib==0.2.8", "ruamel.yaml.jinja2==0.2.7" ], "ref": "ruamel.yaml==0.18.5" diff --git a/tests/_data/snapshots/environment/plain_normalize-packagename_1.5.xml.bin b/tests/_data/snapshots/environment/plain_normalize-packagename_1.5.xml.bin index 51adc4aa7..0315026e5 100644 --- a/tests/_data/snapshots/environment/plain_normalize-packagename_1.5.xml.bin +++ b/tests/_data/snapshots/environment/plain_normalize-packagename_1.5.xml.bin @@ -92,6 +92,23 @@ jinja2 + + ruamel.yaml.clib + 0.2.8 + C version of reader, parser and emitter for ruamel.yaml derived from libyaml + + + MIT + + + pkg:pypi/ruamel.yaml.clib@0.2.8 + + + https://sourceforge.net/p/ruamel-yaml-clib/code/ci/default/tree + from packaging metadata: Home-page + + + ruamel.yaml.jinja2 0.2.7 @@ -114,10 +131,12 @@ + + diff --git a/tests/_data/snapshots/environment/plain_normalize-packagename_1.6.json.bin b/tests/_data/snapshots/environment/plain_normalize-packagename_1.6.json.bin index 2b716f80c..f5afd381a 100644 --- a/tests/_data/snapshots/environment/plain_normalize-packagename_1.6.json.bin +++ b/tests/_data/snapshots/environment/plain_normalize-packagename_1.6.json.bin @@ -44,6 +44,29 @@ "type": "library", "version": "0.18.5" }, + { + "bom-ref": "ruamel.yaml.clib==0.2.8", + "description": "C version of reader, parser and emitter for ruamel.yaml derived from libyaml", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://sourceforge.net/p/ruamel-yaml-clib/code/ci/default/tree" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "ruamel.yaml.clib", + "purl": "pkg:pypi/ruamel.yaml.clib@0.2.8", + "type": "library", + "version": "0.2.8" + }, { "bom-ref": "ruamel.yaml.jinja2==0.2.7", "description": "jinja2 pre and post-processor to update with YAML", @@ -75,6 +98,9 @@ ], "ref": "root-component" }, + { + "ref": "ruamel.yaml.clib==0.2.8" + }, { "dependsOn": [ "ruamel.yaml==0.18.5" @@ -83,6 +109,7 @@ }, { "dependsOn": [ + "ruamel.yaml.clib==0.2.8", "ruamel.yaml.jinja2==0.2.7" ], "ref": "ruamel.yaml==0.18.5" diff --git a/tests/_data/snapshots/environment/plain_normalize-packagename_1.6.xml.bin b/tests/_data/snapshots/environment/plain_normalize-packagename_1.6.xml.bin index 27360cf0b..f4269cf4d 100644 --- a/tests/_data/snapshots/environment/plain_normalize-packagename_1.6.xml.bin +++ b/tests/_data/snapshots/environment/plain_normalize-packagename_1.6.xml.bin @@ -92,6 +92,23 @@ jinja2 + + ruamel.yaml.clib + 0.2.8 + C version of reader, parser and emitter for ruamel.yaml derived from libyaml + + + MIT + + + pkg:pypi/ruamel.yaml.clib@0.2.8 + + + https://sourceforge.net/p/ruamel-yaml-clib/code/ci/default/tree + from packaging metadata: Home-page + + + ruamel.yaml.jinja2 0.2.7 @@ -114,10 +131,12 @@ + + diff --git a/tests/_data/snapshots/requirements/file_regression-issue448.cp1252.txt_1.3.json.bin b/tests/_data/snapshots/requirements/file_regression-issue448.cp1252.txt_1.3.json.bin index da1293f6d..9c46f4e01 100644 --- a/tests/_data/snapshots/requirements/file_regression-issue448.cp1252.txt_1.3.json.bin +++ b/tests/_data/snapshots/requirements/file_regression-issue448.cp1252.txt_1.3.json.bin @@ -64,6 +64,20 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/file_regression-issue448.cp1252.txt_1.3.xml.bin b/tests/_data/snapshots/requirements/file_regression-issue448.cp1252.txt_1.3.xml.bin index ec4b45e31..4d080ffe0 100644 --- a/tests/_data/snapshots/requirements/file_regression-issue448.cp1252.txt_1.3.xml.bin +++ b/tests/_data/snapshots/requirements/file_regression-issue448.cp1252.txt_1.3.xml.bin @@ -46,6 +46,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/file_regression-issue448.cp1252.txt_1.4.json.bin b/tests/_data/snapshots/requirements/file_regression-issue448.cp1252.txt_1.4.json.bin index 19952b876..d86b276a7 100644 --- a/tests/_data/snapshots/requirements/file_regression-issue448.cp1252.txt_1.4.json.bin +++ b/tests/_data/snapshots/requirements/file_regression-issue448.cp1252.txt_1.4.json.bin @@ -61,6 +61,20 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/file_regression-issue448.cp1252.txt_1.4.xml.bin b/tests/_data/snapshots/requirements/file_regression-issue448.cp1252.txt_1.4.xml.bin index fa96bd5b0..4b2f63cf6 100644 --- a/tests/_data/snapshots/requirements/file_regression-issue448.cp1252.txt_1.4.xml.bin +++ b/tests/_data/snapshots/requirements/file_regression-issue448.cp1252.txt_1.4.xml.bin @@ -73,6 +73,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/file_regression-issue448.cp1252.txt_1.5.json.bin b/tests/_data/snapshots/requirements/file_regression-issue448.cp1252.txt_1.5.json.bin index a71512f82..cd8ad63cc 100644 --- a/tests/_data/snapshots/requirements/file_regression-issue448.cp1252.txt_1.5.json.bin +++ b/tests/_data/snapshots/requirements/file_regression-issue448.cp1252.txt_1.5.json.bin @@ -61,6 +61,20 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/file_regression-issue448.cp1252.txt_1.5.xml.bin b/tests/_data/snapshots/requirements/file_regression-issue448.cp1252.txt_1.5.xml.bin index 2fb080c3c..797930962 100644 --- a/tests/_data/snapshots/requirements/file_regression-issue448.cp1252.txt_1.5.xml.bin +++ b/tests/_data/snapshots/requirements/file_regression-issue448.cp1252.txt_1.5.xml.bin @@ -83,6 +83,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true diff --git a/tests/_data/snapshots/requirements/file_regression-issue448.cp1252.txt_1.6.json.bin b/tests/_data/snapshots/requirements/file_regression-issue448.cp1252.txt_1.6.json.bin index 2e58bbf61..e18774f75 100644 --- a/tests/_data/snapshots/requirements/file_regression-issue448.cp1252.txt_1.6.json.bin +++ b/tests/_data/snapshots/requirements/file_regression-issue448.cp1252.txt_1.6.json.bin @@ -61,6 +61,22 @@ "component": { "bom-ref": "root-component", "description": "some `reuqirements.txt` a root-component with all metadata", + "evidence": { + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, "externalReferences": [ { "comment": "from pyproject urls: documentation", diff --git a/tests/_data/snapshots/requirements/file_regression-issue448.cp1252.txt_1.6.xml.bin b/tests/_data/snapshots/requirements/file_regression-issue448.cp1252.txt_1.6.xml.bin index 859c795fb..be51ce145 100644 --- a/tests/_data/snapshots/requirements/file_regression-issue448.cp1252.txt_1.6.xml.bin +++ b/tests/_data/snapshots/requirements/file_regression-issue448.cp1252.txt_1.6.xml.bin @@ -83,6 +83,16 @@ from pyproject urls: homepage + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + true From fa35e89fd25afbb0012826e3ec142e04589640b1 Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Wed, 9 Jul 2025 10:44:10 +0200 Subject: [PATCH 22/49] wip Signed-off-by: Jan Kowalleck --- .../infiles/environment/normalize-packagename/pyproject.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/_data/infiles/environment/normalize-packagename/pyproject.toml b/tests/_data/infiles/environment/normalize-packagename/pyproject.toml index 7719ad140..b40b63953 100644 --- a/tests/_data/infiles/environment/normalize-packagename/pyproject.toml +++ b/tests/_data/infiles/environment/normalize-packagename/pyproject.toml @@ -7,5 +7,6 @@ description = "packages with non-normalized names" # see https://packaging.python.org/en/latest/specifications/name-normalization/#name-normalization dependencies = [ - "ruamel-YAML[jinja2]" # actually "ruamel.yaml", normalizes to "ruamel-yaml" + "ruamel-YAML[jinja2]", # actually "ruamel.yaml", normalizes to "ruamel-yaml" + "ruamel_yaml-Clib" # actually "ruamel.yaml.clib" -- installed for interop ] From 441b8a6e9cfcb94f43953c76e8279b619375eee9 Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Wed, 9 Jul 2025 10:52:22 +0200 Subject: [PATCH 23/49] wip Signed-off-by: Jan Kowalleck --- tests/_data/infiles/environment/normalize-packagename/init.py | 1 + .../infiles/environment/normalize-packagename/pyproject.toml | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/_data/infiles/environment/normalize-packagename/init.py b/tests/_data/infiles/environment/normalize-packagename/init.py index 65d1e3952..d2a88fc9b 100644 --- a/tests/_data/infiles/environment/normalize-packagename/init.py +++ b/tests/_data/infiles/environment/normalize-packagename/init.py @@ -67,6 +67,7 @@ def main() -> None: # https://packaging.python.org/en/latest/specifications/name-normalization/#name-normalization 'ruamel-YAML[jinja2]', # actually "ruamel.yaml", normalizes to "ruamel-yaml" 'ruamel-Yaml.Jinja2', # actually "ruamel.yaml.jinja2", normalizes to "ruamel-yaml-jinja2" + 'ruamel_yaml-Clib', # actually "ruamel.yaml.clib", normalized to "ruamel-yaml-clib" ) diff --git a/tests/_data/infiles/environment/normalize-packagename/pyproject.toml b/tests/_data/infiles/environment/normalize-packagename/pyproject.toml index b40b63953..7719ad140 100644 --- a/tests/_data/infiles/environment/normalize-packagename/pyproject.toml +++ b/tests/_data/infiles/environment/normalize-packagename/pyproject.toml @@ -7,6 +7,5 @@ description = "packages with non-normalized names" # see https://packaging.python.org/en/latest/specifications/name-normalization/#name-normalization dependencies = [ - "ruamel-YAML[jinja2]", # actually "ruamel.yaml", normalizes to "ruamel-yaml" - "ruamel_yaml-Clib" # actually "ruamel.yaml.clib" -- installed for interop + "ruamel-YAML[jinja2]" # actually "ruamel.yaml", normalizes to "ruamel-yaml" ] From ff64474d7412a78b4c5cd7784cb9640fa5ba5a6a Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Wed, 9 Jul 2025 11:00:48 +0200 Subject: [PATCH 24/49] wip Signed-off-by: Jan Kowalleck --- ...p639-texts_with-license-pep639_1.0.xml.bin | 52 - ...p639-texts_with-license-pep639_1.1.xml.bin | 1057 ------------ ...639-texts_with-license-pep639_1.2.json.bin | 439 ----- ...p639-texts_with-license-pep639_1.2.xml.bin | 1099 ------------- ...639-texts_with-license-pep639_1.3.json.bin | 570 ------- ...p639-texts_with-license-pep639_1.3.xml.bin | 1392 ---------------- ...639-texts_with-license-pep639_1.4.json.bin | 605 ------- ...p639-texts_with-license-pep639_1.4.xml.bin | 1419 ---------------- ...639-texts_with-license-pep639_1.5.json.bin | 619 ------- ...p639-texts_with-license-pep639_1.5.xml.bin | 1429 ----------------- ...639-texts_with-license-pep639_1.6.json.bin | 660 -------- ...p639-texts_with-license-pep639_1.6.xml.bin | 1429 ----------------- .../pep639_with-license-pep639_1.0.xml.bin | 52 - .../pep639_with-license-pep639_1.1.xml.bin | 154 -- .../pep639_with-license-pep639_1.2.json.bin | 265 --- .../pep639_with-license-pep639_1.2.xml.bin | 196 --- .../pep639_with-license-pep639_1.3.json.bin | 285 ---- .../pep639_with-license-pep639_1.3.xml.bin | 209 --- .../pep639_with-license-pep639_1.4.json.bin | 320 ---- .../pep639_with-license-pep639_1.4.xml.bin | 236 --- .../pep639_with-license-pep639_1.5.json.bin | 334 ---- .../pep639_with-license-pep639_1.5.xml.bin | 246 --- .../pep639_with-license-pep639_1.6.json.bin | 345 ---- .../pep639_with-license-pep639_1.6.xml.bin | 246 --- .../texts_with-license-file_1.0.xml.bin | 4 + .../texts_with-license-file_1.1.xml.bin | 4 + .../texts_with-license-file_1.2.json.bin | 44 + .../texts_with-license-file_1.2.xml.bin | 31 + .../texts_with-license-file_1.3.json.bin | 50 + .../texts_with-license-file_1.3.xml.bin | 34 + .../texts_with-license-file_1.4.json.bin | 85 + .../texts_with-license-file_1.4.xml.bin | 61 + .../texts_with-license-file_1.5.json.bin | 99 ++ .../texts_with-license-file_1.5.xml.bin | 71 + .../texts_with-license-file_1.6.json.bin | 101 ++ .../texts_with-license-file_1.6.xml.bin | 71 + .../texts_with-license-text_1.0.xml.bin | 23 + .../texts_with-license-text_1.1.xml.bin | 55 + .../texts_with-license-text_1.2.json.bin | 124 ++ .../texts_with-license-text_1.2.xml.bin | 87 + .../texts_with-license-text_1.3.json.bin | 162 ++ .../texts_with-license-text_1.3.xml.bin | 109 ++ .../texts_with-license-text_1.4.json.bin | 197 +++ .../texts_with-license-text_1.4.xml.bin | 136 ++ .../texts_with-license-text_1.5.json.bin | 211 +++ .../texts_with-license-text_1.5.xml.bin | 146 ++ .../texts_with-license-text_1.6.json.bin | 219 +++ .../texts_with-license-text_1.6.xml.bin | 146 ++ tests/integration/test_cli_environment.py | 31 +- 49 files changed, 2271 insertions(+), 13688 deletions(-) delete mode 100644 tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.0.xml.bin delete mode 100644 tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.1.xml.bin delete mode 100644 tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.2.json.bin delete mode 100644 tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.2.xml.bin delete mode 100644 tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.json.bin delete mode 100644 tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.xml.bin delete mode 100644 tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.json.bin delete mode 100644 tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.xml.bin delete mode 100644 tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.json.bin delete mode 100644 tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.xml.bin delete mode 100644 tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.json.bin delete mode 100644 tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.xml.bin delete mode 100644 tests/_data/snapshots/environment/pep639_with-license-pep639_1.0.xml.bin delete mode 100644 tests/_data/snapshots/environment/pep639_with-license-pep639_1.1.xml.bin delete mode 100644 tests/_data/snapshots/environment/pep639_with-license-pep639_1.2.json.bin delete mode 100644 tests/_data/snapshots/environment/pep639_with-license-pep639_1.2.xml.bin delete mode 100644 tests/_data/snapshots/environment/pep639_with-license-pep639_1.3.json.bin delete mode 100644 tests/_data/snapshots/environment/pep639_with-license-pep639_1.3.xml.bin delete mode 100644 tests/_data/snapshots/environment/pep639_with-license-pep639_1.4.json.bin delete mode 100644 tests/_data/snapshots/environment/pep639_with-license-pep639_1.4.xml.bin delete mode 100644 tests/_data/snapshots/environment/pep639_with-license-pep639_1.5.json.bin delete mode 100644 tests/_data/snapshots/environment/pep639_with-license-pep639_1.5.xml.bin delete mode 100644 tests/_data/snapshots/environment/pep639_with-license-pep639_1.6.json.bin delete mode 100644 tests/_data/snapshots/environment/pep639_with-license-pep639_1.6.xml.bin create mode 100644 tests/_data/snapshots/environment/texts_with-license-file_1.0.xml.bin create mode 100644 tests/_data/snapshots/environment/texts_with-license-file_1.1.xml.bin create mode 100644 tests/_data/snapshots/environment/texts_with-license-file_1.2.json.bin create mode 100644 tests/_data/snapshots/environment/texts_with-license-file_1.2.xml.bin create mode 100644 tests/_data/snapshots/environment/texts_with-license-file_1.3.json.bin create mode 100644 tests/_data/snapshots/environment/texts_with-license-file_1.3.xml.bin create mode 100644 tests/_data/snapshots/environment/texts_with-license-file_1.4.json.bin create mode 100644 tests/_data/snapshots/environment/texts_with-license-file_1.4.xml.bin create mode 100644 tests/_data/snapshots/environment/texts_with-license-file_1.5.json.bin create mode 100644 tests/_data/snapshots/environment/texts_with-license-file_1.5.xml.bin create mode 100644 tests/_data/snapshots/environment/texts_with-license-file_1.6.json.bin create mode 100644 tests/_data/snapshots/environment/texts_with-license-file_1.6.xml.bin create mode 100644 tests/_data/snapshots/environment/texts_with-license-text_1.0.xml.bin create mode 100644 tests/_data/snapshots/environment/texts_with-license-text_1.1.xml.bin create mode 100644 tests/_data/snapshots/environment/texts_with-license-text_1.2.json.bin create mode 100644 tests/_data/snapshots/environment/texts_with-license-text_1.2.xml.bin create mode 100644 tests/_data/snapshots/environment/texts_with-license-text_1.3.json.bin create mode 100644 tests/_data/snapshots/environment/texts_with-license-text_1.3.xml.bin create mode 100644 tests/_data/snapshots/environment/texts_with-license-text_1.4.json.bin create mode 100644 tests/_data/snapshots/environment/texts_with-license-text_1.4.xml.bin create mode 100644 tests/_data/snapshots/environment/texts_with-license-text_1.5.json.bin create mode 100644 tests/_data/snapshots/environment/texts_with-license-text_1.5.xml.bin create mode 100644 tests/_data/snapshots/environment/texts_with-license-text_1.6.json.bin create mode 100644 tests/_data/snapshots/environment/texts_with-license-text_1.6.xml.bin diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.0.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.0.xml.bin deleted file mode 100644 index 0fd15f6d0..000000000 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.0.xml.bin +++ /dev/null @@ -1,52 +0,0 @@ - - - - - attrs - 23.2.0 - Classes Without Boilerplate - pkg:pypi/attrs@23.2.0 - false - - - boolean.py - 4.0 - Define boolean algebras, create and parse boolean expressions and create custom boolean DSL. - pkg:pypi/boolean.py@4.0 - false - - - cryptography - 43.0.1 - cryptography is a package which provides cryptographic recipes and primitives to Python developers. - pkg:pypi/cryptography@43.0.1 - false - - - jsonpointer - 2.4 - Identify specific nodes in a JSON document (RFC 6901) - pkg:pypi/jsonpointer@2.4 - false - - - license-expression - 30.3.0 - license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic. - pkg:pypi/license-expression@30.3.0 - false - - - lxml - 5.3.0 - Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. - pkg:pypi/lxml@5.3.0 - false - - - regression-issue868 - 0.1 - false - - - diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.1.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.1.xml.bin deleted file mode 100644 index afe85637c..000000000 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.1.xml.bin +++ /dev/null @@ -1,1057 +0,0 @@ - - - - - attrs - 23.2.0 - Classes Without Boilerplate - - - MIT - - - declared license file: LICENSE - The MIT License (MIT) - -Copyright (c) 2015 Hynek Schlawack and the attrs contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - - - pkg:pypi/attrs@23.2.0 - - - https://www.attrs.org/ - from packaging metadata Project-URL: Documentation - - - https://github.com/sponsors/hynek - from packaging metadata Project-URL: Funding - - - https://tidelift.com/subscription/pkg/pypi-attrs?utm_source=pypi-attrs&utm_medium=pypi - from packaging metadata Project-URL: Tidelift - - - https://www.attrs.org/en/stable/changelog.html - from packaging metadata Project-URL: Changelog - - - https://github.com/python-attrs/attrs - from packaging metadata Project-URL: GitHub - - - - - boolean.py - 4.0 - Define boolean algebras, create and parse boolean expressions and create custom boolean DSL. - - - BSD-2-Clause - - - declared license file: CHANGELOG.rst - -Changelog -========= - - -next ----- - - -4.0 (2022-05-05) ----------------- - -* API changes - - * Drop support for Python 2. - * Test on Python 3.10 - * Make Expression.sort_order an instance attributes and not a class attribute - -* Misc. - - * Correct licensing documentation - * Improve docstringf and apply minor refactorings - * Adopt black code style and isort for imports - * Drop Travis and use GitHub actions for CI - - -3.8 (2020-06-10) ----------------- - -* API changes - - * Add support for evaluation of boolean expression. - Thank you to Lars van Gemerden @gemerden - -* Bug fixes - - * Fix parsing of tokens that have a number as the first character. - Thank you to Jeff Cohen @ jcohen28 - * Restore proper Python 2 compatibility. - Thank you to Benjy Weinberger @benjyw - -* Improve documentation - - * Add pointers to Linux distro packages. - Thank you to Max Mehl @mxmehl and Carmen Bianca Bakker @carmenbianca - * Fix typo. - Thank you to Gabriel Niebler @der-gabe - - -3.7 (2019-10-04) ----------------- - -* API changes - - * Add new sort argument to simplify() to optionally not sort when simplifying - expressions (e.g. not applying "commutativity"). Thank you to Steven Esser - @majurg for this - * Add new argument to tokenizer to optionally accept extra characters in symbol - tokens. Thank you to @carpie for this - - -3.6 (2018-08-06) ----------------- - -* No API changes - -* Bug fixes - - * Fix De Morgan's laws effect on double negation propositions. Thank you to Douglas Cardoso for this - * Improve error checking when parsing - - -3.5 (Nov 1, 2017) ------------------ - -* No API changes - -* Bug fixes - - * Documentation updates and add testing for Python 3.6. Thank you to Alexander Lisianoi @alisianoi - * Improve testng and expression equivalence checks - * Improve subs() method to an expression - - - -3.4 (May 12, 2017) ------------------- - -* No API changes - -* Bug fixes and improvements - - * Fix various documentation typos and improve tests . Thank you to Alexander Lisianoi @alisianoi - * Fix handling for literals vs. symbols in negations Thank you to @YaronK - - -3.3 (2017-02-09) ----------------- - -* API changes - - * #40 and #50 Expression.subs() now takes 'default' thanks to @kronuz - * #45 simplify=False is now the default for parse and related functions or methods. - * #40 Use "&" and "|" as default operators - -* Bug fixes - - * #60 Fix bug for "a or b c" which is not a valid expression - * #58 Fix math formula display in docs - * Improve handling of parse errors - - -2.0.0 (2016-05-11) ------------------- - -* API changes - - * New algebra definition. Refactored class hierarchy. Improved parsing. - -* New features - - * possibility to subclass algebra definition - * new normal forms shortcuts for DNF and CNF. - - -1.1 (2016-04-06) ------------------- - -* Initial release on Pypi. - - - - declared license file: LICENSE.txt - Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation and/or -other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - - declared license file: README.rst - boolean.py -========== - -"boolean.py" is a small library implementing a boolean algebra. It -defines two base elements, TRUE and FALSE, and a Symbol class that can -take on one of these two values. Calculations are done in terms of AND, -OR and NOT - other compositions like XOR and NAND are not implemented -but can be emulated with AND or and NOT. Expressions are constructed -from parsed strings or in Python. - -It runs on Python 3.6+ -You can use older version 3.x for Python 2.7+ support. - -https://github.com/bastikr/boolean.py - -Build status: |Build Status| - - -Example -------- - -:: - - >>> import boolean - >>> algebra = boolean.BooleanAlgebra() - >>> expression1 = algebra.parse(u'apple and (oranges or banana) and not banana', simplify=False) - >>> expression1 - AND(Symbol('apple'), OR(Symbol('oranges'), Symbol('banana')), NOT(Symbol('banana'))) - - >>> expression2 = algebra.parse('(oranges | banana) and not banana & apple', simplify=True) - >>> expression2 - AND(Symbol('apple'), NOT(Symbol('banana')), Symbol('oranges')) - - >>> expression1 == expression2 - False - >>> expression1.simplify() == expression2 - True - - -Documentation -------------- - -http://readthedocs.org/docs/booleanpy/en/latest/ - - -Installation ------------- - -Installation via pip -~~~~~~~~~~~~~~~~~~~~ - -To install boolean.py, you need to have the following pieces of software -on your computer: - -- Python 3.6+ -- pip - -You then only need to run the following command: - -``pip install boolean.py`` - - -Installation via package managers -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -There are packages available for easy install on some operating systems. -You are welcome to help us package this tool for more distributions! - -- boolean.py has been packaged as Arch Linux, Fedora, openSus, - nixpkgs, Guix, DragonFly and FreeBSD - `packages <https://repology.org/project/python:boolean.py/versions>`__ . - -In particular: - -- Arch Linux (AUR): - `python-boolean.py <https://aur.archlinux.org/packages/python-boolean.py/>`__ -- Fedora: - `python-boolean.py <https://apps.fedoraproject.org/packages/python-boolean.py>`__ -- openSUSE: - `python-boolean.py <https://software.opensuse.org/package/python-boolean.py>`__ - - -Testing -------- - -Test ``boolean.py`` with your current Python environment: - -``python setup.py test`` - -Test with all of the supported Python environments using ``tox``: - -:: - - pip install -r requirements-dev.txt - tox - -If ``tox`` throws ``InterpreterNotFound``, limit it to python -interpreters that are actually installed on your machine: - -:: - - tox -e py36 - -Alternatively use pytest. - - -License -------- - -Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others -SPDX-License-Identifier: BSD-2-Clause - -.. |Build Status| image:: https://travis-ci.org/bastikr/boolean.py.svg?branch=master - :target: https://travis-ci.org/bastikr/boolean.py - - - - pkg:pypi/boolean.py@4.0 - - - https://github.com/bastikr/boolean.py - from packaging metadata: Home-page - - - - - cryptography - 43.0.1 - cryptography is a package which provides cryptographic recipes and primitives to Python developers. - - Apache-2.0 OR BSD-3-Clause - - pkg:pypi/cryptography@43.0.1 - - - https://cryptography.io/ - from packaging metadata Project-URL: documentation - - - https://github.com/pyca/cryptography/issues - from packaging metadata Project-URL: issues - - - https://github.com/pyca/cryptography/ - from packaging metadata Project-URL: source - - - https://cryptography.io/en/latest/changelog/ - from packaging metadata Project-URL: changelog - - - https://github.com/pyca/cryptography - from packaging metadata Project-URL: homepage - - - - - jsonpointer - 2.4 - Identify specific nodes in a JSON document (RFC 6901) - - - License :: OSI Approved :: BSD License - - - declared license file: AUTHORS - Stefan Kögl <stefan@skoegl.net> -Alexander Shorin <kxepal@gmail.com> -Christopher J. White <chris@grierwhite.com> - - - - declared license file: LICENSE.txt - Copyright (c) 2011 Stefan Kögl <stefan@skoegl.net> -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - - - declared license of 'jsonpointer' - Modified BSD License - - - pkg:pypi/jsonpointer@2.4 - - - https://github.com/stefankoegl/python-json-pointer - from packaging metadata: Home-page - - - - - license-expression - 30.3.0 - license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic. - - - Apache-2.0 - - - declared license file: AUTHORS.rst - The following organizations or individuals have contributed to this code: - -- Ayan Sinha Mahapatra @AyanSinhaMahapatra -- Carmen Bianca Bakker @carmenbianca -- Chin-Yeung Li @chinyeungli -- Dennis Clark @DennisClark -- John Horan @johnmhoran -- Jono Yang @JonoYang -- Max Mehl @mxmehl -- nexB Inc. @nexB -- Peter Kolbus @pkolbus -- Philippe Ombredanne @pombredanne -- Sebastian Schuberth @sschuberth -- Steven Esser @majurg -- Thomas Druez @tdruez - - - - declared license file: CHANGELOG.rst - Changelog -========= - -v30.3.0 - 2024-03-18 --------------------- - -This is a minor release without API changes: - -- Use latest skeleton -- Update license list to latest ScanCode and SPDX 3.23 -- Drop support for Python 3.7 - -v30.2.0 - 2023-11-29 --------------------- - -This is a minor release without API changes: - -- Use latest skeleton -- Update license list to latest ScanCode and SPDX 3.22 -- Add Python 3.12 support in CI - - -v30.1.1 - 2023-01-16 ----------------------- - -This is a minor dot release without API changes - -- Use latest skeleton -- Update license list to latest ScanCode and SPDX 3.20 - - -v30.1.0 - 2023-01-16 ----------------------- - -This is a minor release without API changes - -- Use latest skeleton (and updated configure script) -- Update license list to latest ScanCode and SPDX 3.19 -- Use correct syntax for python_require -- Drop using Travis and Appveyor -- Drop support for Python 3.7 and add Python 3.11 in CI - - -v30.0.0 - 2022-05-10 ----------------------- - -This is a minor release with API changes - -- Use latest skeleton (and updated configure script) -- Drop using calver -- Improve error checking when combining licenses - - - -v21.6.14 - 2021-06-14 ----------------------- - -Added -~~~~~ - -- Switch to calver for package versioning to better convey the currency of the - bundled data. - -- Include https://scancode-licensedb.aboutcode.org/ licenses list with - ScanCode (v21.6.7) and SPDX licenses (v3.13) keys. Add new functions to - create Licensing using these licenses as LicenseSymbol. - -- Add new License.dedup() method to deduplicate and simplify license expressions - without over simplifying. - -- Add new License.validate() method to return a new ExpressionInfo object with - details on a license expression validation. - - -Changed -~~~~~~~ -- Drop support for Python 2. -- Adopt the project skeleton from https://github.com/nexB/skeleton - and its new configure script - - -v1.2 - 2019-11-14 ------------------- -Added -~~~~~ -- Add ability to render WITH expression wrapped in parenthesis - -Fixes -~~~~~ -- Fix anomalous backslashes in strings - -Changed -~~~~~~~ -- Update the thirdparty directory structure. - - -v1.0 - 2019-10-16 ------------------- -Added -~~~~~ -- New version of boolean.py library -- Add ability to leave license expressions unsorted when simplifying - -Changed -~~~~~~~ -- updated travis CI settings - - -v0.999 - 2019-04-29 --------------------- -- Initial release -- license-expression is small utility library to parse, compare and - simplify and normalize license expressions. - - - - - declared license file: CODE_OF_CONDUCT.rst - Contributor Covenant Code of Conduct -==================================== - -Our Pledge ----------- - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our -project and our community a harassment-free experience for everyone, -regardless of age, body size, disability, ethnicity, gender identity and -expression, level of experience, education, socio-economic status, -nationality, personal appearance, race, religion, or sexual identity and -orientation. - -Our Standards -------------- - -Examples of behavior that contributes to creating a positive environment -include: - -- Using welcoming and inclusive language -- Being respectful of differing viewpoints and experiences -- Gracefully accepting constructive criticism -- Focusing on what is best for the community -- Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -- The use of sexualized language or imagery and unwelcome sexual - attention or advances -- Trolling, insulting/derogatory comments, and personal or political - attacks -- Public or private harassment -- Publishing others’ private information, such as a physical or - electronic address, without explicit permission -- Other conduct which could reasonably be considered inappropriate in a - professional setting - -Our Responsibilities --------------------- - -Project maintainers are responsible for clarifying the standards of -acceptable behavior and are expected to take appropriate and fair -corrective action in response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, -or reject comments, commits, code, wiki edits, issues, and other -contributions that are not aligned to this Code of Conduct, or to ban -temporarily or permanently any contributor for other behaviors that they -deem inappropriate, threatening, offensive, or harmful. - -Scope ------ - -This Code of Conduct applies both within project spaces and in public -spaces when an individual is representing the project or its community. -Examples of representing a project or community include using an -official project e-mail address, posting via an official social media -account, or acting as an appointed representative at an online or -offline event. Representation of a project may be further defined and -clarified by project maintainers. - -Enforcement ------------ - -Instances of abusive, harassing, or otherwise unacceptable behavior may -be reported by contacting the project team at pombredanne@gmail.com -or on the Gitter chat channel at https://gitter.im/aboutcode-org/discuss . -All complaints will be reviewed and investigated and will result in a -response that is deemed necessary and appropriate to the circumstances. -The project team is obligated to maintain confidentiality with regard to -the reporter of an incident. Further details of specific enforcement -policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in -good faith may face temporary or permanent repercussions as determined -by other members of the project’s leadership. - -Attribution ------------ - -This Code of Conduct is adapted from the `Contributor Covenant`_ , -version 1.4, available at -https://www.contributor-covenant.org/version/1/4/code-of-conduct.html - -.. _Contributor Covenant: https://www.contributor-covenant.org - - - - declared license file: NOTICE - # -# Copyright (c) nexB Inc. and others. -# SPDX-License-Identifier: Apache-2.0 -# -# Visit https://aboutcode.org and https://github.com/nexB/license-expression -# for support and download. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - - - - declared license file: apache-2.0.LICENSE - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - - pkg:pypi/license-expression@30.3.0 - - - https://github.com/nexB/license-expression - from packaging metadata: Home-page - - - - - lxml - 5.3.0 - Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. - - - BSD-3-Clause - - - License :: OSI Approved :: BSD License - - - declared license file: LICENSE.txt - Copyright (c) 2004 Infrae. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - 3. Neither the name of Infrae nor the names of its contributors may - be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INFRAE OR -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - - declared license file: LICENSES.txt - lxml is copyright Infrae and distributed under the BSD license (see -doc/licenses/BSD.txt), with the following exceptions: - -Some code, such a selftest.py, selftest2.py and -src/lxml/_elementpath.py are derived from ElementTree and -cElementTree. See doc/licenses/elementtree.txt for the license text. - -lxml.cssselect and lxml.html are copyright Ian Bicking and distributed -under the BSD license (see doc/licenses/BSD.txt). - -test.py, the test-runner script, is GPL and copyright Shuttleworth -Foundation. See doc/licenses/GPL.txt. It is believed the unchanged -inclusion of test.py to run the unit test suite falls under the -"aggregation" clause of the GPL and thus does not affect the license -of the rest of the package. - -The isoschematron implementation uses several XSL and RelaxNG resources: - * The (XML syntax) RelaxNG schema for schematron, copyright International - Organization for Standardization (see - src/lxml/isoschematron/resources/rng/iso-schematron.rng for the license - text) - * The skeleton iso-schematron-xlt1 pure-xslt schematron implementation - xsl stylesheets, copyright Rick Jelliffe and Academia Sinica Computing - Center, Taiwan (see the xsl files here for the license text: - src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/) - * The xsd/rng schema schematron extraction xsl transformations are unlicensed - and copyright the respective authors as noted (see - src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl and - src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl) - - - - pkg:pypi/lxml@5.3.0 - - - https://github.com/lxml/lxml - from packaging metadata Project-URL: Source - - - https://lxml.de/ - from packaging metadata: Home-page - - - - - regression-issue868 - 0.1 - - - declared license file: my_licenses/richtext.rtf - e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA= - - - declared license file: my_licenses/utf-16be_withBOM.txt - this file is -utf-16be encoded -with BOM -😃 - - - - declared license file: my_licenses/utf-16le_withBOM.txt - this file is -utf-16le encoded -with BOM -😃 - - - - declared license file: my_licenses/utf-8_noBOM.txt - this file is -utf-8 encoded -without BOM -😃 - - - - declared license file: my_licenses/utf-8_withBOM.txt - this file is -utf-8 encoded -with BOM -😃 - - - - - - file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 - PackageSource: Local - - - - - diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.2.json.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.2.json.bin deleted file mode 100644 index 2778f52d5..000000000 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.2.json.bin +++ /dev/null @@ -1,439 +0,0 @@ -{ - "components": [ - { - "bom-ref": "attrs==23.2.0", - "description": "Classes Without Boilerplate", - "externalReferences": [ - { - "comment": "from packaging metadata Project-URL: Documentation", - "type": "documentation", - "url": "https://www.attrs.org/" - }, - { - "comment": "from packaging metadata Project-URL: Funding", - "type": "other", - "url": "https://github.com/sponsors/hynek" - }, - { - "comment": "from packaging metadata Project-URL: Tidelift", - "type": "other", - "url": "https://tidelift.com/subscription/pkg/pypi-attrs?utm_source=pypi-attrs&utm_medium=pypi" - }, - { - "comment": "from packaging metadata Project-URL: Changelog", - "type": "other", - "url": "https://www.attrs.org/en/stable/changelog.html" - }, - { - "comment": "from packaging metadata Project-URL: GitHub", - "type": "vcs", - "url": "https://github.com/python-attrs/attrs" - } - ], - "licenses": [ - { - "license": { - "id": "MIT" - } - }, - { - "license": { - "name": "declared license file: LICENSE", - "text": { - "content": "The MIT License (MIT)\n\nCopyright (c) 2015 Hynek Schlawack and the attrs contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n", - "contentType": "text/plain" - } - } - } - ], - "name": "attrs", - "purl": "pkg:pypi/attrs@23.2.0", - "type": "library", - "version": "23.2.0" - }, - { - "bom-ref": "boolean.py==4.0", - "description": "Define boolean algebras, create and parse boolean expressions and create custom boolean DSL.", - "externalReferences": [ - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://github.com/bastikr/boolean.py" - } - ], - "licenses": [ - { - "license": { - "id": "BSD-2-Clause" - } - }, - { - "license": { - "name": "declared license file: CHANGELOG.rst", - "text": { - "content": "\nChangelog\n=========\n\n\nnext\n----\n\n\n4.0 (2022-05-05)\n----------------\n\n* API changes\n\n * Drop support for Python 2.\n * Test on Python 3.10\n * Make Expression.sort_order an instance attributes and not a class attribute\n\n* Misc.\n\n * Correct licensing documentation\n * Improve docstringf and apply minor refactorings\n * Adopt black code style and isort for imports\n * Drop Travis and use GitHub actions for CI\n\n\n3.8 (2020-06-10)\n----------------\n\n* API changes\n\n * Add support for evaluation of boolean expression.\n Thank you to Lars van Gemerden @gemerden\n\n* Bug fixes\n\n * Fix parsing of tokens that have a number as the first character. \n Thank you to Jeff Cohen @ jcohen28\n * Restore proper Python 2 compatibility. \n Thank you to Benjy Weinberger @benjyw\n\n* Improve documentation\n\n * Add pointers to Linux distro packages.\n Thank you to Max Mehl @mxmehl and Carmen Bianca Bakker @carmenbianca\n * Fix typo.\n Thank you to Gabriel Niebler @der-gabe\n\n\n3.7 (2019-10-04)\n----------------\n\n* API changes\n\n * Add new sort argument to simplify() to optionally not sort when simplifying\n expressions (e.g. not applying \"commutativity\"). Thank you to Steven Esser\n @majurg for this\n * Add new argument to tokenizer to optionally accept extra characters in symbol\n tokens. Thank you to @carpie for this\n\n\n3.6 (2018-08-06)\n----------------\n\n* No API changes\n\n* Bug fixes\n\n * Fix De Morgan's laws effect on double negation propositions. Thank you to Douglas Cardoso for this\n * Improve error checking when parsing\n\n\n3.5 (Nov 1, 2017)\n-----------------\n\n* No API changes\n\n* Bug fixes\n\n * Documentation updates and add testing for Python 3.6. Thank you to Alexander Lisianoi @alisianoi\n * Improve testng and expression equivalence checks\n * Improve subs() method to an expression \n\n \n\n3.4 (May 12, 2017)\n------------------\n\n* No API changes\n\n* Bug fixes and improvements\n\n * Fix various documentation typos and improve tests . Thank you to Alexander Lisianoi @alisianoi\n * Fix handling for literals vs. symbols in negations Thank you to @YaronK\n\n\n3.3 (2017-02-09)\n----------------\n\n* API changes\n\n * #40 and #50 Expression.subs() now takes 'default' thanks to @kronuz\n * #45 simplify=False is now the default for parse and related functions or methods.\n * #40 Use \"&\" and \"|\" as default operators\n\n* Bug fixes\n\n * #60 Fix bug for \"a or b c\" which is not a valid expression\n * #58 Fix math formula display in docs\n * Improve handling of parse errors\n\n\n2.0.0 (2016-05-11)\n------------------\n\n* API changes\n\n * New algebra definition. Refactored class hierarchy. Improved parsing.\n\n* New features\n\n * possibility to subclass algebra definition\n * new normal forms shortcuts for DNF and CNF.\n\n\n1.1 (2016-04-06)\n------------------\n\n* Initial release on Pypi.\n", - "contentType": "text/prs.fallenstein.rst" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.txt", - "text": { - "content": "Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice, this\nlist of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice,\nthis list of conditions and the following disclaimer in the documentation and/or\nother materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: README.rst", - "text": { - "content": "boolean.py\n==========\n\n\"boolean.py\" is a small library implementing a boolean algebra. It\ndefines two base elements, TRUE and FALSE, and a Symbol class that can\ntake on one of these two values. Calculations are done in terms of AND,\nOR and NOT - other compositions like XOR and NAND are not implemented\nbut can be emulated with AND or and NOT. Expressions are constructed\nfrom parsed strings or in Python.\n\nIt runs on Python 3.6+\nYou can use older version 3.x for Python 2.7+ support.\n\nhttps://github.com/bastikr/boolean.py\n\nBuild status: |Build Status|\n\n\nExample\n-------\n\n::\n\n >>> import boolean\n >>> algebra = boolean.BooleanAlgebra()\n >>> expression1 = algebra.parse(u'apple and (oranges or banana) and not banana', simplify=False)\n >>> expression1\n AND(Symbol('apple'), OR(Symbol('oranges'), Symbol('banana')), NOT(Symbol('banana')))\n\n >>> expression2 = algebra.parse('(oranges | banana) and not banana & apple', simplify=True)\n >>> expression2\n AND(Symbol('apple'), NOT(Symbol('banana')), Symbol('oranges'))\n\n >>> expression1 == expression2\n False\n >>> expression1.simplify() == expression2\n True\n\n\nDocumentation\n-------------\n\nhttp://readthedocs.org/docs/booleanpy/en/latest/\n\n\nInstallation\n------------\n\nInstallation via pip\n~~~~~~~~~~~~~~~~~~~~\n\nTo install boolean.py, you need to have the following pieces of software\non your computer:\n\n- Python 3.6+\n- pip\n\nYou then only need to run the following command:\n\n``pip install boolean.py``\n\n\nInstallation via package managers\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThere are packages available for easy install on some operating systems.\nYou are welcome to help us package this tool for more distributions!\n\n- boolean.py has been packaged as Arch Linux, Fedora, openSus,\n nixpkgs, Guix, DragonFly and FreeBSD \n `packages `__ .\n\nIn particular:\n\n- Arch Linux (AUR):\n `python-boolean.py `__\n- Fedora:\n `python-boolean.py `__\n- openSUSE:\n `python-boolean.py `__\n\n\nTesting\n-------\n\nTest ``boolean.py`` with your current Python environment:\n\n``python setup.py test``\n\nTest with all of the supported Python environments using ``tox``:\n\n::\n\n pip install -r requirements-dev.txt\n tox\n\nIf ``tox`` throws ``InterpreterNotFound``, limit it to python\ninterpreters that are actually installed on your machine:\n\n::\n\n tox -e py36\n\nAlternatively use pytest.\n\n\nLicense\n-------\n\nCopyright (c) Sebastian Kraemer, basti.kr@gmail.com and others\nSPDX-License-Identifier: BSD-2-Clause\n\n.. |Build Status| image:: https://travis-ci.org/bastikr/boolean.py.svg?branch=master\n :target: https://travis-ci.org/bastikr/boolean.py\n", - "contentType": "text/prs.fallenstein.rst" - } - } - } - ], - "name": "boolean.py", - "purl": "pkg:pypi/boolean.py@4.0", - "type": "library", - "version": "4.0" - }, - { - "bom-ref": "cryptography==43.0.1", - "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", - "externalReferences": [ - { - "comment": "from packaging metadata Project-URL: documentation", - "type": "documentation", - "url": "https://cryptography.io/" - }, - { - "comment": "from packaging metadata Project-URL: issues", - "type": "issue-tracker", - "url": "https://github.com/pyca/cryptography/issues" - }, - { - "comment": "from packaging metadata Project-URL: source", - "type": "other", - "url": "https://github.com/pyca/cryptography/" - }, - { - "comment": "from packaging metadata Project-URL: changelog", - "type": "other", - "url": "https://cryptography.io/en/latest/changelog/" - }, - { - "comment": "from packaging metadata Project-URL: homepage", - "type": "website", - "url": "https://github.com/pyca/cryptography" - } - ], - "licenses": [ - { - "expression": "Apache-2.0 OR BSD-3-Clause" - } - ], - "name": "cryptography", - "purl": "pkg:pypi/cryptography@43.0.1", - "type": "library", - "version": "43.0.1" - }, - { - "bom-ref": "jsonpointer==2.4", - "description": "Identify specific nodes in a JSON document (RFC 6901) ", - "externalReferences": [ - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://github.com/stefankoegl/python-json-pointer" - } - ], - "licenses": [ - { - "license": { - "name": "License :: OSI Approved :: BSD License" - } - }, - { - "license": { - "name": "declared license file: AUTHORS", - "text": { - "content": "Stefan K\u00f6gl \nAlexander Shorin \nChristopher J. White \n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.txt", - "text": { - "content": "Copyright (c) 2011 Stefan K\u00f6gl \nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions\nare met:\n\n1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n3. The name of the author may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR\nIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\nOF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\nIN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\nNOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\nTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license of 'jsonpointer'", - "text": { - "content": "Modified BSD License", - "contentType": "text/plain" - } - } - } - ], - "name": "jsonpointer", - "purl": "pkg:pypi/jsonpointer@2.4", - "type": "library", - "version": "2.4" - }, - { - "bom-ref": "license-expression==30.3.0", - "description": "license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic.", - "externalReferences": [ - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://github.com/nexB/license-expression" - } - ], - "licenses": [ - { - "license": { - "id": "Apache-2.0" - } - }, - { - "license": { - "name": "declared license file: AUTHORS.rst", - "text": { - "content": "The following organizations or individuals have contributed to this code:\n\n- Ayan Sinha Mahapatra @AyanSinhaMahapatra\n- Carmen Bianca Bakker @carmenbianca\n- Chin-Yeung Li @chinyeungli\n- Dennis Clark @DennisClark\n- John Horan @johnmhoran\n- Jono Yang @JonoYang\n- Max Mehl @mxmehl\n- nexB Inc. @nexB\n- Peter Kolbus @pkolbus\n- Philippe Ombredanne @pombredanne\n- Sebastian Schuberth @sschuberth\n- Steven Esser @majurg\n- Thomas Druez @tdruez\n", - "contentType": "text/prs.fallenstein.rst" - } - } - }, - { - "license": { - "name": "declared license file: CHANGELOG.rst", - "text": { - "content": "Changelog\n=========\n\nv30.3.0 - 2024-03-18\n--------------------\n\nThis is a minor release without API changes:\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.23\n- Drop support for Python 3.7\n\nv30.2.0 - 2023-11-29\n--------------------\n\nThis is a minor release without API changes:\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.22\n- Add Python 3.12 support in CI\n\n\nv30.1.1 - 2023-01-16\n----------------------\n\nThis is a minor dot release without API changes\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.20\n\n\nv30.1.0 - 2023-01-16\n----------------------\n\nThis is a minor release without API changes\n\n- Use latest skeleton (and updated configure script)\n- Update license list to latest ScanCode and SPDX 3.19\n- Use correct syntax for python_require\n- Drop using Travis and Appveyor\n- Drop support for Python 3.7 and add Python 3.11 in CI\n\n\nv30.0.0 - 2022-05-10\n----------------------\n\nThis is a minor release with API changes\n\n- Use latest skeleton (and updated configure script)\n- Drop using calver\n- Improve error checking when combining licenses\n\n\n\nv21.6.14 - 2021-06-14\n----------------------\n\nAdded\n~~~~~\n\n- Switch to calver for package versioning to better convey the currency of the\n bundled data.\n\n- Include https://scancode-licensedb.aboutcode.org/ licenses list with\n ScanCode (v21.6.7) and SPDX licenses (v3.13) keys. Add new functions to\n create Licensing using these licenses as LicenseSymbol.\n\n- Add new License.dedup() method to deduplicate and simplify license expressions\n without over simplifying.\n\n- Add new License.validate() method to return a new ExpressionInfo object with\n details on a license expression validation.\n\n\nChanged\n~~~~~~~\n- Drop support for Python 2.\n- Adopt the project skeleton from https://github.com/nexB/skeleton\n and its new configure script\n\n\nv1.2 - 2019-11-14\n------------------\nAdded\n~~~~~\n- Add ability to render WITH expression wrapped in parenthesis\n\nFixes\n~~~~~\n- Fix anomalous backslashes in strings\n\nChanged\n~~~~~~~\n- Update the thirdparty directory structure.\n\n\nv1.0 - 2019-10-16\n------------------\nAdded\n~~~~~\n- New version of boolean.py library\n- Add ability to leave license expressions unsorted when simplifying\n\nChanged\n~~~~~~~\n- updated travis CI settings\n\n\nv0.999 - 2019-04-29\n--------------------\n- Initial release\n- license-expression is small utility library to parse, compare and\n simplify and normalize license expressions.\n\n", - "contentType": "text/prs.fallenstein.rst" - } - } - }, - { - "license": { - "name": "declared license file: CODE_OF_CONDUCT.rst", - "text": { - "content": "Contributor Covenant Code of Conduct\n====================================\n\nOur Pledge\n----------\n\nIn the interest of fostering an open and welcoming environment, we as\ncontributors and maintainers pledge to making participation in our\nproject and our community a harassment-free experience for everyone,\nregardless of age, body size, disability, ethnicity, gender identity and\nexpression, level of experience, education, socio-economic status,\nnationality, personal appearance, race, religion, or sexual identity and\norientation.\n\nOur Standards\n-------------\n\nExamples of behavior that contributes to creating a positive environment\ninclude:\n\n- Using welcoming and inclusive language\n- Being respectful of differing viewpoints and experiences\n- Gracefully accepting constructive criticism\n- Focusing on what is best for the community\n- Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n- The use of sexualized language or imagery and unwelcome sexual\n attention or advances\n- Trolling, insulting/derogatory comments, and personal or political\n attacks\n- Public or private harassment\n- Publishing others\u2019 private information, such as a physical or\n electronic address, without explicit permission\n- Other conduct which could reasonably be considered inappropriate in a\n professional setting\n\nOur Responsibilities\n--------------------\n\nProject maintainers are responsible for clarifying the standards of\nacceptable behavior and are expected to take appropriate and fair\ncorrective action in response to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit,\nor reject comments, commits, code, wiki edits, issues, and other\ncontributions that are not aligned to this Code of Conduct, or to ban\ntemporarily or permanently any contributor for other behaviors that they\ndeem inappropriate, threatening, offensive, or harmful.\n\nScope\n-----\n\nThis Code of Conduct applies both within project spaces and in public\nspaces when an individual is representing the project or its community.\nExamples of representing a project or community include using an\nofficial project e-mail address, posting via an official social media\naccount, or acting as an appointed representative at an online or\noffline event. Representation of a project may be further defined and\nclarified by project maintainers.\n\nEnforcement\n-----------\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may\nbe reported by contacting the project team at pombredanne@gmail.com\nor on the Gitter chat channel at https://gitter.im/aboutcode-org/discuss .\nAll complaints will be reviewed and investigated and will result in a\nresponse that is deemed necessary and appropriate to the circumstances.\nThe project team is obligated to maintain confidentiality with regard to\nthe reporter of an incident. Further details of specific enforcement\npolicies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in\ngood faith may face temporary or permanent repercussions as determined\nby other members of the project\u2019s leadership.\n\nAttribution\n-----------\n\nThis Code of Conduct is adapted from the `Contributor Covenant`_ ,\nversion 1.4, available at\nhttps://www.contributor-covenant.org/version/1/4/code-of-conduct.html\n\n.. _Contributor Covenant: https://www.contributor-covenant.org\n", - "contentType": "text/prs.fallenstein.rst" - } - } - }, - { - "license": { - "name": "declared license file: NOTICE", - "text": { - "content": "#\n# Copyright (c) nexB Inc. and others.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Visit https://aboutcode.org and https://github.com/nexB/license-expression\n# for support and download.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: apache-2.0.LICENSE", - "text": { - "content": " Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", - "contentType": "text/plain" - } - } - } - ], - "name": "license-expression", - "purl": "pkg:pypi/license-expression@30.3.0", - "type": "library", - "version": "30.3.0" - }, - { - "bom-ref": "lxml==5.3.0", - "description": "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API.", - "externalReferences": [ - { - "comment": "from packaging metadata Project-URL: Source", - "type": "other", - "url": "https://github.com/lxml/lxml" - }, - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://lxml.de/" - } - ], - "licenses": [ - { - "license": { - "id": "BSD-3-Clause" - } - }, - { - "license": { - "name": "License :: OSI Approved :: BSD License" - } - }, - { - "license": { - "name": "declared license file: LICENSE.txt", - "text": { - "content": "Copyright (c) 2004 Infrae. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n 1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n \n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in\n the documentation and/or other materials provided with the\n distribution.\n\n 3. Neither the name of Infrae nor the names of its contributors may\n be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INFRAE OR\nCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\nEXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\nPROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSES.txt", - "text": { - "content": "lxml is copyright Infrae and distributed under the BSD license (see\ndoc/licenses/BSD.txt), with the following exceptions:\n\nSome code, such a selftest.py, selftest2.py and\nsrc/lxml/_elementpath.py are derived from ElementTree and\ncElementTree. See doc/licenses/elementtree.txt for the license text.\n\nlxml.cssselect and lxml.html are copyright Ian Bicking and distributed\nunder the BSD license (see doc/licenses/BSD.txt).\n\ntest.py, the test-runner script, is GPL and copyright Shuttleworth\nFoundation. See doc/licenses/GPL.txt. It is believed the unchanged\ninclusion of test.py to run the unit test suite falls under the\n\"aggregation\" clause of the GPL and thus does not affect the license\nof the rest of the package.\n\nThe isoschematron implementation uses several XSL and RelaxNG resources:\n * The (XML syntax) RelaxNG schema for schematron, copyright International\n Organization for Standardization (see \n src/lxml/isoschematron/resources/rng/iso-schematron.rng for the license\n text)\n * The skeleton iso-schematron-xlt1 pure-xslt schematron implementation\n xsl stylesheets, copyright Rick Jelliffe and Academia Sinica Computing\n Center, Taiwan (see the xsl files here for the license text: \n src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/)\n * The xsd/rng schema schematron extraction xsl transformations are unlicensed\n and copyright the respective authors as noted (see \n src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl and\n src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl)\n", - "contentType": "text/plain" - } - } - } - ], - "name": "lxml", - "purl": "pkg:pypi/lxml@5.3.0", - "type": "library", - "version": "5.3.0" - }, - { - "bom-ref": "regression-issue868==0.1", - "externalReferences": [ - { - "comment": "PackageSource: Local", - "type": "distribution", - "url": "file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868" - } - ], - "licenses": [ - { - "license": { - "name": "declared license file: my_licenses/richtext.rtf", - "text": { - "content": "e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA=", - "contentType": "application/rtf", - "encoding": "base64" - } - } - }, - { - "license": { - "name": "declared license file: my_licenses/utf-16be_withBOM.txt", - "text": { - "content": "this file is\r\nutf-16be encoded\r\nwith BOM\r\n\ud83d\ude03\r\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: my_licenses/utf-16le_withBOM.txt", - "text": { - "content": "this file is\nutf-16le encoded\nwith BOM\n\ud83d\ude03\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: my_licenses/utf-8_noBOM.txt", - "text": { - "content": "this file is\nutf-8 encoded\nwithout BOM\n\ud83d\ude03\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: my_licenses/utf-8_withBOM.txt", - "text": { - "content": "\ufeffthis file is\nutf-8 encoded\nwith BOM\n\ud83d\ude03\n", - "contentType": "text/plain" - } - } - } - ], - "name": "regression-issue868", - "type": "library", - "version": "0.1" - } - ], - "dependencies": [ - { - "ref": "attrs==23.2.0" - }, - { - "ref": "boolean.py==4.0" - }, - { - "ref": "cryptography==43.0.1" - }, - { - "ref": "jsonpointer==2.4" - }, - { - "dependsOn": [ - "boolean.py==4.0" - ], - "ref": "license-expression==30.3.0" - }, - { - "ref": "lxml==5.3.0" - }, - { - "ref": "regression-issue868==0.1" - }, - { - "dependsOn": [ - "attrs==23.2.0", - "boolean.py==4.0", - "cryptography==43.0.1", - "jsonpointer==2.4", - "license-expression==30.3.0", - "lxml==5.3.0", - "regression-issue868==0.1" - ], - "ref": "root-component" - } - ], - "metadata": { - "component": { - "bom-ref": "root-component", - "description": "depenndencies with license declaration accoring to PEP 639", - "licenses": [ - { - "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" - } - ], - "name": "with-extras", - "type": "application", - "version": "0.1.0" - }, - "tools": [ - { - "name": "cyclonedx-py", - "vendor": "CycloneDX", - "version": "thisVersion-testing" - }, - { - "name": "cyclonedx-python-lib", - "vendor": "CycloneDX", - "version": "libVersion-testing" - } - ] - }, - "version": 1, - "$schema": "http://cyclonedx.org/schema/bom-1.2b.schema.json", - "bomFormat": "CycloneDX", - "specVersion": "1.2" -} \ No newline at end of file diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.2.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.2.xml.bin deleted file mode 100644 index cf2ee36f4..000000000 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.2.xml.bin +++ /dev/null @@ -1,1099 +0,0 @@ - - - - - - CycloneDX - cyclonedx-py - thisVersion-testing - - - CycloneDX - cyclonedx-python-lib - libVersion-testing - - - - with-extras - 0.1.0 - depenndencies with license declaration accoring to PEP 639 - - MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) - - - - - - attrs - 23.2.0 - Classes Without Boilerplate - - - MIT - - - declared license file: LICENSE - The MIT License (MIT) - -Copyright (c) 2015 Hynek Schlawack and the attrs contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - - - pkg:pypi/attrs@23.2.0 - - - https://www.attrs.org/ - from packaging metadata Project-URL: Documentation - - - https://github.com/sponsors/hynek - from packaging metadata Project-URL: Funding - - - https://tidelift.com/subscription/pkg/pypi-attrs?utm_source=pypi-attrs&utm_medium=pypi - from packaging metadata Project-URL: Tidelift - - - https://www.attrs.org/en/stable/changelog.html - from packaging metadata Project-URL: Changelog - - - https://github.com/python-attrs/attrs - from packaging metadata Project-URL: GitHub - - - - - boolean.py - 4.0 - Define boolean algebras, create and parse boolean expressions and create custom boolean DSL. - - - BSD-2-Clause - - - declared license file: CHANGELOG.rst - -Changelog -========= - - -next ----- - - -4.0 (2022-05-05) ----------------- - -* API changes - - * Drop support for Python 2. - * Test on Python 3.10 - * Make Expression.sort_order an instance attributes and not a class attribute - -* Misc. - - * Correct licensing documentation - * Improve docstringf and apply minor refactorings - * Adopt black code style and isort for imports - * Drop Travis and use GitHub actions for CI - - -3.8 (2020-06-10) ----------------- - -* API changes - - * Add support for evaluation of boolean expression. - Thank you to Lars van Gemerden @gemerden - -* Bug fixes - - * Fix parsing of tokens that have a number as the first character. - Thank you to Jeff Cohen @ jcohen28 - * Restore proper Python 2 compatibility. - Thank you to Benjy Weinberger @benjyw - -* Improve documentation - - * Add pointers to Linux distro packages. - Thank you to Max Mehl @mxmehl and Carmen Bianca Bakker @carmenbianca - * Fix typo. - Thank you to Gabriel Niebler @der-gabe - - -3.7 (2019-10-04) ----------------- - -* API changes - - * Add new sort argument to simplify() to optionally not sort when simplifying - expressions (e.g. not applying "commutativity"). Thank you to Steven Esser - @majurg for this - * Add new argument to tokenizer to optionally accept extra characters in symbol - tokens. Thank you to @carpie for this - - -3.6 (2018-08-06) ----------------- - -* No API changes - -* Bug fixes - - * Fix De Morgan's laws effect on double negation propositions. Thank you to Douglas Cardoso for this - * Improve error checking when parsing - - -3.5 (Nov 1, 2017) ------------------ - -* No API changes - -* Bug fixes - - * Documentation updates and add testing for Python 3.6. Thank you to Alexander Lisianoi @alisianoi - * Improve testng and expression equivalence checks - * Improve subs() method to an expression - - - -3.4 (May 12, 2017) ------------------- - -* No API changes - -* Bug fixes and improvements - - * Fix various documentation typos and improve tests . Thank you to Alexander Lisianoi @alisianoi - * Fix handling for literals vs. symbols in negations Thank you to @YaronK - - -3.3 (2017-02-09) ----------------- - -* API changes - - * #40 and #50 Expression.subs() now takes 'default' thanks to @kronuz - * #45 simplify=False is now the default for parse and related functions or methods. - * #40 Use "&" and "|" as default operators - -* Bug fixes - - * #60 Fix bug for "a or b c" which is not a valid expression - * #58 Fix math formula display in docs - * Improve handling of parse errors - - -2.0.0 (2016-05-11) ------------------- - -* API changes - - * New algebra definition. Refactored class hierarchy. Improved parsing. - -* New features - - * possibility to subclass algebra definition - * new normal forms shortcuts for DNF and CNF. - - -1.1 (2016-04-06) ------------------- - -* Initial release on Pypi. - - - - declared license file: LICENSE.txt - Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation and/or -other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - - declared license file: README.rst - boolean.py -========== - -"boolean.py" is a small library implementing a boolean algebra. It -defines two base elements, TRUE and FALSE, and a Symbol class that can -take on one of these two values. Calculations are done in terms of AND, -OR and NOT - other compositions like XOR and NAND are not implemented -but can be emulated with AND or and NOT. Expressions are constructed -from parsed strings or in Python. - -It runs on Python 3.6+ -You can use older version 3.x for Python 2.7+ support. - -https://github.com/bastikr/boolean.py - -Build status: |Build Status| - - -Example -------- - -:: - - >>> import boolean - >>> algebra = boolean.BooleanAlgebra() - >>> expression1 = algebra.parse(u'apple and (oranges or banana) and not banana', simplify=False) - >>> expression1 - AND(Symbol('apple'), OR(Symbol('oranges'), Symbol('banana')), NOT(Symbol('banana'))) - - >>> expression2 = algebra.parse('(oranges | banana) and not banana & apple', simplify=True) - >>> expression2 - AND(Symbol('apple'), NOT(Symbol('banana')), Symbol('oranges')) - - >>> expression1 == expression2 - False - >>> expression1.simplify() == expression2 - True - - -Documentation -------------- - -http://readthedocs.org/docs/booleanpy/en/latest/ - - -Installation ------------- - -Installation via pip -~~~~~~~~~~~~~~~~~~~~ - -To install boolean.py, you need to have the following pieces of software -on your computer: - -- Python 3.6+ -- pip - -You then only need to run the following command: - -``pip install boolean.py`` - - -Installation via package managers -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -There are packages available for easy install on some operating systems. -You are welcome to help us package this tool for more distributions! - -- boolean.py has been packaged as Arch Linux, Fedora, openSus, - nixpkgs, Guix, DragonFly and FreeBSD - `packages <https://repology.org/project/python:boolean.py/versions>`__ . - -In particular: - -- Arch Linux (AUR): - `python-boolean.py <https://aur.archlinux.org/packages/python-boolean.py/>`__ -- Fedora: - `python-boolean.py <https://apps.fedoraproject.org/packages/python-boolean.py>`__ -- openSUSE: - `python-boolean.py <https://software.opensuse.org/package/python-boolean.py>`__ - - -Testing -------- - -Test ``boolean.py`` with your current Python environment: - -``python setup.py test`` - -Test with all of the supported Python environments using ``tox``: - -:: - - pip install -r requirements-dev.txt - tox - -If ``tox`` throws ``InterpreterNotFound``, limit it to python -interpreters that are actually installed on your machine: - -:: - - tox -e py36 - -Alternatively use pytest. - - -License -------- - -Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others -SPDX-License-Identifier: BSD-2-Clause - -.. |Build Status| image:: https://travis-ci.org/bastikr/boolean.py.svg?branch=master - :target: https://travis-ci.org/bastikr/boolean.py - - - - pkg:pypi/boolean.py@4.0 - - - https://github.com/bastikr/boolean.py - from packaging metadata: Home-page - - - - - cryptography - 43.0.1 - cryptography is a package which provides cryptographic recipes and primitives to Python developers. - - Apache-2.0 OR BSD-3-Clause - - pkg:pypi/cryptography@43.0.1 - - - https://cryptography.io/ - from packaging metadata Project-URL: documentation - - - https://github.com/pyca/cryptography/issues - from packaging metadata Project-URL: issues - - - https://github.com/pyca/cryptography/ - from packaging metadata Project-URL: source - - - https://cryptography.io/en/latest/changelog/ - from packaging metadata Project-URL: changelog - - - https://github.com/pyca/cryptography - from packaging metadata Project-URL: homepage - - - - - jsonpointer - 2.4 - Identify specific nodes in a JSON document (RFC 6901) - - - License :: OSI Approved :: BSD License - - - declared license file: AUTHORS - Stefan Kögl <stefan@skoegl.net> -Alexander Shorin <kxepal@gmail.com> -Christopher J. White <chris@grierwhite.com> - - - - declared license file: LICENSE.txt - Copyright (c) 2011 Stefan Kögl <stefan@skoegl.net> -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - - - declared license of 'jsonpointer' - Modified BSD License - - - pkg:pypi/jsonpointer@2.4 - - - https://github.com/stefankoegl/python-json-pointer - from packaging metadata: Home-page - - - - - license-expression - 30.3.0 - license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic. - - - Apache-2.0 - - - declared license file: AUTHORS.rst - The following organizations or individuals have contributed to this code: - -- Ayan Sinha Mahapatra @AyanSinhaMahapatra -- Carmen Bianca Bakker @carmenbianca -- Chin-Yeung Li @chinyeungli -- Dennis Clark @DennisClark -- John Horan @johnmhoran -- Jono Yang @JonoYang -- Max Mehl @mxmehl -- nexB Inc. @nexB -- Peter Kolbus @pkolbus -- Philippe Ombredanne @pombredanne -- Sebastian Schuberth @sschuberth -- Steven Esser @majurg -- Thomas Druez @tdruez - - - - declared license file: CHANGELOG.rst - Changelog -========= - -v30.3.0 - 2024-03-18 --------------------- - -This is a minor release without API changes: - -- Use latest skeleton -- Update license list to latest ScanCode and SPDX 3.23 -- Drop support for Python 3.7 - -v30.2.0 - 2023-11-29 --------------------- - -This is a minor release without API changes: - -- Use latest skeleton -- Update license list to latest ScanCode and SPDX 3.22 -- Add Python 3.12 support in CI - - -v30.1.1 - 2023-01-16 ----------------------- - -This is a minor dot release without API changes - -- Use latest skeleton -- Update license list to latest ScanCode and SPDX 3.20 - - -v30.1.0 - 2023-01-16 ----------------------- - -This is a minor release without API changes - -- Use latest skeleton (and updated configure script) -- Update license list to latest ScanCode and SPDX 3.19 -- Use correct syntax for python_require -- Drop using Travis and Appveyor -- Drop support for Python 3.7 and add Python 3.11 in CI - - -v30.0.0 - 2022-05-10 ----------------------- - -This is a minor release with API changes - -- Use latest skeleton (and updated configure script) -- Drop using calver -- Improve error checking when combining licenses - - - -v21.6.14 - 2021-06-14 ----------------------- - -Added -~~~~~ - -- Switch to calver for package versioning to better convey the currency of the - bundled data. - -- Include https://scancode-licensedb.aboutcode.org/ licenses list with - ScanCode (v21.6.7) and SPDX licenses (v3.13) keys. Add new functions to - create Licensing using these licenses as LicenseSymbol. - -- Add new License.dedup() method to deduplicate and simplify license expressions - without over simplifying. - -- Add new License.validate() method to return a new ExpressionInfo object with - details on a license expression validation. - - -Changed -~~~~~~~ -- Drop support for Python 2. -- Adopt the project skeleton from https://github.com/nexB/skeleton - and its new configure script - - -v1.2 - 2019-11-14 ------------------- -Added -~~~~~ -- Add ability to render WITH expression wrapped in parenthesis - -Fixes -~~~~~ -- Fix anomalous backslashes in strings - -Changed -~~~~~~~ -- Update the thirdparty directory structure. - - -v1.0 - 2019-10-16 ------------------- -Added -~~~~~ -- New version of boolean.py library -- Add ability to leave license expressions unsorted when simplifying - -Changed -~~~~~~~ -- updated travis CI settings - - -v0.999 - 2019-04-29 --------------------- -- Initial release -- license-expression is small utility library to parse, compare and - simplify and normalize license expressions. - - - - - declared license file: CODE_OF_CONDUCT.rst - Contributor Covenant Code of Conduct -==================================== - -Our Pledge ----------- - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our -project and our community a harassment-free experience for everyone, -regardless of age, body size, disability, ethnicity, gender identity and -expression, level of experience, education, socio-economic status, -nationality, personal appearance, race, religion, or sexual identity and -orientation. - -Our Standards -------------- - -Examples of behavior that contributes to creating a positive environment -include: - -- Using welcoming and inclusive language -- Being respectful of differing viewpoints and experiences -- Gracefully accepting constructive criticism -- Focusing on what is best for the community -- Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -- The use of sexualized language or imagery and unwelcome sexual - attention or advances -- Trolling, insulting/derogatory comments, and personal or political - attacks -- Public or private harassment -- Publishing others’ private information, such as a physical or - electronic address, without explicit permission -- Other conduct which could reasonably be considered inappropriate in a - professional setting - -Our Responsibilities --------------------- - -Project maintainers are responsible for clarifying the standards of -acceptable behavior and are expected to take appropriate and fair -corrective action in response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, -or reject comments, commits, code, wiki edits, issues, and other -contributions that are not aligned to this Code of Conduct, or to ban -temporarily or permanently any contributor for other behaviors that they -deem inappropriate, threatening, offensive, or harmful. - -Scope ------ - -This Code of Conduct applies both within project spaces and in public -spaces when an individual is representing the project or its community. -Examples of representing a project or community include using an -official project e-mail address, posting via an official social media -account, or acting as an appointed representative at an online or -offline event. Representation of a project may be further defined and -clarified by project maintainers. - -Enforcement ------------ - -Instances of abusive, harassing, or otherwise unacceptable behavior may -be reported by contacting the project team at pombredanne@gmail.com -or on the Gitter chat channel at https://gitter.im/aboutcode-org/discuss . -All complaints will be reviewed and investigated and will result in a -response that is deemed necessary and appropriate to the circumstances. -The project team is obligated to maintain confidentiality with regard to -the reporter of an incident. Further details of specific enforcement -policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in -good faith may face temporary or permanent repercussions as determined -by other members of the project’s leadership. - -Attribution ------------ - -This Code of Conduct is adapted from the `Contributor Covenant`_ , -version 1.4, available at -https://www.contributor-covenant.org/version/1/4/code-of-conduct.html - -.. _Contributor Covenant: https://www.contributor-covenant.org - - - - declared license file: NOTICE - # -# Copyright (c) nexB Inc. and others. -# SPDX-License-Identifier: Apache-2.0 -# -# Visit https://aboutcode.org and https://github.com/nexB/license-expression -# for support and download. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - - - - declared license file: apache-2.0.LICENSE - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - - pkg:pypi/license-expression@30.3.0 - - - https://github.com/nexB/license-expression - from packaging metadata: Home-page - - - - - lxml - 5.3.0 - Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. - - - BSD-3-Clause - - - License :: OSI Approved :: BSD License - - - declared license file: LICENSE.txt - Copyright (c) 2004 Infrae. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - 3. Neither the name of Infrae nor the names of its contributors may - be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INFRAE OR -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - - declared license file: LICENSES.txt - lxml is copyright Infrae and distributed under the BSD license (see -doc/licenses/BSD.txt), with the following exceptions: - -Some code, such a selftest.py, selftest2.py and -src/lxml/_elementpath.py are derived from ElementTree and -cElementTree. See doc/licenses/elementtree.txt for the license text. - -lxml.cssselect and lxml.html are copyright Ian Bicking and distributed -under the BSD license (see doc/licenses/BSD.txt). - -test.py, the test-runner script, is GPL and copyright Shuttleworth -Foundation. See doc/licenses/GPL.txt. It is believed the unchanged -inclusion of test.py to run the unit test suite falls under the -"aggregation" clause of the GPL and thus does not affect the license -of the rest of the package. - -The isoschematron implementation uses several XSL and RelaxNG resources: - * The (XML syntax) RelaxNG schema for schematron, copyright International - Organization for Standardization (see - src/lxml/isoschematron/resources/rng/iso-schematron.rng for the license - text) - * The skeleton iso-schematron-xlt1 pure-xslt schematron implementation - xsl stylesheets, copyright Rick Jelliffe and Academia Sinica Computing - Center, Taiwan (see the xsl files here for the license text: - src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/) - * The xsd/rng schema schematron extraction xsl transformations are unlicensed - and copyright the respective authors as noted (see - src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl and - src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl) - - - - pkg:pypi/lxml@5.3.0 - - - https://github.com/lxml/lxml - from packaging metadata Project-URL: Source - - - https://lxml.de/ - from packaging metadata: Home-page - - - - - regression-issue868 - 0.1 - - - declared license file: my_licenses/richtext.rtf - e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA= - - - declared license file: my_licenses/utf-16be_withBOM.txt - this file is -utf-16be encoded -with BOM -😃 - - - - declared license file: my_licenses/utf-16le_withBOM.txt - this file is -utf-16le encoded -with BOM -😃 - - - - declared license file: my_licenses/utf-8_noBOM.txt - this file is -utf-8 encoded -without BOM -😃 - - - - declared license file: my_licenses/utf-8_withBOM.txt - this file is -utf-8 encoded -with BOM -😃 - - - - - - file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 - PackageSource: Local - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.json.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.json.bin deleted file mode 100644 index 542e8afdd..000000000 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.json.bin +++ /dev/null @@ -1,570 +0,0 @@ -{ - "components": [ - { - "bom-ref": "attrs==23.2.0", - "description": "Classes Without Boilerplate", - "externalReferences": [ - { - "comment": "from packaging metadata Project-URL: Documentation", - "type": "documentation", - "url": "https://www.attrs.org/" - }, - { - "comment": "from packaging metadata Project-URL: Funding", - "type": "other", - "url": "https://github.com/sponsors/hynek" - }, - { - "comment": "from packaging metadata Project-URL: Tidelift", - "type": "other", - "url": "https://tidelift.com/subscription/pkg/pypi-attrs?utm_source=pypi-attrs&utm_medium=pypi" - }, - { - "comment": "from packaging metadata Project-URL: Changelog", - "type": "other", - "url": "https://www.attrs.org/en/stable/changelog.html" - }, - { - "comment": "from packaging metadata Project-URL: GitHub", - "type": "vcs", - "url": "https://github.com/python-attrs/attrs" - } - ], - "licenses": [ - { - "license": { - "id": "MIT" - } - }, - { - "license": { - "name": "declared license file: LICENSE", - "text": { - "content": "The MIT License (MIT)\n\nCopyright (c) 2015 Hynek Schlawack and the attrs contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n", - "contentType": "text/plain" - } - } - } - ], - "name": "attrs", - "purl": "pkg:pypi/attrs@23.2.0", - "type": "library", - "version": "23.2.0" - }, - { - "bom-ref": "boolean.py==4.0", - "description": "Define boolean algebras, create and parse boolean expressions and create custom boolean DSL.", - "externalReferences": [ - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://github.com/bastikr/boolean.py" - } - ], - "licenses": [ - { - "license": { - "id": "BSD-2-Clause" - } - }, - { - "license": { - "name": "declared license file: CHANGELOG.rst", - "text": { - "content": "\nChangelog\n=========\n\n\nnext\n----\n\n\n4.0 (2022-05-05)\n----------------\n\n* API changes\n\n * Drop support for Python 2.\n * Test on Python 3.10\n * Make Expression.sort_order an instance attributes and not a class attribute\n\n* Misc.\n\n * Correct licensing documentation\n * Improve docstringf and apply minor refactorings\n * Adopt black code style and isort for imports\n * Drop Travis and use GitHub actions for CI\n\n\n3.8 (2020-06-10)\n----------------\n\n* API changes\n\n * Add support for evaluation of boolean expression.\n Thank you to Lars van Gemerden @gemerden\n\n* Bug fixes\n\n * Fix parsing of tokens that have a number as the first character. \n Thank you to Jeff Cohen @ jcohen28\n * Restore proper Python 2 compatibility. \n Thank you to Benjy Weinberger @benjyw\n\n* Improve documentation\n\n * Add pointers to Linux distro packages.\n Thank you to Max Mehl @mxmehl and Carmen Bianca Bakker @carmenbianca\n * Fix typo.\n Thank you to Gabriel Niebler @der-gabe\n\n\n3.7 (2019-10-04)\n----------------\n\n* API changes\n\n * Add new sort argument to simplify() to optionally not sort when simplifying\n expressions (e.g. not applying \"commutativity\"). Thank you to Steven Esser\n @majurg for this\n * Add new argument to tokenizer to optionally accept extra characters in symbol\n tokens. Thank you to @carpie for this\n\n\n3.6 (2018-08-06)\n----------------\n\n* No API changes\n\n* Bug fixes\n\n * Fix De Morgan's laws effect on double negation propositions. Thank you to Douglas Cardoso for this\n * Improve error checking when parsing\n\n\n3.5 (Nov 1, 2017)\n-----------------\n\n* No API changes\n\n* Bug fixes\n\n * Documentation updates and add testing for Python 3.6. Thank you to Alexander Lisianoi @alisianoi\n * Improve testng and expression equivalence checks\n * Improve subs() method to an expression \n\n \n\n3.4 (May 12, 2017)\n------------------\n\n* No API changes\n\n* Bug fixes and improvements\n\n * Fix various documentation typos and improve tests . Thank you to Alexander Lisianoi @alisianoi\n * Fix handling for literals vs. symbols in negations Thank you to @YaronK\n\n\n3.3 (2017-02-09)\n----------------\n\n* API changes\n\n * #40 and #50 Expression.subs() now takes 'default' thanks to @kronuz\n * #45 simplify=False is now the default for parse and related functions or methods.\n * #40 Use \"&\" and \"|\" as default operators\n\n* Bug fixes\n\n * #60 Fix bug for \"a or b c\" which is not a valid expression\n * #58 Fix math formula display in docs\n * Improve handling of parse errors\n\n\n2.0.0 (2016-05-11)\n------------------\n\n* API changes\n\n * New algebra definition. Refactored class hierarchy. Improved parsing.\n\n* New features\n\n * possibility to subclass algebra definition\n * new normal forms shortcuts for DNF and CNF.\n\n\n1.1 (2016-04-06)\n------------------\n\n* Initial release on Pypi.\n", - "contentType": "text/prs.fallenstein.rst" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.txt", - "text": { - "content": "Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice, this\nlist of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice,\nthis list of conditions and the following disclaimer in the documentation and/or\nother materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: README.rst", - "text": { - "content": "boolean.py\n==========\n\n\"boolean.py\" is a small library implementing a boolean algebra. It\ndefines two base elements, TRUE and FALSE, and a Symbol class that can\ntake on one of these two values. Calculations are done in terms of AND,\nOR and NOT - other compositions like XOR and NAND are not implemented\nbut can be emulated with AND or and NOT. Expressions are constructed\nfrom parsed strings or in Python.\n\nIt runs on Python 3.6+\nYou can use older version 3.x for Python 2.7+ support.\n\nhttps://github.com/bastikr/boolean.py\n\nBuild status: |Build Status|\n\n\nExample\n-------\n\n::\n\n >>> import boolean\n >>> algebra = boolean.BooleanAlgebra()\n >>> expression1 = algebra.parse(u'apple and (oranges or banana) and not banana', simplify=False)\n >>> expression1\n AND(Symbol('apple'), OR(Symbol('oranges'), Symbol('banana')), NOT(Symbol('banana')))\n\n >>> expression2 = algebra.parse('(oranges | banana) and not banana & apple', simplify=True)\n >>> expression2\n AND(Symbol('apple'), NOT(Symbol('banana')), Symbol('oranges'))\n\n >>> expression1 == expression2\n False\n >>> expression1.simplify() == expression2\n True\n\n\nDocumentation\n-------------\n\nhttp://readthedocs.org/docs/booleanpy/en/latest/\n\n\nInstallation\n------------\n\nInstallation via pip\n~~~~~~~~~~~~~~~~~~~~\n\nTo install boolean.py, you need to have the following pieces of software\non your computer:\n\n- Python 3.6+\n- pip\n\nYou then only need to run the following command:\n\n``pip install boolean.py``\n\n\nInstallation via package managers\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThere are packages available for easy install on some operating systems.\nYou are welcome to help us package this tool for more distributions!\n\n- boolean.py has been packaged as Arch Linux, Fedora, openSus,\n nixpkgs, Guix, DragonFly and FreeBSD \n `packages `__ .\n\nIn particular:\n\n- Arch Linux (AUR):\n `python-boolean.py `__\n- Fedora:\n `python-boolean.py `__\n- openSUSE:\n `python-boolean.py `__\n\n\nTesting\n-------\n\nTest ``boolean.py`` with your current Python environment:\n\n``python setup.py test``\n\nTest with all of the supported Python environments using ``tox``:\n\n::\n\n pip install -r requirements-dev.txt\n tox\n\nIf ``tox`` throws ``InterpreterNotFound``, limit it to python\ninterpreters that are actually installed on your machine:\n\n::\n\n tox -e py36\n\nAlternatively use pytest.\n\n\nLicense\n-------\n\nCopyright (c) Sebastian Kraemer, basti.kr@gmail.com and others\nSPDX-License-Identifier: BSD-2-Clause\n\n.. |Build Status| image:: https://travis-ci.org/bastikr/boolean.py.svg?branch=master\n :target: https://travis-ci.org/bastikr/boolean.py\n", - "contentType": "text/prs.fallenstein.rst" - } - } - } - ], - "name": "boolean.py", - "purl": "pkg:pypi/boolean.py@4.0", - "type": "library", - "version": "4.0" - }, - { - "bom-ref": "cryptography==43.0.1", - "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", - "evidence": { - "licenses": [ - { - "license": { - "name": "License :: OSI Approved :: Apache Software License" - } - }, - { - "license": { - "name": "License :: OSI Approved :: BSD License" - } - }, - { - "license": { - "name": "declared license file: LICENSE", - "text": { - "content": "This software is made available under the terms of *either* of the licenses\nfound in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made\nunder the terms of *both* these licenses.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.APACHE", - "text": { - "content": "\n Apache License\n Version 2.0, January 2004\n https://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.BSD", - "text": { - "content": "Copyright (c) Individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of PyCA Cryptography nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" - } - } - } - ] - }, - "externalReferences": [ - { - "comment": "from packaging metadata Project-URL: documentation", - "type": "documentation", - "url": "https://cryptography.io/" - }, - { - "comment": "from packaging metadata Project-URL: issues", - "type": "issue-tracker", - "url": "https://github.com/pyca/cryptography/issues" - }, - { - "comment": "from packaging metadata Project-URL: source", - "type": "other", - "url": "https://github.com/pyca/cryptography/" - }, - { - "comment": "from packaging metadata Project-URL: changelog", - "type": "other", - "url": "https://cryptography.io/en/latest/changelog/" - }, - { - "comment": "from packaging metadata Project-URL: homepage", - "type": "website", - "url": "https://github.com/pyca/cryptography" - } - ], - "licenses": [ - { - "expression": "Apache-2.0 OR BSD-3-Clause" - } - ], - "name": "cryptography", - "purl": "pkg:pypi/cryptography@43.0.1", - "type": "library", - "version": "43.0.1" - }, - { - "bom-ref": "jsonpointer==2.4", - "description": "Identify specific nodes in a JSON document (RFC 6901) ", - "externalReferences": [ - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://github.com/stefankoegl/python-json-pointer" - } - ], - "licenses": [ - { - "license": { - "name": "License :: OSI Approved :: BSD License" - } - }, - { - "license": { - "name": "declared license file: AUTHORS", - "text": { - "content": "Stefan K\u00f6gl \nAlexander Shorin \nChristopher J. White \n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.txt", - "text": { - "content": "Copyright (c) 2011 Stefan K\u00f6gl \nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions\nare met:\n\n1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n3. The name of the author may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR\nIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\nOF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\nIN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\nNOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\nTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license of 'jsonpointer'", - "text": { - "content": "Modified BSD License", - "contentType": "text/plain" - } - } - } - ], - "name": "jsonpointer", - "purl": "pkg:pypi/jsonpointer@2.4", - "type": "library", - "version": "2.4" - }, - { - "bom-ref": "license-expression==30.3.0", - "description": "license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic.", - "externalReferences": [ - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://github.com/nexB/license-expression" - } - ], - "licenses": [ - { - "license": { - "id": "Apache-2.0" - } - }, - { - "license": { - "name": "declared license file: AUTHORS.rst", - "text": { - "content": "The following organizations or individuals have contributed to this code:\n\n- Ayan Sinha Mahapatra @AyanSinhaMahapatra\n- Carmen Bianca Bakker @carmenbianca\n- Chin-Yeung Li @chinyeungli\n- Dennis Clark @DennisClark\n- John Horan @johnmhoran\n- Jono Yang @JonoYang\n- Max Mehl @mxmehl\n- nexB Inc. @nexB\n- Peter Kolbus @pkolbus\n- Philippe Ombredanne @pombredanne\n- Sebastian Schuberth @sschuberth\n- Steven Esser @majurg\n- Thomas Druez @tdruez\n", - "contentType": "text/prs.fallenstein.rst" - } - } - }, - { - "license": { - "name": "declared license file: CHANGELOG.rst", - "text": { - "content": "Changelog\n=========\n\nv30.3.0 - 2024-03-18\n--------------------\n\nThis is a minor release without API changes:\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.23\n- Drop support for Python 3.7\n\nv30.2.0 - 2023-11-29\n--------------------\n\nThis is a minor release without API changes:\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.22\n- Add Python 3.12 support in CI\n\n\nv30.1.1 - 2023-01-16\n----------------------\n\nThis is a minor dot release without API changes\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.20\n\n\nv30.1.0 - 2023-01-16\n----------------------\n\nThis is a minor release without API changes\n\n- Use latest skeleton (and updated configure script)\n- Update license list to latest ScanCode and SPDX 3.19\n- Use correct syntax for python_require\n- Drop using Travis and Appveyor\n- Drop support for Python 3.7 and add Python 3.11 in CI\n\n\nv30.0.0 - 2022-05-10\n----------------------\n\nThis is a minor release with API changes\n\n- Use latest skeleton (and updated configure script)\n- Drop using calver\n- Improve error checking when combining licenses\n\n\n\nv21.6.14 - 2021-06-14\n----------------------\n\nAdded\n~~~~~\n\n- Switch to calver for package versioning to better convey the currency of the\n bundled data.\n\n- Include https://scancode-licensedb.aboutcode.org/ licenses list with\n ScanCode (v21.6.7) and SPDX licenses (v3.13) keys. Add new functions to\n create Licensing using these licenses as LicenseSymbol.\n\n- Add new License.dedup() method to deduplicate and simplify license expressions\n without over simplifying.\n\n- Add new License.validate() method to return a new ExpressionInfo object with\n details on a license expression validation.\n\n\nChanged\n~~~~~~~\n- Drop support for Python 2.\n- Adopt the project skeleton from https://github.com/nexB/skeleton\n and its new configure script\n\n\nv1.2 - 2019-11-14\n------------------\nAdded\n~~~~~\n- Add ability to render WITH expression wrapped in parenthesis\n\nFixes\n~~~~~\n- Fix anomalous backslashes in strings\n\nChanged\n~~~~~~~\n- Update the thirdparty directory structure.\n\n\nv1.0 - 2019-10-16\n------------------\nAdded\n~~~~~\n- New version of boolean.py library\n- Add ability to leave license expressions unsorted when simplifying\n\nChanged\n~~~~~~~\n- updated travis CI settings\n\n\nv0.999 - 2019-04-29\n--------------------\n- Initial release\n- license-expression is small utility library to parse, compare and\n simplify and normalize license expressions.\n\n", - "contentType": "text/prs.fallenstein.rst" - } - } - }, - { - "license": { - "name": "declared license file: CODE_OF_CONDUCT.rst", - "text": { - "content": "Contributor Covenant Code of Conduct\n====================================\n\nOur Pledge\n----------\n\nIn the interest of fostering an open and welcoming environment, we as\ncontributors and maintainers pledge to making participation in our\nproject and our community a harassment-free experience for everyone,\nregardless of age, body size, disability, ethnicity, gender identity and\nexpression, level of experience, education, socio-economic status,\nnationality, personal appearance, race, religion, or sexual identity and\norientation.\n\nOur Standards\n-------------\n\nExamples of behavior that contributes to creating a positive environment\ninclude:\n\n- Using welcoming and inclusive language\n- Being respectful of differing viewpoints and experiences\n- Gracefully accepting constructive criticism\n- Focusing on what is best for the community\n- Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n- The use of sexualized language or imagery and unwelcome sexual\n attention or advances\n- Trolling, insulting/derogatory comments, and personal or political\n attacks\n- Public or private harassment\n- Publishing others\u2019 private information, such as a physical or\n electronic address, without explicit permission\n- Other conduct which could reasonably be considered inappropriate in a\n professional setting\n\nOur Responsibilities\n--------------------\n\nProject maintainers are responsible for clarifying the standards of\nacceptable behavior and are expected to take appropriate and fair\ncorrective action in response to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit,\nor reject comments, commits, code, wiki edits, issues, and other\ncontributions that are not aligned to this Code of Conduct, or to ban\ntemporarily or permanently any contributor for other behaviors that they\ndeem inappropriate, threatening, offensive, or harmful.\n\nScope\n-----\n\nThis Code of Conduct applies both within project spaces and in public\nspaces when an individual is representing the project or its community.\nExamples of representing a project or community include using an\nofficial project e-mail address, posting via an official social media\naccount, or acting as an appointed representative at an online or\noffline event. Representation of a project may be further defined and\nclarified by project maintainers.\n\nEnforcement\n-----------\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may\nbe reported by contacting the project team at pombredanne@gmail.com\nor on the Gitter chat channel at https://gitter.im/aboutcode-org/discuss .\nAll complaints will be reviewed and investigated and will result in a\nresponse that is deemed necessary and appropriate to the circumstances.\nThe project team is obligated to maintain confidentiality with regard to\nthe reporter of an incident. Further details of specific enforcement\npolicies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in\ngood faith may face temporary or permanent repercussions as determined\nby other members of the project\u2019s leadership.\n\nAttribution\n-----------\n\nThis Code of Conduct is adapted from the `Contributor Covenant`_ ,\nversion 1.4, available at\nhttps://www.contributor-covenant.org/version/1/4/code-of-conduct.html\n\n.. _Contributor Covenant: https://www.contributor-covenant.org\n", - "contentType": "text/prs.fallenstein.rst" - } - } - }, - { - "license": { - "name": "declared license file: NOTICE", - "text": { - "content": "#\n# Copyright (c) nexB Inc. and others.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Visit https://aboutcode.org and https://github.com/nexB/license-expression\n# for support and download.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: apache-2.0.LICENSE", - "text": { - "content": " Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", - "contentType": "text/plain" - } - } - } - ], - "name": "license-expression", - "purl": "pkg:pypi/license-expression@30.3.0", - "type": "library", - "version": "30.3.0" - }, - { - "bom-ref": "lxml==5.3.0", - "description": "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API.", - "externalReferences": [ - { - "comment": "from packaging metadata Project-URL: Source", - "type": "other", - "url": "https://github.com/lxml/lxml" - }, - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://lxml.de/" - } - ], - "licenses": [ - { - "license": { - "id": "BSD-3-Clause" - } - }, - { - "license": { - "name": "License :: OSI Approved :: BSD License" - } - }, - { - "license": { - "name": "declared license file: LICENSE.txt", - "text": { - "content": "Copyright (c) 2004 Infrae. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n 1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n \n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in\n the documentation and/or other materials provided with the\n distribution.\n\n 3. Neither the name of Infrae nor the names of its contributors may\n be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INFRAE OR\nCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\nEXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\nPROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSES.txt", - "text": { - "content": "lxml is copyright Infrae and distributed under the BSD license (see\ndoc/licenses/BSD.txt), with the following exceptions:\n\nSome code, such a selftest.py, selftest2.py and\nsrc/lxml/_elementpath.py are derived from ElementTree and\ncElementTree. See doc/licenses/elementtree.txt for the license text.\n\nlxml.cssselect and lxml.html are copyright Ian Bicking and distributed\nunder the BSD license (see doc/licenses/BSD.txt).\n\ntest.py, the test-runner script, is GPL and copyright Shuttleworth\nFoundation. See doc/licenses/GPL.txt. It is believed the unchanged\ninclusion of test.py to run the unit test suite falls under the\n\"aggregation\" clause of the GPL and thus does not affect the license\nof the rest of the package.\n\nThe isoschematron implementation uses several XSL and RelaxNG resources:\n * The (XML syntax) RelaxNG schema for schematron, copyright International\n Organization for Standardization (see \n src/lxml/isoschematron/resources/rng/iso-schematron.rng for the license\n text)\n * The skeleton iso-schematron-xlt1 pure-xslt schematron implementation\n xsl stylesheets, copyright Rick Jelliffe and Academia Sinica Computing\n Center, Taiwan (see the xsl files here for the license text: \n src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/)\n * The xsd/rng schema schematron extraction xsl transformations are unlicensed\n and copyright the respective authors as noted (see \n src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl and\n src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl)\n", - "contentType": "text/plain" - } - } - } - ], - "name": "lxml", - "purl": "pkg:pypi/lxml@5.3.0", - "type": "library", - "version": "5.3.0" - }, - { - "bom-ref": "regression-issue868==0.1", - "externalReferences": [ - { - "comment": "PackageSource: Local", - "type": "distribution", - "url": "file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868" - } - ], - "licenses": [ - { - "license": { - "name": "declared license file: my_licenses/richtext.rtf", - "text": { - "content": "e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA=", - "contentType": "application/rtf", - "encoding": "base64" - } - } - }, - { - "license": { - "name": "declared license file: my_licenses/utf-16be_withBOM.txt", - "text": { - "content": "this file is\r\nutf-16be encoded\r\nwith BOM\r\n\ud83d\ude03\r\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: my_licenses/utf-16le_withBOM.txt", - "text": { - "content": "this file is\nutf-16le encoded\nwith BOM\n\ud83d\ude03\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: my_licenses/utf-8_noBOM.txt", - "text": { - "content": "this file is\nutf-8 encoded\nwithout BOM\n\ud83d\ude03\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: my_licenses/utf-8_withBOM.txt", - "text": { - "content": "\ufeffthis file is\nutf-8 encoded\nwith BOM\n\ud83d\ude03\n", - "contentType": "text/plain" - } - } - } - ], - "name": "regression-issue868", - "type": "library", - "version": "0.1" - } - ], - "dependencies": [ - { - "ref": "attrs==23.2.0" - }, - { - "ref": "boolean.py==4.0" - }, - { - "ref": "cryptography==43.0.1" - }, - { - "ref": "jsonpointer==2.4" - }, - { - "dependsOn": [ - "boolean.py==4.0" - ], - "ref": "license-expression==30.3.0" - }, - { - "ref": "lxml==5.3.0" - }, - { - "ref": "regression-issue868==0.1" - }, - { - "dependsOn": [ - "attrs==23.2.0", - "boolean.py==4.0", - "cryptography==43.0.1", - "jsonpointer==2.4", - "license-expression==30.3.0", - "lxml==5.3.0", - "regression-issue868==0.1" - ], - "ref": "root-component" - } - ], - "metadata": { - "component": { - "bom-ref": "root-component", - "description": "depenndencies with license declaration accoring to PEP 639", - "evidence": { - "licenses": [ - { - "license": { - "name": "declared license file: AUTHORS.example.bin", - "text": { - "content": "dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUuYmluIGNvbnRlbnQK", - "contentType": "application/octet-stream", - "encoding": "base64" - } - } - }, - { - "license": { - "name": "declared license file: LICENCE.dummy.bin", - "text": { - "content": "dGhpcyBpcyBMSUNFTkNFLmR1bW15LmJpbiBjb250ZW50Cg==", - "contentType": "application/octet-stream", - "encoding": "base64" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.txt.bin", - "text": { - "content": "dGhpcyBpcyBMSUNFTlNFLnR4dC5iaW4gY29udGVudAo=", - "contentType": "application/octet-stream", - "encoding": "base64" - } - } - }, - { - "license": { - "name": "declared license file: NOTICE.bin", - "text": { - "content": "dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UuYmluIGZpbGUuCg==", - "contentType": "application/octet-stream", - "encoding": "base64" - } - } - }, - { - "license": { - "name": "declared license file: licenses_a/LICENSE.CC0.bin", - "text": { - "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwLmJpbiBjb250ZW50Cg==", - "contentType": "application/octet-stream", - "encoding": "base64" - } - } - }, - { - "license": { - "name": "declared license file: licenses_a/LICENSE.MIT.bin", - "text": { - "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlULmJpbiBjb250ZW50Cg==", - "contentType": "application/octet-stream", - "encoding": "base64" - } - } - }, - { - "license": { - "name": "declared license file: licenses_b/LICENSE.md.bin", - "text": { - "content": "dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQuYmluIGNvbnRlbnQK", - "contentType": "application/octet-stream", - "encoding": "base64" - } - } - }, - { - "license": { - "name": "declared license file: licenses_b/legal/NOTICE.txt.bin", - "text": { - "content": "dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQuYmluIGZpbGUuIGl0IGlzIGV4cGVjdGVkIHRvIGJlIGRldGVjdGVkLgo=", - "contentType": "application/octet-stream", - "encoding": "base64" - } - } - } - ] - }, - "licenses": [ - { - "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" - } - ], - "name": "with-extras", - "type": "application", - "version": "0.1.0" - }, - "properties": [ - { - "name": "cdx:reproducible", - "value": "true" - } - ], - "tools": [ - { - "name": "cyclonedx-py", - "vendor": "CycloneDX", - "version": "thisVersion-testing" - }, - { - "name": "cyclonedx-python-lib", - "vendor": "CycloneDX", - "version": "libVersion-testing" - } - ] - }, - "version": 1, - "$schema": "http://cyclonedx.org/schema/bom-1.3a.schema.json", - "bomFormat": "CycloneDX", - "specVersion": "1.3" -} \ No newline at end of file diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.xml.bin deleted file mode 100644 index 25d48b220..000000000 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.xml.bin +++ /dev/null @@ -1,1392 +0,0 @@ - - - - - - CycloneDX - cyclonedx-py - thisVersion-testing - - - CycloneDX - cyclonedx-python-lib - libVersion-testing - - - - with-extras - 0.1.0 - depenndencies with license declaration accoring to PEP 639 - - MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) - - - - - declared license file: AUTHORS.example.bin - dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUuYmluIGNvbnRlbnQK - - - declared license file: LICENCE.dummy.bin - dGhpcyBpcyBMSUNFTkNFLmR1bW15LmJpbiBjb250ZW50Cg== - - - declared license file: LICENSE.txt.bin - dGhpcyBpcyBMSUNFTlNFLnR4dC5iaW4gY29udGVudAo= - - - declared license file: NOTICE.bin - dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UuYmluIGZpbGUuCg== - - - declared license file: licenses_a/LICENSE.CC0.bin - dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwLmJpbiBjb250ZW50Cg== - - - declared license file: licenses_a/LICENSE.MIT.bin - dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlULmJpbiBjb250ZW50Cg== - - - declared license file: licenses_b/LICENSE.md.bin - dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQuYmluIGNvbnRlbnQK - - - declared license file: licenses_b/legal/NOTICE.txt.bin - dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQuYmluIGZpbGUuIGl0IGlzIGV4cGVjdGVkIHRvIGJlIGRldGVjdGVkLgo= - - - - - - true - - - - - attrs - 23.2.0 - Classes Without Boilerplate - - - MIT - - - declared license file: LICENSE - The MIT License (MIT) - -Copyright (c) 2015 Hynek Schlawack and the attrs contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - - - pkg:pypi/attrs@23.2.0 - - - https://www.attrs.org/ - from packaging metadata Project-URL: Documentation - - - https://github.com/sponsors/hynek - from packaging metadata Project-URL: Funding - - - https://tidelift.com/subscription/pkg/pypi-attrs?utm_source=pypi-attrs&utm_medium=pypi - from packaging metadata Project-URL: Tidelift - - - https://www.attrs.org/en/stable/changelog.html - from packaging metadata Project-URL: Changelog - - - https://github.com/python-attrs/attrs - from packaging metadata Project-URL: GitHub - - - - - boolean.py - 4.0 - Define boolean algebras, create and parse boolean expressions and create custom boolean DSL. - - - BSD-2-Clause - - - declared license file: CHANGELOG.rst - -Changelog -========= - - -next ----- - - -4.0 (2022-05-05) ----------------- - -* API changes - - * Drop support for Python 2. - * Test on Python 3.10 - * Make Expression.sort_order an instance attributes and not a class attribute - -* Misc. - - * Correct licensing documentation - * Improve docstringf and apply minor refactorings - * Adopt black code style and isort for imports - * Drop Travis and use GitHub actions for CI - - -3.8 (2020-06-10) ----------------- - -* API changes - - * Add support for evaluation of boolean expression. - Thank you to Lars van Gemerden @gemerden - -* Bug fixes - - * Fix parsing of tokens that have a number as the first character. - Thank you to Jeff Cohen @ jcohen28 - * Restore proper Python 2 compatibility. - Thank you to Benjy Weinberger @benjyw - -* Improve documentation - - * Add pointers to Linux distro packages. - Thank you to Max Mehl @mxmehl and Carmen Bianca Bakker @carmenbianca - * Fix typo. - Thank you to Gabriel Niebler @der-gabe - - -3.7 (2019-10-04) ----------------- - -* API changes - - * Add new sort argument to simplify() to optionally not sort when simplifying - expressions (e.g. not applying "commutativity"). Thank you to Steven Esser - @majurg for this - * Add new argument to tokenizer to optionally accept extra characters in symbol - tokens. Thank you to @carpie for this - - -3.6 (2018-08-06) ----------------- - -* No API changes - -* Bug fixes - - * Fix De Morgan's laws effect on double negation propositions. Thank you to Douglas Cardoso for this - * Improve error checking when parsing - - -3.5 (Nov 1, 2017) ------------------ - -* No API changes - -* Bug fixes - - * Documentation updates and add testing for Python 3.6. Thank you to Alexander Lisianoi @alisianoi - * Improve testng and expression equivalence checks - * Improve subs() method to an expression - - - -3.4 (May 12, 2017) ------------------- - -* No API changes - -* Bug fixes and improvements - - * Fix various documentation typos and improve tests . Thank you to Alexander Lisianoi @alisianoi - * Fix handling for literals vs. symbols in negations Thank you to @YaronK - - -3.3 (2017-02-09) ----------------- - -* API changes - - * #40 and #50 Expression.subs() now takes 'default' thanks to @kronuz - * #45 simplify=False is now the default for parse and related functions or methods. - * #40 Use "&" and "|" as default operators - -* Bug fixes - - * #60 Fix bug for "a or b c" which is not a valid expression - * #58 Fix math formula display in docs - * Improve handling of parse errors - - -2.0.0 (2016-05-11) ------------------- - -* API changes - - * New algebra definition. Refactored class hierarchy. Improved parsing. - -* New features - - * possibility to subclass algebra definition - * new normal forms shortcuts for DNF and CNF. - - -1.1 (2016-04-06) ------------------- - -* Initial release on Pypi. - - - - declared license file: LICENSE.txt - Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation and/or -other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - - declared license file: README.rst - boolean.py -========== - -"boolean.py" is a small library implementing a boolean algebra. It -defines two base elements, TRUE and FALSE, and a Symbol class that can -take on one of these two values. Calculations are done in terms of AND, -OR and NOT - other compositions like XOR and NAND are not implemented -but can be emulated with AND or and NOT. Expressions are constructed -from parsed strings or in Python. - -It runs on Python 3.6+ -You can use older version 3.x for Python 2.7+ support. - -https://github.com/bastikr/boolean.py - -Build status: |Build Status| - - -Example -------- - -:: - - >>> import boolean - >>> algebra = boolean.BooleanAlgebra() - >>> expression1 = algebra.parse(u'apple and (oranges or banana) and not banana', simplify=False) - >>> expression1 - AND(Symbol('apple'), OR(Symbol('oranges'), Symbol('banana')), NOT(Symbol('banana'))) - - >>> expression2 = algebra.parse('(oranges | banana) and not banana & apple', simplify=True) - >>> expression2 - AND(Symbol('apple'), NOT(Symbol('banana')), Symbol('oranges')) - - >>> expression1 == expression2 - False - >>> expression1.simplify() == expression2 - True - - -Documentation -------------- - -http://readthedocs.org/docs/booleanpy/en/latest/ - - -Installation ------------- - -Installation via pip -~~~~~~~~~~~~~~~~~~~~ - -To install boolean.py, you need to have the following pieces of software -on your computer: - -- Python 3.6+ -- pip - -You then only need to run the following command: - -``pip install boolean.py`` - - -Installation via package managers -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -There are packages available for easy install on some operating systems. -You are welcome to help us package this tool for more distributions! - -- boolean.py has been packaged as Arch Linux, Fedora, openSus, - nixpkgs, Guix, DragonFly and FreeBSD - `packages <https://repology.org/project/python:boolean.py/versions>`__ . - -In particular: - -- Arch Linux (AUR): - `python-boolean.py <https://aur.archlinux.org/packages/python-boolean.py/>`__ -- Fedora: - `python-boolean.py <https://apps.fedoraproject.org/packages/python-boolean.py>`__ -- openSUSE: - `python-boolean.py <https://software.opensuse.org/package/python-boolean.py>`__ - - -Testing -------- - -Test ``boolean.py`` with your current Python environment: - -``python setup.py test`` - -Test with all of the supported Python environments using ``tox``: - -:: - - pip install -r requirements-dev.txt - tox - -If ``tox`` throws ``InterpreterNotFound``, limit it to python -interpreters that are actually installed on your machine: - -:: - - tox -e py36 - -Alternatively use pytest. - - -License -------- - -Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others -SPDX-License-Identifier: BSD-2-Clause - -.. |Build Status| image:: https://travis-ci.org/bastikr/boolean.py.svg?branch=master - :target: https://travis-ci.org/bastikr/boolean.py - - - - pkg:pypi/boolean.py@4.0 - - - https://github.com/bastikr/boolean.py - from packaging metadata: Home-page - - - - - cryptography - 43.0.1 - cryptography is a package which provides cryptographic recipes and primitives to Python developers. - - Apache-2.0 OR BSD-3-Clause - - pkg:pypi/cryptography@43.0.1 - - - https://cryptography.io/ - from packaging metadata Project-URL: documentation - - - https://github.com/pyca/cryptography/issues - from packaging metadata Project-URL: issues - - - https://github.com/pyca/cryptography/ - from packaging metadata Project-URL: source - - - https://cryptography.io/en/latest/changelog/ - from packaging metadata Project-URL: changelog - - - https://github.com/pyca/cryptography - from packaging metadata Project-URL: homepage - - - - - - License :: OSI Approved :: Apache Software License - - - License :: OSI Approved :: BSD License - - - declared license file: LICENSE - This software is made available under the terms of *either* of the licenses -found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made -under the terms of *both* these licenses. - - - - declared license file: LICENSE.APACHE - - Apache License - Version 2.0, January 2004 - https://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - https://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - - declared license file: LICENSE.BSD - Copyright (c) Individual contributors. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. Neither the name of PyCA Cryptography nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - - - - - jsonpointer - 2.4 - Identify specific nodes in a JSON document (RFC 6901) - - - License :: OSI Approved :: BSD License - - - declared license file: AUTHORS - Stefan Kögl <stefan@skoegl.net> -Alexander Shorin <kxepal@gmail.com> -Christopher J. White <chris@grierwhite.com> - - - - declared license file: LICENSE.txt - Copyright (c) 2011 Stefan Kögl <stefan@skoegl.net> -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - - - declared license of 'jsonpointer' - Modified BSD License - - - pkg:pypi/jsonpointer@2.4 - - - https://github.com/stefankoegl/python-json-pointer - from packaging metadata: Home-page - - - - - license-expression - 30.3.0 - license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic. - - - Apache-2.0 - - - declared license file: AUTHORS.rst - The following organizations or individuals have contributed to this code: - -- Ayan Sinha Mahapatra @AyanSinhaMahapatra -- Carmen Bianca Bakker @carmenbianca -- Chin-Yeung Li @chinyeungli -- Dennis Clark @DennisClark -- John Horan @johnmhoran -- Jono Yang @JonoYang -- Max Mehl @mxmehl -- nexB Inc. @nexB -- Peter Kolbus @pkolbus -- Philippe Ombredanne @pombredanne -- Sebastian Schuberth @sschuberth -- Steven Esser @majurg -- Thomas Druez @tdruez - - - - declared license file: CHANGELOG.rst - Changelog -========= - -v30.3.0 - 2024-03-18 --------------------- - -This is a minor release without API changes: - -- Use latest skeleton -- Update license list to latest ScanCode and SPDX 3.23 -- Drop support for Python 3.7 - -v30.2.0 - 2023-11-29 --------------------- - -This is a minor release without API changes: - -- Use latest skeleton -- Update license list to latest ScanCode and SPDX 3.22 -- Add Python 3.12 support in CI - - -v30.1.1 - 2023-01-16 ----------------------- - -This is a minor dot release without API changes - -- Use latest skeleton -- Update license list to latest ScanCode and SPDX 3.20 - - -v30.1.0 - 2023-01-16 ----------------------- - -This is a minor release without API changes - -- Use latest skeleton (and updated configure script) -- Update license list to latest ScanCode and SPDX 3.19 -- Use correct syntax for python_require -- Drop using Travis and Appveyor -- Drop support for Python 3.7 and add Python 3.11 in CI - - -v30.0.0 - 2022-05-10 ----------------------- - -This is a minor release with API changes - -- Use latest skeleton (and updated configure script) -- Drop using calver -- Improve error checking when combining licenses - - - -v21.6.14 - 2021-06-14 ----------------------- - -Added -~~~~~ - -- Switch to calver for package versioning to better convey the currency of the - bundled data. - -- Include https://scancode-licensedb.aboutcode.org/ licenses list with - ScanCode (v21.6.7) and SPDX licenses (v3.13) keys. Add new functions to - create Licensing using these licenses as LicenseSymbol. - -- Add new License.dedup() method to deduplicate and simplify license expressions - without over simplifying. - -- Add new License.validate() method to return a new ExpressionInfo object with - details on a license expression validation. - - -Changed -~~~~~~~ -- Drop support for Python 2. -- Adopt the project skeleton from https://github.com/nexB/skeleton - and its new configure script - - -v1.2 - 2019-11-14 ------------------- -Added -~~~~~ -- Add ability to render WITH expression wrapped in parenthesis - -Fixes -~~~~~ -- Fix anomalous backslashes in strings - -Changed -~~~~~~~ -- Update the thirdparty directory structure. - - -v1.0 - 2019-10-16 ------------------- -Added -~~~~~ -- New version of boolean.py library -- Add ability to leave license expressions unsorted when simplifying - -Changed -~~~~~~~ -- updated travis CI settings - - -v0.999 - 2019-04-29 --------------------- -- Initial release -- license-expression is small utility library to parse, compare and - simplify and normalize license expressions. - - - - - declared license file: CODE_OF_CONDUCT.rst - Contributor Covenant Code of Conduct -==================================== - -Our Pledge ----------- - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our -project and our community a harassment-free experience for everyone, -regardless of age, body size, disability, ethnicity, gender identity and -expression, level of experience, education, socio-economic status, -nationality, personal appearance, race, religion, or sexual identity and -orientation. - -Our Standards -------------- - -Examples of behavior that contributes to creating a positive environment -include: - -- Using welcoming and inclusive language -- Being respectful of differing viewpoints and experiences -- Gracefully accepting constructive criticism -- Focusing on what is best for the community -- Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -- The use of sexualized language or imagery and unwelcome sexual - attention or advances -- Trolling, insulting/derogatory comments, and personal or political - attacks -- Public or private harassment -- Publishing others’ private information, such as a physical or - electronic address, without explicit permission -- Other conduct which could reasonably be considered inappropriate in a - professional setting - -Our Responsibilities --------------------- - -Project maintainers are responsible for clarifying the standards of -acceptable behavior and are expected to take appropriate and fair -corrective action in response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, -or reject comments, commits, code, wiki edits, issues, and other -contributions that are not aligned to this Code of Conduct, or to ban -temporarily or permanently any contributor for other behaviors that they -deem inappropriate, threatening, offensive, or harmful. - -Scope ------ - -This Code of Conduct applies both within project spaces and in public -spaces when an individual is representing the project or its community. -Examples of representing a project or community include using an -official project e-mail address, posting via an official social media -account, or acting as an appointed representative at an online or -offline event. Representation of a project may be further defined and -clarified by project maintainers. - -Enforcement ------------ - -Instances of abusive, harassing, or otherwise unacceptable behavior may -be reported by contacting the project team at pombredanne@gmail.com -or on the Gitter chat channel at https://gitter.im/aboutcode-org/discuss . -All complaints will be reviewed and investigated and will result in a -response that is deemed necessary and appropriate to the circumstances. -The project team is obligated to maintain confidentiality with regard to -the reporter of an incident. Further details of specific enforcement -policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in -good faith may face temporary or permanent repercussions as determined -by other members of the project’s leadership. - -Attribution ------------ - -This Code of Conduct is adapted from the `Contributor Covenant`_ , -version 1.4, available at -https://www.contributor-covenant.org/version/1/4/code-of-conduct.html - -.. _Contributor Covenant: https://www.contributor-covenant.org - - - - declared license file: NOTICE - # -# Copyright (c) nexB Inc. and others. -# SPDX-License-Identifier: Apache-2.0 -# -# Visit https://aboutcode.org and https://github.com/nexB/license-expression -# for support and download. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - - - - declared license file: apache-2.0.LICENSE - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - - pkg:pypi/license-expression@30.3.0 - - - https://github.com/nexB/license-expression - from packaging metadata: Home-page - - - - - lxml - 5.3.0 - Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. - - - BSD-3-Clause - - - License :: OSI Approved :: BSD License - - - declared license file: LICENSE.txt - Copyright (c) 2004 Infrae. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - 3. Neither the name of Infrae nor the names of its contributors may - be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INFRAE OR -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - - declared license file: LICENSES.txt - lxml is copyright Infrae and distributed under the BSD license (see -doc/licenses/BSD.txt), with the following exceptions: - -Some code, such a selftest.py, selftest2.py and -src/lxml/_elementpath.py are derived from ElementTree and -cElementTree. See doc/licenses/elementtree.txt for the license text. - -lxml.cssselect and lxml.html are copyright Ian Bicking and distributed -under the BSD license (see doc/licenses/BSD.txt). - -test.py, the test-runner script, is GPL and copyright Shuttleworth -Foundation. See doc/licenses/GPL.txt. It is believed the unchanged -inclusion of test.py to run the unit test suite falls under the -"aggregation" clause of the GPL and thus does not affect the license -of the rest of the package. - -The isoschematron implementation uses several XSL and RelaxNG resources: - * The (XML syntax) RelaxNG schema for schematron, copyright International - Organization for Standardization (see - src/lxml/isoschematron/resources/rng/iso-schematron.rng for the license - text) - * The skeleton iso-schematron-xlt1 pure-xslt schematron implementation - xsl stylesheets, copyright Rick Jelliffe and Academia Sinica Computing - Center, Taiwan (see the xsl files here for the license text: - src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/) - * The xsd/rng schema schematron extraction xsl transformations are unlicensed - and copyright the respective authors as noted (see - src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl and - src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl) - - - - pkg:pypi/lxml@5.3.0 - - - https://github.com/lxml/lxml - from packaging metadata Project-URL: Source - - - https://lxml.de/ - from packaging metadata: Home-page - - - - - regression-issue868 - 0.1 - - - declared license file: my_licenses/richtext.rtf - e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA= - - - declared license file: my_licenses/utf-16be_withBOM.txt - this file is -utf-16be encoded -with BOM -😃 - - - - declared license file: my_licenses/utf-16le_withBOM.txt - this file is -utf-16le encoded -with BOM -😃 - - - - declared license file: my_licenses/utf-8_noBOM.txt - this file is -utf-8 encoded -without BOM -😃 - - - - declared license file: my_licenses/utf-8_withBOM.txt - this file is -utf-8 encoded -with BOM -😃 - - - - - - file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 - PackageSource: Local - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.json.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.json.bin deleted file mode 100644 index 89b5fe985..000000000 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.json.bin +++ /dev/null @@ -1,605 +0,0 @@ -{ - "components": [ - { - "bom-ref": "attrs==23.2.0", - "description": "Classes Without Boilerplate", - "externalReferences": [ - { - "comment": "from packaging metadata Project-URL: Documentation", - "type": "documentation", - "url": "https://www.attrs.org/" - }, - { - "comment": "from packaging metadata Project-URL: Funding", - "type": "other", - "url": "https://github.com/sponsors/hynek" - }, - { - "comment": "from packaging metadata Project-URL: Tidelift", - "type": "other", - "url": "https://tidelift.com/subscription/pkg/pypi-attrs?utm_source=pypi-attrs&utm_medium=pypi" - }, - { - "comment": "from packaging metadata Project-URL: Changelog", - "type": "release-notes", - "url": "https://www.attrs.org/en/stable/changelog.html" - }, - { - "comment": "from packaging metadata Project-URL: GitHub", - "type": "vcs", - "url": "https://github.com/python-attrs/attrs" - } - ], - "licenses": [ - { - "license": { - "id": "MIT" - } - }, - { - "license": { - "name": "declared license file: LICENSE", - "text": { - "content": "The MIT License (MIT)\n\nCopyright (c) 2015 Hynek Schlawack and the attrs contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n", - "contentType": "text/plain" - } - } - } - ], - "name": "attrs", - "purl": "pkg:pypi/attrs@23.2.0", - "type": "library", - "version": "23.2.0" - }, - { - "bom-ref": "boolean.py==4.0", - "description": "Define boolean algebras, create and parse boolean expressions and create custom boolean DSL.", - "externalReferences": [ - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://github.com/bastikr/boolean.py" - } - ], - "licenses": [ - { - "license": { - "id": "BSD-2-Clause" - } - }, - { - "license": { - "name": "declared license file: CHANGELOG.rst", - "text": { - "content": "\nChangelog\n=========\n\n\nnext\n----\n\n\n4.0 (2022-05-05)\n----------------\n\n* API changes\n\n * Drop support for Python 2.\n * Test on Python 3.10\n * Make Expression.sort_order an instance attributes and not a class attribute\n\n* Misc.\n\n * Correct licensing documentation\n * Improve docstringf and apply minor refactorings\n * Adopt black code style and isort for imports\n * Drop Travis and use GitHub actions for CI\n\n\n3.8 (2020-06-10)\n----------------\n\n* API changes\n\n * Add support for evaluation of boolean expression.\n Thank you to Lars van Gemerden @gemerden\n\n* Bug fixes\n\n * Fix parsing of tokens that have a number as the first character. \n Thank you to Jeff Cohen @ jcohen28\n * Restore proper Python 2 compatibility. \n Thank you to Benjy Weinberger @benjyw\n\n* Improve documentation\n\n * Add pointers to Linux distro packages.\n Thank you to Max Mehl @mxmehl and Carmen Bianca Bakker @carmenbianca\n * Fix typo.\n Thank you to Gabriel Niebler @der-gabe\n\n\n3.7 (2019-10-04)\n----------------\n\n* API changes\n\n * Add new sort argument to simplify() to optionally not sort when simplifying\n expressions (e.g. not applying \"commutativity\"). Thank you to Steven Esser\n @majurg for this\n * Add new argument to tokenizer to optionally accept extra characters in symbol\n tokens. Thank you to @carpie for this\n\n\n3.6 (2018-08-06)\n----------------\n\n* No API changes\n\n* Bug fixes\n\n * Fix De Morgan's laws effect on double negation propositions. Thank you to Douglas Cardoso for this\n * Improve error checking when parsing\n\n\n3.5 (Nov 1, 2017)\n-----------------\n\n* No API changes\n\n* Bug fixes\n\n * Documentation updates and add testing for Python 3.6. Thank you to Alexander Lisianoi @alisianoi\n * Improve testng and expression equivalence checks\n * Improve subs() method to an expression \n\n \n\n3.4 (May 12, 2017)\n------------------\n\n* No API changes\n\n* Bug fixes and improvements\n\n * Fix various documentation typos and improve tests . Thank you to Alexander Lisianoi @alisianoi\n * Fix handling for literals vs. symbols in negations Thank you to @YaronK\n\n\n3.3 (2017-02-09)\n----------------\n\n* API changes\n\n * #40 and #50 Expression.subs() now takes 'default' thanks to @kronuz\n * #45 simplify=False is now the default for parse and related functions or methods.\n * #40 Use \"&\" and \"|\" as default operators\n\n* Bug fixes\n\n * #60 Fix bug for \"a or b c\" which is not a valid expression\n * #58 Fix math formula display in docs\n * Improve handling of parse errors\n\n\n2.0.0 (2016-05-11)\n------------------\n\n* API changes\n\n * New algebra definition. Refactored class hierarchy. Improved parsing.\n\n* New features\n\n * possibility to subclass algebra definition\n * new normal forms shortcuts for DNF and CNF.\n\n\n1.1 (2016-04-06)\n------------------\n\n* Initial release on Pypi.\n", - "contentType": "text/prs.fallenstein.rst" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.txt", - "text": { - "content": "Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice, this\nlist of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice,\nthis list of conditions and the following disclaimer in the documentation and/or\nother materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: README.rst", - "text": { - "content": "boolean.py\n==========\n\n\"boolean.py\" is a small library implementing a boolean algebra. It\ndefines two base elements, TRUE and FALSE, and a Symbol class that can\ntake on one of these two values. Calculations are done in terms of AND,\nOR and NOT - other compositions like XOR and NAND are not implemented\nbut can be emulated with AND or and NOT. Expressions are constructed\nfrom parsed strings or in Python.\n\nIt runs on Python 3.6+\nYou can use older version 3.x for Python 2.7+ support.\n\nhttps://github.com/bastikr/boolean.py\n\nBuild status: |Build Status|\n\n\nExample\n-------\n\n::\n\n >>> import boolean\n >>> algebra = boolean.BooleanAlgebra()\n >>> expression1 = algebra.parse(u'apple and (oranges or banana) and not banana', simplify=False)\n >>> expression1\n AND(Symbol('apple'), OR(Symbol('oranges'), Symbol('banana')), NOT(Symbol('banana')))\n\n >>> expression2 = algebra.parse('(oranges | banana) and not banana & apple', simplify=True)\n >>> expression2\n AND(Symbol('apple'), NOT(Symbol('banana')), Symbol('oranges'))\n\n >>> expression1 == expression2\n False\n >>> expression1.simplify() == expression2\n True\n\n\nDocumentation\n-------------\n\nhttp://readthedocs.org/docs/booleanpy/en/latest/\n\n\nInstallation\n------------\n\nInstallation via pip\n~~~~~~~~~~~~~~~~~~~~\n\nTo install boolean.py, you need to have the following pieces of software\non your computer:\n\n- Python 3.6+\n- pip\n\nYou then only need to run the following command:\n\n``pip install boolean.py``\n\n\nInstallation via package managers\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThere are packages available for easy install on some operating systems.\nYou are welcome to help us package this tool for more distributions!\n\n- boolean.py has been packaged as Arch Linux, Fedora, openSus,\n nixpkgs, Guix, DragonFly and FreeBSD \n `packages `__ .\n\nIn particular:\n\n- Arch Linux (AUR):\n `python-boolean.py `__\n- Fedora:\n `python-boolean.py `__\n- openSUSE:\n `python-boolean.py `__\n\n\nTesting\n-------\n\nTest ``boolean.py`` with your current Python environment:\n\n``python setup.py test``\n\nTest with all of the supported Python environments using ``tox``:\n\n::\n\n pip install -r requirements-dev.txt\n tox\n\nIf ``tox`` throws ``InterpreterNotFound``, limit it to python\ninterpreters that are actually installed on your machine:\n\n::\n\n tox -e py36\n\nAlternatively use pytest.\n\n\nLicense\n-------\n\nCopyright (c) Sebastian Kraemer, basti.kr@gmail.com and others\nSPDX-License-Identifier: BSD-2-Clause\n\n.. |Build Status| image:: https://travis-ci.org/bastikr/boolean.py.svg?branch=master\n :target: https://travis-ci.org/bastikr/boolean.py\n", - "contentType": "text/prs.fallenstein.rst" - } - } - } - ], - "name": "boolean.py", - "purl": "pkg:pypi/boolean.py@4.0", - "type": "library", - "version": "4.0" - }, - { - "bom-ref": "cryptography==43.0.1", - "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", - "evidence": { - "licenses": [ - { - "license": { - "name": "License :: OSI Approved :: Apache Software License" - } - }, - { - "license": { - "name": "License :: OSI Approved :: BSD License" - } - }, - { - "license": { - "name": "declared license file: LICENSE", - "text": { - "content": "This software is made available under the terms of *either* of the licenses\nfound in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made\nunder the terms of *both* these licenses.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.APACHE", - "text": { - "content": "\n Apache License\n Version 2.0, January 2004\n https://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.BSD", - "text": { - "content": "Copyright (c) Individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of PyCA Cryptography nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" - } - } - } - ] - }, - "externalReferences": [ - { - "comment": "from packaging metadata Project-URL: documentation", - "type": "documentation", - "url": "https://cryptography.io/" - }, - { - "comment": "from packaging metadata Project-URL: issues", - "type": "issue-tracker", - "url": "https://github.com/pyca/cryptography/issues" - }, - { - "comment": "from packaging metadata Project-URL: source", - "type": "other", - "url": "https://github.com/pyca/cryptography/" - }, - { - "comment": "from packaging metadata Project-URL: changelog", - "type": "release-notes", - "url": "https://cryptography.io/en/latest/changelog/" - }, - { - "comment": "from packaging metadata Project-URL: homepage", - "type": "website", - "url": "https://github.com/pyca/cryptography" - } - ], - "licenses": [ - { - "expression": "Apache-2.0 OR BSD-3-Clause" - } - ], - "name": "cryptography", - "purl": "pkg:pypi/cryptography@43.0.1", - "type": "library", - "version": "43.0.1" - }, - { - "bom-ref": "jsonpointer==2.4", - "description": "Identify specific nodes in a JSON document (RFC 6901) ", - "externalReferences": [ - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://github.com/stefankoegl/python-json-pointer" - } - ], - "licenses": [ - { - "license": { - "name": "License :: OSI Approved :: BSD License" - } - }, - { - "license": { - "name": "declared license file: AUTHORS", - "text": { - "content": "Stefan K\u00f6gl \nAlexander Shorin \nChristopher J. White \n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.txt", - "text": { - "content": "Copyright (c) 2011 Stefan K\u00f6gl \nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions\nare met:\n\n1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n3. The name of the author may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR\nIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\nOF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\nIN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\nNOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\nTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license of 'jsonpointer'", - "text": { - "content": "Modified BSD License", - "contentType": "text/plain" - } - } - } - ], - "name": "jsonpointer", - "purl": "pkg:pypi/jsonpointer@2.4", - "type": "library", - "version": "2.4" - }, - { - "bom-ref": "license-expression==30.3.0", - "description": "license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic.", - "externalReferences": [ - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://github.com/nexB/license-expression" - } - ], - "licenses": [ - { - "license": { - "id": "Apache-2.0" - } - }, - { - "license": { - "name": "declared license file: AUTHORS.rst", - "text": { - "content": "The following organizations or individuals have contributed to this code:\n\n- Ayan Sinha Mahapatra @AyanSinhaMahapatra\n- Carmen Bianca Bakker @carmenbianca\n- Chin-Yeung Li @chinyeungli\n- Dennis Clark @DennisClark\n- John Horan @johnmhoran\n- Jono Yang @JonoYang\n- Max Mehl @mxmehl\n- nexB Inc. @nexB\n- Peter Kolbus @pkolbus\n- Philippe Ombredanne @pombredanne\n- Sebastian Schuberth @sschuberth\n- Steven Esser @majurg\n- Thomas Druez @tdruez\n", - "contentType": "text/prs.fallenstein.rst" - } - } - }, - { - "license": { - "name": "declared license file: CHANGELOG.rst", - "text": { - "content": "Changelog\n=========\n\nv30.3.0 - 2024-03-18\n--------------------\n\nThis is a minor release without API changes:\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.23\n- Drop support for Python 3.7\n\nv30.2.0 - 2023-11-29\n--------------------\n\nThis is a minor release without API changes:\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.22\n- Add Python 3.12 support in CI\n\n\nv30.1.1 - 2023-01-16\n----------------------\n\nThis is a minor dot release without API changes\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.20\n\n\nv30.1.0 - 2023-01-16\n----------------------\n\nThis is a minor release without API changes\n\n- Use latest skeleton (and updated configure script)\n- Update license list to latest ScanCode and SPDX 3.19\n- Use correct syntax for python_require\n- Drop using Travis and Appveyor\n- Drop support for Python 3.7 and add Python 3.11 in CI\n\n\nv30.0.0 - 2022-05-10\n----------------------\n\nThis is a minor release with API changes\n\n- Use latest skeleton (and updated configure script)\n- Drop using calver\n- Improve error checking when combining licenses\n\n\n\nv21.6.14 - 2021-06-14\n----------------------\n\nAdded\n~~~~~\n\n- Switch to calver for package versioning to better convey the currency of the\n bundled data.\n\n- Include https://scancode-licensedb.aboutcode.org/ licenses list with\n ScanCode (v21.6.7) and SPDX licenses (v3.13) keys. Add new functions to\n create Licensing using these licenses as LicenseSymbol.\n\n- Add new License.dedup() method to deduplicate and simplify license expressions\n without over simplifying.\n\n- Add new License.validate() method to return a new ExpressionInfo object with\n details on a license expression validation.\n\n\nChanged\n~~~~~~~\n- Drop support for Python 2.\n- Adopt the project skeleton from https://github.com/nexB/skeleton\n and its new configure script\n\n\nv1.2 - 2019-11-14\n------------------\nAdded\n~~~~~\n- Add ability to render WITH expression wrapped in parenthesis\n\nFixes\n~~~~~\n- Fix anomalous backslashes in strings\n\nChanged\n~~~~~~~\n- Update the thirdparty directory structure.\n\n\nv1.0 - 2019-10-16\n------------------\nAdded\n~~~~~\n- New version of boolean.py library\n- Add ability to leave license expressions unsorted when simplifying\n\nChanged\n~~~~~~~\n- updated travis CI settings\n\n\nv0.999 - 2019-04-29\n--------------------\n- Initial release\n- license-expression is small utility library to parse, compare and\n simplify and normalize license expressions.\n\n", - "contentType": "text/prs.fallenstein.rst" - } - } - }, - { - "license": { - "name": "declared license file: CODE_OF_CONDUCT.rst", - "text": { - "content": "Contributor Covenant Code of Conduct\n====================================\n\nOur Pledge\n----------\n\nIn the interest of fostering an open and welcoming environment, we as\ncontributors and maintainers pledge to making participation in our\nproject and our community a harassment-free experience for everyone,\nregardless of age, body size, disability, ethnicity, gender identity and\nexpression, level of experience, education, socio-economic status,\nnationality, personal appearance, race, religion, or sexual identity and\norientation.\n\nOur Standards\n-------------\n\nExamples of behavior that contributes to creating a positive environment\ninclude:\n\n- Using welcoming and inclusive language\n- Being respectful of differing viewpoints and experiences\n- Gracefully accepting constructive criticism\n- Focusing on what is best for the community\n- Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n- The use of sexualized language or imagery and unwelcome sexual\n attention or advances\n- Trolling, insulting/derogatory comments, and personal or political\n attacks\n- Public or private harassment\n- Publishing others\u2019 private information, such as a physical or\n electronic address, without explicit permission\n- Other conduct which could reasonably be considered inappropriate in a\n professional setting\n\nOur Responsibilities\n--------------------\n\nProject maintainers are responsible for clarifying the standards of\nacceptable behavior and are expected to take appropriate and fair\ncorrective action in response to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit,\nor reject comments, commits, code, wiki edits, issues, and other\ncontributions that are not aligned to this Code of Conduct, or to ban\ntemporarily or permanently any contributor for other behaviors that they\ndeem inappropriate, threatening, offensive, or harmful.\n\nScope\n-----\n\nThis Code of Conduct applies both within project spaces and in public\nspaces when an individual is representing the project or its community.\nExamples of representing a project or community include using an\nofficial project e-mail address, posting via an official social media\naccount, or acting as an appointed representative at an online or\noffline event. Representation of a project may be further defined and\nclarified by project maintainers.\n\nEnforcement\n-----------\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may\nbe reported by contacting the project team at pombredanne@gmail.com\nor on the Gitter chat channel at https://gitter.im/aboutcode-org/discuss .\nAll complaints will be reviewed and investigated and will result in a\nresponse that is deemed necessary and appropriate to the circumstances.\nThe project team is obligated to maintain confidentiality with regard to\nthe reporter of an incident. Further details of specific enforcement\npolicies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in\ngood faith may face temporary or permanent repercussions as determined\nby other members of the project\u2019s leadership.\n\nAttribution\n-----------\n\nThis Code of Conduct is adapted from the `Contributor Covenant`_ ,\nversion 1.4, available at\nhttps://www.contributor-covenant.org/version/1/4/code-of-conduct.html\n\n.. _Contributor Covenant: https://www.contributor-covenant.org\n", - "contentType": "text/prs.fallenstein.rst" - } - } - }, - { - "license": { - "name": "declared license file: NOTICE", - "text": { - "content": "#\n# Copyright (c) nexB Inc. and others.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Visit https://aboutcode.org and https://github.com/nexB/license-expression\n# for support and download.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: apache-2.0.LICENSE", - "text": { - "content": " Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", - "contentType": "text/plain" - } - } - } - ], - "name": "license-expression", - "purl": "pkg:pypi/license-expression@30.3.0", - "type": "library", - "version": "30.3.0" - }, - { - "bom-ref": "lxml==5.3.0", - "description": "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API.", - "externalReferences": [ - { - "comment": "from packaging metadata Project-URL: Source", - "type": "other", - "url": "https://github.com/lxml/lxml" - }, - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://lxml.de/" - } - ], - "licenses": [ - { - "license": { - "id": "BSD-3-Clause" - } - }, - { - "license": { - "name": "License :: OSI Approved :: BSD License" - } - }, - { - "license": { - "name": "declared license file: LICENSE.txt", - "text": { - "content": "Copyright (c) 2004 Infrae. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n 1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n \n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in\n the documentation and/or other materials provided with the\n distribution.\n\n 3. Neither the name of Infrae nor the names of its contributors may\n be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INFRAE OR\nCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\nEXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\nPROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSES.txt", - "text": { - "content": "lxml is copyright Infrae and distributed under the BSD license (see\ndoc/licenses/BSD.txt), with the following exceptions:\n\nSome code, such a selftest.py, selftest2.py and\nsrc/lxml/_elementpath.py are derived from ElementTree and\ncElementTree. See doc/licenses/elementtree.txt for the license text.\n\nlxml.cssselect and lxml.html are copyright Ian Bicking and distributed\nunder the BSD license (see doc/licenses/BSD.txt).\n\ntest.py, the test-runner script, is GPL and copyright Shuttleworth\nFoundation. See doc/licenses/GPL.txt. It is believed the unchanged\ninclusion of test.py to run the unit test suite falls under the\n\"aggregation\" clause of the GPL and thus does not affect the license\nof the rest of the package.\n\nThe isoschematron implementation uses several XSL and RelaxNG resources:\n * The (XML syntax) RelaxNG schema for schematron, copyright International\n Organization for Standardization (see \n src/lxml/isoschematron/resources/rng/iso-schematron.rng for the license\n text)\n * The skeleton iso-schematron-xlt1 pure-xslt schematron implementation\n xsl stylesheets, copyright Rick Jelliffe and Academia Sinica Computing\n Center, Taiwan (see the xsl files here for the license text: \n src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/)\n * The xsd/rng schema schematron extraction xsl transformations are unlicensed\n and copyright the respective authors as noted (see \n src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl and\n src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl)\n", - "contentType": "text/plain" - } - } - } - ], - "name": "lxml", - "purl": "pkg:pypi/lxml@5.3.0", - "type": "library", - "version": "5.3.0" - }, - { - "bom-ref": "regression-issue868==0.1", - "externalReferences": [ - { - "comment": "PackageSource: Local", - "type": "distribution", - "url": "file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868" - } - ], - "licenses": [ - { - "license": { - "name": "declared license file: my_licenses/richtext.rtf", - "text": { - "content": "e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA=", - "contentType": "application/rtf", - "encoding": "base64" - } - } - }, - { - "license": { - "name": "declared license file: my_licenses/utf-16be_withBOM.txt", - "text": { - "content": "this file is\r\nutf-16be encoded\r\nwith BOM\r\n\ud83d\ude03\r\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: my_licenses/utf-16le_withBOM.txt", - "text": { - "content": "this file is\nutf-16le encoded\nwith BOM\n\ud83d\ude03\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: my_licenses/utf-8_noBOM.txt", - "text": { - "content": "this file is\nutf-8 encoded\nwithout BOM\n\ud83d\ude03\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: my_licenses/utf-8_withBOM.txt", - "text": { - "content": "\ufeffthis file is\nutf-8 encoded\nwith BOM\n\ud83d\ude03\n", - "contentType": "text/plain" - } - } - } - ], - "name": "regression-issue868", - "type": "library", - "version": "0.1" - } - ], - "dependencies": [ - { - "ref": "attrs==23.2.0" - }, - { - "ref": "boolean.py==4.0" - }, - { - "ref": "cryptography==43.0.1" - }, - { - "ref": "jsonpointer==2.4" - }, - { - "dependsOn": [ - "boolean.py==4.0" - ], - "ref": "license-expression==30.3.0" - }, - { - "ref": "lxml==5.3.0" - }, - { - "ref": "regression-issue868==0.1" - }, - { - "dependsOn": [ - "attrs==23.2.0", - "boolean.py==4.0", - "cryptography==43.0.1", - "jsonpointer==2.4", - "license-expression==30.3.0", - "lxml==5.3.0", - "regression-issue868==0.1" - ], - "ref": "root-component" - } - ], - "metadata": { - "component": { - "bom-ref": "root-component", - "description": "depenndencies with license declaration accoring to PEP 639", - "evidence": { - "licenses": [ - { - "license": { - "name": "declared license file: AUTHORS.example.bin", - "text": { - "content": "dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUuYmluIGNvbnRlbnQK", - "contentType": "application/octet-stream", - "encoding": "base64" - } - } - }, - { - "license": { - "name": "declared license file: LICENCE.dummy.bin", - "text": { - "content": "dGhpcyBpcyBMSUNFTkNFLmR1bW15LmJpbiBjb250ZW50Cg==", - "contentType": "application/octet-stream", - "encoding": "base64" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.txt.bin", - "text": { - "content": "dGhpcyBpcyBMSUNFTlNFLnR4dC5iaW4gY29udGVudAo=", - "contentType": "application/octet-stream", - "encoding": "base64" - } - } - }, - { - "license": { - "name": "declared license file: NOTICE.bin", - "text": { - "content": "dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UuYmluIGZpbGUuCg==", - "contentType": "application/octet-stream", - "encoding": "base64" - } - } - }, - { - "license": { - "name": "declared license file: licenses_a/LICENSE.CC0.bin", - "text": { - "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwLmJpbiBjb250ZW50Cg==", - "contentType": "application/octet-stream", - "encoding": "base64" - } - } - }, - { - "license": { - "name": "declared license file: licenses_a/LICENSE.MIT.bin", - "text": { - "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlULmJpbiBjb250ZW50Cg==", - "contentType": "application/octet-stream", - "encoding": "base64" - } - } - }, - { - "license": { - "name": "declared license file: licenses_b/LICENSE.md.bin", - "text": { - "content": "dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQuYmluIGNvbnRlbnQK", - "contentType": "application/octet-stream", - "encoding": "base64" - } - } - }, - { - "license": { - "name": "declared license file: licenses_b/legal/NOTICE.txt.bin", - "text": { - "content": "dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQuYmluIGZpbGUuIGl0IGlzIGV4cGVjdGVkIHRvIGJlIGRldGVjdGVkLgo=", - "contentType": "application/octet-stream", - "encoding": "base64" - } - } - } - ] - }, - "licenses": [ - { - "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" - } - ], - "name": "with-extras", - "type": "application", - "version": "0.1.0" - }, - "properties": [ - { - "name": "cdx:reproducible", - "value": "true" - } - ], - "tools": [ - { - "externalReferences": [ - { - "type": "build-system", - "url": "https://github.com/CycloneDX/cyclonedx-python/actions" - }, - { - "type": "distribution", - "url": "https://pypi.org/project/cyclonedx-bom/" - }, - { - "type": "documentation", - "url": "https://cyclonedx-bom-tool.readthedocs.io/" - }, - { - "type": "issue-tracker", - "url": "https://github.com/CycloneDX/cyclonedx-python/issues" - }, - { - "type": "license", - "url": "https://github.com/CycloneDX/cyclonedx-python/blob/main/LICENSE" - }, - { - "type": "release-notes", - "url": "https://github.com/CycloneDX/cyclonedx-python/blob/main/CHANGELOG.md" - }, - { - "type": "vcs", - "url": "https://github.com/CycloneDX/cyclonedx-python/" - }, - { - "type": "website", - "url": "https://github.com/CycloneDX/cyclonedx-python/#readme" - } - ], - "name": "cyclonedx-py", - "vendor": "CycloneDX", - "version": "thisVersion-testing" - }, - { - "externalReferences": [ ], - "name": "cyclonedx-python-lib", - "vendor": "CycloneDX", - "version": "libVersion-testing" - } - ] - }, - "version": 1, - "$schema": "http://cyclonedx.org/schema/bom-1.4.schema.json", - "bomFormat": "CycloneDX", - "specVersion": "1.4" -} \ No newline at end of file diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.xml.bin deleted file mode 100644 index b4f4b5a31..000000000 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.xml.bin +++ /dev/null @@ -1,1419 +0,0 @@ - - - - - - CycloneDX - cyclonedx-py - thisVersion-testing - - - https://github.com/CycloneDX/cyclonedx-python/actions - - - https://pypi.org/project/cyclonedx-bom/ - - - https://cyclonedx-bom-tool.readthedocs.io/ - - - https://github.com/CycloneDX/cyclonedx-python/issues - - - https://github.com/CycloneDX/cyclonedx-python/blob/main/LICENSE - - - https://github.com/CycloneDX/cyclonedx-python/blob/main/CHANGELOG.md - - - https://github.com/CycloneDX/cyclonedx-python/ - - - https://github.com/CycloneDX/cyclonedx-python/#readme - - - - - CycloneDX - cyclonedx-python-lib - libVersion-testing - - - - - with-extras - 0.1.0 - depenndencies with license declaration accoring to PEP 639 - - MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) - - - - - declared license file: AUTHORS.example.bin - dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUuYmluIGNvbnRlbnQK - - - declared license file: LICENCE.dummy.bin - dGhpcyBpcyBMSUNFTkNFLmR1bW15LmJpbiBjb250ZW50Cg== - - - declared license file: LICENSE.txt.bin - dGhpcyBpcyBMSUNFTlNFLnR4dC5iaW4gY29udGVudAo= - - - declared license file: NOTICE.bin - dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UuYmluIGZpbGUuCg== - - - declared license file: licenses_a/LICENSE.CC0.bin - dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwLmJpbiBjb250ZW50Cg== - - - declared license file: licenses_a/LICENSE.MIT.bin - dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlULmJpbiBjb250ZW50Cg== - - - declared license file: licenses_b/LICENSE.md.bin - dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQuYmluIGNvbnRlbnQK - - - declared license file: licenses_b/legal/NOTICE.txt.bin - dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQuYmluIGZpbGUuIGl0IGlzIGV4cGVjdGVkIHRvIGJlIGRldGVjdGVkLgo= - - - - - - true - - - - - attrs - 23.2.0 - Classes Without Boilerplate - - - MIT - - - declared license file: LICENSE - The MIT License (MIT) - -Copyright (c) 2015 Hynek Schlawack and the attrs contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - - - pkg:pypi/attrs@23.2.0 - - - https://www.attrs.org/ - from packaging metadata Project-URL: Documentation - - - https://github.com/sponsors/hynek - from packaging metadata Project-URL: Funding - - - https://tidelift.com/subscription/pkg/pypi-attrs?utm_source=pypi-attrs&utm_medium=pypi - from packaging metadata Project-URL: Tidelift - - - https://www.attrs.org/en/stable/changelog.html - from packaging metadata Project-URL: Changelog - - - https://github.com/python-attrs/attrs - from packaging metadata Project-URL: GitHub - - - - - boolean.py - 4.0 - Define boolean algebras, create and parse boolean expressions and create custom boolean DSL. - - - BSD-2-Clause - - - declared license file: CHANGELOG.rst - -Changelog -========= - - -next ----- - - -4.0 (2022-05-05) ----------------- - -* API changes - - * Drop support for Python 2. - * Test on Python 3.10 - * Make Expression.sort_order an instance attributes and not a class attribute - -* Misc. - - * Correct licensing documentation - * Improve docstringf and apply minor refactorings - * Adopt black code style and isort for imports - * Drop Travis and use GitHub actions for CI - - -3.8 (2020-06-10) ----------------- - -* API changes - - * Add support for evaluation of boolean expression. - Thank you to Lars van Gemerden @gemerden - -* Bug fixes - - * Fix parsing of tokens that have a number as the first character. - Thank you to Jeff Cohen @ jcohen28 - * Restore proper Python 2 compatibility. - Thank you to Benjy Weinberger @benjyw - -* Improve documentation - - * Add pointers to Linux distro packages. - Thank you to Max Mehl @mxmehl and Carmen Bianca Bakker @carmenbianca - * Fix typo. - Thank you to Gabriel Niebler @der-gabe - - -3.7 (2019-10-04) ----------------- - -* API changes - - * Add new sort argument to simplify() to optionally not sort when simplifying - expressions (e.g. not applying "commutativity"). Thank you to Steven Esser - @majurg for this - * Add new argument to tokenizer to optionally accept extra characters in symbol - tokens. Thank you to @carpie for this - - -3.6 (2018-08-06) ----------------- - -* No API changes - -* Bug fixes - - * Fix De Morgan's laws effect on double negation propositions. Thank you to Douglas Cardoso for this - * Improve error checking when parsing - - -3.5 (Nov 1, 2017) ------------------ - -* No API changes - -* Bug fixes - - * Documentation updates and add testing for Python 3.6. Thank you to Alexander Lisianoi @alisianoi - * Improve testng and expression equivalence checks - * Improve subs() method to an expression - - - -3.4 (May 12, 2017) ------------------- - -* No API changes - -* Bug fixes and improvements - - * Fix various documentation typos and improve tests . Thank you to Alexander Lisianoi @alisianoi - * Fix handling for literals vs. symbols in negations Thank you to @YaronK - - -3.3 (2017-02-09) ----------------- - -* API changes - - * #40 and #50 Expression.subs() now takes 'default' thanks to @kronuz - * #45 simplify=False is now the default for parse and related functions or methods. - * #40 Use "&" and "|" as default operators - -* Bug fixes - - * #60 Fix bug for "a or b c" which is not a valid expression - * #58 Fix math formula display in docs - * Improve handling of parse errors - - -2.0.0 (2016-05-11) ------------------- - -* API changes - - * New algebra definition. Refactored class hierarchy. Improved parsing. - -* New features - - * possibility to subclass algebra definition - * new normal forms shortcuts for DNF and CNF. - - -1.1 (2016-04-06) ------------------- - -* Initial release on Pypi. - - - - declared license file: LICENSE.txt - Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation and/or -other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - - declared license file: README.rst - boolean.py -========== - -"boolean.py" is a small library implementing a boolean algebra. It -defines two base elements, TRUE and FALSE, and a Symbol class that can -take on one of these two values. Calculations are done in terms of AND, -OR and NOT - other compositions like XOR and NAND are not implemented -but can be emulated with AND or and NOT. Expressions are constructed -from parsed strings or in Python. - -It runs on Python 3.6+ -You can use older version 3.x for Python 2.7+ support. - -https://github.com/bastikr/boolean.py - -Build status: |Build Status| - - -Example -------- - -:: - - >>> import boolean - >>> algebra = boolean.BooleanAlgebra() - >>> expression1 = algebra.parse(u'apple and (oranges or banana) and not banana', simplify=False) - >>> expression1 - AND(Symbol('apple'), OR(Symbol('oranges'), Symbol('banana')), NOT(Symbol('banana'))) - - >>> expression2 = algebra.parse('(oranges | banana) and not banana & apple', simplify=True) - >>> expression2 - AND(Symbol('apple'), NOT(Symbol('banana')), Symbol('oranges')) - - >>> expression1 == expression2 - False - >>> expression1.simplify() == expression2 - True - - -Documentation -------------- - -http://readthedocs.org/docs/booleanpy/en/latest/ - - -Installation ------------- - -Installation via pip -~~~~~~~~~~~~~~~~~~~~ - -To install boolean.py, you need to have the following pieces of software -on your computer: - -- Python 3.6+ -- pip - -You then only need to run the following command: - -``pip install boolean.py`` - - -Installation via package managers -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -There are packages available for easy install on some operating systems. -You are welcome to help us package this tool for more distributions! - -- boolean.py has been packaged as Arch Linux, Fedora, openSus, - nixpkgs, Guix, DragonFly and FreeBSD - `packages <https://repology.org/project/python:boolean.py/versions>`__ . - -In particular: - -- Arch Linux (AUR): - `python-boolean.py <https://aur.archlinux.org/packages/python-boolean.py/>`__ -- Fedora: - `python-boolean.py <https://apps.fedoraproject.org/packages/python-boolean.py>`__ -- openSUSE: - `python-boolean.py <https://software.opensuse.org/package/python-boolean.py>`__ - - -Testing -------- - -Test ``boolean.py`` with your current Python environment: - -``python setup.py test`` - -Test with all of the supported Python environments using ``tox``: - -:: - - pip install -r requirements-dev.txt - tox - -If ``tox`` throws ``InterpreterNotFound``, limit it to python -interpreters that are actually installed on your machine: - -:: - - tox -e py36 - -Alternatively use pytest. - - -License -------- - -Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others -SPDX-License-Identifier: BSD-2-Clause - -.. |Build Status| image:: https://travis-ci.org/bastikr/boolean.py.svg?branch=master - :target: https://travis-ci.org/bastikr/boolean.py - - - - pkg:pypi/boolean.py@4.0 - - - https://github.com/bastikr/boolean.py - from packaging metadata: Home-page - - - - - cryptography - 43.0.1 - cryptography is a package which provides cryptographic recipes and primitives to Python developers. - - Apache-2.0 OR BSD-3-Clause - - pkg:pypi/cryptography@43.0.1 - - - https://cryptography.io/ - from packaging metadata Project-URL: documentation - - - https://github.com/pyca/cryptography/issues - from packaging metadata Project-URL: issues - - - https://github.com/pyca/cryptography/ - from packaging metadata Project-URL: source - - - https://cryptography.io/en/latest/changelog/ - from packaging metadata Project-URL: changelog - - - https://github.com/pyca/cryptography - from packaging metadata Project-URL: homepage - - - - - - License :: OSI Approved :: Apache Software License - - - License :: OSI Approved :: BSD License - - - declared license file: LICENSE - This software is made available under the terms of *either* of the licenses -found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made -under the terms of *both* these licenses. - - - - declared license file: LICENSE.APACHE - - Apache License - Version 2.0, January 2004 - https://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - https://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - - declared license file: LICENSE.BSD - Copyright (c) Individual contributors. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. Neither the name of PyCA Cryptography nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - - - - - jsonpointer - 2.4 - Identify specific nodes in a JSON document (RFC 6901) - - - License :: OSI Approved :: BSD License - - - declared license file: AUTHORS - Stefan Kögl <stefan@skoegl.net> -Alexander Shorin <kxepal@gmail.com> -Christopher J. White <chris@grierwhite.com> - - - - declared license file: LICENSE.txt - Copyright (c) 2011 Stefan Kögl <stefan@skoegl.net> -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - - - declared license of 'jsonpointer' - Modified BSD License - - - pkg:pypi/jsonpointer@2.4 - - - https://github.com/stefankoegl/python-json-pointer - from packaging metadata: Home-page - - - - - license-expression - 30.3.0 - license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic. - - - Apache-2.0 - - - declared license file: AUTHORS.rst - The following organizations or individuals have contributed to this code: - -- Ayan Sinha Mahapatra @AyanSinhaMahapatra -- Carmen Bianca Bakker @carmenbianca -- Chin-Yeung Li @chinyeungli -- Dennis Clark @DennisClark -- John Horan @johnmhoran -- Jono Yang @JonoYang -- Max Mehl @mxmehl -- nexB Inc. @nexB -- Peter Kolbus @pkolbus -- Philippe Ombredanne @pombredanne -- Sebastian Schuberth @sschuberth -- Steven Esser @majurg -- Thomas Druez @tdruez - - - - declared license file: CHANGELOG.rst - Changelog -========= - -v30.3.0 - 2024-03-18 --------------------- - -This is a minor release without API changes: - -- Use latest skeleton -- Update license list to latest ScanCode and SPDX 3.23 -- Drop support for Python 3.7 - -v30.2.0 - 2023-11-29 --------------------- - -This is a minor release without API changes: - -- Use latest skeleton -- Update license list to latest ScanCode and SPDX 3.22 -- Add Python 3.12 support in CI - - -v30.1.1 - 2023-01-16 ----------------------- - -This is a minor dot release without API changes - -- Use latest skeleton -- Update license list to latest ScanCode and SPDX 3.20 - - -v30.1.0 - 2023-01-16 ----------------------- - -This is a minor release without API changes - -- Use latest skeleton (and updated configure script) -- Update license list to latest ScanCode and SPDX 3.19 -- Use correct syntax for python_require -- Drop using Travis and Appveyor -- Drop support for Python 3.7 and add Python 3.11 in CI - - -v30.0.0 - 2022-05-10 ----------------------- - -This is a minor release with API changes - -- Use latest skeleton (and updated configure script) -- Drop using calver -- Improve error checking when combining licenses - - - -v21.6.14 - 2021-06-14 ----------------------- - -Added -~~~~~ - -- Switch to calver for package versioning to better convey the currency of the - bundled data. - -- Include https://scancode-licensedb.aboutcode.org/ licenses list with - ScanCode (v21.6.7) and SPDX licenses (v3.13) keys. Add new functions to - create Licensing using these licenses as LicenseSymbol. - -- Add new License.dedup() method to deduplicate and simplify license expressions - without over simplifying. - -- Add new License.validate() method to return a new ExpressionInfo object with - details on a license expression validation. - - -Changed -~~~~~~~ -- Drop support for Python 2. -- Adopt the project skeleton from https://github.com/nexB/skeleton - and its new configure script - - -v1.2 - 2019-11-14 ------------------- -Added -~~~~~ -- Add ability to render WITH expression wrapped in parenthesis - -Fixes -~~~~~ -- Fix anomalous backslashes in strings - -Changed -~~~~~~~ -- Update the thirdparty directory structure. - - -v1.0 - 2019-10-16 ------------------- -Added -~~~~~ -- New version of boolean.py library -- Add ability to leave license expressions unsorted when simplifying - -Changed -~~~~~~~ -- updated travis CI settings - - -v0.999 - 2019-04-29 --------------------- -- Initial release -- license-expression is small utility library to parse, compare and - simplify and normalize license expressions. - - - - - declared license file: CODE_OF_CONDUCT.rst - Contributor Covenant Code of Conduct -==================================== - -Our Pledge ----------- - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our -project and our community a harassment-free experience for everyone, -regardless of age, body size, disability, ethnicity, gender identity and -expression, level of experience, education, socio-economic status, -nationality, personal appearance, race, religion, or sexual identity and -orientation. - -Our Standards -------------- - -Examples of behavior that contributes to creating a positive environment -include: - -- Using welcoming and inclusive language -- Being respectful of differing viewpoints and experiences -- Gracefully accepting constructive criticism -- Focusing on what is best for the community -- Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -- The use of sexualized language or imagery and unwelcome sexual - attention or advances -- Trolling, insulting/derogatory comments, and personal or political - attacks -- Public or private harassment -- Publishing others’ private information, such as a physical or - electronic address, without explicit permission -- Other conduct which could reasonably be considered inappropriate in a - professional setting - -Our Responsibilities --------------------- - -Project maintainers are responsible for clarifying the standards of -acceptable behavior and are expected to take appropriate and fair -corrective action in response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, -or reject comments, commits, code, wiki edits, issues, and other -contributions that are not aligned to this Code of Conduct, or to ban -temporarily or permanently any contributor for other behaviors that they -deem inappropriate, threatening, offensive, or harmful. - -Scope ------ - -This Code of Conduct applies both within project spaces and in public -spaces when an individual is representing the project or its community. -Examples of representing a project or community include using an -official project e-mail address, posting via an official social media -account, or acting as an appointed representative at an online or -offline event. Representation of a project may be further defined and -clarified by project maintainers. - -Enforcement ------------ - -Instances of abusive, harassing, or otherwise unacceptable behavior may -be reported by contacting the project team at pombredanne@gmail.com -or on the Gitter chat channel at https://gitter.im/aboutcode-org/discuss . -All complaints will be reviewed and investigated and will result in a -response that is deemed necessary and appropriate to the circumstances. -The project team is obligated to maintain confidentiality with regard to -the reporter of an incident. Further details of specific enforcement -policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in -good faith may face temporary or permanent repercussions as determined -by other members of the project’s leadership. - -Attribution ------------ - -This Code of Conduct is adapted from the `Contributor Covenant`_ , -version 1.4, available at -https://www.contributor-covenant.org/version/1/4/code-of-conduct.html - -.. _Contributor Covenant: https://www.contributor-covenant.org - - - - declared license file: NOTICE - # -# Copyright (c) nexB Inc. and others. -# SPDX-License-Identifier: Apache-2.0 -# -# Visit https://aboutcode.org and https://github.com/nexB/license-expression -# for support and download. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - - - - declared license file: apache-2.0.LICENSE - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - - pkg:pypi/license-expression@30.3.0 - - - https://github.com/nexB/license-expression - from packaging metadata: Home-page - - - - - lxml - 5.3.0 - Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. - - - BSD-3-Clause - - - License :: OSI Approved :: BSD License - - - declared license file: LICENSE.txt - Copyright (c) 2004 Infrae. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - 3. Neither the name of Infrae nor the names of its contributors may - be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INFRAE OR -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - - declared license file: LICENSES.txt - lxml is copyright Infrae and distributed under the BSD license (see -doc/licenses/BSD.txt), with the following exceptions: - -Some code, such a selftest.py, selftest2.py and -src/lxml/_elementpath.py are derived from ElementTree and -cElementTree. See doc/licenses/elementtree.txt for the license text. - -lxml.cssselect and lxml.html are copyright Ian Bicking and distributed -under the BSD license (see doc/licenses/BSD.txt). - -test.py, the test-runner script, is GPL and copyright Shuttleworth -Foundation. See doc/licenses/GPL.txt. It is believed the unchanged -inclusion of test.py to run the unit test suite falls under the -"aggregation" clause of the GPL and thus does not affect the license -of the rest of the package. - -The isoschematron implementation uses several XSL and RelaxNG resources: - * The (XML syntax) RelaxNG schema for schematron, copyright International - Organization for Standardization (see - src/lxml/isoschematron/resources/rng/iso-schematron.rng for the license - text) - * The skeleton iso-schematron-xlt1 pure-xslt schematron implementation - xsl stylesheets, copyright Rick Jelliffe and Academia Sinica Computing - Center, Taiwan (see the xsl files here for the license text: - src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/) - * The xsd/rng schema schematron extraction xsl transformations are unlicensed - and copyright the respective authors as noted (see - src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl and - src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl) - - - - pkg:pypi/lxml@5.3.0 - - - https://github.com/lxml/lxml - from packaging metadata Project-URL: Source - - - https://lxml.de/ - from packaging metadata: Home-page - - - - - regression-issue868 - 0.1 - - - declared license file: my_licenses/richtext.rtf - e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA= - - - declared license file: my_licenses/utf-16be_withBOM.txt - this file is -utf-16be encoded -with BOM -😃 - - - - declared license file: my_licenses/utf-16le_withBOM.txt - this file is -utf-16le encoded -with BOM -😃 - - - - declared license file: my_licenses/utf-8_noBOM.txt - this file is -utf-8 encoded -without BOM -😃 - - - - declared license file: my_licenses/utf-8_withBOM.txt - this file is -utf-8 encoded -with BOM -😃 - - - - - - file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 - PackageSource: Local - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.json.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.json.bin deleted file mode 100644 index 72ce29c9a..000000000 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.json.bin +++ /dev/null @@ -1,619 +0,0 @@ -{ - "components": [ - { - "bom-ref": "attrs==23.2.0", - "description": "Classes Without Boilerplate", - "externalReferences": [ - { - "comment": "from packaging metadata Project-URL: Documentation", - "type": "documentation", - "url": "https://www.attrs.org/" - }, - { - "comment": "from packaging metadata Project-URL: Funding", - "type": "other", - "url": "https://github.com/sponsors/hynek" - }, - { - "comment": "from packaging metadata Project-URL: Tidelift", - "type": "other", - "url": "https://tidelift.com/subscription/pkg/pypi-attrs?utm_source=pypi-attrs&utm_medium=pypi" - }, - { - "comment": "from packaging metadata Project-URL: Changelog", - "type": "release-notes", - "url": "https://www.attrs.org/en/stable/changelog.html" - }, - { - "comment": "from packaging metadata Project-URL: GitHub", - "type": "vcs", - "url": "https://github.com/python-attrs/attrs" - } - ], - "licenses": [ - { - "license": { - "id": "MIT" - } - }, - { - "license": { - "name": "declared license file: LICENSE", - "text": { - "content": "The MIT License (MIT)\n\nCopyright (c) 2015 Hynek Schlawack and the attrs contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n", - "contentType": "text/plain" - } - } - } - ], - "name": "attrs", - "purl": "pkg:pypi/attrs@23.2.0", - "type": "library", - "version": "23.2.0" - }, - { - "bom-ref": "boolean.py==4.0", - "description": "Define boolean algebras, create and parse boolean expressions and create custom boolean DSL.", - "externalReferences": [ - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://github.com/bastikr/boolean.py" - } - ], - "licenses": [ - { - "license": { - "id": "BSD-2-Clause" - } - }, - { - "license": { - "name": "declared license file: CHANGELOG.rst", - "text": { - "content": "\nChangelog\n=========\n\n\nnext\n----\n\n\n4.0 (2022-05-05)\n----------------\n\n* API changes\n\n * Drop support for Python 2.\n * Test on Python 3.10\n * Make Expression.sort_order an instance attributes and not a class attribute\n\n* Misc.\n\n * Correct licensing documentation\n * Improve docstringf and apply minor refactorings\n * Adopt black code style and isort for imports\n * Drop Travis and use GitHub actions for CI\n\n\n3.8 (2020-06-10)\n----------------\n\n* API changes\n\n * Add support for evaluation of boolean expression.\n Thank you to Lars van Gemerden @gemerden\n\n* Bug fixes\n\n * Fix parsing of tokens that have a number as the first character. \n Thank you to Jeff Cohen @ jcohen28\n * Restore proper Python 2 compatibility. \n Thank you to Benjy Weinberger @benjyw\n\n* Improve documentation\n\n * Add pointers to Linux distro packages.\n Thank you to Max Mehl @mxmehl and Carmen Bianca Bakker @carmenbianca\n * Fix typo.\n Thank you to Gabriel Niebler @der-gabe\n\n\n3.7 (2019-10-04)\n----------------\n\n* API changes\n\n * Add new sort argument to simplify() to optionally not sort when simplifying\n expressions (e.g. not applying \"commutativity\"). Thank you to Steven Esser\n @majurg for this\n * Add new argument to tokenizer to optionally accept extra characters in symbol\n tokens. Thank you to @carpie for this\n\n\n3.6 (2018-08-06)\n----------------\n\n* No API changes\n\n* Bug fixes\n\n * Fix De Morgan's laws effect on double negation propositions. Thank you to Douglas Cardoso for this\n * Improve error checking when parsing\n\n\n3.5 (Nov 1, 2017)\n-----------------\n\n* No API changes\n\n* Bug fixes\n\n * Documentation updates and add testing for Python 3.6. Thank you to Alexander Lisianoi @alisianoi\n * Improve testng and expression equivalence checks\n * Improve subs() method to an expression \n\n \n\n3.4 (May 12, 2017)\n------------------\n\n* No API changes\n\n* Bug fixes and improvements\n\n * Fix various documentation typos and improve tests . Thank you to Alexander Lisianoi @alisianoi\n * Fix handling for literals vs. symbols in negations Thank you to @YaronK\n\n\n3.3 (2017-02-09)\n----------------\n\n* API changes\n\n * #40 and #50 Expression.subs() now takes 'default' thanks to @kronuz\n * #45 simplify=False is now the default for parse and related functions or methods.\n * #40 Use \"&\" and \"|\" as default operators\n\n* Bug fixes\n\n * #60 Fix bug for \"a or b c\" which is not a valid expression\n * #58 Fix math formula display in docs\n * Improve handling of parse errors\n\n\n2.0.0 (2016-05-11)\n------------------\n\n* API changes\n\n * New algebra definition. Refactored class hierarchy. Improved parsing.\n\n* New features\n\n * possibility to subclass algebra definition\n * new normal forms shortcuts for DNF and CNF.\n\n\n1.1 (2016-04-06)\n------------------\n\n* Initial release on Pypi.\n", - "contentType": "text/prs.fallenstein.rst" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.txt", - "text": { - "content": "Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice, this\nlist of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice,\nthis list of conditions and the following disclaimer in the documentation and/or\nother materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: README.rst", - "text": { - "content": "boolean.py\n==========\n\n\"boolean.py\" is a small library implementing a boolean algebra. It\ndefines two base elements, TRUE and FALSE, and a Symbol class that can\ntake on one of these two values. Calculations are done in terms of AND,\nOR and NOT - other compositions like XOR and NAND are not implemented\nbut can be emulated with AND or and NOT. Expressions are constructed\nfrom parsed strings or in Python.\n\nIt runs on Python 3.6+\nYou can use older version 3.x for Python 2.7+ support.\n\nhttps://github.com/bastikr/boolean.py\n\nBuild status: |Build Status|\n\n\nExample\n-------\n\n::\n\n >>> import boolean\n >>> algebra = boolean.BooleanAlgebra()\n >>> expression1 = algebra.parse(u'apple and (oranges or banana) and not banana', simplify=False)\n >>> expression1\n AND(Symbol('apple'), OR(Symbol('oranges'), Symbol('banana')), NOT(Symbol('banana')))\n\n >>> expression2 = algebra.parse('(oranges | banana) and not banana & apple', simplify=True)\n >>> expression2\n AND(Symbol('apple'), NOT(Symbol('banana')), Symbol('oranges'))\n\n >>> expression1 == expression2\n False\n >>> expression1.simplify() == expression2\n True\n\n\nDocumentation\n-------------\n\nhttp://readthedocs.org/docs/booleanpy/en/latest/\n\n\nInstallation\n------------\n\nInstallation via pip\n~~~~~~~~~~~~~~~~~~~~\n\nTo install boolean.py, you need to have the following pieces of software\non your computer:\n\n- Python 3.6+\n- pip\n\nYou then only need to run the following command:\n\n``pip install boolean.py``\n\n\nInstallation via package managers\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThere are packages available for easy install on some operating systems.\nYou are welcome to help us package this tool for more distributions!\n\n- boolean.py has been packaged as Arch Linux, Fedora, openSus,\n nixpkgs, Guix, DragonFly and FreeBSD \n `packages `__ .\n\nIn particular:\n\n- Arch Linux (AUR):\n `python-boolean.py `__\n- Fedora:\n `python-boolean.py `__\n- openSUSE:\n `python-boolean.py `__\n\n\nTesting\n-------\n\nTest ``boolean.py`` with your current Python environment:\n\n``python setup.py test``\n\nTest with all of the supported Python environments using ``tox``:\n\n::\n\n pip install -r requirements-dev.txt\n tox\n\nIf ``tox`` throws ``InterpreterNotFound``, limit it to python\ninterpreters that are actually installed on your machine:\n\n::\n\n tox -e py36\n\nAlternatively use pytest.\n\n\nLicense\n-------\n\nCopyright (c) Sebastian Kraemer, basti.kr@gmail.com and others\nSPDX-License-Identifier: BSD-2-Clause\n\n.. |Build Status| image:: https://travis-ci.org/bastikr/boolean.py.svg?branch=master\n :target: https://travis-ci.org/bastikr/boolean.py\n", - "contentType": "text/prs.fallenstein.rst" - } - } - } - ], - "name": "boolean.py", - "purl": "pkg:pypi/boolean.py@4.0", - "type": "library", - "version": "4.0" - }, - { - "bom-ref": "cryptography==43.0.1", - "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", - "evidence": { - "licenses": [ - { - "license": { - "name": "License :: OSI Approved :: Apache Software License" - } - }, - { - "license": { - "name": "License :: OSI Approved :: BSD License" - } - }, - { - "license": { - "name": "declared license file: LICENSE", - "text": { - "content": "This software is made available under the terms of *either* of the licenses\nfound in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made\nunder the terms of *both* these licenses.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.APACHE", - "text": { - "content": "\n Apache License\n Version 2.0, January 2004\n https://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.BSD", - "text": { - "content": "Copyright (c) Individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of PyCA Cryptography nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" - } - } - } - ] - }, - "externalReferences": [ - { - "comment": "from packaging metadata Project-URL: documentation", - "type": "documentation", - "url": "https://cryptography.io/" - }, - { - "comment": "from packaging metadata Project-URL: issues", - "type": "issue-tracker", - "url": "https://github.com/pyca/cryptography/issues" - }, - { - "comment": "from packaging metadata Project-URL: source", - "type": "other", - "url": "https://github.com/pyca/cryptography/" - }, - { - "comment": "from packaging metadata Project-URL: changelog", - "type": "release-notes", - "url": "https://cryptography.io/en/latest/changelog/" - }, - { - "comment": "from packaging metadata Project-URL: homepage", - "type": "website", - "url": "https://github.com/pyca/cryptography" - } - ], - "licenses": [ - { - "expression": "Apache-2.0 OR BSD-3-Clause" - } - ], - "name": "cryptography", - "purl": "pkg:pypi/cryptography@43.0.1", - "type": "library", - "version": "43.0.1" - }, - { - "bom-ref": "jsonpointer==2.4", - "description": "Identify specific nodes in a JSON document (RFC 6901) ", - "externalReferences": [ - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://github.com/stefankoegl/python-json-pointer" - } - ], - "licenses": [ - { - "license": { - "name": "License :: OSI Approved :: BSD License" - } - }, - { - "license": { - "name": "declared license file: AUTHORS", - "text": { - "content": "Stefan K\u00f6gl \nAlexander Shorin \nChristopher J. White \n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.txt", - "text": { - "content": "Copyright (c) 2011 Stefan K\u00f6gl \nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions\nare met:\n\n1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n3. The name of the author may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR\nIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\nOF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\nIN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\nNOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\nTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license of 'jsonpointer'", - "text": { - "content": "Modified BSD License", - "contentType": "text/plain" - } - } - } - ], - "name": "jsonpointer", - "purl": "pkg:pypi/jsonpointer@2.4", - "type": "library", - "version": "2.4" - }, - { - "bom-ref": "license-expression==30.3.0", - "description": "license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic.", - "externalReferences": [ - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://github.com/nexB/license-expression" - } - ], - "licenses": [ - { - "license": { - "id": "Apache-2.0" - } - }, - { - "license": { - "name": "declared license file: AUTHORS.rst", - "text": { - "content": "The following organizations or individuals have contributed to this code:\n\n- Ayan Sinha Mahapatra @AyanSinhaMahapatra\n- Carmen Bianca Bakker @carmenbianca\n- Chin-Yeung Li @chinyeungli\n- Dennis Clark @DennisClark\n- John Horan @johnmhoran\n- Jono Yang @JonoYang\n- Max Mehl @mxmehl\n- nexB Inc. @nexB\n- Peter Kolbus @pkolbus\n- Philippe Ombredanne @pombredanne\n- Sebastian Schuberth @sschuberth\n- Steven Esser @majurg\n- Thomas Druez @tdruez\n", - "contentType": "text/prs.fallenstein.rst" - } - } - }, - { - "license": { - "name": "declared license file: CHANGELOG.rst", - "text": { - "content": "Changelog\n=========\n\nv30.3.0 - 2024-03-18\n--------------------\n\nThis is a minor release without API changes:\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.23\n- Drop support for Python 3.7\n\nv30.2.0 - 2023-11-29\n--------------------\n\nThis is a minor release without API changes:\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.22\n- Add Python 3.12 support in CI\n\n\nv30.1.1 - 2023-01-16\n----------------------\n\nThis is a minor dot release without API changes\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.20\n\n\nv30.1.0 - 2023-01-16\n----------------------\n\nThis is a minor release without API changes\n\n- Use latest skeleton (and updated configure script)\n- Update license list to latest ScanCode and SPDX 3.19\n- Use correct syntax for python_require\n- Drop using Travis and Appveyor\n- Drop support for Python 3.7 and add Python 3.11 in CI\n\n\nv30.0.0 - 2022-05-10\n----------------------\n\nThis is a minor release with API changes\n\n- Use latest skeleton (and updated configure script)\n- Drop using calver\n- Improve error checking when combining licenses\n\n\n\nv21.6.14 - 2021-06-14\n----------------------\n\nAdded\n~~~~~\n\n- Switch to calver for package versioning to better convey the currency of the\n bundled data.\n\n- Include https://scancode-licensedb.aboutcode.org/ licenses list with\n ScanCode (v21.6.7) and SPDX licenses (v3.13) keys. Add new functions to\n create Licensing using these licenses as LicenseSymbol.\n\n- Add new License.dedup() method to deduplicate and simplify license expressions\n without over simplifying.\n\n- Add new License.validate() method to return a new ExpressionInfo object with\n details on a license expression validation.\n\n\nChanged\n~~~~~~~\n- Drop support for Python 2.\n- Adopt the project skeleton from https://github.com/nexB/skeleton\n and its new configure script\n\n\nv1.2 - 2019-11-14\n------------------\nAdded\n~~~~~\n- Add ability to render WITH expression wrapped in parenthesis\n\nFixes\n~~~~~\n- Fix anomalous backslashes in strings\n\nChanged\n~~~~~~~\n- Update the thirdparty directory structure.\n\n\nv1.0 - 2019-10-16\n------------------\nAdded\n~~~~~\n- New version of boolean.py library\n- Add ability to leave license expressions unsorted when simplifying\n\nChanged\n~~~~~~~\n- updated travis CI settings\n\n\nv0.999 - 2019-04-29\n--------------------\n- Initial release\n- license-expression is small utility library to parse, compare and\n simplify and normalize license expressions.\n\n", - "contentType": "text/prs.fallenstein.rst" - } - } - }, - { - "license": { - "name": "declared license file: CODE_OF_CONDUCT.rst", - "text": { - "content": "Contributor Covenant Code of Conduct\n====================================\n\nOur Pledge\n----------\n\nIn the interest of fostering an open and welcoming environment, we as\ncontributors and maintainers pledge to making participation in our\nproject and our community a harassment-free experience for everyone,\nregardless of age, body size, disability, ethnicity, gender identity and\nexpression, level of experience, education, socio-economic status,\nnationality, personal appearance, race, religion, or sexual identity and\norientation.\n\nOur Standards\n-------------\n\nExamples of behavior that contributes to creating a positive environment\ninclude:\n\n- Using welcoming and inclusive language\n- Being respectful of differing viewpoints and experiences\n- Gracefully accepting constructive criticism\n- Focusing on what is best for the community\n- Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n- The use of sexualized language or imagery and unwelcome sexual\n attention or advances\n- Trolling, insulting/derogatory comments, and personal or political\n attacks\n- Public or private harassment\n- Publishing others\u2019 private information, such as a physical or\n electronic address, without explicit permission\n- Other conduct which could reasonably be considered inappropriate in a\n professional setting\n\nOur Responsibilities\n--------------------\n\nProject maintainers are responsible for clarifying the standards of\nacceptable behavior and are expected to take appropriate and fair\ncorrective action in response to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit,\nor reject comments, commits, code, wiki edits, issues, and other\ncontributions that are not aligned to this Code of Conduct, or to ban\ntemporarily or permanently any contributor for other behaviors that they\ndeem inappropriate, threatening, offensive, or harmful.\n\nScope\n-----\n\nThis Code of Conduct applies both within project spaces and in public\nspaces when an individual is representing the project or its community.\nExamples of representing a project or community include using an\nofficial project e-mail address, posting via an official social media\naccount, or acting as an appointed representative at an online or\noffline event. Representation of a project may be further defined and\nclarified by project maintainers.\n\nEnforcement\n-----------\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may\nbe reported by contacting the project team at pombredanne@gmail.com\nor on the Gitter chat channel at https://gitter.im/aboutcode-org/discuss .\nAll complaints will be reviewed and investigated and will result in a\nresponse that is deemed necessary and appropriate to the circumstances.\nThe project team is obligated to maintain confidentiality with regard to\nthe reporter of an incident. Further details of specific enforcement\npolicies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in\ngood faith may face temporary or permanent repercussions as determined\nby other members of the project\u2019s leadership.\n\nAttribution\n-----------\n\nThis Code of Conduct is adapted from the `Contributor Covenant`_ ,\nversion 1.4, available at\nhttps://www.contributor-covenant.org/version/1/4/code-of-conduct.html\n\n.. _Contributor Covenant: https://www.contributor-covenant.org\n", - "contentType": "text/prs.fallenstein.rst" - } - } - }, - { - "license": { - "name": "declared license file: NOTICE", - "text": { - "content": "#\n# Copyright (c) nexB Inc. and others.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Visit https://aboutcode.org and https://github.com/nexB/license-expression\n# for support and download.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: apache-2.0.LICENSE", - "text": { - "content": " Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", - "contentType": "text/plain" - } - } - } - ], - "name": "license-expression", - "purl": "pkg:pypi/license-expression@30.3.0", - "type": "library", - "version": "30.3.0" - }, - { - "bom-ref": "lxml==5.3.0", - "description": "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API.", - "externalReferences": [ - { - "comment": "from packaging metadata Project-URL: Source", - "type": "other", - "url": "https://github.com/lxml/lxml" - }, - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://lxml.de/" - } - ], - "licenses": [ - { - "license": { - "id": "BSD-3-Clause" - } - }, - { - "license": { - "name": "License :: OSI Approved :: BSD License" - } - }, - { - "license": { - "name": "declared license file: LICENSE.txt", - "text": { - "content": "Copyright (c) 2004 Infrae. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n 1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n \n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in\n the documentation and/or other materials provided with the\n distribution.\n\n 3. Neither the name of Infrae nor the names of its contributors may\n be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INFRAE OR\nCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\nEXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\nPROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSES.txt", - "text": { - "content": "lxml is copyright Infrae and distributed under the BSD license (see\ndoc/licenses/BSD.txt), with the following exceptions:\n\nSome code, such a selftest.py, selftest2.py and\nsrc/lxml/_elementpath.py are derived from ElementTree and\ncElementTree. See doc/licenses/elementtree.txt for the license text.\n\nlxml.cssselect and lxml.html are copyright Ian Bicking and distributed\nunder the BSD license (see doc/licenses/BSD.txt).\n\ntest.py, the test-runner script, is GPL and copyright Shuttleworth\nFoundation. See doc/licenses/GPL.txt. It is believed the unchanged\ninclusion of test.py to run the unit test suite falls under the\n\"aggregation\" clause of the GPL and thus does not affect the license\nof the rest of the package.\n\nThe isoschematron implementation uses several XSL and RelaxNG resources:\n * The (XML syntax) RelaxNG schema for schematron, copyright International\n Organization for Standardization (see \n src/lxml/isoschematron/resources/rng/iso-schematron.rng for the license\n text)\n * The skeleton iso-schematron-xlt1 pure-xslt schematron implementation\n xsl stylesheets, copyright Rick Jelliffe and Academia Sinica Computing\n Center, Taiwan (see the xsl files here for the license text: \n src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/)\n * The xsd/rng schema schematron extraction xsl transformations are unlicensed\n and copyright the respective authors as noted (see \n src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl and\n src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl)\n", - "contentType": "text/plain" - } - } - } - ], - "name": "lxml", - "purl": "pkg:pypi/lxml@5.3.0", - "type": "library", - "version": "5.3.0" - }, - { - "bom-ref": "regression-issue868==0.1", - "externalReferences": [ - { - "comment": "PackageSource: Local", - "type": "distribution", - "url": "file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868" - } - ], - "licenses": [ - { - "license": { - "name": "declared license file: my_licenses/richtext.rtf", - "text": { - "content": "e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA=", - "contentType": "application/rtf", - "encoding": "base64" - } - } - }, - { - "license": { - "name": "declared license file: my_licenses/utf-16be_withBOM.txt", - "text": { - "content": "this file is\r\nutf-16be encoded\r\nwith BOM\r\n\ud83d\ude03\r\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: my_licenses/utf-16le_withBOM.txt", - "text": { - "content": "this file is\nutf-16le encoded\nwith BOM\n\ud83d\ude03\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: my_licenses/utf-8_noBOM.txt", - "text": { - "content": "this file is\nutf-8 encoded\nwithout BOM\n\ud83d\ude03\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: my_licenses/utf-8_withBOM.txt", - "text": { - "content": "\ufeffthis file is\nutf-8 encoded\nwith BOM\n\ud83d\ude03\n", - "contentType": "text/plain" - } - } - } - ], - "name": "regression-issue868", - "type": "library", - "version": "0.1" - } - ], - "dependencies": [ - { - "ref": "attrs==23.2.0" - }, - { - "ref": "boolean.py==4.0" - }, - { - "ref": "cryptography==43.0.1" - }, - { - "ref": "jsonpointer==2.4" - }, - { - "dependsOn": [ - "boolean.py==4.0" - ], - "ref": "license-expression==30.3.0" - }, - { - "ref": "lxml==5.3.0" - }, - { - "ref": "regression-issue868==0.1" - }, - { - "dependsOn": [ - "attrs==23.2.0", - "boolean.py==4.0", - "cryptography==43.0.1", - "jsonpointer==2.4", - "license-expression==30.3.0", - "lxml==5.3.0", - "regression-issue868==0.1" - ], - "ref": "root-component" - } - ], - "metadata": { - "component": { - "bom-ref": "root-component", - "description": "depenndencies with license declaration accoring to PEP 639", - "evidence": { - "licenses": [ - { - "license": { - "name": "declared license file: AUTHORS.example.bin", - "text": { - "content": "dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUuYmluIGNvbnRlbnQK", - "contentType": "application/octet-stream", - "encoding": "base64" - } - } - }, - { - "license": { - "name": "declared license file: LICENCE.dummy.bin", - "text": { - "content": "dGhpcyBpcyBMSUNFTkNFLmR1bW15LmJpbiBjb250ZW50Cg==", - "contentType": "application/octet-stream", - "encoding": "base64" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.txt.bin", - "text": { - "content": "dGhpcyBpcyBMSUNFTlNFLnR4dC5iaW4gY29udGVudAo=", - "contentType": "application/octet-stream", - "encoding": "base64" - } - } - }, - { - "license": { - "name": "declared license file: NOTICE.bin", - "text": { - "content": "dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UuYmluIGZpbGUuCg==", - "contentType": "application/octet-stream", - "encoding": "base64" - } - } - }, - { - "license": { - "name": "declared license file: licenses_a/LICENSE.CC0.bin", - "text": { - "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwLmJpbiBjb250ZW50Cg==", - "contentType": "application/octet-stream", - "encoding": "base64" - } - } - }, - { - "license": { - "name": "declared license file: licenses_a/LICENSE.MIT.bin", - "text": { - "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlULmJpbiBjb250ZW50Cg==", - "contentType": "application/octet-stream", - "encoding": "base64" - } - } - }, - { - "license": { - "name": "declared license file: licenses_b/LICENSE.md.bin", - "text": { - "content": "dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQuYmluIGNvbnRlbnQK", - "contentType": "application/octet-stream", - "encoding": "base64" - } - } - }, - { - "license": { - "name": "declared license file: licenses_b/legal/NOTICE.txt.bin", - "text": { - "content": "dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQuYmluIGZpbGUuIGl0IGlzIGV4cGVjdGVkIHRvIGJlIGRldGVjdGVkLgo=", - "contentType": "application/octet-stream", - "encoding": "base64" - } - } - } - ] - }, - "licenses": [ - { - "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" - } - ], - "name": "with-extras", - "type": "application", - "version": "0.1.0" - }, - "properties": [ - { - "name": "cdx:reproducible", - "value": "true" - } - ], - "tools": { - "components": [ - { - "description": "CycloneDX Software Bill of Materials (SBOM) generator for Python projects and environments", - "externalReferences": [ - { - "type": "build-system", - "url": "https://github.com/CycloneDX/cyclonedx-python/actions" - }, - { - "type": "distribution", - "url": "https://pypi.org/project/cyclonedx-bom/" - }, - { - "type": "documentation", - "url": "https://cyclonedx-bom-tool.readthedocs.io/" - }, - { - "type": "issue-tracker", - "url": "https://github.com/CycloneDX/cyclonedx-python/issues" - }, - { - "type": "license", - "url": "https://github.com/CycloneDX/cyclonedx-python/blob/main/LICENSE" - }, - { - "type": "release-notes", - "url": "https://github.com/CycloneDX/cyclonedx-python/blob/main/CHANGELOG.md" - }, - { - "type": "vcs", - "url": "https://github.com/CycloneDX/cyclonedx-python/" - }, - { - "type": "website", - "url": "https://github.com/CycloneDX/cyclonedx-python/#readme" - } - ], - "group": "CycloneDX", - "licenses": [ - { - "license": { - "id": "Apache-2.0" - } - } - ], - "name": "cyclonedx-py", - "type": "application", - "version": "thisVersion-testing" - }, - { - "description": "stripped", - "externalReferences": [ ], - "group": "CycloneDX", - "licenses": [ ], - "name": "cyclonedx-python-lib", - "type": "library", - "version": "libVersion-testing" - } - ] - } - }, - "version": 1, - "$schema": "http://cyclonedx.org/schema/bom-1.5.schema.json", - "bomFormat": "CycloneDX", - "specVersion": "1.5" -} \ No newline at end of file diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.xml.bin deleted file mode 100644 index c2725beb2..000000000 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.xml.bin +++ /dev/null @@ -1,1429 +0,0 @@ - - - - - - - CycloneDX - cyclonedx-py - thisVersion-testing - CycloneDX Software Bill of Materials (SBOM) generator for Python projects and environments - - - Apache-2.0 - - - - - https://github.com/CycloneDX/cyclonedx-python/actions - - - https://pypi.org/project/cyclonedx-bom/ - - - https://cyclonedx-bom-tool.readthedocs.io/ - - - https://github.com/CycloneDX/cyclonedx-python/issues - - - https://github.com/CycloneDX/cyclonedx-python/blob/main/LICENSE - - - https://github.com/CycloneDX/cyclonedx-python/blob/main/CHANGELOG.md - - - https://github.com/CycloneDX/cyclonedx-python/ - - - https://github.com/CycloneDX/cyclonedx-python/#readme - - - - - CycloneDX - cyclonedx-python-lib - libVersion-testing - - - - - - - - with-extras - 0.1.0 - depenndencies with license declaration accoring to PEP 639 - - MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) - - - - - declared license file: AUTHORS.example.bin - dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUuYmluIGNvbnRlbnQK - - - declared license file: LICENCE.dummy.bin - dGhpcyBpcyBMSUNFTkNFLmR1bW15LmJpbiBjb250ZW50Cg== - - - declared license file: LICENSE.txt.bin - dGhpcyBpcyBMSUNFTlNFLnR4dC5iaW4gY29udGVudAo= - - - declared license file: NOTICE.bin - dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UuYmluIGZpbGUuCg== - - - declared license file: licenses_a/LICENSE.CC0.bin - dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwLmJpbiBjb250ZW50Cg== - - - declared license file: licenses_a/LICENSE.MIT.bin - dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlULmJpbiBjb250ZW50Cg== - - - declared license file: licenses_b/LICENSE.md.bin - dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQuYmluIGNvbnRlbnQK - - - declared license file: licenses_b/legal/NOTICE.txt.bin - dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQuYmluIGZpbGUuIGl0IGlzIGV4cGVjdGVkIHRvIGJlIGRldGVjdGVkLgo= - - - - - - true - - - - - attrs - 23.2.0 - Classes Without Boilerplate - - - MIT - - - declared license file: LICENSE - The MIT License (MIT) - -Copyright (c) 2015 Hynek Schlawack and the attrs contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - - - pkg:pypi/attrs@23.2.0 - - - https://www.attrs.org/ - from packaging metadata Project-URL: Documentation - - - https://github.com/sponsors/hynek - from packaging metadata Project-URL: Funding - - - https://tidelift.com/subscription/pkg/pypi-attrs?utm_source=pypi-attrs&utm_medium=pypi - from packaging metadata Project-URL: Tidelift - - - https://www.attrs.org/en/stable/changelog.html - from packaging metadata Project-URL: Changelog - - - https://github.com/python-attrs/attrs - from packaging metadata Project-URL: GitHub - - - - - boolean.py - 4.0 - Define boolean algebras, create and parse boolean expressions and create custom boolean DSL. - - - BSD-2-Clause - - - declared license file: CHANGELOG.rst - -Changelog -========= - - -next ----- - - -4.0 (2022-05-05) ----------------- - -* API changes - - * Drop support for Python 2. - * Test on Python 3.10 - * Make Expression.sort_order an instance attributes and not a class attribute - -* Misc. - - * Correct licensing documentation - * Improve docstringf and apply minor refactorings - * Adopt black code style and isort for imports - * Drop Travis and use GitHub actions for CI - - -3.8 (2020-06-10) ----------------- - -* API changes - - * Add support for evaluation of boolean expression. - Thank you to Lars van Gemerden @gemerden - -* Bug fixes - - * Fix parsing of tokens that have a number as the first character. - Thank you to Jeff Cohen @ jcohen28 - * Restore proper Python 2 compatibility. - Thank you to Benjy Weinberger @benjyw - -* Improve documentation - - * Add pointers to Linux distro packages. - Thank you to Max Mehl @mxmehl and Carmen Bianca Bakker @carmenbianca - * Fix typo. - Thank you to Gabriel Niebler @der-gabe - - -3.7 (2019-10-04) ----------------- - -* API changes - - * Add new sort argument to simplify() to optionally not sort when simplifying - expressions (e.g. not applying "commutativity"). Thank you to Steven Esser - @majurg for this - * Add new argument to tokenizer to optionally accept extra characters in symbol - tokens. Thank you to @carpie for this - - -3.6 (2018-08-06) ----------------- - -* No API changes - -* Bug fixes - - * Fix De Morgan's laws effect on double negation propositions. Thank you to Douglas Cardoso for this - * Improve error checking when parsing - - -3.5 (Nov 1, 2017) ------------------ - -* No API changes - -* Bug fixes - - * Documentation updates and add testing for Python 3.6. Thank you to Alexander Lisianoi @alisianoi - * Improve testng and expression equivalence checks - * Improve subs() method to an expression - - - -3.4 (May 12, 2017) ------------------- - -* No API changes - -* Bug fixes and improvements - - * Fix various documentation typos and improve tests . Thank you to Alexander Lisianoi @alisianoi - * Fix handling for literals vs. symbols in negations Thank you to @YaronK - - -3.3 (2017-02-09) ----------------- - -* API changes - - * #40 and #50 Expression.subs() now takes 'default' thanks to @kronuz - * #45 simplify=False is now the default for parse and related functions or methods. - * #40 Use "&" and "|" as default operators - -* Bug fixes - - * #60 Fix bug for "a or b c" which is not a valid expression - * #58 Fix math formula display in docs - * Improve handling of parse errors - - -2.0.0 (2016-05-11) ------------------- - -* API changes - - * New algebra definition. Refactored class hierarchy. Improved parsing. - -* New features - - * possibility to subclass algebra definition - * new normal forms shortcuts for DNF and CNF. - - -1.1 (2016-04-06) ------------------- - -* Initial release on Pypi. - - - - declared license file: LICENSE.txt - Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation and/or -other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - - declared license file: README.rst - boolean.py -========== - -"boolean.py" is a small library implementing a boolean algebra. It -defines two base elements, TRUE and FALSE, and a Symbol class that can -take on one of these two values. Calculations are done in terms of AND, -OR and NOT - other compositions like XOR and NAND are not implemented -but can be emulated with AND or and NOT. Expressions are constructed -from parsed strings or in Python. - -It runs on Python 3.6+ -You can use older version 3.x for Python 2.7+ support. - -https://github.com/bastikr/boolean.py - -Build status: |Build Status| - - -Example -------- - -:: - - >>> import boolean - >>> algebra = boolean.BooleanAlgebra() - >>> expression1 = algebra.parse(u'apple and (oranges or banana) and not banana', simplify=False) - >>> expression1 - AND(Symbol('apple'), OR(Symbol('oranges'), Symbol('banana')), NOT(Symbol('banana'))) - - >>> expression2 = algebra.parse('(oranges | banana) and not banana & apple', simplify=True) - >>> expression2 - AND(Symbol('apple'), NOT(Symbol('banana')), Symbol('oranges')) - - >>> expression1 == expression2 - False - >>> expression1.simplify() == expression2 - True - - -Documentation -------------- - -http://readthedocs.org/docs/booleanpy/en/latest/ - - -Installation ------------- - -Installation via pip -~~~~~~~~~~~~~~~~~~~~ - -To install boolean.py, you need to have the following pieces of software -on your computer: - -- Python 3.6+ -- pip - -You then only need to run the following command: - -``pip install boolean.py`` - - -Installation via package managers -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -There are packages available for easy install on some operating systems. -You are welcome to help us package this tool for more distributions! - -- boolean.py has been packaged as Arch Linux, Fedora, openSus, - nixpkgs, Guix, DragonFly and FreeBSD - `packages <https://repology.org/project/python:boolean.py/versions>`__ . - -In particular: - -- Arch Linux (AUR): - `python-boolean.py <https://aur.archlinux.org/packages/python-boolean.py/>`__ -- Fedora: - `python-boolean.py <https://apps.fedoraproject.org/packages/python-boolean.py>`__ -- openSUSE: - `python-boolean.py <https://software.opensuse.org/package/python-boolean.py>`__ - - -Testing -------- - -Test ``boolean.py`` with your current Python environment: - -``python setup.py test`` - -Test with all of the supported Python environments using ``tox``: - -:: - - pip install -r requirements-dev.txt - tox - -If ``tox`` throws ``InterpreterNotFound``, limit it to python -interpreters that are actually installed on your machine: - -:: - - tox -e py36 - -Alternatively use pytest. - - -License -------- - -Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others -SPDX-License-Identifier: BSD-2-Clause - -.. |Build Status| image:: https://travis-ci.org/bastikr/boolean.py.svg?branch=master - :target: https://travis-ci.org/bastikr/boolean.py - - - - pkg:pypi/boolean.py@4.0 - - - https://github.com/bastikr/boolean.py - from packaging metadata: Home-page - - - - - cryptography - 43.0.1 - cryptography is a package which provides cryptographic recipes and primitives to Python developers. - - Apache-2.0 OR BSD-3-Clause - - pkg:pypi/cryptography@43.0.1 - - - https://cryptography.io/ - from packaging metadata Project-URL: documentation - - - https://github.com/pyca/cryptography/issues - from packaging metadata Project-URL: issues - - - https://github.com/pyca/cryptography/ - from packaging metadata Project-URL: source - - - https://cryptography.io/en/latest/changelog/ - from packaging metadata Project-URL: changelog - - - https://github.com/pyca/cryptography - from packaging metadata Project-URL: homepage - - - - - - License :: OSI Approved :: Apache Software License - - - License :: OSI Approved :: BSD License - - - declared license file: LICENSE - This software is made available under the terms of *either* of the licenses -found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made -under the terms of *both* these licenses. - - - - declared license file: LICENSE.APACHE - - Apache License - Version 2.0, January 2004 - https://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - https://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - - declared license file: LICENSE.BSD - Copyright (c) Individual contributors. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. Neither the name of PyCA Cryptography nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - - - - - jsonpointer - 2.4 - Identify specific nodes in a JSON document (RFC 6901) - - - License :: OSI Approved :: BSD License - - - declared license file: AUTHORS - Stefan Kögl <stefan@skoegl.net> -Alexander Shorin <kxepal@gmail.com> -Christopher J. White <chris@grierwhite.com> - - - - declared license file: LICENSE.txt - Copyright (c) 2011 Stefan Kögl <stefan@skoegl.net> -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - - - declared license of 'jsonpointer' - Modified BSD License - - - pkg:pypi/jsonpointer@2.4 - - - https://github.com/stefankoegl/python-json-pointer - from packaging metadata: Home-page - - - - - license-expression - 30.3.0 - license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic. - - - Apache-2.0 - - - declared license file: AUTHORS.rst - The following organizations or individuals have contributed to this code: - -- Ayan Sinha Mahapatra @AyanSinhaMahapatra -- Carmen Bianca Bakker @carmenbianca -- Chin-Yeung Li @chinyeungli -- Dennis Clark @DennisClark -- John Horan @johnmhoran -- Jono Yang @JonoYang -- Max Mehl @mxmehl -- nexB Inc. @nexB -- Peter Kolbus @pkolbus -- Philippe Ombredanne @pombredanne -- Sebastian Schuberth @sschuberth -- Steven Esser @majurg -- Thomas Druez @tdruez - - - - declared license file: CHANGELOG.rst - Changelog -========= - -v30.3.0 - 2024-03-18 --------------------- - -This is a minor release without API changes: - -- Use latest skeleton -- Update license list to latest ScanCode and SPDX 3.23 -- Drop support for Python 3.7 - -v30.2.0 - 2023-11-29 --------------------- - -This is a minor release without API changes: - -- Use latest skeleton -- Update license list to latest ScanCode and SPDX 3.22 -- Add Python 3.12 support in CI - - -v30.1.1 - 2023-01-16 ----------------------- - -This is a minor dot release without API changes - -- Use latest skeleton -- Update license list to latest ScanCode and SPDX 3.20 - - -v30.1.0 - 2023-01-16 ----------------------- - -This is a minor release without API changes - -- Use latest skeleton (and updated configure script) -- Update license list to latest ScanCode and SPDX 3.19 -- Use correct syntax for python_require -- Drop using Travis and Appveyor -- Drop support for Python 3.7 and add Python 3.11 in CI - - -v30.0.0 - 2022-05-10 ----------------------- - -This is a minor release with API changes - -- Use latest skeleton (and updated configure script) -- Drop using calver -- Improve error checking when combining licenses - - - -v21.6.14 - 2021-06-14 ----------------------- - -Added -~~~~~ - -- Switch to calver for package versioning to better convey the currency of the - bundled data. - -- Include https://scancode-licensedb.aboutcode.org/ licenses list with - ScanCode (v21.6.7) and SPDX licenses (v3.13) keys. Add new functions to - create Licensing using these licenses as LicenseSymbol. - -- Add new License.dedup() method to deduplicate and simplify license expressions - without over simplifying. - -- Add new License.validate() method to return a new ExpressionInfo object with - details on a license expression validation. - - -Changed -~~~~~~~ -- Drop support for Python 2. -- Adopt the project skeleton from https://github.com/nexB/skeleton - and its new configure script - - -v1.2 - 2019-11-14 ------------------- -Added -~~~~~ -- Add ability to render WITH expression wrapped in parenthesis - -Fixes -~~~~~ -- Fix anomalous backslashes in strings - -Changed -~~~~~~~ -- Update the thirdparty directory structure. - - -v1.0 - 2019-10-16 ------------------- -Added -~~~~~ -- New version of boolean.py library -- Add ability to leave license expressions unsorted when simplifying - -Changed -~~~~~~~ -- updated travis CI settings - - -v0.999 - 2019-04-29 --------------------- -- Initial release -- license-expression is small utility library to parse, compare and - simplify and normalize license expressions. - - - - - declared license file: CODE_OF_CONDUCT.rst - Contributor Covenant Code of Conduct -==================================== - -Our Pledge ----------- - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our -project and our community a harassment-free experience for everyone, -regardless of age, body size, disability, ethnicity, gender identity and -expression, level of experience, education, socio-economic status, -nationality, personal appearance, race, religion, or sexual identity and -orientation. - -Our Standards -------------- - -Examples of behavior that contributes to creating a positive environment -include: - -- Using welcoming and inclusive language -- Being respectful of differing viewpoints and experiences -- Gracefully accepting constructive criticism -- Focusing on what is best for the community -- Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -- The use of sexualized language or imagery and unwelcome sexual - attention or advances -- Trolling, insulting/derogatory comments, and personal or political - attacks -- Public or private harassment -- Publishing others’ private information, such as a physical or - electronic address, without explicit permission -- Other conduct which could reasonably be considered inappropriate in a - professional setting - -Our Responsibilities --------------------- - -Project maintainers are responsible for clarifying the standards of -acceptable behavior and are expected to take appropriate and fair -corrective action in response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, -or reject comments, commits, code, wiki edits, issues, and other -contributions that are not aligned to this Code of Conduct, or to ban -temporarily or permanently any contributor for other behaviors that they -deem inappropriate, threatening, offensive, or harmful. - -Scope ------ - -This Code of Conduct applies both within project spaces and in public -spaces when an individual is representing the project or its community. -Examples of representing a project or community include using an -official project e-mail address, posting via an official social media -account, or acting as an appointed representative at an online or -offline event. Representation of a project may be further defined and -clarified by project maintainers. - -Enforcement ------------ - -Instances of abusive, harassing, or otherwise unacceptable behavior may -be reported by contacting the project team at pombredanne@gmail.com -or on the Gitter chat channel at https://gitter.im/aboutcode-org/discuss . -All complaints will be reviewed and investigated and will result in a -response that is deemed necessary and appropriate to the circumstances. -The project team is obligated to maintain confidentiality with regard to -the reporter of an incident. Further details of specific enforcement -policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in -good faith may face temporary or permanent repercussions as determined -by other members of the project’s leadership. - -Attribution ------------ - -This Code of Conduct is adapted from the `Contributor Covenant`_ , -version 1.4, available at -https://www.contributor-covenant.org/version/1/4/code-of-conduct.html - -.. _Contributor Covenant: https://www.contributor-covenant.org - - - - declared license file: NOTICE - # -# Copyright (c) nexB Inc. and others. -# SPDX-License-Identifier: Apache-2.0 -# -# Visit https://aboutcode.org and https://github.com/nexB/license-expression -# for support and download. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - - - - declared license file: apache-2.0.LICENSE - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - - pkg:pypi/license-expression@30.3.0 - - - https://github.com/nexB/license-expression - from packaging metadata: Home-page - - - - - lxml - 5.3.0 - Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. - - - BSD-3-Clause - - - License :: OSI Approved :: BSD License - - - declared license file: LICENSE.txt - Copyright (c) 2004 Infrae. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - 3. Neither the name of Infrae nor the names of its contributors may - be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INFRAE OR -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - - declared license file: LICENSES.txt - lxml is copyright Infrae and distributed under the BSD license (see -doc/licenses/BSD.txt), with the following exceptions: - -Some code, such a selftest.py, selftest2.py and -src/lxml/_elementpath.py are derived from ElementTree and -cElementTree. See doc/licenses/elementtree.txt for the license text. - -lxml.cssselect and lxml.html are copyright Ian Bicking and distributed -under the BSD license (see doc/licenses/BSD.txt). - -test.py, the test-runner script, is GPL and copyright Shuttleworth -Foundation. See doc/licenses/GPL.txt. It is believed the unchanged -inclusion of test.py to run the unit test suite falls under the -"aggregation" clause of the GPL and thus does not affect the license -of the rest of the package. - -The isoschematron implementation uses several XSL and RelaxNG resources: - * The (XML syntax) RelaxNG schema for schematron, copyright International - Organization for Standardization (see - src/lxml/isoschematron/resources/rng/iso-schematron.rng for the license - text) - * The skeleton iso-schematron-xlt1 pure-xslt schematron implementation - xsl stylesheets, copyright Rick Jelliffe and Academia Sinica Computing - Center, Taiwan (see the xsl files here for the license text: - src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/) - * The xsd/rng schema schematron extraction xsl transformations are unlicensed - and copyright the respective authors as noted (see - src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl and - src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl) - - - - pkg:pypi/lxml@5.3.0 - - - https://github.com/lxml/lxml - from packaging metadata Project-URL: Source - - - https://lxml.de/ - from packaging metadata: Home-page - - - - - regression-issue868 - 0.1 - - - declared license file: my_licenses/richtext.rtf - e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA= - - - declared license file: my_licenses/utf-16be_withBOM.txt - this file is -utf-16be encoded -with BOM -😃 - - - - declared license file: my_licenses/utf-16le_withBOM.txt - this file is -utf-16le encoded -with BOM -😃 - - - - declared license file: my_licenses/utf-8_noBOM.txt - this file is -utf-8 encoded -without BOM -😃 - - - - declared license file: my_licenses/utf-8_withBOM.txt - this file is -utf-8 encoded -with BOM -😃 - - - - - - file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 - PackageSource: Local - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.json.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.json.bin deleted file mode 100644 index 1d3176b10..000000000 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.json.bin +++ /dev/null @@ -1,660 +0,0 @@ -{ - "components": [ - { - "bom-ref": "attrs==23.2.0", - "description": "Classes Without Boilerplate", - "externalReferences": [ - { - "comment": "from packaging metadata Project-URL: Documentation", - "type": "documentation", - "url": "https://www.attrs.org/" - }, - { - "comment": "from packaging metadata Project-URL: Funding", - "type": "other", - "url": "https://github.com/sponsors/hynek" - }, - { - "comment": "from packaging metadata Project-URL: Tidelift", - "type": "other", - "url": "https://tidelift.com/subscription/pkg/pypi-attrs?utm_source=pypi-attrs&utm_medium=pypi" - }, - { - "comment": "from packaging metadata Project-URL: Changelog", - "type": "release-notes", - "url": "https://www.attrs.org/en/stable/changelog.html" - }, - { - "comment": "from packaging metadata Project-URL: GitHub", - "type": "vcs", - "url": "https://github.com/python-attrs/attrs" - } - ], - "licenses": [ - { - "license": { - "acknowledgement": "declared", - "id": "MIT" - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: LICENSE", - "text": { - "content": "The MIT License (MIT)\n\nCopyright (c) 2015 Hynek Schlawack and the attrs contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n", - "contentType": "text/plain" - } - } - } - ], - "name": "attrs", - "purl": "pkg:pypi/attrs@23.2.0", - "type": "library", - "version": "23.2.0" - }, - { - "bom-ref": "boolean.py==4.0", - "description": "Define boolean algebras, create and parse boolean expressions and create custom boolean DSL.", - "externalReferences": [ - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://github.com/bastikr/boolean.py" - } - ], - "licenses": [ - { - "license": { - "acknowledgement": "declared", - "id": "BSD-2-Clause" - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: CHANGELOG.rst", - "text": { - "content": "\nChangelog\n=========\n\n\nnext\n----\n\n\n4.0 (2022-05-05)\n----------------\n\n* API changes\n\n * Drop support for Python 2.\n * Test on Python 3.10\n * Make Expression.sort_order an instance attributes and not a class attribute\n\n* Misc.\n\n * Correct licensing documentation\n * Improve docstringf and apply minor refactorings\n * Adopt black code style and isort for imports\n * Drop Travis and use GitHub actions for CI\n\n\n3.8 (2020-06-10)\n----------------\n\n* API changes\n\n * Add support for evaluation of boolean expression.\n Thank you to Lars van Gemerden @gemerden\n\n* Bug fixes\n\n * Fix parsing of tokens that have a number as the first character. \n Thank you to Jeff Cohen @ jcohen28\n * Restore proper Python 2 compatibility. \n Thank you to Benjy Weinberger @benjyw\n\n* Improve documentation\n\n * Add pointers to Linux distro packages.\n Thank you to Max Mehl @mxmehl and Carmen Bianca Bakker @carmenbianca\n * Fix typo.\n Thank you to Gabriel Niebler @der-gabe\n\n\n3.7 (2019-10-04)\n----------------\n\n* API changes\n\n * Add new sort argument to simplify() to optionally not sort when simplifying\n expressions (e.g. not applying \"commutativity\"). Thank you to Steven Esser\n @majurg for this\n * Add new argument to tokenizer to optionally accept extra characters in symbol\n tokens. Thank you to @carpie for this\n\n\n3.6 (2018-08-06)\n----------------\n\n* No API changes\n\n* Bug fixes\n\n * Fix De Morgan's laws effect on double negation propositions. Thank you to Douglas Cardoso for this\n * Improve error checking when parsing\n\n\n3.5 (Nov 1, 2017)\n-----------------\n\n* No API changes\n\n* Bug fixes\n\n * Documentation updates and add testing for Python 3.6. Thank you to Alexander Lisianoi @alisianoi\n * Improve testng and expression equivalence checks\n * Improve subs() method to an expression \n\n \n\n3.4 (May 12, 2017)\n------------------\n\n* No API changes\n\n* Bug fixes and improvements\n\n * Fix various documentation typos and improve tests . Thank you to Alexander Lisianoi @alisianoi\n * Fix handling for literals vs. symbols in negations Thank you to @YaronK\n\n\n3.3 (2017-02-09)\n----------------\n\n* API changes\n\n * #40 and #50 Expression.subs() now takes 'default' thanks to @kronuz\n * #45 simplify=False is now the default for parse and related functions or methods.\n * #40 Use \"&\" and \"|\" as default operators\n\n* Bug fixes\n\n * #60 Fix bug for \"a or b c\" which is not a valid expression\n * #58 Fix math formula display in docs\n * Improve handling of parse errors\n\n\n2.0.0 (2016-05-11)\n------------------\n\n* API changes\n\n * New algebra definition. Refactored class hierarchy. Improved parsing.\n\n* New features\n\n * possibility to subclass algebra definition\n * new normal forms shortcuts for DNF and CNF.\n\n\n1.1 (2016-04-06)\n------------------\n\n* Initial release on Pypi.\n", - "contentType": "text/prs.fallenstein.rst" - } - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: LICENSE.txt", - "text": { - "content": "Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice, this\nlist of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice,\nthis list of conditions and the following disclaimer in the documentation and/or\nother materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: README.rst", - "text": { - "content": "boolean.py\n==========\n\n\"boolean.py\" is a small library implementing a boolean algebra. It\ndefines two base elements, TRUE and FALSE, and a Symbol class that can\ntake on one of these two values. Calculations are done in terms of AND,\nOR and NOT - other compositions like XOR and NAND are not implemented\nbut can be emulated with AND or and NOT. Expressions are constructed\nfrom parsed strings or in Python.\n\nIt runs on Python 3.6+\nYou can use older version 3.x for Python 2.7+ support.\n\nhttps://github.com/bastikr/boolean.py\n\nBuild status: |Build Status|\n\n\nExample\n-------\n\n::\n\n >>> import boolean\n >>> algebra = boolean.BooleanAlgebra()\n >>> expression1 = algebra.parse(u'apple and (oranges or banana) and not banana', simplify=False)\n >>> expression1\n AND(Symbol('apple'), OR(Symbol('oranges'), Symbol('banana')), NOT(Symbol('banana')))\n\n >>> expression2 = algebra.parse('(oranges | banana) and not banana & apple', simplify=True)\n >>> expression2\n AND(Symbol('apple'), NOT(Symbol('banana')), Symbol('oranges'))\n\n >>> expression1 == expression2\n False\n >>> expression1.simplify() == expression2\n True\n\n\nDocumentation\n-------------\n\nhttp://readthedocs.org/docs/booleanpy/en/latest/\n\n\nInstallation\n------------\n\nInstallation via pip\n~~~~~~~~~~~~~~~~~~~~\n\nTo install boolean.py, you need to have the following pieces of software\non your computer:\n\n- Python 3.6+\n- pip\n\nYou then only need to run the following command:\n\n``pip install boolean.py``\n\n\nInstallation via package managers\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThere are packages available for easy install on some operating systems.\nYou are welcome to help us package this tool for more distributions!\n\n- boolean.py has been packaged as Arch Linux, Fedora, openSus,\n nixpkgs, Guix, DragonFly and FreeBSD \n `packages `__ .\n\nIn particular:\n\n- Arch Linux (AUR):\n `python-boolean.py `__\n- Fedora:\n `python-boolean.py `__\n- openSUSE:\n `python-boolean.py `__\n\n\nTesting\n-------\n\nTest ``boolean.py`` with your current Python environment:\n\n``python setup.py test``\n\nTest with all of the supported Python environments using ``tox``:\n\n::\n\n pip install -r requirements-dev.txt\n tox\n\nIf ``tox`` throws ``InterpreterNotFound``, limit it to python\ninterpreters that are actually installed on your machine:\n\n::\n\n tox -e py36\n\nAlternatively use pytest.\n\n\nLicense\n-------\n\nCopyright (c) Sebastian Kraemer, basti.kr@gmail.com and others\nSPDX-License-Identifier: BSD-2-Clause\n\n.. |Build Status| image:: https://travis-ci.org/bastikr/boolean.py.svg?branch=master\n :target: https://travis-ci.org/bastikr/boolean.py\n", - "contentType": "text/prs.fallenstein.rst" - } - } - } - ], - "name": "boolean.py", - "purl": "pkg:pypi/boolean.py@4.0", - "type": "library", - "version": "4.0" - }, - { - "bom-ref": "cryptography==43.0.1", - "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", - "evidence": { - "licenses": [ - { - "license": { - "acknowledgement": "declared", - "name": "License :: OSI Approved :: Apache Software License" - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "License :: OSI Approved :: BSD License" - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: LICENSE", - "text": { - "content": "This software is made available under the terms of *either* of the licenses\nfound in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made\nunder the terms of *both* these licenses.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: LICENSE.APACHE", - "text": { - "content": "\n Apache License\n Version 2.0, January 2004\n https://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: LICENSE.BSD", - "text": { - "content": "Copyright (c) Individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of PyCA Cryptography nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" - } - } - } - ] - }, - "externalReferences": [ - { - "comment": "from packaging metadata Project-URL: documentation", - "type": "documentation", - "url": "https://cryptography.io/" - }, - { - "comment": "from packaging metadata Project-URL: issues", - "type": "issue-tracker", - "url": "https://github.com/pyca/cryptography/issues" - }, - { - "comment": "from packaging metadata Project-URL: source", - "type": "other", - "url": "https://github.com/pyca/cryptography/" - }, - { - "comment": "from packaging metadata Project-URL: changelog", - "type": "release-notes", - "url": "https://cryptography.io/en/latest/changelog/" - }, - { - "comment": "from packaging metadata Project-URL: homepage", - "type": "website", - "url": "https://github.com/pyca/cryptography" - } - ], - "licenses": [ - { - "acknowledgement": "declared", - "expression": "Apache-2.0 OR BSD-3-Clause" - } - ], - "name": "cryptography", - "purl": "pkg:pypi/cryptography@43.0.1", - "type": "library", - "version": "43.0.1" - }, - { - "bom-ref": "jsonpointer==2.4", - "description": "Identify specific nodes in a JSON document (RFC 6901) ", - "externalReferences": [ - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://github.com/stefankoegl/python-json-pointer" - } - ], - "licenses": [ - { - "license": { - "acknowledgement": "declared", - "name": "License :: OSI Approved :: BSD License" - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: AUTHORS", - "text": { - "content": "Stefan K\u00f6gl \nAlexander Shorin \nChristopher J. White \n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: LICENSE.txt", - "text": { - "content": "Copyright (c) 2011 Stefan K\u00f6gl \nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions\nare met:\n\n1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n3. The name of the author may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR\nIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\nOF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\nIN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\nNOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\nTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license of 'jsonpointer'", - "text": { - "content": "Modified BSD License", - "contentType": "text/plain" - } - } - } - ], - "name": "jsonpointer", - "purl": "pkg:pypi/jsonpointer@2.4", - "type": "library", - "version": "2.4" - }, - { - "bom-ref": "license-expression==30.3.0", - "description": "license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic.", - "externalReferences": [ - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://github.com/nexB/license-expression" - } - ], - "licenses": [ - { - "license": { - "acknowledgement": "declared", - "id": "Apache-2.0" - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: AUTHORS.rst", - "text": { - "content": "The following organizations or individuals have contributed to this code:\n\n- Ayan Sinha Mahapatra @AyanSinhaMahapatra\n- Carmen Bianca Bakker @carmenbianca\n- Chin-Yeung Li @chinyeungli\n- Dennis Clark @DennisClark\n- John Horan @johnmhoran\n- Jono Yang @JonoYang\n- Max Mehl @mxmehl\n- nexB Inc. @nexB\n- Peter Kolbus @pkolbus\n- Philippe Ombredanne @pombredanne\n- Sebastian Schuberth @sschuberth\n- Steven Esser @majurg\n- Thomas Druez @tdruez\n", - "contentType": "text/prs.fallenstein.rst" - } - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: CHANGELOG.rst", - "text": { - "content": "Changelog\n=========\n\nv30.3.0 - 2024-03-18\n--------------------\n\nThis is a minor release without API changes:\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.23\n- Drop support for Python 3.7\n\nv30.2.0 - 2023-11-29\n--------------------\n\nThis is a minor release without API changes:\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.22\n- Add Python 3.12 support in CI\n\n\nv30.1.1 - 2023-01-16\n----------------------\n\nThis is a minor dot release without API changes\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.20\n\n\nv30.1.0 - 2023-01-16\n----------------------\n\nThis is a minor release without API changes\n\n- Use latest skeleton (and updated configure script)\n- Update license list to latest ScanCode and SPDX 3.19\n- Use correct syntax for python_require\n- Drop using Travis and Appveyor\n- Drop support for Python 3.7 and add Python 3.11 in CI\n\n\nv30.0.0 - 2022-05-10\n----------------------\n\nThis is a minor release with API changes\n\n- Use latest skeleton (and updated configure script)\n- Drop using calver\n- Improve error checking when combining licenses\n\n\n\nv21.6.14 - 2021-06-14\n----------------------\n\nAdded\n~~~~~\n\n- Switch to calver for package versioning to better convey the currency of the\n bundled data.\n\n- Include https://scancode-licensedb.aboutcode.org/ licenses list with\n ScanCode (v21.6.7) and SPDX licenses (v3.13) keys. Add new functions to\n create Licensing using these licenses as LicenseSymbol.\n\n- Add new License.dedup() method to deduplicate and simplify license expressions\n without over simplifying.\n\n- Add new License.validate() method to return a new ExpressionInfo object with\n details on a license expression validation.\n\n\nChanged\n~~~~~~~\n- Drop support for Python 2.\n- Adopt the project skeleton from https://github.com/nexB/skeleton\n and its new configure script\n\n\nv1.2 - 2019-11-14\n------------------\nAdded\n~~~~~\n- Add ability to render WITH expression wrapped in parenthesis\n\nFixes\n~~~~~\n- Fix anomalous backslashes in strings\n\nChanged\n~~~~~~~\n- Update the thirdparty directory structure.\n\n\nv1.0 - 2019-10-16\n------------------\nAdded\n~~~~~\n- New version of boolean.py library\n- Add ability to leave license expressions unsorted when simplifying\n\nChanged\n~~~~~~~\n- updated travis CI settings\n\n\nv0.999 - 2019-04-29\n--------------------\n- Initial release\n- license-expression is small utility library to parse, compare and\n simplify and normalize license expressions.\n\n", - "contentType": "text/prs.fallenstein.rst" - } - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: CODE_OF_CONDUCT.rst", - "text": { - "content": "Contributor Covenant Code of Conduct\n====================================\n\nOur Pledge\n----------\n\nIn the interest of fostering an open and welcoming environment, we as\ncontributors and maintainers pledge to making participation in our\nproject and our community a harassment-free experience for everyone,\nregardless of age, body size, disability, ethnicity, gender identity and\nexpression, level of experience, education, socio-economic status,\nnationality, personal appearance, race, religion, or sexual identity and\norientation.\n\nOur Standards\n-------------\n\nExamples of behavior that contributes to creating a positive environment\ninclude:\n\n- Using welcoming and inclusive language\n- Being respectful of differing viewpoints and experiences\n- Gracefully accepting constructive criticism\n- Focusing on what is best for the community\n- Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n- The use of sexualized language or imagery and unwelcome sexual\n attention or advances\n- Trolling, insulting/derogatory comments, and personal or political\n attacks\n- Public or private harassment\n- Publishing others\u2019 private information, such as a physical or\n electronic address, without explicit permission\n- Other conduct which could reasonably be considered inappropriate in a\n professional setting\n\nOur Responsibilities\n--------------------\n\nProject maintainers are responsible for clarifying the standards of\nacceptable behavior and are expected to take appropriate and fair\ncorrective action in response to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit,\nor reject comments, commits, code, wiki edits, issues, and other\ncontributions that are not aligned to this Code of Conduct, or to ban\ntemporarily or permanently any contributor for other behaviors that they\ndeem inappropriate, threatening, offensive, or harmful.\n\nScope\n-----\n\nThis Code of Conduct applies both within project spaces and in public\nspaces when an individual is representing the project or its community.\nExamples of representing a project or community include using an\nofficial project e-mail address, posting via an official social media\naccount, or acting as an appointed representative at an online or\noffline event. Representation of a project may be further defined and\nclarified by project maintainers.\n\nEnforcement\n-----------\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may\nbe reported by contacting the project team at pombredanne@gmail.com\nor on the Gitter chat channel at https://gitter.im/aboutcode-org/discuss .\nAll complaints will be reviewed and investigated and will result in a\nresponse that is deemed necessary and appropriate to the circumstances.\nThe project team is obligated to maintain confidentiality with regard to\nthe reporter of an incident. Further details of specific enforcement\npolicies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in\ngood faith may face temporary or permanent repercussions as determined\nby other members of the project\u2019s leadership.\n\nAttribution\n-----------\n\nThis Code of Conduct is adapted from the `Contributor Covenant`_ ,\nversion 1.4, available at\nhttps://www.contributor-covenant.org/version/1/4/code-of-conduct.html\n\n.. _Contributor Covenant: https://www.contributor-covenant.org\n", - "contentType": "text/prs.fallenstein.rst" - } - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: NOTICE", - "text": { - "content": "#\n# Copyright (c) nexB Inc. and others.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Visit https://aboutcode.org and https://github.com/nexB/license-expression\n# for support and download.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: apache-2.0.LICENSE", - "text": { - "content": " Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", - "contentType": "text/plain" - } - } - } - ], - "name": "license-expression", - "purl": "pkg:pypi/license-expression@30.3.0", - "type": "library", - "version": "30.3.0" - }, - { - "bom-ref": "lxml==5.3.0", - "description": "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API.", - "externalReferences": [ - { - "comment": "from packaging metadata Project-URL: Source", - "type": "other", - "url": "https://github.com/lxml/lxml" - }, - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://lxml.de/" - } - ], - "licenses": [ - { - "license": { - "acknowledgement": "declared", - "id": "BSD-3-Clause" - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "License :: OSI Approved :: BSD License" - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: LICENSE.txt", - "text": { - "content": "Copyright (c) 2004 Infrae. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n 1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n \n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in\n the documentation and/or other materials provided with the\n distribution.\n\n 3. Neither the name of Infrae nor the names of its contributors may\n be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INFRAE OR\nCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\nEXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\nPROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: LICENSES.txt", - "text": { - "content": "lxml is copyright Infrae and distributed under the BSD license (see\ndoc/licenses/BSD.txt), with the following exceptions:\n\nSome code, such a selftest.py, selftest2.py and\nsrc/lxml/_elementpath.py are derived from ElementTree and\ncElementTree. See doc/licenses/elementtree.txt for the license text.\n\nlxml.cssselect and lxml.html are copyright Ian Bicking and distributed\nunder the BSD license (see doc/licenses/BSD.txt).\n\ntest.py, the test-runner script, is GPL and copyright Shuttleworth\nFoundation. See doc/licenses/GPL.txt. It is believed the unchanged\ninclusion of test.py to run the unit test suite falls under the\n\"aggregation\" clause of the GPL and thus does not affect the license\nof the rest of the package.\n\nThe isoschematron implementation uses several XSL and RelaxNG resources:\n * The (XML syntax) RelaxNG schema for schematron, copyright International\n Organization for Standardization (see \n src/lxml/isoschematron/resources/rng/iso-schematron.rng for the license\n text)\n * The skeleton iso-schematron-xlt1 pure-xslt schematron implementation\n xsl stylesheets, copyright Rick Jelliffe and Academia Sinica Computing\n Center, Taiwan (see the xsl files here for the license text: \n src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/)\n * The xsd/rng schema schematron extraction xsl transformations are unlicensed\n and copyright the respective authors as noted (see \n src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl and\n src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl)\n", - "contentType": "text/plain" - } - } - } - ], - "name": "lxml", - "purl": "pkg:pypi/lxml@5.3.0", - "type": "library", - "version": "5.3.0" - }, - { - "bom-ref": "regression-issue868==0.1", - "externalReferences": [ - { - "comment": "PackageSource: Local", - "type": "distribution", - "url": "file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868" - } - ], - "licenses": [ - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: my_licenses/richtext.rtf", - "text": { - "content": "e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA=", - "contentType": "application/rtf", - "encoding": "base64" - } - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: my_licenses/utf-16be_withBOM.txt", - "text": { - "content": "this file is\r\nutf-16be encoded\r\nwith BOM\r\n\ud83d\ude03\r\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: my_licenses/utf-16le_withBOM.txt", - "text": { - "content": "this file is\nutf-16le encoded\nwith BOM\n\ud83d\ude03\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: my_licenses/utf-8_noBOM.txt", - "text": { - "content": "this file is\nutf-8 encoded\nwithout BOM\n\ud83d\ude03\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: my_licenses/utf-8_withBOM.txt", - "text": { - "content": "\ufeffthis file is\nutf-8 encoded\nwith BOM\n\ud83d\ude03\n", - "contentType": "text/plain" - } - } - } - ], - "name": "regression-issue868", - "type": "library", - "version": "0.1" - } - ], - "dependencies": [ - { - "ref": "attrs==23.2.0" - }, - { - "ref": "boolean.py==4.0" - }, - { - "ref": "cryptography==43.0.1" - }, - { - "ref": "jsonpointer==2.4" - }, - { - "dependsOn": [ - "boolean.py==4.0" - ], - "ref": "license-expression==30.3.0" - }, - { - "ref": "lxml==5.3.0" - }, - { - "ref": "regression-issue868==0.1" - }, - { - "dependsOn": [ - "attrs==23.2.0", - "boolean.py==4.0", - "cryptography==43.0.1", - "jsonpointer==2.4", - "license-expression==30.3.0", - "lxml==5.3.0", - "regression-issue868==0.1" - ], - "ref": "root-component" - } - ], - "metadata": { - "component": { - "bom-ref": "root-component", - "description": "depenndencies with license declaration accoring to PEP 639", - "evidence": { - "licenses": [ - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: AUTHORS.example.bin", - "text": { - "content": "dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUuYmluIGNvbnRlbnQK", - "contentType": "application/octet-stream", - "encoding": "base64" - } - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: LICENCE.dummy.bin", - "text": { - "content": "dGhpcyBpcyBMSUNFTkNFLmR1bW15LmJpbiBjb250ZW50Cg==", - "contentType": "application/octet-stream", - "encoding": "base64" - } - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: LICENSE.txt.bin", - "text": { - "content": "dGhpcyBpcyBMSUNFTlNFLnR4dC5iaW4gY29udGVudAo=", - "contentType": "application/octet-stream", - "encoding": "base64" - } - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: NOTICE.bin", - "text": { - "content": "dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UuYmluIGZpbGUuCg==", - "contentType": "application/octet-stream", - "encoding": "base64" - } - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: licenses_a/LICENSE.CC0.bin", - "text": { - "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwLmJpbiBjb250ZW50Cg==", - "contentType": "application/octet-stream", - "encoding": "base64" - } - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: licenses_a/LICENSE.MIT.bin", - "text": { - "content": "dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlULmJpbiBjb250ZW50Cg==", - "contentType": "application/octet-stream", - "encoding": "base64" - } - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: licenses_b/LICENSE.md.bin", - "text": { - "content": "dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQuYmluIGNvbnRlbnQK", - "contentType": "application/octet-stream", - "encoding": "base64" - } - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: licenses_b/legal/NOTICE.txt.bin", - "text": { - "content": "dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQuYmluIGZpbGUuIGl0IGlzIGV4cGVjdGVkIHRvIGJlIGRldGVjdGVkLgo=", - "contentType": "application/octet-stream", - "encoding": "base64" - } - } - } - ] - }, - "licenses": [ - { - "acknowledgement": "declared", - "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" - } - ], - "name": "with-extras", - "type": "application", - "version": "0.1.0" - }, - "properties": [ - { - "name": "cdx:reproducible", - "value": "true" - } - ], - "tools": { - "components": [ - { - "description": "CycloneDX Software Bill of Materials (SBOM) generator for Python projects and environments", - "externalReferences": [ - { - "type": "build-system", - "url": "https://github.com/CycloneDX/cyclonedx-python/actions" - }, - { - "type": "distribution", - "url": "https://pypi.org/project/cyclonedx-bom/" - }, - { - "type": "documentation", - "url": "https://cyclonedx-bom-tool.readthedocs.io/" - }, - { - "type": "issue-tracker", - "url": "https://github.com/CycloneDX/cyclonedx-python/issues" - }, - { - "type": "license", - "url": "https://github.com/CycloneDX/cyclonedx-python/blob/main/LICENSE" - }, - { - "type": "release-notes", - "url": "https://github.com/CycloneDX/cyclonedx-python/blob/main/CHANGELOG.md" - }, - { - "type": "vcs", - "url": "https://github.com/CycloneDX/cyclonedx-python/" - }, - { - "type": "website", - "url": "https://github.com/CycloneDX/cyclonedx-python/#readme" - } - ], - "group": "CycloneDX", - "licenses": [ - { - "license": { - "acknowledgement": "declared", - "id": "Apache-2.0" - } - } - ], - "name": "cyclonedx-py", - "type": "application", - "version": "thisVersion-testing" - }, - { - "description": "stripped", - "externalReferences": [ ], - "group": "CycloneDX", - "licenses": [ ], - "name": "cyclonedx-python-lib", - "type": "library", - "version": "libVersion-testing" - } - ] - } - }, - "version": 1, - "$schema": "http://cyclonedx.org/schema/bom-1.6.schema.json", - "bomFormat": "CycloneDX", - "specVersion": "1.6" -} \ No newline at end of file diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.xml.bin deleted file mode 100644 index b31147bfe..000000000 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.xml.bin +++ /dev/null @@ -1,1429 +0,0 @@ - - - - - - - CycloneDX - cyclonedx-py - thisVersion-testing - CycloneDX Software Bill of Materials (SBOM) generator for Python projects and environments - - - Apache-2.0 - - - - - https://github.com/CycloneDX/cyclonedx-python/actions - - - https://pypi.org/project/cyclonedx-bom/ - - - https://cyclonedx-bom-tool.readthedocs.io/ - - - https://github.com/CycloneDX/cyclonedx-python/issues - - - https://github.com/CycloneDX/cyclonedx-python/blob/main/LICENSE - - - https://github.com/CycloneDX/cyclonedx-python/blob/main/CHANGELOG.md - - - https://github.com/CycloneDX/cyclonedx-python/ - - - https://github.com/CycloneDX/cyclonedx-python/#readme - - - - - CycloneDX - cyclonedx-python-lib - libVersion-testing - - - - - - - - with-extras - 0.1.0 - depenndencies with license declaration accoring to PEP 639 - - MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) - - - - - declared license file: AUTHORS.example.bin - dGhpcyBpcyBBVVRIT1JTLmV4YW1wbGUuYmluIGNvbnRlbnQK - - - declared license file: LICENCE.dummy.bin - dGhpcyBpcyBMSUNFTkNFLmR1bW15LmJpbiBjb250ZW50Cg== - - - declared license file: LICENSE.txt.bin - dGhpcyBpcyBMSUNFTlNFLnR4dC5iaW4gY29udGVudAo= - - - declared license file: NOTICE.bin - dGhpc2lzIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UuYmluIGZpbGUuCg== - - - declared license file: licenses_a/LICENSE.CC0.bin - dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuQ0MwLmJpbiBjb250ZW50Cg== - - - declared license file: licenses_a/LICENSE.MIT.bin - dGhpcyBpcyBsaWNlbnNlc19hL0xJQ0VOU0UuTUlULmJpbiBjb250ZW50Cg== - - - declared license file: licenses_b/LICENSE.md.bin - dGhpcyBpcyBsaWNlbnNlc19iL0xJQ0VOU0UubWQuYmluIGNvbnRlbnQK - - - declared license file: licenses_b/legal/NOTICE.txt.bin - dGhpcyBpcyB0aGUgY29udGVudCBvZiBsaWNlbnNlc19iL2xlZ2FsL05PVElDRS50eHQuYmluIGZpbGUuIGl0IGlzIGV4cGVjdGVkIHRvIGJlIGRldGVjdGVkLgo= - - - - - - true - - - - - attrs - 23.2.0 - Classes Without Boilerplate - - - MIT - - - declared license file: LICENSE - The MIT License (MIT) - -Copyright (c) 2015 Hynek Schlawack and the attrs contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - - - pkg:pypi/attrs@23.2.0 - - - https://www.attrs.org/ - from packaging metadata Project-URL: Documentation - - - https://github.com/sponsors/hynek - from packaging metadata Project-URL: Funding - - - https://tidelift.com/subscription/pkg/pypi-attrs?utm_source=pypi-attrs&utm_medium=pypi - from packaging metadata Project-URL: Tidelift - - - https://www.attrs.org/en/stable/changelog.html - from packaging metadata Project-URL: Changelog - - - https://github.com/python-attrs/attrs - from packaging metadata Project-URL: GitHub - - - - - boolean.py - 4.0 - Define boolean algebras, create and parse boolean expressions and create custom boolean DSL. - - - BSD-2-Clause - - - declared license file: CHANGELOG.rst - -Changelog -========= - - -next ----- - - -4.0 (2022-05-05) ----------------- - -* API changes - - * Drop support for Python 2. - * Test on Python 3.10 - * Make Expression.sort_order an instance attributes and not a class attribute - -* Misc. - - * Correct licensing documentation - * Improve docstringf and apply minor refactorings - * Adopt black code style and isort for imports - * Drop Travis and use GitHub actions for CI - - -3.8 (2020-06-10) ----------------- - -* API changes - - * Add support for evaluation of boolean expression. - Thank you to Lars van Gemerden @gemerden - -* Bug fixes - - * Fix parsing of tokens that have a number as the first character. - Thank you to Jeff Cohen @ jcohen28 - * Restore proper Python 2 compatibility. - Thank you to Benjy Weinberger @benjyw - -* Improve documentation - - * Add pointers to Linux distro packages. - Thank you to Max Mehl @mxmehl and Carmen Bianca Bakker @carmenbianca - * Fix typo. - Thank you to Gabriel Niebler @der-gabe - - -3.7 (2019-10-04) ----------------- - -* API changes - - * Add new sort argument to simplify() to optionally not sort when simplifying - expressions (e.g. not applying "commutativity"). Thank you to Steven Esser - @majurg for this - * Add new argument to tokenizer to optionally accept extra characters in symbol - tokens. Thank you to @carpie for this - - -3.6 (2018-08-06) ----------------- - -* No API changes - -* Bug fixes - - * Fix De Morgan's laws effect on double negation propositions. Thank you to Douglas Cardoso for this - * Improve error checking when parsing - - -3.5 (Nov 1, 2017) ------------------ - -* No API changes - -* Bug fixes - - * Documentation updates and add testing for Python 3.6. Thank you to Alexander Lisianoi @alisianoi - * Improve testng and expression equivalence checks - * Improve subs() method to an expression - - - -3.4 (May 12, 2017) ------------------- - -* No API changes - -* Bug fixes and improvements - - * Fix various documentation typos and improve tests . Thank you to Alexander Lisianoi @alisianoi - * Fix handling for literals vs. symbols in negations Thank you to @YaronK - - -3.3 (2017-02-09) ----------------- - -* API changes - - * #40 and #50 Expression.subs() now takes 'default' thanks to @kronuz - * #45 simplify=False is now the default for parse and related functions or methods. - * #40 Use "&" and "|" as default operators - -* Bug fixes - - * #60 Fix bug for "a or b c" which is not a valid expression - * #58 Fix math formula display in docs - * Improve handling of parse errors - - -2.0.0 (2016-05-11) ------------------- - -* API changes - - * New algebra definition. Refactored class hierarchy. Improved parsing. - -* New features - - * possibility to subclass algebra definition - * new normal forms shortcuts for DNF and CNF. - - -1.1 (2016-04-06) ------------------- - -* Initial release on Pypi. - - - - declared license file: LICENSE.txt - Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation and/or -other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - - declared license file: README.rst - boolean.py -========== - -"boolean.py" is a small library implementing a boolean algebra. It -defines two base elements, TRUE and FALSE, and a Symbol class that can -take on one of these two values. Calculations are done in terms of AND, -OR and NOT - other compositions like XOR and NAND are not implemented -but can be emulated with AND or and NOT. Expressions are constructed -from parsed strings or in Python. - -It runs on Python 3.6+ -You can use older version 3.x for Python 2.7+ support. - -https://github.com/bastikr/boolean.py - -Build status: |Build Status| - - -Example -------- - -:: - - >>> import boolean - >>> algebra = boolean.BooleanAlgebra() - >>> expression1 = algebra.parse(u'apple and (oranges or banana) and not banana', simplify=False) - >>> expression1 - AND(Symbol('apple'), OR(Symbol('oranges'), Symbol('banana')), NOT(Symbol('banana'))) - - >>> expression2 = algebra.parse('(oranges | banana) and not banana & apple', simplify=True) - >>> expression2 - AND(Symbol('apple'), NOT(Symbol('banana')), Symbol('oranges')) - - >>> expression1 == expression2 - False - >>> expression1.simplify() == expression2 - True - - -Documentation -------------- - -http://readthedocs.org/docs/booleanpy/en/latest/ - - -Installation ------------- - -Installation via pip -~~~~~~~~~~~~~~~~~~~~ - -To install boolean.py, you need to have the following pieces of software -on your computer: - -- Python 3.6+ -- pip - -You then only need to run the following command: - -``pip install boolean.py`` - - -Installation via package managers -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -There are packages available for easy install on some operating systems. -You are welcome to help us package this tool for more distributions! - -- boolean.py has been packaged as Arch Linux, Fedora, openSus, - nixpkgs, Guix, DragonFly and FreeBSD - `packages <https://repology.org/project/python:boolean.py/versions>`__ . - -In particular: - -- Arch Linux (AUR): - `python-boolean.py <https://aur.archlinux.org/packages/python-boolean.py/>`__ -- Fedora: - `python-boolean.py <https://apps.fedoraproject.org/packages/python-boolean.py>`__ -- openSUSE: - `python-boolean.py <https://software.opensuse.org/package/python-boolean.py>`__ - - -Testing -------- - -Test ``boolean.py`` with your current Python environment: - -``python setup.py test`` - -Test with all of the supported Python environments using ``tox``: - -:: - - pip install -r requirements-dev.txt - tox - -If ``tox`` throws ``InterpreterNotFound``, limit it to python -interpreters that are actually installed on your machine: - -:: - - tox -e py36 - -Alternatively use pytest. - - -License -------- - -Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others -SPDX-License-Identifier: BSD-2-Clause - -.. |Build Status| image:: https://travis-ci.org/bastikr/boolean.py.svg?branch=master - :target: https://travis-ci.org/bastikr/boolean.py - - - - pkg:pypi/boolean.py@4.0 - - - https://github.com/bastikr/boolean.py - from packaging metadata: Home-page - - - - - cryptography - 43.0.1 - cryptography is a package which provides cryptographic recipes and primitives to Python developers. - - Apache-2.0 OR BSD-3-Clause - - pkg:pypi/cryptography@43.0.1 - - - https://cryptography.io/ - from packaging metadata Project-URL: documentation - - - https://github.com/pyca/cryptography/issues - from packaging metadata Project-URL: issues - - - https://github.com/pyca/cryptography/ - from packaging metadata Project-URL: source - - - https://cryptography.io/en/latest/changelog/ - from packaging metadata Project-URL: changelog - - - https://github.com/pyca/cryptography - from packaging metadata Project-URL: homepage - - - - - - License :: OSI Approved :: Apache Software License - - - License :: OSI Approved :: BSD License - - - declared license file: LICENSE - This software is made available under the terms of *either* of the licenses -found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made -under the terms of *both* these licenses. - - - - declared license file: LICENSE.APACHE - - Apache License - Version 2.0, January 2004 - https://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - https://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - - declared license file: LICENSE.BSD - Copyright (c) Individual contributors. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. Neither the name of PyCA Cryptography nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - - - - - jsonpointer - 2.4 - Identify specific nodes in a JSON document (RFC 6901) - - - License :: OSI Approved :: BSD License - - - declared license file: AUTHORS - Stefan Kögl <stefan@skoegl.net> -Alexander Shorin <kxepal@gmail.com> -Christopher J. White <chris@grierwhite.com> - - - - declared license file: LICENSE.txt - Copyright (c) 2011 Stefan Kögl <stefan@skoegl.net> -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - - - declared license of 'jsonpointer' - Modified BSD License - - - pkg:pypi/jsonpointer@2.4 - - - https://github.com/stefankoegl/python-json-pointer - from packaging metadata: Home-page - - - - - license-expression - 30.3.0 - license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic. - - - Apache-2.0 - - - declared license file: AUTHORS.rst - The following organizations or individuals have contributed to this code: - -- Ayan Sinha Mahapatra @AyanSinhaMahapatra -- Carmen Bianca Bakker @carmenbianca -- Chin-Yeung Li @chinyeungli -- Dennis Clark @DennisClark -- John Horan @johnmhoran -- Jono Yang @JonoYang -- Max Mehl @mxmehl -- nexB Inc. @nexB -- Peter Kolbus @pkolbus -- Philippe Ombredanne @pombredanne -- Sebastian Schuberth @sschuberth -- Steven Esser @majurg -- Thomas Druez @tdruez - - - - declared license file: CHANGELOG.rst - Changelog -========= - -v30.3.0 - 2024-03-18 --------------------- - -This is a minor release without API changes: - -- Use latest skeleton -- Update license list to latest ScanCode and SPDX 3.23 -- Drop support for Python 3.7 - -v30.2.0 - 2023-11-29 --------------------- - -This is a minor release without API changes: - -- Use latest skeleton -- Update license list to latest ScanCode and SPDX 3.22 -- Add Python 3.12 support in CI - - -v30.1.1 - 2023-01-16 ----------------------- - -This is a minor dot release without API changes - -- Use latest skeleton -- Update license list to latest ScanCode and SPDX 3.20 - - -v30.1.0 - 2023-01-16 ----------------------- - -This is a minor release without API changes - -- Use latest skeleton (and updated configure script) -- Update license list to latest ScanCode and SPDX 3.19 -- Use correct syntax for python_require -- Drop using Travis and Appveyor -- Drop support for Python 3.7 and add Python 3.11 in CI - - -v30.0.0 - 2022-05-10 ----------------------- - -This is a minor release with API changes - -- Use latest skeleton (and updated configure script) -- Drop using calver -- Improve error checking when combining licenses - - - -v21.6.14 - 2021-06-14 ----------------------- - -Added -~~~~~ - -- Switch to calver for package versioning to better convey the currency of the - bundled data. - -- Include https://scancode-licensedb.aboutcode.org/ licenses list with - ScanCode (v21.6.7) and SPDX licenses (v3.13) keys. Add new functions to - create Licensing using these licenses as LicenseSymbol. - -- Add new License.dedup() method to deduplicate and simplify license expressions - without over simplifying. - -- Add new License.validate() method to return a new ExpressionInfo object with - details on a license expression validation. - - -Changed -~~~~~~~ -- Drop support for Python 2. -- Adopt the project skeleton from https://github.com/nexB/skeleton - and its new configure script - - -v1.2 - 2019-11-14 ------------------- -Added -~~~~~ -- Add ability to render WITH expression wrapped in parenthesis - -Fixes -~~~~~ -- Fix anomalous backslashes in strings - -Changed -~~~~~~~ -- Update the thirdparty directory structure. - - -v1.0 - 2019-10-16 ------------------- -Added -~~~~~ -- New version of boolean.py library -- Add ability to leave license expressions unsorted when simplifying - -Changed -~~~~~~~ -- updated travis CI settings - - -v0.999 - 2019-04-29 --------------------- -- Initial release -- license-expression is small utility library to parse, compare and - simplify and normalize license expressions. - - - - - declared license file: CODE_OF_CONDUCT.rst - Contributor Covenant Code of Conduct -==================================== - -Our Pledge ----------- - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our -project and our community a harassment-free experience for everyone, -regardless of age, body size, disability, ethnicity, gender identity and -expression, level of experience, education, socio-economic status, -nationality, personal appearance, race, religion, or sexual identity and -orientation. - -Our Standards -------------- - -Examples of behavior that contributes to creating a positive environment -include: - -- Using welcoming and inclusive language -- Being respectful of differing viewpoints and experiences -- Gracefully accepting constructive criticism -- Focusing on what is best for the community -- Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -- The use of sexualized language or imagery and unwelcome sexual - attention or advances -- Trolling, insulting/derogatory comments, and personal or political - attacks -- Public or private harassment -- Publishing others’ private information, such as a physical or - electronic address, without explicit permission -- Other conduct which could reasonably be considered inappropriate in a - professional setting - -Our Responsibilities --------------------- - -Project maintainers are responsible for clarifying the standards of -acceptable behavior and are expected to take appropriate and fair -corrective action in response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, -or reject comments, commits, code, wiki edits, issues, and other -contributions that are not aligned to this Code of Conduct, or to ban -temporarily or permanently any contributor for other behaviors that they -deem inappropriate, threatening, offensive, or harmful. - -Scope ------ - -This Code of Conduct applies both within project spaces and in public -spaces when an individual is representing the project or its community. -Examples of representing a project or community include using an -official project e-mail address, posting via an official social media -account, or acting as an appointed representative at an online or -offline event. Representation of a project may be further defined and -clarified by project maintainers. - -Enforcement ------------ - -Instances of abusive, harassing, or otherwise unacceptable behavior may -be reported by contacting the project team at pombredanne@gmail.com -or on the Gitter chat channel at https://gitter.im/aboutcode-org/discuss . -All complaints will be reviewed and investigated and will result in a -response that is deemed necessary and appropriate to the circumstances. -The project team is obligated to maintain confidentiality with regard to -the reporter of an incident. Further details of specific enforcement -policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in -good faith may face temporary or permanent repercussions as determined -by other members of the project’s leadership. - -Attribution ------------ - -This Code of Conduct is adapted from the `Contributor Covenant`_ , -version 1.4, available at -https://www.contributor-covenant.org/version/1/4/code-of-conduct.html - -.. _Contributor Covenant: https://www.contributor-covenant.org - - - - declared license file: NOTICE - # -# Copyright (c) nexB Inc. and others. -# SPDX-License-Identifier: Apache-2.0 -# -# Visit https://aboutcode.org and https://github.com/nexB/license-expression -# for support and download. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - - - - declared license file: apache-2.0.LICENSE - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - - pkg:pypi/license-expression@30.3.0 - - - https://github.com/nexB/license-expression - from packaging metadata: Home-page - - - - - lxml - 5.3.0 - Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. - - - BSD-3-Clause - - - License :: OSI Approved :: BSD License - - - declared license file: LICENSE.txt - Copyright (c) 2004 Infrae. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - 3. Neither the name of Infrae nor the names of its contributors may - be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INFRAE OR -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - - declared license file: LICENSES.txt - lxml is copyright Infrae and distributed under the BSD license (see -doc/licenses/BSD.txt), with the following exceptions: - -Some code, such a selftest.py, selftest2.py and -src/lxml/_elementpath.py are derived from ElementTree and -cElementTree. See doc/licenses/elementtree.txt for the license text. - -lxml.cssselect and lxml.html are copyright Ian Bicking and distributed -under the BSD license (see doc/licenses/BSD.txt). - -test.py, the test-runner script, is GPL and copyright Shuttleworth -Foundation. See doc/licenses/GPL.txt. It is believed the unchanged -inclusion of test.py to run the unit test suite falls under the -"aggregation" clause of the GPL and thus does not affect the license -of the rest of the package. - -The isoschematron implementation uses several XSL and RelaxNG resources: - * The (XML syntax) RelaxNG schema for schematron, copyright International - Organization for Standardization (see - src/lxml/isoschematron/resources/rng/iso-schematron.rng for the license - text) - * The skeleton iso-schematron-xlt1 pure-xslt schematron implementation - xsl stylesheets, copyright Rick Jelliffe and Academia Sinica Computing - Center, Taiwan (see the xsl files here for the license text: - src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/) - * The xsd/rng schema schematron extraction xsl transformations are unlicensed - and copyright the respective authors as noted (see - src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl and - src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl) - - - - pkg:pypi/lxml@5.3.0 - - - https://github.com/lxml/lxml - from packaging metadata Project-URL: Source - - - https://lxml.de/ - from packaging metadata: Home-page - - - - - regression-issue868 - 0.1 - - - declared license file: my_licenses/richtext.rtf - e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA= - - - declared license file: my_licenses/utf-16be_withBOM.txt - this file is -utf-16be encoded -with BOM -😃 - - - - declared license file: my_licenses/utf-16le_withBOM.txt - this file is -utf-16le encoded -with BOM -😃 - - - - declared license file: my_licenses/utf-8_noBOM.txt - this file is -utf-8 encoded -without BOM -😃 - - - - declared license file: my_licenses/utf-8_withBOM.txt - this file is -utf-8 encoded -with BOM -😃 - - - - - - file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 - PackageSource: Local - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.0.xml.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.0.xml.bin deleted file mode 100644 index 0fd15f6d0..000000000 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.0.xml.bin +++ /dev/null @@ -1,52 +0,0 @@ - - - - - attrs - 23.2.0 - Classes Without Boilerplate - pkg:pypi/attrs@23.2.0 - false - - - boolean.py - 4.0 - Define boolean algebras, create and parse boolean expressions and create custom boolean DSL. - pkg:pypi/boolean.py@4.0 - false - - - cryptography - 43.0.1 - cryptography is a package which provides cryptographic recipes and primitives to Python developers. - pkg:pypi/cryptography@43.0.1 - false - - - jsonpointer - 2.4 - Identify specific nodes in a JSON document (RFC 6901) - pkg:pypi/jsonpointer@2.4 - false - - - license-expression - 30.3.0 - license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic. - pkg:pypi/license-expression@30.3.0 - false - - - lxml - 5.3.0 - Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. - pkg:pypi/lxml@5.3.0 - false - - - regression-issue868 - 0.1 - false - - - diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.1.xml.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.1.xml.bin deleted file mode 100644 index 11dccab11..000000000 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.1.xml.bin +++ /dev/null @@ -1,154 +0,0 @@ - - - - - attrs - 23.2.0 - Classes Without Boilerplate - - - MIT - - - pkg:pypi/attrs@23.2.0 - - - https://www.attrs.org/ - from packaging metadata Project-URL: Documentation - - - https://github.com/sponsors/hynek - from packaging metadata Project-URL: Funding - - - https://tidelift.com/subscription/pkg/pypi-attrs?utm_source=pypi-attrs&utm_medium=pypi - from packaging metadata Project-URL: Tidelift - - - https://www.attrs.org/en/stable/changelog.html - from packaging metadata Project-URL: Changelog - - - https://github.com/python-attrs/attrs - from packaging metadata Project-URL: GitHub - - - - - boolean.py - 4.0 - Define boolean algebras, create and parse boolean expressions and create custom boolean DSL. - - - BSD-2-Clause - - - pkg:pypi/boolean.py@4.0 - - - https://github.com/bastikr/boolean.py - from packaging metadata: Home-page - - - - - cryptography - 43.0.1 - cryptography is a package which provides cryptographic recipes and primitives to Python developers. - - Apache-2.0 OR BSD-3-Clause - - pkg:pypi/cryptography@43.0.1 - - - https://cryptography.io/ - from packaging metadata Project-URL: documentation - - - https://github.com/pyca/cryptography/issues - from packaging metadata Project-URL: issues - - - https://github.com/pyca/cryptography/ - from packaging metadata Project-URL: source - - - https://cryptography.io/en/latest/changelog/ - from packaging metadata Project-URL: changelog - - - https://github.com/pyca/cryptography - from packaging metadata Project-URL: homepage - - - - - jsonpointer - 2.4 - Identify specific nodes in a JSON document (RFC 6901) - - - License :: OSI Approved :: BSD License - - - pkg:pypi/jsonpointer@2.4 - - - https://github.com/stefankoegl/python-json-pointer - from packaging metadata: Home-page - - - - - license-expression - 30.3.0 - license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic. - - - Apache-2.0 - - - pkg:pypi/license-expression@30.3.0 - - - https://github.com/nexB/license-expression - from packaging metadata: Home-page - - - - - lxml - 5.3.0 - Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. - - - BSD-3-Clause - - - License :: OSI Approved :: BSD License - - - pkg:pypi/lxml@5.3.0 - - - https://github.com/lxml/lxml - from packaging metadata Project-URL: Source - - - https://lxml.de/ - from packaging metadata: Home-page - - - - - regression-issue868 - 0.1 - - - file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 - PackageSource: Local - - - - - diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.2.json.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.2.json.bin deleted file mode 100644 index 6789eee25..000000000 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.2.json.bin +++ /dev/null @@ -1,265 +0,0 @@ -{ - "components": [ - { - "bom-ref": "attrs==23.2.0", - "description": "Classes Without Boilerplate", - "externalReferences": [ - { - "comment": "from packaging metadata Project-URL: Documentation", - "type": "documentation", - "url": "https://www.attrs.org/" - }, - { - "comment": "from packaging metadata Project-URL: Funding", - "type": "other", - "url": "https://github.com/sponsors/hynek" - }, - { - "comment": "from packaging metadata Project-URL: Tidelift", - "type": "other", - "url": "https://tidelift.com/subscription/pkg/pypi-attrs?utm_source=pypi-attrs&utm_medium=pypi" - }, - { - "comment": "from packaging metadata Project-URL: Changelog", - "type": "other", - "url": "https://www.attrs.org/en/stable/changelog.html" - }, - { - "comment": "from packaging metadata Project-URL: GitHub", - "type": "vcs", - "url": "https://github.com/python-attrs/attrs" - } - ], - "licenses": [ - { - "license": { - "id": "MIT" - } - } - ], - "name": "attrs", - "purl": "pkg:pypi/attrs@23.2.0", - "type": "library", - "version": "23.2.0" - }, - { - "bom-ref": "boolean.py==4.0", - "description": "Define boolean algebras, create and parse boolean expressions and create custom boolean DSL.", - "externalReferences": [ - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://github.com/bastikr/boolean.py" - } - ], - "licenses": [ - { - "license": { - "id": "BSD-2-Clause" - } - } - ], - "name": "boolean.py", - "purl": "pkg:pypi/boolean.py@4.0", - "type": "library", - "version": "4.0" - }, - { - "bom-ref": "cryptography==43.0.1", - "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", - "externalReferences": [ - { - "comment": "from packaging metadata Project-URL: documentation", - "type": "documentation", - "url": "https://cryptography.io/" - }, - { - "comment": "from packaging metadata Project-URL: issues", - "type": "issue-tracker", - "url": "https://github.com/pyca/cryptography/issues" - }, - { - "comment": "from packaging metadata Project-URL: source", - "type": "other", - "url": "https://github.com/pyca/cryptography/" - }, - { - "comment": "from packaging metadata Project-URL: changelog", - "type": "other", - "url": "https://cryptography.io/en/latest/changelog/" - }, - { - "comment": "from packaging metadata Project-URL: homepage", - "type": "website", - "url": "https://github.com/pyca/cryptography" - } - ], - "licenses": [ - { - "expression": "Apache-2.0 OR BSD-3-Clause" - } - ], - "name": "cryptography", - "purl": "pkg:pypi/cryptography@43.0.1", - "type": "library", - "version": "43.0.1" - }, - { - "bom-ref": "jsonpointer==2.4", - "description": "Identify specific nodes in a JSON document (RFC 6901) ", - "externalReferences": [ - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://github.com/stefankoegl/python-json-pointer" - } - ], - "licenses": [ - { - "license": { - "name": "License :: OSI Approved :: BSD License" - } - } - ], - "name": "jsonpointer", - "purl": "pkg:pypi/jsonpointer@2.4", - "type": "library", - "version": "2.4" - }, - { - "bom-ref": "license-expression==30.3.0", - "description": "license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic.", - "externalReferences": [ - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://github.com/nexB/license-expression" - } - ], - "licenses": [ - { - "license": { - "id": "Apache-2.0" - } - } - ], - "name": "license-expression", - "purl": "pkg:pypi/license-expression@30.3.0", - "type": "library", - "version": "30.3.0" - }, - { - "bom-ref": "lxml==5.3.0", - "description": "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API.", - "externalReferences": [ - { - "comment": "from packaging metadata Project-URL: Source", - "type": "other", - "url": "https://github.com/lxml/lxml" - }, - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://lxml.de/" - } - ], - "licenses": [ - { - "license": { - "id": "BSD-3-Clause" - } - }, - { - "license": { - "name": "License :: OSI Approved :: BSD License" - } - } - ], - "name": "lxml", - "purl": "pkg:pypi/lxml@5.3.0", - "type": "library", - "version": "5.3.0" - }, - { - "bom-ref": "regression-issue868==0.1", - "externalReferences": [ - { - "comment": "PackageSource: Local", - "type": "distribution", - "url": "file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868" - } - ], - "name": "regression-issue868", - "type": "library", - "version": "0.1" - } - ], - "dependencies": [ - { - "ref": "attrs==23.2.0" - }, - { - "ref": "boolean.py==4.0" - }, - { - "ref": "cryptography==43.0.1" - }, - { - "ref": "jsonpointer==2.4" - }, - { - "dependsOn": [ - "boolean.py==4.0" - ], - "ref": "license-expression==30.3.0" - }, - { - "ref": "lxml==5.3.0" - }, - { - "ref": "regression-issue868==0.1" - }, - { - "dependsOn": [ - "attrs==23.2.0", - "boolean.py==4.0", - "cryptography==43.0.1", - "jsonpointer==2.4", - "license-expression==30.3.0", - "lxml==5.3.0", - "regression-issue868==0.1" - ], - "ref": "root-component" - } - ], - "metadata": { - "component": { - "bom-ref": "root-component", - "description": "depenndencies with license declaration accoring to PEP 639", - "licenses": [ - { - "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" - } - ], - "name": "with-extras", - "type": "application", - "version": "0.1.0" - }, - "tools": [ - { - "name": "cyclonedx-py", - "vendor": "CycloneDX", - "version": "thisVersion-testing" - }, - { - "name": "cyclonedx-python-lib", - "vendor": "CycloneDX", - "version": "libVersion-testing" - } - ] - }, - "version": 1, - "$schema": "http://cyclonedx.org/schema/bom-1.2b.schema.json", - "bomFormat": "CycloneDX", - "specVersion": "1.2" -} \ No newline at end of file diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.2.xml.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.2.xml.bin deleted file mode 100644 index ad5f02893..000000000 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.2.xml.bin +++ /dev/null @@ -1,196 +0,0 @@ - - - - - - CycloneDX - cyclonedx-py - thisVersion-testing - - - CycloneDX - cyclonedx-python-lib - libVersion-testing - - - - with-extras - 0.1.0 - depenndencies with license declaration accoring to PEP 639 - - MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) - - - - - - attrs - 23.2.0 - Classes Without Boilerplate - - - MIT - - - pkg:pypi/attrs@23.2.0 - - - https://www.attrs.org/ - from packaging metadata Project-URL: Documentation - - - https://github.com/sponsors/hynek - from packaging metadata Project-URL: Funding - - - https://tidelift.com/subscription/pkg/pypi-attrs?utm_source=pypi-attrs&utm_medium=pypi - from packaging metadata Project-URL: Tidelift - - - https://www.attrs.org/en/stable/changelog.html - from packaging metadata Project-URL: Changelog - - - https://github.com/python-attrs/attrs - from packaging metadata Project-URL: GitHub - - - - - boolean.py - 4.0 - Define boolean algebras, create and parse boolean expressions and create custom boolean DSL. - - - BSD-2-Clause - - - pkg:pypi/boolean.py@4.0 - - - https://github.com/bastikr/boolean.py - from packaging metadata: Home-page - - - - - cryptography - 43.0.1 - cryptography is a package which provides cryptographic recipes and primitives to Python developers. - - Apache-2.0 OR BSD-3-Clause - - pkg:pypi/cryptography@43.0.1 - - - https://cryptography.io/ - from packaging metadata Project-URL: documentation - - - https://github.com/pyca/cryptography/issues - from packaging metadata Project-URL: issues - - - https://github.com/pyca/cryptography/ - from packaging metadata Project-URL: source - - - https://cryptography.io/en/latest/changelog/ - from packaging metadata Project-URL: changelog - - - https://github.com/pyca/cryptography - from packaging metadata Project-URL: homepage - - - - - jsonpointer - 2.4 - Identify specific nodes in a JSON document (RFC 6901) - - - License :: OSI Approved :: BSD License - - - pkg:pypi/jsonpointer@2.4 - - - https://github.com/stefankoegl/python-json-pointer - from packaging metadata: Home-page - - - - - license-expression - 30.3.0 - license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic. - - - Apache-2.0 - - - pkg:pypi/license-expression@30.3.0 - - - https://github.com/nexB/license-expression - from packaging metadata: Home-page - - - - - lxml - 5.3.0 - Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. - - - BSD-3-Clause - - - License :: OSI Approved :: BSD License - - - pkg:pypi/lxml@5.3.0 - - - https://github.com/lxml/lxml - from packaging metadata Project-URL: Source - - - https://lxml.de/ - from packaging metadata: Home-page - - - - - regression-issue868 - 0.1 - - - file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 - PackageSource: Local - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.3.json.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.3.json.bin deleted file mode 100644 index 9334dd23d..000000000 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.3.json.bin +++ /dev/null @@ -1,285 +0,0 @@ -{ - "components": [ - { - "bom-ref": "attrs==23.2.0", - "description": "Classes Without Boilerplate", - "externalReferences": [ - { - "comment": "from packaging metadata Project-URL: Documentation", - "type": "documentation", - "url": "https://www.attrs.org/" - }, - { - "comment": "from packaging metadata Project-URL: Funding", - "type": "other", - "url": "https://github.com/sponsors/hynek" - }, - { - "comment": "from packaging metadata Project-URL: Tidelift", - "type": "other", - "url": "https://tidelift.com/subscription/pkg/pypi-attrs?utm_source=pypi-attrs&utm_medium=pypi" - }, - { - "comment": "from packaging metadata Project-URL: Changelog", - "type": "other", - "url": "https://www.attrs.org/en/stable/changelog.html" - }, - { - "comment": "from packaging metadata Project-URL: GitHub", - "type": "vcs", - "url": "https://github.com/python-attrs/attrs" - } - ], - "licenses": [ - { - "license": { - "id": "MIT" - } - } - ], - "name": "attrs", - "purl": "pkg:pypi/attrs@23.2.0", - "type": "library", - "version": "23.2.0" - }, - { - "bom-ref": "boolean.py==4.0", - "description": "Define boolean algebras, create and parse boolean expressions and create custom boolean DSL.", - "externalReferences": [ - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://github.com/bastikr/boolean.py" - } - ], - "licenses": [ - { - "license": { - "id": "BSD-2-Clause" - } - } - ], - "name": "boolean.py", - "purl": "pkg:pypi/boolean.py@4.0", - "type": "library", - "version": "4.0" - }, - { - "bom-ref": "cryptography==43.0.1", - "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", - "evidence": { - "licenses": [ - { - "license": { - "name": "License :: OSI Approved :: Apache Software License" - } - }, - { - "license": { - "name": "License :: OSI Approved :: BSD License" - } - } - ] - }, - "externalReferences": [ - { - "comment": "from packaging metadata Project-URL: documentation", - "type": "documentation", - "url": "https://cryptography.io/" - }, - { - "comment": "from packaging metadata Project-URL: issues", - "type": "issue-tracker", - "url": "https://github.com/pyca/cryptography/issues" - }, - { - "comment": "from packaging metadata Project-URL: source", - "type": "other", - "url": "https://github.com/pyca/cryptography/" - }, - { - "comment": "from packaging metadata Project-URL: changelog", - "type": "other", - "url": "https://cryptography.io/en/latest/changelog/" - }, - { - "comment": "from packaging metadata Project-URL: homepage", - "type": "website", - "url": "https://github.com/pyca/cryptography" - } - ], - "licenses": [ - { - "expression": "Apache-2.0 OR BSD-3-Clause" - } - ], - "name": "cryptography", - "purl": "pkg:pypi/cryptography@43.0.1", - "type": "library", - "version": "43.0.1" - }, - { - "bom-ref": "jsonpointer==2.4", - "description": "Identify specific nodes in a JSON document (RFC 6901) ", - "externalReferences": [ - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://github.com/stefankoegl/python-json-pointer" - } - ], - "licenses": [ - { - "license": { - "name": "License :: OSI Approved :: BSD License" - } - } - ], - "name": "jsonpointer", - "purl": "pkg:pypi/jsonpointer@2.4", - "type": "library", - "version": "2.4" - }, - { - "bom-ref": "license-expression==30.3.0", - "description": "license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic.", - "externalReferences": [ - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://github.com/nexB/license-expression" - } - ], - "licenses": [ - { - "license": { - "id": "Apache-2.0" - } - } - ], - "name": "license-expression", - "purl": "pkg:pypi/license-expression@30.3.0", - "type": "library", - "version": "30.3.0" - }, - { - "bom-ref": "lxml==5.3.0", - "description": "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API.", - "externalReferences": [ - { - "comment": "from packaging metadata Project-URL: Source", - "type": "other", - "url": "https://github.com/lxml/lxml" - }, - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://lxml.de/" - } - ], - "licenses": [ - { - "license": { - "id": "BSD-3-Clause" - } - }, - { - "license": { - "name": "License :: OSI Approved :: BSD License" - } - } - ], - "name": "lxml", - "purl": "pkg:pypi/lxml@5.3.0", - "type": "library", - "version": "5.3.0" - }, - { - "bom-ref": "regression-issue868==0.1", - "externalReferences": [ - { - "comment": "PackageSource: Local", - "type": "distribution", - "url": "file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868" - } - ], - "name": "regression-issue868", - "type": "library", - "version": "0.1" - } - ], - "dependencies": [ - { - "ref": "attrs==23.2.0" - }, - { - "ref": "boolean.py==4.0" - }, - { - "ref": "cryptography==43.0.1" - }, - { - "ref": "jsonpointer==2.4" - }, - { - "dependsOn": [ - "boolean.py==4.0" - ], - "ref": "license-expression==30.3.0" - }, - { - "ref": "lxml==5.3.0" - }, - { - "ref": "regression-issue868==0.1" - }, - { - "dependsOn": [ - "attrs==23.2.0", - "boolean.py==4.0", - "cryptography==43.0.1", - "jsonpointer==2.4", - "license-expression==30.3.0", - "lxml==5.3.0", - "regression-issue868==0.1" - ], - "ref": "root-component" - } - ], - "metadata": { - "component": { - "bom-ref": "root-component", - "description": "depenndencies with license declaration accoring to PEP 639", - "licenses": [ - { - "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" - } - ], - "name": "with-extras", - "type": "application", - "version": "0.1.0" - }, - "properties": [ - { - "name": "cdx:reproducible", - "value": "true" - } - ], - "tools": [ - { - "name": "cyclonedx-py", - "vendor": "CycloneDX", - "version": "thisVersion-testing" - }, - { - "name": "cyclonedx-python-lib", - "vendor": "CycloneDX", - "version": "libVersion-testing" - } - ] - }, - "version": 1, - "$schema": "http://cyclonedx.org/schema/bom-1.3a.schema.json", - "bomFormat": "CycloneDX", - "specVersion": "1.3" -} \ No newline at end of file diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.3.xml.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.3.xml.bin deleted file mode 100644 index f725178ae..000000000 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.3.xml.bin +++ /dev/null @@ -1,209 +0,0 @@ - - - - - - CycloneDX - cyclonedx-py - thisVersion-testing - - - CycloneDX - cyclonedx-python-lib - libVersion-testing - - - - with-extras - 0.1.0 - depenndencies with license declaration accoring to PEP 639 - - MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) - - - - true - - - - - attrs - 23.2.0 - Classes Without Boilerplate - - - MIT - - - pkg:pypi/attrs@23.2.0 - - - https://www.attrs.org/ - from packaging metadata Project-URL: Documentation - - - https://github.com/sponsors/hynek - from packaging metadata Project-URL: Funding - - - https://tidelift.com/subscription/pkg/pypi-attrs?utm_source=pypi-attrs&utm_medium=pypi - from packaging metadata Project-URL: Tidelift - - - https://www.attrs.org/en/stable/changelog.html - from packaging metadata Project-URL: Changelog - - - https://github.com/python-attrs/attrs - from packaging metadata Project-URL: GitHub - - - - - boolean.py - 4.0 - Define boolean algebras, create and parse boolean expressions and create custom boolean DSL. - - - BSD-2-Clause - - - pkg:pypi/boolean.py@4.0 - - - https://github.com/bastikr/boolean.py - from packaging metadata: Home-page - - - - - cryptography - 43.0.1 - cryptography is a package which provides cryptographic recipes and primitives to Python developers. - - Apache-2.0 OR BSD-3-Clause - - pkg:pypi/cryptography@43.0.1 - - - https://cryptography.io/ - from packaging metadata Project-URL: documentation - - - https://github.com/pyca/cryptography/issues - from packaging metadata Project-URL: issues - - - https://github.com/pyca/cryptography/ - from packaging metadata Project-URL: source - - - https://cryptography.io/en/latest/changelog/ - from packaging metadata Project-URL: changelog - - - https://github.com/pyca/cryptography - from packaging metadata Project-URL: homepage - - - - - - License :: OSI Approved :: Apache Software License - - - License :: OSI Approved :: BSD License - - - - - - jsonpointer - 2.4 - Identify specific nodes in a JSON document (RFC 6901) - - - License :: OSI Approved :: BSD License - - - pkg:pypi/jsonpointer@2.4 - - - https://github.com/stefankoegl/python-json-pointer - from packaging metadata: Home-page - - - - - license-expression - 30.3.0 - license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic. - - - Apache-2.0 - - - pkg:pypi/license-expression@30.3.0 - - - https://github.com/nexB/license-expression - from packaging metadata: Home-page - - - - - lxml - 5.3.0 - Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. - - - BSD-3-Clause - - - License :: OSI Approved :: BSD License - - - pkg:pypi/lxml@5.3.0 - - - https://github.com/lxml/lxml - from packaging metadata Project-URL: Source - - - https://lxml.de/ - from packaging metadata: Home-page - - - - - regression-issue868 - 0.1 - - - file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 - PackageSource: Local - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.4.json.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.4.json.bin deleted file mode 100644 index fb6420211..000000000 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.4.json.bin +++ /dev/null @@ -1,320 +0,0 @@ -{ - "components": [ - { - "bom-ref": "attrs==23.2.0", - "description": "Classes Without Boilerplate", - "externalReferences": [ - { - "comment": "from packaging metadata Project-URL: Documentation", - "type": "documentation", - "url": "https://www.attrs.org/" - }, - { - "comment": "from packaging metadata Project-URL: Funding", - "type": "other", - "url": "https://github.com/sponsors/hynek" - }, - { - "comment": "from packaging metadata Project-URL: Tidelift", - "type": "other", - "url": "https://tidelift.com/subscription/pkg/pypi-attrs?utm_source=pypi-attrs&utm_medium=pypi" - }, - { - "comment": "from packaging metadata Project-URL: Changelog", - "type": "release-notes", - "url": "https://www.attrs.org/en/stable/changelog.html" - }, - { - "comment": "from packaging metadata Project-URL: GitHub", - "type": "vcs", - "url": "https://github.com/python-attrs/attrs" - } - ], - "licenses": [ - { - "license": { - "id": "MIT" - } - } - ], - "name": "attrs", - "purl": "pkg:pypi/attrs@23.2.0", - "type": "library", - "version": "23.2.0" - }, - { - "bom-ref": "boolean.py==4.0", - "description": "Define boolean algebras, create and parse boolean expressions and create custom boolean DSL.", - "externalReferences": [ - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://github.com/bastikr/boolean.py" - } - ], - "licenses": [ - { - "license": { - "id": "BSD-2-Clause" - } - } - ], - "name": "boolean.py", - "purl": "pkg:pypi/boolean.py@4.0", - "type": "library", - "version": "4.0" - }, - { - "bom-ref": "cryptography==43.0.1", - "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", - "evidence": { - "licenses": [ - { - "license": { - "name": "License :: OSI Approved :: Apache Software License" - } - }, - { - "license": { - "name": "License :: OSI Approved :: BSD License" - } - } - ] - }, - "externalReferences": [ - { - "comment": "from packaging metadata Project-URL: documentation", - "type": "documentation", - "url": "https://cryptography.io/" - }, - { - "comment": "from packaging metadata Project-URL: issues", - "type": "issue-tracker", - "url": "https://github.com/pyca/cryptography/issues" - }, - { - "comment": "from packaging metadata Project-URL: source", - "type": "other", - "url": "https://github.com/pyca/cryptography/" - }, - { - "comment": "from packaging metadata Project-URL: changelog", - "type": "release-notes", - "url": "https://cryptography.io/en/latest/changelog/" - }, - { - "comment": "from packaging metadata Project-URL: homepage", - "type": "website", - "url": "https://github.com/pyca/cryptography" - } - ], - "licenses": [ - { - "expression": "Apache-2.0 OR BSD-3-Clause" - } - ], - "name": "cryptography", - "purl": "pkg:pypi/cryptography@43.0.1", - "type": "library", - "version": "43.0.1" - }, - { - "bom-ref": "jsonpointer==2.4", - "description": "Identify specific nodes in a JSON document (RFC 6901) ", - "externalReferences": [ - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://github.com/stefankoegl/python-json-pointer" - } - ], - "licenses": [ - { - "license": { - "name": "License :: OSI Approved :: BSD License" - } - } - ], - "name": "jsonpointer", - "purl": "pkg:pypi/jsonpointer@2.4", - "type": "library", - "version": "2.4" - }, - { - "bom-ref": "license-expression==30.3.0", - "description": "license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic.", - "externalReferences": [ - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://github.com/nexB/license-expression" - } - ], - "licenses": [ - { - "license": { - "id": "Apache-2.0" - } - } - ], - "name": "license-expression", - "purl": "pkg:pypi/license-expression@30.3.0", - "type": "library", - "version": "30.3.0" - }, - { - "bom-ref": "lxml==5.3.0", - "description": "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API.", - "externalReferences": [ - { - "comment": "from packaging metadata Project-URL: Source", - "type": "other", - "url": "https://github.com/lxml/lxml" - }, - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://lxml.de/" - } - ], - "licenses": [ - { - "license": { - "id": "BSD-3-Clause" - } - }, - { - "license": { - "name": "License :: OSI Approved :: BSD License" - } - } - ], - "name": "lxml", - "purl": "pkg:pypi/lxml@5.3.0", - "type": "library", - "version": "5.3.0" - }, - { - "bom-ref": "regression-issue868==0.1", - "externalReferences": [ - { - "comment": "PackageSource: Local", - "type": "distribution", - "url": "file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868" - } - ], - "name": "regression-issue868", - "type": "library", - "version": "0.1" - } - ], - "dependencies": [ - { - "ref": "attrs==23.2.0" - }, - { - "ref": "boolean.py==4.0" - }, - { - "ref": "cryptography==43.0.1" - }, - { - "ref": "jsonpointer==2.4" - }, - { - "dependsOn": [ - "boolean.py==4.0" - ], - "ref": "license-expression==30.3.0" - }, - { - "ref": "lxml==5.3.0" - }, - { - "ref": "regression-issue868==0.1" - }, - { - "dependsOn": [ - "attrs==23.2.0", - "boolean.py==4.0", - "cryptography==43.0.1", - "jsonpointer==2.4", - "license-expression==30.3.0", - "lxml==5.3.0", - "regression-issue868==0.1" - ], - "ref": "root-component" - } - ], - "metadata": { - "component": { - "bom-ref": "root-component", - "description": "depenndencies with license declaration accoring to PEP 639", - "licenses": [ - { - "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" - } - ], - "name": "with-extras", - "type": "application", - "version": "0.1.0" - }, - "properties": [ - { - "name": "cdx:reproducible", - "value": "true" - } - ], - "tools": [ - { - "externalReferences": [ - { - "type": "build-system", - "url": "https://github.com/CycloneDX/cyclonedx-python/actions" - }, - { - "type": "distribution", - "url": "https://pypi.org/project/cyclonedx-bom/" - }, - { - "type": "documentation", - "url": "https://cyclonedx-bom-tool.readthedocs.io/" - }, - { - "type": "issue-tracker", - "url": "https://github.com/CycloneDX/cyclonedx-python/issues" - }, - { - "type": "license", - "url": "https://github.com/CycloneDX/cyclonedx-python/blob/main/LICENSE" - }, - { - "type": "release-notes", - "url": "https://github.com/CycloneDX/cyclonedx-python/blob/main/CHANGELOG.md" - }, - { - "type": "vcs", - "url": "https://github.com/CycloneDX/cyclonedx-python/" - }, - { - "type": "website", - "url": "https://github.com/CycloneDX/cyclonedx-python/#readme" - } - ], - "name": "cyclonedx-py", - "vendor": "CycloneDX", - "version": "thisVersion-testing" - }, - { - "externalReferences": [ ], - "name": "cyclonedx-python-lib", - "vendor": "CycloneDX", - "version": "libVersion-testing" - } - ] - }, - "version": 1, - "$schema": "http://cyclonedx.org/schema/bom-1.4.schema.json", - "bomFormat": "CycloneDX", - "specVersion": "1.4" -} \ No newline at end of file diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.4.xml.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.4.xml.bin deleted file mode 100644 index 92849ffd9..000000000 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.4.xml.bin +++ /dev/null @@ -1,236 +0,0 @@ - - - - - - CycloneDX - cyclonedx-py - thisVersion-testing - - - https://github.com/CycloneDX/cyclonedx-python/actions - - - https://pypi.org/project/cyclonedx-bom/ - - - https://cyclonedx-bom-tool.readthedocs.io/ - - - https://github.com/CycloneDX/cyclonedx-python/issues - - - https://github.com/CycloneDX/cyclonedx-python/blob/main/LICENSE - - - https://github.com/CycloneDX/cyclonedx-python/blob/main/CHANGELOG.md - - - https://github.com/CycloneDX/cyclonedx-python/ - - - https://github.com/CycloneDX/cyclonedx-python/#readme - - - - - CycloneDX - cyclonedx-python-lib - libVersion-testing - - - - - with-extras - 0.1.0 - depenndencies with license declaration accoring to PEP 639 - - MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) - - - - true - - - - - attrs - 23.2.0 - Classes Without Boilerplate - - - MIT - - - pkg:pypi/attrs@23.2.0 - - - https://www.attrs.org/ - from packaging metadata Project-URL: Documentation - - - https://github.com/sponsors/hynek - from packaging metadata Project-URL: Funding - - - https://tidelift.com/subscription/pkg/pypi-attrs?utm_source=pypi-attrs&utm_medium=pypi - from packaging metadata Project-URL: Tidelift - - - https://www.attrs.org/en/stable/changelog.html - from packaging metadata Project-URL: Changelog - - - https://github.com/python-attrs/attrs - from packaging metadata Project-URL: GitHub - - - - - boolean.py - 4.0 - Define boolean algebras, create and parse boolean expressions and create custom boolean DSL. - - - BSD-2-Clause - - - pkg:pypi/boolean.py@4.0 - - - https://github.com/bastikr/boolean.py - from packaging metadata: Home-page - - - - - cryptography - 43.0.1 - cryptography is a package which provides cryptographic recipes and primitives to Python developers. - - Apache-2.0 OR BSD-3-Clause - - pkg:pypi/cryptography@43.0.1 - - - https://cryptography.io/ - from packaging metadata Project-URL: documentation - - - https://github.com/pyca/cryptography/issues - from packaging metadata Project-URL: issues - - - https://github.com/pyca/cryptography/ - from packaging metadata Project-URL: source - - - https://cryptography.io/en/latest/changelog/ - from packaging metadata Project-URL: changelog - - - https://github.com/pyca/cryptography - from packaging metadata Project-URL: homepage - - - - - - License :: OSI Approved :: Apache Software License - - - License :: OSI Approved :: BSD License - - - - - - jsonpointer - 2.4 - Identify specific nodes in a JSON document (RFC 6901) - - - License :: OSI Approved :: BSD License - - - pkg:pypi/jsonpointer@2.4 - - - https://github.com/stefankoegl/python-json-pointer - from packaging metadata: Home-page - - - - - license-expression - 30.3.0 - license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic. - - - Apache-2.0 - - - pkg:pypi/license-expression@30.3.0 - - - https://github.com/nexB/license-expression - from packaging metadata: Home-page - - - - - lxml - 5.3.0 - Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. - - - BSD-3-Clause - - - License :: OSI Approved :: BSD License - - - pkg:pypi/lxml@5.3.0 - - - https://github.com/lxml/lxml - from packaging metadata Project-URL: Source - - - https://lxml.de/ - from packaging metadata: Home-page - - - - - regression-issue868 - 0.1 - - - file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 - PackageSource: Local - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.5.json.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.5.json.bin deleted file mode 100644 index 9f3dcde33..000000000 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.5.json.bin +++ /dev/null @@ -1,334 +0,0 @@ -{ - "components": [ - { - "bom-ref": "attrs==23.2.0", - "description": "Classes Without Boilerplate", - "externalReferences": [ - { - "comment": "from packaging metadata Project-URL: Documentation", - "type": "documentation", - "url": "https://www.attrs.org/" - }, - { - "comment": "from packaging metadata Project-URL: Funding", - "type": "other", - "url": "https://github.com/sponsors/hynek" - }, - { - "comment": "from packaging metadata Project-URL: Tidelift", - "type": "other", - "url": "https://tidelift.com/subscription/pkg/pypi-attrs?utm_source=pypi-attrs&utm_medium=pypi" - }, - { - "comment": "from packaging metadata Project-URL: Changelog", - "type": "release-notes", - "url": "https://www.attrs.org/en/stable/changelog.html" - }, - { - "comment": "from packaging metadata Project-URL: GitHub", - "type": "vcs", - "url": "https://github.com/python-attrs/attrs" - } - ], - "licenses": [ - { - "license": { - "id": "MIT" - } - } - ], - "name": "attrs", - "purl": "pkg:pypi/attrs@23.2.0", - "type": "library", - "version": "23.2.0" - }, - { - "bom-ref": "boolean.py==4.0", - "description": "Define boolean algebras, create and parse boolean expressions and create custom boolean DSL.", - "externalReferences": [ - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://github.com/bastikr/boolean.py" - } - ], - "licenses": [ - { - "license": { - "id": "BSD-2-Clause" - } - } - ], - "name": "boolean.py", - "purl": "pkg:pypi/boolean.py@4.0", - "type": "library", - "version": "4.0" - }, - { - "bom-ref": "cryptography==43.0.1", - "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", - "evidence": { - "licenses": [ - { - "license": { - "name": "License :: OSI Approved :: Apache Software License" - } - }, - { - "license": { - "name": "License :: OSI Approved :: BSD License" - } - } - ] - }, - "externalReferences": [ - { - "comment": "from packaging metadata Project-URL: documentation", - "type": "documentation", - "url": "https://cryptography.io/" - }, - { - "comment": "from packaging metadata Project-URL: issues", - "type": "issue-tracker", - "url": "https://github.com/pyca/cryptography/issues" - }, - { - "comment": "from packaging metadata Project-URL: source", - "type": "other", - "url": "https://github.com/pyca/cryptography/" - }, - { - "comment": "from packaging metadata Project-URL: changelog", - "type": "release-notes", - "url": "https://cryptography.io/en/latest/changelog/" - }, - { - "comment": "from packaging metadata Project-URL: homepage", - "type": "website", - "url": "https://github.com/pyca/cryptography" - } - ], - "licenses": [ - { - "expression": "Apache-2.0 OR BSD-3-Clause" - } - ], - "name": "cryptography", - "purl": "pkg:pypi/cryptography@43.0.1", - "type": "library", - "version": "43.0.1" - }, - { - "bom-ref": "jsonpointer==2.4", - "description": "Identify specific nodes in a JSON document (RFC 6901) ", - "externalReferences": [ - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://github.com/stefankoegl/python-json-pointer" - } - ], - "licenses": [ - { - "license": { - "name": "License :: OSI Approved :: BSD License" - } - } - ], - "name": "jsonpointer", - "purl": "pkg:pypi/jsonpointer@2.4", - "type": "library", - "version": "2.4" - }, - { - "bom-ref": "license-expression==30.3.0", - "description": "license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic.", - "externalReferences": [ - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://github.com/nexB/license-expression" - } - ], - "licenses": [ - { - "license": { - "id": "Apache-2.0" - } - } - ], - "name": "license-expression", - "purl": "pkg:pypi/license-expression@30.3.0", - "type": "library", - "version": "30.3.0" - }, - { - "bom-ref": "lxml==5.3.0", - "description": "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API.", - "externalReferences": [ - { - "comment": "from packaging metadata Project-URL: Source", - "type": "other", - "url": "https://github.com/lxml/lxml" - }, - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://lxml.de/" - } - ], - "licenses": [ - { - "license": { - "id": "BSD-3-Clause" - } - }, - { - "license": { - "name": "License :: OSI Approved :: BSD License" - } - } - ], - "name": "lxml", - "purl": "pkg:pypi/lxml@5.3.0", - "type": "library", - "version": "5.3.0" - }, - { - "bom-ref": "regression-issue868==0.1", - "externalReferences": [ - { - "comment": "PackageSource: Local", - "type": "distribution", - "url": "file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868" - } - ], - "name": "regression-issue868", - "type": "library", - "version": "0.1" - } - ], - "dependencies": [ - { - "ref": "attrs==23.2.0" - }, - { - "ref": "boolean.py==4.0" - }, - { - "ref": "cryptography==43.0.1" - }, - { - "ref": "jsonpointer==2.4" - }, - { - "dependsOn": [ - "boolean.py==4.0" - ], - "ref": "license-expression==30.3.0" - }, - { - "ref": "lxml==5.3.0" - }, - { - "ref": "regression-issue868==0.1" - }, - { - "dependsOn": [ - "attrs==23.2.0", - "boolean.py==4.0", - "cryptography==43.0.1", - "jsonpointer==2.4", - "license-expression==30.3.0", - "lxml==5.3.0", - "regression-issue868==0.1" - ], - "ref": "root-component" - } - ], - "metadata": { - "component": { - "bom-ref": "root-component", - "description": "depenndencies with license declaration accoring to PEP 639", - "licenses": [ - { - "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" - } - ], - "name": "with-extras", - "type": "application", - "version": "0.1.0" - }, - "properties": [ - { - "name": "cdx:reproducible", - "value": "true" - } - ], - "tools": { - "components": [ - { - "description": "CycloneDX Software Bill of Materials (SBOM) generator for Python projects and environments", - "externalReferences": [ - { - "type": "build-system", - "url": "https://github.com/CycloneDX/cyclonedx-python/actions" - }, - { - "type": "distribution", - "url": "https://pypi.org/project/cyclonedx-bom/" - }, - { - "type": "documentation", - "url": "https://cyclonedx-bom-tool.readthedocs.io/" - }, - { - "type": "issue-tracker", - "url": "https://github.com/CycloneDX/cyclonedx-python/issues" - }, - { - "type": "license", - "url": "https://github.com/CycloneDX/cyclonedx-python/blob/main/LICENSE" - }, - { - "type": "release-notes", - "url": "https://github.com/CycloneDX/cyclonedx-python/blob/main/CHANGELOG.md" - }, - { - "type": "vcs", - "url": "https://github.com/CycloneDX/cyclonedx-python/" - }, - { - "type": "website", - "url": "https://github.com/CycloneDX/cyclonedx-python/#readme" - } - ], - "group": "CycloneDX", - "licenses": [ - { - "license": { - "id": "Apache-2.0" - } - } - ], - "name": "cyclonedx-py", - "type": "application", - "version": "thisVersion-testing" - }, - { - "description": "stripped", - "externalReferences": [ ], - "group": "CycloneDX", - "licenses": [ ], - "name": "cyclonedx-python-lib", - "type": "library", - "version": "libVersion-testing" - } - ] - } - }, - "version": 1, - "$schema": "http://cyclonedx.org/schema/bom-1.5.schema.json", - "bomFormat": "CycloneDX", - "specVersion": "1.5" -} \ No newline at end of file diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.5.xml.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.5.xml.bin deleted file mode 100644 index faa0a6bca..000000000 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.5.xml.bin +++ /dev/null @@ -1,246 +0,0 @@ - - - - - - - CycloneDX - cyclonedx-py - thisVersion-testing - CycloneDX Software Bill of Materials (SBOM) generator for Python projects and environments - - - Apache-2.0 - - - - - https://github.com/CycloneDX/cyclonedx-python/actions - - - https://pypi.org/project/cyclonedx-bom/ - - - https://cyclonedx-bom-tool.readthedocs.io/ - - - https://github.com/CycloneDX/cyclonedx-python/issues - - - https://github.com/CycloneDX/cyclonedx-python/blob/main/LICENSE - - - https://github.com/CycloneDX/cyclonedx-python/blob/main/CHANGELOG.md - - - https://github.com/CycloneDX/cyclonedx-python/ - - - https://github.com/CycloneDX/cyclonedx-python/#readme - - - - - CycloneDX - cyclonedx-python-lib - libVersion-testing - - - - - - - - with-extras - 0.1.0 - depenndencies with license declaration accoring to PEP 639 - - MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) - - - - true - - - - - attrs - 23.2.0 - Classes Without Boilerplate - - - MIT - - - pkg:pypi/attrs@23.2.0 - - - https://www.attrs.org/ - from packaging metadata Project-URL: Documentation - - - https://github.com/sponsors/hynek - from packaging metadata Project-URL: Funding - - - https://tidelift.com/subscription/pkg/pypi-attrs?utm_source=pypi-attrs&utm_medium=pypi - from packaging metadata Project-URL: Tidelift - - - https://www.attrs.org/en/stable/changelog.html - from packaging metadata Project-URL: Changelog - - - https://github.com/python-attrs/attrs - from packaging metadata Project-URL: GitHub - - - - - boolean.py - 4.0 - Define boolean algebras, create and parse boolean expressions and create custom boolean DSL. - - - BSD-2-Clause - - - pkg:pypi/boolean.py@4.0 - - - https://github.com/bastikr/boolean.py - from packaging metadata: Home-page - - - - - cryptography - 43.0.1 - cryptography is a package which provides cryptographic recipes and primitives to Python developers. - - Apache-2.0 OR BSD-3-Clause - - pkg:pypi/cryptography@43.0.1 - - - https://cryptography.io/ - from packaging metadata Project-URL: documentation - - - https://github.com/pyca/cryptography/issues - from packaging metadata Project-URL: issues - - - https://github.com/pyca/cryptography/ - from packaging metadata Project-URL: source - - - https://cryptography.io/en/latest/changelog/ - from packaging metadata Project-URL: changelog - - - https://github.com/pyca/cryptography - from packaging metadata Project-URL: homepage - - - - - - License :: OSI Approved :: Apache Software License - - - License :: OSI Approved :: BSD License - - - - - - jsonpointer - 2.4 - Identify specific nodes in a JSON document (RFC 6901) - - - License :: OSI Approved :: BSD License - - - pkg:pypi/jsonpointer@2.4 - - - https://github.com/stefankoegl/python-json-pointer - from packaging metadata: Home-page - - - - - license-expression - 30.3.0 - license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic. - - - Apache-2.0 - - - pkg:pypi/license-expression@30.3.0 - - - https://github.com/nexB/license-expression - from packaging metadata: Home-page - - - - - lxml - 5.3.0 - Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. - - - BSD-3-Clause - - - License :: OSI Approved :: BSD License - - - pkg:pypi/lxml@5.3.0 - - - https://github.com/lxml/lxml - from packaging metadata Project-URL: Source - - - https://lxml.de/ - from packaging metadata: Home-page - - - - - regression-issue868 - 0.1 - - - file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 - PackageSource: Local - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.6.json.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.6.json.bin deleted file mode 100644 index 7ab328531..000000000 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.6.json.bin +++ /dev/null @@ -1,345 +0,0 @@ -{ - "components": [ - { - "bom-ref": "attrs==23.2.0", - "description": "Classes Without Boilerplate", - "externalReferences": [ - { - "comment": "from packaging metadata Project-URL: Documentation", - "type": "documentation", - "url": "https://www.attrs.org/" - }, - { - "comment": "from packaging metadata Project-URL: Funding", - "type": "other", - "url": "https://github.com/sponsors/hynek" - }, - { - "comment": "from packaging metadata Project-URL: Tidelift", - "type": "other", - "url": "https://tidelift.com/subscription/pkg/pypi-attrs?utm_source=pypi-attrs&utm_medium=pypi" - }, - { - "comment": "from packaging metadata Project-URL: Changelog", - "type": "release-notes", - "url": "https://www.attrs.org/en/stable/changelog.html" - }, - { - "comment": "from packaging metadata Project-URL: GitHub", - "type": "vcs", - "url": "https://github.com/python-attrs/attrs" - } - ], - "licenses": [ - { - "license": { - "acknowledgement": "declared", - "id": "MIT" - } - } - ], - "name": "attrs", - "purl": "pkg:pypi/attrs@23.2.0", - "type": "library", - "version": "23.2.0" - }, - { - "bom-ref": "boolean.py==4.0", - "description": "Define boolean algebras, create and parse boolean expressions and create custom boolean DSL.", - "externalReferences": [ - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://github.com/bastikr/boolean.py" - } - ], - "licenses": [ - { - "license": { - "acknowledgement": "declared", - "id": "BSD-2-Clause" - } - } - ], - "name": "boolean.py", - "purl": "pkg:pypi/boolean.py@4.0", - "type": "library", - "version": "4.0" - }, - { - "bom-ref": "cryptography==43.0.1", - "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", - "evidence": { - "licenses": [ - { - "license": { - "acknowledgement": "declared", - "name": "License :: OSI Approved :: Apache Software License" - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "License :: OSI Approved :: BSD License" - } - } - ] - }, - "externalReferences": [ - { - "comment": "from packaging metadata Project-URL: documentation", - "type": "documentation", - "url": "https://cryptography.io/" - }, - { - "comment": "from packaging metadata Project-URL: issues", - "type": "issue-tracker", - "url": "https://github.com/pyca/cryptography/issues" - }, - { - "comment": "from packaging metadata Project-URL: source", - "type": "other", - "url": "https://github.com/pyca/cryptography/" - }, - { - "comment": "from packaging metadata Project-URL: changelog", - "type": "release-notes", - "url": "https://cryptography.io/en/latest/changelog/" - }, - { - "comment": "from packaging metadata Project-URL: homepage", - "type": "website", - "url": "https://github.com/pyca/cryptography" - } - ], - "licenses": [ - { - "acknowledgement": "declared", - "expression": "Apache-2.0 OR BSD-3-Clause" - } - ], - "name": "cryptography", - "purl": "pkg:pypi/cryptography@43.0.1", - "type": "library", - "version": "43.0.1" - }, - { - "bom-ref": "jsonpointer==2.4", - "description": "Identify specific nodes in a JSON document (RFC 6901) ", - "externalReferences": [ - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://github.com/stefankoegl/python-json-pointer" - } - ], - "licenses": [ - { - "license": { - "acknowledgement": "declared", - "name": "License :: OSI Approved :: BSD License" - } - } - ], - "name": "jsonpointer", - "purl": "pkg:pypi/jsonpointer@2.4", - "type": "library", - "version": "2.4" - }, - { - "bom-ref": "license-expression==30.3.0", - "description": "license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic.", - "externalReferences": [ - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://github.com/nexB/license-expression" - } - ], - "licenses": [ - { - "license": { - "acknowledgement": "declared", - "id": "Apache-2.0" - } - } - ], - "name": "license-expression", - "purl": "pkg:pypi/license-expression@30.3.0", - "type": "library", - "version": "30.3.0" - }, - { - "bom-ref": "lxml==5.3.0", - "description": "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API.", - "externalReferences": [ - { - "comment": "from packaging metadata Project-URL: Source", - "type": "other", - "url": "https://github.com/lxml/lxml" - }, - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://lxml.de/" - } - ], - "licenses": [ - { - "license": { - "acknowledgement": "declared", - "id": "BSD-3-Clause" - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "License :: OSI Approved :: BSD License" - } - } - ], - "name": "lxml", - "purl": "pkg:pypi/lxml@5.3.0", - "type": "library", - "version": "5.3.0" - }, - { - "bom-ref": "regression-issue868==0.1", - "externalReferences": [ - { - "comment": "PackageSource: Local", - "type": "distribution", - "url": "file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868" - } - ], - "name": "regression-issue868", - "type": "library", - "version": "0.1" - } - ], - "dependencies": [ - { - "ref": "attrs==23.2.0" - }, - { - "ref": "boolean.py==4.0" - }, - { - "ref": "cryptography==43.0.1" - }, - { - "ref": "jsonpointer==2.4" - }, - { - "dependsOn": [ - "boolean.py==4.0" - ], - "ref": "license-expression==30.3.0" - }, - { - "ref": "lxml==5.3.0" - }, - { - "ref": "regression-issue868==0.1" - }, - { - "dependsOn": [ - "attrs==23.2.0", - "boolean.py==4.0", - "cryptography==43.0.1", - "jsonpointer==2.4", - "license-expression==30.3.0", - "lxml==5.3.0", - "regression-issue868==0.1" - ], - "ref": "root-component" - } - ], - "metadata": { - "component": { - "bom-ref": "root-component", - "description": "depenndencies with license declaration accoring to PEP 639", - "licenses": [ - { - "acknowledgement": "declared", - "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" - } - ], - "name": "with-extras", - "type": "application", - "version": "0.1.0" - }, - "properties": [ - { - "name": "cdx:reproducible", - "value": "true" - } - ], - "tools": { - "components": [ - { - "description": "CycloneDX Software Bill of Materials (SBOM) generator for Python projects and environments", - "externalReferences": [ - { - "type": "build-system", - "url": "https://github.com/CycloneDX/cyclonedx-python/actions" - }, - { - "type": "distribution", - "url": "https://pypi.org/project/cyclonedx-bom/" - }, - { - "type": "documentation", - "url": "https://cyclonedx-bom-tool.readthedocs.io/" - }, - { - "type": "issue-tracker", - "url": "https://github.com/CycloneDX/cyclonedx-python/issues" - }, - { - "type": "license", - "url": "https://github.com/CycloneDX/cyclonedx-python/blob/main/LICENSE" - }, - { - "type": "release-notes", - "url": "https://github.com/CycloneDX/cyclonedx-python/blob/main/CHANGELOG.md" - }, - { - "type": "vcs", - "url": "https://github.com/CycloneDX/cyclonedx-python/" - }, - { - "type": "website", - "url": "https://github.com/CycloneDX/cyclonedx-python/#readme" - } - ], - "group": "CycloneDX", - "licenses": [ - { - "license": { - "acknowledgement": "declared", - "id": "Apache-2.0" - } - } - ], - "name": "cyclonedx-py", - "type": "application", - "version": "thisVersion-testing" - }, - { - "description": "stripped", - "externalReferences": [ ], - "group": "CycloneDX", - "licenses": [ ], - "name": "cyclonedx-python-lib", - "type": "library", - "version": "libVersion-testing" - } - ] - } - }, - "version": 1, - "$schema": "http://cyclonedx.org/schema/bom-1.6.schema.json", - "bomFormat": "CycloneDX", - "specVersion": "1.6" -} \ No newline at end of file diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.6.xml.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.6.xml.bin deleted file mode 100644 index 65ff7dece..000000000 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.6.xml.bin +++ /dev/null @@ -1,246 +0,0 @@ - - - - - - - CycloneDX - cyclonedx-py - thisVersion-testing - CycloneDX Software Bill of Materials (SBOM) generator for Python projects and environments - - - Apache-2.0 - - - - - https://github.com/CycloneDX/cyclonedx-python/actions - - - https://pypi.org/project/cyclonedx-bom/ - - - https://cyclonedx-bom-tool.readthedocs.io/ - - - https://github.com/CycloneDX/cyclonedx-python/issues - - - https://github.com/CycloneDX/cyclonedx-python/blob/main/LICENSE - - - https://github.com/CycloneDX/cyclonedx-python/blob/main/CHANGELOG.md - - - https://github.com/CycloneDX/cyclonedx-python/ - - - https://github.com/CycloneDX/cyclonedx-python/#readme - - - - - CycloneDX - cyclonedx-python-lib - libVersion-testing - - - - - - - - with-extras - 0.1.0 - depenndencies with license declaration accoring to PEP 639 - - MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) - - - - true - - - - - attrs - 23.2.0 - Classes Without Boilerplate - - - MIT - - - pkg:pypi/attrs@23.2.0 - - - https://www.attrs.org/ - from packaging metadata Project-URL: Documentation - - - https://github.com/sponsors/hynek - from packaging metadata Project-URL: Funding - - - https://tidelift.com/subscription/pkg/pypi-attrs?utm_source=pypi-attrs&utm_medium=pypi - from packaging metadata Project-URL: Tidelift - - - https://www.attrs.org/en/stable/changelog.html - from packaging metadata Project-URL: Changelog - - - https://github.com/python-attrs/attrs - from packaging metadata Project-URL: GitHub - - - - - boolean.py - 4.0 - Define boolean algebras, create and parse boolean expressions and create custom boolean DSL. - - - BSD-2-Clause - - - pkg:pypi/boolean.py@4.0 - - - https://github.com/bastikr/boolean.py - from packaging metadata: Home-page - - - - - cryptography - 43.0.1 - cryptography is a package which provides cryptographic recipes and primitives to Python developers. - - Apache-2.0 OR BSD-3-Clause - - pkg:pypi/cryptography@43.0.1 - - - https://cryptography.io/ - from packaging metadata Project-URL: documentation - - - https://github.com/pyca/cryptography/issues - from packaging metadata Project-URL: issues - - - https://github.com/pyca/cryptography/ - from packaging metadata Project-URL: source - - - https://cryptography.io/en/latest/changelog/ - from packaging metadata Project-URL: changelog - - - https://github.com/pyca/cryptography - from packaging metadata Project-URL: homepage - - - - - - License :: OSI Approved :: Apache Software License - - - License :: OSI Approved :: BSD License - - - - - - jsonpointer - 2.4 - Identify specific nodes in a JSON document (RFC 6901) - - - License :: OSI Approved :: BSD License - - - pkg:pypi/jsonpointer@2.4 - - - https://github.com/stefankoegl/python-json-pointer - from packaging metadata: Home-page - - - - - license-expression - 30.3.0 - license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic. - - - Apache-2.0 - - - pkg:pypi/license-expression@30.3.0 - - - https://github.com/nexB/license-expression - from packaging metadata: Home-page - - - - - lxml - 5.3.0 - Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. - - - BSD-3-Clause - - - License :: OSI Approved :: BSD License - - - pkg:pypi/lxml@5.3.0 - - - https://github.com/lxml/lxml - from packaging metadata Project-URL: Source - - - https://lxml.de/ - from packaging metadata: Home-page - - - - - regression-issue868 - 0.1 - - - file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 - PackageSource: Local - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/_data/snapshots/environment/texts_with-license-file_1.0.xml.bin b/tests/_data/snapshots/environment/texts_with-license-file_1.0.xml.bin new file mode 100644 index 000000000..acb066124 --- /dev/null +++ b/tests/_data/snapshots/environment/texts_with-license-file_1.0.xml.bin @@ -0,0 +1,4 @@ + + + + diff --git a/tests/_data/snapshots/environment/texts_with-license-file_1.1.xml.bin b/tests/_data/snapshots/environment/texts_with-license-file_1.1.xml.bin new file mode 100644 index 000000000..640f73ff7 --- /dev/null +++ b/tests/_data/snapshots/environment/texts_with-license-file_1.1.xml.bin @@ -0,0 +1,4 @@ + + + + diff --git a/tests/_data/snapshots/environment/texts_with-license-file_1.2.json.bin b/tests/_data/snapshots/environment/texts_with-license-file_1.2.json.bin new file mode 100644 index 000000000..7c99638f5 --- /dev/null +++ b/tests/_data/snapshots/environment/texts_with-license-file_1.2.json.bin @@ -0,0 +1,44 @@ +{ + "dependencies": [ + { + "ref": "root-component" + } + ], + "metadata": { + "component": { + "bom-ref": "root-component", + "description": "with licenses from file, instead of SPDX ID/Expression", + "licenses": [ + { + "license": { + "name": "declared license of 'with-license-file'", + "text": { + "content": "VGhpcyBpcyB0aGUgbGljZW5zZSB0ZXh0IG9mIHRoaXMgY29tcG9uZW50LgpJdCBpcyBleHBlY3RlZCB0byBiZSBhdmFpbGFibGUgaW4gYSBTQk9NLgo=", + "contentType": "text/plain", + "encoding": "base64" + } + } + } + ], + "name": "with-license-file", + "type": "application", + "version": "0.1.0" + }, + "tools": [ + { + "name": "cyclonedx-py", + "vendor": "CycloneDX", + "version": "thisVersion-testing" + }, + { + "name": "cyclonedx-python-lib", + "vendor": "CycloneDX", + "version": "libVersion-testing" + } + ] + }, + "version": 1, + "$schema": "http://cyclonedx.org/schema/bom-1.2b.schema.json", + "bomFormat": "CycloneDX", + "specVersion": "1.2" +} \ No newline at end of file diff --git a/tests/_data/snapshots/environment/texts_with-license-file_1.2.xml.bin b/tests/_data/snapshots/environment/texts_with-license-file_1.2.xml.bin new file mode 100644 index 000000000..710c26d9f --- /dev/null +++ b/tests/_data/snapshots/environment/texts_with-license-file_1.2.xml.bin @@ -0,0 +1,31 @@ + + + + + + CycloneDX + cyclonedx-py + thisVersion-testing + + + CycloneDX + cyclonedx-python-lib + libVersion-testing + + + + with-license-file + 0.1.0 + with licenses from file, instead of SPDX ID/Expression + + + declared license of 'with-license-file' + VGhpcyBpcyB0aGUgbGljZW5zZSB0ZXh0IG9mIHRoaXMgY29tcG9uZW50LgpJdCBpcyBleHBlY3RlZCB0byBiZSBhdmFpbGFibGUgaW4gYSBTQk9NLgo= + + + + + + + + diff --git a/tests/_data/snapshots/environment/texts_with-license-file_1.3.json.bin b/tests/_data/snapshots/environment/texts_with-license-file_1.3.json.bin new file mode 100644 index 000000000..2e92b0936 --- /dev/null +++ b/tests/_data/snapshots/environment/texts_with-license-file_1.3.json.bin @@ -0,0 +1,50 @@ +{ + "dependencies": [ + { + "ref": "root-component" + } + ], + "metadata": { + "component": { + "bom-ref": "root-component", + "description": "with licenses from file, instead of SPDX ID/Expression", + "licenses": [ + { + "license": { + "name": "declared license of 'with-license-file'", + "text": { + "content": "VGhpcyBpcyB0aGUgbGljZW5zZSB0ZXh0IG9mIHRoaXMgY29tcG9uZW50LgpJdCBpcyBleHBlY3RlZCB0byBiZSBhdmFpbGFibGUgaW4gYSBTQk9NLgo=", + "contentType": "text/plain", + "encoding": "base64" + } + } + } + ], + "name": "with-license-file", + "type": "application", + "version": "0.1.0" + }, + "properties": [ + { + "name": "cdx:reproducible", + "value": "true" + } + ], + "tools": [ + { + "name": "cyclonedx-py", + "vendor": "CycloneDX", + "version": "thisVersion-testing" + }, + { + "name": "cyclonedx-python-lib", + "vendor": "CycloneDX", + "version": "libVersion-testing" + } + ] + }, + "version": 1, + "$schema": "http://cyclonedx.org/schema/bom-1.3a.schema.json", + "bomFormat": "CycloneDX", + "specVersion": "1.3" +} \ No newline at end of file diff --git a/tests/_data/snapshots/environment/texts_with-license-file_1.3.xml.bin b/tests/_data/snapshots/environment/texts_with-license-file_1.3.xml.bin new file mode 100644 index 000000000..29a9c22a6 --- /dev/null +++ b/tests/_data/snapshots/environment/texts_with-license-file_1.3.xml.bin @@ -0,0 +1,34 @@ + + + + + + CycloneDX + cyclonedx-py + thisVersion-testing + + + CycloneDX + cyclonedx-python-lib + libVersion-testing + + + + with-license-file + 0.1.0 + with licenses from file, instead of SPDX ID/Expression + + + declared license of 'with-license-file' + VGhpcyBpcyB0aGUgbGljZW5zZSB0ZXh0IG9mIHRoaXMgY29tcG9uZW50LgpJdCBpcyBleHBlY3RlZCB0byBiZSBhdmFpbGFibGUgaW4gYSBTQk9NLgo= + + + + + true + + + + + + diff --git a/tests/_data/snapshots/environment/texts_with-license-file_1.4.json.bin b/tests/_data/snapshots/environment/texts_with-license-file_1.4.json.bin new file mode 100644 index 000000000..8d424333d --- /dev/null +++ b/tests/_data/snapshots/environment/texts_with-license-file_1.4.json.bin @@ -0,0 +1,85 @@ +{ + "dependencies": [ + { + "ref": "root-component" + } + ], + "metadata": { + "component": { + "bom-ref": "root-component", + "description": "with licenses from file, instead of SPDX ID/Expression", + "licenses": [ + { + "license": { + "name": "declared license of 'with-license-file'", + "text": { + "content": "VGhpcyBpcyB0aGUgbGljZW5zZSB0ZXh0IG9mIHRoaXMgY29tcG9uZW50LgpJdCBpcyBleHBlY3RlZCB0byBiZSBhdmFpbGFibGUgaW4gYSBTQk9NLgo=", + "contentType": "text/plain", + "encoding": "base64" + } + } + } + ], + "name": "with-license-file", + "type": "application", + "version": "0.1.0" + }, + "properties": [ + { + "name": "cdx:reproducible", + "value": "true" + } + ], + "tools": [ + { + "externalReferences": [ + { + "type": "build-system", + "url": "https://github.com/CycloneDX/cyclonedx-python/actions" + }, + { + "type": "distribution", + "url": "https://pypi.org/project/cyclonedx-bom/" + }, + { + "type": "documentation", + "url": "https://cyclonedx-bom-tool.readthedocs.io/" + }, + { + "type": "issue-tracker", + "url": "https://github.com/CycloneDX/cyclonedx-python/issues" + }, + { + "type": "license", + "url": "https://github.com/CycloneDX/cyclonedx-python/blob/main/LICENSE" + }, + { + "type": "release-notes", + "url": "https://github.com/CycloneDX/cyclonedx-python/blob/main/CHANGELOG.md" + }, + { + "type": "vcs", + "url": "https://github.com/CycloneDX/cyclonedx-python/" + }, + { + "type": "website", + "url": "https://github.com/CycloneDX/cyclonedx-python/#readme" + } + ], + "name": "cyclonedx-py", + "vendor": "CycloneDX", + "version": "thisVersion-testing" + }, + { + "externalReferences": [ ], + "name": "cyclonedx-python-lib", + "vendor": "CycloneDX", + "version": "libVersion-testing" + } + ] + }, + "version": 1, + "$schema": "http://cyclonedx.org/schema/bom-1.4.schema.json", + "bomFormat": "CycloneDX", + "specVersion": "1.4" +} \ No newline at end of file diff --git a/tests/_data/snapshots/environment/texts_with-license-file_1.4.xml.bin b/tests/_data/snapshots/environment/texts_with-license-file_1.4.xml.bin new file mode 100644 index 000000000..08fd7e21f --- /dev/null +++ b/tests/_data/snapshots/environment/texts_with-license-file_1.4.xml.bin @@ -0,0 +1,61 @@ + + + + + + CycloneDX + cyclonedx-py + thisVersion-testing + + + https://github.com/CycloneDX/cyclonedx-python/actions + + + https://pypi.org/project/cyclonedx-bom/ + + + https://cyclonedx-bom-tool.readthedocs.io/ + + + https://github.com/CycloneDX/cyclonedx-python/issues + + + https://github.com/CycloneDX/cyclonedx-python/blob/main/LICENSE + + + https://github.com/CycloneDX/cyclonedx-python/blob/main/CHANGELOG.md + + + https://github.com/CycloneDX/cyclonedx-python/ + + + https://github.com/CycloneDX/cyclonedx-python/#readme + + + + + CycloneDX + cyclonedx-python-lib + libVersion-testing + + + + + with-license-file + 0.1.0 + with licenses from file, instead of SPDX ID/Expression + + + declared license of 'with-license-file' + VGhpcyBpcyB0aGUgbGljZW5zZSB0ZXh0IG9mIHRoaXMgY29tcG9uZW50LgpJdCBpcyBleHBlY3RlZCB0byBiZSBhdmFpbGFibGUgaW4gYSBTQk9NLgo= + + + + + true + + + + + + diff --git a/tests/_data/snapshots/environment/texts_with-license-file_1.5.json.bin b/tests/_data/snapshots/environment/texts_with-license-file_1.5.json.bin new file mode 100644 index 000000000..ab180b3f9 --- /dev/null +++ b/tests/_data/snapshots/environment/texts_with-license-file_1.5.json.bin @@ -0,0 +1,99 @@ +{ + "dependencies": [ + { + "ref": "root-component" + } + ], + "metadata": { + "component": { + "bom-ref": "root-component", + "description": "with licenses from file, instead of SPDX ID/Expression", + "licenses": [ + { + "license": { + "name": "declared license of 'with-license-file'", + "text": { + "content": "VGhpcyBpcyB0aGUgbGljZW5zZSB0ZXh0IG9mIHRoaXMgY29tcG9uZW50LgpJdCBpcyBleHBlY3RlZCB0byBiZSBhdmFpbGFibGUgaW4gYSBTQk9NLgo=", + "contentType": "text/plain", + "encoding": "base64" + } + } + } + ], + "name": "with-license-file", + "type": "application", + "version": "0.1.0" + }, + "properties": [ + { + "name": "cdx:reproducible", + "value": "true" + } + ], + "tools": { + "components": [ + { + "description": "CycloneDX Software Bill of Materials (SBOM) generator for Python projects and environments", + "externalReferences": [ + { + "type": "build-system", + "url": "https://github.com/CycloneDX/cyclonedx-python/actions" + }, + { + "type": "distribution", + "url": "https://pypi.org/project/cyclonedx-bom/" + }, + { + "type": "documentation", + "url": "https://cyclonedx-bom-tool.readthedocs.io/" + }, + { + "type": "issue-tracker", + "url": "https://github.com/CycloneDX/cyclonedx-python/issues" + }, + { + "type": "license", + "url": "https://github.com/CycloneDX/cyclonedx-python/blob/main/LICENSE" + }, + { + "type": "release-notes", + "url": "https://github.com/CycloneDX/cyclonedx-python/blob/main/CHANGELOG.md" + }, + { + "type": "vcs", + "url": "https://github.com/CycloneDX/cyclonedx-python/" + }, + { + "type": "website", + "url": "https://github.com/CycloneDX/cyclonedx-python/#readme" + } + ], + "group": "CycloneDX", + "licenses": [ + { + "license": { + "id": "Apache-2.0" + } + } + ], + "name": "cyclonedx-py", + "type": "application", + "version": "thisVersion-testing" + }, + { + "description": "stripped", + "externalReferences": [ ], + "group": "CycloneDX", + "licenses": [ ], + "name": "cyclonedx-python-lib", + "type": "library", + "version": "libVersion-testing" + } + ] + } + }, + "version": 1, + "$schema": "http://cyclonedx.org/schema/bom-1.5.schema.json", + "bomFormat": "CycloneDX", + "specVersion": "1.5" +} \ No newline at end of file diff --git a/tests/_data/snapshots/environment/texts_with-license-file_1.5.xml.bin b/tests/_data/snapshots/environment/texts_with-license-file_1.5.xml.bin new file mode 100644 index 000000000..5c5345a5e --- /dev/null +++ b/tests/_data/snapshots/environment/texts_with-license-file_1.5.xml.bin @@ -0,0 +1,71 @@ + + + + + + + CycloneDX + cyclonedx-py + thisVersion-testing + CycloneDX Software Bill of Materials (SBOM) generator for Python projects and environments + + + Apache-2.0 + + + + + https://github.com/CycloneDX/cyclonedx-python/actions + + + https://pypi.org/project/cyclonedx-bom/ + + + https://cyclonedx-bom-tool.readthedocs.io/ + + + https://github.com/CycloneDX/cyclonedx-python/issues + + + https://github.com/CycloneDX/cyclonedx-python/blob/main/LICENSE + + + https://github.com/CycloneDX/cyclonedx-python/blob/main/CHANGELOG.md + + + https://github.com/CycloneDX/cyclonedx-python/ + + + https://github.com/CycloneDX/cyclonedx-python/#readme + + + + + CycloneDX + cyclonedx-python-lib + libVersion-testing + + + + + + + + with-license-file + 0.1.0 + with licenses from file, instead of SPDX ID/Expression + + + declared license of 'with-license-file' + VGhpcyBpcyB0aGUgbGljZW5zZSB0ZXh0IG9mIHRoaXMgY29tcG9uZW50LgpJdCBpcyBleHBlY3RlZCB0byBiZSBhdmFpbGFibGUgaW4gYSBTQk9NLgo= + + + + + true + + + + + + diff --git a/tests/_data/snapshots/environment/texts_with-license-file_1.6.json.bin b/tests/_data/snapshots/environment/texts_with-license-file_1.6.json.bin new file mode 100644 index 000000000..8da5bfc29 --- /dev/null +++ b/tests/_data/snapshots/environment/texts_with-license-file_1.6.json.bin @@ -0,0 +1,101 @@ +{ + "dependencies": [ + { + "ref": "root-component" + } + ], + "metadata": { + "component": { + "bom-ref": "root-component", + "description": "with licenses from file, instead of SPDX ID/Expression", + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "declared license of 'with-license-file'", + "text": { + "content": "VGhpcyBpcyB0aGUgbGljZW5zZSB0ZXh0IG9mIHRoaXMgY29tcG9uZW50LgpJdCBpcyBleHBlY3RlZCB0byBiZSBhdmFpbGFibGUgaW4gYSBTQk9NLgo=", + "contentType": "text/plain", + "encoding": "base64" + } + } + } + ], + "name": "with-license-file", + "type": "application", + "version": "0.1.0" + }, + "properties": [ + { + "name": "cdx:reproducible", + "value": "true" + } + ], + "tools": { + "components": [ + { + "description": "CycloneDX Software Bill of Materials (SBOM) generator for Python projects and environments", + "externalReferences": [ + { + "type": "build-system", + "url": "https://github.com/CycloneDX/cyclonedx-python/actions" + }, + { + "type": "distribution", + "url": "https://pypi.org/project/cyclonedx-bom/" + }, + { + "type": "documentation", + "url": "https://cyclonedx-bom-tool.readthedocs.io/" + }, + { + "type": "issue-tracker", + "url": "https://github.com/CycloneDX/cyclonedx-python/issues" + }, + { + "type": "license", + "url": "https://github.com/CycloneDX/cyclonedx-python/blob/main/LICENSE" + }, + { + "type": "release-notes", + "url": "https://github.com/CycloneDX/cyclonedx-python/blob/main/CHANGELOG.md" + }, + { + "type": "vcs", + "url": "https://github.com/CycloneDX/cyclonedx-python/" + }, + { + "type": "website", + "url": "https://github.com/CycloneDX/cyclonedx-python/#readme" + } + ], + "group": "CycloneDX", + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "Apache-2.0" + } + } + ], + "name": "cyclonedx-py", + "type": "application", + "version": "thisVersion-testing" + }, + { + "description": "stripped", + "externalReferences": [ ], + "group": "CycloneDX", + "licenses": [ ], + "name": "cyclonedx-python-lib", + "type": "library", + "version": "libVersion-testing" + } + ] + } + }, + "version": 1, + "$schema": "http://cyclonedx.org/schema/bom-1.6.schema.json", + "bomFormat": "CycloneDX", + "specVersion": "1.6" +} \ No newline at end of file diff --git a/tests/_data/snapshots/environment/texts_with-license-file_1.6.xml.bin b/tests/_data/snapshots/environment/texts_with-license-file_1.6.xml.bin new file mode 100644 index 000000000..0af5025b0 --- /dev/null +++ b/tests/_data/snapshots/environment/texts_with-license-file_1.6.xml.bin @@ -0,0 +1,71 @@ + + + + + + + CycloneDX + cyclonedx-py + thisVersion-testing + CycloneDX Software Bill of Materials (SBOM) generator for Python projects and environments + + + Apache-2.0 + + + + + https://github.com/CycloneDX/cyclonedx-python/actions + + + https://pypi.org/project/cyclonedx-bom/ + + + https://cyclonedx-bom-tool.readthedocs.io/ + + + https://github.com/CycloneDX/cyclonedx-python/issues + + + https://github.com/CycloneDX/cyclonedx-python/blob/main/LICENSE + + + https://github.com/CycloneDX/cyclonedx-python/blob/main/CHANGELOG.md + + + https://github.com/CycloneDX/cyclonedx-python/ + + + https://github.com/CycloneDX/cyclonedx-python/#readme + + + + + CycloneDX + cyclonedx-python-lib + libVersion-testing + + + + + + + + with-license-file + 0.1.0 + with licenses from file, instead of SPDX ID/Expression + + + declared license of 'with-license-file' + VGhpcyBpcyB0aGUgbGljZW5zZSB0ZXh0IG9mIHRoaXMgY29tcG9uZW50LgpJdCBpcyBleHBlY3RlZCB0byBiZSBhdmFpbGFibGUgaW4gYSBTQk9NLgo= + + + + + true + + + + + + diff --git a/tests/_data/snapshots/environment/texts_with-license-text_1.0.xml.bin b/tests/_data/snapshots/environment/texts_with-license-text_1.0.xml.bin new file mode 100644 index 000000000..13deb4872 --- /dev/null +++ b/tests/_data/snapshots/environment/texts_with-license-text_1.0.xml.bin @@ -0,0 +1,23 @@ + + + + + package-a + 23.42 + some package A + false + + + package-b + 23.42 + some package B + false + + + package-c + 23.42 + some package C + false + + + diff --git a/tests/_data/snapshots/environment/texts_with-license-text_1.1.xml.bin b/tests/_data/snapshots/environment/texts_with-license-text_1.1.xml.bin new file mode 100644 index 000000000..7b5ef01bb --- /dev/null +++ b/tests/_data/snapshots/environment/texts_with-license-text_1.1.xml.bin @@ -0,0 +1,55 @@ + + + + + package-a + 23.42 + some package A + + + declared license of 'package-a' + some license text + + + + + file://.../tests/_data/infiles/_helpers/local_pckages/a/dist/package_a-23.42-py3-none-any.whl + PackageSource: Archive + + + + + package-b + 23.42 + some package B + + + Apache-2.0 + + + License :: OSI Approved :: Apache Software License + + + + + file://.../tests/_data/infiles/_helpers/local_pckages/b/dist/package_b-23.42-py3-none-any.whl + PackageSource: Archive + + + + + package-c + 23.42 + some package C + + Apache-2.0 OR MIT + + + + file://.../tests/_data/infiles/_helpers/local_pckages/c/dist/package_c-23.42-py3-none-any.whl + PackageSource: Archive + + + + + diff --git a/tests/_data/snapshots/environment/texts_with-license-text_1.2.json.bin b/tests/_data/snapshots/environment/texts_with-license-text_1.2.json.bin new file mode 100644 index 000000000..14ac614bb --- /dev/null +++ b/tests/_data/snapshots/environment/texts_with-license-text_1.2.json.bin @@ -0,0 +1,124 @@ +{ + "components": [ + { + "bom-ref": "package-a==23.42", + "description": "some package A", + "externalReferences": [ + { + "comment": "PackageSource: Archive", + "type": "distribution", + "url": "file://.../tests/_data/infiles/_helpers/local_pckages/a/dist/package_a-23.42-py3-none-any.whl" + } + ], + "licenses": [ + { + "license": { + "name": "declared license of 'package-a'", + "text": { + "content": "some license text", + "contentType": "text/plain" + } + } + } + ], + "name": "package-a", + "type": "library", + "version": "23.42" + }, + { + "bom-ref": "package-b==23.42", + "description": "some package B", + "externalReferences": [ + { + "comment": "PackageSource: Archive", + "type": "distribution", + "url": "file://.../tests/_data/infiles/_helpers/local_pckages/b/dist/package_b-23.42-py3-none-any.whl" + } + ], + "licenses": [ + { + "license": { + "id": "Apache-2.0" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ], + "name": "package-b", + "type": "library", + "version": "23.42" + }, + { + "bom-ref": "package-c==23.42", + "description": "some package C", + "externalReferences": [ + { + "comment": "PackageSource: Archive", + "type": "distribution", + "url": "file://.../tests/_data/infiles/_helpers/local_pckages/c/dist/package_c-23.42-py3-none-any.whl" + } + ], + "licenses": [ + { + "expression": "Apache-2.0 OR MIT" + } + ], + "name": "package-c", + "type": "library", + "version": "23.42" + } + ], + "dependencies": [ + { + "ref": "package-a==23.42" + }, + { + "ref": "package-b==23.42" + }, + { + "ref": "package-c==23.42" + }, + { + "ref": "root-component" + } + ], + "metadata": { + "component": { + "bom-ref": "root-component", + "description": "with licenses as text, instead of SPDX ID/Expression", + "licenses": [ + { + "license": { + "name": "declared license of 'with-license-text'", + "text": { + "content": "This is the license text of this component.\nIt is expected to be available in a SBOM.", + "contentType": "text/plain" + } + } + } + ], + "name": "with-license-text", + "type": "application", + "version": "0.1.0" + }, + "tools": [ + { + "name": "cyclonedx-py", + "vendor": "CycloneDX", + "version": "thisVersion-testing" + }, + { + "name": "cyclonedx-python-lib", + "vendor": "CycloneDX", + "version": "libVersion-testing" + } + ] + }, + "version": 1, + "$schema": "http://cyclonedx.org/schema/bom-1.2b.schema.json", + "bomFormat": "CycloneDX", + "specVersion": "1.2" +} \ No newline at end of file diff --git a/tests/_data/snapshots/environment/texts_with-license-text_1.2.xml.bin b/tests/_data/snapshots/environment/texts_with-license-text_1.2.xml.bin new file mode 100644 index 000000000..a8cff13d5 --- /dev/null +++ b/tests/_data/snapshots/environment/texts_with-license-text_1.2.xml.bin @@ -0,0 +1,87 @@ + + + + + + CycloneDX + cyclonedx-py + thisVersion-testing + + + CycloneDX + cyclonedx-python-lib + libVersion-testing + + + + with-license-text + 0.1.0 + with licenses as text, instead of SPDX ID/Expression + + + declared license of 'with-license-text' + This is the license text of this component. +It is expected to be available in a SBOM. + + + + + + + package-a + 23.42 + some package A + + + declared license of 'package-a' + some license text + + + + + file://.../tests/_data/infiles/_helpers/local_pckages/a/dist/package_a-23.42-py3-none-any.whl + PackageSource: Archive + + + + + package-b + 23.42 + some package B + + + Apache-2.0 + + + License :: OSI Approved :: Apache Software License + + + + + file://.../tests/_data/infiles/_helpers/local_pckages/b/dist/package_b-23.42-py3-none-any.whl + PackageSource: Archive + + + + + package-c + 23.42 + some package C + + Apache-2.0 OR MIT + + + + file://.../tests/_data/infiles/_helpers/local_pckages/c/dist/package_c-23.42-py3-none-any.whl + PackageSource: Archive + + + + + + + + + + + diff --git a/tests/_data/snapshots/environment/texts_with-license-text_1.3.json.bin b/tests/_data/snapshots/environment/texts_with-license-text_1.3.json.bin new file mode 100644 index 000000000..dae631bfa --- /dev/null +++ b/tests/_data/snapshots/environment/texts_with-license-text_1.3.json.bin @@ -0,0 +1,162 @@ +{ + "components": [ + { + "bom-ref": "package-a==23.42", + "description": "some package A", + "externalReferences": [ + { + "comment": "PackageSource: Archive", + "hashes": [ + { + "alg": "SHA-256", + "content": "5c8da28603857d4073c67e751ba3cd526a7ef414135faecfec164e7d01be24be" + } + ], + "type": "distribution", + "url": "file://.../tests/_data/infiles/_helpers/local_pckages/a/dist/package_a-23.42-py3-none-any.whl" + } + ], + "licenses": [ + { + "license": { + "name": "declared license of 'package-a'", + "text": { + "content": "some license text", + "contentType": "text/plain" + } + } + } + ], + "name": "package-a", + "type": "library", + "version": "23.42" + }, + { + "bom-ref": "package-b==23.42", + "description": "some package B", + "externalReferences": [ + { + "comment": "PackageSource: Archive", + "hashes": [ + { + "alg": "SHA-256", + "content": "583f7cb9db5c26194e8004ac82a90d7b46664da8da674919d3e2189c332a1f78" + } + ], + "type": "distribution", + "url": "file://.../tests/_data/infiles/_helpers/local_pckages/b/dist/package_b-23.42-py3-none-any.whl" + } + ], + "licenses": [ + { + "license": { + "id": "Apache-2.0" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ], + "name": "package-b", + "type": "library", + "version": "23.42" + }, + { + "bom-ref": "package-c==23.42", + "description": "some package C", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, + "externalReferences": [ + { + "comment": "PackageSource: Archive", + "hashes": [ + { + "alg": "SHA-256", + "content": "c1ac59f18ed20f2e651a37f74134ade2a396e27513ef1c73461873c49058f641" + } + ], + "type": "distribution", + "url": "file://.../tests/_data/infiles/_helpers/local_pckages/c/dist/package_c-23.42-py3-none-any.whl" + } + ], + "licenses": [ + { + "expression": "Apache-2.0 OR MIT" + } + ], + "name": "package-c", + "type": "library", + "version": "23.42" + } + ], + "dependencies": [ + { + "ref": "package-a==23.42" + }, + { + "ref": "package-b==23.42" + }, + { + "ref": "package-c==23.42" + }, + { + "ref": "root-component" + } + ], + "metadata": { + "component": { + "bom-ref": "root-component", + "description": "with licenses as text, instead of SPDX ID/Expression", + "licenses": [ + { + "license": { + "name": "declared license of 'with-license-text'", + "text": { + "content": "This is the license text of this component.\nIt is expected to be available in a SBOM.", + "contentType": "text/plain" + } + } + } + ], + "name": "with-license-text", + "type": "application", + "version": "0.1.0" + }, + "properties": [ + { + "name": "cdx:reproducible", + "value": "true" + } + ], + "tools": [ + { + "name": "cyclonedx-py", + "vendor": "CycloneDX", + "version": "thisVersion-testing" + }, + { + "name": "cyclonedx-python-lib", + "vendor": "CycloneDX", + "version": "libVersion-testing" + } + ] + }, + "version": 1, + "$schema": "http://cyclonedx.org/schema/bom-1.3a.schema.json", + "bomFormat": "CycloneDX", + "specVersion": "1.3" +} \ No newline at end of file diff --git a/tests/_data/snapshots/environment/texts_with-license-text_1.3.xml.bin b/tests/_data/snapshots/environment/texts_with-license-text_1.3.xml.bin new file mode 100644 index 000000000..d79d7368e --- /dev/null +++ b/tests/_data/snapshots/environment/texts_with-license-text_1.3.xml.bin @@ -0,0 +1,109 @@ + + + + + + CycloneDX + cyclonedx-py + thisVersion-testing + + + CycloneDX + cyclonedx-python-lib + libVersion-testing + + + + with-license-text + 0.1.0 + with licenses as text, instead of SPDX ID/Expression + + + declared license of 'with-license-text' + This is the license text of this component. +It is expected to be available in a SBOM. + + + + + true + + + + + package-a + 23.42 + some package A + + + declared license of 'package-a' + some license text + + + + + file://.../tests/_data/infiles/_helpers/local_pckages/a/dist/package_a-23.42-py3-none-any.whl + PackageSource: Archive + + 5c8da28603857d4073c67e751ba3cd526a7ef414135faecfec164e7d01be24be + + + + + + package-b + 23.42 + some package B + + + Apache-2.0 + + + License :: OSI Approved :: Apache Software License + + + + + file://.../tests/_data/infiles/_helpers/local_pckages/b/dist/package_b-23.42-py3-none-any.whl + PackageSource: Archive + + 583f7cb9db5c26194e8004ac82a90d7b46664da8da674919d3e2189c332a1f78 + + + + + + package-c + 23.42 + some package C + + Apache-2.0 OR MIT + + + + file://.../tests/_data/infiles/_helpers/local_pckages/c/dist/package_c-23.42-py3-none-any.whl + PackageSource: Archive + + c1ac59f18ed20f2e651a37f74134ade2a396e27513ef1c73461873c49058f641 + + + + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + + + + + + + + + + diff --git a/tests/_data/snapshots/environment/texts_with-license-text_1.4.json.bin b/tests/_data/snapshots/environment/texts_with-license-text_1.4.json.bin new file mode 100644 index 000000000..ae8c78b44 --- /dev/null +++ b/tests/_data/snapshots/environment/texts_with-license-text_1.4.json.bin @@ -0,0 +1,197 @@ +{ + "components": [ + { + "bom-ref": "package-a==23.42", + "description": "some package A", + "externalReferences": [ + { + "comment": "PackageSource: Archive", + "hashes": [ + { + "alg": "SHA-256", + "content": "5c8da28603857d4073c67e751ba3cd526a7ef414135faecfec164e7d01be24be" + } + ], + "type": "distribution", + "url": "file://.../tests/_data/infiles/_helpers/local_pckages/a/dist/package_a-23.42-py3-none-any.whl" + } + ], + "licenses": [ + { + "license": { + "name": "declared license of 'package-a'", + "text": { + "content": "some license text", + "contentType": "text/plain" + } + } + } + ], + "name": "package-a", + "type": "library", + "version": "23.42" + }, + { + "bom-ref": "package-b==23.42", + "description": "some package B", + "externalReferences": [ + { + "comment": "PackageSource: Archive", + "hashes": [ + { + "alg": "SHA-256", + "content": "583f7cb9db5c26194e8004ac82a90d7b46664da8da674919d3e2189c332a1f78" + } + ], + "type": "distribution", + "url": "file://.../tests/_data/infiles/_helpers/local_pckages/b/dist/package_b-23.42-py3-none-any.whl" + } + ], + "licenses": [ + { + "license": { + "id": "Apache-2.0" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ], + "name": "package-b", + "type": "library", + "version": "23.42" + }, + { + "bom-ref": "package-c==23.42", + "description": "some package C", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, + "externalReferences": [ + { + "comment": "PackageSource: Archive", + "hashes": [ + { + "alg": "SHA-256", + "content": "c1ac59f18ed20f2e651a37f74134ade2a396e27513ef1c73461873c49058f641" + } + ], + "type": "distribution", + "url": "file://.../tests/_data/infiles/_helpers/local_pckages/c/dist/package_c-23.42-py3-none-any.whl" + } + ], + "licenses": [ + { + "expression": "Apache-2.0 OR MIT" + } + ], + "name": "package-c", + "type": "library", + "version": "23.42" + } + ], + "dependencies": [ + { + "ref": "package-a==23.42" + }, + { + "ref": "package-b==23.42" + }, + { + "ref": "package-c==23.42" + }, + { + "ref": "root-component" + } + ], + "metadata": { + "component": { + "bom-ref": "root-component", + "description": "with licenses as text, instead of SPDX ID/Expression", + "licenses": [ + { + "license": { + "name": "declared license of 'with-license-text'", + "text": { + "content": "This is the license text of this component.\nIt is expected to be available in a SBOM.", + "contentType": "text/plain" + } + } + } + ], + "name": "with-license-text", + "type": "application", + "version": "0.1.0" + }, + "properties": [ + { + "name": "cdx:reproducible", + "value": "true" + } + ], + "tools": [ + { + "externalReferences": [ + { + "type": "build-system", + "url": "https://github.com/CycloneDX/cyclonedx-python/actions" + }, + { + "type": "distribution", + "url": "https://pypi.org/project/cyclonedx-bom/" + }, + { + "type": "documentation", + "url": "https://cyclonedx-bom-tool.readthedocs.io/" + }, + { + "type": "issue-tracker", + "url": "https://github.com/CycloneDX/cyclonedx-python/issues" + }, + { + "type": "license", + "url": "https://github.com/CycloneDX/cyclonedx-python/blob/main/LICENSE" + }, + { + "type": "release-notes", + "url": "https://github.com/CycloneDX/cyclonedx-python/blob/main/CHANGELOG.md" + }, + { + "type": "vcs", + "url": "https://github.com/CycloneDX/cyclonedx-python/" + }, + { + "type": "website", + "url": "https://github.com/CycloneDX/cyclonedx-python/#readme" + } + ], + "name": "cyclonedx-py", + "vendor": "CycloneDX", + "version": "thisVersion-testing" + }, + { + "externalReferences": [ ], + "name": "cyclonedx-python-lib", + "vendor": "CycloneDX", + "version": "libVersion-testing" + } + ] + }, + "version": 1, + "$schema": "http://cyclonedx.org/schema/bom-1.4.schema.json", + "bomFormat": "CycloneDX", + "specVersion": "1.4" +} \ No newline at end of file diff --git a/tests/_data/snapshots/environment/texts_with-license-text_1.4.xml.bin b/tests/_data/snapshots/environment/texts_with-license-text_1.4.xml.bin new file mode 100644 index 000000000..860a113dd --- /dev/null +++ b/tests/_data/snapshots/environment/texts_with-license-text_1.4.xml.bin @@ -0,0 +1,136 @@ + + + + + + CycloneDX + cyclonedx-py + thisVersion-testing + + + https://github.com/CycloneDX/cyclonedx-python/actions + + + https://pypi.org/project/cyclonedx-bom/ + + + https://cyclonedx-bom-tool.readthedocs.io/ + + + https://github.com/CycloneDX/cyclonedx-python/issues + + + https://github.com/CycloneDX/cyclonedx-python/blob/main/LICENSE + + + https://github.com/CycloneDX/cyclonedx-python/blob/main/CHANGELOG.md + + + https://github.com/CycloneDX/cyclonedx-python/ + + + https://github.com/CycloneDX/cyclonedx-python/#readme + + + + + CycloneDX + cyclonedx-python-lib + libVersion-testing + + + + + with-license-text + 0.1.0 + with licenses as text, instead of SPDX ID/Expression + + + declared license of 'with-license-text' + This is the license text of this component. +It is expected to be available in a SBOM. + + + + + true + + + + + package-a + 23.42 + some package A + + + declared license of 'package-a' + some license text + + + + + file://.../tests/_data/infiles/_helpers/local_pckages/a/dist/package_a-23.42-py3-none-any.whl + PackageSource: Archive + + 5c8da28603857d4073c67e751ba3cd526a7ef414135faecfec164e7d01be24be + + + + + + package-b + 23.42 + some package B + + + Apache-2.0 + + + License :: OSI Approved :: Apache Software License + + + + + file://.../tests/_data/infiles/_helpers/local_pckages/b/dist/package_b-23.42-py3-none-any.whl + PackageSource: Archive + + 583f7cb9db5c26194e8004ac82a90d7b46664da8da674919d3e2189c332a1f78 + + + + + + package-c + 23.42 + some package C + + Apache-2.0 OR MIT + + + + file://.../tests/_data/infiles/_helpers/local_pckages/c/dist/package_c-23.42-py3-none-any.whl + PackageSource: Archive + + c1ac59f18ed20f2e651a37f74134ade2a396e27513ef1c73461873c49058f641 + + + + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + + + + + + + + + + diff --git a/tests/_data/snapshots/environment/texts_with-license-text_1.5.json.bin b/tests/_data/snapshots/environment/texts_with-license-text_1.5.json.bin new file mode 100644 index 000000000..80dd73698 --- /dev/null +++ b/tests/_data/snapshots/environment/texts_with-license-text_1.5.json.bin @@ -0,0 +1,211 @@ +{ + "components": [ + { + "bom-ref": "package-a==23.42", + "description": "some package A", + "externalReferences": [ + { + "comment": "PackageSource: Archive", + "hashes": [ + { + "alg": "SHA-256", + "content": "5c8da28603857d4073c67e751ba3cd526a7ef414135faecfec164e7d01be24be" + } + ], + "type": "distribution", + "url": "file://.../tests/_data/infiles/_helpers/local_pckages/a/dist/package_a-23.42-py3-none-any.whl" + } + ], + "licenses": [ + { + "license": { + "name": "declared license of 'package-a'", + "text": { + "content": "some license text", + "contentType": "text/plain" + } + } + } + ], + "name": "package-a", + "type": "library", + "version": "23.42" + }, + { + "bom-ref": "package-b==23.42", + "description": "some package B", + "externalReferences": [ + { + "comment": "PackageSource: Archive", + "hashes": [ + { + "alg": "SHA-256", + "content": "583f7cb9db5c26194e8004ac82a90d7b46664da8da674919d3e2189c332a1f78" + } + ], + "type": "distribution", + "url": "file://.../tests/_data/infiles/_helpers/local_pckages/b/dist/package_b-23.42-py3-none-any.whl" + } + ], + "licenses": [ + { + "license": { + "id": "Apache-2.0" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ], + "name": "package-b", + "type": "library", + "version": "23.42" + }, + { + "bom-ref": "package-c==23.42", + "description": "some package C", + "evidence": { + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, + "externalReferences": [ + { + "comment": "PackageSource: Archive", + "hashes": [ + { + "alg": "SHA-256", + "content": "c1ac59f18ed20f2e651a37f74134ade2a396e27513ef1c73461873c49058f641" + } + ], + "type": "distribution", + "url": "file://.../tests/_data/infiles/_helpers/local_pckages/c/dist/package_c-23.42-py3-none-any.whl" + } + ], + "licenses": [ + { + "expression": "Apache-2.0 OR MIT" + } + ], + "name": "package-c", + "type": "library", + "version": "23.42" + } + ], + "dependencies": [ + { + "ref": "package-a==23.42" + }, + { + "ref": "package-b==23.42" + }, + { + "ref": "package-c==23.42" + }, + { + "ref": "root-component" + } + ], + "metadata": { + "component": { + "bom-ref": "root-component", + "description": "with licenses as text, instead of SPDX ID/Expression", + "licenses": [ + { + "license": { + "name": "declared license of 'with-license-text'", + "text": { + "content": "This is the license text of this component.\nIt is expected to be available in a SBOM.", + "contentType": "text/plain" + } + } + } + ], + "name": "with-license-text", + "type": "application", + "version": "0.1.0" + }, + "properties": [ + { + "name": "cdx:reproducible", + "value": "true" + } + ], + "tools": { + "components": [ + { + "description": "CycloneDX Software Bill of Materials (SBOM) generator for Python projects and environments", + "externalReferences": [ + { + "type": "build-system", + "url": "https://github.com/CycloneDX/cyclonedx-python/actions" + }, + { + "type": "distribution", + "url": "https://pypi.org/project/cyclonedx-bom/" + }, + { + "type": "documentation", + "url": "https://cyclonedx-bom-tool.readthedocs.io/" + }, + { + "type": "issue-tracker", + "url": "https://github.com/CycloneDX/cyclonedx-python/issues" + }, + { + "type": "license", + "url": "https://github.com/CycloneDX/cyclonedx-python/blob/main/LICENSE" + }, + { + "type": "release-notes", + "url": "https://github.com/CycloneDX/cyclonedx-python/blob/main/CHANGELOG.md" + }, + { + "type": "vcs", + "url": "https://github.com/CycloneDX/cyclonedx-python/" + }, + { + "type": "website", + "url": "https://github.com/CycloneDX/cyclonedx-python/#readme" + } + ], + "group": "CycloneDX", + "licenses": [ + { + "license": { + "id": "Apache-2.0" + } + } + ], + "name": "cyclonedx-py", + "type": "application", + "version": "thisVersion-testing" + }, + { + "description": "stripped", + "externalReferences": [ ], + "group": "CycloneDX", + "licenses": [ ], + "name": "cyclonedx-python-lib", + "type": "library", + "version": "libVersion-testing" + } + ] + } + }, + "version": 1, + "$schema": "http://cyclonedx.org/schema/bom-1.5.schema.json", + "bomFormat": "CycloneDX", + "specVersion": "1.5" +} \ No newline at end of file diff --git a/tests/_data/snapshots/environment/texts_with-license-text_1.5.xml.bin b/tests/_data/snapshots/environment/texts_with-license-text_1.5.xml.bin new file mode 100644 index 000000000..ad2e500fb --- /dev/null +++ b/tests/_data/snapshots/environment/texts_with-license-text_1.5.xml.bin @@ -0,0 +1,146 @@ + + + + + + + CycloneDX + cyclonedx-py + thisVersion-testing + CycloneDX Software Bill of Materials (SBOM) generator for Python projects and environments + + + Apache-2.0 + + + + + https://github.com/CycloneDX/cyclonedx-python/actions + + + https://pypi.org/project/cyclonedx-bom/ + + + https://cyclonedx-bom-tool.readthedocs.io/ + + + https://github.com/CycloneDX/cyclonedx-python/issues + + + https://github.com/CycloneDX/cyclonedx-python/blob/main/LICENSE + + + https://github.com/CycloneDX/cyclonedx-python/blob/main/CHANGELOG.md + + + https://github.com/CycloneDX/cyclonedx-python/ + + + https://github.com/CycloneDX/cyclonedx-python/#readme + + + + + CycloneDX + cyclonedx-python-lib + libVersion-testing + + + + + + + + with-license-text + 0.1.0 + with licenses as text, instead of SPDX ID/Expression + + + declared license of 'with-license-text' + This is the license text of this component. +It is expected to be available in a SBOM. + + + + + true + + + + + package-a + 23.42 + some package A + + + declared license of 'package-a' + some license text + + + + + file://.../tests/_data/infiles/_helpers/local_pckages/a/dist/package_a-23.42-py3-none-any.whl + PackageSource: Archive + + 5c8da28603857d4073c67e751ba3cd526a7ef414135faecfec164e7d01be24be + + + + + + package-b + 23.42 + some package B + + + Apache-2.0 + + + License :: OSI Approved :: Apache Software License + + + + + file://.../tests/_data/infiles/_helpers/local_pckages/b/dist/package_b-23.42-py3-none-any.whl + PackageSource: Archive + + 583f7cb9db5c26194e8004ac82a90d7b46664da8da674919d3e2189c332a1f78 + + + + + + package-c + 23.42 + some package C + + Apache-2.0 OR MIT + + + + file://.../tests/_data/infiles/_helpers/local_pckages/c/dist/package_c-23.42-py3-none-any.whl + PackageSource: Archive + + c1ac59f18ed20f2e651a37f74134ade2a396e27513ef1c73461873c49058f641 + + + + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + + + + + + + + + + diff --git a/tests/_data/snapshots/environment/texts_with-license-text_1.6.json.bin b/tests/_data/snapshots/environment/texts_with-license-text_1.6.json.bin new file mode 100644 index 000000000..42ea01f80 --- /dev/null +++ b/tests/_data/snapshots/environment/texts_with-license-text_1.6.json.bin @@ -0,0 +1,219 @@ +{ + "components": [ + { + "bom-ref": "package-a==23.42", + "description": "some package A", + "externalReferences": [ + { + "comment": "PackageSource: Archive", + "hashes": [ + { + "alg": "SHA-256", + "content": "5c8da28603857d4073c67e751ba3cd526a7ef414135faecfec164e7d01be24be" + } + ], + "type": "distribution", + "url": "file://.../tests/_data/infiles/_helpers/local_pckages/a/dist/package_a-23.42-py3-none-any.whl" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "declared license of 'package-a'", + "text": { + "content": "some license text", + "contentType": "text/plain" + } + } + } + ], + "name": "package-a", + "type": "library", + "version": "23.42" + }, + { + "bom-ref": "package-b==23.42", + "description": "some package B", + "externalReferences": [ + { + "comment": "PackageSource: Archive", + "hashes": [ + { + "alg": "SHA-256", + "content": "583f7cb9db5c26194e8004ac82a90d7b46664da8da674919d3e2189c332a1f78" + } + ], + "type": "distribution", + "url": "file://.../tests/_data/infiles/_helpers/local_pckages/b/dist/package_b-23.42-py3-none-any.whl" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "Apache-2.0" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ], + "name": "package-b", + "type": "library", + "version": "23.42" + }, + { + "bom-ref": "package-c==23.42", + "description": "some package C", + "evidence": { + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, + "externalReferences": [ + { + "comment": "PackageSource: Archive", + "hashes": [ + { + "alg": "SHA-256", + "content": "c1ac59f18ed20f2e651a37f74134ade2a396e27513ef1c73461873c49058f641" + } + ], + "type": "distribution", + "url": "file://.../tests/_data/infiles/_helpers/local_pckages/c/dist/package_c-23.42-py3-none-any.whl" + } + ], + "licenses": [ + { + "acknowledgement": "declared", + "expression": "Apache-2.0 OR MIT" + } + ], + "name": "package-c", + "type": "library", + "version": "23.42" + } + ], + "dependencies": [ + { + "ref": "package-a==23.42" + }, + { + "ref": "package-b==23.42" + }, + { + "ref": "package-c==23.42" + }, + { + "ref": "root-component" + } + ], + "metadata": { + "component": { + "bom-ref": "root-component", + "description": "with licenses as text, instead of SPDX ID/Expression", + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "declared license of 'with-license-text'", + "text": { + "content": "This is the license text of this component.\nIt is expected to be available in a SBOM.", + "contentType": "text/plain" + } + } + } + ], + "name": "with-license-text", + "type": "application", + "version": "0.1.0" + }, + "properties": [ + { + "name": "cdx:reproducible", + "value": "true" + } + ], + "tools": { + "components": [ + { + "description": "CycloneDX Software Bill of Materials (SBOM) generator for Python projects and environments", + "externalReferences": [ + { + "type": "build-system", + "url": "https://github.com/CycloneDX/cyclonedx-python/actions" + }, + { + "type": "distribution", + "url": "https://pypi.org/project/cyclonedx-bom/" + }, + { + "type": "documentation", + "url": "https://cyclonedx-bom-tool.readthedocs.io/" + }, + { + "type": "issue-tracker", + "url": "https://github.com/CycloneDX/cyclonedx-python/issues" + }, + { + "type": "license", + "url": "https://github.com/CycloneDX/cyclonedx-python/blob/main/LICENSE" + }, + { + "type": "release-notes", + "url": "https://github.com/CycloneDX/cyclonedx-python/blob/main/CHANGELOG.md" + }, + { + "type": "vcs", + "url": "https://github.com/CycloneDX/cyclonedx-python/" + }, + { + "type": "website", + "url": "https://github.com/CycloneDX/cyclonedx-python/#readme" + } + ], + "group": "CycloneDX", + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "Apache-2.0" + } + } + ], + "name": "cyclonedx-py", + "type": "application", + "version": "thisVersion-testing" + }, + { + "description": "stripped", + "externalReferences": [ ], + "group": "CycloneDX", + "licenses": [ ], + "name": "cyclonedx-python-lib", + "type": "library", + "version": "libVersion-testing" + } + ] + } + }, + "version": 1, + "$schema": "http://cyclonedx.org/schema/bom-1.6.schema.json", + "bomFormat": "CycloneDX", + "specVersion": "1.6" +} \ No newline at end of file diff --git a/tests/_data/snapshots/environment/texts_with-license-text_1.6.xml.bin b/tests/_data/snapshots/environment/texts_with-license-text_1.6.xml.bin new file mode 100644 index 000000000..ff570f98b --- /dev/null +++ b/tests/_data/snapshots/environment/texts_with-license-text_1.6.xml.bin @@ -0,0 +1,146 @@ + + + + + + + CycloneDX + cyclonedx-py + thisVersion-testing + CycloneDX Software Bill of Materials (SBOM) generator for Python projects and environments + + + Apache-2.0 + + + + + https://github.com/CycloneDX/cyclonedx-python/actions + + + https://pypi.org/project/cyclonedx-bom/ + + + https://cyclonedx-bom-tool.readthedocs.io/ + + + https://github.com/CycloneDX/cyclonedx-python/issues + + + https://github.com/CycloneDX/cyclonedx-python/blob/main/LICENSE + + + https://github.com/CycloneDX/cyclonedx-python/blob/main/CHANGELOG.md + + + https://github.com/CycloneDX/cyclonedx-python/ + + + https://github.com/CycloneDX/cyclonedx-python/#readme + + + + + CycloneDX + cyclonedx-python-lib + libVersion-testing + + + + + + + + with-license-text + 0.1.0 + with licenses as text, instead of SPDX ID/Expression + + + declared license of 'with-license-text' + This is the license text of this component. +It is expected to be available in a SBOM. + + + + + true + + + + + package-a + 23.42 + some package A + + + declared license of 'package-a' + some license text + + + + + file://.../tests/_data/infiles/_helpers/local_pckages/a/dist/package_a-23.42-py3-none-any.whl + PackageSource: Archive + + 5c8da28603857d4073c67e751ba3cd526a7ef414135faecfec164e7d01be24be + + + + + + package-b + 23.42 + some package B + + + Apache-2.0 + + + License :: OSI Approved :: Apache Software License + + + + + file://.../tests/_data/infiles/_helpers/local_pckages/b/dist/package_b-23.42-py3-none-any.whl + PackageSource: Archive + + 583f7cb9db5c26194e8004ac82a90d7b46664da8da674919d3e2189c332a1f78 + + + + + + package-c + 23.42 + some package C + + Apache-2.0 OR MIT + + + + file://.../tests/_data/infiles/_helpers/local_pckages/c/dist/package_c-23.42-py3-none-any.whl + PackageSource: Archive + + c1ac59f18ed20f2e651a37f74134ade2a396e27513ef1c73461873c49058f641 + + + + + + + MIT + + + License :: OSI Approved :: Apache Software License + + + + + + + + + + + + diff --git a/tests/integration/test_cli_environment.py b/tests/integration/test_cli_environment.py index ab94fc9a0..1459943b4 100644 --- a/tests/integration/test_cli_environment.py +++ b/tests/integration/test_cli_environment.py @@ -158,36 +158,7 @@ def test_plain_as_expected(self, projectdir: str, sv: SchemaVersion, of: OutputF self.assertEqual(0, res, err) self.assertEqualSnapshot(out, 'plain', projectdir, sv, of) - @named_data(*test_data_file_filter('pep639')) - def test_pep639_as_expected(self, projectdir: str, sv: SchemaVersion, of: OutputFormat) -> None: - res, out, err = run_cli( - 'environment', - '-vvv', - '--sv', sv.to_version(), - '--of', of.name, - '--output-reproducible', - '-o=-', - '--pyproject', join(projectdir, 'pyproject.toml'), - join(projectdir, '.venv')) - self.assertEqual(0, res, err) - self.assertEqualSnapshot(out, 'pep639', projectdir, sv, of) - - @named_data(*test_data_file_filter('pep639')) - def test_pep639_texts_as_expected(self, projectdir: str, sv: SchemaVersion, of: OutputFormat) -> None: - res, out, err = run_cli( - 'environment', - '-vvv', - '--sv', sv.to_version(), - '--of', of.name, - '--output-reproducible', - '-o=-', - '--pyproject', join(projectdir, 'pyproject.toml'), - '--gather-license-texts', - join(projectdir, '.venv')) - self.assertEqual(0, res, err) - self.assertEqualSnapshot(out, 'pep639-texts', projectdir, sv, of) - - @named_data(*test_data_file_filter('pep639')) + @named_data(*test_data_file_filter('with-license-')) def test_texts_as_expected(self, projectdir: str, sv: SchemaVersion, of: OutputFormat) -> None: res, out, err = run_cli( 'environment', From e231212f79a52c25942f3c0803228caef962e4a4 Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Wed, 9 Jul 2025 11:05:22 +0200 Subject: [PATCH 25/49] wip Signed-off-by: Jan Kowalleck --- tests/_data/infiles/environment/normalize-packagename/init.py | 1 - .../_data/infiles/environment/normalize-packagename/pinning.txt | 1 - 2 files changed, 2 deletions(-) diff --git a/tests/_data/infiles/environment/normalize-packagename/init.py b/tests/_data/infiles/environment/normalize-packagename/init.py index d2a88fc9b..65d1e3952 100644 --- a/tests/_data/infiles/environment/normalize-packagename/init.py +++ b/tests/_data/infiles/environment/normalize-packagename/init.py @@ -67,7 +67,6 @@ def main() -> None: # https://packaging.python.org/en/latest/specifications/name-normalization/#name-normalization 'ruamel-YAML[jinja2]', # actually "ruamel.yaml", normalizes to "ruamel-yaml" 'ruamel-Yaml.Jinja2', # actually "ruamel.yaml.jinja2", normalizes to "ruamel-yaml-jinja2" - 'ruamel_yaml-Clib', # actually "ruamel.yaml.clib", normalized to "ruamel-yaml-clib" ) diff --git a/tests/_data/infiles/environment/normalize-packagename/pinning.txt b/tests/_data/infiles/environment/normalize-packagename/pinning.txt index e0e1add4f..4b8e9058b 100644 --- a/tests/_data/infiles/environment/normalize-packagename/pinning.txt +++ b/tests/_data/infiles/environment/normalize-packagename/pinning.txt @@ -1,3 +1,2 @@ ruamel.yaml==0.18.5 -ruamel.yaml.clib==0.2.8 ruamel.yaml.jinja2==0.2.7 From 24b4b3474cf763fec36f77319df4db1fb82ffc2b Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Wed, 9 Jul 2025 11:09:13 +0200 Subject: [PATCH 26/49] wip Signed-off-by: Jan Kowalleck --- .../plain_normalize-packagename_1.0.xml.bin | 7 ----- .../plain_normalize-packagename_1.1.xml.bin | 17 ------------ .../plain_normalize-packagename_1.2.json.bin | 26 ------------------ .../plain_normalize-packagename_1.2.xml.bin | 19 ------------- .../plain_normalize-packagename_1.3.json.bin | 26 ------------------ .../plain_normalize-packagename_1.3.xml.bin | 19 ------------- .../plain_normalize-packagename_1.4.json.bin | 26 ------------------ .../plain_normalize-packagename_1.4.xml.bin | 19 ------------- .../plain_normalize-packagename_1.5.json.bin | 26 ------------------ .../plain_normalize-packagename_1.5.xml.bin | 19 ------------- .../plain_normalize-packagename_1.6.json.bin | 27 ------------------- .../plain_normalize-packagename_1.6.xml.bin | 19 ------------- 12 files changed, 250 deletions(-) diff --git a/tests/_data/snapshots/environment/plain_normalize-packagename_1.0.xml.bin b/tests/_data/snapshots/environment/plain_normalize-packagename_1.0.xml.bin index a493f9396..72cd7c315 100644 --- a/tests/_data/snapshots/environment/plain_normalize-packagename_1.0.xml.bin +++ b/tests/_data/snapshots/environment/plain_normalize-packagename_1.0.xml.bin @@ -8,13 +8,6 @@ pkg:pypi/ruamel.yaml@0.18.5 false - - ruamel.yaml.clib - 0.2.8 - C version of reader, parser and emitter for ruamel.yaml derived from libyaml - pkg:pypi/ruamel.yaml.clib@0.2.8 - false - ruamel.yaml.jinja2 0.2.7 diff --git a/tests/_data/snapshots/environment/plain_normalize-packagename_1.1.xml.bin b/tests/_data/snapshots/environment/plain_normalize-packagename_1.1.xml.bin index ff813c972..913e43499 100644 --- a/tests/_data/snapshots/environment/plain_normalize-packagename_1.1.xml.bin +++ b/tests/_data/snapshots/environment/plain_normalize-packagename_1.1.xml.bin @@ -30,23 +30,6 @@ - - ruamel.yaml.clib - 0.2.8 - C version of reader, parser and emitter for ruamel.yaml derived from libyaml - - - MIT - - - pkg:pypi/ruamel.yaml.clib@0.2.8 - - - https://sourceforge.net/p/ruamel-yaml-clib/code/ci/default/tree - from packaging metadata: Home-page - - - ruamel.yaml.jinja2 0.2.7 diff --git a/tests/_data/snapshots/environment/plain_normalize-packagename_1.2.json.bin b/tests/_data/snapshots/environment/plain_normalize-packagename_1.2.json.bin index 91708102f..a225a2802 100644 --- a/tests/_data/snapshots/environment/plain_normalize-packagename_1.2.json.bin +++ b/tests/_data/snapshots/environment/plain_normalize-packagename_1.2.json.bin @@ -37,28 +37,6 @@ "type": "library", "version": "0.18.5" }, - { - "bom-ref": "ruamel.yaml.clib==0.2.8", - "description": "C version of reader, parser and emitter for ruamel.yaml derived from libyaml", - "externalReferences": [ - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://sourceforge.net/p/ruamel-yaml-clib/code/ci/default/tree" - } - ], - "licenses": [ - { - "license": { - "id": "MIT" - } - } - ], - "name": "ruamel.yaml.clib", - "purl": "pkg:pypi/ruamel.yaml.clib@0.2.8", - "type": "library", - "version": "0.2.8" - }, { "bom-ref": "ruamel.yaml.jinja2==0.2.7", "description": "jinja2 pre and post-processor to update with YAML", @@ -89,9 +67,6 @@ ], "ref": "root-component" }, - { - "ref": "ruamel.yaml.clib==0.2.8" - }, { "dependsOn": [ "ruamel.yaml==0.18.5" @@ -100,7 +75,6 @@ }, { "dependsOn": [ - "ruamel.yaml.clib==0.2.8", "ruamel.yaml.jinja2==0.2.7" ], "ref": "ruamel.yaml==0.18.5" diff --git a/tests/_data/snapshots/environment/plain_normalize-packagename_1.2.xml.bin b/tests/_data/snapshots/environment/plain_normalize-packagename_1.2.xml.bin index ed9c8cf81..a1961673d 100644 --- a/tests/_data/snapshots/environment/plain_normalize-packagename_1.2.xml.bin +++ b/tests/_data/snapshots/environment/plain_normalize-packagename_1.2.xml.bin @@ -49,23 +49,6 @@ - - ruamel.yaml.clib - 0.2.8 - C version of reader, parser and emitter for ruamel.yaml derived from libyaml - - - MIT - - - pkg:pypi/ruamel.yaml.clib@0.2.8 - - - https://sourceforge.net/p/ruamel-yaml-clib/code/ci/default/tree - from packaging metadata: Home-page - - - ruamel.yaml.jinja2 0.2.7 @@ -88,12 +71,10 @@ - - diff --git a/tests/_data/snapshots/environment/plain_normalize-packagename_1.3.json.bin b/tests/_data/snapshots/environment/plain_normalize-packagename_1.3.json.bin index 6d4e8734b..524ad20bd 100644 --- a/tests/_data/snapshots/environment/plain_normalize-packagename_1.3.json.bin +++ b/tests/_data/snapshots/environment/plain_normalize-packagename_1.3.json.bin @@ -43,28 +43,6 @@ "type": "library", "version": "0.18.5" }, - { - "bom-ref": "ruamel.yaml.clib==0.2.8", - "description": "C version of reader, parser and emitter for ruamel.yaml derived from libyaml", - "externalReferences": [ - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://sourceforge.net/p/ruamel-yaml-clib/code/ci/default/tree" - } - ], - "licenses": [ - { - "license": { - "id": "MIT" - } - } - ], - "name": "ruamel.yaml.clib", - "purl": "pkg:pypi/ruamel.yaml.clib@0.2.8", - "type": "library", - "version": "0.2.8" - }, { "bom-ref": "ruamel.yaml.jinja2==0.2.7", "description": "jinja2 pre and post-processor to update with YAML", @@ -95,9 +73,6 @@ ], "ref": "root-component" }, - { - "ref": "ruamel.yaml.clib==0.2.8" - }, { "dependsOn": [ "ruamel.yaml==0.18.5" @@ -106,7 +81,6 @@ }, { "dependsOn": [ - "ruamel.yaml.clib==0.2.8", "ruamel.yaml.jinja2==0.2.7" ], "ref": "ruamel.yaml==0.18.5" diff --git a/tests/_data/snapshots/environment/plain_normalize-packagename_1.3.xml.bin b/tests/_data/snapshots/environment/plain_normalize-packagename_1.3.xml.bin index 5eb7f2d4e..9a6cc0b2d 100644 --- a/tests/_data/snapshots/environment/plain_normalize-packagename_1.3.xml.bin +++ b/tests/_data/snapshots/environment/plain_normalize-packagename_1.3.xml.bin @@ -55,23 +55,6 @@ jinja2 - - ruamel.yaml.clib - 0.2.8 - C version of reader, parser and emitter for ruamel.yaml derived from libyaml - - - MIT - - - pkg:pypi/ruamel.yaml.clib@0.2.8 - - - https://sourceforge.net/p/ruamel-yaml-clib/code/ci/default/tree - from packaging metadata: Home-page - - - ruamel.yaml.jinja2 0.2.7 @@ -94,12 +77,10 @@ - - diff --git a/tests/_data/snapshots/environment/plain_normalize-packagename_1.4.json.bin b/tests/_data/snapshots/environment/plain_normalize-packagename_1.4.json.bin index 0544a3496..036cd6509 100644 --- a/tests/_data/snapshots/environment/plain_normalize-packagename_1.4.json.bin +++ b/tests/_data/snapshots/environment/plain_normalize-packagename_1.4.json.bin @@ -43,28 +43,6 @@ "type": "library", "version": "0.18.5" }, - { - "bom-ref": "ruamel.yaml.clib==0.2.8", - "description": "C version of reader, parser and emitter for ruamel.yaml derived from libyaml", - "externalReferences": [ - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://sourceforge.net/p/ruamel-yaml-clib/code/ci/default/tree" - } - ], - "licenses": [ - { - "license": { - "id": "MIT" - } - } - ], - "name": "ruamel.yaml.clib", - "purl": "pkg:pypi/ruamel.yaml.clib@0.2.8", - "type": "library", - "version": "0.2.8" - }, { "bom-ref": "ruamel.yaml.jinja2==0.2.7", "description": "jinja2 pre and post-processor to update with YAML", @@ -95,9 +73,6 @@ ], "ref": "root-component" }, - { - "ref": "ruamel.yaml.clib==0.2.8" - }, { "dependsOn": [ "ruamel.yaml==0.18.5" @@ -106,7 +81,6 @@ }, { "dependsOn": [ - "ruamel.yaml.clib==0.2.8", "ruamel.yaml.jinja2==0.2.7" ], "ref": "ruamel.yaml==0.18.5" diff --git a/tests/_data/snapshots/environment/plain_normalize-packagename_1.4.xml.bin b/tests/_data/snapshots/environment/plain_normalize-packagename_1.4.xml.bin index 0cfe9b1d3..545b48684 100644 --- a/tests/_data/snapshots/environment/plain_normalize-packagename_1.4.xml.bin +++ b/tests/_data/snapshots/environment/plain_normalize-packagename_1.4.xml.bin @@ -82,23 +82,6 @@ jinja2 - - ruamel.yaml.clib - 0.2.8 - C version of reader, parser and emitter for ruamel.yaml derived from libyaml - - - MIT - - - pkg:pypi/ruamel.yaml.clib@0.2.8 - - - https://sourceforge.net/p/ruamel-yaml-clib/code/ci/default/tree - from packaging metadata: Home-page - - - ruamel.yaml.jinja2 0.2.7 @@ -121,12 +104,10 @@ - - diff --git a/tests/_data/snapshots/environment/plain_normalize-packagename_1.5.json.bin b/tests/_data/snapshots/environment/plain_normalize-packagename_1.5.json.bin index d6ee9708d..5a0fb10bd 100644 --- a/tests/_data/snapshots/environment/plain_normalize-packagename_1.5.json.bin +++ b/tests/_data/snapshots/environment/plain_normalize-packagename_1.5.json.bin @@ -43,28 +43,6 @@ "type": "library", "version": "0.18.5" }, - { - "bom-ref": "ruamel.yaml.clib==0.2.8", - "description": "C version of reader, parser and emitter for ruamel.yaml derived from libyaml", - "externalReferences": [ - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://sourceforge.net/p/ruamel-yaml-clib/code/ci/default/tree" - } - ], - "licenses": [ - { - "license": { - "id": "MIT" - } - } - ], - "name": "ruamel.yaml.clib", - "purl": "pkg:pypi/ruamel.yaml.clib@0.2.8", - "type": "library", - "version": "0.2.8" - }, { "bom-ref": "ruamel.yaml.jinja2==0.2.7", "description": "jinja2 pre and post-processor to update with YAML", @@ -95,9 +73,6 @@ ], "ref": "root-component" }, - { - "ref": "ruamel.yaml.clib==0.2.8" - }, { "dependsOn": [ "ruamel.yaml==0.18.5" @@ -106,7 +81,6 @@ }, { "dependsOn": [ - "ruamel.yaml.clib==0.2.8", "ruamel.yaml.jinja2==0.2.7" ], "ref": "ruamel.yaml==0.18.5" diff --git a/tests/_data/snapshots/environment/plain_normalize-packagename_1.5.xml.bin b/tests/_data/snapshots/environment/plain_normalize-packagename_1.5.xml.bin index 0315026e5..51adc4aa7 100644 --- a/tests/_data/snapshots/environment/plain_normalize-packagename_1.5.xml.bin +++ b/tests/_data/snapshots/environment/plain_normalize-packagename_1.5.xml.bin @@ -92,23 +92,6 @@ jinja2 - - ruamel.yaml.clib - 0.2.8 - C version of reader, parser and emitter for ruamel.yaml derived from libyaml - - - MIT - - - pkg:pypi/ruamel.yaml.clib@0.2.8 - - - https://sourceforge.net/p/ruamel-yaml-clib/code/ci/default/tree - from packaging metadata: Home-page - - - ruamel.yaml.jinja2 0.2.7 @@ -131,12 +114,10 @@ - - diff --git a/tests/_data/snapshots/environment/plain_normalize-packagename_1.6.json.bin b/tests/_data/snapshots/environment/plain_normalize-packagename_1.6.json.bin index f5afd381a..2b716f80c 100644 --- a/tests/_data/snapshots/environment/plain_normalize-packagename_1.6.json.bin +++ b/tests/_data/snapshots/environment/plain_normalize-packagename_1.6.json.bin @@ -44,29 +44,6 @@ "type": "library", "version": "0.18.5" }, - { - "bom-ref": "ruamel.yaml.clib==0.2.8", - "description": "C version of reader, parser and emitter for ruamel.yaml derived from libyaml", - "externalReferences": [ - { - "comment": "from packaging metadata: Home-page", - "type": "website", - "url": "https://sourceforge.net/p/ruamel-yaml-clib/code/ci/default/tree" - } - ], - "licenses": [ - { - "license": { - "acknowledgement": "declared", - "id": "MIT" - } - } - ], - "name": "ruamel.yaml.clib", - "purl": "pkg:pypi/ruamel.yaml.clib@0.2.8", - "type": "library", - "version": "0.2.8" - }, { "bom-ref": "ruamel.yaml.jinja2==0.2.7", "description": "jinja2 pre and post-processor to update with YAML", @@ -98,9 +75,6 @@ ], "ref": "root-component" }, - { - "ref": "ruamel.yaml.clib==0.2.8" - }, { "dependsOn": [ "ruamel.yaml==0.18.5" @@ -109,7 +83,6 @@ }, { "dependsOn": [ - "ruamel.yaml.clib==0.2.8", "ruamel.yaml.jinja2==0.2.7" ], "ref": "ruamel.yaml==0.18.5" diff --git a/tests/_data/snapshots/environment/plain_normalize-packagename_1.6.xml.bin b/tests/_data/snapshots/environment/plain_normalize-packagename_1.6.xml.bin index f4269cf4d..27360cf0b 100644 --- a/tests/_data/snapshots/environment/plain_normalize-packagename_1.6.xml.bin +++ b/tests/_data/snapshots/environment/plain_normalize-packagename_1.6.xml.bin @@ -92,23 +92,6 @@ jinja2 - - ruamel.yaml.clib - 0.2.8 - C version of reader, parser and emitter for ruamel.yaml derived from libyaml - - - MIT - - - pkg:pypi/ruamel.yaml.clib@0.2.8 - - - https://sourceforge.net/p/ruamel-yaml-clib/code/ci/default/tree - from packaging metadata: Home-page - - - ruamel.yaml.jinja2 0.2.7 @@ -131,12 +114,10 @@ - - From 0ba2ee7272d8cb8936f935be82557e1111884945 Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Wed, 9 Jul 2025 11:29:27 +0200 Subject: [PATCH 27/49] wip Signed-off-by: Jan Kowalleck --- .../_internal/py_interop/packagemetadata.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/cyclonedx_py/_internal/py_interop/packagemetadata.py b/cyclonedx_py/_internal/py_interop/packagemetadata.py index 033cd1a07..792781f4f 100644 --- a/cyclonedx_py/_internal/py_interop/packagemetadata.py +++ b/cyclonedx_py/_internal/py_interop/packagemetadata.py @@ -17,9 +17,12 @@ __all__ = ['PackageMetadata'] -import sys +from typing import TYPE_CHECKING -if sys.version_info >= (3, 10): - from importlib.metadata import PackageMetadata -else: - from email.message import Message as PackageMetadata +if TYPE_CHECKING: + import sys + + if sys.version_info >= (3, 10): + from importlib.metadata import PackageMetadata + else: + from email.message import Message as PackageMetadata From 330d161e5adbf4e67ce3cdfd5f9963f042ac9608 Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Wed, 9 Jul 2025 11:35:27 +0200 Subject: [PATCH 28/49] wip Signed-off-by: Jan Kowalleck --- cyclonedx_py/_internal/utils/pep621.py | 11 ++++++----- .../environment/plain_with-license-text_1.2.json.bin | 7 ------- .../environment/plain_with-license-text_1.2.xml.bin | 5 ----- .../environment/plain_with-license-text_1.3.json.bin | 7 ------- .../environment/plain_with-license-text_1.3.xml.bin | 5 ----- .../environment/plain_with-license-text_1.4.json.bin | 7 ------- .../environment/plain_with-license-text_1.4.xml.bin | 5 ----- .../environment/plain_with-license-text_1.5.json.bin | 7 ------- .../environment/plain_with-license-text_1.5.xml.bin | 5 ----- .../environment/plain_with-license-text_1.6.json.bin | 8 -------- .../environment/plain_with-license-text_1.6.xml.bin | 5 ----- 11 files changed, 6 insertions(+), 66 deletions(-) diff --git a/cyclonedx_py/_internal/utils/pep621.py b/cyclonedx_py/_internal/utils/pep621.py index 33fdec206..ef7f56c13 100644 --- a/cyclonedx_py/_internal/utils/pep621.py +++ b/cyclonedx_py/_internal/utils/pep621.py @@ -83,11 +83,12 @@ def project2licenses(project: dict[str, Any], lfac: 'LicenseFactory', elif len(plicense_text := plicense.get('text', '')) > 0: license = lfac.make_from_string(plicense_text, license_acknowledgement=lack) - if isinstance(license, DisjunctiveLicense) and license.id is None and gather_text: - # per spec, `License` is either a SPDX ID/Expression, or a license text(not name!) - yield DisjunctiveLicense(name=f"declared license of '{project['name']}'", - acknowledgement=lack, - text=AttachedText(content=plicense_text)) + if isinstance(license, DisjunctiveLicense) and license.id is None: + if gather_text: + # per spec, `License` is either a SPDX ID/Expression, or a license text(not name!) + yield DisjunctiveLicense(name=f"declared license of '{project['name']}'", + acknowledgement=lack, + text=AttachedText(content=plicense_text)) else: yield license # Silently skip any other types (including string/PEP 639) diff --git a/tests/_data/snapshots/environment/plain_with-license-text_1.2.json.bin b/tests/_data/snapshots/environment/plain_with-license-text_1.2.json.bin index 85fcdc06f..80b7ceade 100644 --- a/tests/_data/snapshots/environment/plain_with-license-text_1.2.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-text_1.2.json.bin @@ -78,13 +78,6 @@ "component": { "bom-ref": "root-component", "description": "with licenses as text, instead of SPDX ID/Expression", - "licenses": [ - { - "license": { - "name": "This is the license text of this component.\nIt is expected to be available in a SBOM." - } - } - ], "name": "with-license-text", "type": "application", "version": "0.1.0" diff --git a/tests/_data/snapshots/environment/plain_with-license-text_1.2.xml.bin b/tests/_data/snapshots/environment/plain_with-license-text_1.2.xml.bin index 20892fafc..807a41343 100644 --- a/tests/_data/snapshots/environment/plain_with-license-text_1.2.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-text_1.2.xml.bin @@ -17,11 +17,6 @@ with-license-text 0.1.0 with licenses as text, instead of SPDX ID/Expression - - - This is the license text of this component. It is expected to be available in a SBOM. - - diff --git a/tests/_data/snapshots/environment/plain_with-license-text_1.3.json.bin b/tests/_data/snapshots/environment/plain_with-license-text_1.3.json.bin index 669d5b584..d18b46433 100644 --- a/tests/_data/snapshots/environment/plain_with-license-text_1.3.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-text_1.3.json.bin @@ -110,13 +110,6 @@ "component": { "bom-ref": "root-component", "description": "with licenses as text, instead of SPDX ID/Expression", - "licenses": [ - { - "license": { - "name": "This is the license text of this component.\nIt is expected to be available in a SBOM." - } - } - ], "name": "with-license-text", "type": "application", "version": "0.1.0" diff --git a/tests/_data/snapshots/environment/plain_with-license-text_1.3.xml.bin b/tests/_data/snapshots/environment/plain_with-license-text_1.3.xml.bin index 3c07eec33..2c91f51cb 100644 --- a/tests/_data/snapshots/environment/plain_with-license-text_1.3.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-text_1.3.xml.bin @@ -17,11 +17,6 @@ with-license-text 0.1.0 with licenses as text, instead of SPDX ID/Expression - - - This is the license text of this component. It is expected to be available in a SBOM. - - true diff --git a/tests/_data/snapshots/environment/plain_with-license-text_1.4.json.bin b/tests/_data/snapshots/environment/plain_with-license-text_1.4.json.bin index bdd1343db..6a4de2400 100644 --- a/tests/_data/snapshots/environment/plain_with-license-text_1.4.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-text_1.4.json.bin @@ -110,13 +110,6 @@ "component": { "bom-ref": "root-component", "description": "with licenses as text, instead of SPDX ID/Expression", - "licenses": [ - { - "license": { - "name": "This is the license text of this component.\nIt is expected to be available in a SBOM." - } - } - ], "name": "with-license-text", "type": "application", "version": "0.1.0" diff --git a/tests/_data/snapshots/environment/plain_with-license-text_1.4.xml.bin b/tests/_data/snapshots/environment/plain_with-license-text_1.4.xml.bin index 23a4358e1..a764518e5 100644 --- a/tests/_data/snapshots/environment/plain_with-license-text_1.4.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-text_1.4.xml.bin @@ -44,11 +44,6 @@ with-license-text 0.1.0 with licenses as text, instead of SPDX ID/Expression - - - This is the license text of this component. It is expected to be available in a SBOM. - - true diff --git a/tests/_data/snapshots/environment/plain_with-license-text_1.5.json.bin b/tests/_data/snapshots/environment/plain_with-license-text_1.5.json.bin index 07edbb213..6e8ce5e30 100644 --- a/tests/_data/snapshots/environment/plain_with-license-text_1.5.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-text_1.5.json.bin @@ -110,13 +110,6 @@ "component": { "bom-ref": "root-component", "description": "with licenses as text, instead of SPDX ID/Expression", - "licenses": [ - { - "license": { - "name": "This is the license text of this component.\nIt is expected to be available in a SBOM." - } - } - ], "name": "with-license-text", "type": "application", "version": "0.1.0" diff --git a/tests/_data/snapshots/environment/plain_with-license-text_1.5.xml.bin b/tests/_data/snapshots/environment/plain_with-license-text_1.5.xml.bin index fcb16c931..bc5bd8557 100644 --- a/tests/_data/snapshots/environment/plain_with-license-text_1.5.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-text_1.5.xml.bin @@ -54,11 +54,6 @@ with-license-text 0.1.0 with licenses as text, instead of SPDX ID/Expression - - - This is the license text of this component. It is expected to be available in a SBOM. - - true diff --git a/tests/_data/snapshots/environment/plain_with-license-text_1.6.json.bin b/tests/_data/snapshots/environment/plain_with-license-text_1.6.json.bin index 1fef9b83d..183060eec 100644 --- a/tests/_data/snapshots/environment/plain_with-license-text_1.6.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-text_1.6.json.bin @@ -115,14 +115,6 @@ "component": { "bom-ref": "root-component", "description": "with licenses as text, instead of SPDX ID/Expression", - "licenses": [ - { - "license": { - "acknowledgement": "declared", - "name": "This is the license text of this component.\nIt is expected to be available in a SBOM." - } - } - ], "name": "with-license-text", "type": "application", "version": "0.1.0" diff --git a/tests/_data/snapshots/environment/plain_with-license-text_1.6.xml.bin b/tests/_data/snapshots/environment/plain_with-license-text_1.6.xml.bin index cc631c23e..ae0829676 100644 --- a/tests/_data/snapshots/environment/plain_with-license-text_1.6.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-text_1.6.xml.bin @@ -54,11 +54,6 @@ with-license-text 0.1.0 with licenses as text, instead of SPDX ID/Expression - - - This is the license text of this component. It is expected to be available in a SBOM. - - true From d5b7a0d1e380b27e6643e221a00d9ac3d23640ce Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Wed, 9 Jul 2025 11:47:23 +0200 Subject: [PATCH 29/49] wip Signed-off-by: Jan Kowalleck --- .../infiles/environment/with-license-pep639/pyproject.toml | 2 +- .../environment/plain_with-license-pep639_1.2.json.bin | 2 +- .../snapshots/environment/plain_with-license-pep639_1.2.xml.bin | 2 +- .../environment/plain_with-license-pep639_1.3.json.bin | 2 +- .../snapshots/environment/plain_with-license-pep639_1.3.xml.bin | 2 +- .../environment/plain_with-license-pep639_1.4.json.bin | 2 +- .../snapshots/environment/plain_with-license-pep639_1.4.xml.bin | 2 +- .../environment/plain_with-license-pep639_1.5.json.bin | 2 +- .../snapshots/environment/plain_with-license-pep639_1.5.xml.bin | 2 +- .../environment/plain_with-license-pep639_1.6.json.bin | 2 +- .../snapshots/environment/plain_with-license-pep639_1.6.xml.bin | 2 +- .../environment/texts_with-license-pep639_1.2.json.bin | 2 +- .../snapshots/environment/texts_with-license-pep639_1.2.xml.bin | 2 +- .../environment/texts_with-license-pep639_1.3.json.bin | 2 +- .../snapshots/environment/texts_with-license-pep639_1.3.xml.bin | 2 +- .../environment/texts_with-license-pep639_1.4.json.bin | 2 +- .../snapshots/environment/texts_with-license-pep639_1.4.xml.bin | 2 +- .../environment/texts_with-license-pep639_1.5.json.bin | 2 +- .../snapshots/environment/texts_with-license-pep639_1.5.xml.bin | 2 +- .../environment/texts_with-license-pep639_1.6.json.bin | 2 +- .../snapshots/environment/texts_with-license-pep639_1.6.xml.bin | 2 +- 21 files changed, 21 insertions(+), 21 deletions(-) diff --git a/tests/_data/infiles/environment/with-license-pep639/pyproject.toml b/tests/_data/infiles/environment/with-license-pep639/pyproject.toml index 67dc0da4e..45ac64c0f 100644 --- a/tests/_data/infiles/environment/with-license-pep639/pyproject.toml +++ b/tests/_data/infiles/environment/with-license-pep639/pyproject.toml @@ -2,7 +2,7 @@ # https://packaging.python.org/en/latest/specifications/declaring-project-metadata/#declaring-project-metadata name = "with-extras" version = "0.1.0" -description = "depenndencies with license declaration accoring to PEP 639" +description = "dependencies with license declaration according to PEP 639" # https://peps.python.org/pep-0639/#add-string-value-to-license-key license = "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.2.json.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.2.json.bin index 6789eee25..3e078d328 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.2.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.2.json.bin @@ -235,7 +235,7 @@ "metadata": { "component": { "bom-ref": "root-component", - "description": "depenndencies with license declaration accoring to PEP 639", + "description": "dependencies with license declaration according to PEP 639", "licenses": [ { "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.2.xml.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.2.xml.bin index ad5f02893..49a337812 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.2.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.2.xml.bin @@ -16,7 +16,7 @@ with-extras 0.1.0 - depenndencies with license declaration accoring to PEP 639 + dependencies with license declaration according to PEP 639 MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.json.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.json.bin index 9334dd23d..b6b4c693d 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.json.bin @@ -249,7 +249,7 @@ "metadata": { "component": { "bom-ref": "root-component", - "description": "depenndencies with license declaration accoring to PEP 639", + "description": "dependencies with license declaration according to PEP 639", "licenses": [ { "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.xml.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.xml.bin index f725178ae..bbbee8f2c 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.xml.bin @@ -16,7 +16,7 @@ with-extras 0.1.0 - depenndencies with license declaration accoring to PEP 639 + dependencies with license declaration according to PEP 639 MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.json.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.json.bin index fb6420211..c630a58cf 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.json.bin @@ -249,7 +249,7 @@ "metadata": { "component": { "bom-ref": "root-component", - "description": "depenndencies with license declaration accoring to PEP 639", + "description": "dependencies with license declaration according to PEP 639", "licenses": [ { "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.xml.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.xml.bin index 92849ffd9..82c439560 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.xml.bin @@ -43,7 +43,7 @@ with-extras 0.1.0 - depenndencies with license declaration accoring to PEP 639 + dependencies with license declaration according to PEP 639 MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.json.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.json.bin index 9f3dcde33..20762352e 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.json.bin @@ -249,7 +249,7 @@ "metadata": { "component": { "bom-ref": "root-component", - "description": "depenndencies with license declaration accoring to PEP 639", + "description": "dependencies with license declaration according to PEP 639", "licenses": [ { "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.xml.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.xml.bin index faa0a6bca..e3a6cc64c 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.xml.bin @@ -53,7 +53,7 @@ with-extras 0.1.0 - depenndencies with license declaration accoring to PEP 639 + dependencies with license declaration according to PEP 639 MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.json.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.json.bin index 7ab328531..196ee8969 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.json.bin @@ -258,7 +258,7 @@ "metadata": { "component": { "bom-ref": "root-component", - "description": "depenndencies with license declaration accoring to PEP 639", + "description": "dependencies with license declaration according to PEP 639", "licenses": [ { "acknowledgement": "declared", diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.xml.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.xml.bin index 65ff7dece..369e19809 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.xml.bin @@ -53,7 +53,7 @@ with-extras 0.1.0 - depenndencies with license declaration accoring to PEP 639 + dependencies with license declaration according to PEP 639 MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.json.bin index 2778f52d5..c53050e9a 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.json.bin @@ -409,7 +409,7 @@ "metadata": { "component": { "bom-ref": "root-component", - "description": "depenndencies with license declaration accoring to PEP 639", + "description": "dependencies with license declaration according to PEP 639", "licenses": [ { "expression": "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)" diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.xml.bin index cf2ee36f4..0210baac6 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.xml.bin @@ -16,7 +16,7 @@ with-extras 0.1.0 - depenndencies with license declaration accoring to PEP 639 + dependencies with license declaration according to PEP 639 MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.json.bin index 542e8afdd..2594e9467 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.json.bin @@ -450,7 +450,7 @@ "metadata": { "component": { "bom-ref": "root-component", - "description": "depenndencies with license declaration accoring to PEP 639", + "description": "dependencies with license declaration according to PEP 639", "evidence": { "licenses": [ { diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.xml.bin index 25d48b220..88185ead6 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.xml.bin @@ -16,7 +16,7 @@ with-extras 0.1.0 - depenndencies with license declaration accoring to PEP 639 + dependencies with license declaration according to PEP 639 MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.json.bin index 89b5fe985..8414cb226 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.json.bin @@ -450,7 +450,7 @@ "metadata": { "component": { "bom-ref": "root-component", - "description": "depenndencies with license declaration accoring to PEP 639", + "description": "dependencies with license declaration according to PEP 639", "evidence": { "licenses": [ { diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.xml.bin index b4f4b5a31..1ed788cf2 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.xml.bin @@ -43,7 +43,7 @@ with-extras 0.1.0 - depenndencies with license declaration accoring to PEP 639 + dependencies with license declaration according to PEP 639 MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.json.bin index 72ce29c9a..b2abf1eec 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.json.bin @@ -450,7 +450,7 @@ "metadata": { "component": { "bom-ref": "root-component", - "description": "depenndencies with license declaration accoring to PEP 639", + "description": "dependencies with license declaration according to PEP 639", "evidence": { "licenses": [ { diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.xml.bin index c2725beb2..da4deaeb2 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.xml.bin @@ -53,7 +53,7 @@ with-extras 0.1.0 - depenndencies with license declaration accoring to PEP 639 + dependencies with license declaration according to PEP 639 MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.json.bin index 1d3176b10..d0aa61ac4 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.json.bin @@ -481,7 +481,7 @@ "metadata": { "component": { "bom-ref": "root-component", - "description": "depenndencies with license declaration accoring to PEP 639", + "description": "dependencies with license declaration according to PEP 639", "evidence": { "licenses": [ { diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.xml.bin index b31147bfe..9534c75ee 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.xml.bin @@ -53,7 +53,7 @@ with-extras 0.1.0 - depenndencies with license declaration accoring to PEP 639 + dependencies with license declaration according to PEP 639 MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause) From 9895412e19894b1eb62cd058e7bb19a59fcace16 Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Wed, 9 Jul 2025 11:57:33 +0200 Subject: [PATCH 30/49] wip Signed-off-by: Jan Kowalleck --- cyclonedx_py/_internal/cli_common.py | 6 ++++-- docs/usage.rst | 6 ++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/cyclonedx_py/_internal/cli_common.py b/cyclonedx_py/_internal/cli_common.py index be7455ebb..cd6b943f8 100644 --- a/cyclonedx_py/_internal/cli_common.py +++ b/cyclonedx_py/_internal/cli_common.py @@ -29,8 +29,10 @@ def add_argument_pyproject(p: 'ArgumentParser') -> 'Action': return p.add_argument('--pyproject', metavar='', - help="Path to the root component's `pyproject.toml` file. " - 'This should point to a file compliant with PEP 621 (storing project metadata).', + help="Path to the root component's `pyproject.toml` file.\n" + 'This should point to a file compliant with PEP 621 ' + '(Storing project metadata in pyproject.toml). ' + 'Supports PEP 639 (Improving License Clarity with Better Package Metadata). ', dest='pyproject_file', default=None) diff --git a/docs/usage.rst b/docs/usage.rst index 0c7e5c002..5cb7063fb 100644 --- a/docs/usage.rst +++ b/docs/usage.rst @@ -56,7 +56,7 @@ The full documentation can be issued by running with ``environment --help``: $ cyclonedx-py environment --help usage: cyclonedx-py environment [-h] [-v] - [--PEP-639] [--gather-license-texts] + [--gather-license-texts] [--short-PURLs] [--output-reproducible] [--validate | --no-validate] [-o ] [--sv ] [--of ] @@ -70,12 +70,10 @@ The full documentation can be issued by running with ``environment --help``: options: -h, --help show this help message and exit - --PEP-639 Enable license gathering according to PEP 639 (improving license clarity with better package metadata). - The behavior may change during the draft development of the PEP. --gather-license-texts Enable license text gathering. --pyproject Path to the root component's `pyproject.toml` file. - This should point to a file compliant with PEP 621 (storing project metadata). + This should point to a file compliant with PEP 621 (Storing project metadata in pyproject.toml). Supports PEP 639 (Improving License Clarity with Better Package Metadata). --mc-type Type of the main component. {choices: application, firmware, library} (default: application) From 0655f004f228835839b5711fdaad6974503e6fea Mon Sep 17 00:00:00 2001 From: semantic-release Date: Wed, 9 Jul 2025 10:19:41 +0000 Subject: [PATCH 31/49] chore(release): 7.0.0-alpha.1 Automatically generated by python-semantic-release Signed-off-by: semantic-release --- CHANGELOG.md | 3 +++ cyclonedx_py/__init__.py | 2 +- docs/conf.py | 2 +- pyproject.toml | 2 +- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4a6eb5fb2..fd28a2f1a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ +## v7.0.0-alpha.1 (2025-07-09) + + ## v6.1.3 (2025-07-08) ### Bug Fixes diff --git a/cyclonedx_py/__init__.py b/cyclonedx_py/__init__.py index 56a0b055f..18c588147 100644 --- a/cyclonedx_py/__init__.py +++ b/cyclonedx_py/__init__.py @@ -17,7 +17,7 @@ # !! version is managed by `semantic_release` # do not use typing here, or else `semantic_release` might have issues finding the variable -__version__ = "6.1.3" # noqa:Q000 +__version__ = "7.0.0-alpha.1" # noqa:Q000 # There is no stable/public API. # However, you might call the stable CLI instead, like so: diff --git a/docs/conf.py b/docs/conf.py index ea39e4b83..0c865ce01 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -24,7 +24,7 @@ # The full version, including alpha/beta/rc tags # !! version is managed by semantic_release -release = "6.1.3" +release = "7.0.0-alpha.1" # -- General configuration --------------------------------------------------- diff --git a/pyproject.toml b/pyproject.toml index cbfe00854..e66090279 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ build-backend = "poetry.core.masonry.api" [tool.poetry] name = "cyclonedx-bom" -version = "6.1.3" +version = "7.0.0-alpha.1" description = "CycloneDX Software Bill of Materials (SBOM) generator for Python projects and environments" authors = [ "Jan Kowalleck ", From 79a9f0caf2923e4a0bdb02b4262e9ccabdd3e0a5 Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Wed, 9 Jul 2025 12:29:07 +0200 Subject: [PATCH 32/49] revert history Signed-off-by: Jan Kowalleck --- CHANGELOG.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fd28a2f1a..3237f23bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,8 +2,6 @@ -## v7.0.0-alpha.1 (2025-07-09) - ## v6.1.3 (2025-07-08) From 65eeba186eb727f1e24f50eb07333cac76282623 Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Wed, 9 Jul 2025 15:45:43 +0200 Subject: [PATCH 33/49] tests for #931 Signed-off-by: Jan Kowalleck --- .../environment/with-license-pep639/init.py | 1 + .../with-license-pep639/pinning.txt | 1 + .../plain_with-license-pep639_1.0.xml.bin | 7 +++ .../plain_with-license-pep639_1.1.xml.bin | 29 +++++++++ .../plain_with-license-pep639_1.2.json.bin | 40 ++++++++++++ .../plain_with-license-pep639_1.2.xml.bin | 30 +++++++++ .../plain_with-license-pep639_1.3.json.bin | 40 ++++++++++++ .../plain_with-license-pep639_1.3.xml.bin | 30 +++++++++ .../plain_with-license-pep639_1.4.json.bin | 40 ++++++++++++ .../plain_with-license-pep639_1.4.xml.bin | 30 +++++++++ .../plain_with-license-pep639_1.5.json.bin | 40 ++++++++++++ .../plain_with-license-pep639_1.5.xml.bin | 30 +++++++++ .../plain_with-license-pep639_1.6.json.bin | 41 +++++++++++++ .../plain_with-license-pep639_1.6.xml.bin | 30 +++++++++ .../texts_with-license-pep639_1.0.xml.bin | 7 +++ .../texts_with-license-pep639_1.2.json.bin | 58 ++++++++++++++++++ .../texts_with-license-pep639_1.3.json.bin | 58 ++++++++++++++++++ .../texts_with-license-pep639_1.4.json.bin | 58 ++++++++++++++++++ .../texts_with-license-pep639_1.5.json.bin | 58 ++++++++++++++++++ .../texts_with-license-pep639_1.6.json.bin | 61 +++++++++++++++++++ 20 files changed, 689 insertions(+) diff --git a/tests/_data/infiles/environment/with-license-pep639/init.py b/tests/_data/infiles/environment/with-license-pep639/init.py index 80afe967e..6323c98a9 100644 --- a/tests/_data/infiles/environment/with-license-pep639/init.py +++ b/tests/_data/infiles/environment/with-license-pep639/init.py @@ -71,6 +71,7 @@ def main() -> None: 'jsonpointer', 'license_expression', 'lxml', + 'chardet==5.2.0' , # https://github.com/CycloneDX/cyclonedx-python/issues/931 # with expression-like License AND License-File 'cryptography==43.0.1', # https://github.com/CycloneDX/cyclonedx-python/issues/826 # with possibly unexpected license files diff --git a/tests/_data/infiles/environment/with-license-pep639/pinning.txt b/tests/_data/infiles/environment/with-license-pep639/pinning.txt index 6fe4e7476..3f1bc7c74 100644 --- a/tests/_data/infiles/environment/with-license-pep639/pinning.txt +++ b/tests/_data/infiles/environment/with-license-pep639/pinning.txt @@ -1,5 +1,6 @@ attrs==23.2.0 boolean.py==4.0 +chardet==5.2.0 cryptography==43.0.1 jsonpointer==2.4 license-expression==30.3.0 diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.0.xml.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.0.xml.bin index 0fd15f6d0..b48275799 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.0.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.0.xml.bin @@ -15,6 +15,13 @@ pkg:pypi/boolean.py@4.0 false + + chardet + 5.2.0 + Universal encoding detector for Python 3 + pkg:pypi/chardet@5.2.0 + false + cryptography 43.0.1 diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.1.xml.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.1.xml.bin index 11dccab11..4aed6cd2f 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.1.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.1.xml.bin @@ -51,6 +51,35 @@ + + chardet + 5.2.0 + Universal encoding detector for Python 3 + + + License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+) + + + pkg:pypi/chardet@5.2.0 + + + https://chardet.readthedocs.io/ + from packaging metadata Project-URL: Documentation + + + https://github.com/chardet/chardet/issues + from packaging metadata Project-URL: Issue Tracker + + + https://github.com/chardet/chardet + from packaging metadata Project-URL: GitHub Project + + + https://github.com/chardet/chardet + from packaging metadata: Home-page + + + cryptography 43.0.1 diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.2.json.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.2.json.bin index 3e078d328..8016f9a15 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.2.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.2.json.bin @@ -64,6 +64,43 @@ "type": "library", "version": "4.0" }, + { + "bom-ref": "chardet==5.2.0", + "description": "Universal encoding detector for Python 3", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://chardet.readthedocs.io/" + }, + { + "comment": "from packaging metadata Project-URL: Issue Tracker", + "type": "issue-tracker", + "url": "https://github.com/chardet/chardet/issues" + }, + { + "comment": "from packaging metadata Project-URL: GitHub Project", + "type": "other", + "url": "https://github.com/chardet/chardet" + }, + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/chardet/chardet" + } + ], + "licenses": [ + { + "license": { + "name": "License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)" + } + } + ], + "name": "chardet", + "purl": "pkg:pypi/chardet@5.2.0", + "type": "library", + "version": "5.2.0" + }, { "bom-ref": "cryptography==43.0.1", "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", @@ -201,6 +238,9 @@ { "ref": "boolean.py==4.0" }, + { + "ref": "chardet==5.2.0" + }, { "ref": "cryptography==43.0.1" }, diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.2.xml.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.2.xml.bin index 49a337812..669c6b16c 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.2.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.2.xml.bin @@ -73,6 +73,35 @@ + + chardet + 5.2.0 + Universal encoding detector for Python 3 + + + License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+) + + + pkg:pypi/chardet@5.2.0 + + + https://chardet.readthedocs.io/ + from packaging metadata Project-URL: Documentation + + + https://github.com/chardet/chardet/issues + from packaging metadata Project-URL: Issue Tracker + + + https://github.com/chardet/chardet + from packaging metadata Project-URL: GitHub Project + + + https://github.com/chardet/chardet + from packaging metadata: Home-page + + + cryptography 43.0.1 @@ -176,6 +205,7 @@ + diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.json.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.json.bin index b6b4c693d..23f749f39 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.json.bin @@ -64,6 +64,43 @@ "type": "library", "version": "4.0" }, + { + "bom-ref": "chardet==5.2.0", + "description": "Universal encoding detector for Python 3", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://chardet.readthedocs.io/" + }, + { + "comment": "from packaging metadata Project-URL: Issue Tracker", + "type": "issue-tracker", + "url": "https://github.com/chardet/chardet/issues" + }, + { + "comment": "from packaging metadata Project-URL: GitHub Project", + "type": "other", + "url": "https://github.com/chardet/chardet" + }, + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/chardet/chardet" + } + ], + "licenses": [ + { + "license": { + "name": "License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)" + } + } + ], + "name": "chardet", + "purl": "pkg:pypi/chardet@5.2.0", + "type": "library", + "version": "5.2.0" + }, { "bom-ref": "cryptography==43.0.1", "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", @@ -215,6 +252,9 @@ { "ref": "boolean.py==4.0" }, + { + "ref": "chardet==5.2.0" + }, { "ref": "cryptography==43.0.1" }, diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.xml.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.xml.bin index bbbee8f2c..926df2fd2 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.xml.bin @@ -76,6 +76,35 @@ + + chardet + 5.2.0 + Universal encoding detector for Python 3 + + + License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+) + + + pkg:pypi/chardet@5.2.0 + + + https://chardet.readthedocs.io/ + from packaging metadata Project-URL: Documentation + + + https://github.com/chardet/chardet/issues + from packaging metadata Project-URL: Issue Tracker + + + https://github.com/chardet/chardet + from packaging metadata Project-URL: GitHub Project + + + https://github.com/chardet/chardet + from packaging metadata: Home-page + + + cryptography 43.0.1 @@ -189,6 +218,7 @@ + diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.json.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.json.bin index c630a58cf..9c8b753d7 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.json.bin @@ -64,6 +64,43 @@ "type": "library", "version": "4.0" }, + { + "bom-ref": "chardet==5.2.0", + "description": "Universal encoding detector for Python 3", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://chardet.readthedocs.io/" + }, + { + "comment": "from packaging metadata Project-URL: Issue Tracker", + "type": "issue-tracker", + "url": "https://github.com/chardet/chardet/issues" + }, + { + "comment": "from packaging metadata Project-URL: GitHub Project", + "type": "other", + "url": "https://github.com/chardet/chardet" + }, + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/chardet/chardet" + } + ], + "licenses": [ + { + "license": { + "name": "License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)" + } + } + ], + "name": "chardet", + "purl": "pkg:pypi/chardet@5.2.0", + "type": "library", + "version": "5.2.0" + }, { "bom-ref": "cryptography==43.0.1", "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", @@ -215,6 +252,9 @@ { "ref": "boolean.py==4.0" }, + { + "ref": "chardet==5.2.0" + }, { "ref": "cryptography==43.0.1" }, diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.xml.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.xml.bin index 82c439560..827c66a37 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.xml.bin @@ -103,6 +103,35 @@ + + chardet + 5.2.0 + Universal encoding detector for Python 3 + + + License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+) + + + pkg:pypi/chardet@5.2.0 + + + https://chardet.readthedocs.io/ + from packaging metadata Project-URL: Documentation + + + https://github.com/chardet/chardet/issues + from packaging metadata Project-URL: Issue Tracker + + + https://github.com/chardet/chardet + from packaging metadata Project-URL: GitHub Project + + + https://github.com/chardet/chardet + from packaging metadata: Home-page + + + cryptography 43.0.1 @@ -216,6 +245,7 @@ + diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.json.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.json.bin index 20762352e..883505454 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.json.bin @@ -64,6 +64,43 @@ "type": "library", "version": "4.0" }, + { + "bom-ref": "chardet==5.2.0", + "description": "Universal encoding detector for Python 3", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://chardet.readthedocs.io/" + }, + { + "comment": "from packaging metadata Project-URL: Issue Tracker", + "type": "issue-tracker", + "url": "https://github.com/chardet/chardet/issues" + }, + { + "comment": "from packaging metadata Project-URL: GitHub Project", + "type": "other", + "url": "https://github.com/chardet/chardet" + }, + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/chardet/chardet" + } + ], + "licenses": [ + { + "license": { + "name": "License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)" + } + } + ], + "name": "chardet", + "purl": "pkg:pypi/chardet@5.2.0", + "type": "library", + "version": "5.2.0" + }, { "bom-ref": "cryptography==43.0.1", "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", @@ -215,6 +252,9 @@ { "ref": "boolean.py==4.0" }, + { + "ref": "chardet==5.2.0" + }, { "ref": "cryptography==43.0.1" }, diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.xml.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.xml.bin index e3a6cc64c..af611cc33 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.xml.bin @@ -113,6 +113,35 @@ + + chardet + 5.2.0 + Universal encoding detector for Python 3 + + + License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+) + + + pkg:pypi/chardet@5.2.0 + + + https://chardet.readthedocs.io/ + from packaging metadata Project-URL: Documentation + + + https://github.com/chardet/chardet/issues + from packaging metadata Project-URL: Issue Tracker + + + https://github.com/chardet/chardet + from packaging metadata Project-URL: GitHub Project + + + https://github.com/chardet/chardet + from packaging metadata: Home-page + + + cryptography 43.0.1 @@ -226,6 +255,7 @@ + diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.json.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.json.bin index 196ee8969..5915e5281 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.json.bin @@ -66,6 +66,44 @@ "type": "library", "version": "4.0" }, + { + "bom-ref": "chardet==5.2.0", + "description": "Universal encoding detector for Python 3", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://chardet.readthedocs.io/" + }, + { + "comment": "from packaging metadata Project-URL: Issue Tracker", + "type": "issue-tracker", + "url": "https://github.com/chardet/chardet/issues" + }, + { + "comment": "from packaging metadata Project-URL: GitHub Project", + "type": "other", + "url": "https://github.com/chardet/chardet" + }, + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/chardet/chardet" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)" + } + } + ], + "name": "chardet", + "purl": "pkg:pypi/chardet@5.2.0", + "type": "library", + "version": "5.2.0" + }, { "bom-ref": "cryptography==43.0.1", "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", @@ -224,6 +262,9 @@ { "ref": "boolean.py==4.0" }, + { + "ref": "chardet==5.2.0" + }, { "ref": "cryptography==43.0.1" }, diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.xml.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.xml.bin index 369e19809..e226c35a9 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.xml.bin @@ -113,6 +113,35 @@ + + chardet + 5.2.0 + Universal encoding detector for Python 3 + + + License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+) + + + pkg:pypi/chardet@5.2.0 + + + https://chardet.readthedocs.io/ + from packaging metadata Project-URL: Documentation + + + https://github.com/chardet/chardet/issues + from packaging metadata Project-URL: Issue Tracker + + + https://github.com/chardet/chardet + from packaging metadata Project-URL: GitHub Project + + + https://github.com/chardet/chardet + from packaging metadata: Home-page + + + cryptography 43.0.1 @@ -226,6 +255,7 @@ + diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.0.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.0.xml.bin index 0fd15f6d0..b48275799 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.0.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.0.xml.bin @@ -15,6 +15,13 @@ pkg:pypi/boolean.py@4.0 false + + chardet + 5.2.0 + Universal encoding detector for Python 3 + pkg:pypi/chardet@5.2.0 + false + cryptography 43.0.1 diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.json.bin index c53050e9a..e05a432fb 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.json.bin @@ -100,6 +100,61 @@ "type": "library", "version": "4.0" }, + { + "bom-ref": "chardet==5.2.0", + "description": "Universal encoding detector for Python 3", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://chardet.readthedocs.io/" + }, + { + "comment": "from packaging metadata Project-URL: Issue Tracker", + "type": "issue-tracker", + "url": "https://github.com/chardet/chardet/issues" + }, + { + "comment": "from packaging metadata Project-URL: GitHub Project", + "type": "other", + "url": "https://github.com/chardet/chardet" + }, + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/chardet/chardet" + } + ], + "licenses": [ + { + "license": { + "name": "License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)" + } + }, + { + "license": { + "name": "declared license file: LICENSE", + "text": { + "content": " GNU LESSER GENERAL PUBLIC LICENSE\n Version 2.1, February 1999\n\n Copyright (C) 1991, 1999 Free Software Foundation, Inc.\n 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n[This is the first released version of the Lesser GPL. It also counts\n as the successor of the GNU Library Public License, version 2, hence\n the version number 2.1.]\n\n Preamble\n\n The licenses for most software are designed to take away your\nfreedom to share and change it. By contrast, the GNU General Public\nLicenses are intended to guarantee your freedom to share and change\nfree software--to make sure the software is free for all its users.\n\n This license, the Lesser General Public License, applies to some\nspecially designated software packages--typically libraries--of the\nFree Software Foundation and other authors who decide to use it. You\ncan use it too, but we suggest you first think carefully about whether\nthis license or the ordinary General Public License is the better\nstrategy to use in any particular case, based on the explanations below.\n\n When we speak of free software, we are referring to freedom of use,\nnot price. Our General Public Licenses are designed to make sure that\nyou have the freedom to distribute copies of free software (and charge\nfor this service if you wish); that you receive source code or can get\nit if you want it; that you can change the software and use pieces of\nit in new free programs; and that you are informed that you can do\nthese things.\n\n To protect your rights, we need to make restrictions that forbid\ndistributors to deny you these rights or to ask you to surrender these\nrights. These restrictions translate to certain responsibilities for\nyou if you distribute copies of the library or if you modify it.\n\n For example, if you distribute copies of the library, whether gratis\nor for a fee, you must give the recipients all the rights that we gave\nyou. You must make sure that they, too, receive or can get the source\ncode. If you link other code with the library, you must provide\ncomplete object files to the recipients, so that they can relink them\nwith the library after making changes to the library and recompiling\nit. And you must show them these terms so they know their rights.\n\n We protect your rights with a two-step method: (1) we copyright the\nlibrary, and (2) we offer you this license, which gives you legal\npermission to copy, distribute and/or modify the library.\n\n To protect each distributor, we want to make it very clear that\nthere is no warranty for the free library. Also, if the library is\nmodified by someone else and passed on, the recipients should know\nthat what they have is not the original version, so that the original\nauthor's reputation will not be affected by problems that might be\nintroduced by others.\n\f\n Finally, software patents pose a constant threat to the existence of\nany free program. We wish to make sure that a company cannot\neffectively restrict the users of a free program by obtaining a\nrestrictive license from a patent holder. Therefore, we insist that\nany patent license obtained for a version of the library must be\nconsistent with the full freedom of use specified in this license.\n\n Most GNU software, including some libraries, is covered by the\nordinary GNU General Public License. This license, the GNU Lesser\nGeneral Public License, applies to certain designated libraries, and\nis quite different from the ordinary General Public License. We use\nthis license for certain libraries in order to permit linking those\nlibraries into non-free programs.\n\n When a program is linked with a library, whether statically or using\na shared library, the combination of the two is legally speaking a\ncombined work, a derivative of the original library. The ordinary\nGeneral Public License therefore permits such linking only if the\nentire combination fits its criteria of freedom. The Lesser General\nPublic License permits more lax criteria for linking other code with\nthe library.\n\n We call this license the \"Lesser\" General Public License because it\ndoes Less to protect the user's freedom than the ordinary General\nPublic License. It also provides other free software developers Less\nof an advantage over competing non-free programs. These disadvantages\nare the reason we use the ordinary General Public License for many\nlibraries. However, the Lesser license provides advantages in certain\nspecial circumstances.\n\n For example, on rare occasions, there may be a special need to\nencourage the widest possible use of a certain library, so that it becomes\na de-facto standard. To achieve this, non-free programs must be\nallowed to use the library. A more frequent case is that a free\nlibrary does the same job as widely used non-free libraries. In this\ncase, there is little to gain by limiting the free library to free\nsoftware only, so we use the Lesser General Public License.\n\n In other cases, permission to use a particular library in non-free\nprograms enables a greater number of people to use a large body of\nfree software. For example, permission to use the GNU C Library in\nnon-free programs enables many more people to use the whole GNU\noperating system, as well as its variant, the GNU/Linux operating\nsystem.\n\n Although the Lesser General Public License is Less protective of the\nusers' freedom, it does ensure that the user of a program that is\nlinked with the Library has the freedom and the wherewithal to run\nthat program using a modified version of the Library.\n\n The precise terms and conditions for copying, distribution and\nmodification follow. Pay close attention to the difference between a\n\"work based on the library\" and a \"work that uses the library\". The\nformer contains code derived from the library, whereas the latter must\nbe combined with the library in order to run.\n\f\n GNU LESSER GENERAL PUBLIC LICENSE\n TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n 0. This License Agreement applies to any software library or other\nprogram which contains a notice placed by the copyright holder or\nother authorized party saying it may be distributed under the terms of\nthis Lesser General Public License (also called \"this License\").\nEach licensee is addressed as \"you\".\n\n A \"library\" means a collection of software functions and/or data\nprepared so as to be conveniently linked with application programs\n(which use some of those functions and data) to form executables.\n\n The \"Library\", below, refers to any such software library or work\nwhich has been distributed under these terms. A \"work based on the\nLibrary\" means either the Library or any derivative work under\ncopyright law: that is to say, a work containing the Library or a\nportion of it, either verbatim or with modifications and/or translated\nstraightforwardly into another language. (Hereinafter, translation is\nincluded without limitation in the term \"modification\".)\n\n \"Source code\" for a work means the preferred form of the work for\nmaking modifications to it. For a library, complete source code means\nall the source code for all modules it contains, plus any associated\ninterface definition files, plus the scripts used to control compilation\nand installation of the library.\n\n Activities other than copying, distribution and modification are not\ncovered by this License; they are outside its scope. The act of\nrunning a program using the Library is not restricted, and output from\nsuch a program is covered only if its contents constitute a work based\non the Library (independent of the use of the Library in a tool for\nwriting it). Whether that is true depends on what the Library does\nand what the program that uses the Library does.\n\n 1. You may copy and distribute verbatim copies of the Library's\ncomplete source code as you receive it, in any medium, provided that\nyou conspicuously and appropriately publish on each copy an\nappropriate copyright notice and disclaimer of warranty; keep intact\nall the notices that refer to this License and to the absence of any\nwarranty; and distribute a copy of this License along with the\nLibrary.\n\n You may charge a fee for the physical act of transferring a copy,\nand you may at your option offer warranty protection in exchange for a\nfee.\n\f\n 2. You may modify your copy or copies of the Library or any portion\nof it, thus forming a work based on the Library, and copy and\ndistribute such modifications or work under the terms of Section 1\nabove, provided that you also meet all of these conditions:\n\n a) The modified work must itself be a software library.\n\n b) You must cause the files modified to carry prominent notices\n stating that you changed the files and the date of any change.\n\n c) You must cause the whole of the work to be licensed at no\n charge to all third parties under the terms of this License.\n\n d) If a facility in the modified Library refers to a function or a\n table of data to be supplied by an application program that uses\n the facility, other than as an argument passed when the facility\n is invoked, then you must make a good faith effort to ensure that,\n in the event an application does not supply such function or\n table, the facility still operates, and performs whatever part of\n its purpose remains meaningful.\n\n (For example, a function in a library to compute square roots has\n a purpose that is entirely well-defined independent of the\n application. Therefore, Subsection 2d requires that any\n application-supplied function or table used by this function must\n be optional: if the application does not supply it, the square\n root function must still compute square roots.)\n\nThese requirements apply to the modified work as a whole. If\nidentifiable sections of that work are not derived from the Library,\nand can be reasonably considered independent and separate works in\nthemselves, then this License, and its terms, do not apply to those\nsections when you distribute them as separate works. But when you\ndistribute the same sections as part of a whole which is a work based\non the Library, the distribution of the whole must be on the terms of\nthis License, whose permissions for other licensees extend to the\nentire whole, and thus to each and every part regardless of who wrote\nit.\n\nThus, it is not the intent of this section to claim rights or contest\nyour rights to work written entirely by you; rather, the intent is to\nexercise the right to control the distribution of derivative or\ncollective works based on the Library.\n\nIn addition, mere aggregation of another work not based on the Library\nwith the Library (or with a work based on the Library) on a volume of\na storage or distribution medium does not bring the other work under\nthe scope of this License.\n\n 3. You may opt to apply the terms of the ordinary GNU General Public\nLicense instead of this License to a given copy of the Library. To do\nthis, you must alter all the notices that refer to this License, so\nthat they refer to the ordinary GNU General Public License, version 2,\ninstead of to this License. (If a newer version than version 2 of the\nordinary GNU General Public License has appeared, then you can specify\nthat version instead if you wish.) Do not make any other change in\nthese notices.\n\f\n Once this change is made in a given copy, it is irreversible for\nthat copy, so the ordinary GNU General Public License applies to all\nsubsequent copies and derivative works made from that copy.\n\n This option is useful when you wish to copy part of the code of\nthe Library into a program that is not a library.\n\n 4. You may copy and distribute the Library (or a portion or\nderivative of it, under Section 2) in object code or executable form\nunder the terms of Sections 1 and 2 above provided that you accompany\nit with the complete corresponding machine-readable source code, which\nmust be distributed under the terms of Sections 1 and 2 above on a\nmedium customarily used for software interchange.\n\n If distribution of object code is made by offering access to copy\nfrom a designated place, then offering equivalent access to copy the\nsource code from the same place satisfies the requirement to\ndistribute the source code, even though third parties are not\ncompelled to copy the source along with the object code.\n\n 5. A program that contains no derivative of any portion of the\nLibrary, but is designed to work with the Library by being compiled or\nlinked with it, is called a \"work that uses the Library\". Such a\nwork, in isolation, is not a derivative work of the Library, and\ntherefore falls outside the scope of this License.\n\n However, linking a \"work that uses the Library\" with the Library\ncreates an executable that is a derivative of the Library (because it\ncontains portions of the Library), rather than a \"work that uses the\nlibrary\". The executable is therefore covered by this License.\nSection 6 states terms for distribution of such executables.\n\n When a \"work that uses the Library\" uses material from a header file\nthat is part of the Library, the object code for the work may be a\nderivative work of the Library even though the source code is not.\nWhether this is true is especially significant if the work can be\nlinked without the Library, or if the work is itself a library. The\nthreshold for this to be true is not precisely defined by law.\n\n If such an object file uses only numerical parameters, data\nstructure layouts and accessors, and small macros and small inline\nfunctions (ten lines or less in length), then the use of the object\nfile is unrestricted, regardless of whether it is legally a derivative\nwork. (Executables containing this object code plus portions of the\nLibrary will still fall under Section 6.)\n\n Otherwise, if the work is a derivative of the Library, you may\ndistribute the object code for the work under the terms of Section 6.\nAny executables containing that work also fall under Section 6,\nwhether or not they are linked directly with the Library itself.\n\f\n 6. As an exception to the Sections above, you may also combine or\nlink a \"work that uses the Library\" with the Library to produce a\nwork containing portions of the Library, and distribute that work\nunder terms of your choice, provided that the terms permit\nmodification of the work for the customer's own use and reverse\nengineering for debugging such modifications.\n\n You must give prominent notice with each copy of the work that the\nLibrary is used in it and that the Library and its use are covered by\nthis License. You must supply a copy of this License. If the work\nduring execution displays copyright notices, you must include the\ncopyright notice for the Library among them, as well as a reference\ndirecting the user to the copy of this License. Also, you must do one\nof these things:\n\n a) Accompany the work with the complete corresponding\n machine-readable source code for the Library including whatever\n changes were used in the work (which must be distributed under\n Sections 1 and 2 above); and, if the work is an executable linked\n with the Library, with the complete machine-readable \"work that\n uses the Library\", as object code and/or source code, so that the\n user can modify the Library and then relink to produce a modified\n executable containing the modified Library. (It is understood\n that the user who changes the contents of definitions files in the\n Library will not necessarily be able to recompile the application\n to use the modified definitions.)\n\n b) Use a suitable shared library mechanism for linking with the\n Library. A suitable mechanism is one that (1) uses at run time a\n copy of the library already present on the user's computer system,\n rather than copying library functions into the executable, and (2)\n will operate properly with a modified version of the library, if\n the user installs one, as long as the modified version is\n interface-compatible with the version that the work was made with.\n\n c) Accompany the work with a written offer, valid for at\n least three years, to give the same user the materials\n specified in Subsection 6a, above, for a charge no more\n than the cost of performing this distribution.\n\n d) If distribution of the work is made by offering access to copy\n from a designated place, offer equivalent access to copy the above\n specified materials from the same place.\n\n e) Verify that the user has already received a copy of these\n materials or that you have already sent this user a copy.\n\n For an executable, the required form of the \"work that uses the\nLibrary\" must include any data and utility programs needed for\nreproducing the executable from it. However, as a special exception,\nthe materials to be distributed need not include anything that is\nnormally distributed (in either source or binary form) with the major\ncomponents (compiler, kernel, and so on) of the operating system on\nwhich the executable runs, unless that component itself accompanies\nthe executable.\n\n It may happen that this requirement contradicts the license\nrestrictions of other proprietary libraries that do not normally\naccompany the operating system. Such a contradiction means you cannot\nuse both them and the Library together in an executable that you\ndistribute.\n\f\n 7. You may place library facilities that are a work based on the\nLibrary side-by-side in a single library together with other library\nfacilities not covered by this License, and distribute such a combined\nlibrary, provided that the separate distribution of the work based on\nthe Library and of the other library facilities is otherwise\npermitted, and provided that you do these two things:\n\n a) Accompany the combined library with a copy of the same work\n based on the Library, uncombined with any other library\n facilities. This must be distributed under the terms of the\n Sections above.\n\n b) Give prominent notice with the combined library of the fact\n that part of it is a work based on the Library, and explaining\n where to find the accompanying uncombined form of the same work.\n\n 8. You may not copy, modify, sublicense, link with, or distribute\nthe Library except as expressly provided under this License. Any\nattempt otherwise to copy, modify, sublicense, link with, or\ndistribute the Library is void, and will automatically terminate your\nrights under this License. However, parties who have received copies,\nor rights, from you under this License will not have their licenses\nterminated so long as such parties remain in full compliance.\n\n 9. You are not required to accept this License, since you have not\nsigned it. However, nothing else grants you permission to modify or\ndistribute the Library or its derivative works. These actions are\nprohibited by law if you do not accept this License. Therefore, by\nmodifying or distributing the Library (or any work based on the\nLibrary), you indicate your acceptance of this License to do so, and\nall its terms and conditions for copying, distributing or modifying\nthe Library or works based on it.\n\n 10. Each time you redistribute the Library (or any work based on the\nLibrary), the recipient automatically receives a license from the\noriginal licensor to copy, distribute, link with or modify the Library\nsubject to these terms and conditions. You may not impose any further\nrestrictions on the recipients' exercise of the rights granted herein.\nYou are not responsible for enforcing compliance by third parties with\nthis License.\n\f\n 11. If, as a consequence of a court judgment or allegation of patent\ninfringement or for any other reason (not limited to patent issues),\nconditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License. If you cannot\ndistribute so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you\nmay not distribute the Library at all. For example, if a patent\nlicense would not permit royalty-free redistribution of the Library by\nall those who receive copies directly or indirectly through you, then\nthe only way you could satisfy both it and this License would be to\nrefrain entirely from distribution of the Library.\n\nIf any portion of this section is held invalid or unenforceable under any\nparticular circumstance, the balance of the section is intended to apply,\nand the section as a whole is intended to apply in other circumstances.\n\nIt is not the purpose of this section to induce you to infringe any\npatents or other property right claims or to contest validity of any\nsuch claims; this section has the sole purpose of protecting the\nintegrity of the free software distribution system which is\nimplemented by public license practices. Many people have made\ngenerous contributions to the wide range of software distributed\nthrough that system in reliance on consistent application of that\nsystem; it is up to the author/donor to decide if he or she is willing\nto distribute software through any other system and a licensee cannot\nimpose that choice.\n\nThis section is intended to make thoroughly clear what is believed to\nbe a consequence of the rest of this License.\n\n 12. If the distribution and/or use of the Library is restricted in\ncertain countries either by patents or by copyrighted interfaces, the\noriginal copyright holder who places the Library under this License may add\nan explicit geographical distribution limitation excluding those countries,\nso that distribution is permitted only in or among countries not thus\nexcluded. In such case, this License incorporates the limitation as if\nwritten in the body of this License.\n\n 13. The Free Software Foundation may publish revised and/or new\nversions of the Lesser General Public License from time to time.\nSuch new versions will be similar in spirit to the present version,\nbut may differ in detail to address new problems or concerns.\n\nEach version is given a distinguishing version number. If the Library\nspecifies a version number of this License which applies to it and\n\"any later version\", you have the option of following the terms and\nconditions either of that version or of any later version published by\nthe Free Software Foundation. If the Library does not specify a\nlicense version number, you may choose any version ever published by\nthe Free Software Foundation.\n\f\n 14. If you wish to incorporate parts of the Library into other free\nprograms whose distribution conditions are incompatible with these,\nwrite to the author to ask for permission. For software which is\ncopyrighted by the Free Software Foundation, write to the Free\nSoftware Foundation; we sometimes make exceptions for this. Our\ndecision will be guided by the two goals of preserving the free status\nof all derivatives of our free software and of promoting the sharing\nand reuse of software generally.\n\n NO WARRANTY\n\n 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO\nWARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.\nEXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR\nOTHER PARTIES PROVIDE THE LIBRARY \"AS IS\" WITHOUT WARRANTY OF ANY\nKIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE\nLIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME\nTHE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN\nWRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY\nAND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU\nFOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR\nCONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE\nLIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING\nRENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A\nFAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF\nSUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\nDAMAGES.\n\n END OF TERMS AND CONDITIONS\n\f\n How to Apply These Terms to Your New Libraries\n\n If you develop a new library, and you want it to be of the greatest\npossible use to the public, we recommend making it free software that\neveryone can redistribute and change. You can do so by permitting\nredistribution under these terms (or, alternatively, under the terms of the\nordinary General Public License).\n\n To apply these terms, attach the following notices to the library. It is\nsafest to attach them to the start of each source file to most effectively\nconvey the exclusion of warranty; and each file should have at least the\n\"copyright\" line and a pointer to where the full notice is found.\n\n \n Copyright (C) \n\n This library is free software; you can redistribute it and/or\n modify it under the terms of the GNU Lesser General Public\n License as published by the Free Software Foundation; either\n version 2.1 of the License, or (at your option) any later version.\n\n This library is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public\n License along with this library; if not, write to the Free Software\n Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n\nAlso add information on how to contact you by electronic and paper mail.\n\nYou should also get your employer (if you work as a programmer) or your\nschool, if any, to sign a \"copyright disclaimer\" for the library, if\nnecessary. Here is a sample; alter the names:\n\n Yoyodyne, Inc., hereby disclaims all copyright interest in the\n library `Frob' (a library for tweaking knobs) written by James Random Hacker.\n\n , 1 April 1990\n Ty Coon, President of Vice\n\nThat's all there is to it!\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license of 'chardet'", + "text": { + "content": "LGPL", + "contentType": "text/plain" + } + } + } + ], + "name": "chardet", + "purl": "pkg:pypi/chardet@5.2.0", + "type": "library", + "version": "5.2.0" + }, { "bom-ref": "cryptography==43.0.1", "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", @@ -375,6 +430,9 @@ { "ref": "boolean.py==4.0" }, + { + "ref": "chardet==5.2.0" + }, { "ref": "cryptography==43.0.1" }, diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.json.bin index 2594e9467..04f36dfea 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.json.bin @@ -100,6 +100,61 @@ "type": "library", "version": "4.0" }, + { + "bom-ref": "chardet==5.2.0", + "description": "Universal encoding detector for Python 3", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://chardet.readthedocs.io/" + }, + { + "comment": "from packaging metadata Project-URL: Issue Tracker", + "type": "issue-tracker", + "url": "https://github.com/chardet/chardet/issues" + }, + { + "comment": "from packaging metadata Project-URL: GitHub Project", + "type": "other", + "url": "https://github.com/chardet/chardet" + }, + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/chardet/chardet" + } + ], + "licenses": [ + { + "license": { + "name": "License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)" + } + }, + { + "license": { + "name": "declared license file: LICENSE", + "text": { + "content": " GNU LESSER GENERAL PUBLIC LICENSE\n Version 2.1, February 1999\n\n Copyright (C) 1991, 1999 Free Software Foundation, Inc.\n 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n[This is the first released version of the Lesser GPL. It also counts\n as the successor of the GNU Library Public License, version 2, hence\n the version number 2.1.]\n\n Preamble\n\n The licenses for most software are designed to take away your\nfreedom to share and change it. By contrast, the GNU General Public\nLicenses are intended to guarantee your freedom to share and change\nfree software--to make sure the software is free for all its users.\n\n This license, the Lesser General Public License, applies to some\nspecially designated software packages--typically libraries--of the\nFree Software Foundation and other authors who decide to use it. You\ncan use it too, but we suggest you first think carefully about whether\nthis license or the ordinary General Public License is the better\nstrategy to use in any particular case, based on the explanations below.\n\n When we speak of free software, we are referring to freedom of use,\nnot price. Our General Public Licenses are designed to make sure that\nyou have the freedom to distribute copies of free software (and charge\nfor this service if you wish); that you receive source code or can get\nit if you want it; that you can change the software and use pieces of\nit in new free programs; and that you are informed that you can do\nthese things.\n\n To protect your rights, we need to make restrictions that forbid\ndistributors to deny you these rights or to ask you to surrender these\nrights. These restrictions translate to certain responsibilities for\nyou if you distribute copies of the library or if you modify it.\n\n For example, if you distribute copies of the library, whether gratis\nor for a fee, you must give the recipients all the rights that we gave\nyou. You must make sure that they, too, receive or can get the source\ncode. If you link other code with the library, you must provide\ncomplete object files to the recipients, so that they can relink them\nwith the library after making changes to the library and recompiling\nit. And you must show them these terms so they know their rights.\n\n We protect your rights with a two-step method: (1) we copyright the\nlibrary, and (2) we offer you this license, which gives you legal\npermission to copy, distribute and/or modify the library.\n\n To protect each distributor, we want to make it very clear that\nthere is no warranty for the free library. Also, if the library is\nmodified by someone else and passed on, the recipients should know\nthat what they have is not the original version, so that the original\nauthor's reputation will not be affected by problems that might be\nintroduced by others.\n\f\n Finally, software patents pose a constant threat to the existence of\nany free program. We wish to make sure that a company cannot\neffectively restrict the users of a free program by obtaining a\nrestrictive license from a patent holder. Therefore, we insist that\nany patent license obtained for a version of the library must be\nconsistent with the full freedom of use specified in this license.\n\n Most GNU software, including some libraries, is covered by the\nordinary GNU General Public License. This license, the GNU Lesser\nGeneral Public License, applies to certain designated libraries, and\nis quite different from the ordinary General Public License. We use\nthis license for certain libraries in order to permit linking those\nlibraries into non-free programs.\n\n When a program is linked with a library, whether statically or using\na shared library, the combination of the two is legally speaking a\ncombined work, a derivative of the original library. The ordinary\nGeneral Public License therefore permits such linking only if the\nentire combination fits its criteria of freedom. The Lesser General\nPublic License permits more lax criteria for linking other code with\nthe library.\n\n We call this license the \"Lesser\" General Public License because it\ndoes Less to protect the user's freedom than the ordinary General\nPublic License. It also provides other free software developers Less\nof an advantage over competing non-free programs. These disadvantages\nare the reason we use the ordinary General Public License for many\nlibraries. However, the Lesser license provides advantages in certain\nspecial circumstances.\n\n For example, on rare occasions, there may be a special need to\nencourage the widest possible use of a certain library, so that it becomes\na de-facto standard. To achieve this, non-free programs must be\nallowed to use the library. A more frequent case is that a free\nlibrary does the same job as widely used non-free libraries. In this\ncase, there is little to gain by limiting the free library to free\nsoftware only, so we use the Lesser General Public License.\n\n In other cases, permission to use a particular library in non-free\nprograms enables a greater number of people to use a large body of\nfree software. For example, permission to use the GNU C Library in\nnon-free programs enables many more people to use the whole GNU\noperating system, as well as its variant, the GNU/Linux operating\nsystem.\n\n Although the Lesser General Public License is Less protective of the\nusers' freedom, it does ensure that the user of a program that is\nlinked with the Library has the freedom and the wherewithal to run\nthat program using a modified version of the Library.\n\n The precise terms and conditions for copying, distribution and\nmodification follow. Pay close attention to the difference between a\n\"work based on the library\" and a \"work that uses the library\". The\nformer contains code derived from the library, whereas the latter must\nbe combined with the library in order to run.\n\f\n GNU LESSER GENERAL PUBLIC LICENSE\n TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n 0. This License Agreement applies to any software library or other\nprogram which contains a notice placed by the copyright holder or\nother authorized party saying it may be distributed under the terms of\nthis Lesser General Public License (also called \"this License\").\nEach licensee is addressed as \"you\".\n\n A \"library\" means a collection of software functions and/or data\nprepared so as to be conveniently linked with application programs\n(which use some of those functions and data) to form executables.\n\n The \"Library\", below, refers to any such software library or work\nwhich has been distributed under these terms. A \"work based on the\nLibrary\" means either the Library or any derivative work under\ncopyright law: that is to say, a work containing the Library or a\nportion of it, either verbatim or with modifications and/or translated\nstraightforwardly into another language. (Hereinafter, translation is\nincluded without limitation in the term \"modification\".)\n\n \"Source code\" for a work means the preferred form of the work for\nmaking modifications to it. For a library, complete source code means\nall the source code for all modules it contains, plus any associated\ninterface definition files, plus the scripts used to control compilation\nand installation of the library.\n\n Activities other than copying, distribution and modification are not\ncovered by this License; they are outside its scope. The act of\nrunning a program using the Library is not restricted, and output from\nsuch a program is covered only if its contents constitute a work based\non the Library (independent of the use of the Library in a tool for\nwriting it). Whether that is true depends on what the Library does\nand what the program that uses the Library does.\n\n 1. You may copy and distribute verbatim copies of the Library's\ncomplete source code as you receive it, in any medium, provided that\nyou conspicuously and appropriately publish on each copy an\nappropriate copyright notice and disclaimer of warranty; keep intact\nall the notices that refer to this License and to the absence of any\nwarranty; and distribute a copy of this License along with the\nLibrary.\n\n You may charge a fee for the physical act of transferring a copy,\nand you may at your option offer warranty protection in exchange for a\nfee.\n\f\n 2. You may modify your copy or copies of the Library or any portion\nof it, thus forming a work based on the Library, and copy and\ndistribute such modifications or work under the terms of Section 1\nabove, provided that you also meet all of these conditions:\n\n a) The modified work must itself be a software library.\n\n b) You must cause the files modified to carry prominent notices\n stating that you changed the files and the date of any change.\n\n c) You must cause the whole of the work to be licensed at no\n charge to all third parties under the terms of this License.\n\n d) If a facility in the modified Library refers to a function or a\n table of data to be supplied by an application program that uses\n the facility, other than as an argument passed when the facility\n is invoked, then you must make a good faith effort to ensure that,\n in the event an application does not supply such function or\n table, the facility still operates, and performs whatever part of\n its purpose remains meaningful.\n\n (For example, a function in a library to compute square roots has\n a purpose that is entirely well-defined independent of the\n application. Therefore, Subsection 2d requires that any\n application-supplied function or table used by this function must\n be optional: if the application does not supply it, the square\n root function must still compute square roots.)\n\nThese requirements apply to the modified work as a whole. If\nidentifiable sections of that work are not derived from the Library,\nand can be reasonably considered independent and separate works in\nthemselves, then this License, and its terms, do not apply to those\nsections when you distribute them as separate works. But when you\ndistribute the same sections as part of a whole which is a work based\non the Library, the distribution of the whole must be on the terms of\nthis License, whose permissions for other licensees extend to the\nentire whole, and thus to each and every part regardless of who wrote\nit.\n\nThus, it is not the intent of this section to claim rights or contest\nyour rights to work written entirely by you; rather, the intent is to\nexercise the right to control the distribution of derivative or\ncollective works based on the Library.\n\nIn addition, mere aggregation of another work not based on the Library\nwith the Library (or with a work based on the Library) on a volume of\na storage or distribution medium does not bring the other work under\nthe scope of this License.\n\n 3. You may opt to apply the terms of the ordinary GNU General Public\nLicense instead of this License to a given copy of the Library. To do\nthis, you must alter all the notices that refer to this License, so\nthat they refer to the ordinary GNU General Public License, version 2,\ninstead of to this License. (If a newer version than version 2 of the\nordinary GNU General Public License has appeared, then you can specify\nthat version instead if you wish.) Do not make any other change in\nthese notices.\n\f\n Once this change is made in a given copy, it is irreversible for\nthat copy, so the ordinary GNU General Public License applies to all\nsubsequent copies and derivative works made from that copy.\n\n This option is useful when you wish to copy part of the code of\nthe Library into a program that is not a library.\n\n 4. You may copy and distribute the Library (or a portion or\nderivative of it, under Section 2) in object code or executable form\nunder the terms of Sections 1 and 2 above provided that you accompany\nit with the complete corresponding machine-readable source code, which\nmust be distributed under the terms of Sections 1 and 2 above on a\nmedium customarily used for software interchange.\n\n If distribution of object code is made by offering access to copy\nfrom a designated place, then offering equivalent access to copy the\nsource code from the same place satisfies the requirement to\ndistribute the source code, even though third parties are not\ncompelled to copy the source along with the object code.\n\n 5. A program that contains no derivative of any portion of the\nLibrary, but is designed to work with the Library by being compiled or\nlinked with it, is called a \"work that uses the Library\". Such a\nwork, in isolation, is not a derivative work of the Library, and\ntherefore falls outside the scope of this License.\n\n However, linking a \"work that uses the Library\" with the Library\ncreates an executable that is a derivative of the Library (because it\ncontains portions of the Library), rather than a \"work that uses the\nlibrary\". The executable is therefore covered by this License.\nSection 6 states terms for distribution of such executables.\n\n When a \"work that uses the Library\" uses material from a header file\nthat is part of the Library, the object code for the work may be a\nderivative work of the Library even though the source code is not.\nWhether this is true is especially significant if the work can be\nlinked without the Library, or if the work is itself a library. The\nthreshold for this to be true is not precisely defined by law.\n\n If such an object file uses only numerical parameters, data\nstructure layouts and accessors, and small macros and small inline\nfunctions (ten lines or less in length), then the use of the object\nfile is unrestricted, regardless of whether it is legally a derivative\nwork. (Executables containing this object code plus portions of the\nLibrary will still fall under Section 6.)\n\n Otherwise, if the work is a derivative of the Library, you may\ndistribute the object code for the work under the terms of Section 6.\nAny executables containing that work also fall under Section 6,\nwhether or not they are linked directly with the Library itself.\n\f\n 6. As an exception to the Sections above, you may also combine or\nlink a \"work that uses the Library\" with the Library to produce a\nwork containing portions of the Library, and distribute that work\nunder terms of your choice, provided that the terms permit\nmodification of the work for the customer's own use and reverse\nengineering for debugging such modifications.\n\n You must give prominent notice with each copy of the work that the\nLibrary is used in it and that the Library and its use are covered by\nthis License. You must supply a copy of this License. If the work\nduring execution displays copyright notices, you must include the\ncopyright notice for the Library among them, as well as a reference\ndirecting the user to the copy of this License. Also, you must do one\nof these things:\n\n a) Accompany the work with the complete corresponding\n machine-readable source code for the Library including whatever\n changes were used in the work (which must be distributed under\n Sections 1 and 2 above); and, if the work is an executable linked\n with the Library, with the complete machine-readable \"work that\n uses the Library\", as object code and/or source code, so that the\n user can modify the Library and then relink to produce a modified\n executable containing the modified Library. (It is understood\n that the user who changes the contents of definitions files in the\n Library will not necessarily be able to recompile the application\n to use the modified definitions.)\n\n b) Use a suitable shared library mechanism for linking with the\n Library. A suitable mechanism is one that (1) uses at run time a\n copy of the library already present on the user's computer system,\n rather than copying library functions into the executable, and (2)\n will operate properly with a modified version of the library, if\n the user installs one, as long as the modified version is\n interface-compatible with the version that the work was made with.\n\n c) Accompany the work with a written offer, valid for at\n least three years, to give the same user the materials\n specified in Subsection 6a, above, for a charge no more\n than the cost of performing this distribution.\n\n d) If distribution of the work is made by offering access to copy\n from a designated place, offer equivalent access to copy the above\n specified materials from the same place.\n\n e) Verify that the user has already received a copy of these\n materials or that you have already sent this user a copy.\n\n For an executable, the required form of the \"work that uses the\nLibrary\" must include any data and utility programs needed for\nreproducing the executable from it. However, as a special exception,\nthe materials to be distributed need not include anything that is\nnormally distributed (in either source or binary form) with the major\ncomponents (compiler, kernel, and so on) of the operating system on\nwhich the executable runs, unless that component itself accompanies\nthe executable.\n\n It may happen that this requirement contradicts the license\nrestrictions of other proprietary libraries that do not normally\naccompany the operating system. Such a contradiction means you cannot\nuse both them and the Library together in an executable that you\ndistribute.\n\f\n 7. You may place library facilities that are a work based on the\nLibrary side-by-side in a single library together with other library\nfacilities not covered by this License, and distribute such a combined\nlibrary, provided that the separate distribution of the work based on\nthe Library and of the other library facilities is otherwise\npermitted, and provided that you do these two things:\n\n a) Accompany the combined library with a copy of the same work\n based on the Library, uncombined with any other library\n facilities. This must be distributed under the terms of the\n Sections above.\n\n b) Give prominent notice with the combined library of the fact\n that part of it is a work based on the Library, and explaining\n where to find the accompanying uncombined form of the same work.\n\n 8. You may not copy, modify, sublicense, link with, or distribute\nthe Library except as expressly provided under this License. Any\nattempt otherwise to copy, modify, sublicense, link with, or\ndistribute the Library is void, and will automatically terminate your\nrights under this License. However, parties who have received copies,\nor rights, from you under this License will not have their licenses\nterminated so long as such parties remain in full compliance.\n\n 9. You are not required to accept this License, since you have not\nsigned it. However, nothing else grants you permission to modify or\ndistribute the Library or its derivative works. These actions are\nprohibited by law if you do not accept this License. Therefore, by\nmodifying or distributing the Library (or any work based on the\nLibrary), you indicate your acceptance of this License to do so, and\nall its terms and conditions for copying, distributing or modifying\nthe Library or works based on it.\n\n 10. Each time you redistribute the Library (or any work based on the\nLibrary), the recipient automatically receives a license from the\noriginal licensor to copy, distribute, link with or modify the Library\nsubject to these terms and conditions. You may not impose any further\nrestrictions on the recipients' exercise of the rights granted herein.\nYou are not responsible for enforcing compliance by third parties with\nthis License.\n\f\n 11. If, as a consequence of a court judgment or allegation of patent\ninfringement or for any other reason (not limited to patent issues),\nconditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License. If you cannot\ndistribute so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you\nmay not distribute the Library at all. For example, if a patent\nlicense would not permit royalty-free redistribution of the Library by\nall those who receive copies directly or indirectly through you, then\nthe only way you could satisfy both it and this License would be to\nrefrain entirely from distribution of the Library.\n\nIf any portion of this section is held invalid or unenforceable under any\nparticular circumstance, the balance of the section is intended to apply,\nand the section as a whole is intended to apply in other circumstances.\n\nIt is not the purpose of this section to induce you to infringe any\npatents or other property right claims or to contest validity of any\nsuch claims; this section has the sole purpose of protecting the\nintegrity of the free software distribution system which is\nimplemented by public license practices. Many people have made\ngenerous contributions to the wide range of software distributed\nthrough that system in reliance on consistent application of that\nsystem; it is up to the author/donor to decide if he or she is willing\nto distribute software through any other system and a licensee cannot\nimpose that choice.\n\nThis section is intended to make thoroughly clear what is believed to\nbe a consequence of the rest of this License.\n\n 12. If the distribution and/or use of the Library is restricted in\ncertain countries either by patents or by copyrighted interfaces, the\noriginal copyright holder who places the Library under this License may add\nan explicit geographical distribution limitation excluding those countries,\nso that distribution is permitted only in or among countries not thus\nexcluded. In such case, this License incorporates the limitation as if\nwritten in the body of this License.\n\n 13. The Free Software Foundation may publish revised and/or new\nversions of the Lesser General Public License from time to time.\nSuch new versions will be similar in spirit to the present version,\nbut may differ in detail to address new problems or concerns.\n\nEach version is given a distinguishing version number. If the Library\nspecifies a version number of this License which applies to it and\n\"any later version\", you have the option of following the terms and\nconditions either of that version or of any later version published by\nthe Free Software Foundation. If the Library does not specify a\nlicense version number, you may choose any version ever published by\nthe Free Software Foundation.\n\f\n 14. If you wish to incorporate parts of the Library into other free\nprograms whose distribution conditions are incompatible with these,\nwrite to the author to ask for permission. For software which is\ncopyrighted by the Free Software Foundation, write to the Free\nSoftware Foundation; we sometimes make exceptions for this. Our\ndecision will be guided by the two goals of preserving the free status\nof all derivatives of our free software and of promoting the sharing\nand reuse of software generally.\n\n NO WARRANTY\n\n 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO\nWARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.\nEXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR\nOTHER PARTIES PROVIDE THE LIBRARY \"AS IS\" WITHOUT WARRANTY OF ANY\nKIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE\nLIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME\nTHE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN\nWRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY\nAND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU\nFOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR\nCONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE\nLIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING\nRENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A\nFAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF\nSUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\nDAMAGES.\n\n END OF TERMS AND CONDITIONS\n\f\n How to Apply These Terms to Your New Libraries\n\n If you develop a new library, and you want it to be of the greatest\npossible use to the public, we recommend making it free software that\neveryone can redistribute and change. You can do so by permitting\nredistribution under these terms (or, alternatively, under the terms of the\nordinary General Public License).\n\n To apply these terms, attach the following notices to the library. It is\nsafest to attach them to the start of each source file to most effectively\nconvey the exclusion of warranty; and each file should have at least the\n\"copyright\" line and a pointer to where the full notice is found.\n\n \n Copyright (C) \n\n This library is free software; you can redistribute it and/or\n modify it under the terms of the GNU Lesser General Public\n License as published by the Free Software Foundation; either\n version 2.1 of the License, or (at your option) any later version.\n\n This library is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public\n License along with this library; if not, write to the Free Software\n Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n\nAlso add information on how to contact you by electronic and paper mail.\n\nYou should also get your employer (if you work as a programmer) or your\nschool, if any, to sign a \"copyright disclaimer\" for the library, if\nnecessary. Here is a sample; alter the names:\n\n Yoyodyne, Inc., hereby disclaims all copyright interest in the\n library `Frob' (a library for tweaking knobs) written by James Random Hacker.\n\n , 1 April 1990\n Ty Coon, President of Vice\n\nThat's all there is to it!\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license of 'chardet'", + "text": { + "content": "LGPL", + "contentType": "text/plain" + } + } + } + ], + "name": "chardet", + "purl": "pkg:pypi/chardet@5.2.0", + "type": "library", + "version": "5.2.0" + }, { "bom-ref": "cryptography==43.0.1", "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", @@ -416,6 +471,9 @@ { "ref": "boolean.py==4.0" }, + { + "ref": "chardet==5.2.0" + }, { "ref": "cryptography==43.0.1" }, diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.json.bin index 8414cb226..40efe4014 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.json.bin @@ -100,6 +100,61 @@ "type": "library", "version": "4.0" }, + { + "bom-ref": "chardet==5.2.0", + "description": "Universal encoding detector for Python 3", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://chardet.readthedocs.io/" + }, + { + "comment": "from packaging metadata Project-URL: Issue Tracker", + "type": "issue-tracker", + "url": "https://github.com/chardet/chardet/issues" + }, + { + "comment": "from packaging metadata Project-URL: GitHub Project", + "type": "other", + "url": "https://github.com/chardet/chardet" + }, + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/chardet/chardet" + } + ], + "licenses": [ + { + "license": { + "name": "License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)" + } + }, + { + "license": { + "name": "declared license file: LICENSE", + "text": { + "content": " GNU LESSER GENERAL PUBLIC LICENSE\n Version 2.1, February 1999\n\n Copyright (C) 1991, 1999 Free Software Foundation, Inc.\n 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n[This is the first released version of the Lesser GPL. It also counts\n as the successor of the GNU Library Public License, version 2, hence\n the version number 2.1.]\n\n Preamble\n\n The licenses for most software are designed to take away your\nfreedom to share and change it. By contrast, the GNU General Public\nLicenses are intended to guarantee your freedom to share and change\nfree software--to make sure the software is free for all its users.\n\n This license, the Lesser General Public License, applies to some\nspecially designated software packages--typically libraries--of the\nFree Software Foundation and other authors who decide to use it. You\ncan use it too, but we suggest you first think carefully about whether\nthis license or the ordinary General Public License is the better\nstrategy to use in any particular case, based on the explanations below.\n\n When we speak of free software, we are referring to freedom of use,\nnot price. Our General Public Licenses are designed to make sure that\nyou have the freedom to distribute copies of free software (and charge\nfor this service if you wish); that you receive source code or can get\nit if you want it; that you can change the software and use pieces of\nit in new free programs; and that you are informed that you can do\nthese things.\n\n To protect your rights, we need to make restrictions that forbid\ndistributors to deny you these rights or to ask you to surrender these\nrights. These restrictions translate to certain responsibilities for\nyou if you distribute copies of the library or if you modify it.\n\n For example, if you distribute copies of the library, whether gratis\nor for a fee, you must give the recipients all the rights that we gave\nyou. You must make sure that they, too, receive or can get the source\ncode. If you link other code with the library, you must provide\ncomplete object files to the recipients, so that they can relink them\nwith the library after making changes to the library and recompiling\nit. And you must show them these terms so they know their rights.\n\n We protect your rights with a two-step method: (1) we copyright the\nlibrary, and (2) we offer you this license, which gives you legal\npermission to copy, distribute and/or modify the library.\n\n To protect each distributor, we want to make it very clear that\nthere is no warranty for the free library. Also, if the library is\nmodified by someone else and passed on, the recipients should know\nthat what they have is not the original version, so that the original\nauthor's reputation will not be affected by problems that might be\nintroduced by others.\n\f\n Finally, software patents pose a constant threat to the existence of\nany free program. We wish to make sure that a company cannot\neffectively restrict the users of a free program by obtaining a\nrestrictive license from a patent holder. Therefore, we insist that\nany patent license obtained for a version of the library must be\nconsistent with the full freedom of use specified in this license.\n\n Most GNU software, including some libraries, is covered by the\nordinary GNU General Public License. This license, the GNU Lesser\nGeneral Public License, applies to certain designated libraries, and\nis quite different from the ordinary General Public License. We use\nthis license for certain libraries in order to permit linking those\nlibraries into non-free programs.\n\n When a program is linked with a library, whether statically or using\na shared library, the combination of the two is legally speaking a\ncombined work, a derivative of the original library. The ordinary\nGeneral Public License therefore permits such linking only if the\nentire combination fits its criteria of freedom. The Lesser General\nPublic License permits more lax criteria for linking other code with\nthe library.\n\n We call this license the \"Lesser\" General Public License because it\ndoes Less to protect the user's freedom than the ordinary General\nPublic License. It also provides other free software developers Less\nof an advantage over competing non-free programs. These disadvantages\nare the reason we use the ordinary General Public License for many\nlibraries. However, the Lesser license provides advantages in certain\nspecial circumstances.\n\n For example, on rare occasions, there may be a special need to\nencourage the widest possible use of a certain library, so that it becomes\na de-facto standard. To achieve this, non-free programs must be\nallowed to use the library. A more frequent case is that a free\nlibrary does the same job as widely used non-free libraries. In this\ncase, there is little to gain by limiting the free library to free\nsoftware only, so we use the Lesser General Public License.\n\n In other cases, permission to use a particular library in non-free\nprograms enables a greater number of people to use a large body of\nfree software. For example, permission to use the GNU C Library in\nnon-free programs enables many more people to use the whole GNU\noperating system, as well as its variant, the GNU/Linux operating\nsystem.\n\n Although the Lesser General Public License is Less protective of the\nusers' freedom, it does ensure that the user of a program that is\nlinked with the Library has the freedom and the wherewithal to run\nthat program using a modified version of the Library.\n\n The precise terms and conditions for copying, distribution and\nmodification follow. Pay close attention to the difference between a\n\"work based on the library\" and a \"work that uses the library\". The\nformer contains code derived from the library, whereas the latter must\nbe combined with the library in order to run.\n\f\n GNU LESSER GENERAL PUBLIC LICENSE\n TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n 0. This License Agreement applies to any software library or other\nprogram which contains a notice placed by the copyright holder or\nother authorized party saying it may be distributed under the terms of\nthis Lesser General Public License (also called \"this License\").\nEach licensee is addressed as \"you\".\n\n A \"library\" means a collection of software functions and/or data\nprepared so as to be conveniently linked with application programs\n(which use some of those functions and data) to form executables.\n\n The \"Library\", below, refers to any such software library or work\nwhich has been distributed under these terms. A \"work based on the\nLibrary\" means either the Library or any derivative work under\ncopyright law: that is to say, a work containing the Library or a\nportion of it, either verbatim or with modifications and/or translated\nstraightforwardly into another language. (Hereinafter, translation is\nincluded without limitation in the term \"modification\".)\n\n \"Source code\" for a work means the preferred form of the work for\nmaking modifications to it. For a library, complete source code means\nall the source code for all modules it contains, plus any associated\ninterface definition files, plus the scripts used to control compilation\nand installation of the library.\n\n Activities other than copying, distribution and modification are not\ncovered by this License; they are outside its scope. The act of\nrunning a program using the Library is not restricted, and output from\nsuch a program is covered only if its contents constitute a work based\non the Library (independent of the use of the Library in a tool for\nwriting it). Whether that is true depends on what the Library does\nand what the program that uses the Library does.\n\n 1. You may copy and distribute verbatim copies of the Library's\ncomplete source code as you receive it, in any medium, provided that\nyou conspicuously and appropriately publish on each copy an\nappropriate copyright notice and disclaimer of warranty; keep intact\nall the notices that refer to this License and to the absence of any\nwarranty; and distribute a copy of this License along with the\nLibrary.\n\n You may charge a fee for the physical act of transferring a copy,\nand you may at your option offer warranty protection in exchange for a\nfee.\n\f\n 2. You may modify your copy or copies of the Library or any portion\nof it, thus forming a work based on the Library, and copy and\ndistribute such modifications or work under the terms of Section 1\nabove, provided that you also meet all of these conditions:\n\n a) The modified work must itself be a software library.\n\n b) You must cause the files modified to carry prominent notices\n stating that you changed the files and the date of any change.\n\n c) You must cause the whole of the work to be licensed at no\n charge to all third parties under the terms of this License.\n\n d) If a facility in the modified Library refers to a function or a\n table of data to be supplied by an application program that uses\n the facility, other than as an argument passed when the facility\n is invoked, then you must make a good faith effort to ensure that,\n in the event an application does not supply such function or\n table, the facility still operates, and performs whatever part of\n its purpose remains meaningful.\n\n (For example, a function in a library to compute square roots has\n a purpose that is entirely well-defined independent of the\n application. Therefore, Subsection 2d requires that any\n application-supplied function or table used by this function must\n be optional: if the application does not supply it, the square\n root function must still compute square roots.)\n\nThese requirements apply to the modified work as a whole. If\nidentifiable sections of that work are not derived from the Library,\nand can be reasonably considered independent and separate works in\nthemselves, then this License, and its terms, do not apply to those\nsections when you distribute them as separate works. But when you\ndistribute the same sections as part of a whole which is a work based\non the Library, the distribution of the whole must be on the terms of\nthis License, whose permissions for other licensees extend to the\nentire whole, and thus to each and every part regardless of who wrote\nit.\n\nThus, it is not the intent of this section to claim rights or contest\nyour rights to work written entirely by you; rather, the intent is to\nexercise the right to control the distribution of derivative or\ncollective works based on the Library.\n\nIn addition, mere aggregation of another work not based on the Library\nwith the Library (or with a work based on the Library) on a volume of\na storage or distribution medium does not bring the other work under\nthe scope of this License.\n\n 3. You may opt to apply the terms of the ordinary GNU General Public\nLicense instead of this License to a given copy of the Library. To do\nthis, you must alter all the notices that refer to this License, so\nthat they refer to the ordinary GNU General Public License, version 2,\ninstead of to this License. (If a newer version than version 2 of the\nordinary GNU General Public License has appeared, then you can specify\nthat version instead if you wish.) Do not make any other change in\nthese notices.\n\f\n Once this change is made in a given copy, it is irreversible for\nthat copy, so the ordinary GNU General Public License applies to all\nsubsequent copies and derivative works made from that copy.\n\n This option is useful when you wish to copy part of the code of\nthe Library into a program that is not a library.\n\n 4. You may copy and distribute the Library (or a portion or\nderivative of it, under Section 2) in object code or executable form\nunder the terms of Sections 1 and 2 above provided that you accompany\nit with the complete corresponding machine-readable source code, which\nmust be distributed under the terms of Sections 1 and 2 above on a\nmedium customarily used for software interchange.\n\n If distribution of object code is made by offering access to copy\nfrom a designated place, then offering equivalent access to copy the\nsource code from the same place satisfies the requirement to\ndistribute the source code, even though third parties are not\ncompelled to copy the source along with the object code.\n\n 5. A program that contains no derivative of any portion of the\nLibrary, but is designed to work with the Library by being compiled or\nlinked with it, is called a \"work that uses the Library\". Such a\nwork, in isolation, is not a derivative work of the Library, and\ntherefore falls outside the scope of this License.\n\n However, linking a \"work that uses the Library\" with the Library\ncreates an executable that is a derivative of the Library (because it\ncontains portions of the Library), rather than a \"work that uses the\nlibrary\". The executable is therefore covered by this License.\nSection 6 states terms for distribution of such executables.\n\n When a \"work that uses the Library\" uses material from a header file\nthat is part of the Library, the object code for the work may be a\nderivative work of the Library even though the source code is not.\nWhether this is true is especially significant if the work can be\nlinked without the Library, or if the work is itself a library. The\nthreshold for this to be true is not precisely defined by law.\n\n If such an object file uses only numerical parameters, data\nstructure layouts and accessors, and small macros and small inline\nfunctions (ten lines or less in length), then the use of the object\nfile is unrestricted, regardless of whether it is legally a derivative\nwork. (Executables containing this object code plus portions of the\nLibrary will still fall under Section 6.)\n\n Otherwise, if the work is a derivative of the Library, you may\ndistribute the object code for the work under the terms of Section 6.\nAny executables containing that work also fall under Section 6,\nwhether or not they are linked directly with the Library itself.\n\f\n 6. As an exception to the Sections above, you may also combine or\nlink a \"work that uses the Library\" with the Library to produce a\nwork containing portions of the Library, and distribute that work\nunder terms of your choice, provided that the terms permit\nmodification of the work for the customer's own use and reverse\nengineering for debugging such modifications.\n\n You must give prominent notice with each copy of the work that the\nLibrary is used in it and that the Library and its use are covered by\nthis License. You must supply a copy of this License. If the work\nduring execution displays copyright notices, you must include the\ncopyright notice for the Library among them, as well as a reference\ndirecting the user to the copy of this License. Also, you must do one\nof these things:\n\n a) Accompany the work with the complete corresponding\n machine-readable source code for the Library including whatever\n changes were used in the work (which must be distributed under\n Sections 1 and 2 above); and, if the work is an executable linked\n with the Library, with the complete machine-readable \"work that\n uses the Library\", as object code and/or source code, so that the\n user can modify the Library and then relink to produce a modified\n executable containing the modified Library. (It is understood\n that the user who changes the contents of definitions files in the\n Library will not necessarily be able to recompile the application\n to use the modified definitions.)\n\n b) Use a suitable shared library mechanism for linking with the\n Library. A suitable mechanism is one that (1) uses at run time a\n copy of the library already present on the user's computer system,\n rather than copying library functions into the executable, and (2)\n will operate properly with a modified version of the library, if\n the user installs one, as long as the modified version is\n interface-compatible with the version that the work was made with.\n\n c) Accompany the work with a written offer, valid for at\n least three years, to give the same user the materials\n specified in Subsection 6a, above, for a charge no more\n than the cost of performing this distribution.\n\n d) If distribution of the work is made by offering access to copy\n from a designated place, offer equivalent access to copy the above\n specified materials from the same place.\n\n e) Verify that the user has already received a copy of these\n materials or that you have already sent this user a copy.\n\n For an executable, the required form of the \"work that uses the\nLibrary\" must include any data and utility programs needed for\nreproducing the executable from it. However, as a special exception,\nthe materials to be distributed need not include anything that is\nnormally distributed (in either source or binary form) with the major\ncomponents (compiler, kernel, and so on) of the operating system on\nwhich the executable runs, unless that component itself accompanies\nthe executable.\n\n It may happen that this requirement contradicts the license\nrestrictions of other proprietary libraries that do not normally\naccompany the operating system. Such a contradiction means you cannot\nuse both them and the Library together in an executable that you\ndistribute.\n\f\n 7. You may place library facilities that are a work based on the\nLibrary side-by-side in a single library together with other library\nfacilities not covered by this License, and distribute such a combined\nlibrary, provided that the separate distribution of the work based on\nthe Library and of the other library facilities is otherwise\npermitted, and provided that you do these two things:\n\n a) Accompany the combined library with a copy of the same work\n based on the Library, uncombined with any other library\n facilities. This must be distributed under the terms of the\n Sections above.\n\n b) Give prominent notice with the combined library of the fact\n that part of it is a work based on the Library, and explaining\n where to find the accompanying uncombined form of the same work.\n\n 8. You may not copy, modify, sublicense, link with, or distribute\nthe Library except as expressly provided under this License. Any\nattempt otherwise to copy, modify, sublicense, link with, or\ndistribute the Library is void, and will automatically terminate your\nrights under this License. However, parties who have received copies,\nor rights, from you under this License will not have their licenses\nterminated so long as such parties remain in full compliance.\n\n 9. You are not required to accept this License, since you have not\nsigned it. However, nothing else grants you permission to modify or\ndistribute the Library or its derivative works. These actions are\nprohibited by law if you do not accept this License. Therefore, by\nmodifying or distributing the Library (or any work based on the\nLibrary), you indicate your acceptance of this License to do so, and\nall its terms and conditions for copying, distributing or modifying\nthe Library or works based on it.\n\n 10. Each time you redistribute the Library (or any work based on the\nLibrary), the recipient automatically receives a license from the\noriginal licensor to copy, distribute, link with or modify the Library\nsubject to these terms and conditions. You may not impose any further\nrestrictions on the recipients' exercise of the rights granted herein.\nYou are not responsible for enforcing compliance by third parties with\nthis License.\n\f\n 11. If, as a consequence of a court judgment or allegation of patent\ninfringement or for any other reason (not limited to patent issues),\nconditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License. If you cannot\ndistribute so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you\nmay not distribute the Library at all. For example, if a patent\nlicense would not permit royalty-free redistribution of the Library by\nall those who receive copies directly or indirectly through you, then\nthe only way you could satisfy both it and this License would be to\nrefrain entirely from distribution of the Library.\n\nIf any portion of this section is held invalid or unenforceable under any\nparticular circumstance, the balance of the section is intended to apply,\nand the section as a whole is intended to apply in other circumstances.\n\nIt is not the purpose of this section to induce you to infringe any\npatents or other property right claims or to contest validity of any\nsuch claims; this section has the sole purpose of protecting the\nintegrity of the free software distribution system which is\nimplemented by public license practices. Many people have made\ngenerous contributions to the wide range of software distributed\nthrough that system in reliance on consistent application of that\nsystem; it is up to the author/donor to decide if he or she is willing\nto distribute software through any other system and a licensee cannot\nimpose that choice.\n\nThis section is intended to make thoroughly clear what is believed to\nbe a consequence of the rest of this License.\n\n 12. If the distribution and/or use of the Library is restricted in\ncertain countries either by patents or by copyrighted interfaces, the\noriginal copyright holder who places the Library under this License may add\nan explicit geographical distribution limitation excluding those countries,\nso that distribution is permitted only in or among countries not thus\nexcluded. In such case, this License incorporates the limitation as if\nwritten in the body of this License.\n\n 13. The Free Software Foundation may publish revised and/or new\nversions of the Lesser General Public License from time to time.\nSuch new versions will be similar in spirit to the present version,\nbut may differ in detail to address new problems or concerns.\n\nEach version is given a distinguishing version number. If the Library\nspecifies a version number of this License which applies to it and\n\"any later version\", you have the option of following the terms and\nconditions either of that version or of any later version published by\nthe Free Software Foundation. If the Library does not specify a\nlicense version number, you may choose any version ever published by\nthe Free Software Foundation.\n\f\n 14. If you wish to incorporate parts of the Library into other free\nprograms whose distribution conditions are incompatible with these,\nwrite to the author to ask for permission. For software which is\ncopyrighted by the Free Software Foundation, write to the Free\nSoftware Foundation; we sometimes make exceptions for this. Our\ndecision will be guided by the two goals of preserving the free status\nof all derivatives of our free software and of promoting the sharing\nand reuse of software generally.\n\n NO WARRANTY\n\n 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO\nWARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.\nEXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR\nOTHER PARTIES PROVIDE THE LIBRARY \"AS IS\" WITHOUT WARRANTY OF ANY\nKIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE\nLIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME\nTHE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN\nWRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY\nAND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU\nFOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR\nCONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE\nLIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING\nRENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A\nFAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF\nSUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\nDAMAGES.\n\n END OF TERMS AND CONDITIONS\n\f\n How to Apply These Terms to Your New Libraries\n\n If you develop a new library, and you want it to be of the greatest\npossible use to the public, we recommend making it free software that\neveryone can redistribute and change. You can do so by permitting\nredistribution under these terms (or, alternatively, under the terms of the\nordinary General Public License).\n\n To apply these terms, attach the following notices to the library. It is\nsafest to attach them to the start of each source file to most effectively\nconvey the exclusion of warranty; and each file should have at least the\n\"copyright\" line and a pointer to where the full notice is found.\n\n \n Copyright (C) \n\n This library is free software; you can redistribute it and/or\n modify it under the terms of the GNU Lesser General Public\n License as published by the Free Software Foundation; either\n version 2.1 of the License, or (at your option) any later version.\n\n This library is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public\n License along with this library; if not, write to the Free Software\n Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n\nAlso add information on how to contact you by electronic and paper mail.\n\nYou should also get your employer (if you work as a programmer) or your\nschool, if any, to sign a \"copyright disclaimer\" for the library, if\nnecessary. Here is a sample; alter the names:\n\n Yoyodyne, Inc., hereby disclaims all copyright interest in the\n library `Frob' (a library for tweaking knobs) written by James Random Hacker.\n\n , 1 April 1990\n Ty Coon, President of Vice\n\nThat's all there is to it!\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license of 'chardet'", + "text": { + "content": "LGPL", + "contentType": "text/plain" + } + } + } + ], + "name": "chardet", + "purl": "pkg:pypi/chardet@5.2.0", + "type": "library", + "version": "5.2.0" + }, { "bom-ref": "cryptography==43.0.1", "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", @@ -416,6 +471,9 @@ { "ref": "boolean.py==4.0" }, + { + "ref": "chardet==5.2.0" + }, { "ref": "cryptography==43.0.1" }, diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.json.bin index b2abf1eec..e5aba976c 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.json.bin @@ -100,6 +100,61 @@ "type": "library", "version": "4.0" }, + { + "bom-ref": "chardet==5.2.0", + "description": "Universal encoding detector for Python 3", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://chardet.readthedocs.io/" + }, + { + "comment": "from packaging metadata Project-URL: Issue Tracker", + "type": "issue-tracker", + "url": "https://github.com/chardet/chardet/issues" + }, + { + "comment": "from packaging metadata Project-URL: GitHub Project", + "type": "other", + "url": "https://github.com/chardet/chardet" + }, + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/chardet/chardet" + } + ], + "licenses": [ + { + "license": { + "name": "License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)" + } + }, + { + "license": { + "name": "declared license file: LICENSE", + "text": { + "content": " GNU LESSER GENERAL PUBLIC LICENSE\n Version 2.1, February 1999\n\n Copyright (C) 1991, 1999 Free Software Foundation, Inc.\n 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n[This is the first released version of the Lesser GPL. It also counts\n as the successor of the GNU Library Public License, version 2, hence\n the version number 2.1.]\n\n Preamble\n\n The licenses for most software are designed to take away your\nfreedom to share and change it. By contrast, the GNU General Public\nLicenses are intended to guarantee your freedom to share and change\nfree software--to make sure the software is free for all its users.\n\n This license, the Lesser General Public License, applies to some\nspecially designated software packages--typically libraries--of the\nFree Software Foundation and other authors who decide to use it. You\ncan use it too, but we suggest you first think carefully about whether\nthis license or the ordinary General Public License is the better\nstrategy to use in any particular case, based on the explanations below.\n\n When we speak of free software, we are referring to freedom of use,\nnot price. Our General Public Licenses are designed to make sure that\nyou have the freedom to distribute copies of free software (and charge\nfor this service if you wish); that you receive source code or can get\nit if you want it; that you can change the software and use pieces of\nit in new free programs; and that you are informed that you can do\nthese things.\n\n To protect your rights, we need to make restrictions that forbid\ndistributors to deny you these rights or to ask you to surrender these\nrights. These restrictions translate to certain responsibilities for\nyou if you distribute copies of the library or if you modify it.\n\n For example, if you distribute copies of the library, whether gratis\nor for a fee, you must give the recipients all the rights that we gave\nyou. You must make sure that they, too, receive or can get the source\ncode. If you link other code with the library, you must provide\ncomplete object files to the recipients, so that they can relink them\nwith the library after making changes to the library and recompiling\nit. And you must show them these terms so they know their rights.\n\n We protect your rights with a two-step method: (1) we copyright the\nlibrary, and (2) we offer you this license, which gives you legal\npermission to copy, distribute and/or modify the library.\n\n To protect each distributor, we want to make it very clear that\nthere is no warranty for the free library. Also, if the library is\nmodified by someone else and passed on, the recipients should know\nthat what they have is not the original version, so that the original\nauthor's reputation will not be affected by problems that might be\nintroduced by others.\n\f\n Finally, software patents pose a constant threat to the existence of\nany free program. We wish to make sure that a company cannot\neffectively restrict the users of a free program by obtaining a\nrestrictive license from a patent holder. Therefore, we insist that\nany patent license obtained for a version of the library must be\nconsistent with the full freedom of use specified in this license.\n\n Most GNU software, including some libraries, is covered by the\nordinary GNU General Public License. This license, the GNU Lesser\nGeneral Public License, applies to certain designated libraries, and\nis quite different from the ordinary General Public License. We use\nthis license for certain libraries in order to permit linking those\nlibraries into non-free programs.\n\n When a program is linked with a library, whether statically or using\na shared library, the combination of the two is legally speaking a\ncombined work, a derivative of the original library. The ordinary\nGeneral Public License therefore permits such linking only if the\nentire combination fits its criteria of freedom. The Lesser General\nPublic License permits more lax criteria for linking other code with\nthe library.\n\n We call this license the \"Lesser\" General Public License because it\ndoes Less to protect the user's freedom than the ordinary General\nPublic License. It also provides other free software developers Less\nof an advantage over competing non-free programs. These disadvantages\nare the reason we use the ordinary General Public License for many\nlibraries. However, the Lesser license provides advantages in certain\nspecial circumstances.\n\n For example, on rare occasions, there may be a special need to\nencourage the widest possible use of a certain library, so that it becomes\na de-facto standard. To achieve this, non-free programs must be\nallowed to use the library. A more frequent case is that a free\nlibrary does the same job as widely used non-free libraries. In this\ncase, there is little to gain by limiting the free library to free\nsoftware only, so we use the Lesser General Public License.\n\n In other cases, permission to use a particular library in non-free\nprograms enables a greater number of people to use a large body of\nfree software. For example, permission to use the GNU C Library in\nnon-free programs enables many more people to use the whole GNU\noperating system, as well as its variant, the GNU/Linux operating\nsystem.\n\n Although the Lesser General Public License is Less protective of the\nusers' freedom, it does ensure that the user of a program that is\nlinked with the Library has the freedom and the wherewithal to run\nthat program using a modified version of the Library.\n\n The precise terms and conditions for copying, distribution and\nmodification follow. Pay close attention to the difference between a\n\"work based on the library\" and a \"work that uses the library\". The\nformer contains code derived from the library, whereas the latter must\nbe combined with the library in order to run.\n\f\n GNU LESSER GENERAL PUBLIC LICENSE\n TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n 0. This License Agreement applies to any software library or other\nprogram which contains a notice placed by the copyright holder or\nother authorized party saying it may be distributed under the terms of\nthis Lesser General Public License (also called \"this License\").\nEach licensee is addressed as \"you\".\n\n A \"library\" means a collection of software functions and/or data\nprepared so as to be conveniently linked with application programs\n(which use some of those functions and data) to form executables.\n\n The \"Library\", below, refers to any such software library or work\nwhich has been distributed under these terms. A \"work based on the\nLibrary\" means either the Library or any derivative work under\ncopyright law: that is to say, a work containing the Library or a\nportion of it, either verbatim or with modifications and/or translated\nstraightforwardly into another language. (Hereinafter, translation is\nincluded without limitation in the term \"modification\".)\n\n \"Source code\" for a work means the preferred form of the work for\nmaking modifications to it. For a library, complete source code means\nall the source code for all modules it contains, plus any associated\ninterface definition files, plus the scripts used to control compilation\nand installation of the library.\n\n Activities other than copying, distribution and modification are not\ncovered by this License; they are outside its scope. The act of\nrunning a program using the Library is not restricted, and output from\nsuch a program is covered only if its contents constitute a work based\non the Library (independent of the use of the Library in a tool for\nwriting it). Whether that is true depends on what the Library does\nand what the program that uses the Library does.\n\n 1. You may copy and distribute verbatim copies of the Library's\ncomplete source code as you receive it, in any medium, provided that\nyou conspicuously and appropriately publish on each copy an\nappropriate copyright notice and disclaimer of warranty; keep intact\nall the notices that refer to this License and to the absence of any\nwarranty; and distribute a copy of this License along with the\nLibrary.\n\n You may charge a fee for the physical act of transferring a copy,\nand you may at your option offer warranty protection in exchange for a\nfee.\n\f\n 2. You may modify your copy or copies of the Library or any portion\nof it, thus forming a work based on the Library, and copy and\ndistribute such modifications or work under the terms of Section 1\nabove, provided that you also meet all of these conditions:\n\n a) The modified work must itself be a software library.\n\n b) You must cause the files modified to carry prominent notices\n stating that you changed the files and the date of any change.\n\n c) You must cause the whole of the work to be licensed at no\n charge to all third parties under the terms of this License.\n\n d) If a facility in the modified Library refers to a function or a\n table of data to be supplied by an application program that uses\n the facility, other than as an argument passed when the facility\n is invoked, then you must make a good faith effort to ensure that,\n in the event an application does not supply such function or\n table, the facility still operates, and performs whatever part of\n its purpose remains meaningful.\n\n (For example, a function in a library to compute square roots has\n a purpose that is entirely well-defined independent of the\n application. Therefore, Subsection 2d requires that any\n application-supplied function or table used by this function must\n be optional: if the application does not supply it, the square\n root function must still compute square roots.)\n\nThese requirements apply to the modified work as a whole. If\nidentifiable sections of that work are not derived from the Library,\nand can be reasonably considered independent and separate works in\nthemselves, then this License, and its terms, do not apply to those\nsections when you distribute them as separate works. But when you\ndistribute the same sections as part of a whole which is a work based\non the Library, the distribution of the whole must be on the terms of\nthis License, whose permissions for other licensees extend to the\nentire whole, and thus to each and every part regardless of who wrote\nit.\n\nThus, it is not the intent of this section to claim rights or contest\nyour rights to work written entirely by you; rather, the intent is to\nexercise the right to control the distribution of derivative or\ncollective works based on the Library.\n\nIn addition, mere aggregation of another work not based on the Library\nwith the Library (or with a work based on the Library) on a volume of\na storage or distribution medium does not bring the other work under\nthe scope of this License.\n\n 3. You may opt to apply the terms of the ordinary GNU General Public\nLicense instead of this License to a given copy of the Library. To do\nthis, you must alter all the notices that refer to this License, so\nthat they refer to the ordinary GNU General Public License, version 2,\ninstead of to this License. (If a newer version than version 2 of the\nordinary GNU General Public License has appeared, then you can specify\nthat version instead if you wish.) Do not make any other change in\nthese notices.\n\f\n Once this change is made in a given copy, it is irreversible for\nthat copy, so the ordinary GNU General Public License applies to all\nsubsequent copies and derivative works made from that copy.\n\n This option is useful when you wish to copy part of the code of\nthe Library into a program that is not a library.\n\n 4. You may copy and distribute the Library (or a portion or\nderivative of it, under Section 2) in object code or executable form\nunder the terms of Sections 1 and 2 above provided that you accompany\nit with the complete corresponding machine-readable source code, which\nmust be distributed under the terms of Sections 1 and 2 above on a\nmedium customarily used for software interchange.\n\n If distribution of object code is made by offering access to copy\nfrom a designated place, then offering equivalent access to copy the\nsource code from the same place satisfies the requirement to\ndistribute the source code, even though third parties are not\ncompelled to copy the source along with the object code.\n\n 5. A program that contains no derivative of any portion of the\nLibrary, but is designed to work with the Library by being compiled or\nlinked with it, is called a \"work that uses the Library\". Such a\nwork, in isolation, is not a derivative work of the Library, and\ntherefore falls outside the scope of this License.\n\n However, linking a \"work that uses the Library\" with the Library\ncreates an executable that is a derivative of the Library (because it\ncontains portions of the Library), rather than a \"work that uses the\nlibrary\". The executable is therefore covered by this License.\nSection 6 states terms for distribution of such executables.\n\n When a \"work that uses the Library\" uses material from a header file\nthat is part of the Library, the object code for the work may be a\nderivative work of the Library even though the source code is not.\nWhether this is true is especially significant if the work can be\nlinked without the Library, or if the work is itself a library. The\nthreshold for this to be true is not precisely defined by law.\n\n If such an object file uses only numerical parameters, data\nstructure layouts and accessors, and small macros and small inline\nfunctions (ten lines or less in length), then the use of the object\nfile is unrestricted, regardless of whether it is legally a derivative\nwork. (Executables containing this object code plus portions of the\nLibrary will still fall under Section 6.)\n\n Otherwise, if the work is a derivative of the Library, you may\ndistribute the object code for the work under the terms of Section 6.\nAny executables containing that work also fall under Section 6,\nwhether or not they are linked directly with the Library itself.\n\f\n 6. As an exception to the Sections above, you may also combine or\nlink a \"work that uses the Library\" with the Library to produce a\nwork containing portions of the Library, and distribute that work\nunder terms of your choice, provided that the terms permit\nmodification of the work for the customer's own use and reverse\nengineering for debugging such modifications.\n\n You must give prominent notice with each copy of the work that the\nLibrary is used in it and that the Library and its use are covered by\nthis License. You must supply a copy of this License. If the work\nduring execution displays copyright notices, you must include the\ncopyright notice for the Library among them, as well as a reference\ndirecting the user to the copy of this License. Also, you must do one\nof these things:\n\n a) Accompany the work with the complete corresponding\n machine-readable source code for the Library including whatever\n changes were used in the work (which must be distributed under\n Sections 1 and 2 above); and, if the work is an executable linked\n with the Library, with the complete machine-readable \"work that\n uses the Library\", as object code and/or source code, so that the\n user can modify the Library and then relink to produce a modified\n executable containing the modified Library. (It is understood\n that the user who changes the contents of definitions files in the\n Library will not necessarily be able to recompile the application\n to use the modified definitions.)\n\n b) Use a suitable shared library mechanism for linking with the\n Library. A suitable mechanism is one that (1) uses at run time a\n copy of the library already present on the user's computer system,\n rather than copying library functions into the executable, and (2)\n will operate properly with a modified version of the library, if\n the user installs one, as long as the modified version is\n interface-compatible with the version that the work was made with.\n\n c) Accompany the work with a written offer, valid for at\n least three years, to give the same user the materials\n specified in Subsection 6a, above, for a charge no more\n than the cost of performing this distribution.\n\n d) If distribution of the work is made by offering access to copy\n from a designated place, offer equivalent access to copy the above\n specified materials from the same place.\n\n e) Verify that the user has already received a copy of these\n materials or that you have already sent this user a copy.\n\n For an executable, the required form of the \"work that uses the\nLibrary\" must include any data and utility programs needed for\nreproducing the executable from it. However, as a special exception,\nthe materials to be distributed need not include anything that is\nnormally distributed (in either source or binary form) with the major\ncomponents (compiler, kernel, and so on) of the operating system on\nwhich the executable runs, unless that component itself accompanies\nthe executable.\n\n It may happen that this requirement contradicts the license\nrestrictions of other proprietary libraries that do not normally\naccompany the operating system. Such a contradiction means you cannot\nuse both them and the Library together in an executable that you\ndistribute.\n\f\n 7. You may place library facilities that are a work based on the\nLibrary side-by-side in a single library together with other library\nfacilities not covered by this License, and distribute such a combined\nlibrary, provided that the separate distribution of the work based on\nthe Library and of the other library facilities is otherwise\npermitted, and provided that you do these two things:\n\n a) Accompany the combined library with a copy of the same work\n based on the Library, uncombined with any other library\n facilities. This must be distributed under the terms of the\n Sections above.\n\n b) Give prominent notice with the combined library of the fact\n that part of it is a work based on the Library, and explaining\n where to find the accompanying uncombined form of the same work.\n\n 8. You may not copy, modify, sublicense, link with, or distribute\nthe Library except as expressly provided under this License. Any\nattempt otherwise to copy, modify, sublicense, link with, or\ndistribute the Library is void, and will automatically terminate your\nrights under this License. However, parties who have received copies,\nor rights, from you under this License will not have their licenses\nterminated so long as such parties remain in full compliance.\n\n 9. You are not required to accept this License, since you have not\nsigned it. However, nothing else grants you permission to modify or\ndistribute the Library or its derivative works. These actions are\nprohibited by law if you do not accept this License. Therefore, by\nmodifying or distributing the Library (or any work based on the\nLibrary), you indicate your acceptance of this License to do so, and\nall its terms and conditions for copying, distributing or modifying\nthe Library or works based on it.\n\n 10. Each time you redistribute the Library (or any work based on the\nLibrary), the recipient automatically receives a license from the\noriginal licensor to copy, distribute, link with or modify the Library\nsubject to these terms and conditions. You may not impose any further\nrestrictions on the recipients' exercise of the rights granted herein.\nYou are not responsible for enforcing compliance by third parties with\nthis License.\n\f\n 11. If, as a consequence of a court judgment or allegation of patent\ninfringement or for any other reason (not limited to patent issues),\nconditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License. If you cannot\ndistribute so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you\nmay not distribute the Library at all. For example, if a patent\nlicense would not permit royalty-free redistribution of the Library by\nall those who receive copies directly or indirectly through you, then\nthe only way you could satisfy both it and this License would be to\nrefrain entirely from distribution of the Library.\n\nIf any portion of this section is held invalid or unenforceable under any\nparticular circumstance, the balance of the section is intended to apply,\nand the section as a whole is intended to apply in other circumstances.\n\nIt is not the purpose of this section to induce you to infringe any\npatents or other property right claims or to contest validity of any\nsuch claims; this section has the sole purpose of protecting the\nintegrity of the free software distribution system which is\nimplemented by public license practices. Many people have made\ngenerous contributions to the wide range of software distributed\nthrough that system in reliance on consistent application of that\nsystem; it is up to the author/donor to decide if he or she is willing\nto distribute software through any other system and a licensee cannot\nimpose that choice.\n\nThis section is intended to make thoroughly clear what is believed to\nbe a consequence of the rest of this License.\n\n 12. If the distribution and/or use of the Library is restricted in\ncertain countries either by patents or by copyrighted interfaces, the\noriginal copyright holder who places the Library under this License may add\nan explicit geographical distribution limitation excluding those countries,\nso that distribution is permitted only in or among countries not thus\nexcluded. In such case, this License incorporates the limitation as if\nwritten in the body of this License.\n\n 13. The Free Software Foundation may publish revised and/or new\nversions of the Lesser General Public License from time to time.\nSuch new versions will be similar in spirit to the present version,\nbut may differ in detail to address new problems or concerns.\n\nEach version is given a distinguishing version number. If the Library\nspecifies a version number of this License which applies to it and\n\"any later version\", you have the option of following the terms and\nconditions either of that version or of any later version published by\nthe Free Software Foundation. If the Library does not specify a\nlicense version number, you may choose any version ever published by\nthe Free Software Foundation.\n\f\n 14. If you wish to incorporate parts of the Library into other free\nprograms whose distribution conditions are incompatible with these,\nwrite to the author to ask for permission. For software which is\ncopyrighted by the Free Software Foundation, write to the Free\nSoftware Foundation; we sometimes make exceptions for this. Our\ndecision will be guided by the two goals of preserving the free status\nof all derivatives of our free software and of promoting the sharing\nand reuse of software generally.\n\n NO WARRANTY\n\n 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO\nWARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.\nEXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR\nOTHER PARTIES PROVIDE THE LIBRARY \"AS IS\" WITHOUT WARRANTY OF ANY\nKIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE\nLIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME\nTHE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN\nWRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY\nAND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU\nFOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR\nCONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE\nLIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING\nRENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A\nFAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF\nSUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\nDAMAGES.\n\n END OF TERMS AND CONDITIONS\n\f\n How to Apply These Terms to Your New Libraries\n\n If you develop a new library, and you want it to be of the greatest\npossible use to the public, we recommend making it free software that\neveryone can redistribute and change. You can do so by permitting\nredistribution under these terms (or, alternatively, under the terms of the\nordinary General Public License).\n\n To apply these terms, attach the following notices to the library. It is\nsafest to attach them to the start of each source file to most effectively\nconvey the exclusion of warranty; and each file should have at least the\n\"copyright\" line and a pointer to where the full notice is found.\n\n \n Copyright (C) \n\n This library is free software; you can redistribute it and/or\n modify it under the terms of the GNU Lesser General Public\n License as published by the Free Software Foundation; either\n version 2.1 of the License, or (at your option) any later version.\n\n This library is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public\n License along with this library; if not, write to the Free Software\n Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n\nAlso add information on how to contact you by electronic and paper mail.\n\nYou should also get your employer (if you work as a programmer) or your\nschool, if any, to sign a \"copyright disclaimer\" for the library, if\nnecessary. Here is a sample; alter the names:\n\n Yoyodyne, Inc., hereby disclaims all copyright interest in the\n library `Frob' (a library for tweaking knobs) written by James Random Hacker.\n\n , 1 April 1990\n Ty Coon, President of Vice\n\nThat's all there is to it!\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license of 'chardet'", + "text": { + "content": "LGPL", + "contentType": "text/plain" + } + } + } + ], + "name": "chardet", + "purl": "pkg:pypi/chardet@5.2.0", + "type": "library", + "version": "5.2.0" + }, { "bom-ref": "cryptography==43.0.1", "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", @@ -416,6 +471,9 @@ { "ref": "boolean.py==4.0" }, + { + "ref": "chardet==5.2.0" + }, { "ref": "cryptography==43.0.1" }, diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.json.bin index d0aa61ac4..15314e638 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.json.bin @@ -106,6 +106,64 @@ "type": "library", "version": "4.0" }, + { + "bom-ref": "chardet==5.2.0", + "description": "Universal encoding detector for Python 3", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://chardet.readthedocs.io/" + }, + { + "comment": "from packaging metadata Project-URL: Issue Tracker", + "type": "issue-tracker", + "url": "https://github.com/chardet/chardet/issues" + }, + { + "comment": "from packaging metadata Project-URL: GitHub Project", + "type": "other", + "url": "https://github.com/chardet/chardet" + }, + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/chardet/chardet" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: LICENSE", + "text": { + "content": " GNU LESSER GENERAL PUBLIC LICENSE\n Version 2.1, February 1999\n\n Copyright (C) 1991, 1999 Free Software Foundation, Inc.\n 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n[This is the first released version of the Lesser GPL. It also counts\n as the successor of the GNU Library Public License, version 2, hence\n the version number 2.1.]\n\n Preamble\n\n The licenses for most software are designed to take away your\nfreedom to share and change it. By contrast, the GNU General Public\nLicenses are intended to guarantee your freedom to share and change\nfree software--to make sure the software is free for all its users.\n\n This license, the Lesser General Public License, applies to some\nspecially designated software packages--typically libraries--of the\nFree Software Foundation and other authors who decide to use it. You\ncan use it too, but we suggest you first think carefully about whether\nthis license or the ordinary General Public License is the better\nstrategy to use in any particular case, based on the explanations below.\n\n When we speak of free software, we are referring to freedom of use,\nnot price. Our General Public Licenses are designed to make sure that\nyou have the freedom to distribute copies of free software (and charge\nfor this service if you wish); that you receive source code or can get\nit if you want it; that you can change the software and use pieces of\nit in new free programs; and that you are informed that you can do\nthese things.\n\n To protect your rights, we need to make restrictions that forbid\ndistributors to deny you these rights or to ask you to surrender these\nrights. These restrictions translate to certain responsibilities for\nyou if you distribute copies of the library or if you modify it.\n\n For example, if you distribute copies of the library, whether gratis\nor for a fee, you must give the recipients all the rights that we gave\nyou. You must make sure that they, too, receive or can get the source\ncode. If you link other code with the library, you must provide\ncomplete object files to the recipients, so that they can relink them\nwith the library after making changes to the library and recompiling\nit. And you must show them these terms so they know their rights.\n\n We protect your rights with a two-step method: (1) we copyright the\nlibrary, and (2) we offer you this license, which gives you legal\npermission to copy, distribute and/or modify the library.\n\n To protect each distributor, we want to make it very clear that\nthere is no warranty for the free library. Also, if the library is\nmodified by someone else and passed on, the recipients should know\nthat what they have is not the original version, so that the original\nauthor's reputation will not be affected by problems that might be\nintroduced by others.\n\f\n Finally, software patents pose a constant threat to the existence of\nany free program. We wish to make sure that a company cannot\neffectively restrict the users of a free program by obtaining a\nrestrictive license from a patent holder. Therefore, we insist that\nany patent license obtained for a version of the library must be\nconsistent with the full freedom of use specified in this license.\n\n Most GNU software, including some libraries, is covered by the\nordinary GNU General Public License. This license, the GNU Lesser\nGeneral Public License, applies to certain designated libraries, and\nis quite different from the ordinary General Public License. We use\nthis license for certain libraries in order to permit linking those\nlibraries into non-free programs.\n\n When a program is linked with a library, whether statically or using\na shared library, the combination of the two is legally speaking a\ncombined work, a derivative of the original library. The ordinary\nGeneral Public License therefore permits such linking only if the\nentire combination fits its criteria of freedom. The Lesser General\nPublic License permits more lax criteria for linking other code with\nthe library.\n\n We call this license the \"Lesser\" General Public License because it\ndoes Less to protect the user's freedom than the ordinary General\nPublic License. It also provides other free software developers Less\nof an advantage over competing non-free programs. These disadvantages\nare the reason we use the ordinary General Public License for many\nlibraries. However, the Lesser license provides advantages in certain\nspecial circumstances.\n\n For example, on rare occasions, there may be a special need to\nencourage the widest possible use of a certain library, so that it becomes\na de-facto standard. To achieve this, non-free programs must be\nallowed to use the library. A more frequent case is that a free\nlibrary does the same job as widely used non-free libraries. In this\ncase, there is little to gain by limiting the free library to free\nsoftware only, so we use the Lesser General Public License.\n\n In other cases, permission to use a particular library in non-free\nprograms enables a greater number of people to use a large body of\nfree software. For example, permission to use the GNU C Library in\nnon-free programs enables many more people to use the whole GNU\noperating system, as well as its variant, the GNU/Linux operating\nsystem.\n\n Although the Lesser General Public License is Less protective of the\nusers' freedom, it does ensure that the user of a program that is\nlinked with the Library has the freedom and the wherewithal to run\nthat program using a modified version of the Library.\n\n The precise terms and conditions for copying, distribution and\nmodification follow. Pay close attention to the difference between a\n\"work based on the library\" and a \"work that uses the library\". The\nformer contains code derived from the library, whereas the latter must\nbe combined with the library in order to run.\n\f\n GNU LESSER GENERAL PUBLIC LICENSE\n TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n 0. This License Agreement applies to any software library or other\nprogram which contains a notice placed by the copyright holder or\nother authorized party saying it may be distributed under the terms of\nthis Lesser General Public License (also called \"this License\").\nEach licensee is addressed as \"you\".\n\n A \"library\" means a collection of software functions and/or data\nprepared so as to be conveniently linked with application programs\n(which use some of those functions and data) to form executables.\n\n The \"Library\", below, refers to any such software library or work\nwhich has been distributed under these terms. A \"work based on the\nLibrary\" means either the Library or any derivative work under\ncopyright law: that is to say, a work containing the Library or a\nportion of it, either verbatim or with modifications and/or translated\nstraightforwardly into another language. (Hereinafter, translation is\nincluded without limitation in the term \"modification\".)\n\n \"Source code\" for a work means the preferred form of the work for\nmaking modifications to it. For a library, complete source code means\nall the source code for all modules it contains, plus any associated\ninterface definition files, plus the scripts used to control compilation\nand installation of the library.\n\n Activities other than copying, distribution and modification are not\ncovered by this License; they are outside its scope. The act of\nrunning a program using the Library is not restricted, and output from\nsuch a program is covered only if its contents constitute a work based\non the Library (independent of the use of the Library in a tool for\nwriting it). Whether that is true depends on what the Library does\nand what the program that uses the Library does.\n\n 1. You may copy and distribute verbatim copies of the Library's\ncomplete source code as you receive it, in any medium, provided that\nyou conspicuously and appropriately publish on each copy an\nappropriate copyright notice and disclaimer of warranty; keep intact\nall the notices that refer to this License and to the absence of any\nwarranty; and distribute a copy of this License along with the\nLibrary.\n\n You may charge a fee for the physical act of transferring a copy,\nand you may at your option offer warranty protection in exchange for a\nfee.\n\f\n 2. You may modify your copy or copies of the Library or any portion\nof it, thus forming a work based on the Library, and copy and\ndistribute such modifications or work under the terms of Section 1\nabove, provided that you also meet all of these conditions:\n\n a) The modified work must itself be a software library.\n\n b) You must cause the files modified to carry prominent notices\n stating that you changed the files and the date of any change.\n\n c) You must cause the whole of the work to be licensed at no\n charge to all third parties under the terms of this License.\n\n d) If a facility in the modified Library refers to a function or a\n table of data to be supplied by an application program that uses\n the facility, other than as an argument passed when the facility\n is invoked, then you must make a good faith effort to ensure that,\n in the event an application does not supply such function or\n table, the facility still operates, and performs whatever part of\n its purpose remains meaningful.\n\n (For example, a function in a library to compute square roots has\n a purpose that is entirely well-defined independent of the\n application. Therefore, Subsection 2d requires that any\n application-supplied function or table used by this function must\n be optional: if the application does not supply it, the square\n root function must still compute square roots.)\n\nThese requirements apply to the modified work as a whole. If\nidentifiable sections of that work are not derived from the Library,\nand can be reasonably considered independent and separate works in\nthemselves, then this License, and its terms, do not apply to those\nsections when you distribute them as separate works. But when you\ndistribute the same sections as part of a whole which is a work based\non the Library, the distribution of the whole must be on the terms of\nthis License, whose permissions for other licensees extend to the\nentire whole, and thus to each and every part regardless of who wrote\nit.\n\nThus, it is not the intent of this section to claim rights or contest\nyour rights to work written entirely by you; rather, the intent is to\nexercise the right to control the distribution of derivative or\ncollective works based on the Library.\n\nIn addition, mere aggregation of another work not based on the Library\nwith the Library (or with a work based on the Library) on a volume of\na storage or distribution medium does not bring the other work under\nthe scope of this License.\n\n 3. You may opt to apply the terms of the ordinary GNU General Public\nLicense instead of this License to a given copy of the Library. To do\nthis, you must alter all the notices that refer to this License, so\nthat they refer to the ordinary GNU General Public License, version 2,\ninstead of to this License. (If a newer version than version 2 of the\nordinary GNU General Public License has appeared, then you can specify\nthat version instead if you wish.) Do not make any other change in\nthese notices.\n\f\n Once this change is made in a given copy, it is irreversible for\nthat copy, so the ordinary GNU General Public License applies to all\nsubsequent copies and derivative works made from that copy.\n\n This option is useful when you wish to copy part of the code of\nthe Library into a program that is not a library.\n\n 4. You may copy and distribute the Library (or a portion or\nderivative of it, under Section 2) in object code or executable form\nunder the terms of Sections 1 and 2 above provided that you accompany\nit with the complete corresponding machine-readable source code, which\nmust be distributed under the terms of Sections 1 and 2 above on a\nmedium customarily used for software interchange.\n\n If distribution of object code is made by offering access to copy\nfrom a designated place, then offering equivalent access to copy the\nsource code from the same place satisfies the requirement to\ndistribute the source code, even though third parties are not\ncompelled to copy the source along with the object code.\n\n 5. A program that contains no derivative of any portion of the\nLibrary, but is designed to work with the Library by being compiled or\nlinked with it, is called a \"work that uses the Library\". Such a\nwork, in isolation, is not a derivative work of the Library, and\ntherefore falls outside the scope of this License.\n\n However, linking a \"work that uses the Library\" with the Library\ncreates an executable that is a derivative of the Library (because it\ncontains portions of the Library), rather than a \"work that uses the\nlibrary\". The executable is therefore covered by this License.\nSection 6 states terms for distribution of such executables.\n\n When a \"work that uses the Library\" uses material from a header file\nthat is part of the Library, the object code for the work may be a\nderivative work of the Library even though the source code is not.\nWhether this is true is especially significant if the work can be\nlinked without the Library, or if the work is itself a library. The\nthreshold for this to be true is not precisely defined by law.\n\n If such an object file uses only numerical parameters, data\nstructure layouts and accessors, and small macros and small inline\nfunctions (ten lines or less in length), then the use of the object\nfile is unrestricted, regardless of whether it is legally a derivative\nwork. (Executables containing this object code plus portions of the\nLibrary will still fall under Section 6.)\n\n Otherwise, if the work is a derivative of the Library, you may\ndistribute the object code for the work under the terms of Section 6.\nAny executables containing that work also fall under Section 6,\nwhether or not they are linked directly with the Library itself.\n\f\n 6. As an exception to the Sections above, you may also combine or\nlink a \"work that uses the Library\" with the Library to produce a\nwork containing portions of the Library, and distribute that work\nunder terms of your choice, provided that the terms permit\nmodification of the work for the customer's own use and reverse\nengineering for debugging such modifications.\n\n You must give prominent notice with each copy of the work that the\nLibrary is used in it and that the Library and its use are covered by\nthis License. You must supply a copy of this License. If the work\nduring execution displays copyright notices, you must include the\ncopyright notice for the Library among them, as well as a reference\ndirecting the user to the copy of this License. Also, you must do one\nof these things:\n\n a) Accompany the work with the complete corresponding\n machine-readable source code for the Library including whatever\n changes were used in the work (which must be distributed under\n Sections 1 and 2 above); and, if the work is an executable linked\n with the Library, with the complete machine-readable \"work that\n uses the Library\", as object code and/or source code, so that the\n user can modify the Library and then relink to produce a modified\n executable containing the modified Library. (It is understood\n that the user who changes the contents of definitions files in the\n Library will not necessarily be able to recompile the application\n to use the modified definitions.)\n\n b) Use a suitable shared library mechanism for linking with the\n Library. A suitable mechanism is one that (1) uses at run time a\n copy of the library already present on the user's computer system,\n rather than copying library functions into the executable, and (2)\n will operate properly with a modified version of the library, if\n the user installs one, as long as the modified version is\n interface-compatible with the version that the work was made with.\n\n c) Accompany the work with a written offer, valid for at\n least three years, to give the same user the materials\n specified in Subsection 6a, above, for a charge no more\n than the cost of performing this distribution.\n\n d) If distribution of the work is made by offering access to copy\n from a designated place, offer equivalent access to copy the above\n specified materials from the same place.\n\n e) Verify that the user has already received a copy of these\n materials or that you have already sent this user a copy.\n\n For an executable, the required form of the \"work that uses the\nLibrary\" must include any data and utility programs needed for\nreproducing the executable from it. However, as a special exception,\nthe materials to be distributed need not include anything that is\nnormally distributed (in either source or binary form) with the major\ncomponents (compiler, kernel, and so on) of the operating system on\nwhich the executable runs, unless that component itself accompanies\nthe executable.\n\n It may happen that this requirement contradicts the license\nrestrictions of other proprietary libraries that do not normally\naccompany the operating system. Such a contradiction means you cannot\nuse both them and the Library together in an executable that you\ndistribute.\n\f\n 7. You may place library facilities that are a work based on the\nLibrary side-by-side in a single library together with other library\nfacilities not covered by this License, and distribute such a combined\nlibrary, provided that the separate distribution of the work based on\nthe Library and of the other library facilities is otherwise\npermitted, and provided that you do these two things:\n\n a) Accompany the combined library with a copy of the same work\n based on the Library, uncombined with any other library\n facilities. This must be distributed under the terms of the\n Sections above.\n\n b) Give prominent notice with the combined library of the fact\n that part of it is a work based on the Library, and explaining\n where to find the accompanying uncombined form of the same work.\n\n 8. You may not copy, modify, sublicense, link with, or distribute\nthe Library except as expressly provided under this License. Any\nattempt otherwise to copy, modify, sublicense, link with, or\ndistribute the Library is void, and will automatically terminate your\nrights under this License. However, parties who have received copies,\nor rights, from you under this License will not have their licenses\nterminated so long as such parties remain in full compliance.\n\n 9. You are not required to accept this License, since you have not\nsigned it. However, nothing else grants you permission to modify or\ndistribute the Library or its derivative works. These actions are\nprohibited by law if you do not accept this License. Therefore, by\nmodifying or distributing the Library (or any work based on the\nLibrary), you indicate your acceptance of this License to do so, and\nall its terms and conditions for copying, distributing or modifying\nthe Library or works based on it.\n\n 10. Each time you redistribute the Library (or any work based on the\nLibrary), the recipient automatically receives a license from the\noriginal licensor to copy, distribute, link with or modify the Library\nsubject to these terms and conditions. You may not impose any further\nrestrictions on the recipients' exercise of the rights granted herein.\nYou are not responsible for enforcing compliance by third parties with\nthis License.\n\f\n 11. If, as a consequence of a court judgment or allegation of patent\ninfringement or for any other reason (not limited to patent issues),\nconditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License. If you cannot\ndistribute so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you\nmay not distribute the Library at all. For example, if a patent\nlicense would not permit royalty-free redistribution of the Library by\nall those who receive copies directly or indirectly through you, then\nthe only way you could satisfy both it and this License would be to\nrefrain entirely from distribution of the Library.\n\nIf any portion of this section is held invalid or unenforceable under any\nparticular circumstance, the balance of the section is intended to apply,\nand the section as a whole is intended to apply in other circumstances.\n\nIt is not the purpose of this section to induce you to infringe any\npatents or other property right claims or to contest validity of any\nsuch claims; this section has the sole purpose of protecting the\nintegrity of the free software distribution system which is\nimplemented by public license practices. Many people have made\ngenerous contributions to the wide range of software distributed\nthrough that system in reliance on consistent application of that\nsystem; it is up to the author/donor to decide if he or she is willing\nto distribute software through any other system and a licensee cannot\nimpose that choice.\n\nThis section is intended to make thoroughly clear what is believed to\nbe a consequence of the rest of this License.\n\n 12. If the distribution and/or use of the Library is restricted in\ncertain countries either by patents or by copyrighted interfaces, the\noriginal copyright holder who places the Library under this License may add\nan explicit geographical distribution limitation excluding those countries,\nso that distribution is permitted only in or among countries not thus\nexcluded. In such case, this License incorporates the limitation as if\nwritten in the body of this License.\n\n 13. The Free Software Foundation may publish revised and/or new\nversions of the Lesser General Public License from time to time.\nSuch new versions will be similar in spirit to the present version,\nbut may differ in detail to address new problems or concerns.\n\nEach version is given a distinguishing version number. If the Library\nspecifies a version number of this License which applies to it and\n\"any later version\", you have the option of following the terms and\nconditions either of that version or of any later version published by\nthe Free Software Foundation. If the Library does not specify a\nlicense version number, you may choose any version ever published by\nthe Free Software Foundation.\n\f\n 14. If you wish to incorporate parts of the Library into other free\nprograms whose distribution conditions are incompatible with these,\nwrite to the author to ask for permission. For software which is\ncopyrighted by the Free Software Foundation, write to the Free\nSoftware Foundation; we sometimes make exceptions for this. Our\ndecision will be guided by the two goals of preserving the free status\nof all derivatives of our free software and of promoting the sharing\nand reuse of software generally.\n\n NO WARRANTY\n\n 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO\nWARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.\nEXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR\nOTHER PARTIES PROVIDE THE LIBRARY \"AS IS\" WITHOUT WARRANTY OF ANY\nKIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE\nLIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME\nTHE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN\nWRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY\nAND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU\nFOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR\nCONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE\nLIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING\nRENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A\nFAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF\nSUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\nDAMAGES.\n\n END OF TERMS AND CONDITIONS\n\f\n How to Apply These Terms to Your New Libraries\n\n If you develop a new library, and you want it to be of the greatest\npossible use to the public, we recommend making it free software that\neveryone can redistribute and change. You can do so by permitting\nredistribution under these terms (or, alternatively, under the terms of the\nordinary General Public License).\n\n To apply these terms, attach the following notices to the library. It is\nsafest to attach them to the start of each source file to most effectively\nconvey the exclusion of warranty; and each file should have at least the\n\"copyright\" line and a pointer to where the full notice is found.\n\n \n Copyright (C) \n\n This library is free software; you can redistribute it and/or\n modify it under the terms of the GNU Lesser General Public\n License as published by the Free Software Foundation; either\n version 2.1 of the License, or (at your option) any later version.\n\n This library is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public\n License along with this library; if not, write to the Free Software\n Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n\nAlso add information on how to contact you by electronic and paper mail.\n\nYou should also get your employer (if you work as a programmer) or your\nschool, if any, to sign a \"copyright disclaimer\" for the library, if\nnecessary. Here is a sample; alter the names:\n\n Yoyodyne, Inc., hereby disclaims all copyright interest in the\n library `Frob' (a library for tweaking knobs) written by James Random Hacker.\n\n , 1 April 1990\n Ty Coon, President of Vice\n\nThat's all there is to it!\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license of 'chardet'", + "text": { + "content": "LGPL", + "contentType": "text/plain" + } + } + } + ], + "name": "chardet", + "purl": "pkg:pypi/chardet@5.2.0", + "type": "library", + "version": "5.2.0" + }, { "bom-ref": "cryptography==43.0.1", "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", @@ -447,6 +505,9 @@ { "ref": "boolean.py==4.0" }, + { + "ref": "chardet==5.2.0" + }, { "ref": "cryptography==43.0.1" }, From 0d6215ce1a1cd378f66a9cb279f52648c3b601db Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Wed, 9 Jul 2025 16:34:04 +0200 Subject: [PATCH 34/49] fix for #931 Signed-off-by: Jan Kowalleck --- cyclonedx_py/_internal/environment.py | 2 +- cyclonedx_py/_internal/utils/pep621.py | 4 +- cyclonedx_py/_internal/utils/pep639.py | 67 +- .../environment/with-license-pep639/init.py | 2 +- .../texts_with-license-pep639_1.1.xml.bin | 912 +------------ .../texts_with-license-pep639_1.2.json.bin | 122 +- .../texts_with-license-pep639_1.2.xml.bin | 913 +------------ .../texts_with-license-pep639_1.3.json.bin | 149 +-- .../texts_with-license-pep639_1.3.xml.bin | 1157 +---------------- .../texts_with-license-pep639_1.4.json.bin | 149 +-- .../texts_with-license-pep639_1.4.xml.bin | 1157 +---------------- .../texts_with-license-pep639_1.5.json.bin | 149 +-- .../texts_with-license-pep639_1.5.xml.bin | 1157 +---------------- .../texts_with-license-pep639_1.6.json.bin | 158 +-- .../texts_with-license-pep639_1.6.xml.bin | 1157 +---------------- 15 files changed, 526 insertions(+), 6729 deletions(-) diff --git a/cyclonedx_py/_internal/environment.py b/cyclonedx_py/_internal/environment.py index 02dda2a56..179bcce27 100644 --- a/cyclonedx_py/_internal/environment.py +++ b/cyclonedx_py/_internal/environment.py @@ -190,7 +190,7 @@ def __add_components(self, bom: 'Bom', component.licenses.update(metadata2licenses(dist_meta, lfac, gather_texts=self._gather_license_texts)) if self._gather_license_texts: - component.licenses.update(pep639_dist2licenses_from_files(dist, lfac, logger=self._logger)) + component.licenses.update(pep639_dist2licenses_from_files(dist, logger=self._logger)) licenses_fixup(component) del lfac # endregion licenses diff --git a/cyclonedx_py/_internal/utils/pep621.py b/cyclonedx_py/_internal/utils/pep621.py index ef7f56c13..dc19e6896 100644 --- a/cyclonedx_py/_internal/utils/pep621.py +++ b/cyclonedx_py/_internal/utils/pep621.py @@ -71,10 +71,10 @@ def project2licenses(project: dict[str, Any], lfac: 'LicenseFactory', # > These keys are mutually exclusive, so a tool MUST raise an error if the metadata specifies both keys. raise ValueError('`license.file` and `license.text` are mutually exclusive,') if gather_text and 'file' in plicense: - # per spec: + # Per PEP 621 spec: # > [...] a string value that is a relative file path [...]. # > Tools MUST assume the file’s encoding is UTF-8. - # anyway, we don't trust this and assume binary + # But in reality, we found non-printable bytes in some files! with open(join(dirname(fpath), *PurePosixPath(plicense['file']).parts), 'rb') as plicense_fileh: yield DisjunctiveLicense(name=f"declared license of '{project['name']}'", acknowledgement=lack, diff --git a/cyclonedx_py/_internal/utils/pep639.py b/cyclonedx_py/_internal/utils/pep639.py index 24945f6e2..71227ff5e 100644 --- a/cyclonedx_py/_internal/utils/pep639.py +++ b/cyclonedx_py/_internal/utils/pep639.py @@ -25,13 +25,12 @@ from collections.abc import Generator from os.path import dirname, join from pathlib import Path, PurePosixPath -from typing import TYPE_CHECKING, Any, AnyStr +from typing import TYPE_CHECKING, Any, Union from cyclonedx.model import AttachedText, Encoding from cyclonedx.model.license import DisjunctiveLicense, LicenseAcknowledgement from ..py_interop.glob import glob -from .bytes import bytes2str from .mimetypes import guess_type if TYPE_CHECKING: # pragma: no cover @@ -74,13 +73,14 @@ def project2licenses(project: dict[str, Any], lfac: 'LicenseFactory', return None -# per spec > license files are stored in the `.dist-info/licenses/` subdirectory of the produced wheel. -# but in practice, other locations are used, too. -_LICENSE_LOCATIONS = ('licenses', 'license_files', '') +# Per PEP 639 spec, license files are stored in the `.dist-info/` directory of the produced wheel. +# see https://peps.python.org/pep-0639/#add-license-file-field +# Put in reality, other locations are used, too... +_LICENSE_LOCATIONS = ('', 'licenses', 'license_files') def dist2licenses_from_files( - dist: 'Distribution', lfac: 'LicenseFactory', + dist: 'Distribution', logger: 'Logger' ) -> Generator['License', None, None]: lack = LicenseAcknowledgement.DECLARED @@ -88,47 +88,36 @@ def dist2licenses_from_files( for mlfile in set(metadata.get_all('License-File', ())): # see spec: https://peps.python.org/pep-0639/#add-license-file-field # latest spec rev: https://discuss.python.org/t/pep-639-round-3-improving-license-clarity-with-better-package-metadata/53020 # noqa: E501 - content = None + content: Union[None, str, bytes] = None for mlpath in _LICENSE_LOCATIONS: try: content = dist.read_text(join(mlpath, mlfile)) + break # for-loop except UnicodeDecodeError as err: - try: - content = bytes2str(err.object) - except UnicodeDecodeError: - pass - else: - break # for-loop - else: - if content is not None: - break # for-loop + content = err.object + break # for-loop + except Exception: + continue # for-loop if content is None: # pragma: no cover logger.debug('Error: failed to read license file %r for dist %r', mlfile, metadata['Name']) - continue + continue # for-loop yield _make_license_from_content(mlfile, content, lack) -def _make_license_from_content(file_name: str, content: AnyStr, lack: 'LicenseAcknowledgement') -> DisjunctiveLicense: - encoding = None +def _make_license_from_content(file_name: str, content: Union[str, bytes], + lack: 'LicenseAcknowledgement') -> DisjunctiveLicense: content_type = guess_type(file_name) or AttachedText.DEFAULT_CONTENT_TYPE - # per default, license files are human-readable texts. - if content_type.startswith('text/'): - content_s = bytes2str(content) \ - if isinstance(content, bytes) \ - else content - else: - encoding = Encoding.BASE_64 - content_s = b64encode( - content - if isinstance(content, bytes) - else content.encode('utf-8') - ).decode('ascii') - return DisjunctiveLicense( - name=f'{lack.value} license file: {"/".join(Path(file_name).parts)}', - acknowledgement=lack, - text=AttachedText( - content=content_s, - encoding=encoding, - content_type=content_type - )) + # Per PEP 639 spec, license files are human-readable texts. + # But in reality, we found non-printable bytes in some files! + encoding = Encoding.BASE_64 + content_s = b64encode( + content + if isinstance(content, bytes) + else content.encode('utf-8') + ).decode('ascii') + return DisjunctiveLicense(name=f'{lack.value} license file: {"/".join(Path(file_name).parts)}', + acknowledgement=lack, + text=AttachedText(content=content_s, + encoding=encoding, + content_type=content_type)) diff --git a/tests/_data/infiles/environment/with-license-pep639/init.py b/tests/_data/infiles/environment/with-license-pep639/init.py index 6323c98a9..21d9bb7c5 100644 --- a/tests/_data/infiles/environment/with-license-pep639/init.py +++ b/tests/_data/infiles/environment/with-license-pep639/init.py @@ -71,7 +71,7 @@ def main() -> None: 'jsonpointer', 'license_expression', 'lxml', - 'chardet==5.2.0' , # https://github.com/CycloneDX/cyclonedx-python/issues/931 + 'chardet==5.2.0', # https://github.com/CycloneDX/cyclonedx-python/issues/931 # with expression-like License AND License-File 'cryptography==43.0.1', # https://github.com/CycloneDX/cyclonedx-python/issues/826 # with possibly unexpected license files diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.1.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.1.xml.bin index afe85637c..f03e0ae2d 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.1.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.1.xml.bin @@ -9,31 +9,6 @@ MIT - - declared license file: LICENSE - The MIT License (MIT) - -Copyright (c) 2015 Hynek Schlawack and the attrs contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - pkg:pypi/attrs@23.2.0 @@ -69,281 +44,15 @@ SOFTWARE. declared license file: CHANGELOG.rst - -Changelog -========= - - -next ----- - - -4.0 (2022-05-05) ----------------- - -* API changes - - * Drop support for Python 2. - * Test on Python 3.10 - * Make Expression.sort_order an instance attributes and not a class attribute - -* Misc. - - * Correct licensing documentation - * Improve docstringf and apply minor refactorings - * Adopt black code style and isort for imports - * Drop Travis and use GitHub actions for CI - - -3.8 (2020-06-10) ----------------- - -* API changes - - * Add support for evaluation of boolean expression. - Thank you to Lars van Gemerden @gemerden - -* Bug fixes - - * Fix parsing of tokens that have a number as the first character. - Thank you to Jeff Cohen @ jcohen28 - * Restore proper Python 2 compatibility. - Thank you to Benjy Weinberger @benjyw - -* Improve documentation - - * Add pointers to Linux distro packages. - Thank you to Max Mehl @mxmehl and Carmen Bianca Bakker @carmenbianca - * Fix typo. - Thank you to Gabriel Niebler @der-gabe - - -3.7 (2019-10-04) ----------------- - -* API changes - - * Add new sort argument to simplify() to optionally not sort when simplifying - expressions (e.g. not applying "commutativity"). Thank you to Steven Esser - @majurg for this - * Add new argument to tokenizer to optionally accept extra characters in symbol - tokens. Thank you to @carpie for this - - -3.6 (2018-08-06) ----------------- - -* No API changes - -* Bug fixes - - * Fix De Morgan's laws effect on double negation propositions. Thank you to Douglas Cardoso for this - * Improve error checking when parsing - - -3.5 (Nov 1, 2017) ------------------ - -* No API changes - -* Bug fixes - - * Documentation updates and add testing for Python 3.6. Thank you to Alexander Lisianoi @alisianoi - * Improve testng and expression equivalence checks - * Improve subs() method to an expression - - - -3.4 (May 12, 2017) ------------------- - -* No API changes - -* Bug fixes and improvements - - * Fix various documentation typos and improve tests . Thank you to Alexander Lisianoi @alisianoi - * Fix handling for literals vs. symbols in negations Thank you to @YaronK - - -3.3 (2017-02-09) ----------------- - -* API changes - - * #40 and #50 Expression.subs() now takes 'default' thanks to @kronuz - * #45 simplify=False is now the default for parse and related functions or methods. - * #40 Use "&" and "|" as default operators - -* Bug fixes - - * #60 Fix bug for "a or b c" which is not a valid expression - * #58 Fix math formula display in docs - * Improve handling of parse errors - - -2.0.0 (2016-05-11) ------------------- - -* API changes - - * New algebra definition. Refactored class hierarchy. Improved parsing. - -* New features - - * possibility to subclass algebra definition - * new normal forms shortcuts for DNF and CNF. - - -1.1 (2016-04-06) ------------------- - -* Initial release on Pypi. - + CkNoYW5nZWxvZwo9PT09PT09PT0KCgpuZXh0Ci0tLS0KCgo0LjAgKDIwMjItMDUtMDUpCi0tLS0tLS0tLS0tLS0tLS0KCiogQVBJIGNoYW5nZXMKCiAqIERyb3Agc3VwcG9ydCBmb3IgUHl0aG9uIDIuCiAqIFRlc3Qgb24gUHl0aG9uIDMuMTAKICogTWFrZSBFeHByZXNzaW9uLnNvcnRfb3JkZXIgYW4gaW5zdGFuY2UgYXR0cmlidXRlcyBhbmQgbm90IGEgY2xhc3MgYXR0cmlidXRlCgoqIE1pc2MuCgogKiBDb3JyZWN0IGxpY2Vuc2luZyBkb2N1bWVudGF0aW9uCiAqIEltcHJvdmUgZG9jc3RyaW5nZiBhbmQgYXBwbHkgbWlub3IgcmVmYWN0b3JpbmdzCiAqIEFkb3B0IGJsYWNrIGNvZGUgc3R5bGUgYW5kIGlzb3J0IGZvciBpbXBvcnRzCiAqIERyb3AgVHJhdmlzIGFuZCB1c2UgR2l0SHViIGFjdGlvbnMgZm9yIENJCgoKMy44ICgyMDIwLTA2LTEwKQotLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiBBZGQgc3VwcG9ydCBmb3IgZXZhbHVhdGlvbiBvZiBib29sZWFuIGV4cHJlc3Npb24uCiAgIFRoYW5rIHlvdSB0byBMYXJzIHZhbiBHZW1lcmRlbiBAZ2VtZXJkZW4KCiogQnVnIGZpeGVzCgogKiBGaXggcGFyc2luZyBvZiB0b2tlbnMgdGhhdCBoYXZlIGEgbnVtYmVyIGFzIHRoZSBmaXJzdCBjaGFyYWN0ZXIuIAogICBUaGFuayB5b3UgdG8gSmVmZiBDb2hlbiBAIGpjb2hlbjI4CiAqIFJlc3RvcmUgcHJvcGVyIFB5dGhvbiAyIGNvbXBhdGliaWxpdHkuIAogICBUaGFuayB5b3UgdG8gQmVuankgV2VpbmJlcmdlciBAYmVuanl3CgoqIEltcHJvdmUgZG9jdW1lbnRhdGlvbgoKICogQWRkIHBvaW50ZXJzIHRvIExpbnV4IGRpc3RybyBwYWNrYWdlcy4KICAgVGhhbmsgeW91IHRvIE1heCBNZWhsIEBteG1laGwgYW5kIENhcm1lbiBCaWFuY2EgQmFra2VyIEBjYXJtZW5iaWFuY2EKICogRml4IHR5cG8uCiAgIFRoYW5rIHlvdSB0byBHYWJyaWVsIE5pZWJsZXIgQGRlci1nYWJlCgoKMy43ICgyMDE5LTEwLTA0KQotLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiBBZGQgbmV3IHNvcnQgYXJndW1lbnQgdG8gc2ltcGxpZnkoKSB0byBvcHRpb25hbGx5IG5vdCBzb3J0IHdoZW4gc2ltcGxpZnlpbmcKICAgZXhwcmVzc2lvbnMgKGUuZy4gbm90IGFwcGx5aW5nICJjb21tdXRhdGl2aXR5IikuIFRoYW5rIHlvdSB0byBTdGV2ZW4gRXNzZXIKICAgQG1hanVyZyBmb3IgdGhpcwogKiBBZGQgbmV3IGFyZ3VtZW50IHRvIHRva2VuaXplciB0byBvcHRpb25hbGx5IGFjY2VwdCBleHRyYSBjaGFyYWN0ZXJzIGluIHN5bWJvbAogICB0b2tlbnMuIFRoYW5rIHlvdSB0byBAY2FycGllIGZvciB0aGlzCgoKMy42ICgyMDE4LTA4LTA2KQotLS0tLS0tLS0tLS0tLS0tCgoqIE5vIEFQSSBjaGFuZ2VzCgoqIEJ1ZyBmaXhlcwoKICogRml4IERlIE1vcmdhbidzIGxhd3MgZWZmZWN0IG9uIGRvdWJsZSBuZWdhdGlvbiBwcm9wb3NpdGlvbnMuIFRoYW5rIHlvdSB0byBEb3VnbGFzIENhcmRvc28gZm9yIHRoaXMKICogSW1wcm92ZSBlcnJvciBjaGVja2luZyB3aGVuIHBhcnNpbmcKCgozLjUgKE5vdiAxLCAyMDE3KQotLS0tLS0tLS0tLS0tLS0tLQoKKiBObyBBUEkgY2hhbmdlcwoKKiBCdWcgZml4ZXMKCiAqIERvY3VtZW50YXRpb24gdXBkYXRlcyBhbmQgYWRkIHRlc3RpbmcgZm9yIFB5dGhvbiAzLjYuIFRoYW5rIHlvdSB0byBBbGV4YW5kZXIgTGlzaWFub2kgQGFsaXNpYW5vaQogKiBJbXByb3ZlIHRlc3RuZyBhbmQgZXhwcmVzc2lvbiBlcXVpdmFsZW5jZSBjaGVja3MKICogSW1wcm92ZSBzdWJzKCkgbWV0aG9kIHRvIGFuIGV4cHJlc3Npb24gCgogCgozLjQgKE1heSAxMiwgMjAxNykKLS0tLS0tLS0tLS0tLS0tLS0tCgoqIE5vIEFQSSBjaGFuZ2VzCgoqIEJ1ZyBmaXhlcyBhbmQgaW1wcm92ZW1lbnRzCgogKiBGaXggdmFyaW91cyBkb2N1bWVudGF0aW9uIHR5cG9zIGFuZCBpbXByb3ZlIHRlc3RzIC4gVGhhbmsgeW91IHRvIEFsZXhhbmRlciBMaXNpYW5vaSBAYWxpc2lhbm9pCiAqIEZpeCBoYW5kbGluZyBmb3IgbGl0ZXJhbHMgdnMuIHN5bWJvbHMgaW4gbmVnYXRpb25zIFRoYW5rIHlvdSB0byBAWWFyb25LCgoKMy4zICgyMDE3LTAyLTA5KQotLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiAjNDAgYW5kICM1MCBFeHByZXNzaW9uLnN1YnMoKSBub3cgdGFrZXMgJ2RlZmF1bHQnIHRoYW5rcyB0byBAa3JvbnV6CiAqICM0NSBzaW1wbGlmeT1GYWxzZSBpcyBub3cgdGhlIGRlZmF1bHQgZm9yIHBhcnNlIGFuZCByZWxhdGVkIGZ1bmN0aW9ucyBvciBtZXRob2RzLgogKiAjNDAgVXNlICImIiBhbmQgInwiIGFzIGRlZmF1bHQgb3BlcmF0b3JzCgoqIEJ1ZyBmaXhlcwoKICogIzYwIEZpeCBidWcgZm9yICJhIG9yIGIgYyIgd2hpY2ggaXMgbm90IGEgdmFsaWQgZXhwcmVzc2lvbgogKiAjNTggRml4IG1hdGggZm9ybXVsYSBkaXNwbGF5IGluIGRvY3MKICogSW1wcm92ZSBoYW5kbGluZyBvZiBwYXJzZSBlcnJvcnMKCgoyLjAuMCAoMjAxNi0wNS0xMSkKLS0tLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiBOZXcgYWxnZWJyYSBkZWZpbml0aW9uLiBSZWZhY3RvcmVkIGNsYXNzIGhpZXJhcmNoeS4gSW1wcm92ZWQgcGFyc2luZy4KCiogTmV3IGZlYXR1cmVzCgogKiBwb3NzaWJpbGl0eSB0byBzdWJjbGFzcyBhbGdlYnJhIGRlZmluaXRpb24KICogbmV3IG5vcm1hbCBmb3JtcyBzaG9ydGN1dHMgZm9yIERORiBhbmQgQ05GLgoKCjEuMSAoMjAxNi0wNC0wNikKLS0tLS0tLS0tLS0tLS0tLS0tCgoqIEluaXRpYWwgcmVsZWFzZSBvbiBQeXBpLgo= declared license file: LICENSE.txt - Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation and/or -other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - + Q29weXJpZ2h0IChjKSBTZWJhc3RpYW4gS3JhZW1lciwgYmFzdGkua3JAZ21haWwuY29tIGFuZCBvdGhlcnMKQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCmFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKCjEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcwpsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KCjIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3IKb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQpESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgpBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwpMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCg== declared license file: README.rst - boolean.py -========== - -"boolean.py" is a small library implementing a boolean algebra. It -defines two base elements, TRUE and FALSE, and a Symbol class that can -take on one of these two values. Calculations are done in terms of AND, -OR and NOT - other compositions like XOR and NAND are not implemented -but can be emulated with AND or and NOT. Expressions are constructed -from parsed strings or in Python. - -It runs on Python 3.6+ -You can use older version 3.x for Python 2.7+ support. - -https://github.com/bastikr/boolean.py - -Build status: |Build Status| - - -Example -------- - -:: - - >>> import boolean - >>> algebra = boolean.BooleanAlgebra() - >>> expression1 = algebra.parse(u'apple and (oranges or banana) and not banana', simplify=False) - >>> expression1 - AND(Symbol('apple'), OR(Symbol('oranges'), Symbol('banana')), NOT(Symbol('banana'))) - - >>> expression2 = algebra.parse('(oranges | banana) and not banana & apple', simplify=True) - >>> expression2 - AND(Symbol('apple'), NOT(Symbol('banana')), Symbol('oranges')) - - >>> expression1 == expression2 - False - >>> expression1.simplify() == expression2 - True - - -Documentation -------------- - -http://readthedocs.org/docs/booleanpy/en/latest/ - - -Installation ------------- - -Installation via pip -~~~~~~~~~~~~~~~~~~~~ - -To install boolean.py, you need to have the following pieces of software -on your computer: - -- Python 3.6+ -- pip - -You then only need to run the following command: - -``pip install boolean.py`` - - -Installation via package managers -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -There are packages available for easy install on some operating systems. -You are welcome to help us package this tool for more distributions! - -- boolean.py has been packaged as Arch Linux, Fedora, openSus, - nixpkgs, Guix, DragonFly and FreeBSD - `packages <https://repology.org/project/python:boolean.py/versions>`__ . - -In particular: - -- Arch Linux (AUR): - `python-boolean.py <https://aur.archlinux.org/packages/python-boolean.py/>`__ -- Fedora: - `python-boolean.py <https://apps.fedoraproject.org/packages/python-boolean.py>`__ -- openSUSE: - `python-boolean.py <https://software.opensuse.org/package/python-boolean.py>`__ - - -Testing -------- - -Test ``boolean.py`` with your current Python environment: - -``python setup.py test`` - -Test with all of the supported Python environments using ``tox``: - -:: - - pip install -r requirements-dev.txt - tox - -If ``tox`` throws ``InterpreterNotFound``, limit it to python -interpreters that are actually installed on your machine: - -:: - - tox -e py36 - -Alternatively use pytest. - - -License -------- - -Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others -SPDX-License-Identifier: BSD-2-Clause - -.. |Build Status| image:: https://travis-ci.org/bastikr/boolean.py.svg?branch=master - :target: https://travis-ci.org/bastikr/boolean.py - + Ym9vbGVhbi5weQo9PT09PT09PT09CgoiYm9vbGVhbi5weSIgaXMgYSBzbWFsbCBsaWJyYXJ5IGltcGxlbWVudGluZyBhIGJvb2xlYW4gYWxnZWJyYS4gSXQKZGVmaW5lcyB0d28gYmFzZSBlbGVtZW50cywgVFJVRSBhbmQgRkFMU0UsIGFuZCBhIFN5bWJvbCBjbGFzcyB0aGF0IGNhbgp0YWtlIG9uIG9uZSBvZiB0aGVzZSB0d28gdmFsdWVzLiBDYWxjdWxhdGlvbnMgYXJlIGRvbmUgaW4gdGVybXMgb2YgQU5ELApPUiBhbmQgTk9UIC0gb3RoZXIgY29tcG9zaXRpb25zIGxpa2UgWE9SIGFuZCBOQU5EIGFyZSBub3QgaW1wbGVtZW50ZWQKYnV0IGNhbiBiZSBlbXVsYXRlZCB3aXRoIEFORCBvciBhbmQgTk9ULiBFeHByZXNzaW9ucyBhcmUgY29uc3RydWN0ZWQKZnJvbSBwYXJzZWQgc3RyaW5ncyBvciBpbiBQeXRob24uCgpJdCBydW5zIG9uIFB5dGhvbiAzLjYrCllvdSBjYW4gdXNlIG9sZGVyIHZlcnNpb24gMy54IGZvciBQeXRob24gMi43KyBzdXBwb3J0LgoKaHR0cHM6Ly9naXRodWIuY29tL2Jhc3Rpa3IvYm9vbGVhbi5weQoKQnVpbGQgc3RhdHVzOiB8QnVpbGQgU3RhdHVzfAoKCkV4YW1wbGUKLS0tLS0tLQoKOjoKCiAgICA+Pj4gaW1wb3J0IGJvb2xlYW4KICAgID4+PiBhbGdlYnJhID0gYm9vbGVhbi5Cb29sZWFuQWxnZWJyYSgpCiAgICA+Pj4gZXhwcmVzc2lvbjEgPSBhbGdlYnJhLnBhcnNlKHUnYXBwbGUgYW5kIChvcmFuZ2VzIG9yIGJhbmFuYSkgYW5kIG5vdCBiYW5hbmEnLCBzaW1wbGlmeT1GYWxzZSkKICAgID4+PiBleHByZXNzaW9uMQogICAgQU5EKFN5bWJvbCgnYXBwbGUnKSwgT1IoU3ltYm9sKCdvcmFuZ2VzJyksIFN5bWJvbCgnYmFuYW5hJykpLCBOT1QoU3ltYm9sKCdiYW5hbmEnKSkpCgogICAgPj4+IGV4cHJlc3Npb24yID0gYWxnZWJyYS5wYXJzZSgnKG9yYW5nZXMgfCBiYW5hbmEpIGFuZCBub3QgYmFuYW5hICYgYXBwbGUnLCBzaW1wbGlmeT1UcnVlKQogICAgPj4+IGV4cHJlc3Npb24yCiAgICBBTkQoU3ltYm9sKCdhcHBsZScpLCBOT1QoU3ltYm9sKCdiYW5hbmEnKSksIFN5bWJvbCgnb3JhbmdlcycpKQoKICAgID4+PiBleHByZXNzaW9uMSA9PSBleHByZXNzaW9uMgogICAgRmFsc2UKICAgID4+PiBleHByZXNzaW9uMS5zaW1wbGlmeSgpID09IGV4cHJlc3Npb24yCiAgICBUcnVlCgoKRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tCgpodHRwOi8vcmVhZHRoZWRvY3Mub3JnL2RvY3MvYm9vbGVhbnB5L2VuL2xhdGVzdC8KCgpJbnN0YWxsYXRpb24KLS0tLS0tLS0tLS0tCgpJbnN0YWxsYXRpb24gdmlhIHBpcAp+fn5+fn5+fn5+fn5+fn5+fn5+fgoKVG8gaW5zdGFsbCBib29sZWFuLnB5LCB5b3UgbmVlZCB0byBoYXZlIHRoZSBmb2xsb3dpbmcgcGllY2VzIG9mIHNvZnR3YXJlCm9uIHlvdXIgY29tcHV0ZXI6CgotICBQeXRob24gMy42KwotICBwaXAKCllvdSB0aGVuIG9ubHkgbmVlZCB0byBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kOgoKYGBwaXAgaW5zdGFsbCBib29sZWFuLnB5YGAKCgpJbnN0YWxsYXRpb24gdmlhIHBhY2thZ2UgbWFuYWdlcnMKfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgpUaGVyZSBhcmUgcGFja2FnZXMgYXZhaWxhYmxlIGZvciBlYXN5IGluc3RhbGwgb24gc29tZSBvcGVyYXRpbmcgc3lzdGVtcy4KWW91IGFyZSB3ZWxjb21lIHRvIGhlbHAgdXMgcGFja2FnZSB0aGlzIHRvb2wgZm9yIG1vcmUgZGlzdHJpYnV0aW9ucyEKCi0gIGJvb2xlYW4ucHkgaGFzIGJlZW4gcGFja2FnZWQgYXMgQXJjaCBMaW51eCwgRmVkb3JhLCBvcGVuU3VzLAogICBuaXhwa2dzLCBHdWl4LCBEcmFnb25GbHkgYW5kIEZyZWVCU0QgCiAgIGBwYWNrYWdlcyA8aHR0cHM6Ly9yZXBvbG9neS5vcmcvcHJvamVjdC9weXRob246Ym9vbGVhbi5weS92ZXJzaW9ucz5gX18gLgoKSW4gcGFydGljdWxhcjoKCi0gIEFyY2ggTGludXggKEFVUik6CiAgIGBweXRob24tYm9vbGVhbi5weSA8aHR0cHM6Ly9hdXIuYXJjaGxpbnV4Lm9yZy9wYWNrYWdlcy9weXRob24tYm9vbGVhbi5weS8+YF9fCi0gIEZlZG9yYToKICAgYHB5dGhvbi1ib29sZWFuLnB5IDxodHRwczovL2FwcHMuZmVkb3JhcHJvamVjdC5vcmcvcGFja2FnZXMvcHl0aG9uLWJvb2xlYW4ucHk+YF9fCi0gIG9wZW5TVVNFOgogICBgcHl0aG9uLWJvb2xlYW4ucHkgPGh0dHBzOi8vc29mdHdhcmUub3BlbnN1c2Uub3JnL3BhY2thZ2UvcHl0aG9uLWJvb2xlYW4ucHk+YF9fCgoKVGVzdGluZwotLS0tLS0tCgpUZXN0IGBgYm9vbGVhbi5weWBgIHdpdGggeW91ciBjdXJyZW50IFB5dGhvbiBlbnZpcm9ubWVudDoKCmBgcHl0aG9uIHNldHVwLnB5IHRlc3RgYAoKVGVzdCB3aXRoIGFsbCBvZiB0aGUgc3VwcG9ydGVkIFB5dGhvbiBlbnZpcm9ubWVudHMgdXNpbmcgYGB0b3hgYDoKCjo6CgogICAgcGlwIGluc3RhbGwgLXIgcmVxdWlyZW1lbnRzLWRldi50eHQKICAgIHRveAoKSWYgYGB0b3hgYCB0aHJvd3MgYGBJbnRlcnByZXRlck5vdEZvdW5kYGAsIGxpbWl0IGl0IHRvIHB5dGhvbgppbnRlcnByZXRlcnMgdGhhdCBhcmUgYWN0dWFsbHkgaW5zdGFsbGVkIG9uIHlvdXIgbWFjaGluZToKCjo6CgogICAgdG94IC1lIHB5MzYKCkFsdGVybmF0aXZlbHkgdXNlIHB5dGVzdC4KCgpMaWNlbnNlCi0tLS0tLS0KCkNvcHlyaWdodCAoYykgU2ViYXN0aWFuIEtyYWVtZXIsIGJhc3RpLmtyQGdtYWlsLmNvbSBhbmQgb3RoZXJzClNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UKCi4uIHxCdWlsZCBTdGF0dXN8IGltYWdlOjogaHR0cHM6Ly90cmF2aXMtY2kub3JnL2Jhc3Rpa3IvYm9vbGVhbi5weS5zdmc/YnJhbmNoPW1hc3RlcgogICA6dGFyZ2V0OiBodHRwczovL3RyYXZpcy1jaS5vcmcvYmFzdGlrci9ib29sZWFuLnB5Cg== pkg:pypi/boolean.py@4.0 @@ -354,6 +63,43 @@ SPDX-License-Identifier: BSD-2-Clause + + chardet + 5.2.0 + Universal encoding detector for Python 3 + + + License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+) + + + declared license file: LICENSE + ICAgICAgICAgICAgICAgICAgR05VIExFU1NFUiBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFCiAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAyLjEsIEZlYnJ1YXJ5IDE5OTkKCiBDb3B5cmlnaHQgKEMpIDE5OTEsIDE5OTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKIEV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcwogb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCgpbVGhpcyBpcyB0aGUgZmlyc3QgcmVsZWFzZWQgdmVyc2lvbiBvZiB0aGUgTGVzc2VyIEdQTC4gIEl0IGFsc28gY291bnRzCiBhcyB0aGUgc3VjY2Vzc29yIG9mIHRoZSBHTlUgTGlicmFyeSBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLCBoZW5jZQogdGhlIHZlcnNpb24gbnVtYmVyIDIuMS5dCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlYW1ibGUKCiAgVGhlIGxpY2Vuc2VzIGZvciBtb3N0IHNvZnR3YXJlIGFyZSBkZXNpZ25lZCB0byB0YWtlIGF3YXkgeW91cgpmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgaXQuICBCeSBjb250cmFzdCwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwpMaWNlbnNlcyBhcmUgaW50ZW5kZWQgdG8gZ3VhcmFudGVlIHlvdXIgZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlCmZyZWUgc29mdHdhcmUtLXRvIG1ha2Ugc3VyZSB0aGUgc29mdHdhcmUgaXMgZnJlZSBmb3IgYWxsIGl0cyB1c2Vycy4KCiAgVGhpcyBsaWNlbnNlLCB0aGUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFwcGxpZXMgdG8gc29tZQpzcGVjaWFsbHkgZGVzaWduYXRlZCBzb2Z0d2FyZSBwYWNrYWdlcy0tdHlwaWNhbGx5IGxpYnJhcmllcy0tb2YgdGhlCkZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBhbmQgb3RoZXIgYXV0aG9ycyB3aG8gZGVjaWRlIHRvIHVzZSBpdC4gIFlvdQpjYW4gdXNlIGl0IHRvbywgYnV0IHdlIHN1Z2dlc3QgeW91IGZpcnN0IHRoaW5rIGNhcmVmdWxseSBhYm91dCB3aGV0aGVyCnRoaXMgbGljZW5zZSBvciB0aGUgb3JkaW5hcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyB0aGUgYmV0dGVyCnN0cmF0ZWd5IHRvIHVzZSBpbiBhbnkgcGFydGljdWxhciBjYXNlLCBiYXNlZCBvbiB0aGUgZXhwbGFuYXRpb25zIGJlbG93LgoKICBXaGVuIHdlIHNwZWFrIG9mIGZyZWUgc29mdHdhcmUsIHdlIGFyZSByZWZlcnJpbmcgdG8gZnJlZWRvbSBvZiB1c2UsCm5vdCBwcmljZS4gIE91ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlcyBhcmUgZGVzaWduZWQgdG8gbWFrZSBzdXJlIHRoYXQKeW91IGhhdmUgdGhlIGZyZWVkb20gdG8gZGlzdHJpYnV0ZSBjb3BpZXMgb2YgZnJlZSBzb2Z0d2FyZSAoYW5kIGNoYXJnZQpmb3IgdGhpcyBzZXJ2aWNlIGlmIHlvdSB3aXNoKTsgdGhhdCB5b3UgcmVjZWl2ZSBzb3VyY2UgY29kZSBvciBjYW4gZ2V0Cml0IGlmIHlvdSB3YW50IGl0OyB0aGF0IHlvdSBjYW4gY2hhbmdlIHRoZSBzb2Z0d2FyZSBhbmQgdXNlIHBpZWNlcyBvZgppdCBpbiBuZXcgZnJlZSBwcm9ncmFtczsgYW5kIHRoYXQgeW91IGFyZSBpbmZvcm1lZCB0aGF0IHlvdSBjYW4gZG8KdGhlc2UgdGhpbmdzLgoKICBUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIG1ha2UgcmVzdHJpY3Rpb25zIHRoYXQgZm9yYmlkCmRpc3RyaWJ1dG9ycyB0byBkZW55IHlvdSB0aGVzZSByaWdodHMgb3IgdG8gYXNrIHlvdSB0byBzdXJyZW5kZXIgdGhlc2UKcmlnaHRzLiAgVGhlc2UgcmVzdHJpY3Rpb25zIHRyYW5zbGF0ZSB0byBjZXJ0YWluIHJlc3BvbnNpYmlsaXRpZXMgZm9yCnlvdSBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIGxpYnJhcnkgb3IgaWYgeW91IG1vZGlmeSBpdC4KCiAgRm9yIGV4YW1wbGUsIGlmIHlvdSBkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUgbGlicmFyeSwgd2hldGhlciBncmF0aXMKb3IgZm9yIGEgZmVlLCB5b3UgbXVzdCBnaXZlIHRoZSByZWNpcGllbnRzIGFsbCB0aGUgcmlnaHRzIHRoYXQgd2UgZ2F2ZQp5b3UuICBZb3UgbXVzdCBtYWtlIHN1cmUgdGhhdCB0aGV5LCB0b28sIHJlY2VpdmUgb3IgY2FuIGdldCB0aGUgc291cmNlCmNvZGUuICBJZiB5b3UgbGluayBvdGhlciBjb2RlIHdpdGggdGhlIGxpYnJhcnksIHlvdSBtdXN0IHByb3ZpZGUKY29tcGxldGUgb2JqZWN0IGZpbGVzIHRvIHRoZSByZWNpcGllbnRzLCBzbyB0aGF0IHRoZXkgY2FuIHJlbGluayB0aGVtCndpdGggdGhlIGxpYnJhcnkgYWZ0ZXIgbWFraW5nIGNoYW5nZXMgdG8gdGhlIGxpYnJhcnkgYW5kIHJlY29tcGlsaW5nCml0LiAgQW5kIHlvdSBtdXN0IHNob3cgdGhlbSB0aGVzZSB0ZXJtcyBzbyB0aGV5IGtub3cgdGhlaXIgcmlnaHRzLgoKICBXZSBwcm90ZWN0IHlvdXIgcmlnaHRzIHdpdGggYSB0d28tc3RlcCBtZXRob2Q6ICgxKSB3ZSBjb3B5cmlnaHQgdGhlCmxpYnJhcnksIGFuZCAoMikgd2Ugb2ZmZXIgeW91IHRoaXMgbGljZW5zZSwgd2hpY2ggZ2l2ZXMgeW91IGxlZ2FsCnBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IHRoZSBsaWJyYXJ5LgoKICBUbyBwcm90ZWN0IGVhY2ggZGlzdHJpYnV0b3IsIHdlIHdhbnQgdG8gbWFrZSBpdCB2ZXJ5IGNsZWFyIHRoYXQKdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoZSBmcmVlIGxpYnJhcnkuICBBbHNvLCBpZiB0aGUgbGlicmFyeSBpcwptb2RpZmllZCBieSBzb21lb25lIGVsc2UgYW5kIHBhc3NlZCBvbiwgdGhlIHJlY2lwaWVudHMgc2hvdWxkIGtub3cKdGhhdCB3aGF0IHRoZXkgaGF2ZSBpcyBub3QgdGhlIG9yaWdpbmFsIHZlcnNpb24sIHNvIHRoYXQgdGhlIG9yaWdpbmFsCmF1dGhvcidzIHJlcHV0YXRpb24gd2lsbCBub3QgYmUgYWZmZWN0ZWQgYnkgcHJvYmxlbXMgdGhhdCBtaWdodCBiZQppbnRyb2R1Y2VkIGJ5IG90aGVycy4KDAogIEZpbmFsbHksIHNvZnR3YXJlIHBhdGVudHMgcG9zZSBhIGNvbnN0YW50IHRocmVhdCB0byB0aGUgZXhpc3RlbmNlIG9mCmFueSBmcmVlIHByb2dyYW0uICBXZSB3aXNoIHRvIG1ha2Ugc3VyZSB0aGF0IGEgY29tcGFueSBjYW5ub3QKZWZmZWN0aXZlbHkgcmVzdHJpY3QgdGhlIHVzZXJzIG9mIGEgZnJlZSBwcm9ncmFtIGJ5IG9idGFpbmluZyBhCnJlc3RyaWN0aXZlIGxpY2Vuc2UgZnJvbSBhIHBhdGVudCBob2xkZXIuICBUaGVyZWZvcmUsIHdlIGluc2lzdCB0aGF0CmFueSBwYXRlbnQgbGljZW5zZSBvYnRhaW5lZCBmb3IgYSB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5IG11c3QgYmUKY29uc2lzdGVudCB3aXRoIHRoZSBmdWxsIGZyZWVkb20gb2YgdXNlIHNwZWNpZmllZCBpbiB0aGlzIGxpY2Vuc2UuCgogIE1vc3QgR05VIHNvZnR3YXJlLCBpbmNsdWRpbmcgc29tZSBsaWJyYXJpZXMsIGlzIGNvdmVyZWQgYnkgdGhlCm9yZGluYXJ5IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBsaWNlbnNlLCB0aGUgR05VIExlc3NlcgpHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBhcHBsaWVzIHRvIGNlcnRhaW4gZGVzaWduYXRlZCBsaWJyYXJpZXMsIGFuZAppcyBxdWl0ZSBkaWZmZXJlbnQgZnJvbSB0aGUgb3JkaW5hcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFdlIHVzZQp0aGlzIGxpY2Vuc2UgZm9yIGNlcnRhaW4gbGlicmFyaWVzIGluIG9yZGVyIHRvIHBlcm1pdCBsaW5raW5nIHRob3NlCmxpYnJhcmllcyBpbnRvIG5vbi1mcmVlIHByb2dyYW1zLgoKICBXaGVuIGEgcHJvZ3JhbSBpcyBsaW5rZWQgd2l0aCBhIGxpYnJhcnksIHdoZXRoZXIgc3RhdGljYWxseSBvciB1c2luZwphIHNoYXJlZCBsaWJyYXJ5LCB0aGUgY29tYmluYXRpb24gb2YgdGhlIHR3byBpcyBsZWdhbGx5IHNwZWFraW5nIGEKY29tYmluZWQgd29yaywgYSBkZXJpdmF0aXZlIG9mIHRoZSBvcmlnaW5hbCBsaWJyYXJ5LiAgVGhlIG9yZGluYXJ5CkdlbmVyYWwgUHVibGljIExpY2Vuc2UgdGhlcmVmb3JlIHBlcm1pdHMgc3VjaCBsaW5raW5nIG9ubHkgaWYgdGhlCmVudGlyZSBjb21iaW5hdGlvbiBmaXRzIGl0cyBjcml0ZXJpYSBvZiBmcmVlZG9tLiAgVGhlIExlc3NlciBHZW5lcmFsClB1YmxpYyBMaWNlbnNlIHBlcm1pdHMgbW9yZSBsYXggY3JpdGVyaWEgZm9yIGxpbmtpbmcgb3RoZXIgY29kZSB3aXRoCnRoZSBsaWJyYXJ5LgoKICBXZSBjYWxsIHRoaXMgbGljZW5zZSB0aGUgIkxlc3NlciIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBiZWNhdXNlIGl0CmRvZXMgTGVzcyB0byBwcm90ZWN0IHRoZSB1c2VyJ3MgZnJlZWRvbSB0aGFuIHRoZSBvcmRpbmFyeSBHZW5lcmFsClB1YmxpYyBMaWNlbnNlLiAgSXQgYWxzbyBwcm92aWRlcyBvdGhlciBmcmVlIHNvZnR3YXJlIGRldmVsb3BlcnMgTGVzcwpvZiBhbiBhZHZhbnRhZ2Ugb3ZlciBjb21wZXRpbmcgbm9uLWZyZWUgcHJvZ3JhbXMuICBUaGVzZSBkaXNhZHZhbnRhZ2VzCmFyZSB0aGUgcmVhc29uIHdlIHVzZSB0aGUgb3JkaW5hcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbWFueQpsaWJyYXJpZXMuICBIb3dldmVyLCB0aGUgTGVzc2VyIGxpY2Vuc2UgcHJvdmlkZXMgYWR2YW50YWdlcyBpbiBjZXJ0YWluCnNwZWNpYWwgY2lyY3Vtc3RhbmNlcy4KCiAgRm9yIGV4YW1wbGUsIG9uIHJhcmUgb2NjYXNpb25zLCB0aGVyZSBtYXkgYmUgYSBzcGVjaWFsIG5lZWQgdG8KZW5jb3VyYWdlIHRoZSB3aWRlc3QgcG9zc2libGUgdXNlIG9mIGEgY2VydGFpbiBsaWJyYXJ5LCBzbyB0aGF0IGl0IGJlY29tZXMKYSBkZS1mYWN0byBzdGFuZGFyZC4gIFRvIGFjaGlldmUgdGhpcywgbm9uLWZyZWUgcHJvZ3JhbXMgbXVzdCBiZQphbGxvd2VkIHRvIHVzZSB0aGUgbGlicmFyeS4gIEEgbW9yZSBmcmVxdWVudCBjYXNlIGlzIHRoYXQgYSBmcmVlCmxpYnJhcnkgZG9lcyB0aGUgc2FtZSBqb2IgYXMgd2lkZWx5IHVzZWQgbm9uLWZyZWUgbGlicmFyaWVzLiAgSW4gdGhpcwpjYXNlLCB0aGVyZSBpcyBsaXR0bGUgdG8gZ2FpbiBieSBsaW1pdGluZyB0aGUgZnJlZSBsaWJyYXJ5IHRvIGZyZWUKc29mdHdhcmUgb25seSwgc28gd2UgdXNlIHRoZSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KCiAgSW4gb3RoZXIgY2FzZXMsIHBlcm1pc3Npb24gdG8gdXNlIGEgcGFydGljdWxhciBsaWJyYXJ5IGluIG5vbi1mcmVlCnByb2dyYW1zIGVuYWJsZXMgYSBncmVhdGVyIG51bWJlciBvZiBwZW9wbGUgdG8gdXNlIGEgbGFyZ2UgYm9keSBvZgpmcmVlIHNvZnR3YXJlLiAgRm9yIGV4YW1wbGUsIHBlcm1pc3Npb24gdG8gdXNlIHRoZSBHTlUgQyBMaWJyYXJ5IGluCm5vbi1mcmVlIHByb2dyYW1zIGVuYWJsZXMgbWFueSBtb3JlIHBlb3BsZSB0byB1c2UgdGhlIHdob2xlIEdOVQpvcGVyYXRpbmcgc3lzdGVtLCBhcyB3ZWxsIGFzIGl0cyB2YXJpYW50LCB0aGUgR05VL0xpbnV4IG9wZXJhdGluZwpzeXN0ZW0uCgogIEFsdGhvdWdoIHRoZSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBMZXNzIHByb3RlY3RpdmUgb2YgdGhlCnVzZXJzJyBmcmVlZG9tLCBpdCBkb2VzIGVuc3VyZSB0aGF0IHRoZSB1c2VyIG9mIGEgcHJvZ3JhbSB0aGF0IGlzCmxpbmtlZCB3aXRoIHRoZSBMaWJyYXJ5IGhhcyB0aGUgZnJlZWRvbSBhbmQgdGhlIHdoZXJld2l0aGFsIHRvIHJ1bgp0aGF0IHByb2dyYW0gdXNpbmcgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBMaWJyYXJ5LgoKICBUaGUgcHJlY2lzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW9uIGFuZAptb2RpZmljYXRpb24gZm9sbG93LiAgUGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGEKIndvcmsgYmFzZWQgb24gdGhlIGxpYnJhcnkiIGFuZCBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgbGlicmFyeSIuICBUaGUKZm9ybWVyIGNvbnRhaW5zIGNvZGUgZGVyaXZlZCBmcm9tIHRoZSBsaWJyYXJ5LCB3aGVyZWFzIHRoZSBsYXR0ZXIgbXVzdApiZSBjb21iaW5lZCB3aXRoIHRoZSBsaWJyYXJ5IGluIG9yZGVyIHRvIHJ1bi4KDAogICAgICAgICAgICAgICAgICBHTlUgTEVTU0VSIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKICAgVEVSTVMgQU5EIENPTkRJVElPTlMgRk9SIENPUFlJTkcsIERJU1RSSUJVVElPTiBBTkQgTU9ESUZJQ0FUSU9OCgogIDAuIFRoaXMgTGljZW5zZSBBZ3JlZW1lbnQgYXBwbGllcyB0byBhbnkgc29mdHdhcmUgbGlicmFyeSBvciBvdGhlcgpwcm9ncmFtIHdoaWNoIGNvbnRhaW5zIGEgbm90aWNlIHBsYWNlZCBieSB0aGUgY29weXJpZ2h0IGhvbGRlciBvcgpvdGhlciBhdXRob3JpemVkIHBhcnR5IHNheWluZyBpdCBtYXkgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mCnRoaXMgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKGFsc28gY2FsbGVkICJ0aGlzIExpY2Vuc2UiKS4KRWFjaCBsaWNlbnNlZSBpcyBhZGRyZXNzZWQgYXMgInlvdSIuCgogIEEgImxpYnJhcnkiIG1lYW5zIGEgY29sbGVjdGlvbiBvZiBzb2Z0d2FyZSBmdW5jdGlvbnMgYW5kL29yIGRhdGEKcHJlcGFyZWQgc28gYXMgdG8gYmUgY29udmVuaWVudGx5IGxpbmtlZCB3aXRoIGFwcGxpY2F0aW9uIHByb2dyYW1zCih3aGljaCB1c2Ugc29tZSBvZiB0aG9zZSBmdW5jdGlvbnMgYW5kIGRhdGEpIHRvIGZvcm0gZXhlY3V0YWJsZXMuCgogIFRoZSAiTGlicmFyeSIsIGJlbG93LCByZWZlcnMgdG8gYW55IHN1Y2ggc29mdHdhcmUgbGlicmFyeSBvciB3b3JrCndoaWNoIGhhcyBiZWVuIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZXNlIHRlcm1zLiAgQSAid29yayBiYXNlZCBvbiB0aGUKTGlicmFyeSIgbWVhbnMgZWl0aGVyIHRoZSBMaWJyYXJ5IG9yIGFueSBkZXJpdmF0aXZlIHdvcmsgdW5kZXIKY29weXJpZ2h0IGxhdzogdGhhdCBpcyB0byBzYXksIGEgd29yayBjb250YWluaW5nIHRoZSBMaWJyYXJ5IG9yIGEKcG9ydGlvbiBvZiBpdCwgZWl0aGVyIHZlcmJhdGltIG9yIHdpdGggbW9kaWZpY2F0aW9ucyBhbmQvb3IgdHJhbnNsYXRlZApzdHJhaWdodGZvcndhcmRseSBpbnRvIGFub3RoZXIgbGFuZ3VhZ2UuICAoSGVyZWluYWZ0ZXIsIHRyYW5zbGF0aW9uIGlzCmluY2x1ZGVkIHdpdGhvdXQgbGltaXRhdGlvbiBpbiB0aGUgdGVybSAibW9kaWZpY2F0aW9uIi4pCgogICJTb3VyY2UgY29kZSIgZm9yIGEgd29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsgZm9yCm1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgRm9yIGEgbGlicmFyeSwgY29tcGxldGUgc291cmNlIGNvZGUgbWVhbnMKYWxsIHRoZSBzb3VyY2UgY29kZSBmb3IgYWxsIG1vZHVsZXMgaXQgY29udGFpbnMsIHBsdXMgYW55IGFzc29jaWF0ZWQKaW50ZXJmYWNlIGRlZmluaXRpb24gZmlsZXMsIHBsdXMgdGhlIHNjcmlwdHMgdXNlZCB0byBjb250cm9sIGNvbXBpbGF0aW9uCmFuZCBpbnN0YWxsYXRpb24gb2YgdGhlIGxpYnJhcnkuCgogIEFjdGl2aXRpZXMgb3RoZXIgdGhhbiBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kIG1vZGlmaWNhdGlvbiBhcmUgbm90CmNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlOyB0aGV5IGFyZSBvdXRzaWRlIGl0cyBzY29wZS4gIFRoZSBhY3Qgb2YKcnVubmluZyBhIHByb2dyYW0gdXNpbmcgdGhlIExpYnJhcnkgaXMgbm90IHJlc3RyaWN0ZWQsIGFuZCBvdXRwdXQgZnJvbQpzdWNoIGEgcHJvZ3JhbSBpcyBjb3ZlcmVkIG9ubHkgaWYgaXRzIGNvbnRlbnRzIGNvbnN0aXR1dGUgYSB3b3JrIGJhc2VkCm9uIHRoZSBMaWJyYXJ5IChpbmRlcGVuZGVudCBvZiB0aGUgdXNlIG9mIHRoZSBMaWJyYXJ5IGluIGEgdG9vbCBmb3IKd3JpdGluZyBpdCkuICBXaGV0aGVyIHRoYXQgaXMgdHJ1ZSBkZXBlbmRzIG9uIHdoYXQgdGhlIExpYnJhcnkgZG9lcwphbmQgd2hhdCB0aGUgcHJvZ3JhbSB0aGF0IHVzZXMgdGhlIExpYnJhcnkgZG9lcy4KCiAgMS4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcyBvZiB0aGUgTGlicmFyeSdzCmNvbXBsZXRlIHNvdXJjZSBjb2RlIGFzIHlvdSByZWNlaXZlIGl0LCBpbiBhbnkgbWVkaXVtLCBwcm92aWRlZCB0aGF0CnlvdSBjb25zcGljdW91c2x5IGFuZCBhcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuCmFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2UgYW5kIGRpc2NsYWltZXIgb2Ygd2FycmFudHk7IGtlZXAgaW50YWN0CmFsbCB0aGUgbm90aWNlcyB0aGF0IHJlZmVyIHRvIHRoaXMgTGljZW5zZSBhbmQgdG8gdGhlIGFic2VuY2Ugb2YgYW55CndhcnJhbnR5OyBhbmQgZGlzdHJpYnV0ZSBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlIGFsb25nIHdpdGggdGhlCkxpYnJhcnkuCgogIFlvdSBtYXkgY2hhcmdlIGEgZmVlIGZvciB0aGUgcGh5c2ljYWwgYWN0IG9mIHRyYW5zZmVycmluZyBhIGNvcHksCmFuZCB5b3UgbWF5IGF0IHlvdXIgb3B0aW9uIG9mZmVyIHdhcnJhbnR5IHByb3RlY3Rpb24gaW4gZXhjaGFuZ2UgZm9yIGEKZmVlLgoMCiAgMi4gWW91IG1heSBtb2RpZnkgeW91ciBjb3B5IG9yIGNvcGllcyBvZiB0aGUgTGlicmFyeSBvciBhbnkgcG9ydGlvbgpvZiBpdCwgdGh1cyBmb3JtaW5nIGEgd29yayBiYXNlZCBvbiB0aGUgTGlicmFyeSwgYW5kIGNvcHkgYW5kCmRpc3RyaWJ1dGUgc3VjaCBtb2RpZmljYXRpb25zIG9yIHdvcmsgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb24gMQphYm92ZSwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBtZWV0IGFsbCBvZiB0aGVzZSBjb25kaXRpb25zOgoKICAgIGEpIFRoZSBtb2RpZmllZCB3b3JrIG11c3QgaXRzZWxmIGJlIGEgc29mdHdhcmUgbGlicmFyeS4KCiAgICBiKSBZb3UgbXVzdCBjYXVzZSB0aGUgZmlsZXMgbW9kaWZpZWQgdG8gY2FycnkgcHJvbWluZW50IG5vdGljZXMKICAgIHN0YXRpbmcgdGhhdCB5b3UgY2hhbmdlZCB0aGUgZmlsZXMgYW5kIHRoZSBkYXRlIG9mIGFueSBjaGFuZ2UuCgogICAgYykgWW91IG11c3QgY2F1c2UgdGhlIHdob2xlIG9mIHRoZSB3b3JrIHRvIGJlIGxpY2Vuc2VkIGF0IG5vCiAgICBjaGFyZ2UgdG8gYWxsIHRoaXJkIHBhcnRpZXMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZS4KCiAgICBkKSBJZiBhIGZhY2lsaXR5IGluIHRoZSBtb2RpZmllZCBMaWJyYXJ5IHJlZmVycyB0byBhIGZ1bmN0aW9uIG9yIGEKICAgIHRhYmxlIG9mIGRhdGEgdG8gYmUgc3VwcGxpZWQgYnkgYW4gYXBwbGljYXRpb24gcHJvZ3JhbSB0aGF0IHVzZXMKICAgIHRoZSBmYWNpbGl0eSwgb3RoZXIgdGhhbiBhcyBhbiBhcmd1bWVudCBwYXNzZWQgd2hlbiB0aGUgZmFjaWxpdHkKICAgIGlzIGludm9rZWQsIHRoZW4geW91IG11c3QgbWFrZSBhIGdvb2QgZmFpdGggZWZmb3J0IHRvIGVuc3VyZSB0aGF0LAogICAgaW4gdGhlIGV2ZW50IGFuIGFwcGxpY2F0aW9uIGRvZXMgbm90IHN1cHBseSBzdWNoIGZ1bmN0aW9uIG9yCiAgICB0YWJsZSwgdGhlIGZhY2lsaXR5IHN0aWxsIG9wZXJhdGVzLCBhbmQgcGVyZm9ybXMgd2hhdGV2ZXIgcGFydCBvZgogICAgaXRzIHB1cnBvc2UgcmVtYWlucyBtZWFuaW5nZnVsLgoKICAgIChGb3IgZXhhbXBsZSwgYSBmdW5jdGlvbiBpbiBhIGxpYnJhcnkgdG8gY29tcHV0ZSBzcXVhcmUgcm9vdHMgaGFzCiAgICBhIHB1cnBvc2UgdGhhdCBpcyBlbnRpcmVseSB3ZWxsLWRlZmluZWQgaW5kZXBlbmRlbnQgb2YgdGhlCiAgICBhcHBsaWNhdGlvbi4gIFRoZXJlZm9yZSwgU3Vic2VjdGlvbiAyZCByZXF1aXJlcyB0aGF0IGFueQogICAgYXBwbGljYXRpb24tc3VwcGxpZWQgZnVuY3Rpb24gb3IgdGFibGUgdXNlZCBieSB0aGlzIGZ1bmN0aW9uIG11c3QKICAgIGJlIG9wdGlvbmFsOiBpZiB0aGUgYXBwbGljYXRpb24gZG9lcyBub3Qgc3VwcGx5IGl0LCB0aGUgc3F1YXJlCiAgICByb290IGZ1bmN0aW9uIG11c3Qgc3RpbGwgY29tcHV0ZSBzcXVhcmUgcm9vdHMuKQoKVGhlc2UgcmVxdWlyZW1lbnRzIGFwcGx5IHRvIHRoZSBtb2RpZmllZCB3b3JrIGFzIGEgd2hvbGUuICBJZgppZGVudGlmaWFibGUgc2VjdGlvbnMgb2YgdGhhdCB3b3JrIGFyZSBub3QgZGVyaXZlZCBmcm9tIHRoZSBMaWJyYXJ5LAphbmQgY2FuIGJlIHJlYXNvbmFibHkgY29uc2lkZXJlZCBpbmRlcGVuZGVudCBhbmQgc2VwYXJhdGUgd29ya3MgaW4KdGhlbXNlbHZlcywgdGhlbiB0aGlzIExpY2Vuc2UsIGFuZCBpdHMgdGVybXMsIGRvIG5vdCBhcHBseSB0byB0aG9zZQpzZWN0aW9ucyB3aGVuIHlvdSBkaXN0cmlidXRlIHRoZW0gYXMgc2VwYXJhdGUgd29ya3MuICBCdXQgd2hlbiB5b3UKZGlzdHJpYnV0ZSB0aGUgc2FtZSBzZWN0aW9ucyBhcyBwYXJ0IG9mIGEgd2hvbGUgd2hpY2ggaXMgYSB3b3JrIGJhc2VkCm9uIHRoZSBMaWJyYXJ5LCB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSB3aG9sZSBtdXN0IGJlIG9uIHRoZSB0ZXJtcyBvZgp0aGlzIExpY2Vuc2UsIHdob3NlIHBlcm1pc3Npb25zIGZvciBvdGhlciBsaWNlbnNlZXMgZXh0ZW5kIHRvIHRoZQplbnRpcmUgd2hvbGUsIGFuZCB0aHVzIHRvIGVhY2ggYW5kIGV2ZXJ5IHBhcnQgcmVnYXJkbGVzcyBvZiB3aG8gd3JvdGUKaXQuCgpUaHVzLCBpdCBpcyBub3QgdGhlIGludGVudCBvZiB0aGlzIHNlY3Rpb24gdG8gY2xhaW0gcmlnaHRzIG9yIGNvbnRlc3QKeW91ciByaWdodHMgdG8gd29yayB3cml0dGVuIGVudGlyZWx5IGJ5IHlvdTsgcmF0aGVyLCB0aGUgaW50ZW50IGlzIHRvCmV4ZXJjaXNlIHRoZSByaWdodCB0byBjb250cm9sIHRoZSBkaXN0cmlidXRpb24gb2YgZGVyaXZhdGl2ZSBvcgpjb2xsZWN0aXZlIHdvcmtzIGJhc2VkIG9uIHRoZSBMaWJyYXJ5LgoKSW4gYWRkaXRpb24sIG1lcmUgYWdncmVnYXRpb24gb2YgYW5vdGhlciB3b3JrIG5vdCBiYXNlZCBvbiB0aGUgTGlicmFyeQp3aXRoIHRoZSBMaWJyYXJ5IChvciB3aXRoIGEgd29yayBiYXNlZCBvbiB0aGUgTGlicmFyeSkgb24gYSB2b2x1bWUgb2YKYSBzdG9yYWdlIG9yIGRpc3RyaWJ1dGlvbiBtZWRpdW0gZG9lcyBub3QgYnJpbmcgdGhlIG90aGVyIHdvcmsgdW5kZXIKdGhlIHNjb3BlIG9mIHRoaXMgTGljZW5zZS4KCiAgMy4gWW91IG1heSBvcHQgdG8gYXBwbHkgdGhlIHRlcm1zIG9mIHRoZSBvcmRpbmFyeSBHTlUgR2VuZXJhbCBQdWJsaWMKTGljZW5zZSBpbnN0ZWFkIG9mIHRoaXMgTGljZW5zZSB0byBhIGdpdmVuIGNvcHkgb2YgdGhlIExpYnJhcnkuICBUbyBkbwp0aGlzLCB5b3UgbXVzdCBhbHRlciBhbGwgdGhlIG5vdGljZXMgdGhhdCByZWZlciB0byB0aGlzIExpY2Vuc2UsIHNvCnRoYXQgdGhleSByZWZlciB0byB0aGUgb3JkaW5hcnkgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMiwKaW5zdGVhZCBvZiB0byB0aGlzIExpY2Vuc2UuICAoSWYgYSBuZXdlciB2ZXJzaW9uIHRoYW4gdmVyc2lvbiAyIG9mIHRoZQpvcmRpbmFyeSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBoYXMgYXBwZWFyZWQsIHRoZW4geW91IGNhbiBzcGVjaWZ5CnRoYXQgdmVyc2lvbiBpbnN0ZWFkIGlmIHlvdSB3aXNoLikgIERvIG5vdCBtYWtlIGFueSBvdGhlciBjaGFuZ2UgaW4KdGhlc2Ugbm90aWNlcy4KDAogIE9uY2UgdGhpcyBjaGFuZ2UgaXMgbWFkZSBpbiBhIGdpdmVuIGNvcHksIGl0IGlzIGlycmV2ZXJzaWJsZSBmb3IKdGhhdCBjb3B5LCBzbyB0aGUgb3JkaW5hcnkgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXBwbGllcyB0byBhbGwKc3Vic2VxdWVudCBjb3BpZXMgYW5kIGRlcml2YXRpdmUgd29ya3MgbWFkZSBmcm9tIHRoYXQgY29weS4KCiAgVGhpcyBvcHRpb24gaXMgdXNlZnVsIHdoZW4geW91IHdpc2ggdG8gY29weSBwYXJ0IG9mIHRoZSBjb2RlIG9mCnRoZSBMaWJyYXJ5IGludG8gYSBwcm9ncmFtIHRoYXQgaXMgbm90IGEgbGlicmFyeS4KCiAgNC4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IChvciBhIHBvcnRpb24gb3IKZGVyaXZhdGl2ZSBvZiBpdCwgdW5kZXIgU2VjdGlvbiAyKSBpbiBvYmplY3QgY29kZSBvciBleGVjdXRhYmxlIGZvcm0KdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zIDEgYW5kIDIgYWJvdmUgcHJvdmlkZWQgdGhhdCB5b3UgYWNjb21wYW55Cml0IHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcgbWFjaGluZS1yZWFkYWJsZSBzb3VyY2UgY29kZSwgd2hpY2gKbXVzdCBiZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBvbiBhCm1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZS4KCiAgSWYgZGlzdHJpYnV0aW9uIG9mIG9iamVjdCBjb2RlIGlzIG1hZGUgYnkgb2ZmZXJpbmcgYWNjZXNzIHRvIGNvcHkKZnJvbSBhIGRlc2lnbmF0ZWQgcGxhY2UsIHRoZW4gb2ZmZXJpbmcgZXF1aXZhbGVudCBhY2Nlc3MgdG8gY29weSB0aGUKc291cmNlIGNvZGUgZnJvbSB0aGUgc2FtZSBwbGFjZSBzYXRpc2ZpZXMgdGhlIHJlcXVpcmVtZW50IHRvCmRpc3RyaWJ1dGUgdGhlIHNvdXJjZSBjb2RlLCBldmVuIHRob3VnaCB0aGlyZCBwYXJ0aWVzIGFyZSBub3QKY29tcGVsbGVkIHRvIGNvcHkgdGhlIHNvdXJjZSBhbG9uZyB3aXRoIHRoZSBvYmplY3QgY29kZS4KCiAgNS4gQSBwcm9ncmFtIHRoYXQgY29udGFpbnMgbm8gZGVyaXZhdGl2ZSBvZiBhbnkgcG9ydGlvbiBvZiB0aGUKTGlicmFyeSwgYnV0IGlzIGRlc2lnbmVkIHRvIHdvcmsgd2l0aCB0aGUgTGlicmFyeSBieSBiZWluZyBjb21waWxlZCBvcgpsaW5rZWQgd2l0aCBpdCwgaXMgY2FsbGVkIGEgIndvcmsgdGhhdCB1c2VzIHRoZSBMaWJyYXJ5Ii4gIFN1Y2ggYQp3b3JrLCBpbiBpc29sYXRpb24sIGlzIG5vdCBhIGRlcml2YXRpdmUgd29yayBvZiB0aGUgTGlicmFyeSwgYW5kCnRoZXJlZm9yZSBmYWxscyBvdXRzaWRlIHRoZSBzY29wZSBvZiB0aGlzIExpY2Vuc2UuCgogIEhvd2V2ZXIsIGxpbmtpbmcgYSAid29yayB0aGF0IHVzZXMgdGhlIExpYnJhcnkiIHdpdGggdGhlIExpYnJhcnkKY3JlYXRlcyBhbiBleGVjdXRhYmxlIHRoYXQgaXMgYSBkZXJpdmF0aXZlIG9mIHRoZSBMaWJyYXJ5IChiZWNhdXNlIGl0CmNvbnRhaW5zIHBvcnRpb25zIG9mIHRoZSBMaWJyYXJ5KSwgcmF0aGVyIHRoYW4gYSAid29yayB0aGF0IHVzZXMgdGhlCmxpYnJhcnkiLiAgVGhlIGV4ZWN1dGFibGUgaXMgdGhlcmVmb3JlIGNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlLgpTZWN0aW9uIDYgc3RhdGVzIHRlcm1zIGZvciBkaXN0cmlidXRpb24gb2Ygc3VjaCBleGVjdXRhYmxlcy4KCiAgV2hlbiBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgTGlicmFyeSIgdXNlcyBtYXRlcmlhbCBmcm9tIGEgaGVhZGVyIGZpbGUKdGhhdCBpcyBwYXJ0IG9mIHRoZSBMaWJyYXJ5LCB0aGUgb2JqZWN0IGNvZGUgZm9yIHRoZSB3b3JrIG1heSBiZSBhCmRlcml2YXRpdmUgd29yayBvZiB0aGUgTGlicmFyeSBldmVuIHRob3VnaCB0aGUgc291cmNlIGNvZGUgaXMgbm90LgpXaGV0aGVyIHRoaXMgaXMgdHJ1ZSBpcyBlc3BlY2lhbGx5IHNpZ25pZmljYW50IGlmIHRoZSB3b3JrIGNhbiBiZQpsaW5rZWQgd2l0aG91dCB0aGUgTGlicmFyeSwgb3IgaWYgdGhlIHdvcmsgaXMgaXRzZWxmIGEgbGlicmFyeS4gIFRoZQp0aHJlc2hvbGQgZm9yIHRoaXMgdG8gYmUgdHJ1ZSBpcyBub3QgcHJlY2lzZWx5IGRlZmluZWQgYnkgbGF3LgoKICBJZiBzdWNoIGFuIG9iamVjdCBmaWxlIHVzZXMgb25seSBudW1lcmljYWwgcGFyYW1ldGVycywgZGF0YQpzdHJ1Y3R1cmUgbGF5b3V0cyBhbmQgYWNjZXNzb3JzLCBhbmQgc21hbGwgbWFjcm9zIGFuZCBzbWFsbCBpbmxpbmUKZnVuY3Rpb25zICh0ZW4gbGluZXMgb3IgbGVzcyBpbiBsZW5ndGgpLCB0aGVuIHRoZSB1c2Ugb2YgdGhlIG9iamVjdApmaWxlIGlzIHVucmVzdHJpY3RlZCwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGlzIGxlZ2FsbHkgYSBkZXJpdmF0aXZlCndvcmsuICAoRXhlY3V0YWJsZXMgY29udGFpbmluZyB0aGlzIG9iamVjdCBjb2RlIHBsdXMgcG9ydGlvbnMgb2YgdGhlCkxpYnJhcnkgd2lsbCBzdGlsbCBmYWxsIHVuZGVyIFNlY3Rpb24gNi4pCgogIE90aGVyd2lzZSwgaWYgdGhlIHdvcmsgaXMgYSBkZXJpdmF0aXZlIG9mIHRoZSBMaWJyYXJ5LCB5b3UgbWF5CmRpc3RyaWJ1dGUgdGhlIG9iamVjdCBjb2RlIGZvciB0aGUgd29yayB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbiA2LgpBbnkgZXhlY3V0YWJsZXMgY29udGFpbmluZyB0aGF0IHdvcmsgYWxzbyBmYWxsIHVuZGVyIFNlY3Rpb24gNiwKd2hldGhlciBvciBub3QgdGhleSBhcmUgbGlua2VkIGRpcmVjdGx5IHdpdGggdGhlIExpYnJhcnkgaXRzZWxmLgoMCiAgNi4gQXMgYW4gZXhjZXB0aW9uIHRvIHRoZSBTZWN0aW9ucyBhYm92ZSwgeW91IG1heSBhbHNvIGNvbWJpbmUgb3IKbGluayBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgTGlicmFyeSIgd2l0aCB0aGUgTGlicmFyeSB0byBwcm9kdWNlIGEKd29yayBjb250YWluaW5nIHBvcnRpb25zIG9mIHRoZSBMaWJyYXJ5LCBhbmQgZGlzdHJpYnV0ZSB0aGF0IHdvcmsKdW5kZXIgdGVybXMgb2YgeW91ciBjaG9pY2UsIHByb3ZpZGVkIHRoYXQgdGhlIHRlcm1zIHBlcm1pdAptb2RpZmljYXRpb24gb2YgdGhlIHdvcmsgZm9yIHRoZSBjdXN0b21lcidzIG93biB1c2UgYW5kIHJldmVyc2UKZW5naW5lZXJpbmcgZm9yIGRlYnVnZ2luZyBzdWNoIG1vZGlmaWNhdGlvbnMuCgogIFlvdSBtdXN0IGdpdmUgcHJvbWluZW50IG5vdGljZSB3aXRoIGVhY2ggY29weSBvZiB0aGUgd29yayB0aGF0IHRoZQpMaWJyYXJ5IGlzIHVzZWQgaW4gaXQgYW5kIHRoYXQgdGhlIExpYnJhcnkgYW5kIGl0cyB1c2UgYXJlIGNvdmVyZWQgYnkKdGhpcyBMaWNlbnNlLiAgWW91IG11c3Qgc3VwcGx5IGEgY29weSBvZiB0aGlzIExpY2Vuc2UuICBJZiB0aGUgd29yawpkdXJpbmcgZXhlY3V0aW9uIGRpc3BsYXlzIGNvcHlyaWdodCBub3RpY2VzLCB5b3UgbXVzdCBpbmNsdWRlIHRoZQpjb3B5cmlnaHQgbm90aWNlIGZvciB0aGUgTGlicmFyeSBhbW9uZyB0aGVtLCBhcyB3ZWxsIGFzIGEgcmVmZXJlbmNlCmRpcmVjdGluZyB0aGUgdXNlciB0byB0aGUgY29weSBvZiB0aGlzIExpY2Vuc2UuICBBbHNvLCB5b3UgbXVzdCBkbyBvbmUKb2YgdGhlc2UgdGhpbmdzOgoKICAgIGEpIEFjY29tcGFueSB0aGUgd29yayB3aXRoIHRoZSBjb21wbGV0ZSBjb3JyZXNwb25kaW5nCiAgICBtYWNoaW5lLXJlYWRhYmxlIHNvdXJjZSBjb2RlIGZvciB0aGUgTGlicmFyeSBpbmNsdWRpbmcgd2hhdGV2ZXIKICAgIGNoYW5nZXMgd2VyZSB1c2VkIGluIHRoZSB3b3JrICh3aGljaCBtdXN0IGJlIGRpc3RyaWJ1dGVkIHVuZGVyCiAgICBTZWN0aW9ucyAxIGFuZCAyIGFib3ZlKTsgYW5kLCBpZiB0aGUgd29yayBpcyBhbiBleGVjdXRhYmxlIGxpbmtlZAogICAgd2l0aCB0aGUgTGlicmFyeSwgd2l0aCB0aGUgY29tcGxldGUgbWFjaGluZS1yZWFkYWJsZSAid29yayB0aGF0CiAgICB1c2VzIHRoZSBMaWJyYXJ5IiwgYXMgb2JqZWN0IGNvZGUgYW5kL29yIHNvdXJjZSBjb2RlLCBzbyB0aGF0IHRoZQogICAgdXNlciBjYW4gbW9kaWZ5IHRoZSBMaWJyYXJ5IGFuZCB0aGVuIHJlbGluayB0byBwcm9kdWNlIGEgbW9kaWZpZWQKICAgIGV4ZWN1dGFibGUgY29udGFpbmluZyB0aGUgbW9kaWZpZWQgTGlicmFyeS4gIChJdCBpcyB1bmRlcnN0b29kCiAgICB0aGF0IHRoZSB1c2VyIHdobyBjaGFuZ2VzIHRoZSBjb250ZW50cyBvZiBkZWZpbml0aW9ucyBmaWxlcyBpbiB0aGUKICAgIExpYnJhcnkgd2lsbCBub3QgbmVjZXNzYXJpbHkgYmUgYWJsZSB0byByZWNvbXBpbGUgdGhlIGFwcGxpY2F0aW9uCiAgICB0byB1c2UgdGhlIG1vZGlmaWVkIGRlZmluaXRpb25zLikKCiAgICBiKSBVc2UgYSBzdWl0YWJsZSBzaGFyZWQgbGlicmFyeSBtZWNoYW5pc20gZm9yIGxpbmtpbmcgd2l0aCB0aGUKICAgIExpYnJhcnkuICBBIHN1aXRhYmxlIG1lY2hhbmlzbSBpcyBvbmUgdGhhdCAoMSkgdXNlcyBhdCBydW4gdGltZSBhCiAgICBjb3B5IG9mIHRoZSBsaWJyYXJ5IGFscmVhZHkgcHJlc2VudCBvbiB0aGUgdXNlcidzIGNvbXB1dGVyIHN5c3RlbSwKICAgIHJhdGhlciB0aGFuIGNvcHlpbmcgbGlicmFyeSBmdW5jdGlvbnMgaW50byB0aGUgZXhlY3V0YWJsZSwgYW5kICgyKQogICAgd2lsbCBvcGVyYXRlIHByb3Blcmx5IHdpdGggYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCBpZgogICAgdGhlIHVzZXIgaW5zdGFsbHMgb25lLCBhcyBsb25nIGFzIHRoZSBtb2RpZmllZCB2ZXJzaW9uIGlzCiAgICBpbnRlcmZhY2UtY29tcGF0aWJsZSB3aXRoIHRoZSB2ZXJzaW9uIHRoYXQgdGhlIHdvcmsgd2FzIG1hZGUgd2l0aC4KCiAgICBjKSBBY2NvbXBhbnkgdGhlIHdvcmsgd2l0aCBhIHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZvciBhdAogICAgbGVhc3QgdGhyZWUgeWVhcnMsIHRvIGdpdmUgdGhlIHNhbWUgdXNlciB0aGUgbWF0ZXJpYWxzCiAgICBzcGVjaWZpZWQgaW4gU3Vic2VjdGlvbiA2YSwgYWJvdmUsIGZvciBhIGNoYXJnZSBubyBtb3JlCiAgICB0aGFuIHRoZSBjb3N0IG9mIHBlcmZvcm1pbmcgdGhpcyBkaXN0cmlidXRpb24uCgogICAgZCkgSWYgZGlzdHJpYnV0aW9uIG9mIHRoZSB3b3JrIGlzIG1hZGUgYnkgb2ZmZXJpbmcgYWNjZXNzIHRvIGNvcHkKICAgIGZyb20gYSBkZXNpZ25hdGVkIHBsYWNlLCBvZmZlciBlcXVpdmFsZW50IGFjY2VzcyB0byBjb3B5IHRoZSBhYm92ZQogICAgc3BlY2lmaWVkIG1hdGVyaWFscyBmcm9tIHRoZSBzYW1lIHBsYWNlLgoKICAgIGUpIFZlcmlmeSB0aGF0IHRoZSB1c2VyIGhhcyBhbHJlYWR5IHJlY2VpdmVkIGEgY29weSBvZiB0aGVzZQogICAgbWF0ZXJpYWxzIG9yIHRoYXQgeW91IGhhdmUgYWxyZWFkeSBzZW50IHRoaXMgdXNlciBhIGNvcHkuCgogIEZvciBhbiBleGVjdXRhYmxlLCB0aGUgcmVxdWlyZWQgZm9ybSBvZiB0aGUgIndvcmsgdGhhdCB1c2VzIHRoZQpMaWJyYXJ5IiBtdXN0IGluY2x1ZGUgYW55IGRhdGEgYW5kIHV0aWxpdHkgcHJvZ3JhbXMgbmVlZGVkIGZvcgpyZXByb2R1Y2luZyB0aGUgZXhlY3V0YWJsZSBmcm9tIGl0LiAgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwKdGhlIG1hdGVyaWFscyB0byBiZSBkaXN0cmlidXRlZCBuZWVkIG5vdCBpbmNsdWRlIGFueXRoaW5nIHRoYXQgaXMKbm9ybWFsbHkgZGlzdHJpYnV0ZWQgKGluIGVpdGhlciBzb3VyY2Ugb3IgYmluYXJ5IGZvcm0pIHdpdGggdGhlIG1ham9yCmNvbXBvbmVudHMgKGNvbXBpbGVyLCBrZXJuZWwsIGFuZCBzbyBvbikgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0gb24Kd2hpY2ggdGhlIGV4ZWN1dGFibGUgcnVucywgdW5sZXNzIHRoYXQgY29tcG9uZW50IGl0c2VsZiBhY2NvbXBhbmllcwp0aGUgZXhlY3V0YWJsZS4KCiAgSXQgbWF5IGhhcHBlbiB0aGF0IHRoaXMgcmVxdWlyZW1lbnQgY29udHJhZGljdHMgdGhlIGxpY2Vuc2UKcmVzdHJpY3Rpb25zIG9mIG90aGVyIHByb3ByaWV0YXJ5IGxpYnJhcmllcyB0aGF0IGRvIG5vdCBub3JtYWxseQphY2NvbXBhbnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0uICBTdWNoIGEgY29udHJhZGljdGlvbiBtZWFucyB5b3UgY2Fubm90CnVzZSBib3RoIHRoZW0gYW5kIHRoZSBMaWJyYXJ5IHRvZ2V0aGVyIGluIGFuIGV4ZWN1dGFibGUgdGhhdCB5b3UKZGlzdHJpYnV0ZS4KDAogIDcuIFlvdSBtYXkgcGxhY2UgbGlicmFyeSBmYWNpbGl0aWVzIHRoYXQgYXJlIGEgd29yayBiYXNlZCBvbiB0aGUKTGlicmFyeSBzaWRlLWJ5LXNpZGUgaW4gYSBzaW5nbGUgbGlicmFyeSB0b2dldGhlciB3aXRoIG90aGVyIGxpYnJhcnkKZmFjaWxpdGllcyBub3QgY292ZXJlZCBieSB0aGlzIExpY2Vuc2UsIGFuZCBkaXN0cmlidXRlIHN1Y2ggYSBjb21iaW5lZApsaWJyYXJ5LCBwcm92aWRlZCB0aGF0IHRoZSBzZXBhcmF0ZSBkaXN0cmlidXRpb24gb2YgdGhlIHdvcmsgYmFzZWQgb24KdGhlIExpYnJhcnkgYW5kIG9mIHRoZSBvdGhlciBsaWJyYXJ5IGZhY2lsaXRpZXMgaXMgb3RoZXJ3aXNlCnBlcm1pdHRlZCwgYW5kIHByb3ZpZGVkIHRoYXQgeW91IGRvIHRoZXNlIHR3byB0aGluZ3M6CgogICAgYSkgQWNjb21wYW55IHRoZSBjb21iaW5lZCBsaWJyYXJ5IHdpdGggYSBjb3B5IG9mIHRoZSBzYW1lIHdvcmsKICAgIGJhc2VkIG9uIHRoZSBMaWJyYXJ5LCB1bmNvbWJpbmVkIHdpdGggYW55IG90aGVyIGxpYnJhcnkKICAgIGZhY2lsaXRpZXMuICBUaGlzIG11c3QgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQogICAgU2VjdGlvbnMgYWJvdmUuCgogICAgYikgR2l2ZSBwcm9taW5lbnQgbm90aWNlIHdpdGggdGhlIGNvbWJpbmVkIGxpYnJhcnkgb2YgdGhlIGZhY3QKICAgIHRoYXQgcGFydCBvZiBpdCBpcyBhIHdvcmsgYmFzZWQgb24gdGhlIExpYnJhcnksIGFuZCBleHBsYWluaW5nCiAgICB3aGVyZSB0byBmaW5kIHRoZSBhY2NvbXBhbnlpbmcgdW5jb21iaW5lZCBmb3JtIG9mIHRoZSBzYW1lIHdvcmsuCgogIDguIFlvdSBtYXkgbm90IGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSwgbGluayB3aXRoLCBvciBkaXN0cmlidXRlCnRoZSBMaWJyYXJ5IGV4Y2VwdCBhcyBleHByZXNzbHkgcHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQW55CmF0dGVtcHQgb3RoZXJ3aXNlIHRvIGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSwgbGluayB3aXRoLCBvcgpkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IGlzIHZvaWQsIGFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgdGVybWluYXRlIHlvdXIKcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZS4gIEhvd2V2ZXIsIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzLApvciByaWdodHMsIGZyb20geW91IHVuZGVyIHRoaXMgTGljZW5zZSB3aWxsIG5vdCBoYXZlIHRoZWlyIGxpY2Vuc2VzCnRlcm1pbmF0ZWQgc28gbG9uZyBhcyBzdWNoIHBhcnRpZXMgcmVtYWluIGluIGZ1bGwgY29tcGxpYW5jZS4KCiAgOS4gWW91IGFyZSBub3QgcmVxdWlyZWQgdG8gYWNjZXB0IHRoaXMgTGljZW5zZSwgc2luY2UgeW91IGhhdmUgbm90CnNpZ25lZCBpdC4gIEhvd2V2ZXIsIG5vdGhpbmcgZWxzZSBncmFudHMgeW91IHBlcm1pc3Npb24gdG8gbW9kaWZ5IG9yCmRpc3RyaWJ1dGUgdGhlIExpYnJhcnkgb3IgaXRzIGRlcml2YXRpdmUgd29ya3MuICBUaGVzZSBhY3Rpb25zIGFyZQpwcm9oaWJpdGVkIGJ5IGxhdyBpZiB5b3UgZG8gbm90IGFjY2VwdCB0aGlzIExpY2Vuc2UuICBUaGVyZWZvcmUsIGJ5Cm1vZGlmeWluZyBvciBkaXN0cmlidXRpbmcgdGhlIExpYnJhcnkgKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQpMaWJyYXJ5KSwgeW91IGluZGljYXRlIHlvdXIgYWNjZXB0YW5jZSBvZiB0aGlzIExpY2Vuc2UgdG8gZG8gc28sIGFuZAphbGwgaXRzIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpbmcgb3IgbW9kaWZ5aW5nCnRoZSBMaWJyYXJ5IG9yIHdvcmtzIGJhc2VkIG9uIGl0LgoKICAxMC4gRWFjaCB0aW1lIHlvdSByZWRpc3RyaWJ1dGUgdGhlIExpYnJhcnkgKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQpMaWJyYXJ5KSwgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5IHJlY2VpdmVzIGEgbGljZW5zZSBmcm9tIHRoZQpvcmlnaW5hbCBsaWNlbnNvciB0byBjb3B5LCBkaXN0cmlidXRlLCBsaW5rIHdpdGggb3IgbW9kaWZ5IHRoZSBMaWJyYXJ5CnN1YmplY3QgdG8gdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMuICBZb3UgbWF5IG5vdCBpbXBvc2UgYW55IGZ1cnRoZXIKcmVzdHJpY3Rpb25zIG9uIHRoZSByZWNpcGllbnRzJyBleGVyY2lzZSBvZiB0aGUgcmlnaHRzIGdyYW50ZWQgaGVyZWluLgpZb3UgYXJlIG5vdCByZXNwb25zaWJsZSBmb3IgZW5mb3JjaW5nIGNvbXBsaWFuY2UgYnkgdGhpcmQgcGFydGllcyB3aXRoCnRoaXMgTGljZW5zZS4KDAogIDExLiBJZiwgYXMgYSBjb25zZXF1ZW5jZSBvZiBhIGNvdXJ0IGp1ZGdtZW50IG9yIGFsbGVnYXRpb24gb2YgcGF0ZW50CmluZnJpbmdlbWVudCBvciBmb3IgYW55IG90aGVyIHJlYXNvbiAobm90IGxpbWl0ZWQgdG8gcGF0ZW50IGlzc3VlcyksCmNvbmRpdGlvbnMgYXJlIGltcG9zZWQgb24geW91ICh3aGV0aGVyIGJ5IGNvdXJ0IG9yZGVyLCBhZ3JlZW1lbnQgb3IKb3RoZXJ3aXNlKSB0aGF0IGNvbnRyYWRpY3QgdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLCB0aGV5IGRvIG5vdApleGN1c2UgeW91IGZyb20gdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLiAgSWYgeW91IGNhbm5vdApkaXN0cmlidXRlIHNvIGFzIHRvIHNhdGlzZnkgc2ltdWx0YW5lb3VzbHkgeW91ciBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzCkxpY2Vuc2UgYW5kIGFueSBvdGhlciBwZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5jZSB5b3UKbWF5IG5vdCBkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiBhIHBhdGVudApsaWNlbnNlIHdvdWxkIG5vdCBwZXJtaXQgcm95YWx0eS1mcmVlIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBMaWJyYXJ5IGJ5CmFsbCB0aG9zZSB3aG8gcmVjZWl2ZSBjb3BpZXMgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHlvdSwgdGhlbgp0aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCBpdCBhbmQgdGhpcyBMaWNlbnNlIHdvdWxkIGJlIHRvCnJlZnJhaW4gZW50aXJlbHkgZnJvbSBkaXN0cmlidXRpb24gb2YgdGhlIExpYnJhcnkuCgpJZiBhbnkgcG9ydGlvbiBvZiB0aGlzIHNlY3Rpb24gaXMgaGVsZCBpbnZhbGlkIG9yIHVuZW5mb3JjZWFibGUgdW5kZXIgYW55CnBhcnRpY3VsYXIgY2lyY3Vtc3RhbmNlLCB0aGUgYmFsYW5jZSBvZiB0aGUgc2VjdGlvbiBpcyBpbnRlbmRlZCB0byBhcHBseSwKYW5kIHRoZSBzZWN0aW9uIGFzIGEgd2hvbGUgaXMgaW50ZW5kZWQgdG8gYXBwbHkgaW4gb3RoZXIgY2lyY3Vtc3RhbmNlcy4KCkl0IGlzIG5vdCB0aGUgcHVycG9zZSBvZiB0aGlzIHNlY3Rpb24gdG8gaW5kdWNlIHlvdSB0byBpbmZyaW5nZSBhbnkKcGF0ZW50cyBvciBvdGhlciBwcm9wZXJ0eSByaWdodCBjbGFpbXMgb3IgdG8gY29udGVzdCB2YWxpZGl0eSBvZiBhbnkKc3VjaCBjbGFpbXM7IHRoaXMgc2VjdGlvbiBoYXMgdGhlIHNvbGUgcHVycG9zZSBvZiBwcm90ZWN0aW5nIHRoZQppbnRlZ3JpdHkgb2YgdGhlIGZyZWUgc29mdHdhcmUgZGlzdHJpYnV0aW9uIHN5c3RlbSB3aGljaCBpcwppbXBsZW1lbnRlZCBieSBwdWJsaWMgbGljZW5zZSBwcmFjdGljZXMuICBNYW55IHBlb3BsZSBoYXZlIG1hZGUKZ2VuZXJvdXMgY29udHJpYnV0aW9ucyB0byB0aGUgd2lkZSByYW5nZSBvZiBzb2Z0d2FyZSBkaXN0cmlidXRlZAp0aHJvdWdoIHRoYXQgc3lzdGVtIGluIHJlbGlhbmNlIG9uIGNvbnNpc3RlbnQgYXBwbGljYXRpb24gb2YgdGhhdApzeXN0ZW07IGl0IGlzIHVwIHRvIHRoZSBhdXRob3IvZG9ub3IgdG8gZGVjaWRlIGlmIGhlIG9yIHNoZSBpcyB3aWxsaW5nCnRvIGRpc3RyaWJ1dGUgc29mdHdhcmUgdGhyb3VnaCBhbnkgb3RoZXIgc3lzdGVtIGFuZCBhIGxpY2Vuc2VlIGNhbm5vdAppbXBvc2UgdGhhdCBjaG9pY2UuCgpUaGlzIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8gbWFrZSB0aG9yb3VnaGx5IGNsZWFyIHdoYXQgaXMgYmVsaWV2ZWQgdG8KYmUgYSBjb25zZXF1ZW5jZSBvZiB0aGUgcmVzdCBvZiB0aGlzIExpY2Vuc2UuCgogIDEyLiBJZiB0aGUgZGlzdHJpYnV0aW9uIGFuZC9vciB1c2Ugb2YgdGhlIExpYnJhcnkgaXMgcmVzdHJpY3RlZCBpbgpjZXJ0YWluIGNvdW50cmllcyBlaXRoZXIgYnkgcGF0ZW50cyBvciBieSBjb3B5cmlnaHRlZCBpbnRlcmZhY2VzLCB0aGUKb3JpZ2luYWwgY29weXJpZ2h0IGhvbGRlciB3aG8gcGxhY2VzIHRoZSBMaWJyYXJ5IHVuZGVyIHRoaXMgTGljZW5zZSBtYXkgYWRkCmFuIGV4cGxpY2l0IGdlb2dyYXBoaWNhbCBkaXN0cmlidXRpb24gbGltaXRhdGlvbiBleGNsdWRpbmcgdGhvc2UgY291bnRyaWVzLApzbyB0aGF0IGRpc3RyaWJ1dGlvbiBpcyBwZXJtaXR0ZWQgb25seSBpbiBvciBhbW9uZyBjb3VudHJpZXMgbm90IHRodXMKZXhjbHVkZWQuICBJbiBzdWNoIGNhc2UsIHRoaXMgTGljZW5zZSBpbmNvcnBvcmF0ZXMgdGhlIGxpbWl0YXRpb24gYXMgaWYKd3JpdHRlbiBpbiB0aGUgYm9keSBvZiB0aGlzIExpY2Vuc2UuCgogIDEzLiBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldwp2ZXJzaW9ucyBvZiB0aGUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuClN1Y2ggbmV3IHZlcnNpb25zIHdpbGwgYmUgc2ltaWxhciBpbiBzcGlyaXQgdG8gdGhlIHByZXNlbnQgdmVyc2lvbiwKYnV0IG1heSBkaWZmZXIgaW4gZGV0YWlsIHRvIGFkZHJlc3MgbmV3IHByb2JsZW1zIG9yIGNvbmNlcm5zLgoKRWFjaCB2ZXJzaW9uIGlzIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuICBJZiB0aGUgTGlicmFyeQpzcGVjaWZpZXMgYSB2ZXJzaW9uIG51bWJlciBvZiB0aGlzIExpY2Vuc2Ugd2hpY2ggYXBwbGllcyB0byBpdCBhbmQKImFueSBsYXRlciB2ZXJzaW9uIiwgeW91IGhhdmUgdGhlIG9wdGlvbiBvZiBmb2xsb3dpbmcgdGhlIHRlcm1zIGFuZApjb25kaXRpb25zIGVpdGhlciBvZiB0aGF0IHZlcnNpb24gb3Igb2YgYW55IGxhdGVyIHZlcnNpb24gcHVibGlzaGVkIGJ5CnRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uICBJZiB0aGUgTGlicmFyeSBkb2VzIG5vdCBzcGVjaWZ5IGEKbGljZW5zZSB2ZXJzaW9uIG51bWJlciwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQgYnkKdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KDAogIDE0LiBJZiB5b3Ugd2lzaCB0byBpbmNvcnBvcmF0ZSBwYXJ0cyBvZiB0aGUgTGlicmFyeSBpbnRvIG90aGVyIGZyZWUKcHJvZ3JhbXMgd2hvc2UgZGlzdHJpYnV0aW9uIGNvbmRpdGlvbnMgYXJlIGluY29tcGF0aWJsZSB3aXRoIHRoZXNlLAp3cml0ZSB0byB0aGUgYXV0aG9yIHRvIGFzayBmb3IgcGVybWlzc2lvbi4gIEZvciBzb2Z0d2FyZSB3aGljaCBpcwpjb3B5cmlnaHRlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3cml0ZSB0byB0aGUgRnJlZQpTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3ZSBzb21ldGltZXMgbWFrZSBleGNlcHRpb25zIGZvciB0aGlzLiAgT3VyCmRlY2lzaW9uIHdpbGwgYmUgZ3VpZGVkIGJ5IHRoZSB0d28gZ29hbHMgb2YgcHJlc2VydmluZyB0aGUgZnJlZSBzdGF0dXMKb2YgYWxsIGRlcml2YXRpdmVzIG9mIG91ciBmcmVlIHNvZnR3YXJlIGFuZCBvZiBwcm9tb3RpbmcgdGhlIHNoYXJpbmcKYW5kIHJldXNlIG9mIHNvZnR3YXJlIGdlbmVyYWxseS4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTyBXQVJSQU5UWQoKICAxNS4gQkVDQVVTRSBUSEUgTElCUkFSWSBJUyBMSUNFTlNFRCBGUkVFIE9GIENIQVJHRSwgVEhFUkUgSVMgTk8KV0FSUkFOVFkgRk9SIFRIRSBMSUJSQVJZLCBUTyBUSEUgRVhURU5UIFBFUk1JVFRFRCBCWSBBUFBMSUNBQkxFIExBVy4KRVhDRVBUIFdIRU4gT1RIRVJXSVNFIFNUQVRFRCBJTiBXUklUSU5HIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQvT1IKT1RIRVIgUEFSVElFUyBQUk9WSURFIFRIRSBMSUJSQVJZICJBUyBJUyIgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKS0lORCwgRUlUSEVSIEVYUFJFU1NFRCBPUiBJTVBMSUVELCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCklNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgpQVVJQT1NFLiAgVEhFIEVOVElSRSBSSVNLIEFTIFRPIFRIRSBRVUFMSVRZIEFORCBQRVJGT1JNQU5DRSBPRiBUSEUKTElCUkFSWSBJUyBXSVRIIFlPVS4gIFNIT1VMRCBUSEUgTElCUkFSWSBQUk9WRSBERUZFQ1RJVkUsIFlPVSBBU1NVTUUKVEhFIENPU1QgT0YgQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsIFJFUEFJUiBPUiBDT1JSRUNUSU9OLgoKICAxNi4gSU4gTk8gRVZFTlQgVU5MRVNTIFJFUVVJUkVEIEJZIEFQUExJQ0FCTEUgTEFXIE9SIEFHUkVFRCBUTyBJTgpXUklUSU5HIFdJTEwgQU5ZIENPUFlSSUdIVCBIT0xERVIsIE9SIEFOWSBPVEhFUiBQQVJUWSBXSE8gTUFZIE1PRElGWQpBTkQvT1IgUkVESVNUUklCVVRFIFRIRSBMSUJSQVJZIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVQpGT1IgREFNQUdFUywgSU5DTFVESU5HIEFOWSBHRU5FUkFMLCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SCkNPTlNFUVVFTlRJQUwgREFNQUdFUyBBUklTSU5HIE9VVCBPRiBUSEUgVVNFIE9SIElOQUJJTElUWSBUTyBVU0UgVEhFCkxJQlJBUlkgKElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gTE9TUyBPRiBEQVRBIE9SIERBVEEgQkVJTkcKUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJTkVEIEJZIFlPVSBPUiBUSElSRCBQQVJUSUVTIE9SIEEKRkFJTFVSRSBPRiBUSEUgTElCUkFSWSBUTyBPUEVSQVRFIFdJVEggQU5ZIE9USEVSIFNPRlRXQVJFKSwgRVZFTiBJRgpTVUNIIEhPTERFUiBPUiBPVEhFUiBQQVJUWSBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICkRBTUFHRVMuCgogICAgICAgICAgICAgICAgICAgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKDAogICAgICAgICAgIEhvdyB0byBBcHBseSBUaGVzZSBUZXJtcyB0byBZb3VyIE5ldyBMaWJyYXJpZXMKCiAgSWYgeW91IGRldmVsb3AgYSBuZXcgbGlicmFyeSwgYW5kIHlvdSB3YW50IGl0IHRvIGJlIG9mIHRoZSBncmVhdGVzdApwb3NzaWJsZSB1c2UgdG8gdGhlIHB1YmxpYywgd2UgcmVjb21tZW5kIG1ha2luZyBpdCBmcmVlIHNvZnR3YXJlIHRoYXQKZXZlcnlvbmUgY2FuIHJlZGlzdHJpYnV0ZSBhbmQgY2hhbmdlLiAgWW91IGNhbiBkbyBzbyBieSBwZXJtaXR0aW5nCnJlZGlzdHJpYnV0aW9uIHVuZGVyIHRoZXNlIHRlcm1zIChvciwgYWx0ZXJuYXRpdmVseSwgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQpvcmRpbmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKS4KCiAgVG8gYXBwbHkgdGhlc2UgdGVybXMsIGF0dGFjaCB0aGUgZm9sbG93aW5nIG5vdGljZXMgdG8gdGhlIGxpYnJhcnkuICBJdCBpcwpzYWZlc3QgdG8gYXR0YWNoIHRoZW0gdG8gdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGZpbGUgdG8gbW9zdCBlZmZlY3RpdmVseQpjb252ZXkgdGhlIGV4Y2x1c2lvbiBvZiB3YXJyYW50eTsgYW5kIGVhY2ggZmlsZSBzaG91bGQgaGF2ZSBhdCBsZWFzdCB0aGUKImNvcHlyaWdodCIgbGluZSBhbmQgYSBwb2ludGVyIHRvIHdoZXJlIHRoZSBmdWxsIG5vdGljZSBpcyBmb3VuZC4KCiAgICA8b25lIGxpbmUgdG8gZ2l2ZSB0aGUgbGlicmFyeSdzIG5hbWUgYW5kIGEgYnJpZWYgaWRlYSBvZiB3aGF0IGl0IGRvZXMuPgogICAgQ29weXJpZ2h0IChDKSA8eWVhcj4gIDxuYW1lIG9mIGF1dGhvcj4KCiAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgoKICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgoKICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQoKQWxzbyBhZGQgaW5mb3JtYXRpb24gb24gaG93IHRvIGNvbnRhY3QgeW91IGJ5IGVsZWN0cm9uaWMgYW5kIHBhcGVyIG1haWwuCgpZb3Ugc2hvdWxkIGFsc28gZ2V0IHlvdXIgZW1wbG95ZXIgKGlmIHlvdSB3b3JrIGFzIGEgcHJvZ3JhbW1lcikgb3IgeW91cgpzY2hvb2wsIGlmIGFueSwgdG8gc2lnbiBhICJjb3B5cmlnaHQgZGlzY2xhaW1lciIgZm9yIHRoZSBsaWJyYXJ5LCBpZgpuZWNlc3NhcnkuICBIZXJlIGlzIGEgc2FtcGxlOyBhbHRlciB0aGUgbmFtZXM6CgogIFlveW9keW5lLCBJbmMuLCBoZXJlYnkgZGlzY2xhaW1zIGFsbCBjb3B5cmlnaHQgaW50ZXJlc3QgaW4gdGhlCiAgbGlicmFyeSBgRnJvYicgKGEgbGlicmFyeSBmb3IgdHdlYWtpbmcga25vYnMpIHdyaXR0ZW4gYnkgSmFtZXMgUmFuZG9tIEhhY2tlci4KCiAgPHNpZ25hdHVyZSBvZiBUeSBDb29uPiwgMSBBcHJpbCAxOTkwCiAgVHkgQ29vbiwgUHJlc2lkZW50IG9mIFZpY2UKClRoYXQncyBhbGwgdGhlcmUgaXMgdG8gaXQhCg== + + + declared license of 'chardet' + LGPL + + + pkg:pypi/chardet@5.2.0 + + + https://chardet.readthedocs.io/ + from packaging metadata Project-URL: Documentation + + + https://github.com/chardet/chardet/issues + from packaging metadata Project-URL: Issue Tracker + + + https://github.com/chardet/chardet + from packaging metadata Project-URL: GitHub Project + + + https://github.com/chardet/chardet + from packaging metadata: Home-page + + + cryptography 43.0.1 @@ -395,40 +141,11 @@ SPDX-License-Identifier: BSD-2-Clause declared license file: AUTHORS - Stefan Kögl <stefan@skoegl.net> -Alexander Shorin <kxepal@gmail.com> -Christopher J. White <chris@grierwhite.com> - + U3RlZmFuIEvDtmdsIDxzdGVmYW5Ac2tvZWdsLm5ldD4KQWxleGFuZGVyIFNob3JpbiA8a3hlcGFsQGdtYWlsLmNvbT4KQ2hyaXN0b3BoZXIgSi4gV2hpdGUgPGNocmlzQGdyaWVyd2hpdGUuY29tPgo= declared license file: LICENSE.txt - Copyright (c) 2011 Stefan Kögl <stefan@skoegl.net> -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - + Q29weXJpZ2h0IChjKSAyMDExIFN0ZWZhbiBLw7ZnbCA8c3RlZmFuQHNrb2VnbC5uZXQ+CkFsbCByaWdodHMgcmVzZXJ2ZWQuCgpSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCmFyZSBtZXQ6CgoxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCjIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KMy4gVGhlIG5hbWUgb2YgdGhlIGF1dGhvciBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzCiAgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgoKVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IKSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUwpPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELgpJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsCklOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVApOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCkRBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQpUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCihJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgpUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgoK declared license of 'jsonpointer' @@ -453,458 +170,23 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. declared license file: AUTHORS.rst - The following organizations or individuals have contributed to this code: - -- Ayan Sinha Mahapatra @AyanSinhaMahapatra -- Carmen Bianca Bakker @carmenbianca -- Chin-Yeung Li @chinyeungli -- Dennis Clark @DennisClark -- John Horan @johnmhoran -- Jono Yang @JonoYang -- Max Mehl @mxmehl -- nexB Inc. @nexB -- Peter Kolbus @pkolbus -- Philippe Ombredanne @pombredanne -- Sebastian Schuberth @sschuberth -- Steven Esser @majurg -- Thomas Druez @tdruez - + VGhlIGZvbGxvd2luZyBvcmdhbml6YXRpb25zIG9yIGluZGl2aWR1YWxzIGhhdmUgY29udHJpYnV0ZWQgdG8gdGhpcyBjb2RlOgoKLSBBeWFuIFNpbmhhIE1haGFwYXRyYSBAQXlhblNpbmhhTWFoYXBhdHJhCi0gQ2FybWVuIEJpYW5jYSBCYWtrZXIgQGNhcm1lbmJpYW5jYQotIENoaW4tWWV1bmcgTGkgQGNoaW55ZXVuZ2xpCi0gRGVubmlzIENsYXJrIEBEZW5uaXNDbGFyawotIEpvaG4gSG9yYW4gQGpvaG5taG9yYW4KLSBKb25vIFlhbmcgQEpvbm9ZYW5nCi0gTWF4IE1laGwgQG14bWVobAotIG5leEIgSW5jLiBAbmV4QgotIFBldGVyIEtvbGJ1cyBAcGtvbGJ1cwotIFBoaWxpcHBlIE9tYnJlZGFubmUgQHBvbWJyZWRhbm5lCi0gU2ViYXN0aWFuIFNjaHViZXJ0aCBAc3NjaHViZXJ0aAotIFN0ZXZlbiBFc3NlciBAbWFqdXJnCi0gVGhvbWFzIERydWV6IEB0ZHJ1ZXoK declared license file: CHANGELOG.rst - Changelog -========= - -v30.3.0 - 2024-03-18 --------------------- - -This is a minor release without API changes: - -- Use latest skeleton -- Update license list to latest ScanCode and SPDX 3.23 -- Drop support for Python 3.7 - -v30.2.0 - 2023-11-29 --------------------- - -This is a minor release without API changes: - -- Use latest skeleton -- Update license list to latest ScanCode and SPDX 3.22 -- Add Python 3.12 support in CI - - -v30.1.1 - 2023-01-16 ----------------------- - -This is a minor dot release without API changes - -- Use latest skeleton -- Update license list to latest ScanCode and SPDX 3.20 - - -v30.1.0 - 2023-01-16 ----------------------- - -This is a minor release without API changes - -- Use latest skeleton (and updated configure script) -- Update license list to latest ScanCode and SPDX 3.19 -- Use correct syntax for python_require -- Drop using Travis and Appveyor -- Drop support for Python 3.7 and add Python 3.11 in CI - - -v30.0.0 - 2022-05-10 ----------------------- - -This is a minor release with API changes - -- Use latest skeleton (and updated configure script) -- Drop using calver -- Improve error checking when combining licenses - - - -v21.6.14 - 2021-06-14 ----------------------- - -Added -~~~~~ - -- Switch to calver for package versioning to better convey the currency of the - bundled data. - -- Include https://scancode-licensedb.aboutcode.org/ licenses list with - ScanCode (v21.6.7) and SPDX licenses (v3.13) keys. Add new functions to - create Licensing using these licenses as LicenseSymbol. - -- Add new License.dedup() method to deduplicate and simplify license expressions - without over simplifying. - -- Add new License.validate() method to return a new ExpressionInfo object with - details on a license expression validation. - - -Changed -~~~~~~~ -- Drop support for Python 2. -- Adopt the project skeleton from https://github.com/nexB/skeleton - and its new configure script - - -v1.2 - 2019-11-14 ------------------- -Added -~~~~~ -- Add ability to render WITH expression wrapped in parenthesis - -Fixes -~~~~~ -- Fix anomalous backslashes in strings - -Changed -~~~~~~~ -- Update the thirdparty directory structure. - - -v1.0 - 2019-10-16 ------------------- -Added -~~~~~ -- New version of boolean.py library -- Add ability to leave license expressions unsorted when simplifying - -Changed -~~~~~~~ -- updated travis CI settings - - -v0.999 - 2019-04-29 --------------------- -- Initial release -- license-expression is small utility library to parse, compare and - simplify and normalize license expressions. - - + Q2hhbmdlbG9nCj09PT09PT09PQoKdjMwLjMuMCAtIDIwMjQtMDMtMTgKLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRoaXMgaXMgYSBtaW5vciByZWxlYXNlIHdpdGhvdXQgQVBJIGNoYW5nZXM6CgotIFVzZSBsYXRlc3Qgc2tlbGV0b24KLSBVcGRhdGUgbGljZW5zZSBsaXN0IHRvIGxhdGVzdCBTY2FuQ29kZSBhbmQgU1BEWCAzLjIzCi0gRHJvcCBzdXBwb3J0IGZvciBQeXRob24gMy43Cgp2MzAuMi4wIC0gMjAyMy0xMS0yOQotLS0tLS0tLS0tLS0tLS0tLS0tLQoKVGhpcyBpcyBhIG1pbm9yIHJlbGVhc2Ugd2l0aG91dCBBUEkgY2hhbmdlczoKCi0gVXNlIGxhdGVzdCBza2VsZXRvbgotIFVwZGF0ZSBsaWNlbnNlIGxpc3QgdG8gbGF0ZXN0IFNjYW5Db2RlIGFuZCBTUERYIDMuMjIKLSBBZGQgUHl0aG9uIDMuMTIgc3VwcG9ydCBpbiBDSQoKCnYzMC4xLjEgLSAyMDIzLTAxLTE2Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRoaXMgaXMgYSBtaW5vciBkb3QgcmVsZWFzZSB3aXRob3V0IEFQSSBjaGFuZ2VzCgotIFVzZSBsYXRlc3Qgc2tlbGV0b24KLSBVcGRhdGUgbGljZW5zZSBsaXN0IHRvIGxhdGVzdCBTY2FuQ29kZSBhbmQgU1BEWCAzLjIwCgoKdjMwLjEuMCAtIDIwMjMtMDEtMTYKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKVGhpcyBpcyBhIG1pbm9yIHJlbGVhc2Ugd2l0aG91dCBBUEkgY2hhbmdlcwoKLSBVc2UgbGF0ZXN0IHNrZWxldG9uIChhbmQgdXBkYXRlZCBjb25maWd1cmUgc2NyaXB0KQotIFVwZGF0ZSBsaWNlbnNlIGxpc3QgdG8gbGF0ZXN0IFNjYW5Db2RlIGFuZCBTUERYIDMuMTkKLSBVc2UgY29ycmVjdCBzeW50YXggZm9yIHB5dGhvbl9yZXF1aXJlCi0gRHJvcCB1c2luZyBUcmF2aXMgYW5kIEFwcHZleW9yCi0gRHJvcCBzdXBwb3J0IGZvciBQeXRob24gMy43IGFuZCBhZGQgUHl0aG9uIDMuMTEgaW4gQ0kKCgp2MzAuMC4wIC0gMjAyMi0wNS0xMAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpUaGlzIGlzIGEgbWlub3IgcmVsZWFzZSB3aXRoIEFQSSBjaGFuZ2VzCgotIFVzZSBsYXRlc3Qgc2tlbGV0b24gKGFuZCB1cGRhdGVkIGNvbmZpZ3VyZSBzY3JpcHQpCi0gRHJvcCB1c2luZyBjYWx2ZXIKLSBJbXByb3ZlIGVycm9yIGNoZWNraW5nIHdoZW4gY29tYmluaW5nIGxpY2Vuc2VzCgoKCnYyMS42LjE0IC0gMjAyMS0wNi0xNAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpBZGRlZAp+fn5+fgoKLSBTd2l0Y2ggdG8gY2FsdmVyIGZvciBwYWNrYWdlIHZlcnNpb25pbmcgdG8gYmV0dGVyIGNvbnZleSB0aGUgY3VycmVuY3kgb2YgdGhlCiAgYnVuZGxlZCBkYXRhLgoKLSBJbmNsdWRlIGh0dHBzOi8vc2NhbmNvZGUtbGljZW5zZWRiLmFib3V0Y29kZS5vcmcvIGxpY2Vuc2VzIGxpc3Qgd2l0aAogIFNjYW5Db2RlICh2MjEuNi43KSBhbmQgU1BEWCBsaWNlbnNlcyAodjMuMTMpIGtleXMuIEFkZCBuZXcgZnVuY3Rpb25zIHRvCiAgY3JlYXRlIExpY2Vuc2luZyB1c2luZyB0aGVzZSBsaWNlbnNlcyBhcyBMaWNlbnNlU3ltYm9sLgoKLSBBZGQgbmV3IExpY2Vuc2UuZGVkdXAoKSBtZXRob2QgdG8gZGVkdXBsaWNhdGUgYW5kIHNpbXBsaWZ5IGxpY2Vuc2UgZXhwcmVzc2lvbnMKICB3aXRob3V0IG92ZXIgc2ltcGxpZnlpbmcuCgotIEFkZCBuZXcgTGljZW5zZS52YWxpZGF0ZSgpIG1ldGhvZCB0byByZXR1cm4gYSBuZXcgRXhwcmVzc2lvbkluZm8gb2JqZWN0IHdpdGgKICBkZXRhaWxzIG9uIGEgbGljZW5zZSBleHByZXNzaW9uIHZhbGlkYXRpb24uCgoKQ2hhbmdlZAp+fn5+fn5+Ci0gRHJvcCBzdXBwb3J0IGZvciBQeXRob24gMi4KLSBBZG9wdCB0aGUgcHJvamVjdCBza2VsZXRvbiBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9uZXhCL3NrZWxldG9uCiAgYW5kIGl0cyBuZXcgY29uZmlndXJlIHNjcmlwdAoKCnYxLjIgLSAyMDE5LTExLTE0Ci0tLS0tLS0tLS0tLS0tLS0tLQpBZGRlZAp+fn5+fgotIEFkZCBhYmlsaXR5IHRvIHJlbmRlciBXSVRIIGV4cHJlc3Npb24gd3JhcHBlZCBpbiBwYXJlbnRoZXNpcwoKRml4ZXMKfn5+fn4KLSBGaXggYW5vbWFsb3VzIGJhY2tzbGFzaGVzIGluIHN0cmluZ3MKCkNoYW5nZWQKfn5+fn5+fgotIFVwZGF0ZSB0aGUgdGhpcmRwYXJ0eSBkaXJlY3Rvcnkgc3RydWN0dXJlLgoKCnYxLjAgLSAyMDE5LTEwLTE2Ci0tLS0tLS0tLS0tLS0tLS0tLQpBZGRlZAp+fn5+fgotIE5ldyB2ZXJzaW9uIG9mIGJvb2xlYW4ucHkgbGlicmFyeQotIEFkZCBhYmlsaXR5IHRvIGxlYXZlIGxpY2Vuc2UgZXhwcmVzc2lvbnMgdW5zb3J0ZWQgd2hlbiBzaW1wbGlmeWluZwoKQ2hhbmdlZAp+fn5+fn5+Ci0gdXBkYXRlZCB0cmF2aXMgQ0kgc2V0dGluZ3MKCgp2MC45OTkgLSAyMDE5LTA0LTI5Ci0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gSW5pdGlhbCByZWxlYXNlCi0gbGljZW5zZS1leHByZXNzaW9uIGlzIHNtYWxsIHV0aWxpdHkgbGlicmFyeSB0byBwYXJzZSwgY29tcGFyZSBhbmQKICBzaW1wbGlmeSBhbmQgbm9ybWFsaXplIGxpY2Vuc2UgZXhwcmVzc2lvbnMuCgo= declared license file: CODE_OF_CONDUCT.rst - Contributor Covenant Code of Conduct -==================================== - -Our Pledge ----------- - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our -project and our community a harassment-free experience for everyone, -regardless of age, body size, disability, ethnicity, gender identity and -expression, level of experience, education, socio-economic status, -nationality, personal appearance, race, religion, or sexual identity and -orientation. - -Our Standards -------------- - -Examples of behavior that contributes to creating a positive environment -include: - -- Using welcoming and inclusive language -- Being respectful of differing viewpoints and experiences -- Gracefully accepting constructive criticism -- Focusing on what is best for the community -- Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -- The use of sexualized language or imagery and unwelcome sexual - attention or advances -- Trolling, insulting/derogatory comments, and personal or political - attacks -- Public or private harassment -- Publishing others’ private information, such as a physical or - electronic address, without explicit permission -- Other conduct which could reasonably be considered inappropriate in a - professional setting - -Our Responsibilities --------------------- - -Project maintainers are responsible for clarifying the standards of -acceptable behavior and are expected to take appropriate and fair -corrective action in response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, -or reject comments, commits, code, wiki edits, issues, and other -contributions that are not aligned to this Code of Conduct, or to ban -temporarily or permanently any contributor for other behaviors that they -deem inappropriate, threatening, offensive, or harmful. - -Scope ------ - -This Code of Conduct applies both within project spaces and in public -spaces when an individual is representing the project or its community. -Examples of representing a project or community include using an -official project e-mail address, posting via an official social media -account, or acting as an appointed representative at an online or -offline event. Representation of a project may be further defined and -clarified by project maintainers. - -Enforcement ------------ - -Instances of abusive, harassing, or otherwise unacceptable behavior may -be reported by contacting the project team at pombredanne@gmail.com -or on the Gitter chat channel at https://gitter.im/aboutcode-org/discuss . -All complaints will be reviewed and investigated and will result in a -response that is deemed necessary and appropriate to the circumstances. -The project team is obligated to maintain confidentiality with regard to -the reporter of an incident. Further details of specific enforcement -policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in -good faith may face temporary or permanent repercussions as determined -by other members of the project’s leadership. - -Attribution ------------ - -This Code of Conduct is adapted from the `Contributor Covenant`_ , -version 1.4, available at -https://www.contributor-covenant.org/version/1/4/code-of-conduct.html - -.. _Contributor Covenant: https://www.contributor-covenant.org - + Q29udHJpYnV0b3IgQ292ZW5hbnQgQ29kZSBvZiBDb25kdWN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKT3VyIFBsZWRnZQotLS0tLS0tLS0tCgpJbiB0aGUgaW50ZXJlc3Qgb2YgZm9zdGVyaW5nIGFuIG9wZW4gYW5kIHdlbGNvbWluZyBlbnZpcm9ubWVudCwgd2UgYXMKY29udHJpYnV0b3JzIGFuZCBtYWludGFpbmVycyBwbGVkZ2UgdG8gbWFraW5nIHBhcnRpY2lwYXRpb24gaW4gb3VyCnByb2plY3QgYW5kIG91ciBjb21tdW5pdHkgYSBoYXJhc3NtZW50LWZyZWUgZXhwZXJpZW5jZSBmb3IgZXZlcnlvbmUsCnJlZ2FyZGxlc3Mgb2YgYWdlLCBib2R5IHNpemUsIGRpc2FiaWxpdHksIGV0aG5pY2l0eSwgZ2VuZGVyIGlkZW50aXR5IGFuZApleHByZXNzaW9uLCBsZXZlbCBvZiBleHBlcmllbmNlLCBlZHVjYXRpb24sIHNvY2lvLWVjb25vbWljIHN0YXR1cywKbmF0aW9uYWxpdHksIHBlcnNvbmFsIGFwcGVhcmFuY2UsIHJhY2UsIHJlbGlnaW9uLCBvciBzZXh1YWwgaWRlbnRpdHkgYW5kCm9yaWVudGF0aW9uLgoKT3VyIFN0YW5kYXJkcwotLS0tLS0tLS0tLS0tCgpFeGFtcGxlcyBvZiBiZWhhdmlvciB0aGF0IGNvbnRyaWJ1dGVzIHRvIGNyZWF0aW5nIGEgcG9zaXRpdmUgZW52aXJvbm1lbnQKaW5jbHVkZToKCi0gIFVzaW5nIHdlbGNvbWluZyBhbmQgaW5jbHVzaXZlIGxhbmd1YWdlCi0gIEJlaW5nIHJlc3BlY3RmdWwgb2YgZGlmZmVyaW5nIHZpZXdwb2ludHMgYW5kIGV4cGVyaWVuY2VzCi0gIEdyYWNlZnVsbHkgYWNjZXB0aW5nIGNvbnN0cnVjdGl2ZSBjcml0aWNpc20KLSAgRm9jdXNpbmcgb24gd2hhdCBpcyBiZXN0IGZvciB0aGUgY29tbXVuaXR5Ci0gIFNob3dpbmcgZW1wYXRoeSB0b3dhcmRzIG90aGVyIGNvbW11bml0eSBtZW1iZXJzCgpFeGFtcGxlcyBvZiB1bmFjY2VwdGFibGUgYmVoYXZpb3IgYnkgcGFydGljaXBhbnRzIGluY2x1ZGU6CgotICBUaGUgdXNlIG9mIHNleHVhbGl6ZWQgbGFuZ3VhZ2Ugb3IgaW1hZ2VyeSBhbmQgdW53ZWxjb21lIHNleHVhbAogICBhdHRlbnRpb24gb3IgYWR2YW5jZXMKLSAgVHJvbGxpbmcsIGluc3VsdGluZy9kZXJvZ2F0b3J5IGNvbW1lbnRzLCBhbmQgcGVyc29uYWwgb3IgcG9saXRpY2FsCiAgIGF0dGFja3MKLSAgUHVibGljIG9yIHByaXZhdGUgaGFyYXNzbWVudAotICBQdWJsaXNoaW5nIG90aGVyc+KAmSBwcml2YXRlIGluZm9ybWF0aW9uLCBzdWNoIGFzIGEgcGh5c2ljYWwgb3IKICAgZWxlY3Ryb25pYyBhZGRyZXNzLCB3aXRob3V0IGV4cGxpY2l0IHBlcm1pc3Npb24KLSAgT3RoZXIgY29uZHVjdCB3aGljaCBjb3VsZCByZWFzb25hYmx5IGJlIGNvbnNpZGVyZWQgaW5hcHByb3ByaWF0ZSBpbiBhCiAgIHByb2Zlc3Npb25hbCBzZXR0aW5nCgpPdXIgUmVzcG9uc2liaWxpdGllcwotLS0tLS0tLS0tLS0tLS0tLS0tLQoKUHJvamVjdCBtYWludGFpbmVycyBhcmUgcmVzcG9uc2libGUgZm9yIGNsYXJpZnlpbmcgdGhlIHN0YW5kYXJkcyBvZgphY2NlcHRhYmxlIGJlaGF2aW9yIGFuZCBhcmUgZXhwZWN0ZWQgdG8gdGFrZSBhcHByb3ByaWF0ZSBhbmQgZmFpcgpjb3JyZWN0aXZlIGFjdGlvbiBpbiByZXNwb25zZSB0byBhbnkgaW5zdGFuY2VzIG9mIHVuYWNjZXB0YWJsZSBiZWhhdmlvci4KClByb2plY3QgbWFpbnRhaW5lcnMgaGF2ZSB0aGUgcmlnaHQgYW5kIHJlc3BvbnNpYmlsaXR5IHRvIHJlbW92ZSwgZWRpdCwKb3IgcmVqZWN0IGNvbW1lbnRzLCBjb21taXRzLCBjb2RlLCB3aWtpIGVkaXRzLCBpc3N1ZXMsIGFuZCBvdGhlcgpjb250cmlidXRpb25zIHRoYXQgYXJlIG5vdCBhbGlnbmVkIHRvIHRoaXMgQ29kZSBvZiBDb25kdWN0LCBvciB0byBiYW4KdGVtcG9yYXJpbHkgb3IgcGVybWFuZW50bHkgYW55IGNvbnRyaWJ1dG9yIGZvciBvdGhlciBiZWhhdmlvcnMgdGhhdCB0aGV5CmRlZW0gaW5hcHByb3ByaWF0ZSwgdGhyZWF0ZW5pbmcsIG9mZmVuc2l2ZSwgb3IgaGFybWZ1bC4KClNjb3BlCi0tLS0tCgpUaGlzIENvZGUgb2YgQ29uZHVjdCBhcHBsaWVzIGJvdGggd2l0aGluIHByb2plY3Qgc3BhY2VzIGFuZCBpbiBwdWJsaWMKc3BhY2VzIHdoZW4gYW4gaW5kaXZpZHVhbCBpcyByZXByZXNlbnRpbmcgdGhlIHByb2plY3Qgb3IgaXRzIGNvbW11bml0eS4KRXhhbXBsZXMgb2YgcmVwcmVzZW50aW5nIGEgcHJvamVjdCBvciBjb21tdW5pdHkgaW5jbHVkZSB1c2luZyBhbgpvZmZpY2lhbCBwcm9qZWN0IGUtbWFpbCBhZGRyZXNzLCBwb3N0aW5nIHZpYSBhbiBvZmZpY2lhbCBzb2NpYWwgbWVkaWEKYWNjb3VudCwgb3IgYWN0aW5nIGFzIGFuIGFwcG9pbnRlZCByZXByZXNlbnRhdGl2ZSBhdCBhbiBvbmxpbmUgb3IKb2ZmbGluZSBldmVudC4gUmVwcmVzZW50YXRpb24gb2YgYSBwcm9qZWN0IG1heSBiZSBmdXJ0aGVyIGRlZmluZWQgYW5kCmNsYXJpZmllZCBieSBwcm9qZWN0IG1haW50YWluZXJzLgoKRW5mb3JjZW1lbnQKLS0tLS0tLS0tLS0KCkluc3RhbmNlcyBvZiBhYnVzaXZlLCBoYXJhc3NpbmcsIG9yIG90aGVyd2lzZSB1bmFjY2VwdGFibGUgYmVoYXZpb3IgbWF5CmJlIHJlcG9ydGVkIGJ5IGNvbnRhY3RpbmcgdGhlIHByb2plY3QgdGVhbSBhdCBwb21icmVkYW5uZUBnbWFpbC5jb20Kb3Igb24gdGhlIEdpdHRlciBjaGF0IGNoYW5uZWwgYXQgaHR0cHM6Ly9naXR0ZXIuaW0vYWJvdXRjb2RlLW9yZy9kaXNjdXNzIC4KQWxsIGNvbXBsYWludHMgd2lsbCBiZSByZXZpZXdlZCBhbmQgaW52ZXN0aWdhdGVkIGFuZCB3aWxsIHJlc3VsdCBpbiBhCnJlc3BvbnNlIHRoYXQgaXMgZGVlbWVkIG5lY2Vzc2FyeSBhbmQgYXBwcm9wcmlhdGUgdG8gdGhlIGNpcmN1bXN0YW5jZXMuClRoZSBwcm9qZWN0IHRlYW0gaXMgb2JsaWdhdGVkIHRvIG1haW50YWluIGNvbmZpZGVudGlhbGl0eSB3aXRoIHJlZ2FyZCB0bwp0aGUgcmVwb3J0ZXIgb2YgYW4gaW5jaWRlbnQuIEZ1cnRoZXIgZGV0YWlscyBvZiBzcGVjaWZpYyBlbmZvcmNlbWVudApwb2xpY2llcyBtYXkgYmUgcG9zdGVkIHNlcGFyYXRlbHkuCgpQcm9qZWN0IG1haW50YWluZXJzIHdobyBkbyBub3QgZm9sbG93IG9yIGVuZm9yY2UgdGhlIENvZGUgb2YgQ29uZHVjdCBpbgpnb29kIGZhaXRoIG1heSBmYWNlIHRlbXBvcmFyeSBvciBwZXJtYW5lbnQgcmVwZXJjdXNzaW9ucyBhcyBkZXRlcm1pbmVkCmJ5IG90aGVyIG1lbWJlcnMgb2YgdGhlIHByb2plY3TigJlzIGxlYWRlcnNoaXAuCgpBdHRyaWJ1dGlvbgotLS0tLS0tLS0tLQoKVGhpcyBDb2RlIG9mIENvbmR1Y3QgaXMgYWRhcHRlZCBmcm9tIHRoZSBgQ29udHJpYnV0b3IgQ292ZW5hbnRgXyAsCnZlcnNpb24gMS40LCBhdmFpbGFibGUgYXQKaHR0cHM6Ly93d3cuY29udHJpYnV0b3ItY292ZW5hbnQub3JnL3ZlcnNpb24vMS80L2NvZGUtb2YtY29uZHVjdC5odG1sCgouLiBfQ29udHJpYnV0b3IgQ292ZW5hbnQ6IGh0dHBzOi8vd3d3LmNvbnRyaWJ1dG9yLWNvdmVuYW50Lm9yZwo= declared license file: NOTICE - # -# Copyright (c) nexB Inc. and others. -# SPDX-License-Identifier: Apache-2.0 -# -# Visit https://aboutcode.org and https://github.com/nexB/license-expression -# for support and download. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - + IwojIENvcHlyaWdodCAoYykgbmV4QiBJbmMuIGFuZCBvdGhlcnMuCiMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKIwojIFZpc2l0IGh0dHBzOi8vYWJvdXRjb2RlLm9yZyBhbmQgaHR0cHM6Ly9naXRodWIuY29tL25leEIvbGljZW5zZS1leHByZXNzaW9uCiMgZm9yIHN1cHBvcnQgYW5kIGRvd25sb2FkLgojCiMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgojIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAojCiMgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgojCg== declared license file: apache-2.0.LICENSE - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBhY2hlIExpY2Vuc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAyLjAsIEphbnVhcnkgMjAwNAogICAgICAgICAgICAgICAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvCgogICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgVVNFLCBSRVBST0RVQ1RJT04sIEFORCBESVNUUklCVVRJT04KCiAgIDEuIERlZmluaXRpb25zLgoKICAgICAgIkxpY2Vuc2UiIHNoYWxsIG1lYW4gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciB1c2UsIHJlcHJvZHVjdGlvbiwKICAgICAgYW5kIGRpc3RyaWJ1dGlvbiBhcyBkZWZpbmVkIGJ5IFNlY3Rpb25zIDEgdGhyb3VnaCA5IG9mIHRoaXMgZG9jdW1lbnQuCgogICAgICAiTGljZW5zb3IiIHNoYWxsIG1lYW4gdGhlIGNvcHlyaWdodCBvd25lciBvciBlbnRpdHkgYXV0aG9yaXplZCBieQogICAgICB0aGUgY29weXJpZ2h0IG93bmVyIHRoYXQgaXMgZ3JhbnRpbmcgdGhlIExpY2Vuc2UuCgogICAgICAiTGVnYWwgRW50aXR5IiBzaGFsbCBtZWFuIHRoZSB1bmlvbiBvZiB0aGUgYWN0aW5nIGVudGl0eSBhbmQgYWxsCiAgICAgIG90aGVyIGVudGl0aWVzIHRoYXQgY29udHJvbCwgYXJlIGNvbnRyb2xsZWQgYnksIG9yIGFyZSB1bmRlciBjb21tb24KICAgICAgY29udHJvbCB3aXRoIHRoYXQgZW50aXR5LiBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwKICAgICAgImNvbnRyb2wiIG1lYW5zIChpKSB0aGUgcG93ZXIsIGRpcmVjdCBvciBpbmRpcmVjdCwgdG8gY2F1c2UgdGhlCiAgICAgIGRpcmVjdGlvbiBvciBtYW5hZ2VtZW50IG9mIHN1Y2ggZW50aXR5LCB3aGV0aGVyIGJ5IGNvbnRyYWN0IG9yCiAgICAgIG90aGVyd2lzZSwgb3IgKGlpKSBvd25lcnNoaXAgb2YgZmlmdHkgcGVyY2VudCAoNTAlKSBvciBtb3JlIG9mIHRoZQogICAgICBvdXRzdGFuZGluZyBzaGFyZXMsIG9yIChpaWkpIGJlbmVmaWNpYWwgb3duZXJzaGlwIG9mIHN1Y2ggZW50aXR5LgoKICAgICAgIllvdSIgKG9yICJZb3VyIikgc2hhbGwgbWVhbiBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eQogICAgICBleGVyY2lzaW5nIHBlcm1pc3Npb25zIGdyYW50ZWQgYnkgdGhpcyBMaWNlbnNlLgoKICAgICAgIlNvdXJjZSIgZm9ybSBzaGFsbCBtZWFuIHRoZSBwcmVmZXJyZWQgZm9ybSBmb3IgbWFraW5nIG1vZGlmaWNhdGlvbnMsCiAgICAgIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gc29mdHdhcmUgc291cmNlIGNvZGUsIGRvY3VtZW50YXRpb24KICAgICAgc291cmNlLCBhbmQgY29uZmlndXJhdGlvbiBmaWxlcy4KCiAgICAgICJPYmplY3QiIGZvcm0gc2hhbGwgbWVhbiBhbnkgZm9ybSByZXN1bHRpbmcgZnJvbSBtZWNoYW5pY2FsCiAgICAgIHRyYW5zZm9ybWF0aW9uIG9yIHRyYW5zbGF0aW9uIG9mIGEgU291cmNlIGZvcm0sIGluY2x1ZGluZyBidXQKICAgICAgbm90IGxpbWl0ZWQgdG8gY29tcGlsZWQgb2JqZWN0IGNvZGUsIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uLAogICAgICBhbmQgY29udmVyc2lvbnMgdG8gb3RoZXIgbWVkaWEgdHlwZXMuCgogICAgICAiV29yayIgc2hhbGwgbWVhbiB0aGUgd29yayBvZiBhdXRob3JzaGlwLCB3aGV0aGVyIGluIFNvdXJjZSBvcgogICAgICBPYmplY3QgZm9ybSwgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIExpY2Vuc2UsIGFzIGluZGljYXRlZCBieSBhCiAgICAgIGNvcHlyaWdodCBub3RpY2UgdGhhdCBpcyBpbmNsdWRlZCBpbiBvciBhdHRhY2hlZCB0byB0aGUgd29yawogICAgICAoYW4gZXhhbXBsZSBpcyBwcm92aWRlZCBpbiB0aGUgQXBwZW5kaXggYmVsb3cpLgoKICAgICAgIkRlcml2YXRpdmUgV29ya3MiIHNoYWxsIG1lYW4gYW55IHdvcmssIHdoZXRoZXIgaW4gU291cmNlIG9yIE9iamVjdAogICAgICBmb3JtLCB0aGF0IGlzIGJhc2VkIG9uIChvciBkZXJpdmVkIGZyb20pIHRoZSBXb3JrIGFuZCBmb3Igd2hpY2ggdGhlCiAgICAgIGVkaXRvcmlhbCByZXZpc2lvbnMsIGFubm90YXRpb25zLCBlbGFib3JhdGlvbnMsIG9yIG90aGVyIG1vZGlmaWNhdGlvbnMKICAgICAgcmVwcmVzZW50LCBhcyBhIHdob2xlLCBhbiBvcmlnaW5hbCB3b3JrIG9mIGF1dGhvcnNoaXAuIEZvciB0aGUgcHVycG9zZXMKICAgICAgb2YgdGhpcyBMaWNlbnNlLCBEZXJpdmF0aXZlIFdvcmtzIHNoYWxsIG5vdCBpbmNsdWRlIHdvcmtzIHRoYXQgcmVtYWluCiAgICAgIHNlcGFyYWJsZSBmcm9tLCBvciBtZXJlbHkgbGluayAob3IgYmluZCBieSBuYW1lKSB0byB0aGUgaW50ZXJmYWNlcyBvZiwKICAgICAgdGhlIFdvcmsgYW5kIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZi4KCiAgICAgICJDb250cmlidXRpb24iIHNoYWxsIG1lYW4gYW55IHdvcmsgb2YgYXV0aG9yc2hpcCwgaW5jbHVkaW5nCiAgICAgIHRoZSBvcmlnaW5hbCB2ZXJzaW9uIG9mIHRoZSBXb3JrIGFuZCBhbnkgbW9kaWZpY2F0aW9ucyBvciBhZGRpdGlvbnMKICAgICAgdG8gdGhhdCBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgdGhhdCBpcyBpbnRlbnRpb25hbGx5CiAgICAgIHN1Ym1pdHRlZCB0byBMaWNlbnNvciBmb3IgaW5jbHVzaW9uIGluIHRoZSBXb3JrIGJ5IHRoZSBjb3B5cmlnaHQgb3duZXIKICAgICAgb3IgYnkgYW4gaW5kaXZpZHVhbCBvciBMZWdhbCBFbnRpdHkgYXV0aG9yaXplZCB0byBzdWJtaXQgb24gYmVoYWxmIG9mCiAgICAgIHRoZSBjb3B5cmlnaHQgb3duZXIuIEZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAic3VibWl0dGVkIgogICAgICBtZWFucyBhbnkgZm9ybSBvZiBlbGVjdHJvbmljLCB2ZXJiYWwsIG9yIHdyaXR0ZW4gY29tbXVuaWNhdGlvbiBzZW50CiAgICAgIHRvIHRoZSBMaWNlbnNvciBvciBpdHMgcmVwcmVzZW50YXRpdmVzLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvCiAgICAgIGNvbW11bmljYXRpb24gb24gZWxlY3Ryb25pYyBtYWlsaW5nIGxpc3RzLCBzb3VyY2UgY29kZSBjb250cm9sIHN5c3RlbXMsCiAgICAgIGFuZCBpc3N1ZSB0cmFja2luZyBzeXN0ZW1zIHRoYXQgYXJlIG1hbmFnZWQgYnksIG9yIG9uIGJlaGFsZiBvZiwgdGhlCiAgICAgIExpY2Vuc29yIGZvciB0aGUgcHVycG9zZSBvZiBkaXNjdXNzaW5nIGFuZCBpbXByb3ZpbmcgdGhlIFdvcmssIGJ1dAogICAgICBleGNsdWRpbmcgY29tbXVuaWNhdGlvbiB0aGF0IGlzIGNvbnNwaWN1b3VzbHkgbWFya2VkIG9yIG90aGVyd2lzZQogICAgICBkZXNpZ25hdGVkIGluIHdyaXRpbmcgYnkgdGhlIGNvcHlyaWdodCBvd25lciBhcyAiTm90IGEgQ29udHJpYnV0aW9uLiIKCiAgICAgICJDb250cmlidXRvciIgc2hhbGwgbWVhbiBMaWNlbnNvciBhbmQgYW55IGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5CiAgICAgIG9uIGJlaGFsZiBvZiB3aG9tIGEgQ29udHJpYnV0aW9uIGhhcyBiZWVuIHJlY2VpdmVkIGJ5IExpY2Vuc29yIGFuZAogICAgICBzdWJzZXF1ZW50bHkgaW5jb3Jwb3JhdGVkIHdpdGhpbiB0aGUgV29yay4KCiAgIDIuIEdyYW50IG9mIENvcHlyaWdodCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCiAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCiAgICAgIGNvcHlyaWdodCBsaWNlbnNlIHRvIHJlcHJvZHVjZSwgcHJlcGFyZSBEZXJpdmF0aXZlIFdvcmtzIG9mLAogICAgICBwdWJsaWNseSBkaXNwbGF5LCBwdWJsaWNseSBwZXJmb3JtLCBzdWJsaWNlbnNlLCBhbmQgZGlzdHJpYnV0ZSB0aGUKICAgICAgV29yayBhbmQgc3VjaCBEZXJpdmF0aXZlIFdvcmtzIGluIFNvdXJjZSBvciBPYmplY3QgZm9ybS4KCiAgIDMuIEdyYW50IG9mIFBhdGVudCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCiAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCiAgICAgIChleGNlcHQgYXMgc3RhdGVkIGluIHRoaXMgc2VjdGlvbikgcGF0ZW50IGxpY2Vuc2UgdG8gbWFrZSwgaGF2ZSBtYWRlLAogICAgICB1c2UsIG9mZmVyIHRvIHNlbGwsIHNlbGwsIGltcG9ydCwgYW5kIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgV29yaywKICAgICAgd2hlcmUgc3VjaCBsaWNlbnNlIGFwcGxpZXMgb25seSB0byB0aG9zZSBwYXRlbnQgY2xhaW1zIGxpY2Vuc2FibGUKICAgICAgYnkgc3VjaCBDb250cmlidXRvciB0aGF0IGFyZSBuZWNlc3NhcmlseSBpbmZyaW5nZWQgYnkgdGhlaXIKICAgICAgQ29udHJpYnV0aW9uKHMpIGFsb25lIG9yIGJ5IGNvbWJpbmF0aW9uIG9mIHRoZWlyIENvbnRyaWJ1dGlvbihzKQogICAgICB3aXRoIHRoZSBXb3JrIHRvIHdoaWNoIHN1Y2ggQ29udHJpYnV0aW9uKHMpIHdhcyBzdWJtaXR0ZWQuIElmIFlvdQogICAgICBpbnN0aXR1dGUgcGF0ZW50IGxpdGlnYXRpb24gYWdhaW5zdCBhbnkgZW50aXR5IChpbmNsdWRpbmcgYQogICAgICBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0IHRoZSBXb3JrCiAgICAgIG9yIGEgQ29udHJpYnV0aW9uIGluY29ycG9yYXRlZCB3aXRoaW4gdGhlIFdvcmsgY29uc3RpdHV0ZXMgZGlyZWN0CiAgICAgIG9yIGNvbnRyaWJ1dG9yeSBwYXRlbnQgaW5mcmluZ2VtZW50LCB0aGVuIGFueSBwYXRlbnQgbGljZW5zZXMKICAgICAgZ3JhbnRlZCB0byBZb3UgdW5kZXIgdGhpcyBMaWNlbnNlIGZvciB0aGF0IFdvcmsgc2hhbGwgdGVybWluYXRlCiAgICAgIGFzIG9mIHRoZSBkYXRlIHN1Y2ggbGl0aWdhdGlvbiBpcyBmaWxlZC4KCiAgIDQuIFJlZGlzdHJpYnV0aW9uLiBZb3UgbWF5IHJlcHJvZHVjZSBhbmQgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlCiAgICAgIFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mIGluIGFueSBtZWRpdW0sIHdpdGggb3Igd2l0aG91dAogICAgICBtb2RpZmljYXRpb25zLCBhbmQgaW4gU291cmNlIG9yIE9iamVjdCBmb3JtLCBwcm92aWRlZCB0aGF0IFlvdQogICAgICBtZWV0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKCiAgICAgIChhKSBZb3UgbXVzdCBnaXZlIGFueSBvdGhlciByZWNpcGllbnRzIG9mIHRoZSBXb3JrIG9yCiAgICAgICAgICBEZXJpdmF0aXZlIFdvcmtzIGEgY29weSBvZiB0aGlzIExpY2Vuc2U7IGFuZAoKICAgICAgKGIpIFlvdSBtdXN0IGNhdXNlIGFueSBtb2RpZmllZCBmaWxlcyB0byBjYXJyeSBwcm9taW5lbnQgbm90aWNlcwogICAgICAgICAgc3RhdGluZyB0aGF0IFlvdSBjaGFuZ2VkIHRoZSBmaWxlczsgYW5kCgogICAgICAoYykgWW91IG11c3QgcmV0YWluLCBpbiB0aGUgU291cmNlIGZvcm0gb2YgYW55IERlcml2YXRpdmUgV29ya3MKICAgICAgICAgIHRoYXQgWW91IGRpc3RyaWJ1dGUsIGFsbCBjb3B5cmlnaHQsIHBhdGVudCwgdHJhZGVtYXJrLCBhbmQKICAgICAgICAgIGF0dHJpYnV0aW9uIG5vdGljZXMgZnJvbSB0aGUgU291cmNlIGZvcm0gb2YgdGhlIFdvcmssCiAgICAgICAgICBleGNsdWRpbmcgdGhvc2Ugbm90aWNlcyB0aGF0IGRvIG5vdCBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mCiAgICAgICAgICB0aGUgRGVyaXZhdGl2ZSBXb3JrczsgYW5kCgogICAgICAoZCkgSWYgdGhlIFdvcmsgaW5jbHVkZXMgYSAiTk9USUNFIiB0ZXh0IGZpbGUgYXMgcGFydCBvZiBpdHMKICAgICAgICAgIGRpc3RyaWJ1dGlvbiwgdGhlbiBhbnkgRGVyaXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlIG11c3QKICAgICAgICAgIGluY2x1ZGUgYSByZWFkYWJsZSBjb3B5IG9mIHRoZSBhdHRyaWJ1dGlvbiBub3RpY2VzIGNvbnRhaW5lZAogICAgICAgICAgd2l0aGluIHN1Y2ggTk9USUNFIGZpbGUsIGV4Y2x1ZGluZyB0aG9zZSBub3RpY2VzIHRoYXQgZG8gbm90CiAgICAgICAgICBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpbiBhdCBsZWFzdCBvbmUKICAgICAgICAgIG9mIHRoZSBmb2xsb3dpbmcgcGxhY2VzOiB3aXRoaW4gYSBOT1RJQ0UgdGV4dCBmaWxlIGRpc3RyaWJ1dGVkCiAgICAgICAgICBhcyBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyB3aXRoaW4gdGhlIFNvdXJjZSBmb3JtIG9yCiAgICAgICAgICBkb2N1bWVudGF0aW9uLCBpZiBwcm92aWRlZCBhbG9uZyB3aXRoIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyBvciwKICAgICAgICAgIHdpdGhpbiBhIGRpc3BsYXkgZ2VuZXJhdGVkIGJ5IHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpZiBhbmQKICAgICAgICAgIHdoZXJldmVyIHN1Y2ggdGhpcmQtcGFydHkgbm90aWNlcyBub3JtYWxseSBhcHBlYXIuIFRoZSBjb250ZW50cwogICAgICAgICAgb2YgdGhlIE5PVElDRSBmaWxlIGFyZSBmb3IgaW5mb3JtYXRpb25hbCBwdXJwb3NlcyBvbmx5IGFuZAogICAgICAgICAgZG8gbm90IG1vZGlmeSB0aGUgTGljZW5zZS4gWW91IG1heSBhZGQgWW91ciBvd24gYXR0cmlidXRpb24KICAgICAgICAgIG5vdGljZXMgd2l0aGluIERlcml2YXRpdmUgV29ya3MgdGhhdCBZb3UgZGlzdHJpYnV0ZSwgYWxvbmdzaWRlCiAgICAgICAgICBvciBhcyBhbiBhZGRlbmR1bSB0byB0aGUgTk9USUNFIHRleHQgZnJvbSB0aGUgV29yaywgcHJvdmlkZWQKICAgICAgICAgIHRoYXQgc3VjaCBhZGRpdGlvbmFsIGF0dHJpYnV0aW9uIG5vdGljZXMgY2Fubm90IGJlIGNvbnN0cnVlZAogICAgICAgICAgYXMgbW9kaWZ5aW5nIHRoZSBMaWNlbnNlLgoKICAgICAgWW91IG1heSBhZGQgWW91ciBvd24gY29weXJpZ2h0IHN0YXRlbWVudCB0byBZb3VyIG1vZGlmaWNhdGlvbnMgYW5kCiAgICAgIG1heSBwcm92aWRlIGFkZGl0aW9uYWwgb3IgZGlmZmVyZW50IGxpY2Vuc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMKICAgICAgZm9yIHVzZSwgcmVwcm9kdWN0aW9uLCBvciBkaXN0cmlidXRpb24gb2YgWW91ciBtb2RpZmljYXRpb25zLCBvcgogICAgICBmb3IgYW55IHN1Y2ggRGVyaXZhdGl2ZSBXb3JrcyBhcyBhIHdob2xlLCBwcm92aWRlZCBZb3VyIHVzZSwKICAgICAgcmVwcm9kdWN0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoZSBXb3JrIG90aGVyd2lzZSBjb21wbGllcyB3aXRoCiAgICAgIHRoZSBjb25kaXRpb25zIHN0YXRlZCBpbiB0aGlzIExpY2Vuc2UuCgogICA1LiBTdWJtaXNzaW9uIG9mIENvbnRyaWJ1dGlvbnMuIFVubGVzcyBZb3UgZXhwbGljaXRseSBzdGF0ZSBvdGhlcndpc2UsCiAgICAgIGFueSBDb250cmlidXRpb24gaW50ZW50aW9uYWxseSBzdWJtaXR0ZWQgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yawogICAgICBieSBZb3UgdG8gdGhlIExpY2Vuc29yIHNoYWxsIGJlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICB0aGlzIExpY2Vuc2UsIHdpdGhvdXQgYW55IGFkZGl0aW9uYWwgdGVybXMgb3IgY29uZGl0aW9ucy4KICAgICAgTm90d2l0aHN0YW5kaW5nIHRoZSBhYm92ZSwgbm90aGluZyBoZXJlaW4gc2hhbGwgc3VwZXJzZWRlIG9yIG1vZGlmeQogICAgICB0aGUgdGVybXMgb2YgYW55IHNlcGFyYXRlIGxpY2Vuc2UgYWdyZWVtZW50IHlvdSBtYXkgaGF2ZSBleGVjdXRlZAogICAgICB3aXRoIExpY2Vuc29yIHJlZ2FyZGluZyBzdWNoIENvbnRyaWJ1dGlvbnMuCgogICA2LiBUcmFkZW1hcmtzLiBUaGlzIExpY2Vuc2UgZG9lcyBub3QgZ3JhbnQgcGVybWlzc2lvbiB0byB1c2UgdGhlIHRyYWRlCiAgICAgIG5hbWVzLCB0cmFkZW1hcmtzLCBzZXJ2aWNlIG1hcmtzLCBvciBwcm9kdWN0IG5hbWVzIG9mIHRoZSBMaWNlbnNvciwKICAgICAgZXhjZXB0IGFzIHJlcXVpcmVkIGZvciByZWFzb25hYmxlIGFuZCBjdXN0b21hcnkgdXNlIGluIGRlc2NyaWJpbmcgdGhlCiAgICAgIG9yaWdpbiBvZiB0aGUgV29yayBhbmQgcmVwcm9kdWNpbmcgdGhlIGNvbnRlbnQgb2YgdGhlIE5PVElDRSBmaWxlLgoKICAgNy4gRGlzY2xhaW1lciBvZiBXYXJyYW50eS4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yCiAgICAgIGFncmVlZCB0byBpbiB3cml0aW5nLCBMaWNlbnNvciBwcm92aWRlcyB0aGUgV29yayAoYW5kIGVhY2gKICAgICAgQ29udHJpYnV0b3IgcHJvdmlkZXMgaXRzIENvbnRyaWJ1dGlvbnMpIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgogICAgICBpbXBsaWVkLCBpbmNsdWRpbmcsIHdpdGhvdXQgbGltaXRhdGlvbiwgYW55IHdhcnJhbnRpZXMgb3IgY29uZGl0aW9ucwogICAgICBvZiBUSVRMRSwgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZLCBvciBGSVRORVNTIEZPUiBBCiAgICAgIFBBUlRJQ1VMQVIgUFVSUE9TRS4gWW91IGFyZSBzb2xlbHkgcmVzcG9uc2libGUgZm9yIGRldGVybWluaW5nIHRoZQogICAgICBhcHByb3ByaWF0ZW5lc3Mgb2YgdXNpbmcgb3IgcmVkaXN0cmlidXRpbmcgdGhlIFdvcmsgYW5kIGFzc3VtZSBhbnkKICAgICAgcmlza3MgYXNzb2NpYXRlZCB3aXRoIFlvdXIgZXhlcmNpc2Ugb2YgcGVybWlzc2lvbnMgdW5kZXIgdGhpcyBMaWNlbnNlLgoKICAgOC4gTGltaXRhdGlvbiBvZiBMaWFiaWxpdHkuIEluIG5vIGV2ZW50IGFuZCB1bmRlciBubyBsZWdhbCB0aGVvcnksCiAgICAgIHdoZXRoZXIgaW4gdG9ydCAoaW5jbHVkaW5nIG5lZ2xpZ2VuY2UpLCBjb250cmFjdCwgb3Igb3RoZXJ3aXNlLAogICAgICB1bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgKHN1Y2ggYXMgZGVsaWJlcmF0ZSBhbmQgZ3Jvc3NseQogICAgICBuZWdsaWdlbnQgYWN0cykgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNoYWxsIGFueSBDb250cmlidXRvciBiZQogICAgICBsaWFibGUgdG8gWW91IGZvciBkYW1hZ2VzLCBpbmNsdWRpbmcgYW55IGRpcmVjdCwgaW5kaXJlY3QsIHNwZWNpYWwsCiAgICAgIGluY2lkZW50YWwsIG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvZiBhbnkgY2hhcmFjdGVyIGFyaXNpbmcgYXMgYQogICAgICByZXN1bHQgb2YgdGhpcyBMaWNlbnNlIG9yIG91dCBvZiB0aGUgdXNlIG9yIGluYWJpbGl0eSB0byB1c2UgdGhlCiAgICAgIFdvcmsgKGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gZGFtYWdlcyBmb3IgbG9zcyBvZiBnb29kd2lsbCwKICAgICAgd29yayBzdG9wcGFnZSwgY29tcHV0ZXIgZmFpbHVyZSBvciBtYWxmdW5jdGlvbiwgb3IgYW55IGFuZCBhbGwKICAgICAgb3RoZXIgY29tbWVyY2lhbCBkYW1hZ2VzIG9yIGxvc3NlcyksIGV2ZW4gaWYgc3VjaCBDb250cmlidXRvcgogICAgICBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiBzdWNoIGRhbWFnZXMuCgogICA5LiBBY2NlcHRpbmcgV2FycmFudHkgb3IgQWRkaXRpb25hbCBMaWFiaWxpdHkuIFdoaWxlIHJlZGlzdHJpYnV0aW5nCiAgICAgIHRoZSBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgWW91IG1heSBjaG9vc2UgdG8gb2ZmZXIsCiAgICAgIGFuZCBjaGFyZ2UgYSBmZWUgZm9yLCBhY2NlcHRhbmNlIG9mIHN1cHBvcnQsIHdhcnJhbnR5LCBpbmRlbW5pdHksCiAgICAgIG9yIG90aGVyIGxpYWJpbGl0eSBvYmxpZ2F0aW9ucyBhbmQvb3IgcmlnaHRzIGNvbnNpc3RlbnQgd2l0aCB0aGlzCiAgICAgIExpY2Vuc2UuIEhvd2V2ZXIsIGluIGFjY2VwdGluZyBzdWNoIG9ibGlnYXRpb25zLCBZb3UgbWF5IGFjdCBvbmx5CiAgICAgIG9uIFlvdXIgb3duIGJlaGFsZiBhbmQgb24gWW91ciBzb2xlIHJlc3BvbnNpYmlsaXR5LCBub3Qgb24gYmVoYWxmCiAgICAgIG9mIGFueSBvdGhlciBDb250cmlidXRvciwgYW5kIG9ubHkgaWYgWW91IGFncmVlIHRvIGluZGVtbmlmeSwKICAgICAgZGVmZW5kLCBhbmQgaG9sZCBlYWNoIENvbnRyaWJ1dG9yIGhhcm1sZXNzIGZvciBhbnkgbGlhYmlsaXR5CiAgICAgIGluY3VycmVkIGJ5LCBvciBjbGFpbXMgYXNzZXJ0ZWQgYWdhaW5zdCwgc3VjaCBDb250cmlidXRvciBieSByZWFzb24KICAgICAgb2YgeW91ciBhY2NlcHRpbmcgYW55IHN1Y2ggd2FycmFudHkgb3IgYWRkaXRpb25hbCBsaWFiaWxpdHkuCgogICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKCiAgIEFQUEVORElYOiBIb3cgdG8gYXBwbHkgdGhlIEFwYWNoZSBMaWNlbnNlIHRvIHlvdXIgd29yay4KCiAgICAgIFRvIGFwcGx5IHRoZSBBcGFjaGUgTGljZW5zZSB0byB5b3VyIHdvcmssIGF0dGFjaCB0aGUgZm9sbG93aW5nCiAgICAgIGJvaWxlcnBsYXRlIG5vdGljZSwgd2l0aCB0aGUgZmllbGRzIGVuY2xvc2VkIGJ5IGJyYWNrZXRzICJbXSIKICAgICAgcmVwbGFjZWQgd2l0aCB5b3VyIG93biBpZGVudGlmeWluZyBpbmZvcm1hdGlvbi4gKERvbid0IGluY2x1ZGUKICAgICAgdGhlIGJyYWNrZXRzISkgIFRoZSB0ZXh0IHNob3VsZCBiZSBlbmNsb3NlZCBpbiB0aGUgYXBwcm9wcmlhdGUKICAgICAgY29tbWVudCBzeW50YXggZm9yIHRoZSBmaWxlIGZvcm1hdC4gV2UgYWxzbyByZWNvbW1lbmQgdGhhdCBhCiAgICAgIGZpbGUgb3IgY2xhc3MgbmFtZSBhbmQgZGVzY3JpcHRpb24gb2YgcHVycG9zZSBiZSBpbmNsdWRlZCBvbiB0aGUKICAgICAgc2FtZSAicHJpbnRlZCBwYWdlIiBhcyB0aGUgY29weXJpZ2h0IG5vdGljZSBmb3IgZWFzaWVyCiAgICAgIGlkZW50aWZpY2F0aW9uIHdpdGhpbiB0aGlyZC1wYXJ0eSBhcmNoaXZlcy4KCiAgIENvcHlyaWdodCBbeXl5eV0gW25hbWUgb2YgY29weXJpZ2h0IG93bmVyXQoKICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgo= pkg:pypi/license-expression@30.3.0 @@ -928,69 +210,11 @@ https://www.contributor-covenant.org/version/1/4/code-of-conduct.html declared license file: LICENSE.txt - Copyright (c) 2004 Infrae. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - 3. Neither the name of Infrae nor the names of its contributors may - be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INFRAE OR -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - + Q29weXJpZ2h0IChjKSAyMDA0IEluZnJhZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAgIAogIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCiAgICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQogICAgIGRpc3RyaWJ1dGlvbi4KCiAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBJbmZyYWUgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heQogICAgIGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCiAgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCgpUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCiJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgpBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgSU5GUkFFIE9SCkNPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLApFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sClBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgpQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GCkxJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCk5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwpTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K declared license file: LICENSES.txt - lxml is copyright Infrae and distributed under the BSD license (see -doc/licenses/BSD.txt), with the following exceptions: - -Some code, such a selftest.py, selftest2.py and -src/lxml/_elementpath.py are derived from ElementTree and -cElementTree. See doc/licenses/elementtree.txt for the license text. - -lxml.cssselect and lxml.html are copyright Ian Bicking and distributed -under the BSD license (see doc/licenses/BSD.txt). - -test.py, the test-runner script, is GPL and copyright Shuttleworth -Foundation. See doc/licenses/GPL.txt. It is believed the unchanged -inclusion of test.py to run the unit test suite falls under the -"aggregation" clause of the GPL and thus does not affect the license -of the rest of the package. - -The isoschematron implementation uses several XSL and RelaxNG resources: - * The (XML syntax) RelaxNG schema for schematron, copyright International - Organization for Standardization (see - src/lxml/isoschematron/resources/rng/iso-schematron.rng for the license - text) - * The skeleton iso-schematron-xlt1 pure-xslt schematron implementation - xsl stylesheets, copyright Rick Jelliffe and Academia Sinica Computing - Center, Taiwan (see the xsl files here for the license text: - src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/) - * The xsd/rng schema schematron extraction xsl transformations are unlicensed - and copyright the respective authors as noted (see - src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl and - src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl) - + bHhtbCBpcyBjb3B5cmlnaHQgSW5mcmFlIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgQlNEIGxpY2Vuc2UgKHNlZQpkb2MvbGljZW5zZXMvQlNELnR4dCksIHdpdGggdGhlIGZvbGxvd2luZyBleGNlcHRpb25zOgoKU29tZSBjb2RlLCBzdWNoIGEgc2VsZnRlc3QucHksIHNlbGZ0ZXN0Mi5weSBhbmQKc3JjL2x4bWwvX2VsZW1lbnRwYXRoLnB5IGFyZSBkZXJpdmVkIGZyb20gRWxlbWVudFRyZWUgYW5kCmNFbGVtZW50VHJlZS4gU2VlIGRvYy9saWNlbnNlcy9lbGVtZW50dHJlZS50eHQgZm9yIHRoZSBsaWNlbnNlIHRleHQuCgpseG1sLmNzc3NlbGVjdCBhbmQgbHhtbC5odG1sIGFyZSBjb3B5cmlnaHQgSWFuIEJpY2tpbmcgYW5kIGRpc3RyaWJ1dGVkCnVuZGVyIHRoZSBCU0QgbGljZW5zZSAoc2VlIGRvYy9saWNlbnNlcy9CU0QudHh0KS4KCnRlc3QucHksIHRoZSB0ZXN0LXJ1bm5lciBzY3JpcHQsIGlzIEdQTCBhbmQgY29weXJpZ2h0IFNodXR0bGV3b3J0aApGb3VuZGF0aW9uLiBTZWUgZG9jL2xpY2Vuc2VzL0dQTC50eHQuIEl0IGlzIGJlbGlldmVkIHRoZSB1bmNoYW5nZWQKaW5jbHVzaW9uIG9mIHRlc3QucHkgdG8gcnVuIHRoZSB1bml0IHRlc3Qgc3VpdGUgZmFsbHMgdW5kZXIgdGhlCiJhZ2dyZWdhdGlvbiIgY2xhdXNlIG9mIHRoZSBHUEwgYW5kIHRodXMgZG9lcyBub3QgYWZmZWN0IHRoZSBsaWNlbnNlCm9mIHRoZSByZXN0IG9mIHRoZSBwYWNrYWdlLgoKVGhlIGlzb3NjaGVtYXRyb24gaW1wbGVtZW50YXRpb24gdXNlcyBzZXZlcmFsIFhTTCBhbmQgUmVsYXhORyByZXNvdXJjZXM6CiAqIFRoZSAoWE1MIHN5bnRheCkgUmVsYXhORyBzY2hlbWEgZm9yIHNjaGVtYXRyb24sIGNvcHlyaWdodCBJbnRlcm5hdGlvbmFsCiAgIE9yZ2FuaXphdGlvbiBmb3IgU3RhbmRhcmRpemF0aW9uIChzZWUgCiAgIHNyYy9seG1sL2lzb3NjaGVtYXRyb24vcmVzb3VyY2VzL3JuZy9pc28tc2NoZW1hdHJvbi5ybmcgZm9yIHRoZSBsaWNlbnNlCiAgIHRleHQpCiAqIFRoZSBza2VsZXRvbiBpc28tc2NoZW1hdHJvbi14bHQxIHB1cmUteHNsdCBzY2hlbWF0cm9uIGltcGxlbWVudGF0aW9uCiAgIHhzbCBzdHlsZXNoZWV0cywgY29weXJpZ2h0IFJpY2sgSmVsbGlmZmUgYW5kIEFjYWRlbWlhIFNpbmljYSBDb21wdXRpbmcKICAgQ2VudGVyLCBUYWl3YW4gKHNlZSB0aGUgeHNsIGZpbGVzIGhlcmUgZm9yIHRoZSBsaWNlbnNlIHRleHQ6IAogICBzcmMvbHhtbC9pc29zY2hlbWF0cm9uL3Jlc291cmNlcy94c2wvaXNvLXNjaGVtYXRyb24teHNsdDEvKQogKiBUaGUgeHNkL3JuZyBzY2hlbWEgc2NoZW1hdHJvbiBleHRyYWN0aW9uIHhzbCB0cmFuc2Zvcm1hdGlvbnMgYXJlIHVubGljZW5zZWQKICAgYW5kIGNvcHlyaWdodCB0aGUgcmVzcGVjdGl2ZSBhdXRob3JzIGFzIG5vdGVkIChzZWUgCiAgIHNyYy9seG1sL2lzb3NjaGVtYXRyb24vcmVzb3VyY2VzL3hzbC9STkcyU2NodHJuLnhzbCBhbmQKICAgc3JjL2x4bWwvaXNvc2NoZW1hdHJvbi9yZXNvdXJjZXMveHNsL1hTRDJTY2h0cm4ueHNsKQo= pkg:pypi/lxml@5.3.0 @@ -1008,44 +232,6 @@ The isoschematron implementation uses several XSL and RelaxNG resources: regression-issue868 0.1 - - - declared license file: my_licenses/richtext.rtf - e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA= - - - declared license file: my_licenses/utf-16be_withBOM.txt - this file is -utf-16be encoded -with BOM -😃 - - - - declared license file: my_licenses/utf-16le_withBOM.txt - this file is -utf-16le encoded -with BOM -😃 - - - - declared license file: my_licenses/utf-8_noBOM.txt - this file is -utf-8 encoded -without BOM -😃 - - - - declared license file: my_licenses/utf-8_withBOM.txt - this file is -utf-8 encoded -with BOM -😃 - - - file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.json.bin index e05a432fb..8d15fdfbe 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.json.bin @@ -35,15 +35,6 @@ "license": { "id": "MIT" } - }, - { - "license": { - "name": "declared license file: LICENSE", - "text": { - "content": "The MIT License (MIT)\n\nCopyright (c) 2015 Hynek Schlawack and the attrs contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n", - "contentType": "text/plain" - } - } } ], "name": "attrs", @@ -71,8 +62,9 @@ "license": { "name": "declared license file: CHANGELOG.rst", "text": { - "content": "\nChangelog\n=========\n\n\nnext\n----\n\n\n4.0 (2022-05-05)\n----------------\n\n* API changes\n\n * Drop support for Python 2.\n * Test on Python 3.10\n * Make Expression.sort_order an instance attributes and not a class attribute\n\n* Misc.\n\n * Correct licensing documentation\n * Improve docstringf and apply minor refactorings\n * Adopt black code style and isort for imports\n * Drop Travis and use GitHub actions for CI\n\n\n3.8 (2020-06-10)\n----------------\n\n* API changes\n\n * Add support for evaluation of boolean expression.\n Thank you to Lars van Gemerden @gemerden\n\n* Bug fixes\n\n * Fix parsing of tokens that have a number as the first character. \n Thank you to Jeff Cohen @ jcohen28\n * Restore proper Python 2 compatibility. \n Thank you to Benjy Weinberger @benjyw\n\n* Improve documentation\n\n * Add pointers to Linux distro packages.\n Thank you to Max Mehl @mxmehl and Carmen Bianca Bakker @carmenbianca\n * Fix typo.\n Thank you to Gabriel Niebler @der-gabe\n\n\n3.7 (2019-10-04)\n----------------\n\n* API changes\n\n * Add new sort argument to simplify() to optionally not sort when simplifying\n expressions (e.g. not applying \"commutativity\"). Thank you to Steven Esser\n @majurg for this\n * Add new argument to tokenizer to optionally accept extra characters in symbol\n tokens. Thank you to @carpie for this\n\n\n3.6 (2018-08-06)\n----------------\n\n* No API changes\n\n* Bug fixes\n\n * Fix De Morgan's laws effect on double negation propositions. Thank you to Douglas Cardoso for this\n * Improve error checking when parsing\n\n\n3.5 (Nov 1, 2017)\n-----------------\n\n* No API changes\n\n* Bug fixes\n\n * Documentation updates and add testing for Python 3.6. Thank you to Alexander Lisianoi @alisianoi\n * Improve testng and expression equivalence checks\n * Improve subs() method to an expression \n\n \n\n3.4 (May 12, 2017)\n------------------\n\n* No API changes\n\n* Bug fixes and improvements\n\n * Fix various documentation typos and improve tests . Thank you to Alexander Lisianoi @alisianoi\n * Fix handling for literals vs. symbols in negations Thank you to @YaronK\n\n\n3.3 (2017-02-09)\n----------------\n\n* API changes\n\n * #40 and #50 Expression.subs() now takes 'default' thanks to @kronuz\n * #45 simplify=False is now the default for parse and related functions or methods.\n * #40 Use \"&\" and \"|\" as default operators\n\n* Bug fixes\n\n * #60 Fix bug for \"a or b c\" which is not a valid expression\n * #58 Fix math formula display in docs\n * Improve handling of parse errors\n\n\n2.0.0 (2016-05-11)\n------------------\n\n* API changes\n\n * New algebra definition. Refactored class hierarchy. Improved parsing.\n\n* New features\n\n * possibility to subclass algebra definition\n * new normal forms shortcuts for DNF and CNF.\n\n\n1.1 (2016-04-06)\n------------------\n\n* Initial release on Pypi.\n", - "contentType": "text/prs.fallenstein.rst" + "content": "CkNoYW5nZWxvZwo9PT09PT09PT0KCgpuZXh0Ci0tLS0KCgo0LjAgKDIwMjItMDUtMDUpCi0tLS0tLS0tLS0tLS0tLS0KCiogQVBJIGNoYW5nZXMKCiAqIERyb3Agc3VwcG9ydCBmb3IgUHl0aG9uIDIuCiAqIFRlc3Qgb24gUHl0aG9uIDMuMTAKICogTWFrZSBFeHByZXNzaW9uLnNvcnRfb3JkZXIgYW4gaW5zdGFuY2UgYXR0cmlidXRlcyBhbmQgbm90IGEgY2xhc3MgYXR0cmlidXRlCgoqIE1pc2MuCgogKiBDb3JyZWN0IGxpY2Vuc2luZyBkb2N1bWVudGF0aW9uCiAqIEltcHJvdmUgZG9jc3RyaW5nZiBhbmQgYXBwbHkgbWlub3IgcmVmYWN0b3JpbmdzCiAqIEFkb3B0IGJsYWNrIGNvZGUgc3R5bGUgYW5kIGlzb3J0IGZvciBpbXBvcnRzCiAqIERyb3AgVHJhdmlzIGFuZCB1c2UgR2l0SHViIGFjdGlvbnMgZm9yIENJCgoKMy44ICgyMDIwLTA2LTEwKQotLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiBBZGQgc3VwcG9ydCBmb3IgZXZhbHVhdGlvbiBvZiBib29sZWFuIGV4cHJlc3Npb24uCiAgIFRoYW5rIHlvdSB0byBMYXJzIHZhbiBHZW1lcmRlbiBAZ2VtZXJkZW4KCiogQnVnIGZpeGVzCgogKiBGaXggcGFyc2luZyBvZiB0b2tlbnMgdGhhdCBoYXZlIGEgbnVtYmVyIGFzIHRoZSBmaXJzdCBjaGFyYWN0ZXIuIAogICBUaGFuayB5b3UgdG8gSmVmZiBDb2hlbiBAIGpjb2hlbjI4CiAqIFJlc3RvcmUgcHJvcGVyIFB5dGhvbiAyIGNvbXBhdGliaWxpdHkuIAogICBUaGFuayB5b3UgdG8gQmVuankgV2VpbmJlcmdlciBAYmVuanl3CgoqIEltcHJvdmUgZG9jdW1lbnRhdGlvbgoKICogQWRkIHBvaW50ZXJzIHRvIExpbnV4IGRpc3RybyBwYWNrYWdlcy4KICAgVGhhbmsgeW91IHRvIE1heCBNZWhsIEBteG1laGwgYW5kIENhcm1lbiBCaWFuY2EgQmFra2VyIEBjYXJtZW5iaWFuY2EKICogRml4IHR5cG8uCiAgIFRoYW5rIHlvdSB0byBHYWJyaWVsIE5pZWJsZXIgQGRlci1nYWJlCgoKMy43ICgyMDE5LTEwLTA0KQotLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiBBZGQgbmV3IHNvcnQgYXJndW1lbnQgdG8gc2ltcGxpZnkoKSB0byBvcHRpb25hbGx5IG5vdCBzb3J0IHdoZW4gc2ltcGxpZnlpbmcKICAgZXhwcmVzc2lvbnMgKGUuZy4gbm90IGFwcGx5aW5nICJjb21tdXRhdGl2aXR5IikuIFRoYW5rIHlvdSB0byBTdGV2ZW4gRXNzZXIKICAgQG1hanVyZyBmb3IgdGhpcwogKiBBZGQgbmV3IGFyZ3VtZW50IHRvIHRva2VuaXplciB0byBvcHRpb25hbGx5IGFjY2VwdCBleHRyYSBjaGFyYWN0ZXJzIGluIHN5bWJvbAogICB0b2tlbnMuIFRoYW5rIHlvdSB0byBAY2FycGllIGZvciB0aGlzCgoKMy42ICgyMDE4LTA4LTA2KQotLS0tLS0tLS0tLS0tLS0tCgoqIE5vIEFQSSBjaGFuZ2VzCgoqIEJ1ZyBmaXhlcwoKICogRml4IERlIE1vcmdhbidzIGxhd3MgZWZmZWN0IG9uIGRvdWJsZSBuZWdhdGlvbiBwcm9wb3NpdGlvbnMuIFRoYW5rIHlvdSB0byBEb3VnbGFzIENhcmRvc28gZm9yIHRoaXMKICogSW1wcm92ZSBlcnJvciBjaGVja2luZyB3aGVuIHBhcnNpbmcKCgozLjUgKE5vdiAxLCAyMDE3KQotLS0tLS0tLS0tLS0tLS0tLQoKKiBObyBBUEkgY2hhbmdlcwoKKiBCdWcgZml4ZXMKCiAqIERvY3VtZW50YXRpb24gdXBkYXRlcyBhbmQgYWRkIHRlc3RpbmcgZm9yIFB5dGhvbiAzLjYuIFRoYW5rIHlvdSB0byBBbGV4YW5kZXIgTGlzaWFub2kgQGFsaXNpYW5vaQogKiBJbXByb3ZlIHRlc3RuZyBhbmQgZXhwcmVzc2lvbiBlcXVpdmFsZW5jZSBjaGVja3MKICogSW1wcm92ZSBzdWJzKCkgbWV0aG9kIHRvIGFuIGV4cHJlc3Npb24gCgogCgozLjQgKE1heSAxMiwgMjAxNykKLS0tLS0tLS0tLS0tLS0tLS0tCgoqIE5vIEFQSSBjaGFuZ2VzCgoqIEJ1ZyBmaXhlcyBhbmQgaW1wcm92ZW1lbnRzCgogKiBGaXggdmFyaW91cyBkb2N1bWVudGF0aW9uIHR5cG9zIGFuZCBpbXByb3ZlIHRlc3RzIC4gVGhhbmsgeW91IHRvIEFsZXhhbmRlciBMaXNpYW5vaSBAYWxpc2lhbm9pCiAqIEZpeCBoYW5kbGluZyBmb3IgbGl0ZXJhbHMgdnMuIHN5bWJvbHMgaW4gbmVnYXRpb25zIFRoYW5rIHlvdSB0byBAWWFyb25LCgoKMy4zICgyMDE3LTAyLTA5KQotLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiAjNDAgYW5kICM1MCBFeHByZXNzaW9uLnN1YnMoKSBub3cgdGFrZXMgJ2RlZmF1bHQnIHRoYW5rcyB0byBAa3JvbnV6CiAqICM0NSBzaW1wbGlmeT1GYWxzZSBpcyBub3cgdGhlIGRlZmF1bHQgZm9yIHBhcnNlIGFuZCByZWxhdGVkIGZ1bmN0aW9ucyBvciBtZXRob2RzLgogKiAjNDAgVXNlICImIiBhbmQgInwiIGFzIGRlZmF1bHQgb3BlcmF0b3JzCgoqIEJ1ZyBmaXhlcwoKICogIzYwIEZpeCBidWcgZm9yICJhIG9yIGIgYyIgd2hpY2ggaXMgbm90IGEgdmFsaWQgZXhwcmVzc2lvbgogKiAjNTggRml4IG1hdGggZm9ybXVsYSBkaXNwbGF5IGluIGRvY3MKICogSW1wcm92ZSBoYW5kbGluZyBvZiBwYXJzZSBlcnJvcnMKCgoyLjAuMCAoMjAxNi0wNS0xMSkKLS0tLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiBOZXcgYWxnZWJyYSBkZWZpbml0aW9uLiBSZWZhY3RvcmVkIGNsYXNzIGhpZXJhcmNoeS4gSW1wcm92ZWQgcGFyc2luZy4KCiogTmV3IGZlYXR1cmVzCgogKiBwb3NzaWJpbGl0eSB0byBzdWJjbGFzcyBhbGdlYnJhIGRlZmluaXRpb24KICogbmV3IG5vcm1hbCBmb3JtcyBzaG9ydGN1dHMgZm9yIERORiBhbmQgQ05GLgoKCjEuMSAoMjAxNi0wNC0wNikKLS0tLS0tLS0tLS0tLS0tLS0tCgoqIEluaXRpYWwgcmVsZWFzZSBvbiBQeXBpLgo=", + "contentType": "text/prs.fallenstein.rst", + "encoding": "base64" } } }, @@ -80,8 +72,9 @@ "license": { "name": "declared license file: LICENSE.txt", "text": { - "content": "Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice, this\nlist of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice,\nthis list of conditions and the following disclaimer in the documentation and/or\nother materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" + "content": "Q29weXJpZ2h0IChjKSBTZWJhc3RpYW4gS3JhZW1lciwgYmFzdGkua3JAZ21haWwuY29tIGFuZCBvdGhlcnMKQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCmFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKCjEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcwpsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KCjIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3IKb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQpESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgpBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwpMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCg==", + "contentType": "text/plain", + "encoding": "base64" } } }, @@ -89,8 +82,9 @@ "license": { "name": "declared license file: README.rst", "text": { - "content": "boolean.py\n==========\n\n\"boolean.py\" is a small library implementing a boolean algebra. It\ndefines two base elements, TRUE and FALSE, and a Symbol class that can\ntake on one of these two values. Calculations are done in terms of AND,\nOR and NOT - other compositions like XOR and NAND are not implemented\nbut can be emulated with AND or and NOT. Expressions are constructed\nfrom parsed strings or in Python.\n\nIt runs on Python 3.6+\nYou can use older version 3.x for Python 2.7+ support.\n\nhttps://github.com/bastikr/boolean.py\n\nBuild status: |Build Status|\n\n\nExample\n-------\n\n::\n\n >>> import boolean\n >>> algebra = boolean.BooleanAlgebra()\n >>> expression1 = algebra.parse(u'apple and (oranges or banana) and not banana', simplify=False)\n >>> expression1\n AND(Symbol('apple'), OR(Symbol('oranges'), Symbol('banana')), NOT(Symbol('banana')))\n\n >>> expression2 = algebra.parse('(oranges | banana) and not banana & apple', simplify=True)\n >>> expression2\n AND(Symbol('apple'), NOT(Symbol('banana')), Symbol('oranges'))\n\n >>> expression1 == expression2\n False\n >>> expression1.simplify() == expression2\n True\n\n\nDocumentation\n-------------\n\nhttp://readthedocs.org/docs/booleanpy/en/latest/\n\n\nInstallation\n------------\n\nInstallation via pip\n~~~~~~~~~~~~~~~~~~~~\n\nTo install boolean.py, you need to have the following pieces of software\non your computer:\n\n- Python 3.6+\n- pip\n\nYou then only need to run the following command:\n\n``pip install boolean.py``\n\n\nInstallation via package managers\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThere are packages available for easy install on some operating systems.\nYou are welcome to help us package this tool for more distributions!\n\n- boolean.py has been packaged as Arch Linux, Fedora, openSus,\n nixpkgs, Guix, DragonFly and FreeBSD \n `packages `__ .\n\nIn particular:\n\n- Arch Linux (AUR):\n `python-boolean.py `__\n- Fedora:\n `python-boolean.py `__\n- openSUSE:\n `python-boolean.py `__\n\n\nTesting\n-------\n\nTest ``boolean.py`` with your current Python environment:\n\n``python setup.py test``\n\nTest with all of the supported Python environments using ``tox``:\n\n::\n\n pip install -r requirements-dev.txt\n tox\n\nIf ``tox`` throws ``InterpreterNotFound``, limit it to python\ninterpreters that are actually installed on your machine:\n\n::\n\n tox -e py36\n\nAlternatively use pytest.\n\n\nLicense\n-------\n\nCopyright (c) Sebastian Kraemer, basti.kr@gmail.com and others\nSPDX-License-Identifier: BSD-2-Clause\n\n.. |Build Status| image:: https://travis-ci.org/bastikr/boolean.py.svg?branch=master\n :target: https://travis-ci.org/bastikr/boolean.py\n", - "contentType": "text/prs.fallenstein.rst" + "content": "Ym9vbGVhbi5weQo9PT09PT09PT09CgoiYm9vbGVhbi5weSIgaXMgYSBzbWFsbCBsaWJyYXJ5IGltcGxlbWVudGluZyBhIGJvb2xlYW4gYWxnZWJyYS4gSXQKZGVmaW5lcyB0d28gYmFzZSBlbGVtZW50cywgVFJVRSBhbmQgRkFMU0UsIGFuZCBhIFN5bWJvbCBjbGFzcyB0aGF0IGNhbgp0YWtlIG9uIG9uZSBvZiB0aGVzZSB0d28gdmFsdWVzLiBDYWxjdWxhdGlvbnMgYXJlIGRvbmUgaW4gdGVybXMgb2YgQU5ELApPUiBhbmQgTk9UIC0gb3RoZXIgY29tcG9zaXRpb25zIGxpa2UgWE9SIGFuZCBOQU5EIGFyZSBub3QgaW1wbGVtZW50ZWQKYnV0IGNhbiBiZSBlbXVsYXRlZCB3aXRoIEFORCBvciBhbmQgTk9ULiBFeHByZXNzaW9ucyBhcmUgY29uc3RydWN0ZWQKZnJvbSBwYXJzZWQgc3RyaW5ncyBvciBpbiBQeXRob24uCgpJdCBydW5zIG9uIFB5dGhvbiAzLjYrCllvdSBjYW4gdXNlIG9sZGVyIHZlcnNpb24gMy54IGZvciBQeXRob24gMi43KyBzdXBwb3J0LgoKaHR0cHM6Ly9naXRodWIuY29tL2Jhc3Rpa3IvYm9vbGVhbi5weQoKQnVpbGQgc3RhdHVzOiB8QnVpbGQgU3RhdHVzfAoKCkV4YW1wbGUKLS0tLS0tLQoKOjoKCiAgICA+Pj4gaW1wb3J0IGJvb2xlYW4KICAgID4+PiBhbGdlYnJhID0gYm9vbGVhbi5Cb29sZWFuQWxnZWJyYSgpCiAgICA+Pj4gZXhwcmVzc2lvbjEgPSBhbGdlYnJhLnBhcnNlKHUnYXBwbGUgYW5kIChvcmFuZ2VzIG9yIGJhbmFuYSkgYW5kIG5vdCBiYW5hbmEnLCBzaW1wbGlmeT1GYWxzZSkKICAgID4+PiBleHByZXNzaW9uMQogICAgQU5EKFN5bWJvbCgnYXBwbGUnKSwgT1IoU3ltYm9sKCdvcmFuZ2VzJyksIFN5bWJvbCgnYmFuYW5hJykpLCBOT1QoU3ltYm9sKCdiYW5hbmEnKSkpCgogICAgPj4+IGV4cHJlc3Npb24yID0gYWxnZWJyYS5wYXJzZSgnKG9yYW5nZXMgfCBiYW5hbmEpIGFuZCBub3QgYmFuYW5hICYgYXBwbGUnLCBzaW1wbGlmeT1UcnVlKQogICAgPj4+IGV4cHJlc3Npb24yCiAgICBBTkQoU3ltYm9sKCdhcHBsZScpLCBOT1QoU3ltYm9sKCdiYW5hbmEnKSksIFN5bWJvbCgnb3JhbmdlcycpKQoKICAgID4+PiBleHByZXNzaW9uMSA9PSBleHByZXNzaW9uMgogICAgRmFsc2UKICAgID4+PiBleHByZXNzaW9uMS5zaW1wbGlmeSgpID09IGV4cHJlc3Npb24yCiAgICBUcnVlCgoKRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tCgpodHRwOi8vcmVhZHRoZWRvY3Mub3JnL2RvY3MvYm9vbGVhbnB5L2VuL2xhdGVzdC8KCgpJbnN0YWxsYXRpb24KLS0tLS0tLS0tLS0tCgpJbnN0YWxsYXRpb24gdmlhIHBpcAp+fn5+fn5+fn5+fn5+fn5+fn5+fgoKVG8gaW5zdGFsbCBib29sZWFuLnB5LCB5b3UgbmVlZCB0byBoYXZlIHRoZSBmb2xsb3dpbmcgcGllY2VzIG9mIHNvZnR3YXJlCm9uIHlvdXIgY29tcHV0ZXI6CgotICBQeXRob24gMy42KwotICBwaXAKCllvdSB0aGVuIG9ubHkgbmVlZCB0byBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kOgoKYGBwaXAgaW5zdGFsbCBib29sZWFuLnB5YGAKCgpJbnN0YWxsYXRpb24gdmlhIHBhY2thZ2UgbWFuYWdlcnMKfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgpUaGVyZSBhcmUgcGFja2FnZXMgYXZhaWxhYmxlIGZvciBlYXN5IGluc3RhbGwgb24gc29tZSBvcGVyYXRpbmcgc3lzdGVtcy4KWW91IGFyZSB3ZWxjb21lIHRvIGhlbHAgdXMgcGFja2FnZSB0aGlzIHRvb2wgZm9yIG1vcmUgZGlzdHJpYnV0aW9ucyEKCi0gIGJvb2xlYW4ucHkgaGFzIGJlZW4gcGFja2FnZWQgYXMgQXJjaCBMaW51eCwgRmVkb3JhLCBvcGVuU3VzLAogICBuaXhwa2dzLCBHdWl4LCBEcmFnb25GbHkgYW5kIEZyZWVCU0QgCiAgIGBwYWNrYWdlcyA8aHR0cHM6Ly9yZXBvbG9neS5vcmcvcHJvamVjdC9weXRob246Ym9vbGVhbi5weS92ZXJzaW9ucz5gX18gLgoKSW4gcGFydGljdWxhcjoKCi0gIEFyY2ggTGludXggKEFVUik6CiAgIGBweXRob24tYm9vbGVhbi5weSA8aHR0cHM6Ly9hdXIuYXJjaGxpbnV4Lm9yZy9wYWNrYWdlcy9weXRob24tYm9vbGVhbi5weS8+YF9fCi0gIEZlZG9yYToKICAgYHB5dGhvbi1ib29sZWFuLnB5IDxodHRwczovL2FwcHMuZmVkb3JhcHJvamVjdC5vcmcvcGFja2FnZXMvcHl0aG9uLWJvb2xlYW4ucHk+YF9fCi0gIG9wZW5TVVNFOgogICBgcHl0aG9uLWJvb2xlYW4ucHkgPGh0dHBzOi8vc29mdHdhcmUub3BlbnN1c2Uub3JnL3BhY2thZ2UvcHl0aG9uLWJvb2xlYW4ucHk+YF9fCgoKVGVzdGluZwotLS0tLS0tCgpUZXN0IGBgYm9vbGVhbi5weWBgIHdpdGggeW91ciBjdXJyZW50IFB5dGhvbiBlbnZpcm9ubWVudDoKCmBgcHl0aG9uIHNldHVwLnB5IHRlc3RgYAoKVGVzdCB3aXRoIGFsbCBvZiB0aGUgc3VwcG9ydGVkIFB5dGhvbiBlbnZpcm9ubWVudHMgdXNpbmcgYGB0b3hgYDoKCjo6CgogICAgcGlwIGluc3RhbGwgLXIgcmVxdWlyZW1lbnRzLWRldi50eHQKICAgIHRveAoKSWYgYGB0b3hgYCB0aHJvd3MgYGBJbnRlcnByZXRlck5vdEZvdW5kYGAsIGxpbWl0IGl0IHRvIHB5dGhvbgppbnRlcnByZXRlcnMgdGhhdCBhcmUgYWN0dWFsbHkgaW5zdGFsbGVkIG9uIHlvdXIgbWFjaGluZToKCjo6CgogICAgdG94IC1lIHB5MzYKCkFsdGVybmF0aXZlbHkgdXNlIHB5dGVzdC4KCgpMaWNlbnNlCi0tLS0tLS0KCkNvcHlyaWdodCAoYykgU2ViYXN0aWFuIEtyYWVtZXIsIGJhc3RpLmtyQGdtYWlsLmNvbSBhbmQgb3RoZXJzClNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UKCi4uIHxCdWlsZCBTdGF0dXN8IGltYWdlOjogaHR0cHM6Ly90cmF2aXMtY2kub3JnL2Jhc3Rpa3IvYm9vbGVhbi5weS5zdmc/YnJhbmNoPW1hc3RlcgogICA6dGFyZ2V0OiBodHRwczovL3RyYXZpcy1jaS5vcmcvYmFzdGlrci9ib29sZWFuLnB5Cg==", + "contentType": "text/prs.fallenstein.rst", + "encoding": "base64" } } } @@ -135,8 +129,9 @@ "license": { "name": "declared license file: LICENSE", "text": { - "content": " GNU LESSER GENERAL PUBLIC LICENSE\n Version 2.1, February 1999\n\n Copyright (C) 1991, 1999 Free Software Foundation, Inc.\n 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n[This is the first released version of the Lesser GPL. It also counts\n as the successor of the GNU Library Public License, version 2, hence\n the version number 2.1.]\n\n Preamble\n\n The licenses for most software are designed to take away your\nfreedom to share and change it. By contrast, the GNU General Public\nLicenses are intended to guarantee your freedom to share and change\nfree software--to make sure the software is free for all its users.\n\n This license, the Lesser General Public License, applies to some\nspecially designated software packages--typically libraries--of the\nFree Software Foundation and other authors who decide to use it. You\ncan use it too, but we suggest you first think carefully about whether\nthis license or the ordinary General Public License is the better\nstrategy to use in any particular case, based on the explanations below.\n\n When we speak of free software, we are referring to freedom of use,\nnot price. Our General Public Licenses are designed to make sure that\nyou have the freedom to distribute copies of free software (and charge\nfor this service if you wish); that you receive source code or can get\nit if you want it; that you can change the software and use pieces of\nit in new free programs; and that you are informed that you can do\nthese things.\n\n To protect your rights, we need to make restrictions that forbid\ndistributors to deny you these rights or to ask you to surrender these\nrights. These restrictions translate to certain responsibilities for\nyou if you distribute copies of the library or if you modify it.\n\n For example, if you distribute copies of the library, whether gratis\nor for a fee, you must give the recipients all the rights that we gave\nyou. You must make sure that they, too, receive or can get the source\ncode. If you link other code with the library, you must provide\ncomplete object files to the recipients, so that they can relink them\nwith the library after making changes to the library and recompiling\nit. And you must show them these terms so they know their rights.\n\n We protect your rights with a two-step method: (1) we copyright the\nlibrary, and (2) we offer you this license, which gives you legal\npermission to copy, distribute and/or modify the library.\n\n To protect each distributor, we want to make it very clear that\nthere is no warranty for the free library. Also, if the library is\nmodified by someone else and passed on, the recipients should know\nthat what they have is not the original version, so that the original\nauthor's reputation will not be affected by problems that might be\nintroduced by others.\n\f\n Finally, software patents pose a constant threat to the existence of\nany free program. We wish to make sure that a company cannot\neffectively restrict the users of a free program by obtaining a\nrestrictive license from a patent holder. Therefore, we insist that\nany patent license obtained for a version of the library must be\nconsistent with the full freedom of use specified in this license.\n\n Most GNU software, including some libraries, is covered by the\nordinary GNU General Public License. This license, the GNU Lesser\nGeneral Public License, applies to certain designated libraries, and\nis quite different from the ordinary General Public License. We use\nthis license for certain libraries in order to permit linking those\nlibraries into non-free programs.\n\n When a program is linked with a library, whether statically or using\na shared library, the combination of the two is legally speaking a\ncombined work, a derivative of the original library. The ordinary\nGeneral Public License therefore permits such linking only if the\nentire combination fits its criteria of freedom. The Lesser General\nPublic License permits more lax criteria for linking other code with\nthe library.\n\n We call this license the \"Lesser\" General Public License because it\ndoes Less to protect the user's freedom than the ordinary General\nPublic License. It also provides other free software developers Less\nof an advantage over competing non-free programs. These disadvantages\nare the reason we use the ordinary General Public License for many\nlibraries. However, the Lesser license provides advantages in certain\nspecial circumstances.\n\n For example, on rare occasions, there may be a special need to\nencourage the widest possible use of a certain library, so that it becomes\na de-facto standard. To achieve this, non-free programs must be\nallowed to use the library. A more frequent case is that a free\nlibrary does the same job as widely used non-free libraries. In this\ncase, there is little to gain by limiting the free library to free\nsoftware only, so we use the Lesser General Public License.\n\n In other cases, permission to use a particular library in non-free\nprograms enables a greater number of people to use a large body of\nfree software. For example, permission to use the GNU C Library in\nnon-free programs enables many more people to use the whole GNU\noperating system, as well as its variant, the GNU/Linux operating\nsystem.\n\n Although the Lesser General Public License is Less protective of the\nusers' freedom, it does ensure that the user of a program that is\nlinked with the Library has the freedom and the wherewithal to run\nthat program using a modified version of the Library.\n\n The precise terms and conditions for copying, distribution and\nmodification follow. Pay close attention to the difference between a\n\"work based on the library\" and a \"work that uses the library\". The\nformer contains code derived from the library, whereas the latter must\nbe combined with the library in order to run.\n\f\n GNU LESSER GENERAL PUBLIC LICENSE\n TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n 0. This License Agreement applies to any software library or other\nprogram which contains a notice placed by the copyright holder or\nother authorized party saying it may be distributed under the terms of\nthis Lesser General Public License (also called \"this License\").\nEach licensee is addressed as \"you\".\n\n A \"library\" means a collection of software functions and/or data\nprepared so as to be conveniently linked with application programs\n(which use some of those functions and data) to form executables.\n\n The \"Library\", below, refers to any such software library or work\nwhich has been distributed under these terms. A \"work based on the\nLibrary\" means either the Library or any derivative work under\ncopyright law: that is to say, a work containing the Library or a\nportion of it, either verbatim or with modifications and/or translated\nstraightforwardly into another language. (Hereinafter, translation is\nincluded without limitation in the term \"modification\".)\n\n \"Source code\" for a work means the preferred form of the work for\nmaking modifications to it. For a library, complete source code means\nall the source code for all modules it contains, plus any associated\ninterface definition files, plus the scripts used to control compilation\nand installation of the library.\n\n Activities other than copying, distribution and modification are not\ncovered by this License; they are outside its scope. The act of\nrunning a program using the Library is not restricted, and output from\nsuch a program is covered only if its contents constitute a work based\non the Library (independent of the use of the Library in a tool for\nwriting it). Whether that is true depends on what the Library does\nand what the program that uses the Library does.\n\n 1. You may copy and distribute verbatim copies of the Library's\ncomplete source code as you receive it, in any medium, provided that\nyou conspicuously and appropriately publish on each copy an\nappropriate copyright notice and disclaimer of warranty; keep intact\nall the notices that refer to this License and to the absence of any\nwarranty; and distribute a copy of this License along with the\nLibrary.\n\n You may charge a fee for the physical act of transferring a copy,\nand you may at your option offer warranty protection in exchange for a\nfee.\n\f\n 2. You may modify your copy or copies of the Library or any portion\nof it, thus forming a work based on the Library, and copy and\ndistribute such modifications or work under the terms of Section 1\nabove, provided that you also meet all of these conditions:\n\n a) The modified work must itself be a software library.\n\n b) You must cause the files modified to carry prominent notices\n stating that you changed the files and the date of any change.\n\n c) You must cause the whole of the work to be licensed at no\n charge to all third parties under the terms of this License.\n\n d) If a facility in the modified Library refers to a function or a\n table of data to be supplied by an application program that uses\n the facility, other than as an argument passed when the facility\n is invoked, then you must make a good faith effort to ensure that,\n in the event an application does not supply such function or\n table, the facility still operates, and performs whatever part of\n its purpose remains meaningful.\n\n (For example, a function in a library to compute square roots has\n a purpose that is entirely well-defined independent of the\n application. Therefore, Subsection 2d requires that any\n application-supplied function or table used by this function must\n be optional: if the application does not supply it, the square\n root function must still compute square roots.)\n\nThese requirements apply to the modified work as a whole. If\nidentifiable sections of that work are not derived from the Library,\nand can be reasonably considered independent and separate works in\nthemselves, then this License, and its terms, do not apply to those\nsections when you distribute them as separate works. But when you\ndistribute the same sections as part of a whole which is a work based\non the Library, the distribution of the whole must be on the terms of\nthis License, whose permissions for other licensees extend to the\nentire whole, and thus to each and every part regardless of who wrote\nit.\n\nThus, it is not the intent of this section to claim rights or contest\nyour rights to work written entirely by you; rather, the intent is to\nexercise the right to control the distribution of derivative or\ncollective works based on the Library.\n\nIn addition, mere aggregation of another work not based on the Library\nwith the Library (or with a work based on the Library) on a volume of\na storage or distribution medium does not bring the other work under\nthe scope of this License.\n\n 3. You may opt to apply the terms of the ordinary GNU General Public\nLicense instead of this License to a given copy of the Library. To do\nthis, you must alter all the notices that refer to this License, so\nthat they refer to the ordinary GNU General Public License, version 2,\ninstead of to this License. (If a newer version than version 2 of the\nordinary GNU General Public License has appeared, then you can specify\nthat version instead if you wish.) Do not make any other change in\nthese notices.\n\f\n Once this change is made in a given copy, it is irreversible for\nthat copy, so the ordinary GNU General Public License applies to all\nsubsequent copies and derivative works made from that copy.\n\n This option is useful when you wish to copy part of the code of\nthe Library into a program that is not a library.\n\n 4. You may copy and distribute the Library (or a portion or\nderivative of it, under Section 2) in object code or executable form\nunder the terms of Sections 1 and 2 above provided that you accompany\nit with the complete corresponding machine-readable source code, which\nmust be distributed under the terms of Sections 1 and 2 above on a\nmedium customarily used for software interchange.\n\n If distribution of object code is made by offering access to copy\nfrom a designated place, then offering equivalent access to copy the\nsource code from the same place satisfies the requirement to\ndistribute the source code, even though third parties are not\ncompelled to copy the source along with the object code.\n\n 5. A program that contains no derivative of any portion of the\nLibrary, but is designed to work with the Library by being compiled or\nlinked with it, is called a \"work that uses the Library\". Such a\nwork, in isolation, is not a derivative work of the Library, and\ntherefore falls outside the scope of this License.\n\n However, linking a \"work that uses the Library\" with the Library\ncreates an executable that is a derivative of the Library (because it\ncontains portions of the Library), rather than a \"work that uses the\nlibrary\". The executable is therefore covered by this License.\nSection 6 states terms for distribution of such executables.\n\n When a \"work that uses the Library\" uses material from a header file\nthat is part of the Library, the object code for the work may be a\nderivative work of the Library even though the source code is not.\nWhether this is true is especially significant if the work can be\nlinked without the Library, or if the work is itself a library. The\nthreshold for this to be true is not precisely defined by law.\n\n If such an object file uses only numerical parameters, data\nstructure layouts and accessors, and small macros and small inline\nfunctions (ten lines or less in length), then the use of the object\nfile is unrestricted, regardless of whether it is legally a derivative\nwork. (Executables containing this object code plus portions of the\nLibrary will still fall under Section 6.)\n\n Otherwise, if the work is a derivative of the Library, you may\ndistribute the object code for the work under the terms of Section 6.\nAny executables containing that work also fall under Section 6,\nwhether or not they are linked directly with the Library itself.\n\f\n 6. As an exception to the Sections above, you may also combine or\nlink a \"work that uses the Library\" with the Library to produce a\nwork containing portions of the Library, and distribute that work\nunder terms of your choice, provided that the terms permit\nmodification of the work for the customer's own use and reverse\nengineering for debugging such modifications.\n\n You must give prominent notice with each copy of the work that the\nLibrary is used in it and that the Library and its use are covered by\nthis License. You must supply a copy of this License. If the work\nduring execution displays copyright notices, you must include the\ncopyright notice for the Library among them, as well as a reference\ndirecting the user to the copy of this License. Also, you must do one\nof these things:\n\n a) Accompany the work with the complete corresponding\n machine-readable source code for the Library including whatever\n changes were used in the work (which must be distributed under\n Sections 1 and 2 above); and, if the work is an executable linked\n with the Library, with the complete machine-readable \"work that\n uses the Library\", as object code and/or source code, so that the\n user can modify the Library and then relink to produce a modified\n executable containing the modified Library. (It is understood\n that the user who changes the contents of definitions files in the\n Library will not necessarily be able to recompile the application\n to use the modified definitions.)\n\n b) Use a suitable shared library mechanism for linking with the\n Library. A suitable mechanism is one that (1) uses at run time a\n copy of the library already present on the user's computer system,\n rather than copying library functions into the executable, and (2)\n will operate properly with a modified version of the library, if\n the user installs one, as long as the modified version is\n interface-compatible with the version that the work was made with.\n\n c) Accompany the work with a written offer, valid for at\n least three years, to give the same user the materials\n specified in Subsection 6a, above, for a charge no more\n than the cost of performing this distribution.\n\n d) If distribution of the work is made by offering access to copy\n from a designated place, offer equivalent access to copy the above\n specified materials from the same place.\n\n e) Verify that the user has already received a copy of these\n materials or that you have already sent this user a copy.\n\n For an executable, the required form of the \"work that uses the\nLibrary\" must include any data and utility programs needed for\nreproducing the executable from it. However, as a special exception,\nthe materials to be distributed need not include anything that is\nnormally distributed (in either source or binary form) with the major\ncomponents (compiler, kernel, and so on) of the operating system on\nwhich the executable runs, unless that component itself accompanies\nthe executable.\n\n It may happen that this requirement contradicts the license\nrestrictions of other proprietary libraries that do not normally\naccompany the operating system. Such a contradiction means you cannot\nuse both them and the Library together in an executable that you\ndistribute.\n\f\n 7. You may place library facilities that are a work based on the\nLibrary side-by-side in a single library together with other library\nfacilities not covered by this License, and distribute such a combined\nlibrary, provided that the separate distribution of the work based on\nthe Library and of the other library facilities is otherwise\npermitted, and provided that you do these two things:\n\n a) Accompany the combined library with a copy of the same work\n based on the Library, uncombined with any other library\n facilities. This must be distributed under the terms of the\n Sections above.\n\n b) Give prominent notice with the combined library of the fact\n that part of it is a work based on the Library, and explaining\n where to find the accompanying uncombined form of the same work.\n\n 8. You may not copy, modify, sublicense, link with, or distribute\nthe Library except as expressly provided under this License. Any\nattempt otherwise to copy, modify, sublicense, link with, or\ndistribute the Library is void, and will automatically terminate your\nrights under this License. However, parties who have received copies,\nor rights, from you under this License will not have their licenses\nterminated so long as such parties remain in full compliance.\n\n 9. You are not required to accept this License, since you have not\nsigned it. However, nothing else grants you permission to modify or\ndistribute the Library or its derivative works. These actions are\nprohibited by law if you do not accept this License. Therefore, by\nmodifying or distributing the Library (or any work based on the\nLibrary), you indicate your acceptance of this License to do so, and\nall its terms and conditions for copying, distributing or modifying\nthe Library or works based on it.\n\n 10. Each time you redistribute the Library (or any work based on the\nLibrary), the recipient automatically receives a license from the\noriginal licensor to copy, distribute, link with or modify the Library\nsubject to these terms and conditions. You may not impose any further\nrestrictions on the recipients' exercise of the rights granted herein.\nYou are not responsible for enforcing compliance by third parties with\nthis License.\n\f\n 11. If, as a consequence of a court judgment or allegation of patent\ninfringement or for any other reason (not limited to patent issues),\nconditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License. If you cannot\ndistribute so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you\nmay not distribute the Library at all. For example, if a patent\nlicense would not permit royalty-free redistribution of the Library by\nall those who receive copies directly or indirectly through you, then\nthe only way you could satisfy both it and this License would be to\nrefrain entirely from distribution of the Library.\n\nIf any portion of this section is held invalid or unenforceable under any\nparticular circumstance, the balance of the section is intended to apply,\nand the section as a whole is intended to apply in other circumstances.\n\nIt is not the purpose of this section to induce you to infringe any\npatents or other property right claims or to contest validity of any\nsuch claims; this section has the sole purpose of protecting the\nintegrity of the free software distribution system which is\nimplemented by public license practices. Many people have made\ngenerous contributions to the wide range of software distributed\nthrough that system in reliance on consistent application of that\nsystem; it is up to the author/donor to decide if he or she is willing\nto distribute software through any other system and a licensee cannot\nimpose that choice.\n\nThis section is intended to make thoroughly clear what is believed to\nbe a consequence of the rest of this License.\n\n 12. If the distribution and/or use of the Library is restricted in\ncertain countries either by patents or by copyrighted interfaces, the\noriginal copyright holder who places the Library under this License may add\nan explicit geographical distribution limitation excluding those countries,\nso that distribution is permitted only in or among countries not thus\nexcluded. In such case, this License incorporates the limitation as if\nwritten in the body of this License.\n\n 13. The Free Software Foundation may publish revised and/or new\nversions of the Lesser General Public License from time to time.\nSuch new versions will be similar in spirit to the present version,\nbut may differ in detail to address new problems or concerns.\n\nEach version is given a distinguishing version number. If the Library\nspecifies a version number of this License which applies to it and\n\"any later version\", you have the option of following the terms and\nconditions either of that version or of any later version published by\nthe Free Software Foundation. If the Library does not specify a\nlicense version number, you may choose any version ever published by\nthe Free Software Foundation.\n\f\n 14. If you wish to incorporate parts of the Library into other free\nprograms whose distribution conditions are incompatible with these,\nwrite to the author to ask for permission. For software which is\ncopyrighted by the Free Software Foundation, write to the Free\nSoftware Foundation; we sometimes make exceptions for this. Our\ndecision will be guided by the two goals of preserving the free status\nof all derivatives of our free software and of promoting the sharing\nand reuse of software generally.\n\n NO WARRANTY\n\n 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO\nWARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.\nEXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR\nOTHER PARTIES PROVIDE THE LIBRARY \"AS IS\" WITHOUT WARRANTY OF ANY\nKIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE\nLIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME\nTHE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN\nWRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY\nAND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU\nFOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR\nCONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE\nLIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING\nRENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A\nFAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF\nSUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\nDAMAGES.\n\n END OF TERMS AND CONDITIONS\n\f\n How to Apply These Terms to Your New Libraries\n\n If you develop a new library, and you want it to be of the greatest\npossible use to the public, we recommend making it free software that\neveryone can redistribute and change. You can do so by permitting\nredistribution under these terms (or, alternatively, under the terms of the\nordinary General Public License).\n\n To apply these terms, attach the following notices to the library. It is\nsafest to attach them to the start of each source file to most effectively\nconvey the exclusion of warranty; and each file should have at least the\n\"copyright\" line and a pointer to where the full notice is found.\n\n \n Copyright (C) \n\n This library is free software; you can redistribute it and/or\n modify it under the terms of the GNU Lesser General Public\n License as published by the Free Software Foundation; either\n version 2.1 of the License, or (at your option) any later version.\n\n This library is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public\n License along with this library; if not, write to the Free Software\n Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n\nAlso add information on how to contact you by electronic and paper mail.\n\nYou should also get your employer (if you work as a programmer) or your\nschool, if any, to sign a \"copyright disclaimer\" for the library, if\nnecessary. Here is a sample; alter the names:\n\n Yoyodyne, Inc., hereby disclaims all copyright interest in the\n library `Frob' (a library for tweaking knobs) written by James Random Hacker.\n\n , 1 April 1990\n Ty Coon, President of Vice\n\nThat's all there is to it!\n", - "contentType": "text/plain" + "content": "ICAgICAgICAgICAgICAgICAgR05VIExFU1NFUiBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFCiAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAyLjEsIEZlYnJ1YXJ5IDE5OTkKCiBDb3B5cmlnaHQgKEMpIDE5OTEsIDE5OTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKIEV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcwogb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCgpbVGhpcyBpcyB0aGUgZmlyc3QgcmVsZWFzZWQgdmVyc2lvbiBvZiB0aGUgTGVzc2VyIEdQTC4gIEl0IGFsc28gY291bnRzCiBhcyB0aGUgc3VjY2Vzc29yIG9mIHRoZSBHTlUgTGlicmFyeSBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLCBoZW5jZQogdGhlIHZlcnNpb24gbnVtYmVyIDIuMS5dCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlYW1ibGUKCiAgVGhlIGxpY2Vuc2VzIGZvciBtb3N0IHNvZnR3YXJlIGFyZSBkZXNpZ25lZCB0byB0YWtlIGF3YXkgeW91cgpmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgaXQuICBCeSBjb250cmFzdCwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwpMaWNlbnNlcyBhcmUgaW50ZW5kZWQgdG8gZ3VhcmFudGVlIHlvdXIgZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlCmZyZWUgc29mdHdhcmUtLXRvIG1ha2Ugc3VyZSB0aGUgc29mdHdhcmUgaXMgZnJlZSBmb3IgYWxsIGl0cyB1c2Vycy4KCiAgVGhpcyBsaWNlbnNlLCB0aGUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFwcGxpZXMgdG8gc29tZQpzcGVjaWFsbHkgZGVzaWduYXRlZCBzb2Z0d2FyZSBwYWNrYWdlcy0tdHlwaWNhbGx5IGxpYnJhcmllcy0tb2YgdGhlCkZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBhbmQgb3RoZXIgYXV0aG9ycyB3aG8gZGVjaWRlIHRvIHVzZSBpdC4gIFlvdQpjYW4gdXNlIGl0IHRvbywgYnV0IHdlIHN1Z2dlc3QgeW91IGZpcnN0IHRoaW5rIGNhcmVmdWxseSBhYm91dCB3aGV0aGVyCnRoaXMgbGljZW5zZSBvciB0aGUgb3JkaW5hcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyB0aGUgYmV0dGVyCnN0cmF0ZWd5IHRvIHVzZSBpbiBhbnkgcGFydGljdWxhciBjYXNlLCBiYXNlZCBvbiB0aGUgZXhwbGFuYXRpb25zIGJlbG93LgoKICBXaGVuIHdlIHNwZWFrIG9mIGZyZWUgc29mdHdhcmUsIHdlIGFyZSByZWZlcnJpbmcgdG8gZnJlZWRvbSBvZiB1c2UsCm5vdCBwcmljZS4gIE91ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlcyBhcmUgZGVzaWduZWQgdG8gbWFrZSBzdXJlIHRoYXQKeW91IGhhdmUgdGhlIGZyZWVkb20gdG8gZGlzdHJpYnV0ZSBjb3BpZXMgb2YgZnJlZSBzb2Z0d2FyZSAoYW5kIGNoYXJnZQpmb3IgdGhpcyBzZXJ2aWNlIGlmIHlvdSB3aXNoKTsgdGhhdCB5b3UgcmVjZWl2ZSBzb3VyY2UgY29kZSBvciBjYW4gZ2V0Cml0IGlmIHlvdSB3YW50IGl0OyB0aGF0IHlvdSBjYW4gY2hhbmdlIHRoZSBzb2Z0d2FyZSBhbmQgdXNlIHBpZWNlcyBvZgppdCBpbiBuZXcgZnJlZSBwcm9ncmFtczsgYW5kIHRoYXQgeW91IGFyZSBpbmZvcm1lZCB0aGF0IHlvdSBjYW4gZG8KdGhlc2UgdGhpbmdzLgoKICBUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIG1ha2UgcmVzdHJpY3Rpb25zIHRoYXQgZm9yYmlkCmRpc3RyaWJ1dG9ycyB0byBkZW55IHlvdSB0aGVzZSByaWdodHMgb3IgdG8gYXNrIHlvdSB0byBzdXJyZW5kZXIgdGhlc2UKcmlnaHRzLiAgVGhlc2UgcmVzdHJpY3Rpb25zIHRyYW5zbGF0ZSB0byBjZXJ0YWluIHJlc3BvbnNpYmlsaXRpZXMgZm9yCnlvdSBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIGxpYnJhcnkgb3IgaWYgeW91IG1vZGlmeSBpdC4KCiAgRm9yIGV4YW1wbGUsIGlmIHlvdSBkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUgbGlicmFyeSwgd2hldGhlciBncmF0aXMKb3IgZm9yIGEgZmVlLCB5b3UgbXVzdCBnaXZlIHRoZSByZWNpcGllbnRzIGFsbCB0aGUgcmlnaHRzIHRoYXQgd2UgZ2F2ZQp5b3UuICBZb3UgbXVzdCBtYWtlIHN1cmUgdGhhdCB0aGV5LCB0b28sIHJlY2VpdmUgb3IgY2FuIGdldCB0aGUgc291cmNlCmNvZGUuICBJZiB5b3UgbGluayBvdGhlciBjb2RlIHdpdGggdGhlIGxpYnJhcnksIHlvdSBtdXN0IHByb3ZpZGUKY29tcGxldGUgb2JqZWN0IGZpbGVzIHRvIHRoZSByZWNpcGllbnRzLCBzbyB0aGF0IHRoZXkgY2FuIHJlbGluayB0aGVtCndpdGggdGhlIGxpYnJhcnkgYWZ0ZXIgbWFraW5nIGNoYW5nZXMgdG8gdGhlIGxpYnJhcnkgYW5kIHJlY29tcGlsaW5nCml0LiAgQW5kIHlvdSBtdXN0IHNob3cgdGhlbSB0aGVzZSB0ZXJtcyBzbyB0aGV5IGtub3cgdGhlaXIgcmlnaHRzLgoKICBXZSBwcm90ZWN0IHlvdXIgcmlnaHRzIHdpdGggYSB0d28tc3RlcCBtZXRob2Q6ICgxKSB3ZSBjb3B5cmlnaHQgdGhlCmxpYnJhcnksIGFuZCAoMikgd2Ugb2ZmZXIgeW91IHRoaXMgbGljZW5zZSwgd2hpY2ggZ2l2ZXMgeW91IGxlZ2FsCnBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IHRoZSBsaWJyYXJ5LgoKICBUbyBwcm90ZWN0IGVhY2ggZGlzdHJpYnV0b3IsIHdlIHdhbnQgdG8gbWFrZSBpdCB2ZXJ5IGNsZWFyIHRoYXQKdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoZSBmcmVlIGxpYnJhcnkuICBBbHNvLCBpZiB0aGUgbGlicmFyeSBpcwptb2RpZmllZCBieSBzb21lb25lIGVsc2UgYW5kIHBhc3NlZCBvbiwgdGhlIHJlY2lwaWVudHMgc2hvdWxkIGtub3cKdGhhdCB3aGF0IHRoZXkgaGF2ZSBpcyBub3QgdGhlIG9yaWdpbmFsIHZlcnNpb24sIHNvIHRoYXQgdGhlIG9yaWdpbmFsCmF1dGhvcidzIHJlcHV0YXRpb24gd2lsbCBub3QgYmUgYWZmZWN0ZWQgYnkgcHJvYmxlbXMgdGhhdCBtaWdodCBiZQppbnRyb2R1Y2VkIGJ5IG90aGVycy4KDAogIEZpbmFsbHksIHNvZnR3YXJlIHBhdGVudHMgcG9zZSBhIGNvbnN0YW50IHRocmVhdCB0byB0aGUgZXhpc3RlbmNlIG9mCmFueSBmcmVlIHByb2dyYW0uICBXZSB3aXNoIHRvIG1ha2Ugc3VyZSB0aGF0IGEgY29tcGFueSBjYW5ub3QKZWZmZWN0aXZlbHkgcmVzdHJpY3QgdGhlIHVzZXJzIG9mIGEgZnJlZSBwcm9ncmFtIGJ5IG9idGFpbmluZyBhCnJlc3RyaWN0aXZlIGxpY2Vuc2UgZnJvbSBhIHBhdGVudCBob2xkZXIuICBUaGVyZWZvcmUsIHdlIGluc2lzdCB0aGF0CmFueSBwYXRlbnQgbGljZW5zZSBvYnRhaW5lZCBmb3IgYSB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5IG11c3QgYmUKY29uc2lzdGVudCB3aXRoIHRoZSBmdWxsIGZyZWVkb20gb2YgdXNlIHNwZWNpZmllZCBpbiB0aGlzIGxpY2Vuc2UuCgogIE1vc3QgR05VIHNvZnR3YXJlLCBpbmNsdWRpbmcgc29tZSBsaWJyYXJpZXMsIGlzIGNvdmVyZWQgYnkgdGhlCm9yZGluYXJ5IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBsaWNlbnNlLCB0aGUgR05VIExlc3NlcgpHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBhcHBsaWVzIHRvIGNlcnRhaW4gZGVzaWduYXRlZCBsaWJyYXJpZXMsIGFuZAppcyBxdWl0ZSBkaWZmZXJlbnQgZnJvbSB0aGUgb3JkaW5hcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFdlIHVzZQp0aGlzIGxpY2Vuc2UgZm9yIGNlcnRhaW4gbGlicmFyaWVzIGluIG9yZGVyIHRvIHBlcm1pdCBsaW5raW5nIHRob3NlCmxpYnJhcmllcyBpbnRvIG5vbi1mcmVlIHByb2dyYW1zLgoKICBXaGVuIGEgcHJvZ3JhbSBpcyBsaW5rZWQgd2l0aCBhIGxpYnJhcnksIHdoZXRoZXIgc3RhdGljYWxseSBvciB1c2luZwphIHNoYXJlZCBsaWJyYXJ5LCB0aGUgY29tYmluYXRpb24gb2YgdGhlIHR3byBpcyBsZWdhbGx5IHNwZWFraW5nIGEKY29tYmluZWQgd29yaywgYSBkZXJpdmF0aXZlIG9mIHRoZSBvcmlnaW5hbCBsaWJyYXJ5LiAgVGhlIG9yZGluYXJ5CkdlbmVyYWwgUHVibGljIExpY2Vuc2UgdGhlcmVmb3JlIHBlcm1pdHMgc3VjaCBsaW5raW5nIG9ubHkgaWYgdGhlCmVudGlyZSBjb21iaW5hdGlvbiBmaXRzIGl0cyBjcml0ZXJpYSBvZiBmcmVlZG9tLiAgVGhlIExlc3NlciBHZW5lcmFsClB1YmxpYyBMaWNlbnNlIHBlcm1pdHMgbW9yZSBsYXggY3JpdGVyaWEgZm9yIGxpbmtpbmcgb3RoZXIgY29kZSB3aXRoCnRoZSBsaWJyYXJ5LgoKICBXZSBjYWxsIHRoaXMgbGljZW5zZSB0aGUgIkxlc3NlciIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBiZWNhdXNlIGl0CmRvZXMgTGVzcyB0byBwcm90ZWN0IHRoZSB1c2VyJ3MgZnJlZWRvbSB0aGFuIHRoZSBvcmRpbmFyeSBHZW5lcmFsClB1YmxpYyBMaWNlbnNlLiAgSXQgYWxzbyBwcm92aWRlcyBvdGhlciBmcmVlIHNvZnR3YXJlIGRldmVsb3BlcnMgTGVzcwpvZiBhbiBhZHZhbnRhZ2Ugb3ZlciBjb21wZXRpbmcgbm9uLWZyZWUgcHJvZ3JhbXMuICBUaGVzZSBkaXNhZHZhbnRhZ2VzCmFyZSB0aGUgcmVhc29uIHdlIHVzZSB0aGUgb3JkaW5hcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbWFueQpsaWJyYXJpZXMuICBIb3dldmVyLCB0aGUgTGVzc2VyIGxpY2Vuc2UgcHJvdmlkZXMgYWR2YW50YWdlcyBpbiBjZXJ0YWluCnNwZWNpYWwgY2lyY3Vtc3RhbmNlcy4KCiAgRm9yIGV4YW1wbGUsIG9uIHJhcmUgb2NjYXNpb25zLCB0aGVyZSBtYXkgYmUgYSBzcGVjaWFsIG5lZWQgdG8KZW5jb3VyYWdlIHRoZSB3aWRlc3QgcG9zc2libGUgdXNlIG9mIGEgY2VydGFpbiBsaWJyYXJ5LCBzbyB0aGF0IGl0IGJlY29tZXMKYSBkZS1mYWN0byBzdGFuZGFyZC4gIFRvIGFjaGlldmUgdGhpcywgbm9uLWZyZWUgcHJvZ3JhbXMgbXVzdCBiZQphbGxvd2VkIHRvIHVzZSB0aGUgbGlicmFyeS4gIEEgbW9yZSBmcmVxdWVudCBjYXNlIGlzIHRoYXQgYSBmcmVlCmxpYnJhcnkgZG9lcyB0aGUgc2FtZSBqb2IgYXMgd2lkZWx5IHVzZWQgbm9uLWZyZWUgbGlicmFyaWVzLiAgSW4gdGhpcwpjYXNlLCB0aGVyZSBpcyBsaXR0bGUgdG8gZ2FpbiBieSBsaW1pdGluZyB0aGUgZnJlZSBsaWJyYXJ5IHRvIGZyZWUKc29mdHdhcmUgb25seSwgc28gd2UgdXNlIHRoZSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KCiAgSW4gb3RoZXIgY2FzZXMsIHBlcm1pc3Npb24gdG8gdXNlIGEgcGFydGljdWxhciBsaWJyYXJ5IGluIG5vbi1mcmVlCnByb2dyYW1zIGVuYWJsZXMgYSBncmVhdGVyIG51bWJlciBvZiBwZW9wbGUgdG8gdXNlIGEgbGFyZ2UgYm9keSBvZgpmcmVlIHNvZnR3YXJlLiAgRm9yIGV4YW1wbGUsIHBlcm1pc3Npb24gdG8gdXNlIHRoZSBHTlUgQyBMaWJyYXJ5IGluCm5vbi1mcmVlIHByb2dyYW1zIGVuYWJsZXMgbWFueSBtb3JlIHBlb3BsZSB0byB1c2UgdGhlIHdob2xlIEdOVQpvcGVyYXRpbmcgc3lzdGVtLCBhcyB3ZWxsIGFzIGl0cyB2YXJpYW50LCB0aGUgR05VL0xpbnV4IG9wZXJhdGluZwpzeXN0ZW0uCgogIEFsdGhvdWdoIHRoZSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBMZXNzIHByb3RlY3RpdmUgb2YgdGhlCnVzZXJzJyBmcmVlZG9tLCBpdCBkb2VzIGVuc3VyZSB0aGF0IHRoZSB1c2VyIG9mIGEgcHJvZ3JhbSB0aGF0IGlzCmxpbmtlZCB3aXRoIHRoZSBMaWJyYXJ5IGhhcyB0aGUgZnJlZWRvbSBhbmQgdGhlIHdoZXJld2l0aGFsIHRvIHJ1bgp0aGF0IHByb2dyYW0gdXNpbmcgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBMaWJyYXJ5LgoKICBUaGUgcHJlY2lzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW9uIGFuZAptb2RpZmljYXRpb24gZm9sbG93LiAgUGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGEKIndvcmsgYmFzZWQgb24gdGhlIGxpYnJhcnkiIGFuZCBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgbGlicmFyeSIuICBUaGUKZm9ybWVyIGNvbnRhaW5zIGNvZGUgZGVyaXZlZCBmcm9tIHRoZSBsaWJyYXJ5LCB3aGVyZWFzIHRoZSBsYXR0ZXIgbXVzdApiZSBjb21iaW5lZCB3aXRoIHRoZSBsaWJyYXJ5IGluIG9yZGVyIHRvIHJ1bi4KDAogICAgICAgICAgICAgICAgICBHTlUgTEVTU0VSIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKICAgVEVSTVMgQU5EIENPTkRJVElPTlMgRk9SIENPUFlJTkcsIERJU1RSSUJVVElPTiBBTkQgTU9ESUZJQ0FUSU9OCgogIDAuIFRoaXMgTGljZW5zZSBBZ3JlZW1lbnQgYXBwbGllcyB0byBhbnkgc29mdHdhcmUgbGlicmFyeSBvciBvdGhlcgpwcm9ncmFtIHdoaWNoIGNvbnRhaW5zIGEgbm90aWNlIHBsYWNlZCBieSB0aGUgY29weXJpZ2h0IGhvbGRlciBvcgpvdGhlciBhdXRob3JpemVkIHBhcnR5IHNheWluZyBpdCBtYXkgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mCnRoaXMgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKGFsc28gY2FsbGVkICJ0aGlzIExpY2Vuc2UiKS4KRWFjaCBsaWNlbnNlZSBpcyBhZGRyZXNzZWQgYXMgInlvdSIuCgogIEEgImxpYnJhcnkiIG1lYW5zIGEgY29sbGVjdGlvbiBvZiBzb2Z0d2FyZSBmdW5jdGlvbnMgYW5kL29yIGRhdGEKcHJlcGFyZWQgc28gYXMgdG8gYmUgY29udmVuaWVudGx5IGxpbmtlZCB3aXRoIGFwcGxpY2F0aW9uIHByb2dyYW1zCih3aGljaCB1c2Ugc29tZSBvZiB0aG9zZSBmdW5jdGlvbnMgYW5kIGRhdGEpIHRvIGZvcm0gZXhlY3V0YWJsZXMuCgogIFRoZSAiTGlicmFyeSIsIGJlbG93LCByZWZlcnMgdG8gYW55IHN1Y2ggc29mdHdhcmUgbGlicmFyeSBvciB3b3JrCndoaWNoIGhhcyBiZWVuIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZXNlIHRlcm1zLiAgQSAid29yayBiYXNlZCBvbiB0aGUKTGlicmFyeSIgbWVhbnMgZWl0aGVyIHRoZSBMaWJyYXJ5IG9yIGFueSBkZXJpdmF0aXZlIHdvcmsgdW5kZXIKY29weXJpZ2h0IGxhdzogdGhhdCBpcyB0byBzYXksIGEgd29yayBjb250YWluaW5nIHRoZSBMaWJyYXJ5IG9yIGEKcG9ydGlvbiBvZiBpdCwgZWl0aGVyIHZlcmJhdGltIG9yIHdpdGggbW9kaWZpY2F0aW9ucyBhbmQvb3IgdHJhbnNsYXRlZApzdHJhaWdodGZvcndhcmRseSBpbnRvIGFub3RoZXIgbGFuZ3VhZ2UuICAoSGVyZWluYWZ0ZXIsIHRyYW5zbGF0aW9uIGlzCmluY2x1ZGVkIHdpdGhvdXQgbGltaXRhdGlvbiBpbiB0aGUgdGVybSAibW9kaWZpY2F0aW9uIi4pCgogICJTb3VyY2UgY29kZSIgZm9yIGEgd29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsgZm9yCm1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgRm9yIGEgbGlicmFyeSwgY29tcGxldGUgc291cmNlIGNvZGUgbWVhbnMKYWxsIHRoZSBzb3VyY2UgY29kZSBmb3IgYWxsIG1vZHVsZXMgaXQgY29udGFpbnMsIHBsdXMgYW55IGFzc29jaWF0ZWQKaW50ZXJmYWNlIGRlZmluaXRpb24gZmlsZXMsIHBsdXMgdGhlIHNjcmlwdHMgdXNlZCB0byBjb250cm9sIGNvbXBpbGF0aW9uCmFuZCBpbnN0YWxsYXRpb24gb2YgdGhlIGxpYnJhcnkuCgogIEFjdGl2aXRpZXMgb3RoZXIgdGhhbiBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kIG1vZGlmaWNhdGlvbiBhcmUgbm90CmNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlOyB0aGV5IGFyZSBvdXRzaWRlIGl0cyBzY29wZS4gIFRoZSBhY3Qgb2YKcnVubmluZyBhIHByb2dyYW0gdXNpbmcgdGhlIExpYnJhcnkgaXMgbm90IHJlc3RyaWN0ZWQsIGFuZCBvdXRwdXQgZnJvbQpzdWNoIGEgcHJvZ3JhbSBpcyBjb3ZlcmVkIG9ubHkgaWYgaXRzIGNvbnRlbnRzIGNvbnN0aXR1dGUgYSB3b3JrIGJhc2VkCm9uIHRoZSBMaWJyYXJ5IChpbmRlcGVuZGVudCBvZiB0aGUgdXNlIG9mIHRoZSBMaWJyYXJ5IGluIGEgdG9vbCBmb3IKd3JpdGluZyBpdCkuICBXaGV0aGVyIHRoYXQgaXMgdHJ1ZSBkZXBlbmRzIG9uIHdoYXQgdGhlIExpYnJhcnkgZG9lcwphbmQgd2hhdCB0aGUgcHJvZ3JhbSB0aGF0IHVzZXMgdGhlIExpYnJhcnkgZG9lcy4KCiAgMS4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcyBvZiB0aGUgTGlicmFyeSdzCmNvbXBsZXRlIHNvdXJjZSBjb2RlIGFzIHlvdSByZWNlaXZlIGl0LCBpbiBhbnkgbWVkaXVtLCBwcm92aWRlZCB0aGF0CnlvdSBjb25zcGljdW91c2x5IGFuZCBhcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuCmFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2UgYW5kIGRpc2NsYWltZXIgb2Ygd2FycmFudHk7IGtlZXAgaW50YWN0CmFsbCB0aGUgbm90aWNlcyB0aGF0IHJlZmVyIHRvIHRoaXMgTGljZW5zZSBhbmQgdG8gdGhlIGFic2VuY2Ugb2YgYW55CndhcnJhbnR5OyBhbmQgZGlzdHJpYnV0ZSBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlIGFsb25nIHdpdGggdGhlCkxpYnJhcnkuCgogIFlvdSBtYXkgY2hhcmdlIGEgZmVlIGZvciB0aGUgcGh5c2ljYWwgYWN0IG9mIHRyYW5zZmVycmluZyBhIGNvcHksCmFuZCB5b3UgbWF5IGF0IHlvdXIgb3B0aW9uIG9mZmVyIHdhcnJhbnR5IHByb3RlY3Rpb24gaW4gZXhjaGFuZ2UgZm9yIGEKZmVlLgoMCiAgMi4gWW91IG1heSBtb2RpZnkgeW91ciBjb3B5IG9yIGNvcGllcyBvZiB0aGUgTGlicmFyeSBvciBhbnkgcG9ydGlvbgpvZiBpdCwgdGh1cyBmb3JtaW5nIGEgd29yayBiYXNlZCBvbiB0aGUgTGlicmFyeSwgYW5kIGNvcHkgYW5kCmRpc3RyaWJ1dGUgc3VjaCBtb2RpZmljYXRpb25zIG9yIHdvcmsgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb24gMQphYm92ZSwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBtZWV0IGFsbCBvZiB0aGVzZSBjb25kaXRpb25zOgoKICAgIGEpIFRoZSBtb2RpZmllZCB3b3JrIG11c3QgaXRzZWxmIGJlIGEgc29mdHdhcmUgbGlicmFyeS4KCiAgICBiKSBZb3UgbXVzdCBjYXVzZSB0aGUgZmlsZXMgbW9kaWZpZWQgdG8gY2FycnkgcHJvbWluZW50IG5vdGljZXMKICAgIHN0YXRpbmcgdGhhdCB5b3UgY2hhbmdlZCB0aGUgZmlsZXMgYW5kIHRoZSBkYXRlIG9mIGFueSBjaGFuZ2UuCgogICAgYykgWW91IG11c3QgY2F1c2UgdGhlIHdob2xlIG9mIHRoZSB3b3JrIHRvIGJlIGxpY2Vuc2VkIGF0IG5vCiAgICBjaGFyZ2UgdG8gYWxsIHRoaXJkIHBhcnRpZXMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZS4KCiAgICBkKSBJZiBhIGZhY2lsaXR5IGluIHRoZSBtb2RpZmllZCBMaWJyYXJ5IHJlZmVycyB0byBhIGZ1bmN0aW9uIG9yIGEKICAgIHRhYmxlIG9mIGRhdGEgdG8gYmUgc3VwcGxpZWQgYnkgYW4gYXBwbGljYXRpb24gcHJvZ3JhbSB0aGF0IHVzZXMKICAgIHRoZSBmYWNpbGl0eSwgb3RoZXIgdGhhbiBhcyBhbiBhcmd1bWVudCBwYXNzZWQgd2hlbiB0aGUgZmFjaWxpdHkKICAgIGlzIGludm9rZWQsIHRoZW4geW91IG11c3QgbWFrZSBhIGdvb2QgZmFpdGggZWZmb3J0IHRvIGVuc3VyZSB0aGF0LAogICAgaW4gdGhlIGV2ZW50IGFuIGFwcGxpY2F0aW9uIGRvZXMgbm90IHN1cHBseSBzdWNoIGZ1bmN0aW9uIG9yCiAgICB0YWJsZSwgdGhlIGZhY2lsaXR5IHN0aWxsIG9wZXJhdGVzLCBhbmQgcGVyZm9ybXMgd2hhdGV2ZXIgcGFydCBvZgogICAgaXRzIHB1cnBvc2UgcmVtYWlucyBtZWFuaW5nZnVsLgoKICAgIChGb3IgZXhhbXBsZSwgYSBmdW5jdGlvbiBpbiBhIGxpYnJhcnkgdG8gY29tcHV0ZSBzcXVhcmUgcm9vdHMgaGFzCiAgICBhIHB1cnBvc2UgdGhhdCBpcyBlbnRpcmVseSB3ZWxsLWRlZmluZWQgaW5kZXBlbmRlbnQgb2YgdGhlCiAgICBhcHBsaWNhdGlvbi4gIFRoZXJlZm9yZSwgU3Vic2VjdGlvbiAyZCByZXF1aXJlcyB0aGF0IGFueQogICAgYXBwbGljYXRpb24tc3VwcGxpZWQgZnVuY3Rpb24gb3IgdGFibGUgdXNlZCBieSB0aGlzIGZ1bmN0aW9uIG11c3QKICAgIGJlIG9wdGlvbmFsOiBpZiB0aGUgYXBwbGljYXRpb24gZG9lcyBub3Qgc3VwcGx5IGl0LCB0aGUgc3F1YXJlCiAgICByb290IGZ1bmN0aW9uIG11c3Qgc3RpbGwgY29tcHV0ZSBzcXVhcmUgcm9vdHMuKQoKVGhlc2UgcmVxdWlyZW1lbnRzIGFwcGx5IHRvIHRoZSBtb2RpZmllZCB3b3JrIGFzIGEgd2hvbGUuICBJZgppZGVudGlmaWFibGUgc2VjdGlvbnMgb2YgdGhhdCB3b3JrIGFyZSBub3QgZGVyaXZlZCBmcm9tIHRoZSBMaWJyYXJ5LAphbmQgY2FuIGJlIHJlYXNvbmFibHkgY29uc2lkZXJlZCBpbmRlcGVuZGVudCBhbmQgc2VwYXJhdGUgd29ya3MgaW4KdGhlbXNlbHZlcywgdGhlbiB0aGlzIExpY2Vuc2UsIGFuZCBpdHMgdGVybXMsIGRvIG5vdCBhcHBseSB0byB0aG9zZQpzZWN0aW9ucyB3aGVuIHlvdSBkaXN0cmlidXRlIHRoZW0gYXMgc2VwYXJhdGUgd29ya3MuICBCdXQgd2hlbiB5b3UKZGlzdHJpYnV0ZSB0aGUgc2FtZSBzZWN0aW9ucyBhcyBwYXJ0IG9mIGEgd2hvbGUgd2hpY2ggaXMgYSB3b3JrIGJhc2VkCm9uIHRoZSBMaWJyYXJ5LCB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSB3aG9sZSBtdXN0IGJlIG9uIHRoZSB0ZXJtcyBvZgp0aGlzIExpY2Vuc2UsIHdob3NlIHBlcm1pc3Npb25zIGZvciBvdGhlciBsaWNlbnNlZXMgZXh0ZW5kIHRvIHRoZQplbnRpcmUgd2hvbGUsIGFuZCB0aHVzIHRvIGVhY2ggYW5kIGV2ZXJ5IHBhcnQgcmVnYXJkbGVzcyBvZiB3aG8gd3JvdGUKaXQuCgpUaHVzLCBpdCBpcyBub3QgdGhlIGludGVudCBvZiB0aGlzIHNlY3Rpb24gdG8gY2xhaW0gcmlnaHRzIG9yIGNvbnRlc3QKeW91ciByaWdodHMgdG8gd29yayB3cml0dGVuIGVudGlyZWx5IGJ5IHlvdTsgcmF0aGVyLCB0aGUgaW50ZW50IGlzIHRvCmV4ZXJjaXNlIHRoZSByaWdodCB0byBjb250cm9sIHRoZSBkaXN0cmlidXRpb24gb2YgZGVyaXZhdGl2ZSBvcgpjb2xsZWN0aXZlIHdvcmtzIGJhc2VkIG9uIHRoZSBMaWJyYXJ5LgoKSW4gYWRkaXRpb24sIG1lcmUgYWdncmVnYXRpb24gb2YgYW5vdGhlciB3b3JrIG5vdCBiYXNlZCBvbiB0aGUgTGlicmFyeQp3aXRoIHRoZSBMaWJyYXJ5IChvciB3aXRoIGEgd29yayBiYXNlZCBvbiB0aGUgTGlicmFyeSkgb24gYSB2b2x1bWUgb2YKYSBzdG9yYWdlIG9yIGRpc3RyaWJ1dGlvbiBtZWRpdW0gZG9lcyBub3QgYnJpbmcgdGhlIG90aGVyIHdvcmsgdW5kZXIKdGhlIHNjb3BlIG9mIHRoaXMgTGljZW5zZS4KCiAgMy4gWW91IG1heSBvcHQgdG8gYXBwbHkgdGhlIHRlcm1zIG9mIHRoZSBvcmRpbmFyeSBHTlUgR2VuZXJhbCBQdWJsaWMKTGljZW5zZSBpbnN0ZWFkIG9mIHRoaXMgTGljZW5zZSB0byBhIGdpdmVuIGNvcHkgb2YgdGhlIExpYnJhcnkuICBUbyBkbwp0aGlzLCB5b3UgbXVzdCBhbHRlciBhbGwgdGhlIG5vdGljZXMgdGhhdCByZWZlciB0byB0aGlzIExpY2Vuc2UsIHNvCnRoYXQgdGhleSByZWZlciB0byB0aGUgb3JkaW5hcnkgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMiwKaW5zdGVhZCBvZiB0byB0aGlzIExpY2Vuc2UuICAoSWYgYSBuZXdlciB2ZXJzaW9uIHRoYW4gdmVyc2lvbiAyIG9mIHRoZQpvcmRpbmFyeSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBoYXMgYXBwZWFyZWQsIHRoZW4geW91IGNhbiBzcGVjaWZ5CnRoYXQgdmVyc2lvbiBpbnN0ZWFkIGlmIHlvdSB3aXNoLikgIERvIG5vdCBtYWtlIGFueSBvdGhlciBjaGFuZ2UgaW4KdGhlc2Ugbm90aWNlcy4KDAogIE9uY2UgdGhpcyBjaGFuZ2UgaXMgbWFkZSBpbiBhIGdpdmVuIGNvcHksIGl0IGlzIGlycmV2ZXJzaWJsZSBmb3IKdGhhdCBjb3B5LCBzbyB0aGUgb3JkaW5hcnkgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXBwbGllcyB0byBhbGwKc3Vic2VxdWVudCBjb3BpZXMgYW5kIGRlcml2YXRpdmUgd29ya3MgbWFkZSBmcm9tIHRoYXQgY29weS4KCiAgVGhpcyBvcHRpb24gaXMgdXNlZnVsIHdoZW4geW91IHdpc2ggdG8gY29weSBwYXJ0IG9mIHRoZSBjb2RlIG9mCnRoZSBMaWJyYXJ5IGludG8gYSBwcm9ncmFtIHRoYXQgaXMgbm90IGEgbGlicmFyeS4KCiAgNC4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IChvciBhIHBvcnRpb24gb3IKZGVyaXZhdGl2ZSBvZiBpdCwgdW5kZXIgU2VjdGlvbiAyKSBpbiBvYmplY3QgY29kZSBvciBleGVjdXRhYmxlIGZvcm0KdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zIDEgYW5kIDIgYWJvdmUgcHJvdmlkZWQgdGhhdCB5b3UgYWNjb21wYW55Cml0IHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcgbWFjaGluZS1yZWFkYWJsZSBzb3VyY2UgY29kZSwgd2hpY2gKbXVzdCBiZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBvbiBhCm1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZS4KCiAgSWYgZGlzdHJpYnV0aW9uIG9mIG9iamVjdCBjb2RlIGlzIG1hZGUgYnkgb2ZmZXJpbmcgYWNjZXNzIHRvIGNvcHkKZnJvbSBhIGRlc2lnbmF0ZWQgcGxhY2UsIHRoZW4gb2ZmZXJpbmcgZXF1aXZhbGVudCBhY2Nlc3MgdG8gY29weSB0aGUKc291cmNlIGNvZGUgZnJvbSB0aGUgc2FtZSBwbGFjZSBzYXRpc2ZpZXMgdGhlIHJlcXVpcmVtZW50IHRvCmRpc3RyaWJ1dGUgdGhlIHNvdXJjZSBjb2RlLCBldmVuIHRob3VnaCB0aGlyZCBwYXJ0aWVzIGFyZSBub3QKY29tcGVsbGVkIHRvIGNvcHkgdGhlIHNvdXJjZSBhbG9uZyB3aXRoIHRoZSBvYmplY3QgY29kZS4KCiAgNS4gQSBwcm9ncmFtIHRoYXQgY29udGFpbnMgbm8gZGVyaXZhdGl2ZSBvZiBhbnkgcG9ydGlvbiBvZiB0aGUKTGlicmFyeSwgYnV0IGlzIGRlc2lnbmVkIHRvIHdvcmsgd2l0aCB0aGUgTGlicmFyeSBieSBiZWluZyBjb21waWxlZCBvcgpsaW5rZWQgd2l0aCBpdCwgaXMgY2FsbGVkIGEgIndvcmsgdGhhdCB1c2VzIHRoZSBMaWJyYXJ5Ii4gIFN1Y2ggYQp3b3JrLCBpbiBpc29sYXRpb24sIGlzIG5vdCBhIGRlcml2YXRpdmUgd29yayBvZiB0aGUgTGlicmFyeSwgYW5kCnRoZXJlZm9yZSBmYWxscyBvdXRzaWRlIHRoZSBzY29wZSBvZiB0aGlzIExpY2Vuc2UuCgogIEhvd2V2ZXIsIGxpbmtpbmcgYSAid29yayB0aGF0IHVzZXMgdGhlIExpYnJhcnkiIHdpdGggdGhlIExpYnJhcnkKY3JlYXRlcyBhbiBleGVjdXRhYmxlIHRoYXQgaXMgYSBkZXJpdmF0aXZlIG9mIHRoZSBMaWJyYXJ5IChiZWNhdXNlIGl0CmNvbnRhaW5zIHBvcnRpb25zIG9mIHRoZSBMaWJyYXJ5KSwgcmF0aGVyIHRoYW4gYSAid29yayB0aGF0IHVzZXMgdGhlCmxpYnJhcnkiLiAgVGhlIGV4ZWN1dGFibGUgaXMgdGhlcmVmb3JlIGNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlLgpTZWN0aW9uIDYgc3RhdGVzIHRlcm1zIGZvciBkaXN0cmlidXRpb24gb2Ygc3VjaCBleGVjdXRhYmxlcy4KCiAgV2hlbiBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgTGlicmFyeSIgdXNlcyBtYXRlcmlhbCBmcm9tIGEgaGVhZGVyIGZpbGUKdGhhdCBpcyBwYXJ0IG9mIHRoZSBMaWJyYXJ5LCB0aGUgb2JqZWN0IGNvZGUgZm9yIHRoZSB3b3JrIG1heSBiZSBhCmRlcml2YXRpdmUgd29yayBvZiB0aGUgTGlicmFyeSBldmVuIHRob3VnaCB0aGUgc291cmNlIGNvZGUgaXMgbm90LgpXaGV0aGVyIHRoaXMgaXMgdHJ1ZSBpcyBlc3BlY2lhbGx5IHNpZ25pZmljYW50IGlmIHRoZSB3b3JrIGNhbiBiZQpsaW5rZWQgd2l0aG91dCB0aGUgTGlicmFyeSwgb3IgaWYgdGhlIHdvcmsgaXMgaXRzZWxmIGEgbGlicmFyeS4gIFRoZQp0aHJlc2hvbGQgZm9yIHRoaXMgdG8gYmUgdHJ1ZSBpcyBub3QgcHJlY2lzZWx5IGRlZmluZWQgYnkgbGF3LgoKICBJZiBzdWNoIGFuIG9iamVjdCBmaWxlIHVzZXMgb25seSBudW1lcmljYWwgcGFyYW1ldGVycywgZGF0YQpzdHJ1Y3R1cmUgbGF5b3V0cyBhbmQgYWNjZXNzb3JzLCBhbmQgc21hbGwgbWFjcm9zIGFuZCBzbWFsbCBpbmxpbmUKZnVuY3Rpb25zICh0ZW4gbGluZXMgb3IgbGVzcyBpbiBsZW5ndGgpLCB0aGVuIHRoZSB1c2Ugb2YgdGhlIG9iamVjdApmaWxlIGlzIHVucmVzdHJpY3RlZCwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGlzIGxlZ2FsbHkgYSBkZXJpdmF0aXZlCndvcmsuICAoRXhlY3V0YWJsZXMgY29udGFpbmluZyB0aGlzIG9iamVjdCBjb2RlIHBsdXMgcG9ydGlvbnMgb2YgdGhlCkxpYnJhcnkgd2lsbCBzdGlsbCBmYWxsIHVuZGVyIFNlY3Rpb24gNi4pCgogIE90aGVyd2lzZSwgaWYgdGhlIHdvcmsgaXMgYSBkZXJpdmF0aXZlIG9mIHRoZSBMaWJyYXJ5LCB5b3UgbWF5CmRpc3RyaWJ1dGUgdGhlIG9iamVjdCBjb2RlIGZvciB0aGUgd29yayB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbiA2LgpBbnkgZXhlY3V0YWJsZXMgY29udGFpbmluZyB0aGF0IHdvcmsgYWxzbyBmYWxsIHVuZGVyIFNlY3Rpb24gNiwKd2hldGhlciBvciBub3QgdGhleSBhcmUgbGlua2VkIGRpcmVjdGx5IHdpdGggdGhlIExpYnJhcnkgaXRzZWxmLgoMCiAgNi4gQXMgYW4gZXhjZXB0aW9uIHRvIHRoZSBTZWN0aW9ucyBhYm92ZSwgeW91IG1heSBhbHNvIGNvbWJpbmUgb3IKbGluayBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgTGlicmFyeSIgd2l0aCB0aGUgTGlicmFyeSB0byBwcm9kdWNlIGEKd29yayBjb250YWluaW5nIHBvcnRpb25zIG9mIHRoZSBMaWJyYXJ5LCBhbmQgZGlzdHJpYnV0ZSB0aGF0IHdvcmsKdW5kZXIgdGVybXMgb2YgeW91ciBjaG9pY2UsIHByb3ZpZGVkIHRoYXQgdGhlIHRlcm1zIHBlcm1pdAptb2RpZmljYXRpb24gb2YgdGhlIHdvcmsgZm9yIHRoZSBjdXN0b21lcidzIG93biB1c2UgYW5kIHJldmVyc2UKZW5naW5lZXJpbmcgZm9yIGRlYnVnZ2luZyBzdWNoIG1vZGlmaWNhdGlvbnMuCgogIFlvdSBtdXN0IGdpdmUgcHJvbWluZW50IG5vdGljZSB3aXRoIGVhY2ggY29weSBvZiB0aGUgd29yayB0aGF0IHRoZQpMaWJyYXJ5IGlzIHVzZWQgaW4gaXQgYW5kIHRoYXQgdGhlIExpYnJhcnkgYW5kIGl0cyB1c2UgYXJlIGNvdmVyZWQgYnkKdGhpcyBMaWNlbnNlLiAgWW91IG11c3Qgc3VwcGx5IGEgY29weSBvZiB0aGlzIExpY2Vuc2UuICBJZiB0aGUgd29yawpkdXJpbmcgZXhlY3V0aW9uIGRpc3BsYXlzIGNvcHlyaWdodCBub3RpY2VzLCB5b3UgbXVzdCBpbmNsdWRlIHRoZQpjb3B5cmlnaHQgbm90aWNlIGZvciB0aGUgTGlicmFyeSBhbW9uZyB0aGVtLCBhcyB3ZWxsIGFzIGEgcmVmZXJlbmNlCmRpcmVjdGluZyB0aGUgdXNlciB0byB0aGUgY29weSBvZiB0aGlzIExpY2Vuc2UuICBBbHNvLCB5b3UgbXVzdCBkbyBvbmUKb2YgdGhlc2UgdGhpbmdzOgoKICAgIGEpIEFjY29tcGFueSB0aGUgd29yayB3aXRoIHRoZSBjb21wbGV0ZSBjb3JyZXNwb25kaW5nCiAgICBtYWNoaW5lLXJlYWRhYmxlIHNvdXJjZSBjb2RlIGZvciB0aGUgTGlicmFyeSBpbmNsdWRpbmcgd2hhdGV2ZXIKICAgIGNoYW5nZXMgd2VyZSB1c2VkIGluIHRoZSB3b3JrICh3aGljaCBtdXN0IGJlIGRpc3RyaWJ1dGVkIHVuZGVyCiAgICBTZWN0aW9ucyAxIGFuZCAyIGFib3ZlKTsgYW5kLCBpZiB0aGUgd29yayBpcyBhbiBleGVjdXRhYmxlIGxpbmtlZAogICAgd2l0aCB0aGUgTGlicmFyeSwgd2l0aCB0aGUgY29tcGxldGUgbWFjaGluZS1yZWFkYWJsZSAid29yayB0aGF0CiAgICB1c2VzIHRoZSBMaWJyYXJ5IiwgYXMgb2JqZWN0IGNvZGUgYW5kL29yIHNvdXJjZSBjb2RlLCBzbyB0aGF0IHRoZQogICAgdXNlciBjYW4gbW9kaWZ5IHRoZSBMaWJyYXJ5IGFuZCB0aGVuIHJlbGluayB0byBwcm9kdWNlIGEgbW9kaWZpZWQKICAgIGV4ZWN1dGFibGUgY29udGFpbmluZyB0aGUgbW9kaWZpZWQgTGlicmFyeS4gIChJdCBpcyB1bmRlcnN0b29kCiAgICB0aGF0IHRoZSB1c2VyIHdobyBjaGFuZ2VzIHRoZSBjb250ZW50cyBvZiBkZWZpbml0aW9ucyBmaWxlcyBpbiB0aGUKICAgIExpYnJhcnkgd2lsbCBub3QgbmVjZXNzYXJpbHkgYmUgYWJsZSB0byByZWNvbXBpbGUgdGhlIGFwcGxpY2F0aW9uCiAgICB0byB1c2UgdGhlIG1vZGlmaWVkIGRlZmluaXRpb25zLikKCiAgICBiKSBVc2UgYSBzdWl0YWJsZSBzaGFyZWQgbGlicmFyeSBtZWNoYW5pc20gZm9yIGxpbmtpbmcgd2l0aCB0aGUKICAgIExpYnJhcnkuICBBIHN1aXRhYmxlIG1lY2hhbmlzbSBpcyBvbmUgdGhhdCAoMSkgdXNlcyBhdCBydW4gdGltZSBhCiAgICBjb3B5IG9mIHRoZSBsaWJyYXJ5IGFscmVhZHkgcHJlc2VudCBvbiB0aGUgdXNlcidzIGNvbXB1dGVyIHN5c3RlbSwKICAgIHJhdGhlciB0aGFuIGNvcHlpbmcgbGlicmFyeSBmdW5jdGlvbnMgaW50byB0aGUgZXhlY3V0YWJsZSwgYW5kICgyKQogICAgd2lsbCBvcGVyYXRlIHByb3Blcmx5IHdpdGggYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCBpZgogICAgdGhlIHVzZXIgaW5zdGFsbHMgb25lLCBhcyBsb25nIGFzIHRoZSBtb2RpZmllZCB2ZXJzaW9uIGlzCiAgICBpbnRlcmZhY2UtY29tcGF0aWJsZSB3aXRoIHRoZSB2ZXJzaW9uIHRoYXQgdGhlIHdvcmsgd2FzIG1hZGUgd2l0aC4KCiAgICBjKSBBY2NvbXBhbnkgdGhlIHdvcmsgd2l0aCBhIHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZvciBhdAogICAgbGVhc3QgdGhyZWUgeWVhcnMsIHRvIGdpdmUgdGhlIHNhbWUgdXNlciB0aGUgbWF0ZXJpYWxzCiAgICBzcGVjaWZpZWQgaW4gU3Vic2VjdGlvbiA2YSwgYWJvdmUsIGZvciBhIGNoYXJnZSBubyBtb3JlCiAgICB0aGFuIHRoZSBjb3N0IG9mIHBlcmZvcm1pbmcgdGhpcyBkaXN0cmlidXRpb24uCgogICAgZCkgSWYgZGlzdHJpYnV0aW9uIG9mIHRoZSB3b3JrIGlzIG1hZGUgYnkgb2ZmZXJpbmcgYWNjZXNzIHRvIGNvcHkKICAgIGZyb20gYSBkZXNpZ25hdGVkIHBsYWNlLCBvZmZlciBlcXVpdmFsZW50IGFjY2VzcyB0byBjb3B5IHRoZSBhYm92ZQogICAgc3BlY2lmaWVkIG1hdGVyaWFscyBmcm9tIHRoZSBzYW1lIHBsYWNlLgoKICAgIGUpIFZlcmlmeSB0aGF0IHRoZSB1c2VyIGhhcyBhbHJlYWR5IHJlY2VpdmVkIGEgY29weSBvZiB0aGVzZQogICAgbWF0ZXJpYWxzIG9yIHRoYXQgeW91IGhhdmUgYWxyZWFkeSBzZW50IHRoaXMgdXNlciBhIGNvcHkuCgogIEZvciBhbiBleGVjdXRhYmxlLCB0aGUgcmVxdWlyZWQgZm9ybSBvZiB0aGUgIndvcmsgdGhhdCB1c2VzIHRoZQpMaWJyYXJ5IiBtdXN0IGluY2x1ZGUgYW55IGRhdGEgYW5kIHV0aWxpdHkgcHJvZ3JhbXMgbmVlZGVkIGZvcgpyZXByb2R1Y2luZyB0aGUgZXhlY3V0YWJsZSBmcm9tIGl0LiAgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwKdGhlIG1hdGVyaWFscyB0byBiZSBkaXN0cmlidXRlZCBuZWVkIG5vdCBpbmNsdWRlIGFueXRoaW5nIHRoYXQgaXMKbm9ybWFsbHkgZGlzdHJpYnV0ZWQgKGluIGVpdGhlciBzb3VyY2Ugb3IgYmluYXJ5IGZvcm0pIHdpdGggdGhlIG1ham9yCmNvbXBvbmVudHMgKGNvbXBpbGVyLCBrZXJuZWwsIGFuZCBzbyBvbikgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0gb24Kd2hpY2ggdGhlIGV4ZWN1dGFibGUgcnVucywgdW5sZXNzIHRoYXQgY29tcG9uZW50IGl0c2VsZiBhY2NvbXBhbmllcwp0aGUgZXhlY3V0YWJsZS4KCiAgSXQgbWF5IGhhcHBlbiB0aGF0IHRoaXMgcmVxdWlyZW1lbnQgY29udHJhZGljdHMgdGhlIGxpY2Vuc2UKcmVzdHJpY3Rpb25zIG9mIG90aGVyIHByb3ByaWV0YXJ5IGxpYnJhcmllcyB0aGF0IGRvIG5vdCBub3JtYWxseQphY2NvbXBhbnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0uICBTdWNoIGEgY29udHJhZGljdGlvbiBtZWFucyB5b3UgY2Fubm90CnVzZSBib3RoIHRoZW0gYW5kIHRoZSBMaWJyYXJ5IHRvZ2V0aGVyIGluIGFuIGV4ZWN1dGFibGUgdGhhdCB5b3UKZGlzdHJpYnV0ZS4KDAogIDcuIFlvdSBtYXkgcGxhY2UgbGlicmFyeSBmYWNpbGl0aWVzIHRoYXQgYXJlIGEgd29yayBiYXNlZCBvbiB0aGUKTGlicmFyeSBzaWRlLWJ5LXNpZGUgaW4gYSBzaW5nbGUgbGlicmFyeSB0b2dldGhlciB3aXRoIG90aGVyIGxpYnJhcnkKZmFjaWxpdGllcyBub3QgY292ZXJlZCBieSB0aGlzIExpY2Vuc2UsIGFuZCBkaXN0cmlidXRlIHN1Y2ggYSBjb21iaW5lZApsaWJyYXJ5LCBwcm92aWRlZCB0aGF0IHRoZSBzZXBhcmF0ZSBkaXN0cmlidXRpb24gb2YgdGhlIHdvcmsgYmFzZWQgb24KdGhlIExpYnJhcnkgYW5kIG9mIHRoZSBvdGhlciBsaWJyYXJ5IGZhY2lsaXRpZXMgaXMgb3RoZXJ3aXNlCnBlcm1pdHRlZCwgYW5kIHByb3ZpZGVkIHRoYXQgeW91IGRvIHRoZXNlIHR3byB0aGluZ3M6CgogICAgYSkgQWNjb21wYW55IHRoZSBjb21iaW5lZCBsaWJyYXJ5IHdpdGggYSBjb3B5IG9mIHRoZSBzYW1lIHdvcmsKICAgIGJhc2VkIG9uIHRoZSBMaWJyYXJ5LCB1bmNvbWJpbmVkIHdpdGggYW55IG90aGVyIGxpYnJhcnkKICAgIGZhY2lsaXRpZXMuICBUaGlzIG11c3QgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQogICAgU2VjdGlvbnMgYWJvdmUuCgogICAgYikgR2l2ZSBwcm9taW5lbnQgbm90aWNlIHdpdGggdGhlIGNvbWJpbmVkIGxpYnJhcnkgb2YgdGhlIGZhY3QKICAgIHRoYXQgcGFydCBvZiBpdCBpcyBhIHdvcmsgYmFzZWQgb24gdGhlIExpYnJhcnksIGFuZCBleHBsYWluaW5nCiAgICB3aGVyZSB0byBmaW5kIHRoZSBhY2NvbXBhbnlpbmcgdW5jb21iaW5lZCBmb3JtIG9mIHRoZSBzYW1lIHdvcmsuCgogIDguIFlvdSBtYXkgbm90IGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSwgbGluayB3aXRoLCBvciBkaXN0cmlidXRlCnRoZSBMaWJyYXJ5IGV4Y2VwdCBhcyBleHByZXNzbHkgcHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQW55CmF0dGVtcHQgb3RoZXJ3aXNlIHRvIGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSwgbGluayB3aXRoLCBvcgpkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IGlzIHZvaWQsIGFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgdGVybWluYXRlIHlvdXIKcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZS4gIEhvd2V2ZXIsIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzLApvciByaWdodHMsIGZyb20geW91IHVuZGVyIHRoaXMgTGljZW5zZSB3aWxsIG5vdCBoYXZlIHRoZWlyIGxpY2Vuc2VzCnRlcm1pbmF0ZWQgc28gbG9uZyBhcyBzdWNoIHBhcnRpZXMgcmVtYWluIGluIGZ1bGwgY29tcGxpYW5jZS4KCiAgOS4gWW91IGFyZSBub3QgcmVxdWlyZWQgdG8gYWNjZXB0IHRoaXMgTGljZW5zZSwgc2luY2UgeW91IGhhdmUgbm90CnNpZ25lZCBpdC4gIEhvd2V2ZXIsIG5vdGhpbmcgZWxzZSBncmFudHMgeW91IHBlcm1pc3Npb24gdG8gbW9kaWZ5IG9yCmRpc3RyaWJ1dGUgdGhlIExpYnJhcnkgb3IgaXRzIGRlcml2YXRpdmUgd29ya3MuICBUaGVzZSBhY3Rpb25zIGFyZQpwcm9oaWJpdGVkIGJ5IGxhdyBpZiB5b3UgZG8gbm90IGFjY2VwdCB0aGlzIExpY2Vuc2UuICBUaGVyZWZvcmUsIGJ5Cm1vZGlmeWluZyBvciBkaXN0cmlidXRpbmcgdGhlIExpYnJhcnkgKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQpMaWJyYXJ5KSwgeW91IGluZGljYXRlIHlvdXIgYWNjZXB0YW5jZSBvZiB0aGlzIExpY2Vuc2UgdG8gZG8gc28sIGFuZAphbGwgaXRzIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpbmcgb3IgbW9kaWZ5aW5nCnRoZSBMaWJyYXJ5IG9yIHdvcmtzIGJhc2VkIG9uIGl0LgoKICAxMC4gRWFjaCB0aW1lIHlvdSByZWRpc3RyaWJ1dGUgdGhlIExpYnJhcnkgKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQpMaWJyYXJ5KSwgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5IHJlY2VpdmVzIGEgbGljZW5zZSBmcm9tIHRoZQpvcmlnaW5hbCBsaWNlbnNvciB0byBjb3B5LCBkaXN0cmlidXRlLCBsaW5rIHdpdGggb3IgbW9kaWZ5IHRoZSBMaWJyYXJ5CnN1YmplY3QgdG8gdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMuICBZb3UgbWF5IG5vdCBpbXBvc2UgYW55IGZ1cnRoZXIKcmVzdHJpY3Rpb25zIG9uIHRoZSByZWNpcGllbnRzJyBleGVyY2lzZSBvZiB0aGUgcmlnaHRzIGdyYW50ZWQgaGVyZWluLgpZb3UgYXJlIG5vdCByZXNwb25zaWJsZSBmb3IgZW5mb3JjaW5nIGNvbXBsaWFuY2UgYnkgdGhpcmQgcGFydGllcyB3aXRoCnRoaXMgTGljZW5zZS4KDAogIDExLiBJZiwgYXMgYSBjb25zZXF1ZW5jZSBvZiBhIGNvdXJ0IGp1ZGdtZW50IG9yIGFsbGVnYXRpb24gb2YgcGF0ZW50CmluZnJpbmdlbWVudCBvciBmb3IgYW55IG90aGVyIHJlYXNvbiAobm90IGxpbWl0ZWQgdG8gcGF0ZW50IGlzc3VlcyksCmNvbmRpdGlvbnMgYXJlIGltcG9zZWQgb24geW91ICh3aGV0aGVyIGJ5IGNvdXJ0IG9yZGVyLCBhZ3JlZW1lbnQgb3IKb3RoZXJ3aXNlKSB0aGF0IGNvbnRyYWRpY3QgdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLCB0aGV5IGRvIG5vdApleGN1c2UgeW91IGZyb20gdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLiAgSWYgeW91IGNhbm5vdApkaXN0cmlidXRlIHNvIGFzIHRvIHNhdGlzZnkgc2ltdWx0YW5lb3VzbHkgeW91ciBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzCkxpY2Vuc2UgYW5kIGFueSBvdGhlciBwZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5jZSB5b3UKbWF5IG5vdCBkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiBhIHBhdGVudApsaWNlbnNlIHdvdWxkIG5vdCBwZXJtaXQgcm95YWx0eS1mcmVlIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBMaWJyYXJ5IGJ5CmFsbCB0aG9zZSB3aG8gcmVjZWl2ZSBjb3BpZXMgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHlvdSwgdGhlbgp0aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCBpdCBhbmQgdGhpcyBMaWNlbnNlIHdvdWxkIGJlIHRvCnJlZnJhaW4gZW50aXJlbHkgZnJvbSBkaXN0cmlidXRpb24gb2YgdGhlIExpYnJhcnkuCgpJZiBhbnkgcG9ydGlvbiBvZiB0aGlzIHNlY3Rpb24gaXMgaGVsZCBpbnZhbGlkIG9yIHVuZW5mb3JjZWFibGUgdW5kZXIgYW55CnBhcnRpY3VsYXIgY2lyY3Vtc3RhbmNlLCB0aGUgYmFsYW5jZSBvZiB0aGUgc2VjdGlvbiBpcyBpbnRlbmRlZCB0byBhcHBseSwKYW5kIHRoZSBzZWN0aW9uIGFzIGEgd2hvbGUgaXMgaW50ZW5kZWQgdG8gYXBwbHkgaW4gb3RoZXIgY2lyY3Vtc3RhbmNlcy4KCkl0IGlzIG5vdCB0aGUgcHVycG9zZSBvZiB0aGlzIHNlY3Rpb24gdG8gaW5kdWNlIHlvdSB0byBpbmZyaW5nZSBhbnkKcGF0ZW50cyBvciBvdGhlciBwcm9wZXJ0eSByaWdodCBjbGFpbXMgb3IgdG8gY29udGVzdCB2YWxpZGl0eSBvZiBhbnkKc3VjaCBjbGFpbXM7IHRoaXMgc2VjdGlvbiBoYXMgdGhlIHNvbGUgcHVycG9zZSBvZiBwcm90ZWN0aW5nIHRoZQppbnRlZ3JpdHkgb2YgdGhlIGZyZWUgc29mdHdhcmUgZGlzdHJpYnV0aW9uIHN5c3RlbSB3aGljaCBpcwppbXBsZW1lbnRlZCBieSBwdWJsaWMgbGljZW5zZSBwcmFjdGljZXMuICBNYW55IHBlb3BsZSBoYXZlIG1hZGUKZ2VuZXJvdXMgY29udHJpYnV0aW9ucyB0byB0aGUgd2lkZSByYW5nZSBvZiBzb2Z0d2FyZSBkaXN0cmlidXRlZAp0aHJvdWdoIHRoYXQgc3lzdGVtIGluIHJlbGlhbmNlIG9uIGNvbnNpc3RlbnQgYXBwbGljYXRpb24gb2YgdGhhdApzeXN0ZW07IGl0IGlzIHVwIHRvIHRoZSBhdXRob3IvZG9ub3IgdG8gZGVjaWRlIGlmIGhlIG9yIHNoZSBpcyB3aWxsaW5nCnRvIGRpc3RyaWJ1dGUgc29mdHdhcmUgdGhyb3VnaCBhbnkgb3RoZXIgc3lzdGVtIGFuZCBhIGxpY2Vuc2VlIGNhbm5vdAppbXBvc2UgdGhhdCBjaG9pY2UuCgpUaGlzIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8gbWFrZSB0aG9yb3VnaGx5IGNsZWFyIHdoYXQgaXMgYmVsaWV2ZWQgdG8KYmUgYSBjb25zZXF1ZW5jZSBvZiB0aGUgcmVzdCBvZiB0aGlzIExpY2Vuc2UuCgogIDEyLiBJZiB0aGUgZGlzdHJpYnV0aW9uIGFuZC9vciB1c2Ugb2YgdGhlIExpYnJhcnkgaXMgcmVzdHJpY3RlZCBpbgpjZXJ0YWluIGNvdW50cmllcyBlaXRoZXIgYnkgcGF0ZW50cyBvciBieSBjb3B5cmlnaHRlZCBpbnRlcmZhY2VzLCB0aGUKb3JpZ2luYWwgY29weXJpZ2h0IGhvbGRlciB3aG8gcGxhY2VzIHRoZSBMaWJyYXJ5IHVuZGVyIHRoaXMgTGljZW5zZSBtYXkgYWRkCmFuIGV4cGxpY2l0IGdlb2dyYXBoaWNhbCBkaXN0cmlidXRpb24gbGltaXRhdGlvbiBleGNsdWRpbmcgdGhvc2UgY291bnRyaWVzLApzbyB0aGF0IGRpc3RyaWJ1dGlvbiBpcyBwZXJtaXR0ZWQgb25seSBpbiBvciBhbW9uZyBjb3VudHJpZXMgbm90IHRodXMKZXhjbHVkZWQuICBJbiBzdWNoIGNhc2UsIHRoaXMgTGljZW5zZSBpbmNvcnBvcmF0ZXMgdGhlIGxpbWl0YXRpb24gYXMgaWYKd3JpdHRlbiBpbiB0aGUgYm9keSBvZiB0aGlzIExpY2Vuc2UuCgogIDEzLiBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldwp2ZXJzaW9ucyBvZiB0aGUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuClN1Y2ggbmV3IHZlcnNpb25zIHdpbGwgYmUgc2ltaWxhciBpbiBzcGlyaXQgdG8gdGhlIHByZXNlbnQgdmVyc2lvbiwKYnV0IG1heSBkaWZmZXIgaW4gZGV0YWlsIHRvIGFkZHJlc3MgbmV3IHByb2JsZW1zIG9yIGNvbmNlcm5zLgoKRWFjaCB2ZXJzaW9uIGlzIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuICBJZiB0aGUgTGlicmFyeQpzcGVjaWZpZXMgYSB2ZXJzaW9uIG51bWJlciBvZiB0aGlzIExpY2Vuc2Ugd2hpY2ggYXBwbGllcyB0byBpdCBhbmQKImFueSBsYXRlciB2ZXJzaW9uIiwgeW91IGhhdmUgdGhlIG9wdGlvbiBvZiBmb2xsb3dpbmcgdGhlIHRlcm1zIGFuZApjb25kaXRpb25zIGVpdGhlciBvZiB0aGF0IHZlcnNpb24gb3Igb2YgYW55IGxhdGVyIHZlcnNpb24gcHVibGlzaGVkIGJ5CnRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uICBJZiB0aGUgTGlicmFyeSBkb2VzIG5vdCBzcGVjaWZ5IGEKbGljZW5zZSB2ZXJzaW9uIG51bWJlciwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQgYnkKdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KDAogIDE0LiBJZiB5b3Ugd2lzaCB0byBpbmNvcnBvcmF0ZSBwYXJ0cyBvZiB0aGUgTGlicmFyeSBpbnRvIG90aGVyIGZyZWUKcHJvZ3JhbXMgd2hvc2UgZGlzdHJpYnV0aW9uIGNvbmRpdGlvbnMgYXJlIGluY29tcGF0aWJsZSB3aXRoIHRoZXNlLAp3cml0ZSB0byB0aGUgYXV0aG9yIHRvIGFzayBmb3IgcGVybWlzc2lvbi4gIEZvciBzb2Z0d2FyZSB3aGljaCBpcwpjb3B5cmlnaHRlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3cml0ZSB0byB0aGUgRnJlZQpTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3ZSBzb21ldGltZXMgbWFrZSBleGNlcHRpb25zIGZvciB0aGlzLiAgT3VyCmRlY2lzaW9uIHdpbGwgYmUgZ3VpZGVkIGJ5IHRoZSB0d28gZ29hbHMgb2YgcHJlc2VydmluZyB0aGUgZnJlZSBzdGF0dXMKb2YgYWxsIGRlcml2YXRpdmVzIG9mIG91ciBmcmVlIHNvZnR3YXJlIGFuZCBvZiBwcm9tb3RpbmcgdGhlIHNoYXJpbmcKYW5kIHJldXNlIG9mIHNvZnR3YXJlIGdlbmVyYWxseS4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTyBXQVJSQU5UWQoKICAxNS4gQkVDQVVTRSBUSEUgTElCUkFSWSBJUyBMSUNFTlNFRCBGUkVFIE9GIENIQVJHRSwgVEhFUkUgSVMgTk8KV0FSUkFOVFkgRk9SIFRIRSBMSUJSQVJZLCBUTyBUSEUgRVhURU5UIFBFUk1JVFRFRCBCWSBBUFBMSUNBQkxFIExBVy4KRVhDRVBUIFdIRU4gT1RIRVJXSVNFIFNUQVRFRCBJTiBXUklUSU5HIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQvT1IKT1RIRVIgUEFSVElFUyBQUk9WSURFIFRIRSBMSUJSQVJZICJBUyBJUyIgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKS0lORCwgRUlUSEVSIEVYUFJFU1NFRCBPUiBJTVBMSUVELCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCklNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgpQVVJQT1NFLiAgVEhFIEVOVElSRSBSSVNLIEFTIFRPIFRIRSBRVUFMSVRZIEFORCBQRVJGT1JNQU5DRSBPRiBUSEUKTElCUkFSWSBJUyBXSVRIIFlPVS4gIFNIT1VMRCBUSEUgTElCUkFSWSBQUk9WRSBERUZFQ1RJVkUsIFlPVSBBU1NVTUUKVEhFIENPU1QgT0YgQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsIFJFUEFJUiBPUiBDT1JSRUNUSU9OLgoKICAxNi4gSU4gTk8gRVZFTlQgVU5MRVNTIFJFUVVJUkVEIEJZIEFQUExJQ0FCTEUgTEFXIE9SIEFHUkVFRCBUTyBJTgpXUklUSU5HIFdJTEwgQU5ZIENPUFlSSUdIVCBIT0xERVIsIE9SIEFOWSBPVEhFUiBQQVJUWSBXSE8gTUFZIE1PRElGWQpBTkQvT1IgUkVESVNUUklCVVRFIFRIRSBMSUJSQVJZIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVQpGT1IgREFNQUdFUywgSU5DTFVESU5HIEFOWSBHRU5FUkFMLCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SCkNPTlNFUVVFTlRJQUwgREFNQUdFUyBBUklTSU5HIE9VVCBPRiBUSEUgVVNFIE9SIElOQUJJTElUWSBUTyBVU0UgVEhFCkxJQlJBUlkgKElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gTE9TUyBPRiBEQVRBIE9SIERBVEEgQkVJTkcKUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJTkVEIEJZIFlPVSBPUiBUSElSRCBQQVJUSUVTIE9SIEEKRkFJTFVSRSBPRiBUSEUgTElCUkFSWSBUTyBPUEVSQVRFIFdJVEggQU5ZIE9USEVSIFNPRlRXQVJFKSwgRVZFTiBJRgpTVUNIIEhPTERFUiBPUiBPVEhFUiBQQVJUWSBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICkRBTUFHRVMuCgogICAgICAgICAgICAgICAgICAgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKDAogICAgICAgICAgIEhvdyB0byBBcHBseSBUaGVzZSBUZXJtcyB0byBZb3VyIE5ldyBMaWJyYXJpZXMKCiAgSWYgeW91IGRldmVsb3AgYSBuZXcgbGlicmFyeSwgYW5kIHlvdSB3YW50IGl0IHRvIGJlIG9mIHRoZSBncmVhdGVzdApwb3NzaWJsZSB1c2UgdG8gdGhlIHB1YmxpYywgd2UgcmVjb21tZW5kIG1ha2luZyBpdCBmcmVlIHNvZnR3YXJlIHRoYXQKZXZlcnlvbmUgY2FuIHJlZGlzdHJpYnV0ZSBhbmQgY2hhbmdlLiAgWW91IGNhbiBkbyBzbyBieSBwZXJtaXR0aW5nCnJlZGlzdHJpYnV0aW9uIHVuZGVyIHRoZXNlIHRlcm1zIChvciwgYWx0ZXJuYXRpdmVseSwgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQpvcmRpbmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKS4KCiAgVG8gYXBwbHkgdGhlc2UgdGVybXMsIGF0dGFjaCB0aGUgZm9sbG93aW5nIG5vdGljZXMgdG8gdGhlIGxpYnJhcnkuICBJdCBpcwpzYWZlc3QgdG8gYXR0YWNoIHRoZW0gdG8gdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGZpbGUgdG8gbW9zdCBlZmZlY3RpdmVseQpjb252ZXkgdGhlIGV4Y2x1c2lvbiBvZiB3YXJyYW50eTsgYW5kIGVhY2ggZmlsZSBzaG91bGQgaGF2ZSBhdCBsZWFzdCB0aGUKImNvcHlyaWdodCIgbGluZSBhbmQgYSBwb2ludGVyIHRvIHdoZXJlIHRoZSBmdWxsIG5vdGljZSBpcyBmb3VuZC4KCiAgICA8b25lIGxpbmUgdG8gZ2l2ZSB0aGUgbGlicmFyeSdzIG5hbWUgYW5kIGEgYnJpZWYgaWRlYSBvZiB3aGF0IGl0IGRvZXMuPgogICAgQ29weXJpZ2h0IChDKSA8eWVhcj4gIDxuYW1lIG9mIGF1dGhvcj4KCiAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgoKICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgoKICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQoKQWxzbyBhZGQgaW5mb3JtYXRpb24gb24gaG93IHRvIGNvbnRhY3QgeW91IGJ5IGVsZWN0cm9uaWMgYW5kIHBhcGVyIG1haWwuCgpZb3Ugc2hvdWxkIGFsc28gZ2V0IHlvdXIgZW1wbG95ZXIgKGlmIHlvdSB3b3JrIGFzIGEgcHJvZ3JhbW1lcikgb3IgeW91cgpzY2hvb2wsIGlmIGFueSwgdG8gc2lnbiBhICJjb3B5cmlnaHQgZGlzY2xhaW1lciIgZm9yIHRoZSBsaWJyYXJ5LCBpZgpuZWNlc3NhcnkuICBIZXJlIGlzIGEgc2FtcGxlOyBhbHRlciB0aGUgbmFtZXM6CgogIFlveW9keW5lLCBJbmMuLCBoZXJlYnkgZGlzY2xhaW1zIGFsbCBjb3B5cmlnaHQgaW50ZXJlc3QgaW4gdGhlCiAgbGlicmFyeSBgRnJvYicgKGEgbGlicmFyeSBmb3IgdHdlYWtpbmcga25vYnMpIHdyaXR0ZW4gYnkgSmFtZXMgUmFuZG9tIEhhY2tlci4KCiAgPHNpZ25hdHVyZSBvZiBUeSBDb29uPiwgMSBBcHJpbCAxOTkwCiAgVHkgQ29vbiwgUHJlc2lkZW50IG9mIFZpY2UKClRoYXQncyBhbGwgdGhlcmUgaXMgdG8gaXQhCg==", + "contentType": "text/plain", + "encoding": "base64" } } }, @@ -215,8 +210,9 @@ "license": { "name": "declared license file: AUTHORS", "text": { - "content": "Stefan K\u00f6gl \nAlexander Shorin \nChristopher J. White \n", - "contentType": "text/plain" + "content": "U3RlZmFuIEvDtmdsIDxzdGVmYW5Ac2tvZWdsLm5ldD4KQWxleGFuZGVyIFNob3JpbiA8a3hlcGFsQGdtYWlsLmNvbT4KQ2hyaXN0b3BoZXIgSi4gV2hpdGUgPGNocmlzQGdyaWVyd2hpdGUuY29tPgo=", + "contentType": "text/plain", + "encoding": "base64" } } }, @@ -224,8 +220,9 @@ "license": { "name": "declared license file: LICENSE.txt", "text": { - "content": "Copyright (c) 2011 Stefan K\u00f6gl \nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions\nare met:\n\n1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n3. The name of the author may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR\nIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\nOF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\nIN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\nNOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\nTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n", - "contentType": "text/plain" + "content": "Q29weXJpZ2h0IChjKSAyMDExIFN0ZWZhbiBLw7ZnbCA8c3RlZmFuQHNrb2VnbC5uZXQ+CkFsbCByaWdodHMgcmVzZXJ2ZWQuCgpSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCmFyZSBtZXQ6CgoxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCjIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KMy4gVGhlIG5hbWUgb2YgdGhlIGF1dGhvciBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzCiAgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgoKVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IKSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUwpPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELgpJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsCklOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVApOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCkRBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQpUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCihJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgpUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgoK", + "contentType": "text/plain", + "encoding": "base64" } } }, @@ -264,8 +261,9 @@ "license": { "name": "declared license file: AUTHORS.rst", "text": { - "content": "The following organizations or individuals have contributed to this code:\n\n- Ayan Sinha Mahapatra @AyanSinhaMahapatra\n- Carmen Bianca Bakker @carmenbianca\n- Chin-Yeung Li @chinyeungli\n- Dennis Clark @DennisClark\n- John Horan @johnmhoran\n- Jono Yang @JonoYang\n- Max Mehl @mxmehl\n- nexB Inc. @nexB\n- Peter Kolbus @pkolbus\n- Philippe Ombredanne @pombredanne\n- Sebastian Schuberth @sschuberth\n- Steven Esser @majurg\n- Thomas Druez @tdruez\n", - "contentType": "text/prs.fallenstein.rst" + "content": "VGhlIGZvbGxvd2luZyBvcmdhbml6YXRpb25zIG9yIGluZGl2aWR1YWxzIGhhdmUgY29udHJpYnV0ZWQgdG8gdGhpcyBjb2RlOgoKLSBBeWFuIFNpbmhhIE1haGFwYXRyYSBAQXlhblNpbmhhTWFoYXBhdHJhCi0gQ2FybWVuIEJpYW5jYSBCYWtrZXIgQGNhcm1lbmJpYW5jYQotIENoaW4tWWV1bmcgTGkgQGNoaW55ZXVuZ2xpCi0gRGVubmlzIENsYXJrIEBEZW5uaXNDbGFyawotIEpvaG4gSG9yYW4gQGpvaG5taG9yYW4KLSBKb25vIFlhbmcgQEpvbm9ZYW5nCi0gTWF4IE1laGwgQG14bWVobAotIG5leEIgSW5jLiBAbmV4QgotIFBldGVyIEtvbGJ1cyBAcGtvbGJ1cwotIFBoaWxpcHBlIE9tYnJlZGFubmUgQHBvbWJyZWRhbm5lCi0gU2ViYXN0aWFuIFNjaHViZXJ0aCBAc3NjaHViZXJ0aAotIFN0ZXZlbiBFc3NlciBAbWFqdXJnCi0gVGhvbWFzIERydWV6IEB0ZHJ1ZXoK", + "contentType": "text/prs.fallenstein.rst", + "encoding": "base64" } } }, @@ -273,8 +271,9 @@ "license": { "name": "declared license file: CHANGELOG.rst", "text": { - "content": "Changelog\n=========\n\nv30.3.0 - 2024-03-18\n--------------------\n\nThis is a minor release without API changes:\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.23\n- Drop support for Python 3.7\n\nv30.2.0 - 2023-11-29\n--------------------\n\nThis is a minor release without API changes:\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.22\n- Add Python 3.12 support in CI\n\n\nv30.1.1 - 2023-01-16\n----------------------\n\nThis is a minor dot release without API changes\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.20\n\n\nv30.1.0 - 2023-01-16\n----------------------\n\nThis is a minor release without API changes\n\n- Use latest skeleton (and updated configure script)\n- Update license list to latest ScanCode and SPDX 3.19\n- Use correct syntax for python_require\n- Drop using Travis and Appveyor\n- Drop support for Python 3.7 and add Python 3.11 in CI\n\n\nv30.0.0 - 2022-05-10\n----------------------\n\nThis is a minor release with API changes\n\n- Use latest skeleton (and updated configure script)\n- Drop using calver\n- Improve error checking when combining licenses\n\n\n\nv21.6.14 - 2021-06-14\n----------------------\n\nAdded\n~~~~~\n\n- Switch to calver for package versioning to better convey the currency of the\n bundled data.\n\n- Include https://scancode-licensedb.aboutcode.org/ licenses list with\n ScanCode (v21.6.7) and SPDX licenses (v3.13) keys. Add new functions to\n create Licensing using these licenses as LicenseSymbol.\n\n- Add new License.dedup() method to deduplicate and simplify license expressions\n without over simplifying.\n\n- Add new License.validate() method to return a new ExpressionInfo object with\n details on a license expression validation.\n\n\nChanged\n~~~~~~~\n- Drop support for Python 2.\n- Adopt the project skeleton from https://github.com/nexB/skeleton\n and its new configure script\n\n\nv1.2 - 2019-11-14\n------------------\nAdded\n~~~~~\n- Add ability to render WITH expression wrapped in parenthesis\n\nFixes\n~~~~~\n- Fix anomalous backslashes in strings\n\nChanged\n~~~~~~~\n- Update the thirdparty directory structure.\n\n\nv1.0 - 2019-10-16\n------------------\nAdded\n~~~~~\n- New version of boolean.py library\n- Add ability to leave license expressions unsorted when simplifying\n\nChanged\n~~~~~~~\n- updated travis CI settings\n\n\nv0.999 - 2019-04-29\n--------------------\n- Initial release\n- license-expression is small utility library to parse, compare and\n simplify and normalize license expressions.\n\n", - "contentType": "text/prs.fallenstein.rst" + "content": "Q2hhbmdlbG9nCj09PT09PT09PQoKdjMwLjMuMCAtIDIwMjQtMDMtMTgKLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRoaXMgaXMgYSBtaW5vciByZWxlYXNlIHdpdGhvdXQgQVBJIGNoYW5nZXM6CgotIFVzZSBsYXRlc3Qgc2tlbGV0b24KLSBVcGRhdGUgbGljZW5zZSBsaXN0IHRvIGxhdGVzdCBTY2FuQ29kZSBhbmQgU1BEWCAzLjIzCi0gRHJvcCBzdXBwb3J0IGZvciBQeXRob24gMy43Cgp2MzAuMi4wIC0gMjAyMy0xMS0yOQotLS0tLS0tLS0tLS0tLS0tLS0tLQoKVGhpcyBpcyBhIG1pbm9yIHJlbGVhc2Ugd2l0aG91dCBBUEkgY2hhbmdlczoKCi0gVXNlIGxhdGVzdCBza2VsZXRvbgotIFVwZGF0ZSBsaWNlbnNlIGxpc3QgdG8gbGF0ZXN0IFNjYW5Db2RlIGFuZCBTUERYIDMuMjIKLSBBZGQgUHl0aG9uIDMuMTIgc3VwcG9ydCBpbiBDSQoKCnYzMC4xLjEgLSAyMDIzLTAxLTE2Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRoaXMgaXMgYSBtaW5vciBkb3QgcmVsZWFzZSB3aXRob3V0IEFQSSBjaGFuZ2VzCgotIFVzZSBsYXRlc3Qgc2tlbGV0b24KLSBVcGRhdGUgbGljZW5zZSBsaXN0IHRvIGxhdGVzdCBTY2FuQ29kZSBhbmQgU1BEWCAzLjIwCgoKdjMwLjEuMCAtIDIwMjMtMDEtMTYKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKVGhpcyBpcyBhIG1pbm9yIHJlbGVhc2Ugd2l0aG91dCBBUEkgY2hhbmdlcwoKLSBVc2UgbGF0ZXN0IHNrZWxldG9uIChhbmQgdXBkYXRlZCBjb25maWd1cmUgc2NyaXB0KQotIFVwZGF0ZSBsaWNlbnNlIGxpc3QgdG8gbGF0ZXN0IFNjYW5Db2RlIGFuZCBTUERYIDMuMTkKLSBVc2UgY29ycmVjdCBzeW50YXggZm9yIHB5dGhvbl9yZXF1aXJlCi0gRHJvcCB1c2luZyBUcmF2aXMgYW5kIEFwcHZleW9yCi0gRHJvcCBzdXBwb3J0IGZvciBQeXRob24gMy43IGFuZCBhZGQgUHl0aG9uIDMuMTEgaW4gQ0kKCgp2MzAuMC4wIC0gMjAyMi0wNS0xMAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpUaGlzIGlzIGEgbWlub3IgcmVsZWFzZSB3aXRoIEFQSSBjaGFuZ2VzCgotIFVzZSBsYXRlc3Qgc2tlbGV0b24gKGFuZCB1cGRhdGVkIGNvbmZpZ3VyZSBzY3JpcHQpCi0gRHJvcCB1c2luZyBjYWx2ZXIKLSBJbXByb3ZlIGVycm9yIGNoZWNraW5nIHdoZW4gY29tYmluaW5nIGxpY2Vuc2VzCgoKCnYyMS42LjE0IC0gMjAyMS0wNi0xNAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpBZGRlZAp+fn5+fgoKLSBTd2l0Y2ggdG8gY2FsdmVyIGZvciBwYWNrYWdlIHZlcnNpb25pbmcgdG8gYmV0dGVyIGNvbnZleSB0aGUgY3VycmVuY3kgb2YgdGhlCiAgYnVuZGxlZCBkYXRhLgoKLSBJbmNsdWRlIGh0dHBzOi8vc2NhbmNvZGUtbGljZW5zZWRiLmFib3V0Y29kZS5vcmcvIGxpY2Vuc2VzIGxpc3Qgd2l0aAogIFNjYW5Db2RlICh2MjEuNi43KSBhbmQgU1BEWCBsaWNlbnNlcyAodjMuMTMpIGtleXMuIEFkZCBuZXcgZnVuY3Rpb25zIHRvCiAgY3JlYXRlIExpY2Vuc2luZyB1c2luZyB0aGVzZSBsaWNlbnNlcyBhcyBMaWNlbnNlU3ltYm9sLgoKLSBBZGQgbmV3IExpY2Vuc2UuZGVkdXAoKSBtZXRob2QgdG8gZGVkdXBsaWNhdGUgYW5kIHNpbXBsaWZ5IGxpY2Vuc2UgZXhwcmVzc2lvbnMKICB3aXRob3V0IG92ZXIgc2ltcGxpZnlpbmcuCgotIEFkZCBuZXcgTGljZW5zZS52YWxpZGF0ZSgpIG1ldGhvZCB0byByZXR1cm4gYSBuZXcgRXhwcmVzc2lvbkluZm8gb2JqZWN0IHdpdGgKICBkZXRhaWxzIG9uIGEgbGljZW5zZSBleHByZXNzaW9uIHZhbGlkYXRpb24uCgoKQ2hhbmdlZAp+fn5+fn5+Ci0gRHJvcCBzdXBwb3J0IGZvciBQeXRob24gMi4KLSBBZG9wdCB0aGUgcHJvamVjdCBza2VsZXRvbiBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9uZXhCL3NrZWxldG9uCiAgYW5kIGl0cyBuZXcgY29uZmlndXJlIHNjcmlwdAoKCnYxLjIgLSAyMDE5LTExLTE0Ci0tLS0tLS0tLS0tLS0tLS0tLQpBZGRlZAp+fn5+fgotIEFkZCBhYmlsaXR5IHRvIHJlbmRlciBXSVRIIGV4cHJlc3Npb24gd3JhcHBlZCBpbiBwYXJlbnRoZXNpcwoKRml4ZXMKfn5+fn4KLSBGaXggYW5vbWFsb3VzIGJhY2tzbGFzaGVzIGluIHN0cmluZ3MKCkNoYW5nZWQKfn5+fn5+fgotIFVwZGF0ZSB0aGUgdGhpcmRwYXJ0eSBkaXJlY3Rvcnkgc3RydWN0dXJlLgoKCnYxLjAgLSAyMDE5LTEwLTE2Ci0tLS0tLS0tLS0tLS0tLS0tLQpBZGRlZAp+fn5+fgotIE5ldyB2ZXJzaW9uIG9mIGJvb2xlYW4ucHkgbGlicmFyeQotIEFkZCBhYmlsaXR5IHRvIGxlYXZlIGxpY2Vuc2UgZXhwcmVzc2lvbnMgdW5zb3J0ZWQgd2hlbiBzaW1wbGlmeWluZwoKQ2hhbmdlZAp+fn5+fn5+Ci0gdXBkYXRlZCB0cmF2aXMgQ0kgc2V0dGluZ3MKCgp2MC45OTkgLSAyMDE5LTA0LTI5Ci0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gSW5pdGlhbCByZWxlYXNlCi0gbGljZW5zZS1leHByZXNzaW9uIGlzIHNtYWxsIHV0aWxpdHkgbGlicmFyeSB0byBwYXJzZSwgY29tcGFyZSBhbmQKICBzaW1wbGlmeSBhbmQgbm9ybWFsaXplIGxpY2Vuc2UgZXhwcmVzc2lvbnMuCgo=", + "contentType": "text/prs.fallenstein.rst", + "encoding": "base64" } } }, @@ -282,8 +281,9 @@ "license": { "name": "declared license file: CODE_OF_CONDUCT.rst", "text": { - "content": "Contributor Covenant Code of Conduct\n====================================\n\nOur Pledge\n----------\n\nIn the interest of fostering an open and welcoming environment, we as\ncontributors and maintainers pledge to making participation in our\nproject and our community a harassment-free experience for everyone,\nregardless of age, body size, disability, ethnicity, gender identity and\nexpression, level of experience, education, socio-economic status,\nnationality, personal appearance, race, religion, or sexual identity and\norientation.\n\nOur Standards\n-------------\n\nExamples of behavior that contributes to creating a positive environment\ninclude:\n\n- Using welcoming and inclusive language\n- Being respectful of differing viewpoints and experiences\n- Gracefully accepting constructive criticism\n- Focusing on what is best for the community\n- Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n- The use of sexualized language or imagery and unwelcome sexual\n attention or advances\n- Trolling, insulting/derogatory comments, and personal or political\n attacks\n- Public or private harassment\n- Publishing others\u2019 private information, such as a physical or\n electronic address, without explicit permission\n- Other conduct which could reasonably be considered inappropriate in a\n professional setting\n\nOur Responsibilities\n--------------------\n\nProject maintainers are responsible for clarifying the standards of\nacceptable behavior and are expected to take appropriate and fair\ncorrective action in response to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit,\nor reject comments, commits, code, wiki edits, issues, and other\ncontributions that are not aligned to this Code of Conduct, or to ban\ntemporarily or permanently any contributor for other behaviors that they\ndeem inappropriate, threatening, offensive, or harmful.\n\nScope\n-----\n\nThis Code of Conduct applies both within project spaces and in public\nspaces when an individual is representing the project or its community.\nExamples of representing a project or community include using an\nofficial project e-mail address, posting via an official social media\naccount, or acting as an appointed representative at an online or\noffline event. Representation of a project may be further defined and\nclarified by project maintainers.\n\nEnforcement\n-----------\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may\nbe reported by contacting the project team at pombredanne@gmail.com\nor on the Gitter chat channel at https://gitter.im/aboutcode-org/discuss .\nAll complaints will be reviewed and investigated and will result in a\nresponse that is deemed necessary and appropriate to the circumstances.\nThe project team is obligated to maintain confidentiality with regard to\nthe reporter of an incident. Further details of specific enforcement\npolicies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in\ngood faith may face temporary or permanent repercussions as determined\nby other members of the project\u2019s leadership.\n\nAttribution\n-----------\n\nThis Code of Conduct is adapted from the `Contributor Covenant`_ ,\nversion 1.4, available at\nhttps://www.contributor-covenant.org/version/1/4/code-of-conduct.html\n\n.. _Contributor Covenant: https://www.contributor-covenant.org\n", - "contentType": "text/prs.fallenstein.rst" + "content": "Q29udHJpYnV0b3IgQ292ZW5hbnQgQ29kZSBvZiBDb25kdWN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKT3VyIFBsZWRnZQotLS0tLS0tLS0tCgpJbiB0aGUgaW50ZXJlc3Qgb2YgZm9zdGVyaW5nIGFuIG9wZW4gYW5kIHdlbGNvbWluZyBlbnZpcm9ubWVudCwgd2UgYXMKY29udHJpYnV0b3JzIGFuZCBtYWludGFpbmVycyBwbGVkZ2UgdG8gbWFraW5nIHBhcnRpY2lwYXRpb24gaW4gb3VyCnByb2plY3QgYW5kIG91ciBjb21tdW5pdHkgYSBoYXJhc3NtZW50LWZyZWUgZXhwZXJpZW5jZSBmb3IgZXZlcnlvbmUsCnJlZ2FyZGxlc3Mgb2YgYWdlLCBib2R5IHNpemUsIGRpc2FiaWxpdHksIGV0aG5pY2l0eSwgZ2VuZGVyIGlkZW50aXR5IGFuZApleHByZXNzaW9uLCBsZXZlbCBvZiBleHBlcmllbmNlLCBlZHVjYXRpb24sIHNvY2lvLWVjb25vbWljIHN0YXR1cywKbmF0aW9uYWxpdHksIHBlcnNvbmFsIGFwcGVhcmFuY2UsIHJhY2UsIHJlbGlnaW9uLCBvciBzZXh1YWwgaWRlbnRpdHkgYW5kCm9yaWVudGF0aW9uLgoKT3VyIFN0YW5kYXJkcwotLS0tLS0tLS0tLS0tCgpFeGFtcGxlcyBvZiBiZWhhdmlvciB0aGF0IGNvbnRyaWJ1dGVzIHRvIGNyZWF0aW5nIGEgcG9zaXRpdmUgZW52aXJvbm1lbnQKaW5jbHVkZToKCi0gIFVzaW5nIHdlbGNvbWluZyBhbmQgaW5jbHVzaXZlIGxhbmd1YWdlCi0gIEJlaW5nIHJlc3BlY3RmdWwgb2YgZGlmZmVyaW5nIHZpZXdwb2ludHMgYW5kIGV4cGVyaWVuY2VzCi0gIEdyYWNlZnVsbHkgYWNjZXB0aW5nIGNvbnN0cnVjdGl2ZSBjcml0aWNpc20KLSAgRm9jdXNpbmcgb24gd2hhdCBpcyBiZXN0IGZvciB0aGUgY29tbXVuaXR5Ci0gIFNob3dpbmcgZW1wYXRoeSB0b3dhcmRzIG90aGVyIGNvbW11bml0eSBtZW1iZXJzCgpFeGFtcGxlcyBvZiB1bmFjY2VwdGFibGUgYmVoYXZpb3IgYnkgcGFydGljaXBhbnRzIGluY2x1ZGU6CgotICBUaGUgdXNlIG9mIHNleHVhbGl6ZWQgbGFuZ3VhZ2Ugb3IgaW1hZ2VyeSBhbmQgdW53ZWxjb21lIHNleHVhbAogICBhdHRlbnRpb24gb3IgYWR2YW5jZXMKLSAgVHJvbGxpbmcsIGluc3VsdGluZy9kZXJvZ2F0b3J5IGNvbW1lbnRzLCBhbmQgcGVyc29uYWwgb3IgcG9saXRpY2FsCiAgIGF0dGFja3MKLSAgUHVibGljIG9yIHByaXZhdGUgaGFyYXNzbWVudAotICBQdWJsaXNoaW5nIG90aGVyc+KAmSBwcml2YXRlIGluZm9ybWF0aW9uLCBzdWNoIGFzIGEgcGh5c2ljYWwgb3IKICAgZWxlY3Ryb25pYyBhZGRyZXNzLCB3aXRob3V0IGV4cGxpY2l0IHBlcm1pc3Npb24KLSAgT3RoZXIgY29uZHVjdCB3aGljaCBjb3VsZCByZWFzb25hYmx5IGJlIGNvbnNpZGVyZWQgaW5hcHByb3ByaWF0ZSBpbiBhCiAgIHByb2Zlc3Npb25hbCBzZXR0aW5nCgpPdXIgUmVzcG9uc2liaWxpdGllcwotLS0tLS0tLS0tLS0tLS0tLS0tLQoKUHJvamVjdCBtYWludGFpbmVycyBhcmUgcmVzcG9uc2libGUgZm9yIGNsYXJpZnlpbmcgdGhlIHN0YW5kYXJkcyBvZgphY2NlcHRhYmxlIGJlaGF2aW9yIGFuZCBhcmUgZXhwZWN0ZWQgdG8gdGFrZSBhcHByb3ByaWF0ZSBhbmQgZmFpcgpjb3JyZWN0aXZlIGFjdGlvbiBpbiByZXNwb25zZSB0byBhbnkgaW5zdGFuY2VzIG9mIHVuYWNjZXB0YWJsZSBiZWhhdmlvci4KClByb2plY3QgbWFpbnRhaW5lcnMgaGF2ZSB0aGUgcmlnaHQgYW5kIHJlc3BvbnNpYmlsaXR5IHRvIHJlbW92ZSwgZWRpdCwKb3IgcmVqZWN0IGNvbW1lbnRzLCBjb21taXRzLCBjb2RlLCB3aWtpIGVkaXRzLCBpc3N1ZXMsIGFuZCBvdGhlcgpjb250cmlidXRpb25zIHRoYXQgYXJlIG5vdCBhbGlnbmVkIHRvIHRoaXMgQ29kZSBvZiBDb25kdWN0LCBvciB0byBiYW4KdGVtcG9yYXJpbHkgb3IgcGVybWFuZW50bHkgYW55IGNvbnRyaWJ1dG9yIGZvciBvdGhlciBiZWhhdmlvcnMgdGhhdCB0aGV5CmRlZW0gaW5hcHByb3ByaWF0ZSwgdGhyZWF0ZW5pbmcsIG9mZmVuc2l2ZSwgb3IgaGFybWZ1bC4KClNjb3BlCi0tLS0tCgpUaGlzIENvZGUgb2YgQ29uZHVjdCBhcHBsaWVzIGJvdGggd2l0aGluIHByb2plY3Qgc3BhY2VzIGFuZCBpbiBwdWJsaWMKc3BhY2VzIHdoZW4gYW4gaW5kaXZpZHVhbCBpcyByZXByZXNlbnRpbmcgdGhlIHByb2plY3Qgb3IgaXRzIGNvbW11bml0eS4KRXhhbXBsZXMgb2YgcmVwcmVzZW50aW5nIGEgcHJvamVjdCBvciBjb21tdW5pdHkgaW5jbHVkZSB1c2luZyBhbgpvZmZpY2lhbCBwcm9qZWN0IGUtbWFpbCBhZGRyZXNzLCBwb3N0aW5nIHZpYSBhbiBvZmZpY2lhbCBzb2NpYWwgbWVkaWEKYWNjb3VudCwgb3IgYWN0aW5nIGFzIGFuIGFwcG9pbnRlZCByZXByZXNlbnRhdGl2ZSBhdCBhbiBvbmxpbmUgb3IKb2ZmbGluZSBldmVudC4gUmVwcmVzZW50YXRpb24gb2YgYSBwcm9qZWN0IG1heSBiZSBmdXJ0aGVyIGRlZmluZWQgYW5kCmNsYXJpZmllZCBieSBwcm9qZWN0IG1haW50YWluZXJzLgoKRW5mb3JjZW1lbnQKLS0tLS0tLS0tLS0KCkluc3RhbmNlcyBvZiBhYnVzaXZlLCBoYXJhc3NpbmcsIG9yIG90aGVyd2lzZSB1bmFjY2VwdGFibGUgYmVoYXZpb3IgbWF5CmJlIHJlcG9ydGVkIGJ5IGNvbnRhY3RpbmcgdGhlIHByb2plY3QgdGVhbSBhdCBwb21icmVkYW5uZUBnbWFpbC5jb20Kb3Igb24gdGhlIEdpdHRlciBjaGF0IGNoYW5uZWwgYXQgaHR0cHM6Ly9naXR0ZXIuaW0vYWJvdXRjb2RlLW9yZy9kaXNjdXNzIC4KQWxsIGNvbXBsYWludHMgd2lsbCBiZSByZXZpZXdlZCBhbmQgaW52ZXN0aWdhdGVkIGFuZCB3aWxsIHJlc3VsdCBpbiBhCnJlc3BvbnNlIHRoYXQgaXMgZGVlbWVkIG5lY2Vzc2FyeSBhbmQgYXBwcm9wcmlhdGUgdG8gdGhlIGNpcmN1bXN0YW5jZXMuClRoZSBwcm9qZWN0IHRlYW0gaXMgb2JsaWdhdGVkIHRvIG1haW50YWluIGNvbmZpZGVudGlhbGl0eSB3aXRoIHJlZ2FyZCB0bwp0aGUgcmVwb3J0ZXIgb2YgYW4gaW5jaWRlbnQuIEZ1cnRoZXIgZGV0YWlscyBvZiBzcGVjaWZpYyBlbmZvcmNlbWVudApwb2xpY2llcyBtYXkgYmUgcG9zdGVkIHNlcGFyYXRlbHkuCgpQcm9qZWN0IG1haW50YWluZXJzIHdobyBkbyBub3QgZm9sbG93IG9yIGVuZm9yY2UgdGhlIENvZGUgb2YgQ29uZHVjdCBpbgpnb29kIGZhaXRoIG1heSBmYWNlIHRlbXBvcmFyeSBvciBwZXJtYW5lbnQgcmVwZXJjdXNzaW9ucyBhcyBkZXRlcm1pbmVkCmJ5IG90aGVyIG1lbWJlcnMgb2YgdGhlIHByb2plY3TigJlzIGxlYWRlcnNoaXAuCgpBdHRyaWJ1dGlvbgotLS0tLS0tLS0tLQoKVGhpcyBDb2RlIG9mIENvbmR1Y3QgaXMgYWRhcHRlZCBmcm9tIHRoZSBgQ29udHJpYnV0b3IgQ292ZW5hbnRgXyAsCnZlcnNpb24gMS40LCBhdmFpbGFibGUgYXQKaHR0cHM6Ly93d3cuY29udHJpYnV0b3ItY292ZW5hbnQub3JnL3ZlcnNpb24vMS80L2NvZGUtb2YtY29uZHVjdC5odG1sCgouLiBfQ29udHJpYnV0b3IgQ292ZW5hbnQ6IGh0dHBzOi8vd3d3LmNvbnRyaWJ1dG9yLWNvdmVuYW50Lm9yZwo=", + "contentType": "text/prs.fallenstein.rst", + "encoding": "base64" } } }, @@ -291,8 +291,9 @@ "license": { "name": "declared license file: NOTICE", "text": { - "content": "#\n# Copyright (c) nexB Inc. and others.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Visit https://aboutcode.org and https://github.com/nexB/license-expression\n# for support and download.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\n", - "contentType": "text/plain" + "content": "IwojIENvcHlyaWdodCAoYykgbmV4QiBJbmMuIGFuZCBvdGhlcnMuCiMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKIwojIFZpc2l0IGh0dHBzOi8vYWJvdXRjb2RlLm9yZyBhbmQgaHR0cHM6Ly9naXRodWIuY29tL25leEIvbGljZW5zZS1leHByZXNzaW9uCiMgZm9yIHN1cHBvcnQgYW5kIGRvd25sb2FkLgojCiMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgojIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAojCiMgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgojCg==", + "contentType": "text/plain", + "encoding": "base64" } } }, @@ -300,8 +301,9 @@ "license": { "name": "declared license file: apache-2.0.LICENSE", "text": { - "content": " Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", - "contentType": "text/plain" + "content": "ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBhY2hlIExpY2Vuc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAyLjAsIEphbnVhcnkgMjAwNAogICAgICAgICAgICAgICAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvCgogICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgVVNFLCBSRVBST0RVQ1RJT04sIEFORCBESVNUUklCVVRJT04KCiAgIDEuIERlZmluaXRpb25zLgoKICAgICAgIkxpY2Vuc2UiIHNoYWxsIG1lYW4gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciB1c2UsIHJlcHJvZHVjdGlvbiwKICAgICAgYW5kIGRpc3RyaWJ1dGlvbiBhcyBkZWZpbmVkIGJ5IFNlY3Rpb25zIDEgdGhyb3VnaCA5IG9mIHRoaXMgZG9jdW1lbnQuCgogICAgICAiTGljZW5zb3IiIHNoYWxsIG1lYW4gdGhlIGNvcHlyaWdodCBvd25lciBvciBlbnRpdHkgYXV0aG9yaXplZCBieQogICAgICB0aGUgY29weXJpZ2h0IG93bmVyIHRoYXQgaXMgZ3JhbnRpbmcgdGhlIExpY2Vuc2UuCgogICAgICAiTGVnYWwgRW50aXR5IiBzaGFsbCBtZWFuIHRoZSB1bmlvbiBvZiB0aGUgYWN0aW5nIGVudGl0eSBhbmQgYWxsCiAgICAgIG90aGVyIGVudGl0aWVzIHRoYXQgY29udHJvbCwgYXJlIGNvbnRyb2xsZWQgYnksIG9yIGFyZSB1bmRlciBjb21tb24KICAgICAgY29udHJvbCB3aXRoIHRoYXQgZW50aXR5LiBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwKICAgICAgImNvbnRyb2wiIG1lYW5zIChpKSB0aGUgcG93ZXIsIGRpcmVjdCBvciBpbmRpcmVjdCwgdG8gY2F1c2UgdGhlCiAgICAgIGRpcmVjdGlvbiBvciBtYW5hZ2VtZW50IG9mIHN1Y2ggZW50aXR5LCB3aGV0aGVyIGJ5IGNvbnRyYWN0IG9yCiAgICAgIG90aGVyd2lzZSwgb3IgKGlpKSBvd25lcnNoaXAgb2YgZmlmdHkgcGVyY2VudCAoNTAlKSBvciBtb3JlIG9mIHRoZQogICAgICBvdXRzdGFuZGluZyBzaGFyZXMsIG9yIChpaWkpIGJlbmVmaWNpYWwgb3duZXJzaGlwIG9mIHN1Y2ggZW50aXR5LgoKICAgICAgIllvdSIgKG9yICJZb3VyIikgc2hhbGwgbWVhbiBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eQogICAgICBleGVyY2lzaW5nIHBlcm1pc3Npb25zIGdyYW50ZWQgYnkgdGhpcyBMaWNlbnNlLgoKICAgICAgIlNvdXJjZSIgZm9ybSBzaGFsbCBtZWFuIHRoZSBwcmVmZXJyZWQgZm9ybSBmb3IgbWFraW5nIG1vZGlmaWNhdGlvbnMsCiAgICAgIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gc29mdHdhcmUgc291cmNlIGNvZGUsIGRvY3VtZW50YXRpb24KICAgICAgc291cmNlLCBhbmQgY29uZmlndXJhdGlvbiBmaWxlcy4KCiAgICAgICJPYmplY3QiIGZvcm0gc2hhbGwgbWVhbiBhbnkgZm9ybSByZXN1bHRpbmcgZnJvbSBtZWNoYW5pY2FsCiAgICAgIHRyYW5zZm9ybWF0aW9uIG9yIHRyYW5zbGF0aW9uIG9mIGEgU291cmNlIGZvcm0sIGluY2x1ZGluZyBidXQKICAgICAgbm90IGxpbWl0ZWQgdG8gY29tcGlsZWQgb2JqZWN0IGNvZGUsIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uLAogICAgICBhbmQgY29udmVyc2lvbnMgdG8gb3RoZXIgbWVkaWEgdHlwZXMuCgogICAgICAiV29yayIgc2hhbGwgbWVhbiB0aGUgd29yayBvZiBhdXRob3JzaGlwLCB3aGV0aGVyIGluIFNvdXJjZSBvcgogICAgICBPYmplY3QgZm9ybSwgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIExpY2Vuc2UsIGFzIGluZGljYXRlZCBieSBhCiAgICAgIGNvcHlyaWdodCBub3RpY2UgdGhhdCBpcyBpbmNsdWRlZCBpbiBvciBhdHRhY2hlZCB0byB0aGUgd29yawogICAgICAoYW4gZXhhbXBsZSBpcyBwcm92aWRlZCBpbiB0aGUgQXBwZW5kaXggYmVsb3cpLgoKICAgICAgIkRlcml2YXRpdmUgV29ya3MiIHNoYWxsIG1lYW4gYW55IHdvcmssIHdoZXRoZXIgaW4gU291cmNlIG9yIE9iamVjdAogICAgICBmb3JtLCB0aGF0IGlzIGJhc2VkIG9uIChvciBkZXJpdmVkIGZyb20pIHRoZSBXb3JrIGFuZCBmb3Igd2hpY2ggdGhlCiAgICAgIGVkaXRvcmlhbCByZXZpc2lvbnMsIGFubm90YXRpb25zLCBlbGFib3JhdGlvbnMsIG9yIG90aGVyIG1vZGlmaWNhdGlvbnMKICAgICAgcmVwcmVzZW50LCBhcyBhIHdob2xlLCBhbiBvcmlnaW5hbCB3b3JrIG9mIGF1dGhvcnNoaXAuIEZvciB0aGUgcHVycG9zZXMKICAgICAgb2YgdGhpcyBMaWNlbnNlLCBEZXJpdmF0aXZlIFdvcmtzIHNoYWxsIG5vdCBpbmNsdWRlIHdvcmtzIHRoYXQgcmVtYWluCiAgICAgIHNlcGFyYWJsZSBmcm9tLCBvciBtZXJlbHkgbGluayAob3IgYmluZCBieSBuYW1lKSB0byB0aGUgaW50ZXJmYWNlcyBvZiwKICAgICAgdGhlIFdvcmsgYW5kIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZi4KCiAgICAgICJDb250cmlidXRpb24iIHNoYWxsIG1lYW4gYW55IHdvcmsgb2YgYXV0aG9yc2hpcCwgaW5jbHVkaW5nCiAgICAgIHRoZSBvcmlnaW5hbCB2ZXJzaW9uIG9mIHRoZSBXb3JrIGFuZCBhbnkgbW9kaWZpY2F0aW9ucyBvciBhZGRpdGlvbnMKICAgICAgdG8gdGhhdCBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgdGhhdCBpcyBpbnRlbnRpb25hbGx5CiAgICAgIHN1Ym1pdHRlZCB0byBMaWNlbnNvciBmb3IgaW5jbHVzaW9uIGluIHRoZSBXb3JrIGJ5IHRoZSBjb3B5cmlnaHQgb3duZXIKICAgICAgb3IgYnkgYW4gaW5kaXZpZHVhbCBvciBMZWdhbCBFbnRpdHkgYXV0aG9yaXplZCB0byBzdWJtaXQgb24gYmVoYWxmIG9mCiAgICAgIHRoZSBjb3B5cmlnaHQgb3duZXIuIEZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAic3VibWl0dGVkIgogICAgICBtZWFucyBhbnkgZm9ybSBvZiBlbGVjdHJvbmljLCB2ZXJiYWwsIG9yIHdyaXR0ZW4gY29tbXVuaWNhdGlvbiBzZW50CiAgICAgIHRvIHRoZSBMaWNlbnNvciBvciBpdHMgcmVwcmVzZW50YXRpdmVzLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvCiAgICAgIGNvbW11bmljYXRpb24gb24gZWxlY3Ryb25pYyBtYWlsaW5nIGxpc3RzLCBzb3VyY2UgY29kZSBjb250cm9sIHN5c3RlbXMsCiAgICAgIGFuZCBpc3N1ZSB0cmFja2luZyBzeXN0ZW1zIHRoYXQgYXJlIG1hbmFnZWQgYnksIG9yIG9uIGJlaGFsZiBvZiwgdGhlCiAgICAgIExpY2Vuc29yIGZvciB0aGUgcHVycG9zZSBvZiBkaXNjdXNzaW5nIGFuZCBpbXByb3ZpbmcgdGhlIFdvcmssIGJ1dAogICAgICBleGNsdWRpbmcgY29tbXVuaWNhdGlvbiB0aGF0IGlzIGNvbnNwaWN1b3VzbHkgbWFya2VkIG9yIG90aGVyd2lzZQogICAgICBkZXNpZ25hdGVkIGluIHdyaXRpbmcgYnkgdGhlIGNvcHlyaWdodCBvd25lciBhcyAiTm90IGEgQ29udHJpYnV0aW9uLiIKCiAgICAgICJDb250cmlidXRvciIgc2hhbGwgbWVhbiBMaWNlbnNvciBhbmQgYW55IGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5CiAgICAgIG9uIGJlaGFsZiBvZiB3aG9tIGEgQ29udHJpYnV0aW9uIGhhcyBiZWVuIHJlY2VpdmVkIGJ5IExpY2Vuc29yIGFuZAogICAgICBzdWJzZXF1ZW50bHkgaW5jb3Jwb3JhdGVkIHdpdGhpbiB0aGUgV29yay4KCiAgIDIuIEdyYW50IG9mIENvcHlyaWdodCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCiAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCiAgICAgIGNvcHlyaWdodCBsaWNlbnNlIHRvIHJlcHJvZHVjZSwgcHJlcGFyZSBEZXJpdmF0aXZlIFdvcmtzIG9mLAogICAgICBwdWJsaWNseSBkaXNwbGF5LCBwdWJsaWNseSBwZXJmb3JtLCBzdWJsaWNlbnNlLCBhbmQgZGlzdHJpYnV0ZSB0aGUKICAgICAgV29yayBhbmQgc3VjaCBEZXJpdmF0aXZlIFdvcmtzIGluIFNvdXJjZSBvciBPYmplY3QgZm9ybS4KCiAgIDMuIEdyYW50IG9mIFBhdGVudCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCiAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCiAgICAgIChleGNlcHQgYXMgc3RhdGVkIGluIHRoaXMgc2VjdGlvbikgcGF0ZW50IGxpY2Vuc2UgdG8gbWFrZSwgaGF2ZSBtYWRlLAogICAgICB1c2UsIG9mZmVyIHRvIHNlbGwsIHNlbGwsIGltcG9ydCwgYW5kIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgV29yaywKICAgICAgd2hlcmUgc3VjaCBsaWNlbnNlIGFwcGxpZXMgb25seSB0byB0aG9zZSBwYXRlbnQgY2xhaW1zIGxpY2Vuc2FibGUKICAgICAgYnkgc3VjaCBDb250cmlidXRvciB0aGF0IGFyZSBuZWNlc3NhcmlseSBpbmZyaW5nZWQgYnkgdGhlaXIKICAgICAgQ29udHJpYnV0aW9uKHMpIGFsb25lIG9yIGJ5IGNvbWJpbmF0aW9uIG9mIHRoZWlyIENvbnRyaWJ1dGlvbihzKQogICAgICB3aXRoIHRoZSBXb3JrIHRvIHdoaWNoIHN1Y2ggQ29udHJpYnV0aW9uKHMpIHdhcyBzdWJtaXR0ZWQuIElmIFlvdQogICAgICBpbnN0aXR1dGUgcGF0ZW50IGxpdGlnYXRpb24gYWdhaW5zdCBhbnkgZW50aXR5IChpbmNsdWRpbmcgYQogICAgICBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0IHRoZSBXb3JrCiAgICAgIG9yIGEgQ29udHJpYnV0aW9uIGluY29ycG9yYXRlZCB3aXRoaW4gdGhlIFdvcmsgY29uc3RpdHV0ZXMgZGlyZWN0CiAgICAgIG9yIGNvbnRyaWJ1dG9yeSBwYXRlbnQgaW5mcmluZ2VtZW50LCB0aGVuIGFueSBwYXRlbnQgbGljZW5zZXMKICAgICAgZ3JhbnRlZCB0byBZb3UgdW5kZXIgdGhpcyBMaWNlbnNlIGZvciB0aGF0IFdvcmsgc2hhbGwgdGVybWluYXRlCiAgICAgIGFzIG9mIHRoZSBkYXRlIHN1Y2ggbGl0aWdhdGlvbiBpcyBmaWxlZC4KCiAgIDQuIFJlZGlzdHJpYnV0aW9uLiBZb3UgbWF5IHJlcHJvZHVjZSBhbmQgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlCiAgICAgIFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mIGluIGFueSBtZWRpdW0sIHdpdGggb3Igd2l0aG91dAogICAgICBtb2RpZmljYXRpb25zLCBhbmQgaW4gU291cmNlIG9yIE9iamVjdCBmb3JtLCBwcm92aWRlZCB0aGF0IFlvdQogICAgICBtZWV0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKCiAgICAgIChhKSBZb3UgbXVzdCBnaXZlIGFueSBvdGhlciByZWNpcGllbnRzIG9mIHRoZSBXb3JrIG9yCiAgICAgICAgICBEZXJpdmF0aXZlIFdvcmtzIGEgY29weSBvZiB0aGlzIExpY2Vuc2U7IGFuZAoKICAgICAgKGIpIFlvdSBtdXN0IGNhdXNlIGFueSBtb2RpZmllZCBmaWxlcyB0byBjYXJyeSBwcm9taW5lbnQgbm90aWNlcwogICAgICAgICAgc3RhdGluZyB0aGF0IFlvdSBjaGFuZ2VkIHRoZSBmaWxlczsgYW5kCgogICAgICAoYykgWW91IG11c3QgcmV0YWluLCBpbiB0aGUgU291cmNlIGZvcm0gb2YgYW55IERlcml2YXRpdmUgV29ya3MKICAgICAgICAgIHRoYXQgWW91IGRpc3RyaWJ1dGUsIGFsbCBjb3B5cmlnaHQsIHBhdGVudCwgdHJhZGVtYXJrLCBhbmQKICAgICAgICAgIGF0dHJpYnV0aW9uIG5vdGljZXMgZnJvbSB0aGUgU291cmNlIGZvcm0gb2YgdGhlIFdvcmssCiAgICAgICAgICBleGNsdWRpbmcgdGhvc2Ugbm90aWNlcyB0aGF0IGRvIG5vdCBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mCiAgICAgICAgICB0aGUgRGVyaXZhdGl2ZSBXb3JrczsgYW5kCgogICAgICAoZCkgSWYgdGhlIFdvcmsgaW5jbHVkZXMgYSAiTk9USUNFIiB0ZXh0IGZpbGUgYXMgcGFydCBvZiBpdHMKICAgICAgICAgIGRpc3RyaWJ1dGlvbiwgdGhlbiBhbnkgRGVyaXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlIG11c3QKICAgICAgICAgIGluY2x1ZGUgYSByZWFkYWJsZSBjb3B5IG9mIHRoZSBhdHRyaWJ1dGlvbiBub3RpY2VzIGNvbnRhaW5lZAogICAgICAgICAgd2l0aGluIHN1Y2ggTk9USUNFIGZpbGUsIGV4Y2x1ZGluZyB0aG9zZSBub3RpY2VzIHRoYXQgZG8gbm90CiAgICAgICAgICBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpbiBhdCBsZWFzdCBvbmUKICAgICAgICAgIG9mIHRoZSBmb2xsb3dpbmcgcGxhY2VzOiB3aXRoaW4gYSBOT1RJQ0UgdGV4dCBmaWxlIGRpc3RyaWJ1dGVkCiAgICAgICAgICBhcyBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyB3aXRoaW4gdGhlIFNvdXJjZSBmb3JtIG9yCiAgICAgICAgICBkb2N1bWVudGF0aW9uLCBpZiBwcm92aWRlZCBhbG9uZyB3aXRoIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyBvciwKICAgICAgICAgIHdpdGhpbiBhIGRpc3BsYXkgZ2VuZXJhdGVkIGJ5IHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpZiBhbmQKICAgICAgICAgIHdoZXJldmVyIHN1Y2ggdGhpcmQtcGFydHkgbm90aWNlcyBub3JtYWxseSBhcHBlYXIuIFRoZSBjb250ZW50cwogICAgICAgICAgb2YgdGhlIE5PVElDRSBmaWxlIGFyZSBmb3IgaW5mb3JtYXRpb25hbCBwdXJwb3NlcyBvbmx5IGFuZAogICAgICAgICAgZG8gbm90IG1vZGlmeSB0aGUgTGljZW5zZS4gWW91IG1heSBhZGQgWW91ciBvd24gYXR0cmlidXRpb24KICAgICAgICAgIG5vdGljZXMgd2l0aGluIERlcml2YXRpdmUgV29ya3MgdGhhdCBZb3UgZGlzdHJpYnV0ZSwgYWxvbmdzaWRlCiAgICAgICAgICBvciBhcyBhbiBhZGRlbmR1bSB0byB0aGUgTk9USUNFIHRleHQgZnJvbSB0aGUgV29yaywgcHJvdmlkZWQKICAgICAgICAgIHRoYXQgc3VjaCBhZGRpdGlvbmFsIGF0dHJpYnV0aW9uIG5vdGljZXMgY2Fubm90IGJlIGNvbnN0cnVlZAogICAgICAgICAgYXMgbW9kaWZ5aW5nIHRoZSBMaWNlbnNlLgoKICAgICAgWW91IG1heSBhZGQgWW91ciBvd24gY29weXJpZ2h0IHN0YXRlbWVudCB0byBZb3VyIG1vZGlmaWNhdGlvbnMgYW5kCiAgICAgIG1heSBwcm92aWRlIGFkZGl0aW9uYWwgb3IgZGlmZmVyZW50IGxpY2Vuc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMKICAgICAgZm9yIHVzZSwgcmVwcm9kdWN0aW9uLCBvciBkaXN0cmlidXRpb24gb2YgWW91ciBtb2RpZmljYXRpb25zLCBvcgogICAgICBmb3IgYW55IHN1Y2ggRGVyaXZhdGl2ZSBXb3JrcyBhcyBhIHdob2xlLCBwcm92aWRlZCBZb3VyIHVzZSwKICAgICAgcmVwcm9kdWN0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoZSBXb3JrIG90aGVyd2lzZSBjb21wbGllcyB3aXRoCiAgICAgIHRoZSBjb25kaXRpb25zIHN0YXRlZCBpbiB0aGlzIExpY2Vuc2UuCgogICA1LiBTdWJtaXNzaW9uIG9mIENvbnRyaWJ1dGlvbnMuIFVubGVzcyBZb3UgZXhwbGljaXRseSBzdGF0ZSBvdGhlcndpc2UsCiAgICAgIGFueSBDb250cmlidXRpb24gaW50ZW50aW9uYWxseSBzdWJtaXR0ZWQgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yawogICAgICBieSBZb3UgdG8gdGhlIExpY2Vuc29yIHNoYWxsIGJlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICB0aGlzIExpY2Vuc2UsIHdpdGhvdXQgYW55IGFkZGl0aW9uYWwgdGVybXMgb3IgY29uZGl0aW9ucy4KICAgICAgTm90d2l0aHN0YW5kaW5nIHRoZSBhYm92ZSwgbm90aGluZyBoZXJlaW4gc2hhbGwgc3VwZXJzZWRlIG9yIG1vZGlmeQogICAgICB0aGUgdGVybXMgb2YgYW55IHNlcGFyYXRlIGxpY2Vuc2UgYWdyZWVtZW50IHlvdSBtYXkgaGF2ZSBleGVjdXRlZAogICAgICB3aXRoIExpY2Vuc29yIHJlZ2FyZGluZyBzdWNoIENvbnRyaWJ1dGlvbnMuCgogICA2LiBUcmFkZW1hcmtzLiBUaGlzIExpY2Vuc2UgZG9lcyBub3QgZ3JhbnQgcGVybWlzc2lvbiB0byB1c2UgdGhlIHRyYWRlCiAgICAgIG5hbWVzLCB0cmFkZW1hcmtzLCBzZXJ2aWNlIG1hcmtzLCBvciBwcm9kdWN0IG5hbWVzIG9mIHRoZSBMaWNlbnNvciwKICAgICAgZXhjZXB0IGFzIHJlcXVpcmVkIGZvciByZWFzb25hYmxlIGFuZCBjdXN0b21hcnkgdXNlIGluIGRlc2NyaWJpbmcgdGhlCiAgICAgIG9yaWdpbiBvZiB0aGUgV29yayBhbmQgcmVwcm9kdWNpbmcgdGhlIGNvbnRlbnQgb2YgdGhlIE5PVElDRSBmaWxlLgoKICAgNy4gRGlzY2xhaW1lciBvZiBXYXJyYW50eS4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yCiAgICAgIGFncmVlZCB0byBpbiB3cml0aW5nLCBMaWNlbnNvciBwcm92aWRlcyB0aGUgV29yayAoYW5kIGVhY2gKICAgICAgQ29udHJpYnV0b3IgcHJvdmlkZXMgaXRzIENvbnRyaWJ1dGlvbnMpIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgogICAgICBpbXBsaWVkLCBpbmNsdWRpbmcsIHdpdGhvdXQgbGltaXRhdGlvbiwgYW55IHdhcnJhbnRpZXMgb3IgY29uZGl0aW9ucwogICAgICBvZiBUSVRMRSwgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZLCBvciBGSVRORVNTIEZPUiBBCiAgICAgIFBBUlRJQ1VMQVIgUFVSUE9TRS4gWW91IGFyZSBzb2xlbHkgcmVzcG9uc2libGUgZm9yIGRldGVybWluaW5nIHRoZQogICAgICBhcHByb3ByaWF0ZW5lc3Mgb2YgdXNpbmcgb3IgcmVkaXN0cmlidXRpbmcgdGhlIFdvcmsgYW5kIGFzc3VtZSBhbnkKICAgICAgcmlza3MgYXNzb2NpYXRlZCB3aXRoIFlvdXIgZXhlcmNpc2Ugb2YgcGVybWlzc2lvbnMgdW5kZXIgdGhpcyBMaWNlbnNlLgoKICAgOC4gTGltaXRhdGlvbiBvZiBMaWFiaWxpdHkuIEluIG5vIGV2ZW50IGFuZCB1bmRlciBubyBsZWdhbCB0aGVvcnksCiAgICAgIHdoZXRoZXIgaW4gdG9ydCAoaW5jbHVkaW5nIG5lZ2xpZ2VuY2UpLCBjb250cmFjdCwgb3Igb3RoZXJ3aXNlLAogICAgICB1bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgKHN1Y2ggYXMgZGVsaWJlcmF0ZSBhbmQgZ3Jvc3NseQogICAgICBuZWdsaWdlbnQgYWN0cykgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNoYWxsIGFueSBDb250cmlidXRvciBiZQogICAgICBsaWFibGUgdG8gWW91IGZvciBkYW1hZ2VzLCBpbmNsdWRpbmcgYW55IGRpcmVjdCwgaW5kaXJlY3QsIHNwZWNpYWwsCiAgICAgIGluY2lkZW50YWwsIG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvZiBhbnkgY2hhcmFjdGVyIGFyaXNpbmcgYXMgYQogICAgICByZXN1bHQgb2YgdGhpcyBMaWNlbnNlIG9yIG91dCBvZiB0aGUgdXNlIG9yIGluYWJpbGl0eSB0byB1c2UgdGhlCiAgICAgIFdvcmsgKGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gZGFtYWdlcyBmb3IgbG9zcyBvZiBnb29kd2lsbCwKICAgICAgd29yayBzdG9wcGFnZSwgY29tcHV0ZXIgZmFpbHVyZSBvciBtYWxmdW5jdGlvbiwgb3IgYW55IGFuZCBhbGwKICAgICAgb3RoZXIgY29tbWVyY2lhbCBkYW1hZ2VzIG9yIGxvc3NlcyksIGV2ZW4gaWYgc3VjaCBDb250cmlidXRvcgogICAgICBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiBzdWNoIGRhbWFnZXMuCgogICA5LiBBY2NlcHRpbmcgV2FycmFudHkgb3IgQWRkaXRpb25hbCBMaWFiaWxpdHkuIFdoaWxlIHJlZGlzdHJpYnV0aW5nCiAgICAgIHRoZSBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgWW91IG1heSBjaG9vc2UgdG8gb2ZmZXIsCiAgICAgIGFuZCBjaGFyZ2UgYSBmZWUgZm9yLCBhY2NlcHRhbmNlIG9mIHN1cHBvcnQsIHdhcnJhbnR5LCBpbmRlbW5pdHksCiAgICAgIG9yIG90aGVyIGxpYWJpbGl0eSBvYmxpZ2F0aW9ucyBhbmQvb3IgcmlnaHRzIGNvbnNpc3RlbnQgd2l0aCB0aGlzCiAgICAgIExpY2Vuc2UuIEhvd2V2ZXIsIGluIGFjY2VwdGluZyBzdWNoIG9ibGlnYXRpb25zLCBZb3UgbWF5IGFjdCBvbmx5CiAgICAgIG9uIFlvdXIgb3duIGJlaGFsZiBhbmQgb24gWW91ciBzb2xlIHJlc3BvbnNpYmlsaXR5LCBub3Qgb24gYmVoYWxmCiAgICAgIG9mIGFueSBvdGhlciBDb250cmlidXRvciwgYW5kIG9ubHkgaWYgWW91IGFncmVlIHRvIGluZGVtbmlmeSwKICAgICAgZGVmZW5kLCBhbmQgaG9sZCBlYWNoIENvbnRyaWJ1dG9yIGhhcm1sZXNzIGZvciBhbnkgbGlhYmlsaXR5CiAgICAgIGluY3VycmVkIGJ5LCBvciBjbGFpbXMgYXNzZXJ0ZWQgYWdhaW5zdCwgc3VjaCBDb250cmlidXRvciBieSByZWFzb24KICAgICAgb2YgeW91ciBhY2NlcHRpbmcgYW55IHN1Y2ggd2FycmFudHkgb3IgYWRkaXRpb25hbCBsaWFiaWxpdHkuCgogICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKCiAgIEFQUEVORElYOiBIb3cgdG8gYXBwbHkgdGhlIEFwYWNoZSBMaWNlbnNlIHRvIHlvdXIgd29yay4KCiAgICAgIFRvIGFwcGx5IHRoZSBBcGFjaGUgTGljZW5zZSB0byB5b3VyIHdvcmssIGF0dGFjaCB0aGUgZm9sbG93aW5nCiAgICAgIGJvaWxlcnBsYXRlIG5vdGljZSwgd2l0aCB0aGUgZmllbGRzIGVuY2xvc2VkIGJ5IGJyYWNrZXRzICJbXSIKICAgICAgcmVwbGFjZWQgd2l0aCB5b3VyIG93biBpZGVudGlmeWluZyBpbmZvcm1hdGlvbi4gKERvbid0IGluY2x1ZGUKICAgICAgdGhlIGJyYWNrZXRzISkgIFRoZSB0ZXh0IHNob3VsZCBiZSBlbmNsb3NlZCBpbiB0aGUgYXBwcm9wcmlhdGUKICAgICAgY29tbWVudCBzeW50YXggZm9yIHRoZSBmaWxlIGZvcm1hdC4gV2UgYWxzbyByZWNvbW1lbmQgdGhhdCBhCiAgICAgIGZpbGUgb3IgY2xhc3MgbmFtZSBhbmQgZGVzY3JpcHRpb24gb2YgcHVycG9zZSBiZSBpbmNsdWRlZCBvbiB0aGUKICAgICAgc2FtZSAicHJpbnRlZCBwYWdlIiBhcyB0aGUgY29weXJpZ2h0IG5vdGljZSBmb3IgZWFzaWVyCiAgICAgIGlkZW50aWZpY2F0aW9uIHdpdGhpbiB0aGlyZC1wYXJ0eSBhcmNoaXZlcy4KCiAgIENvcHlyaWdodCBbeXl5eV0gW25hbWUgb2YgY29weXJpZ2h0IG93bmVyXQoKICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgo=", + "contentType": "text/plain", + "encoding": "base64" } } } @@ -341,8 +343,9 @@ "license": { "name": "declared license file: LICENSE.txt", "text": { - "content": "Copyright (c) 2004 Infrae. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n 1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n \n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in\n the documentation and/or other materials provided with the\n distribution.\n\n 3. Neither the name of Infrae nor the names of its contributors may\n be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INFRAE OR\nCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\nEXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\nPROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" + "content": "Q29weXJpZ2h0IChjKSAyMDA0IEluZnJhZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAgIAogIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCiAgICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQogICAgIGRpc3RyaWJ1dGlvbi4KCiAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBJbmZyYWUgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heQogICAgIGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCiAgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCgpUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCiJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgpBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgSU5GUkFFIE9SCkNPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLApFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sClBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgpQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GCkxJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCk5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwpTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K", + "contentType": "text/plain", + "encoding": "base64" } } }, @@ -350,8 +353,9 @@ "license": { "name": "declared license file: LICENSES.txt", "text": { - "content": "lxml is copyright Infrae and distributed under the BSD license (see\ndoc/licenses/BSD.txt), with the following exceptions:\n\nSome code, such a selftest.py, selftest2.py and\nsrc/lxml/_elementpath.py are derived from ElementTree and\ncElementTree. See doc/licenses/elementtree.txt for the license text.\n\nlxml.cssselect and lxml.html are copyright Ian Bicking and distributed\nunder the BSD license (see doc/licenses/BSD.txt).\n\ntest.py, the test-runner script, is GPL and copyright Shuttleworth\nFoundation. See doc/licenses/GPL.txt. It is believed the unchanged\ninclusion of test.py to run the unit test suite falls under the\n\"aggregation\" clause of the GPL and thus does not affect the license\nof the rest of the package.\n\nThe isoschematron implementation uses several XSL and RelaxNG resources:\n * The (XML syntax) RelaxNG schema for schematron, copyright International\n Organization for Standardization (see \n src/lxml/isoschematron/resources/rng/iso-schematron.rng for the license\n text)\n * The skeleton iso-schematron-xlt1 pure-xslt schematron implementation\n xsl stylesheets, copyright Rick Jelliffe and Academia Sinica Computing\n Center, Taiwan (see the xsl files here for the license text: \n src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/)\n * The xsd/rng schema schematron extraction xsl transformations are unlicensed\n and copyright the respective authors as noted (see \n src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl and\n src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl)\n", - "contentType": "text/plain" + "content": "bHhtbCBpcyBjb3B5cmlnaHQgSW5mcmFlIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgQlNEIGxpY2Vuc2UgKHNlZQpkb2MvbGljZW5zZXMvQlNELnR4dCksIHdpdGggdGhlIGZvbGxvd2luZyBleGNlcHRpb25zOgoKU29tZSBjb2RlLCBzdWNoIGEgc2VsZnRlc3QucHksIHNlbGZ0ZXN0Mi5weSBhbmQKc3JjL2x4bWwvX2VsZW1lbnRwYXRoLnB5IGFyZSBkZXJpdmVkIGZyb20gRWxlbWVudFRyZWUgYW5kCmNFbGVtZW50VHJlZS4gU2VlIGRvYy9saWNlbnNlcy9lbGVtZW50dHJlZS50eHQgZm9yIHRoZSBsaWNlbnNlIHRleHQuCgpseG1sLmNzc3NlbGVjdCBhbmQgbHhtbC5odG1sIGFyZSBjb3B5cmlnaHQgSWFuIEJpY2tpbmcgYW5kIGRpc3RyaWJ1dGVkCnVuZGVyIHRoZSBCU0QgbGljZW5zZSAoc2VlIGRvYy9saWNlbnNlcy9CU0QudHh0KS4KCnRlc3QucHksIHRoZSB0ZXN0LXJ1bm5lciBzY3JpcHQsIGlzIEdQTCBhbmQgY29weXJpZ2h0IFNodXR0bGV3b3J0aApGb3VuZGF0aW9uLiBTZWUgZG9jL2xpY2Vuc2VzL0dQTC50eHQuIEl0IGlzIGJlbGlldmVkIHRoZSB1bmNoYW5nZWQKaW5jbHVzaW9uIG9mIHRlc3QucHkgdG8gcnVuIHRoZSB1bml0IHRlc3Qgc3VpdGUgZmFsbHMgdW5kZXIgdGhlCiJhZ2dyZWdhdGlvbiIgY2xhdXNlIG9mIHRoZSBHUEwgYW5kIHRodXMgZG9lcyBub3QgYWZmZWN0IHRoZSBsaWNlbnNlCm9mIHRoZSByZXN0IG9mIHRoZSBwYWNrYWdlLgoKVGhlIGlzb3NjaGVtYXRyb24gaW1wbGVtZW50YXRpb24gdXNlcyBzZXZlcmFsIFhTTCBhbmQgUmVsYXhORyByZXNvdXJjZXM6CiAqIFRoZSAoWE1MIHN5bnRheCkgUmVsYXhORyBzY2hlbWEgZm9yIHNjaGVtYXRyb24sIGNvcHlyaWdodCBJbnRlcm5hdGlvbmFsCiAgIE9yZ2FuaXphdGlvbiBmb3IgU3RhbmRhcmRpemF0aW9uIChzZWUgCiAgIHNyYy9seG1sL2lzb3NjaGVtYXRyb24vcmVzb3VyY2VzL3JuZy9pc28tc2NoZW1hdHJvbi5ybmcgZm9yIHRoZSBsaWNlbnNlCiAgIHRleHQpCiAqIFRoZSBza2VsZXRvbiBpc28tc2NoZW1hdHJvbi14bHQxIHB1cmUteHNsdCBzY2hlbWF0cm9uIGltcGxlbWVudGF0aW9uCiAgIHhzbCBzdHlsZXNoZWV0cywgY29weXJpZ2h0IFJpY2sgSmVsbGlmZmUgYW5kIEFjYWRlbWlhIFNpbmljYSBDb21wdXRpbmcKICAgQ2VudGVyLCBUYWl3YW4gKHNlZSB0aGUgeHNsIGZpbGVzIGhlcmUgZm9yIHRoZSBsaWNlbnNlIHRleHQ6IAogICBzcmMvbHhtbC9pc29zY2hlbWF0cm9uL3Jlc291cmNlcy94c2wvaXNvLXNjaGVtYXRyb24teHNsdDEvKQogKiBUaGUgeHNkL3JuZyBzY2hlbWEgc2NoZW1hdHJvbiBleHRyYWN0aW9uIHhzbCB0cmFuc2Zvcm1hdGlvbnMgYXJlIHVubGljZW5zZWQKICAgYW5kIGNvcHlyaWdodCB0aGUgcmVzcGVjdGl2ZSBhdXRob3JzIGFzIG5vdGVkIChzZWUgCiAgIHNyYy9seG1sL2lzb3NjaGVtYXRyb24vcmVzb3VyY2VzL3hzbC9STkcyU2NodHJuLnhzbCBhbmQKICAgc3JjL2x4bWwvaXNvc2NoZW1hdHJvbi9yZXNvdXJjZXMveHNsL1hTRDJTY2h0cm4ueHNsKQo=", + "contentType": "text/plain", + "encoding": "base64" } } } @@ -370,54 +374,6 @@ "url": "file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868" } ], - "licenses": [ - { - "license": { - "name": "declared license file: my_licenses/richtext.rtf", - "text": { - "content": "e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA=", - "contentType": "application/rtf", - "encoding": "base64" - } - } - }, - { - "license": { - "name": "declared license file: my_licenses/utf-16be_withBOM.txt", - "text": { - "content": "this file is\r\nutf-16be encoded\r\nwith BOM\r\n\ud83d\ude03\r\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: my_licenses/utf-16le_withBOM.txt", - "text": { - "content": "this file is\nutf-16le encoded\nwith BOM\n\ud83d\ude03\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: my_licenses/utf-8_noBOM.txt", - "text": { - "content": "this file is\nutf-8 encoded\nwithout BOM\n\ud83d\ude03\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: my_licenses/utf-8_withBOM.txt", - "text": { - "content": "\ufeffthis file is\nutf-8 encoded\nwith BOM\n\ud83d\ude03\n", - "contentType": "text/plain" - } - } - } - ], "name": "regression-issue868", "type": "library", "version": "0.1" diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.xml.bin index 0210baac6..749b02e2d 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.xml.bin @@ -31,31 +31,6 @@ MIT - - declared license file: LICENSE - The MIT License (MIT) - -Copyright (c) 2015 Hynek Schlawack and the attrs contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - pkg:pypi/attrs@23.2.0 @@ -91,281 +66,15 @@ SOFTWARE. declared license file: CHANGELOG.rst - -Changelog -========= - - -next ----- - - -4.0 (2022-05-05) ----------------- - -* API changes - - * Drop support for Python 2. - * Test on Python 3.10 - * Make Expression.sort_order an instance attributes and not a class attribute - -* Misc. - - * Correct licensing documentation - * Improve docstringf and apply minor refactorings - * Adopt black code style and isort for imports - * Drop Travis and use GitHub actions for CI - - -3.8 (2020-06-10) ----------------- - -* API changes - - * Add support for evaluation of boolean expression. - Thank you to Lars van Gemerden @gemerden - -* Bug fixes - - * Fix parsing of tokens that have a number as the first character. - Thank you to Jeff Cohen @ jcohen28 - * Restore proper Python 2 compatibility. - Thank you to Benjy Weinberger @benjyw - -* Improve documentation - - * Add pointers to Linux distro packages. - Thank you to Max Mehl @mxmehl and Carmen Bianca Bakker @carmenbianca - * Fix typo. - Thank you to Gabriel Niebler @der-gabe - - -3.7 (2019-10-04) ----------------- - -* API changes - - * Add new sort argument to simplify() to optionally not sort when simplifying - expressions (e.g. not applying "commutativity"). Thank you to Steven Esser - @majurg for this - * Add new argument to tokenizer to optionally accept extra characters in symbol - tokens. Thank you to @carpie for this - - -3.6 (2018-08-06) ----------------- - -* No API changes - -* Bug fixes - - * Fix De Morgan's laws effect on double negation propositions. Thank you to Douglas Cardoso for this - * Improve error checking when parsing - - -3.5 (Nov 1, 2017) ------------------ - -* No API changes - -* Bug fixes - - * Documentation updates and add testing for Python 3.6. Thank you to Alexander Lisianoi @alisianoi - * Improve testng and expression equivalence checks - * Improve subs() method to an expression - - - -3.4 (May 12, 2017) ------------------- - -* No API changes - -* Bug fixes and improvements - - * Fix various documentation typos and improve tests . Thank you to Alexander Lisianoi @alisianoi - * Fix handling for literals vs. symbols in negations Thank you to @YaronK - - -3.3 (2017-02-09) ----------------- - -* API changes - - * #40 and #50 Expression.subs() now takes 'default' thanks to @kronuz - * #45 simplify=False is now the default for parse and related functions or methods. - * #40 Use "&" and "|" as default operators - -* Bug fixes - - * #60 Fix bug for "a or b c" which is not a valid expression - * #58 Fix math formula display in docs - * Improve handling of parse errors - - -2.0.0 (2016-05-11) ------------------- - -* API changes - - * New algebra definition. Refactored class hierarchy. Improved parsing. - -* New features - - * possibility to subclass algebra definition - * new normal forms shortcuts for DNF and CNF. - - -1.1 (2016-04-06) ------------------- - -* Initial release on Pypi. - + CkNoYW5nZWxvZwo9PT09PT09PT0KCgpuZXh0Ci0tLS0KCgo0LjAgKDIwMjItMDUtMDUpCi0tLS0tLS0tLS0tLS0tLS0KCiogQVBJIGNoYW5nZXMKCiAqIERyb3Agc3VwcG9ydCBmb3IgUHl0aG9uIDIuCiAqIFRlc3Qgb24gUHl0aG9uIDMuMTAKICogTWFrZSBFeHByZXNzaW9uLnNvcnRfb3JkZXIgYW4gaW5zdGFuY2UgYXR0cmlidXRlcyBhbmQgbm90IGEgY2xhc3MgYXR0cmlidXRlCgoqIE1pc2MuCgogKiBDb3JyZWN0IGxpY2Vuc2luZyBkb2N1bWVudGF0aW9uCiAqIEltcHJvdmUgZG9jc3RyaW5nZiBhbmQgYXBwbHkgbWlub3IgcmVmYWN0b3JpbmdzCiAqIEFkb3B0IGJsYWNrIGNvZGUgc3R5bGUgYW5kIGlzb3J0IGZvciBpbXBvcnRzCiAqIERyb3AgVHJhdmlzIGFuZCB1c2UgR2l0SHViIGFjdGlvbnMgZm9yIENJCgoKMy44ICgyMDIwLTA2LTEwKQotLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiBBZGQgc3VwcG9ydCBmb3IgZXZhbHVhdGlvbiBvZiBib29sZWFuIGV4cHJlc3Npb24uCiAgIFRoYW5rIHlvdSB0byBMYXJzIHZhbiBHZW1lcmRlbiBAZ2VtZXJkZW4KCiogQnVnIGZpeGVzCgogKiBGaXggcGFyc2luZyBvZiB0b2tlbnMgdGhhdCBoYXZlIGEgbnVtYmVyIGFzIHRoZSBmaXJzdCBjaGFyYWN0ZXIuIAogICBUaGFuayB5b3UgdG8gSmVmZiBDb2hlbiBAIGpjb2hlbjI4CiAqIFJlc3RvcmUgcHJvcGVyIFB5dGhvbiAyIGNvbXBhdGliaWxpdHkuIAogICBUaGFuayB5b3UgdG8gQmVuankgV2VpbmJlcmdlciBAYmVuanl3CgoqIEltcHJvdmUgZG9jdW1lbnRhdGlvbgoKICogQWRkIHBvaW50ZXJzIHRvIExpbnV4IGRpc3RybyBwYWNrYWdlcy4KICAgVGhhbmsgeW91IHRvIE1heCBNZWhsIEBteG1laGwgYW5kIENhcm1lbiBCaWFuY2EgQmFra2VyIEBjYXJtZW5iaWFuY2EKICogRml4IHR5cG8uCiAgIFRoYW5rIHlvdSB0byBHYWJyaWVsIE5pZWJsZXIgQGRlci1nYWJlCgoKMy43ICgyMDE5LTEwLTA0KQotLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiBBZGQgbmV3IHNvcnQgYXJndW1lbnQgdG8gc2ltcGxpZnkoKSB0byBvcHRpb25hbGx5IG5vdCBzb3J0IHdoZW4gc2ltcGxpZnlpbmcKICAgZXhwcmVzc2lvbnMgKGUuZy4gbm90IGFwcGx5aW5nICJjb21tdXRhdGl2aXR5IikuIFRoYW5rIHlvdSB0byBTdGV2ZW4gRXNzZXIKICAgQG1hanVyZyBmb3IgdGhpcwogKiBBZGQgbmV3IGFyZ3VtZW50IHRvIHRva2VuaXplciB0byBvcHRpb25hbGx5IGFjY2VwdCBleHRyYSBjaGFyYWN0ZXJzIGluIHN5bWJvbAogICB0b2tlbnMuIFRoYW5rIHlvdSB0byBAY2FycGllIGZvciB0aGlzCgoKMy42ICgyMDE4LTA4LTA2KQotLS0tLS0tLS0tLS0tLS0tCgoqIE5vIEFQSSBjaGFuZ2VzCgoqIEJ1ZyBmaXhlcwoKICogRml4IERlIE1vcmdhbidzIGxhd3MgZWZmZWN0IG9uIGRvdWJsZSBuZWdhdGlvbiBwcm9wb3NpdGlvbnMuIFRoYW5rIHlvdSB0byBEb3VnbGFzIENhcmRvc28gZm9yIHRoaXMKICogSW1wcm92ZSBlcnJvciBjaGVja2luZyB3aGVuIHBhcnNpbmcKCgozLjUgKE5vdiAxLCAyMDE3KQotLS0tLS0tLS0tLS0tLS0tLQoKKiBObyBBUEkgY2hhbmdlcwoKKiBCdWcgZml4ZXMKCiAqIERvY3VtZW50YXRpb24gdXBkYXRlcyBhbmQgYWRkIHRlc3RpbmcgZm9yIFB5dGhvbiAzLjYuIFRoYW5rIHlvdSB0byBBbGV4YW5kZXIgTGlzaWFub2kgQGFsaXNpYW5vaQogKiBJbXByb3ZlIHRlc3RuZyBhbmQgZXhwcmVzc2lvbiBlcXVpdmFsZW5jZSBjaGVja3MKICogSW1wcm92ZSBzdWJzKCkgbWV0aG9kIHRvIGFuIGV4cHJlc3Npb24gCgogCgozLjQgKE1heSAxMiwgMjAxNykKLS0tLS0tLS0tLS0tLS0tLS0tCgoqIE5vIEFQSSBjaGFuZ2VzCgoqIEJ1ZyBmaXhlcyBhbmQgaW1wcm92ZW1lbnRzCgogKiBGaXggdmFyaW91cyBkb2N1bWVudGF0aW9uIHR5cG9zIGFuZCBpbXByb3ZlIHRlc3RzIC4gVGhhbmsgeW91IHRvIEFsZXhhbmRlciBMaXNpYW5vaSBAYWxpc2lhbm9pCiAqIEZpeCBoYW5kbGluZyBmb3IgbGl0ZXJhbHMgdnMuIHN5bWJvbHMgaW4gbmVnYXRpb25zIFRoYW5rIHlvdSB0byBAWWFyb25LCgoKMy4zICgyMDE3LTAyLTA5KQotLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiAjNDAgYW5kICM1MCBFeHByZXNzaW9uLnN1YnMoKSBub3cgdGFrZXMgJ2RlZmF1bHQnIHRoYW5rcyB0byBAa3JvbnV6CiAqICM0NSBzaW1wbGlmeT1GYWxzZSBpcyBub3cgdGhlIGRlZmF1bHQgZm9yIHBhcnNlIGFuZCByZWxhdGVkIGZ1bmN0aW9ucyBvciBtZXRob2RzLgogKiAjNDAgVXNlICImIiBhbmQgInwiIGFzIGRlZmF1bHQgb3BlcmF0b3JzCgoqIEJ1ZyBmaXhlcwoKICogIzYwIEZpeCBidWcgZm9yICJhIG9yIGIgYyIgd2hpY2ggaXMgbm90IGEgdmFsaWQgZXhwcmVzc2lvbgogKiAjNTggRml4IG1hdGggZm9ybXVsYSBkaXNwbGF5IGluIGRvY3MKICogSW1wcm92ZSBoYW5kbGluZyBvZiBwYXJzZSBlcnJvcnMKCgoyLjAuMCAoMjAxNi0wNS0xMSkKLS0tLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiBOZXcgYWxnZWJyYSBkZWZpbml0aW9uLiBSZWZhY3RvcmVkIGNsYXNzIGhpZXJhcmNoeS4gSW1wcm92ZWQgcGFyc2luZy4KCiogTmV3IGZlYXR1cmVzCgogKiBwb3NzaWJpbGl0eSB0byBzdWJjbGFzcyBhbGdlYnJhIGRlZmluaXRpb24KICogbmV3IG5vcm1hbCBmb3JtcyBzaG9ydGN1dHMgZm9yIERORiBhbmQgQ05GLgoKCjEuMSAoMjAxNi0wNC0wNikKLS0tLS0tLS0tLS0tLS0tLS0tCgoqIEluaXRpYWwgcmVsZWFzZSBvbiBQeXBpLgo= declared license file: LICENSE.txt - Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation and/or -other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - + Q29weXJpZ2h0IChjKSBTZWJhc3RpYW4gS3JhZW1lciwgYmFzdGkua3JAZ21haWwuY29tIGFuZCBvdGhlcnMKQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCmFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKCjEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcwpsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KCjIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3IKb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQpESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgpBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwpMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCg== declared license file: README.rst - boolean.py -========== - -"boolean.py" is a small library implementing a boolean algebra. It -defines two base elements, TRUE and FALSE, and a Symbol class that can -take on one of these two values. Calculations are done in terms of AND, -OR and NOT - other compositions like XOR and NAND are not implemented -but can be emulated with AND or and NOT. Expressions are constructed -from parsed strings or in Python. - -It runs on Python 3.6+ -You can use older version 3.x for Python 2.7+ support. - -https://github.com/bastikr/boolean.py - -Build status: |Build Status| - - -Example -------- - -:: - - >>> import boolean - >>> algebra = boolean.BooleanAlgebra() - >>> expression1 = algebra.parse(u'apple and (oranges or banana) and not banana', simplify=False) - >>> expression1 - AND(Symbol('apple'), OR(Symbol('oranges'), Symbol('banana')), NOT(Symbol('banana'))) - - >>> expression2 = algebra.parse('(oranges | banana) and not banana & apple', simplify=True) - >>> expression2 - AND(Symbol('apple'), NOT(Symbol('banana')), Symbol('oranges')) - - >>> expression1 == expression2 - False - >>> expression1.simplify() == expression2 - True - - -Documentation -------------- - -http://readthedocs.org/docs/booleanpy/en/latest/ - - -Installation ------------- - -Installation via pip -~~~~~~~~~~~~~~~~~~~~ - -To install boolean.py, you need to have the following pieces of software -on your computer: - -- Python 3.6+ -- pip - -You then only need to run the following command: - -``pip install boolean.py`` - - -Installation via package managers -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -There are packages available for easy install on some operating systems. -You are welcome to help us package this tool for more distributions! - -- boolean.py has been packaged as Arch Linux, Fedora, openSus, - nixpkgs, Guix, DragonFly and FreeBSD - `packages <https://repology.org/project/python:boolean.py/versions>`__ . - -In particular: - -- Arch Linux (AUR): - `python-boolean.py <https://aur.archlinux.org/packages/python-boolean.py/>`__ -- Fedora: - `python-boolean.py <https://apps.fedoraproject.org/packages/python-boolean.py>`__ -- openSUSE: - `python-boolean.py <https://software.opensuse.org/package/python-boolean.py>`__ - - -Testing -------- - -Test ``boolean.py`` with your current Python environment: - -``python setup.py test`` - -Test with all of the supported Python environments using ``tox``: - -:: - - pip install -r requirements-dev.txt - tox - -If ``tox`` throws ``InterpreterNotFound``, limit it to python -interpreters that are actually installed on your machine: - -:: - - tox -e py36 - -Alternatively use pytest. - - -License -------- - -Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others -SPDX-License-Identifier: BSD-2-Clause - -.. |Build Status| image:: https://travis-ci.org/bastikr/boolean.py.svg?branch=master - :target: https://travis-ci.org/bastikr/boolean.py - + Ym9vbGVhbi5weQo9PT09PT09PT09CgoiYm9vbGVhbi5weSIgaXMgYSBzbWFsbCBsaWJyYXJ5IGltcGxlbWVudGluZyBhIGJvb2xlYW4gYWxnZWJyYS4gSXQKZGVmaW5lcyB0d28gYmFzZSBlbGVtZW50cywgVFJVRSBhbmQgRkFMU0UsIGFuZCBhIFN5bWJvbCBjbGFzcyB0aGF0IGNhbgp0YWtlIG9uIG9uZSBvZiB0aGVzZSB0d28gdmFsdWVzLiBDYWxjdWxhdGlvbnMgYXJlIGRvbmUgaW4gdGVybXMgb2YgQU5ELApPUiBhbmQgTk9UIC0gb3RoZXIgY29tcG9zaXRpb25zIGxpa2UgWE9SIGFuZCBOQU5EIGFyZSBub3QgaW1wbGVtZW50ZWQKYnV0IGNhbiBiZSBlbXVsYXRlZCB3aXRoIEFORCBvciBhbmQgTk9ULiBFeHByZXNzaW9ucyBhcmUgY29uc3RydWN0ZWQKZnJvbSBwYXJzZWQgc3RyaW5ncyBvciBpbiBQeXRob24uCgpJdCBydW5zIG9uIFB5dGhvbiAzLjYrCllvdSBjYW4gdXNlIG9sZGVyIHZlcnNpb24gMy54IGZvciBQeXRob24gMi43KyBzdXBwb3J0LgoKaHR0cHM6Ly9naXRodWIuY29tL2Jhc3Rpa3IvYm9vbGVhbi5weQoKQnVpbGQgc3RhdHVzOiB8QnVpbGQgU3RhdHVzfAoKCkV4YW1wbGUKLS0tLS0tLQoKOjoKCiAgICA+Pj4gaW1wb3J0IGJvb2xlYW4KICAgID4+PiBhbGdlYnJhID0gYm9vbGVhbi5Cb29sZWFuQWxnZWJyYSgpCiAgICA+Pj4gZXhwcmVzc2lvbjEgPSBhbGdlYnJhLnBhcnNlKHUnYXBwbGUgYW5kIChvcmFuZ2VzIG9yIGJhbmFuYSkgYW5kIG5vdCBiYW5hbmEnLCBzaW1wbGlmeT1GYWxzZSkKICAgID4+PiBleHByZXNzaW9uMQogICAgQU5EKFN5bWJvbCgnYXBwbGUnKSwgT1IoU3ltYm9sKCdvcmFuZ2VzJyksIFN5bWJvbCgnYmFuYW5hJykpLCBOT1QoU3ltYm9sKCdiYW5hbmEnKSkpCgogICAgPj4+IGV4cHJlc3Npb24yID0gYWxnZWJyYS5wYXJzZSgnKG9yYW5nZXMgfCBiYW5hbmEpIGFuZCBub3QgYmFuYW5hICYgYXBwbGUnLCBzaW1wbGlmeT1UcnVlKQogICAgPj4+IGV4cHJlc3Npb24yCiAgICBBTkQoU3ltYm9sKCdhcHBsZScpLCBOT1QoU3ltYm9sKCdiYW5hbmEnKSksIFN5bWJvbCgnb3JhbmdlcycpKQoKICAgID4+PiBleHByZXNzaW9uMSA9PSBleHByZXNzaW9uMgogICAgRmFsc2UKICAgID4+PiBleHByZXNzaW9uMS5zaW1wbGlmeSgpID09IGV4cHJlc3Npb24yCiAgICBUcnVlCgoKRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tCgpodHRwOi8vcmVhZHRoZWRvY3Mub3JnL2RvY3MvYm9vbGVhbnB5L2VuL2xhdGVzdC8KCgpJbnN0YWxsYXRpb24KLS0tLS0tLS0tLS0tCgpJbnN0YWxsYXRpb24gdmlhIHBpcAp+fn5+fn5+fn5+fn5+fn5+fn5+fgoKVG8gaW5zdGFsbCBib29sZWFuLnB5LCB5b3UgbmVlZCB0byBoYXZlIHRoZSBmb2xsb3dpbmcgcGllY2VzIG9mIHNvZnR3YXJlCm9uIHlvdXIgY29tcHV0ZXI6CgotICBQeXRob24gMy42KwotICBwaXAKCllvdSB0aGVuIG9ubHkgbmVlZCB0byBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kOgoKYGBwaXAgaW5zdGFsbCBib29sZWFuLnB5YGAKCgpJbnN0YWxsYXRpb24gdmlhIHBhY2thZ2UgbWFuYWdlcnMKfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgpUaGVyZSBhcmUgcGFja2FnZXMgYXZhaWxhYmxlIGZvciBlYXN5IGluc3RhbGwgb24gc29tZSBvcGVyYXRpbmcgc3lzdGVtcy4KWW91IGFyZSB3ZWxjb21lIHRvIGhlbHAgdXMgcGFja2FnZSB0aGlzIHRvb2wgZm9yIG1vcmUgZGlzdHJpYnV0aW9ucyEKCi0gIGJvb2xlYW4ucHkgaGFzIGJlZW4gcGFja2FnZWQgYXMgQXJjaCBMaW51eCwgRmVkb3JhLCBvcGVuU3VzLAogICBuaXhwa2dzLCBHdWl4LCBEcmFnb25GbHkgYW5kIEZyZWVCU0QgCiAgIGBwYWNrYWdlcyA8aHR0cHM6Ly9yZXBvbG9neS5vcmcvcHJvamVjdC9weXRob246Ym9vbGVhbi5weS92ZXJzaW9ucz5gX18gLgoKSW4gcGFydGljdWxhcjoKCi0gIEFyY2ggTGludXggKEFVUik6CiAgIGBweXRob24tYm9vbGVhbi5weSA8aHR0cHM6Ly9hdXIuYXJjaGxpbnV4Lm9yZy9wYWNrYWdlcy9weXRob24tYm9vbGVhbi5weS8+YF9fCi0gIEZlZG9yYToKICAgYHB5dGhvbi1ib29sZWFuLnB5IDxodHRwczovL2FwcHMuZmVkb3JhcHJvamVjdC5vcmcvcGFja2FnZXMvcHl0aG9uLWJvb2xlYW4ucHk+YF9fCi0gIG9wZW5TVVNFOgogICBgcHl0aG9uLWJvb2xlYW4ucHkgPGh0dHBzOi8vc29mdHdhcmUub3BlbnN1c2Uub3JnL3BhY2thZ2UvcHl0aG9uLWJvb2xlYW4ucHk+YF9fCgoKVGVzdGluZwotLS0tLS0tCgpUZXN0IGBgYm9vbGVhbi5weWBgIHdpdGggeW91ciBjdXJyZW50IFB5dGhvbiBlbnZpcm9ubWVudDoKCmBgcHl0aG9uIHNldHVwLnB5IHRlc3RgYAoKVGVzdCB3aXRoIGFsbCBvZiB0aGUgc3VwcG9ydGVkIFB5dGhvbiBlbnZpcm9ubWVudHMgdXNpbmcgYGB0b3hgYDoKCjo6CgogICAgcGlwIGluc3RhbGwgLXIgcmVxdWlyZW1lbnRzLWRldi50eHQKICAgIHRveAoKSWYgYGB0b3hgYCB0aHJvd3MgYGBJbnRlcnByZXRlck5vdEZvdW5kYGAsIGxpbWl0IGl0IHRvIHB5dGhvbgppbnRlcnByZXRlcnMgdGhhdCBhcmUgYWN0dWFsbHkgaW5zdGFsbGVkIG9uIHlvdXIgbWFjaGluZToKCjo6CgogICAgdG94IC1lIHB5MzYKCkFsdGVybmF0aXZlbHkgdXNlIHB5dGVzdC4KCgpMaWNlbnNlCi0tLS0tLS0KCkNvcHlyaWdodCAoYykgU2ViYXN0aWFuIEtyYWVtZXIsIGJhc3RpLmtyQGdtYWlsLmNvbSBhbmQgb3RoZXJzClNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UKCi4uIHxCdWlsZCBTdGF0dXN8IGltYWdlOjogaHR0cHM6Ly90cmF2aXMtY2kub3JnL2Jhc3Rpa3IvYm9vbGVhbi5weS5zdmc/YnJhbmNoPW1hc3RlcgogICA6dGFyZ2V0OiBodHRwczovL3RyYXZpcy1jaS5vcmcvYmFzdGlrci9ib29sZWFuLnB5Cg== pkg:pypi/boolean.py@4.0 @@ -376,6 +85,43 @@ SPDX-License-Identifier: BSD-2-Clause + + chardet + 5.2.0 + Universal encoding detector for Python 3 + + + License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+) + + + declared license file: LICENSE + ICAgICAgICAgICAgICAgICAgR05VIExFU1NFUiBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFCiAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAyLjEsIEZlYnJ1YXJ5IDE5OTkKCiBDb3B5cmlnaHQgKEMpIDE5OTEsIDE5OTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKIEV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcwogb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCgpbVGhpcyBpcyB0aGUgZmlyc3QgcmVsZWFzZWQgdmVyc2lvbiBvZiB0aGUgTGVzc2VyIEdQTC4gIEl0IGFsc28gY291bnRzCiBhcyB0aGUgc3VjY2Vzc29yIG9mIHRoZSBHTlUgTGlicmFyeSBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLCBoZW5jZQogdGhlIHZlcnNpb24gbnVtYmVyIDIuMS5dCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlYW1ibGUKCiAgVGhlIGxpY2Vuc2VzIGZvciBtb3N0IHNvZnR3YXJlIGFyZSBkZXNpZ25lZCB0byB0YWtlIGF3YXkgeW91cgpmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgaXQuICBCeSBjb250cmFzdCwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwpMaWNlbnNlcyBhcmUgaW50ZW5kZWQgdG8gZ3VhcmFudGVlIHlvdXIgZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlCmZyZWUgc29mdHdhcmUtLXRvIG1ha2Ugc3VyZSB0aGUgc29mdHdhcmUgaXMgZnJlZSBmb3IgYWxsIGl0cyB1c2Vycy4KCiAgVGhpcyBsaWNlbnNlLCB0aGUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFwcGxpZXMgdG8gc29tZQpzcGVjaWFsbHkgZGVzaWduYXRlZCBzb2Z0d2FyZSBwYWNrYWdlcy0tdHlwaWNhbGx5IGxpYnJhcmllcy0tb2YgdGhlCkZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBhbmQgb3RoZXIgYXV0aG9ycyB3aG8gZGVjaWRlIHRvIHVzZSBpdC4gIFlvdQpjYW4gdXNlIGl0IHRvbywgYnV0IHdlIHN1Z2dlc3QgeW91IGZpcnN0IHRoaW5rIGNhcmVmdWxseSBhYm91dCB3aGV0aGVyCnRoaXMgbGljZW5zZSBvciB0aGUgb3JkaW5hcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyB0aGUgYmV0dGVyCnN0cmF0ZWd5IHRvIHVzZSBpbiBhbnkgcGFydGljdWxhciBjYXNlLCBiYXNlZCBvbiB0aGUgZXhwbGFuYXRpb25zIGJlbG93LgoKICBXaGVuIHdlIHNwZWFrIG9mIGZyZWUgc29mdHdhcmUsIHdlIGFyZSByZWZlcnJpbmcgdG8gZnJlZWRvbSBvZiB1c2UsCm5vdCBwcmljZS4gIE91ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlcyBhcmUgZGVzaWduZWQgdG8gbWFrZSBzdXJlIHRoYXQKeW91IGhhdmUgdGhlIGZyZWVkb20gdG8gZGlzdHJpYnV0ZSBjb3BpZXMgb2YgZnJlZSBzb2Z0d2FyZSAoYW5kIGNoYXJnZQpmb3IgdGhpcyBzZXJ2aWNlIGlmIHlvdSB3aXNoKTsgdGhhdCB5b3UgcmVjZWl2ZSBzb3VyY2UgY29kZSBvciBjYW4gZ2V0Cml0IGlmIHlvdSB3YW50IGl0OyB0aGF0IHlvdSBjYW4gY2hhbmdlIHRoZSBzb2Z0d2FyZSBhbmQgdXNlIHBpZWNlcyBvZgppdCBpbiBuZXcgZnJlZSBwcm9ncmFtczsgYW5kIHRoYXQgeW91IGFyZSBpbmZvcm1lZCB0aGF0IHlvdSBjYW4gZG8KdGhlc2UgdGhpbmdzLgoKICBUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIG1ha2UgcmVzdHJpY3Rpb25zIHRoYXQgZm9yYmlkCmRpc3RyaWJ1dG9ycyB0byBkZW55IHlvdSB0aGVzZSByaWdodHMgb3IgdG8gYXNrIHlvdSB0byBzdXJyZW5kZXIgdGhlc2UKcmlnaHRzLiAgVGhlc2UgcmVzdHJpY3Rpb25zIHRyYW5zbGF0ZSB0byBjZXJ0YWluIHJlc3BvbnNpYmlsaXRpZXMgZm9yCnlvdSBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIGxpYnJhcnkgb3IgaWYgeW91IG1vZGlmeSBpdC4KCiAgRm9yIGV4YW1wbGUsIGlmIHlvdSBkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUgbGlicmFyeSwgd2hldGhlciBncmF0aXMKb3IgZm9yIGEgZmVlLCB5b3UgbXVzdCBnaXZlIHRoZSByZWNpcGllbnRzIGFsbCB0aGUgcmlnaHRzIHRoYXQgd2UgZ2F2ZQp5b3UuICBZb3UgbXVzdCBtYWtlIHN1cmUgdGhhdCB0aGV5LCB0b28sIHJlY2VpdmUgb3IgY2FuIGdldCB0aGUgc291cmNlCmNvZGUuICBJZiB5b3UgbGluayBvdGhlciBjb2RlIHdpdGggdGhlIGxpYnJhcnksIHlvdSBtdXN0IHByb3ZpZGUKY29tcGxldGUgb2JqZWN0IGZpbGVzIHRvIHRoZSByZWNpcGllbnRzLCBzbyB0aGF0IHRoZXkgY2FuIHJlbGluayB0aGVtCndpdGggdGhlIGxpYnJhcnkgYWZ0ZXIgbWFraW5nIGNoYW5nZXMgdG8gdGhlIGxpYnJhcnkgYW5kIHJlY29tcGlsaW5nCml0LiAgQW5kIHlvdSBtdXN0IHNob3cgdGhlbSB0aGVzZSB0ZXJtcyBzbyB0aGV5IGtub3cgdGhlaXIgcmlnaHRzLgoKICBXZSBwcm90ZWN0IHlvdXIgcmlnaHRzIHdpdGggYSB0d28tc3RlcCBtZXRob2Q6ICgxKSB3ZSBjb3B5cmlnaHQgdGhlCmxpYnJhcnksIGFuZCAoMikgd2Ugb2ZmZXIgeW91IHRoaXMgbGljZW5zZSwgd2hpY2ggZ2l2ZXMgeW91IGxlZ2FsCnBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IHRoZSBsaWJyYXJ5LgoKICBUbyBwcm90ZWN0IGVhY2ggZGlzdHJpYnV0b3IsIHdlIHdhbnQgdG8gbWFrZSBpdCB2ZXJ5IGNsZWFyIHRoYXQKdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoZSBmcmVlIGxpYnJhcnkuICBBbHNvLCBpZiB0aGUgbGlicmFyeSBpcwptb2RpZmllZCBieSBzb21lb25lIGVsc2UgYW5kIHBhc3NlZCBvbiwgdGhlIHJlY2lwaWVudHMgc2hvdWxkIGtub3cKdGhhdCB3aGF0IHRoZXkgaGF2ZSBpcyBub3QgdGhlIG9yaWdpbmFsIHZlcnNpb24sIHNvIHRoYXQgdGhlIG9yaWdpbmFsCmF1dGhvcidzIHJlcHV0YXRpb24gd2lsbCBub3QgYmUgYWZmZWN0ZWQgYnkgcHJvYmxlbXMgdGhhdCBtaWdodCBiZQppbnRyb2R1Y2VkIGJ5IG90aGVycy4KDAogIEZpbmFsbHksIHNvZnR3YXJlIHBhdGVudHMgcG9zZSBhIGNvbnN0YW50IHRocmVhdCB0byB0aGUgZXhpc3RlbmNlIG9mCmFueSBmcmVlIHByb2dyYW0uICBXZSB3aXNoIHRvIG1ha2Ugc3VyZSB0aGF0IGEgY29tcGFueSBjYW5ub3QKZWZmZWN0aXZlbHkgcmVzdHJpY3QgdGhlIHVzZXJzIG9mIGEgZnJlZSBwcm9ncmFtIGJ5IG9idGFpbmluZyBhCnJlc3RyaWN0aXZlIGxpY2Vuc2UgZnJvbSBhIHBhdGVudCBob2xkZXIuICBUaGVyZWZvcmUsIHdlIGluc2lzdCB0aGF0CmFueSBwYXRlbnQgbGljZW5zZSBvYnRhaW5lZCBmb3IgYSB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5IG11c3QgYmUKY29uc2lzdGVudCB3aXRoIHRoZSBmdWxsIGZyZWVkb20gb2YgdXNlIHNwZWNpZmllZCBpbiB0aGlzIGxpY2Vuc2UuCgogIE1vc3QgR05VIHNvZnR3YXJlLCBpbmNsdWRpbmcgc29tZSBsaWJyYXJpZXMsIGlzIGNvdmVyZWQgYnkgdGhlCm9yZGluYXJ5IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBsaWNlbnNlLCB0aGUgR05VIExlc3NlcgpHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBhcHBsaWVzIHRvIGNlcnRhaW4gZGVzaWduYXRlZCBsaWJyYXJpZXMsIGFuZAppcyBxdWl0ZSBkaWZmZXJlbnQgZnJvbSB0aGUgb3JkaW5hcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFdlIHVzZQp0aGlzIGxpY2Vuc2UgZm9yIGNlcnRhaW4gbGlicmFyaWVzIGluIG9yZGVyIHRvIHBlcm1pdCBsaW5raW5nIHRob3NlCmxpYnJhcmllcyBpbnRvIG5vbi1mcmVlIHByb2dyYW1zLgoKICBXaGVuIGEgcHJvZ3JhbSBpcyBsaW5rZWQgd2l0aCBhIGxpYnJhcnksIHdoZXRoZXIgc3RhdGljYWxseSBvciB1c2luZwphIHNoYXJlZCBsaWJyYXJ5LCB0aGUgY29tYmluYXRpb24gb2YgdGhlIHR3byBpcyBsZWdhbGx5IHNwZWFraW5nIGEKY29tYmluZWQgd29yaywgYSBkZXJpdmF0aXZlIG9mIHRoZSBvcmlnaW5hbCBsaWJyYXJ5LiAgVGhlIG9yZGluYXJ5CkdlbmVyYWwgUHVibGljIExpY2Vuc2UgdGhlcmVmb3JlIHBlcm1pdHMgc3VjaCBsaW5raW5nIG9ubHkgaWYgdGhlCmVudGlyZSBjb21iaW5hdGlvbiBmaXRzIGl0cyBjcml0ZXJpYSBvZiBmcmVlZG9tLiAgVGhlIExlc3NlciBHZW5lcmFsClB1YmxpYyBMaWNlbnNlIHBlcm1pdHMgbW9yZSBsYXggY3JpdGVyaWEgZm9yIGxpbmtpbmcgb3RoZXIgY29kZSB3aXRoCnRoZSBsaWJyYXJ5LgoKICBXZSBjYWxsIHRoaXMgbGljZW5zZSB0aGUgIkxlc3NlciIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBiZWNhdXNlIGl0CmRvZXMgTGVzcyB0byBwcm90ZWN0IHRoZSB1c2VyJ3MgZnJlZWRvbSB0aGFuIHRoZSBvcmRpbmFyeSBHZW5lcmFsClB1YmxpYyBMaWNlbnNlLiAgSXQgYWxzbyBwcm92aWRlcyBvdGhlciBmcmVlIHNvZnR3YXJlIGRldmVsb3BlcnMgTGVzcwpvZiBhbiBhZHZhbnRhZ2Ugb3ZlciBjb21wZXRpbmcgbm9uLWZyZWUgcHJvZ3JhbXMuICBUaGVzZSBkaXNhZHZhbnRhZ2VzCmFyZSB0aGUgcmVhc29uIHdlIHVzZSB0aGUgb3JkaW5hcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbWFueQpsaWJyYXJpZXMuICBIb3dldmVyLCB0aGUgTGVzc2VyIGxpY2Vuc2UgcHJvdmlkZXMgYWR2YW50YWdlcyBpbiBjZXJ0YWluCnNwZWNpYWwgY2lyY3Vtc3RhbmNlcy4KCiAgRm9yIGV4YW1wbGUsIG9uIHJhcmUgb2NjYXNpb25zLCB0aGVyZSBtYXkgYmUgYSBzcGVjaWFsIG5lZWQgdG8KZW5jb3VyYWdlIHRoZSB3aWRlc3QgcG9zc2libGUgdXNlIG9mIGEgY2VydGFpbiBsaWJyYXJ5LCBzbyB0aGF0IGl0IGJlY29tZXMKYSBkZS1mYWN0byBzdGFuZGFyZC4gIFRvIGFjaGlldmUgdGhpcywgbm9uLWZyZWUgcHJvZ3JhbXMgbXVzdCBiZQphbGxvd2VkIHRvIHVzZSB0aGUgbGlicmFyeS4gIEEgbW9yZSBmcmVxdWVudCBjYXNlIGlzIHRoYXQgYSBmcmVlCmxpYnJhcnkgZG9lcyB0aGUgc2FtZSBqb2IgYXMgd2lkZWx5IHVzZWQgbm9uLWZyZWUgbGlicmFyaWVzLiAgSW4gdGhpcwpjYXNlLCB0aGVyZSBpcyBsaXR0bGUgdG8gZ2FpbiBieSBsaW1pdGluZyB0aGUgZnJlZSBsaWJyYXJ5IHRvIGZyZWUKc29mdHdhcmUgb25seSwgc28gd2UgdXNlIHRoZSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KCiAgSW4gb3RoZXIgY2FzZXMsIHBlcm1pc3Npb24gdG8gdXNlIGEgcGFydGljdWxhciBsaWJyYXJ5IGluIG5vbi1mcmVlCnByb2dyYW1zIGVuYWJsZXMgYSBncmVhdGVyIG51bWJlciBvZiBwZW9wbGUgdG8gdXNlIGEgbGFyZ2UgYm9keSBvZgpmcmVlIHNvZnR3YXJlLiAgRm9yIGV4YW1wbGUsIHBlcm1pc3Npb24gdG8gdXNlIHRoZSBHTlUgQyBMaWJyYXJ5IGluCm5vbi1mcmVlIHByb2dyYW1zIGVuYWJsZXMgbWFueSBtb3JlIHBlb3BsZSB0byB1c2UgdGhlIHdob2xlIEdOVQpvcGVyYXRpbmcgc3lzdGVtLCBhcyB3ZWxsIGFzIGl0cyB2YXJpYW50LCB0aGUgR05VL0xpbnV4IG9wZXJhdGluZwpzeXN0ZW0uCgogIEFsdGhvdWdoIHRoZSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBMZXNzIHByb3RlY3RpdmUgb2YgdGhlCnVzZXJzJyBmcmVlZG9tLCBpdCBkb2VzIGVuc3VyZSB0aGF0IHRoZSB1c2VyIG9mIGEgcHJvZ3JhbSB0aGF0IGlzCmxpbmtlZCB3aXRoIHRoZSBMaWJyYXJ5IGhhcyB0aGUgZnJlZWRvbSBhbmQgdGhlIHdoZXJld2l0aGFsIHRvIHJ1bgp0aGF0IHByb2dyYW0gdXNpbmcgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBMaWJyYXJ5LgoKICBUaGUgcHJlY2lzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW9uIGFuZAptb2RpZmljYXRpb24gZm9sbG93LiAgUGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGEKIndvcmsgYmFzZWQgb24gdGhlIGxpYnJhcnkiIGFuZCBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgbGlicmFyeSIuICBUaGUKZm9ybWVyIGNvbnRhaW5zIGNvZGUgZGVyaXZlZCBmcm9tIHRoZSBsaWJyYXJ5LCB3aGVyZWFzIHRoZSBsYXR0ZXIgbXVzdApiZSBjb21iaW5lZCB3aXRoIHRoZSBsaWJyYXJ5IGluIG9yZGVyIHRvIHJ1bi4KDAogICAgICAgICAgICAgICAgICBHTlUgTEVTU0VSIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKICAgVEVSTVMgQU5EIENPTkRJVElPTlMgRk9SIENPUFlJTkcsIERJU1RSSUJVVElPTiBBTkQgTU9ESUZJQ0FUSU9OCgogIDAuIFRoaXMgTGljZW5zZSBBZ3JlZW1lbnQgYXBwbGllcyB0byBhbnkgc29mdHdhcmUgbGlicmFyeSBvciBvdGhlcgpwcm9ncmFtIHdoaWNoIGNvbnRhaW5zIGEgbm90aWNlIHBsYWNlZCBieSB0aGUgY29weXJpZ2h0IGhvbGRlciBvcgpvdGhlciBhdXRob3JpemVkIHBhcnR5IHNheWluZyBpdCBtYXkgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mCnRoaXMgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKGFsc28gY2FsbGVkICJ0aGlzIExpY2Vuc2UiKS4KRWFjaCBsaWNlbnNlZSBpcyBhZGRyZXNzZWQgYXMgInlvdSIuCgogIEEgImxpYnJhcnkiIG1lYW5zIGEgY29sbGVjdGlvbiBvZiBzb2Z0d2FyZSBmdW5jdGlvbnMgYW5kL29yIGRhdGEKcHJlcGFyZWQgc28gYXMgdG8gYmUgY29udmVuaWVudGx5IGxpbmtlZCB3aXRoIGFwcGxpY2F0aW9uIHByb2dyYW1zCih3aGljaCB1c2Ugc29tZSBvZiB0aG9zZSBmdW5jdGlvbnMgYW5kIGRhdGEpIHRvIGZvcm0gZXhlY3V0YWJsZXMuCgogIFRoZSAiTGlicmFyeSIsIGJlbG93LCByZWZlcnMgdG8gYW55IHN1Y2ggc29mdHdhcmUgbGlicmFyeSBvciB3b3JrCndoaWNoIGhhcyBiZWVuIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZXNlIHRlcm1zLiAgQSAid29yayBiYXNlZCBvbiB0aGUKTGlicmFyeSIgbWVhbnMgZWl0aGVyIHRoZSBMaWJyYXJ5IG9yIGFueSBkZXJpdmF0aXZlIHdvcmsgdW5kZXIKY29weXJpZ2h0IGxhdzogdGhhdCBpcyB0byBzYXksIGEgd29yayBjb250YWluaW5nIHRoZSBMaWJyYXJ5IG9yIGEKcG9ydGlvbiBvZiBpdCwgZWl0aGVyIHZlcmJhdGltIG9yIHdpdGggbW9kaWZpY2F0aW9ucyBhbmQvb3IgdHJhbnNsYXRlZApzdHJhaWdodGZvcndhcmRseSBpbnRvIGFub3RoZXIgbGFuZ3VhZ2UuICAoSGVyZWluYWZ0ZXIsIHRyYW5zbGF0aW9uIGlzCmluY2x1ZGVkIHdpdGhvdXQgbGltaXRhdGlvbiBpbiB0aGUgdGVybSAibW9kaWZpY2F0aW9uIi4pCgogICJTb3VyY2UgY29kZSIgZm9yIGEgd29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsgZm9yCm1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgRm9yIGEgbGlicmFyeSwgY29tcGxldGUgc291cmNlIGNvZGUgbWVhbnMKYWxsIHRoZSBzb3VyY2UgY29kZSBmb3IgYWxsIG1vZHVsZXMgaXQgY29udGFpbnMsIHBsdXMgYW55IGFzc29jaWF0ZWQKaW50ZXJmYWNlIGRlZmluaXRpb24gZmlsZXMsIHBsdXMgdGhlIHNjcmlwdHMgdXNlZCB0byBjb250cm9sIGNvbXBpbGF0aW9uCmFuZCBpbnN0YWxsYXRpb24gb2YgdGhlIGxpYnJhcnkuCgogIEFjdGl2aXRpZXMgb3RoZXIgdGhhbiBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kIG1vZGlmaWNhdGlvbiBhcmUgbm90CmNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlOyB0aGV5IGFyZSBvdXRzaWRlIGl0cyBzY29wZS4gIFRoZSBhY3Qgb2YKcnVubmluZyBhIHByb2dyYW0gdXNpbmcgdGhlIExpYnJhcnkgaXMgbm90IHJlc3RyaWN0ZWQsIGFuZCBvdXRwdXQgZnJvbQpzdWNoIGEgcHJvZ3JhbSBpcyBjb3ZlcmVkIG9ubHkgaWYgaXRzIGNvbnRlbnRzIGNvbnN0aXR1dGUgYSB3b3JrIGJhc2VkCm9uIHRoZSBMaWJyYXJ5IChpbmRlcGVuZGVudCBvZiB0aGUgdXNlIG9mIHRoZSBMaWJyYXJ5IGluIGEgdG9vbCBmb3IKd3JpdGluZyBpdCkuICBXaGV0aGVyIHRoYXQgaXMgdHJ1ZSBkZXBlbmRzIG9uIHdoYXQgdGhlIExpYnJhcnkgZG9lcwphbmQgd2hhdCB0aGUgcHJvZ3JhbSB0aGF0IHVzZXMgdGhlIExpYnJhcnkgZG9lcy4KCiAgMS4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcyBvZiB0aGUgTGlicmFyeSdzCmNvbXBsZXRlIHNvdXJjZSBjb2RlIGFzIHlvdSByZWNlaXZlIGl0LCBpbiBhbnkgbWVkaXVtLCBwcm92aWRlZCB0aGF0CnlvdSBjb25zcGljdW91c2x5IGFuZCBhcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuCmFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2UgYW5kIGRpc2NsYWltZXIgb2Ygd2FycmFudHk7IGtlZXAgaW50YWN0CmFsbCB0aGUgbm90aWNlcyB0aGF0IHJlZmVyIHRvIHRoaXMgTGljZW5zZSBhbmQgdG8gdGhlIGFic2VuY2Ugb2YgYW55CndhcnJhbnR5OyBhbmQgZGlzdHJpYnV0ZSBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlIGFsb25nIHdpdGggdGhlCkxpYnJhcnkuCgogIFlvdSBtYXkgY2hhcmdlIGEgZmVlIGZvciB0aGUgcGh5c2ljYWwgYWN0IG9mIHRyYW5zZmVycmluZyBhIGNvcHksCmFuZCB5b3UgbWF5IGF0IHlvdXIgb3B0aW9uIG9mZmVyIHdhcnJhbnR5IHByb3RlY3Rpb24gaW4gZXhjaGFuZ2UgZm9yIGEKZmVlLgoMCiAgMi4gWW91IG1heSBtb2RpZnkgeW91ciBjb3B5IG9yIGNvcGllcyBvZiB0aGUgTGlicmFyeSBvciBhbnkgcG9ydGlvbgpvZiBpdCwgdGh1cyBmb3JtaW5nIGEgd29yayBiYXNlZCBvbiB0aGUgTGlicmFyeSwgYW5kIGNvcHkgYW5kCmRpc3RyaWJ1dGUgc3VjaCBtb2RpZmljYXRpb25zIG9yIHdvcmsgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb24gMQphYm92ZSwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBtZWV0IGFsbCBvZiB0aGVzZSBjb25kaXRpb25zOgoKICAgIGEpIFRoZSBtb2RpZmllZCB3b3JrIG11c3QgaXRzZWxmIGJlIGEgc29mdHdhcmUgbGlicmFyeS4KCiAgICBiKSBZb3UgbXVzdCBjYXVzZSB0aGUgZmlsZXMgbW9kaWZpZWQgdG8gY2FycnkgcHJvbWluZW50IG5vdGljZXMKICAgIHN0YXRpbmcgdGhhdCB5b3UgY2hhbmdlZCB0aGUgZmlsZXMgYW5kIHRoZSBkYXRlIG9mIGFueSBjaGFuZ2UuCgogICAgYykgWW91IG11c3QgY2F1c2UgdGhlIHdob2xlIG9mIHRoZSB3b3JrIHRvIGJlIGxpY2Vuc2VkIGF0IG5vCiAgICBjaGFyZ2UgdG8gYWxsIHRoaXJkIHBhcnRpZXMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZS4KCiAgICBkKSBJZiBhIGZhY2lsaXR5IGluIHRoZSBtb2RpZmllZCBMaWJyYXJ5IHJlZmVycyB0byBhIGZ1bmN0aW9uIG9yIGEKICAgIHRhYmxlIG9mIGRhdGEgdG8gYmUgc3VwcGxpZWQgYnkgYW4gYXBwbGljYXRpb24gcHJvZ3JhbSB0aGF0IHVzZXMKICAgIHRoZSBmYWNpbGl0eSwgb3RoZXIgdGhhbiBhcyBhbiBhcmd1bWVudCBwYXNzZWQgd2hlbiB0aGUgZmFjaWxpdHkKICAgIGlzIGludm9rZWQsIHRoZW4geW91IG11c3QgbWFrZSBhIGdvb2QgZmFpdGggZWZmb3J0IHRvIGVuc3VyZSB0aGF0LAogICAgaW4gdGhlIGV2ZW50IGFuIGFwcGxpY2F0aW9uIGRvZXMgbm90IHN1cHBseSBzdWNoIGZ1bmN0aW9uIG9yCiAgICB0YWJsZSwgdGhlIGZhY2lsaXR5IHN0aWxsIG9wZXJhdGVzLCBhbmQgcGVyZm9ybXMgd2hhdGV2ZXIgcGFydCBvZgogICAgaXRzIHB1cnBvc2UgcmVtYWlucyBtZWFuaW5nZnVsLgoKICAgIChGb3IgZXhhbXBsZSwgYSBmdW5jdGlvbiBpbiBhIGxpYnJhcnkgdG8gY29tcHV0ZSBzcXVhcmUgcm9vdHMgaGFzCiAgICBhIHB1cnBvc2UgdGhhdCBpcyBlbnRpcmVseSB3ZWxsLWRlZmluZWQgaW5kZXBlbmRlbnQgb2YgdGhlCiAgICBhcHBsaWNhdGlvbi4gIFRoZXJlZm9yZSwgU3Vic2VjdGlvbiAyZCByZXF1aXJlcyB0aGF0IGFueQogICAgYXBwbGljYXRpb24tc3VwcGxpZWQgZnVuY3Rpb24gb3IgdGFibGUgdXNlZCBieSB0aGlzIGZ1bmN0aW9uIG11c3QKICAgIGJlIG9wdGlvbmFsOiBpZiB0aGUgYXBwbGljYXRpb24gZG9lcyBub3Qgc3VwcGx5IGl0LCB0aGUgc3F1YXJlCiAgICByb290IGZ1bmN0aW9uIG11c3Qgc3RpbGwgY29tcHV0ZSBzcXVhcmUgcm9vdHMuKQoKVGhlc2UgcmVxdWlyZW1lbnRzIGFwcGx5IHRvIHRoZSBtb2RpZmllZCB3b3JrIGFzIGEgd2hvbGUuICBJZgppZGVudGlmaWFibGUgc2VjdGlvbnMgb2YgdGhhdCB3b3JrIGFyZSBub3QgZGVyaXZlZCBmcm9tIHRoZSBMaWJyYXJ5LAphbmQgY2FuIGJlIHJlYXNvbmFibHkgY29uc2lkZXJlZCBpbmRlcGVuZGVudCBhbmQgc2VwYXJhdGUgd29ya3MgaW4KdGhlbXNlbHZlcywgdGhlbiB0aGlzIExpY2Vuc2UsIGFuZCBpdHMgdGVybXMsIGRvIG5vdCBhcHBseSB0byB0aG9zZQpzZWN0aW9ucyB3aGVuIHlvdSBkaXN0cmlidXRlIHRoZW0gYXMgc2VwYXJhdGUgd29ya3MuICBCdXQgd2hlbiB5b3UKZGlzdHJpYnV0ZSB0aGUgc2FtZSBzZWN0aW9ucyBhcyBwYXJ0IG9mIGEgd2hvbGUgd2hpY2ggaXMgYSB3b3JrIGJhc2VkCm9uIHRoZSBMaWJyYXJ5LCB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSB3aG9sZSBtdXN0IGJlIG9uIHRoZSB0ZXJtcyBvZgp0aGlzIExpY2Vuc2UsIHdob3NlIHBlcm1pc3Npb25zIGZvciBvdGhlciBsaWNlbnNlZXMgZXh0ZW5kIHRvIHRoZQplbnRpcmUgd2hvbGUsIGFuZCB0aHVzIHRvIGVhY2ggYW5kIGV2ZXJ5IHBhcnQgcmVnYXJkbGVzcyBvZiB3aG8gd3JvdGUKaXQuCgpUaHVzLCBpdCBpcyBub3QgdGhlIGludGVudCBvZiB0aGlzIHNlY3Rpb24gdG8gY2xhaW0gcmlnaHRzIG9yIGNvbnRlc3QKeW91ciByaWdodHMgdG8gd29yayB3cml0dGVuIGVudGlyZWx5IGJ5IHlvdTsgcmF0aGVyLCB0aGUgaW50ZW50IGlzIHRvCmV4ZXJjaXNlIHRoZSByaWdodCB0byBjb250cm9sIHRoZSBkaXN0cmlidXRpb24gb2YgZGVyaXZhdGl2ZSBvcgpjb2xsZWN0aXZlIHdvcmtzIGJhc2VkIG9uIHRoZSBMaWJyYXJ5LgoKSW4gYWRkaXRpb24sIG1lcmUgYWdncmVnYXRpb24gb2YgYW5vdGhlciB3b3JrIG5vdCBiYXNlZCBvbiB0aGUgTGlicmFyeQp3aXRoIHRoZSBMaWJyYXJ5IChvciB3aXRoIGEgd29yayBiYXNlZCBvbiB0aGUgTGlicmFyeSkgb24gYSB2b2x1bWUgb2YKYSBzdG9yYWdlIG9yIGRpc3RyaWJ1dGlvbiBtZWRpdW0gZG9lcyBub3QgYnJpbmcgdGhlIG90aGVyIHdvcmsgdW5kZXIKdGhlIHNjb3BlIG9mIHRoaXMgTGljZW5zZS4KCiAgMy4gWW91IG1heSBvcHQgdG8gYXBwbHkgdGhlIHRlcm1zIG9mIHRoZSBvcmRpbmFyeSBHTlUgR2VuZXJhbCBQdWJsaWMKTGljZW5zZSBpbnN0ZWFkIG9mIHRoaXMgTGljZW5zZSB0byBhIGdpdmVuIGNvcHkgb2YgdGhlIExpYnJhcnkuICBUbyBkbwp0aGlzLCB5b3UgbXVzdCBhbHRlciBhbGwgdGhlIG5vdGljZXMgdGhhdCByZWZlciB0byB0aGlzIExpY2Vuc2UsIHNvCnRoYXQgdGhleSByZWZlciB0byB0aGUgb3JkaW5hcnkgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMiwKaW5zdGVhZCBvZiB0byB0aGlzIExpY2Vuc2UuICAoSWYgYSBuZXdlciB2ZXJzaW9uIHRoYW4gdmVyc2lvbiAyIG9mIHRoZQpvcmRpbmFyeSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBoYXMgYXBwZWFyZWQsIHRoZW4geW91IGNhbiBzcGVjaWZ5CnRoYXQgdmVyc2lvbiBpbnN0ZWFkIGlmIHlvdSB3aXNoLikgIERvIG5vdCBtYWtlIGFueSBvdGhlciBjaGFuZ2UgaW4KdGhlc2Ugbm90aWNlcy4KDAogIE9uY2UgdGhpcyBjaGFuZ2UgaXMgbWFkZSBpbiBhIGdpdmVuIGNvcHksIGl0IGlzIGlycmV2ZXJzaWJsZSBmb3IKdGhhdCBjb3B5LCBzbyB0aGUgb3JkaW5hcnkgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXBwbGllcyB0byBhbGwKc3Vic2VxdWVudCBjb3BpZXMgYW5kIGRlcml2YXRpdmUgd29ya3MgbWFkZSBmcm9tIHRoYXQgY29weS4KCiAgVGhpcyBvcHRpb24gaXMgdXNlZnVsIHdoZW4geW91IHdpc2ggdG8gY29weSBwYXJ0IG9mIHRoZSBjb2RlIG9mCnRoZSBMaWJyYXJ5IGludG8gYSBwcm9ncmFtIHRoYXQgaXMgbm90IGEgbGlicmFyeS4KCiAgNC4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IChvciBhIHBvcnRpb24gb3IKZGVyaXZhdGl2ZSBvZiBpdCwgdW5kZXIgU2VjdGlvbiAyKSBpbiBvYmplY3QgY29kZSBvciBleGVjdXRhYmxlIGZvcm0KdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zIDEgYW5kIDIgYWJvdmUgcHJvdmlkZWQgdGhhdCB5b3UgYWNjb21wYW55Cml0IHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcgbWFjaGluZS1yZWFkYWJsZSBzb3VyY2UgY29kZSwgd2hpY2gKbXVzdCBiZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBvbiBhCm1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZS4KCiAgSWYgZGlzdHJpYnV0aW9uIG9mIG9iamVjdCBjb2RlIGlzIG1hZGUgYnkgb2ZmZXJpbmcgYWNjZXNzIHRvIGNvcHkKZnJvbSBhIGRlc2lnbmF0ZWQgcGxhY2UsIHRoZW4gb2ZmZXJpbmcgZXF1aXZhbGVudCBhY2Nlc3MgdG8gY29weSB0aGUKc291cmNlIGNvZGUgZnJvbSB0aGUgc2FtZSBwbGFjZSBzYXRpc2ZpZXMgdGhlIHJlcXVpcmVtZW50IHRvCmRpc3RyaWJ1dGUgdGhlIHNvdXJjZSBjb2RlLCBldmVuIHRob3VnaCB0aGlyZCBwYXJ0aWVzIGFyZSBub3QKY29tcGVsbGVkIHRvIGNvcHkgdGhlIHNvdXJjZSBhbG9uZyB3aXRoIHRoZSBvYmplY3QgY29kZS4KCiAgNS4gQSBwcm9ncmFtIHRoYXQgY29udGFpbnMgbm8gZGVyaXZhdGl2ZSBvZiBhbnkgcG9ydGlvbiBvZiB0aGUKTGlicmFyeSwgYnV0IGlzIGRlc2lnbmVkIHRvIHdvcmsgd2l0aCB0aGUgTGlicmFyeSBieSBiZWluZyBjb21waWxlZCBvcgpsaW5rZWQgd2l0aCBpdCwgaXMgY2FsbGVkIGEgIndvcmsgdGhhdCB1c2VzIHRoZSBMaWJyYXJ5Ii4gIFN1Y2ggYQp3b3JrLCBpbiBpc29sYXRpb24sIGlzIG5vdCBhIGRlcml2YXRpdmUgd29yayBvZiB0aGUgTGlicmFyeSwgYW5kCnRoZXJlZm9yZSBmYWxscyBvdXRzaWRlIHRoZSBzY29wZSBvZiB0aGlzIExpY2Vuc2UuCgogIEhvd2V2ZXIsIGxpbmtpbmcgYSAid29yayB0aGF0IHVzZXMgdGhlIExpYnJhcnkiIHdpdGggdGhlIExpYnJhcnkKY3JlYXRlcyBhbiBleGVjdXRhYmxlIHRoYXQgaXMgYSBkZXJpdmF0aXZlIG9mIHRoZSBMaWJyYXJ5IChiZWNhdXNlIGl0CmNvbnRhaW5zIHBvcnRpb25zIG9mIHRoZSBMaWJyYXJ5KSwgcmF0aGVyIHRoYW4gYSAid29yayB0aGF0IHVzZXMgdGhlCmxpYnJhcnkiLiAgVGhlIGV4ZWN1dGFibGUgaXMgdGhlcmVmb3JlIGNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlLgpTZWN0aW9uIDYgc3RhdGVzIHRlcm1zIGZvciBkaXN0cmlidXRpb24gb2Ygc3VjaCBleGVjdXRhYmxlcy4KCiAgV2hlbiBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgTGlicmFyeSIgdXNlcyBtYXRlcmlhbCBmcm9tIGEgaGVhZGVyIGZpbGUKdGhhdCBpcyBwYXJ0IG9mIHRoZSBMaWJyYXJ5LCB0aGUgb2JqZWN0IGNvZGUgZm9yIHRoZSB3b3JrIG1heSBiZSBhCmRlcml2YXRpdmUgd29yayBvZiB0aGUgTGlicmFyeSBldmVuIHRob3VnaCB0aGUgc291cmNlIGNvZGUgaXMgbm90LgpXaGV0aGVyIHRoaXMgaXMgdHJ1ZSBpcyBlc3BlY2lhbGx5IHNpZ25pZmljYW50IGlmIHRoZSB3b3JrIGNhbiBiZQpsaW5rZWQgd2l0aG91dCB0aGUgTGlicmFyeSwgb3IgaWYgdGhlIHdvcmsgaXMgaXRzZWxmIGEgbGlicmFyeS4gIFRoZQp0aHJlc2hvbGQgZm9yIHRoaXMgdG8gYmUgdHJ1ZSBpcyBub3QgcHJlY2lzZWx5IGRlZmluZWQgYnkgbGF3LgoKICBJZiBzdWNoIGFuIG9iamVjdCBmaWxlIHVzZXMgb25seSBudW1lcmljYWwgcGFyYW1ldGVycywgZGF0YQpzdHJ1Y3R1cmUgbGF5b3V0cyBhbmQgYWNjZXNzb3JzLCBhbmQgc21hbGwgbWFjcm9zIGFuZCBzbWFsbCBpbmxpbmUKZnVuY3Rpb25zICh0ZW4gbGluZXMgb3IgbGVzcyBpbiBsZW5ndGgpLCB0aGVuIHRoZSB1c2Ugb2YgdGhlIG9iamVjdApmaWxlIGlzIHVucmVzdHJpY3RlZCwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGlzIGxlZ2FsbHkgYSBkZXJpdmF0aXZlCndvcmsuICAoRXhlY3V0YWJsZXMgY29udGFpbmluZyB0aGlzIG9iamVjdCBjb2RlIHBsdXMgcG9ydGlvbnMgb2YgdGhlCkxpYnJhcnkgd2lsbCBzdGlsbCBmYWxsIHVuZGVyIFNlY3Rpb24gNi4pCgogIE90aGVyd2lzZSwgaWYgdGhlIHdvcmsgaXMgYSBkZXJpdmF0aXZlIG9mIHRoZSBMaWJyYXJ5LCB5b3UgbWF5CmRpc3RyaWJ1dGUgdGhlIG9iamVjdCBjb2RlIGZvciB0aGUgd29yayB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbiA2LgpBbnkgZXhlY3V0YWJsZXMgY29udGFpbmluZyB0aGF0IHdvcmsgYWxzbyBmYWxsIHVuZGVyIFNlY3Rpb24gNiwKd2hldGhlciBvciBub3QgdGhleSBhcmUgbGlua2VkIGRpcmVjdGx5IHdpdGggdGhlIExpYnJhcnkgaXRzZWxmLgoMCiAgNi4gQXMgYW4gZXhjZXB0aW9uIHRvIHRoZSBTZWN0aW9ucyBhYm92ZSwgeW91IG1heSBhbHNvIGNvbWJpbmUgb3IKbGluayBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgTGlicmFyeSIgd2l0aCB0aGUgTGlicmFyeSB0byBwcm9kdWNlIGEKd29yayBjb250YWluaW5nIHBvcnRpb25zIG9mIHRoZSBMaWJyYXJ5LCBhbmQgZGlzdHJpYnV0ZSB0aGF0IHdvcmsKdW5kZXIgdGVybXMgb2YgeW91ciBjaG9pY2UsIHByb3ZpZGVkIHRoYXQgdGhlIHRlcm1zIHBlcm1pdAptb2RpZmljYXRpb24gb2YgdGhlIHdvcmsgZm9yIHRoZSBjdXN0b21lcidzIG93biB1c2UgYW5kIHJldmVyc2UKZW5naW5lZXJpbmcgZm9yIGRlYnVnZ2luZyBzdWNoIG1vZGlmaWNhdGlvbnMuCgogIFlvdSBtdXN0IGdpdmUgcHJvbWluZW50IG5vdGljZSB3aXRoIGVhY2ggY29weSBvZiB0aGUgd29yayB0aGF0IHRoZQpMaWJyYXJ5IGlzIHVzZWQgaW4gaXQgYW5kIHRoYXQgdGhlIExpYnJhcnkgYW5kIGl0cyB1c2UgYXJlIGNvdmVyZWQgYnkKdGhpcyBMaWNlbnNlLiAgWW91IG11c3Qgc3VwcGx5IGEgY29weSBvZiB0aGlzIExpY2Vuc2UuICBJZiB0aGUgd29yawpkdXJpbmcgZXhlY3V0aW9uIGRpc3BsYXlzIGNvcHlyaWdodCBub3RpY2VzLCB5b3UgbXVzdCBpbmNsdWRlIHRoZQpjb3B5cmlnaHQgbm90aWNlIGZvciB0aGUgTGlicmFyeSBhbW9uZyB0aGVtLCBhcyB3ZWxsIGFzIGEgcmVmZXJlbmNlCmRpcmVjdGluZyB0aGUgdXNlciB0byB0aGUgY29weSBvZiB0aGlzIExpY2Vuc2UuICBBbHNvLCB5b3UgbXVzdCBkbyBvbmUKb2YgdGhlc2UgdGhpbmdzOgoKICAgIGEpIEFjY29tcGFueSB0aGUgd29yayB3aXRoIHRoZSBjb21wbGV0ZSBjb3JyZXNwb25kaW5nCiAgICBtYWNoaW5lLXJlYWRhYmxlIHNvdXJjZSBjb2RlIGZvciB0aGUgTGlicmFyeSBpbmNsdWRpbmcgd2hhdGV2ZXIKICAgIGNoYW5nZXMgd2VyZSB1c2VkIGluIHRoZSB3b3JrICh3aGljaCBtdXN0IGJlIGRpc3RyaWJ1dGVkIHVuZGVyCiAgICBTZWN0aW9ucyAxIGFuZCAyIGFib3ZlKTsgYW5kLCBpZiB0aGUgd29yayBpcyBhbiBleGVjdXRhYmxlIGxpbmtlZAogICAgd2l0aCB0aGUgTGlicmFyeSwgd2l0aCB0aGUgY29tcGxldGUgbWFjaGluZS1yZWFkYWJsZSAid29yayB0aGF0CiAgICB1c2VzIHRoZSBMaWJyYXJ5IiwgYXMgb2JqZWN0IGNvZGUgYW5kL29yIHNvdXJjZSBjb2RlLCBzbyB0aGF0IHRoZQogICAgdXNlciBjYW4gbW9kaWZ5IHRoZSBMaWJyYXJ5IGFuZCB0aGVuIHJlbGluayB0byBwcm9kdWNlIGEgbW9kaWZpZWQKICAgIGV4ZWN1dGFibGUgY29udGFpbmluZyB0aGUgbW9kaWZpZWQgTGlicmFyeS4gIChJdCBpcyB1bmRlcnN0b29kCiAgICB0aGF0IHRoZSB1c2VyIHdobyBjaGFuZ2VzIHRoZSBjb250ZW50cyBvZiBkZWZpbml0aW9ucyBmaWxlcyBpbiB0aGUKICAgIExpYnJhcnkgd2lsbCBub3QgbmVjZXNzYXJpbHkgYmUgYWJsZSB0byByZWNvbXBpbGUgdGhlIGFwcGxpY2F0aW9uCiAgICB0byB1c2UgdGhlIG1vZGlmaWVkIGRlZmluaXRpb25zLikKCiAgICBiKSBVc2UgYSBzdWl0YWJsZSBzaGFyZWQgbGlicmFyeSBtZWNoYW5pc20gZm9yIGxpbmtpbmcgd2l0aCB0aGUKICAgIExpYnJhcnkuICBBIHN1aXRhYmxlIG1lY2hhbmlzbSBpcyBvbmUgdGhhdCAoMSkgdXNlcyBhdCBydW4gdGltZSBhCiAgICBjb3B5IG9mIHRoZSBsaWJyYXJ5IGFscmVhZHkgcHJlc2VudCBvbiB0aGUgdXNlcidzIGNvbXB1dGVyIHN5c3RlbSwKICAgIHJhdGhlciB0aGFuIGNvcHlpbmcgbGlicmFyeSBmdW5jdGlvbnMgaW50byB0aGUgZXhlY3V0YWJsZSwgYW5kICgyKQogICAgd2lsbCBvcGVyYXRlIHByb3Blcmx5IHdpdGggYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCBpZgogICAgdGhlIHVzZXIgaW5zdGFsbHMgb25lLCBhcyBsb25nIGFzIHRoZSBtb2RpZmllZCB2ZXJzaW9uIGlzCiAgICBpbnRlcmZhY2UtY29tcGF0aWJsZSB3aXRoIHRoZSB2ZXJzaW9uIHRoYXQgdGhlIHdvcmsgd2FzIG1hZGUgd2l0aC4KCiAgICBjKSBBY2NvbXBhbnkgdGhlIHdvcmsgd2l0aCBhIHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZvciBhdAogICAgbGVhc3QgdGhyZWUgeWVhcnMsIHRvIGdpdmUgdGhlIHNhbWUgdXNlciB0aGUgbWF0ZXJpYWxzCiAgICBzcGVjaWZpZWQgaW4gU3Vic2VjdGlvbiA2YSwgYWJvdmUsIGZvciBhIGNoYXJnZSBubyBtb3JlCiAgICB0aGFuIHRoZSBjb3N0IG9mIHBlcmZvcm1pbmcgdGhpcyBkaXN0cmlidXRpb24uCgogICAgZCkgSWYgZGlzdHJpYnV0aW9uIG9mIHRoZSB3b3JrIGlzIG1hZGUgYnkgb2ZmZXJpbmcgYWNjZXNzIHRvIGNvcHkKICAgIGZyb20gYSBkZXNpZ25hdGVkIHBsYWNlLCBvZmZlciBlcXVpdmFsZW50IGFjY2VzcyB0byBjb3B5IHRoZSBhYm92ZQogICAgc3BlY2lmaWVkIG1hdGVyaWFscyBmcm9tIHRoZSBzYW1lIHBsYWNlLgoKICAgIGUpIFZlcmlmeSB0aGF0IHRoZSB1c2VyIGhhcyBhbHJlYWR5IHJlY2VpdmVkIGEgY29weSBvZiB0aGVzZQogICAgbWF0ZXJpYWxzIG9yIHRoYXQgeW91IGhhdmUgYWxyZWFkeSBzZW50IHRoaXMgdXNlciBhIGNvcHkuCgogIEZvciBhbiBleGVjdXRhYmxlLCB0aGUgcmVxdWlyZWQgZm9ybSBvZiB0aGUgIndvcmsgdGhhdCB1c2VzIHRoZQpMaWJyYXJ5IiBtdXN0IGluY2x1ZGUgYW55IGRhdGEgYW5kIHV0aWxpdHkgcHJvZ3JhbXMgbmVlZGVkIGZvcgpyZXByb2R1Y2luZyB0aGUgZXhlY3V0YWJsZSBmcm9tIGl0LiAgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwKdGhlIG1hdGVyaWFscyB0byBiZSBkaXN0cmlidXRlZCBuZWVkIG5vdCBpbmNsdWRlIGFueXRoaW5nIHRoYXQgaXMKbm9ybWFsbHkgZGlzdHJpYnV0ZWQgKGluIGVpdGhlciBzb3VyY2Ugb3IgYmluYXJ5IGZvcm0pIHdpdGggdGhlIG1ham9yCmNvbXBvbmVudHMgKGNvbXBpbGVyLCBrZXJuZWwsIGFuZCBzbyBvbikgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0gb24Kd2hpY2ggdGhlIGV4ZWN1dGFibGUgcnVucywgdW5sZXNzIHRoYXQgY29tcG9uZW50IGl0c2VsZiBhY2NvbXBhbmllcwp0aGUgZXhlY3V0YWJsZS4KCiAgSXQgbWF5IGhhcHBlbiB0aGF0IHRoaXMgcmVxdWlyZW1lbnQgY29udHJhZGljdHMgdGhlIGxpY2Vuc2UKcmVzdHJpY3Rpb25zIG9mIG90aGVyIHByb3ByaWV0YXJ5IGxpYnJhcmllcyB0aGF0IGRvIG5vdCBub3JtYWxseQphY2NvbXBhbnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0uICBTdWNoIGEgY29udHJhZGljdGlvbiBtZWFucyB5b3UgY2Fubm90CnVzZSBib3RoIHRoZW0gYW5kIHRoZSBMaWJyYXJ5IHRvZ2V0aGVyIGluIGFuIGV4ZWN1dGFibGUgdGhhdCB5b3UKZGlzdHJpYnV0ZS4KDAogIDcuIFlvdSBtYXkgcGxhY2UgbGlicmFyeSBmYWNpbGl0aWVzIHRoYXQgYXJlIGEgd29yayBiYXNlZCBvbiB0aGUKTGlicmFyeSBzaWRlLWJ5LXNpZGUgaW4gYSBzaW5nbGUgbGlicmFyeSB0b2dldGhlciB3aXRoIG90aGVyIGxpYnJhcnkKZmFjaWxpdGllcyBub3QgY292ZXJlZCBieSB0aGlzIExpY2Vuc2UsIGFuZCBkaXN0cmlidXRlIHN1Y2ggYSBjb21iaW5lZApsaWJyYXJ5LCBwcm92aWRlZCB0aGF0IHRoZSBzZXBhcmF0ZSBkaXN0cmlidXRpb24gb2YgdGhlIHdvcmsgYmFzZWQgb24KdGhlIExpYnJhcnkgYW5kIG9mIHRoZSBvdGhlciBsaWJyYXJ5IGZhY2lsaXRpZXMgaXMgb3RoZXJ3aXNlCnBlcm1pdHRlZCwgYW5kIHByb3ZpZGVkIHRoYXQgeW91IGRvIHRoZXNlIHR3byB0aGluZ3M6CgogICAgYSkgQWNjb21wYW55IHRoZSBjb21iaW5lZCBsaWJyYXJ5IHdpdGggYSBjb3B5IG9mIHRoZSBzYW1lIHdvcmsKICAgIGJhc2VkIG9uIHRoZSBMaWJyYXJ5LCB1bmNvbWJpbmVkIHdpdGggYW55IG90aGVyIGxpYnJhcnkKICAgIGZhY2lsaXRpZXMuICBUaGlzIG11c3QgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQogICAgU2VjdGlvbnMgYWJvdmUuCgogICAgYikgR2l2ZSBwcm9taW5lbnQgbm90aWNlIHdpdGggdGhlIGNvbWJpbmVkIGxpYnJhcnkgb2YgdGhlIGZhY3QKICAgIHRoYXQgcGFydCBvZiBpdCBpcyBhIHdvcmsgYmFzZWQgb24gdGhlIExpYnJhcnksIGFuZCBleHBsYWluaW5nCiAgICB3aGVyZSB0byBmaW5kIHRoZSBhY2NvbXBhbnlpbmcgdW5jb21iaW5lZCBmb3JtIG9mIHRoZSBzYW1lIHdvcmsuCgogIDguIFlvdSBtYXkgbm90IGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSwgbGluayB3aXRoLCBvciBkaXN0cmlidXRlCnRoZSBMaWJyYXJ5IGV4Y2VwdCBhcyBleHByZXNzbHkgcHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQW55CmF0dGVtcHQgb3RoZXJ3aXNlIHRvIGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSwgbGluayB3aXRoLCBvcgpkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IGlzIHZvaWQsIGFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgdGVybWluYXRlIHlvdXIKcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZS4gIEhvd2V2ZXIsIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzLApvciByaWdodHMsIGZyb20geW91IHVuZGVyIHRoaXMgTGljZW5zZSB3aWxsIG5vdCBoYXZlIHRoZWlyIGxpY2Vuc2VzCnRlcm1pbmF0ZWQgc28gbG9uZyBhcyBzdWNoIHBhcnRpZXMgcmVtYWluIGluIGZ1bGwgY29tcGxpYW5jZS4KCiAgOS4gWW91IGFyZSBub3QgcmVxdWlyZWQgdG8gYWNjZXB0IHRoaXMgTGljZW5zZSwgc2luY2UgeW91IGhhdmUgbm90CnNpZ25lZCBpdC4gIEhvd2V2ZXIsIG5vdGhpbmcgZWxzZSBncmFudHMgeW91IHBlcm1pc3Npb24gdG8gbW9kaWZ5IG9yCmRpc3RyaWJ1dGUgdGhlIExpYnJhcnkgb3IgaXRzIGRlcml2YXRpdmUgd29ya3MuICBUaGVzZSBhY3Rpb25zIGFyZQpwcm9oaWJpdGVkIGJ5IGxhdyBpZiB5b3UgZG8gbm90IGFjY2VwdCB0aGlzIExpY2Vuc2UuICBUaGVyZWZvcmUsIGJ5Cm1vZGlmeWluZyBvciBkaXN0cmlidXRpbmcgdGhlIExpYnJhcnkgKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQpMaWJyYXJ5KSwgeW91IGluZGljYXRlIHlvdXIgYWNjZXB0YW5jZSBvZiB0aGlzIExpY2Vuc2UgdG8gZG8gc28sIGFuZAphbGwgaXRzIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpbmcgb3IgbW9kaWZ5aW5nCnRoZSBMaWJyYXJ5IG9yIHdvcmtzIGJhc2VkIG9uIGl0LgoKICAxMC4gRWFjaCB0aW1lIHlvdSByZWRpc3RyaWJ1dGUgdGhlIExpYnJhcnkgKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQpMaWJyYXJ5KSwgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5IHJlY2VpdmVzIGEgbGljZW5zZSBmcm9tIHRoZQpvcmlnaW5hbCBsaWNlbnNvciB0byBjb3B5LCBkaXN0cmlidXRlLCBsaW5rIHdpdGggb3IgbW9kaWZ5IHRoZSBMaWJyYXJ5CnN1YmplY3QgdG8gdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMuICBZb3UgbWF5IG5vdCBpbXBvc2UgYW55IGZ1cnRoZXIKcmVzdHJpY3Rpb25zIG9uIHRoZSByZWNpcGllbnRzJyBleGVyY2lzZSBvZiB0aGUgcmlnaHRzIGdyYW50ZWQgaGVyZWluLgpZb3UgYXJlIG5vdCByZXNwb25zaWJsZSBmb3IgZW5mb3JjaW5nIGNvbXBsaWFuY2UgYnkgdGhpcmQgcGFydGllcyB3aXRoCnRoaXMgTGljZW5zZS4KDAogIDExLiBJZiwgYXMgYSBjb25zZXF1ZW5jZSBvZiBhIGNvdXJ0IGp1ZGdtZW50IG9yIGFsbGVnYXRpb24gb2YgcGF0ZW50CmluZnJpbmdlbWVudCBvciBmb3IgYW55IG90aGVyIHJlYXNvbiAobm90IGxpbWl0ZWQgdG8gcGF0ZW50IGlzc3VlcyksCmNvbmRpdGlvbnMgYXJlIGltcG9zZWQgb24geW91ICh3aGV0aGVyIGJ5IGNvdXJ0IG9yZGVyLCBhZ3JlZW1lbnQgb3IKb3RoZXJ3aXNlKSB0aGF0IGNvbnRyYWRpY3QgdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLCB0aGV5IGRvIG5vdApleGN1c2UgeW91IGZyb20gdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLiAgSWYgeW91IGNhbm5vdApkaXN0cmlidXRlIHNvIGFzIHRvIHNhdGlzZnkgc2ltdWx0YW5lb3VzbHkgeW91ciBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzCkxpY2Vuc2UgYW5kIGFueSBvdGhlciBwZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5jZSB5b3UKbWF5IG5vdCBkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiBhIHBhdGVudApsaWNlbnNlIHdvdWxkIG5vdCBwZXJtaXQgcm95YWx0eS1mcmVlIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBMaWJyYXJ5IGJ5CmFsbCB0aG9zZSB3aG8gcmVjZWl2ZSBjb3BpZXMgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHlvdSwgdGhlbgp0aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCBpdCBhbmQgdGhpcyBMaWNlbnNlIHdvdWxkIGJlIHRvCnJlZnJhaW4gZW50aXJlbHkgZnJvbSBkaXN0cmlidXRpb24gb2YgdGhlIExpYnJhcnkuCgpJZiBhbnkgcG9ydGlvbiBvZiB0aGlzIHNlY3Rpb24gaXMgaGVsZCBpbnZhbGlkIG9yIHVuZW5mb3JjZWFibGUgdW5kZXIgYW55CnBhcnRpY3VsYXIgY2lyY3Vtc3RhbmNlLCB0aGUgYmFsYW5jZSBvZiB0aGUgc2VjdGlvbiBpcyBpbnRlbmRlZCB0byBhcHBseSwKYW5kIHRoZSBzZWN0aW9uIGFzIGEgd2hvbGUgaXMgaW50ZW5kZWQgdG8gYXBwbHkgaW4gb3RoZXIgY2lyY3Vtc3RhbmNlcy4KCkl0IGlzIG5vdCB0aGUgcHVycG9zZSBvZiB0aGlzIHNlY3Rpb24gdG8gaW5kdWNlIHlvdSB0byBpbmZyaW5nZSBhbnkKcGF0ZW50cyBvciBvdGhlciBwcm9wZXJ0eSByaWdodCBjbGFpbXMgb3IgdG8gY29udGVzdCB2YWxpZGl0eSBvZiBhbnkKc3VjaCBjbGFpbXM7IHRoaXMgc2VjdGlvbiBoYXMgdGhlIHNvbGUgcHVycG9zZSBvZiBwcm90ZWN0aW5nIHRoZQppbnRlZ3JpdHkgb2YgdGhlIGZyZWUgc29mdHdhcmUgZGlzdHJpYnV0aW9uIHN5c3RlbSB3aGljaCBpcwppbXBsZW1lbnRlZCBieSBwdWJsaWMgbGljZW5zZSBwcmFjdGljZXMuICBNYW55IHBlb3BsZSBoYXZlIG1hZGUKZ2VuZXJvdXMgY29udHJpYnV0aW9ucyB0byB0aGUgd2lkZSByYW5nZSBvZiBzb2Z0d2FyZSBkaXN0cmlidXRlZAp0aHJvdWdoIHRoYXQgc3lzdGVtIGluIHJlbGlhbmNlIG9uIGNvbnNpc3RlbnQgYXBwbGljYXRpb24gb2YgdGhhdApzeXN0ZW07IGl0IGlzIHVwIHRvIHRoZSBhdXRob3IvZG9ub3IgdG8gZGVjaWRlIGlmIGhlIG9yIHNoZSBpcyB3aWxsaW5nCnRvIGRpc3RyaWJ1dGUgc29mdHdhcmUgdGhyb3VnaCBhbnkgb3RoZXIgc3lzdGVtIGFuZCBhIGxpY2Vuc2VlIGNhbm5vdAppbXBvc2UgdGhhdCBjaG9pY2UuCgpUaGlzIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8gbWFrZSB0aG9yb3VnaGx5IGNsZWFyIHdoYXQgaXMgYmVsaWV2ZWQgdG8KYmUgYSBjb25zZXF1ZW5jZSBvZiB0aGUgcmVzdCBvZiB0aGlzIExpY2Vuc2UuCgogIDEyLiBJZiB0aGUgZGlzdHJpYnV0aW9uIGFuZC9vciB1c2Ugb2YgdGhlIExpYnJhcnkgaXMgcmVzdHJpY3RlZCBpbgpjZXJ0YWluIGNvdW50cmllcyBlaXRoZXIgYnkgcGF0ZW50cyBvciBieSBjb3B5cmlnaHRlZCBpbnRlcmZhY2VzLCB0aGUKb3JpZ2luYWwgY29weXJpZ2h0IGhvbGRlciB3aG8gcGxhY2VzIHRoZSBMaWJyYXJ5IHVuZGVyIHRoaXMgTGljZW5zZSBtYXkgYWRkCmFuIGV4cGxpY2l0IGdlb2dyYXBoaWNhbCBkaXN0cmlidXRpb24gbGltaXRhdGlvbiBleGNsdWRpbmcgdGhvc2UgY291bnRyaWVzLApzbyB0aGF0IGRpc3RyaWJ1dGlvbiBpcyBwZXJtaXR0ZWQgb25seSBpbiBvciBhbW9uZyBjb3VudHJpZXMgbm90IHRodXMKZXhjbHVkZWQuICBJbiBzdWNoIGNhc2UsIHRoaXMgTGljZW5zZSBpbmNvcnBvcmF0ZXMgdGhlIGxpbWl0YXRpb24gYXMgaWYKd3JpdHRlbiBpbiB0aGUgYm9keSBvZiB0aGlzIExpY2Vuc2UuCgogIDEzLiBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldwp2ZXJzaW9ucyBvZiB0aGUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuClN1Y2ggbmV3IHZlcnNpb25zIHdpbGwgYmUgc2ltaWxhciBpbiBzcGlyaXQgdG8gdGhlIHByZXNlbnQgdmVyc2lvbiwKYnV0IG1heSBkaWZmZXIgaW4gZGV0YWlsIHRvIGFkZHJlc3MgbmV3IHByb2JsZW1zIG9yIGNvbmNlcm5zLgoKRWFjaCB2ZXJzaW9uIGlzIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuICBJZiB0aGUgTGlicmFyeQpzcGVjaWZpZXMgYSB2ZXJzaW9uIG51bWJlciBvZiB0aGlzIExpY2Vuc2Ugd2hpY2ggYXBwbGllcyB0byBpdCBhbmQKImFueSBsYXRlciB2ZXJzaW9uIiwgeW91IGhhdmUgdGhlIG9wdGlvbiBvZiBmb2xsb3dpbmcgdGhlIHRlcm1zIGFuZApjb25kaXRpb25zIGVpdGhlciBvZiB0aGF0IHZlcnNpb24gb3Igb2YgYW55IGxhdGVyIHZlcnNpb24gcHVibGlzaGVkIGJ5CnRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uICBJZiB0aGUgTGlicmFyeSBkb2VzIG5vdCBzcGVjaWZ5IGEKbGljZW5zZSB2ZXJzaW9uIG51bWJlciwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQgYnkKdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KDAogIDE0LiBJZiB5b3Ugd2lzaCB0byBpbmNvcnBvcmF0ZSBwYXJ0cyBvZiB0aGUgTGlicmFyeSBpbnRvIG90aGVyIGZyZWUKcHJvZ3JhbXMgd2hvc2UgZGlzdHJpYnV0aW9uIGNvbmRpdGlvbnMgYXJlIGluY29tcGF0aWJsZSB3aXRoIHRoZXNlLAp3cml0ZSB0byB0aGUgYXV0aG9yIHRvIGFzayBmb3IgcGVybWlzc2lvbi4gIEZvciBzb2Z0d2FyZSB3aGljaCBpcwpjb3B5cmlnaHRlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3cml0ZSB0byB0aGUgRnJlZQpTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3ZSBzb21ldGltZXMgbWFrZSBleGNlcHRpb25zIGZvciB0aGlzLiAgT3VyCmRlY2lzaW9uIHdpbGwgYmUgZ3VpZGVkIGJ5IHRoZSB0d28gZ29hbHMgb2YgcHJlc2VydmluZyB0aGUgZnJlZSBzdGF0dXMKb2YgYWxsIGRlcml2YXRpdmVzIG9mIG91ciBmcmVlIHNvZnR3YXJlIGFuZCBvZiBwcm9tb3RpbmcgdGhlIHNoYXJpbmcKYW5kIHJldXNlIG9mIHNvZnR3YXJlIGdlbmVyYWxseS4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTyBXQVJSQU5UWQoKICAxNS4gQkVDQVVTRSBUSEUgTElCUkFSWSBJUyBMSUNFTlNFRCBGUkVFIE9GIENIQVJHRSwgVEhFUkUgSVMgTk8KV0FSUkFOVFkgRk9SIFRIRSBMSUJSQVJZLCBUTyBUSEUgRVhURU5UIFBFUk1JVFRFRCBCWSBBUFBMSUNBQkxFIExBVy4KRVhDRVBUIFdIRU4gT1RIRVJXSVNFIFNUQVRFRCBJTiBXUklUSU5HIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQvT1IKT1RIRVIgUEFSVElFUyBQUk9WSURFIFRIRSBMSUJSQVJZICJBUyBJUyIgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKS0lORCwgRUlUSEVSIEVYUFJFU1NFRCBPUiBJTVBMSUVELCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCklNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgpQVVJQT1NFLiAgVEhFIEVOVElSRSBSSVNLIEFTIFRPIFRIRSBRVUFMSVRZIEFORCBQRVJGT1JNQU5DRSBPRiBUSEUKTElCUkFSWSBJUyBXSVRIIFlPVS4gIFNIT1VMRCBUSEUgTElCUkFSWSBQUk9WRSBERUZFQ1RJVkUsIFlPVSBBU1NVTUUKVEhFIENPU1QgT0YgQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsIFJFUEFJUiBPUiBDT1JSRUNUSU9OLgoKICAxNi4gSU4gTk8gRVZFTlQgVU5MRVNTIFJFUVVJUkVEIEJZIEFQUExJQ0FCTEUgTEFXIE9SIEFHUkVFRCBUTyBJTgpXUklUSU5HIFdJTEwgQU5ZIENPUFlSSUdIVCBIT0xERVIsIE9SIEFOWSBPVEhFUiBQQVJUWSBXSE8gTUFZIE1PRElGWQpBTkQvT1IgUkVESVNUUklCVVRFIFRIRSBMSUJSQVJZIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVQpGT1IgREFNQUdFUywgSU5DTFVESU5HIEFOWSBHRU5FUkFMLCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SCkNPTlNFUVVFTlRJQUwgREFNQUdFUyBBUklTSU5HIE9VVCBPRiBUSEUgVVNFIE9SIElOQUJJTElUWSBUTyBVU0UgVEhFCkxJQlJBUlkgKElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gTE9TUyBPRiBEQVRBIE9SIERBVEEgQkVJTkcKUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJTkVEIEJZIFlPVSBPUiBUSElSRCBQQVJUSUVTIE9SIEEKRkFJTFVSRSBPRiBUSEUgTElCUkFSWSBUTyBPUEVSQVRFIFdJVEggQU5ZIE9USEVSIFNPRlRXQVJFKSwgRVZFTiBJRgpTVUNIIEhPTERFUiBPUiBPVEhFUiBQQVJUWSBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICkRBTUFHRVMuCgogICAgICAgICAgICAgICAgICAgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKDAogICAgICAgICAgIEhvdyB0byBBcHBseSBUaGVzZSBUZXJtcyB0byBZb3VyIE5ldyBMaWJyYXJpZXMKCiAgSWYgeW91IGRldmVsb3AgYSBuZXcgbGlicmFyeSwgYW5kIHlvdSB3YW50IGl0IHRvIGJlIG9mIHRoZSBncmVhdGVzdApwb3NzaWJsZSB1c2UgdG8gdGhlIHB1YmxpYywgd2UgcmVjb21tZW5kIG1ha2luZyBpdCBmcmVlIHNvZnR3YXJlIHRoYXQKZXZlcnlvbmUgY2FuIHJlZGlzdHJpYnV0ZSBhbmQgY2hhbmdlLiAgWW91IGNhbiBkbyBzbyBieSBwZXJtaXR0aW5nCnJlZGlzdHJpYnV0aW9uIHVuZGVyIHRoZXNlIHRlcm1zIChvciwgYWx0ZXJuYXRpdmVseSwgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQpvcmRpbmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKS4KCiAgVG8gYXBwbHkgdGhlc2UgdGVybXMsIGF0dGFjaCB0aGUgZm9sbG93aW5nIG5vdGljZXMgdG8gdGhlIGxpYnJhcnkuICBJdCBpcwpzYWZlc3QgdG8gYXR0YWNoIHRoZW0gdG8gdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGZpbGUgdG8gbW9zdCBlZmZlY3RpdmVseQpjb252ZXkgdGhlIGV4Y2x1c2lvbiBvZiB3YXJyYW50eTsgYW5kIGVhY2ggZmlsZSBzaG91bGQgaGF2ZSBhdCBsZWFzdCB0aGUKImNvcHlyaWdodCIgbGluZSBhbmQgYSBwb2ludGVyIHRvIHdoZXJlIHRoZSBmdWxsIG5vdGljZSBpcyBmb3VuZC4KCiAgICA8b25lIGxpbmUgdG8gZ2l2ZSB0aGUgbGlicmFyeSdzIG5hbWUgYW5kIGEgYnJpZWYgaWRlYSBvZiB3aGF0IGl0IGRvZXMuPgogICAgQ29weXJpZ2h0IChDKSA8eWVhcj4gIDxuYW1lIG9mIGF1dGhvcj4KCiAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgoKICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgoKICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQoKQWxzbyBhZGQgaW5mb3JtYXRpb24gb24gaG93IHRvIGNvbnRhY3QgeW91IGJ5IGVsZWN0cm9uaWMgYW5kIHBhcGVyIG1haWwuCgpZb3Ugc2hvdWxkIGFsc28gZ2V0IHlvdXIgZW1wbG95ZXIgKGlmIHlvdSB3b3JrIGFzIGEgcHJvZ3JhbW1lcikgb3IgeW91cgpzY2hvb2wsIGlmIGFueSwgdG8gc2lnbiBhICJjb3B5cmlnaHQgZGlzY2xhaW1lciIgZm9yIHRoZSBsaWJyYXJ5LCBpZgpuZWNlc3NhcnkuICBIZXJlIGlzIGEgc2FtcGxlOyBhbHRlciB0aGUgbmFtZXM6CgogIFlveW9keW5lLCBJbmMuLCBoZXJlYnkgZGlzY2xhaW1zIGFsbCBjb3B5cmlnaHQgaW50ZXJlc3QgaW4gdGhlCiAgbGlicmFyeSBgRnJvYicgKGEgbGlicmFyeSBmb3IgdHdlYWtpbmcga25vYnMpIHdyaXR0ZW4gYnkgSmFtZXMgUmFuZG9tIEhhY2tlci4KCiAgPHNpZ25hdHVyZSBvZiBUeSBDb29uPiwgMSBBcHJpbCAxOTkwCiAgVHkgQ29vbiwgUHJlc2lkZW50IG9mIFZpY2UKClRoYXQncyBhbGwgdGhlcmUgaXMgdG8gaXQhCg== + + + declared license of 'chardet' + LGPL + + + pkg:pypi/chardet@5.2.0 + + + https://chardet.readthedocs.io/ + from packaging metadata Project-URL: Documentation + + + https://github.com/chardet/chardet/issues + from packaging metadata Project-URL: Issue Tracker + + + https://github.com/chardet/chardet + from packaging metadata Project-URL: GitHub Project + + + https://github.com/chardet/chardet + from packaging metadata: Home-page + + + cryptography 43.0.1 @@ -417,40 +163,11 @@ SPDX-License-Identifier: BSD-2-Clause declared license file: AUTHORS - Stefan Kögl <stefan@skoegl.net> -Alexander Shorin <kxepal@gmail.com> -Christopher J. White <chris@grierwhite.com> - + U3RlZmFuIEvDtmdsIDxzdGVmYW5Ac2tvZWdsLm5ldD4KQWxleGFuZGVyIFNob3JpbiA8a3hlcGFsQGdtYWlsLmNvbT4KQ2hyaXN0b3BoZXIgSi4gV2hpdGUgPGNocmlzQGdyaWVyd2hpdGUuY29tPgo= declared license file: LICENSE.txt - Copyright (c) 2011 Stefan Kögl <stefan@skoegl.net> -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - + Q29weXJpZ2h0IChjKSAyMDExIFN0ZWZhbiBLw7ZnbCA8c3RlZmFuQHNrb2VnbC5uZXQ+CkFsbCByaWdodHMgcmVzZXJ2ZWQuCgpSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCmFyZSBtZXQ6CgoxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCjIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KMy4gVGhlIG5hbWUgb2YgdGhlIGF1dGhvciBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzCiAgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgoKVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IKSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUwpPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELgpJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsCklOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVApOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCkRBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQpUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCihJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgpUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgoK declared license of 'jsonpointer' @@ -475,458 +192,23 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. declared license file: AUTHORS.rst - The following organizations or individuals have contributed to this code: - -- Ayan Sinha Mahapatra @AyanSinhaMahapatra -- Carmen Bianca Bakker @carmenbianca -- Chin-Yeung Li @chinyeungli -- Dennis Clark @DennisClark -- John Horan @johnmhoran -- Jono Yang @JonoYang -- Max Mehl @mxmehl -- nexB Inc. @nexB -- Peter Kolbus @pkolbus -- Philippe Ombredanne @pombredanne -- Sebastian Schuberth @sschuberth -- Steven Esser @majurg -- Thomas Druez @tdruez - + VGhlIGZvbGxvd2luZyBvcmdhbml6YXRpb25zIG9yIGluZGl2aWR1YWxzIGhhdmUgY29udHJpYnV0ZWQgdG8gdGhpcyBjb2RlOgoKLSBBeWFuIFNpbmhhIE1haGFwYXRyYSBAQXlhblNpbmhhTWFoYXBhdHJhCi0gQ2FybWVuIEJpYW5jYSBCYWtrZXIgQGNhcm1lbmJpYW5jYQotIENoaW4tWWV1bmcgTGkgQGNoaW55ZXVuZ2xpCi0gRGVubmlzIENsYXJrIEBEZW5uaXNDbGFyawotIEpvaG4gSG9yYW4gQGpvaG5taG9yYW4KLSBKb25vIFlhbmcgQEpvbm9ZYW5nCi0gTWF4IE1laGwgQG14bWVobAotIG5leEIgSW5jLiBAbmV4QgotIFBldGVyIEtvbGJ1cyBAcGtvbGJ1cwotIFBoaWxpcHBlIE9tYnJlZGFubmUgQHBvbWJyZWRhbm5lCi0gU2ViYXN0aWFuIFNjaHViZXJ0aCBAc3NjaHViZXJ0aAotIFN0ZXZlbiBFc3NlciBAbWFqdXJnCi0gVGhvbWFzIERydWV6IEB0ZHJ1ZXoK declared license file: CHANGELOG.rst - Changelog -========= - -v30.3.0 - 2024-03-18 --------------------- - -This is a minor release without API changes: - -- Use latest skeleton -- Update license list to latest ScanCode and SPDX 3.23 -- Drop support for Python 3.7 - -v30.2.0 - 2023-11-29 --------------------- - -This is a minor release without API changes: - -- Use latest skeleton -- Update license list to latest ScanCode and SPDX 3.22 -- Add Python 3.12 support in CI - - -v30.1.1 - 2023-01-16 ----------------------- - -This is a minor dot release without API changes - -- Use latest skeleton -- Update license list to latest ScanCode and SPDX 3.20 - - -v30.1.0 - 2023-01-16 ----------------------- - -This is a minor release without API changes - -- Use latest skeleton (and updated configure script) -- Update license list to latest ScanCode and SPDX 3.19 -- Use correct syntax for python_require -- Drop using Travis and Appveyor -- Drop support for Python 3.7 and add Python 3.11 in CI - - -v30.0.0 - 2022-05-10 ----------------------- - -This is a minor release with API changes - -- Use latest skeleton (and updated configure script) -- Drop using calver -- Improve error checking when combining licenses - - - -v21.6.14 - 2021-06-14 ----------------------- - -Added -~~~~~ - -- Switch to calver for package versioning to better convey the currency of the - bundled data. - -- Include https://scancode-licensedb.aboutcode.org/ licenses list with - ScanCode (v21.6.7) and SPDX licenses (v3.13) keys. Add new functions to - create Licensing using these licenses as LicenseSymbol. - -- Add new License.dedup() method to deduplicate and simplify license expressions - without over simplifying. - -- Add new License.validate() method to return a new ExpressionInfo object with - details on a license expression validation. - - -Changed -~~~~~~~ -- Drop support for Python 2. -- Adopt the project skeleton from https://github.com/nexB/skeleton - and its new configure script - - -v1.2 - 2019-11-14 ------------------- -Added -~~~~~ -- Add ability to render WITH expression wrapped in parenthesis - -Fixes -~~~~~ -- Fix anomalous backslashes in strings - -Changed -~~~~~~~ -- Update the thirdparty directory structure. - - -v1.0 - 2019-10-16 ------------------- -Added -~~~~~ -- New version of boolean.py library -- Add ability to leave license expressions unsorted when simplifying - -Changed -~~~~~~~ -- updated travis CI settings - - -v0.999 - 2019-04-29 --------------------- -- Initial release -- license-expression is small utility library to parse, compare and - simplify and normalize license expressions. - - + Q2hhbmdlbG9nCj09PT09PT09PQoKdjMwLjMuMCAtIDIwMjQtMDMtMTgKLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRoaXMgaXMgYSBtaW5vciByZWxlYXNlIHdpdGhvdXQgQVBJIGNoYW5nZXM6CgotIFVzZSBsYXRlc3Qgc2tlbGV0b24KLSBVcGRhdGUgbGljZW5zZSBsaXN0IHRvIGxhdGVzdCBTY2FuQ29kZSBhbmQgU1BEWCAzLjIzCi0gRHJvcCBzdXBwb3J0IGZvciBQeXRob24gMy43Cgp2MzAuMi4wIC0gMjAyMy0xMS0yOQotLS0tLS0tLS0tLS0tLS0tLS0tLQoKVGhpcyBpcyBhIG1pbm9yIHJlbGVhc2Ugd2l0aG91dCBBUEkgY2hhbmdlczoKCi0gVXNlIGxhdGVzdCBza2VsZXRvbgotIFVwZGF0ZSBsaWNlbnNlIGxpc3QgdG8gbGF0ZXN0IFNjYW5Db2RlIGFuZCBTUERYIDMuMjIKLSBBZGQgUHl0aG9uIDMuMTIgc3VwcG9ydCBpbiBDSQoKCnYzMC4xLjEgLSAyMDIzLTAxLTE2Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRoaXMgaXMgYSBtaW5vciBkb3QgcmVsZWFzZSB3aXRob3V0IEFQSSBjaGFuZ2VzCgotIFVzZSBsYXRlc3Qgc2tlbGV0b24KLSBVcGRhdGUgbGljZW5zZSBsaXN0IHRvIGxhdGVzdCBTY2FuQ29kZSBhbmQgU1BEWCAzLjIwCgoKdjMwLjEuMCAtIDIwMjMtMDEtMTYKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKVGhpcyBpcyBhIG1pbm9yIHJlbGVhc2Ugd2l0aG91dCBBUEkgY2hhbmdlcwoKLSBVc2UgbGF0ZXN0IHNrZWxldG9uIChhbmQgdXBkYXRlZCBjb25maWd1cmUgc2NyaXB0KQotIFVwZGF0ZSBsaWNlbnNlIGxpc3QgdG8gbGF0ZXN0IFNjYW5Db2RlIGFuZCBTUERYIDMuMTkKLSBVc2UgY29ycmVjdCBzeW50YXggZm9yIHB5dGhvbl9yZXF1aXJlCi0gRHJvcCB1c2luZyBUcmF2aXMgYW5kIEFwcHZleW9yCi0gRHJvcCBzdXBwb3J0IGZvciBQeXRob24gMy43IGFuZCBhZGQgUHl0aG9uIDMuMTEgaW4gQ0kKCgp2MzAuMC4wIC0gMjAyMi0wNS0xMAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpUaGlzIGlzIGEgbWlub3IgcmVsZWFzZSB3aXRoIEFQSSBjaGFuZ2VzCgotIFVzZSBsYXRlc3Qgc2tlbGV0b24gKGFuZCB1cGRhdGVkIGNvbmZpZ3VyZSBzY3JpcHQpCi0gRHJvcCB1c2luZyBjYWx2ZXIKLSBJbXByb3ZlIGVycm9yIGNoZWNraW5nIHdoZW4gY29tYmluaW5nIGxpY2Vuc2VzCgoKCnYyMS42LjE0IC0gMjAyMS0wNi0xNAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpBZGRlZAp+fn5+fgoKLSBTd2l0Y2ggdG8gY2FsdmVyIGZvciBwYWNrYWdlIHZlcnNpb25pbmcgdG8gYmV0dGVyIGNvbnZleSB0aGUgY3VycmVuY3kgb2YgdGhlCiAgYnVuZGxlZCBkYXRhLgoKLSBJbmNsdWRlIGh0dHBzOi8vc2NhbmNvZGUtbGljZW5zZWRiLmFib3V0Y29kZS5vcmcvIGxpY2Vuc2VzIGxpc3Qgd2l0aAogIFNjYW5Db2RlICh2MjEuNi43KSBhbmQgU1BEWCBsaWNlbnNlcyAodjMuMTMpIGtleXMuIEFkZCBuZXcgZnVuY3Rpb25zIHRvCiAgY3JlYXRlIExpY2Vuc2luZyB1c2luZyB0aGVzZSBsaWNlbnNlcyBhcyBMaWNlbnNlU3ltYm9sLgoKLSBBZGQgbmV3IExpY2Vuc2UuZGVkdXAoKSBtZXRob2QgdG8gZGVkdXBsaWNhdGUgYW5kIHNpbXBsaWZ5IGxpY2Vuc2UgZXhwcmVzc2lvbnMKICB3aXRob3V0IG92ZXIgc2ltcGxpZnlpbmcuCgotIEFkZCBuZXcgTGljZW5zZS52YWxpZGF0ZSgpIG1ldGhvZCB0byByZXR1cm4gYSBuZXcgRXhwcmVzc2lvbkluZm8gb2JqZWN0IHdpdGgKICBkZXRhaWxzIG9uIGEgbGljZW5zZSBleHByZXNzaW9uIHZhbGlkYXRpb24uCgoKQ2hhbmdlZAp+fn5+fn5+Ci0gRHJvcCBzdXBwb3J0IGZvciBQeXRob24gMi4KLSBBZG9wdCB0aGUgcHJvamVjdCBza2VsZXRvbiBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9uZXhCL3NrZWxldG9uCiAgYW5kIGl0cyBuZXcgY29uZmlndXJlIHNjcmlwdAoKCnYxLjIgLSAyMDE5LTExLTE0Ci0tLS0tLS0tLS0tLS0tLS0tLQpBZGRlZAp+fn5+fgotIEFkZCBhYmlsaXR5IHRvIHJlbmRlciBXSVRIIGV4cHJlc3Npb24gd3JhcHBlZCBpbiBwYXJlbnRoZXNpcwoKRml4ZXMKfn5+fn4KLSBGaXggYW5vbWFsb3VzIGJhY2tzbGFzaGVzIGluIHN0cmluZ3MKCkNoYW5nZWQKfn5+fn5+fgotIFVwZGF0ZSB0aGUgdGhpcmRwYXJ0eSBkaXJlY3Rvcnkgc3RydWN0dXJlLgoKCnYxLjAgLSAyMDE5LTEwLTE2Ci0tLS0tLS0tLS0tLS0tLS0tLQpBZGRlZAp+fn5+fgotIE5ldyB2ZXJzaW9uIG9mIGJvb2xlYW4ucHkgbGlicmFyeQotIEFkZCBhYmlsaXR5IHRvIGxlYXZlIGxpY2Vuc2UgZXhwcmVzc2lvbnMgdW5zb3J0ZWQgd2hlbiBzaW1wbGlmeWluZwoKQ2hhbmdlZAp+fn5+fn5+Ci0gdXBkYXRlZCB0cmF2aXMgQ0kgc2V0dGluZ3MKCgp2MC45OTkgLSAyMDE5LTA0LTI5Ci0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gSW5pdGlhbCByZWxlYXNlCi0gbGljZW5zZS1leHByZXNzaW9uIGlzIHNtYWxsIHV0aWxpdHkgbGlicmFyeSB0byBwYXJzZSwgY29tcGFyZSBhbmQKICBzaW1wbGlmeSBhbmQgbm9ybWFsaXplIGxpY2Vuc2UgZXhwcmVzc2lvbnMuCgo= declared license file: CODE_OF_CONDUCT.rst - Contributor Covenant Code of Conduct -==================================== - -Our Pledge ----------- - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our -project and our community a harassment-free experience for everyone, -regardless of age, body size, disability, ethnicity, gender identity and -expression, level of experience, education, socio-economic status, -nationality, personal appearance, race, religion, or sexual identity and -orientation. - -Our Standards -------------- - -Examples of behavior that contributes to creating a positive environment -include: - -- Using welcoming and inclusive language -- Being respectful of differing viewpoints and experiences -- Gracefully accepting constructive criticism -- Focusing on what is best for the community -- Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -- The use of sexualized language or imagery and unwelcome sexual - attention or advances -- Trolling, insulting/derogatory comments, and personal or political - attacks -- Public or private harassment -- Publishing others’ private information, such as a physical or - electronic address, without explicit permission -- Other conduct which could reasonably be considered inappropriate in a - professional setting - -Our Responsibilities --------------------- - -Project maintainers are responsible for clarifying the standards of -acceptable behavior and are expected to take appropriate and fair -corrective action in response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, -or reject comments, commits, code, wiki edits, issues, and other -contributions that are not aligned to this Code of Conduct, or to ban -temporarily or permanently any contributor for other behaviors that they -deem inappropriate, threatening, offensive, or harmful. - -Scope ------ - -This Code of Conduct applies both within project spaces and in public -spaces when an individual is representing the project or its community. -Examples of representing a project or community include using an -official project e-mail address, posting via an official social media -account, or acting as an appointed representative at an online or -offline event. Representation of a project may be further defined and -clarified by project maintainers. - -Enforcement ------------ - -Instances of abusive, harassing, or otherwise unacceptable behavior may -be reported by contacting the project team at pombredanne@gmail.com -or on the Gitter chat channel at https://gitter.im/aboutcode-org/discuss . -All complaints will be reviewed and investigated and will result in a -response that is deemed necessary and appropriate to the circumstances. -The project team is obligated to maintain confidentiality with regard to -the reporter of an incident. Further details of specific enforcement -policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in -good faith may face temporary or permanent repercussions as determined -by other members of the project’s leadership. - -Attribution ------------ - -This Code of Conduct is adapted from the `Contributor Covenant`_ , -version 1.4, available at -https://www.contributor-covenant.org/version/1/4/code-of-conduct.html - -.. _Contributor Covenant: https://www.contributor-covenant.org - + Q29udHJpYnV0b3IgQ292ZW5hbnQgQ29kZSBvZiBDb25kdWN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKT3VyIFBsZWRnZQotLS0tLS0tLS0tCgpJbiB0aGUgaW50ZXJlc3Qgb2YgZm9zdGVyaW5nIGFuIG9wZW4gYW5kIHdlbGNvbWluZyBlbnZpcm9ubWVudCwgd2UgYXMKY29udHJpYnV0b3JzIGFuZCBtYWludGFpbmVycyBwbGVkZ2UgdG8gbWFraW5nIHBhcnRpY2lwYXRpb24gaW4gb3VyCnByb2plY3QgYW5kIG91ciBjb21tdW5pdHkgYSBoYXJhc3NtZW50LWZyZWUgZXhwZXJpZW5jZSBmb3IgZXZlcnlvbmUsCnJlZ2FyZGxlc3Mgb2YgYWdlLCBib2R5IHNpemUsIGRpc2FiaWxpdHksIGV0aG5pY2l0eSwgZ2VuZGVyIGlkZW50aXR5IGFuZApleHByZXNzaW9uLCBsZXZlbCBvZiBleHBlcmllbmNlLCBlZHVjYXRpb24sIHNvY2lvLWVjb25vbWljIHN0YXR1cywKbmF0aW9uYWxpdHksIHBlcnNvbmFsIGFwcGVhcmFuY2UsIHJhY2UsIHJlbGlnaW9uLCBvciBzZXh1YWwgaWRlbnRpdHkgYW5kCm9yaWVudGF0aW9uLgoKT3VyIFN0YW5kYXJkcwotLS0tLS0tLS0tLS0tCgpFeGFtcGxlcyBvZiBiZWhhdmlvciB0aGF0IGNvbnRyaWJ1dGVzIHRvIGNyZWF0aW5nIGEgcG9zaXRpdmUgZW52aXJvbm1lbnQKaW5jbHVkZToKCi0gIFVzaW5nIHdlbGNvbWluZyBhbmQgaW5jbHVzaXZlIGxhbmd1YWdlCi0gIEJlaW5nIHJlc3BlY3RmdWwgb2YgZGlmZmVyaW5nIHZpZXdwb2ludHMgYW5kIGV4cGVyaWVuY2VzCi0gIEdyYWNlZnVsbHkgYWNjZXB0aW5nIGNvbnN0cnVjdGl2ZSBjcml0aWNpc20KLSAgRm9jdXNpbmcgb24gd2hhdCBpcyBiZXN0IGZvciB0aGUgY29tbXVuaXR5Ci0gIFNob3dpbmcgZW1wYXRoeSB0b3dhcmRzIG90aGVyIGNvbW11bml0eSBtZW1iZXJzCgpFeGFtcGxlcyBvZiB1bmFjY2VwdGFibGUgYmVoYXZpb3IgYnkgcGFydGljaXBhbnRzIGluY2x1ZGU6CgotICBUaGUgdXNlIG9mIHNleHVhbGl6ZWQgbGFuZ3VhZ2Ugb3IgaW1hZ2VyeSBhbmQgdW53ZWxjb21lIHNleHVhbAogICBhdHRlbnRpb24gb3IgYWR2YW5jZXMKLSAgVHJvbGxpbmcsIGluc3VsdGluZy9kZXJvZ2F0b3J5IGNvbW1lbnRzLCBhbmQgcGVyc29uYWwgb3IgcG9saXRpY2FsCiAgIGF0dGFja3MKLSAgUHVibGljIG9yIHByaXZhdGUgaGFyYXNzbWVudAotICBQdWJsaXNoaW5nIG90aGVyc+KAmSBwcml2YXRlIGluZm9ybWF0aW9uLCBzdWNoIGFzIGEgcGh5c2ljYWwgb3IKICAgZWxlY3Ryb25pYyBhZGRyZXNzLCB3aXRob3V0IGV4cGxpY2l0IHBlcm1pc3Npb24KLSAgT3RoZXIgY29uZHVjdCB3aGljaCBjb3VsZCByZWFzb25hYmx5IGJlIGNvbnNpZGVyZWQgaW5hcHByb3ByaWF0ZSBpbiBhCiAgIHByb2Zlc3Npb25hbCBzZXR0aW5nCgpPdXIgUmVzcG9uc2liaWxpdGllcwotLS0tLS0tLS0tLS0tLS0tLS0tLQoKUHJvamVjdCBtYWludGFpbmVycyBhcmUgcmVzcG9uc2libGUgZm9yIGNsYXJpZnlpbmcgdGhlIHN0YW5kYXJkcyBvZgphY2NlcHRhYmxlIGJlaGF2aW9yIGFuZCBhcmUgZXhwZWN0ZWQgdG8gdGFrZSBhcHByb3ByaWF0ZSBhbmQgZmFpcgpjb3JyZWN0aXZlIGFjdGlvbiBpbiByZXNwb25zZSB0byBhbnkgaW5zdGFuY2VzIG9mIHVuYWNjZXB0YWJsZSBiZWhhdmlvci4KClByb2plY3QgbWFpbnRhaW5lcnMgaGF2ZSB0aGUgcmlnaHQgYW5kIHJlc3BvbnNpYmlsaXR5IHRvIHJlbW92ZSwgZWRpdCwKb3IgcmVqZWN0IGNvbW1lbnRzLCBjb21taXRzLCBjb2RlLCB3aWtpIGVkaXRzLCBpc3N1ZXMsIGFuZCBvdGhlcgpjb250cmlidXRpb25zIHRoYXQgYXJlIG5vdCBhbGlnbmVkIHRvIHRoaXMgQ29kZSBvZiBDb25kdWN0LCBvciB0byBiYW4KdGVtcG9yYXJpbHkgb3IgcGVybWFuZW50bHkgYW55IGNvbnRyaWJ1dG9yIGZvciBvdGhlciBiZWhhdmlvcnMgdGhhdCB0aGV5CmRlZW0gaW5hcHByb3ByaWF0ZSwgdGhyZWF0ZW5pbmcsIG9mZmVuc2l2ZSwgb3IgaGFybWZ1bC4KClNjb3BlCi0tLS0tCgpUaGlzIENvZGUgb2YgQ29uZHVjdCBhcHBsaWVzIGJvdGggd2l0aGluIHByb2plY3Qgc3BhY2VzIGFuZCBpbiBwdWJsaWMKc3BhY2VzIHdoZW4gYW4gaW5kaXZpZHVhbCBpcyByZXByZXNlbnRpbmcgdGhlIHByb2plY3Qgb3IgaXRzIGNvbW11bml0eS4KRXhhbXBsZXMgb2YgcmVwcmVzZW50aW5nIGEgcHJvamVjdCBvciBjb21tdW5pdHkgaW5jbHVkZSB1c2luZyBhbgpvZmZpY2lhbCBwcm9qZWN0IGUtbWFpbCBhZGRyZXNzLCBwb3N0aW5nIHZpYSBhbiBvZmZpY2lhbCBzb2NpYWwgbWVkaWEKYWNjb3VudCwgb3IgYWN0aW5nIGFzIGFuIGFwcG9pbnRlZCByZXByZXNlbnRhdGl2ZSBhdCBhbiBvbmxpbmUgb3IKb2ZmbGluZSBldmVudC4gUmVwcmVzZW50YXRpb24gb2YgYSBwcm9qZWN0IG1heSBiZSBmdXJ0aGVyIGRlZmluZWQgYW5kCmNsYXJpZmllZCBieSBwcm9qZWN0IG1haW50YWluZXJzLgoKRW5mb3JjZW1lbnQKLS0tLS0tLS0tLS0KCkluc3RhbmNlcyBvZiBhYnVzaXZlLCBoYXJhc3NpbmcsIG9yIG90aGVyd2lzZSB1bmFjY2VwdGFibGUgYmVoYXZpb3IgbWF5CmJlIHJlcG9ydGVkIGJ5IGNvbnRhY3RpbmcgdGhlIHByb2plY3QgdGVhbSBhdCBwb21icmVkYW5uZUBnbWFpbC5jb20Kb3Igb24gdGhlIEdpdHRlciBjaGF0IGNoYW5uZWwgYXQgaHR0cHM6Ly9naXR0ZXIuaW0vYWJvdXRjb2RlLW9yZy9kaXNjdXNzIC4KQWxsIGNvbXBsYWludHMgd2lsbCBiZSByZXZpZXdlZCBhbmQgaW52ZXN0aWdhdGVkIGFuZCB3aWxsIHJlc3VsdCBpbiBhCnJlc3BvbnNlIHRoYXQgaXMgZGVlbWVkIG5lY2Vzc2FyeSBhbmQgYXBwcm9wcmlhdGUgdG8gdGhlIGNpcmN1bXN0YW5jZXMuClRoZSBwcm9qZWN0IHRlYW0gaXMgb2JsaWdhdGVkIHRvIG1haW50YWluIGNvbmZpZGVudGlhbGl0eSB3aXRoIHJlZ2FyZCB0bwp0aGUgcmVwb3J0ZXIgb2YgYW4gaW5jaWRlbnQuIEZ1cnRoZXIgZGV0YWlscyBvZiBzcGVjaWZpYyBlbmZvcmNlbWVudApwb2xpY2llcyBtYXkgYmUgcG9zdGVkIHNlcGFyYXRlbHkuCgpQcm9qZWN0IG1haW50YWluZXJzIHdobyBkbyBub3QgZm9sbG93IG9yIGVuZm9yY2UgdGhlIENvZGUgb2YgQ29uZHVjdCBpbgpnb29kIGZhaXRoIG1heSBmYWNlIHRlbXBvcmFyeSBvciBwZXJtYW5lbnQgcmVwZXJjdXNzaW9ucyBhcyBkZXRlcm1pbmVkCmJ5IG90aGVyIG1lbWJlcnMgb2YgdGhlIHByb2plY3TigJlzIGxlYWRlcnNoaXAuCgpBdHRyaWJ1dGlvbgotLS0tLS0tLS0tLQoKVGhpcyBDb2RlIG9mIENvbmR1Y3QgaXMgYWRhcHRlZCBmcm9tIHRoZSBgQ29udHJpYnV0b3IgQ292ZW5hbnRgXyAsCnZlcnNpb24gMS40LCBhdmFpbGFibGUgYXQKaHR0cHM6Ly93d3cuY29udHJpYnV0b3ItY292ZW5hbnQub3JnL3ZlcnNpb24vMS80L2NvZGUtb2YtY29uZHVjdC5odG1sCgouLiBfQ29udHJpYnV0b3IgQ292ZW5hbnQ6IGh0dHBzOi8vd3d3LmNvbnRyaWJ1dG9yLWNvdmVuYW50Lm9yZwo= declared license file: NOTICE - # -# Copyright (c) nexB Inc. and others. -# SPDX-License-Identifier: Apache-2.0 -# -# Visit https://aboutcode.org and https://github.com/nexB/license-expression -# for support and download. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - + IwojIENvcHlyaWdodCAoYykgbmV4QiBJbmMuIGFuZCBvdGhlcnMuCiMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKIwojIFZpc2l0IGh0dHBzOi8vYWJvdXRjb2RlLm9yZyBhbmQgaHR0cHM6Ly9naXRodWIuY29tL25leEIvbGljZW5zZS1leHByZXNzaW9uCiMgZm9yIHN1cHBvcnQgYW5kIGRvd25sb2FkLgojCiMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgojIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAojCiMgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgojCg== declared license file: apache-2.0.LICENSE - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBhY2hlIExpY2Vuc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAyLjAsIEphbnVhcnkgMjAwNAogICAgICAgICAgICAgICAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvCgogICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgVVNFLCBSRVBST0RVQ1RJT04sIEFORCBESVNUUklCVVRJT04KCiAgIDEuIERlZmluaXRpb25zLgoKICAgICAgIkxpY2Vuc2UiIHNoYWxsIG1lYW4gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciB1c2UsIHJlcHJvZHVjdGlvbiwKICAgICAgYW5kIGRpc3RyaWJ1dGlvbiBhcyBkZWZpbmVkIGJ5IFNlY3Rpb25zIDEgdGhyb3VnaCA5IG9mIHRoaXMgZG9jdW1lbnQuCgogICAgICAiTGljZW5zb3IiIHNoYWxsIG1lYW4gdGhlIGNvcHlyaWdodCBvd25lciBvciBlbnRpdHkgYXV0aG9yaXplZCBieQogICAgICB0aGUgY29weXJpZ2h0IG93bmVyIHRoYXQgaXMgZ3JhbnRpbmcgdGhlIExpY2Vuc2UuCgogICAgICAiTGVnYWwgRW50aXR5IiBzaGFsbCBtZWFuIHRoZSB1bmlvbiBvZiB0aGUgYWN0aW5nIGVudGl0eSBhbmQgYWxsCiAgICAgIG90aGVyIGVudGl0aWVzIHRoYXQgY29udHJvbCwgYXJlIGNvbnRyb2xsZWQgYnksIG9yIGFyZSB1bmRlciBjb21tb24KICAgICAgY29udHJvbCB3aXRoIHRoYXQgZW50aXR5LiBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwKICAgICAgImNvbnRyb2wiIG1lYW5zIChpKSB0aGUgcG93ZXIsIGRpcmVjdCBvciBpbmRpcmVjdCwgdG8gY2F1c2UgdGhlCiAgICAgIGRpcmVjdGlvbiBvciBtYW5hZ2VtZW50IG9mIHN1Y2ggZW50aXR5LCB3aGV0aGVyIGJ5IGNvbnRyYWN0IG9yCiAgICAgIG90aGVyd2lzZSwgb3IgKGlpKSBvd25lcnNoaXAgb2YgZmlmdHkgcGVyY2VudCAoNTAlKSBvciBtb3JlIG9mIHRoZQogICAgICBvdXRzdGFuZGluZyBzaGFyZXMsIG9yIChpaWkpIGJlbmVmaWNpYWwgb3duZXJzaGlwIG9mIHN1Y2ggZW50aXR5LgoKICAgICAgIllvdSIgKG9yICJZb3VyIikgc2hhbGwgbWVhbiBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eQogICAgICBleGVyY2lzaW5nIHBlcm1pc3Npb25zIGdyYW50ZWQgYnkgdGhpcyBMaWNlbnNlLgoKICAgICAgIlNvdXJjZSIgZm9ybSBzaGFsbCBtZWFuIHRoZSBwcmVmZXJyZWQgZm9ybSBmb3IgbWFraW5nIG1vZGlmaWNhdGlvbnMsCiAgICAgIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gc29mdHdhcmUgc291cmNlIGNvZGUsIGRvY3VtZW50YXRpb24KICAgICAgc291cmNlLCBhbmQgY29uZmlndXJhdGlvbiBmaWxlcy4KCiAgICAgICJPYmplY3QiIGZvcm0gc2hhbGwgbWVhbiBhbnkgZm9ybSByZXN1bHRpbmcgZnJvbSBtZWNoYW5pY2FsCiAgICAgIHRyYW5zZm9ybWF0aW9uIG9yIHRyYW5zbGF0aW9uIG9mIGEgU291cmNlIGZvcm0sIGluY2x1ZGluZyBidXQKICAgICAgbm90IGxpbWl0ZWQgdG8gY29tcGlsZWQgb2JqZWN0IGNvZGUsIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uLAogICAgICBhbmQgY29udmVyc2lvbnMgdG8gb3RoZXIgbWVkaWEgdHlwZXMuCgogICAgICAiV29yayIgc2hhbGwgbWVhbiB0aGUgd29yayBvZiBhdXRob3JzaGlwLCB3aGV0aGVyIGluIFNvdXJjZSBvcgogICAgICBPYmplY3QgZm9ybSwgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIExpY2Vuc2UsIGFzIGluZGljYXRlZCBieSBhCiAgICAgIGNvcHlyaWdodCBub3RpY2UgdGhhdCBpcyBpbmNsdWRlZCBpbiBvciBhdHRhY2hlZCB0byB0aGUgd29yawogICAgICAoYW4gZXhhbXBsZSBpcyBwcm92aWRlZCBpbiB0aGUgQXBwZW5kaXggYmVsb3cpLgoKICAgICAgIkRlcml2YXRpdmUgV29ya3MiIHNoYWxsIG1lYW4gYW55IHdvcmssIHdoZXRoZXIgaW4gU291cmNlIG9yIE9iamVjdAogICAgICBmb3JtLCB0aGF0IGlzIGJhc2VkIG9uIChvciBkZXJpdmVkIGZyb20pIHRoZSBXb3JrIGFuZCBmb3Igd2hpY2ggdGhlCiAgICAgIGVkaXRvcmlhbCByZXZpc2lvbnMsIGFubm90YXRpb25zLCBlbGFib3JhdGlvbnMsIG9yIG90aGVyIG1vZGlmaWNhdGlvbnMKICAgICAgcmVwcmVzZW50LCBhcyBhIHdob2xlLCBhbiBvcmlnaW5hbCB3b3JrIG9mIGF1dGhvcnNoaXAuIEZvciB0aGUgcHVycG9zZXMKICAgICAgb2YgdGhpcyBMaWNlbnNlLCBEZXJpdmF0aXZlIFdvcmtzIHNoYWxsIG5vdCBpbmNsdWRlIHdvcmtzIHRoYXQgcmVtYWluCiAgICAgIHNlcGFyYWJsZSBmcm9tLCBvciBtZXJlbHkgbGluayAob3IgYmluZCBieSBuYW1lKSB0byB0aGUgaW50ZXJmYWNlcyBvZiwKICAgICAgdGhlIFdvcmsgYW5kIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZi4KCiAgICAgICJDb250cmlidXRpb24iIHNoYWxsIG1lYW4gYW55IHdvcmsgb2YgYXV0aG9yc2hpcCwgaW5jbHVkaW5nCiAgICAgIHRoZSBvcmlnaW5hbCB2ZXJzaW9uIG9mIHRoZSBXb3JrIGFuZCBhbnkgbW9kaWZpY2F0aW9ucyBvciBhZGRpdGlvbnMKICAgICAgdG8gdGhhdCBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgdGhhdCBpcyBpbnRlbnRpb25hbGx5CiAgICAgIHN1Ym1pdHRlZCB0byBMaWNlbnNvciBmb3IgaW5jbHVzaW9uIGluIHRoZSBXb3JrIGJ5IHRoZSBjb3B5cmlnaHQgb3duZXIKICAgICAgb3IgYnkgYW4gaW5kaXZpZHVhbCBvciBMZWdhbCBFbnRpdHkgYXV0aG9yaXplZCB0byBzdWJtaXQgb24gYmVoYWxmIG9mCiAgICAgIHRoZSBjb3B5cmlnaHQgb3duZXIuIEZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAic3VibWl0dGVkIgogICAgICBtZWFucyBhbnkgZm9ybSBvZiBlbGVjdHJvbmljLCB2ZXJiYWwsIG9yIHdyaXR0ZW4gY29tbXVuaWNhdGlvbiBzZW50CiAgICAgIHRvIHRoZSBMaWNlbnNvciBvciBpdHMgcmVwcmVzZW50YXRpdmVzLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvCiAgICAgIGNvbW11bmljYXRpb24gb24gZWxlY3Ryb25pYyBtYWlsaW5nIGxpc3RzLCBzb3VyY2UgY29kZSBjb250cm9sIHN5c3RlbXMsCiAgICAgIGFuZCBpc3N1ZSB0cmFja2luZyBzeXN0ZW1zIHRoYXQgYXJlIG1hbmFnZWQgYnksIG9yIG9uIGJlaGFsZiBvZiwgdGhlCiAgICAgIExpY2Vuc29yIGZvciB0aGUgcHVycG9zZSBvZiBkaXNjdXNzaW5nIGFuZCBpbXByb3ZpbmcgdGhlIFdvcmssIGJ1dAogICAgICBleGNsdWRpbmcgY29tbXVuaWNhdGlvbiB0aGF0IGlzIGNvbnNwaWN1b3VzbHkgbWFya2VkIG9yIG90aGVyd2lzZQogICAgICBkZXNpZ25hdGVkIGluIHdyaXRpbmcgYnkgdGhlIGNvcHlyaWdodCBvd25lciBhcyAiTm90IGEgQ29udHJpYnV0aW9uLiIKCiAgICAgICJDb250cmlidXRvciIgc2hhbGwgbWVhbiBMaWNlbnNvciBhbmQgYW55IGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5CiAgICAgIG9uIGJlaGFsZiBvZiB3aG9tIGEgQ29udHJpYnV0aW9uIGhhcyBiZWVuIHJlY2VpdmVkIGJ5IExpY2Vuc29yIGFuZAogICAgICBzdWJzZXF1ZW50bHkgaW5jb3Jwb3JhdGVkIHdpdGhpbiB0aGUgV29yay4KCiAgIDIuIEdyYW50IG9mIENvcHlyaWdodCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCiAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCiAgICAgIGNvcHlyaWdodCBsaWNlbnNlIHRvIHJlcHJvZHVjZSwgcHJlcGFyZSBEZXJpdmF0aXZlIFdvcmtzIG9mLAogICAgICBwdWJsaWNseSBkaXNwbGF5LCBwdWJsaWNseSBwZXJmb3JtLCBzdWJsaWNlbnNlLCBhbmQgZGlzdHJpYnV0ZSB0aGUKICAgICAgV29yayBhbmQgc3VjaCBEZXJpdmF0aXZlIFdvcmtzIGluIFNvdXJjZSBvciBPYmplY3QgZm9ybS4KCiAgIDMuIEdyYW50IG9mIFBhdGVudCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCiAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCiAgICAgIChleGNlcHQgYXMgc3RhdGVkIGluIHRoaXMgc2VjdGlvbikgcGF0ZW50IGxpY2Vuc2UgdG8gbWFrZSwgaGF2ZSBtYWRlLAogICAgICB1c2UsIG9mZmVyIHRvIHNlbGwsIHNlbGwsIGltcG9ydCwgYW5kIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgV29yaywKICAgICAgd2hlcmUgc3VjaCBsaWNlbnNlIGFwcGxpZXMgb25seSB0byB0aG9zZSBwYXRlbnQgY2xhaW1zIGxpY2Vuc2FibGUKICAgICAgYnkgc3VjaCBDb250cmlidXRvciB0aGF0IGFyZSBuZWNlc3NhcmlseSBpbmZyaW5nZWQgYnkgdGhlaXIKICAgICAgQ29udHJpYnV0aW9uKHMpIGFsb25lIG9yIGJ5IGNvbWJpbmF0aW9uIG9mIHRoZWlyIENvbnRyaWJ1dGlvbihzKQogICAgICB3aXRoIHRoZSBXb3JrIHRvIHdoaWNoIHN1Y2ggQ29udHJpYnV0aW9uKHMpIHdhcyBzdWJtaXR0ZWQuIElmIFlvdQogICAgICBpbnN0aXR1dGUgcGF0ZW50IGxpdGlnYXRpb24gYWdhaW5zdCBhbnkgZW50aXR5IChpbmNsdWRpbmcgYQogICAgICBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0IHRoZSBXb3JrCiAgICAgIG9yIGEgQ29udHJpYnV0aW9uIGluY29ycG9yYXRlZCB3aXRoaW4gdGhlIFdvcmsgY29uc3RpdHV0ZXMgZGlyZWN0CiAgICAgIG9yIGNvbnRyaWJ1dG9yeSBwYXRlbnQgaW5mcmluZ2VtZW50LCB0aGVuIGFueSBwYXRlbnQgbGljZW5zZXMKICAgICAgZ3JhbnRlZCB0byBZb3UgdW5kZXIgdGhpcyBMaWNlbnNlIGZvciB0aGF0IFdvcmsgc2hhbGwgdGVybWluYXRlCiAgICAgIGFzIG9mIHRoZSBkYXRlIHN1Y2ggbGl0aWdhdGlvbiBpcyBmaWxlZC4KCiAgIDQuIFJlZGlzdHJpYnV0aW9uLiBZb3UgbWF5IHJlcHJvZHVjZSBhbmQgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlCiAgICAgIFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mIGluIGFueSBtZWRpdW0sIHdpdGggb3Igd2l0aG91dAogICAgICBtb2RpZmljYXRpb25zLCBhbmQgaW4gU291cmNlIG9yIE9iamVjdCBmb3JtLCBwcm92aWRlZCB0aGF0IFlvdQogICAgICBtZWV0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKCiAgICAgIChhKSBZb3UgbXVzdCBnaXZlIGFueSBvdGhlciByZWNpcGllbnRzIG9mIHRoZSBXb3JrIG9yCiAgICAgICAgICBEZXJpdmF0aXZlIFdvcmtzIGEgY29weSBvZiB0aGlzIExpY2Vuc2U7IGFuZAoKICAgICAgKGIpIFlvdSBtdXN0IGNhdXNlIGFueSBtb2RpZmllZCBmaWxlcyB0byBjYXJyeSBwcm9taW5lbnQgbm90aWNlcwogICAgICAgICAgc3RhdGluZyB0aGF0IFlvdSBjaGFuZ2VkIHRoZSBmaWxlczsgYW5kCgogICAgICAoYykgWW91IG11c3QgcmV0YWluLCBpbiB0aGUgU291cmNlIGZvcm0gb2YgYW55IERlcml2YXRpdmUgV29ya3MKICAgICAgICAgIHRoYXQgWW91IGRpc3RyaWJ1dGUsIGFsbCBjb3B5cmlnaHQsIHBhdGVudCwgdHJhZGVtYXJrLCBhbmQKICAgICAgICAgIGF0dHJpYnV0aW9uIG5vdGljZXMgZnJvbSB0aGUgU291cmNlIGZvcm0gb2YgdGhlIFdvcmssCiAgICAgICAgICBleGNsdWRpbmcgdGhvc2Ugbm90aWNlcyB0aGF0IGRvIG5vdCBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mCiAgICAgICAgICB0aGUgRGVyaXZhdGl2ZSBXb3JrczsgYW5kCgogICAgICAoZCkgSWYgdGhlIFdvcmsgaW5jbHVkZXMgYSAiTk9USUNFIiB0ZXh0IGZpbGUgYXMgcGFydCBvZiBpdHMKICAgICAgICAgIGRpc3RyaWJ1dGlvbiwgdGhlbiBhbnkgRGVyaXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlIG11c3QKICAgICAgICAgIGluY2x1ZGUgYSByZWFkYWJsZSBjb3B5IG9mIHRoZSBhdHRyaWJ1dGlvbiBub3RpY2VzIGNvbnRhaW5lZAogICAgICAgICAgd2l0aGluIHN1Y2ggTk9USUNFIGZpbGUsIGV4Y2x1ZGluZyB0aG9zZSBub3RpY2VzIHRoYXQgZG8gbm90CiAgICAgICAgICBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpbiBhdCBsZWFzdCBvbmUKICAgICAgICAgIG9mIHRoZSBmb2xsb3dpbmcgcGxhY2VzOiB3aXRoaW4gYSBOT1RJQ0UgdGV4dCBmaWxlIGRpc3RyaWJ1dGVkCiAgICAgICAgICBhcyBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyB3aXRoaW4gdGhlIFNvdXJjZSBmb3JtIG9yCiAgICAgICAgICBkb2N1bWVudGF0aW9uLCBpZiBwcm92aWRlZCBhbG9uZyB3aXRoIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyBvciwKICAgICAgICAgIHdpdGhpbiBhIGRpc3BsYXkgZ2VuZXJhdGVkIGJ5IHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpZiBhbmQKICAgICAgICAgIHdoZXJldmVyIHN1Y2ggdGhpcmQtcGFydHkgbm90aWNlcyBub3JtYWxseSBhcHBlYXIuIFRoZSBjb250ZW50cwogICAgICAgICAgb2YgdGhlIE5PVElDRSBmaWxlIGFyZSBmb3IgaW5mb3JtYXRpb25hbCBwdXJwb3NlcyBvbmx5IGFuZAogICAgICAgICAgZG8gbm90IG1vZGlmeSB0aGUgTGljZW5zZS4gWW91IG1heSBhZGQgWW91ciBvd24gYXR0cmlidXRpb24KICAgICAgICAgIG5vdGljZXMgd2l0aGluIERlcml2YXRpdmUgV29ya3MgdGhhdCBZb3UgZGlzdHJpYnV0ZSwgYWxvbmdzaWRlCiAgICAgICAgICBvciBhcyBhbiBhZGRlbmR1bSB0byB0aGUgTk9USUNFIHRleHQgZnJvbSB0aGUgV29yaywgcHJvdmlkZWQKICAgICAgICAgIHRoYXQgc3VjaCBhZGRpdGlvbmFsIGF0dHJpYnV0aW9uIG5vdGljZXMgY2Fubm90IGJlIGNvbnN0cnVlZAogICAgICAgICAgYXMgbW9kaWZ5aW5nIHRoZSBMaWNlbnNlLgoKICAgICAgWW91IG1heSBhZGQgWW91ciBvd24gY29weXJpZ2h0IHN0YXRlbWVudCB0byBZb3VyIG1vZGlmaWNhdGlvbnMgYW5kCiAgICAgIG1heSBwcm92aWRlIGFkZGl0aW9uYWwgb3IgZGlmZmVyZW50IGxpY2Vuc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMKICAgICAgZm9yIHVzZSwgcmVwcm9kdWN0aW9uLCBvciBkaXN0cmlidXRpb24gb2YgWW91ciBtb2RpZmljYXRpb25zLCBvcgogICAgICBmb3IgYW55IHN1Y2ggRGVyaXZhdGl2ZSBXb3JrcyBhcyBhIHdob2xlLCBwcm92aWRlZCBZb3VyIHVzZSwKICAgICAgcmVwcm9kdWN0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoZSBXb3JrIG90aGVyd2lzZSBjb21wbGllcyB3aXRoCiAgICAgIHRoZSBjb25kaXRpb25zIHN0YXRlZCBpbiB0aGlzIExpY2Vuc2UuCgogICA1LiBTdWJtaXNzaW9uIG9mIENvbnRyaWJ1dGlvbnMuIFVubGVzcyBZb3UgZXhwbGljaXRseSBzdGF0ZSBvdGhlcndpc2UsCiAgICAgIGFueSBDb250cmlidXRpb24gaW50ZW50aW9uYWxseSBzdWJtaXR0ZWQgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yawogICAgICBieSBZb3UgdG8gdGhlIExpY2Vuc29yIHNoYWxsIGJlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICB0aGlzIExpY2Vuc2UsIHdpdGhvdXQgYW55IGFkZGl0aW9uYWwgdGVybXMgb3IgY29uZGl0aW9ucy4KICAgICAgTm90d2l0aHN0YW5kaW5nIHRoZSBhYm92ZSwgbm90aGluZyBoZXJlaW4gc2hhbGwgc3VwZXJzZWRlIG9yIG1vZGlmeQogICAgICB0aGUgdGVybXMgb2YgYW55IHNlcGFyYXRlIGxpY2Vuc2UgYWdyZWVtZW50IHlvdSBtYXkgaGF2ZSBleGVjdXRlZAogICAgICB3aXRoIExpY2Vuc29yIHJlZ2FyZGluZyBzdWNoIENvbnRyaWJ1dGlvbnMuCgogICA2LiBUcmFkZW1hcmtzLiBUaGlzIExpY2Vuc2UgZG9lcyBub3QgZ3JhbnQgcGVybWlzc2lvbiB0byB1c2UgdGhlIHRyYWRlCiAgICAgIG5hbWVzLCB0cmFkZW1hcmtzLCBzZXJ2aWNlIG1hcmtzLCBvciBwcm9kdWN0IG5hbWVzIG9mIHRoZSBMaWNlbnNvciwKICAgICAgZXhjZXB0IGFzIHJlcXVpcmVkIGZvciByZWFzb25hYmxlIGFuZCBjdXN0b21hcnkgdXNlIGluIGRlc2NyaWJpbmcgdGhlCiAgICAgIG9yaWdpbiBvZiB0aGUgV29yayBhbmQgcmVwcm9kdWNpbmcgdGhlIGNvbnRlbnQgb2YgdGhlIE5PVElDRSBmaWxlLgoKICAgNy4gRGlzY2xhaW1lciBvZiBXYXJyYW50eS4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yCiAgICAgIGFncmVlZCB0byBpbiB3cml0aW5nLCBMaWNlbnNvciBwcm92aWRlcyB0aGUgV29yayAoYW5kIGVhY2gKICAgICAgQ29udHJpYnV0b3IgcHJvdmlkZXMgaXRzIENvbnRyaWJ1dGlvbnMpIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgogICAgICBpbXBsaWVkLCBpbmNsdWRpbmcsIHdpdGhvdXQgbGltaXRhdGlvbiwgYW55IHdhcnJhbnRpZXMgb3IgY29uZGl0aW9ucwogICAgICBvZiBUSVRMRSwgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZLCBvciBGSVRORVNTIEZPUiBBCiAgICAgIFBBUlRJQ1VMQVIgUFVSUE9TRS4gWW91IGFyZSBzb2xlbHkgcmVzcG9uc2libGUgZm9yIGRldGVybWluaW5nIHRoZQogICAgICBhcHByb3ByaWF0ZW5lc3Mgb2YgdXNpbmcgb3IgcmVkaXN0cmlidXRpbmcgdGhlIFdvcmsgYW5kIGFzc3VtZSBhbnkKICAgICAgcmlza3MgYXNzb2NpYXRlZCB3aXRoIFlvdXIgZXhlcmNpc2Ugb2YgcGVybWlzc2lvbnMgdW5kZXIgdGhpcyBMaWNlbnNlLgoKICAgOC4gTGltaXRhdGlvbiBvZiBMaWFiaWxpdHkuIEluIG5vIGV2ZW50IGFuZCB1bmRlciBubyBsZWdhbCB0aGVvcnksCiAgICAgIHdoZXRoZXIgaW4gdG9ydCAoaW5jbHVkaW5nIG5lZ2xpZ2VuY2UpLCBjb250cmFjdCwgb3Igb3RoZXJ3aXNlLAogICAgICB1bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgKHN1Y2ggYXMgZGVsaWJlcmF0ZSBhbmQgZ3Jvc3NseQogICAgICBuZWdsaWdlbnQgYWN0cykgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNoYWxsIGFueSBDb250cmlidXRvciBiZQogICAgICBsaWFibGUgdG8gWW91IGZvciBkYW1hZ2VzLCBpbmNsdWRpbmcgYW55IGRpcmVjdCwgaW5kaXJlY3QsIHNwZWNpYWwsCiAgICAgIGluY2lkZW50YWwsIG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvZiBhbnkgY2hhcmFjdGVyIGFyaXNpbmcgYXMgYQogICAgICByZXN1bHQgb2YgdGhpcyBMaWNlbnNlIG9yIG91dCBvZiB0aGUgdXNlIG9yIGluYWJpbGl0eSB0byB1c2UgdGhlCiAgICAgIFdvcmsgKGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gZGFtYWdlcyBmb3IgbG9zcyBvZiBnb29kd2lsbCwKICAgICAgd29yayBzdG9wcGFnZSwgY29tcHV0ZXIgZmFpbHVyZSBvciBtYWxmdW5jdGlvbiwgb3IgYW55IGFuZCBhbGwKICAgICAgb3RoZXIgY29tbWVyY2lhbCBkYW1hZ2VzIG9yIGxvc3NlcyksIGV2ZW4gaWYgc3VjaCBDb250cmlidXRvcgogICAgICBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiBzdWNoIGRhbWFnZXMuCgogICA5LiBBY2NlcHRpbmcgV2FycmFudHkgb3IgQWRkaXRpb25hbCBMaWFiaWxpdHkuIFdoaWxlIHJlZGlzdHJpYnV0aW5nCiAgICAgIHRoZSBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgWW91IG1heSBjaG9vc2UgdG8gb2ZmZXIsCiAgICAgIGFuZCBjaGFyZ2UgYSBmZWUgZm9yLCBhY2NlcHRhbmNlIG9mIHN1cHBvcnQsIHdhcnJhbnR5LCBpbmRlbW5pdHksCiAgICAgIG9yIG90aGVyIGxpYWJpbGl0eSBvYmxpZ2F0aW9ucyBhbmQvb3IgcmlnaHRzIGNvbnNpc3RlbnQgd2l0aCB0aGlzCiAgICAgIExpY2Vuc2UuIEhvd2V2ZXIsIGluIGFjY2VwdGluZyBzdWNoIG9ibGlnYXRpb25zLCBZb3UgbWF5IGFjdCBvbmx5CiAgICAgIG9uIFlvdXIgb3duIGJlaGFsZiBhbmQgb24gWW91ciBzb2xlIHJlc3BvbnNpYmlsaXR5LCBub3Qgb24gYmVoYWxmCiAgICAgIG9mIGFueSBvdGhlciBDb250cmlidXRvciwgYW5kIG9ubHkgaWYgWW91IGFncmVlIHRvIGluZGVtbmlmeSwKICAgICAgZGVmZW5kLCBhbmQgaG9sZCBlYWNoIENvbnRyaWJ1dG9yIGhhcm1sZXNzIGZvciBhbnkgbGlhYmlsaXR5CiAgICAgIGluY3VycmVkIGJ5LCBvciBjbGFpbXMgYXNzZXJ0ZWQgYWdhaW5zdCwgc3VjaCBDb250cmlidXRvciBieSByZWFzb24KICAgICAgb2YgeW91ciBhY2NlcHRpbmcgYW55IHN1Y2ggd2FycmFudHkgb3IgYWRkaXRpb25hbCBsaWFiaWxpdHkuCgogICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKCiAgIEFQUEVORElYOiBIb3cgdG8gYXBwbHkgdGhlIEFwYWNoZSBMaWNlbnNlIHRvIHlvdXIgd29yay4KCiAgICAgIFRvIGFwcGx5IHRoZSBBcGFjaGUgTGljZW5zZSB0byB5b3VyIHdvcmssIGF0dGFjaCB0aGUgZm9sbG93aW5nCiAgICAgIGJvaWxlcnBsYXRlIG5vdGljZSwgd2l0aCB0aGUgZmllbGRzIGVuY2xvc2VkIGJ5IGJyYWNrZXRzICJbXSIKICAgICAgcmVwbGFjZWQgd2l0aCB5b3VyIG93biBpZGVudGlmeWluZyBpbmZvcm1hdGlvbi4gKERvbid0IGluY2x1ZGUKICAgICAgdGhlIGJyYWNrZXRzISkgIFRoZSB0ZXh0IHNob3VsZCBiZSBlbmNsb3NlZCBpbiB0aGUgYXBwcm9wcmlhdGUKICAgICAgY29tbWVudCBzeW50YXggZm9yIHRoZSBmaWxlIGZvcm1hdC4gV2UgYWxzbyByZWNvbW1lbmQgdGhhdCBhCiAgICAgIGZpbGUgb3IgY2xhc3MgbmFtZSBhbmQgZGVzY3JpcHRpb24gb2YgcHVycG9zZSBiZSBpbmNsdWRlZCBvbiB0aGUKICAgICAgc2FtZSAicHJpbnRlZCBwYWdlIiBhcyB0aGUgY29weXJpZ2h0IG5vdGljZSBmb3IgZWFzaWVyCiAgICAgIGlkZW50aWZpY2F0aW9uIHdpdGhpbiB0aGlyZC1wYXJ0eSBhcmNoaXZlcy4KCiAgIENvcHlyaWdodCBbeXl5eV0gW25hbWUgb2YgY29weXJpZ2h0IG93bmVyXQoKICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgo= pkg:pypi/license-expression@30.3.0 @@ -950,69 +232,11 @@ https://www.contributor-covenant.org/version/1/4/code-of-conduct.html declared license file: LICENSE.txt - Copyright (c) 2004 Infrae. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - 3. Neither the name of Infrae nor the names of its contributors may - be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INFRAE OR -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - + Q29weXJpZ2h0IChjKSAyMDA0IEluZnJhZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAgIAogIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCiAgICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQogICAgIGRpc3RyaWJ1dGlvbi4KCiAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBJbmZyYWUgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heQogICAgIGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCiAgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCgpUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCiJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgpBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgSU5GUkFFIE9SCkNPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLApFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sClBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgpQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GCkxJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCk5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwpTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K declared license file: LICENSES.txt - lxml is copyright Infrae and distributed under the BSD license (see -doc/licenses/BSD.txt), with the following exceptions: - -Some code, such a selftest.py, selftest2.py and -src/lxml/_elementpath.py are derived from ElementTree and -cElementTree. See doc/licenses/elementtree.txt for the license text. - -lxml.cssselect and lxml.html are copyright Ian Bicking and distributed -under the BSD license (see doc/licenses/BSD.txt). - -test.py, the test-runner script, is GPL and copyright Shuttleworth -Foundation. See doc/licenses/GPL.txt. It is believed the unchanged -inclusion of test.py to run the unit test suite falls under the -"aggregation" clause of the GPL and thus does not affect the license -of the rest of the package. - -The isoschematron implementation uses several XSL and RelaxNG resources: - * The (XML syntax) RelaxNG schema for schematron, copyright International - Organization for Standardization (see - src/lxml/isoschematron/resources/rng/iso-schematron.rng for the license - text) - * The skeleton iso-schematron-xlt1 pure-xslt schematron implementation - xsl stylesheets, copyright Rick Jelliffe and Academia Sinica Computing - Center, Taiwan (see the xsl files here for the license text: - src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/) - * The xsd/rng schema schematron extraction xsl transformations are unlicensed - and copyright the respective authors as noted (see - src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl and - src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl) - + bHhtbCBpcyBjb3B5cmlnaHQgSW5mcmFlIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgQlNEIGxpY2Vuc2UgKHNlZQpkb2MvbGljZW5zZXMvQlNELnR4dCksIHdpdGggdGhlIGZvbGxvd2luZyBleGNlcHRpb25zOgoKU29tZSBjb2RlLCBzdWNoIGEgc2VsZnRlc3QucHksIHNlbGZ0ZXN0Mi5weSBhbmQKc3JjL2x4bWwvX2VsZW1lbnRwYXRoLnB5IGFyZSBkZXJpdmVkIGZyb20gRWxlbWVudFRyZWUgYW5kCmNFbGVtZW50VHJlZS4gU2VlIGRvYy9saWNlbnNlcy9lbGVtZW50dHJlZS50eHQgZm9yIHRoZSBsaWNlbnNlIHRleHQuCgpseG1sLmNzc3NlbGVjdCBhbmQgbHhtbC5odG1sIGFyZSBjb3B5cmlnaHQgSWFuIEJpY2tpbmcgYW5kIGRpc3RyaWJ1dGVkCnVuZGVyIHRoZSBCU0QgbGljZW5zZSAoc2VlIGRvYy9saWNlbnNlcy9CU0QudHh0KS4KCnRlc3QucHksIHRoZSB0ZXN0LXJ1bm5lciBzY3JpcHQsIGlzIEdQTCBhbmQgY29weXJpZ2h0IFNodXR0bGV3b3J0aApGb3VuZGF0aW9uLiBTZWUgZG9jL2xpY2Vuc2VzL0dQTC50eHQuIEl0IGlzIGJlbGlldmVkIHRoZSB1bmNoYW5nZWQKaW5jbHVzaW9uIG9mIHRlc3QucHkgdG8gcnVuIHRoZSB1bml0IHRlc3Qgc3VpdGUgZmFsbHMgdW5kZXIgdGhlCiJhZ2dyZWdhdGlvbiIgY2xhdXNlIG9mIHRoZSBHUEwgYW5kIHRodXMgZG9lcyBub3QgYWZmZWN0IHRoZSBsaWNlbnNlCm9mIHRoZSByZXN0IG9mIHRoZSBwYWNrYWdlLgoKVGhlIGlzb3NjaGVtYXRyb24gaW1wbGVtZW50YXRpb24gdXNlcyBzZXZlcmFsIFhTTCBhbmQgUmVsYXhORyByZXNvdXJjZXM6CiAqIFRoZSAoWE1MIHN5bnRheCkgUmVsYXhORyBzY2hlbWEgZm9yIHNjaGVtYXRyb24sIGNvcHlyaWdodCBJbnRlcm5hdGlvbmFsCiAgIE9yZ2FuaXphdGlvbiBmb3IgU3RhbmRhcmRpemF0aW9uIChzZWUgCiAgIHNyYy9seG1sL2lzb3NjaGVtYXRyb24vcmVzb3VyY2VzL3JuZy9pc28tc2NoZW1hdHJvbi5ybmcgZm9yIHRoZSBsaWNlbnNlCiAgIHRleHQpCiAqIFRoZSBza2VsZXRvbiBpc28tc2NoZW1hdHJvbi14bHQxIHB1cmUteHNsdCBzY2hlbWF0cm9uIGltcGxlbWVudGF0aW9uCiAgIHhzbCBzdHlsZXNoZWV0cywgY29weXJpZ2h0IFJpY2sgSmVsbGlmZmUgYW5kIEFjYWRlbWlhIFNpbmljYSBDb21wdXRpbmcKICAgQ2VudGVyLCBUYWl3YW4gKHNlZSB0aGUgeHNsIGZpbGVzIGhlcmUgZm9yIHRoZSBsaWNlbnNlIHRleHQ6IAogICBzcmMvbHhtbC9pc29zY2hlbWF0cm9uL3Jlc291cmNlcy94c2wvaXNvLXNjaGVtYXRyb24teHNsdDEvKQogKiBUaGUgeHNkL3JuZyBzY2hlbWEgc2NoZW1hdHJvbiBleHRyYWN0aW9uIHhzbCB0cmFuc2Zvcm1hdGlvbnMgYXJlIHVubGljZW5zZWQKICAgYW5kIGNvcHlyaWdodCB0aGUgcmVzcGVjdGl2ZSBhdXRob3JzIGFzIG5vdGVkIChzZWUgCiAgIHNyYy9seG1sL2lzb3NjaGVtYXRyb24vcmVzb3VyY2VzL3hzbC9STkcyU2NodHJuLnhzbCBhbmQKICAgc3JjL2x4bWwvaXNvc2NoZW1hdHJvbi9yZXNvdXJjZXMveHNsL1hTRDJTY2h0cm4ueHNsKQo= pkg:pypi/lxml@5.3.0 @@ -1030,44 +254,6 @@ The isoschematron implementation uses several XSL and RelaxNG resources: regression-issue868 0.1 - - - declared license file: my_licenses/richtext.rtf - e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA= - - - declared license file: my_licenses/utf-16be_withBOM.txt - this file is -utf-16be encoded -with BOM -😃 - - - - declared license file: my_licenses/utf-16le_withBOM.txt - this file is -utf-16le encoded -with BOM -😃 - - - - declared license file: my_licenses/utf-8_noBOM.txt - this file is -utf-8 encoded -without BOM -😃 - - - - declared license file: my_licenses/utf-8_withBOM.txt - this file is -utf-8 encoded -with BOM -😃 - - - file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 @@ -1079,6 +265,7 @@ with BOM + diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.json.bin index 04f36dfea..40d20b535 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.json.bin @@ -35,15 +35,6 @@ "license": { "id": "MIT" } - }, - { - "license": { - "name": "declared license file: LICENSE", - "text": { - "content": "The MIT License (MIT)\n\nCopyright (c) 2015 Hynek Schlawack and the attrs contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n", - "contentType": "text/plain" - } - } } ], "name": "attrs", @@ -71,8 +62,9 @@ "license": { "name": "declared license file: CHANGELOG.rst", "text": { - "content": "\nChangelog\n=========\n\n\nnext\n----\n\n\n4.0 (2022-05-05)\n----------------\n\n* API changes\n\n * Drop support for Python 2.\n * Test on Python 3.10\n * Make Expression.sort_order an instance attributes and not a class attribute\n\n* Misc.\n\n * Correct licensing documentation\n * Improve docstringf and apply minor refactorings\n * Adopt black code style and isort for imports\n * Drop Travis and use GitHub actions for CI\n\n\n3.8 (2020-06-10)\n----------------\n\n* API changes\n\n * Add support for evaluation of boolean expression.\n Thank you to Lars van Gemerden @gemerden\n\n* Bug fixes\n\n * Fix parsing of tokens that have a number as the first character. \n Thank you to Jeff Cohen @ jcohen28\n * Restore proper Python 2 compatibility. \n Thank you to Benjy Weinberger @benjyw\n\n* Improve documentation\n\n * Add pointers to Linux distro packages.\n Thank you to Max Mehl @mxmehl and Carmen Bianca Bakker @carmenbianca\n * Fix typo.\n Thank you to Gabriel Niebler @der-gabe\n\n\n3.7 (2019-10-04)\n----------------\n\n* API changes\n\n * Add new sort argument to simplify() to optionally not sort when simplifying\n expressions (e.g. not applying \"commutativity\"). Thank you to Steven Esser\n @majurg for this\n * Add new argument to tokenizer to optionally accept extra characters in symbol\n tokens. Thank you to @carpie for this\n\n\n3.6 (2018-08-06)\n----------------\n\n* No API changes\n\n* Bug fixes\n\n * Fix De Morgan's laws effect on double negation propositions. Thank you to Douglas Cardoso for this\n * Improve error checking when parsing\n\n\n3.5 (Nov 1, 2017)\n-----------------\n\n* No API changes\n\n* Bug fixes\n\n * Documentation updates and add testing for Python 3.6. Thank you to Alexander Lisianoi @alisianoi\n * Improve testng and expression equivalence checks\n * Improve subs() method to an expression \n\n \n\n3.4 (May 12, 2017)\n------------------\n\n* No API changes\n\n* Bug fixes and improvements\n\n * Fix various documentation typos and improve tests . Thank you to Alexander Lisianoi @alisianoi\n * Fix handling for literals vs. symbols in negations Thank you to @YaronK\n\n\n3.3 (2017-02-09)\n----------------\n\n* API changes\n\n * #40 and #50 Expression.subs() now takes 'default' thanks to @kronuz\n * #45 simplify=False is now the default for parse and related functions or methods.\n * #40 Use \"&\" and \"|\" as default operators\n\n* Bug fixes\n\n * #60 Fix bug for \"a or b c\" which is not a valid expression\n * #58 Fix math formula display in docs\n * Improve handling of parse errors\n\n\n2.0.0 (2016-05-11)\n------------------\n\n* API changes\n\n * New algebra definition. Refactored class hierarchy. Improved parsing.\n\n* New features\n\n * possibility to subclass algebra definition\n * new normal forms shortcuts for DNF and CNF.\n\n\n1.1 (2016-04-06)\n------------------\n\n* Initial release on Pypi.\n", - "contentType": "text/prs.fallenstein.rst" + "content": "CkNoYW5nZWxvZwo9PT09PT09PT0KCgpuZXh0Ci0tLS0KCgo0LjAgKDIwMjItMDUtMDUpCi0tLS0tLS0tLS0tLS0tLS0KCiogQVBJIGNoYW5nZXMKCiAqIERyb3Agc3VwcG9ydCBmb3IgUHl0aG9uIDIuCiAqIFRlc3Qgb24gUHl0aG9uIDMuMTAKICogTWFrZSBFeHByZXNzaW9uLnNvcnRfb3JkZXIgYW4gaW5zdGFuY2UgYXR0cmlidXRlcyBhbmQgbm90IGEgY2xhc3MgYXR0cmlidXRlCgoqIE1pc2MuCgogKiBDb3JyZWN0IGxpY2Vuc2luZyBkb2N1bWVudGF0aW9uCiAqIEltcHJvdmUgZG9jc3RyaW5nZiBhbmQgYXBwbHkgbWlub3IgcmVmYWN0b3JpbmdzCiAqIEFkb3B0IGJsYWNrIGNvZGUgc3R5bGUgYW5kIGlzb3J0IGZvciBpbXBvcnRzCiAqIERyb3AgVHJhdmlzIGFuZCB1c2UgR2l0SHViIGFjdGlvbnMgZm9yIENJCgoKMy44ICgyMDIwLTA2LTEwKQotLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiBBZGQgc3VwcG9ydCBmb3IgZXZhbHVhdGlvbiBvZiBib29sZWFuIGV4cHJlc3Npb24uCiAgIFRoYW5rIHlvdSB0byBMYXJzIHZhbiBHZW1lcmRlbiBAZ2VtZXJkZW4KCiogQnVnIGZpeGVzCgogKiBGaXggcGFyc2luZyBvZiB0b2tlbnMgdGhhdCBoYXZlIGEgbnVtYmVyIGFzIHRoZSBmaXJzdCBjaGFyYWN0ZXIuIAogICBUaGFuayB5b3UgdG8gSmVmZiBDb2hlbiBAIGpjb2hlbjI4CiAqIFJlc3RvcmUgcHJvcGVyIFB5dGhvbiAyIGNvbXBhdGliaWxpdHkuIAogICBUaGFuayB5b3UgdG8gQmVuankgV2VpbmJlcmdlciBAYmVuanl3CgoqIEltcHJvdmUgZG9jdW1lbnRhdGlvbgoKICogQWRkIHBvaW50ZXJzIHRvIExpbnV4IGRpc3RybyBwYWNrYWdlcy4KICAgVGhhbmsgeW91IHRvIE1heCBNZWhsIEBteG1laGwgYW5kIENhcm1lbiBCaWFuY2EgQmFra2VyIEBjYXJtZW5iaWFuY2EKICogRml4IHR5cG8uCiAgIFRoYW5rIHlvdSB0byBHYWJyaWVsIE5pZWJsZXIgQGRlci1nYWJlCgoKMy43ICgyMDE5LTEwLTA0KQotLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiBBZGQgbmV3IHNvcnQgYXJndW1lbnQgdG8gc2ltcGxpZnkoKSB0byBvcHRpb25hbGx5IG5vdCBzb3J0IHdoZW4gc2ltcGxpZnlpbmcKICAgZXhwcmVzc2lvbnMgKGUuZy4gbm90IGFwcGx5aW5nICJjb21tdXRhdGl2aXR5IikuIFRoYW5rIHlvdSB0byBTdGV2ZW4gRXNzZXIKICAgQG1hanVyZyBmb3IgdGhpcwogKiBBZGQgbmV3IGFyZ3VtZW50IHRvIHRva2VuaXplciB0byBvcHRpb25hbGx5IGFjY2VwdCBleHRyYSBjaGFyYWN0ZXJzIGluIHN5bWJvbAogICB0b2tlbnMuIFRoYW5rIHlvdSB0byBAY2FycGllIGZvciB0aGlzCgoKMy42ICgyMDE4LTA4LTA2KQotLS0tLS0tLS0tLS0tLS0tCgoqIE5vIEFQSSBjaGFuZ2VzCgoqIEJ1ZyBmaXhlcwoKICogRml4IERlIE1vcmdhbidzIGxhd3MgZWZmZWN0IG9uIGRvdWJsZSBuZWdhdGlvbiBwcm9wb3NpdGlvbnMuIFRoYW5rIHlvdSB0byBEb3VnbGFzIENhcmRvc28gZm9yIHRoaXMKICogSW1wcm92ZSBlcnJvciBjaGVja2luZyB3aGVuIHBhcnNpbmcKCgozLjUgKE5vdiAxLCAyMDE3KQotLS0tLS0tLS0tLS0tLS0tLQoKKiBObyBBUEkgY2hhbmdlcwoKKiBCdWcgZml4ZXMKCiAqIERvY3VtZW50YXRpb24gdXBkYXRlcyBhbmQgYWRkIHRlc3RpbmcgZm9yIFB5dGhvbiAzLjYuIFRoYW5rIHlvdSB0byBBbGV4YW5kZXIgTGlzaWFub2kgQGFsaXNpYW5vaQogKiBJbXByb3ZlIHRlc3RuZyBhbmQgZXhwcmVzc2lvbiBlcXVpdmFsZW5jZSBjaGVja3MKICogSW1wcm92ZSBzdWJzKCkgbWV0aG9kIHRvIGFuIGV4cHJlc3Npb24gCgogCgozLjQgKE1heSAxMiwgMjAxNykKLS0tLS0tLS0tLS0tLS0tLS0tCgoqIE5vIEFQSSBjaGFuZ2VzCgoqIEJ1ZyBmaXhlcyBhbmQgaW1wcm92ZW1lbnRzCgogKiBGaXggdmFyaW91cyBkb2N1bWVudGF0aW9uIHR5cG9zIGFuZCBpbXByb3ZlIHRlc3RzIC4gVGhhbmsgeW91IHRvIEFsZXhhbmRlciBMaXNpYW5vaSBAYWxpc2lhbm9pCiAqIEZpeCBoYW5kbGluZyBmb3IgbGl0ZXJhbHMgdnMuIHN5bWJvbHMgaW4gbmVnYXRpb25zIFRoYW5rIHlvdSB0byBAWWFyb25LCgoKMy4zICgyMDE3LTAyLTA5KQotLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiAjNDAgYW5kICM1MCBFeHByZXNzaW9uLnN1YnMoKSBub3cgdGFrZXMgJ2RlZmF1bHQnIHRoYW5rcyB0byBAa3JvbnV6CiAqICM0NSBzaW1wbGlmeT1GYWxzZSBpcyBub3cgdGhlIGRlZmF1bHQgZm9yIHBhcnNlIGFuZCByZWxhdGVkIGZ1bmN0aW9ucyBvciBtZXRob2RzLgogKiAjNDAgVXNlICImIiBhbmQgInwiIGFzIGRlZmF1bHQgb3BlcmF0b3JzCgoqIEJ1ZyBmaXhlcwoKICogIzYwIEZpeCBidWcgZm9yICJhIG9yIGIgYyIgd2hpY2ggaXMgbm90IGEgdmFsaWQgZXhwcmVzc2lvbgogKiAjNTggRml4IG1hdGggZm9ybXVsYSBkaXNwbGF5IGluIGRvY3MKICogSW1wcm92ZSBoYW5kbGluZyBvZiBwYXJzZSBlcnJvcnMKCgoyLjAuMCAoMjAxNi0wNS0xMSkKLS0tLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiBOZXcgYWxnZWJyYSBkZWZpbml0aW9uLiBSZWZhY3RvcmVkIGNsYXNzIGhpZXJhcmNoeS4gSW1wcm92ZWQgcGFyc2luZy4KCiogTmV3IGZlYXR1cmVzCgogKiBwb3NzaWJpbGl0eSB0byBzdWJjbGFzcyBhbGdlYnJhIGRlZmluaXRpb24KICogbmV3IG5vcm1hbCBmb3JtcyBzaG9ydGN1dHMgZm9yIERORiBhbmQgQ05GLgoKCjEuMSAoMjAxNi0wNC0wNikKLS0tLS0tLS0tLS0tLS0tLS0tCgoqIEluaXRpYWwgcmVsZWFzZSBvbiBQeXBpLgo=", + "contentType": "text/prs.fallenstein.rst", + "encoding": "base64" } } }, @@ -80,8 +72,9 @@ "license": { "name": "declared license file: LICENSE.txt", "text": { - "content": "Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice, this\nlist of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice,\nthis list of conditions and the following disclaimer in the documentation and/or\nother materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" + "content": "Q29weXJpZ2h0IChjKSBTZWJhc3RpYW4gS3JhZW1lciwgYmFzdGkua3JAZ21haWwuY29tIGFuZCBvdGhlcnMKQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCmFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKCjEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcwpsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KCjIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3IKb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQpESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgpBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwpMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCg==", + "contentType": "text/plain", + "encoding": "base64" } } }, @@ -89,8 +82,9 @@ "license": { "name": "declared license file: README.rst", "text": { - "content": "boolean.py\n==========\n\n\"boolean.py\" is a small library implementing a boolean algebra. It\ndefines two base elements, TRUE and FALSE, and a Symbol class that can\ntake on one of these two values. Calculations are done in terms of AND,\nOR and NOT - other compositions like XOR and NAND are not implemented\nbut can be emulated with AND or and NOT. Expressions are constructed\nfrom parsed strings or in Python.\n\nIt runs on Python 3.6+\nYou can use older version 3.x for Python 2.7+ support.\n\nhttps://github.com/bastikr/boolean.py\n\nBuild status: |Build Status|\n\n\nExample\n-------\n\n::\n\n >>> import boolean\n >>> algebra = boolean.BooleanAlgebra()\n >>> expression1 = algebra.parse(u'apple and (oranges or banana) and not banana', simplify=False)\n >>> expression1\n AND(Symbol('apple'), OR(Symbol('oranges'), Symbol('banana')), NOT(Symbol('banana')))\n\n >>> expression2 = algebra.parse('(oranges | banana) and not banana & apple', simplify=True)\n >>> expression2\n AND(Symbol('apple'), NOT(Symbol('banana')), Symbol('oranges'))\n\n >>> expression1 == expression2\n False\n >>> expression1.simplify() == expression2\n True\n\n\nDocumentation\n-------------\n\nhttp://readthedocs.org/docs/booleanpy/en/latest/\n\n\nInstallation\n------------\n\nInstallation via pip\n~~~~~~~~~~~~~~~~~~~~\n\nTo install boolean.py, you need to have the following pieces of software\non your computer:\n\n- Python 3.6+\n- pip\n\nYou then only need to run the following command:\n\n``pip install boolean.py``\n\n\nInstallation via package managers\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThere are packages available for easy install on some operating systems.\nYou are welcome to help us package this tool for more distributions!\n\n- boolean.py has been packaged as Arch Linux, Fedora, openSus,\n nixpkgs, Guix, DragonFly and FreeBSD \n `packages `__ .\n\nIn particular:\n\n- Arch Linux (AUR):\n `python-boolean.py `__\n- Fedora:\n `python-boolean.py `__\n- openSUSE:\n `python-boolean.py `__\n\n\nTesting\n-------\n\nTest ``boolean.py`` with your current Python environment:\n\n``python setup.py test``\n\nTest with all of the supported Python environments using ``tox``:\n\n::\n\n pip install -r requirements-dev.txt\n tox\n\nIf ``tox`` throws ``InterpreterNotFound``, limit it to python\ninterpreters that are actually installed on your machine:\n\n::\n\n tox -e py36\n\nAlternatively use pytest.\n\n\nLicense\n-------\n\nCopyright (c) Sebastian Kraemer, basti.kr@gmail.com and others\nSPDX-License-Identifier: BSD-2-Clause\n\n.. |Build Status| image:: https://travis-ci.org/bastikr/boolean.py.svg?branch=master\n :target: https://travis-ci.org/bastikr/boolean.py\n", - "contentType": "text/prs.fallenstein.rst" + "content": "Ym9vbGVhbi5weQo9PT09PT09PT09CgoiYm9vbGVhbi5weSIgaXMgYSBzbWFsbCBsaWJyYXJ5IGltcGxlbWVudGluZyBhIGJvb2xlYW4gYWxnZWJyYS4gSXQKZGVmaW5lcyB0d28gYmFzZSBlbGVtZW50cywgVFJVRSBhbmQgRkFMU0UsIGFuZCBhIFN5bWJvbCBjbGFzcyB0aGF0IGNhbgp0YWtlIG9uIG9uZSBvZiB0aGVzZSB0d28gdmFsdWVzLiBDYWxjdWxhdGlvbnMgYXJlIGRvbmUgaW4gdGVybXMgb2YgQU5ELApPUiBhbmQgTk9UIC0gb3RoZXIgY29tcG9zaXRpb25zIGxpa2UgWE9SIGFuZCBOQU5EIGFyZSBub3QgaW1wbGVtZW50ZWQKYnV0IGNhbiBiZSBlbXVsYXRlZCB3aXRoIEFORCBvciBhbmQgTk9ULiBFeHByZXNzaW9ucyBhcmUgY29uc3RydWN0ZWQKZnJvbSBwYXJzZWQgc3RyaW5ncyBvciBpbiBQeXRob24uCgpJdCBydW5zIG9uIFB5dGhvbiAzLjYrCllvdSBjYW4gdXNlIG9sZGVyIHZlcnNpb24gMy54IGZvciBQeXRob24gMi43KyBzdXBwb3J0LgoKaHR0cHM6Ly9naXRodWIuY29tL2Jhc3Rpa3IvYm9vbGVhbi5weQoKQnVpbGQgc3RhdHVzOiB8QnVpbGQgU3RhdHVzfAoKCkV4YW1wbGUKLS0tLS0tLQoKOjoKCiAgICA+Pj4gaW1wb3J0IGJvb2xlYW4KICAgID4+PiBhbGdlYnJhID0gYm9vbGVhbi5Cb29sZWFuQWxnZWJyYSgpCiAgICA+Pj4gZXhwcmVzc2lvbjEgPSBhbGdlYnJhLnBhcnNlKHUnYXBwbGUgYW5kIChvcmFuZ2VzIG9yIGJhbmFuYSkgYW5kIG5vdCBiYW5hbmEnLCBzaW1wbGlmeT1GYWxzZSkKICAgID4+PiBleHByZXNzaW9uMQogICAgQU5EKFN5bWJvbCgnYXBwbGUnKSwgT1IoU3ltYm9sKCdvcmFuZ2VzJyksIFN5bWJvbCgnYmFuYW5hJykpLCBOT1QoU3ltYm9sKCdiYW5hbmEnKSkpCgogICAgPj4+IGV4cHJlc3Npb24yID0gYWxnZWJyYS5wYXJzZSgnKG9yYW5nZXMgfCBiYW5hbmEpIGFuZCBub3QgYmFuYW5hICYgYXBwbGUnLCBzaW1wbGlmeT1UcnVlKQogICAgPj4+IGV4cHJlc3Npb24yCiAgICBBTkQoU3ltYm9sKCdhcHBsZScpLCBOT1QoU3ltYm9sKCdiYW5hbmEnKSksIFN5bWJvbCgnb3JhbmdlcycpKQoKICAgID4+PiBleHByZXNzaW9uMSA9PSBleHByZXNzaW9uMgogICAgRmFsc2UKICAgID4+PiBleHByZXNzaW9uMS5zaW1wbGlmeSgpID09IGV4cHJlc3Npb24yCiAgICBUcnVlCgoKRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tCgpodHRwOi8vcmVhZHRoZWRvY3Mub3JnL2RvY3MvYm9vbGVhbnB5L2VuL2xhdGVzdC8KCgpJbnN0YWxsYXRpb24KLS0tLS0tLS0tLS0tCgpJbnN0YWxsYXRpb24gdmlhIHBpcAp+fn5+fn5+fn5+fn5+fn5+fn5+fgoKVG8gaW5zdGFsbCBib29sZWFuLnB5LCB5b3UgbmVlZCB0byBoYXZlIHRoZSBmb2xsb3dpbmcgcGllY2VzIG9mIHNvZnR3YXJlCm9uIHlvdXIgY29tcHV0ZXI6CgotICBQeXRob24gMy42KwotICBwaXAKCllvdSB0aGVuIG9ubHkgbmVlZCB0byBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kOgoKYGBwaXAgaW5zdGFsbCBib29sZWFuLnB5YGAKCgpJbnN0YWxsYXRpb24gdmlhIHBhY2thZ2UgbWFuYWdlcnMKfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgpUaGVyZSBhcmUgcGFja2FnZXMgYXZhaWxhYmxlIGZvciBlYXN5IGluc3RhbGwgb24gc29tZSBvcGVyYXRpbmcgc3lzdGVtcy4KWW91IGFyZSB3ZWxjb21lIHRvIGhlbHAgdXMgcGFja2FnZSB0aGlzIHRvb2wgZm9yIG1vcmUgZGlzdHJpYnV0aW9ucyEKCi0gIGJvb2xlYW4ucHkgaGFzIGJlZW4gcGFja2FnZWQgYXMgQXJjaCBMaW51eCwgRmVkb3JhLCBvcGVuU3VzLAogICBuaXhwa2dzLCBHdWl4LCBEcmFnb25GbHkgYW5kIEZyZWVCU0QgCiAgIGBwYWNrYWdlcyA8aHR0cHM6Ly9yZXBvbG9neS5vcmcvcHJvamVjdC9weXRob246Ym9vbGVhbi5weS92ZXJzaW9ucz5gX18gLgoKSW4gcGFydGljdWxhcjoKCi0gIEFyY2ggTGludXggKEFVUik6CiAgIGBweXRob24tYm9vbGVhbi5weSA8aHR0cHM6Ly9hdXIuYXJjaGxpbnV4Lm9yZy9wYWNrYWdlcy9weXRob24tYm9vbGVhbi5weS8+YF9fCi0gIEZlZG9yYToKICAgYHB5dGhvbi1ib29sZWFuLnB5IDxodHRwczovL2FwcHMuZmVkb3JhcHJvamVjdC5vcmcvcGFja2FnZXMvcHl0aG9uLWJvb2xlYW4ucHk+YF9fCi0gIG9wZW5TVVNFOgogICBgcHl0aG9uLWJvb2xlYW4ucHkgPGh0dHBzOi8vc29mdHdhcmUub3BlbnN1c2Uub3JnL3BhY2thZ2UvcHl0aG9uLWJvb2xlYW4ucHk+YF9fCgoKVGVzdGluZwotLS0tLS0tCgpUZXN0IGBgYm9vbGVhbi5weWBgIHdpdGggeW91ciBjdXJyZW50IFB5dGhvbiBlbnZpcm9ubWVudDoKCmBgcHl0aG9uIHNldHVwLnB5IHRlc3RgYAoKVGVzdCB3aXRoIGFsbCBvZiB0aGUgc3VwcG9ydGVkIFB5dGhvbiBlbnZpcm9ubWVudHMgdXNpbmcgYGB0b3hgYDoKCjo6CgogICAgcGlwIGluc3RhbGwgLXIgcmVxdWlyZW1lbnRzLWRldi50eHQKICAgIHRveAoKSWYgYGB0b3hgYCB0aHJvd3MgYGBJbnRlcnByZXRlck5vdEZvdW5kYGAsIGxpbWl0IGl0IHRvIHB5dGhvbgppbnRlcnByZXRlcnMgdGhhdCBhcmUgYWN0dWFsbHkgaW5zdGFsbGVkIG9uIHlvdXIgbWFjaGluZToKCjo6CgogICAgdG94IC1lIHB5MzYKCkFsdGVybmF0aXZlbHkgdXNlIHB5dGVzdC4KCgpMaWNlbnNlCi0tLS0tLS0KCkNvcHlyaWdodCAoYykgU2ViYXN0aWFuIEtyYWVtZXIsIGJhc3RpLmtyQGdtYWlsLmNvbSBhbmQgb3RoZXJzClNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UKCi4uIHxCdWlsZCBTdGF0dXN8IGltYWdlOjogaHR0cHM6Ly90cmF2aXMtY2kub3JnL2Jhc3Rpa3IvYm9vbGVhbi5weS5zdmc/YnJhbmNoPW1hc3RlcgogICA6dGFyZ2V0OiBodHRwczovL3RyYXZpcy1jaS5vcmcvYmFzdGlrci9ib29sZWFuLnB5Cg==", + "contentType": "text/prs.fallenstein.rst", + "encoding": "base64" } } } @@ -135,8 +129,9 @@ "license": { "name": "declared license file: LICENSE", "text": { - "content": " GNU LESSER GENERAL PUBLIC LICENSE\n Version 2.1, February 1999\n\n Copyright (C) 1991, 1999 Free Software Foundation, Inc.\n 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n[This is the first released version of the Lesser GPL. It also counts\n as the successor of the GNU Library Public License, version 2, hence\n the version number 2.1.]\n\n Preamble\n\n The licenses for most software are designed to take away your\nfreedom to share and change it. By contrast, the GNU General Public\nLicenses are intended to guarantee your freedom to share and change\nfree software--to make sure the software is free for all its users.\n\n This license, the Lesser General Public License, applies to some\nspecially designated software packages--typically libraries--of the\nFree Software Foundation and other authors who decide to use it. You\ncan use it too, but we suggest you first think carefully about whether\nthis license or the ordinary General Public License is the better\nstrategy to use in any particular case, based on the explanations below.\n\n When we speak of free software, we are referring to freedom of use,\nnot price. Our General Public Licenses are designed to make sure that\nyou have the freedom to distribute copies of free software (and charge\nfor this service if you wish); that you receive source code or can get\nit if you want it; that you can change the software and use pieces of\nit in new free programs; and that you are informed that you can do\nthese things.\n\n To protect your rights, we need to make restrictions that forbid\ndistributors to deny you these rights or to ask you to surrender these\nrights. These restrictions translate to certain responsibilities for\nyou if you distribute copies of the library or if you modify it.\n\n For example, if you distribute copies of the library, whether gratis\nor for a fee, you must give the recipients all the rights that we gave\nyou. You must make sure that they, too, receive or can get the source\ncode. If you link other code with the library, you must provide\ncomplete object files to the recipients, so that they can relink them\nwith the library after making changes to the library and recompiling\nit. And you must show them these terms so they know their rights.\n\n We protect your rights with a two-step method: (1) we copyright the\nlibrary, and (2) we offer you this license, which gives you legal\npermission to copy, distribute and/or modify the library.\n\n To protect each distributor, we want to make it very clear that\nthere is no warranty for the free library. Also, if the library is\nmodified by someone else and passed on, the recipients should know\nthat what they have is not the original version, so that the original\nauthor's reputation will not be affected by problems that might be\nintroduced by others.\n\f\n Finally, software patents pose a constant threat to the existence of\nany free program. We wish to make sure that a company cannot\neffectively restrict the users of a free program by obtaining a\nrestrictive license from a patent holder. Therefore, we insist that\nany patent license obtained for a version of the library must be\nconsistent with the full freedom of use specified in this license.\n\n Most GNU software, including some libraries, is covered by the\nordinary GNU General Public License. This license, the GNU Lesser\nGeneral Public License, applies to certain designated libraries, and\nis quite different from the ordinary General Public License. We use\nthis license for certain libraries in order to permit linking those\nlibraries into non-free programs.\n\n When a program is linked with a library, whether statically or using\na shared library, the combination of the two is legally speaking a\ncombined work, a derivative of the original library. The ordinary\nGeneral Public License therefore permits such linking only if the\nentire combination fits its criteria of freedom. The Lesser General\nPublic License permits more lax criteria for linking other code with\nthe library.\n\n We call this license the \"Lesser\" General Public License because it\ndoes Less to protect the user's freedom than the ordinary General\nPublic License. It also provides other free software developers Less\nof an advantage over competing non-free programs. These disadvantages\nare the reason we use the ordinary General Public License for many\nlibraries. However, the Lesser license provides advantages in certain\nspecial circumstances.\n\n For example, on rare occasions, there may be a special need to\nencourage the widest possible use of a certain library, so that it becomes\na de-facto standard. To achieve this, non-free programs must be\nallowed to use the library. A more frequent case is that a free\nlibrary does the same job as widely used non-free libraries. In this\ncase, there is little to gain by limiting the free library to free\nsoftware only, so we use the Lesser General Public License.\n\n In other cases, permission to use a particular library in non-free\nprograms enables a greater number of people to use a large body of\nfree software. For example, permission to use the GNU C Library in\nnon-free programs enables many more people to use the whole GNU\noperating system, as well as its variant, the GNU/Linux operating\nsystem.\n\n Although the Lesser General Public License is Less protective of the\nusers' freedom, it does ensure that the user of a program that is\nlinked with the Library has the freedom and the wherewithal to run\nthat program using a modified version of the Library.\n\n The precise terms and conditions for copying, distribution and\nmodification follow. Pay close attention to the difference between a\n\"work based on the library\" and a \"work that uses the library\". The\nformer contains code derived from the library, whereas the latter must\nbe combined with the library in order to run.\n\f\n GNU LESSER GENERAL PUBLIC LICENSE\n TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n 0. This License Agreement applies to any software library or other\nprogram which contains a notice placed by the copyright holder or\nother authorized party saying it may be distributed under the terms of\nthis Lesser General Public License (also called \"this License\").\nEach licensee is addressed as \"you\".\n\n A \"library\" means a collection of software functions and/or data\nprepared so as to be conveniently linked with application programs\n(which use some of those functions and data) to form executables.\n\n The \"Library\", below, refers to any such software library or work\nwhich has been distributed under these terms. A \"work based on the\nLibrary\" means either the Library or any derivative work under\ncopyright law: that is to say, a work containing the Library or a\nportion of it, either verbatim or with modifications and/or translated\nstraightforwardly into another language. (Hereinafter, translation is\nincluded without limitation in the term \"modification\".)\n\n \"Source code\" for a work means the preferred form of the work for\nmaking modifications to it. For a library, complete source code means\nall the source code for all modules it contains, plus any associated\ninterface definition files, plus the scripts used to control compilation\nand installation of the library.\n\n Activities other than copying, distribution and modification are not\ncovered by this License; they are outside its scope. The act of\nrunning a program using the Library is not restricted, and output from\nsuch a program is covered only if its contents constitute a work based\non the Library (independent of the use of the Library in a tool for\nwriting it). Whether that is true depends on what the Library does\nand what the program that uses the Library does.\n\n 1. You may copy and distribute verbatim copies of the Library's\ncomplete source code as you receive it, in any medium, provided that\nyou conspicuously and appropriately publish on each copy an\nappropriate copyright notice and disclaimer of warranty; keep intact\nall the notices that refer to this License and to the absence of any\nwarranty; and distribute a copy of this License along with the\nLibrary.\n\n You may charge a fee for the physical act of transferring a copy,\nand you may at your option offer warranty protection in exchange for a\nfee.\n\f\n 2. You may modify your copy or copies of the Library or any portion\nof it, thus forming a work based on the Library, and copy and\ndistribute such modifications or work under the terms of Section 1\nabove, provided that you also meet all of these conditions:\n\n a) The modified work must itself be a software library.\n\n b) You must cause the files modified to carry prominent notices\n stating that you changed the files and the date of any change.\n\n c) You must cause the whole of the work to be licensed at no\n charge to all third parties under the terms of this License.\n\n d) If a facility in the modified Library refers to a function or a\n table of data to be supplied by an application program that uses\n the facility, other than as an argument passed when the facility\n is invoked, then you must make a good faith effort to ensure that,\n in the event an application does not supply such function or\n table, the facility still operates, and performs whatever part of\n its purpose remains meaningful.\n\n (For example, a function in a library to compute square roots has\n a purpose that is entirely well-defined independent of the\n application. Therefore, Subsection 2d requires that any\n application-supplied function or table used by this function must\n be optional: if the application does not supply it, the square\n root function must still compute square roots.)\n\nThese requirements apply to the modified work as a whole. If\nidentifiable sections of that work are not derived from the Library,\nand can be reasonably considered independent and separate works in\nthemselves, then this License, and its terms, do not apply to those\nsections when you distribute them as separate works. But when you\ndistribute the same sections as part of a whole which is a work based\non the Library, the distribution of the whole must be on the terms of\nthis License, whose permissions for other licensees extend to the\nentire whole, and thus to each and every part regardless of who wrote\nit.\n\nThus, it is not the intent of this section to claim rights or contest\nyour rights to work written entirely by you; rather, the intent is to\nexercise the right to control the distribution of derivative or\ncollective works based on the Library.\n\nIn addition, mere aggregation of another work not based on the Library\nwith the Library (or with a work based on the Library) on a volume of\na storage or distribution medium does not bring the other work under\nthe scope of this License.\n\n 3. You may opt to apply the terms of the ordinary GNU General Public\nLicense instead of this License to a given copy of the Library. To do\nthis, you must alter all the notices that refer to this License, so\nthat they refer to the ordinary GNU General Public License, version 2,\ninstead of to this License. (If a newer version than version 2 of the\nordinary GNU General Public License has appeared, then you can specify\nthat version instead if you wish.) Do not make any other change in\nthese notices.\n\f\n Once this change is made in a given copy, it is irreversible for\nthat copy, so the ordinary GNU General Public License applies to all\nsubsequent copies and derivative works made from that copy.\n\n This option is useful when you wish to copy part of the code of\nthe Library into a program that is not a library.\n\n 4. You may copy and distribute the Library (or a portion or\nderivative of it, under Section 2) in object code or executable form\nunder the terms of Sections 1 and 2 above provided that you accompany\nit with the complete corresponding machine-readable source code, which\nmust be distributed under the terms of Sections 1 and 2 above on a\nmedium customarily used for software interchange.\n\n If distribution of object code is made by offering access to copy\nfrom a designated place, then offering equivalent access to copy the\nsource code from the same place satisfies the requirement to\ndistribute the source code, even though third parties are not\ncompelled to copy the source along with the object code.\n\n 5. A program that contains no derivative of any portion of the\nLibrary, but is designed to work with the Library by being compiled or\nlinked with it, is called a \"work that uses the Library\". Such a\nwork, in isolation, is not a derivative work of the Library, and\ntherefore falls outside the scope of this License.\n\n However, linking a \"work that uses the Library\" with the Library\ncreates an executable that is a derivative of the Library (because it\ncontains portions of the Library), rather than a \"work that uses the\nlibrary\". The executable is therefore covered by this License.\nSection 6 states terms for distribution of such executables.\n\n When a \"work that uses the Library\" uses material from a header file\nthat is part of the Library, the object code for the work may be a\nderivative work of the Library even though the source code is not.\nWhether this is true is especially significant if the work can be\nlinked without the Library, or if the work is itself a library. The\nthreshold for this to be true is not precisely defined by law.\n\n If such an object file uses only numerical parameters, data\nstructure layouts and accessors, and small macros and small inline\nfunctions (ten lines or less in length), then the use of the object\nfile is unrestricted, regardless of whether it is legally a derivative\nwork. (Executables containing this object code plus portions of the\nLibrary will still fall under Section 6.)\n\n Otherwise, if the work is a derivative of the Library, you may\ndistribute the object code for the work under the terms of Section 6.\nAny executables containing that work also fall under Section 6,\nwhether or not they are linked directly with the Library itself.\n\f\n 6. As an exception to the Sections above, you may also combine or\nlink a \"work that uses the Library\" with the Library to produce a\nwork containing portions of the Library, and distribute that work\nunder terms of your choice, provided that the terms permit\nmodification of the work for the customer's own use and reverse\nengineering for debugging such modifications.\n\n You must give prominent notice with each copy of the work that the\nLibrary is used in it and that the Library and its use are covered by\nthis License. You must supply a copy of this License. If the work\nduring execution displays copyright notices, you must include the\ncopyright notice for the Library among them, as well as a reference\ndirecting the user to the copy of this License. Also, you must do one\nof these things:\n\n a) Accompany the work with the complete corresponding\n machine-readable source code for the Library including whatever\n changes were used in the work (which must be distributed under\n Sections 1 and 2 above); and, if the work is an executable linked\n with the Library, with the complete machine-readable \"work that\n uses the Library\", as object code and/or source code, so that the\n user can modify the Library and then relink to produce a modified\n executable containing the modified Library. (It is understood\n that the user who changes the contents of definitions files in the\n Library will not necessarily be able to recompile the application\n to use the modified definitions.)\n\n b) Use a suitable shared library mechanism for linking with the\n Library. A suitable mechanism is one that (1) uses at run time a\n copy of the library already present on the user's computer system,\n rather than copying library functions into the executable, and (2)\n will operate properly with a modified version of the library, if\n the user installs one, as long as the modified version is\n interface-compatible with the version that the work was made with.\n\n c) Accompany the work with a written offer, valid for at\n least three years, to give the same user the materials\n specified in Subsection 6a, above, for a charge no more\n than the cost of performing this distribution.\n\n d) If distribution of the work is made by offering access to copy\n from a designated place, offer equivalent access to copy the above\n specified materials from the same place.\n\n e) Verify that the user has already received a copy of these\n materials or that you have already sent this user a copy.\n\n For an executable, the required form of the \"work that uses the\nLibrary\" must include any data and utility programs needed for\nreproducing the executable from it. However, as a special exception,\nthe materials to be distributed need not include anything that is\nnormally distributed (in either source or binary form) with the major\ncomponents (compiler, kernel, and so on) of the operating system on\nwhich the executable runs, unless that component itself accompanies\nthe executable.\n\n It may happen that this requirement contradicts the license\nrestrictions of other proprietary libraries that do not normally\naccompany the operating system. Such a contradiction means you cannot\nuse both them and the Library together in an executable that you\ndistribute.\n\f\n 7. You may place library facilities that are a work based on the\nLibrary side-by-side in a single library together with other library\nfacilities not covered by this License, and distribute such a combined\nlibrary, provided that the separate distribution of the work based on\nthe Library and of the other library facilities is otherwise\npermitted, and provided that you do these two things:\n\n a) Accompany the combined library with a copy of the same work\n based on the Library, uncombined with any other library\n facilities. This must be distributed under the terms of the\n Sections above.\n\n b) Give prominent notice with the combined library of the fact\n that part of it is a work based on the Library, and explaining\n where to find the accompanying uncombined form of the same work.\n\n 8. You may not copy, modify, sublicense, link with, or distribute\nthe Library except as expressly provided under this License. Any\nattempt otherwise to copy, modify, sublicense, link with, or\ndistribute the Library is void, and will automatically terminate your\nrights under this License. However, parties who have received copies,\nor rights, from you under this License will not have their licenses\nterminated so long as such parties remain in full compliance.\n\n 9. You are not required to accept this License, since you have not\nsigned it. However, nothing else grants you permission to modify or\ndistribute the Library or its derivative works. These actions are\nprohibited by law if you do not accept this License. Therefore, by\nmodifying or distributing the Library (or any work based on the\nLibrary), you indicate your acceptance of this License to do so, and\nall its terms and conditions for copying, distributing or modifying\nthe Library or works based on it.\n\n 10. Each time you redistribute the Library (or any work based on the\nLibrary), the recipient automatically receives a license from the\noriginal licensor to copy, distribute, link with or modify the Library\nsubject to these terms and conditions. You may not impose any further\nrestrictions on the recipients' exercise of the rights granted herein.\nYou are not responsible for enforcing compliance by third parties with\nthis License.\n\f\n 11. If, as a consequence of a court judgment or allegation of patent\ninfringement or for any other reason (not limited to patent issues),\nconditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License. If you cannot\ndistribute so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you\nmay not distribute the Library at all. For example, if a patent\nlicense would not permit royalty-free redistribution of the Library by\nall those who receive copies directly or indirectly through you, then\nthe only way you could satisfy both it and this License would be to\nrefrain entirely from distribution of the Library.\n\nIf any portion of this section is held invalid or unenforceable under any\nparticular circumstance, the balance of the section is intended to apply,\nand the section as a whole is intended to apply in other circumstances.\n\nIt is not the purpose of this section to induce you to infringe any\npatents or other property right claims or to contest validity of any\nsuch claims; this section has the sole purpose of protecting the\nintegrity of the free software distribution system which is\nimplemented by public license practices. Many people have made\ngenerous contributions to the wide range of software distributed\nthrough that system in reliance on consistent application of that\nsystem; it is up to the author/donor to decide if he or she is willing\nto distribute software through any other system and a licensee cannot\nimpose that choice.\n\nThis section is intended to make thoroughly clear what is believed to\nbe a consequence of the rest of this License.\n\n 12. If the distribution and/or use of the Library is restricted in\ncertain countries either by patents or by copyrighted interfaces, the\noriginal copyright holder who places the Library under this License may add\nan explicit geographical distribution limitation excluding those countries,\nso that distribution is permitted only in or among countries not thus\nexcluded. In such case, this License incorporates the limitation as if\nwritten in the body of this License.\n\n 13. The Free Software Foundation may publish revised and/or new\nversions of the Lesser General Public License from time to time.\nSuch new versions will be similar in spirit to the present version,\nbut may differ in detail to address new problems or concerns.\n\nEach version is given a distinguishing version number. If the Library\nspecifies a version number of this License which applies to it and\n\"any later version\", you have the option of following the terms and\nconditions either of that version or of any later version published by\nthe Free Software Foundation. If the Library does not specify a\nlicense version number, you may choose any version ever published by\nthe Free Software Foundation.\n\f\n 14. If you wish to incorporate parts of the Library into other free\nprograms whose distribution conditions are incompatible with these,\nwrite to the author to ask for permission. For software which is\ncopyrighted by the Free Software Foundation, write to the Free\nSoftware Foundation; we sometimes make exceptions for this. Our\ndecision will be guided by the two goals of preserving the free status\nof all derivatives of our free software and of promoting the sharing\nand reuse of software generally.\n\n NO WARRANTY\n\n 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO\nWARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.\nEXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR\nOTHER PARTIES PROVIDE THE LIBRARY \"AS IS\" WITHOUT WARRANTY OF ANY\nKIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE\nLIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME\nTHE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN\nWRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY\nAND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU\nFOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR\nCONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE\nLIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING\nRENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A\nFAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF\nSUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\nDAMAGES.\n\n END OF TERMS AND CONDITIONS\n\f\n How to Apply These Terms to Your New Libraries\n\n If you develop a new library, and you want it to be of the greatest\npossible use to the public, we recommend making it free software that\neveryone can redistribute and change. You can do so by permitting\nredistribution under these terms (or, alternatively, under the terms of the\nordinary General Public License).\n\n To apply these terms, attach the following notices to the library. It is\nsafest to attach them to the start of each source file to most effectively\nconvey the exclusion of warranty; and each file should have at least the\n\"copyright\" line and a pointer to where the full notice is found.\n\n \n Copyright (C) \n\n This library is free software; you can redistribute it and/or\n modify it under the terms of the GNU Lesser General Public\n License as published by the Free Software Foundation; either\n version 2.1 of the License, or (at your option) any later version.\n\n This library is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public\n License along with this library; if not, write to the Free Software\n Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n\nAlso add information on how to contact you by electronic and paper mail.\n\nYou should also get your employer (if you work as a programmer) or your\nschool, if any, to sign a \"copyright disclaimer\" for the library, if\nnecessary. Here is a sample; alter the names:\n\n Yoyodyne, Inc., hereby disclaims all copyright interest in the\n library `Frob' (a library for tweaking knobs) written by James Random Hacker.\n\n , 1 April 1990\n Ty Coon, President of Vice\n\nThat's all there is to it!\n", - "contentType": "text/plain" + "content": "ICAgICAgICAgICAgICAgICAgR05VIExFU1NFUiBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFCiAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAyLjEsIEZlYnJ1YXJ5IDE5OTkKCiBDb3B5cmlnaHQgKEMpIDE5OTEsIDE5OTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKIEV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcwogb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCgpbVGhpcyBpcyB0aGUgZmlyc3QgcmVsZWFzZWQgdmVyc2lvbiBvZiB0aGUgTGVzc2VyIEdQTC4gIEl0IGFsc28gY291bnRzCiBhcyB0aGUgc3VjY2Vzc29yIG9mIHRoZSBHTlUgTGlicmFyeSBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLCBoZW5jZQogdGhlIHZlcnNpb24gbnVtYmVyIDIuMS5dCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlYW1ibGUKCiAgVGhlIGxpY2Vuc2VzIGZvciBtb3N0IHNvZnR3YXJlIGFyZSBkZXNpZ25lZCB0byB0YWtlIGF3YXkgeW91cgpmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgaXQuICBCeSBjb250cmFzdCwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwpMaWNlbnNlcyBhcmUgaW50ZW5kZWQgdG8gZ3VhcmFudGVlIHlvdXIgZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlCmZyZWUgc29mdHdhcmUtLXRvIG1ha2Ugc3VyZSB0aGUgc29mdHdhcmUgaXMgZnJlZSBmb3IgYWxsIGl0cyB1c2Vycy4KCiAgVGhpcyBsaWNlbnNlLCB0aGUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFwcGxpZXMgdG8gc29tZQpzcGVjaWFsbHkgZGVzaWduYXRlZCBzb2Z0d2FyZSBwYWNrYWdlcy0tdHlwaWNhbGx5IGxpYnJhcmllcy0tb2YgdGhlCkZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBhbmQgb3RoZXIgYXV0aG9ycyB3aG8gZGVjaWRlIHRvIHVzZSBpdC4gIFlvdQpjYW4gdXNlIGl0IHRvbywgYnV0IHdlIHN1Z2dlc3QgeW91IGZpcnN0IHRoaW5rIGNhcmVmdWxseSBhYm91dCB3aGV0aGVyCnRoaXMgbGljZW5zZSBvciB0aGUgb3JkaW5hcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyB0aGUgYmV0dGVyCnN0cmF0ZWd5IHRvIHVzZSBpbiBhbnkgcGFydGljdWxhciBjYXNlLCBiYXNlZCBvbiB0aGUgZXhwbGFuYXRpb25zIGJlbG93LgoKICBXaGVuIHdlIHNwZWFrIG9mIGZyZWUgc29mdHdhcmUsIHdlIGFyZSByZWZlcnJpbmcgdG8gZnJlZWRvbSBvZiB1c2UsCm5vdCBwcmljZS4gIE91ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlcyBhcmUgZGVzaWduZWQgdG8gbWFrZSBzdXJlIHRoYXQKeW91IGhhdmUgdGhlIGZyZWVkb20gdG8gZGlzdHJpYnV0ZSBjb3BpZXMgb2YgZnJlZSBzb2Z0d2FyZSAoYW5kIGNoYXJnZQpmb3IgdGhpcyBzZXJ2aWNlIGlmIHlvdSB3aXNoKTsgdGhhdCB5b3UgcmVjZWl2ZSBzb3VyY2UgY29kZSBvciBjYW4gZ2V0Cml0IGlmIHlvdSB3YW50IGl0OyB0aGF0IHlvdSBjYW4gY2hhbmdlIHRoZSBzb2Z0d2FyZSBhbmQgdXNlIHBpZWNlcyBvZgppdCBpbiBuZXcgZnJlZSBwcm9ncmFtczsgYW5kIHRoYXQgeW91IGFyZSBpbmZvcm1lZCB0aGF0IHlvdSBjYW4gZG8KdGhlc2UgdGhpbmdzLgoKICBUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIG1ha2UgcmVzdHJpY3Rpb25zIHRoYXQgZm9yYmlkCmRpc3RyaWJ1dG9ycyB0byBkZW55IHlvdSB0aGVzZSByaWdodHMgb3IgdG8gYXNrIHlvdSB0byBzdXJyZW5kZXIgdGhlc2UKcmlnaHRzLiAgVGhlc2UgcmVzdHJpY3Rpb25zIHRyYW5zbGF0ZSB0byBjZXJ0YWluIHJlc3BvbnNpYmlsaXRpZXMgZm9yCnlvdSBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIGxpYnJhcnkgb3IgaWYgeW91IG1vZGlmeSBpdC4KCiAgRm9yIGV4YW1wbGUsIGlmIHlvdSBkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUgbGlicmFyeSwgd2hldGhlciBncmF0aXMKb3IgZm9yIGEgZmVlLCB5b3UgbXVzdCBnaXZlIHRoZSByZWNpcGllbnRzIGFsbCB0aGUgcmlnaHRzIHRoYXQgd2UgZ2F2ZQp5b3UuICBZb3UgbXVzdCBtYWtlIHN1cmUgdGhhdCB0aGV5LCB0b28sIHJlY2VpdmUgb3IgY2FuIGdldCB0aGUgc291cmNlCmNvZGUuICBJZiB5b3UgbGluayBvdGhlciBjb2RlIHdpdGggdGhlIGxpYnJhcnksIHlvdSBtdXN0IHByb3ZpZGUKY29tcGxldGUgb2JqZWN0IGZpbGVzIHRvIHRoZSByZWNpcGllbnRzLCBzbyB0aGF0IHRoZXkgY2FuIHJlbGluayB0aGVtCndpdGggdGhlIGxpYnJhcnkgYWZ0ZXIgbWFraW5nIGNoYW5nZXMgdG8gdGhlIGxpYnJhcnkgYW5kIHJlY29tcGlsaW5nCml0LiAgQW5kIHlvdSBtdXN0IHNob3cgdGhlbSB0aGVzZSB0ZXJtcyBzbyB0aGV5IGtub3cgdGhlaXIgcmlnaHRzLgoKICBXZSBwcm90ZWN0IHlvdXIgcmlnaHRzIHdpdGggYSB0d28tc3RlcCBtZXRob2Q6ICgxKSB3ZSBjb3B5cmlnaHQgdGhlCmxpYnJhcnksIGFuZCAoMikgd2Ugb2ZmZXIgeW91IHRoaXMgbGljZW5zZSwgd2hpY2ggZ2l2ZXMgeW91IGxlZ2FsCnBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IHRoZSBsaWJyYXJ5LgoKICBUbyBwcm90ZWN0IGVhY2ggZGlzdHJpYnV0b3IsIHdlIHdhbnQgdG8gbWFrZSBpdCB2ZXJ5IGNsZWFyIHRoYXQKdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoZSBmcmVlIGxpYnJhcnkuICBBbHNvLCBpZiB0aGUgbGlicmFyeSBpcwptb2RpZmllZCBieSBzb21lb25lIGVsc2UgYW5kIHBhc3NlZCBvbiwgdGhlIHJlY2lwaWVudHMgc2hvdWxkIGtub3cKdGhhdCB3aGF0IHRoZXkgaGF2ZSBpcyBub3QgdGhlIG9yaWdpbmFsIHZlcnNpb24sIHNvIHRoYXQgdGhlIG9yaWdpbmFsCmF1dGhvcidzIHJlcHV0YXRpb24gd2lsbCBub3QgYmUgYWZmZWN0ZWQgYnkgcHJvYmxlbXMgdGhhdCBtaWdodCBiZQppbnRyb2R1Y2VkIGJ5IG90aGVycy4KDAogIEZpbmFsbHksIHNvZnR3YXJlIHBhdGVudHMgcG9zZSBhIGNvbnN0YW50IHRocmVhdCB0byB0aGUgZXhpc3RlbmNlIG9mCmFueSBmcmVlIHByb2dyYW0uICBXZSB3aXNoIHRvIG1ha2Ugc3VyZSB0aGF0IGEgY29tcGFueSBjYW5ub3QKZWZmZWN0aXZlbHkgcmVzdHJpY3QgdGhlIHVzZXJzIG9mIGEgZnJlZSBwcm9ncmFtIGJ5IG9idGFpbmluZyBhCnJlc3RyaWN0aXZlIGxpY2Vuc2UgZnJvbSBhIHBhdGVudCBob2xkZXIuICBUaGVyZWZvcmUsIHdlIGluc2lzdCB0aGF0CmFueSBwYXRlbnQgbGljZW5zZSBvYnRhaW5lZCBmb3IgYSB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5IG11c3QgYmUKY29uc2lzdGVudCB3aXRoIHRoZSBmdWxsIGZyZWVkb20gb2YgdXNlIHNwZWNpZmllZCBpbiB0aGlzIGxpY2Vuc2UuCgogIE1vc3QgR05VIHNvZnR3YXJlLCBpbmNsdWRpbmcgc29tZSBsaWJyYXJpZXMsIGlzIGNvdmVyZWQgYnkgdGhlCm9yZGluYXJ5IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBsaWNlbnNlLCB0aGUgR05VIExlc3NlcgpHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBhcHBsaWVzIHRvIGNlcnRhaW4gZGVzaWduYXRlZCBsaWJyYXJpZXMsIGFuZAppcyBxdWl0ZSBkaWZmZXJlbnQgZnJvbSB0aGUgb3JkaW5hcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFdlIHVzZQp0aGlzIGxpY2Vuc2UgZm9yIGNlcnRhaW4gbGlicmFyaWVzIGluIG9yZGVyIHRvIHBlcm1pdCBsaW5raW5nIHRob3NlCmxpYnJhcmllcyBpbnRvIG5vbi1mcmVlIHByb2dyYW1zLgoKICBXaGVuIGEgcHJvZ3JhbSBpcyBsaW5rZWQgd2l0aCBhIGxpYnJhcnksIHdoZXRoZXIgc3RhdGljYWxseSBvciB1c2luZwphIHNoYXJlZCBsaWJyYXJ5LCB0aGUgY29tYmluYXRpb24gb2YgdGhlIHR3byBpcyBsZWdhbGx5IHNwZWFraW5nIGEKY29tYmluZWQgd29yaywgYSBkZXJpdmF0aXZlIG9mIHRoZSBvcmlnaW5hbCBsaWJyYXJ5LiAgVGhlIG9yZGluYXJ5CkdlbmVyYWwgUHVibGljIExpY2Vuc2UgdGhlcmVmb3JlIHBlcm1pdHMgc3VjaCBsaW5raW5nIG9ubHkgaWYgdGhlCmVudGlyZSBjb21iaW5hdGlvbiBmaXRzIGl0cyBjcml0ZXJpYSBvZiBmcmVlZG9tLiAgVGhlIExlc3NlciBHZW5lcmFsClB1YmxpYyBMaWNlbnNlIHBlcm1pdHMgbW9yZSBsYXggY3JpdGVyaWEgZm9yIGxpbmtpbmcgb3RoZXIgY29kZSB3aXRoCnRoZSBsaWJyYXJ5LgoKICBXZSBjYWxsIHRoaXMgbGljZW5zZSB0aGUgIkxlc3NlciIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBiZWNhdXNlIGl0CmRvZXMgTGVzcyB0byBwcm90ZWN0IHRoZSB1c2VyJ3MgZnJlZWRvbSB0aGFuIHRoZSBvcmRpbmFyeSBHZW5lcmFsClB1YmxpYyBMaWNlbnNlLiAgSXQgYWxzbyBwcm92aWRlcyBvdGhlciBmcmVlIHNvZnR3YXJlIGRldmVsb3BlcnMgTGVzcwpvZiBhbiBhZHZhbnRhZ2Ugb3ZlciBjb21wZXRpbmcgbm9uLWZyZWUgcHJvZ3JhbXMuICBUaGVzZSBkaXNhZHZhbnRhZ2VzCmFyZSB0aGUgcmVhc29uIHdlIHVzZSB0aGUgb3JkaW5hcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbWFueQpsaWJyYXJpZXMuICBIb3dldmVyLCB0aGUgTGVzc2VyIGxpY2Vuc2UgcHJvdmlkZXMgYWR2YW50YWdlcyBpbiBjZXJ0YWluCnNwZWNpYWwgY2lyY3Vtc3RhbmNlcy4KCiAgRm9yIGV4YW1wbGUsIG9uIHJhcmUgb2NjYXNpb25zLCB0aGVyZSBtYXkgYmUgYSBzcGVjaWFsIG5lZWQgdG8KZW5jb3VyYWdlIHRoZSB3aWRlc3QgcG9zc2libGUgdXNlIG9mIGEgY2VydGFpbiBsaWJyYXJ5LCBzbyB0aGF0IGl0IGJlY29tZXMKYSBkZS1mYWN0byBzdGFuZGFyZC4gIFRvIGFjaGlldmUgdGhpcywgbm9uLWZyZWUgcHJvZ3JhbXMgbXVzdCBiZQphbGxvd2VkIHRvIHVzZSB0aGUgbGlicmFyeS4gIEEgbW9yZSBmcmVxdWVudCBjYXNlIGlzIHRoYXQgYSBmcmVlCmxpYnJhcnkgZG9lcyB0aGUgc2FtZSBqb2IgYXMgd2lkZWx5IHVzZWQgbm9uLWZyZWUgbGlicmFyaWVzLiAgSW4gdGhpcwpjYXNlLCB0aGVyZSBpcyBsaXR0bGUgdG8gZ2FpbiBieSBsaW1pdGluZyB0aGUgZnJlZSBsaWJyYXJ5IHRvIGZyZWUKc29mdHdhcmUgb25seSwgc28gd2UgdXNlIHRoZSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KCiAgSW4gb3RoZXIgY2FzZXMsIHBlcm1pc3Npb24gdG8gdXNlIGEgcGFydGljdWxhciBsaWJyYXJ5IGluIG5vbi1mcmVlCnByb2dyYW1zIGVuYWJsZXMgYSBncmVhdGVyIG51bWJlciBvZiBwZW9wbGUgdG8gdXNlIGEgbGFyZ2UgYm9keSBvZgpmcmVlIHNvZnR3YXJlLiAgRm9yIGV4YW1wbGUsIHBlcm1pc3Npb24gdG8gdXNlIHRoZSBHTlUgQyBMaWJyYXJ5IGluCm5vbi1mcmVlIHByb2dyYW1zIGVuYWJsZXMgbWFueSBtb3JlIHBlb3BsZSB0byB1c2UgdGhlIHdob2xlIEdOVQpvcGVyYXRpbmcgc3lzdGVtLCBhcyB3ZWxsIGFzIGl0cyB2YXJpYW50LCB0aGUgR05VL0xpbnV4IG9wZXJhdGluZwpzeXN0ZW0uCgogIEFsdGhvdWdoIHRoZSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBMZXNzIHByb3RlY3RpdmUgb2YgdGhlCnVzZXJzJyBmcmVlZG9tLCBpdCBkb2VzIGVuc3VyZSB0aGF0IHRoZSB1c2VyIG9mIGEgcHJvZ3JhbSB0aGF0IGlzCmxpbmtlZCB3aXRoIHRoZSBMaWJyYXJ5IGhhcyB0aGUgZnJlZWRvbSBhbmQgdGhlIHdoZXJld2l0aGFsIHRvIHJ1bgp0aGF0IHByb2dyYW0gdXNpbmcgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBMaWJyYXJ5LgoKICBUaGUgcHJlY2lzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW9uIGFuZAptb2RpZmljYXRpb24gZm9sbG93LiAgUGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGEKIndvcmsgYmFzZWQgb24gdGhlIGxpYnJhcnkiIGFuZCBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgbGlicmFyeSIuICBUaGUKZm9ybWVyIGNvbnRhaW5zIGNvZGUgZGVyaXZlZCBmcm9tIHRoZSBsaWJyYXJ5LCB3aGVyZWFzIHRoZSBsYXR0ZXIgbXVzdApiZSBjb21iaW5lZCB3aXRoIHRoZSBsaWJyYXJ5IGluIG9yZGVyIHRvIHJ1bi4KDAogICAgICAgICAgICAgICAgICBHTlUgTEVTU0VSIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKICAgVEVSTVMgQU5EIENPTkRJVElPTlMgRk9SIENPUFlJTkcsIERJU1RSSUJVVElPTiBBTkQgTU9ESUZJQ0FUSU9OCgogIDAuIFRoaXMgTGljZW5zZSBBZ3JlZW1lbnQgYXBwbGllcyB0byBhbnkgc29mdHdhcmUgbGlicmFyeSBvciBvdGhlcgpwcm9ncmFtIHdoaWNoIGNvbnRhaW5zIGEgbm90aWNlIHBsYWNlZCBieSB0aGUgY29weXJpZ2h0IGhvbGRlciBvcgpvdGhlciBhdXRob3JpemVkIHBhcnR5IHNheWluZyBpdCBtYXkgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mCnRoaXMgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKGFsc28gY2FsbGVkICJ0aGlzIExpY2Vuc2UiKS4KRWFjaCBsaWNlbnNlZSBpcyBhZGRyZXNzZWQgYXMgInlvdSIuCgogIEEgImxpYnJhcnkiIG1lYW5zIGEgY29sbGVjdGlvbiBvZiBzb2Z0d2FyZSBmdW5jdGlvbnMgYW5kL29yIGRhdGEKcHJlcGFyZWQgc28gYXMgdG8gYmUgY29udmVuaWVudGx5IGxpbmtlZCB3aXRoIGFwcGxpY2F0aW9uIHByb2dyYW1zCih3aGljaCB1c2Ugc29tZSBvZiB0aG9zZSBmdW5jdGlvbnMgYW5kIGRhdGEpIHRvIGZvcm0gZXhlY3V0YWJsZXMuCgogIFRoZSAiTGlicmFyeSIsIGJlbG93LCByZWZlcnMgdG8gYW55IHN1Y2ggc29mdHdhcmUgbGlicmFyeSBvciB3b3JrCndoaWNoIGhhcyBiZWVuIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZXNlIHRlcm1zLiAgQSAid29yayBiYXNlZCBvbiB0aGUKTGlicmFyeSIgbWVhbnMgZWl0aGVyIHRoZSBMaWJyYXJ5IG9yIGFueSBkZXJpdmF0aXZlIHdvcmsgdW5kZXIKY29weXJpZ2h0IGxhdzogdGhhdCBpcyB0byBzYXksIGEgd29yayBjb250YWluaW5nIHRoZSBMaWJyYXJ5IG9yIGEKcG9ydGlvbiBvZiBpdCwgZWl0aGVyIHZlcmJhdGltIG9yIHdpdGggbW9kaWZpY2F0aW9ucyBhbmQvb3IgdHJhbnNsYXRlZApzdHJhaWdodGZvcndhcmRseSBpbnRvIGFub3RoZXIgbGFuZ3VhZ2UuICAoSGVyZWluYWZ0ZXIsIHRyYW5zbGF0aW9uIGlzCmluY2x1ZGVkIHdpdGhvdXQgbGltaXRhdGlvbiBpbiB0aGUgdGVybSAibW9kaWZpY2F0aW9uIi4pCgogICJTb3VyY2UgY29kZSIgZm9yIGEgd29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsgZm9yCm1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgRm9yIGEgbGlicmFyeSwgY29tcGxldGUgc291cmNlIGNvZGUgbWVhbnMKYWxsIHRoZSBzb3VyY2UgY29kZSBmb3IgYWxsIG1vZHVsZXMgaXQgY29udGFpbnMsIHBsdXMgYW55IGFzc29jaWF0ZWQKaW50ZXJmYWNlIGRlZmluaXRpb24gZmlsZXMsIHBsdXMgdGhlIHNjcmlwdHMgdXNlZCB0byBjb250cm9sIGNvbXBpbGF0aW9uCmFuZCBpbnN0YWxsYXRpb24gb2YgdGhlIGxpYnJhcnkuCgogIEFjdGl2aXRpZXMgb3RoZXIgdGhhbiBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kIG1vZGlmaWNhdGlvbiBhcmUgbm90CmNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlOyB0aGV5IGFyZSBvdXRzaWRlIGl0cyBzY29wZS4gIFRoZSBhY3Qgb2YKcnVubmluZyBhIHByb2dyYW0gdXNpbmcgdGhlIExpYnJhcnkgaXMgbm90IHJlc3RyaWN0ZWQsIGFuZCBvdXRwdXQgZnJvbQpzdWNoIGEgcHJvZ3JhbSBpcyBjb3ZlcmVkIG9ubHkgaWYgaXRzIGNvbnRlbnRzIGNvbnN0aXR1dGUgYSB3b3JrIGJhc2VkCm9uIHRoZSBMaWJyYXJ5IChpbmRlcGVuZGVudCBvZiB0aGUgdXNlIG9mIHRoZSBMaWJyYXJ5IGluIGEgdG9vbCBmb3IKd3JpdGluZyBpdCkuICBXaGV0aGVyIHRoYXQgaXMgdHJ1ZSBkZXBlbmRzIG9uIHdoYXQgdGhlIExpYnJhcnkgZG9lcwphbmQgd2hhdCB0aGUgcHJvZ3JhbSB0aGF0IHVzZXMgdGhlIExpYnJhcnkgZG9lcy4KCiAgMS4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcyBvZiB0aGUgTGlicmFyeSdzCmNvbXBsZXRlIHNvdXJjZSBjb2RlIGFzIHlvdSByZWNlaXZlIGl0LCBpbiBhbnkgbWVkaXVtLCBwcm92aWRlZCB0aGF0CnlvdSBjb25zcGljdW91c2x5IGFuZCBhcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuCmFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2UgYW5kIGRpc2NsYWltZXIgb2Ygd2FycmFudHk7IGtlZXAgaW50YWN0CmFsbCB0aGUgbm90aWNlcyB0aGF0IHJlZmVyIHRvIHRoaXMgTGljZW5zZSBhbmQgdG8gdGhlIGFic2VuY2Ugb2YgYW55CndhcnJhbnR5OyBhbmQgZGlzdHJpYnV0ZSBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlIGFsb25nIHdpdGggdGhlCkxpYnJhcnkuCgogIFlvdSBtYXkgY2hhcmdlIGEgZmVlIGZvciB0aGUgcGh5c2ljYWwgYWN0IG9mIHRyYW5zZmVycmluZyBhIGNvcHksCmFuZCB5b3UgbWF5IGF0IHlvdXIgb3B0aW9uIG9mZmVyIHdhcnJhbnR5IHByb3RlY3Rpb24gaW4gZXhjaGFuZ2UgZm9yIGEKZmVlLgoMCiAgMi4gWW91IG1heSBtb2RpZnkgeW91ciBjb3B5IG9yIGNvcGllcyBvZiB0aGUgTGlicmFyeSBvciBhbnkgcG9ydGlvbgpvZiBpdCwgdGh1cyBmb3JtaW5nIGEgd29yayBiYXNlZCBvbiB0aGUgTGlicmFyeSwgYW5kIGNvcHkgYW5kCmRpc3RyaWJ1dGUgc3VjaCBtb2RpZmljYXRpb25zIG9yIHdvcmsgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb24gMQphYm92ZSwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBtZWV0IGFsbCBvZiB0aGVzZSBjb25kaXRpb25zOgoKICAgIGEpIFRoZSBtb2RpZmllZCB3b3JrIG11c3QgaXRzZWxmIGJlIGEgc29mdHdhcmUgbGlicmFyeS4KCiAgICBiKSBZb3UgbXVzdCBjYXVzZSB0aGUgZmlsZXMgbW9kaWZpZWQgdG8gY2FycnkgcHJvbWluZW50IG5vdGljZXMKICAgIHN0YXRpbmcgdGhhdCB5b3UgY2hhbmdlZCB0aGUgZmlsZXMgYW5kIHRoZSBkYXRlIG9mIGFueSBjaGFuZ2UuCgogICAgYykgWW91IG11c3QgY2F1c2UgdGhlIHdob2xlIG9mIHRoZSB3b3JrIHRvIGJlIGxpY2Vuc2VkIGF0IG5vCiAgICBjaGFyZ2UgdG8gYWxsIHRoaXJkIHBhcnRpZXMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZS4KCiAgICBkKSBJZiBhIGZhY2lsaXR5IGluIHRoZSBtb2RpZmllZCBMaWJyYXJ5IHJlZmVycyB0byBhIGZ1bmN0aW9uIG9yIGEKICAgIHRhYmxlIG9mIGRhdGEgdG8gYmUgc3VwcGxpZWQgYnkgYW4gYXBwbGljYXRpb24gcHJvZ3JhbSB0aGF0IHVzZXMKICAgIHRoZSBmYWNpbGl0eSwgb3RoZXIgdGhhbiBhcyBhbiBhcmd1bWVudCBwYXNzZWQgd2hlbiB0aGUgZmFjaWxpdHkKICAgIGlzIGludm9rZWQsIHRoZW4geW91IG11c3QgbWFrZSBhIGdvb2QgZmFpdGggZWZmb3J0IHRvIGVuc3VyZSB0aGF0LAogICAgaW4gdGhlIGV2ZW50IGFuIGFwcGxpY2F0aW9uIGRvZXMgbm90IHN1cHBseSBzdWNoIGZ1bmN0aW9uIG9yCiAgICB0YWJsZSwgdGhlIGZhY2lsaXR5IHN0aWxsIG9wZXJhdGVzLCBhbmQgcGVyZm9ybXMgd2hhdGV2ZXIgcGFydCBvZgogICAgaXRzIHB1cnBvc2UgcmVtYWlucyBtZWFuaW5nZnVsLgoKICAgIChGb3IgZXhhbXBsZSwgYSBmdW5jdGlvbiBpbiBhIGxpYnJhcnkgdG8gY29tcHV0ZSBzcXVhcmUgcm9vdHMgaGFzCiAgICBhIHB1cnBvc2UgdGhhdCBpcyBlbnRpcmVseSB3ZWxsLWRlZmluZWQgaW5kZXBlbmRlbnQgb2YgdGhlCiAgICBhcHBsaWNhdGlvbi4gIFRoZXJlZm9yZSwgU3Vic2VjdGlvbiAyZCByZXF1aXJlcyB0aGF0IGFueQogICAgYXBwbGljYXRpb24tc3VwcGxpZWQgZnVuY3Rpb24gb3IgdGFibGUgdXNlZCBieSB0aGlzIGZ1bmN0aW9uIG11c3QKICAgIGJlIG9wdGlvbmFsOiBpZiB0aGUgYXBwbGljYXRpb24gZG9lcyBub3Qgc3VwcGx5IGl0LCB0aGUgc3F1YXJlCiAgICByb290IGZ1bmN0aW9uIG11c3Qgc3RpbGwgY29tcHV0ZSBzcXVhcmUgcm9vdHMuKQoKVGhlc2UgcmVxdWlyZW1lbnRzIGFwcGx5IHRvIHRoZSBtb2RpZmllZCB3b3JrIGFzIGEgd2hvbGUuICBJZgppZGVudGlmaWFibGUgc2VjdGlvbnMgb2YgdGhhdCB3b3JrIGFyZSBub3QgZGVyaXZlZCBmcm9tIHRoZSBMaWJyYXJ5LAphbmQgY2FuIGJlIHJlYXNvbmFibHkgY29uc2lkZXJlZCBpbmRlcGVuZGVudCBhbmQgc2VwYXJhdGUgd29ya3MgaW4KdGhlbXNlbHZlcywgdGhlbiB0aGlzIExpY2Vuc2UsIGFuZCBpdHMgdGVybXMsIGRvIG5vdCBhcHBseSB0byB0aG9zZQpzZWN0aW9ucyB3aGVuIHlvdSBkaXN0cmlidXRlIHRoZW0gYXMgc2VwYXJhdGUgd29ya3MuICBCdXQgd2hlbiB5b3UKZGlzdHJpYnV0ZSB0aGUgc2FtZSBzZWN0aW9ucyBhcyBwYXJ0IG9mIGEgd2hvbGUgd2hpY2ggaXMgYSB3b3JrIGJhc2VkCm9uIHRoZSBMaWJyYXJ5LCB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSB3aG9sZSBtdXN0IGJlIG9uIHRoZSB0ZXJtcyBvZgp0aGlzIExpY2Vuc2UsIHdob3NlIHBlcm1pc3Npb25zIGZvciBvdGhlciBsaWNlbnNlZXMgZXh0ZW5kIHRvIHRoZQplbnRpcmUgd2hvbGUsIGFuZCB0aHVzIHRvIGVhY2ggYW5kIGV2ZXJ5IHBhcnQgcmVnYXJkbGVzcyBvZiB3aG8gd3JvdGUKaXQuCgpUaHVzLCBpdCBpcyBub3QgdGhlIGludGVudCBvZiB0aGlzIHNlY3Rpb24gdG8gY2xhaW0gcmlnaHRzIG9yIGNvbnRlc3QKeW91ciByaWdodHMgdG8gd29yayB3cml0dGVuIGVudGlyZWx5IGJ5IHlvdTsgcmF0aGVyLCB0aGUgaW50ZW50IGlzIHRvCmV4ZXJjaXNlIHRoZSByaWdodCB0byBjb250cm9sIHRoZSBkaXN0cmlidXRpb24gb2YgZGVyaXZhdGl2ZSBvcgpjb2xsZWN0aXZlIHdvcmtzIGJhc2VkIG9uIHRoZSBMaWJyYXJ5LgoKSW4gYWRkaXRpb24sIG1lcmUgYWdncmVnYXRpb24gb2YgYW5vdGhlciB3b3JrIG5vdCBiYXNlZCBvbiB0aGUgTGlicmFyeQp3aXRoIHRoZSBMaWJyYXJ5IChvciB3aXRoIGEgd29yayBiYXNlZCBvbiB0aGUgTGlicmFyeSkgb24gYSB2b2x1bWUgb2YKYSBzdG9yYWdlIG9yIGRpc3RyaWJ1dGlvbiBtZWRpdW0gZG9lcyBub3QgYnJpbmcgdGhlIG90aGVyIHdvcmsgdW5kZXIKdGhlIHNjb3BlIG9mIHRoaXMgTGljZW5zZS4KCiAgMy4gWW91IG1heSBvcHQgdG8gYXBwbHkgdGhlIHRlcm1zIG9mIHRoZSBvcmRpbmFyeSBHTlUgR2VuZXJhbCBQdWJsaWMKTGljZW5zZSBpbnN0ZWFkIG9mIHRoaXMgTGljZW5zZSB0byBhIGdpdmVuIGNvcHkgb2YgdGhlIExpYnJhcnkuICBUbyBkbwp0aGlzLCB5b3UgbXVzdCBhbHRlciBhbGwgdGhlIG5vdGljZXMgdGhhdCByZWZlciB0byB0aGlzIExpY2Vuc2UsIHNvCnRoYXQgdGhleSByZWZlciB0byB0aGUgb3JkaW5hcnkgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMiwKaW5zdGVhZCBvZiB0byB0aGlzIExpY2Vuc2UuICAoSWYgYSBuZXdlciB2ZXJzaW9uIHRoYW4gdmVyc2lvbiAyIG9mIHRoZQpvcmRpbmFyeSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBoYXMgYXBwZWFyZWQsIHRoZW4geW91IGNhbiBzcGVjaWZ5CnRoYXQgdmVyc2lvbiBpbnN0ZWFkIGlmIHlvdSB3aXNoLikgIERvIG5vdCBtYWtlIGFueSBvdGhlciBjaGFuZ2UgaW4KdGhlc2Ugbm90aWNlcy4KDAogIE9uY2UgdGhpcyBjaGFuZ2UgaXMgbWFkZSBpbiBhIGdpdmVuIGNvcHksIGl0IGlzIGlycmV2ZXJzaWJsZSBmb3IKdGhhdCBjb3B5LCBzbyB0aGUgb3JkaW5hcnkgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXBwbGllcyB0byBhbGwKc3Vic2VxdWVudCBjb3BpZXMgYW5kIGRlcml2YXRpdmUgd29ya3MgbWFkZSBmcm9tIHRoYXQgY29weS4KCiAgVGhpcyBvcHRpb24gaXMgdXNlZnVsIHdoZW4geW91IHdpc2ggdG8gY29weSBwYXJ0IG9mIHRoZSBjb2RlIG9mCnRoZSBMaWJyYXJ5IGludG8gYSBwcm9ncmFtIHRoYXQgaXMgbm90IGEgbGlicmFyeS4KCiAgNC4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IChvciBhIHBvcnRpb24gb3IKZGVyaXZhdGl2ZSBvZiBpdCwgdW5kZXIgU2VjdGlvbiAyKSBpbiBvYmplY3QgY29kZSBvciBleGVjdXRhYmxlIGZvcm0KdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zIDEgYW5kIDIgYWJvdmUgcHJvdmlkZWQgdGhhdCB5b3UgYWNjb21wYW55Cml0IHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcgbWFjaGluZS1yZWFkYWJsZSBzb3VyY2UgY29kZSwgd2hpY2gKbXVzdCBiZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBvbiBhCm1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZS4KCiAgSWYgZGlzdHJpYnV0aW9uIG9mIG9iamVjdCBjb2RlIGlzIG1hZGUgYnkgb2ZmZXJpbmcgYWNjZXNzIHRvIGNvcHkKZnJvbSBhIGRlc2lnbmF0ZWQgcGxhY2UsIHRoZW4gb2ZmZXJpbmcgZXF1aXZhbGVudCBhY2Nlc3MgdG8gY29weSB0aGUKc291cmNlIGNvZGUgZnJvbSB0aGUgc2FtZSBwbGFjZSBzYXRpc2ZpZXMgdGhlIHJlcXVpcmVtZW50IHRvCmRpc3RyaWJ1dGUgdGhlIHNvdXJjZSBjb2RlLCBldmVuIHRob3VnaCB0aGlyZCBwYXJ0aWVzIGFyZSBub3QKY29tcGVsbGVkIHRvIGNvcHkgdGhlIHNvdXJjZSBhbG9uZyB3aXRoIHRoZSBvYmplY3QgY29kZS4KCiAgNS4gQSBwcm9ncmFtIHRoYXQgY29udGFpbnMgbm8gZGVyaXZhdGl2ZSBvZiBhbnkgcG9ydGlvbiBvZiB0aGUKTGlicmFyeSwgYnV0IGlzIGRlc2lnbmVkIHRvIHdvcmsgd2l0aCB0aGUgTGlicmFyeSBieSBiZWluZyBjb21waWxlZCBvcgpsaW5rZWQgd2l0aCBpdCwgaXMgY2FsbGVkIGEgIndvcmsgdGhhdCB1c2VzIHRoZSBMaWJyYXJ5Ii4gIFN1Y2ggYQp3b3JrLCBpbiBpc29sYXRpb24sIGlzIG5vdCBhIGRlcml2YXRpdmUgd29yayBvZiB0aGUgTGlicmFyeSwgYW5kCnRoZXJlZm9yZSBmYWxscyBvdXRzaWRlIHRoZSBzY29wZSBvZiB0aGlzIExpY2Vuc2UuCgogIEhvd2V2ZXIsIGxpbmtpbmcgYSAid29yayB0aGF0IHVzZXMgdGhlIExpYnJhcnkiIHdpdGggdGhlIExpYnJhcnkKY3JlYXRlcyBhbiBleGVjdXRhYmxlIHRoYXQgaXMgYSBkZXJpdmF0aXZlIG9mIHRoZSBMaWJyYXJ5IChiZWNhdXNlIGl0CmNvbnRhaW5zIHBvcnRpb25zIG9mIHRoZSBMaWJyYXJ5KSwgcmF0aGVyIHRoYW4gYSAid29yayB0aGF0IHVzZXMgdGhlCmxpYnJhcnkiLiAgVGhlIGV4ZWN1dGFibGUgaXMgdGhlcmVmb3JlIGNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlLgpTZWN0aW9uIDYgc3RhdGVzIHRlcm1zIGZvciBkaXN0cmlidXRpb24gb2Ygc3VjaCBleGVjdXRhYmxlcy4KCiAgV2hlbiBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgTGlicmFyeSIgdXNlcyBtYXRlcmlhbCBmcm9tIGEgaGVhZGVyIGZpbGUKdGhhdCBpcyBwYXJ0IG9mIHRoZSBMaWJyYXJ5LCB0aGUgb2JqZWN0IGNvZGUgZm9yIHRoZSB3b3JrIG1heSBiZSBhCmRlcml2YXRpdmUgd29yayBvZiB0aGUgTGlicmFyeSBldmVuIHRob3VnaCB0aGUgc291cmNlIGNvZGUgaXMgbm90LgpXaGV0aGVyIHRoaXMgaXMgdHJ1ZSBpcyBlc3BlY2lhbGx5IHNpZ25pZmljYW50IGlmIHRoZSB3b3JrIGNhbiBiZQpsaW5rZWQgd2l0aG91dCB0aGUgTGlicmFyeSwgb3IgaWYgdGhlIHdvcmsgaXMgaXRzZWxmIGEgbGlicmFyeS4gIFRoZQp0aHJlc2hvbGQgZm9yIHRoaXMgdG8gYmUgdHJ1ZSBpcyBub3QgcHJlY2lzZWx5IGRlZmluZWQgYnkgbGF3LgoKICBJZiBzdWNoIGFuIG9iamVjdCBmaWxlIHVzZXMgb25seSBudW1lcmljYWwgcGFyYW1ldGVycywgZGF0YQpzdHJ1Y3R1cmUgbGF5b3V0cyBhbmQgYWNjZXNzb3JzLCBhbmQgc21hbGwgbWFjcm9zIGFuZCBzbWFsbCBpbmxpbmUKZnVuY3Rpb25zICh0ZW4gbGluZXMgb3IgbGVzcyBpbiBsZW5ndGgpLCB0aGVuIHRoZSB1c2Ugb2YgdGhlIG9iamVjdApmaWxlIGlzIHVucmVzdHJpY3RlZCwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGlzIGxlZ2FsbHkgYSBkZXJpdmF0aXZlCndvcmsuICAoRXhlY3V0YWJsZXMgY29udGFpbmluZyB0aGlzIG9iamVjdCBjb2RlIHBsdXMgcG9ydGlvbnMgb2YgdGhlCkxpYnJhcnkgd2lsbCBzdGlsbCBmYWxsIHVuZGVyIFNlY3Rpb24gNi4pCgogIE90aGVyd2lzZSwgaWYgdGhlIHdvcmsgaXMgYSBkZXJpdmF0aXZlIG9mIHRoZSBMaWJyYXJ5LCB5b3UgbWF5CmRpc3RyaWJ1dGUgdGhlIG9iamVjdCBjb2RlIGZvciB0aGUgd29yayB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbiA2LgpBbnkgZXhlY3V0YWJsZXMgY29udGFpbmluZyB0aGF0IHdvcmsgYWxzbyBmYWxsIHVuZGVyIFNlY3Rpb24gNiwKd2hldGhlciBvciBub3QgdGhleSBhcmUgbGlua2VkIGRpcmVjdGx5IHdpdGggdGhlIExpYnJhcnkgaXRzZWxmLgoMCiAgNi4gQXMgYW4gZXhjZXB0aW9uIHRvIHRoZSBTZWN0aW9ucyBhYm92ZSwgeW91IG1heSBhbHNvIGNvbWJpbmUgb3IKbGluayBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgTGlicmFyeSIgd2l0aCB0aGUgTGlicmFyeSB0byBwcm9kdWNlIGEKd29yayBjb250YWluaW5nIHBvcnRpb25zIG9mIHRoZSBMaWJyYXJ5LCBhbmQgZGlzdHJpYnV0ZSB0aGF0IHdvcmsKdW5kZXIgdGVybXMgb2YgeW91ciBjaG9pY2UsIHByb3ZpZGVkIHRoYXQgdGhlIHRlcm1zIHBlcm1pdAptb2RpZmljYXRpb24gb2YgdGhlIHdvcmsgZm9yIHRoZSBjdXN0b21lcidzIG93biB1c2UgYW5kIHJldmVyc2UKZW5naW5lZXJpbmcgZm9yIGRlYnVnZ2luZyBzdWNoIG1vZGlmaWNhdGlvbnMuCgogIFlvdSBtdXN0IGdpdmUgcHJvbWluZW50IG5vdGljZSB3aXRoIGVhY2ggY29weSBvZiB0aGUgd29yayB0aGF0IHRoZQpMaWJyYXJ5IGlzIHVzZWQgaW4gaXQgYW5kIHRoYXQgdGhlIExpYnJhcnkgYW5kIGl0cyB1c2UgYXJlIGNvdmVyZWQgYnkKdGhpcyBMaWNlbnNlLiAgWW91IG11c3Qgc3VwcGx5IGEgY29weSBvZiB0aGlzIExpY2Vuc2UuICBJZiB0aGUgd29yawpkdXJpbmcgZXhlY3V0aW9uIGRpc3BsYXlzIGNvcHlyaWdodCBub3RpY2VzLCB5b3UgbXVzdCBpbmNsdWRlIHRoZQpjb3B5cmlnaHQgbm90aWNlIGZvciB0aGUgTGlicmFyeSBhbW9uZyB0aGVtLCBhcyB3ZWxsIGFzIGEgcmVmZXJlbmNlCmRpcmVjdGluZyB0aGUgdXNlciB0byB0aGUgY29weSBvZiB0aGlzIExpY2Vuc2UuICBBbHNvLCB5b3UgbXVzdCBkbyBvbmUKb2YgdGhlc2UgdGhpbmdzOgoKICAgIGEpIEFjY29tcGFueSB0aGUgd29yayB3aXRoIHRoZSBjb21wbGV0ZSBjb3JyZXNwb25kaW5nCiAgICBtYWNoaW5lLXJlYWRhYmxlIHNvdXJjZSBjb2RlIGZvciB0aGUgTGlicmFyeSBpbmNsdWRpbmcgd2hhdGV2ZXIKICAgIGNoYW5nZXMgd2VyZSB1c2VkIGluIHRoZSB3b3JrICh3aGljaCBtdXN0IGJlIGRpc3RyaWJ1dGVkIHVuZGVyCiAgICBTZWN0aW9ucyAxIGFuZCAyIGFib3ZlKTsgYW5kLCBpZiB0aGUgd29yayBpcyBhbiBleGVjdXRhYmxlIGxpbmtlZAogICAgd2l0aCB0aGUgTGlicmFyeSwgd2l0aCB0aGUgY29tcGxldGUgbWFjaGluZS1yZWFkYWJsZSAid29yayB0aGF0CiAgICB1c2VzIHRoZSBMaWJyYXJ5IiwgYXMgb2JqZWN0IGNvZGUgYW5kL29yIHNvdXJjZSBjb2RlLCBzbyB0aGF0IHRoZQogICAgdXNlciBjYW4gbW9kaWZ5IHRoZSBMaWJyYXJ5IGFuZCB0aGVuIHJlbGluayB0byBwcm9kdWNlIGEgbW9kaWZpZWQKICAgIGV4ZWN1dGFibGUgY29udGFpbmluZyB0aGUgbW9kaWZpZWQgTGlicmFyeS4gIChJdCBpcyB1bmRlcnN0b29kCiAgICB0aGF0IHRoZSB1c2VyIHdobyBjaGFuZ2VzIHRoZSBjb250ZW50cyBvZiBkZWZpbml0aW9ucyBmaWxlcyBpbiB0aGUKICAgIExpYnJhcnkgd2lsbCBub3QgbmVjZXNzYXJpbHkgYmUgYWJsZSB0byByZWNvbXBpbGUgdGhlIGFwcGxpY2F0aW9uCiAgICB0byB1c2UgdGhlIG1vZGlmaWVkIGRlZmluaXRpb25zLikKCiAgICBiKSBVc2UgYSBzdWl0YWJsZSBzaGFyZWQgbGlicmFyeSBtZWNoYW5pc20gZm9yIGxpbmtpbmcgd2l0aCB0aGUKICAgIExpYnJhcnkuICBBIHN1aXRhYmxlIG1lY2hhbmlzbSBpcyBvbmUgdGhhdCAoMSkgdXNlcyBhdCBydW4gdGltZSBhCiAgICBjb3B5IG9mIHRoZSBsaWJyYXJ5IGFscmVhZHkgcHJlc2VudCBvbiB0aGUgdXNlcidzIGNvbXB1dGVyIHN5c3RlbSwKICAgIHJhdGhlciB0aGFuIGNvcHlpbmcgbGlicmFyeSBmdW5jdGlvbnMgaW50byB0aGUgZXhlY3V0YWJsZSwgYW5kICgyKQogICAgd2lsbCBvcGVyYXRlIHByb3Blcmx5IHdpdGggYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCBpZgogICAgdGhlIHVzZXIgaW5zdGFsbHMgb25lLCBhcyBsb25nIGFzIHRoZSBtb2RpZmllZCB2ZXJzaW9uIGlzCiAgICBpbnRlcmZhY2UtY29tcGF0aWJsZSB3aXRoIHRoZSB2ZXJzaW9uIHRoYXQgdGhlIHdvcmsgd2FzIG1hZGUgd2l0aC4KCiAgICBjKSBBY2NvbXBhbnkgdGhlIHdvcmsgd2l0aCBhIHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZvciBhdAogICAgbGVhc3QgdGhyZWUgeWVhcnMsIHRvIGdpdmUgdGhlIHNhbWUgdXNlciB0aGUgbWF0ZXJpYWxzCiAgICBzcGVjaWZpZWQgaW4gU3Vic2VjdGlvbiA2YSwgYWJvdmUsIGZvciBhIGNoYXJnZSBubyBtb3JlCiAgICB0aGFuIHRoZSBjb3N0IG9mIHBlcmZvcm1pbmcgdGhpcyBkaXN0cmlidXRpb24uCgogICAgZCkgSWYgZGlzdHJpYnV0aW9uIG9mIHRoZSB3b3JrIGlzIG1hZGUgYnkgb2ZmZXJpbmcgYWNjZXNzIHRvIGNvcHkKICAgIGZyb20gYSBkZXNpZ25hdGVkIHBsYWNlLCBvZmZlciBlcXVpdmFsZW50IGFjY2VzcyB0byBjb3B5IHRoZSBhYm92ZQogICAgc3BlY2lmaWVkIG1hdGVyaWFscyBmcm9tIHRoZSBzYW1lIHBsYWNlLgoKICAgIGUpIFZlcmlmeSB0aGF0IHRoZSB1c2VyIGhhcyBhbHJlYWR5IHJlY2VpdmVkIGEgY29weSBvZiB0aGVzZQogICAgbWF0ZXJpYWxzIG9yIHRoYXQgeW91IGhhdmUgYWxyZWFkeSBzZW50IHRoaXMgdXNlciBhIGNvcHkuCgogIEZvciBhbiBleGVjdXRhYmxlLCB0aGUgcmVxdWlyZWQgZm9ybSBvZiB0aGUgIndvcmsgdGhhdCB1c2VzIHRoZQpMaWJyYXJ5IiBtdXN0IGluY2x1ZGUgYW55IGRhdGEgYW5kIHV0aWxpdHkgcHJvZ3JhbXMgbmVlZGVkIGZvcgpyZXByb2R1Y2luZyB0aGUgZXhlY3V0YWJsZSBmcm9tIGl0LiAgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwKdGhlIG1hdGVyaWFscyB0byBiZSBkaXN0cmlidXRlZCBuZWVkIG5vdCBpbmNsdWRlIGFueXRoaW5nIHRoYXQgaXMKbm9ybWFsbHkgZGlzdHJpYnV0ZWQgKGluIGVpdGhlciBzb3VyY2Ugb3IgYmluYXJ5IGZvcm0pIHdpdGggdGhlIG1ham9yCmNvbXBvbmVudHMgKGNvbXBpbGVyLCBrZXJuZWwsIGFuZCBzbyBvbikgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0gb24Kd2hpY2ggdGhlIGV4ZWN1dGFibGUgcnVucywgdW5sZXNzIHRoYXQgY29tcG9uZW50IGl0c2VsZiBhY2NvbXBhbmllcwp0aGUgZXhlY3V0YWJsZS4KCiAgSXQgbWF5IGhhcHBlbiB0aGF0IHRoaXMgcmVxdWlyZW1lbnQgY29udHJhZGljdHMgdGhlIGxpY2Vuc2UKcmVzdHJpY3Rpb25zIG9mIG90aGVyIHByb3ByaWV0YXJ5IGxpYnJhcmllcyB0aGF0IGRvIG5vdCBub3JtYWxseQphY2NvbXBhbnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0uICBTdWNoIGEgY29udHJhZGljdGlvbiBtZWFucyB5b3UgY2Fubm90CnVzZSBib3RoIHRoZW0gYW5kIHRoZSBMaWJyYXJ5IHRvZ2V0aGVyIGluIGFuIGV4ZWN1dGFibGUgdGhhdCB5b3UKZGlzdHJpYnV0ZS4KDAogIDcuIFlvdSBtYXkgcGxhY2UgbGlicmFyeSBmYWNpbGl0aWVzIHRoYXQgYXJlIGEgd29yayBiYXNlZCBvbiB0aGUKTGlicmFyeSBzaWRlLWJ5LXNpZGUgaW4gYSBzaW5nbGUgbGlicmFyeSB0b2dldGhlciB3aXRoIG90aGVyIGxpYnJhcnkKZmFjaWxpdGllcyBub3QgY292ZXJlZCBieSB0aGlzIExpY2Vuc2UsIGFuZCBkaXN0cmlidXRlIHN1Y2ggYSBjb21iaW5lZApsaWJyYXJ5LCBwcm92aWRlZCB0aGF0IHRoZSBzZXBhcmF0ZSBkaXN0cmlidXRpb24gb2YgdGhlIHdvcmsgYmFzZWQgb24KdGhlIExpYnJhcnkgYW5kIG9mIHRoZSBvdGhlciBsaWJyYXJ5IGZhY2lsaXRpZXMgaXMgb3RoZXJ3aXNlCnBlcm1pdHRlZCwgYW5kIHByb3ZpZGVkIHRoYXQgeW91IGRvIHRoZXNlIHR3byB0aGluZ3M6CgogICAgYSkgQWNjb21wYW55IHRoZSBjb21iaW5lZCBsaWJyYXJ5IHdpdGggYSBjb3B5IG9mIHRoZSBzYW1lIHdvcmsKICAgIGJhc2VkIG9uIHRoZSBMaWJyYXJ5LCB1bmNvbWJpbmVkIHdpdGggYW55IG90aGVyIGxpYnJhcnkKICAgIGZhY2lsaXRpZXMuICBUaGlzIG11c3QgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQogICAgU2VjdGlvbnMgYWJvdmUuCgogICAgYikgR2l2ZSBwcm9taW5lbnQgbm90aWNlIHdpdGggdGhlIGNvbWJpbmVkIGxpYnJhcnkgb2YgdGhlIGZhY3QKICAgIHRoYXQgcGFydCBvZiBpdCBpcyBhIHdvcmsgYmFzZWQgb24gdGhlIExpYnJhcnksIGFuZCBleHBsYWluaW5nCiAgICB3aGVyZSB0byBmaW5kIHRoZSBhY2NvbXBhbnlpbmcgdW5jb21iaW5lZCBmb3JtIG9mIHRoZSBzYW1lIHdvcmsuCgogIDguIFlvdSBtYXkgbm90IGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSwgbGluayB3aXRoLCBvciBkaXN0cmlidXRlCnRoZSBMaWJyYXJ5IGV4Y2VwdCBhcyBleHByZXNzbHkgcHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQW55CmF0dGVtcHQgb3RoZXJ3aXNlIHRvIGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSwgbGluayB3aXRoLCBvcgpkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IGlzIHZvaWQsIGFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgdGVybWluYXRlIHlvdXIKcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZS4gIEhvd2V2ZXIsIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzLApvciByaWdodHMsIGZyb20geW91IHVuZGVyIHRoaXMgTGljZW5zZSB3aWxsIG5vdCBoYXZlIHRoZWlyIGxpY2Vuc2VzCnRlcm1pbmF0ZWQgc28gbG9uZyBhcyBzdWNoIHBhcnRpZXMgcmVtYWluIGluIGZ1bGwgY29tcGxpYW5jZS4KCiAgOS4gWW91IGFyZSBub3QgcmVxdWlyZWQgdG8gYWNjZXB0IHRoaXMgTGljZW5zZSwgc2luY2UgeW91IGhhdmUgbm90CnNpZ25lZCBpdC4gIEhvd2V2ZXIsIG5vdGhpbmcgZWxzZSBncmFudHMgeW91IHBlcm1pc3Npb24gdG8gbW9kaWZ5IG9yCmRpc3RyaWJ1dGUgdGhlIExpYnJhcnkgb3IgaXRzIGRlcml2YXRpdmUgd29ya3MuICBUaGVzZSBhY3Rpb25zIGFyZQpwcm9oaWJpdGVkIGJ5IGxhdyBpZiB5b3UgZG8gbm90IGFjY2VwdCB0aGlzIExpY2Vuc2UuICBUaGVyZWZvcmUsIGJ5Cm1vZGlmeWluZyBvciBkaXN0cmlidXRpbmcgdGhlIExpYnJhcnkgKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQpMaWJyYXJ5KSwgeW91IGluZGljYXRlIHlvdXIgYWNjZXB0YW5jZSBvZiB0aGlzIExpY2Vuc2UgdG8gZG8gc28sIGFuZAphbGwgaXRzIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpbmcgb3IgbW9kaWZ5aW5nCnRoZSBMaWJyYXJ5IG9yIHdvcmtzIGJhc2VkIG9uIGl0LgoKICAxMC4gRWFjaCB0aW1lIHlvdSByZWRpc3RyaWJ1dGUgdGhlIExpYnJhcnkgKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQpMaWJyYXJ5KSwgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5IHJlY2VpdmVzIGEgbGljZW5zZSBmcm9tIHRoZQpvcmlnaW5hbCBsaWNlbnNvciB0byBjb3B5LCBkaXN0cmlidXRlLCBsaW5rIHdpdGggb3IgbW9kaWZ5IHRoZSBMaWJyYXJ5CnN1YmplY3QgdG8gdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMuICBZb3UgbWF5IG5vdCBpbXBvc2UgYW55IGZ1cnRoZXIKcmVzdHJpY3Rpb25zIG9uIHRoZSByZWNpcGllbnRzJyBleGVyY2lzZSBvZiB0aGUgcmlnaHRzIGdyYW50ZWQgaGVyZWluLgpZb3UgYXJlIG5vdCByZXNwb25zaWJsZSBmb3IgZW5mb3JjaW5nIGNvbXBsaWFuY2UgYnkgdGhpcmQgcGFydGllcyB3aXRoCnRoaXMgTGljZW5zZS4KDAogIDExLiBJZiwgYXMgYSBjb25zZXF1ZW5jZSBvZiBhIGNvdXJ0IGp1ZGdtZW50IG9yIGFsbGVnYXRpb24gb2YgcGF0ZW50CmluZnJpbmdlbWVudCBvciBmb3IgYW55IG90aGVyIHJlYXNvbiAobm90IGxpbWl0ZWQgdG8gcGF0ZW50IGlzc3VlcyksCmNvbmRpdGlvbnMgYXJlIGltcG9zZWQgb24geW91ICh3aGV0aGVyIGJ5IGNvdXJ0IG9yZGVyLCBhZ3JlZW1lbnQgb3IKb3RoZXJ3aXNlKSB0aGF0IGNvbnRyYWRpY3QgdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLCB0aGV5IGRvIG5vdApleGN1c2UgeW91IGZyb20gdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLiAgSWYgeW91IGNhbm5vdApkaXN0cmlidXRlIHNvIGFzIHRvIHNhdGlzZnkgc2ltdWx0YW5lb3VzbHkgeW91ciBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzCkxpY2Vuc2UgYW5kIGFueSBvdGhlciBwZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5jZSB5b3UKbWF5IG5vdCBkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiBhIHBhdGVudApsaWNlbnNlIHdvdWxkIG5vdCBwZXJtaXQgcm95YWx0eS1mcmVlIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBMaWJyYXJ5IGJ5CmFsbCB0aG9zZSB3aG8gcmVjZWl2ZSBjb3BpZXMgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHlvdSwgdGhlbgp0aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCBpdCBhbmQgdGhpcyBMaWNlbnNlIHdvdWxkIGJlIHRvCnJlZnJhaW4gZW50aXJlbHkgZnJvbSBkaXN0cmlidXRpb24gb2YgdGhlIExpYnJhcnkuCgpJZiBhbnkgcG9ydGlvbiBvZiB0aGlzIHNlY3Rpb24gaXMgaGVsZCBpbnZhbGlkIG9yIHVuZW5mb3JjZWFibGUgdW5kZXIgYW55CnBhcnRpY3VsYXIgY2lyY3Vtc3RhbmNlLCB0aGUgYmFsYW5jZSBvZiB0aGUgc2VjdGlvbiBpcyBpbnRlbmRlZCB0byBhcHBseSwKYW5kIHRoZSBzZWN0aW9uIGFzIGEgd2hvbGUgaXMgaW50ZW5kZWQgdG8gYXBwbHkgaW4gb3RoZXIgY2lyY3Vtc3RhbmNlcy4KCkl0IGlzIG5vdCB0aGUgcHVycG9zZSBvZiB0aGlzIHNlY3Rpb24gdG8gaW5kdWNlIHlvdSB0byBpbmZyaW5nZSBhbnkKcGF0ZW50cyBvciBvdGhlciBwcm9wZXJ0eSByaWdodCBjbGFpbXMgb3IgdG8gY29udGVzdCB2YWxpZGl0eSBvZiBhbnkKc3VjaCBjbGFpbXM7IHRoaXMgc2VjdGlvbiBoYXMgdGhlIHNvbGUgcHVycG9zZSBvZiBwcm90ZWN0aW5nIHRoZQppbnRlZ3JpdHkgb2YgdGhlIGZyZWUgc29mdHdhcmUgZGlzdHJpYnV0aW9uIHN5c3RlbSB3aGljaCBpcwppbXBsZW1lbnRlZCBieSBwdWJsaWMgbGljZW5zZSBwcmFjdGljZXMuICBNYW55IHBlb3BsZSBoYXZlIG1hZGUKZ2VuZXJvdXMgY29udHJpYnV0aW9ucyB0byB0aGUgd2lkZSByYW5nZSBvZiBzb2Z0d2FyZSBkaXN0cmlidXRlZAp0aHJvdWdoIHRoYXQgc3lzdGVtIGluIHJlbGlhbmNlIG9uIGNvbnNpc3RlbnQgYXBwbGljYXRpb24gb2YgdGhhdApzeXN0ZW07IGl0IGlzIHVwIHRvIHRoZSBhdXRob3IvZG9ub3IgdG8gZGVjaWRlIGlmIGhlIG9yIHNoZSBpcyB3aWxsaW5nCnRvIGRpc3RyaWJ1dGUgc29mdHdhcmUgdGhyb3VnaCBhbnkgb3RoZXIgc3lzdGVtIGFuZCBhIGxpY2Vuc2VlIGNhbm5vdAppbXBvc2UgdGhhdCBjaG9pY2UuCgpUaGlzIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8gbWFrZSB0aG9yb3VnaGx5IGNsZWFyIHdoYXQgaXMgYmVsaWV2ZWQgdG8KYmUgYSBjb25zZXF1ZW5jZSBvZiB0aGUgcmVzdCBvZiB0aGlzIExpY2Vuc2UuCgogIDEyLiBJZiB0aGUgZGlzdHJpYnV0aW9uIGFuZC9vciB1c2Ugb2YgdGhlIExpYnJhcnkgaXMgcmVzdHJpY3RlZCBpbgpjZXJ0YWluIGNvdW50cmllcyBlaXRoZXIgYnkgcGF0ZW50cyBvciBieSBjb3B5cmlnaHRlZCBpbnRlcmZhY2VzLCB0aGUKb3JpZ2luYWwgY29weXJpZ2h0IGhvbGRlciB3aG8gcGxhY2VzIHRoZSBMaWJyYXJ5IHVuZGVyIHRoaXMgTGljZW5zZSBtYXkgYWRkCmFuIGV4cGxpY2l0IGdlb2dyYXBoaWNhbCBkaXN0cmlidXRpb24gbGltaXRhdGlvbiBleGNsdWRpbmcgdGhvc2UgY291bnRyaWVzLApzbyB0aGF0IGRpc3RyaWJ1dGlvbiBpcyBwZXJtaXR0ZWQgb25seSBpbiBvciBhbW9uZyBjb3VudHJpZXMgbm90IHRodXMKZXhjbHVkZWQuICBJbiBzdWNoIGNhc2UsIHRoaXMgTGljZW5zZSBpbmNvcnBvcmF0ZXMgdGhlIGxpbWl0YXRpb24gYXMgaWYKd3JpdHRlbiBpbiB0aGUgYm9keSBvZiB0aGlzIExpY2Vuc2UuCgogIDEzLiBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldwp2ZXJzaW9ucyBvZiB0aGUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuClN1Y2ggbmV3IHZlcnNpb25zIHdpbGwgYmUgc2ltaWxhciBpbiBzcGlyaXQgdG8gdGhlIHByZXNlbnQgdmVyc2lvbiwKYnV0IG1heSBkaWZmZXIgaW4gZGV0YWlsIHRvIGFkZHJlc3MgbmV3IHByb2JsZW1zIG9yIGNvbmNlcm5zLgoKRWFjaCB2ZXJzaW9uIGlzIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuICBJZiB0aGUgTGlicmFyeQpzcGVjaWZpZXMgYSB2ZXJzaW9uIG51bWJlciBvZiB0aGlzIExpY2Vuc2Ugd2hpY2ggYXBwbGllcyB0byBpdCBhbmQKImFueSBsYXRlciB2ZXJzaW9uIiwgeW91IGhhdmUgdGhlIG9wdGlvbiBvZiBmb2xsb3dpbmcgdGhlIHRlcm1zIGFuZApjb25kaXRpb25zIGVpdGhlciBvZiB0aGF0IHZlcnNpb24gb3Igb2YgYW55IGxhdGVyIHZlcnNpb24gcHVibGlzaGVkIGJ5CnRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uICBJZiB0aGUgTGlicmFyeSBkb2VzIG5vdCBzcGVjaWZ5IGEKbGljZW5zZSB2ZXJzaW9uIG51bWJlciwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQgYnkKdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KDAogIDE0LiBJZiB5b3Ugd2lzaCB0byBpbmNvcnBvcmF0ZSBwYXJ0cyBvZiB0aGUgTGlicmFyeSBpbnRvIG90aGVyIGZyZWUKcHJvZ3JhbXMgd2hvc2UgZGlzdHJpYnV0aW9uIGNvbmRpdGlvbnMgYXJlIGluY29tcGF0aWJsZSB3aXRoIHRoZXNlLAp3cml0ZSB0byB0aGUgYXV0aG9yIHRvIGFzayBmb3IgcGVybWlzc2lvbi4gIEZvciBzb2Z0d2FyZSB3aGljaCBpcwpjb3B5cmlnaHRlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3cml0ZSB0byB0aGUgRnJlZQpTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3ZSBzb21ldGltZXMgbWFrZSBleGNlcHRpb25zIGZvciB0aGlzLiAgT3VyCmRlY2lzaW9uIHdpbGwgYmUgZ3VpZGVkIGJ5IHRoZSB0d28gZ29hbHMgb2YgcHJlc2VydmluZyB0aGUgZnJlZSBzdGF0dXMKb2YgYWxsIGRlcml2YXRpdmVzIG9mIG91ciBmcmVlIHNvZnR3YXJlIGFuZCBvZiBwcm9tb3RpbmcgdGhlIHNoYXJpbmcKYW5kIHJldXNlIG9mIHNvZnR3YXJlIGdlbmVyYWxseS4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTyBXQVJSQU5UWQoKICAxNS4gQkVDQVVTRSBUSEUgTElCUkFSWSBJUyBMSUNFTlNFRCBGUkVFIE9GIENIQVJHRSwgVEhFUkUgSVMgTk8KV0FSUkFOVFkgRk9SIFRIRSBMSUJSQVJZLCBUTyBUSEUgRVhURU5UIFBFUk1JVFRFRCBCWSBBUFBMSUNBQkxFIExBVy4KRVhDRVBUIFdIRU4gT1RIRVJXSVNFIFNUQVRFRCBJTiBXUklUSU5HIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQvT1IKT1RIRVIgUEFSVElFUyBQUk9WSURFIFRIRSBMSUJSQVJZICJBUyBJUyIgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKS0lORCwgRUlUSEVSIEVYUFJFU1NFRCBPUiBJTVBMSUVELCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCklNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgpQVVJQT1NFLiAgVEhFIEVOVElSRSBSSVNLIEFTIFRPIFRIRSBRVUFMSVRZIEFORCBQRVJGT1JNQU5DRSBPRiBUSEUKTElCUkFSWSBJUyBXSVRIIFlPVS4gIFNIT1VMRCBUSEUgTElCUkFSWSBQUk9WRSBERUZFQ1RJVkUsIFlPVSBBU1NVTUUKVEhFIENPU1QgT0YgQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsIFJFUEFJUiBPUiBDT1JSRUNUSU9OLgoKICAxNi4gSU4gTk8gRVZFTlQgVU5MRVNTIFJFUVVJUkVEIEJZIEFQUExJQ0FCTEUgTEFXIE9SIEFHUkVFRCBUTyBJTgpXUklUSU5HIFdJTEwgQU5ZIENPUFlSSUdIVCBIT0xERVIsIE9SIEFOWSBPVEhFUiBQQVJUWSBXSE8gTUFZIE1PRElGWQpBTkQvT1IgUkVESVNUUklCVVRFIFRIRSBMSUJSQVJZIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVQpGT1IgREFNQUdFUywgSU5DTFVESU5HIEFOWSBHRU5FUkFMLCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SCkNPTlNFUVVFTlRJQUwgREFNQUdFUyBBUklTSU5HIE9VVCBPRiBUSEUgVVNFIE9SIElOQUJJTElUWSBUTyBVU0UgVEhFCkxJQlJBUlkgKElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gTE9TUyBPRiBEQVRBIE9SIERBVEEgQkVJTkcKUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJTkVEIEJZIFlPVSBPUiBUSElSRCBQQVJUSUVTIE9SIEEKRkFJTFVSRSBPRiBUSEUgTElCUkFSWSBUTyBPUEVSQVRFIFdJVEggQU5ZIE9USEVSIFNPRlRXQVJFKSwgRVZFTiBJRgpTVUNIIEhPTERFUiBPUiBPVEhFUiBQQVJUWSBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICkRBTUFHRVMuCgogICAgICAgICAgICAgICAgICAgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKDAogICAgICAgICAgIEhvdyB0byBBcHBseSBUaGVzZSBUZXJtcyB0byBZb3VyIE5ldyBMaWJyYXJpZXMKCiAgSWYgeW91IGRldmVsb3AgYSBuZXcgbGlicmFyeSwgYW5kIHlvdSB3YW50IGl0IHRvIGJlIG9mIHRoZSBncmVhdGVzdApwb3NzaWJsZSB1c2UgdG8gdGhlIHB1YmxpYywgd2UgcmVjb21tZW5kIG1ha2luZyBpdCBmcmVlIHNvZnR3YXJlIHRoYXQKZXZlcnlvbmUgY2FuIHJlZGlzdHJpYnV0ZSBhbmQgY2hhbmdlLiAgWW91IGNhbiBkbyBzbyBieSBwZXJtaXR0aW5nCnJlZGlzdHJpYnV0aW9uIHVuZGVyIHRoZXNlIHRlcm1zIChvciwgYWx0ZXJuYXRpdmVseSwgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQpvcmRpbmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKS4KCiAgVG8gYXBwbHkgdGhlc2UgdGVybXMsIGF0dGFjaCB0aGUgZm9sbG93aW5nIG5vdGljZXMgdG8gdGhlIGxpYnJhcnkuICBJdCBpcwpzYWZlc3QgdG8gYXR0YWNoIHRoZW0gdG8gdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGZpbGUgdG8gbW9zdCBlZmZlY3RpdmVseQpjb252ZXkgdGhlIGV4Y2x1c2lvbiBvZiB3YXJyYW50eTsgYW5kIGVhY2ggZmlsZSBzaG91bGQgaGF2ZSBhdCBsZWFzdCB0aGUKImNvcHlyaWdodCIgbGluZSBhbmQgYSBwb2ludGVyIHRvIHdoZXJlIHRoZSBmdWxsIG5vdGljZSBpcyBmb3VuZC4KCiAgICA8b25lIGxpbmUgdG8gZ2l2ZSB0aGUgbGlicmFyeSdzIG5hbWUgYW5kIGEgYnJpZWYgaWRlYSBvZiB3aGF0IGl0IGRvZXMuPgogICAgQ29weXJpZ2h0IChDKSA8eWVhcj4gIDxuYW1lIG9mIGF1dGhvcj4KCiAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgoKICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgoKICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQoKQWxzbyBhZGQgaW5mb3JtYXRpb24gb24gaG93IHRvIGNvbnRhY3QgeW91IGJ5IGVsZWN0cm9uaWMgYW5kIHBhcGVyIG1haWwuCgpZb3Ugc2hvdWxkIGFsc28gZ2V0IHlvdXIgZW1wbG95ZXIgKGlmIHlvdSB3b3JrIGFzIGEgcHJvZ3JhbW1lcikgb3IgeW91cgpzY2hvb2wsIGlmIGFueSwgdG8gc2lnbiBhICJjb3B5cmlnaHQgZGlzY2xhaW1lciIgZm9yIHRoZSBsaWJyYXJ5LCBpZgpuZWNlc3NhcnkuICBIZXJlIGlzIGEgc2FtcGxlOyBhbHRlciB0aGUgbmFtZXM6CgogIFlveW9keW5lLCBJbmMuLCBoZXJlYnkgZGlzY2xhaW1zIGFsbCBjb3B5cmlnaHQgaW50ZXJlc3QgaW4gdGhlCiAgbGlicmFyeSBgRnJvYicgKGEgbGlicmFyeSBmb3IgdHdlYWtpbmcga25vYnMpIHdyaXR0ZW4gYnkgSmFtZXMgUmFuZG9tIEhhY2tlci4KCiAgPHNpZ25hdHVyZSBvZiBUeSBDb29uPiwgMSBBcHJpbCAxOTkwCiAgVHkgQ29vbiwgUHJlc2lkZW50IG9mIFZpY2UKClRoYXQncyBhbGwgdGhlcmUgaXMgdG8gaXQhCg==", + "contentType": "text/plain", + "encoding": "base64" } } }, @@ -169,33 +164,6 @@ "license": { "name": "License :: OSI Approved :: BSD License" } - }, - { - "license": { - "name": "declared license file: LICENSE", - "text": { - "content": "This software is made available under the terms of *either* of the licenses\nfound in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made\nunder the terms of *both* these licenses.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.APACHE", - "text": { - "content": "\n Apache License\n Version 2.0, January 2004\n https://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.BSD", - "text": { - "content": "Copyright (c) Individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of PyCA Cryptography nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" - } - } } ] }, @@ -256,8 +224,9 @@ "license": { "name": "declared license file: AUTHORS", "text": { - "content": "Stefan K\u00f6gl \nAlexander Shorin \nChristopher J. White \n", - "contentType": "text/plain" + "content": "U3RlZmFuIEvDtmdsIDxzdGVmYW5Ac2tvZWdsLm5ldD4KQWxleGFuZGVyIFNob3JpbiA8a3hlcGFsQGdtYWlsLmNvbT4KQ2hyaXN0b3BoZXIgSi4gV2hpdGUgPGNocmlzQGdyaWVyd2hpdGUuY29tPgo=", + "contentType": "text/plain", + "encoding": "base64" } } }, @@ -265,8 +234,9 @@ "license": { "name": "declared license file: LICENSE.txt", "text": { - "content": "Copyright (c) 2011 Stefan K\u00f6gl \nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions\nare met:\n\n1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n3. The name of the author may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR\nIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\nOF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\nIN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\nNOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\nTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n", - "contentType": "text/plain" + "content": "Q29weXJpZ2h0IChjKSAyMDExIFN0ZWZhbiBLw7ZnbCA8c3RlZmFuQHNrb2VnbC5uZXQ+CkFsbCByaWdodHMgcmVzZXJ2ZWQuCgpSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCmFyZSBtZXQ6CgoxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCjIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KMy4gVGhlIG5hbWUgb2YgdGhlIGF1dGhvciBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzCiAgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgoKVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IKSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUwpPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELgpJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsCklOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVApOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCkRBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQpUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCihJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgpUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgoK", + "contentType": "text/plain", + "encoding": "base64" } } }, @@ -305,8 +275,9 @@ "license": { "name": "declared license file: AUTHORS.rst", "text": { - "content": "The following organizations or individuals have contributed to this code:\n\n- Ayan Sinha Mahapatra @AyanSinhaMahapatra\n- Carmen Bianca Bakker @carmenbianca\n- Chin-Yeung Li @chinyeungli\n- Dennis Clark @DennisClark\n- John Horan @johnmhoran\n- Jono Yang @JonoYang\n- Max Mehl @mxmehl\n- nexB Inc. @nexB\n- Peter Kolbus @pkolbus\n- Philippe Ombredanne @pombredanne\n- Sebastian Schuberth @sschuberth\n- Steven Esser @majurg\n- Thomas Druez @tdruez\n", - "contentType": "text/prs.fallenstein.rst" + "content": "VGhlIGZvbGxvd2luZyBvcmdhbml6YXRpb25zIG9yIGluZGl2aWR1YWxzIGhhdmUgY29udHJpYnV0ZWQgdG8gdGhpcyBjb2RlOgoKLSBBeWFuIFNpbmhhIE1haGFwYXRyYSBAQXlhblNpbmhhTWFoYXBhdHJhCi0gQ2FybWVuIEJpYW5jYSBCYWtrZXIgQGNhcm1lbmJpYW5jYQotIENoaW4tWWV1bmcgTGkgQGNoaW55ZXVuZ2xpCi0gRGVubmlzIENsYXJrIEBEZW5uaXNDbGFyawotIEpvaG4gSG9yYW4gQGpvaG5taG9yYW4KLSBKb25vIFlhbmcgQEpvbm9ZYW5nCi0gTWF4IE1laGwgQG14bWVobAotIG5leEIgSW5jLiBAbmV4QgotIFBldGVyIEtvbGJ1cyBAcGtvbGJ1cwotIFBoaWxpcHBlIE9tYnJlZGFubmUgQHBvbWJyZWRhbm5lCi0gU2ViYXN0aWFuIFNjaHViZXJ0aCBAc3NjaHViZXJ0aAotIFN0ZXZlbiBFc3NlciBAbWFqdXJnCi0gVGhvbWFzIERydWV6IEB0ZHJ1ZXoK", + "contentType": "text/prs.fallenstein.rst", + "encoding": "base64" } } }, @@ -314,8 +285,9 @@ "license": { "name": "declared license file: CHANGELOG.rst", "text": { - "content": "Changelog\n=========\n\nv30.3.0 - 2024-03-18\n--------------------\n\nThis is a minor release without API changes:\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.23\n- Drop support for Python 3.7\n\nv30.2.0 - 2023-11-29\n--------------------\n\nThis is a minor release without API changes:\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.22\n- Add Python 3.12 support in CI\n\n\nv30.1.1 - 2023-01-16\n----------------------\n\nThis is a minor dot release without API changes\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.20\n\n\nv30.1.0 - 2023-01-16\n----------------------\n\nThis is a minor release without API changes\n\n- Use latest skeleton (and updated configure script)\n- Update license list to latest ScanCode and SPDX 3.19\n- Use correct syntax for python_require\n- Drop using Travis and Appveyor\n- Drop support for Python 3.7 and add Python 3.11 in CI\n\n\nv30.0.0 - 2022-05-10\n----------------------\n\nThis is a minor release with API changes\n\n- Use latest skeleton (and updated configure script)\n- Drop using calver\n- Improve error checking when combining licenses\n\n\n\nv21.6.14 - 2021-06-14\n----------------------\n\nAdded\n~~~~~\n\n- Switch to calver for package versioning to better convey the currency of the\n bundled data.\n\n- Include https://scancode-licensedb.aboutcode.org/ licenses list with\n ScanCode (v21.6.7) and SPDX licenses (v3.13) keys. Add new functions to\n create Licensing using these licenses as LicenseSymbol.\n\n- Add new License.dedup() method to deduplicate and simplify license expressions\n without over simplifying.\n\n- Add new License.validate() method to return a new ExpressionInfo object with\n details on a license expression validation.\n\n\nChanged\n~~~~~~~\n- Drop support for Python 2.\n- Adopt the project skeleton from https://github.com/nexB/skeleton\n and its new configure script\n\n\nv1.2 - 2019-11-14\n------------------\nAdded\n~~~~~\n- Add ability to render WITH expression wrapped in parenthesis\n\nFixes\n~~~~~\n- Fix anomalous backslashes in strings\n\nChanged\n~~~~~~~\n- Update the thirdparty directory structure.\n\n\nv1.0 - 2019-10-16\n------------------\nAdded\n~~~~~\n- New version of boolean.py library\n- Add ability to leave license expressions unsorted when simplifying\n\nChanged\n~~~~~~~\n- updated travis CI settings\n\n\nv0.999 - 2019-04-29\n--------------------\n- Initial release\n- license-expression is small utility library to parse, compare and\n simplify and normalize license expressions.\n\n", - "contentType": "text/prs.fallenstein.rst" + "content": "Q2hhbmdlbG9nCj09PT09PT09PQoKdjMwLjMuMCAtIDIwMjQtMDMtMTgKLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRoaXMgaXMgYSBtaW5vciByZWxlYXNlIHdpdGhvdXQgQVBJIGNoYW5nZXM6CgotIFVzZSBsYXRlc3Qgc2tlbGV0b24KLSBVcGRhdGUgbGljZW5zZSBsaXN0IHRvIGxhdGVzdCBTY2FuQ29kZSBhbmQgU1BEWCAzLjIzCi0gRHJvcCBzdXBwb3J0IGZvciBQeXRob24gMy43Cgp2MzAuMi4wIC0gMjAyMy0xMS0yOQotLS0tLS0tLS0tLS0tLS0tLS0tLQoKVGhpcyBpcyBhIG1pbm9yIHJlbGVhc2Ugd2l0aG91dCBBUEkgY2hhbmdlczoKCi0gVXNlIGxhdGVzdCBza2VsZXRvbgotIFVwZGF0ZSBsaWNlbnNlIGxpc3QgdG8gbGF0ZXN0IFNjYW5Db2RlIGFuZCBTUERYIDMuMjIKLSBBZGQgUHl0aG9uIDMuMTIgc3VwcG9ydCBpbiBDSQoKCnYzMC4xLjEgLSAyMDIzLTAxLTE2Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRoaXMgaXMgYSBtaW5vciBkb3QgcmVsZWFzZSB3aXRob3V0IEFQSSBjaGFuZ2VzCgotIFVzZSBsYXRlc3Qgc2tlbGV0b24KLSBVcGRhdGUgbGljZW5zZSBsaXN0IHRvIGxhdGVzdCBTY2FuQ29kZSBhbmQgU1BEWCAzLjIwCgoKdjMwLjEuMCAtIDIwMjMtMDEtMTYKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKVGhpcyBpcyBhIG1pbm9yIHJlbGVhc2Ugd2l0aG91dCBBUEkgY2hhbmdlcwoKLSBVc2UgbGF0ZXN0IHNrZWxldG9uIChhbmQgdXBkYXRlZCBjb25maWd1cmUgc2NyaXB0KQotIFVwZGF0ZSBsaWNlbnNlIGxpc3QgdG8gbGF0ZXN0IFNjYW5Db2RlIGFuZCBTUERYIDMuMTkKLSBVc2UgY29ycmVjdCBzeW50YXggZm9yIHB5dGhvbl9yZXF1aXJlCi0gRHJvcCB1c2luZyBUcmF2aXMgYW5kIEFwcHZleW9yCi0gRHJvcCBzdXBwb3J0IGZvciBQeXRob24gMy43IGFuZCBhZGQgUHl0aG9uIDMuMTEgaW4gQ0kKCgp2MzAuMC4wIC0gMjAyMi0wNS0xMAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpUaGlzIGlzIGEgbWlub3IgcmVsZWFzZSB3aXRoIEFQSSBjaGFuZ2VzCgotIFVzZSBsYXRlc3Qgc2tlbGV0b24gKGFuZCB1cGRhdGVkIGNvbmZpZ3VyZSBzY3JpcHQpCi0gRHJvcCB1c2luZyBjYWx2ZXIKLSBJbXByb3ZlIGVycm9yIGNoZWNraW5nIHdoZW4gY29tYmluaW5nIGxpY2Vuc2VzCgoKCnYyMS42LjE0IC0gMjAyMS0wNi0xNAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpBZGRlZAp+fn5+fgoKLSBTd2l0Y2ggdG8gY2FsdmVyIGZvciBwYWNrYWdlIHZlcnNpb25pbmcgdG8gYmV0dGVyIGNvbnZleSB0aGUgY3VycmVuY3kgb2YgdGhlCiAgYnVuZGxlZCBkYXRhLgoKLSBJbmNsdWRlIGh0dHBzOi8vc2NhbmNvZGUtbGljZW5zZWRiLmFib3V0Y29kZS5vcmcvIGxpY2Vuc2VzIGxpc3Qgd2l0aAogIFNjYW5Db2RlICh2MjEuNi43KSBhbmQgU1BEWCBsaWNlbnNlcyAodjMuMTMpIGtleXMuIEFkZCBuZXcgZnVuY3Rpb25zIHRvCiAgY3JlYXRlIExpY2Vuc2luZyB1c2luZyB0aGVzZSBsaWNlbnNlcyBhcyBMaWNlbnNlU3ltYm9sLgoKLSBBZGQgbmV3IExpY2Vuc2UuZGVkdXAoKSBtZXRob2QgdG8gZGVkdXBsaWNhdGUgYW5kIHNpbXBsaWZ5IGxpY2Vuc2UgZXhwcmVzc2lvbnMKICB3aXRob3V0IG92ZXIgc2ltcGxpZnlpbmcuCgotIEFkZCBuZXcgTGljZW5zZS52YWxpZGF0ZSgpIG1ldGhvZCB0byByZXR1cm4gYSBuZXcgRXhwcmVzc2lvbkluZm8gb2JqZWN0IHdpdGgKICBkZXRhaWxzIG9uIGEgbGljZW5zZSBleHByZXNzaW9uIHZhbGlkYXRpb24uCgoKQ2hhbmdlZAp+fn5+fn5+Ci0gRHJvcCBzdXBwb3J0IGZvciBQeXRob24gMi4KLSBBZG9wdCB0aGUgcHJvamVjdCBza2VsZXRvbiBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9uZXhCL3NrZWxldG9uCiAgYW5kIGl0cyBuZXcgY29uZmlndXJlIHNjcmlwdAoKCnYxLjIgLSAyMDE5LTExLTE0Ci0tLS0tLS0tLS0tLS0tLS0tLQpBZGRlZAp+fn5+fgotIEFkZCBhYmlsaXR5IHRvIHJlbmRlciBXSVRIIGV4cHJlc3Npb24gd3JhcHBlZCBpbiBwYXJlbnRoZXNpcwoKRml4ZXMKfn5+fn4KLSBGaXggYW5vbWFsb3VzIGJhY2tzbGFzaGVzIGluIHN0cmluZ3MKCkNoYW5nZWQKfn5+fn5+fgotIFVwZGF0ZSB0aGUgdGhpcmRwYXJ0eSBkaXJlY3Rvcnkgc3RydWN0dXJlLgoKCnYxLjAgLSAyMDE5LTEwLTE2Ci0tLS0tLS0tLS0tLS0tLS0tLQpBZGRlZAp+fn5+fgotIE5ldyB2ZXJzaW9uIG9mIGJvb2xlYW4ucHkgbGlicmFyeQotIEFkZCBhYmlsaXR5IHRvIGxlYXZlIGxpY2Vuc2UgZXhwcmVzc2lvbnMgdW5zb3J0ZWQgd2hlbiBzaW1wbGlmeWluZwoKQ2hhbmdlZAp+fn5+fn5+Ci0gdXBkYXRlZCB0cmF2aXMgQ0kgc2V0dGluZ3MKCgp2MC45OTkgLSAyMDE5LTA0LTI5Ci0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gSW5pdGlhbCByZWxlYXNlCi0gbGljZW5zZS1leHByZXNzaW9uIGlzIHNtYWxsIHV0aWxpdHkgbGlicmFyeSB0byBwYXJzZSwgY29tcGFyZSBhbmQKICBzaW1wbGlmeSBhbmQgbm9ybWFsaXplIGxpY2Vuc2UgZXhwcmVzc2lvbnMuCgo=", + "contentType": "text/prs.fallenstein.rst", + "encoding": "base64" } } }, @@ -323,8 +295,9 @@ "license": { "name": "declared license file: CODE_OF_CONDUCT.rst", "text": { - "content": "Contributor Covenant Code of Conduct\n====================================\n\nOur Pledge\n----------\n\nIn the interest of fostering an open and welcoming environment, we as\ncontributors and maintainers pledge to making participation in our\nproject and our community a harassment-free experience for everyone,\nregardless of age, body size, disability, ethnicity, gender identity and\nexpression, level of experience, education, socio-economic status,\nnationality, personal appearance, race, religion, or sexual identity and\norientation.\n\nOur Standards\n-------------\n\nExamples of behavior that contributes to creating a positive environment\ninclude:\n\n- Using welcoming and inclusive language\n- Being respectful of differing viewpoints and experiences\n- Gracefully accepting constructive criticism\n- Focusing on what is best for the community\n- Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n- The use of sexualized language or imagery and unwelcome sexual\n attention or advances\n- Trolling, insulting/derogatory comments, and personal or political\n attacks\n- Public or private harassment\n- Publishing others\u2019 private information, such as a physical or\n electronic address, without explicit permission\n- Other conduct which could reasonably be considered inappropriate in a\n professional setting\n\nOur Responsibilities\n--------------------\n\nProject maintainers are responsible for clarifying the standards of\nacceptable behavior and are expected to take appropriate and fair\ncorrective action in response to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit,\nor reject comments, commits, code, wiki edits, issues, and other\ncontributions that are not aligned to this Code of Conduct, or to ban\ntemporarily or permanently any contributor for other behaviors that they\ndeem inappropriate, threatening, offensive, or harmful.\n\nScope\n-----\n\nThis Code of Conduct applies both within project spaces and in public\nspaces when an individual is representing the project or its community.\nExamples of representing a project or community include using an\nofficial project e-mail address, posting via an official social media\naccount, or acting as an appointed representative at an online or\noffline event. Representation of a project may be further defined and\nclarified by project maintainers.\n\nEnforcement\n-----------\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may\nbe reported by contacting the project team at pombredanne@gmail.com\nor on the Gitter chat channel at https://gitter.im/aboutcode-org/discuss .\nAll complaints will be reviewed and investigated and will result in a\nresponse that is deemed necessary and appropriate to the circumstances.\nThe project team is obligated to maintain confidentiality with regard to\nthe reporter of an incident. Further details of specific enforcement\npolicies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in\ngood faith may face temporary or permanent repercussions as determined\nby other members of the project\u2019s leadership.\n\nAttribution\n-----------\n\nThis Code of Conduct is adapted from the `Contributor Covenant`_ ,\nversion 1.4, available at\nhttps://www.contributor-covenant.org/version/1/4/code-of-conduct.html\n\n.. _Contributor Covenant: https://www.contributor-covenant.org\n", - "contentType": "text/prs.fallenstein.rst" + "content": "Q29udHJpYnV0b3IgQ292ZW5hbnQgQ29kZSBvZiBDb25kdWN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKT3VyIFBsZWRnZQotLS0tLS0tLS0tCgpJbiB0aGUgaW50ZXJlc3Qgb2YgZm9zdGVyaW5nIGFuIG9wZW4gYW5kIHdlbGNvbWluZyBlbnZpcm9ubWVudCwgd2UgYXMKY29udHJpYnV0b3JzIGFuZCBtYWludGFpbmVycyBwbGVkZ2UgdG8gbWFraW5nIHBhcnRpY2lwYXRpb24gaW4gb3VyCnByb2plY3QgYW5kIG91ciBjb21tdW5pdHkgYSBoYXJhc3NtZW50LWZyZWUgZXhwZXJpZW5jZSBmb3IgZXZlcnlvbmUsCnJlZ2FyZGxlc3Mgb2YgYWdlLCBib2R5IHNpemUsIGRpc2FiaWxpdHksIGV0aG5pY2l0eSwgZ2VuZGVyIGlkZW50aXR5IGFuZApleHByZXNzaW9uLCBsZXZlbCBvZiBleHBlcmllbmNlLCBlZHVjYXRpb24sIHNvY2lvLWVjb25vbWljIHN0YXR1cywKbmF0aW9uYWxpdHksIHBlcnNvbmFsIGFwcGVhcmFuY2UsIHJhY2UsIHJlbGlnaW9uLCBvciBzZXh1YWwgaWRlbnRpdHkgYW5kCm9yaWVudGF0aW9uLgoKT3VyIFN0YW5kYXJkcwotLS0tLS0tLS0tLS0tCgpFeGFtcGxlcyBvZiBiZWhhdmlvciB0aGF0IGNvbnRyaWJ1dGVzIHRvIGNyZWF0aW5nIGEgcG9zaXRpdmUgZW52aXJvbm1lbnQKaW5jbHVkZToKCi0gIFVzaW5nIHdlbGNvbWluZyBhbmQgaW5jbHVzaXZlIGxhbmd1YWdlCi0gIEJlaW5nIHJlc3BlY3RmdWwgb2YgZGlmZmVyaW5nIHZpZXdwb2ludHMgYW5kIGV4cGVyaWVuY2VzCi0gIEdyYWNlZnVsbHkgYWNjZXB0aW5nIGNvbnN0cnVjdGl2ZSBjcml0aWNpc20KLSAgRm9jdXNpbmcgb24gd2hhdCBpcyBiZXN0IGZvciB0aGUgY29tbXVuaXR5Ci0gIFNob3dpbmcgZW1wYXRoeSB0b3dhcmRzIG90aGVyIGNvbW11bml0eSBtZW1iZXJzCgpFeGFtcGxlcyBvZiB1bmFjY2VwdGFibGUgYmVoYXZpb3IgYnkgcGFydGljaXBhbnRzIGluY2x1ZGU6CgotICBUaGUgdXNlIG9mIHNleHVhbGl6ZWQgbGFuZ3VhZ2Ugb3IgaW1hZ2VyeSBhbmQgdW53ZWxjb21lIHNleHVhbAogICBhdHRlbnRpb24gb3IgYWR2YW5jZXMKLSAgVHJvbGxpbmcsIGluc3VsdGluZy9kZXJvZ2F0b3J5IGNvbW1lbnRzLCBhbmQgcGVyc29uYWwgb3IgcG9saXRpY2FsCiAgIGF0dGFja3MKLSAgUHVibGljIG9yIHByaXZhdGUgaGFyYXNzbWVudAotICBQdWJsaXNoaW5nIG90aGVyc+KAmSBwcml2YXRlIGluZm9ybWF0aW9uLCBzdWNoIGFzIGEgcGh5c2ljYWwgb3IKICAgZWxlY3Ryb25pYyBhZGRyZXNzLCB3aXRob3V0IGV4cGxpY2l0IHBlcm1pc3Npb24KLSAgT3RoZXIgY29uZHVjdCB3aGljaCBjb3VsZCByZWFzb25hYmx5IGJlIGNvbnNpZGVyZWQgaW5hcHByb3ByaWF0ZSBpbiBhCiAgIHByb2Zlc3Npb25hbCBzZXR0aW5nCgpPdXIgUmVzcG9uc2liaWxpdGllcwotLS0tLS0tLS0tLS0tLS0tLS0tLQoKUHJvamVjdCBtYWludGFpbmVycyBhcmUgcmVzcG9uc2libGUgZm9yIGNsYXJpZnlpbmcgdGhlIHN0YW5kYXJkcyBvZgphY2NlcHRhYmxlIGJlaGF2aW9yIGFuZCBhcmUgZXhwZWN0ZWQgdG8gdGFrZSBhcHByb3ByaWF0ZSBhbmQgZmFpcgpjb3JyZWN0aXZlIGFjdGlvbiBpbiByZXNwb25zZSB0byBhbnkgaW5zdGFuY2VzIG9mIHVuYWNjZXB0YWJsZSBiZWhhdmlvci4KClByb2plY3QgbWFpbnRhaW5lcnMgaGF2ZSB0aGUgcmlnaHQgYW5kIHJlc3BvbnNpYmlsaXR5IHRvIHJlbW92ZSwgZWRpdCwKb3IgcmVqZWN0IGNvbW1lbnRzLCBjb21taXRzLCBjb2RlLCB3aWtpIGVkaXRzLCBpc3N1ZXMsIGFuZCBvdGhlcgpjb250cmlidXRpb25zIHRoYXQgYXJlIG5vdCBhbGlnbmVkIHRvIHRoaXMgQ29kZSBvZiBDb25kdWN0LCBvciB0byBiYW4KdGVtcG9yYXJpbHkgb3IgcGVybWFuZW50bHkgYW55IGNvbnRyaWJ1dG9yIGZvciBvdGhlciBiZWhhdmlvcnMgdGhhdCB0aGV5CmRlZW0gaW5hcHByb3ByaWF0ZSwgdGhyZWF0ZW5pbmcsIG9mZmVuc2l2ZSwgb3IgaGFybWZ1bC4KClNjb3BlCi0tLS0tCgpUaGlzIENvZGUgb2YgQ29uZHVjdCBhcHBsaWVzIGJvdGggd2l0aGluIHByb2plY3Qgc3BhY2VzIGFuZCBpbiBwdWJsaWMKc3BhY2VzIHdoZW4gYW4gaW5kaXZpZHVhbCBpcyByZXByZXNlbnRpbmcgdGhlIHByb2plY3Qgb3IgaXRzIGNvbW11bml0eS4KRXhhbXBsZXMgb2YgcmVwcmVzZW50aW5nIGEgcHJvamVjdCBvciBjb21tdW5pdHkgaW5jbHVkZSB1c2luZyBhbgpvZmZpY2lhbCBwcm9qZWN0IGUtbWFpbCBhZGRyZXNzLCBwb3N0aW5nIHZpYSBhbiBvZmZpY2lhbCBzb2NpYWwgbWVkaWEKYWNjb3VudCwgb3IgYWN0aW5nIGFzIGFuIGFwcG9pbnRlZCByZXByZXNlbnRhdGl2ZSBhdCBhbiBvbmxpbmUgb3IKb2ZmbGluZSBldmVudC4gUmVwcmVzZW50YXRpb24gb2YgYSBwcm9qZWN0IG1heSBiZSBmdXJ0aGVyIGRlZmluZWQgYW5kCmNsYXJpZmllZCBieSBwcm9qZWN0IG1haW50YWluZXJzLgoKRW5mb3JjZW1lbnQKLS0tLS0tLS0tLS0KCkluc3RhbmNlcyBvZiBhYnVzaXZlLCBoYXJhc3NpbmcsIG9yIG90aGVyd2lzZSB1bmFjY2VwdGFibGUgYmVoYXZpb3IgbWF5CmJlIHJlcG9ydGVkIGJ5IGNvbnRhY3RpbmcgdGhlIHByb2plY3QgdGVhbSBhdCBwb21icmVkYW5uZUBnbWFpbC5jb20Kb3Igb24gdGhlIEdpdHRlciBjaGF0IGNoYW5uZWwgYXQgaHR0cHM6Ly9naXR0ZXIuaW0vYWJvdXRjb2RlLW9yZy9kaXNjdXNzIC4KQWxsIGNvbXBsYWludHMgd2lsbCBiZSByZXZpZXdlZCBhbmQgaW52ZXN0aWdhdGVkIGFuZCB3aWxsIHJlc3VsdCBpbiBhCnJlc3BvbnNlIHRoYXQgaXMgZGVlbWVkIG5lY2Vzc2FyeSBhbmQgYXBwcm9wcmlhdGUgdG8gdGhlIGNpcmN1bXN0YW5jZXMuClRoZSBwcm9qZWN0IHRlYW0gaXMgb2JsaWdhdGVkIHRvIG1haW50YWluIGNvbmZpZGVudGlhbGl0eSB3aXRoIHJlZ2FyZCB0bwp0aGUgcmVwb3J0ZXIgb2YgYW4gaW5jaWRlbnQuIEZ1cnRoZXIgZGV0YWlscyBvZiBzcGVjaWZpYyBlbmZvcmNlbWVudApwb2xpY2llcyBtYXkgYmUgcG9zdGVkIHNlcGFyYXRlbHkuCgpQcm9qZWN0IG1haW50YWluZXJzIHdobyBkbyBub3QgZm9sbG93IG9yIGVuZm9yY2UgdGhlIENvZGUgb2YgQ29uZHVjdCBpbgpnb29kIGZhaXRoIG1heSBmYWNlIHRlbXBvcmFyeSBvciBwZXJtYW5lbnQgcmVwZXJjdXNzaW9ucyBhcyBkZXRlcm1pbmVkCmJ5IG90aGVyIG1lbWJlcnMgb2YgdGhlIHByb2plY3TigJlzIGxlYWRlcnNoaXAuCgpBdHRyaWJ1dGlvbgotLS0tLS0tLS0tLQoKVGhpcyBDb2RlIG9mIENvbmR1Y3QgaXMgYWRhcHRlZCBmcm9tIHRoZSBgQ29udHJpYnV0b3IgQ292ZW5hbnRgXyAsCnZlcnNpb24gMS40LCBhdmFpbGFibGUgYXQKaHR0cHM6Ly93d3cuY29udHJpYnV0b3ItY292ZW5hbnQub3JnL3ZlcnNpb24vMS80L2NvZGUtb2YtY29uZHVjdC5odG1sCgouLiBfQ29udHJpYnV0b3IgQ292ZW5hbnQ6IGh0dHBzOi8vd3d3LmNvbnRyaWJ1dG9yLWNvdmVuYW50Lm9yZwo=", + "contentType": "text/prs.fallenstein.rst", + "encoding": "base64" } } }, @@ -332,8 +305,9 @@ "license": { "name": "declared license file: NOTICE", "text": { - "content": "#\n# Copyright (c) nexB Inc. and others.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Visit https://aboutcode.org and https://github.com/nexB/license-expression\n# for support and download.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\n", - "contentType": "text/plain" + "content": "IwojIENvcHlyaWdodCAoYykgbmV4QiBJbmMuIGFuZCBvdGhlcnMuCiMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKIwojIFZpc2l0IGh0dHBzOi8vYWJvdXRjb2RlLm9yZyBhbmQgaHR0cHM6Ly9naXRodWIuY29tL25leEIvbGljZW5zZS1leHByZXNzaW9uCiMgZm9yIHN1cHBvcnQgYW5kIGRvd25sb2FkLgojCiMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgojIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAojCiMgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgojCg==", + "contentType": "text/plain", + "encoding": "base64" } } }, @@ -341,8 +315,9 @@ "license": { "name": "declared license file: apache-2.0.LICENSE", "text": { - "content": " Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", - "contentType": "text/plain" + "content": "ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBhY2hlIExpY2Vuc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAyLjAsIEphbnVhcnkgMjAwNAogICAgICAgICAgICAgICAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvCgogICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgVVNFLCBSRVBST0RVQ1RJT04sIEFORCBESVNUUklCVVRJT04KCiAgIDEuIERlZmluaXRpb25zLgoKICAgICAgIkxpY2Vuc2UiIHNoYWxsIG1lYW4gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciB1c2UsIHJlcHJvZHVjdGlvbiwKICAgICAgYW5kIGRpc3RyaWJ1dGlvbiBhcyBkZWZpbmVkIGJ5IFNlY3Rpb25zIDEgdGhyb3VnaCA5IG9mIHRoaXMgZG9jdW1lbnQuCgogICAgICAiTGljZW5zb3IiIHNoYWxsIG1lYW4gdGhlIGNvcHlyaWdodCBvd25lciBvciBlbnRpdHkgYXV0aG9yaXplZCBieQogICAgICB0aGUgY29weXJpZ2h0IG93bmVyIHRoYXQgaXMgZ3JhbnRpbmcgdGhlIExpY2Vuc2UuCgogICAgICAiTGVnYWwgRW50aXR5IiBzaGFsbCBtZWFuIHRoZSB1bmlvbiBvZiB0aGUgYWN0aW5nIGVudGl0eSBhbmQgYWxsCiAgICAgIG90aGVyIGVudGl0aWVzIHRoYXQgY29udHJvbCwgYXJlIGNvbnRyb2xsZWQgYnksIG9yIGFyZSB1bmRlciBjb21tb24KICAgICAgY29udHJvbCB3aXRoIHRoYXQgZW50aXR5LiBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwKICAgICAgImNvbnRyb2wiIG1lYW5zIChpKSB0aGUgcG93ZXIsIGRpcmVjdCBvciBpbmRpcmVjdCwgdG8gY2F1c2UgdGhlCiAgICAgIGRpcmVjdGlvbiBvciBtYW5hZ2VtZW50IG9mIHN1Y2ggZW50aXR5LCB3aGV0aGVyIGJ5IGNvbnRyYWN0IG9yCiAgICAgIG90aGVyd2lzZSwgb3IgKGlpKSBvd25lcnNoaXAgb2YgZmlmdHkgcGVyY2VudCAoNTAlKSBvciBtb3JlIG9mIHRoZQogICAgICBvdXRzdGFuZGluZyBzaGFyZXMsIG9yIChpaWkpIGJlbmVmaWNpYWwgb3duZXJzaGlwIG9mIHN1Y2ggZW50aXR5LgoKICAgICAgIllvdSIgKG9yICJZb3VyIikgc2hhbGwgbWVhbiBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eQogICAgICBleGVyY2lzaW5nIHBlcm1pc3Npb25zIGdyYW50ZWQgYnkgdGhpcyBMaWNlbnNlLgoKICAgICAgIlNvdXJjZSIgZm9ybSBzaGFsbCBtZWFuIHRoZSBwcmVmZXJyZWQgZm9ybSBmb3IgbWFraW5nIG1vZGlmaWNhdGlvbnMsCiAgICAgIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gc29mdHdhcmUgc291cmNlIGNvZGUsIGRvY3VtZW50YXRpb24KICAgICAgc291cmNlLCBhbmQgY29uZmlndXJhdGlvbiBmaWxlcy4KCiAgICAgICJPYmplY3QiIGZvcm0gc2hhbGwgbWVhbiBhbnkgZm9ybSByZXN1bHRpbmcgZnJvbSBtZWNoYW5pY2FsCiAgICAgIHRyYW5zZm9ybWF0aW9uIG9yIHRyYW5zbGF0aW9uIG9mIGEgU291cmNlIGZvcm0sIGluY2x1ZGluZyBidXQKICAgICAgbm90IGxpbWl0ZWQgdG8gY29tcGlsZWQgb2JqZWN0IGNvZGUsIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uLAogICAgICBhbmQgY29udmVyc2lvbnMgdG8gb3RoZXIgbWVkaWEgdHlwZXMuCgogICAgICAiV29yayIgc2hhbGwgbWVhbiB0aGUgd29yayBvZiBhdXRob3JzaGlwLCB3aGV0aGVyIGluIFNvdXJjZSBvcgogICAgICBPYmplY3QgZm9ybSwgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIExpY2Vuc2UsIGFzIGluZGljYXRlZCBieSBhCiAgICAgIGNvcHlyaWdodCBub3RpY2UgdGhhdCBpcyBpbmNsdWRlZCBpbiBvciBhdHRhY2hlZCB0byB0aGUgd29yawogICAgICAoYW4gZXhhbXBsZSBpcyBwcm92aWRlZCBpbiB0aGUgQXBwZW5kaXggYmVsb3cpLgoKICAgICAgIkRlcml2YXRpdmUgV29ya3MiIHNoYWxsIG1lYW4gYW55IHdvcmssIHdoZXRoZXIgaW4gU291cmNlIG9yIE9iamVjdAogICAgICBmb3JtLCB0aGF0IGlzIGJhc2VkIG9uIChvciBkZXJpdmVkIGZyb20pIHRoZSBXb3JrIGFuZCBmb3Igd2hpY2ggdGhlCiAgICAgIGVkaXRvcmlhbCByZXZpc2lvbnMsIGFubm90YXRpb25zLCBlbGFib3JhdGlvbnMsIG9yIG90aGVyIG1vZGlmaWNhdGlvbnMKICAgICAgcmVwcmVzZW50LCBhcyBhIHdob2xlLCBhbiBvcmlnaW5hbCB3b3JrIG9mIGF1dGhvcnNoaXAuIEZvciB0aGUgcHVycG9zZXMKICAgICAgb2YgdGhpcyBMaWNlbnNlLCBEZXJpdmF0aXZlIFdvcmtzIHNoYWxsIG5vdCBpbmNsdWRlIHdvcmtzIHRoYXQgcmVtYWluCiAgICAgIHNlcGFyYWJsZSBmcm9tLCBvciBtZXJlbHkgbGluayAob3IgYmluZCBieSBuYW1lKSB0byB0aGUgaW50ZXJmYWNlcyBvZiwKICAgICAgdGhlIFdvcmsgYW5kIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZi4KCiAgICAgICJDb250cmlidXRpb24iIHNoYWxsIG1lYW4gYW55IHdvcmsgb2YgYXV0aG9yc2hpcCwgaW5jbHVkaW5nCiAgICAgIHRoZSBvcmlnaW5hbCB2ZXJzaW9uIG9mIHRoZSBXb3JrIGFuZCBhbnkgbW9kaWZpY2F0aW9ucyBvciBhZGRpdGlvbnMKICAgICAgdG8gdGhhdCBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgdGhhdCBpcyBpbnRlbnRpb25hbGx5CiAgICAgIHN1Ym1pdHRlZCB0byBMaWNlbnNvciBmb3IgaW5jbHVzaW9uIGluIHRoZSBXb3JrIGJ5IHRoZSBjb3B5cmlnaHQgb3duZXIKICAgICAgb3IgYnkgYW4gaW5kaXZpZHVhbCBvciBMZWdhbCBFbnRpdHkgYXV0aG9yaXplZCB0byBzdWJtaXQgb24gYmVoYWxmIG9mCiAgICAgIHRoZSBjb3B5cmlnaHQgb3duZXIuIEZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAic3VibWl0dGVkIgogICAgICBtZWFucyBhbnkgZm9ybSBvZiBlbGVjdHJvbmljLCB2ZXJiYWwsIG9yIHdyaXR0ZW4gY29tbXVuaWNhdGlvbiBzZW50CiAgICAgIHRvIHRoZSBMaWNlbnNvciBvciBpdHMgcmVwcmVzZW50YXRpdmVzLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvCiAgICAgIGNvbW11bmljYXRpb24gb24gZWxlY3Ryb25pYyBtYWlsaW5nIGxpc3RzLCBzb3VyY2UgY29kZSBjb250cm9sIHN5c3RlbXMsCiAgICAgIGFuZCBpc3N1ZSB0cmFja2luZyBzeXN0ZW1zIHRoYXQgYXJlIG1hbmFnZWQgYnksIG9yIG9uIGJlaGFsZiBvZiwgdGhlCiAgICAgIExpY2Vuc29yIGZvciB0aGUgcHVycG9zZSBvZiBkaXNjdXNzaW5nIGFuZCBpbXByb3ZpbmcgdGhlIFdvcmssIGJ1dAogICAgICBleGNsdWRpbmcgY29tbXVuaWNhdGlvbiB0aGF0IGlzIGNvbnNwaWN1b3VzbHkgbWFya2VkIG9yIG90aGVyd2lzZQogICAgICBkZXNpZ25hdGVkIGluIHdyaXRpbmcgYnkgdGhlIGNvcHlyaWdodCBvd25lciBhcyAiTm90IGEgQ29udHJpYnV0aW9uLiIKCiAgICAgICJDb250cmlidXRvciIgc2hhbGwgbWVhbiBMaWNlbnNvciBhbmQgYW55IGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5CiAgICAgIG9uIGJlaGFsZiBvZiB3aG9tIGEgQ29udHJpYnV0aW9uIGhhcyBiZWVuIHJlY2VpdmVkIGJ5IExpY2Vuc29yIGFuZAogICAgICBzdWJzZXF1ZW50bHkgaW5jb3Jwb3JhdGVkIHdpdGhpbiB0aGUgV29yay4KCiAgIDIuIEdyYW50IG9mIENvcHlyaWdodCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCiAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCiAgICAgIGNvcHlyaWdodCBsaWNlbnNlIHRvIHJlcHJvZHVjZSwgcHJlcGFyZSBEZXJpdmF0aXZlIFdvcmtzIG9mLAogICAgICBwdWJsaWNseSBkaXNwbGF5LCBwdWJsaWNseSBwZXJmb3JtLCBzdWJsaWNlbnNlLCBhbmQgZGlzdHJpYnV0ZSB0aGUKICAgICAgV29yayBhbmQgc3VjaCBEZXJpdmF0aXZlIFdvcmtzIGluIFNvdXJjZSBvciBPYmplY3QgZm9ybS4KCiAgIDMuIEdyYW50IG9mIFBhdGVudCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCiAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCiAgICAgIChleGNlcHQgYXMgc3RhdGVkIGluIHRoaXMgc2VjdGlvbikgcGF0ZW50IGxpY2Vuc2UgdG8gbWFrZSwgaGF2ZSBtYWRlLAogICAgICB1c2UsIG9mZmVyIHRvIHNlbGwsIHNlbGwsIGltcG9ydCwgYW5kIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgV29yaywKICAgICAgd2hlcmUgc3VjaCBsaWNlbnNlIGFwcGxpZXMgb25seSB0byB0aG9zZSBwYXRlbnQgY2xhaW1zIGxpY2Vuc2FibGUKICAgICAgYnkgc3VjaCBDb250cmlidXRvciB0aGF0IGFyZSBuZWNlc3NhcmlseSBpbmZyaW5nZWQgYnkgdGhlaXIKICAgICAgQ29udHJpYnV0aW9uKHMpIGFsb25lIG9yIGJ5IGNvbWJpbmF0aW9uIG9mIHRoZWlyIENvbnRyaWJ1dGlvbihzKQogICAgICB3aXRoIHRoZSBXb3JrIHRvIHdoaWNoIHN1Y2ggQ29udHJpYnV0aW9uKHMpIHdhcyBzdWJtaXR0ZWQuIElmIFlvdQogICAgICBpbnN0aXR1dGUgcGF0ZW50IGxpdGlnYXRpb24gYWdhaW5zdCBhbnkgZW50aXR5IChpbmNsdWRpbmcgYQogICAgICBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0IHRoZSBXb3JrCiAgICAgIG9yIGEgQ29udHJpYnV0aW9uIGluY29ycG9yYXRlZCB3aXRoaW4gdGhlIFdvcmsgY29uc3RpdHV0ZXMgZGlyZWN0CiAgICAgIG9yIGNvbnRyaWJ1dG9yeSBwYXRlbnQgaW5mcmluZ2VtZW50LCB0aGVuIGFueSBwYXRlbnQgbGljZW5zZXMKICAgICAgZ3JhbnRlZCB0byBZb3UgdW5kZXIgdGhpcyBMaWNlbnNlIGZvciB0aGF0IFdvcmsgc2hhbGwgdGVybWluYXRlCiAgICAgIGFzIG9mIHRoZSBkYXRlIHN1Y2ggbGl0aWdhdGlvbiBpcyBmaWxlZC4KCiAgIDQuIFJlZGlzdHJpYnV0aW9uLiBZb3UgbWF5IHJlcHJvZHVjZSBhbmQgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlCiAgICAgIFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mIGluIGFueSBtZWRpdW0sIHdpdGggb3Igd2l0aG91dAogICAgICBtb2RpZmljYXRpb25zLCBhbmQgaW4gU291cmNlIG9yIE9iamVjdCBmb3JtLCBwcm92aWRlZCB0aGF0IFlvdQogICAgICBtZWV0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKCiAgICAgIChhKSBZb3UgbXVzdCBnaXZlIGFueSBvdGhlciByZWNpcGllbnRzIG9mIHRoZSBXb3JrIG9yCiAgICAgICAgICBEZXJpdmF0aXZlIFdvcmtzIGEgY29weSBvZiB0aGlzIExpY2Vuc2U7IGFuZAoKICAgICAgKGIpIFlvdSBtdXN0IGNhdXNlIGFueSBtb2RpZmllZCBmaWxlcyB0byBjYXJyeSBwcm9taW5lbnQgbm90aWNlcwogICAgICAgICAgc3RhdGluZyB0aGF0IFlvdSBjaGFuZ2VkIHRoZSBmaWxlczsgYW5kCgogICAgICAoYykgWW91IG11c3QgcmV0YWluLCBpbiB0aGUgU291cmNlIGZvcm0gb2YgYW55IERlcml2YXRpdmUgV29ya3MKICAgICAgICAgIHRoYXQgWW91IGRpc3RyaWJ1dGUsIGFsbCBjb3B5cmlnaHQsIHBhdGVudCwgdHJhZGVtYXJrLCBhbmQKICAgICAgICAgIGF0dHJpYnV0aW9uIG5vdGljZXMgZnJvbSB0aGUgU291cmNlIGZvcm0gb2YgdGhlIFdvcmssCiAgICAgICAgICBleGNsdWRpbmcgdGhvc2Ugbm90aWNlcyB0aGF0IGRvIG5vdCBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mCiAgICAgICAgICB0aGUgRGVyaXZhdGl2ZSBXb3JrczsgYW5kCgogICAgICAoZCkgSWYgdGhlIFdvcmsgaW5jbHVkZXMgYSAiTk9USUNFIiB0ZXh0IGZpbGUgYXMgcGFydCBvZiBpdHMKICAgICAgICAgIGRpc3RyaWJ1dGlvbiwgdGhlbiBhbnkgRGVyaXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlIG11c3QKICAgICAgICAgIGluY2x1ZGUgYSByZWFkYWJsZSBjb3B5IG9mIHRoZSBhdHRyaWJ1dGlvbiBub3RpY2VzIGNvbnRhaW5lZAogICAgICAgICAgd2l0aGluIHN1Y2ggTk9USUNFIGZpbGUsIGV4Y2x1ZGluZyB0aG9zZSBub3RpY2VzIHRoYXQgZG8gbm90CiAgICAgICAgICBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpbiBhdCBsZWFzdCBvbmUKICAgICAgICAgIG9mIHRoZSBmb2xsb3dpbmcgcGxhY2VzOiB3aXRoaW4gYSBOT1RJQ0UgdGV4dCBmaWxlIGRpc3RyaWJ1dGVkCiAgICAgICAgICBhcyBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyB3aXRoaW4gdGhlIFNvdXJjZSBmb3JtIG9yCiAgICAgICAgICBkb2N1bWVudGF0aW9uLCBpZiBwcm92aWRlZCBhbG9uZyB3aXRoIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyBvciwKICAgICAgICAgIHdpdGhpbiBhIGRpc3BsYXkgZ2VuZXJhdGVkIGJ5IHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpZiBhbmQKICAgICAgICAgIHdoZXJldmVyIHN1Y2ggdGhpcmQtcGFydHkgbm90aWNlcyBub3JtYWxseSBhcHBlYXIuIFRoZSBjb250ZW50cwogICAgICAgICAgb2YgdGhlIE5PVElDRSBmaWxlIGFyZSBmb3IgaW5mb3JtYXRpb25hbCBwdXJwb3NlcyBvbmx5IGFuZAogICAgICAgICAgZG8gbm90IG1vZGlmeSB0aGUgTGljZW5zZS4gWW91IG1heSBhZGQgWW91ciBvd24gYXR0cmlidXRpb24KICAgICAgICAgIG5vdGljZXMgd2l0aGluIERlcml2YXRpdmUgV29ya3MgdGhhdCBZb3UgZGlzdHJpYnV0ZSwgYWxvbmdzaWRlCiAgICAgICAgICBvciBhcyBhbiBhZGRlbmR1bSB0byB0aGUgTk9USUNFIHRleHQgZnJvbSB0aGUgV29yaywgcHJvdmlkZWQKICAgICAgICAgIHRoYXQgc3VjaCBhZGRpdGlvbmFsIGF0dHJpYnV0aW9uIG5vdGljZXMgY2Fubm90IGJlIGNvbnN0cnVlZAogICAgICAgICAgYXMgbW9kaWZ5aW5nIHRoZSBMaWNlbnNlLgoKICAgICAgWW91IG1heSBhZGQgWW91ciBvd24gY29weXJpZ2h0IHN0YXRlbWVudCB0byBZb3VyIG1vZGlmaWNhdGlvbnMgYW5kCiAgICAgIG1heSBwcm92aWRlIGFkZGl0aW9uYWwgb3IgZGlmZmVyZW50IGxpY2Vuc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMKICAgICAgZm9yIHVzZSwgcmVwcm9kdWN0aW9uLCBvciBkaXN0cmlidXRpb24gb2YgWW91ciBtb2RpZmljYXRpb25zLCBvcgogICAgICBmb3IgYW55IHN1Y2ggRGVyaXZhdGl2ZSBXb3JrcyBhcyBhIHdob2xlLCBwcm92aWRlZCBZb3VyIHVzZSwKICAgICAgcmVwcm9kdWN0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoZSBXb3JrIG90aGVyd2lzZSBjb21wbGllcyB3aXRoCiAgICAgIHRoZSBjb25kaXRpb25zIHN0YXRlZCBpbiB0aGlzIExpY2Vuc2UuCgogICA1LiBTdWJtaXNzaW9uIG9mIENvbnRyaWJ1dGlvbnMuIFVubGVzcyBZb3UgZXhwbGljaXRseSBzdGF0ZSBvdGhlcndpc2UsCiAgICAgIGFueSBDb250cmlidXRpb24gaW50ZW50aW9uYWxseSBzdWJtaXR0ZWQgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yawogICAgICBieSBZb3UgdG8gdGhlIExpY2Vuc29yIHNoYWxsIGJlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICB0aGlzIExpY2Vuc2UsIHdpdGhvdXQgYW55IGFkZGl0aW9uYWwgdGVybXMgb3IgY29uZGl0aW9ucy4KICAgICAgTm90d2l0aHN0YW5kaW5nIHRoZSBhYm92ZSwgbm90aGluZyBoZXJlaW4gc2hhbGwgc3VwZXJzZWRlIG9yIG1vZGlmeQogICAgICB0aGUgdGVybXMgb2YgYW55IHNlcGFyYXRlIGxpY2Vuc2UgYWdyZWVtZW50IHlvdSBtYXkgaGF2ZSBleGVjdXRlZAogICAgICB3aXRoIExpY2Vuc29yIHJlZ2FyZGluZyBzdWNoIENvbnRyaWJ1dGlvbnMuCgogICA2LiBUcmFkZW1hcmtzLiBUaGlzIExpY2Vuc2UgZG9lcyBub3QgZ3JhbnQgcGVybWlzc2lvbiB0byB1c2UgdGhlIHRyYWRlCiAgICAgIG5hbWVzLCB0cmFkZW1hcmtzLCBzZXJ2aWNlIG1hcmtzLCBvciBwcm9kdWN0IG5hbWVzIG9mIHRoZSBMaWNlbnNvciwKICAgICAgZXhjZXB0IGFzIHJlcXVpcmVkIGZvciByZWFzb25hYmxlIGFuZCBjdXN0b21hcnkgdXNlIGluIGRlc2NyaWJpbmcgdGhlCiAgICAgIG9yaWdpbiBvZiB0aGUgV29yayBhbmQgcmVwcm9kdWNpbmcgdGhlIGNvbnRlbnQgb2YgdGhlIE5PVElDRSBmaWxlLgoKICAgNy4gRGlzY2xhaW1lciBvZiBXYXJyYW50eS4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yCiAgICAgIGFncmVlZCB0byBpbiB3cml0aW5nLCBMaWNlbnNvciBwcm92aWRlcyB0aGUgV29yayAoYW5kIGVhY2gKICAgICAgQ29udHJpYnV0b3IgcHJvdmlkZXMgaXRzIENvbnRyaWJ1dGlvbnMpIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgogICAgICBpbXBsaWVkLCBpbmNsdWRpbmcsIHdpdGhvdXQgbGltaXRhdGlvbiwgYW55IHdhcnJhbnRpZXMgb3IgY29uZGl0aW9ucwogICAgICBvZiBUSVRMRSwgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZLCBvciBGSVRORVNTIEZPUiBBCiAgICAgIFBBUlRJQ1VMQVIgUFVSUE9TRS4gWW91IGFyZSBzb2xlbHkgcmVzcG9uc2libGUgZm9yIGRldGVybWluaW5nIHRoZQogICAgICBhcHByb3ByaWF0ZW5lc3Mgb2YgdXNpbmcgb3IgcmVkaXN0cmlidXRpbmcgdGhlIFdvcmsgYW5kIGFzc3VtZSBhbnkKICAgICAgcmlza3MgYXNzb2NpYXRlZCB3aXRoIFlvdXIgZXhlcmNpc2Ugb2YgcGVybWlzc2lvbnMgdW5kZXIgdGhpcyBMaWNlbnNlLgoKICAgOC4gTGltaXRhdGlvbiBvZiBMaWFiaWxpdHkuIEluIG5vIGV2ZW50IGFuZCB1bmRlciBubyBsZWdhbCB0aGVvcnksCiAgICAgIHdoZXRoZXIgaW4gdG9ydCAoaW5jbHVkaW5nIG5lZ2xpZ2VuY2UpLCBjb250cmFjdCwgb3Igb3RoZXJ3aXNlLAogICAgICB1bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgKHN1Y2ggYXMgZGVsaWJlcmF0ZSBhbmQgZ3Jvc3NseQogICAgICBuZWdsaWdlbnQgYWN0cykgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNoYWxsIGFueSBDb250cmlidXRvciBiZQogICAgICBsaWFibGUgdG8gWW91IGZvciBkYW1hZ2VzLCBpbmNsdWRpbmcgYW55IGRpcmVjdCwgaW5kaXJlY3QsIHNwZWNpYWwsCiAgICAgIGluY2lkZW50YWwsIG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvZiBhbnkgY2hhcmFjdGVyIGFyaXNpbmcgYXMgYQogICAgICByZXN1bHQgb2YgdGhpcyBMaWNlbnNlIG9yIG91dCBvZiB0aGUgdXNlIG9yIGluYWJpbGl0eSB0byB1c2UgdGhlCiAgICAgIFdvcmsgKGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gZGFtYWdlcyBmb3IgbG9zcyBvZiBnb29kd2lsbCwKICAgICAgd29yayBzdG9wcGFnZSwgY29tcHV0ZXIgZmFpbHVyZSBvciBtYWxmdW5jdGlvbiwgb3IgYW55IGFuZCBhbGwKICAgICAgb3RoZXIgY29tbWVyY2lhbCBkYW1hZ2VzIG9yIGxvc3NlcyksIGV2ZW4gaWYgc3VjaCBDb250cmlidXRvcgogICAgICBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiBzdWNoIGRhbWFnZXMuCgogICA5LiBBY2NlcHRpbmcgV2FycmFudHkgb3IgQWRkaXRpb25hbCBMaWFiaWxpdHkuIFdoaWxlIHJlZGlzdHJpYnV0aW5nCiAgICAgIHRoZSBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgWW91IG1heSBjaG9vc2UgdG8gb2ZmZXIsCiAgICAgIGFuZCBjaGFyZ2UgYSBmZWUgZm9yLCBhY2NlcHRhbmNlIG9mIHN1cHBvcnQsIHdhcnJhbnR5LCBpbmRlbW5pdHksCiAgICAgIG9yIG90aGVyIGxpYWJpbGl0eSBvYmxpZ2F0aW9ucyBhbmQvb3IgcmlnaHRzIGNvbnNpc3RlbnQgd2l0aCB0aGlzCiAgICAgIExpY2Vuc2UuIEhvd2V2ZXIsIGluIGFjY2VwdGluZyBzdWNoIG9ibGlnYXRpb25zLCBZb3UgbWF5IGFjdCBvbmx5CiAgICAgIG9uIFlvdXIgb3duIGJlaGFsZiBhbmQgb24gWW91ciBzb2xlIHJlc3BvbnNpYmlsaXR5LCBub3Qgb24gYmVoYWxmCiAgICAgIG9mIGFueSBvdGhlciBDb250cmlidXRvciwgYW5kIG9ubHkgaWYgWW91IGFncmVlIHRvIGluZGVtbmlmeSwKICAgICAgZGVmZW5kLCBhbmQgaG9sZCBlYWNoIENvbnRyaWJ1dG9yIGhhcm1sZXNzIGZvciBhbnkgbGlhYmlsaXR5CiAgICAgIGluY3VycmVkIGJ5LCBvciBjbGFpbXMgYXNzZXJ0ZWQgYWdhaW5zdCwgc3VjaCBDb250cmlidXRvciBieSByZWFzb24KICAgICAgb2YgeW91ciBhY2NlcHRpbmcgYW55IHN1Y2ggd2FycmFudHkgb3IgYWRkaXRpb25hbCBsaWFiaWxpdHkuCgogICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKCiAgIEFQUEVORElYOiBIb3cgdG8gYXBwbHkgdGhlIEFwYWNoZSBMaWNlbnNlIHRvIHlvdXIgd29yay4KCiAgICAgIFRvIGFwcGx5IHRoZSBBcGFjaGUgTGljZW5zZSB0byB5b3VyIHdvcmssIGF0dGFjaCB0aGUgZm9sbG93aW5nCiAgICAgIGJvaWxlcnBsYXRlIG5vdGljZSwgd2l0aCB0aGUgZmllbGRzIGVuY2xvc2VkIGJ5IGJyYWNrZXRzICJbXSIKICAgICAgcmVwbGFjZWQgd2l0aCB5b3VyIG93biBpZGVudGlmeWluZyBpbmZvcm1hdGlvbi4gKERvbid0IGluY2x1ZGUKICAgICAgdGhlIGJyYWNrZXRzISkgIFRoZSB0ZXh0IHNob3VsZCBiZSBlbmNsb3NlZCBpbiB0aGUgYXBwcm9wcmlhdGUKICAgICAgY29tbWVudCBzeW50YXggZm9yIHRoZSBmaWxlIGZvcm1hdC4gV2UgYWxzbyByZWNvbW1lbmQgdGhhdCBhCiAgICAgIGZpbGUgb3IgY2xhc3MgbmFtZSBhbmQgZGVzY3JpcHRpb24gb2YgcHVycG9zZSBiZSBpbmNsdWRlZCBvbiB0aGUKICAgICAgc2FtZSAicHJpbnRlZCBwYWdlIiBhcyB0aGUgY29weXJpZ2h0IG5vdGljZSBmb3IgZWFzaWVyCiAgICAgIGlkZW50aWZpY2F0aW9uIHdpdGhpbiB0aGlyZC1wYXJ0eSBhcmNoaXZlcy4KCiAgIENvcHlyaWdodCBbeXl5eV0gW25hbWUgb2YgY29weXJpZ2h0IG93bmVyXQoKICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgo=", + "contentType": "text/plain", + "encoding": "base64" } } } @@ -382,8 +357,9 @@ "license": { "name": "declared license file: LICENSE.txt", "text": { - "content": "Copyright (c) 2004 Infrae. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n 1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n \n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in\n the documentation and/or other materials provided with the\n distribution.\n\n 3. Neither the name of Infrae nor the names of its contributors may\n be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INFRAE OR\nCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\nEXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\nPROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" + "content": "Q29weXJpZ2h0IChjKSAyMDA0IEluZnJhZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAgIAogIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCiAgICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQogICAgIGRpc3RyaWJ1dGlvbi4KCiAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBJbmZyYWUgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heQogICAgIGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCiAgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCgpUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCiJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgpBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgSU5GUkFFIE9SCkNPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLApFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sClBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgpQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GCkxJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCk5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwpTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K", + "contentType": "text/plain", + "encoding": "base64" } } }, @@ -391,8 +367,9 @@ "license": { "name": "declared license file: LICENSES.txt", "text": { - "content": "lxml is copyright Infrae and distributed under the BSD license (see\ndoc/licenses/BSD.txt), with the following exceptions:\n\nSome code, such a selftest.py, selftest2.py and\nsrc/lxml/_elementpath.py are derived from ElementTree and\ncElementTree. See doc/licenses/elementtree.txt for the license text.\n\nlxml.cssselect and lxml.html are copyright Ian Bicking and distributed\nunder the BSD license (see doc/licenses/BSD.txt).\n\ntest.py, the test-runner script, is GPL and copyright Shuttleworth\nFoundation. See doc/licenses/GPL.txt. It is believed the unchanged\ninclusion of test.py to run the unit test suite falls under the\n\"aggregation\" clause of the GPL and thus does not affect the license\nof the rest of the package.\n\nThe isoschematron implementation uses several XSL and RelaxNG resources:\n * The (XML syntax) RelaxNG schema for schematron, copyright International\n Organization for Standardization (see \n src/lxml/isoschematron/resources/rng/iso-schematron.rng for the license\n text)\n * The skeleton iso-schematron-xlt1 pure-xslt schematron implementation\n xsl stylesheets, copyright Rick Jelliffe and Academia Sinica Computing\n Center, Taiwan (see the xsl files here for the license text: \n src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/)\n * The xsd/rng schema schematron extraction xsl transformations are unlicensed\n and copyright the respective authors as noted (see \n src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl and\n src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl)\n", - "contentType": "text/plain" + "content": "bHhtbCBpcyBjb3B5cmlnaHQgSW5mcmFlIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgQlNEIGxpY2Vuc2UgKHNlZQpkb2MvbGljZW5zZXMvQlNELnR4dCksIHdpdGggdGhlIGZvbGxvd2luZyBleGNlcHRpb25zOgoKU29tZSBjb2RlLCBzdWNoIGEgc2VsZnRlc3QucHksIHNlbGZ0ZXN0Mi5weSBhbmQKc3JjL2x4bWwvX2VsZW1lbnRwYXRoLnB5IGFyZSBkZXJpdmVkIGZyb20gRWxlbWVudFRyZWUgYW5kCmNFbGVtZW50VHJlZS4gU2VlIGRvYy9saWNlbnNlcy9lbGVtZW50dHJlZS50eHQgZm9yIHRoZSBsaWNlbnNlIHRleHQuCgpseG1sLmNzc3NlbGVjdCBhbmQgbHhtbC5odG1sIGFyZSBjb3B5cmlnaHQgSWFuIEJpY2tpbmcgYW5kIGRpc3RyaWJ1dGVkCnVuZGVyIHRoZSBCU0QgbGljZW5zZSAoc2VlIGRvYy9saWNlbnNlcy9CU0QudHh0KS4KCnRlc3QucHksIHRoZSB0ZXN0LXJ1bm5lciBzY3JpcHQsIGlzIEdQTCBhbmQgY29weXJpZ2h0IFNodXR0bGV3b3J0aApGb3VuZGF0aW9uLiBTZWUgZG9jL2xpY2Vuc2VzL0dQTC50eHQuIEl0IGlzIGJlbGlldmVkIHRoZSB1bmNoYW5nZWQKaW5jbHVzaW9uIG9mIHRlc3QucHkgdG8gcnVuIHRoZSB1bml0IHRlc3Qgc3VpdGUgZmFsbHMgdW5kZXIgdGhlCiJhZ2dyZWdhdGlvbiIgY2xhdXNlIG9mIHRoZSBHUEwgYW5kIHRodXMgZG9lcyBub3QgYWZmZWN0IHRoZSBsaWNlbnNlCm9mIHRoZSByZXN0IG9mIHRoZSBwYWNrYWdlLgoKVGhlIGlzb3NjaGVtYXRyb24gaW1wbGVtZW50YXRpb24gdXNlcyBzZXZlcmFsIFhTTCBhbmQgUmVsYXhORyByZXNvdXJjZXM6CiAqIFRoZSAoWE1MIHN5bnRheCkgUmVsYXhORyBzY2hlbWEgZm9yIHNjaGVtYXRyb24sIGNvcHlyaWdodCBJbnRlcm5hdGlvbmFsCiAgIE9yZ2FuaXphdGlvbiBmb3IgU3RhbmRhcmRpemF0aW9uIChzZWUgCiAgIHNyYy9seG1sL2lzb3NjaGVtYXRyb24vcmVzb3VyY2VzL3JuZy9pc28tc2NoZW1hdHJvbi5ybmcgZm9yIHRoZSBsaWNlbnNlCiAgIHRleHQpCiAqIFRoZSBza2VsZXRvbiBpc28tc2NoZW1hdHJvbi14bHQxIHB1cmUteHNsdCBzY2hlbWF0cm9uIGltcGxlbWVudGF0aW9uCiAgIHhzbCBzdHlsZXNoZWV0cywgY29weXJpZ2h0IFJpY2sgSmVsbGlmZmUgYW5kIEFjYWRlbWlhIFNpbmljYSBDb21wdXRpbmcKICAgQ2VudGVyLCBUYWl3YW4gKHNlZSB0aGUgeHNsIGZpbGVzIGhlcmUgZm9yIHRoZSBsaWNlbnNlIHRleHQ6IAogICBzcmMvbHhtbC9pc29zY2hlbWF0cm9uL3Jlc291cmNlcy94c2wvaXNvLXNjaGVtYXRyb24teHNsdDEvKQogKiBUaGUgeHNkL3JuZyBzY2hlbWEgc2NoZW1hdHJvbiBleHRyYWN0aW9uIHhzbCB0cmFuc2Zvcm1hdGlvbnMgYXJlIHVubGljZW5zZWQKICAgYW5kIGNvcHlyaWdodCB0aGUgcmVzcGVjdGl2ZSBhdXRob3JzIGFzIG5vdGVkIChzZWUgCiAgIHNyYy9seG1sL2lzb3NjaGVtYXRyb24vcmVzb3VyY2VzL3hzbC9STkcyU2NodHJuLnhzbCBhbmQKICAgc3JjL2x4bWwvaXNvc2NoZW1hdHJvbi9yZXNvdXJjZXMveHNsL1hTRDJTY2h0cm4ueHNsKQo=", + "contentType": "text/plain", + "encoding": "base64" } } } @@ -411,54 +388,6 @@ "url": "file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868" } ], - "licenses": [ - { - "license": { - "name": "declared license file: my_licenses/richtext.rtf", - "text": { - "content": "e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA=", - "contentType": "application/rtf", - "encoding": "base64" - } - } - }, - { - "license": { - "name": "declared license file: my_licenses/utf-16be_withBOM.txt", - "text": { - "content": "this file is\r\nutf-16be encoded\r\nwith BOM\r\n\ud83d\ude03\r\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: my_licenses/utf-16le_withBOM.txt", - "text": { - "content": "this file is\nutf-16le encoded\nwith BOM\n\ud83d\ude03\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: my_licenses/utf-8_noBOM.txt", - "text": { - "content": "this file is\nutf-8 encoded\nwithout BOM\n\ud83d\ude03\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: my_licenses/utf-8_withBOM.txt", - "text": { - "content": "\ufeffthis file is\nutf-8 encoded\nwith BOM\n\ud83d\ude03\n", - "contentType": "text/plain" - } - } - } - ], "name": "regression-issue868", "type": "library", "version": "0.1" diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.xml.bin index 88185ead6..7d7d7d450 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.xml.bin @@ -70,31 +70,6 @@ MIT - - declared license file: LICENSE - The MIT License (MIT) - -Copyright (c) 2015 Hynek Schlawack and the attrs contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - pkg:pypi/attrs@23.2.0 @@ -130,281 +105,15 @@ SOFTWARE. declared license file: CHANGELOG.rst - -Changelog -========= - - -next ----- - - -4.0 (2022-05-05) ----------------- - -* API changes - - * Drop support for Python 2. - * Test on Python 3.10 - * Make Expression.sort_order an instance attributes and not a class attribute - -* Misc. - - * Correct licensing documentation - * Improve docstringf and apply minor refactorings - * Adopt black code style and isort for imports - * Drop Travis and use GitHub actions for CI - - -3.8 (2020-06-10) ----------------- - -* API changes - - * Add support for evaluation of boolean expression. - Thank you to Lars van Gemerden @gemerden - -* Bug fixes - - * Fix parsing of tokens that have a number as the first character. - Thank you to Jeff Cohen @ jcohen28 - * Restore proper Python 2 compatibility. - Thank you to Benjy Weinberger @benjyw - -* Improve documentation - - * Add pointers to Linux distro packages. - Thank you to Max Mehl @mxmehl and Carmen Bianca Bakker @carmenbianca - * Fix typo. - Thank you to Gabriel Niebler @der-gabe - - -3.7 (2019-10-04) ----------------- - -* API changes - - * Add new sort argument to simplify() to optionally not sort when simplifying - expressions (e.g. not applying "commutativity"). Thank you to Steven Esser - @majurg for this - * Add new argument to tokenizer to optionally accept extra characters in symbol - tokens. Thank you to @carpie for this - - -3.6 (2018-08-06) ----------------- - -* No API changes - -* Bug fixes - - * Fix De Morgan's laws effect on double negation propositions. Thank you to Douglas Cardoso for this - * Improve error checking when parsing - - -3.5 (Nov 1, 2017) ------------------ - -* No API changes - -* Bug fixes - - * Documentation updates and add testing for Python 3.6. Thank you to Alexander Lisianoi @alisianoi - * Improve testng and expression equivalence checks - * Improve subs() method to an expression - - - -3.4 (May 12, 2017) ------------------- - -* No API changes - -* Bug fixes and improvements - - * Fix various documentation typos and improve tests . Thank you to Alexander Lisianoi @alisianoi - * Fix handling for literals vs. symbols in negations Thank you to @YaronK - - -3.3 (2017-02-09) ----------------- - -* API changes - - * #40 and #50 Expression.subs() now takes 'default' thanks to @kronuz - * #45 simplify=False is now the default for parse and related functions or methods. - * #40 Use "&" and "|" as default operators - -* Bug fixes - - * #60 Fix bug for "a or b c" which is not a valid expression - * #58 Fix math formula display in docs - * Improve handling of parse errors - - -2.0.0 (2016-05-11) ------------------- - -* API changes - - * New algebra definition. Refactored class hierarchy. Improved parsing. - -* New features - - * possibility to subclass algebra definition - * new normal forms shortcuts for DNF and CNF. - - -1.1 (2016-04-06) ------------------- - -* Initial release on Pypi. - + CkNoYW5nZWxvZwo9PT09PT09PT0KCgpuZXh0Ci0tLS0KCgo0LjAgKDIwMjItMDUtMDUpCi0tLS0tLS0tLS0tLS0tLS0KCiogQVBJIGNoYW5nZXMKCiAqIERyb3Agc3VwcG9ydCBmb3IgUHl0aG9uIDIuCiAqIFRlc3Qgb24gUHl0aG9uIDMuMTAKICogTWFrZSBFeHByZXNzaW9uLnNvcnRfb3JkZXIgYW4gaW5zdGFuY2UgYXR0cmlidXRlcyBhbmQgbm90IGEgY2xhc3MgYXR0cmlidXRlCgoqIE1pc2MuCgogKiBDb3JyZWN0IGxpY2Vuc2luZyBkb2N1bWVudGF0aW9uCiAqIEltcHJvdmUgZG9jc3RyaW5nZiBhbmQgYXBwbHkgbWlub3IgcmVmYWN0b3JpbmdzCiAqIEFkb3B0IGJsYWNrIGNvZGUgc3R5bGUgYW5kIGlzb3J0IGZvciBpbXBvcnRzCiAqIERyb3AgVHJhdmlzIGFuZCB1c2UgR2l0SHViIGFjdGlvbnMgZm9yIENJCgoKMy44ICgyMDIwLTA2LTEwKQotLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiBBZGQgc3VwcG9ydCBmb3IgZXZhbHVhdGlvbiBvZiBib29sZWFuIGV4cHJlc3Npb24uCiAgIFRoYW5rIHlvdSB0byBMYXJzIHZhbiBHZW1lcmRlbiBAZ2VtZXJkZW4KCiogQnVnIGZpeGVzCgogKiBGaXggcGFyc2luZyBvZiB0b2tlbnMgdGhhdCBoYXZlIGEgbnVtYmVyIGFzIHRoZSBmaXJzdCBjaGFyYWN0ZXIuIAogICBUaGFuayB5b3UgdG8gSmVmZiBDb2hlbiBAIGpjb2hlbjI4CiAqIFJlc3RvcmUgcHJvcGVyIFB5dGhvbiAyIGNvbXBhdGliaWxpdHkuIAogICBUaGFuayB5b3UgdG8gQmVuankgV2VpbmJlcmdlciBAYmVuanl3CgoqIEltcHJvdmUgZG9jdW1lbnRhdGlvbgoKICogQWRkIHBvaW50ZXJzIHRvIExpbnV4IGRpc3RybyBwYWNrYWdlcy4KICAgVGhhbmsgeW91IHRvIE1heCBNZWhsIEBteG1laGwgYW5kIENhcm1lbiBCaWFuY2EgQmFra2VyIEBjYXJtZW5iaWFuY2EKICogRml4IHR5cG8uCiAgIFRoYW5rIHlvdSB0byBHYWJyaWVsIE5pZWJsZXIgQGRlci1nYWJlCgoKMy43ICgyMDE5LTEwLTA0KQotLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiBBZGQgbmV3IHNvcnQgYXJndW1lbnQgdG8gc2ltcGxpZnkoKSB0byBvcHRpb25hbGx5IG5vdCBzb3J0IHdoZW4gc2ltcGxpZnlpbmcKICAgZXhwcmVzc2lvbnMgKGUuZy4gbm90IGFwcGx5aW5nICJjb21tdXRhdGl2aXR5IikuIFRoYW5rIHlvdSB0byBTdGV2ZW4gRXNzZXIKICAgQG1hanVyZyBmb3IgdGhpcwogKiBBZGQgbmV3IGFyZ3VtZW50IHRvIHRva2VuaXplciB0byBvcHRpb25hbGx5IGFjY2VwdCBleHRyYSBjaGFyYWN0ZXJzIGluIHN5bWJvbAogICB0b2tlbnMuIFRoYW5rIHlvdSB0byBAY2FycGllIGZvciB0aGlzCgoKMy42ICgyMDE4LTA4LTA2KQotLS0tLS0tLS0tLS0tLS0tCgoqIE5vIEFQSSBjaGFuZ2VzCgoqIEJ1ZyBmaXhlcwoKICogRml4IERlIE1vcmdhbidzIGxhd3MgZWZmZWN0IG9uIGRvdWJsZSBuZWdhdGlvbiBwcm9wb3NpdGlvbnMuIFRoYW5rIHlvdSB0byBEb3VnbGFzIENhcmRvc28gZm9yIHRoaXMKICogSW1wcm92ZSBlcnJvciBjaGVja2luZyB3aGVuIHBhcnNpbmcKCgozLjUgKE5vdiAxLCAyMDE3KQotLS0tLS0tLS0tLS0tLS0tLQoKKiBObyBBUEkgY2hhbmdlcwoKKiBCdWcgZml4ZXMKCiAqIERvY3VtZW50YXRpb24gdXBkYXRlcyBhbmQgYWRkIHRlc3RpbmcgZm9yIFB5dGhvbiAzLjYuIFRoYW5rIHlvdSB0byBBbGV4YW5kZXIgTGlzaWFub2kgQGFsaXNpYW5vaQogKiBJbXByb3ZlIHRlc3RuZyBhbmQgZXhwcmVzc2lvbiBlcXVpdmFsZW5jZSBjaGVja3MKICogSW1wcm92ZSBzdWJzKCkgbWV0aG9kIHRvIGFuIGV4cHJlc3Npb24gCgogCgozLjQgKE1heSAxMiwgMjAxNykKLS0tLS0tLS0tLS0tLS0tLS0tCgoqIE5vIEFQSSBjaGFuZ2VzCgoqIEJ1ZyBmaXhlcyBhbmQgaW1wcm92ZW1lbnRzCgogKiBGaXggdmFyaW91cyBkb2N1bWVudGF0aW9uIHR5cG9zIGFuZCBpbXByb3ZlIHRlc3RzIC4gVGhhbmsgeW91IHRvIEFsZXhhbmRlciBMaXNpYW5vaSBAYWxpc2lhbm9pCiAqIEZpeCBoYW5kbGluZyBmb3IgbGl0ZXJhbHMgdnMuIHN5bWJvbHMgaW4gbmVnYXRpb25zIFRoYW5rIHlvdSB0byBAWWFyb25LCgoKMy4zICgyMDE3LTAyLTA5KQotLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiAjNDAgYW5kICM1MCBFeHByZXNzaW9uLnN1YnMoKSBub3cgdGFrZXMgJ2RlZmF1bHQnIHRoYW5rcyB0byBAa3JvbnV6CiAqICM0NSBzaW1wbGlmeT1GYWxzZSBpcyBub3cgdGhlIGRlZmF1bHQgZm9yIHBhcnNlIGFuZCByZWxhdGVkIGZ1bmN0aW9ucyBvciBtZXRob2RzLgogKiAjNDAgVXNlICImIiBhbmQgInwiIGFzIGRlZmF1bHQgb3BlcmF0b3JzCgoqIEJ1ZyBmaXhlcwoKICogIzYwIEZpeCBidWcgZm9yICJhIG9yIGIgYyIgd2hpY2ggaXMgbm90IGEgdmFsaWQgZXhwcmVzc2lvbgogKiAjNTggRml4IG1hdGggZm9ybXVsYSBkaXNwbGF5IGluIGRvY3MKICogSW1wcm92ZSBoYW5kbGluZyBvZiBwYXJzZSBlcnJvcnMKCgoyLjAuMCAoMjAxNi0wNS0xMSkKLS0tLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiBOZXcgYWxnZWJyYSBkZWZpbml0aW9uLiBSZWZhY3RvcmVkIGNsYXNzIGhpZXJhcmNoeS4gSW1wcm92ZWQgcGFyc2luZy4KCiogTmV3IGZlYXR1cmVzCgogKiBwb3NzaWJpbGl0eSB0byBzdWJjbGFzcyBhbGdlYnJhIGRlZmluaXRpb24KICogbmV3IG5vcm1hbCBmb3JtcyBzaG9ydGN1dHMgZm9yIERORiBhbmQgQ05GLgoKCjEuMSAoMjAxNi0wNC0wNikKLS0tLS0tLS0tLS0tLS0tLS0tCgoqIEluaXRpYWwgcmVsZWFzZSBvbiBQeXBpLgo= declared license file: LICENSE.txt - Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation and/or -other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - + Q29weXJpZ2h0IChjKSBTZWJhc3RpYW4gS3JhZW1lciwgYmFzdGkua3JAZ21haWwuY29tIGFuZCBvdGhlcnMKQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCmFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKCjEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcwpsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KCjIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3IKb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQpESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgpBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwpMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCg== declared license file: README.rst - boolean.py -========== - -"boolean.py" is a small library implementing a boolean algebra. It -defines two base elements, TRUE and FALSE, and a Symbol class that can -take on one of these two values. Calculations are done in terms of AND, -OR and NOT - other compositions like XOR and NAND are not implemented -but can be emulated with AND or and NOT. Expressions are constructed -from parsed strings or in Python. - -It runs on Python 3.6+ -You can use older version 3.x for Python 2.7+ support. - -https://github.com/bastikr/boolean.py - -Build status: |Build Status| - - -Example -------- - -:: - - >>> import boolean - >>> algebra = boolean.BooleanAlgebra() - >>> expression1 = algebra.parse(u'apple and (oranges or banana) and not banana', simplify=False) - >>> expression1 - AND(Symbol('apple'), OR(Symbol('oranges'), Symbol('banana')), NOT(Symbol('banana'))) - - >>> expression2 = algebra.parse('(oranges | banana) and not banana & apple', simplify=True) - >>> expression2 - AND(Symbol('apple'), NOT(Symbol('banana')), Symbol('oranges')) - - >>> expression1 == expression2 - False - >>> expression1.simplify() == expression2 - True - - -Documentation -------------- - -http://readthedocs.org/docs/booleanpy/en/latest/ - - -Installation ------------- - -Installation via pip -~~~~~~~~~~~~~~~~~~~~ - -To install boolean.py, you need to have the following pieces of software -on your computer: - -- Python 3.6+ -- pip - -You then only need to run the following command: - -``pip install boolean.py`` - - -Installation via package managers -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -There are packages available for easy install on some operating systems. -You are welcome to help us package this tool for more distributions! - -- boolean.py has been packaged as Arch Linux, Fedora, openSus, - nixpkgs, Guix, DragonFly and FreeBSD - `packages <https://repology.org/project/python:boolean.py/versions>`__ . - -In particular: - -- Arch Linux (AUR): - `python-boolean.py <https://aur.archlinux.org/packages/python-boolean.py/>`__ -- Fedora: - `python-boolean.py <https://apps.fedoraproject.org/packages/python-boolean.py>`__ -- openSUSE: - `python-boolean.py <https://software.opensuse.org/package/python-boolean.py>`__ - - -Testing -------- - -Test ``boolean.py`` with your current Python environment: - -``python setup.py test`` - -Test with all of the supported Python environments using ``tox``: - -:: - - pip install -r requirements-dev.txt - tox - -If ``tox`` throws ``InterpreterNotFound``, limit it to python -interpreters that are actually installed on your machine: - -:: - - tox -e py36 - -Alternatively use pytest. - - -License -------- - -Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others -SPDX-License-Identifier: BSD-2-Clause - -.. |Build Status| image:: https://travis-ci.org/bastikr/boolean.py.svg?branch=master - :target: https://travis-ci.org/bastikr/boolean.py - + Ym9vbGVhbi5weQo9PT09PT09PT09CgoiYm9vbGVhbi5weSIgaXMgYSBzbWFsbCBsaWJyYXJ5IGltcGxlbWVudGluZyBhIGJvb2xlYW4gYWxnZWJyYS4gSXQKZGVmaW5lcyB0d28gYmFzZSBlbGVtZW50cywgVFJVRSBhbmQgRkFMU0UsIGFuZCBhIFN5bWJvbCBjbGFzcyB0aGF0IGNhbgp0YWtlIG9uIG9uZSBvZiB0aGVzZSB0d28gdmFsdWVzLiBDYWxjdWxhdGlvbnMgYXJlIGRvbmUgaW4gdGVybXMgb2YgQU5ELApPUiBhbmQgTk9UIC0gb3RoZXIgY29tcG9zaXRpb25zIGxpa2UgWE9SIGFuZCBOQU5EIGFyZSBub3QgaW1wbGVtZW50ZWQKYnV0IGNhbiBiZSBlbXVsYXRlZCB3aXRoIEFORCBvciBhbmQgTk9ULiBFeHByZXNzaW9ucyBhcmUgY29uc3RydWN0ZWQKZnJvbSBwYXJzZWQgc3RyaW5ncyBvciBpbiBQeXRob24uCgpJdCBydW5zIG9uIFB5dGhvbiAzLjYrCllvdSBjYW4gdXNlIG9sZGVyIHZlcnNpb24gMy54IGZvciBQeXRob24gMi43KyBzdXBwb3J0LgoKaHR0cHM6Ly9naXRodWIuY29tL2Jhc3Rpa3IvYm9vbGVhbi5weQoKQnVpbGQgc3RhdHVzOiB8QnVpbGQgU3RhdHVzfAoKCkV4YW1wbGUKLS0tLS0tLQoKOjoKCiAgICA+Pj4gaW1wb3J0IGJvb2xlYW4KICAgID4+PiBhbGdlYnJhID0gYm9vbGVhbi5Cb29sZWFuQWxnZWJyYSgpCiAgICA+Pj4gZXhwcmVzc2lvbjEgPSBhbGdlYnJhLnBhcnNlKHUnYXBwbGUgYW5kIChvcmFuZ2VzIG9yIGJhbmFuYSkgYW5kIG5vdCBiYW5hbmEnLCBzaW1wbGlmeT1GYWxzZSkKICAgID4+PiBleHByZXNzaW9uMQogICAgQU5EKFN5bWJvbCgnYXBwbGUnKSwgT1IoU3ltYm9sKCdvcmFuZ2VzJyksIFN5bWJvbCgnYmFuYW5hJykpLCBOT1QoU3ltYm9sKCdiYW5hbmEnKSkpCgogICAgPj4+IGV4cHJlc3Npb24yID0gYWxnZWJyYS5wYXJzZSgnKG9yYW5nZXMgfCBiYW5hbmEpIGFuZCBub3QgYmFuYW5hICYgYXBwbGUnLCBzaW1wbGlmeT1UcnVlKQogICAgPj4+IGV4cHJlc3Npb24yCiAgICBBTkQoU3ltYm9sKCdhcHBsZScpLCBOT1QoU3ltYm9sKCdiYW5hbmEnKSksIFN5bWJvbCgnb3JhbmdlcycpKQoKICAgID4+PiBleHByZXNzaW9uMSA9PSBleHByZXNzaW9uMgogICAgRmFsc2UKICAgID4+PiBleHByZXNzaW9uMS5zaW1wbGlmeSgpID09IGV4cHJlc3Npb24yCiAgICBUcnVlCgoKRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tCgpodHRwOi8vcmVhZHRoZWRvY3Mub3JnL2RvY3MvYm9vbGVhbnB5L2VuL2xhdGVzdC8KCgpJbnN0YWxsYXRpb24KLS0tLS0tLS0tLS0tCgpJbnN0YWxsYXRpb24gdmlhIHBpcAp+fn5+fn5+fn5+fn5+fn5+fn5+fgoKVG8gaW5zdGFsbCBib29sZWFuLnB5LCB5b3UgbmVlZCB0byBoYXZlIHRoZSBmb2xsb3dpbmcgcGllY2VzIG9mIHNvZnR3YXJlCm9uIHlvdXIgY29tcHV0ZXI6CgotICBQeXRob24gMy42KwotICBwaXAKCllvdSB0aGVuIG9ubHkgbmVlZCB0byBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kOgoKYGBwaXAgaW5zdGFsbCBib29sZWFuLnB5YGAKCgpJbnN0YWxsYXRpb24gdmlhIHBhY2thZ2UgbWFuYWdlcnMKfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgpUaGVyZSBhcmUgcGFja2FnZXMgYXZhaWxhYmxlIGZvciBlYXN5IGluc3RhbGwgb24gc29tZSBvcGVyYXRpbmcgc3lzdGVtcy4KWW91IGFyZSB3ZWxjb21lIHRvIGhlbHAgdXMgcGFja2FnZSB0aGlzIHRvb2wgZm9yIG1vcmUgZGlzdHJpYnV0aW9ucyEKCi0gIGJvb2xlYW4ucHkgaGFzIGJlZW4gcGFja2FnZWQgYXMgQXJjaCBMaW51eCwgRmVkb3JhLCBvcGVuU3VzLAogICBuaXhwa2dzLCBHdWl4LCBEcmFnb25GbHkgYW5kIEZyZWVCU0QgCiAgIGBwYWNrYWdlcyA8aHR0cHM6Ly9yZXBvbG9neS5vcmcvcHJvamVjdC9weXRob246Ym9vbGVhbi5weS92ZXJzaW9ucz5gX18gLgoKSW4gcGFydGljdWxhcjoKCi0gIEFyY2ggTGludXggKEFVUik6CiAgIGBweXRob24tYm9vbGVhbi5weSA8aHR0cHM6Ly9hdXIuYXJjaGxpbnV4Lm9yZy9wYWNrYWdlcy9weXRob24tYm9vbGVhbi5weS8+YF9fCi0gIEZlZG9yYToKICAgYHB5dGhvbi1ib29sZWFuLnB5IDxodHRwczovL2FwcHMuZmVkb3JhcHJvamVjdC5vcmcvcGFja2FnZXMvcHl0aG9uLWJvb2xlYW4ucHk+YF9fCi0gIG9wZW5TVVNFOgogICBgcHl0aG9uLWJvb2xlYW4ucHkgPGh0dHBzOi8vc29mdHdhcmUub3BlbnN1c2Uub3JnL3BhY2thZ2UvcHl0aG9uLWJvb2xlYW4ucHk+YF9fCgoKVGVzdGluZwotLS0tLS0tCgpUZXN0IGBgYm9vbGVhbi5weWBgIHdpdGggeW91ciBjdXJyZW50IFB5dGhvbiBlbnZpcm9ubWVudDoKCmBgcHl0aG9uIHNldHVwLnB5IHRlc3RgYAoKVGVzdCB3aXRoIGFsbCBvZiB0aGUgc3VwcG9ydGVkIFB5dGhvbiBlbnZpcm9ubWVudHMgdXNpbmcgYGB0b3hgYDoKCjo6CgogICAgcGlwIGluc3RhbGwgLXIgcmVxdWlyZW1lbnRzLWRldi50eHQKICAgIHRveAoKSWYgYGB0b3hgYCB0aHJvd3MgYGBJbnRlcnByZXRlck5vdEZvdW5kYGAsIGxpbWl0IGl0IHRvIHB5dGhvbgppbnRlcnByZXRlcnMgdGhhdCBhcmUgYWN0dWFsbHkgaW5zdGFsbGVkIG9uIHlvdXIgbWFjaGluZToKCjo6CgogICAgdG94IC1lIHB5MzYKCkFsdGVybmF0aXZlbHkgdXNlIHB5dGVzdC4KCgpMaWNlbnNlCi0tLS0tLS0KCkNvcHlyaWdodCAoYykgU2ViYXN0aWFuIEtyYWVtZXIsIGJhc3RpLmtyQGdtYWlsLmNvbSBhbmQgb3RoZXJzClNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UKCi4uIHxCdWlsZCBTdGF0dXN8IGltYWdlOjogaHR0cHM6Ly90cmF2aXMtY2kub3JnL2Jhc3Rpa3IvYm9vbGVhbi5weS5zdmc/YnJhbmNoPW1hc3RlcgogICA6dGFyZ2V0OiBodHRwczovL3RyYXZpcy1jaS5vcmcvYmFzdGlrci9ib29sZWFuLnB5Cg== pkg:pypi/boolean.py@4.0 @@ -415,6 +124,43 @@ SPDX-License-Identifier: BSD-2-Clause + + chardet + 5.2.0 + Universal encoding detector for Python 3 + + + License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+) + + + declared license file: LICENSE + ICAgICAgICAgICAgICAgICAgR05VIExFU1NFUiBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFCiAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAyLjEsIEZlYnJ1YXJ5IDE5OTkKCiBDb3B5cmlnaHQgKEMpIDE5OTEsIDE5OTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKIEV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcwogb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCgpbVGhpcyBpcyB0aGUgZmlyc3QgcmVsZWFzZWQgdmVyc2lvbiBvZiB0aGUgTGVzc2VyIEdQTC4gIEl0IGFsc28gY291bnRzCiBhcyB0aGUgc3VjY2Vzc29yIG9mIHRoZSBHTlUgTGlicmFyeSBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLCBoZW5jZQogdGhlIHZlcnNpb24gbnVtYmVyIDIuMS5dCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlYW1ibGUKCiAgVGhlIGxpY2Vuc2VzIGZvciBtb3N0IHNvZnR3YXJlIGFyZSBkZXNpZ25lZCB0byB0YWtlIGF3YXkgeW91cgpmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgaXQuICBCeSBjb250cmFzdCwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwpMaWNlbnNlcyBhcmUgaW50ZW5kZWQgdG8gZ3VhcmFudGVlIHlvdXIgZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlCmZyZWUgc29mdHdhcmUtLXRvIG1ha2Ugc3VyZSB0aGUgc29mdHdhcmUgaXMgZnJlZSBmb3IgYWxsIGl0cyB1c2Vycy4KCiAgVGhpcyBsaWNlbnNlLCB0aGUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFwcGxpZXMgdG8gc29tZQpzcGVjaWFsbHkgZGVzaWduYXRlZCBzb2Z0d2FyZSBwYWNrYWdlcy0tdHlwaWNhbGx5IGxpYnJhcmllcy0tb2YgdGhlCkZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBhbmQgb3RoZXIgYXV0aG9ycyB3aG8gZGVjaWRlIHRvIHVzZSBpdC4gIFlvdQpjYW4gdXNlIGl0IHRvbywgYnV0IHdlIHN1Z2dlc3QgeW91IGZpcnN0IHRoaW5rIGNhcmVmdWxseSBhYm91dCB3aGV0aGVyCnRoaXMgbGljZW5zZSBvciB0aGUgb3JkaW5hcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyB0aGUgYmV0dGVyCnN0cmF0ZWd5IHRvIHVzZSBpbiBhbnkgcGFydGljdWxhciBjYXNlLCBiYXNlZCBvbiB0aGUgZXhwbGFuYXRpb25zIGJlbG93LgoKICBXaGVuIHdlIHNwZWFrIG9mIGZyZWUgc29mdHdhcmUsIHdlIGFyZSByZWZlcnJpbmcgdG8gZnJlZWRvbSBvZiB1c2UsCm5vdCBwcmljZS4gIE91ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlcyBhcmUgZGVzaWduZWQgdG8gbWFrZSBzdXJlIHRoYXQKeW91IGhhdmUgdGhlIGZyZWVkb20gdG8gZGlzdHJpYnV0ZSBjb3BpZXMgb2YgZnJlZSBzb2Z0d2FyZSAoYW5kIGNoYXJnZQpmb3IgdGhpcyBzZXJ2aWNlIGlmIHlvdSB3aXNoKTsgdGhhdCB5b3UgcmVjZWl2ZSBzb3VyY2UgY29kZSBvciBjYW4gZ2V0Cml0IGlmIHlvdSB3YW50IGl0OyB0aGF0IHlvdSBjYW4gY2hhbmdlIHRoZSBzb2Z0d2FyZSBhbmQgdXNlIHBpZWNlcyBvZgppdCBpbiBuZXcgZnJlZSBwcm9ncmFtczsgYW5kIHRoYXQgeW91IGFyZSBpbmZvcm1lZCB0aGF0IHlvdSBjYW4gZG8KdGhlc2UgdGhpbmdzLgoKICBUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIG1ha2UgcmVzdHJpY3Rpb25zIHRoYXQgZm9yYmlkCmRpc3RyaWJ1dG9ycyB0byBkZW55IHlvdSB0aGVzZSByaWdodHMgb3IgdG8gYXNrIHlvdSB0byBzdXJyZW5kZXIgdGhlc2UKcmlnaHRzLiAgVGhlc2UgcmVzdHJpY3Rpb25zIHRyYW5zbGF0ZSB0byBjZXJ0YWluIHJlc3BvbnNpYmlsaXRpZXMgZm9yCnlvdSBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIGxpYnJhcnkgb3IgaWYgeW91IG1vZGlmeSBpdC4KCiAgRm9yIGV4YW1wbGUsIGlmIHlvdSBkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUgbGlicmFyeSwgd2hldGhlciBncmF0aXMKb3IgZm9yIGEgZmVlLCB5b3UgbXVzdCBnaXZlIHRoZSByZWNpcGllbnRzIGFsbCB0aGUgcmlnaHRzIHRoYXQgd2UgZ2F2ZQp5b3UuICBZb3UgbXVzdCBtYWtlIHN1cmUgdGhhdCB0aGV5LCB0b28sIHJlY2VpdmUgb3IgY2FuIGdldCB0aGUgc291cmNlCmNvZGUuICBJZiB5b3UgbGluayBvdGhlciBjb2RlIHdpdGggdGhlIGxpYnJhcnksIHlvdSBtdXN0IHByb3ZpZGUKY29tcGxldGUgb2JqZWN0IGZpbGVzIHRvIHRoZSByZWNpcGllbnRzLCBzbyB0aGF0IHRoZXkgY2FuIHJlbGluayB0aGVtCndpdGggdGhlIGxpYnJhcnkgYWZ0ZXIgbWFraW5nIGNoYW5nZXMgdG8gdGhlIGxpYnJhcnkgYW5kIHJlY29tcGlsaW5nCml0LiAgQW5kIHlvdSBtdXN0IHNob3cgdGhlbSB0aGVzZSB0ZXJtcyBzbyB0aGV5IGtub3cgdGhlaXIgcmlnaHRzLgoKICBXZSBwcm90ZWN0IHlvdXIgcmlnaHRzIHdpdGggYSB0d28tc3RlcCBtZXRob2Q6ICgxKSB3ZSBjb3B5cmlnaHQgdGhlCmxpYnJhcnksIGFuZCAoMikgd2Ugb2ZmZXIgeW91IHRoaXMgbGljZW5zZSwgd2hpY2ggZ2l2ZXMgeW91IGxlZ2FsCnBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IHRoZSBsaWJyYXJ5LgoKICBUbyBwcm90ZWN0IGVhY2ggZGlzdHJpYnV0b3IsIHdlIHdhbnQgdG8gbWFrZSBpdCB2ZXJ5IGNsZWFyIHRoYXQKdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoZSBmcmVlIGxpYnJhcnkuICBBbHNvLCBpZiB0aGUgbGlicmFyeSBpcwptb2RpZmllZCBieSBzb21lb25lIGVsc2UgYW5kIHBhc3NlZCBvbiwgdGhlIHJlY2lwaWVudHMgc2hvdWxkIGtub3cKdGhhdCB3aGF0IHRoZXkgaGF2ZSBpcyBub3QgdGhlIG9yaWdpbmFsIHZlcnNpb24sIHNvIHRoYXQgdGhlIG9yaWdpbmFsCmF1dGhvcidzIHJlcHV0YXRpb24gd2lsbCBub3QgYmUgYWZmZWN0ZWQgYnkgcHJvYmxlbXMgdGhhdCBtaWdodCBiZQppbnRyb2R1Y2VkIGJ5IG90aGVycy4KDAogIEZpbmFsbHksIHNvZnR3YXJlIHBhdGVudHMgcG9zZSBhIGNvbnN0YW50IHRocmVhdCB0byB0aGUgZXhpc3RlbmNlIG9mCmFueSBmcmVlIHByb2dyYW0uICBXZSB3aXNoIHRvIG1ha2Ugc3VyZSB0aGF0IGEgY29tcGFueSBjYW5ub3QKZWZmZWN0aXZlbHkgcmVzdHJpY3QgdGhlIHVzZXJzIG9mIGEgZnJlZSBwcm9ncmFtIGJ5IG9idGFpbmluZyBhCnJlc3RyaWN0aXZlIGxpY2Vuc2UgZnJvbSBhIHBhdGVudCBob2xkZXIuICBUaGVyZWZvcmUsIHdlIGluc2lzdCB0aGF0CmFueSBwYXRlbnQgbGljZW5zZSBvYnRhaW5lZCBmb3IgYSB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5IG11c3QgYmUKY29uc2lzdGVudCB3aXRoIHRoZSBmdWxsIGZyZWVkb20gb2YgdXNlIHNwZWNpZmllZCBpbiB0aGlzIGxpY2Vuc2UuCgogIE1vc3QgR05VIHNvZnR3YXJlLCBpbmNsdWRpbmcgc29tZSBsaWJyYXJpZXMsIGlzIGNvdmVyZWQgYnkgdGhlCm9yZGluYXJ5IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBsaWNlbnNlLCB0aGUgR05VIExlc3NlcgpHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBhcHBsaWVzIHRvIGNlcnRhaW4gZGVzaWduYXRlZCBsaWJyYXJpZXMsIGFuZAppcyBxdWl0ZSBkaWZmZXJlbnQgZnJvbSB0aGUgb3JkaW5hcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFdlIHVzZQp0aGlzIGxpY2Vuc2UgZm9yIGNlcnRhaW4gbGlicmFyaWVzIGluIG9yZGVyIHRvIHBlcm1pdCBsaW5raW5nIHRob3NlCmxpYnJhcmllcyBpbnRvIG5vbi1mcmVlIHByb2dyYW1zLgoKICBXaGVuIGEgcHJvZ3JhbSBpcyBsaW5rZWQgd2l0aCBhIGxpYnJhcnksIHdoZXRoZXIgc3RhdGljYWxseSBvciB1c2luZwphIHNoYXJlZCBsaWJyYXJ5LCB0aGUgY29tYmluYXRpb24gb2YgdGhlIHR3byBpcyBsZWdhbGx5IHNwZWFraW5nIGEKY29tYmluZWQgd29yaywgYSBkZXJpdmF0aXZlIG9mIHRoZSBvcmlnaW5hbCBsaWJyYXJ5LiAgVGhlIG9yZGluYXJ5CkdlbmVyYWwgUHVibGljIExpY2Vuc2UgdGhlcmVmb3JlIHBlcm1pdHMgc3VjaCBsaW5raW5nIG9ubHkgaWYgdGhlCmVudGlyZSBjb21iaW5hdGlvbiBmaXRzIGl0cyBjcml0ZXJpYSBvZiBmcmVlZG9tLiAgVGhlIExlc3NlciBHZW5lcmFsClB1YmxpYyBMaWNlbnNlIHBlcm1pdHMgbW9yZSBsYXggY3JpdGVyaWEgZm9yIGxpbmtpbmcgb3RoZXIgY29kZSB3aXRoCnRoZSBsaWJyYXJ5LgoKICBXZSBjYWxsIHRoaXMgbGljZW5zZSB0aGUgIkxlc3NlciIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBiZWNhdXNlIGl0CmRvZXMgTGVzcyB0byBwcm90ZWN0IHRoZSB1c2VyJ3MgZnJlZWRvbSB0aGFuIHRoZSBvcmRpbmFyeSBHZW5lcmFsClB1YmxpYyBMaWNlbnNlLiAgSXQgYWxzbyBwcm92aWRlcyBvdGhlciBmcmVlIHNvZnR3YXJlIGRldmVsb3BlcnMgTGVzcwpvZiBhbiBhZHZhbnRhZ2Ugb3ZlciBjb21wZXRpbmcgbm9uLWZyZWUgcHJvZ3JhbXMuICBUaGVzZSBkaXNhZHZhbnRhZ2VzCmFyZSB0aGUgcmVhc29uIHdlIHVzZSB0aGUgb3JkaW5hcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbWFueQpsaWJyYXJpZXMuICBIb3dldmVyLCB0aGUgTGVzc2VyIGxpY2Vuc2UgcHJvdmlkZXMgYWR2YW50YWdlcyBpbiBjZXJ0YWluCnNwZWNpYWwgY2lyY3Vtc3RhbmNlcy4KCiAgRm9yIGV4YW1wbGUsIG9uIHJhcmUgb2NjYXNpb25zLCB0aGVyZSBtYXkgYmUgYSBzcGVjaWFsIG5lZWQgdG8KZW5jb3VyYWdlIHRoZSB3aWRlc3QgcG9zc2libGUgdXNlIG9mIGEgY2VydGFpbiBsaWJyYXJ5LCBzbyB0aGF0IGl0IGJlY29tZXMKYSBkZS1mYWN0byBzdGFuZGFyZC4gIFRvIGFjaGlldmUgdGhpcywgbm9uLWZyZWUgcHJvZ3JhbXMgbXVzdCBiZQphbGxvd2VkIHRvIHVzZSB0aGUgbGlicmFyeS4gIEEgbW9yZSBmcmVxdWVudCBjYXNlIGlzIHRoYXQgYSBmcmVlCmxpYnJhcnkgZG9lcyB0aGUgc2FtZSBqb2IgYXMgd2lkZWx5IHVzZWQgbm9uLWZyZWUgbGlicmFyaWVzLiAgSW4gdGhpcwpjYXNlLCB0aGVyZSBpcyBsaXR0bGUgdG8gZ2FpbiBieSBsaW1pdGluZyB0aGUgZnJlZSBsaWJyYXJ5IHRvIGZyZWUKc29mdHdhcmUgb25seSwgc28gd2UgdXNlIHRoZSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KCiAgSW4gb3RoZXIgY2FzZXMsIHBlcm1pc3Npb24gdG8gdXNlIGEgcGFydGljdWxhciBsaWJyYXJ5IGluIG5vbi1mcmVlCnByb2dyYW1zIGVuYWJsZXMgYSBncmVhdGVyIG51bWJlciBvZiBwZW9wbGUgdG8gdXNlIGEgbGFyZ2UgYm9keSBvZgpmcmVlIHNvZnR3YXJlLiAgRm9yIGV4YW1wbGUsIHBlcm1pc3Npb24gdG8gdXNlIHRoZSBHTlUgQyBMaWJyYXJ5IGluCm5vbi1mcmVlIHByb2dyYW1zIGVuYWJsZXMgbWFueSBtb3JlIHBlb3BsZSB0byB1c2UgdGhlIHdob2xlIEdOVQpvcGVyYXRpbmcgc3lzdGVtLCBhcyB3ZWxsIGFzIGl0cyB2YXJpYW50LCB0aGUgR05VL0xpbnV4IG9wZXJhdGluZwpzeXN0ZW0uCgogIEFsdGhvdWdoIHRoZSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBMZXNzIHByb3RlY3RpdmUgb2YgdGhlCnVzZXJzJyBmcmVlZG9tLCBpdCBkb2VzIGVuc3VyZSB0aGF0IHRoZSB1c2VyIG9mIGEgcHJvZ3JhbSB0aGF0IGlzCmxpbmtlZCB3aXRoIHRoZSBMaWJyYXJ5IGhhcyB0aGUgZnJlZWRvbSBhbmQgdGhlIHdoZXJld2l0aGFsIHRvIHJ1bgp0aGF0IHByb2dyYW0gdXNpbmcgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBMaWJyYXJ5LgoKICBUaGUgcHJlY2lzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW9uIGFuZAptb2RpZmljYXRpb24gZm9sbG93LiAgUGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGEKIndvcmsgYmFzZWQgb24gdGhlIGxpYnJhcnkiIGFuZCBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgbGlicmFyeSIuICBUaGUKZm9ybWVyIGNvbnRhaW5zIGNvZGUgZGVyaXZlZCBmcm9tIHRoZSBsaWJyYXJ5LCB3aGVyZWFzIHRoZSBsYXR0ZXIgbXVzdApiZSBjb21iaW5lZCB3aXRoIHRoZSBsaWJyYXJ5IGluIG9yZGVyIHRvIHJ1bi4KDAogICAgICAgICAgICAgICAgICBHTlUgTEVTU0VSIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKICAgVEVSTVMgQU5EIENPTkRJVElPTlMgRk9SIENPUFlJTkcsIERJU1RSSUJVVElPTiBBTkQgTU9ESUZJQ0FUSU9OCgogIDAuIFRoaXMgTGljZW5zZSBBZ3JlZW1lbnQgYXBwbGllcyB0byBhbnkgc29mdHdhcmUgbGlicmFyeSBvciBvdGhlcgpwcm9ncmFtIHdoaWNoIGNvbnRhaW5zIGEgbm90aWNlIHBsYWNlZCBieSB0aGUgY29weXJpZ2h0IGhvbGRlciBvcgpvdGhlciBhdXRob3JpemVkIHBhcnR5IHNheWluZyBpdCBtYXkgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mCnRoaXMgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKGFsc28gY2FsbGVkICJ0aGlzIExpY2Vuc2UiKS4KRWFjaCBsaWNlbnNlZSBpcyBhZGRyZXNzZWQgYXMgInlvdSIuCgogIEEgImxpYnJhcnkiIG1lYW5zIGEgY29sbGVjdGlvbiBvZiBzb2Z0d2FyZSBmdW5jdGlvbnMgYW5kL29yIGRhdGEKcHJlcGFyZWQgc28gYXMgdG8gYmUgY29udmVuaWVudGx5IGxpbmtlZCB3aXRoIGFwcGxpY2F0aW9uIHByb2dyYW1zCih3aGljaCB1c2Ugc29tZSBvZiB0aG9zZSBmdW5jdGlvbnMgYW5kIGRhdGEpIHRvIGZvcm0gZXhlY3V0YWJsZXMuCgogIFRoZSAiTGlicmFyeSIsIGJlbG93LCByZWZlcnMgdG8gYW55IHN1Y2ggc29mdHdhcmUgbGlicmFyeSBvciB3b3JrCndoaWNoIGhhcyBiZWVuIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZXNlIHRlcm1zLiAgQSAid29yayBiYXNlZCBvbiB0aGUKTGlicmFyeSIgbWVhbnMgZWl0aGVyIHRoZSBMaWJyYXJ5IG9yIGFueSBkZXJpdmF0aXZlIHdvcmsgdW5kZXIKY29weXJpZ2h0IGxhdzogdGhhdCBpcyB0byBzYXksIGEgd29yayBjb250YWluaW5nIHRoZSBMaWJyYXJ5IG9yIGEKcG9ydGlvbiBvZiBpdCwgZWl0aGVyIHZlcmJhdGltIG9yIHdpdGggbW9kaWZpY2F0aW9ucyBhbmQvb3IgdHJhbnNsYXRlZApzdHJhaWdodGZvcndhcmRseSBpbnRvIGFub3RoZXIgbGFuZ3VhZ2UuICAoSGVyZWluYWZ0ZXIsIHRyYW5zbGF0aW9uIGlzCmluY2x1ZGVkIHdpdGhvdXQgbGltaXRhdGlvbiBpbiB0aGUgdGVybSAibW9kaWZpY2F0aW9uIi4pCgogICJTb3VyY2UgY29kZSIgZm9yIGEgd29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsgZm9yCm1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgRm9yIGEgbGlicmFyeSwgY29tcGxldGUgc291cmNlIGNvZGUgbWVhbnMKYWxsIHRoZSBzb3VyY2UgY29kZSBmb3IgYWxsIG1vZHVsZXMgaXQgY29udGFpbnMsIHBsdXMgYW55IGFzc29jaWF0ZWQKaW50ZXJmYWNlIGRlZmluaXRpb24gZmlsZXMsIHBsdXMgdGhlIHNjcmlwdHMgdXNlZCB0byBjb250cm9sIGNvbXBpbGF0aW9uCmFuZCBpbnN0YWxsYXRpb24gb2YgdGhlIGxpYnJhcnkuCgogIEFjdGl2aXRpZXMgb3RoZXIgdGhhbiBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kIG1vZGlmaWNhdGlvbiBhcmUgbm90CmNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlOyB0aGV5IGFyZSBvdXRzaWRlIGl0cyBzY29wZS4gIFRoZSBhY3Qgb2YKcnVubmluZyBhIHByb2dyYW0gdXNpbmcgdGhlIExpYnJhcnkgaXMgbm90IHJlc3RyaWN0ZWQsIGFuZCBvdXRwdXQgZnJvbQpzdWNoIGEgcHJvZ3JhbSBpcyBjb3ZlcmVkIG9ubHkgaWYgaXRzIGNvbnRlbnRzIGNvbnN0aXR1dGUgYSB3b3JrIGJhc2VkCm9uIHRoZSBMaWJyYXJ5IChpbmRlcGVuZGVudCBvZiB0aGUgdXNlIG9mIHRoZSBMaWJyYXJ5IGluIGEgdG9vbCBmb3IKd3JpdGluZyBpdCkuICBXaGV0aGVyIHRoYXQgaXMgdHJ1ZSBkZXBlbmRzIG9uIHdoYXQgdGhlIExpYnJhcnkgZG9lcwphbmQgd2hhdCB0aGUgcHJvZ3JhbSB0aGF0IHVzZXMgdGhlIExpYnJhcnkgZG9lcy4KCiAgMS4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcyBvZiB0aGUgTGlicmFyeSdzCmNvbXBsZXRlIHNvdXJjZSBjb2RlIGFzIHlvdSByZWNlaXZlIGl0LCBpbiBhbnkgbWVkaXVtLCBwcm92aWRlZCB0aGF0CnlvdSBjb25zcGljdW91c2x5IGFuZCBhcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuCmFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2UgYW5kIGRpc2NsYWltZXIgb2Ygd2FycmFudHk7IGtlZXAgaW50YWN0CmFsbCB0aGUgbm90aWNlcyB0aGF0IHJlZmVyIHRvIHRoaXMgTGljZW5zZSBhbmQgdG8gdGhlIGFic2VuY2Ugb2YgYW55CndhcnJhbnR5OyBhbmQgZGlzdHJpYnV0ZSBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlIGFsb25nIHdpdGggdGhlCkxpYnJhcnkuCgogIFlvdSBtYXkgY2hhcmdlIGEgZmVlIGZvciB0aGUgcGh5c2ljYWwgYWN0IG9mIHRyYW5zZmVycmluZyBhIGNvcHksCmFuZCB5b3UgbWF5IGF0IHlvdXIgb3B0aW9uIG9mZmVyIHdhcnJhbnR5IHByb3RlY3Rpb24gaW4gZXhjaGFuZ2UgZm9yIGEKZmVlLgoMCiAgMi4gWW91IG1heSBtb2RpZnkgeW91ciBjb3B5IG9yIGNvcGllcyBvZiB0aGUgTGlicmFyeSBvciBhbnkgcG9ydGlvbgpvZiBpdCwgdGh1cyBmb3JtaW5nIGEgd29yayBiYXNlZCBvbiB0aGUgTGlicmFyeSwgYW5kIGNvcHkgYW5kCmRpc3RyaWJ1dGUgc3VjaCBtb2RpZmljYXRpb25zIG9yIHdvcmsgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb24gMQphYm92ZSwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBtZWV0IGFsbCBvZiB0aGVzZSBjb25kaXRpb25zOgoKICAgIGEpIFRoZSBtb2RpZmllZCB3b3JrIG11c3QgaXRzZWxmIGJlIGEgc29mdHdhcmUgbGlicmFyeS4KCiAgICBiKSBZb3UgbXVzdCBjYXVzZSB0aGUgZmlsZXMgbW9kaWZpZWQgdG8gY2FycnkgcHJvbWluZW50IG5vdGljZXMKICAgIHN0YXRpbmcgdGhhdCB5b3UgY2hhbmdlZCB0aGUgZmlsZXMgYW5kIHRoZSBkYXRlIG9mIGFueSBjaGFuZ2UuCgogICAgYykgWW91IG11c3QgY2F1c2UgdGhlIHdob2xlIG9mIHRoZSB3b3JrIHRvIGJlIGxpY2Vuc2VkIGF0IG5vCiAgICBjaGFyZ2UgdG8gYWxsIHRoaXJkIHBhcnRpZXMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZS4KCiAgICBkKSBJZiBhIGZhY2lsaXR5IGluIHRoZSBtb2RpZmllZCBMaWJyYXJ5IHJlZmVycyB0byBhIGZ1bmN0aW9uIG9yIGEKICAgIHRhYmxlIG9mIGRhdGEgdG8gYmUgc3VwcGxpZWQgYnkgYW4gYXBwbGljYXRpb24gcHJvZ3JhbSB0aGF0IHVzZXMKICAgIHRoZSBmYWNpbGl0eSwgb3RoZXIgdGhhbiBhcyBhbiBhcmd1bWVudCBwYXNzZWQgd2hlbiB0aGUgZmFjaWxpdHkKICAgIGlzIGludm9rZWQsIHRoZW4geW91IG11c3QgbWFrZSBhIGdvb2QgZmFpdGggZWZmb3J0IHRvIGVuc3VyZSB0aGF0LAogICAgaW4gdGhlIGV2ZW50IGFuIGFwcGxpY2F0aW9uIGRvZXMgbm90IHN1cHBseSBzdWNoIGZ1bmN0aW9uIG9yCiAgICB0YWJsZSwgdGhlIGZhY2lsaXR5IHN0aWxsIG9wZXJhdGVzLCBhbmQgcGVyZm9ybXMgd2hhdGV2ZXIgcGFydCBvZgogICAgaXRzIHB1cnBvc2UgcmVtYWlucyBtZWFuaW5nZnVsLgoKICAgIChGb3IgZXhhbXBsZSwgYSBmdW5jdGlvbiBpbiBhIGxpYnJhcnkgdG8gY29tcHV0ZSBzcXVhcmUgcm9vdHMgaGFzCiAgICBhIHB1cnBvc2UgdGhhdCBpcyBlbnRpcmVseSB3ZWxsLWRlZmluZWQgaW5kZXBlbmRlbnQgb2YgdGhlCiAgICBhcHBsaWNhdGlvbi4gIFRoZXJlZm9yZSwgU3Vic2VjdGlvbiAyZCByZXF1aXJlcyB0aGF0IGFueQogICAgYXBwbGljYXRpb24tc3VwcGxpZWQgZnVuY3Rpb24gb3IgdGFibGUgdXNlZCBieSB0aGlzIGZ1bmN0aW9uIG11c3QKICAgIGJlIG9wdGlvbmFsOiBpZiB0aGUgYXBwbGljYXRpb24gZG9lcyBub3Qgc3VwcGx5IGl0LCB0aGUgc3F1YXJlCiAgICByb290IGZ1bmN0aW9uIG11c3Qgc3RpbGwgY29tcHV0ZSBzcXVhcmUgcm9vdHMuKQoKVGhlc2UgcmVxdWlyZW1lbnRzIGFwcGx5IHRvIHRoZSBtb2RpZmllZCB3b3JrIGFzIGEgd2hvbGUuICBJZgppZGVudGlmaWFibGUgc2VjdGlvbnMgb2YgdGhhdCB3b3JrIGFyZSBub3QgZGVyaXZlZCBmcm9tIHRoZSBMaWJyYXJ5LAphbmQgY2FuIGJlIHJlYXNvbmFibHkgY29uc2lkZXJlZCBpbmRlcGVuZGVudCBhbmQgc2VwYXJhdGUgd29ya3MgaW4KdGhlbXNlbHZlcywgdGhlbiB0aGlzIExpY2Vuc2UsIGFuZCBpdHMgdGVybXMsIGRvIG5vdCBhcHBseSB0byB0aG9zZQpzZWN0aW9ucyB3aGVuIHlvdSBkaXN0cmlidXRlIHRoZW0gYXMgc2VwYXJhdGUgd29ya3MuICBCdXQgd2hlbiB5b3UKZGlzdHJpYnV0ZSB0aGUgc2FtZSBzZWN0aW9ucyBhcyBwYXJ0IG9mIGEgd2hvbGUgd2hpY2ggaXMgYSB3b3JrIGJhc2VkCm9uIHRoZSBMaWJyYXJ5LCB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSB3aG9sZSBtdXN0IGJlIG9uIHRoZSB0ZXJtcyBvZgp0aGlzIExpY2Vuc2UsIHdob3NlIHBlcm1pc3Npb25zIGZvciBvdGhlciBsaWNlbnNlZXMgZXh0ZW5kIHRvIHRoZQplbnRpcmUgd2hvbGUsIGFuZCB0aHVzIHRvIGVhY2ggYW5kIGV2ZXJ5IHBhcnQgcmVnYXJkbGVzcyBvZiB3aG8gd3JvdGUKaXQuCgpUaHVzLCBpdCBpcyBub3QgdGhlIGludGVudCBvZiB0aGlzIHNlY3Rpb24gdG8gY2xhaW0gcmlnaHRzIG9yIGNvbnRlc3QKeW91ciByaWdodHMgdG8gd29yayB3cml0dGVuIGVudGlyZWx5IGJ5IHlvdTsgcmF0aGVyLCB0aGUgaW50ZW50IGlzIHRvCmV4ZXJjaXNlIHRoZSByaWdodCB0byBjb250cm9sIHRoZSBkaXN0cmlidXRpb24gb2YgZGVyaXZhdGl2ZSBvcgpjb2xsZWN0aXZlIHdvcmtzIGJhc2VkIG9uIHRoZSBMaWJyYXJ5LgoKSW4gYWRkaXRpb24sIG1lcmUgYWdncmVnYXRpb24gb2YgYW5vdGhlciB3b3JrIG5vdCBiYXNlZCBvbiB0aGUgTGlicmFyeQp3aXRoIHRoZSBMaWJyYXJ5IChvciB3aXRoIGEgd29yayBiYXNlZCBvbiB0aGUgTGlicmFyeSkgb24gYSB2b2x1bWUgb2YKYSBzdG9yYWdlIG9yIGRpc3RyaWJ1dGlvbiBtZWRpdW0gZG9lcyBub3QgYnJpbmcgdGhlIG90aGVyIHdvcmsgdW5kZXIKdGhlIHNjb3BlIG9mIHRoaXMgTGljZW5zZS4KCiAgMy4gWW91IG1heSBvcHQgdG8gYXBwbHkgdGhlIHRlcm1zIG9mIHRoZSBvcmRpbmFyeSBHTlUgR2VuZXJhbCBQdWJsaWMKTGljZW5zZSBpbnN0ZWFkIG9mIHRoaXMgTGljZW5zZSB0byBhIGdpdmVuIGNvcHkgb2YgdGhlIExpYnJhcnkuICBUbyBkbwp0aGlzLCB5b3UgbXVzdCBhbHRlciBhbGwgdGhlIG5vdGljZXMgdGhhdCByZWZlciB0byB0aGlzIExpY2Vuc2UsIHNvCnRoYXQgdGhleSByZWZlciB0byB0aGUgb3JkaW5hcnkgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMiwKaW5zdGVhZCBvZiB0byB0aGlzIExpY2Vuc2UuICAoSWYgYSBuZXdlciB2ZXJzaW9uIHRoYW4gdmVyc2lvbiAyIG9mIHRoZQpvcmRpbmFyeSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBoYXMgYXBwZWFyZWQsIHRoZW4geW91IGNhbiBzcGVjaWZ5CnRoYXQgdmVyc2lvbiBpbnN0ZWFkIGlmIHlvdSB3aXNoLikgIERvIG5vdCBtYWtlIGFueSBvdGhlciBjaGFuZ2UgaW4KdGhlc2Ugbm90aWNlcy4KDAogIE9uY2UgdGhpcyBjaGFuZ2UgaXMgbWFkZSBpbiBhIGdpdmVuIGNvcHksIGl0IGlzIGlycmV2ZXJzaWJsZSBmb3IKdGhhdCBjb3B5LCBzbyB0aGUgb3JkaW5hcnkgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXBwbGllcyB0byBhbGwKc3Vic2VxdWVudCBjb3BpZXMgYW5kIGRlcml2YXRpdmUgd29ya3MgbWFkZSBmcm9tIHRoYXQgY29weS4KCiAgVGhpcyBvcHRpb24gaXMgdXNlZnVsIHdoZW4geW91IHdpc2ggdG8gY29weSBwYXJ0IG9mIHRoZSBjb2RlIG9mCnRoZSBMaWJyYXJ5IGludG8gYSBwcm9ncmFtIHRoYXQgaXMgbm90IGEgbGlicmFyeS4KCiAgNC4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IChvciBhIHBvcnRpb24gb3IKZGVyaXZhdGl2ZSBvZiBpdCwgdW5kZXIgU2VjdGlvbiAyKSBpbiBvYmplY3QgY29kZSBvciBleGVjdXRhYmxlIGZvcm0KdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zIDEgYW5kIDIgYWJvdmUgcHJvdmlkZWQgdGhhdCB5b3UgYWNjb21wYW55Cml0IHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcgbWFjaGluZS1yZWFkYWJsZSBzb3VyY2UgY29kZSwgd2hpY2gKbXVzdCBiZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBvbiBhCm1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZS4KCiAgSWYgZGlzdHJpYnV0aW9uIG9mIG9iamVjdCBjb2RlIGlzIG1hZGUgYnkgb2ZmZXJpbmcgYWNjZXNzIHRvIGNvcHkKZnJvbSBhIGRlc2lnbmF0ZWQgcGxhY2UsIHRoZW4gb2ZmZXJpbmcgZXF1aXZhbGVudCBhY2Nlc3MgdG8gY29weSB0aGUKc291cmNlIGNvZGUgZnJvbSB0aGUgc2FtZSBwbGFjZSBzYXRpc2ZpZXMgdGhlIHJlcXVpcmVtZW50IHRvCmRpc3RyaWJ1dGUgdGhlIHNvdXJjZSBjb2RlLCBldmVuIHRob3VnaCB0aGlyZCBwYXJ0aWVzIGFyZSBub3QKY29tcGVsbGVkIHRvIGNvcHkgdGhlIHNvdXJjZSBhbG9uZyB3aXRoIHRoZSBvYmplY3QgY29kZS4KCiAgNS4gQSBwcm9ncmFtIHRoYXQgY29udGFpbnMgbm8gZGVyaXZhdGl2ZSBvZiBhbnkgcG9ydGlvbiBvZiB0aGUKTGlicmFyeSwgYnV0IGlzIGRlc2lnbmVkIHRvIHdvcmsgd2l0aCB0aGUgTGlicmFyeSBieSBiZWluZyBjb21waWxlZCBvcgpsaW5rZWQgd2l0aCBpdCwgaXMgY2FsbGVkIGEgIndvcmsgdGhhdCB1c2VzIHRoZSBMaWJyYXJ5Ii4gIFN1Y2ggYQp3b3JrLCBpbiBpc29sYXRpb24sIGlzIG5vdCBhIGRlcml2YXRpdmUgd29yayBvZiB0aGUgTGlicmFyeSwgYW5kCnRoZXJlZm9yZSBmYWxscyBvdXRzaWRlIHRoZSBzY29wZSBvZiB0aGlzIExpY2Vuc2UuCgogIEhvd2V2ZXIsIGxpbmtpbmcgYSAid29yayB0aGF0IHVzZXMgdGhlIExpYnJhcnkiIHdpdGggdGhlIExpYnJhcnkKY3JlYXRlcyBhbiBleGVjdXRhYmxlIHRoYXQgaXMgYSBkZXJpdmF0aXZlIG9mIHRoZSBMaWJyYXJ5IChiZWNhdXNlIGl0CmNvbnRhaW5zIHBvcnRpb25zIG9mIHRoZSBMaWJyYXJ5KSwgcmF0aGVyIHRoYW4gYSAid29yayB0aGF0IHVzZXMgdGhlCmxpYnJhcnkiLiAgVGhlIGV4ZWN1dGFibGUgaXMgdGhlcmVmb3JlIGNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlLgpTZWN0aW9uIDYgc3RhdGVzIHRlcm1zIGZvciBkaXN0cmlidXRpb24gb2Ygc3VjaCBleGVjdXRhYmxlcy4KCiAgV2hlbiBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgTGlicmFyeSIgdXNlcyBtYXRlcmlhbCBmcm9tIGEgaGVhZGVyIGZpbGUKdGhhdCBpcyBwYXJ0IG9mIHRoZSBMaWJyYXJ5LCB0aGUgb2JqZWN0IGNvZGUgZm9yIHRoZSB3b3JrIG1heSBiZSBhCmRlcml2YXRpdmUgd29yayBvZiB0aGUgTGlicmFyeSBldmVuIHRob3VnaCB0aGUgc291cmNlIGNvZGUgaXMgbm90LgpXaGV0aGVyIHRoaXMgaXMgdHJ1ZSBpcyBlc3BlY2lhbGx5IHNpZ25pZmljYW50IGlmIHRoZSB3b3JrIGNhbiBiZQpsaW5rZWQgd2l0aG91dCB0aGUgTGlicmFyeSwgb3IgaWYgdGhlIHdvcmsgaXMgaXRzZWxmIGEgbGlicmFyeS4gIFRoZQp0aHJlc2hvbGQgZm9yIHRoaXMgdG8gYmUgdHJ1ZSBpcyBub3QgcHJlY2lzZWx5IGRlZmluZWQgYnkgbGF3LgoKICBJZiBzdWNoIGFuIG9iamVjdCBmaWxlIHVzZXMgb25seSBudW1lcmljYWwgcGFyYW1ldGVycywgZGF0YQpzdHJ1Y3R1cmUgbGF5b3V0cyBhbmQgYWNjZXNzb3JzLCBhbmQgc21hbGwgbWFjcm9zIGFuZCBzbWFsbCBpbmxpbmUKZnVuY3Rpb25zICh0ZW4gbGluZXMgb3IgbGVzcyBpbiBsZW5ndGgpLCB0aGVuIHRoZSB1c2Ugb2YgdGhlIG9iamVjdApmaWxlIGlzIHVucmVzdHJpY3RlZCwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGlzIGxlZ2FsbHkgYSBkZXJpdmF0aXZlCndvcmsuICAoRXhlY3V0YWJsZXMgY29udGFpbmluZyB0aGlzIG9iamVjdCBjb2RlIHBsdXMgcG9ydGlvbnMgb2YgdGhlCkxpYnJhcnkgd2lsbCBzdGlsbCBmYWxsIHVuZGVyIFNlY3Rpb24gNi4pCgogIE90aGVyd2lzZSwgaWYgdGhlIHdvcmsgaXMgYSBkZXJpdmF0aXZlIG9mIHRoZSBMaWJyYXJ5LCB5b3UgbWF5CmRpc3RyaWJ1dGUgdGhlIG9iamVjdCBjb2RlIGZvciB0aGUgd29yayB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbiA2LgpBbnkgZXhlY3V0YWJsZXMgY29udGFpbmluZyB0aGF0IHdvcmsgYWxzbyBmYWxsIHVuZGVyIFNlY3Rpb24gNiwKd2hldGhlciBvciBub3QgdGhleSBhcmUgbGlua2VkIGRpcmVjdGx5IHdpdGggdGhlIExpYnJhcnkgaXRzZWxmLgoMCiAgNi4gQXMgYW4gZXhjZXB0aW9uIHRvIHRoZSBTZWN0aW9ucyBhYm92ZSwgeW91IG1heSBhbHNvIGNvbWJpbmUgb3IKbGluayBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgTGlicmFyeSIgd2l0aCB0aGUgTGlicmFyeSB0byBwcm9kdWNlIGEKd29yayBjb250YWluaW5nIHBvcnRpb25zIG9mIHRoZSBMaWJyYXJ5LCBhbmQgZGlzdHJpYnV0ZSB0aGF0IHdvcmsKdW5kZXIgdGVybXMgb2YgeW91ciBjaG9pY2UsIHByb3ZpZGVkIHRoYXQgdGhlIHRlcm1zIHBlcm1pdAptb2RpZmljYXRpb24gb2YgdGhlIHdvcmsgZm9yIHRoZSBjdXN0b21lcidzIG93biB1c2UgYW5kIHJldmVyc2UKZW5naW5lZXJpbmcgZm9yIGRlYnVnZ2luZyBzdWNoIG1vZGlmaWNhdGlvbnMuCgogIFlvdSBtdXN0IGdpdmUgcHJvbWluZW50IG5vdGljZSB3aXRoIGVhY2ggY29weSBvZiB0aGUgd29yayB0aGF0IHRoZQpMaWJyYXJ5IGlzIHVzZWQgaW4gaXQgYW5kIHRoYXQgdGhlIExpYnJhcnkgYW5kIGl0cyB1c2UgYXJlIGNvdmVyZWQgYnkKdGhpcyBMaWNlbnNlLiAgWW91IG11c3Qgc3VwcGx5IGEgY29weSBvZiB0aGlzIExpY2Vuc2UuICBJZiB0aGUgd29yawpkdXJpbmcgZXhlY3V0aW9uIGRpc3BsYXlzIGNvcHlyaWdodCBub3RpY2VzLCB5b3UgbXVzdCBpbmNsdWRlIHRoZQpjb3B5cmlnaHQgbm90aWNlIGZvciB0aGUgTGlicmFyeSBhbW9uZyB0aGVtLCBhcyB3ZWxsIGFzIGEgcmVmZXJlbmNlCmRpcmVjdGluZyB0aGUgdXNlciB0byB0aGUgY29weSBvZiB0aGlzIExpY2Vuc2UuICBBbHNvLCB5b3UgbXVzdCBkbyBvbmUKb2YgdGhlc2UgdGhpbmdzOgoKICAgIGEpIEFjY29tcGFueSB0aGUgd29yayB3aXRoIHRoZSBjb21wbGV0ZSBjb3JyZXNwb25kaW5nCiAgICBtYWNoaW5lLXJlYWRhYmxlIHNvdXJjZSBjb2RlIGZvciB0aGUgTGlicmFyeSBpbmNsdWRpbmcgd2hhdGV2ZXIKICAgIGNoYW5nZXMgd2VyZSB1c2VkIGluIHRoZSB3b3JrICh3aGljaCBtdXN0IGJlIGRpc3RyaWJ1dGVkIHVuZGVyCiAgICBTZWN0aW9ucyAxIGFuZCAyIGFib3ZlKTsgYW5kLCBpZiB0aGUgd29yayBpcyBhbiBleGVjdXRhYmxlIGxpbmtlZAogICAgd2l0aCB0aGUgTGlicmFyeSwgd2l0aCB0aGUgY29tcGxldGUgbWFjaGluZS1yZWFkYWJsZSAid29yayB0aGF0CiAgICB1c2VzIHRoZSBMaWJyYXJ5IiwgYXMgb2JqZWN0IGNvZGUgYW5kL29yIHNvdXJjZSBjb2RlLCBzbyB0aGF0IHRoZQogICAgdXNlciBjYW4gbW9kaWZ5IHRoZSBMaWJyYXJ5IGFuZCB0aGVuIHJlbGluayB0byBwcm9kdWNlIGEgbW9kaWZpZWQKICAgIGV4ZWN1dGFibGUgY29udGFpbmluZyB0aGUgbW9kaWZpZWQgTGlicmFyeS4gIChJdCBpcyB1bmRlcnN0b29kCiAgICB0aGF0IHRoZSB1c2VyIHdobyBjaGFuZ2VzIHRoZSBjb250ZW50cyBvZiBkZWZpbml0aW9ucyBmaWxlcyBpbiB0aGUKICAgIExpYnJhcnkgd2lsbCBub3QgbmVjZXNzYXJpbHkgYmUgYWJsZSB0byByZWNvbXBpbGUgdGhlIGFwcGxpY2F0aW9uCiAgICB0byB1c2UgdGhlIG1vZGlmaWVkIGRlZmluaXRpb25zLikKCiAgICBiKSBVc2UgYSBzdWl0YWJsZSBzaGFyZWQgbGlicmFyeSBtZWNoYW5pc20gZm9yIGxpbmtpbmcgd2l0aCB0aGUKICAgIExpYnJhcnkuICBBIHN1aXRhYmxlIG1lY2hhbmlzbSBpcyBvbmUgdGhhdCAoMSkgdXNlcyBhdCBydW4gdGltZSBhCiAgICBjb3B5IG9mIHRoZSBsaWJyYXJ5IGFscmVhZHkgcHJlc2VudCBvbiB0aGUgdXNlcidzIGNvbXB1dGVyIHN5c3RlbSwKICAgIHJhdGhlciB0aGFuIGNvcHlpbmcgbGlicmFyeSBmdW5jdGlvbnMgaW50byB0aGUgZXhlY3V0YWJsZSwgYW5kICgyKQogICAgd2lsbCBvcGVyYXRlIHByb3Blcmx5IHdpdGggYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCBpZgogICAgdGhlIHVzZXIgaW5zdGFsbHMgb25lLCBhcyBsb25nIGFzIHRoZSBtb2RpZmllZCB2ZXJzaW9uIGlzCiAgICBpbnRlcmZhY2UtY29tcGF0aWJsZSB3aXRoIHRoZSB2ZXJzaW9uIHRoYXQgdGhlIHdvcmsgd2FzIG1hZGUgd2l0aC4KCiAgICBjKSBBY2NvbXBhbnkgdGhlIHdvcmsgd2l0aCBhIHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZvciBhdAogICAgbGVhc3QgdGhyZWUgeWVhcnMsIHRvIGdpdmUgdGhlIHNhbWUgdXNlciB0aGUgbWF0ZXJpYWxzCiAgICBzcGVjaWZpZWQgaW4gU3Vic2VjdGlvbiA2YSwgYWJvdmUsIGZvciBhIGNoYXJnZSBubyBtb3JlCiAgICB0aGFuIHRoZSBjb3N0IG9mIHBlcmZvcm1pbmcgdGhpcyBkaXN0cmlidXRpb24uCgogICAgZCkgSWYgZGlzdHJpYnV0aW9uIG9mIHRoZSB3b3JrIGlzIG1hZGUgYnkgb2ZmZXJpbmcgYWNjZXNzIHRvIGNvcHkKICAgIGZyb20gYSBkZXNpZ25hdGVkIHBsYWNlLCBvZmZlciBlcXVpdmFsZW50IGFjY2VzcyB0byBjb3B5IHRoZSBhYm92ZQogICAgc3BlY2lmaWVkIG1hdGVyaWFscyBmcm9tIHRoZSBzYW1lIHBsYWNlLgoKICAgIGUpIFZlcmlmeSB0aGF0IHRoZSB1c2VyIGhhcyBhbHJlYWR5IHJlY2VpdmVkIGEgY29weSBvZiB0aGVzZQogICAgbWF0ZXJpYWxzIG9yIHRoYXQgeW91IGhhdmUgYWxyZWFkeSBzZW50IHRoaXMgdXNlciBhIGNvcHkuCgogIEZvciBhbiBleGVjdXRhYmxlLCB0aGUgcmVxdWlyZWQgZm9ybSBvZiB0aGUgIndvcmsgdGhhdCB1c2VzIHRoZQpMaWJyYXJ5IiBtdXN0IGluY2x1ZGUgYW55IGRhdGEgYW5kIHV0aWxpdHkgcHJvZ3JhbXMgbmVlZGVkIGZvcgpyZXByb2R1Y2luZyB0aGUgZXhlY3V0YWJsZSBmcm9tIGl0LiAgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwKdGhlIG1hdGVyaWFscyB0byBiZSBkaXN0cmlidXRlZCBuZWVkIG5vdCBpbmNsdWRlIGFueXRoaW5nIHRoYXQgaXMKbm9ybWFsbHkgZGlzdHJpYnV0ZWQgKGluIGVpdGhlciBzb3VyY2Ugb3IgYmluYXJ5IGZvcm0pIHdpdGggdGhlIG1ham9yCmNvbXBvbmVudHMgKGNvbXBpbGVyLCBrZXJuZWwsIGFuZCBzbyBvbikgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0gb24Kd2hpY2ggdGhlIGV4ZWN1dGFibGUgcnVucywgdW5sZXNzIHRoYXQgY29tcG9uZW50IGl0c2VsZiBhY2NvbXBhbmllcwp0aGUgZXhlY3V0YWJsZS4KCiAgSXQgbWF5IGhhcHBlbiB0aGF0IHRoaXMgcmVxdWlyZW1lbnQgY29udHJhZGljdHMgdGhlIGxpY2Vuc2UKcmVzdHJpY3Rpb25zIG9mIG90aGVyIHByb3ByaWV0YXJ5IGxpYnJhcmllcyB0aGF0IGRvIG5vdCBub3JtYWxseQphY2NvbXBhbnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0uICBTdWNoIGEgY29udHJhZGljdGlvbiBtZWFucyB5b3UgY2Fubm90CnVzZSBib3RoIHRoZW0gYW5kIHRoZSBMaWJyYXJ5IHRvZ2V0aGVyIGluIGFuIGV4ZWN1dGFibGUgdGhhdCB5b3UKZGlzdHJpYnV0ZS4KDAogIDcuIFlvdSBtYXkgcGxhY2UgbGlicmFyeSBmYWNpbGl0aWVzIHRoYXQgYXJlIGEgd29yayBiYXNlZCBvbiB0aGUKTGlicmFyeSBzaWRlLWJ5LXNpZGUgaW4gYSBzaW5nbGUgbGlicmFyeSB0b2dldGhlciB3aXRoIG90aGVyIGxpYnJhcnkKZmFjaWxpdGllcyBub3QgY292ZXJlZCBieSB0aGlzIExpY2Vuc2UsIGFuZCBkaXN0cmlidXRlIHN1Y2ggYSBjb21iaW5lZApsaWJyYXJ5LCBwcm92aWRlZCB0aGF0IHRoZSBzZXBhcmF0ZSBkaXN0cmlidXRpb24gb2YgdGhlIHdvcmsgYmFzZWQgb24KdGhlIExpYnJhcnkgYW5kIG9mIHRoZSBvdGhlciBsaWJyYXJ5IGZhY2lsaXRpZXMgaXMgb3RoZXJ3aXNlCnBlcm1pdHRlZCwgYW5kIHByb3ZpZGVkIHRoYXQgeW91IGRvIHRoZXNlIHR3byB0aGluZ3M6CgogICAgYSkgQWNjb21wYW55IHRoZSBjb21iaW5lZCBsaWJyYXJ5IHdpdGggYSBjb3B5IG9mIHRoZSBzYW1lIHdvcmsKICAgIGJhc2VkIG9uIHRoZSBMaWJyYXJ5LCB1bmNvbWJpbmVkIHdpdGggYW55IG90aGVyIGxpYnJhcnkKICAgIGZhY2lsaXRpZXMuICBUaGlzIG11c3QgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQogICAgU2VjdGlvbnMgYWJvdmUuCgogICAgYikgR2l2ZSBwcm9taW5lbnQgbm90aWNlIHdpdGggdGhlIGNvbWJpbmVkIGxpYnJhcnkgb2YgdGhlIGZhY3QKICAgIHRoYXQgcGFydCBvZiBpdCBpcyBhIHdvcmsgYmFzZWQgb24gdGhlIExpYnJhcnksIGFuZCBleHBsYWluaW5nCiAgICB3aGVyZSB0byBmaW5kIHRoZSBhY2NvbXBhbnlpbmcgdW5jb21iaW5lZCBmb3JtIG9mIHRoZSBzYW1lIHdvcmsuCgogIDguIFlvdSBtYXkgbm90IGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSwgbGluayB3aXRoLCBvciBkaXN0cmlidXRlCnRoZSBMaWJyYXJ5IGV4Y2VwdCBhcyBleHByZXNzbHkgcHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQW55CmF0dGVtcHQgb3RoZXJ3aXNlIHRvIGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSwgbGluayB3aXRoLCBvcgpkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IGlzIHZvaWQsIGFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgdGVybWluYXRlIHlvdXIKcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZS4gIEhvd2V2ZXIsIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzLApvciByaWdodHMsIGZyb20geW91IHVuZGVyIHRoaXMgTGljZW5zZSB3aWxsIG5vdCBoYXZlIHRoZWlyIGxpY2Vuc2VzCnRlcm1pbmF0ZWQgc28gbG9uZyBhcyBzdWNoIHBhcnRpZXMgcmVtYWluIGluIGZ1bGwgY29tcGxpYW5jZS4KCiAgOS4gWW91IGFyZSBub3QgcmVxdWlyZWQgdG8gYWNjZXB0IHRoaXMgTGljZW5zZSwgc2luY2UgeW91IGhhdmUgbm90CnNpZ25lZCBpdC4gIEhvd2V2ZXIsIG5vdGhpbmcgZWxzZSBncmFudHMgeW91IHBlcm1pc3Npb24gdG8gbW9kaWZ5IG9yCmRpc3RyaWJ1dGUgdGhlIExpYnJhcnkgb3IgaXRzIGRlcml2YXRpdmUgd29ya3MuICBUaGVzZSBhY3Rpb25zIGFyZQpwcm9oaWJpdGVkIGJ5IGxhdyBpZiB5b3UgZG8gbm90IGFjY2VwdCB0aGlzIExpY2Vuc2UuICBUaGVyZWZvcmUsIGJ5Cm1vZGlmeWluZyBvciBkaXN0cmlidXRpbmcgdGhlIExpYnJhcnkgKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQpMaWJyYXJ5KSwgeW91IGluZGljYXRlIHlvdXIgYWNjZXB0YW5jZSBvZiB0aGlzIExpY2Vuc2UgdG8gZG8gc28sIGFuZAphbGwgaXRzIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpbmcgb3IgbW9kaWZ5aW5nCnRoZSBMaWJyYXJ5IG9yIHdvcmtzIGJhc2VkIG9uIGl0LgoKICAxMC4gRWFjaCB0aW1lIHlvdSByZWRpc3RyaWJ1dGUgdGhlIExpYnJhcnkgKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQpMaWJyYXJ5KSwgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5IHJlY2VpdmVzIGEgbGljZW5zZSBmcm9tIHRoZQpvcmlnaW5hbCBsaWNlbnNvciB0byBjb3B5LCBkaXN0cmlidXRlLCBsaW5rIHdpdGggb3IgbW9kaWZ5IHRoZSBMaWJyYXJ5CnN1YmplY3QgdG8gdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMuICBZb3UgbWF5IG5vdCBpbXBvc2UgYW55IGZ1cnRoZXIKcmVzdHJpY3Rpb25zIG9uIHRoZSByZWNpcGllbnRzJyBleGVyY2lzZSBvZiB0aGUgcmlnaHRzIGdyYW50ZWQgaGVyZWluLgpZb3UgYXJlIG5vdCByZXNwb25zaWJsZSBmb3IgZW5mb3JjaW5nIGNvbXBsaWFuY2UgYnkgdGhpcmQgcGFydGllcyB3aXRoCnRoaXMgTGljZW5zZS4KDAogIDExLiBJZiwgYXMgYSBjb25zZXF1ZW5jZSBvZiBhIGNvdXJ0IGp1ZGdtZW50IG9yIGFsbGVnYXRpb24gb2YgcGF0ZW50CmluZnJpbmdlbWVudCBvciBmb3IgYW55IG90aGVyIHJlYXNvbiAobm90IGxpbWl0ZWQgdG8gcGF0ZW50IGlzc3VlcyksCmNvbmRpdGlvbnMgYXJlIGltcG9zZWQgb24geW91ICh3aGV0aGVyIGJ5IGNvdXJ0IG9yZGVyLCBhZ3JlZW1lbnQgb3IKb3RoZXJ3aXNlKSB0aGF0IGNvbnRyYWRpY3QgdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLCB0aGV5IGRvIG5vdApleGN1c2UgeW91IGZyb20gdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLiAgSWYgeW91IGNhbm5vdApkaXN0cmlidXRlIHNvIGFzIHRvIHNhdGlzZnkgc2ltdWx0YW5lb3VzbHkgeW91ciBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzCkxpY2Vuc2UgYW5kIGFueSBvdGhlciBwZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5jZSB5b3UKbWF5IG5vdCBkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiBhIHBhdGVudApsaWNlbnNlIHdvdWxkIG5vdCBwZXJtaXQgcm95YWx0eS1mcmVlIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBMaWJyYXJ5IGJ5CmFsbCB0aG9zZSB3aG8gcmVjZWl2ZSBjb3BpZXMgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHlvdSwgdGhlbgp0aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCBpdCBhbmQgdGhpcyBMaWNlbnNlIHdvdWxkIGJlIHRvCnJlZnJhaW4gZW50aXJlbHkgZnJvbSBkaXN0cmlidXRpb24gb2YgdGhlIExpYnJhcnkuCgpJZiBhbnkgcG9ydGlvbiBvZiB0aGlzIHNlY3Rpb24gaXMgaGVsZCBpbnZhbGlkIG9yIHVuZW5mb3JjZWFibGUgdW5kZXIgYW55CnBhcnRpY3VsYXIgY2lyY3Vtc3RhbmNlLCB0aGUgYmFsYW5jZSBvZiB0aGUgc2VjdGlvbiBpcyBpbnRlbmRlZCB0byBhcHBseSwKYW5kIHRoZSBzZWN0aW9uIGFzIGEgd2hvbGUgaXMgaW50ZW5kZWQgdG8gYXBwbHkgaW4gb3RoZXIgY2lyY3Vtc3RhbmNlcy4KCkl0IGlzIG5vdCB0aGUgcHVycG9zZSBvZiB0aGlzIHNlY3Rpb24gdG8gaW5kdWNlIHlvdSB0byBpbmZyaW5nZSBhbnkKcGF0ZW50cyBvciBvdGhlciBwcm9wZXJ0eSByaWdodCBjbGFpbXMgb3IgdG8gY29udGVzdCB2YWxpZGl0eSBvZiBhbnkKc3VjaCBjbGFpbXM7IHRoaXMgc2VjdGlvbiBoYXMgdGhlIHNvbGUgcHVycG9zZSBvZiBwcm90ZWN0aW5nIHRoZQppbnRlZ3JpdHkgb2YgdGhlIGZyZWUgc29mdHdhcmUgZGlzdHJpYnV0aW9uIHN5c3RlbSB3aGljaCBpcwppbXBsZW1lbnRlZCBieSBwdWJsaWMgbGljZW5zZSBwcmFjdGljZXMuICBNYW55IHBlb3BsZSBoYXZlIG1hZGUKZ2VuZXJvdXMgY29udHJpYnV0aW9ucyB0byB0aGUgd2lkZSByYW5nZSBvZiBzb2Z0d2FyZSBkaXN0cmlidXRlZAp0aHJvdWdoIHRoYXQgc3lzdGVtIGluIHJlbGlhbmNlIG9uIGNvbnNpc3RlbnQgYXBwbGljYXRpb24gb2YgdGhhdApzeXN0ZW07IGl0IGlzIHVwIHRvIHRoZSBhdXRob3IvZG9ub3IgdG8gZGVjaWRlIGlmIGhlIG9yIHNoZSBpcyB3aWxsaW5nCnRvIGRpc3RyaWJ1dGUgc29mdHdhcmUgdGhyb3VnaCBhbnkgb3RoZXIgc3lzdGVtIGFuZCBhIGxpY2Vuc2VlIGNhbm5vdAppbXBvc2UgdGhhdCBjaG9pY2UuCgpUaGlzIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8gbWFrZSB0aG9yb3VnaGx5IGNsZWFyIHdoYXQgaXMgYmVsaWV2ZWQgdG8KYmUgYSBjb25zZXF1ZW5jZSBvZiB0aGUgcmVzdCBvZiB0aGlzIExpY2Vuc2UuCgogIDEyLiBJZiB0aGUgZGlzdHJpYnV0aW9uIGFuZC9vciB1c2Ugb2YgdGhlIExpYnJhcnkgaXMgcmVzdHJpY3RlZCBpbgpjZXJ0YWluIGNvdW50cmllcyBlaXRoZXIgYnkgcGF0ZW50cyBvciBieSBjb3B5cmlnaHRlZCBpbnRlcmZhY2VzLCB0aGUKb3JpZ2luYWwgY29weXJpZ2h0IGhvbGRlciB3aG8gcGxhY2VzIHRoZSBMaWJyYXJ5IHVuZGVyIHRoaXMgTGljZW5zZSBtYXkgYWRkCmFuIGV4cGxpY2l0IGdlb2dyYXBoaWNhbCBkaXN0cmlidXRpb24gbGltaXRhdGlvbiBleGNsdWRpbmcgdGhvc2UgY291bnRyaWVzLApzbyB0aGF0IGRpc3RyaWJ1dGlvbiBpcyBwZXJtaXR0ZWQgb25seSBpbiBvciBhbW9uZyBjb3VudHJpZXMgbm90IHRodXMKZXhjbHVkZWQuICBJbiBzdWNoIGNhc2UsIHRoaXMgTGljZW5zZSBpbmNvcnBvcmF0ZXMgdGhlIGxpbWl0YXRpb24gYXMgaWYKd3JpdHRlbiBpbiB0aGUgYm9keSBvZiB0aGlzIExpY2Vuc2UuCgogIDEzLiBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldwp2ZXJzaW9ucyBvZiB0aGUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuClN1Y2ggbmV3IHZlcnNpb25zIHdpbGwgYmUgc2ltaWxhciBpbiBzcGlyaXQgdG8gdGhlIHByZXNlbnQgdmVyc2lvbiwKYnV0IG1heSBkaWZmZXIgaW4gZGV0YWlsIHRvIGFkZHJlc3MgbmV3IHByb2JsZW1zIG9yIGNvbmNlcm5zLgoKRWFjaCB2ZXJzaW9uIGlzIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuICBJZiB0aGUgTGlicmFyeQpzcGVjaWZpZXMgYSB2ZXJzaW9uIG51bWJlciBvZiB0aGlzIExpY2Vuc2Ugd2hpY2ggYXBwbGllcyB0byBpdCBhbmQKImFueSBsYXRlciB2ZXJzaW9uIiwgeW91IGhhdmUgdGhlIG9wdGlvbiBvZiBmb2xsb3dpbmcgdGhlIHRlcm1zIGFuZApjb25kaXRpb25zIGVpdGhlciBvZiB0aGF0IHZlcnNpb24gb3Igb2YgYW55IGxhdGVyIHZlcnNpb24gcHVibGlzaGVkIGJ5CnRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uICBJZiB0aGUgTGlicmFyeSBkb2VzIG5vdCBzcGVjaWZ5IGEKbGljZW5zZSB2ZXJzaW9uIG51bWJlciwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQgYnkKdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KDAogIDE0LiBJZiB5b3Ugd2lzaCB0byBpbmNvcnBvcmF0ZSBwYXJ0cyBvZiB0aGUgTGlicmFyeSBpbnRvIG90aGVyIGZyZWUKcHJvZ3JhbXMgd2hvc2UgZGlzdHJpYnV0aW9uIGNvbmRpdGlvbnMgYXJlIGluY29tcGF0aWJsZSB3aXRoIHRoZXNlLAp3cml0ZSB0byB0aGUgYXV0aG9yIHRvIGFzayBmb3IgcGVybWlzc2lvbi4gIEZvciBzb2Z0d2FyZSB3aGljaCBpcwpjb3B5cmlnaHRlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3cml0ZSB0byB0aGUgRnJlZQpTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3ZSBzb21ldGltZXMgbWFrZSBleGNlcHRpb25zIGZvciB0aGlzLiAgT3VyCmRlY2lzaW9uIHdpbGwgYmUgZ3VpZGVkIGJ5IHRoZSB0d28gZ29hbHMgb2YgcHJlc2VydmluZyB0aGUgZnJlZSBzdGF0dXMKb2YgYWxsIGRlcml2YXRpdmVzIG9mIG91ciBmcmVlIHNvZnR3YXJlIGFuZCBvZiBwcm9tb3RpbmcgdGhlIHNoYXJpbmcKYW5kIHJldXNlIG9mIHNvZnR3YXJlIGdlbmVyYWxseS4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTyBXQVJSQU5UWQoKICAxNS4gQkVDQVVTRSBUSEUgTElCUkFSWSBJUyBMSUNFTlNFRCBGUkVFIE9GIENIQVJHRSwgVEhFUkUgSVMgTk8KV0FSUkFOVFkgRk9SIFRIRSBMSUJSQVJZLCBUTyBUSEUgRVhURU5UIFBFUk1JVFRFRCBCWSBBUFBMSUNBQkxFIExBVy4KRVhDRVBUIFdIRU4gT1RIRVJXSVNFIFNUQVRFRCBJTiBXUklUSU5HIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQvT1IKT1RIRVIgUEFSVElFUyBQUk9WSURFIFRIRSBMSUJSQVJZICJBUyBJUyIgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKS0lORCwgRUlUSEVSIEVYUFJFU1NFRCBPUiBJTVBMSUVELCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCklNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgpQVVJQT1NFLiAgVEhFIEVOVElSRSBSSVNLIEFTIFRPIFRIRSBRVUFMSVRZIEFORCBQRVJGT1JNQU5DRSBPRiBUSEUKTElCUkFSWSBJUyBXSVRIIFlPVS4gIFNIT1VMRCBUSEUgTElCUkFSWSBQUk9WRSBERUZFQ1RJVkUsIFlPVSBBU1NVTUUKVEhFIENPU1QgT0YgQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsIFJFUEFJUiBPUiBDT1JSRUNUSU9OLgoKICAxNi4gSU4gTk8gRVZFTlQgVU5MRVNTIFJFUVVJUkVEIEJZIEFQUExJQ0FCTEUgTEFXIE9SIEFHUkVFRCBUTyBJTgpXUklUSU5HIFdJTEwgQU5ZIENPUFlSSUdIVCBIT0xERVIsIE9SIEFOWSBPVEhFUiBQQVJUWSBXSE8gTUFZIE1PRElGWQpBTkQvT1IgUkVESVNUUklCVVRFIFRIRSBMSUJSQVJZIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVQpGT1IgREFNQUdFUywgSU5DTFVESU5HIEFOWSBHRU5FUkFMLCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SCkNPTlNFUVVFTlRJQUwgREFNQUdFUyBBUklTSU5HIE9VVCBPRiBUSEUgVVNFIE9SIElOQUJJTElUWSBUTyBVU0UgVEhFCkxJQlJBUlkgKElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gTE9TUyBPRiBEQVRBIE9SIERBVEEgQkVJTkcKUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJTkVEIEJZIFlPVSBPUiBUSElSRCBQQVJUSUVTIE9SIEEKRkFJTFVSRSBPRiBUSEUgTElCUkFSWSBUTyBPUEVSQVRFIFdJVEggQU5ZIE9USEVSIFNPRlRXQVJFKSwgRVZFTiBJRgpTVUNIIEhPTERFUiBPUiBPVEhFUiBQQVJUWSBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICkRBTUFHRVMuCgogICAgICAgICAgICAgICAgICAgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKDAogICAgICAgICAgIEhvdyB0byBBcHBseSBUaGVzZSBUZXJtcyB0byBZb3VyIE5ldyBMaWJyYXJpZXMKCiAgSWYgeW91IGRldmVsb3AgYSBuZXcgbGlicmFyeSwgYW5kIHlvdSB3YW50IGl0IHRvIGJlIG9mIHRoZSBncmVhdGVzdApwb3NzaWJsZSB1c2UgdG8gdGhlIHB1YmxpYywgd2UgcmVjb21tZW5kIG1ha2luZyBpdCBmcmVlIHNvZnR3YXJlIHRoYXQKZXZlcnlvbmUgY2FuIHJlZGlzdHJpYnV0ZSBhbmQgY2hhbmdlLiAgWW91IGNhbiBkbyBzbyBieSBwZXJtaXR0aW5nCnJlZGlzdHJpYnV0aW9uIHVuZGVyIHRoZXNlIHRlcm1zIChvciwgYWx0ZXJuYXRpdmVseSwgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQpvcmRpbmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKS4KCiAgVG8gYXBwbHkgdGhlc2UgdGVybXMsIGF0dGFjaCB0aGUgZm9sbG93aW5nIG5vdGljZXMgdG8gdGhlIGxpYnJhcnkuICBJdCBpcwpzYWZlc3QgdG8gYXR0YWNoIHRoZW0gdG8gdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGZpbGUgdG8gbW9zdCBlZmZlY3RpdmVseQpjb252ZXkgdGhlIGV4Y2x1c2lvbiBvZiB3YXJyYW50eTsgYW5kIGVhY2ggZmlsZSBzaG91bGQgaGF2ZSBhdCBsZWFzdCB0aGUKImNvcHlyaWdodCIgbGluZSBhbmQgYSBwb2ludGVyIHRvIHdoZXJlIHRoZSBmdWxsIG5vdGljZSBpcyBmb3VuZC4KCiAgICA8b25lIGxpbmUgdG8gZ2l2ZSB0aGUgbGlicmFyeSdzIG5hbWUgYW5kIGEgYnJpZWYgaWRlYSBvZiB3aGF0IGl0IGRvZXMuPgogICAgQ29weXJpZ2h0IChDKSA8eWVhcj4gIDxuYW1lIG9mIGF1dGhvcj4KCiAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgoKICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgoKICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQoKQWxzbyBhZGQgaW5mb3JtYXRpb24gb24gaG93IHRvIGNvbnRhY3QgeW91IGJ5IGVsZWN0cm9uaWMgYW5kIHBhcGVyIG1haWwuCgpZb3Ugc2hvdWxkIGFsc28gZ2V0IHlvdXIgZW1wbG95ZXIgKGlmIHlvdSB3b3JrIGFzIGEgcHJvZ3JhbW1lcikgb3IgeW91cgpzY2hvb2wsIGlmIGFueSwgdG8gc2lnbiBhICJjb3B5cmlnaHQgZGlzY2xhaW1lciIgZm9yIHRoZSBsaWJyYXJ5LCBpZgpuZWNlc3NhcnkuICBIZXJlIGlzIGEgc2FtcGxlOyBhbHRlciB0aGUgbmFtZXM6CgogIFlveW9keW5lLCBJbmMuLCBoZXJlYnkgZGlzY2xhaW1zIGFsbCBjb3B5cmlnaHQgaW50ZXJlc3QgaW4gdGhlCiAgbGlicmFyeSBgRnJvYicgKGEgbGlicmFyeSBmb3IgdHdlYWtpbmcga25vYnMpIHdyaXR0ZW4gYnkgSmFtZXMgUmFuZG9tIEhhY2tlci4KCiAgPHNpZ25hdHVyZSBvZiBUeSBDb29uPiwgMSBBcHJpbCAxOTkwCiAgVHkgQ29vbiwgUHJlc2lkZW50IG9mIFZpY2UKClRoYXQncyBhbGwgdGhlcmUgaXMgdG8gaXQhCg== + + + declared license of 'chardet' + LGPL + + + pkg:pypi/chardet@5.2.0 + + + https://chardet.readthedocs.io/ + from packaging metadata Project-URL: Documentation + + + https://github.com/chardet/chardet/issues + from packaging metadata Project-URL: Issue Tracker + + + https://github.com/chardet/chardet + from packaging metadata Project-URL: GitHub Project + + + https://github.com/chardet/chardet + from packaging metadata: Home-page + + + cryptography 43.0.1 @@ -453,250 +199,6 @@ SPDX-License-Identifier: BSD-2-Clause License :: OSI Approved :: BSD License - - declared license file: LICENSE - This software is made available under the terms of *either* of the licenses -found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made -under the terms of *both* these licenses. - - - - declared license file: LICENSE.APACHE - - Apache License - Version 2.0, January 2004 - https://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - https://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - - declared license file: LICENSE.BSD - Copyright (c) Individual contributors. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. Neither the name of PyCA Cryptography nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - @@ -710,40 +212,11 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. declared license file: AUTHORS - Stefan Kögl <stefan@skoegl.net> -Alexander Shorin <kxepal@gmail.com> -Christopher J. White <chris@grierwhite.com> - + U3RlZmFuIEvDtmdsIDxzdGVmYW5Ac2tvZWdsLm5ldD4KQWxleGFuZGVyIFNob3JpbiA8a3hlcGFsQGdtYWlsLmNvbT4KQ2hyaXN0b3BoZXIgSi4gV2hpdGUgPGNocmlzQGdyaWVyd2hpdGUuY29tPgo= declared license file: LICENSE.txt - Copyright (c) 2011 Stefan Kögl <stefan@skoegl.net> -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - + Q29weXJpZ2h0IChjKSAyMDExIFN0ZWZhbiBLw7ZnbCA8c3RlZmFuQHNrb2VnbC5uZXQ+CkFsbCByaWdodHMgcmVzZXJ2ZWQuCgpSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCmFyZSBtZXQ6CgoxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCjIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KMy4gVGhlIG5hbWUgb2YgdGhlIGF1dGhvciBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzCiAgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgoKVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IKSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUwpPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELgpJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsCklOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVApOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCkRBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQpUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCihJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgpUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgoK declared license of 'jsonpointer' @@ -768,458 +241,23 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. declared license file: AUTHORS.rst - The following organizations or individuals have contributed to this code: - -- Ayan Sinha Mahapatra @AyanSinhaMahapatra -- Carmen Bianca Bakker @carmenbianca -- Chin-Yeung Li @chinyeungli -- Dennis Clark @DennisClark -- John Horan @johnmhoran -- Jono Yang @JonoYang -- Max Mehl @mxmehl -- nexB Inc. @nexB -- Peter Kolbus @pkolbus -- Philippe Ombredanne @pombredanne -- Sebastian Schuberth @sschuberth -- Steven Esser @majurg -- Thomas Druez @tdruez - + VGhlIGZvbGxvd2luZyBvcmdhbml6YXRpb25zIG9yIGluZGl2aWR1YWxzIGhhdmUgY29udHJpYnV0ZWQgdG8gdGhpcyBjb2RlOgoKLSBBeWFuIFNpbmhhIE1haGFwYXRyYSBAQXlhblNpbmhhTWFoYXBhdHJhCi0gQ2FybWVuIEJpYW5jYSBCYWtrZXIgQGNhcm1lbmJpYW5jYQotIENoaW4tWWV1bmcgTGkgQGNoaW55ZXVuZ2xpCi0gRGVubmlzIENsYXJrIEBEZW5uaXNDbGFyawotIEpvaG4gSG9yYW4gQGpvaG5taG9yYW4KLSBKb25vIFlhbmcgQEpvbm9ZYW5nCi0gTWF4IE1laGwgQG14bWVobAotIG5leEIgSW5jLiBAbmV4QgotIFBldGVyIEtvbGJ1cyBAcGtvbGJ1cwotIFBoaWxpcHBlIE9tYnJlZGFubmUgQHBvbWJyZWRhbm5lCi0gU2ViYXN0aWFuIFNjaHViZXJ0aCBAc3NjaHViZXJ0aAotIFN0ZXZlbiBFc3NlciBAbWFqdXJnCi0gVGhvbWFzIERydWV6IEB0ZHJ1ZXoK declared license file: CHANGELOG.rst - Changelog -========= - -v30.3.0 - 2024-03-18 --------------------- - -This is a minor release without API changes: - -- Use latest skeleton -- Update license list to latest ScanCode and SPDX 3.23 -- Drop support for Python 3.7 - -v30.2.0 - 2023-11-29 --------------------- - -This is a minor release without API changes: - -- Use latest skeleton -- Update license list to latest ScanCode and SPDX 3.22 -- Add Python 3.12 support in CI - - -v30.1.1 - 2023-01-16 ----------------------- - -This is a minor dot release without API changes - -- Use latest skeleton -- Update license list to latest ScanCode and SPDX 3.20 - - -v30.1.0 - 2023-01-16 ----------------------- - -This is a minor release without API changes - -- Use latest skeleton (and updated configure script) -- Update license list to latest ScanCode and SPDX 3.19 -- Use correct syntax for python_require -- Drop using Travis and Appveyor -- Drop support for Python 3.7 and add Python 3.11 in CI - - -v30.0.0 - 2022-05-10 ----------------------- - -This is a minor release with API changes - -- Use latest skeleton (and updated configure script) -- Drop using calver -- Improve error checking when combining licenses - - - -v21.6.14 - 2021-06-14 ----------------------- - -Added -~~~~~ - -- Switch to calver for package versioning to better convey the currency of the - bundled data. - -- Include https://scancode-licensedb.aboutcode.org/ licenses list with - ScanCode (v21.6.7) and SPDX licenses (v3.13) keys. Add new functions to - create Licensing using these licenses as LicenseSymbol. - -- Add new License.dedup() method to deduplicate and simplify license expressions - without over simplifying. - -- Add new License.validate() method to return a new ExpressionInfo object with - details on a license expression validation. - - -Changed -~~~~~~~ -- Drop support for Python 2. -- Adopt the project skeleton from https://github.com/nexB/skeleton - and its new configure script - - -v1.2 - 2019-11-14 ------------------- -Added -~~~~~ -- Add ability to render WITH expression wrapped in parenthesis - -Fixes -~~~~~ -- Fix anomalous backslashes in strings - -Changed -~~~~~~~ -- Update the thirdparty directory structure. - - -v1.0 - 2019-10-16 ------------------- -Added -~~~~~ -- New version of boolean.py library -- Add ability to leave license expressions unsorted when simplifying - -Changed -~~~~~~~ -- updated travis CI settings - - -v0.999 - 2019-04-29 --------------------- -- Initial release -- license-expression is small utility library to parse, compare and - simplify and normalize license expressions. - - + Q2hhbmdlbG9nCj09PT09PT09PQoKdjMwLjMuMCAtIDIwMjQtMDMtMTgKLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRoaXMgaXMgYSBtaW5vciByZWxlYXNlIHdpdGhvdXQgQVBJIGNoYW5nZXM6CgotIFVzZSBsYXRlc3Qgc2tlbGV0b24KLSBVcGRhdGUgbGljZW5zZSBsaXN0IHRvIGxhdGVzdCBTY2FuQ29kZSBhbmQgU1BEWCAzLjIzCi0gRHJvcCBzdXBwb3J0IGZvciBQeXRob24gMy43Cgp2MzAuMi4wIC0gMjAyMy0xMS0yOQotLS0tLS0tLS0tLS0tLS0tLS0tLQoKVGhpcyBpcyBhIG1pbm9yIHJlbGVhc2Ugd2l0aG91dCBBUEkgY2hhbmdlczoKCi0gVXNlIGxhdGVzdCBza2VsZXRvbgotIFVwZGF0ZSBsaWNlbnNlIGxpc3QgdG8gbGF0ZXN0IFNjYW5Db2RlIGFuZCBTUERYIDMuMjIKLSBBZGQgUHl0aG9uIDMuMTIgc3VwcG9ydCBpbiBDSQoKCnYzMC4xLjEgLSAyMDIzLTAxLTE2Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRoaXMgaXMgYSBtaW5vciBkb3QgcmVsZWFzZSB3aXRob3V0IEFQSSBjaGFuZ2VzCgotIFVzZSBsYXRlc3Qgc2tlbGV0b24KLSBVcGRhdGUgbGljZW5zZSBsaXN0IHRvIGxhdGVzdCBTY2FuQ29kZSBhbmQgU1BEWCAzLjIwCgoKdjMwLjEuMCAtIDIwMjMtMDEtMTYKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKVGhpcyBpcyBhIG1pbm9yIHJlbGVhc2Ugd2l0aG91dCBBUEkgY2hhbmdlcwoKLSBVc2UgbGF0ZXN0IHNrZWxldG9uIChhbmQgdXBkYXRlZCBjb25maWd1cmUgc2NyaXB0KQotIFVwZGF0ZSBsaWNlbnNlIGxpc3QgdG8gbGF0ZXN0IFNjYW5Db2RlIGFuZCBTUERYIDMuMTkKLSBVc2UgY29ycmVjdCBzeW50YXggZm9yIHB5dGhvbl9yZXF1aXJlCi0gRHJvcCB1c2luZyBUcmF2aXMgYW5kIEFwcHZleW9yCi0gRHJvcCBzdXBwb3J0IGZvciBQeXRob24gMy43IGFuZCBhZGQgUHl0aG9uIDMuMTEgaW4gQ0kKCgp2MzAuMC4wIC0gMjAyMi0wNS0xMAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpUaGlzIGlzIGEgbWlub3IgcmVsZWFzZSB3aXRoIEFQSSBjaGFuZ2VzCgotIFVzZSBsYXRlc3Qgc2tlbGV0b24gKGFuZCB1cGRhdGVkIGNvbmZpZ3VyZSBzY3JpcHQpCi0gRHJvcCB1c2luZyBjYWx2ZXIKLSBJbXByb3ZlIGVycm9yIGNoZWNraW5nIHdoZW4gY29tYmluaW5nIGxpY2Vuc2VzCgoKCnYyMS42LjE0IC0gMjAyMS0wNi0xNAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpBZGRlZAp+fn5+fgoKLSBTd2l0Y2ggdG8gY2FsdmVyIGZvciBwYWNrYWdlIHZlcnNpb25pbmcgdG8gYmV0dGVyIGNvbnZleSB0aGUgY3VycmVuY3kgb2YgdGhlCiAgYnVuZGxlZCBkYXRhLgoKLSBJbmNsdWRlIGh0dHBzOi8vc2NhbmNvZGUtbGljZW5zZWRiLmFib3V0Y29kZS5vcmcvIGxpY2Vuc2VzIGxpc3Qgd2l0aAogIFNjYW5Db2RlICh2MjEuNi43KSBhbmQgU1BEWCBsaWNlbnNlcyAodjMuMTMpIGtleXMuIEFkZCBuZXcgZnVuY3Rpb25zIHRvCiAgY3JlYXRlIExpY2Vuc2luZyB1c2luZyB0aGVzZSBsaWNlbnNlcyBhcyBMaWNlbnNlU3ltYm9sLgoKLSBBZGQgbmV3IExpY2Vuc2UuZGVkdXAoKSBtZXRob2QgdG8gZGVkdXBsaWNhdGUgYW5kIHNpbXBsaWZ5IGxpY2Vuc2UgZXhwcmVzc2lvbnMKICB3aXRob3V0IG92ZXIgc2ltcGxpZnlpbmcuCgotIEFkZCBuZXcgTGljZW5zZS52YWxpZGF0ZSgpIG1ldGhvZCB0byByZXR1cm4gYSBuZXcgRXhwcmVzc2lvbkluZm8gb2JqZWN0IHdpdGgKICBkZXRhaWxzIG9uIGEgbGljZW5zZSBleHByZXNzaW9uIHZhbGlkYXRpb24uCgoKQ2hhbmdlZAp+fn5+fn5+Ci0gRHJvcCBzdXBwb3J0IGZvciBQeXRob24gMi4KLSBBZG9wdCB0aGUgcHJvamVjdCBza2VsZXRvbiBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9uZXhCL3NrZWxldG9uCiAgYW5kIGl0cyBuZXcgY29uZmlndXJlIHNjcmlwdAoKCnYxLjIgLSAyMDE5LTExLTE0Ci0tLS0tLS0tLS0tLS0tLS0tLQpBZGRlZAp+fn5+fgotIEFkZCBhYmlsaXR5IHRvIHJlbmRlciBXSVRIIGV4cHJlc3Npb24gd3JhcHBlZCBpbiBwYXJlbnRoZXNpcwoKRml4ZXMKfn5+fn4KLSBGaXggYW5vbWFsb3VzIGJhY2tzbGFzaGVzIGluIHN0cmluZ3MKCkNoYW5nZWQKfn5+fn5+fgotIFVwZGF0ZSB0aGUgdGhpcmRwYXJ0eSBkaXJlY3Rvcnkgc3RydWN0dXJlLgoKCnYxLjAgLSAyMDE5LTEwLTE2Ci0tLS0tLS0tLS0tLS0tLS0tLQpBZGRlZAp+fn5+fgotIE5ldyB2ZXJzaW9uIG9mIGJvb2xlYW4ucHkgbGlicmFyeQotIEFkZCBhYmlsaXR5IHRvIGxlYXZlIGxpY2Vuc2UgZXhwcmVzc2lvbnMgdW5zb3J0ZWQgd2hlbiBzaW1wbGlmeWluZwoKQ2hhbmdlZAp+fn5+fn5+Ci0gdXBkYXRlZCB0cmF2aXMgQ0kgc2V0dGluZ3MKCgp2MC45OTkgLSAyMDE5LTA0LTI5Ci0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gSW5pdGlhbCByZWxlYXNlCi0gbGljZW5zZS1leHByZXNzaW9uIGlzIHNtYWxsIHV0aWxpdHkgbGlicmFyeSB0byBwYXJzZSwgY29tcGFyZSBhbmQKICBzaW1wbGlmeSBhbmQgbm9ybWFsaXplIGxpY2Vuc2UgZXhwcmVzc2lvbnMuCgo= declared license file: CODE_OF_CONDUCT.rst - Contributor Covenant Code of Conduct -==================================== - -Our Pledge ----------- - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our -project and our community a harassment-free experience for everyone, -regardless of age, body size, disability, ethnicity, gender identity and -expression, level of experience, education, socio-economic status, -nationality, personal appearance, race, religion, or sexual identity and -orientation. - -Our Standards -------------- - -Examples of behavior that contributes to creating a positive environment -include: - -- Using welcoming and inclusive language -- Being respectful of differing viewpoints and experiences -- Gracefully accepting constructive criticism -- Focusing on what is best for the community -- Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -- The use of sexualized language or imagery and unwelcome sexual - attention or advances -- Trolling, insulting/derogatory comments, and personal or political - attacks -- Public or private harassment -- Publishing others’ private information, such as a physical or - electronic address, without explicit permission -- Other conduct which could reasonably be considered inappropriate in a - professional setting - -Our Responsibilities --------------------- - -Project maintainers are responsible for clarifying the standards of -acceptable behavior and are expected to take appropriate and fair -corrective action in response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, -or reject comments, commits, code, wiki edits, issues, and other -contributions that are not aligned to this Code of Conduct, or to ban -temporarily or permanently any contributor for other behaviors that they -deem inappropriate, threatening, offensive, or harmful. - -Scope ------ - -This Code of Conduct applies both within project spaces and in public -spaces when an individual is representing the project or its community. -Examples of representing a project or community include using an -official project e-mail address, posting via an official social media -account, or acting as an appointed representative at an online or -offline event. Representation of a project may be further defined and -clarified by project maintainers. - -Enforcement ------------ - -Instances of abusive, harassing, or otherwise unacceptable behavior may -be reported by contacting the project team at pombredanne@gmail.com -or on the Gitter chat channel at https://gitter.im/aboutcode-org/discuss . -All complaints will be reviewed and investigated and will result in a -response that is deemed necessary and appropriate to the circumstances. -The project team is obligated to maintain confidentiality with regard to -the reporter of an incident. Further details of specific enforcement -policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in -good faith may face temporary or permanent repercussions as determined -by other members of the project’s leadership. - -Attribution ------------ - -This Code of Conduct is adapted from the `Contributor Covenant`_ , -version 1.4, available at -https://www.contributor-covenant.org/version/1/4/code-of-conduct.html - -.. _Contributor Covenant: https://www.contributor-covenant.org - + Q29udHJpYnV0b3IgQ292ZW5hbnQgQ29kZSBvZiBDb25kdWN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKT3VyIFBsZWRnZQotLS0tLS0tLS0tCgpJbiB0aGUgaW50ZXJlc3Qgb2YgZm9zdGVyaW5nIGFuIG9wZW4gYW5kIHdlbGNvbWluZyBlbnZpcm9ubWVudCwgd2UgYXMKY29udHJpYnV0b3JzIGFuZCBtYWludGFpbmVycyBwbGVkZ2UgdG8gbWFraW5nIHBhcnRpY2lwYXRpb24gaW4gb3VyCnByb2plY3QgYW5kIG91ciBjb21tdW5pdHkgYSBoYXJhc3NtZW50LWZyZWUgZXhwZXJpZW5jZSBmb3IgZXZlcnlvbmUsCnJlZ2FyZGxlc3Mgb2YgYWdlLCBib2R5IHNpemUsIGRpc2FiaWxpdHksIGV0aG5pY2l0eSwgZ2VuZGVyIGlkZW50aXR5IGFuZApleHByZXNzaW9uLCBsZXZlbCBvZiBleHBlcmllbmNlLCBlZHVjYXRpb24sIHNvY2lvLWVjb25vbWljIHN0YXR1cywKbmF0aW9uYWxpdHksIHBlcnNvbmFsIGFwcGVhcmFuY2UsIHJhY2UsIHJlbGlnaW9uLCBvciBzZXh1YWwgaWRlbnRpdHkgYW5kCm9yaWVudGF0aW9uLgoKT3VyIFN0YW5kYXJkcwotLS0tLS0tLS0tLS0tCgpFeGFtcGxlcyBvZiBiZWhhdmlvciB0aGF0IGNvbnRyaWJ1dGVzIHRvIGNyZWF0aW5nIGEgcG9zaXRpdmUgZW52aXJvbm1lbnQKaW5jbHVkZToKCi0gIFVzaW5nIHdlbGNvbWluZyBhbmQgaW5jbHVzaXZlIGxhbmd1YWdlCi0gIEJlaW5nIHJlc3BlY3RmdWwgb2YgZGlmZmVyaW5nIHZpZXdwb2ludHMgYW5kIGV4cGVyaWVuY2VzCi0gIEdyYWNlZnVsbHkgYWNjZXB0aW5nIGNvbnN0cnVjdGl2ZSBjcml0aWNpc20KLSAgRm9jdXNpbmcgb24gd2hhdCBpcyBiZXN0IGZvciB0aGUgY29tbXVuaXR5Ci0gIFNob3dpbmcgZW1wYXRoeSB0b3dhcmRzIG90aGVyIGNvbW11bml0eSBtZW1iZXJzCgpFeGFtcGxlcyBvZiB1bmFjY2VwdGFibGUgYmVoYXZpb3IgYnkgcGFydGljaXBhbnRzIGluY2x1ZGU6CgotICBUaGUgdXNlIG9mIHNleHVhbGl6ZWQgbGFuZ3VhZ2Ugb3IgaW1hZ2VyeSBhbmQgdW53ZWxjb21lIHNleHVhbAogICBhdHRlbnRpb24gb3IgYWR2YW5jZXMKLSAgVHJvbGxpbmcsIGluc3VsdGluZy9kZXJvZ2F0b3J5IGNvbW1lbnRzLCBhbmQgcGVyc29uYWwgb3IgcG9saXRpY2FsCiAgIGF0dGFja3MKLSAgUHVibGljIG9yIHByaXZhdGUgaGFyYXNzbWVudAotICBQdWJsaXNoaW5nIG90aGVyc+KAmSBwcml2YXRlIGluZm9ybWF0aW9uLCBzdWNoIGFzIGEgcGh5c2ljYWwgb3IKICAgZWxlY3Ryb25pYyBhZGRyZXNzLCB3aXRob3V0IGV4cGxpY2l0IHBlcm1pc3Npb24KLSAgT3RoZXIgY29uZHVjdCB3aGljaCBjb3VsZCByZWFzb25hYmx5IGJlIGNvbnNpZGVyZWQgaW5hcHByb3ByaWF0ZSBpbiBhCiAgIHByb2Zlc3Npb25hbCBzZXR0aW5nCgpPdXIgUmVzcG9uc2liaWxpdGllcwotLS0tLS0tLS0tLS0tLS0tLS0tLQoKUHJvamVjdCBtYWludGFpbmVycyBhcmUgcmVzcG9uc2libGUgZm9yIGNsYXJpZnlpbmcgdGhlIHN0YW5kYXJkcyBvZgphY2NlcHRhYmxlIGJlaGF2aW9yIGFuZCBhcmUgZXhwZWN0ZWQgdG8gdGFrZSBhcHByb3ByaWF0ZSBhbmQgZmFpcgpjb3JyZWN0aXZlIGFjdGlvbiBpbiByZXNwb25zZSB0byBhbnkgaW5zdGFuY2VzIG9mIHVuYWNjZXB0YWJsZSBiZWhhdmlvci4KClByb2plY3QgbWFpbnRhaW5lcnMgaGF2ZSB0aGUgcmlnaHQgYW5kIHJlc3BvbnNpYmlsaXR5IHRvIHJlbW92ZSwgZWRpdCwKb3IgcmVqZWN0IGNvbW1lbnRzLCBjb21taXRzLCBjb2RlLCB3aWtpIGVkaXRzLCBpc3N1ZXMsIGFuZCBvdGhlcgpjb250cmlidXRpb25zIHRoYXQgYXJlIG5vdCBhbGlnbmVkIHRvIHRoaXMgQ29kZSBvZiBDb25kdWN0LCBvciB0byBiYW4KdGVtcG9yYXJpbHkgb3IgcGVybWFuZW50bHkgYW55IGNvbnRyaWJ1dG9yIGZvciBvdGhlciBiZWhhdmlvcnMgdGhhdCB0aGV5CmRlZW0gaW5hcHByb3ByaWF0ZSwgdGhyZWF0ZW5pbmcsIG9mZmVuc2l2ZSwgb3IgaGFybWZ1bC4KClNjb3BlCi0tLS0tCgpUaGlzIENvZGUgb2YgQ29uZHVjdCBhcHBsaWVzIGJvdGggd2l0aGluIHByb2plY3Qgc3BhY2VzIGFuZCBpbiBwdWJsaWMKc3BhY2VzIHdoZW4gYW4gaW5kaXZpZHVhbCBpcyByZXByZXNlbnRpbmcgdGhlIHByb2plY3Qgb3IgaXRzIGNvbW11bml0eS4KRXhhbXBsZXMgb2YgcmVwcmVzZW50aW5nIGEgcHJvamVjdCBvciBjb21tdW5pdHkgaW5jbHVkZSB1c2luZyBhbgpvZmZpY2lhbCBwcm9qZWN0IGUtbWFpbCBhZGRyZXNzLCBwb3N0aW5nIHZpYSBhbiBvZmZpY2lhbCBzb2NpYWwgbWVkaWEKYWNjb3VudCwgb3IgYWN0aW5nIGFzIGFuIGFwcG9pbnRlZCByZXByZXNlbnRhdGl2ZSBhdCBhbiBvbmxpbmUgb3IKb2ZmbGluZSBldmVudC4gUmVwcmVzZW50YXRpb24gb2YgYSBwcm9qZWN0IG1heSBiZSBmdXJ0aGVyIGRlZmluZWQgYW5kCmNsYXJpZmllZCBieSBwcm9qZWN0IG1haW50YWluZXJzLgoKRW5mb3JjZW1lbnQKLS0tLS0tLS0tLS0KCkluc3RhbmNlcyBvZiBhYnVzaXZlLCBoYXJhc3NpbmcsIG9yIG90aGVyd2lzZSB1bmFjY2VwdGFibGUgYmVoYXZpb3IgbWF5CmJlIHJlcG9ydGVkIGJ5IGNvbnRhY3RpbmcgdGhlIHByb2plY3QgdGVhbSBhdCBwb21icmVkYW5uZUBnbWFpbC5jb20Kb3Igb24gdGhlIEdpdHRlciBjaGF0IGNoYW5uZWwgYXQgaHR0cHM6Ly9naXR0ZXIuaW0vYWJvdXRjb2RlLW9yZy9kaXNjdXNzIC4KQWxsIGNvbXBsYWludHMgd2lsbCBiZSByZXZpZXdlZCBhbmQgaW52ZXN0aWdhdGVkIGFuZCB3aWxsIHJlc3VsdCBpbiBhCnJlc3BvbnNlIHRoYXQgaXMgZGVlbWVkIG5lY2Vzc2FyeSBhbmQgYXBwcm9wcmlhdGUgdG8gdGhlIGNpcmN1bXN0YW5jZXMuClRoZSBwcm9qZWN0IHRlYW0gaXMgb2JsaWdhdGVkIHRvIG1haW50YWluIGNvbmZpZGVudGlhbGl0eSB3aXRoIHJlZ2FyZCB0bwp0aGUgcmVwb3J0ZXIgb2YgYW4gaW5jaWRlbnQuIEZ1cnRoZXIgZGV0YWlscyBvZiBzcGVjaWZpYyBlbmZvcmNlbWVudApwb2xpY2llcyBtYXkgYmUgcG9zdGVkIHNlcGFyYXRlbHkuCgpQcm9qZWN0IG1haW50YWluZXJzIHdobyBkbyBub3QgZm9sbG93IG9yIGVuZm9yY2UgdGhlIENvZGUgb2YgQ29uZHVjdCBpbgpnb29kIGZhaXRoIG1heSBmYWNlIHRlbXBvcmFyeSBvciBwZXJtYW5lbnQgcmVwZXJjdXNzaW9ucyBhcyBkZXRlcm1pbmVkCmJ5IG90aGVyIG1lbWJlcnMgb2YgdGhlIHByb2plY3TigJlzIGxlYWRlcnNoaXAuCgpBdHRyaWJ1dGlvbgotLS0tLS0tLS0tLQoKVGhpcyBDb2RlIG9mIENvbmR1Y3QgaXMgYWRhcHRlZCBmcm9tIHRoZSBgQ29udHJpYnV0b3IgQ292ZW5hbnRgXyAsCnZlcnNpb24gMS40LCBhdmFpbGFibGUgYXQKaHR0cHM6Ly93d3cuY29udHJpYnV0b3ItY292ZW5hbnQub3JnL3ZlcnNpb24vMS80L2NvZGUtb2YtY29uZHVjdC5odG1sCgouLiBfQ29udHJpYnV0b3IgQ292ZW5hbnQ6IGh0dHBzOi8vd3d3LmNvbnRyaWJ1dG9yLWNvdmVuYW50Lm9yZwo= declared license file: NOTICE - # -# Copyright (c) nexB Inc. and others. -# SPDX-License-Identifier: Apache-2.0 -# -# Visit https://aboutcode.org and https://github.com/nexB/license-expression -# for support and download. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - + IwojIENvcHlyaWdodCAoYykgbmV4QiBJbmMuIGFuZCBvdGhlcnMuCiMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKIwojIFZpc2l0IGh0dHBzOi8vYWJvdXRjb2RlLm9yZyBhbmQgaHR0cHM6Ly9naXRodWIuY29tL25leEIvbGljZW5zZS1leHByZXNzaW9uCiMgZm9yIHN1cHBvcnQgYW5kIGRvd25sb2FkLgojCiMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgojIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAojCiMgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgojCg== declared license file: apache-2.0.LICENSE - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBhY2hlIExpY2Vuc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAyLjAsIEphbnVhcnkgMjAwNAogICAgICAgICAgICAgICAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvCgogICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgVVNFLCBSRVBST0RVQ1RJT04sIEFORCBESVNUUklCVVRJT04KCiAgIDEuIERlZmluaXRpb25zLgoKICAgICAgIkxpY2Vuc2UiIHNoYWxsIG1lYW4gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciB1c2UsIHJlcHJvZHVjdGlvbiwKICAgICAgYW5kIGRpc3RyaWJ1dGlvbiBhcyBkZWZpbmVkIGJ5IFNlY3Rpb25zIDEgdGhyb3VnaCA5IG9mIHRoaXMgZG9jdW1lbnQuCgogICAgICAiTGljZW5zb3IiIHNoYWxsIG1lYW4gdGhlIGNvcHlyaWdodCBvd25lciBvciBlbnRpdHkgYXV0aG9yaXplZCBieQogICAgICB0aGUgY29weXJpZ2h0IG93bmVyIHRoYXQgaXMgZ3JhbnRpbmcgdGhlIExpY2Vuc2UuCgogICAgICAiTGVnYWwgRW50aXR5IiBzaGFsbCBtZWFuIHRoZSB1bmlvbiBvZiB0aGUgYWN0aW5nIGVudGl0eSBhbmQgYWxsCiAgICAgIG90aGVyIGVudGl0aWVzIHRoYXQgY29udHJvbCwgYXJlIGNvbnRyb2xsZWQgYnksIG9yIGFyZSB1bmRlciBjb21tb24KICAgICAgY29udHJvbCB3aXRoIHRoYXQgZW50aXR5LiBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwKICAgICAgImNvbnRyb2wiIG1lYW5zIChpKSB0aGUgcG93ZXIsIGRpcmVjdCBvciBpbmRpcmVjdCwgdG8gY2F1c2UgdGhlCiAgICAgIGRpcmVjdGlvbiBvciBtYW5hZ2VtZW50IG9mIHN1Y2ggZW50aXR5LCB3aGV0aGVyIGJ5IGNvbnRyYWN0IG9yCiAgICAgIG90aGVyd2lzZSwgb3IgKGlpKSBvd25lcnNoaXAgb2YgZmlmdHkgcGVyY2VudCAoNTAlKSBvciBtb3JlIG9mIHRoZQogICAgICBvdXRzdGFuZGluZyBzaGFyZXMsIG9yIChpaWkpIGJlbmVmaWNpYWwgb3duZXJzaGlwIG9mIHN1Y2ggZW50aXR5LgoKICAgICAgIllvdSIgKG9yICJZb3VyIikgc2hhbGwgbWVhbiBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eQogICAgICBleGVyY2lzaW5nIHBlcm1pc3Npb25zIGdyYW50ZWQgYnkgdGhpcyBMaWNlbnNlLgoKICAgICAgIlNvdXJjZSIgZm9ybSBzaGFsbCBtZWFuIHRoZSBwcmVmZXJyZWQgZm9ybSBmb3IgbWFraW5nIG1vZGlmaWNhdGlvbnMsCiAgICAgIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gc29mdHdhcmUgc291cmNlIGNvZGUsIGRvY3VtZW50YXRpb24KICAgICAgc291cmNlLCBhbmQgY29uZmlndXJhdGlvbiBmaWxlcy4KCiAgICAgICJPYmplY3QiIGZvcm0gc2hhbGwgbWVhbiBhbnkgZm9ybSByZXN1bHRpbmcgZnJvbSBtZWNoYW5pY2FsCiAgICAgIHRyYW5zZm9ybWF0aW9uIG9yIHRyYW5zbGF0aW9uIG9mIGEgU291cmNlIGZvcm0sIGluY2x1ZGluZyBidXQKICAgICAgbm90IGxpbWl0ZWQgdG8gY29tcGlsZWQgb2JqZWN0IGNvZGUsIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uLAogICAgICBhbmQgY29udmVyc2lvbnMgdG8gb3RoZXIgbWVkaWEgdHlwZXMuCgogICAgICAiV29yayIgc2hhbGwgbWVhbiB0aGUgd29yayBvZiBhdXRob3JzaGlwLCB3aGV0aGVyIGluIFNvdXJjZSBvcgogICAgICBPYmplY3QgZm9ybSwgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIExpY2Vuc2UsIGFzIGluZGljYXRlZCBieSBhCiAgICAgIGNvcHlyaWdodCBub3RpY2UgdGhhdCBpcyBpbmNsdWRlZCBpbiBvciBhdHRhY2hlZCB0byB0aGUgd29yawogICAgICAoYW4gZXhhbXBsZSBpcyBwcm92aWRlZCBpbiB0aGUgQXBwZW5kaXggYmVsb3cpLgoKICAgICAgIkRlcml2YXRpdmUgV29ya3MiIHNoYWxsIG1lYW4gYW55IHdvcmssIHdoZXRoZXIgaW4gU291cmNlIG9yIE9iamVjdAogICAgICBmb3JtLCB0aGF0IGlzIGJhc2VkIG9uIChvciBkZXJpdmVkIGZyb20pIHRoZSBXb3JrIGFuZCBmb3Igd2hpY2ggdGhlCiAgICAgIGVkaXRvcmlhbCByZXZpc2lvbnMsIGFubm90YXRpb25zLCBlbGFib3JhdGlvbnMsIG9yIG90aGVyIG1vZGlmaWNhdGlvbnMKICAgICAgcmVwcmVzZW50LCBhcyBhIHdob2xlLCBhbiBvcmlnaW5hbCB3b3JrIG9mIGF1dGhvcnNoaXAuIEZvciB0aGUgcHVycG9zZXMKICAgICAgb2YgdGhpcyBMaWNlbnNlLCBEZXJpdmF0aXZlIFdvcmtzIHNoYWxsIG5vdCBpbmNsdWRlIHdvcmtzIHRoYXQgcmVtYWluCiAgICAgIHNlcGFyYWJsZSBmcm9tLCBvciBtZXJlbHkgbGluayAob3IgYmluZCBieSBuYW1lKSB0byB0aGUgaW50ZXJmYWNlcyBvZiwKICAgICAgdGhlIFdvcmsgYW5kIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZi4KCiAgICAgICJDb250cmlidXRpb24iIHNoYWxsIG1lYW4gYW55IHdvcmsgb2YgYXV0aG9yc2hpcCwgaW5jbHVkaW5nCiAgICAgIHRoZSBvcmlnaW5hbCB2ZXJzaW9uIG9mIHRoZSBXb3JrIGFuZCBhbnkgbW9kaWZpY2F0aW9ucyBvciBhZGRpdGlvbnMKICAgICAgdG8gdGhhdCBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgdGhhdCBpcyBpbnRlbnRpb25hbGx5CiAgICAgIHN1Ym1pdHRlZCB0byBMaWNlbnNvciBmb3IgaW5jbHVzaW9uIGluIHRoZSBXb3JrIGJ5IHRoZSBjb3B5cmlnaHQgb3duZXIKICAgICAgb3IgYnkgYW4gaW5kaXZpZHVhbCBvciBMZWdhbCBFbnRpdHkgYXV0aG9yaXplZCB0byBzdWJtaXQgb24gYmVoYWxmIG9mCiAgICAgIHRoZSBjb3B5cmlnaHQgb3duZXIuIEZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAic3VibWl0dGVkIgogICAgICBtZWFucyBhbnkgZm9ybSBvZiBlbGVjdHJvbmljLCB2ZXJiYWwsIG9yIHdyaXR0ZW4gY29tbXVuaWNhdGlvbiBzZW50CiAgICAgIHRvIHRoZSBMaWNlbnNvciBvciBpdHMgcmVwcmVzZW50YXRpdmVzLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvCiAgICAgIGNvbW11bmljYXRpb24gb24gZWxlY3Ryb25pYyBtYWlsaW5nIGxpc3RzLCBzb3VyY2UgY29kZSBjb250cm9sIHN5c3RlbXMsCiAgICAgIGFuZCBpc3N1ZSB0cmFja2luZyBzeXN0ZW1zIHRoYXQgYXJlIG1hbmFnZWQgYnksIG9yIG9uIGJlaGFsZiBvZiwgdGhlCiAgICAgIExpY2Vuc29yIGZvciB0aGUgcHVycG9zZSBvZiBkaXNjdXNzaW5nIGFuZCBpbXByb3ZpbmcgdGhlIFdvcmssIGJ1dAogICAgICBleGNsdWRpbmcgY29tbXVuaWNhdGlvbiB0aGF0IGlzIGNvbnNwaWN1b3VzbHkgbWFya2VkIG9yIG90aGVyd2lzZQogICAgICBkZXNpZ25hdGVkIGluIHdyaXRpbmcgYnkgdGhlIGNvcHlyaWdodCBvd25lciBhcyAiTm90IGEgQ29udHJpYnV0aW9uLiIKCiAgICAgICJDb250cmlidXRvciIgc2hhbGwgbWVhbiBMaWNlbnNvciBhbmQgYW55IGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5CiAgICAgIG9uIGJlaGFsZiBvZiB3aG9tIGEgQ29udHJpYnV0aW9uIGhhcyBiZWVuIHJlY2VpdmVkIGJ5IExpY2Vuc29yIGFuZAogICAgICBzdWJzZXF1ZW50bHkgaW5jb3Jwb3JhdGVkIHdpdGhpbiB0aGUgV29yay4KCiAgIDIuIEdyYW50IG9mIENvcHlyaWdodCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCiAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCiAgICAgIGNvcHlyaWdodCBsaWNlbnNlIHRvIHJlcHJvZHVjZSwgcHJlcGFyZSBEZXJpdmF0aXZlIFdvcmtzIG9mLAogICAgICBwdWJsaWNseSBkaXNwbGF5LCBwdWJsaWNseSBwZXJmb3JtLCBzdWJsaWNlbnNlLCBhbmQgZGlzdHJpYnV0ZSB0aGUKICAgICAgV29yayBhbmQgc3VjaCBEZXJpdmF0aXZlIFdvcmtzIGluIFNvdXJjZSBvciBPYmplY3QgZm9ybS4KCiAgIDMuIEdyYW50IG9mIFBhdGVudCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCiAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCiAgICAgIChleGNlcHQgYXMgc3RhdGVkIGluIHRoaXMgc2VjdGlvbikgcGF0ZW50IGxpY2Vuc2UgdG8gbWFrZSwgaGF2ZSBtYWRlLAogICAgICB1c2UsIG9mZmVyIHRvIHNlbGwsIHNlbGwsIGltcG9ydCwgYW5kIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgV29yaywKICAgICAgd2hlcmUgc3VjaCBsaWNlbnNlIGFwcGxpZXMgb25seSB0byB0aG9zZSBwYXRlbnQgY2xhaW1zIGxpY2Vuc2FibGUKICAgICAgYnkgc3VjaCBDb250cmlidXRvciB0aGF0IGFyZSBuZWNlc3NhcmlseSBpbmZyaW5nZWQgYnkgdGhlaXIKICAgICAgQ29udHJpYnV0aW9uKHMpIGFsb25lIG9yIGJ5IGNvbWJpbmF0aW9uIG9mIHRoZWlyIENvbnRyaWJ1dGlvbihzKQogICAgICB3aXRoIHRoZSBXb3JrIHRvIHdoaWNoIHN1Y2ggQ29udHJpYnV0aW9uKHMpIHdhcyBzdWJtaXR0ZWQuIElmIFlvdQogICAgICBpbnN0aXR1dGUgcGF0ZW50IGxpdGlnYXRpb24gYWdhaW5zdCBhbnkgZW50aXR5IChpbmNsdWRpbmcgYQogICAgICBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0IHRoZSBXb3JrCiAgICAgIG9yIGEgQ29udHJpYnV0aW9uIGluY29ycG9yYXRlZCB3aXRoaW4gdGhlIFdvcmsgY29uc3RpdHV0ZXMgZGlyZWN0CiAgICAgIG9yIGNvbnRyaWJ1dG9yeSBwYXRlbnQgaW5mcmluZ2VtZW50LCB0aGVuIGFueSBwYXRlbnQgbGljZW5zZXMKICAgICAgZ3JhbnRlZCB0byBZb3UgdW5kZXIgdGhpcyBMaWNlbnNlIGZvciB0aGF0IFdvcmsgc2hhbGwgdGVybWluYXRlCiAgICAgIGFzIG9mIHRoZSBkYXRlIHN1Y2ggbGl0aWdhdGlvbiBpcyBmaWxlZC4KCiAgIDQuIFJlZGlzdHJpYnV0aW9uLiBZb3UgbWF5IHJlcHJvZHVjZSBhbmQgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlCiAgICAgIFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mIGluIGFueSBtZWRpdW0sIHdpdGggb3Igd2l0aG91dAogICAgICBtb2RpZmljYXRpb25zLCBhbmQgaW4gU291cmNlIG9yIE9iamVjdCBmb3JtLCBwcm92aWRlZCB0aGF0IFlvdQogICAgICBtZWV0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKCiAgICAgIChhKSBZb3UgbXVzdCBnaXZlIGFueSBvdGhlciByZWNpcGllbnRzIG9mIHRoZSBXb3JrIG9yCiAgICAgICAgICBEZXJpdmF0aXZlIFdvcmtzIGEgY29weSBvZiB0aGlzIExpY2Vuc2U7IGFuZAoKICAgICAgKGIpIFlvdSBtdXN0IGNhdXNlIGFueSBtb2RpZmllZCBmaWxlcyB0byBjYXJyeSBwcm9taW5lbnQgbm90aWNlcwogICAgICAgICAgc3RhdGluZyB0aGF0IFlvdSBjaGFuZ2VkIHRoZSBmaWxlczsgYW5kCgogICAgICAoYykgWW91IG11c3QgcmV0YWluLCBpbiB0aGUgU291cmNlIGZvcm0gb2YgYW55IERlcml2YXRpdmUgV29ya3MKICAgICAgICAgIHRoYXQgWW91IGRpc3RyaWJ1dGUsIGFsbCBjb3B5cmlnaHQsIHBhdGVudCwgdHJhZGVtYXJrLCBhbmQKICAgICAgICAgIGF0dHJpYnV0aW9uIG5vdGljZXMgZnJvbSB0aGUgU291cmNlIGZvcm0gb2YgdGhlIFdvcmssCiAgICAgICAgICBleGNsdWRpbmcgdGhvc2Ugbm90aWNlcyB0aGF0IGRvIG5vdCBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mCiAgICAgICAgICB0aGUgRGVyaXZhdGl2ZSBXb3JrczsgYW5kCgogICAgICAoZCkgSWYgdGhlIFdvcmsgaW5jbHVkZXMgYSAiTk9USUNFIiB0ZXh0IGZpbGUgYXMgcGFydCBvZiBpdHMKICAgICAgICAgIGRpc3RyaWJ1dGlvbiwgdGhlbiBhbnkgRGVyaXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlIG11c3QKICAgICAgICAgIGluY2x1ZGUgYSByZWFkYWJsZSBjb3B5IG9mIHRoZSBhdHRyaWJ1dGlvbiBub3RpY2VzIGNvbnRhaW5lZAogICAgICAgICAgd2l0aGluIHN1Y2ggTk9USUNFIGZpbGUsIGV4Y2x1ZGluZyB0aG9zZSBub3RpY2VzIHRoYXQgZG8gbm90CiAgICAgICAgICBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpbiBhdCBsZWFzdCBvbmUKICAgICAgICAgIG9mIHRoZSBmb2xsb3dpbmcgcGxhY2VzOiB3aXRoaW4gYSBOT1RJQ0UgdGV4dCBmaWxlIGRpc3RyaWJ1dGVkCiAgICAgICAgICBhcyBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyB3aXRoaW4gdGhlIFNvdXJjZSBmb3JtIG9yCiAgICAgICAgICBkb2N1bWVudGF0aW9uLCBpZiBwcm92aWRlZCBhbG9uZyB3aXRoIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyBvciwKICAgICAgICAgIHdpdGhpbiBhIGRpc3BsYXkgZ2VuZXJhdGVkIGJ5IHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpZiBhbmQKICAgICAgICAgIHdoZXJldmVyIHN1Y2ggdGhpcmQtcGFydHkgbm90aWNlcyBub3JtYWxseSBhcHBlYXIuIFRoZSBjb250ZW50cwogICAgICAgICAgb2YgdGhlIE5PVElDRSBmaWxlIGFyZSBmb3IgaW5mb3JtYXRpb25hbCBwdXJwb3NlcyBvbmx5IGFuZAogICAgICAgICAgZG8gbm90IG1vZGlmeSB0aGUgTGljZW5zZS4gWW91IG1heSBhZGQgWW91ciBvd24gYXR0cmlidXRpb24KICAgICAgICAgIG5vdGljZXMgd2l0aGluIERlcml2YXRpdmUgV29ya3MgdGhhdCBZb3UgZGlzdHJpYnV0ZSwgYWxvbmdzaWRlCiAgICAgICAgICBvciBhcyBhbiBhZGRlbmR1bSB0byB0aGUgTk9USUNFIHRleHQgZnJvbSB0aGUgV29yaywgcHJvdmlkZWQKICAgICAgICAgIHRoYXQgc3VjaCBhZGRpdGlvbmFsIGF0dHJpYnV0aW9uIG5vdGljZXMgY2Fubm90IGJlIGNvbnN0cnVlZAogICAgICAgICAgYXMgbW9kaWZ5aW5nIHRoZSBMaWNlbnNlLgoKICAgICAgWW91IG1heSBhZGQgWW91ciBvd24gY29weXJpZ2h0IHN0YXRlbWVudCB0byBZb3VyIG1vZGlmaWNhdGlvbnMgYW5kCiAgICAgIG1heSBwcm92aWRlIGFkZGl0aW9uYWwgb3IgZGlmZmVyZW50IGxpY2Vuc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMKICAgICAgZm9yIHVzZSwgcmVwcm9kdWN0aW9uLCBvciBkaXN0cmlidXRpb24gb2YgWW91ciBtb2RpZmljYXRpb25zLCBvcgogICAgICBmb3IgYW55IHN1Y2ggRGVyaXZhdGl2ZSBXb3JrcyBhcyBhIHdob2xlLCBwcm92aWRlZCBZb3VyIHVzZSwKICAgICAgcmVwcm9kdWN0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoZSBXb3JrIG90aGVyd2lzZSBjb21wbGllcyB3aXRoCiAgICAgIHRoZSBjb25kaXRpb25zIHN0YXRlZCBpbiB0aGlzIExpY2Vuc2UuCgogICA1LiBTdWJtaXNzaW9uIG9mIENvbnRyaWJ1dGlvbnMuIFVubGVzcyBZb3UgZXhwbGljaXRseSBzdGF0ZSBvdGhlcndpc2UsCiAgICAgIGFueSBDb250cmlidXRpb24gaW50ZW50aW9uYWxseSBzdWJtaXR0ZWQgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yawogICAgICBieSBZb3UgdG8gdGhlIExpY2Vuc29yIHNoYWxsIGJlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICB0aGlzIExpY2Vuc2UsIHdpdGhvdXQgYW55IGFkZGl0aW9uYWwgdGVybXMgb3IgY29uZGl0aW9ucy4KICAgICAgTm90d2l0aHN0YW5kaW5nIHRoZSBhYm92ZSwgbm90aGluZyBoZXJlaW4gc2hhbGwgc3VwZXJzZWRlIG9yIG1vZGlmeQogICAgICB0aGUgdGVybXMgb2YgYW55IHNlcGFyYXRlIGxpY2Vuc2UgYWdyZWVtZW50IHlvdSBtYXkgaGF2ZSBleGVjdXRlZAogICAgICB3aXRoIExpY2Vuc29yIHJlZ2FyZGluZyBzdWNoIENvbnRyaWJ1dGlvbnMuCgogICA2LiBUcmFkZW1hcmtzLiBUaGlzIExpY2Vuc2UgZG9lcyBub3QgZ3JhbnQgcGVybWlzc2lvbiB0byB1c2UgdGhlIHRyYWRlCiAgICAgIG5hbWVzLCB0cmFkZW1hcmtzLCBzZXJ2aWNlIG1hcmtzLCBvciBwcm9kdWN0IG5hbWVzIG9mIHRoZSBMaWNlbnNvciwKICAgICAgZXhjZXB0IGFzIHJlcXVpcmVkIGZvciByZWFzb25hYmxlIGFuZCBjdXN0b21hcnkgdXNlIGluIGRlc2NyaWJpbmcgdGhlCiAgICAgIG9yaWdpbiBvZiB0aGUgV29yayBhbmQgcmVwcm9kdWNpbmcgdGhlIGNvbnRlbnQgb2YgdGhlIE5PVElDRSBmaWxlLgoKICAgNy4gRGlzY2xhaW1lciBvZiBXYXJyYW50eS4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yCiAgICAgIGFncmVlZCB0byBpbiB3cml0aW5nLCBMaWNlbnNvciBwcm92aWRlcyB0aGUgV29yayAoYW5kIGVhY2gKICAgICAgQ29udHJpYnV0b3IgcHJvdmlkZXMgaXRzIENvbnRyaWJ1dGlvbnMpIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgogICAgICBpbXBsaWVkLCBpbmNsdWRpbmcsIHdpdGhvdXQgbGltaXRhdGlvbiwgYW55IHdhcnJhbnRpZXMgb3IgY29uZGl0aW9ucwogICAgICBvZiBUSVRMRSwgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZLCBvciBGSVRORVNTIEZPUiBBCiAgICAgIFBBUlRJQ1VMQVIgUFVSUE9TRS4gWW91IGFyZSBzb2xlbHkgcmVzcG9uc2libGUgZm9yIGRldGVybWluaW5nIHRoZQogICAgICBhcHByb3ByaWF0ZW5lc3Mgb2YgdXNpbmcgb3IgcmVkaXN0cmlidXRpbmcgdGhlIFdvcmsgYW5kIGFzc3VtZSBhbnkKICAgICAgcmlza3MgYXNzb2NpYXRlZCB3aXRoIFlvdXIgZXhlcmNpc2Ugb2YgcGVybWlzc2lvbnMgdW5kZXIgdGhpcyBMaWNlbnNlLgoKICAgOC4gTGltaXRhdGlvbiBvZiBMaWFiaWxpdHkuIEluIG5vIGV2ZW50IGFuZCB1bmRlciBubyBsZWdhbCB0aGVvcnksCiAgICAgIHdoZXRoZXIgaW4gdG9ydCAoaW5jbHVkaW5nIG5lZ2xpZ2VuY2UpLCBjb250cmFjdCwgb3Igb3RoZXJ3aXNlLAogICAgICB1bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgKHN1Y2ggYXMgZGVsaWJlcmF0ZSBhbmQgZ3Jvc3NseQogICAgICBuZWdsaWdlbnQgYWN0cykgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNoYWxsIGFueSBDb250cmlidXRvciBiZQogICAgICBsaWFibGUgdG8gWW91IGZvciBkYW1hZ2VzLCBpbmNsdWRpbmcgYW55IGRpcmVjdCwgaW5kaXJlY3QsIHNwZWNpYWwsCiAgICAgIGluY2lkZW50YWwsIG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvZiBhbnkgY2hhcmFjdGVyIGFyaXNpbmcgYXMgYQogICAgICByZXN1bHQgb2YgdGhpcyBMaWNlbnNlIG9yIG91dCBvZiB0aGUgdXNlIG9yIGluYWJpbGl0eSB0byB1c2UgdGhlCiAgICAgIFdvcmsgKGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gZGFtYWdlcyBmb3IgbG9zcyBvZiBnb29kd2lsbCwKICAgICAgd29yayBzdG9wcGFnZSwgY29tcHV0ZXIgZmFpbHVyZSBvciBtYWxmdW5jdGlvbiwgb3IgYW55IGFuZCBhbGwKICAgICAgb3RoZXIgY29tbWVyY2lhbCBkYW1hZ2VzIG9yIGxvc3NlcyksIGV2ZW4gaWYgc3VjaCBDb250cmlidXRvcgogICAgICBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiBzdWNoIGRhbWFnZXMuCgogICA5LiBBY2NlcHRpbmcgV2FycmFudHkgb3IgQWRkaXRpb25hbCBMaWFiaWxpdHkuIFdoaWxlIHJlZGlzdHJpYnV0aW5nCiAgICAgIHRoZSBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgWW91IG1heSBjaG9vc2UgdG8gb2ZmZXIsCiAgICAgIGFuZCBjaGFyZ2UgYSBmZWUgZm9yLCBhY2NlcHRhbmNlIG9mIHN1cHBvcnQsIHdhcnJhbnR5LCBpbmRlbW5pdHksCiAgICAgIG9yIG90aGVyIGxpYWJpbGl0eSBvYmxpZ2F0aW9ucyBhbmQvb3IgcmlnaHRzIGNvbnNpc3RlbnQgd2l0aCB0aGlzCiAgICAgIExpY2Vuc2UuIEhvd2V2ZXIsIGluIGFjY2VwdGluZyBzdWNoIG9ibGlnYXRpb25zLCBZb3UgbWF5IGFjdCBvbmx5CiAgICAgIG9uIFlvdXIgb3duIGJlaGFsZiBhbmQgb24gWW91ciBzb2xlIHJlc3BvbnNpYmlsaXR5LCBub3Qgb24gYmVoYWxmCiAgICAgIG9mIGFueSBvdGhlciBDb250cmlidXRvciwgYW5kIG9ubHkgaWYgWW91IGFncmVlIHRvIGluZGVtbmlmeSwKICAgICAgZGVmZW5kLCBhbmQgaG9sZCBlYWNoIENvbnRyaWJ1dG9yIGhhcm1sZXNzIGZvciBhbnkgbGlhYmlsaXR5CiAgICAgIGluY3VycmVkIGJ5LCBvciBjbGFpbXMgYXNzZXJ0ZWQgYWdhaW5zdCwgc3VjaCBDb250cmlidXRvciBieSByZWFzb24KICAgICAgb2YgeW91ciBhY2NlcHRpbmcgYW55IHN1Y2ggd2FycmFudHkgb3IgYWRkaXRpb25hbCBsaWFiaWxpdHkuCgogICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKCiAgIEFQUEVORElYOiBIb3cgdG8gYXBwbHkgdGhlIEFwYWNoZSBMaWNlbnNlIHRvIHlvdXIgd29yay4KCiAgICAgIFRvIGFwcGx5IHRoZSBBcGFjaGUgTGljZW5zZSB0byB5b3VyIHdvcmssIGF0dGFjaCB0aGUgZm9sbG93aW5nCiAgICAgIGJvaWxlcnBsYXRlIG5vdGljZSwgd2l0aCB0aGUgZmllbGRzIGVuY2xvc2VkIGJ5IGJyYWNrZXRzICJbXSIKICAgICAgcmVwbGFjZWQgd2l0aCB5b3VyIG93biBpZGVudGlmeWluZyBpbmZvcm1hdGlvbi4gKERvbid0IGluY2x1ZGUKICAgICAgdGhlIGJyYWNrZXRzISkgIFRoZSB0ZXh0IHNob3VsZCBiZSBlbmNsb3NlZCBpbiB0aGUgYXBwcm9wcmlhdGUKICAgICAgY29tbWVudCBzeW50YXggZm9yIHRoZSBmaWxlIGZvcm1hdC4gV2UgYWxzbyByZWNvbW1lbmQgdGhhdCBhCiAgICAgIGZpbGUgb3IgY2xhc3MgbmFtZSBhbmQgZGVzY3JpcHRpb24gb2YgcHVycG9zZSBiZSBpbmNsdWRlZCBvbiB0aGUKICAgICAgc2FtZSAicHJpbnRlZCBwYWdlIiBhcyB0aGUgY29weXJpZ2h0IG5vdGljZSBmb3IgZWFzaWVyCiAgICAgIGlkZW50aWZpY2F0aW9uIHdpdGhpbiB0aGlyZC1wYXJ0eSBhcmNoaXZlcy4KCiAgIENvcHlyaWdodCBbeXl5eV0gW25hbWUgb2YgY29weXJpZ2h0IG93bmVyXQoKICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgo= pkg:pypi/license-expression@30.3.0 @@ -1243,69 +281,11 @@ https://www.contributor-covenant.org/version/1/4/code-of-conduct.html declared license file: LICENSE.txt - Copyright (c) 2004 Infrae. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - 3. Neither the name of Infrae nor the names of its contributors may - be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INFRAE OR -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - + Q29weXJpZ2h0IChjKSAyMDA0IEluZnJhZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAgIAogIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCiAgICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQogICAgIGRpc3RyaWJ1dGlvbi4KCiAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBJbmZyYWUgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heQogICAgIGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCiAgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCgpUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCiJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgpBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgSU5GUkFFIE9SCkNPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLApFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sClBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgpQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GCkxJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCk5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwpTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K declared license file: LICENSES.txt - lxml is copyright Infrae and distributed under the BSD license (see -doc/licenses/BSD.txt), with the following exceptions: - -Some code, such a selftest.py, selftest2.py and -src/lxml/_elementpath.py are derived from ElementTree and -cElementTree. See doc/licenses/elementtree.txt for the license text. - -lxml.cssselect and lxml.html are copyright Ian Bicking and distributed -under the BSD license (see doc/licenses/BSD.txt). - -test.py, the test-runner script, is GPL and copyright Shuttleworth -Foundation. See doc/licenses/GPL.txt. It is believed the unchanged -inclusion of test.py to run the unit test suite falls under the -"aggregation" clause of the GPL and thus does not affect the license -of the rest of the package. - -The isoschematron implementation uses several XSL and RelaxNG resources: - * The (XML syntax) RelaxNG schema for schematron, copyright International - Organization for Standardization (see - src/lxml/isoschematron/resources/rng/iso-schematron.rng for the license - text) - * The skeleton iso-schematron-xlt1 pure-xslt schematron implementation - xsl stylesheets, copyright Rick Jelliffe and Academia Sinica Computing - Center, Taiwan (see the xsl files here for the license text: - src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/) - * The xsd/rng schema schematron extraction xsl transformations are unlicensed - and copyright the respective authors as noted (see - src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl and - src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl) - + bHhtbCBpcyBjb3B5cmlnaHQgSW5mcmFlIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgQlNEIGxpY2Vuc2UgKHNlZQpkb2MvbGljZW5zZXMvQlNELnR4dCksIHdpdGggdGhlIGZvbGxvd2luZyBleGNlcHRpb25zOgoKU29tZSBjb2RlLCBzdWNoIGEgc2VsZnRlc3QucHksIHNlbGZ0ZXN0Mi5weSBhbmQKc3JjL2x4bWwvX2VsZW1lbnRwYXRoLnB5IGFyZSBkZXJpdmVkIGZyb20gRWxlbWVudFRyZWUgYW5kCmNFbGVtZW50VHJlZS4gU2VlIGRvYy9saWNlbnNlcy9lbGVtZW50dHJlZS50eHQgZm9yIHRoZSBsaWNlbnNlIHRleHQuCgpseG1sLmNzc3NlbGVjdCBhbmQgbHhtbC5odG1sIGFyZSBjb3B5cmlnaHQgSWFuIEJpY2tpbmcgYW5kIGRpc3RyaWJ1dGVkCnVuZGVyIHRoZSBCU0QgbGljZW5zZSAoc2VlIGRvYy9saWNlbnNlcy9CU0QudHh0KS4KCnRlc3QucHksIHRoZSB0ZXN0LXJ1bm5lciBzY3JpcHQsIGlzIEdQTCBhbmQgY29weXJpZ2h0IFNodXR0bGV3b3J0aApGb3VuZGF0aW9uLiBTZWUgZG9jL2xpY2Vuc2VzL0dQTC50eHQuIEl0IGlzIGJlbGlldmVkIHRoZSB1bmNoYW5nZWQKaW5jbHVzaW9uIG9mIHRlc3QucHkgdG8gcnVuIHRoZSB1bml0IHRlc3Qgc3VpdGUgZmFsbHMgdW5kZXIgdGhlCiJhZ2dyZWdhdGlvbiIgY2xhdXNlIG9mIHRoZSBHUEwgYW5kIHRodXMgZG9lcyBub3QgYWZmZWN0IHRoZSBsaWNlbnNlCm9mIHRoZSByZXN0IG9mIHRoZSBwYWNrYWdlLgoKVGhlIGlzb3NjaGVtYXRyb24gaW1wbGVtZW50YXRpb24gdXNlcyBzZXZlcmFsIFhTTCBhbmQgUmVsYXhORyByZXNvdXJjZXM6CiAqIFRoZSAoWE1MIHN5bnRheCkgUmVsYXhORyBzY2hlbWEgZm9yIHNjaGVtYXRyb24sIGNvcHlyaWdodCBJbnRlcm5hdGlvbmFsCiAgIE9yZ2FuaXphdGlvbiBmb3IgU3RhbmRhcmRpemF0aW9uIChzZWUgCiAgIHNyYy9seG1sL2lzb3NjaGVtYXRyb24vcmVzb3VyY2VzL3JuZy9pc28tc2NoZW1hdHJvbi5ybmcgZm9yIHRoZSBsaWNlbnNlCiAgIHRleHQpCiAqIFRoZSBza2VsZXRvbiBpc28tc2NoZW1hdHJvbi14bHQxIHB1cmUteHNsdCBzY2hlbWF0cm9uIGltcGxlbWVudGF0aW9uCiAgIHhzbCBzdHlsZXNoZWV0cywgY29weXJpZ2h0IFJpY2sgSmVsbGlmZmUgYW5kIEFjYWRlbWlhIFNpbmljYSBDb21wdXRpbmcKICAgQ2VudGVyLCBUYWl3YW4gKHNlZSB0aGUgeHNsIGZpbGVzIGhlcmUgZm9yIHRoZSBsaWNlbnNlIHRleHQ6IAogICBzcmMvbHhtbC9pc29zY2hlbWF0cm9uL3Jlc291cmNlcy94c2wvaXNvLXNjaGVtYXRyb24teHNsdDEvKQogKiBUaGUgeHNkL3JuZyBzY2hlbWEgc2NoZW1hdHJvbiBleHRyYWN0aW9uIHhzbCB0cmFuc2Zvcm1hdGlvbnMgYXJlIHVubGljZW5zZWQKICAgYW5kIGNvcHlyaWdodCB0aGUgcmVzcGVjdGl2ZSBhdXRob3JzIGFzIG5vdGVkIChzZWUgCiAgIHNyYy9seG1sL2lzb3NjaGVtYXRyb24vcmVzb3VyY2VzL3hzbC9STkcyU2NodHJuLnhzbCBhbmQKICAgc3JjL2x4bWwvaXNvc2NoZW1hdHJvbi9yZXNvdXJjZXMveHNsL1hTRDJTY2h0cm4ueHNsKQo= pkg:pypi/lxml@5.3.0 @@ -1323,44 +303,6 @@ The isoschematron implementation uses several XSL and RelaxNG resources: regression-issue868 0.1 - - - declared license file: my_licenses/richtext.rtf - e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA= - - - declared license file: my_licenses/utf-16be_withBOM.txt - this file is -utf-16be encoded -with BOM -😃 - - - - declared license file: my_licenses/utf-16le_withBOM.txt - this file is -utf-16le encoded -with BOM -😃 - - - - declared license file: my_licenses/utf-8_noBOM.txt - this file is -utf-8 encoded -without BOM -😃 - - - - declared license file: my_licenses/utf-8_withBOM.txt - this file is -utf-8 encoded -with BOM -😃 - - - file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 @@ -1372,6 +314,7 @@ with BOM + diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.json.bin index 40efe4014..160d0cff9 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.json.bin @@ -35,15 +35,6 @@ "license": { "id": "MIT" } - }, - { - "license": { - "name": "declared license file: LICENSE", - "text": { - "content": "The MIT License (MIT)\n\nCopyright (c) 2015 Hynek Schlawack and the attrs contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n", - "contentType": "text/plain" - } - } } ], "name": "attrs", @@ -71,8 +62,9 @@ "license": { "name": "declared license file: CHANGELOG.rst", "text": { - "content": "\nChangelog\n=========\n\n\nnext\n----\n\n\n4.0 (2022-05-05)\n----------------\n\n* API changes\n\n * Drop support for Python 2.\n * Test on Python 3.10\n * Make Expression.sort_order an instance attributes and not a class attribute\n\n* Misc.\n\n * Correct licensing documentation\n * Improve docstringf and apply minor refactorings\n * Adopt black code style and isort for imports\n * Drop Travis and use GitHub actions for CI\n\n\n3.8 (2020-06-10)\n----------------\n\n* API changes\n\n * Add support for evaluation of boolean expression.\n Thank you to Lars van Gemerden @gemerden\n\n* Bug fixes\n\n * Fix parsing of tokens that have a number as the first character. \n Thank you to Jeff Cohen @ jcohen28\n * Restore proper Python 2 compatibility. \n Thank you to Benjy Weinberger @benjyw\n\n* Improve documentation\n\n * Add pointers to Linux distro packages.\n Thank you to Max Mehl @mxmehl and Carmen Bianca Bakker @carmenbianca\n * Fix typo.\n Thank you to Gabriel Niebler @der-gabe\n\n\n3.7 (2019-10-04)\n----------------\n\n* API changes\n\n * Add new sort argument to simplify() to optionally not sort when simplifying\n expressions (e.g. not applying \"commutativity\"). Thank you to Steven Esser\n @majurg for this\n * Add new argument to tokenizer to optionally accept extra characters in symbol\n tokens. Thank you to @carpie for this\n\n\n3.6 (2018-08-06)\n----------------\n\n* No API changes\n\n* Bug fixes\n\n * Fix De Morgan's laws effect on double negation propositions. Thank you to Douglas Cardoso for this\n * Improve error checking when parsing\n\n\n3.5 (Nov 1, 2017)\n-----------------\n\n* No API changes\n\n* Bug fixes\n\n * Documentation updates and add testing for Python 3.6. Thank you to Alexander Lisianoi @alisianoi\n * Improve testng and expression equivalence checks\n * Improve subs() method to an expression \n\n \n\n3.4 (May 12, 2017)\n------------------\n\n* No API changes\n\n* Bug fixes and improvements\n\n * Fix various documentation typos and improve tests . Thank you to Alexander Lisianoi @alisianoi\n * Fix handling for literals vs. symbols in negations Thank you to @YaronK\n\n\n3.3 (2017-02-09)\n----------------\n\n* API changes\n\n * #40 and #50 Expression.subs() now takes 'default' thanks to @kronuz\n * #45 simplify=False is now the default for parse and related functions or methods.\n * #40 Use \"&\" and \"|\" as default operators\n\n* Bug fixes\n\n * #60 Fix bug for \"a or b c\" which is not a valid expression\n * #58 Fix math formula display in docs\n * Improve handling of parse errors\n\n\n2.0.0 (2016-05-11)\n------------------\n\n* API changes\n\n * New algebra definition. Refactored class hierarchy. Improved parsing.\n\n* New features\n\n * possibility to subclass algebra definition\n * new normal forms shortcuts for DNF and CNF.\n\n\n1.1 (2016-04-06)\n------------------\n\n* Initial release on Pypi.\n", - "contentType": "text/prs.fallenstein.rst" + "content": "CkNoYW5nZWxvZwo9PT09PT09PT0KCgpuZXh0Ci0tLS0KCgo0LjAgKDIwMjItMDUtMDUpCi0tLS0tLS0tLS0tLS0tLS0KCiogQVBJIGNoYW5nZXMKCiAqIERyb3Agc3VwcG9ydCBmb3IgUHl0aG9uIDIuCiAqIFRlc3Qgb24gUHl0aG9uIDMuMTAKICogTWFrZSBFeHByZXNzaW9uLnNvcnRfb3JkZXIgYW4gaW5zdGFuY2UgYXR0cmlidXRlcyBhbmQgbm90IGEgY2xhc3MgYXR0cmlidXRlCgoqIE1pc2MuCgogKiBDb3JyZWN0IGxpY2Vuc2luZyBkb2N1bWVudGF0aW9uCiAqIEltcHJvdmUgZG9jc3RyaW5nZiBhbmQgYXBwbHkgbWlub3IgcmVmYWN0b3JpbmdzCiAqIEFkb3B0IGJsYWNrIGNvZGUgc3R5bGUgYW5kIGlzb3J0IGZvciBpbXBvcnRzCiAqIERyb3AgVHJhdmlzIGFuZCB1c2UgR2l0SHViIGFjdGlvbnMgZm9yIENJCgoKMy44ICgyMDIwLTA2LTEwKQotLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiBBZGQgc3VwcG9ydCBmb3IgZXZhbHVhdGlvbiBvZiBib29sZWFuIGV4cHJlc3Npb24uCiAgIFRoYW5rIHlvdSB0byBMYXJzIHZhbiBHZW1lcmRlbiBAZ2VtZXJkZW4KCiogQnVnIGZpeGVzCgogKiBGaXggcGFyc2luZyBvZiB0b2tlbnMgdGhhdCBoYXZlIGEgbnVtYmVyIGFzIHRoZSBmaXJzdCBjaGFyYWN0ZXIuIAogICBUaGFuayB5b3UgdG8gSmVmZiBDb2hlbiBAIGpjb2hlbjI4CiAqIFJlc3RvcmUgcHJvcGVyIFB5dGhvbiAyIGNvbXBhdGliaWxpdHkuIAogICBUaGFuayB5b3UgdG8gQmVuankgV2VpbmJlcmdlciBAYmVuanl3CgoqIEltcHJvdmUgZG9jdW1lbnRhdGlvbgoKICogQWRkIHBvaW50ZXJzIHRvIExpbnV4IGRpc3RybyBwYWNrYWdlcy4KICAgVGhhbmsgeW91IHRvIE1heCBNZWhsIEBteG1laGwgYW5kIENhcm1lbiBCaWFuY2EgQmFra2VyIEBjYXJtZW5iaWFuY2EKICogRml4IHR5cG8uCiAgIFRoYW5rIHlvdSB0byBHYWJyaWVsIE5pZWJsZXIgQGRlci1nYWJlCgoKMy43ICgyMDE5LTEwLTA0KQotLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiBBZGQgbmV3IHNvcnQgYXJndW1lbnQgdG8gc2ltcGxpZnkoKSB0byBvcHRpb25hbGx5IG5vdCBzb3J0IHdoZW4gc2ltcGxpZnlpbmcKICAgZXhwcmVzc2lvbnMgKGUuZy4gbm90IGFwcGx5aW5nICJjb21tdXRhdGl2aXR5IikuIFRoYW5rIHlvdSB0byBTdGV2ZW4gRXNzZXIKICAgQG1hanVyZyBmb3IgdGhpcwogKiBBZGQgbmV3IGFyZ3VtZW50IHRvIHRva2VuaXplciB0byBvcHRpb25hbGx5IGFjY2VwdCBleHRyYSBjaGFyYWN0ZXJzIGluIHN5bWJvbAogICB0b2tlbnMuIFRoYW5rIHlvdSB0byBAY2FycGllIGZvciB0aGlzCgoKMy42ICgyMDE4LTA4LTA2KQotLS0tLS0tLS0tLS0tLS0tCgoqIE5vIEFQSSBjaGFuZ2VzCgoqIEJ1ZyBmaXhlcwoKICogRml4IERlIE1vcmdhbidzIGxhd3MgZWZmZWN0IG9uIGRvdWJsZSBuZWdhdGlvbiBwcm9wb3NpdGlvbnMuIFRoYW5rIHlvdSB0byBEb3VnbGFzIENhcmRvc28gZm9yIHRoaXMKICogSW1wcm92ZSBlcnJvciBjaGVja2luZyB3aGVuIHBhcnNpbmcKCgozLjUgKE5vdiAxLCAyMDE3KQotLS0tLS0tLS0tLS0tLS0tLQoKKiBObyBBUEkgY2hhbmdlcwoKKiBCdWcgZml4ZXMKCiAqIERvY3VtZW50YXRpb24gdXBkYXRlcyBhbmQgYWRkIHRlc3RpbmcgZm9yIFB5dGhvbiAzLjYuIFRoYW5rIHlvdSB0byBBbGV4YW5kZXIgTGlzaWFub2kgQGFsaXNpYW5vaQogKiBJbXByb3ZlIHRlc3RuZyBhbmQgZXhwcmVzc2lvbiBlcXVpdmFsZW5jZSBjaGVja3MKICogSW1wcm92ZSBzdWJzKCkgbWV0aG9kIHRvIGFuIGV4cHJlc3Npb24gCgogCgozLjQgKE1heSAxMiwgMjAxNykKLS0tLS0tLS0tLS0tLS0tLS0tCgoqIE5vIEFQSSBjaGFuZ2VzCgoqIEJ1ZyBmaXhlcyBhbmQgaW1wcm92ZW1lbnRzCgogKiBGaXggdmFyaW91cyBkb2N1bWVudGF0aW9uIHR5cG9zIGFuZCBpbXByb3ZlIHRlc3RzIC4gVGhhbmsgeW91IHRvIEFsZXhhbmRlciBMaXNpYW5vaSBAYWxpc2lhbm9pCiAqIEZpeCBoYW5kbGluZyBmb3IgbGl0ZXJhbHMgdnMuIHN5bWJvbHMgaW4gbmVnYXRpb25zIFRoYW5rIHlvdSB0byBAWWFyb25LCgoKMy4zICgyMDE3LTAyLTA5KQotLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiAjNDAgYW5kICM1MCBFeHByZXNzaW9uLnN1YnMoKSBub3cgdGFrZXMgJ2RlZmF1bHQnIHRoYW5rcyB0byBAa3JvbnV6CiAqICM0NSBzaW1wbGlmeT1GYWxzZSBpcyBub3cgdGhlIGRlZmF1bHQgZm9yIHBhcnNlIGFuZCByZWxhdGVkIGZ1bmN0aW9ucyBvciBtZXRob2RzLgogKiAjNDAgVXNlICImIiBhbmQgInwiIGFzIGRlZmF1bHQgb3BlcmF0b3JzCgoqIEJ1ZyBmaXhlcwoKICogIzYwIEZpeCBidWcgZm9yICJhIG9yIGIgYyIgd2hpY2ggaXMgbm90IGEgdmFsaWQgZXhwcmVzc2lvbgogKiAjNTggRml4IG1hdGggZm9ybXVsYSBkaXNwbGF5IGluIGRvY3MKICogSW1wcm92ZSBoYW5kbGluZyBvZiBwYXJzZSBlcnJvcnMKCgoyLjAuMCAoMjAxNi0wNS0xMSkKLS0tLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiBOZXcgYWxnZWJyYSBkZWZpbml0aW9uLiBSZWZhY3RvcmVkIGNsYXNzIGhpZXJhcmNoeS4gSW1wcm92ZWQgcGFyc2luZy4KCiogTmV3IGZlYXR1cmVzCgogKiBwb3NzaWJpbGl0eSB0byBzdWJjbGFzcyBhbGdlYnJhIGRlZmluaXRpb24KICogbmV3IG5vcm1hbCBmb3JtcyBzaG9ydGN1dHMgZm9yIERORiBhbmQgQ05GLgoKCjEuMSAoMjAxNi0wNC0wNikKLS0tLS0tLS0tLS0tLS0tLS0tCgoqIEluaXRpYWwgcmVsZWFzZSBvbiBQeXBpLgo=", + "contentType": "text/prs.fallenstein.rst", + "encoding": "base64" } } }, @@ -80,8 +72,9 @@ "license": { "name": "declared license file: LICENSE.txt", "text": { - "content": "Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice, this\nlist of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice,\nthis list of conditions and the following disclaimer in the documentation and/or\nother materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" + "content": "Q29weXJpZ2h0IChjKSBTZWJhc3RpYW4gS3JhZW1lciwgYmFzdGkua3JAZ21haWwuY29tIGFuZCBvdGhlcnMKQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCmFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKCjEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcwpsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KCjIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3IKb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQpESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgpBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwpMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCg==", + "contentType": "text/plain", + "encoding": "base64" } } }, @@ -89,8 +82,9 @@ "license": { "name": "declared license file: README.rst", "text": { - "content": "boolean.py\n==========\n\n\"boolean.py\" is a small library implementing a boolean algebra. It\ndefines two base elements, TRUE and FALSE, and a Symbol class that can\ntake on one of these two values. Calculations are done in terms of AND,\nOR and NOT - other compositions like XOR and NAND are not implemented\nbut can be emulated with AND or and NOT. Expressions are constructed\nfrom parsed strings or in Python.\n\nIt runs on Python 3.6+\nYou can use older version 3.x for Python 2.7+ support.\n\nhttps://github.com/bastikr/boolean.py\n\nBuild status: |Build Status|\n\n\nExample\n-------\n\n::\n\n >>> import boolean\n >>> algebra = boolean.BooleanAlgebra()\n >>> expression1 = algebra.parse(u'apple and (oranges or banana) and not banana', simplify=False)\n >>> expression1\n AND(Symbol('apple'), OR(Symbol('oranges'), Symbol('banana')), NOT(Symbol('banana')))\n\n >>> expression2 = algebra.parse('(oranges | banana) and not banana & apple', simplify=True)\n >>> expression2\n AND(Symbol('apple'), NOT(Symbol('banana')), Symbol('oranges'))\n\n >>> expression1 == expression2\n False\n >>> expression1.simplify() == expression2\n True\n\n\nDocumentation\n-------------\n\nhttp://readthedocs.org/docs/booleanpy/en/latest/\n\n\nInstallation\n------------\n\nInstallation via pip\n~~~~~~~~~~~~~~~~~~~~\n\nTo install boolean.py, you need to have the following pieces of software\non your computer:\n\n- Python 3.6+\n- pip\n\nYou then only need to run the following command:\n\n``pip install boolean.py``\n\n\nInstallation via package managers\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThere are packages available for easy install on some operating systems.\nYou are welcome to help us package this tool for more distributions!\n\n- boolean.py has been packaged as Arch Linux, Fedora, openSus,\n nixpkgs, Guix, DragonFly and FreeBSD \n `packages `__ .\n\nIn particular:\n\n- Arch Linux (AUR):\n `python-boolean.py `__\n- Fedora:\n `python-boolean.py `__\n- openSUSE:\n `python-boolean.py `__\n\n\nTesting\n-------\n\nTest ``boolean.py`` with your current Python environment:\n\n``python setup.py test``\n\nTest with all of the supported Python environments using ``tox``:\n\n::\n\n pip install -r requirements-dev.txt\n tox\n\nIf ``tox`` throws ``InterpreterNotFound``, limit it to python\ninterpreters that are actually installed on your machine:\n\n::\n\n tox -e py36\n\nAlternatively use pytest.\n\n\nLicense\n-------\n\nCopyright (c) Sebastian Kraemer, basti.kr@gmail.com and others\nSPDX-License-Identifier: BSD-2-Clause\n\n.. |Build Status| image:: https://travis-ci.org/bastikr/boolean.py.svg?branch=master\n :target: https://travis-ci.org/bastikr/boolean.py\n", - "contentType": "text/prs.fallenstein.rst" + "content": "Ym9vbGVhbi5weQo9PT09PT09PT09CgoiYm9vbGVhbi5weSIgaXMgYSBzbWFsbCBsaWJyYXJ5IGltcGxlbWVudGluZyBhIGJvb2xlYW4gYWxnZWJyYS4gSXQKZGVmaW5lcyB0d28gYmFzZSBlbGVtZW50cywgVFJVRSBhbmQgRkFMU0UsIGFuZCBhIFN5bWJvbCBjbGFzcyB0aGF0IGNhbgp0YWtlIG9uIG9uZSBvZiB0aGVzZSB0d28gdmFsdWVzLiBDYWxjdWxhdGlvbnMgYXJlIGRvbmUgaW4gdGVybXMgb2YgQU5ELApPUiBhbmQgTk9UIC0gb3RoZXIgY29tcG9zaXRpb25zIGxpa2UgWE9SIGFuZCBOQU5EIGFyZSBub3QgaW1wbGVtZW50ZWQKYnV0IGNhbiBiZSBlbXVsYXRlZCB3aXRoIEFORCBvciBhbmQgTk9ULiBFeHByZXNzaW9ucyBhcmUgY29uc3RydWN0ZWQKZnJvbSBwYXJzZWQgc3RyaW5ncyBvciBpbiBQeXRob24uCgpJdCBydW5zIG9uIFB5dGhvbiAzLjYrCllvdSBjYW4gdXNlIG9sZGVyIHZlcnNpb24gMy54IGZvciBQeXRob24gMi43KyBzdXBwb3J0LgoKaHR0cHM6Ly9naXRodWIuY29tL2Jhc3Rpa3IvYm9vbGVhbi5weQoKQnVpbGQgc3RhdHVzOiB8QnVpbGQgU3RhdHVzfAoKCkV4YW1wbGUKLS0tLS0tLQoKOjoKCiAgICA+Pj4gaW1wb3J0IGJvb2xlYW4KICAgID4+PiBhbGdlYnJhID0gYm9vbGVhbi5Cb29sZWFuQWxnZWJyYSgpCiAgICA+Pj4gZXhwcmVzc2lvbjEgPSBhbGdlYnJhLnBhcnNlKHUnYXBwbGUgYW5kIChvcmFuZ2VzIG9yIGJhbmFuYSkgYW5kIG5vdCBiYW5hbmEnLCBzaW1wbGlmeT1GYWxzZSkKICAgID4+PiBleHByZXNzaW9uMQogICAgQU5EKFN5bWJvbCgnYXBwbGUnKSwgT1IoU3ltYm9sKCdvcmFuZ2VzJyksIFN5bWJvbCgnYmFuYW5hJykpLCBOT1QoU3ltYm9sKCdiYW5hbmEnKSkpCgogICAgPj4+IGV4cHJlc3Npb24yID0gYWxnZWJyYS5wYXJzZSgnKG9yYW5nZXMgfCBiYW5hbmEpIGFuZCBub3QgYmFuYW5hICYgYXBwbGUnLCBzaW1wbGlmeT1UcnVlKQogICAgPj4+IGV4cHJlc3Npb24yCiAgICBBTkQoU3ltYm9sKCdhcHBsZScpLCBOT1QoU3ltYm9sKCdiYW5hbmEnKSksIFN5bWJvbCgnb3JhbmdlcycpKQoKICAgID4+PiBleHByZXNzaW9uMSA9PSBleHByZXNzaW9uMgogICAgRmFsc2UKICAgID4+PiBleHByZXNzaW9uMS5zaW1wbGlmeSgpID09IGV4cHJlc3Npb24yCiAgICBUcnVlCgoKRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tCgpodHRwOi8vcmVhZHRoZWRvY3Mub3JnL2RvY3MvYm9vbGVhbnB5L2VuL2xhdGVzdC8KCgpJbnN0YWxsYXRpb24KLS0tLS0tLS0tLS0tCgpJbnN0YWxsYXRpb24gdmlhIHBpcAp+fn5+fn5+fn5+fn5+fn5+fn5+fgoKVG8gaW5zdGFsbCBib29sZWFuLnB5LCB5b3UgbmVlZCB0byBoYXZlIHRoZSBmb2xsb3dpbmcgcGllY2VzIG9mIHNvZnR3YXJlCm9uIHlvdXIgY29tcHV0ZXI6CgotICBQeXRob24gMy42KwotICBwaXAKCllvdSB0aGVuIG9ubHkgbmVlZCB0byBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kOgoKYGBwaXAgaW5zdGFsbCBib29sZWFuLnB5YGAKCgpJbnN0YWxsYXRpb24gdmlhIHBhY2thZ2UgbWFuYWdlcnMKfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgpUaGVyZSBhcmUgcGFja2FnZXMgYXZhaWxhYmxlIGZvciBlYXN5IGluc3RhbGwgb24gc29tZSBvcGVyYXRpbmcgc3lzdGVtcy4KWW91IGFyZSB3ZWxjb21lIHRvIGhlbHAgdXMgcGFja2FnZSB0aGlzIHRvb2wgZm9yIG1vcmUgZGlzdHJpYnV0aW9ucyEKCi0gIGJvb2xlYW4ucHkgaGFzIGJlZW4gcGFja2FnZWQgYXMgQXJjaCBMaW51eCwgRmVkb3JhLCBvcGVuU3VzLAogICBuaXhwa2dzLCBHdWl4LCBEcmFnb25GbHkgYW5kIEZyZWVCU0QgCiAgIGBwYWNrYWdlcyA8aHR0cHM6Ly9yZXBvbG9neS5vcmcvcHJvamVjdC9weXRob246Ym9vbGVhbi5weS92ZXJzaW9ucz5gX18gLgoKSW4gcGFydGljdWxhcjoKCi0gIEFyY2ggTGludXggKEFVUik6CiAgIGBweXRob24tYm9vbGVhbi5weSA8aHR0cHM6Ly9hdXIuYXJjaGxpbnV4Lm9yZy9wYWNrYWdlcy9weXRob24tYm9vbGVhbi5weS8+YF9fCi0gIEZlZG9yYToKICAgYHB5dGhvbi1ib29sZWFuLnB5IDxodHRwczovL2FwcHMuZmVkb3JhcHJvamVjdC5vcmcvcGFja2FnZXMvcHl0aG9uLWJvb2xlYW4ucHk+YF9fCi0gIG9wZW5TVVNFOgogICBgcHl0aG9uLWJvb2xlYW4ucHkgPGh0dHBzOi8vc29mdHdhcmUub3BlbnN1c2Uub3JnL3BhY2thZ2UvcHl0aG9uLWJvb2xlYW4ucHk+YF9fCgoKVGVzdGluZwotLS0tLS0tCgpUZXN0IGBgYm9vbGVhbi5weWBgIHdpdGggeW91ciBjdXJyZW50IFB5dGhvbiBlbnZpcm9ubWVudDoKCmBgcHl0aG9uIHNldHVwLnB5IHRlc3RgYAoKVGVzdCB3aXRoIGFsbCBvZiB0aGUgc3VwcG9ydGVkIFB5dGhvbiBlbnZpcm9ubWVudHMgdXNpbmcgYGB0b3hgYDoKCjo6CgogICAgcGlwIGluc3RhbGwgLXIgcmVxdWlyZW1lbnRzLWRldi50eHQKICAgIHRveAoKSWYgYGB0b3hgYCB0aHJvd3MgYGBJbnRlcnByZXRlck5vdEZvdW5kYGAsIGxpbWl0IGl0IHRvIHB5dGhvbgppbnRlcnByZXRlcnMgdGhhdCBhcmUgYWN0dWFsbHkgaW5zdGFsbGVkIG9uIHlvdXIgbWFjaGluZToKCjo6CgogICAgdG94IC1lIHB5MzYKCkFsdGVybmF0aXZlbHkgdXNlIHB5dGVzdC4KCgpMaWNlbnNlCi0tLS0tLS0KCkNvcHlyaWdodCAoYykgU2ViYXN0aWFuIEtyYWVtZXIsIGJhc3RpLmtyQGdtYWlsLmNvbSBhbmQgb3RoZXJzClNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UKCi4uIHxCdWlsZCBTdGF0dXN8IGltYWdlOjogaHR0cHM6Ly90cmF2aXMtY2kub3JnL2Jhc3Rpa3IvYm9vbGVhbi5weS5zdmc/YnJhbmNoPW1hc3RlcgogICA6dGFyZ2V0OiBodHRwczovL3RyYXZpcy1jaS5vcmcvYmFzdGlrci9ib29sZWFuLnB5Cg==", + "contentType": "text/prs.fallenstein.rst", + "encoding": "base64" } } } @@ -135,8 +129,9 @@ "license": { "name": "declared license file: LICENSE", "text": { - "content": " GNU LESSER GENERAL PUBLIC LICENSE\n Version 2.1, February 1999\n\n Copyright (C) 1991, 1999 Free Software Foundation, Inc.\n 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n[This is the first released version of the Lesser GPL. It also counts\n as the successor of the GNU Library Public License, version 2, hence\n the version number 2.1.]\n\n Preamble\n\n The licenses for most software are designed to take away your\nfreedom to share and change it. By contrast, the GNU General Public\nLicenses are intended to guarantee your freedom to share and change\nfree software--to make sure the software is free for all its users.\n\n This license, the Lesser General Public License, applies to some\nspecially designated software packages--typically libraries--of the\nFree Software Foundation and other authors who decide to use it. You\ncan use it too, but we suggest you first think carefully about whether\nthis license or the ordinary General Public License is the better\nstrategy to use in any particular case, based on the explanations below.\n\n When we speak of free software, we are referring to freedom of use,\nnot price. Our General Public Licenses are designed to make sure that\nyou have the freedom to distribute copies of free software (and charge\nfor this service if you wish); that you receive source code or can get\nit if you want it; that you can change the software and use pieces of\nit in new free programs; and that you are informed that you can do\nthese things.\n\n To protect your rights, we need to make restrictions that forbid\ndistributors to deny you these rights or to ask you to surrender these\nrights. These restrictions translate to certain responsibilities for\nyou if you distribute copies of the library or if you modify it.\n\n For example, if you distribute copies of the library, whether gratis\nor for a fee, you must give the recipients all the rights that we gave\nyou. You must make sure that they, too, receive or can get the source\ncode. If you link other code with the library, you must provide\ncomplete object files to the recipients, so that they can relink them\nwith the library after making changes to the library and recompiling\nit. And you must show them these terms so they know their rights.\n\n We protect your rights with a two-step method: (1) we copyright the\nlibrary, and (2) we offer you this license, which gives you legal\npermission to copy, distribute and/or modify the library.\n\n To protect each distributor, we want to make it very clear that\nthere is no warranty for the free library. Also, if the library is\nmodified by someone else and passed on, the recipients should know\nthat what they have is not the original version, so that the original\nauthor's reputation will not be affected by problems that might be\nintroduced by others.\n\f\n Finally, software patents pose a constant threat to the existence of\nany free program. We wish to make sure that a company cannot\neffectively restrict the users of a free program by obtaining a\nrestrictive license from a patent holder. Therefore, we insist that\nany patent license obtained for a version of the library must be\nconsistent with the full freedom of use specified in this license.\n\n Most GNU software, including some libraries, is covered by the\nordinary GNU General Public License. This license, the GNU Lesser\nGeneral Public License, applies to certain designated libraries, and\nis quite different from the ordinary General Public License. We use\nthis license for certain libraries in order to permit linking those\nlibraries into non-free programs.\n\n When a program is linked with a library, whether statically or using\na shared library, the combination of the two is legally speaking a\ncombined work, a derivative of the original library. The ordinary\nGeneral Public License therefore permits such linking only if the\nentire combination fits its criteria of freedom. The Lesser General\nPublic License permits more lax criteria for linking other code with\nthe library.\n\n We call this license the \"Lesser\" General Public License because it\ndoes Less to protect the user's freedom than the ordinary General\nPublic License. It also provides other free software developers Less\nof an advantage over competing non-free programs. These disadvantages\nare the reason we use the ordinary General Public License for many\nlibraries. However, the Lesser license provides advantages in certain\nspecial circumstances.\n\n For example, on rare occasions, there may be a special need to\nencourage the widest possible use of a certain library, so that it becomes\na de-facto standard. To achieve this, non-free programs must be\nallowed to use the library. A more frequent case is that a free\nlibrary does the same job as widely used non-free libraries. In this\ncase, there is little to gain by limiting the free library to free\nsoftware only, so we use the Lesser General Public License.\n\n In other cases, permission to use a particular library in non-free\nprograms enables a greater number of people to use a large body of\nfree software. For example, permission to use the GNU C Library in\nnon-free programs enables many more people to use the whole GNU\noperating system, as well as its variant, the GNU/Linux operating\nsystem.\n\n Although the Lesser General Public License is Less protective of the\nusers' freedom, it does ensure that the user of a program that is\nlinked with the Library has the freedom and the wherewithal to run\nthat program using a modified version of the Library.\n\n The precise terms and conditions for copying, distribution and\nmodification follow. Pay close attention to the difference between a\n\"work based on the library\" and a \"work that uses the library\". The\nformer contains code derived from the library, whereas the latter must\nbe combined with the library in order to run.\n\f\n GNU LESSER GENERAL PUBLIC LICENSE\n TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n 0. This License Agreement applies to any software library or other\nprogram which contains a notice placed by the copyright holder or\nother authorized party saying it may be distributed under the terms of\nthis Lesser General Public License (also called \"this License\").\nEach licensee is addressed as \"you\".\n\n A \"library\" means a collection of software functions and/or data\nprepared so as to be conveniently linked with application programs\n(which use some of those functions and data) to form executables.\n\n The \"Library\", below, refers to any such software library or work\nwhich has been distributed under these terms. A \"work based on the\nLibrary\" means either the Library or any derivative work under\ncopyright law: that is to say, a work containing the Library or a\nportion of it, either verbatim or with modifications and/or translated\nstraightforwardly into another language. (Hereinafter, translation is\nincluded without limitation in the term \"modification\".)\n\n \"Source code\" for a work means the preferred form of the work for\nmaking modifications to it. For a library, complete source code means\nall the source code for all modules it contains, plus any associated\ninterface definition files, plus the scripts used to control compilation\nand installation of the library.\n\n Activities other than copying, distribution and modification are not\ncovered by this License; they are outside its scope. The act of\nrunning a program using the Library is not restricted, and output from\nsuch a program is covered only if its contents constitute a work based\non the Library (independent of the use of the Library in a tool for\nwriting it). Whether that is true depends on what the Library does\nand what the program that uses the Library does.\n\n 1. You may copy and distribute verbatim copies of the Library's\ncomplete source code as you receive it, in any medium, provided that\nyou conspicuously and appropriately publish on each copy an\nappropriate copyright notice and disclaimer of warranty; keep intact\nall the notices that refer to this License and to the absence of any\nwarranty; and distribute a copy of this License along with the\nLibrary.\n\n You may charge a fee for the physical act of transferring a copy,\nand you may at your option offer warranty protection in exchange for a\nfee.\n\f\n 2. You may modify your copy or copies of the Library or any portion\nof it, thus forming a work based on the Library, and copy and\ndistribute such modifications or work under the terms of Section 1\nabove, provided that you also meet all of these conditions:\n\n a) The modified work must itself be a software library.\n\n b) You must cause the files modified to carry prominent notices\n stating that you changed the files and the date of any change.\n\n c) You must cause the whole of the work to be licensed at no\n charge to all third parties under the terms of this License.\n\n d) If a facility in the modified Library refers to a function or a\n table of data to be supplied by an application program that uses\n the facility, other than as an argument passed when the facility\n is invoked, then you must make a good faith effort to ensure that,\n in the event an application does not supply such function or\n table, the facility still operates, and performs whatever part of\n its purpose remains meaningful.\n\n (For example, a function in a library to compute square roots has\n a purpose that is entirely well-defined independent of the\n application. Therefore, Subsection 2d requires that any\n application-supplied function or table used by this function must\n be optional: if the application does not supply it, the square\n root function must still compute square roots.)\n\nThese requirements apply to the modified work as a whole. If\nidentifiable sections of that work are not derived from the Library,\nand can be reasonably considered independent and separate works in\nthemselves, then this License, and its terms, do not apply to those\nsections when you distribute them as separate works. But when you\ndistribute the same sections as part of a whole which is a work based\non the Library, the distribution of the whole must be on the terms of\nthis License, whose permissions for other licensees extend to the\nentire whole, and thus to each and every part regardless of who wrote\nit.\n\nThus, it is not the intent of this section to claim rights or contest\nyour rights to work written entirely by you; rather, the intent is to\nexercise the right to control the distribution of derivative or\ncollective works based on the Library.\n\nIn addition, mere aggregation of another work not based on the Library\nwith the Library (or with a work based on the Library) on a volume of\na storage or distribution medium does not bring the other work under\nthe scope of this License.\n\n 3. You may opt to apply the terms of the ordinary GNU General Public\nLicense instead of this License to a given copy of the Library. To do\nthis, you must alter all the notices that refer to this License, so\nthat they refer to the ordinary GNU General Public License, version 2,\ninstead of to this License. (If a newer version than version 2 of the\nordinary GNU General Public License has appeared, then you can specify\nthat version instead if you wish.) Do not make any other change in\nthese notices.\n\f\n Once this change is made in a given copy, it is irreversible for\nthat copy, so the ordinary GNU General Public License applies to all\nsubsequent copies and derivative works made from that copy.\n\n This option is useful when you wish to copy part of the code of\nthe Library into a program that is not a library.\n\n 4. You may copy and distribute the Library (or a portion or\nderivative of it, under Section 2) in object code or executable form\nunder the terms of Sections 1 and 2 above provided that you accompany\nit with the complete corresponding machine-readable source code, which\nmust be distributed under the terms of Sections 1 and 2 above on a\nmedium customarily used for software interchange.\n\n If distribution of object code is made by offering access to copy\nfrom a designated place, then offering equivalent access to copy the\nsource code from the same place satisfies the requirement to\ndistribute the source code, even though third parties are not\ncompelled to copy the source along with the object code.\n\n 5. A program that contains no derivative of any portion of the\nLibrary, but is designed to work with the Library by being compiled or\nlinked with it, is called a \"work that uses the Library\". Such a\nwork, in isolation, is not a derivative work of the Library, and\ntherefore falls outside the scope of this License.\n\n However, linking a \"work that uses the Library\" with the Library\ncreates an executable that is a derivative of the Library (because it\ncontains portions of the Library), rather than a \"work that uses the\nlibrary\". The executable is therefore covered by this License.\nSection 6 states terms for distribution of such executables.\n\n When a \"work that uses the Library\" uses material from a header file\nthat is part of the Library, the object code for the work may be a\nderivative work of the Library even though the source code is not.\nWhether this is true is especially significant if the work can be\nlinked without the Library, or if the work is itself a library. The\nthreshold for this to be true is not precisely defined by law.\n\n If such an object file uses only numerical parameters, data\nstructure layouts and accessors, and small macros and small inline\nfunctions (ten lines or less in length), then the use of the object\nfile is unrestricted, regardless of whether it is legally a derivative\nwork. (Executables containing this object code plus portions of the\nLibrary will still fall under Section 6.)\n\n Otherwise, if the work is a derivative of the Library, you may\ndistribute the object code for the work under the terms of Section 6.\nAny executables containing that work also fall under Section 6,\nwhether or not they are linked directly with the Library itself.\n\f\n 6. As an exception to the Sections above, you may also combine or\nlink a \"work that uses the Library\" with the Library to produce a\nwork containing portions of the Library, and distribute that work\nunder terms of your choice, provided that the terms permit\nmodification of the work for the customer's own use and reverse\nengineering for debugging such modifications.\n\n You must give prominent notice with each copy of the work that the\nLibrary is used in it and that the Library and its use are covered by\nthis License. You must supply a copy of this License. If the work\nduring execution displays copyright notices, you must include the\ncopyright notice for the Library among them, as well as a reference\ndirecting the user to the copy of this License. Also, you must do one\nof these things:\n\n a) Accompany the work with the complete corresponding\n machine-readable source code for the Library including whatever\n changes were used in the work (which must be distributed under\n Sections 1 and 2 above); and, if the work is an executable linked\n with the Library, with the complete machine-readable \"work that\n uses the Library\", as object code and/or source code, so that the\n user can modify the Library and then relink to produce a modified\n executable containing the modified Library. (It is understood\n that the user who changes the contents of definitions files in the\n Library will not necessarily be able to recompile the application\n to use the modified definitions.)\n\n b) Use a suitable shared library mechanism for linking with the\n Library. A suitable mechanism is one that (1) uses at run time a\n copy of the library already present on the user's computer system,\n rather than copying library functions into the executable, and (2)\n will operate properly with a modified version of the library, if\n the user installs one, as long as the modified version is\n interface-compatible with the version that the work was made with.\n\n c) Accompany the work with a written offer, valid for at\n least three years, to give the same user the materials\n specified in Subsection 6a, above, for a charge no more\n than the cost of performing this distribution.\n\n d) If distribution of the work is made by offering access to copy\n from a designated place, offer equivalent access to copy the above\n specified materials from the same place.\n\n e) Verify that the user has already received a copy of these\n materials or that you have already sent this user a copy.\n\n For an executable, the required form of the \"work that uses the\nLibrary\" must include any data and utility programs needed for\nreproducing the executable from it. However, as a special exception,\nthe materials to be distributed need not include anything that is\nnormally distributed (in either source or binary form) with the major\ncomponents (compiler, kernel, and so on) of the operating system on\nwhich the executable runs, unless that component itself accompanies\nthe executable.\n\n It may happen that this requirement contradicts the license\nrestrictions of other proprietary libraries that do not normally\naccompany the operating system. Such a contradiction means you cannot\nuse both them and the Library together in an executable that you\ndistribute.\n\f\n 7. You may place library facilities that are a work based on the\nLibrary side-by-side in a single library together with other library\nfacilities not covered by this License, and distribute such a combined\nlibrary, provided that the separate distribution of the work based on\nthe Library and of the other library facilities is otherwise\npermitted, and provided that you do these two things:\n\n a) Accompany the combined library with a copy of the same work\n based on the Library, uncombined with any other library\n facilities. This must be distributed under the terms of the\n Sections above.\n\n b) Give prominent notice with the combined library of the fact\n that part of it is a work based on the Library, and explaining\n where to find the accompanying uncombined form of the same work.\n\n 8. You may not copy, modify, sublicense, link with, or distribute\nthe Library except as expressly provided under this License. Any\nattempt otherwise to copy, modify, sublicense, link with, or\ndistribute the Library is void, and will automatically terminate your\nrights under this License. However, parties who have received copies,\nor rights, from you under this License will not have their licenses\nterminated so long as such parties remain in full compliance.\n\n 9. You are not required to accept this License, since you have not\nsigned it. However, nothing else grants you permission to modify or\ndistribute the Library or its derivative works. These actions are\nprohibited by law if you do not accept this License. Therefore, by\nmodifying or distributing the Library (or any work based on the\nLibrary), you indicate your acceptance of this License to do so, and\nall its terms and conditions for copying, distributing or modifying\nthe Library or works based on it.\n\n 10. Each time you redistribute the Library (or any work based on the\nLibrary), the recipient automatically receives a license from the\noriginal licensor to copy, distribute, link with or modify the Library\nsubject to these terms and conditions. You may not impose any further\nrestrictions on the recipients' exercise of the rights granted herein.\nYou are not responsible for enforcing compliance by third parties with\nthis License.\n\f\n 11. If, as a consequence of a court judgment or allegation of patent\ninfringement or for any other reason (not limited to patent issues),\nconditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License. If you cannot\ndistribute so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you\nmay not distribute the Library at all. For example, if a patent\nlicense would not permit royalty-free redistribution of the Library by\nall those who receive copies directly or indirectly through you, then\nthe only way you could satisfy both it and this License would be to\nrefrain entirely from distribution of the Library.\n\nIf any portion of this section is held invalid or unenforceable under any\nparticular circumstance, the balance of the section is intended to apply,\nand the section as a whole is intended to apply in other circumstances.\n\nIt is not the purpose of this section to induce you to infringe any\npatents or other property right claims or to contest validity of any\nsuch claims; this section has the sole purpose of protecting the\nintegrity of the free software distribution system which is\nimplemented by public license practices. Many people have made\ngenerous contributions to the wide range of software distributed\nthrough that system in reliance on consistent application of that\nsystem; it is up to the author/donor to decide if he or she is willing\nto distribute software through any other system and a licensee cannot\nimpose that choice.\n\nThis section is intended to make thoroughly clear what is believed to\nbe a consequence of the rest of this License.\n\n 12. If the distribution and/or use of the Library is restricted in\ncertain countries either by patents or by copyrighted interfaces, the\noriginal copyright holder who places the Library under this License may add\nan explicit geographical distribution limitation excluding those countries,\nso that distribution is permitted only in or among countries not thus\nexcluded. In such case, this License incorporates the limitation as if\nwritten in the body of this License.\n\n 13. The Free Software Foundation may publish revised and/or new\nversions of the Lesser General Public License from time to time.\nSuch new versions will be similar in spirit to the present version,\nbut may differ in detail to address new problems or concerns.\n\nEach version is given a distinguishing version number. If the Library\nspecifies a version number of this License which applies to it and\n\"any later version\", you have the option of following the terms and\nconditions either of that version or of any later version published by\nthe Free Software Foundation. If the Library does not specify a\nlicense version number, you may choose any version ever published by\nthe Free Software Foundation.\n\f\n 14. If you wish to incorporate parts of the Library into other free\nprograms whose distribution conditions are incompatible with these,\nwrite to the author to ask for permission. For software which is\ncopyrighted by the Free Software Foundation, write to the Free\nSoftware Foundation; we sometimes make exceptions for this. Our\ndecision will be guided by the two goals of preserving the free status\nof all derivatives of our free software and of promoting the sharing\nand reuse of software generally.\n\n NO WARRANTY\n\n 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO\nWARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.\nEXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR\nOTHER PARTIES PROVIDE THE LIBRARY \"AS IS\" WITHOUT WARRANTY OF ANY\nKIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE\nLIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME\nTHE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN\nWRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY\nAND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU\nFOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR\nCONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE\nLIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING\nRENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A\nFAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF\nSUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\nDAMAGES.\n\n END OF TERMS AND CONDITIONS\n\f\n How to Apply These Terms to Your New Libraries\n\n If you develop a new library, and you want it to be of the greatest\npossible use to the public, we recommend making it free software that\neveryone can redistribute and change. You can do so by permitting\nredistribution under these terms (or, alternatively, under the terms of the\nordinary General Public License).\n\n To apply these terms, attach the following notices to the library. It is\nsafest to attach them to the start of each source file to most effectively\nconvey the exclusion of warranty; and each file should have at least the\n\"copyright\" line and a pointer to where the full notice is found.\n\n \n Copyright (C) \n\n This library is free software; you can redistribute it and/or\n modify it under the terms of the GNU Lesser General Public\n License as published by the Free Software Foundation; either\n version 2.1 of the License, or (at your option) any later version.\n\n This library is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public\n License along with this library; if not, write to the Free Software\n Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n\nAlso add information on how to contact you by electronic and paper mail.\n\nYou should also get your employer (if you work as a programmer) or your\nschool, if any, to sign a \"copyright disclaimer\" for the library, if\nnecessary. Here is a sample; alter the names:\n\n Yoyodyne, Inc., hereby disclaims all copyright interest in the\n library `Frob' (a library for tweaking knobs) written by James Random Hacker.\n\n , 1 April 1990\n Ty Coon, President of Vice\n\nThat's all there is to it!\n", - "contentType": "text/plain" + "content": "ICAgICAgICAgICAgICAgICAgR05VIExFU1NFUiBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFCiAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAyLjEsIEZlYnJ1YXJ5IDE5OTkKCiBDb3B5cmlnaHQgKEMpIDE5OTEsIDE5OTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKIEV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcwogb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCgpbVGhpcyBpcyB0aGUgZmlyc3QgcmVsZWFzZWQgdmVyc2lvbiBvZiB0aGUgTGVzc2VyIEdQTC4gIEl0IGFsc28gY291bnRzCiBhcyB0aGUgc3VjY2Vzc29yIG9mIHRoZSBHTlUgTGlicmFyeSBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLCBoZW5jZQogdGhlIHZlcnNpb24gbnVtYmVyIDIuMS5dCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlYW1ibGUKCiAgVGhlIGxpY2Vuc2VzIGZvciBtb3N0IHNvZnR3YXJlIGFyZSBkZXNpZ25lZCB0byB0YWtlIGF3YXkgeW91cgpmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgaXQuICBCeSBjb250cmFzdCwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwpMaWNlbnNlcyBhcmUgaW50ZW5kZWQgdG8gZ3VhcmFudGVlIHlvdXIgZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlCmZyZWUgc29mdHdhcmUtLXRvIG1ha2Ugc3VyZSB0aGUgc29mdHdhcmUgaXMgZnJlZSBmb3IgYWxsIGl0cyB1c2Vycy4KCiAgVGhpcyBsaWNlbnNlLCB0aGUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFwcGxpZXMgdG8gc29tZQpzcGVjaWFsbHkgZGVzaWduYXRlZCBzb2Z0d2FyZSBwYWNrYWdlcy0tdHlwaWNhbGx5IGxpYnJhcmllcy0tb2YgdGhlCkZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBhbmQgb3RoZXIgYXV0aG9ycyB3aG8gZGVjaWRlIHRvIHVzZSBpdC4gIFlvdQpjYW4gdXNlIGl0IHRvbywgYnV0IHdlIHN1Z2dlc3QgeW91IGZpcnN0IHRoaW5rIGNhcmVmdWxseSBhYm91dCB3aGV0aGVyCnRoaXMgbGljZW5zZSBvciB0aGUgb3JkaW5hcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyB0aGUgYmV0dGVyCnN0cmF0ZWd5IHRvIHVzZSBpbiBhbnkgcGFydGljdWxhciBjYXNlLCBiYXNlZCBvbiB0aGUgZXhwbGFuYXRpb25zIGJlbG93LgoKICBXaGVuIHdlIHNwZWFrIG9mIGZyZWUgc29mdHdhcmUsIHdlIGFyZSByZWZlcnJpbmcgdG8gZnJlZWRvbSBvZiB1c2UsCm5vdCBwcmljZS4gIE91ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlcyBhcmUgZGVzaWduZWQgdG8gbWFrZSBzdXJlIHRoYXQKeW91IGhhdmUgdGhlIGZyZWVkb20gdG8gZGlzdHJpYnV0ZSBjb3BpZXMgb2YgZnJlZSBzb2Z0d2FyZSAoYW5kIGNoYXJnZQpmb3IgdGhpcyBzZXJ2aWNlIGlmIHlvdSB3aXNoKTsgdGhhdCB5b3UgcmVjZWl2ZSBzb3VyY2UgY29kZSBvciBjYW4gZ2V0Cml0IGlmIHlvdSB3YW50IGl0OyB0aGF0IHlvdSBjYW4gY2hhbmdlIHRoZSBzb2Z0d2FyZSBhbmQgdXNlIHBpZWNlcyBvZgppdCBpbiBuZXcgZnJlZSBwcm9ncmFtczsgYW5kIHRoYXQgeW91IGFyZSBpbmZvcm1lZCB0aGF0IHlvdSBjYW4gZG8KdGhlc2UgdGhpbmdzLgoKICBUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIG1ha2UgcmVzdHJpY3Rpb25zIHRoYXQgZm9yYmlkCmRpc3RyaWJ1dG9ycyB0byBkZW55IHlvdSB0aGVzZSByaWdodHMgb3IgdG8gYXNrIHlvdSB0byBzdXJyZW5kZXIgdGhlc2UKcmlnaHRzLiAgVGhlc2UgcmVzdHJpY3Rpb25zIHRyYW5zbGF0ZSB0byBjZXJ0YWluIHJlc3BvbnNpYmlsaXRpZXMgZm9yCnlvdSBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIGxpYnJhcnkgb3IgaWYgeW91IG1vZGlmeSBpdC4KCiAgRm9yIGV4YW1wbGUsIGlmIHlvdSBkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUgbGlicmFyeSwgd2hldGhlciBncmF0aXMKb3IgZm9yIGEgZmVlLCB5b3UgbXVzdCBnaXZlIHRoZSByZWNpcGllbnRzIGFsbCB0aGUgcmlnaHRzIHRoYXQgd2UgZ2F2ZQp5b3UuICBZb3UgbXVzdCBtYWtlIHN1cmUgdGhhdCB0aGV5LCB0b28sIHJlY2VpdmUgb3IgY2FuIGdldCB0aGUgc291cmNlCmNvZGUuICBJZiB5b3UgbGluayBvdGhlciBjb2RlIHdpdGggdGhlIGxpYnJhcnksIHlvdSBtdXN0IHByb3ZpZGUKY29tcGxldGUgb2JqZWN0IGZpbGVzIHRvIHRoZSByZWNpcGllbnRzLCBzbyB0aGF0IHRoZXkgY2FuIHJlbGluayB0aGVtCndpdGggdGhlIGxpYnJhcnkgYWZ0ZXIgbWFraW5nIGNoYW5nZXMgdG8gdGhlIGxpYnJhcnkgYW5kIHJlY29tcGlsaW5nCml0LiAgQW5kIHlvdSBtdXN0IHNob3cgdGhlbSB0aGVzZSB0ZXJtcyBzbyB0aGV5IGtub3cgdGhlaXIgcmlnaHRzLgoKICBXZSBwcm90ZWN0IHlvdXIgcmlnaHRzIHdpdGggYSB0d28tc3RlcCBtZXRob2Q6ICgxKSB3ZSBjb3B5cmlnaHQgdGhlCmxpYnJhcnksIGFuZCAoMikgd2Ugb2ZmZXIgeW91IHRoaXMgbGljZW5zZSwgd2hpY2ggZ2l2ZXMgeW91IGxlZ2FsCnBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IHRoZSBsaWJyYXJ5LgoKICBUbyBwcm90ZWN0IGVhY2ggZGlzdHJpYnV0b3IsIHdlIHdhbnQgdG8gbWFrZSBpdCB2ZXJ5IGNsZWFyIHRoYXQKdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoZSBmcmVlIGxpYnJhcnkuICBBbHNvLCBpZiB0aGUgbGlicmFyeSBpcwptb2RpZmllZCBieSBzb21lb25lIGVsc2UgYW5kIHBhc3NlZCBvbiwgdGhlIHJlY2lwaWVudHMgc2hvdWxkIGtub3cKdGhhdCB3aGF0IHRoZXkgaGF2ZSBpcyBub3QgdGhlIG9yaWdpbmFsIHZlcnNpb24sIHNvIHRoYXQgdGhlIG9yaWdpbmFsCmF1dGhvcidzIHJlcHV0YXRpb24gd2lsbCBub3QgYmUgYWZmZWN0ZWQgYnkgcHJvYmxlbXMgdGhhdCBtaWdodCBiZQppbnRyb2R1Y2VkIGJ5IG90aGVycy4KDAogIEZpbmFsbHksIHNvZnR3YXJlIHBhdGVudHMgcG9zZSBhIGNvbnN0YW50IHRocmVhdCB0byB0aGUgZXhpc3RlbmNlIG9mCmFueSBmcmVlIHByb2dyYW0uICBXZSB3aXNoIHRvIG1ha2Ugc3VyZSB0aGF0IGEgY29tcGFueSBjYW5ub3QKZWZmZWN0aXZlbHkgcmVzdHJpY3QgdGhlIHVzZXJzIG9mIGEgZnJlZSBwcm9ncmFtIGJ5IG9idGFpbmluZyBhCnJlc3RyaWN0aXZlIGxpY2Vuc2UgZnJvbSBhIHBhdGVudCBob2xkZXIuICBUaGVyZWZvcmUsIHdlIGluc2lzdCB0aGF0CmFueSBwYXRlbnQgbGljZW5zZSBvYnRhaW5lZCBmb3IgYSB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5IG11c3QgYmUKY29uc2lzdGVudCB3aXRoIHRoZSBmdWxsIGZyZWVkb20gb2YgdXNlIHNwZWNpZmllZCBpbiB0aGlzIGxpY2Vuc2UuCgogIE1vc3QgR05VIHNvZnR3YXJlLCBpbmNsdWRpbmcgc29tZSBsaWJyYXJpZXMsIGlzIGNvdmVyZWQgYnkgdGhlCm9yZGluYXJ5IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBsaWNlbnNlLCB0aGUgR05VIExlc3NlcgpHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBhcHBsaWVzIHRvIGNlcnRhaW4gZGVzaWduYXRlZCBsaWJyYXJpZXMsIGFuZAppcyBxdWl0ZSBkaWZmZXJlbnQgZnJvbSB0aGUgb3JkaW5hcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFdlIHVzZQp0aGlzIGxpY2Vuc2UgZm9yIGNlcnRhaW4gbGlicmFyaWVzIGluIG9yZGVyIHRvIHBlcm1pdCBsaW5raW5nIHRob3NlCmxpYnJhcmllcyBpbnRvIG5vbi1mcmVlIHByb2dyYW1zLgoKICBXaGVuIGEgcHJvZ3JhbSBpcyBsaW5rZWQgd2l0aCBhIGxpYnJhcnksIHdoZXRoZXIgc3RhdGljYWxseSBvciB1c2luZwphIHNoYXJlZCBsaWJyYXJ5LCB0aGUgY29tYmluYXRpb24gb2YgdGhlIHR3byBpcyBsZWdhbGx5IHNwZWFraW5nIGEKY29tYmluZWQgd29yaywgYSBkZXJpdmF0aXZlIG9mIHRoZSBvcmlnaW5hbCBsaWJyYXJ5LiAgVGhlIG9yZGluYXJ5CkdlbmVyYWwgUHVibGljIExpY2Vuc2UgdGhlcmVmb3JlIHBlcm1pdHMgc3VjaCBsaW5raW5nIG9ubHkgaWYgdGhlCmVudGlyZSBjb21iaW5hdGlvbiBmaXRzIGl0cyBjcml0ZXJpYSBvZiBmcmVlZG9tLiAgVGhlIExlc3NlciBHZW5lcmFsClB1YmxpYyBMaWNlbnNlIHBlcm1pdHMgbW9yZSBsYXggY3JpdGVyaWEgZm9yIGxpbmtpbmcgb3RoZXIgY29kZSB3aXRoCnRoZSBsaWJyYXJ5LgoKICBXZSBjYWxsIHRoaXMgbGljZW5zZSB0aGUgIkxlc3NlciIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBiZWNhdXNlIGl0CmRvZXMgTGVzcyB0byBwcm90ZWN0IHRoZSB1c2VyJ3MgZnJlZWRvbSB0aGFuIHRoZSBvcmRpbmFyeSBHZW5lcmFsClB1YmxpYyBMaWNlbnNlLiAgSXQgYWxzbyBwcm92aWRlcyBvdGhlciBmcmVlIHNvZnR3YXJlIGRldmVsb3BlcnMgTGVzcwpvZiBhbiBhZHZhbnRhZ2Ugb3ZlciBjb21wZXRpbmcgbm9uLWZyZWUgcHJvZ3JhbXMuICBUaGVzZSBkaXNhZHZhbnRhZ2VzCmFyZSB0aGUgcmVhc29uIHdlIHVzZSB0aGUgb3JkaW5hcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbWFueQpsaWJyYXJpZXMuICBIb3dldmVyLCB0aGUgTGVzc2VyIGxpY2Vuc2UgcHJvdmlkZXMgYWR2YW50YWdlcyBpbiBjZXJ0YWluCnNwZWNpYWwgY2lyY3Vtc3RhbmNlcy4KCiAgRm9yIGV4YW1wbGUsIG9uIHJhcmUgb2NjYXNpb25zLCB0aGVyZSBtYXkgYmUgYSBzcGVjaWFsIG5lZWQgdG8KZW5jb3VyYWdlIHRoZSB3aWRlc3QgcG9zc2libGUgdXNlIG9mIGEgY2VydGFpbiBsaWJyYXJ5LCBzbyB0aGF0IGl0IGJlY29tZXMKYSBkZS1mYWN0byBzdGFuZGFyZC4gIFRvIGFjaGlldmUgdGhpcywgbm9uLWZyZWUgcHJvZ3JhbXMgbXVzdCBiZQphbGxvd2VkIHRvIHVzZSB0aGUgbGlicmFyeS4gIEEgbW9yZSBmcmVxdWVudCBjYXNlIGlzIHRoYXQgYSBmcmVlCmxpYnJhcnkgZG9lcyB0aGUgc2FtZSBqb2IgYXMgd2lkZWx5IHVzZWQgbm9uLWZyZWUgbGlicmFyaWVzLiAgSW4gdGhpcwpjYXNlLCB0aGVyZSBpcyBsaXR0bGUgdG8gZ2FpbiBieSBsaW1pdGluZyB0aGUgZnJlZSBsaWJyYXJ5IHRvIGZyZWUKc29mdHdhcmUgb25seSwgc28gd2UgdXNlIHRoZSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KCiAgSW4gb3RoZXIgY2FzZXMsIHBlcm1pc3Npb24gdG8gdXNlIGEgcGFydGljdWxhciBsaWJyYXJ5IGluIG5vbi1mcmVlCnByb2dyYW1zIGVuYWJsZXMgYSBncmVhdGVyIG51bWJlciBvZiBwZW9wbGUgdG8gdXNlIGEgbGFyZ2UgYm9keSBvZgpmcmVlIHNvZnR3YXJlLiAgRm9yIGV4YW1wbGUsIHBlcm1pc3Npb24gdG8gdXNlIHRoZSBHTlUgQyBMaWJyYXJ5IGluCm5vbi1mcmVlIHByb2dyYW1zIGVuYWJsZXMgbWFueSBtb3JlIHBlb3BsZSB0byB1c2UgdGhlIHdob2xlIEdOVQpvcGVyYXRpbmcgc3lzdGVtLCBhcyB3ZWxsIGFzIGl0cyB2YXJpYW50LCB0aGUgR05VL0xpbnV4IG9wZXJhdGluZwpzeXN0ZW0uCgogIEFsdGhvdWdoIHRoZSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBMZXNzIHByb3RlY3RpdmUgb2YgdGhlCnVzZXJzJyBmcmVlZG9tLCBpdCBkb2VzIGVuc3VyZSB0aGF0IHRoZSB1c2VyIG9mIGEgcHJvZ3JhbSB0aGF0IGlzCmxpbmtlZCB3aXRoIHRoZSBMaWJyYXJ5IGhhcyB0aGUgZnJlZWRvbSBhbmQgdGhlIHdoZXJld2l0aGFsIHRvIHJ1bgp0aGF0IHByb2dyYW0gdXNpbmcgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBMaWJyYXJ5LgoKICBUaGUgcHJlY2lzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW9uIGFuZAptb2RpZmljYXRpb24gZm9sbG93LiAgUGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGEKIndvcmsgYmFzZWQgb24gdGhlIGxpYnJhcnkiIGFuZCBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgbGlicmFyeSIuICBUaGUKZm9ybWVyIGNvbnRhaW5zIGNvZGUgZGVyaXZlZCBmcm9tIHRoZSBsaWJyYXJ5LCB3aGVyZWFzIHRoZSBsYXR0ZXIgbXVzdApiZSBjb21iaW5lZCB3aXRoIHRoZSBsaWJyYXJ5IGluIG9yZGVyIHRvIHJ1bi4KDAogICAgICAgICAgICAgICAgICBHTlUgTEVTU0VSIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKICAgVEVSTVMgQU5EIENPTkRJVElPTlMgRk9SIENPUFlJTkcsIERJU1RSSUJVVElPTiBBTkQgTU9ESUZJQ0FUSU9OCgogIDAuIFRoaXMgTGljZW5zZSBBZ3JlZW1lbnQgYXBwbGllcyB0byBhbnkgc29mdHdhcmUgbGlicmFyeSBvciBvdGhlcgpwcm9ncmFtIHdoaWNoIGNvbnRhaW5zIGEgbm90aWNlIHBsYWNlZCBieSB0aGUgY29weXJpZ2h0IGhvbGRlciBvcgpvdGhlciBhdXRob3JpemVkIHBhcnR5IHNheWluZyBpdCBtYXkgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mCnRoaXMgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKGFsc28gY2FsbGVkICJ0aGlzIExpY2Vuc2UiKS4KRWFjaCBsaWNlbnNlZSBpcyBhZGRyZXNzZWQgYXMgInlvdSIuCgogIEEgImxpYnJhcnkiIG1lYW5zIGEgY29sbGVjdGlvbiBvZiBzb2Z0d2FyZSBmdW5jdGlvbnMgYW5kL29yIGRhdGEKcHJlcGFyZWQgc28gYXMgdG8gYmUgY29udmVuaWVudGx5IGxpbmtlZCB3aXRoIGFwcGxpY2F0aW9uIHByb2dyYW1zCih3aGljaCB1c2Ugc29tZSBvZiB0aG9zZSBmdW5jdGlvbnMgYW5kIGRhdGEpIHRvIGZvcm0gZXhlY3V0YWJsZXMuCgogIFRoZSAiTGlicmFyeSIsIGJlbG93LCByZWZlcnMgdG8gYW55IHN1Y2ggc29mdHdhcmUgbGlicmFyeSBvciB3b3JrCndoaWNoIGhhcyBiZWVuIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZXNlIHRlcm1zLiAgQSAid29yayBiYXNlZCBvbiB0aGUKTGlicmFyeSIgbWVhbnMgZWl0aGVyIHRoZSBMaWJyYXJ5IG9yIGFueSBkZXJpdmF0aXZlIHdvcmsgdW5kZXIKY29weXJpZ2h0IGxhdzogdGhhdCBpcyB0byBzYXksIGEgd29yayBjb250YWluaW5nIHRoZSBMaWJyYXJ5IG9yIGEKcG9ydGlvbiBvZiBpdCwgZWl0aGVyIHZlcmJhdGltIG9yIHdpdGggbW9kaWZpY2F0aW9ucyBhbmQvb3IgdHJhbnNsYXRlZApzdHJhaWdodGZvcndhcmRseSBpbnRvIGFub3RoZXIgbGFuZ3VhZ2UuICAoSGVyZWluYWZ0ZXIsIHRyYW5zbGF0aW9uIGlzCmluY2x1ZGVkIHdpdGhvdXQgbGltaXRhdGlvbiBpbiB0aGUgdGVybSAibW9kaWZpY2F0aW9uIi4pCgogICJTb3VyY2UgY29kZSIgZm9yIGEgd29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsgZm9yCm1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgRm9yIGEgbGlicmFyeSwgY29tcGxldGUgc291cmNlIGNvZGUgbWVhbnMKYWxsIHRoZSBzb3VyY2UgY29kZSBmb3IgYWxsIG1vZHVsZXMgaXQgY29udGFpbnMsIHBsdXMgYW55IGFzc29jaWF0ZWQKaW50ZXJmYWNlIGRlZmluaXRpb24gZmlsZXMsIHBsdXMgdGhlIHNjcmlwdHMgdXNlZCB0byBjb250cm9sIGNvbXBpbGF0aW9uCmFuZCBpbnN0YWxsYXRpb24gb2YgdGhlIGxpYnJhcnkuCgogIEFjdGl2aXRpZXMgb3RoZXIgdGhhbiBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kIG1vZGlmaWNhdGlvbiBhcmUgbm90CmNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlOyB0aGV5IGFyZSBvdXRzaWRlIGl0cyBzY29wZS4gIFRoZSBhY3Qgb2YKcnVubmluZyBhIHByb2dyYW0gdXNpbmcgdGhlIExpYnJhcnkgaXMgbm90IHJlc3RyaWN0ZWQsIGFuZCBvdXRwdXQgZnJvbQpzdWNoIGEgcHJvZ3JhbSBpcyBjb3ZlcmVkIG9ubHkgaWYgaXRzIGNvbnRlbnRzIGNvbnN0aXR1dGUgYSB3b3JrIGJhc2VkCm9uIHRoZSBMaWJyYXJ5IChpbmRlcGVuZGVudCBvZiB0aGUgdXNlIG9mIHRoZSBMaWJyYXJ5IGluIGEgdG9vbCBmb3IKd3JpdGluZyBpdCkuICBXaGV0aGVyIHRoYXQgaXMgdHJ1ZSBkZXBlbmRzIG9uIHdoYXQgdGhlIExpYnJhcnkgZG9lcwphbmQgd2hhdCB0aGUgcHJvZ3JhbSB0aGF0IHVzZXMgdGhlIExpYnJhcnkgZG9lcy4KCiAgMS4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcyBvZiB0aGUgTGlicmFyeSdzCmNvbXBsZXRlIHNvdXJjZSBjb2RlIGFzIHlvdSByZWNlaXZlIGl0LCBpbiBhbnkgbWVkaXVtLCBwcm92aWRlZCB0aGF0CnlvdSBjb25zcGljdW91c2x5IGFuZCBhcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuCmFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2UgYW5kIGRpc2NsYWltZXIgb2Ygd2FycmFudHk7IGtlZXAgaW50YWN0CmFsbCB0aGUgbm90aWNlcyB0aGF0IHJlZmVyIHRvIHRoaXMgTGljZW5zZSBhbmQgdG8gdGhlIGFic2VuY2Ugb2YgYW55CndhcnJhbnR5OyBhbmQgZGlzdHJpYnV0ZSBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlIGFsb25nIHdpdGggdGhlCkxpYnJhcnkuCgogIFlvdSBtYXkgY2hhcmdlIGEgZmVlIGZvciB0aGUgcGh5c2ljYWwgYWN0IG9mIHRyYW5zZmVycmluZyBhIGNvcHksCmFuZCB5b3UgbWF5IGF0IHlvdXIgb3B0aW9uIG9mZmVyIHdhcnJhbnR5IHByb3RlY3Rpb24gaW4gZXhjaGFuZ2UgZm9yIGEKZmVlLgoMCiAgMi4gWW91IG1heSBtb2RpZnkgeW91ciBjb3B5IG9yIGNvcGllcyBvZiB0aGUgTGlicmFyeSBvciBhbnkgcG9ydGlvbgpvZiBpdCwgdGh1cyBmb3JtaW5nIGEgd29yayBiYXNlZCBvbiB0aGUgTGlicmFyeSwgYW5kIGNvcHkgYW5kCmRpc3RyaWJ1dGUgc3VjaCBtb2RpZmljYXRpb25zIG9yIHdvcmsgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb24gMQphYm92ZSwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBtZWV0IGFsbCBvZiB0aGVzZSBjb25kaXRpb25zOgoKICAgIGEpIFRoZSBtb2RpZmllZCB3b3JrIG11c3QgaXRzZWxmIGJlIGEgc29mdHdhcmUgbGlicmFyeS4KCiAgICBiKSBZb3UgbXVzdCBjYXVzZSB0aGUgZmlsZXMgbW9kaWZpZWQgdG8gY2FycnkgcHJvbWluZW50IG5vdGljZXMKICAgIHN0YXRpbmcgdGhhdCB5b3UgY2hhbmdlZCB0aGUgZmlsZXMgYW5kIHRoZSBkYXRlIG9mIGFueSBjaGFuZ2UuCgogICAgYykgWW91IG11c3QgY2F1c2UgdGhlIHdob2xlIG9mIHRoZSB3b3JrIHRvIGJlIGxpY2Vuc2VkIGF0IG5vCiAgICBjaGFyZ2UgdG8gYWxsIHRoaXJkIHBhcnRpZXMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZS4KCiAgICBkKSBJZiBhIGZhY2lsaXR5IGluIHRoZSBtb2RpZmllZCBMaWJyYXJ5IHJlZmVycyB0byBhIGZ1bmN0aW9uIG9yIGEKICAgIHRhYmxlIG9mIGRhdGEgdG8gYmUgc3VwcGxpZWQgYnkgYW4gYXBwbGljYXRpb24gcHJvZ3JhbSB0aGF0IHVzZXMKICAgIHRoZSBmYWNpbGl0eSwgb3RoZXIgdGhhbiBhcyBhbiBhcmd1bWVudCBwYXNzZWQgd2hlbiB0aGUgZmFjaWxpdHkKICAgIGlzIGludm9rZWQsIHRoZW4geW91IG11c3QgbWFrZSBhIGdvb2QgZmFpdGggZWZmb3J0IHRvIGVuc3VyZSB0aGF0LAogICAgaW4gdGhlIGV2ZW50IGFuIGFwcGxpY2F0aW9uIGRvZXMgbm90IHN1cHBseSBzdWNoIGZ1bmN0aW9uIG9yCiAgICB0YWJsZSwgdGhlIGZhY2lsaXR5IHN0aWxsIG9wZXJhdGVzLCBhbmQgcGVyZm9ybXMgd2hhdGV2ZXIgcGFydCBvZgogICAgaXRzIHB1cnBvc2UgcmVtYWlucyBtZWFuaW5nZnVsLgoKICAgIChGb3IgZXhhbXBsZSwgYSBmdW5jdGlvbiBpbiBhIGxpYnJhcnkgdG8gY29tcHV0ZSBzcXVhcmUgcm9vdHMgaGFzCiAgICBhIHB1cnBvc2UgdGhhdCBpcyBlbnRpcmVseSB3ZWxsLWRlZmluZWQgaW5kZXBlbmRlbnQgb2YgdGhlCiAgICBhcHBsaWNhdGlvbi4gIFRoZXJlZm9yZSwgU3Vic2VjdGlvbiAyZCByZXF1aXJlcyB0aGF0IGFueQogICAgYXBwbGljYXRpb24tc3VwcGxpZWQgZnVuY3Rpb24gb3IgdGFibGUgdXNlZCBieSB0aGlzIGZ1bmN0aW9uIG11c3QKICAgIGJlIG9wdGlvbmFsOiBpZiB0aGUgYXBwbGljYXRpb24gZG9lcyBub3Qgc3VwcGx5IGl0LCB0aGUgc3F1YXJlCiAgICByb290IGZ1bmN0aW9uIG11c3Qgc3RpbGwgY29tcHV0ZSBzcXVhcmUgcm9vdHMuKQoKVGhlc2UgcmVxdWlyZW1lbnRzIGFwcGx5IHRvIHRoZSBtb2RpZmllZCB3b3JrIGFzIGEgd2hvbGUuICBJZgppZGVudGlmaWFibGUgc2VjdGlvbnMgb2YgdGhhdCB3b3JrIGFyZSBub3QgZGVyaXZlZCBmcm9tIHRoZSBMaWJyYXJ5LAphbmQgY2FuIGJlIHJlYXNvbmFibHkgY29uc2lkZXJlZCBpbmRlcGVuZGVudCBhbmQgc2VwYXJhdGUgd29ya3MgaW4KdGhlbXNlbHZlcywgdGhlbiB0aGlzIExpY2Vuc2UsIGFuZCBpdHMgdGVybXMsIGRvIG5vdCBhcHBseSB0byB0aG9zZQpzZWN0aW9ucyB3aGVuIHlvdSBkaXN0cmlidXRlIHRoZW0gYXMgc2VwYXJhdGUgd29ya3MuICBCdXQgd2hlbiB5b3UKZGlzdHJpYnV0ZSB0aGUgc2FtZSBzZWN0aW9ucyBhcyBwYXJ0IG9mIGEgd2hvbGUgd2hpY2ggaXMgYSB3b3JrIGJhc2VkCm9uIHRoZSBMaWJyYXJ5LCB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSB3aG9sZSBtdXN0IGJlIG9uIHRoZSB0ZXJtcyBvZgp0aGlzIExpY2Vuc2UsIHdob3NlIHBlcm1pc3Npb25zIGZvciBvdGhlciBsaWNlbnNlZXMgZXh0ZW5kIHRvIHRoZQplbnRpcmUgd2hvbGUsIGFuZCB0aHVzIHRvIGVhY2ggYW5kIGV2ZXJ5IHBhcnQgcmVnYXJkbGVzcyBvZiB3aG8gd3JvdGUKaXQuCgpUaHVzLCBpdCBpcyBub3QgdGhlIGludGVudCBvZiB0aGlzIHNlY3Rpb24gdG8gY2xhaW0gcmlnaHRzIG9yIGNvbnRlc3QKeW91ciByaWdodHMgdG8gd29yayB3cml0dGVuIGVudGlyZWx5IGJ5IHlvdTsgcmF0aGVyLCB0aGUgaW50ZW50IGlzIHRvCmV4ZXJjaXNlIHRoZSByaWdodCB0byBjb250cm9sIHRoZSBkaXN0cmlidXRpb24gb2YgZGVyaXZhdGl2ZSBvcgpjb2xsZWN0aXZlIHdvcmtzIGJhc2VkIG9uIHRoZSBMaWJyYXJ5LgoKSW4gYWRkaXRpb24sIG1lcmUgYWdncmVnYXRpb24gb2YgYW5vdGhlciB3b3JrIG5vdCBiYXNlZCBvbiB0aGUgTGlicmFyeQp3aXRoIHRoZSBMaWJyYXJ5IChvciB3aXRoIGEgd29yayBiYXNlZCBvbiB0aGUgTGlicmFyeSkgb24gYSB2b2x1bWUgb2YKYSBzdG9yYWdlIG9yIGRpc3RyaWJ1dGlvbiBtZWRpdW0gZG9lcyBub3QgYnJpbmcgdGhlIG90aGVyIHdvcmsgdW5kZXIKdGhlIHNjb3BlIG9mIHRoaXMgTGljZW5zZS4KCiAgMy4gWW91IG1heSBvcHQgdG8gYXBwbHkgdGhlIHRlcm1zIG9mIHRoZSBvcmRpbmFyeSBHTlUgR2VuZXJhbCBQdWJsaWMKTGljZW5zZSBpbnN0ZWFkIG9mIHRoaXMgTGljZW5zZSB0byBhIGdpdmVuIGNvcHkgb2YgdGhlIExpYnJhcnkuICBUbyBkbwp0aGlzLCB5b3UgbXVzdCBhbHRlciBhbGwgdGhlIG5vdGljZXMgdGhhdCByZWZlciB0byB0aGlzIExpY2Vuc2UsIHNvCnRoYXQgdGhleSByZWZlciB0byB0aGUgb3JkaW5hcnkgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMiwKaW5zdGVhZCBvZiB0byB0aGlzIExpY2Vuc2UuICAoSWYgYSBuZXdlciB2ZXJzaW9uIHRoYW4gdmVyc2lvbiAyIG9mIHRoZQpvcmRpbmFyeSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBoYXMgYXBwZWFyZWQsIHRoZW4geW91IGNhbiBzcGVjaWZ5CnRoYXQgdmVyc2lvbiBpbnN0ZWFkIGlmIHlvdSB3aXNoLikgIERvIG5vdCBtYWtlIGFueSBvdGhlciBjaGFuZ2UgaW4KdGhlc2Ugbm90aWNlcy4KDAogIE9uY2UgdGhpcyBjaGFuZ2UgaXMgbWFkZSBpbiBhIGdpdmVuIGNvcHksIGl0IGlzIGlycmV2ZXJzaWJsZSBmb3IKdGhhdCBjb3B5LCBzbyB0aGUgb3JkaW5hcnkgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXBwbGllcyB0byBhbGwKc3Vic2VxdWVudCBjb3BpZXMgYW5kIGRlcml2YXRpdmUgd29ya3MgbWFkZSBmcm9tIHRoYXQgY29weS4KCiAgVGhpcyBvcHRpb24gaXMgdXNlZnVsIHdoZW4geW91IHdpc2ggdG8gY29weSBwYXJ0IG9mIHRoZSBjb2RlIG9mCnRoZSBMaWJyYXJ5IGludG8gYSBwcm9ncmFtIHRoYXQgaXMgbm90IGEgbGlicmFyeS4KCiAgNC4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IChvciBhIHBvcnRpb24gb3IKZGVyaXZhdGl2ZSBvZiBpdCwgdW5kZXIgU2VjdGlvbiAyKSBpbiBvYmplY3QgY29kZSBvciBleGVjdXRhYmxlIGZvcm0KdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zIDEgYW5kIDIgYWJvdmUgcHJvdmlkZWQgdGhhdCB5b3UgYWNjb21wYW55Cml0IHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcgbWFjaGluZS1yZWFkYWJsZSBzb3VyY2UgY29kZSwgd2hpY2gKbXVzdCBiZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBvbiBhCm1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZS4KCiAgSWYgZGlzdHJpYnV0aW9uIG9mIG9iamVjdCBjb2RlIGlzIG1hZGUgYnkgb2ZmZXJpbmcgYWNjZXNzIHRvIGNvcHkKZnJvbSBhIGRlc2lnbmF0ZWQgcGxhY2UsIHRoZW4gb2ZmZXJpbmcgZXF1aXZhbGVudCBhY2Nlc3MgdG8gY29weSB0aGUKc291cmNlIGNvZGUgZnJvbSB0aGUgc2FtZSBwbGFjZSBzYXRpc2ZpZXMgdGhlIHJlcXVpcmVtZW50IHRvCmRpc3RyaWJ1dGUgdGhlIHNvdXJjZSBjb2RlLCBldmVuIHRob3VnaCB0aGlyZCBwYXJ0aWVzIGFyZSBub3QKY29tcGVsbGVkIHRvIGNvcHkgdGhlIHNvdXJjZSBhbG9uZyB3aXRoIHRoZSBvYmplY3QgY29kZS4KCiAgNS4gQSBwcm9ncmFtIHRoYXQgY29udGFpbnMgbm8gZGVyaXZhdGl2ZSBvZiBhbnkgcG9ydGlvbiBvZiB0aGUKTGlicmFyeSwgYnV0IGlzIGRlc2lnbmVkIHRvIHdvcmsgd2l0aCB0aGUgTGlicmFyeSBieSBiZWluZyBjb21waWxlZCBvcgpsaW5rZWQgd2l0aCBpdCwgaXMgY2FsbGVkIGEgIndvcmsgdGhhdCB1c2VzIHRoZSBMaWJyYXJ5Ii4gIFN1Y2ggYQp3b3JrLCBpbiBpc29sYXRpb24sIGlzIG5vdCBhIGRlcml2YXRpdmUgd29yayBvZiB0aGUgTGlicmFyeSwgYW5kCnRoZXJlZm9yZSBmYWxscyBvdXRzaWRlIHRoZSBzY29wZSBvZiB0aGlzIExpY2Vuc2UuCgogIEhvd2V2ZXIsIGxpbmtpbmcgYSAid29yayB0aGF0IHVzZXMgdGhlIExpYnJhcnkiIHdpdGggdGhlIExpYnJhcnkKY3JlYXRlcyBhbiBleGVjdXRhYmxlIHRoYXQgaXMgYSBkZXJpdmF0aXZlIG9mIHRoZSBMaWJyYXJ5IChiZWNhdXNlIGl0CmNvbnRhaW5zIHBvcnRpb25zIG9mIHRoZSBMaWJyYXJ5KSwgcmF0aGVyIHRoYW4gYSAid29yayB0aGF0IHVzZXMgdGhlCmxpYnJhcnkiLiAgVGhlIGV4ZWN1dGFibGUgaXMgdGhlcmVmb3JlIGNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlLgpTZWN0aW9uIDYgc3RhdGVzIHRlcm1zIGZvciBkaXN0cmlidXRpb24gb2Ygc3VjaCBleGVjdXRhYmxlcy4KCiAgV2hlbiBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgTGlicmFyeSIgdXNlcyBtYXRlcmlhbCBmcm9tIGEgaGVhZGVyIGZpbGUKdGhhdCBpcyBwYXJ0IG9mIHRoZSBMaWJyYXJ5LCB0aGUgb2JqZWN0IGNvZGUgZm9yIHRoZSB3b3JrIG1heSBiZSBhCmRlcml2YXRpdmUgd29yayBvZiB0aGUgTGlicmFyeSBldmVuIHRob3VnaCB0aGUgc291cmNlIGNvZGUgaXMgbm90LgpXaGV0aGVyIHRoaXMgaXMgdHJ1ZSBpcyBlc3BlY2lhbGx5IHNpZ25pZmljYW50IGlmIHRoZSB3b3JrIGNhbiBiZQpsaW5rZWQgd2l0aG91dCB0aGUgTGlicmFyeSwgb3IgaWYgdGhlIHdvcmsgaXMgaXRzZWxmIGEgbGlicmFyeS4gIFRoZQp0aHJlc2hvbGQgZm9yIHRoaXMgdG8gYmUgdHJ1ZSBpcyBub3QgcHJlY2lzZWx5IGRlZmluZWQgYnkgbGF3LgoKICBJZiBzdWNoIGFuIG9iamVjdCBmaWxlIHVzZXMgb25seSBudW1lcmljYWwgcGFyYW1ldGVycywgZGF0YQpzdHJ1Y3R1cmUgbGF5b3V0cyBhbmQgYWNjZXNzb3JzLCBhbmQgc21hbGwgbWFjcm9zIGFuZCBzbWFsbCBpbmxpbmUKZnVuY3Rpb25zICh0ZW4gbGluZXMgb3IgbGVzcyBpbiBsZW5ndGgpLCB0aGVuIHRoZSB1c2Ugb2YgdGhlIG9iamVjdApmaWxlIGlzIHVucmVzdHJpY3RlZCwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGlzIGxlZ2FsbHkgYSBkZXJpdmF0aXZlCndvcmsuICAoRXhlY3V0YWJsZXMgY29udGFpbmluZyB0aGlzIG9iamVjdCBjb2RlIHBsdXMgcG9ydGlvbnMgb2YgdGhlCkxpYnJhcnkgd2lsbCBzdGlsbCBmYWxsIHVuZGVyIFNlY3Rpb24gNi4pCgogIE90aGVyd2lzZSwgaWYgdGhlIHdvcmsgaXMgYSBkZXJpdmF0aXZlIG9mIHRoZSBMaWJyYXJ5LCB5b3UgbWF5CmRpc3RyaWJ1dGUgdGhlIG9iamVjdCBjb2RlIGZvciB0aGUgd29yayB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbiA2LgpBbnkgZXhlY3V0YWJsZXMgY29udGFpbmluZyB0aGF0IHdvcmsgYWxzbyBmYWxsIHVuZGVyIFNlY3Rpb24gNiwKd2hldGhlciBvciBub3QgdGhleSBhcmUgbGlua2VkIGRpcmVjdGx5IHdpdGggdGhlIExpYnJhcnkgaXRzZWxmLgoMCiAgNi4gQXMgYW4gZXhjZXB0aW9uIHRvIHRoZSBTZWN0aW9ucyBhYm92ZSwgeW91IG1heSBhbHNvIGNvbWJpbmUgb3IKbGluayBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgTGlicmFyeSIgd2l0aCB0aGUgTGlicmFyeSB0byBwcm9kdWNlIGEKd29yayBjb250YWluaW5nIHBvcnRpb25zIG9mIHRoZSBMaWJyYXJ5LCBhbmQgZGlzdHJpYnV0ZSB0aGF0IHdvcmsKdW5kZXIgdGVybXMgb2YgeW91ciBjaG9pY2UsIHByb3ZpZGVkIHRoYXQgdGhlIHRlcm1zIHBlcm1pdAptb2RpZmljYXRpb24gb2YgdGhlIHdvcmsgZm9yIHRoZSBjdXN0b21lcidzIG93biB1c2UgYW5kIHJldmVyc2UKZW5naW5lZXJpbmcgZm9yIGRlYnVnZ2luZyBzdWNoIG1vZGlmaWNhdGlvbnMuCgogIFlvdSBtdXN0IGdpdmUgcHJvbWluZW50IG5vdGljZSB3aXRoIGVhY2ggY29weSBvZiB0aGUgd29yayB0aGF0IHRoZQpMaWJyYXJ5IGlzIHVzZWQgaW4gaXQgYW5kIHRoYXQgdGhlIExpYnJhcnkgYW5kIGl0cyB1c2UgYXJlIGNvdmVyZWQgYnkKdGhpcyBMaWNlbnNlLiAgWW91IG11c3Qgc3VwcGx5IGEgY29weSBvZiB0aGlzIExpY2Vuc2UuICBJZiB0aGUgd29yawpkdXJpbmcgZXhlY3V0aW9uIGRpc3BsYXlzIGNvcHlyaWdodCBub3RpY2VzLCB5b3UgbXVzdCBpbmNsdWRlIHRoZQpjb3B5cmlnaHQgbm90aWNlIGZvciB0aGUgTGlicmFyeSBhbW9uZyB0aGVtLCBhcyB3ZWxsIGFzIGEgcmVmZXJlbmNlCmRpcmVjdGluZyB0aGUgdXNlciB0byB0aGUgY29weSBvZiB0aGlzIExpY2Vuc2UuICBBbHNvLCB5b3UgbXVzdCBkbyBvbmUKb2YgdGhlc2UgdGhpbmdzOgoKICAgIGEpIEFjY29tcGFueSB0aGUgd29yayB3aXRoIHRoZSBjb21wbGV0ZSBjb3JyZXNwb25kaW5nCiAgICBtYWNoaW5lLXJlYWRhYmxlIHNvdXJjZSBjb2RlIGZvciB0aGUgTGlicmFyeSBpbmNsdWRpbmcgd2hhdGV2ZXIKICAgIGNoYW5nZXMgd2VyZSB1c2VkIGluIHRoZSB3b3JrICh3aGljaCBtdXN0IGJlIGRpc3RyaWJ1dGVkIHVuZGVyCiAgICBTZWN0aW9ucyAxIGFuZCAyIGFib3ZlKTsgYW5kLCBpZiB0aGUgd29yayBpcyBhbiBleGVjdXRhYmxlIGxpbmtlZAogICAgd2l0aCB0aGUgTGlicmFyeSwgd2l0aCB0aGUgY29tcGxldGUgbWFjaGluZS1yZWFkYWJsZSAid29yayB0aGF0CiAgICB1c2VzIHRoZSBMaWJyYXJ5IiwgYXMgb2JqZWN0IGNvZGUgYW5kL29yIHNvdXJjZSBjb2RlLCBzbyB0aGF0IHRoZQogICAgdXNlciBjYW4gbW9kaWZ5IHRoZSBMaWJyYXJ5IGFuZCB0aGVuIHJlbGluayB0byBwcm9kdWNlIGEgbW9kaWZpZWQKICAgIGV4ZWN1dGFibGUgY29udGFpbmluZyB0aGUgbW9kaWZpZWQgTGlicmFyeS4gIChJdCBpcyB1bmRlcnN0b29kCiAgICB0aGF0IHRoZSB1c2VyIHdobyBjaGFuZ2VzIHRoZSBjb250ZW50cyBvZiBkZWZpbml0aW9ucyBmaWxlcyBpbiB0aGUKICAgIExpYnJhcnkgd2lsbCBub3QgbmVjZXNzYXJpbHkgYmUgYWJsZSB0byByZWNvbXBpbGUgdGhlIGFwcGxpY2F0aW9uCiAgICB0byB1c2UgdGhlIG1vZGlmaWVkIGRlZmluaXRpb25zLikKCiAgICBiKSBVc2UgYSBzdWl0YWJsZSBzaGFyZWQgbGlicmFyeSBtZWNoYW5pc20gZm9yIGxpbmtpbmcgd2l0aCB0aGUKICAgIExpYnJhcnkuICBBIHN1aXRhYmxlIG1lY2hhbmlzbSBpcyBvbmUgdGhhdCAoMSkgdXNlcyBhdCBydW4gdGltZSBhCiAgICBjb3B5IG9mIHRoZSBsaWJyYXJ5IGFscmVhZHkgcHJlc2VudCBvbiB0aGUgdXNlcidzIGNvbXB1dGVyIHN5c3RlbSwKICAgIHJhdGhlciB0aGFuIGNvcHlpbmcgbGlicmFyeSBmdW5jdGlvbnMgaW50byB0aGUgZXhlY3V0YWJsZSwgYW5kICgyKQogICAgd2lsbCBvcGVyYXRlIHByb3Blcmx5IHdpdGggYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCBpZgogICAgdGhlIHVzZXIgaW5zdGFsbHMgb25lLCBhcyBsb25nIGFzIHRoZSBtb2RpZmllZCB2ZXJzaW9uIGlzCiAgICBpbnRlcmZhY2UtY29tcGF0aWJsZSB3aXRoIHRoZSB2ZXJzaW9uIHRoYXQgdGhlIHdvcmsgd2FzIG1hZGUgd2l0aC4KCiAgICBjKSBBY2NvbXBhbnkgdGhlIHdvcmsgd2l0aCBhIHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZvciBhdAogICAgbGVhc3QgdGhyZWUgeWVhcnMsIHRvIGdpdmUgdGhlIHNhbWUgdXNlciB0aGUgbWF0ZXJpYWxzCiAgICBzcGVjaWZpZWQgaW4gU3Vic2VjdGlvbiA2YSwgYWJvdmUsIGZvciBhIGNoYXJnZSBubyBtb3JlCiAgICB0aGFuIHRoZSBjb3N0IG9mIHBlcmZvcm1pbmcgdGhpcyBkaXN0cmlidXRpb24uCgogICAgZCkgSWYgZGlzdHJpYnV0aW9uIG9mIHRoZSB3b3JrIGlzIG1hZGUgYnkgb2ZmZXJpbmcgYWNjZXNzIHRvIGNvcHkKICAgIGZyb20gYSBkZXNpZ25hdGVkIHBsYWNlLCBvZmZlciBlcXVpdmFsZW50IGFjY2VzcyB0byBjb3B5IHRoZSBhYm92ZQogICAgc3BlY2lmaWVkIG1hdGVyaWFscyBmcm9tIHRoZSBzYW1lIHBsYWNlLgoKICAgIGUpIFZlcmlmeSB0aGF0IHRoZSB1c2VyIGhhcyBhbHJlYWR5IHJlY2VpdmVkIGEgY29weSBvZiB0aGVzZQogICAgbWF0ZXJpYWxzIG9yIHRoYXQgeW91IGhhdmUgYWxyZWFkeSBzZW50IHRoaXMgdXNlciBhIGNvcHkuCgogIEZvciBhbiBleGVjdXRhYmxlLCB0aGUgcmVxdWlyZWQgZm9ybSBvZiB0aGUgIndvcmsgdGhhdCB1c2VzIHRoZQpMaWJyYXJ5IiBtdXN0IGluY2x1ZGUgYW55IGRhdGEgYW5kIHV0aWxpdHkgcHJvZ3JhbXMgbmVlZGVkIGZvcgpyZXByb2R1Y2luZyB0aGUgZXhlY3V0YWJsZSBmcm9tIGl0LiAgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwKdGhlIG1hdGVyaWFscyB0byBiZSBkaXN0cmlidXRlZCBuZWVkIG5vdCBpbmNsdWRlIGFueXRoaW5nIHRoYXQgaXMKbm9ybWFsbHkgZGlzdHJpYnV0ZWQgKGluIGVpdGhlciBzb3VyY2Ugb3IgYmluYXJ5IGZvcm0pIHdpdGggdGhlIG1ham9yCmNvbXBvbmVudHMgKGNvbXBpbGVyLCBrZXJuZWwsIGFuZCBzbyBvbikgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0gb24Kd2hpY2ggdGhlIGV4ZWN1dGFibGUgcnVucywgdW5sZXNzIHRoYXQgY29tcG9uZW50IGl0c2VsZiBhY2NvbXBhbmllcwp0aGUgZXhlY3V0YWJsZS4KCiAgSXQgbWF5IGhhcHBlbiB0aGF0IHRoaXMgcmVxdWlyZW1lbnQgY29udHJhZGljdHMgdGhlIGxpY2Vuc2UKcmVzdHJpY3Rpb25zIG9mIG90aGVyIHByb3ByaWV0YXJ5IGxpYnJhcmllcyB0aGF0IGRvIG5vdCBub3JtYWxseQphY2NvbXBhbnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0uICBTdWNoIGEgY29udHJhZGljdGlvbiBtZWFucyB5b3UgY2Fubm90CnVzZSBib3RoIHRoZW0gYW5kIHRoZSBMaWJyYXJ5IHRvZ2V0aGVyIGluIGFuIGV4ZWN1dGFibGUgdGhhdCB5b3UKZGlzdHJpYnV0ZS4KDAogIDcuIFlvdSBtYXkgcGxhY2UgbGlicmFyeSBmYWNpbGl0aWVzIHRoYXQgYXJlIGEgd29yayBiYXNlZCBvbiB0aGUKTGlicmFyeSBzaWRlLWJ5LXNpZGUgaW4gYSBzaW5nbGUgbGlicmFyeSB0b2dldGhlciB3aXRoIG90aGVyIGxpYnJhcnkKZmFjaWxpdGllcyBub3QgY292ZXJlZCBieSB0aGlzIExpY2Vuc2UsIGFuZCBkaXN0cmlidXRlIHN1Y2ggYSBjb21iaW5lZApsaWJyYXJ5LCBwcm92aWRlZCB0aGF0IHRoZSBzZXBhcmF0ZSBkaXN0cmlidXRpb24gb2YgdGhlIHdvcmsgYmFzZWQgb24KdGhlIExpYnJhcnkgYW5kIG9mIHRoZSBvdGhlciBsaWJyYXJ5IGZhY2lsaXRpZXMgaXMgb3RoZXJ3aXNlCnBlcm1pdHRlZCwgYW5kIHByb3ZpZGVkIHRoYXQgeW91IGRvIHRoZXNlIHR3byB0aGluZ3M6CgogICAgYSkgQWNjb21wYW55IHRoZSBjb21iaW5lZCBsaWJyYXJ5IHdpdGggYSBjb3B5IG9mIHRoZSBzYW1lIHdvcmsKICAgIGJhc2VkIG9uIHRoZSBMaWJyYXJ5LCB1bmNvbWJpbmVkIHdpdGggYW55IG90aGVyIGxpYnJhcnkKICAgIGZhY2lsaXRpZXMuICBUaGlzIG11c3QgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQogICAgU2VjdGlvbnMgYWJvdmUuCgogICAgYikgR2l2ZSBwcm9taW5lbnQgbm90aWNlIHdpdGggdGhlIGNvbWJpbmVkIGxpYnJhcnkgb2YgdGhlIGZhY3QKICAgIHRoYXQgcGFydCBvZiBpdCBpcyBhIHdvcmsgYmFzZWQgb24gdGhlIExpYnJhcnksIGFuZCBleHBsYWluaW5nCiAgICB3aGVyZSB0byBmaW5kIHRoZSBhY2NvbXBhbnlpbmcgdW5jb21iaW5lZCBmb3JtIG9mIHRoZSBzYW1lIHdvcmsuCgogIDguIFlvdSBtYXkgbm90IGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSwgbGluayB3aXRoLCBvciBkaXN0cmlidXRlCnRoZSBMaWJyYXJ5IGV4Y2VwdCBhcyBleHByZXNzbHkgcHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQW55CmF0dGVtcHQgb3RoZXJ3aXNlIHRvIGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSwgbGluayB3aXRoLCBvcgpkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IGlzIHZvaWQsIGFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgdGVybWluYXRlIHlvdXIKcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZS4gIEhvd2V2ZXIsIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzLApvciByaWdodHMsIGZyb20geW91IHVuZGVyIHRoaXMgTGljZW5zZSB3aWxsIG5vdCBoYXZlIHRoZWlyIGxpY2Vuc2VzCnRlcm1pbmF0ZWQgc28gbG9uZyBhcyBzdWNoIHBhcnRpZXMgcmVtYWluIGluIGZ1bGwgY29tcGxpYW5jZS4KCiAgOS4gWW91IGFyZSBub3QgcmVxdWlyZWQgdG8gYWNjZXB0IHRoaXMgTGljZW5zZSwgc2luY2UgeW91IGhhdmUgbm90CnNpZ25lZCBpdC4gIEhvd2V2ZXIsIG5vdGhpbmcgZWxzZSBncmFudHMgeW91IHBlcm1pc3Npb24gdG8gbW9kaWZ5IG9yCmRpc3RyaWJ1dGUgdGhlIExpYnJhcnkgb3IgaXRzIGRlcml2YXRpdmUgd29ya3MuICBUaGVzZSBhY3Rpb25zIGFyZQpwcm9oaWJpdGVkIGJ5IGxhdyBpZiB5b3UgZG8gbm90IGFjY2VwdCB0aGlzIExpY2Vuc2UuICBUaGVyZWZvcmUsIGJ5Cm1vZGlmeWluZyBvciBkaXN0cmlidXRpbmcgdGhlIExpYnJhcnkgKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQpMaWJyYXJ5KSwgeW91IGluZGljYXRlIHlvdXIgYWNjZXB0YW5jZSBvZiB0aGlzIExpY2Vuc2UgdG8gZG8gc28sIGFuZAphbGwgaXRzIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpbmcgb3IgbW9kaWZ5aW5nCnRoZSBMaWJyYXJ5IG9yIHdvcmtzIGJhc2VkIG9uIGl0LgoKICAxMC4gRWFjaCB0aW1lIHlvdSByZWRpc3RyaWJ1dGUgdGhlIExpYnJhcnkgKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQpMaWJyYXJ5KSwgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5IHJlY2VpdmVzIGEgbGljZW5zZSBmcm9tIHRoZQpvcmlnaW5hbCBsaWNlbnNvciB0byBjb3B5LCBkaXN0cmlidXRlLCBsaW5rIHdpdGggb3IgbW9kaWZ5IHRoZSBMaWJyYXJ5CnN1YmplY3QgdG8gdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMuICBZb3UgbWF5IG5vdCBpbXBvc2UgYW55IGZ1cnRoZXIKcmVzdHJpY3Rpb25zIG9uIHRoZSByZWNpcGllbnRzJyBleGVyY2lzZSBvZiB0aGUgcmlnaHRzIGdyYW50ZWQgaGVyZWluLgpZb3UgYXJlIG5vdCByZXNwb25zaWJsZSBmb3IgZW5mb3JjaW5nIGNvbXBsaWFuY2UgYnkgdGhpcmQgcGFydGllcyB3aXRoCnRoaXMgTGljZW5zZS4KDAogIDExLiBJZiwgYXMgYSBjb25zZXF1ZW5jZSBvZiBhIGNvdXJ0IGp1ZGdtZW50IG9yIGFsbGVnYXRpb24gb2YgcGF0ZW50CmluZnJpbmdlbWVudCBvciBmb3IgYW55IG90aGVyIHJlYXNvbiAobm90IGxpbWl0ZWQgdG8gcGF0ZW50IGlzc3VlcyksCmNvbmRpdGlvbnMgYXJlIGltcG9zZWQgb24geW91ICh3aGV0aGVyIGJ5IGNvdXJ0IG9yZGVyLCBhZ3JlZW1lbnQgb3IKb3RoZXJ3aXNlKSB0aGF0IGNvbnRyYWRpY3QgdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLCB0aGV5IGRvIG5vdApleGN1c2UgeW91IGZyb20gdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLiAgSWYgeW91IGNhbm5vdApkaXN0cmlidXRlIHNvIGFzIHRvIHNhdGlzZnkgc2ltdWx0YW5lb3VzbHkgeW91ciBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzCkxpY2Vuc2UgYW5kIGFueSBvdGhlciBwZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5jZSB5b3UKbWF5IG5vdCBkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiBhIHBhdGVudApsaWNlbnNlIHdvdWxkIG5vdCBwZXJtaXQgcm95YWx0eS1mcmVlIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBMaWJyYXJ5IGJ5CmFsbCB0aG9zZSB3aG8gcmVjZWl2ZSBjb3BpZXMgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHlvdSwgdGhlbgp0aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCBpdCBhbmQgdGhpcyBMaWNlbnNlIHdvdWxkIGJlIHRvCnJlZnJhaW4gZW50aXJlbHkgZnJvbSBkaXN0cmlidXRpb24gb2YgdGhlIExpYnJhcnkuCgpJZiBhbnkgcG9ydGlvbiBvZiB0aGlzIHNlY3Rpb24gaXMgaGVsZCBpbnZhbGlkIG9yIHVuZW5mb3JjZWFibGUgdW5kZXIgYW55CnBhcnRpY3VsYXIgY2lyY3Vtc3RhbmNlLCB0aGUgYmFsYW5jZSBvZiB0aGUgc2VjdGlvbiBpcyBpbnRlbmRlZCB0byBhcHBseSwKYW5kIHRoZSBzZWN0aW9uIGFzIGEgd2hvbGUgaXMgaW50ZW5kZWQgdG8gYXBwbHkgaW4gb3RoZXIgY2lyY3Vtc3RhbmNlcy4KCkl0IGlzIG5vdCB0aGUgcHVycG9zZSBvZiB0aGlzIHNlY3Rpb24gdG8gaW5kdWNlIHlvdSB0byBpbmZyaW5nZSBhbnkKcGF0ZW50cyBvciBvdGhlciBwcm9wZXJ0eSByaWdodCBjbGFpbXMgb3IgdG8gY29udGVzdCB2YWxpZGl0eSBvZiBhbnkKc3VjaCBjbGFpbXM7IHRoaXMgc2VjdGlvbiBoYXMgdGhlIHNvbGUgcHVycG9zZSBvZiBwcm90ZWN0aW5nIHRoZQppbnRlZ3JpdHkgb2YgdGhlIGZyZWUgc29mdHdhcmUgZGlzdHJpYnV0aW9uIHN5c3RlbSB3aGljaCBpcwppbXBsZW1lbnRlZCBieSBwdWJsaWMgbGljZW5zZSBwcmFjdGljZXMuICBNYW55IHBlb3BsZSBoYXZlIG1hZGUKZ2VuZXJvdXMgY29udHJpYnV0aW9ucyB0byB0aGUgd2lkZSByYW5nZSBvZiBzb2Z0d2FyZSBkaXN0cmlidXRlZAp0aHJvdWdoIHRoYXQgc3lzdGVtIGluIHJlbGlhbmNlIG9uIGNvbnNpc3RlbnQgYXBwbGljYXRpb24gb2YgdGhhdApzeXN0ZW07IGl0IGlzIHVwIHRvIHRoZSBhdXRob3IvZG9ub3IgdG8gZGVjaWRlIGlmIGhlIG9yIHNoZSBpcyB3aWxsaW5nCnRvIGRpc3RyaWJ1dGUgc29mdHdhcmUgdGhyb3VnaCBhbnkgb3RoZXIgc3lzdGVtIGFuZCBhIGxpY2Vuc2VlIGNhbm5vdAppbXBvc2UgdGhhdCBjaG9pY2UuCgpUaGlzIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8gbWFrZSB0aG9yb3VnaGx5IGNsZWFyIHdoYXQgaXMgYmVsaWV2ZWQgdG8KYmUgYSBjb25zZXF1ZW5jZSBvZiB0aGUgcmVzdCBvZiB0aGlzIExpY2Vuc2UuCgogIDEyLiBJZiB0aGUgZGlzdHJpYnV0aW9uIGFuZC9vciB1c2Ugb2YgdGhlIExpYnJhcnkgaXMgcmVzdHJpY3RlZCBpbgpjZXJ0YWluIGNvdW50cmllcyBlaXRoZXIgYnkgcGF0ZW50cyBvciBieSBjb3B5cmlnaHRlZCBpbnRlcmZhY2VzLCB0aGUKb3JpZ2luYWwgY29weXJpZ2h0IGhvbGRlciB3aG8gcGxhY2VzIHRoZSBMaWJyYXJ5IHVuZGVyIHRoaXMgTGljZW5zZSBtYXkgYWRkCmFuIGV4cGxpY2l0IGdlb2dyYXBoaWNhbCBkaXN0cmlidXRpb24gbGltaXRhdGlvbiBleGNsdWRpbmcgdGhvc2UgY291bnRyaWVzLApzbyB0aGF0IGRpc3RyaWJ1dGlvbiBpcyBwZXJtaXR0ZWQgb25seSBpbiBvciBhbW9uZyBjb3VudHJpZXMgbm90IHRodXMKZXhjbHVkZWQuICBJbiBzdWNoIGNhc2UsIHRoaXMgTGljZW5zZSBpbmNvcnBvcmF0ZXMgdGhlIGxpbWl0YXRpb24gYXMgaWYKd3JpdHRlbiBpbiB0aGUgYm9keSBvZiB0aGlzIExpY2Vuc2UuCgogIDEzLiBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldwp2ZXJzaW9ucyBvZiB0aGUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuClN1Y2ggbmV3IHZlcnNpb25zIHdpbGwgYmUgc2ltaWxhciBpbiBzcGlyaXQgdG8gdGhlIHByZXNlbnQgdmVyc2lvbiwKYnV0IG1heSBkaWZmZXIgaW4gZGV0YWlsIHRvIGFkZHJlc3MgbmV3IHByb2JsZW1zIG9yIGNvbmNlcm5zLgoKRWFjaCB2ZXJzaW9uIGlzIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuICBJZiB0aGUgTGlicmFyeQpzcGVjaWZpZXMgYSB2ZXJzaW9uIG51bWJlciBvZiB0aGlzIExpY2Vuc2Ugd2hpY2ggYXBwbGllcyB0byBpdCBhbmQKImFueSBsYXRlciB2ZXJzaW9uIiwgeW91IGhhdmUgdGhlIG9wdGlvbiBvZiBmb2xsb3dpbmcgdGhlIHRlcm1zIGFuZApjb25kaXRpb25zIGVpdGhlciBvZiB0aGF0IHZlcnNpb24gb3Igb2YgYW55IGxhdGVyIHZlcnNpb24gcHVibGlzaGVkIGJ5CnRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uICBJZiB0aGUgTGlicmFyeSBkb2VzIG5vdCBzcGVjaWZ5IGEKbGljZW5zZSB2ZXJzaW9uIG51bWJlciwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQgYnkKdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KDAogIDE0LiBJZiB5b3Ugd2lzaCB0byBpbmNvcnBvcmF0ZSBwYXJ0cyBvZiB0aGUgTGlicmFyeSBpbnRvIG90aGVyIGZyZWUKcHJvZ3JhbXMgd2hvc2UgZGlzdHJpYnV0aW9uIGNvbmRpdGlvbnMgYXJlIGluY29tcGF0aWJsZSB3aXRoIHRoZXNlLAp3cml0ZSB0byB0aGUgYXV0aG9yIHRvIGFzayBmb3IgcGVybWlzc2lvbi4gIEZvciBzb2Z0d2FyZSB3aGljaCBpcwpjb3B5cmlnaHRlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3cml0ZSB0byB0aGUgRnJlZQpTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3ZSBzb21ldGltZXMgbWFrZSBleGNlcHRpb25zIGZvciB0aGlzLiAgT3VyCmRlY2lzaW9uIHdpbGwgYmUgZ3VpZGVkIGJ5IHRoZSB0d28gZ29hbHMgb2YgcHJlc2VydmluZyB0aGUgZnJlZSBzdGF0dXMKb2YgYWxsIGRlcml2YXRpdmVzIG9mIG91ciBmcmVlIHNvZnR3YXJlIGFuZCBvZiBwcm9tb3RpbmcgdGhlIHNoYXJpbmcKYW5kIHJldXNlIG9mIHNvZnR3YXJlIGdlbmVyYWxseS4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTyBXQVJSQU5UWQoKICAxNS4gQkVDQVVTRSBUSEUgTElCUkFSWSBJUyBMSUNFTlNFRCBGUkVFIE9GIENIQVJHRSwgVEhFUkUgSVMgTk8KV0FSUkFOVFkgRk9SIFRIRSBMSUJSQVJZLCBUTyBUSEUgRVhURU5UIFBFUk1JVFRFRCBCWSBBUFBMSUNBQkxFIExBVy4KRVhDRVBUIFdIRU4gT1RIRVJXSVNFIFNUQVRFRCBJTiBXUklUSU5HIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQvT1IKT1RIRVIgUEFSVElFUyBQUk9WSURFIFRIRSBMSUJSQVJZICJBUyBJUyIgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKS0lORCwgRUlUSEVSIEVYUFJFU1NFRCBPUiBJTVBMSUVELCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCklNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgpQVVJQT1NFLiAgVEhFIEVOVElSRSBSSVNLIEFTIFRPIFRIRSBRVUFMSVRZIEFORCBQRVJGT1JNQU5DRSBPRiBUSEUKTElCUkFSWSBJUyBXSVRIIFlPVS4gIFNIT1VMRCBUSEUgTElCUkFSWSBQUk9WRSBERUZFQ1RJVkUsIFlPVSBBU1NVTUUKVEhFIENPU1QgT0YgQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsIFJFUEFJUiBPUiBDT1JSRUNUSU9OLgoKICAxNi4gSU4gTk8gRVZFTlQgVU5MRVNTIFJFUVVJUkVEIEJZIEFQUExJQ0FCTEUgTEFXIE9SIEFHUkVFRCBUTyBJTgpXUklUSU5HIFdJTEwgQU5ZIENPUFlSSUdIVCBIT0xERVIsIE9SIEFOWSBPVEhFUiBQQVJUWSBXSE8gTUFZIE1PRElGWQpBTkQvT1IgUkVESVNUUklCVVRFIFRIRSBMSUJSQVJZIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVQpGT1IgREFNQUdFUywgSU5DTFVESU5HIEFOWSBHRU5FUkFMLCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SCkNPTlNFUVVFTlRJQUwgREFNQUdFUyBBUklTSU5HIE9VVCBPRiBUSEUgVVNFIE9SIElOQUJJTElUWSBUTyBVU0UgVEhFCkxJQlJBUlkgKElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gTE9TUyBPRiBEQVRBIE9SIERBVEEgQkVJTkcKUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJTkVEIEJZIFlPVSBPUiBUSElSRCBQQVJUSUVTIE9SIEEKRkFJTFVSRSBPRiBUSEUgTElCUkFSWSBUTyBPUEVSQVRFIFdJVEggQU5ZIE9USEVSIFNPRlRXQVJFKSwgRVZFTiBJRgpTVUNIIEhPTERFUiBPUiBPVEhFUiBQQVJUWSBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICkRBTUFHRVMuCgogICAgICAgICAgICAgICAgICAgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKDAogICAgICAgICAgIEhvdyB0byBBcHBseSBUaGVzZSBUZXJtcyB0byBZb3VyIE5ldyBMaWJyYXJpZXMKCiAgSWYgeW91IGRldmVsb3AgYSBuZXcgbGlicmFyeSwgYW5kIHlvdSB3YW50IGl0IHRvIGJlIG9mIHRoZSBncmVhdGVzdApwb3NzaWJsZSB1c2UgdG8gdGhlIHB1YmxpYywgd2UgcmVjb21tZW5kIG1ha2luZyBpdCBmcmVlIHNvZnR3YXJlIHRoYXQKZXZlcnlvbmUgY2FuIHJlZGlzdHJpYnV0ZSBhbmQgY2hhbmdlLiAgWW91IGNhbiBkbyBzbyBieSBwZXJtaXR0aW5nCnJlZGlzdHJpYnV0aW9uIHVuZGVyIHRoZXNlIHRlcm1zIChvciwgYWx0ZXJuYXRpdmVseSwgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQpvcmRpbmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKS4KCiAgVG8gYXBwbHkgdGhlc2UgdGVybXMsIGF0dGFjaCB0aGUgZm9sbG93aW5nIG5vdGljZXMgdG8gdGhlIGxpYnJhcnkuICBJdCBpcwpzYWZlc3QgdG8gYXR0YWNoIHRoZW0gdG8gdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGZpbGUgdG8gbW9zdCBlZmZlY3RpdmVseQpjb252ZXkgdGhlIGV4Y2x1c2lvbiBvZiB3YXJyYW50eTsgYW5kIGVhY2ggZmlsZSBzaG91bGQgaGF2ZSBhdCBsZWFzdCB0aGUKImNvcHlyaWdodCIgbGluZSBhbmQgYSBwb2ludGVyIHRvIHdoZXJlIHRoZSBmdWxsIG5vdGljZSBpcyBmb3VuZC4KCiAgICA8b25lIGxpbmUgdG8gZ2l2ZSB0aGUgbGlicmFyeSdzIG5hbWUgYW5kIGEgYnJpZWYgaWRlYSBvZiB3aGF0IGl0IGRvZXMuPgogICAgQ29weXJpZ2h0IChDKSA8eWVhcj4gIDxuYW1lIG9mIGF1dGhvcj4KCiAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgoKICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgoKICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQoKQWxzbyBhZGQgaW5mb3JtYXRpb24gb24gaG93IHRvIGNvbnRhY3QgeW91IGJ5IGVsZWN0cm9uaWMgYW5kIHBhcGVyIG1haWwuCgpZb3Ugc2hvdWxkIGFsc28gZ2V0IHlvdXIgZW1wbG95ZXIgKGlmIHlvdSB3b3JrIGFzIGEgcHJvZ3JhbW1lcikgb3IgeW91cgpzY2hvb2wsIGlmIGFueSwgdG8gc2lnbiBhICJjb3B5cmlnaHQgZGlzY2xhaW1lciIgZm9yIHRoZSBsaWJyYXJ5LCBpZgpuZWNlc3NhcnkuICBIZXJlIGlzIGEgc2FtcGxlOyBhbHRlciB0aGUgbmFtZXM6CgogIFlveW9keW5lLCBJbmMuLCBoZXJlYnkgZGlzY2xhaW1zIGFsbCBjb3B5cmlnaHQgaW50ZXJlc3QgaW4gdGhlCiAgbGlicmFyeSBgRnJvYicgKGEgbGlicmFyeSBmb3IgdHdlYWtpbmcga25vYnMpIHdyaXR0ZW4gYnkgSmFtZXMgUmFuZG9tIEhhY2tlci4KCiAgPHNpZ25hdHVyZSBvZiBUeSBDb29uPiwgMSBBcHJpbCAxOTkwCiAgVHkgQ29vbiwgUHJlc2lkZW50IG9mIFZpY2UKClRoYXQncyBhbGwgdGhlcmUgaXMgdG8gaXQhCg==", + "contentType": "text/plain", + "encoding": "base64" } } }, @@ -169,33 +164,6 @@ "license": { "name": "License :: OSI Approved :: BSD License" } - }, - { - "license": { - "name": "declared license file: LICENSE", - "text": { - "content": "This software is made available under the terms of *either* of the licenses\nfound in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made\nunder the terms of *both* these licenses.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.APACHE", - "text": { - "content": "\n Apache License\n Version 2.0, January 2004\n https://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.BSD", - "text": { - "content": "Copyright (c) Individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of PyCA Cryptography nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" - } - } } ] }, @@ -256,8 +224,9 @@ "license": { "name": "declared license file: AUTHORS", "text": { - "content": "Stefan K\u00f6gl \nAlexander Shorin \nChristopher J. White \n", - "contentType": "text/plain" + "content": "U3RlZmFuIEvDtmdsIDxzdGVmYW5Ac2tvZWdsLm5ldD4KQWxleGFuZGVyIFNob3JpbiA8a3hlcGFsQGdtYWlsLmNvbT4KQ2hyaXN0b3BoZXIgSi4gV2hpdGUgPGNocmlzQGdyaWVyd2hpdGUuY29tPgo=", + "contentType": "text/plain", + "encoding": "base64" } } }, @@ -265,8 +234,9 @@ "license": { "name": "declared license file: LICENSE.txt", "text": { - "content": "Copyright (c) 2011 Stefan K\u00f6gl \nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions\nare met:\n\n1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n3. The name of the author may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR\nIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\nOF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\nIN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\nNOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\nTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n", - "contentType": "text/plain" + "content": "Q29weXJpZ2h0IChjKSAyMDExIFN0ZWZhbiBLw7ZnbCA8c3RlZmFuQHNrb2VnbC5uZXQ+CkFsbCByaWdodHMgcmVzZXJ2ZWQuCgpSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCmFyZSBtZXQ6CgoxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCjIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KMy4gVGhlIG5hbWUgb2YgdGhlIGF1dGhvciBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzCiAgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgoKVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IKSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUwpPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELgpJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsCklOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVApOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCkRBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQpUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCihJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgpUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgoK", + "contentType": "text/plain", + "encoding": "base64" } } }, @@ -305,8 +275,9 @@ "license": { "name": "declared license file: AUTHORS.rst", "text": { - "content": "The following organizations or individuals have contributed to this code:\n\n- Ayan Sinha Mahapatra @AyanSinhaMahapatra\n- Carmen Bianca Bakker @carmenbianca\n- Chin-Yeung Li @chinyeungli\n- Dennis Clark @DennisClark\n- John Horan @johnmhoran\n- Jono Yang @JonoYang\n- Max Mehl @mxmehl\n- nexB Inc. @nexB\n- Peter Kolbus @pkolbus\n- Philippe Ombredanne @pombredanne\n- Sebastian Schuberth @sschuberth\n- Steven Esser @majurg\n- Thomas Druez @tdruez\n", - "contentType": "text/prs.fallenstein.rst" + "content": "VGhlIGZvbGxvd2luZyBvcmdhbml6YXRpb25zIG9yIGluZGl2aWR1YWxzIGhhdmUgY29udHJpYnV0ZWQgdG8gdGhpcyBjb2RlOgoKLSBBeWFuIFNpbmhhIE1haGFwYXRyYSBAQXlhblNpbmhhTWFoYXBhdHJhCi0gQ2FybWVuIEJpYW5jYSBCYWtrZXIgQGNhcm1lbmJpYW5jYQotIENoaW4tWWV1bmcgTGkgQGNoaW55ZXVuZ2xpCi0gRGVubmlzIENsYXJrIEBEZW5uaXNDbGFyawotIEpvaG4gSG9yYW4gQGpvaG5taG9yYW4KLSBKb25vIFlhbmcgQEpvbm9ZYW5nCi0gTWF4IE1laGwgQG14bWVobAotIG5leEIgSW5jLiBAbmV4QgotIFBldGVyIEtvbGJ1cyBAcGtvbGJ1cwotIFBoaWxpcHBlIE9tYnJlZGFubmUgQHBvbWJyZWRhbm5lCi0gU2ViYXN0aWFuIFNjaHViZXJ0aCBAc3NjaHViZXJ0aAotIFN0ZXZlbiBFc3NlciBAbWFqdXJnCi0gVGhvbWFzIERydWV6IEB0ZHJ1ZXoK", + "contentType": "text/prs.fallenstein.rst", + "encoding": "base64" } } }, @@ -314,8 +285,9 @@ "license": { "name": "declared license file: CHANGELOG.rst", "text": { - "content": "Changelog\n=========\n\nv30.3.0 - 2024-03-18\n--------------------\n\nThis is a minor release without API changes:\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.23\n- Drop support for Python 3.7\n\nv30.2.0 - 2023-11-29\n--------------------\n\nThis is a minor release without API changes:\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.22\n- Add Python 3.12 support in CI\n\n\nv30.1.1 - 2023-01-16\n----------------------\n\nThis is a minor dot release without API changes\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.20\n\n\nv30.1.0 - 2023-01-16\n----------------------\n\nThis is a minor release without API changes\n\n- Use latest skeleton (and updated configure script)\n- Update license list to latest ScanCode and SPDX 3.19\n- Use correct syntax for python_require\n- Drop using Travis and Appveyor\n- Drop support for Python 3.7 and add Python 3.11 in CI\n\n\nv30.0.0 - 2022-05-10\n----------------------\n\nThis is a minor release with API changes\n\n- Use latest skeleton (and updated configure script)\n- Drop using calver\n- Improve error checking when combining licenses\n\n\n\nv21.6.14 - 2021-06-14\n----------------------\n\nAdded\n~~~~~\n\n- Switch to calver for package versioning to better convey the currency of the\n bundled data.\n\n- Include https://scancode-licensedb.aboutcode.org/ licenses list with\n ScanCode (v21.6.7) and SPDX licenses (v3.13) keys. Add new functions to\n create Licensing using these licenses as LicenseSymbol.\n\n- Add new License.dedup() method to deduplicate and simplify license expressions\n without over simplifying.\n\n- Add new License.validate() method to return a new ExpressionInfo object with\n details on a license expression validation.\n\n\nChanged\n~~~~~~~\n- Drop support for Python 2.\n- Adopt the project skeleton from https://github.com/nexB/skeleton\n and its new configure script\n\n\nv1.2 - 2019-11-14\n------------------\nAdded\n~~~~~\n- Add ability to render WITH expression wrapped in parenthesis\n\nFixes\n~~~~~\n- Fix anomalous backslashes in strings\n\nChanged\n~~~~~~~\n- Update the thirdparty directory structure.\n\n\nv1.0 - 2019-10-16\n------------------\nAdded\n~~~~~\n- New version of boolean.py library\n- Add ability to leave license expressions unsorted when simplifying\n\nChanged\n~~~~~~~\n- updated travis CI settings\n\n\nv0.999 - 2019-04-29\n--------------------\n- Initial release\n- license-expression is small utility library to parse, compare and\n simplify and normalize license expressions.\n\n", - "contentType": "text/prs.fallenstein.rst" + "content": "Q2hhbmdlbG9nCj09PT09PT09PQoKdjMwLjMuMCAtIDIwMjQtMDMtMTgKLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRoaXMgaXMgYSBtaW5vciByZWxlYXNlIHdpdGhvdXQgQVBJIGNoYW5nZXM6CgotIFVzZSBsYXRlc3Qgc2tlbGV0b24KLSBVcGRhdGUgbGljZW5zZSBsaXN0IHRvIGxhdGVzdCBTY2FuQ29kZSBhbmQgU1BEWCAzLjIzCi0gRHJvcCBzdXBwb3J0IGZvciBQeXRob24gMy43Cgp2MzAuMi4wIC0gMjAyMy0xMS0yOQotLS0tLS0tLS0tLS0tLS0tLS0tLQoKVGhpcyBpcyBhIG1pbm9yIHJlbGVhc2Ugd2l0aG91dCBBUEkgY2hhbmdlczoKCi0gVXNlIGxhdGVzdCBza2VsZXRvbgotIFVwZGF0ZSBsaWNlbnNlIGxpc3QgdG8gbGF0ZXN0IFNjYW5Db2RlIGFuZCBTUERYIDMuMjIKLSBBZGQgUHl0aG9uIDMuMTIgc3VwcG9ydCBpbiBDSQoKCnYzMC4xLjEgLSAyMDIzLTAxLTE2Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRoaXMgaXMgYSBtaW5vciBkb3QgcmVsZWFzZSB3aXRob3V0IEFQSSBjaGFuZ2VzCgotIFVzZSBsYXRlc3Qgc2tlbGV0b24KLSBVcGRhdGUgbGljZW5zZSBsaXN0IHRvIGxhdGVzdCBTY2FuQ29kZSBhbmQgU1BEWCAzLjIwCgoKdjMwLjEuMCAtIDIwMjMtMDEtMTYKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKVGhpcyBpcyBhIG1pbm9yIHJlbGVhc2Ugd2l0aG91dCBBUEkgY2hhbmdlcwoKLSBVc2UgbGF0ZXN0IHNrZWxldG9uIChhbmQgdXBkYXRlZCBjb25maWd1cmUgc2NyaXB0KQotIFVwZGF0ZSBsaWNlbnNlIGxpc3QgdG8gbGF0ZXN0IFNjYW5Db2RlIGFuZCBTUERYIDMuMTkKLSBVc2UgY29ycmVjdCBzeW50YXggZm9yIHB5dGhvbl9yZXF1aXJlCi0gRHJvcCB1c2luZyBUcmF2aXMgYW5kIEFwcHZleW9yCi0gRHJvcCBzdXBwb3J0IGZvciBQeXRob24gMy43IGFuZCBhZGQgUHl0aG9uIDMuMTEgaW4gQ0kKCgp2MzAuMC4wIC0gMjAyMi0wNS0xMAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpUaGlzIGlzIGEgbWlub3IgcmVsZWFzZSB3aXRoIEFQSSBjaGFuZ2VzCgotIFVzZSBsYXRlc3Qgc2tlbGV0b24gKGFuZCB1cGRhdGVkIGNvbmZpZ3VyZSBzY3JpcHQpCi0gRHJvcCB1c2luZyBjYWx2ZXIKLSBJbXByb3ZlIGVycm9yIGNoZWNraW5nIHdoZW4gY29tYmluaW5nIGxpY2Vuc2VzCgoKCnYyMS42LjE0IC0gMjAyMS0wNi0xNAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpBZGRlZAp+fn5+fgoKLSBTd2l0Y2ggdG8gY2FsdmVyIGZvciBwYWNrYWdlIHZlcnNpb25pbmcgdG8gYmV0dGVyIGNvbnZleSB0aGUgY3VycmVuY3kgb2YgdGhlCiAgYnVuZGxlZCBkYXRhLgoKLSBJbmNsdWRlIGh0dHBzOi8vc2NhbmNvZGUtbGljZW5zZWRiLmFib3V0Y29kZS5vcmcvIGxpY2Vuc2VzIGxpc3Qgd2l0aAogIFNjYW5Db2RlICh2MjEuNi43KSBhbmQgU1BEWCBsaWNlbnNlcyAodjMuMTMpIGtleXMuIEFkZCBuZXcgZnVuY3Rpb25zIHRvCiAgY3JlYXRlIExpY2Vuc2luZyB1c2luZyB0aGVzZSBsaWNlbnNlcyBhcyBMaWNlbnNlU3ltYm9sLgoKLSBBZGQgbmV3IExpY2Vuc2UuZGVkdXAoKSBtZXRob2QgdG8gZGVkdXBsaWNhdGUgYW5kIHNpbXBsaWZ5IGxpY2Vuc2UgZXhwcmVzc2lvbnMKICB3aXRob3V0IG92ZXIgc2ltcGxpZnlpbmcuCgotIEFkZCBuZXcgTGljZW5zZS52YWxpZGF0ZSgpIG1ldGhvZCB0byByZXR1cm4gYSBuZXcgRXhwcmVzc2lvbkluZm8gb2JqZWN0IHdpdGgKICBkZXRhaWxzIG9uIGEgbGljZW5zZSBleHByZXNzaW9uIHZhbGlkYXRpb24uCgoKQ2hhbmdlZAp+fn5+fn5+Ci0gRHJvcCBzdXBwb3J0IGZvciBQeXRob24gMi4KLSBBZG9wdCB0aGUgcHJvamVjdCBza2VsZXRvbiBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9uZXhCL3NrZWxldG9uCiAgYW5kIGl0cyBuZXcgY29uZmlndXJlIHNjcmlwdAoKCnYxLjIgLSAyMDE5LTExLTE0Ci0tLS0tLS0tLS0tLS0tLS0tLQpBZGRlZAp+fn5+fgotIEFkZCBhYmlsaXR5IHRvIHJlbmRlciBXSVRIIGV4cHJlc3Npb24gd3JhcHBlZCBpbiBwYXJlbnRoZXNpcwoKRml4ZXMKfn5+fn4KLSBGaXggYW5vbWFsb3VzIGJhY2tzbGFzaGVzIGluIHN0cmluZ3MKCkNoYW5nZWQKfn5+fn5+fgotIFVwZGF0ZSB0aGUgdGhpcmRwYXJ0eSBkaXJlY3Rvcnkgc3RydWN0dXJlLgoKCnYxLjAgLSAyMDE5LTEwLTE2Ci0tLS0tLS0tLS0tLS0tLS0tLQpBZGRlZAp+fn5+fgotIE5ldyB2ZXJzaW9uIG9mIGJvb2xlYW4ucHkgbGlicmFyeQotIEFkZCBhYmlsaXR5IHRvIGxlYXZlIGxpY2Vuc2UgZXhwcmVzc2lvbnMgdW5zb3J0ZWQgd2hlbiBzaW1wbGlmeWluZwoKQ2hhbmdlZAp+fn5+fn5+Ci0gdXBkYXRlZCB0cmF2aXMgQ0kgc2V0dGluZ3MKCgp2MC45OTkgLSAyMDE5LTA0LTI5Ci0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gSW5pdGlhbCByZWxlYXNlCi0gbGljZW5zZS1leHByZXNzaW9uIGlzIHNtYWxsIHV0aWxpdHkgbGlicmFyeSB0byBwYXJzZSwgY29tcGFyZSBhbmQKICBzaW1wbGlmeSBhbmQgbm9ybWFsaXplIGxpY2Vuc2UgZXhwcmVzc2lvbnMuCgo=", + "contentType": "text/prs.fallenstein.rst", + "encoding": "base64" } } }, @@ -323,8 +295,9 @@ "license": { "name": "declared license file: CODE_OF_CONDUCT.rst", "text": { - "content": "Contributor Covenant Code of Conduct\n====================================\n\nOur Pledge\n----------\n\nIn the interest of fostering an open and welcoming environment, we as\ncontributors and maintainers pledge to making participation in our\nproject and our community a harassment-free experience for everyone,\nregardless of age, body size, disability, ethnicity, gender identity and\nexpression, level of experience, education, socio-economic status,\nnationality, personal appearance, race, religion, or sexual identity and\norientation.\n\nOur Standards\n-------------\n\nExamples of behavior that contributes to creating a positive environment\ninclude:\n\n- Using welcoming and inclusive language\n- Being respectful of differing viewpoints and experiences\n- Gracefully accepting constructive criticism\n- Focusing on what is best for the community\n- Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n- The use of sexualized language or imagery and unwelcome sexual\n attention or advances\n- Trolling, insulting/derogatory comments, and personal or political\n attacks\n- Public or private harassment\n- Publishing others\u2019 private information, such as a physical or\n electronic address, without explicit permission\n- Other conduct which could reasonably be considered inappropriate in a\n professional setting\n\nOur Responsibilities\n--------------------\n\nProject maintainers are responsible for clarifying the standards of\nacceptable behavior and are expected to take appropriate and fair\ncorrective action in response to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit,\nor reject comments, commits, code, wiki edits, issues, and other\ncontributions that are not aligned to this Code of Conduct, or to ban\ntemporarily or permanently any contributor for other behaviors that they\ndeem inappropriate, threatening, offensive, or harmful.\n\nScope\n-----\n\nThis Code of Conduct applies both within project spaces and in public\nspaces when an individual is representing the project or its community.\nExamples of representing a project or community include using an\nofficial project e-mail address, posting via an official social media\naccount, or acting as an appointed representative at an online or\noffline event. Representation of a project may be further defined and\nclarified by project maintainers.\n\nEnforcement\n-----------\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may\nbe reported by contacting the project team at pombredanne@gmail.com\nor on the Gitter chat channel at https://gitter.im/aboutcode-org/discuss .\nAll complaints will be reviewed and investigated and will result in a\nresponse that is deemed necessary and appropriate to the circumstances.\nThe project team is obligated to maintain confidentiality with regard to\nthe reporter of an incident. Further details of specific enforcement\npolicies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in\ngood faith may face temporary or permanent repercussions as determined\nby other members of the project\u2019s leadership.\n\nAttribution\n-----------\n\nThis Code of Conduct is adapted from the `Contributor Covenant`_ ,\nversion 1.4, available at\nhttps://www.contributor-covenant.org/version/1/4/code-of-conduct.html\n\n.. _Contributor Covenant: https://www.contributor-covenant.org\n", - "contentType": "text/prs.fallenstein.rst" + "content": "Q29udHJpYnV0b3IgQ292ZW5hbnQgQ29kZSBvZiBDb25kdWN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKT3VyIFBsZWRnZQotLS0tLS0tLS0tCgpJbiB0aGUgaW50ZXJlc3Qgb2YgZm9zdGVyaW5nIGFuIG9wZW4gYW5kIHdlbGNvbWluZyBlbnZpcm9ubWVudCwgd2UgYXMKY29udHJpYnV0b3JzIGFuZCBtYWludGFpbmVycyBwbGVkZ2UgdG8gbWFraW5nIHBhcnRpY2lwYXRpb24gaW4gb3VyCnByb2plY3QgYW5kIG91ciBjb21tdW5pdHkgYSBoYXJhc3NtZW50LWZyZWUgZXhwZXJpZW5jZSBmb3IgZXZlcnlvbmUsCnJlZ2FyZGxlc3Mgb2YgYWdlLCBib2R5IHNpemUsIGRpc2FiaWxpdHksIGV0aG5pY2l0eSwgZ2VuZGVyIGlkZW50aXR5IGFuZApleHByZXNzaW9uLCBsZXZlbCBvZiBleHBlcmllbmNlLCBlZHVjYXRpb24sIHNvY2lvLWVjb25vbWljIHN0YXR1cywKbmF0aW9uYWxpdHksIHBlcnNvbmFsIGFwcGVhcmFuY2UsIHJhY2UsIHJlbGlnaW9uLCBvciBzZXh1YWwgaWRlbnRpdHkgYW5kCm9yaWVudGF0aW9uLgoKT3VyIFN0YW5kYXJkcwotLS0tLS0tLS0tLS0tCgpFeGFtcGxlcyBvZiBiZWhhdmlvciB0aGF0IGNvbnRyaWJ1dGVzIHRvIGNyZWF0aW5nIGEgcG9zaXRpdmUgZW52aXJvbm1lbnQKaW5jbHVkZToKCi0gIFVzaW5nIHdlbGNvbWluZyBhbmQgaW5jbHVzaXZlIGxhbmd1YWdlCi0gIEJlaW5nIHJlc3BlY3RmdWwgb2YgZGlmZmVyaW5nIHZpZXdwb2ludHMgYW5kIGV4cGVyaWVuY2VzCi0gIEdyYWNlZnVsbHkgYWNjZXB0aW5nIGNvbnN0cnVjdGl2ZSBjcml0aWNpc20KLSAgRm9jdXNpbmcgb24gd2hhdCBpcyBiZXN0IGZvciB0aGUgY29tbXVuaXR5Ci0gIFNob3dpbmcgZW1wYXRoeSB0b3dhcmRzIG90aGVyIGNvbW11bml0eSBtZW1iZXJzCgpFeGFtcGxlcyBvZiB1bmFjY2VwdGFibGUgYmVoYXZpb3IgYnkgcGFydGljaXBhbnRzIGluY2x1ZGU6CgotICBUaGUgdXNlIG9mIHNleHVhbGl6ZWQgbGFuZ3VhZ2Ugb3IgaW1hZ2VyeSBhbmQgdW53ZWxjb21lIHNleHVhbAogICBhdHRlbnRpb24gb3IgYWR2YW5jZXMKLSAgVHJvbGxpbmcsIGluc3VsdGluZy9kZXJvZ2F0b3J5IGNvbW1lbnRzLCBhbmQgcGVyc29uYWwgb3IgcG9saXRpY2FsCiAgIGF0dGFja3MKLSAgUHVibGljIG9yIHByaXZhdGUgaGFyYXNzbWVudAotICBQdWJsaXNoaW5nIG90aGVyc+KAmSBwcml2YXRlIGluZm9ybWF0aW9uLCBzdWNoIGFzIGEgcGh5c2ljYWwgb3IKICAgZWxlY3Ryb25pYyBhZGRyZXNzLCB3aXRob3V0IGV4cGxpY2l0IHBlcm1pc3Npb24KLSAgT3RoZXIgY29uZHVjdCB3aGljaCBjb3VsZCByZWFzb25hYmx5IGJlIGNvbnNpZGVyZWQgaW5hcHByb3ByaWF0ZSBpbiBhCiAgIHByb2Zlc3Npb25hbCBzZXR0aW5nCgpPdXIgUmVzcG9uc2liaWxpdGllcwotLS0tLS0tLS0tLS0tLS0tLS0tLQoKUHJvamVjdCBtYWludGFpbmVycyBhcmUgcmVzcG9uc2libGUgZm9yIGNsYXJpZnlpbmcgdGhlIHN0YW5kYXJkcyBvZgphY2NlcHRhYmxlIGJlaGF2aW9yIGFuZCBhcmUgZXhwZWN0ZWQgdG8gdGFrZSBhcHByb3ByaWF0ZSBhbmQgZmFpcgpjb3JyZWN0aXZlIGFjdGlvbiBpbiByZXNwb25zZSB0byBhbnkgaW5zdGFuY2VzIG9mIHVuYWNjZXB0YWJsZSBiZWhhdmlvci4KClByb2plY3QgbWFpbnRhaW5lcnMgaGF2ZSB0aGUgcmlnaHQgYW5kIHJlc3BvbnNpYmlsaXR5IHRvIHJlbW92ZSwgZWRpdCwKb3IgcmVqZWN0IGNvbW1lbnRzLCBjb21taXRzLCBjb2RlLCB3aWtpIGVkaXRzLCBpc3N1ZXMsIGFuZCBvdGhlcgpjb250cmlidXRpb25zIHRoYXQgYXJlIG5vdCBhbGlnbmVkIHRvIHRoaXMgQ29kZSBvZiBDb25kdWN0LCBvciB0byBiYW4KdGVtcG9yYXJpbHkgb3IgcGVybWFuZW50bHkgYW55IGNvbnRyaWJ1dG9yIGZvciBvdGhlciBiZWhhdmlvcnMgdGhhdCB0aGV5CmRlZW0gaW5hcHByb3ByaWF0ZSwgdGhyZWF0ZW5pbmcsIG9mZmVuc2l2ZSwgb3IgaGFybWZ1bC4KClNjb3BlCi0tLS0tCgpUaGlzIENvZGUgb2YgQ29uZHVjdCBhcHBsaWVzIGJvdGggd2l0aGluIHByb2plY3Qgc3BhY2VzIGFuZCBpbiBwdWJsaWMKc3BhY2VzIHdoZW4gYW4gaW5kaXZpZHVhbCBpcyByZXByZXNlbnRpbmcgdGhlIHByb2plY3Qgb3IgaXRzIGNvbW11bml0eS4KRXhhbXBsZXMgb2YgcmVwcmVzZW50aW5nIGEgcHJvamVjdCBvciBjb21tdW5pdHkgaW5jbHVkZSB1c2luZyBhbgpvZmZpY2lhbCBwcm9qZWN0IGUtbWFpbCBhZGRyZXNzLCBwb3N0aW5nIHZpYSBhbiBvZmZpY2lhbCBzb2NpYWwgbWVkaWEKYWNjb3VudCwgb3IgYWN0aW5nIGFzIGFuIGFwcG9pbnRlZCByZXByZXNlbnRhdGl2ZSBhdCBhbiBvbmxpbmUgb3IKb2ZmbGluZSBldmVudC4gUmVwcmVzZW50YXRpb24gb2YgYSBwcm9qZWN0IG1heSBiZSBmdXJ0aGVyIGRlZmluZWQgYW5kCmNsYXJpZmllZCBieSBwcm9qZWN0IG1haW50YWluZXJzLgoKRW5mb3JjZW1lbnQKLS0tLS0tLS0tLS0KCkluc3RhbmNlcyBvZiBhYnVzaXZlLCBoYXJhc3NpbmcsIG9yIG90aGVyd2lzZSB1bmFjY2VwdGFibGUgYmVoYXZpb3IgbWF5CmJlIHJlcG9ydGVkIGJ5IGNvbnRhY3RpbmcgdGhlIHByb2plY3QgdGVhbSBhdCBwb21icmVkYW5uZUBnbWFpbC5jb20Kb3Igb24gdGhlIEdpdHRlciBjaGF0IGNoYW5uZWwgYXQgaHR0cHM6Ly9naXR0ZXIuaW0vYWJvdXRjb2RlLW9yZy9kaXNjdXNzIC4KQWxsIGNvbXBsYWludHMgd2lsbCBiZSByZXZpZXdlZCBhbmQgaW52ZXN0aWdhdGVkIGFuZCB3aWxsIHJlc3VsdCBpbiBhCnJlc3BvbnNlIHRoYXQgaXMgZGVlbWVkIG5lY2Vzc2FyeSBhbmQgYXBwcm9wcmlhdGUgdG8gdGhlIGNpcmN1bXN0YW5jZXMuClRoZSBwcm9qZWN0IHRlYW0gaXMgb2JsaWdhdGVkIHRvIG1haW50YWluIGNvbmZpZGVudGlhbGl0eSB3aXRoIHJlZ2FyZCB0bwp0aGUgcmVwb3J0ZXIgb2YgYW4gaW5jaWRlbnQuIEZ1cnRoZXIgZGV0YWlscyBvZiBzcGVjaWZpYyBlbmZvcmNlbWVudApwb2xpY2llcyBtYXkgYmUgcG9zdGVkIHNlcGFyYXRlbHkuCgpQcm9qZWN0IG1haW50YWluZXJzIHdobyBkbyBub3QgZm9sbG93IG9yIGVuZm9yY2UgdGhlIENvZGUgb2YgQ29uZHVjdCBpbgpnb29kIGZhaXRoIG1heSBmYWNlIHRlbXBvcmFyeSBvciBwZXJtYW5lbnQgcmVwZXJjdXNzaW9ucyBhcyBkZXRlcm1pbmVkCmJ5IG90aGVyIG1lbWJlcnMgb2YgdGhlIHByb2plY3TigJlzIGxlYWRlcnNoaXAuCgpBdHRyaWJ1dGlvbgotLS0tLS0tLS0tLQoKVGhpcyBDb2RlIG9mIENvbmR1Y3QgaXMgYWRhcHRlZCBmcm9tIHRoZSBgQ29udHJpYnV0b3IgQ292ZW5hbnRgXyAsCnZlcnNpb24gMS40LCBhdmFpbGFibGUgYXQKaHR0cHM6Ly93d3cuY29udHJpYnV0b3ItY292ZW5hbnQub3JnL3ZlcnNpb24vMS80L2NvZGUtb2YtY29uZHVjdC5odG1sCgouLiBfQ29udHJpYnV0b3IgQ292ZW5hbnQ6IGh0dHBzOi8vd3d3LmNvbnRyaWJ1dG9yLWNvdmVuYW50Lm9yZwo=", + "contentType": "text/prs.fallenstein.rst", + "encoding": "base64" } } }, @@ -332,8 +305,9 @@ "license": { "name": "declared license file: NOTICE", "text": { - "content": "#\n# Copyright (c) nexB Inc. and others.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Visit https://aboutcode.org and https://github.com/nexB/license-expression\n# for support and download.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\n", - "contentType": "text/plain" + "content": "IwojIENvcHlyaWdodCAoYykgbmV4QiBJbmMuIGFuZCBvdGhlcnMuCiMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKIwojIFZpc2l0IGh0dHBzOi8vYWJvdXRjb2RlLm9yZyBhbmQgaHR0cHM6Ly9naXRodWIuY29tL25leEIvbGljZW5zZS1leHByZXNzaW9uCiMgZm9yIHN1cHBvcnQgYW5kIGRvd25sb2FkLgojCiMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgojIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAojCiMgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgojCg==", + "contentType": "text/plain", + "encoding": "base64" } } }, @@ -341,8 +315,9 @@ "license": { "name": "declared license file: apache-2.0.LICENSE", "text": { - "content": " Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", - "contentType": "text/plain" + "content": "ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBhY2hlIExpY2Vuc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAyLjAsIEphbnVhcnkgMjAwNAogICAgICAgICAgICAgICAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvCgogICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgVVNFLCBSRVBST0RVQ1RJT04sIEFORCBESVNUUklCVVRJT04KCiAgIDEuIERlZmluaXRpb25zLgoKICAgICAgIkxpY2Vuc2UiIHNoYWxsIG1lYW4gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciB1c2UsIHJlcHJvZHVjdGlvbiwKICAgICAgYW5kIGRpc3RyaWJ1dGlvbiBhcyBkZWZpbmVkIGJ5IFNlY3Rpb25zIDEgdGhyb3VnaCA5IG9mIHRoaXMgZG9jdW1lbnQuCgogICAgICAiTGljZW5zb3IiIHNoYWxsIG1lYW4gdGhlIGNvcHlyaWdodCBvd25lciBvciBlbnRpdHkgYXV0aG9yaXplZCBieQogICAgICB0aGUgY29weXJpZ2h0IG93bmVyIHRoYXQgaXMgZ3JhbnRpbmcgdGhlIExpY2Vuc2UuCgogICAgICAiTGVnYWwgRW50aXR5IiBzaGFsbCBtZWFuIHRoZSB1bmlvbiBvZiB0aGUgYWN0aW5nIGVudGl0eSBhbmQgYWxsCiAgICAgIG90aGVyIGVudGl0aWVzIHRoYXQgY29udHJvbCwgYXJlIGNvbnRyb2xsZWQgYnksIG9yIGFyZSB1bmRlciBjb21tb24KICAgICAgY29udHJvbCB3aXRoIHRoYXQgZW50aXR5LiBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwKICAgICAgImNvbnRyb2wiIG1lYW5zIChpKSB0aGUgcG93ZXIsIGRpcmVjdCBvciBpbmRpcmVjdCwgdG8gY2F1c2UgdGhlCiAgICAgIGRpcmVjdGlvbiBvciBtYW5hZ2VtZW50IG9mIHN1Y2ggZW50aXR5LCB3aGV0aGVyIGJ5IGNvbnRyYWN0IG9yCiAgICAgIG90aGVyd2lzZSwgb3IgKGlpKSBvd25lcnNoaXAgb2YgZmlmdHkgcGVyY2VudCAoNTAlKSBvciBtb3JlIG9mIHRoZQogICAgICBvdXRzdGFuZGluZyBzaGFyZXMsIG9yIChpaWkpIGJlbmVmaWNpYWwgb3duZXJzaGlwIG9mIHN1Y2ggZW50aXR5LgoKICAgICAgIllvdSIgKG9yICJZb3VyIikgc2hhbGwgbWVhbiBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eQogICAgICBleGVyY2lzaW5nIHBlcm1pc3Npb25zIGdyYW50ZWQgYnkgdGhpcyBMaWNlbnNlLgoKICAgICAgIlNvdXJjZSIgZm9ybSBzaGFsbCBtZWFuIHRoZSBwcmVmZXJyZWQgZm9ybSBmb3IgbWFraW5nIG1vZGlmaWNhdGlvbnMsCiAgICAgIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gc29mdHdhcmUgc291cmNlIGNvZGUsIGRvY3VtZW50YXRpb24KICAgICAgc291cmNlLCBhbmQgY29uZmlndXJhdGlvbiBmaWxlcy4KCiAgICAgICJPYmplY3QiIGZvcm0gc2hhbGwgbWVhbiBhbnkgZm9ybSByZXN1bHRpbmcgZnJvbSBtZWNoYW5pY2FsCiAgICAgIHRyYW5zZm9ybWF0aW9uIG9yIHRyYW5zbGF0aW9uIG9mIGEgU291cmNlIGZvcm0sIGluY2x1ZGluZyBidXQKICAgICAgbm90IGxpbWl0ZWQgdG8gY29tcGlsZWQgb2JqZWN0IGNvZGUsIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uLAogICAgICBhbmQgY29udmVyc2lvbnMgdG8gb3RoZXIgbWVkaWEgdHlwZXMuCgogICAgICAiV29yayIgc2hhbGwgbWVhbiB0aGUgd29yayBvZiBhdXRob3JzaGlwLCB3aGV0aGVyIGluIFNvdXJjZSBvcgogICAgICBPYmplY3QgZm9ybSwgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIExpY2Vuc2UsIGFzIGluZGljYXRlZCBieSBhCiAgICAgIGNvcHlyaWdodCBub3RpY2UgdGhhdCBpcyBpbmNsdWRlZCBpbiBvciBhdHRhY2hlZCB0byB0aGUgd29yawogICAgICAoYW4gZXhhbXBsZSBpcyBwcm92aWRlZCBpbiB0aGUgQXBwZW5kaXggYmVsb3cpLgoKICAgICAgIkRlcml2YXRpdmUgV29ya3MiIHNoYWxsIG1lYW4gYW55IHdvcmssIHdoZXRoZXIgaW4gU291cmNlIG9yIE9iamVjdAogICAgICBmb3JtLCB0aGF0IGlzIGJhc2VkIG9uIChvciBkZXJpdmVkIGZyb20pIHRoZSBXb3JrIGFuZCBmb3Igd2hpY2ggdGhlCiAgICAgIGVkaXRvcmlhbCByZXZpc2lvbnMsIGFubm90YXRpb25zLCBlbGFib3JhdGlvbnMsIG9yIG90aGVyIG1vZGlmaWNhdGlvbnMKICAgICAgcmVwcmVzZW50LCBhcyBhIHdob2xlLCBhbiBvcmlnaW5hbCB3b3JrIG9mIGF1dGhvcnNoaXAuIEZvciB0aGUgcHVycG9zZXMKICAgICAgb2YgdGhpcyBMaWNlbnNlLCBEZXJpdmF0aXZlIFdvcmtzIHNoYWxsIG5vdCBpbmNsdWRlIHdvcmtzIHRoYXQgcmVtYWluCiAgICAgIHNlcGFyYWJsZSBmcm9tLCBvciBtZXJlbHkgbGluayAob3IgYmluZCBieSBuYW1lKSB0byB0aGUgaW50ZXJmYWNlcyBvZiwKICAgICAgdGhlIFdvcmsgYW5kIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZi4KCiAgICAgICJDb250cmlidXRpb24iIHNoYWxsIG1lYW4gYW55IHdvcmsgb2YgYXV0aG9yc2hpcCwgaW5jbHVkaW5nCiAgICAgIHRoZSBvcmlnaW5hbCB2ZXJzaW9uIG9mIHRoZSBXb3JrIGFuZCBhbnkgbW9kaWZpY2F0aW9ucyBvciBhZGRpdGlvbnMKICAgICAgdG8gdGhhdCBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgdGhhdCBpcyBpbnRlbnRpb25hbGx5CiAgICAgIHN1Ym1pdHRlZCB0byBMaWNlbnNvciBmb3IgaW5jbHVzaW9uIGluIHRoZSBXb3JrIGJ5IHRoZSBjb3B5cmlnaHQgb3duZXIKICAgICAgb3IgYnkgYW4gaW5kaXZpZHVhbCBvciBMZWdhbCBFbnRpdHkgYXV0aG9yaXplZCB0byBzdWJtaXQgb24gYmVoYWxmIG9mCiAgICAgIHRoZSBjb3B5cmlnaHQgb3duZXIuIEZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAic3VibWl0dGVkIgogICAgICBtZWFucyBhbnkgZm9ybSBvZiBlbGVjdHJvbmljLCB2ZXJiYWwsIG9yIHdyaXR0ZW4gY29tbXVuaWNhdGlvbiBzZW50CiAgICAgIHRvIHRoZSBMaWNlbnNvciBvciBpdHMgcmVwcmVzZW50YXRpdmVzLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvCiAgICAgIGNvbW11bmljYXRpb24gb24gZWxlY3Ryb25pYyBtYWlsaW5nIGxpc3RzLCBzb3VyY2UgY29kZSBjb250cm9sIHN5c3RlbXMsCiAgICAgIGFuZCBpc3N1ZSB0cmFja2luZyBzeXN0ZW1zIHRoYXQgYXJlIG1hbmFnZWQgYnksIG9yIG9uIGJlaGFsZiBvZiwgdGhlCiAgICAgIExpY2Vuc29yIGZvciB0aGUgcHVycG9zZSBvZiBkaXNjdXNzaW5nIGFuZCBpbXByb3ZpbmcgdGhlIFdvcmssIGJ1dAogICAgICBleGNsdWRpbmcgY29tbXVuaWNhdGlvbiB0aGF0IGlzIGNvbnNwaWN1b3VzbHkgbWFya2VkIG9yIG90aGVyd2lzZQogICAgICBkZXNpZ25hdGVkIGluIHdyaXRpbmcgYnkgdGhlIGNvcHlyaWdodCBvd25lciBhcyAiTm90IGEgQ29udHJpYnV0aW9uLiIKCiAgICAgICJDb250cmlidXRvciIgc2hhbGwgbWVhbiBMaWNlbnNvciBhbmQgYW55IGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5CiAgICAgIG9uIGJlaGFsZiBvZiB3aG9tIGEgQ29udHJpYnV0aW9uIGhhcyBiZWVuIHJlY2VpdmVkIGJ5IExpY2Vuc29yIGFuZAogICAgICBzdWJzZXF1ZW50bHkgaW5jb3Jwb3JhdGVkIHdpdGhpbiB0aGUgV29yay4KCiAgIDIuIEdyYW50IG9mIENvcHlyaWdodCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCiAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCiAgICAgIGNvcHlyaWdodCBsaWNlbnNlIHRvIHJlcHJvZHVjZSwgcHJlcGFyZSBEZXJpdmF0aXZlIFdvcmtzIG9mLAogICAgICBwdWJsaWNseSBkaXNwbGF5LCBwdWJsaWNseSBwZXJmb3JtLCBzdWJsaWNlbnNlLCBhbmQgZGlzdHJpYnV0ZSB0aGUKICAgICAgV29yayBhbmQgc3VjaCBEZXJpdmF0aXZlIFdvcmtzIGluIFNvdXJjZSBvciBPYmplY3QgZm9ybS4KCiAgIDMuIEdyYW50IG9mIFBhdGVudCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCiAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCiAgICAgIChleGNlcHQgYXMgc3RhdGVkIGluIHRoaXMgc2VjdGlvbikgcGF0ZW50IGxpY2Vuc2UgdG8gbWFrZSwgaGF2ZSBtYWRlLAogICAgICB1c2UsIG9mZmVyIHRvIHNlbGwsIHNlbGwsIGltcG9ydCwgYW5kIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgV29yaywKICAgICAgd2hlcmUgc3VjaCBsaWNlbnNlIGFwcGxpZXMgb25seSB0byB0aG9zZSBwYXRlbnQgY2xhaW1zIGxpY2Vuc2FibGUKICAgICAgYnkgc3VjaCBDb250cmlidXRvciB0aGF0IGFyZSBuZWNlc3NhcmlseSBpbmZyaW5nZWQgYnkgdGhlaXIKICAgICAgQ29udHJpYnV0aW9uKHMpIGFsb25lIG9yIGJ5IGNvbWJpbmF0aW9uIG9mIHRoZWlyIENvbnRyaWJ1dGlvbihzKQogICAgICB3aXRoIHRoZSBXb3JrIHRvIHdoaWNoIHN1Y2ggQ29udHJpYnV0aW9uKHMpIHdhcyBzdWJtaXR0ZWQuIElmIFlvdQogICAgICBpbnN0aXR1dGUgcGF0ZW50IGxpdGlnYXRpb24gYWdhaW5zdCBhbnkgZW50aXR5IChpbmNsdWRpbmcgYQogICAgICBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0IHRoZSBXb3JrCiAgICAgIG9yIGEgQ29udHJpYnV0aW9uIGluY29ycG9yYXRlZCB3aXRoaW4gdGhlIFdvcmsgY29uc3RpdHV0ZXMgZGlyZWN0CiAgICAgIG9yIGNvbnRyaWJ1dG9yeSBwYXRlbnQgaW5mcmluZ2VtZW50LCB0aGVuIGFueSBwYXRlbnQgbGljZW5zZXMKICAgICAgZ3JhbnRlZCB0byBZb3UgdW5kZXIgdGhpcyBMaWNlbnNlIGZvciB0aGF0IFdvcmsgc2hhbGwgdGVybWluYXRlCiAgICAgIGFzIG9mIHRoZSBkYXRlIHN1Y2ggbGl0aWdhdGlvbiBpcyBmaWxlZC4KCiAgIDQuIFJlZGlzdHJpYnV0aW9uLiBZb3UgbWF5IHJlcHJvZHVjZSBhbmQgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlCiAgICAgIFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mIGluIGFueSBtZWRpdW0sIHdpdGggb3Igd2l0aG91dAogICAgICBtb2RpZmljYXRpb25zLCBhbmQgaW4gU291cmNlIG9yIE9iamVjdCBmb3JtLCBwcm92aWRlZCB0aGF0IFlvdQogICAgICBtZWV0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKCiAgICAgIChhKSBZb3UgbXVzdCBnaXZlIGFueSBvdGhlciByZWNpcGllbnRzIG9mIHRoZSBXb3JrIG9yCiAgICAgICAgICBEZXJpdmF0aXZlIFdvcmtzIGEgY29weSBvZiB0aGlzIExpY2Vuc2U7IGFuZAoKICAgICAgKGIpIFlvdSBtdXN0IGNhdXNlIGFueSBtb2RpZmllZCBmaWxlcyB0byBjYXJyeSBwcm9taW5lbnQgbm90aWNlcwogICAgICAgICAgc3RhdGluZyB0aGF0IFlvdSBjaGFuZ2VkIHRoZSBmaWxlczsgYW5kCgogICAgICAoYykgWW91IG11c3QgcmV0YWluLCBpbiB0aGUgU291cmNlIGZvcm0gb2YgYW55IERlcml2YXRpdmUgV29ya3MKICAgICAgICAgIHRoYXQgWW91IGRpc3RyaWJ1dGUsIGFsbCBjb3B5cmlnaHQsIHBhdGVudCwgdHJhZGVtYXJrLCBhbmQKICAgICAgICAgIGF0dHJpYnV0aW9uIG5vdGljZXMgZnJvbSB0aGUgU291cmNlIGZvcm0gb2YgdGhlIFdvcmssCiAgICAgICAgICBleGNsdWRpbmcgdGhvc2Ugbm90aWNlcyB0aGF0IGRvIG5vdCBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mCiAgICAgICAgICB0aGUgRGVyaXZhdGl2ZSBXb3JrczsgYW5kCgogICAgICAoZCkgSWYgdGhlIFdvcmsgaW5jbHVkZXMgYSAiTk9USUNFIiB0ZXh0IGZpbGUgYXMgcGFydCBvZiBpdHMKICAgICAgICAgIGRpc3RyaWJ1dGlvbiwgdGhlbiBhbnkgRGVyaXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlIG11c3QKICAgICAgICAgIGluY2x1ZGUgYSByZWFkYWJsZSBjb3B5IG9mIHRoZSBhdHRyaWJ1dGlvbiBub3RpY2VzIGNvbnRhaW5lZAogICAgICAgICAgd2l0aGluIHN1Y2ggTk9USUNFIGZpbGUsIGV4Y2x1ZGluZyB0aG9zZSBub3RpY2VzIHRoYXQgZG8gbm90CiAgICAgICAgICBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpbiBhdCBsZWFzdCBvbmUKICAgICAgICAgIG9mIHRoZSBmb2xsb3dpbmcgcGxhY2VzOiB3aXRoaW4gYSBOT1RJQ0UgdGV4dCBmaWxlIGRpc3RyaWJ1dGVkCiAgICAgICAgICBhcyBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyB3aXRoaW4gdGhlIFNvdXJjZSBmb3JtIG9yCiAgICAgICAgICBkb2N1bWVudGF0aW9uLCBpZiBwcm92aWRlZCBhbG9uZyB3aXRoIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyBvciwKICAgICAgICAgIHdpdGhpbiBhIGRpc3BsYXkgZ2VuZXJhdGVkIGJ5IHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpZiBhbmQKICAgICAgICAgIHdoZXJldmVyIHN1Y2ggdGhpcmQtcGFydHkgbm90aWNlcyBub3JtYWxseSBhcHBlYXIuIFRoZSBjb250ZW50cwogICAgICAgICAgb2YgdGhlIE5PVElDRSBmaWxlIGFyZSBmb3IgaW5mb3JtYXRpb25hbCBwdXJwb3NlcyBvbmx5IGFuZAogICAgICAgICAgZG8gbm90IG1vZGlmeSB0aGUgTGljZW5zZS4gWW91IG1heSBhZGQgWW91ciBvd24gYXR0cmlidXRpb24KICAgICAgICAgIG5vdGljZXMgd2l0aGluIERlcml2YXRpdmUgV29ya3MgdGhhdCBZb3UgZGlzdHJpYnV0ZSwgYWxvbmdzaWRlCiAgICAgICAgICBvciBhcyBhbiBhZGRlbmR1bSB0byB0aGUgTk9USUNFIHRleHQgZnJvbSB0aGUgV29yaywgcHJvdmlkZWQKICAgICAgICAgIHRoYXQgc3VjaCBhZGRpdGlvbmFsIGF0dHJpYnV0aW9uIG5vdGljZXMgY2Fubm90IGJlIGNvbnN0cnVlZAogICAgICAgICAgYXMgbW9kaWZ5aW5nIHRoZSBMaWNlbnNlLgoKICAgICAgWW91IG1heSBhZGQgWW91ciBvd24gY29weXJpZ2h0IHN0YXRlbWVudCB0byBZb3VyIG1vZGlmaWNhdGlvbnMgYW5kCiAgICAgIG1heSBwcm92aWRlIGFkZGl0aW9uYWwgb3IgZGlmZmVyZW50IGxpY2Vuc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMKICAgICAgZm9yIHVzZSwgcmVwcm9kdWN0aW9uLCBvciBkaXN0cmlidXRpb24gb2YgWW91ciBtb2RpZmljYXRpb25zLCBvcgogICAgICBmb3IgYW55IHN1Y2ggRGVyaXZhdGl2ZSBXb3JrcyBhcyBhIHdob2xlLCBwcm92aWRlZCBZb3VyIHVzZSwKICAgICAgcmVwcm9kdWN0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoZSBXb3JrIG90aGVyd2lzZSBjb21wbGllcyB3aXRoCiAgICAgIHRoZSBjb25kaXRpb25zIHN0YXRlZCBpbiB0aGlzIExpY2Vuc2UuCgogICA1LiBTdWJtaXNzaW9uIG9mIENvbnRyaWJ1dGlvbnMuIFVubGVzcyBZb3UgZXhwbGljaXRseSBzdGF0ZSBvdGhlcndpc2UsCiAgICAgIGFueSBDb250cmlidXRpb24gaW50ZW50aW9uYWxseSBzdWJtaXR0ZWQgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yawogICAgICBieSBZb3UgdG8gdGhlIExpY2Vuc29yIHNoYWxsIGJlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICB0aGlzIExpY2Vuc2UsIHdpdGhvdXQgYW55IGFkZGl0aW9uYWwgdGVybXMgb3IgY29uZGl0aW9ucy4KICAgICAgTm90d2l0aHN0YW5kaW5nIHRoZSBhYm92ZSwgbm90aGluZyBoZXJlaW4gc2hhbGwgc3VwZXJzZWRlIG9yIG1vZGlmeQogICAgICB0aGUgdGVybXMgb2YgYW55IHNlcGFyYXRlIGxpY2Vuc2UgYWdyZWVtZW50IHlvdSBtYXkgaGF2ZSBleGVjdXRlZAogICAgICB3aXRoIExpY2Vuc29yIHJlZ2FyZGluZyBzdWNoIENvbnRyaWJ1dGlvbnMuCgogICA2LiBUcmFkZW1hcmtzLiBUaGlzIExpY2Vuc2UgZG9lcyBub3QgZ3JhbnQgcGVybWlzc2lvbiB0byB1c2UgdGhlIHRyYWRlCiAgICAgIG5hbWVzLCB0cmFkZW1hcmtzLCBzZXJ2aWNlIG1hcmtzLCBvciBwcm9kdWN0IG5hbWVzIG9mIHRoZSBMaWNlbnNvciwKICAgICAgZXhjZXB0IGFzIHJlcXVpcmVkIGZvciByZWFzb25hYmxlIGFuZCBjdXN0b21hcnkgdXNlIGluIGRlc2NyaWJpbmcgdGhlCiAgICAgIG9yaWdpbiBvZiB0aGUgV29yayBhbmQgcmVwcm9kdWNpbmcgdGhlIGNvbnRlbnQgb2YgdGhlIE5PVElDRSBmaWxlLgoKICAgNy4gRGlzY2xhaW1lciBvZiBXYXJyYW50eS4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yCiAgICAgIGFncmVlZCB0byBpbiB3cml0aW5nLCBMaWNlbnNvciBwcm92aWRlcyB0aGUgV29yayAoYW5kIGVhY2gKICAgICAgQ29udHJpYnV0b3IgcHJvdmlkZXMgaXRzIENvbnRyaWJ1dGlvbnMpIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgogICAgICBpbXBsaWVkLCBpbmNsdWRpbmcsIHdpdGhvdXQgbGltaXRhdGlvbiwgYW55IHdhcnJhbnRpZXMgb3IgY29uZGl0aW9ucwogICAgICBvZiBUSVRMRSwgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZLCBvciBGSVRORVNTIEZPUiBBCiAgICAgIFBBUlRJQ1VMQVIgUFVSUE9TRS4gWW91IGFyZSBzb2xlbHkgcmVzcG9uc2libGUgZm9yIGRldGVybWluaW5nIHRoZQogICAgICBhcHByb3ByaWF0ZW5lc3Mgb2YgdXNpbmcgb3IgcmVkaXN0cmlidXRpbmcgdGhlIFdvcmsgYW5kIGFzc3VtZSBhbnkKICAgICAgcmlza3MgYXNzb2NpYXRlZCB3aXRoIFlvdXIgZXhlcmNpc2Ugb2YgcGVybWlzc2lvbnMgdW5kZXIgdGhpcyBMaWNlbnNlLgoKICAgOC4gTGltaXRhdGlvbiBvZiBMaWFiaWxpdHkuIEluIG5vIGV2ZW50IGFuZCB1bmRlciBubyBsZWdhbCB0aGVvcnksCiAgICAgIHdoZXRoZXIgaW4gdG9ydCAoaW5jbHVkaW5nIG5lZ2xpZ2VuY2UpLCBjb250cmFjdCwgb3Igb3RoZXJ3aXNlLAogICAgICB1bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgKHN1Y2ggYXMgZGVsaWJlcmF0ZSBhbmQgZ3Jvc3NseQogICAgICBuZWdsaWdlbnQgYWN0cykgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNoYWxsIGFueSBDb250cmlidXRvciBiZQogICAgICBsaWFibGUgdG8gWW91IGZvciBkYW1hZ2VzLCBpbmNsdWRpbmcgYW55IGRpcmVjdCwgaW5kaXJlY3QsIHNwZWNpYWwsCiAgICAgIGluY2lkZW50YWwsIG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvZiBhbnkgY2hhcmFjdGVyIGFyaXNpbmcgYXMgYQogICAgICByZXN1bHQgb2YgdGhpcyBMaWNlbnNlIG9yIG91dCBvZiB0aGUgdXNlIG9yIGluYWJpbGl0eSB0byB1c2UgdGhlCiAgICAgIFdvcmsgKGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gZGFtYWdlcyBmb3IgbG9zcyBvZiBnb29kd2lsbCwKICAgICAgd29yayBzdG9wcGFnZSwgY29tcHV0ZXIgZmFpbHVyZSBvciBtYWxmdW5jdGlvbiwgb3IgYW55IGFuZCBhbGwKICAgICAgb3RoZXIgY29tbWVyY2lhbCBkYW1hZ2VzIG9yIGxvc3NlcyksIGV2ZW4gaWYgc3VjaCBDb250cmlidXRvcgogICAgICBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiBzdWNoIGRhbWFnZXMuCgogICA5LiBBY2NlcHRpbmcgV2FycmFudHkgb3IgQWRkaXRpb25hbCBMaWFiaWxpdHkuIFdoaWxlIHJlZGlzdHJpYnV0aW5nCiAgICAgIHRoZSBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgWW91IG1heSBjaG9vc2UgdG8gb2ZmZXIsCiAgICAgIGFuZCBjaGFyZ2UgYSBmZWUgZm9yLCBhY2NlcHRhbmNlIG9mIHN1cHBvcnQsIHdhcnJhbnR5LCBpbmRlbW5pdHksCiAgICAgIG9yIG90aGVyIGxpYWJpbGl0eSBvYmxpZ2F0aW9ucyBhbmQvb3IgcmlnaHRzIGNvbnNpc3RlbnQgd2l0aCB0aGlzCiAgICAgIExpY2Vuc2UuIEhvd2V2ZXIsIGluIGFjY2VwdGluZyBzdWNoIG9ibGlnYXRpb25zLCBZb3UgbWF5IGFjdCBvbmx5CiAgICAgIG9uIFlvdXIgb3duIGJlaGFsZiBhbmQgb24gWW91ciBzb2xlIHJlc3BvbnNpYmlsaXR5LCBub3Qgb24gYmVoYWxmCiAgICAgIG9mIGFueSBvdGhlciBDb250cmlidXRvciwgYW5kIG9ubHkgaWYgWW91IGFncmVlIHRvIGluZGVtbmlmeSwKICAgICAgZGVmZW5kLCBhbmQgaG9sZCBlYWNoIENvbnRyaWJ1dG9yIGhhcm1sZXNzIGZvciBhbnkgbGlhYmlsaXR5CiAgICAgIGluY3VycmVkIGJ5LCBvciBjbGFpbXMgYXNzZXJ0ZWQgYWdhaW5zdCwgc3VjaCBDb250cmlidXRvciBieSByZWFzb24KICAgICAgb2YgeW91ciBhY2NlcHRpbmcgYW55IHN1Y2ggd2FycmFudHkgb3IgYWRkaXRpb25hbCBsaWFiaWxpdHkuCgogICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKCiAgIEFQUEVORElYOiBIb3cgdG8gYXBwbHkgdGhlIEFwYWNoZSBMaWNlbnNlIHRvIHlvdXIgd29yay4KCiAgICAgIFRvIGFwcGx5IHRoZSBBcGFjaGUgTGljZW5zZSB0byB5b3VyIHdvcmssIGF0dGFjaCB0aGUgZm9sbG93aW5nCiAgICAgIGJvaWxlcnBsYXRlIG5vdGljZSwgd2l0aCB0aGUgZmllbGRzIGVuY2xvc2VkIGJ5IGJyYWNrZXRzICJbXSIKICAgICAgcmVwbGFjZWQgd2l0aCB5b3VyIG93biBpZGVudGlmeWluZyBpbmZvcm1hdGlvbi4gKERvbid0IGluY2x1ZGUKICAgICAgdGhlIGJyYWNrZXRzISkgIFRoZSB0ZXh0IHNob3VsZCBiZSBlbmNsb3NlZCBpbiB0aGUgYXBwcm9wcmlhdGUKICAgICAgY29tbWVudCBzeW50YXggZm9yIHRoZSBmaWxlIGZvcm1hdC4gV2UgYWxzbyByZWNvbW1lbmQgdGhhdCBhCiAgICAgIGZpbGUgb3IgY2xhc3MgbmFtZSBhbmQgZGVzY3JpcHRpb24gb2YgcHVycG9zZSBiZSBpbmNsdWRlZCBvbiB0aGUKICAgICAgc2FtZSAicHJpbnRlZCBwYWdlIiBhcyB0aGUgY29weXJpZ2h0IG5vdGljZSBmb3IgZWFzaWVyCiAgICAgIGlkZW50aWZpY2F0aW9uIHdpdGhpbiB0aGlyZC1wYXJ0eSBhcmNoaXZlcy4KCiAgIENvcHlyaWdodCBbeXl5eV0gW25hbWUgb2YgY29weXJpZ2h0IG93bmVyXQoKICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgo=", + "contentType": "text/plain", + "encoding": "base64" } } } @@ -382,8 +357,9 @@ "license": { "name": "declared license file: LICENSE.txt", "text": { - "content": "Copyright (c) 2004 Infrae. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n 1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n \n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in\n the documentation and/or other materials provided with the\n distribution.\n\n 3. Neither the name of Infrae nor the names of its contributors may\n be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INFRAE OR\nCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\nEXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\nPROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" + "content": "Q29weXJpZ2h0IChjKSAyMDA0IEluZnJhZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAgIAogIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCiAgICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQogICAgIGRpc3RyaWJ1dGlvbi4KCiAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBJbmZyYWUgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heQogICAgIGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCiAgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCgpUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCiJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgpBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgSU5GUkFFIE9SCkNPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLApFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sClBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgpQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GCkxJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCk5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwpTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K", + "contentType": "text/plain", + "encoding": "base64" } } }, @@ -391,8 +367,9 @@ "license": { "name": "declared license file: LICENSES.txt", "text": { - "content": "lxml is copyright Infrae and distributed under the BSD license (see\ndoc/licenses/BSD.txt), with the following exceptions:\n\nSome code, such a selftest.py, selftest2.py and\nsrc/lxml/_elementpath.py are derived from ElementTree and\ncElementTree. See doc/licenses/elementtree.txt for the license text.\n\nlxml.cssselect and lxml.html are copyright Ian Bicking and distributed\nunder the BSD license (see doc/licenses/BSD.txt).\n\ntest.py, the test-runner script, is GPL and copyright Shuttleworth\nFoundation. See doc/licenses/GPL.txt. It is believed the unchanged\ninclusion of test.py to run the unit test suite falls under the\n\"aggregation\" clause of the GPL and thus does not affect the license\nof the rest of the package.\n\nThe isoschematron implementation uses several XSL and RelaxNG resources:\n * The (XML syntax) RelaxNG schema for schematron, copyright International\n Organization for Standardization (see \n src/lxml/isoschematron/resources/rng/iso-schematron.rng for the license\n text)\n * The skeleton iso-schematron-xlt1 pure-xslt schematron implementation\n xsl stylesheets, copyright Rick Jelliffe and Academia Sinica Computing\n Center, Taiwan (see the xsl files here for the license text: \n src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/)\n * The xsd/rng schema schematron extraction xsl transformations are unlicensed\n and copyright the respective authors as noted (see \n src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl and\n src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl)\n", - "contentType": "text/plain" + "content": "bHhtbCBpcyBjb3B5cmlnaHQgSW5mcmFlIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgQlNEIGxpY2Vuc2UgKHNlZQpkb2MvbGljZW5zZXMvQlNELnR4dCksIHdpdGggdGhlIGZvbGxvd2luZyBleGNlcHRpb25zOgoKU29tZSBjb2RlLCBzdWNoIGEgc2VsZnRlc3QucHksIHNlbGZ0ZXN0Mi5weSBhbmQKc3JjL2x4bWwvX2VsZW1lbnRwYXRoLnB5IGFyZSBkZXJpdmVkIGZyb20gRWxlbWVudFRyZWUgYW5kCmNFbGVtZW50VHJlZS4gU2VlIGRvYy9saWNlbnNlcy9lbGVtZW50dHJlZS50eHQgZm9yIHRoZSBsaWNlbnNlIHRleHQuCgpseG1sLmNzc3NlbGVjdCBhbmQgbHhtbC5odG1sIGFyZSBjb3B5cmlnaHQgSWFuIEJpY2tpbmcgYW5kIGRpc3RyaWJ1dGVkCnVuZGVyIHRoZSBCU0QgbGljZW5zZSAoc2VlIGRvYy9saWNlbnNlcy9CU0QudHh0KS4KCnRlc3QucHksIHRoZSB0ZXN0LXJ1bm5lciBzY3JpcHQsIGlzIEdQTCBhbmQgY29weXJpZ2h0IFNodXR0bGV3b3J0aApGb3VuZGF0aW9uLiBTZWUgZG9jL2xpY2Vuc2VzL0dQTC50eHQuIEl0IGlzIGJlbGlldmVkIHRoZSB1bmNoYW5nZWQKaW5jbHVzaW9uIG9mIHRlc3QucHkgdG8gcnVuIHRoZSB1bml0IHRlc3Qgc3VpdGUgZmFsbHMgdW5kZXIgdGhlCiJhZ2dyZWdhdGlvbiIgY2xhdXNlIG9mIHRoZSBHUEwgYW5kIHRodXMgZG9lcyBub3QgYWZmZWN0IHRoZSBsaWNlbnNlCm9mIHRoZSByZXN0IG9mIHRoZSBwYWNrYWdlLgoKVGhlIGlzb3NjaGVtYXRyb24gaW1wbGVtZW50YXRpb24gdXNlcyBzZXZlcmFsIFhTTCBhbmQgUmVsYXhORyByZXNvdXJjZXM6CiAqIFRoZSAoWE1MIHN5bnRheCkgUmVsYXhORyBzY2hlbWEgZm9yIHNjaGVtYXRyb24sIGNvcHlyaWdodCBJbnRlcm5hdGlvbmFsCiAgIE9yZ2FuaXphdGlvbiBmb3IgU3RhbmRhcmRpemF0aW9uIChzZWUgCiAgIHNyYy9seG1sL2lzb3NjaGVtYXRyb24vcmVzb3VyY2VzL3JuZy9pc28tc2NoZW1hdHJvbi5ybmcgZm9yIHRoZSBsaWNlbnNlCiAgIHRleHQpCiAqIFRoZSBza2VsZXRvbiBpc28tc2NoZW1hdHJvbi14bHQxIHB1cmUteHNsdCBzY2hlbWF0cm9uIGltcGxlbWVudGF0aW9uCiAgIHhzbCBzdHlsZXNoZWV0cywgY29weXJpZ2h0IFJpY2sgSmVsbGlmZmUgYW5kIEFjYWRlbWlhIFNpbmljYSBDb21wdXRpbmcKICAgQ2VudGVyLCBUYWl3YW4gKHNlZSB0aGUgeHNsIGZpbGVzIGhlcmUgZm9yIHRoZSBsaWNlbnNlIHRleHQ6IAogICBzcmMvbHhtbC9pc29zY2hlbWF0cm9uL3Jlc291cmNlcy94c2wvaXNvLXNjaGVtYXRyb24teHNsdDEvKQogKiBUaGUgeHNkL3JuZyBzY2hlbWEgc2NoZW1hdHJvbiBleHRyYWN0aW9uIHhzbCB0cmFuc2Zvcm1hdGlvbnMgYXJlIHVubGljZW5zZWQKICAgYW5kIGNvcHlyaWdodCB0aGUgcmVzcGVjdGl2ZSBhdXRob3JzIGFzIG5vdGVkIChzZWUgCiAgIHNyYy9seG1sL2lzb3NjaGVtYXRyb24vcmVzb3VyY2VzL3hzbC9STkcyU2NodHJuLnhzbCBhbmQKICAgc3JjL2x4bWwvaXNvc2NoZW1hdHJvbi9yZXNvdXJjZXMveHNsL1hTRDJTY2h0cm4ueHNsKQo=", + "contentType": "text/plain", + "encoding": "base64" } } } @@ -411,54 +388,6 @@ "url": "file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868" } ], - "licenses": [ - { - "license": { - "name": "declared license file: my_licenses/richtext.rtf", - "text": { - "content": "e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA=", - "contentType": "application/rtf", - "encoding": "base64" - } - } - }, - { - "license": { - "name": "declared license file: my_licenses/utf-16be_withBOM.txt", - "text": { - "content": "this file is\r\nutf-16be encoded\r\nwith BOM\r\n\ud83d\ude03\r\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: my_licenses/utf-16le_withBOM.txt", - "text": { - "content": "this file is\nutf-16le encoded\nwith BOM\n\ud83d\ude03\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: my_licenses/utf-8_noBOM.txt", - "text": { - "content": "this file is\nutf-8 encoded\nwithout BOM\n\ud83d\ude03\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: my_licenses/utf-8_withBOM.txt", - "text": { - "content": "\ufeffthis file is\nutf-8 encoded\nwith BOM\n\ud83d\ude03\n", - "contentType": "text/plain" - } - } - } - ], "name": "regression-issue868", "type": "library", "version": "0.1" diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.xml.bin index 1ed788cf2..83297b43a 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.xml.bin @@ -97,31 +97,6 @@ MIT - - declared license file: LICENSE - The MIT License (MIT) - -Copyright (c) 2015 Hynek Schlawack and the attrs contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - pkg:pypi/attrs@23.2.0 @@ -157,281 +132,15 @@ SOFTWARE. declared license file: CHANGELOG.rst - -Changelog -========= - - -next ----- - - -4.0 (2022-05-05) ----------------- - -* API changes - - * Drop support for Python 2. - * Test on Python 3.10 - * Make Expression.sort_order an instance attributes and not a class attribute - -* Misc. - - * Correct licensing documentation - * Improve docstringf and apply minor refactorings - * Adopt black code style and isort for imports - * Drop Travis and use GitHub actions for CI - - -3.8 (2020-06-10) ----------------- - -* API changes - - * Add support for evaluation of boolean expression. - Thank you to Lars van Gemerden @gemerden - -* Bug fixes - - * Fix parsing of tokens that have a number as the first character. - Thank you to Jeff Cohen @ jcohen28 - * Restore proper Python 2 compatibility. - Thank you to Benjy Weinberger @benjyw - -* Improve documentation - - * Add pointers to Linux distro packages. - Thank you to Max Mehl @mxmehl and Carmen Bianca Bakker @carmenbianca - * Fix typo. - Thank you to Gabriel Niebler @der-gabe - - -3.7 (2019-10-04) ----------------- - -* API changes - - * Add new sort argument to simplify() to optionally not sort when simplifying - expressions (e.g. not applying "commutativity"). Thank you to Steven Esser - @majurg for this - * Add new argument to tokenizer to optionally accept extra characters in symbol - tokens. Thank you to @carpie for this - - -3.6 (2018-08-06) ----------------- - -* No API changes - -* Bug fixes - - * Fix De Morgan's laws effect on double negation propositions. Thank you to Douglas Cardoso for this - * Improve error checking when parsing - - -3.5 (Nov 1, 2017) ------------------ - -* No API changes - -* Bug fixes - - * Documentation updates and add testing for Python 3.6. Thank you to Alexander Lisianoi @alisianoi - * Improve testng and expression equivalence checks - * Improve subs() method to an expression - - - -3.4 (May 12, 2017) ------------------- - -* No API changes - -* Bug fixes and improvements - - * Fix various documentation typos and improve tests . Thank you to Alexander Lisianoi @alisianoi - * Fix handling for literals vs. symbols in negations Thank you to @YaronK - - -3.3 (2017-02-09) ----------------- - -* API changes - - * #40 and #50 Expression.subs() now takes 'default' thanks to @kronuz - * #45 simplify=False is now the default for parse and related functions or methods. - * #40 Use "&" and "|" as default operators - -* Bug fixes - - * #60 Fix bug for "a or b c" which is not a valid expression - * #58 Fix math formula display in docs - * Improve handling of parse errors - - -2.0.0 (2016-05-11) ------------------- - -* API changes - - * New algebra definition. Refactored class hierarchy. Improved parsing. - -* New features - - * possibility to subclass algebra definition - * new normal forms shortcuts for DNF and CNF. - - -1.1 (2016-04-06) ------------------- - -* Initial release on Pypi. - + CkNoYW5nZWxvZwo9PT09PT09PT0KCgpuZXh0Ci0tLS0KCgo0LjAgKDIwMjItMDUtMDUpCi0tLS0tLS0tLS0tLS0tLS0KCiogQVBJIGNoYW5nZXMKCiAqIERyb3Agc3VwcG9ydCBmb3IgUHl0aG9uIDIuCiAqIFRlc3Qgb24gUHl0aG9uIDMuMTAKICogTWFrZSBFeHByZXNzaW9uLnNvcnRfb3JkZXIgYW4gaW5zdGFuY2UgYXR0cmlidXRlcyBhbmQgbm90IGEgY2xhc3MgYXR0cmlidXRlCgoqIE1pc2MuCgogKiBDb3JyZWN0IGxpY2Vuc2luZyBkb2N1bWVudGF0aW9uCiAqIEltcHJvdmUgZG9jc3RyaW5nZiBhbmQgYXBwbHkgbWlub3IgcmVmYWN0b3JpbmdzCiAqIEFkb3B0IGJsYWNrIGNvZGUgc3R5bGUgYW5kIGlzb3J0IGZvciBpbXBvcnRzCiAqIERyb3AgVHJhdmlzIGFuZCB1c2UgR2l0SHViIGFjdGlvbnMgZm9yIENJCgoKMy44ICgyMDIwLTA2LTEwKQotLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiBBZGQgc3VwcG9ydCBmb3IgZXZhbHVhdGlvbiBvZiBib29sZWFuIGV4cHJlc3Npb24uCiAgIFRoYW5rIHlvdSB0byBMYXJzIHZhbiBHZW1lcmRlbiBAZ2VtZXJkZW4KCiogQnVnIGZpeGVzCgogKiBGaXggcGFyc2luZyBvZiB0b2tlbnMgdGhhdCBoYXZlIGEgbnVtYmVyIGFzIHRoZSBmaXJzdCBjaGFyYWN0ZXIuIAogICBUaGFuayB5b3UgdG8gSmVmZiBDb2hlbiBAIGpjb2hlbjI4CiAqIFJlc3RvcmUgcHJvcGVyIFB5dGhvbiAyIGNvbXBhdGliaWxpdHkuIAogICBUaGFuayB5b3UgdG8gQmVuankgV2VpbmJlcmdlciBAYmVuanl3CgoqIEltcHJvdmUgZG9jdW1lbnRhdGlvbgoKICogQWRkIHBvaW50ZXJzIHRvIExpbnV4IGRpc3RybyBwYWNrYWdlcy4KICAgVGhhbmsgeW91IHRvIE1heCBNZWhsIEBteG1laGwgYW5kIENhcm1lbiBCaWFuY2EgQmFra2VyIEBjYXJtZW5iaWFuY2EKICogRml4IHR5cG8uCiAgIFRoYW5rIHlvdSB0byBHYWJyaWVsIE5pZWJsZXIgQGRlci1nYWJlCgoKMy43ICgyMDE5LTEwLTA0KQotLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiBBZGQgbmV3IHNvcnQgYXJndW1lbnQgdG8gc2ltcGxpZnkoKSB0byBvcHRpb25hbGx5IG5vdCBzb3J0IHdoZW4gc2ltcGxpZnlpbmcKICAgZXhwcmVzc2lvbnMgKGUuZy4gbm90IGFwcGx5aW5nICJjb21tdXRhdGl2aXR5IikuIFRoYW5rIHlvdSB0byBTdGV2ZW4gRXNzZXIKICAgQG1hanVyZyBmb3IgdGhpcwogKiBBZGQgbmV3IGFyZ3VtZW50IHRvIHRva2VuaXplciB0byBvcHRpb25hbGx5IGFjY2VwdCBleHRyYSBjaGFyYWN0ZXJzIGluIHN5bWJvbAogICB0b2tlbnMuIFRoYW5rIHlvdSB0byBAY2FycGllIGZvciB0aGlzCgoKMy42ICgyMDE4LTA4LTA2KQotLS0tLS0tLS0tLS0tLS0tCgoqIE5vIEFQSSBjaGFuZ2VzCgoqIEJ1ZyBmaXhlcwoKICogRml4IERlIE1vcmdhbidzIGxhd3MgZWZmZWN0IG9uIGRvdWJsZSBuZWdhdGlvbiBwcm9wb3NpdGlvbnMuIFRoYW5rIHlvdSB0byBEb3VnbGFzIENhcmRvc28gZm9yIHRoaXMKICogSW1wcm92ZSBlcnJvciBjaGVja2luZyB3aGVuIHBhcnNpbmcKCgozLjUgKE5vdiAxLCAyMDE3KQotLS0tLS0tLS0tLS0tLS0tLQoKKiBObyBBUEkgY2hhbmdlcwoKKiBCdWcgZml4ZXMKCiAqIERvY3VtZW50YXRpb24gdXBkYXRlcyBhbmQgYWRkIHRlc3RpbmcgZm9yIFB5dGhvbiAzLjYuIFRoYW5rIHlvdSB0byBBbGV4YW5kZXIgTGlzaWFub2kgQGFsaXNpYW5vaQogKiBJbXByb3ZlIHRlc3RuZyBhbmQgZXhwcmVzc2lvbiBlcXVpdmFsZW5jZSBjaGVja3MKICogSW1wcm92ZSBzdWJzKCkgbWV0aG9kIHRvIGFuIGV4cHJlc3Npb24gCgogCgozLjQgKE1heSAxMiwgMjAxNykKLS0tLS0tLS0tLS0tLS0tLS0tCgoqIE5vIEFQSSBjaGFuZ2VzCgoqIEJ1ZyBmaXhlcyBhbmQgaW1wcm92ZW1lbnRzCgogKiBGaXggdmFyaW91cyBkb2N1bWVudGF0aW9uIHR5cG9zIGFuZCBpbXByb3ZlIHRlc3RzIC4gVGhhbmsgeW91IHRvIEFsZXhhbmRlciBMaXNpYW5vaSBAYWxpc2lhbm9pCiAqIEZpeCBoYW5kbGluZyBmb3IgbGl0ZXJhbHMgdnMuIHN5bWJvbHMgaW4gbmVnYXRpb25zIFRoYW5rIHlvdSB0byBAWWFyb25LCgoKMy4zICgyMDE3LTAyLTA5KQotLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiAjNDAgYW5kICM1MCBFeHByZXNzaW9uLnN1YnMoKSBub3cgdGFrZXMgJ2RlZmF1bHQnIHRoYW5rcyB0byBAa3JvbnV6CiAqICM0NSBzaW1wbGlmeT1GYWxzZSBpcyBub3cgdGhlIGRlZmF1bHQgZm9yIHBhcnNlIGFuZCByZWxhdGVkIGZ1bmN0aW9ucyBvciBtZXRob2RzLgogKiAjNDAgVXNlICImIiBhbmQgInwiIGFzIGRlZmF1bHQgb3BlcmF0b3JzCgoqIEJ1ZyBmaXhlcwoKICogIzYwIEZpeCBidWcgZm9yICJhIG9yIGIgYyIgd2hpY2ggaXMgbm90IGEgdmFsaWQgZXhwcmVzc2lvbgogKiAjNTggRml4IG1hdGggZm9ybXVsYSBkaXNwbGF5IGluIGRvY3MKICogSW1wcm92ZSBoYW5kbGluZyBvZiBwYXJzZSBlcnJvcnMKCgoyLjAuMCAoMjAxNi0wNS0xMSkKLS0tLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiBOZXcgYWxnZWJyYSBkZWZpbml0aW9uLiBSZWZhY3RvcmVkIGNsYXNzIGhpZXJhcmNoeS4gSW1wcm92ZWQgcGFyc2luZy4KCiogTmV3IGZlYXR1cmVzCgogKiBwb3NzaWJpbGl0eSB0byBzdWJjbGFzcyBhbGdlYnJhIGRlZmluaXRpb24KICogbmV3IG5vcm1hbCBmb3JtcyBzaG9ydGN1dHMgZm9yIERORiBhbmQgQ05GLgoKCjEuMSAoMjAxNi0wNC0wNikKLS0tLS0tLS0tLS0tLS0tLS0tCgoqIEluaXRpYWwgcmVsZWFzZSBvbiBQeXBpLgo= declared license file: LICENSE.txt - Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation and/or -other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - + Q29weXJpZ2h0IChjKSBTZWJhc3RpYW4gS3JhZW1lciwgYmFzdGkua3JAZ21haWwuY29tIGFuZCBvdGhlcnMKQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCmFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKCjEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcwpsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KCjIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3IKb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQpESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgpBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwpMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCg== declared license file: README.rst - boolean.py -========== - -"boolean.py" is a small library implementing a boolean algebra. It -defines two base elements, TRUE and FALSE, and a Symbol class that can -take on one of these two values. Calculations are done in terms of AND, -OR and NOT - other compositions like XOR and NAND are not implemented -but can be emulated with AND or and NOT. Expressions are constructed -from parsed strings or in Python. - -It runs on Python 3.6+ -You can use older version 3.x for Python 2.7+ support. - -https://github.com/bastikr/boolean.py - -Build status: |Build Status| - - -Example -------- - -:: - - >>> import boolean - >>> algebra = boolean.BooleanAlgebra() - >>> expression1 = algebra.parse(u'apple and (oranges or banana) and not banana', simplify=False) - >>> expression1 - AND(Symbol('apple'), OR(Symbol('oranges'), Symbol('banana')), NOT(Symbol('banana'))) - - >>> expression2 = algebra.parse('(oranges | banana) and not banana & apple', simplify=True) - >>> expression2 - AND(Symbol('apple'), NOT(Symbol('banana')), Symbol('oranges')) - - >>> expression1 == expression2 - False - >>> expression1.simplify() == expression2 - True - - -Documentation -------------- - -http://readthedocs.org/docs/booleanpy/en/latest/ - - -Installation ------------- - -Installation via pip -~~~~~~~~~~~~~~~~~~~~ - -To install boolean.py, you need to have the following pieces of software -on your computer: - -- Python 3.6+ -- pip - -You then only need to run the following command: - -``pip install boolean.py`` - - -Installation via package managers -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -There are packages available for easy install on some operating systems. -You are welcome to help us package this tool for more distributions! - -- boolean.py has been packaged as Arch Linux, Fedora, openSus, - nixpkgs, Guix, DragonFly and FreeBSD - `packages <https://repology.org/project/python:boolean.py/versions>`__ . - -In particular: - -- Arch Linux (AUR): - `python-boolean.py <https://aur.archlinux.org/packages/python-boolean.py/>`__ -- Fedora: - `python-boolean.py <https://apps.fedoraproject.org/packages/python-boolean.py>`__ -- openSUSE: - `python-boolean.py <https://software.opensuse.org/package/python-boolean.py>`__ - - -Testing -------- - -Test ``boolean.py`` with your current Python environment: - -``python setup.py test`` - -Test with all of the supported Python environments using ``tox``: - -:: - - pip install -r requirements-dev.txt - tox - -If ``tox`` throws ``InterpreterNotFound``, limit it to python -interpreters that are actually installed on your machine: - -:: - - tox -e py36 - -Alternatively use pytest. - - -License -------- - -Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others -SPDX-License-Identifier: BSD-2-Clause - -.. |Build Status| image:: https://travis-ci.org/bastikr/boolean.py.svg?branch=master - :target: https://travis-ci.org/bastikr/boolean.py - + Ym9vbGVhbi5weQo9PT09PT09PT09CgoiYm9vbGVhbi5weSIgaXMgYSBzbWFsbCBsaWJyYXJ5IGltcGxlbWVudGluZyBhIGJvb2xlYW4gYWxnZWJyYS4gSXQKZGVmaW5lcyB0d28gYmFzZSBlbGVtZW50cywgVFJVRSBhbmQgRkFMU0UsIGFuZCBhIFN5bWJvbCBjbGFzcyB0aGF0IGNhbgp0YWtlIG9uIG9uZSBvZiB0aGVzZSB0d28gdmFsdWVzLiBDYWxjdWxhdGlvbnMgYXJlIGRvbmUgaW4gdGVybXMgb2YgQU5ELApPUiBhbmQgTk9UIC0gb3RoZXIgY29tcG9zaXRpb25zIGxpa2UgWE9SIGFuZCBOQU5EIGFyZSBub3QgaW1wbGVtZW50ZWQKYnV0IGNhbiBiZSBlbXVsYXRlZCB3aXRoIEFORCBvciBhbmQgTk9ULiBFeHByZXNzaW9ucyBhcmUgY29uc3RydWN0ZWQKZnJvbSBwYXJzZWQgc3RyaW5ncyBvciBpbiBQeXRob24uCgpJdCBydW5zIG9uIFB5dGhvbiAzLjYrCllvdSBjYW4gdXNlIG9sZGVyIHZlcnNpb24gMy54IGZvciBQeXRob24gMi43KyBzdXBwb3J0LgoKaHR0cHM6Ly9naXRodWIuY29tL2Jhc3Rpa3IvYm9vbGVhbi5weQoKQnVpbGQgc3RhdHVzOiB8QnVpbGQgU3RhdHVzfAoKCkV4YW1wbGUKLS0tLS0tLQoKOjoKCiAgICA+Pj4gaW1wb3J0IGJvb2xlYW4KICAgID4+PiBhbGdlYnJhID0gYm9vbGVhbi5Cb29sZWFuQWxnZWJyYSgpCiAgICA+Pj4gZXhwcmVzc2lvbjEgPSBhbGdlYnJhLnBhcnNlKHUnYXBwbGUgYW5kIChvcmFuZ2VzIG9yIGJhbmFuYSkgYW5kIG5vdCBiYW5hbmEnLCBzaW1wbGlmeT1GYWxzZSkKICAgID4+PiBleHByZXNzaW9uMQogICAgQU5EKFN5bWJvbCgnYXBwbGUnKSwgT1IoU3ltYm9sKCdvcmFuZ2VzJyksIFN5bWJvbCgnYmFuYW5hJykpLCBOT1QoU3ltYm9sKCdiYW5hbmEnKSkpCgogICAgPj4+IGV4cHJlc3Npb24yID0gYWxnZWJyYS5wYXJzZSgnKG9yYW5nZXMgfCBiYW5hbmEpIGFuZCBub3QgYmFuYW5hICYgYXBwbGUnLCBzaW1wbGlmeT1UcnVlKQogICAgPj4+IGV4cHJlc3Npb24yCiAgICBBTkQoU3ltYm9sKCdhcHBsZScpLCBOT1QoU3ltYm9sKCdiYW5hbmEnKSksIFN5bWJvbCgnb3JhbmdlcycpKQoKICAgID4+PiBleHByZXNzaW9uMSA9PSBleHByZXNzaW9uMgogICAgRmFsc2UKICAgID4+PiBleHByZXNzaW9uMS5zaW1wbGlmeSgpID09IGV4cHJlc3Npb24yCiAgICBUcnVlCgoKRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tCgpodHRwOi8vcmVhZHRoZWRvY3Mub3JnL2RvY3MvYm9vbGVhbnB5L2VuL2xhdGVzdC8KCgpJbnN0YWxsYXRpb24KLS0tLS0tLS0tLS0tCgpJbnN0YWxsYXRpb24gdmlhIHBpcAp+fn5+fn5+fn5+fn5+fn5+fn5+fgoKVG8gaW5zdGFsbCBib29sZWFuLnB5LCB5b3UgbmVlZCB0byBoYXZlIHRoZSBmb2xsb3dpbmcgcGllY2VzIG9mIHNvZnR3YXJlCm9uIHlvdXIgY29tcHV0ZXI6CgotICBQeXRob24gMy42KwotICBwaXAKCllvdSB0aGVuIG9ubHkgbmVlZCB0byBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kOgoKYGBwaXAgaW5zdGFsbCBib29sZWFuLnB5YGAKCgpJbnN0YWxsYXRpb24gdmlhIHBhY2thZ2UgbWFuYWdlcnMKfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgpUaGVyZSBhcmUgcGFja2FnZXMgYXZhaWxhYmxlIGZvciBlYXN5IGluc3RhbGwgb24gc29tZSBvcGVyYXRpbmcgc3lzdGVtcy4KWW91IGFyZSB3ZWxjb21lIHRvIGhlbHAgdXMgcGFja2FnZSB0aGlzIHRvb2wgZm9yIG1vcmUgZGlzdHJpYnV0aW9ucyEKCi0gIGJvb2xlYW4ucHkgaGFzIGJlZW4gcGFja2FnZWQgYXMgQXJjaCBMaW51eCwgRmVkb3JhLCBvcGVuU3VzLAogICBuaXhwa2dzLCBHdWl4LCBEcmFnb25GbHkgYW5kIEZyZWVCU0QgCiAgIGBwYWNrYWdlcyA8aHR0cHM6Ly9yZXBvbG9neS5vcmcvcHJvamVjdC9weXRob246Ym9vbGVhbi5weS92ZXJzaW9ucz5gX18gLgoKSW4gcGFydGljdWxhcjoKCi0gIEFyY2ggTGludXggKEFVUik6CiAgIGBweXRob24tYm9vbGVhbi5weSA8aHR0cHM6Ly9hdXIuYXJjaGxpbnV4Lm9yZy9wYWNrYWdlcy9weXRob24tYm9vbGVhbi5weS8+YF9fCi0gIEZlZG9yYToKICAgYHB5dGhvbi1ib29sZWFuLnB5IDxodHRwczovL2FwcHMuZmVkb3JhcHJvamVjdC5vcmcvcGFja2FnZXMvcHl0aG9uLWJvb2xlYW4ucHk+YF9fCi0gIG9wZW5TVVNFOgogICBgcHl0aG9uLWJvb2xlYW4ucHkgPGh0dHBzOi8vc29mdHdhcmUub3BlbnN1c2Uub3JnL3BhY2thZ2UvcHl0aG9uLWJvb2xlYW4ucHk+YF9fCgoKVGVzdGluZwotLS0tLS0tCgpUZXN0IGBgYm9vbGVhbi5weWBgIHdpdGggeW91ciBjdXJyZW50IFB5dGhvbiBlbnZpcm9ubWVudDoKCmBgcHl0aG9uIHNldHVwLnB5IHRlc3RgYAoKVGVzdCB3aXRoIGFsbCBvZiB0aGUgc3VwcG9ydGVkIFB5dGhvbiBlbnZpcm9ubWVudHMgdXNpbmcgYGB0b3hgYDoKCjo6CgogICAgcGlwIGluc3RhbGwgLXIgcmVxdWlyZW1lbnRzLWRldi50eHQKICAgIHRveAoKSWYgYGB0b3hgYCB0aHJvd3MgYGBJbnRlcnByZXRlck5vdEZvdW5kYGAsIGxpbWl0IGl0IHRvIHB5dGhvbgppbnRlcnByZXRlcnMgdGhhdCBhcmUgYWN0dWFsbHkgaW5zdGFsbGVkIG9uIHlvdXIgbWFjaGluZToKCjo6CgogICAgdG94IC1lIHB5MzYKCkFsdGVybmF0aXZlbHkgdXNlIHB5dGVzdC4KCgpMaWNlbnNlCi0tLS0tLS0KCkNvcHlyaWdodCAoYykgU2ViYXN0aWFuIEtyYWVtZXIsIGJhc3RpLmtyQGdtYWlsLmNvbSBhbmQgb3RoZXJzClNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UKCi4uIHxCdWlsZCBTdGF0dXN8IGltYWdlOjogaHR0cHM6Ly90cmF2aXMtY2kub3JnL2Jhc3Rpa3IvYm9vbGVhbi5weS5zdmc/YnJhbmNoPW1hc3RlcgogICA6dGFyZ2V0OiBodHRwczovL3RyYXZpcy1jaS5vcmcvYmFzdGlrci9ib29sZWFuLnB5Cg== pkg:pypi/boolean.py@4.0 @@ -442,6 +151,43 @@ SPDX-License-Identifier: BSD-2-Clause + + chardet + 5.2.0 + Universal encoding detector for Python 3 + + + License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+) + + + declared license file: LICENSE + ICAgICAgICAgICAgICAgICAgR05VIExFU1NFUiBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFCiAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAyLjEsIEZlYnJ1YXJ5IDE5OTkKCiBDb3B5cmlnaHQgKEMpIDE5OTEsIDE5OTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKIEV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcwogb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCgpbVGhpcyBpcyB0aGUgZmlyc3QgcmVsZWFzZWQgdmVyc2lvbiBvZiB0aGUgTGVzc2VyIEdQTC4gIEl0IGFsc28gY291bnRzCiBhcyB0aGUgc3VjY2Vzc29yIG9mIHRoZSBHTlUgTGlicmFyeSBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLCBoZW5jZQogdGhlIHZlcnNpb24gbnVtYmVyIDIuMS5dCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlYW1ibGUKCiAgVGhlIGxpY2Vuc2VzIGZvciBtb3N0IHNvZnR3YXJlIGFyZSBkZXNpZ25lZCB0byB0YWtlIGF3YXkgeW91cgpmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgaXQuICBCeSBjb250cmFzdCwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwpMaWNlbnNlcyBhcmUgaW50ZW5kZWQgdG8gZ3VhcmFudGVlIHlvdXIgZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlCmZyZWUgc29mdHdhcmUtLXRvIG1ha2Ugc3VyZSB0aGUgc29mdHdhcmUgaXMgZnJlZSBmb3IgYWxsIGl0cyB1c2Vycy4KCiAgVGhpcyBsaWNlbnNlLCB0aGUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFwcGxpZXMgdG8gc29tZQpzcGVjaWFsbHkgZGVzaWduYXRlZCBzb2Z0d2FyZSBwYWNrYWdlcy0tdHlwaWNhbGx5IGxpYnJhcmllcy0tb2YgdGhlCkZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBhbmQgb3RoZXIgYXV0aG9ycyB3aG8gZGVjaWRlIHRvIHVzZSBpdC4gIFlvdQpjYW4gdXNlIGl0IHRvbywgYnV0IHdlIHN1Z2dlc3QgeW91IGZpcnN0IHRoaW5rIGNhcmVmdWxseSBhYm91dCB3aGV0aGVyCnRoaXMgbGljZW5zZSBvciB0aGUgb3JkaW5hcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyB0aGUgYmV0dGVyCnN0cmF0ZWd5IHRvIHVzZSBpbiBhbnkgcGFydGljdWxhciBjYXNlLCBiYXNlZCBvbiB0aGUgZXhwbGFuYXRpb25zIGJlbG93LgoKICBXaGVuIHdlIHNwZWFrIG9mIGZyZWUgc29mdHdhcmUsIHdlIGFyZSByZWZlcnJpbmcgdG8gZnJlZWRvbSBvZiB1c2UsCm5vdCBwcmljZS4gIE91ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlcyBhcmUgZGVzaWduZWQgdG8gbWFrZSBzdXJlIHRoYXQKeW91IGhhdmUgdGhlIGZyZWVkb20gdG8gZGlzdHJpYnV0ZSBjb3BpZXMgb2YgZnJlZSBzb2Z0d2FyZSAoYW5kIGNoYXJnZQpmb3IgdGhpcyBzZXJ2aWNlIGlmIHlvdSB3aXNoKTsgdGhhdCB5b3UgcmVjZWl2ZSBzb3VyY2UgY29kZSBvciBjYW4gZ2V0Cml0IGlmIHlvdSB3YW50IGl0OyB0aGF0IHlvdSBjYW4gY2hhbmdlIHRoZSBzb2Z0d2FyZSBhbmQgdXNlIHBpZWNlcyBvZgppdCBpbiBuZXcgZnJlZSBwcm9ncmFtczsgYW5kIHRoYXQgeW91IGFyZSBpbmZvcm1lZCB0aGF0IHlvdSBjYW4gZG8KdGhlc2UgdGhpbmdzLgoKICBUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIG1ha2UgcmVzdHJpY3Rpb25zIHRoYXQgZm9yYmlkCmRpc3RyaWJ1dG9ycyB0byBkZW55IHlvdSB0aGVzZSByaWdodHMgb3IgdG8gYXNrIHlvdSB0byBzdXJyZW5kZXIgdGhlc2UKcmlnaHRzLiAgVGhlc2UgcmVzdHJpY3Rpb25zIHRyYW5zbGF0ZSB0byBjZXJ0YWluIHJlc3BvbnNpYmlsaXRpZXMgZm9yCnlvdSBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIGxpYnJhcnkgb3IgaWYgeW91IG1vZGlmeSBpdC4KCiAgRm9yIGV4YW1wbGUsIGlmIHlvdSBkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUgbGlicmFyeSwgd2hldGhlciBncmF0aXMKb3IgZm9yIGEgZmVlLCB5b3UgbXVzdCBnaXZlIHRoZSByZWNpcGllbnRzIGFsbCB0aGUgcmlnaHRzIHRoYXQgd2UgZ2F2ZQp5b3UuICBZb3UgbXVzdCBtYWtlIHN1cmUgdGhhdCB0aGV5LCB0b28sIHJlY2VpdmUgb3IgY2FuIGdldCB0aGUgc291cmNlCmNvZGUuICBJZiB5b3UgbGluayBvdGhlciBjb2RlIHdpdGggdGhlIGxpYnJhcnksIHlvdSBtdXN0IHByb3ZpZGUKY29tcGxldGUgb2JqZWN0IGZpbGVzIHRvIHRoZSByZWNpcGllbnRzLCBzbyB0aGF0IHRoZXkgY2FuIHJlbGluayB0aGVtCndpdGggdGhlIGxpYnJhcnkgYWZ0ZXIgbWFraW5nIGNoYW5nZXMgdG8gdGhlIGxpYnJhcnkgYW5kIHJlY29tcGlsaW5nCml0LiAgQW5kIHlvdSBtdXN0IHNob3cgdGhlbSB0aGVzZSB0ZXJtcyBzbyB0aGV5IGtub3cgdGhlaXIgcmlnaHRzLgoKICBXZSBwcm90ZWN0IHlvdXIgcmlnaHRzIHdpdGggYSB0d28tc3RlcCBtZXRob2Q6ICgxKSB3ZSBjb3B5cmlnaHQgdGhlCmxpYnJhcnksIGFuZCAoMikgd2Ugb2ZmZXIgeW91IHRoaXMgbGljZW5zZSwgd2hpY2ggZ2l2ZXMgeW91IGxlZ2FsCnBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IHRoZSBsaWJyYXJ5LgoKICBUbyBwcm90ZWN0IGVhY2ggZGlzdHJpYnV0b3IsIHdlIHdhbnQgdG8gbWFrZSBpdCB2ZXJ5IGNsZWFyIHRoYXQKdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoZSBmcmVlIGxpYnJhcnkuICBBbHNvLCBpZiB0aGUgbGlicmFyeSBpcwptb2RpZmllZCBieSBzb21lb25lIGVsc2UgYW5kIHBhc3NlZCBvbiwgdGhlIHJlY2lwaWVudHMgc2hvdWxkIGtub3cKdGhhdCB3aGF0IHRoZXkgaGF2ZSBpcyBub3QgdGhlIG9yaWdpbmFsIHZlcnNpb24sIHNvIHRoYXQgdGhlIG9yaWdpbmFsCmF1dGhvcidzIHJlcHV0YXRpb24gd2lsbCBub3QgYmUgYWZmZWN0ZWQgYnkgcHJvYmxlbXMgdGhhdCBtaWdodCBiZQppbnRyb2R1Y2VkIGJ5IG90aGVycy4KDAogIEZpbmFsbHksIHNvZnR3YXJlIHBhdGVudHMgcG9zZSBhIGNvbnN0YW50IHRocmVhdCB0byB0aGUgZXhpc3RlbmNlIG9mCmFueSBmcmVlIHByb2dyYW0uICBXZSB3aXNoIHRvIG1ha2Ugc3VyZSB0aGF0IGEgY29tcGFueSBjYW5ub3QKZWZmZWN0aXZlbHkgcmVzdHJpY3QgdGhlIHVzZXJzIG9mIGEgZnJlZSBwcm9ncmFtIGJ5IG9idGFpbmluZyBhCnJlc3RyaWN0aXZlIGxpY2Vuc2UgZnJvbSBhIHBhdGVudCBob2xkZXIuICBUaGVyZWZvcmUsIHdlIGluc2lzdCB0aGF0CmFueSBwYXRlbnQgbGljZW5zZSBvYnRhaW5lZCBmb3IgYSB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5IG11c3QgYmUKY29uc2lzdGVudCB3aXRoIHRoZSBmdWxsIGZyZWVkb20gb2YgdXNlIHNwZWNpZmllZCBpbiB0aGlzIGxpY2Vuc2UuCgogIE1vc3QgR05VIHNvZnR3YXJlLCBpbmNsdWRpbmcgc29tZSBsaWJyYXJpZXMsIGlzIGNvdmVyZWQgYnkgdGhlCm9yZGluYXJ5IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBsaWNlbnNlLCB0aGUgR05VIExlc3NlcgpHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBhcHBsaWVzIHRvIGNlcnRhaW4gZGVzaWduYXRlZCBsaWJyYXJpZXMsIGFuZAppcyBxdWl0ZSBkaWZmZXJlbnQgZnJvbSB0aGUgb3JkaW5hcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFdlIHVzZQp0aGlzIGxpY2Vuc2UgZm9yIGNlcnRhaW4gbGlicmFyaWVzIGluIG9yZGVyIHRvIHBlcm1pdCBsaW5raW5nIHRob3NlCmxpYnJhcmllcyBpbnRvIG5vbi1mcmVlIHByb2dyYW1zLgoKICBXaGVuIGEgcHJvZ3JhbSBpcyBsaW5rZWQgd2l0aCBhIGxpYnJhcnksIHdoZXRoZXIgc3RhdGljYWxseSBvciB1c2luZwphIHNoYXJlZCBsaWJyYXJ5LCB0aGUgY29tYmluYXRpb24gb2YgdGhlIHR3byBpcyBsZWdhbGx5IHNwZWFraW5nIGEKY29tYmluZWQgd29yaywgYSBkZXJpdmF0aXZlIG9mIHRoZSBvcmlnaW5hbCBsaWJyYXJ5LiAgVGhlIG9yZGluYXJ5CkdlbmVyYWwgUHVibGljIExpY2Vuc2UgdGhlcmVmb3JlIHBlcm1pdHMgc3VjaCBsaW5raW5nIG9ubHkgaWYgdGhlCmVudGlyZSBjb21iaW5hdGlvbiBmaXRzIGl0cyBjcml0ZXJpYSBvZiBmcmVlZG9tLiAgVGhlIExlc3NlciBHZW5lcmFsClB1YmxpYyBMaWNlbnNlIHBlcm1pdHMgbW9yZSBsYXggY3JpdGVyaWEgZm9yIGxpbmtpbmcgb3RoZXIgY29kZSB3aXRoCnRoZSBsaWJyYXJ5LgoKICBXZSBjYWxsIHRoaXMgbGljZW5zZSB0aGUgIkxlc3NlciIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBiZWNhdXNlIGl0CmRvZXMgTGVzcyB0byBwcm90ZWN0IHRoZSB1c2VyJ3MgZnJlZWRvbSB0aGFuIHRoZSBvcmRpbmFyeSBHZW5lcmFsClB1YmxpYyBMaWNlbnNlLiAgSXQgYWxzbyBwcm92aWRlcyBvdGhlciBmcmVlIHNvZnR3YXJlIGRldmVsb3BlcnMgTGVzcwpvZiBhbiBhZHZhbnRhZ2Ugb3ZlciBjb21wZXRpbmcgbm9uLWZyZWUgcHJvZ3JhbXMuICBUaGVzZSBkaXNhZHZhbnRhZ2VzCmFyZSB0aGUgcmVhc29uIHdlIHVzZSB0aGUgb3JkaW5hcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbWFueQpsaWJyYXJpZXMuICBIb3dldmVyLCB0aGUgTGVzc2VyIGxpY2Vuc2UgcHJvdmlkZXMgYWR2YW50YWdlcyBpbiBjZXJ0YWluCnNwZWNpYWwgY2lyY3Vtc3RhbmNlcy4KCiAgRm9yIGV4YW1wbGUsIG9uIHJhcmUgb2NjYXNpb25zLCB0aGVyZSBtYXkgYmUgYSBzcGVjaWFsIG5lZWQgdG8KZW5jb3VyYWdlIHRoZSB3aWRlc3QgcG9zc2libGUgdXNlIG9mIGEgY2VydGFpbiBsaWJyYXJ5LCBzbyB0aGF0IGl0IGJlY29tZXMKYSBkZS1mYWN0byBzdGFuZGFyZC4gIFRvIGFjaGlldmUgdGhpcywgbm9uLWZyZWUgcHJvZ3JhbXMgbXVzdCBiZQphbGxvd2VkIHRvIHVzZSB0aGUgbGlicmFyeS4gIEEgbW9yZSBmcmVxdWVudCBjYXNlIGlzIHRoYXQgYSBmcmVlCmxpYnJhcnkgZG9lcyB0aGUgc2FtZSBqb2IgYXMgd2lkZWx5IHVzZWQgbm9uLWZyZWUgbGlicmFyaWVzLiAgSW4gdGhpcwpjYXNlLCB0aGVyZSBpcyBsaXR0bGUgdG8gZ2FpbiBieSBsaW1pdGluZyB0aGUgZnJlZSBsaWJyYXJ5IHRvIGZyZWUKc29mdHdhcmUgb25seSwgc28gd2UgdXNlIHRoZSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KCiAgSW4gb3RoZXIgY2FzZXMsIHBlcm1pc3Npb24gdG8gdXNlIGEgcGFydGljdWxhciBsaWJyYXJ5IGluIG5vbi1mcmVlCnByb2dyYW1zIGVuYWJsZXMgYSBncmVhdGVyIG51bWJlciBvZiBwZW9wbGUgdG8gdXNlIGEgbGFyZ2UgYm9keSBvZgpmcmVlIHNvZnR3YXJlLiAgRm9yIGV4YW1wbGUsIHBlcm1pc3Npb24gdG8gdXNlIHRoZSBHTlUgQyBMaWJyYXJ5IGluCm5vbi1mcmVlIHByb2dyYW1zIGVuYWJsZXMgbWFueSBtb3JlIHBlb3BsZSB0byB1c2UgdGhlIHdob2xlIEdOVQpvcGVyYXRpbmcgc3lzdGVtLCBhcyB3ZWxsIGFzIGl0cyB2YXJpYW50LCB0aGUgR05VL0xpbnV4IG9wZXJhdGluZwpzeXN0ZW0uCgogIEFsdGhvdWdoIHRoZSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBMZXNzIHByb3RlY3RpdmUgb2YgdGhlCnVzZXJzJyBmcmVlZG9tLCBpdCBkb2VzIGVuc3VyZSB0aGF0IHRoZSB1c2VyIG9mIGEgcHJvZ3JhbSB0aGF0IGlzCmxpbmtlZCB3aXRoIHRoZSBMaWJyYXJ5IGhhcyB0aGUgZnJlZWRvbSBhbmQgdGhlIHdoZXJld2l0aGFsIHRvIHJ1bgp0aGF0IHByb2dyYW0gdXNpbmcgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBMaWJyYXJ5LgoKICBUaGUgcHJlY2lzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW9uIGFuZAptb2RpZmljYXRpb24gZm9sbG93LiAgUGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGEKIndvcmsgYmFzZWQgb24gdGhlIGxpYnJhcnkiIGFuZCBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgbGlicmFyeSIuICBUaGUKZm9ybWVyIGNvbnRhaW5zIGNvZGUgZGVyaXZlZCBmcm9tIHRoZSBsaWJyYXJ5LCB3aGVyZWFzIHRoZSBsYXR0ZXIgbXVzdApiZSBjb21iaW5lZCB3aXRoIHRoZSBsaWJyYXJ5IGluIG9yZGVyIHRvIHJ1bi4KDAogICAgICAgICAgICAgICAgICBHTlUgTEVTU0VSIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKICAgVEVSTVMgQU5EIENPTkRJVElPTlMgRk9SIENPUFlJTkcsIERJU1RSSUJVVElPTiBBTkQgTU9ESUZJQ0FUSU9OCgogIDAuIFRoaXMgTGljZW5zZSBBZ3JlZW1lbnQgYXBwbGllcyB0byBhbnkgc29mdHdhcmUgbGlicmFyeSBvciBvdGhlcgpwcm9ncmFtIHdoaWNoIGNvbnRhaW5zIGEgbm90aWNlIHBsYWNlZCBieSB0aGUgY29weXJpZ2h0IGhvbGRlciBvcgpvdGhlciBhdXRob3JpemVkIHBhcnR5IHNheWluZyBpdCBtYXkgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mCnRoaXMgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKGFsc28gY2FsbGVkICJ0aGlzIExpY2Vuc2UiKS4KRWFjaCBsaWNlbnNlZSBpcyBhZGRyZXNzZWQgYXMgInlvdSIuCgogIEEgImxpYnJhcnkiIG1lYW5zIGEgY29sbGVjdGlvbiBvZiBzb2Z0d2FyZSBmdW5jdGlvbnMgYW5kL29yIGRhdGEKcHJlcGFyZWQgc28gYXMgdG8gYmUgY29udmVuaWVudGx5IGxpbmtlZCB3aXRoIGFwcGxpY2F0aW9uIHByb2dyYW1zCih3aGljaCB1c2Ugc29tZSBvZiB0aG9zZSBmdW5jdGlvbnMgYW5kIGRhdGEpIHRvIGZvcm0gZXhlY3V0YWJsZXMuCgogIFRoZSAiTGlicmFyeSIsIGJlbG93LCByZWZlcnMgdG8gYW55IHN1Y2ggc29mdHdhcmUgbGlicmFyeSBvciB3b3JrCndoaWNoIGhhcyBiZWVuIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZXNlIHRlcm1zLiAgQSAid29yayBiYXNlZCBvbiB0aGUKTGlicmFyeSIgbWVhbnMgZWl0aGVyIHRoZSBMaWJyYXJ5IG9yIGFueSBkZXJpdmF0aXZlIHdvcmsgdW5kZXIKY29weXJpZ2h0IGxhdzogdGhhdCBpcyB0byBzYXksIGEgd29yayBjb250YWluaW5nIHRoZSBMaWJyYXJ5IG9yIGEKcG9ydGlvbiBvZiBpdCwgZWl0aGVyIHZlcmJhdGltIG9yIHdpdGggbW9kaWZpY2F0aW9ucyBhbmQvb3IgdHJhbnNsYXRlZApzdHJhaWdodGZvcndhcmRseSBpbnRvIGFub3RoZXIgbGFuZ3VhZ2UuICAoSGVyZWluYWZ0ZXIsIHRyYW5zbGF0aW9uIGlzCmluY2x1ZGVkIHdpdGhvdXQgbGltaXRhdGlvbiBpbiB0aGUgdGVybSAibW9kaWZpY2F0aW9uIi4pCgogICJTb3VyY2UgY29kZSIgZm9yIGEgd29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsgZm9yCm1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgRm9yIGEgbGlicmFyeSwgY29tcGxldGUgc291cmNlIGNvZGUgbWVhbnMKYWxsIHRoZSBzb3VyY2UgY29kZSBmb3IgYWxsIG1vZHVsZXMgaXQgY29udGFpbnMsIHBsdXMgYW55IGFzc29jaWF0ZWQKaW50ZXJmYWNlIGRlZmluaXRpb24gZmlsZXMsIHBsdXMgdGhlIHNjcmlwdHMgdXNlZCB0byBjb250cm9sIGNvbXBpbGF0aW9uCmFuZCBpbnN0YWxsYXRpb24gb2YgdGhlIGxpYnJhcnkuCgogIEFjdGl2aXRpZXMgb3RoZXIgdGhhbiBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kIG1vZGlmaWNhdGlvbiBhcmUgbm90CmNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlOyB0aGV5IGFyZSBvdXRzaWRlIGl0cyBzY29wZS4gIFRoZSBhY3Qgb2YKcnVubmluZyBhIHByb2dyYW0gdXNpbmcgdGhlIExpYnJhcnkgaXMgbm90IHJlc3RyaWN0ZWQsIGFuZCBvdXRwdXQgZnJvbQpzdWNoIGEgcHJvZ3JhbSBpcyBjb3ZlcmVkIG9ubHkgaWYgaXRzIGNvbnRlbnRzIGNvbnN0aXR1dGUgYSB3b3JrIGJhc2VkCm9uIHRoZSBMaWJyYXJ5IChpbmRlcGVuZGVudCBvZiB0aGUgdXNlIG9mIHRoZSBMaWJyYXJ5IGluIGEgdG9vbCBmb3IKd3JpdGluZyBpdCkuICBXaGV0aGVyIHRoYXQgaXMgdHJ1ZSBkZXBlbmRzIG9uIHdoYXQgdGhlIExpYnJhcnkgZG9lcwphbmQgd2hhdCB0aGUgcHJvZ3JhbSB0aGF0IHVzZXMgdGhlIExpYnJhcnkgZG9lcy4KCiAgMS4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcyBvZiB0aGUgTGlicmFyeSdzCmNvbXBsZXRlIHNvdXJjZSBjb2RlIGFzIHlvdSByZWNlaXZlIGl0LCBpbiBhbnkgbWVkaXVtLCBwcm92aWRlZCB0aGF0CnlvdSBjb25zcGljdW91c2x5IGFuZCBhcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuCmFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2UgYW5kIGRpc2NsYWltZXIgb2Ygd2FycmFudHk7IGtlZXAgaW50YWN0CmFsbCB0aGUgbm90aWNlcyB0aGF0IHJlZmVyIHRvIHRoaXMgTGljZW5zZSBhbmQgdG8gdGhlIGFic2VuY2Ugb2YgYW55CndhcnJhbnR5OyBhbmQgZGlzdHJpYnV0ZSBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlIGFsb25nIHdpdGggdGhlCkxpYnJhcnkuCgogIFlvdSBtYXkgY2hhcmdlIGEgZmVlIGZvciB0aGUgcGh5c2ljYWwgYWN0IG9mIHRyYW5zZmVycmluZyBhIGNvcHksCmFuZCB5b3UgbWF5IGF0IHlvdXIgb3B0aW9uIG9mZmVyIHdhcnJhbnR5IHByb3RlY3Rpb24gaW4gZXhjaGFuZ2UgZm9yIGEKZmVlLgoMCiAgMi4gWW91IG1heSBtb2RpZnkgeW91ciBjb3B5IG9yIGNvcGllcyBvZiB0aGUgTGlicmFyeSBvciBhbnkgcG9ydGlvbgpvZiBpdCwgdGh1cyBmb3JtaW5nIGEgd29yayBiYXNlZCBvbiB0aGUgTGlicmFyeSwgYW5kIGNvcHkgYW5kCmRpc3RyaWJ1dGUgc3VjaCBtb2RpZmljYXRpb25zIG9yIHdvcmsgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb24gMQphYm92ZSwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBtZWV0IGFsbCBvZiB0aGVzZSBjb25kaXRpb25zOgoKICAgIGEpIFRoZSBtb2RpZmllZCB3b3JrIG11c3QgaXRzZWxmIGJlIGEgc29mdHdhcmUgbGlicmFyeS4KCiAgICBiKSBZb3UgbXVzdCBjYXVzZSB0aGUgZmlsZXMgbW9kaWZpZWQgdG8gY2FycnkgcHJvbWluZW50IG5vdGljZXMKICAgIHN0YXRpbmcgdGhhdCB5b3UgY2hhbmdlZCB0aGUgZmlsZXMgYW5kIHRoZSBkYXRlIG9mIGFueSBjaGFuZ2UuCgogICAgYykgWW91IG11c3QgY2F1c2UgdGhlIHdob2xlIG9mIHRoZSB3b3JrIHRvIGJlIGxpY2Vuc2VkIGF0IG5vCiAgICBjaGFyZ2UgdG8gYWxsIHRoaXJkIHBhcnRpZXMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZS4KCiAgICBkKSBJZiBhIGZhY2lsaXR5IGluIHRoZSBtb2RpZmllZCBMaWJyYXJ5IHJlZmVycyB0byBhIGZ1bmN0aW9uIG9yIGEKICAgIHRhYmxlIG9mIGRhdGEgdG8gYmUgc3VwcGxpZWQgYnkgYW4gYXBwbGljYXRpb24gcHJvZ3JhbSB0aGF0IHVzZXMKICAgIHRoZSBmYWNpbGl0eSwgb3RoZXIgdGhhbiBhcyBhbiBhcmd1bWVudCBwYXNzZWQgd2hlbiB0aGUgZmFjaWxpdHkKICAgIGlzIGludm9rZWQsIHRoZW4geW91IG11c3QgbWFrZSBhIGdvb2QgZmFpdGggZWZmb3J0IHRvIGVuc3VyZSB0aGF0LAogICAgaW4gdGhlIGV2ZW50IGFuIGFwcGxpY2F0aW9uIGRvZXMgbm90IHN1cHBseSBzdWNoIGZ1bmN0aW9uIG9yCiAgICB0YWJsZSwgdGhlIGZhY2lsaXR5IHN0aWxsIG9wZXJhdGVzLCBhbmQgcGVyZm9ybXMgd2hhdGV2ZXIgcGFydCBvZgogICAgaXRzIHB1cnBvc2UgcmVtYWlucyBtZWFuaW5nZnVsLgoKICAgIChGb3IgZXhhbXBsZSwgYSBmdW5jdGlvbiBpbiBhIGxpYnJhcnkgdG8gY29tcHV0ZSBzcXVhcmUgcm9vdHMgaGFzCiAgICBhIHB1cnBvc2UgdGhhdCBpcyBlbnRpcmVseSB3ZWxsLWRlZmluZWQgaW5kZXBlbmRlbnQgb2YgdGhlCiAgICBhcHBsaWNhdGlvbi4gIFRoZXJlZm9yZSwgU3Vic2VjdGlvbiAyZCByZXF1aXJlcyB0aGF0IGFueQogICAgYXBwbGljYXRpb24tc3VwcGxpZWQgZnVuY3Rpb24gb3IgdGFibGUgdXNlZCBieSB0aGlzIGZ1bmN0aW9uIG11c3QKICAgIGJlIG9wdGlvbmFsOiBpZiB0aGUgYXBwbGljYXRpb24gZG9lcyBub3Qgc3VwcGx5IGl0LCB0aGUgc3F1YXJlCiAgICByb290IGZ1bmN0aW9uIG11c3Qgc3RpbGwgY29tcHV0ZSBzcXVhcmUgcm9vdHMuKQoKVGhlc2UgcmVxdWlyZW1lbnRzIGFwcGx5IHRvIHRoZSBtb2RpZmllZCB3b3JrIGFzIGEgd2hvbGUuICBJZgppZGVudGlmaWFibGUgc2VjdGlvbnMgb2YgdGhhdCB3b3JrIGFyZSBub3QgZGVyaXZlZCBmcm9tIHRoZSBMaWJyYXJ5LAphbmQgY2FuIGJlIHJlYXNvbmFibHkgY29uc2lkZXJlZCBpbmRlcGVuZGVudCBhbmQgc2VwYXJhdGUgd29ya3MgaW4KdGhlbXNlbHZlcywgdGhlbiB0aGlzIExpY2Vuc2UsIGFuZCBpdHMgdGVybXMsIGRvIG5vdCBhcHBseSB0byB0aG9zZQpzZWN0aW9ucyB3aGVuIHlvdSBkaXN0cmlidXRlIHRoZW0gYXMgc2VwYXJhdGUgd29ya3MuICBCdXQgd2hlbiB5b3UKZGlzdHJpYnV0ZSB0aGUgc2FtZSBzZWN0aW9ucyBhcyBwYXJ0IG9mIGEgd2hvbGUgd2hpY2ggaXMgYSB3b3JrIGJhc2VkCm9uIHRoZSBMaWJyYXJ5LCB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSB3aG9sZSBtdXN0IGJlIG9uIHRoZSB0ZXJtcyBvZgp0aGlzIExpY2Vuc2UsIHdob3NlIHBlcm1pc3Npb25zIGZvciBvdGhlciBsaWNlbnNlZXMgZXh0ZW5kIHRvIHRoZQplbnRpcmUgd2hvbGUsIGFuZCB0aHVzIHRvIGVhY2ggYW5kIGV2ZXJ5IHBhcnQgcmVnYXJkbGVzcyBvZiB3aG8gd3JvdGUKaXQuCgpUaHVzLCBpdCBpcyBub3QgdGhlIGludGVudCBvZiB0aGlzIHNlY3Rpb24gdG8gY2xhaW0gcmlnaHRzIG9yIGNvbnRlc3QKeW91ciByaWdodHMgdG8gd29yayB3cml0dGVuIGVudGlyZWx5IGJ5IHlvdTsgcmF0aGVyLCB0aGUgaW50ZW50IGlzIHRvCmV4ZXJjaXNlIHRoZSByaWdodCB0byBjb250cm9sIHRoZSBkaXN0cmlidXRpb24gb2YgZGVyaXZhdGl2ZSBvcgpjb2xsZWN0aXZlIHdvcmtzIGJhc2VkIG9uIHRoZSBMaWJyYXJ5LgoKSW4gYWRkaXRpb24sIG1lcmUgYWdncmVnYXRpb24gb2YgYW5vdGhlciB3b3JrIG5vdCBiYXNlZCBvbiB0aGUgTGlicmFyeQp3aXRoIHRoZSBMaWJyYXJ5IChvciB3aXRoIGEgd29yayBiYXNlZCBvbiB0aGUgTGlicmFyeSkgb24gYSB2b2x1bWUgb2YKYSBzdG9yYWdlIG9yIGRpc3RyaWJ1dGlvbiBtZWRpdW0gZG9lcyBub3QgYnJpbmcgdGhlIG90aGVyIHdvcmsgdW5kZXIKdGhlIHNjb3BlIG9mIHRoaXMgTGljZW5zZS4KCiAgMy4gWW91IG1heSBvcHQgdG8gYXBwbHkgdGhlIHRlcm1zIG9mIHRoZSBvcmRpbmFyeSBHTlUgR2VuZXJhbCBQdWJsaWMKTGljZW5zZSBpbnN0ZWFkIG9mIHRoaXMgTGljZW5zZSB0byBhIGdpdmVuIGNvcHkgb2YgdGhlIExpYnJhcnkuICBUbyBkbwp0aGlzLCB5b3UgbXVzdCBhbHRlciBhbGwgdGhlIG5vdGljZXMgdGhhdCByZWZlciB0byB0aGlzIExpY2Vuc2UsIHNvCnRoYXQgdGhleSByZWZlciB0byB0aGUgb3JkaW5hcnkgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMiwKaW5zdGVhZCBvZiB0byB0aGlzIExpY2Vuc2UuICAoSWYgYSBuZXdlciB2ZXJzaW9uIHRoYW4gdmVyc2lvbiAyIG9mIHRoZQpvcmRpbmFyeSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBoYXMgYXBwZWFyZWQsIHRoZW4geW91IGNhbiBzcGVjaWZ5CnRoYXQgdmVyc2lvbiBpbnN0ZWFkIGlmIHlvdSB3aXNoLikgIERvIG5vdCBtYWtlIGFueSBvdGhlciBjaGFuZ2UgaW4KdGhlc2Ugbm90aWNlcy4KDAogIE9uY2UgdGhpcyBjaGFuZ2UgaXMgbWFkZSBpbiBhIGdpdmVuIGNvcHksIGl0IGlzIGlycmV2ZXJzaWJsZSBmb3IKdGhhdCBjb3B5LCBzbyB0aGUgb3JkaW5hcnkgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXBwbGllcyB0byBhbGwKc3Vic2VxdWVudCBjb3BpZXMgYW5kIGRlcml2YXRpdmUgd29ya3MgbWFkZSBmcm9tIHRoYXQgY29weS4KCiAgVGhpcyBvcHRpb24gaXMgdXNlZnVsIHdoZW4geW91IHdpc2ggdG8gY29weSBwYXJ0IG9mIHRoZSBjb2RlIG9mCnRoZSBMaWJyYXJ5IGludG8gYSBwcm9ncmFtIHRoYXQgaXMgbm90IGEgbGlicmFyeS4KCiAgNC4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IChvciBhIHBvcnRpb24gb3IKZGVyaXZhdGl2ZSBvZiBpdCwgdW5kZXIgU2VjdGlvbiAyKSBpbiBvYmplY3QgY29kZSBvciBleGVjdXRhYmxlIGZvcm0KdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zIDEgYW5kIDIgYWJvdmUgcHJvdmlkZWQgdGhhdCB5b3UgYWNjb21wYW55Cml0IHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcgbWFjaGluZS1yZWFkYWJsZSBzb3VyY2UgY29kZSwgd2hpY2gKbXVzdCBiZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBvbiBhCm1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZS4KCiAgSWYgZGlzdHJpYnV0aW9uIG9mIG9iamVjdCBjb2RlIGlzIG1hZGUgYnkgb2ZmZXJpbmcgYWNjZXNzIHRvIGNvcHkKZnJvbSBhIGRlc2lnbmF0ZWQgcGxhY2UsIHRoZW4gb2ZmZXJpbmcgZXF1aXZhbGVudCBhY2Nlc3MgdG8gY29weSB0aGUKc291cmNlIGNvZGUgZnJvbSB0aGUgc2FtZSBwbGFjZSBzYXRpc2ZpZXMgdGhlIHJlcXVpcmVtZW50IHRvCmRpc3RyaWJ1dGUgdGhlIHNvdXJjZSBjb2RlLCBldmVuIHRob3VnaCB0aGlyZCBwYXJ0aWVzIGFyZSBub3QKY29tcGVsbGVkIHRvIGNvcHkgdGhlIHNvdXJjZSBhbG9uZyB3aXRoIHRoZSBvYmplY3QgY29kZS4KCiAgNS4gQSBwcm9ncmFtIHRoYXQgY29udGFpbnMgbm8gZGVyaXZhdGl2ZSBvZiBhbnkgcG9ydGlvbiBvZiB0aGUKTGlicmFyeSwgYnV0IGlzIGRlc2lnbmVkIHRvIHdvcmsgd2l0aCB0aGUgTGlicmFyeSBieSBiZWluZyBjb21waWxlZCBvcgpsaW5rZWQgd2l0aCBpdCwgaXMgY2FsbGVkIGEgIndvcmsgdGhhdCB1c2VzIHRoZSBMaWJyYXJ5Ii4gIFN1Y2ggYQp3b3JrLCBpbiBpc29sYXRpb24sIGlzIG5vdCBhIGRlcml2YXRpdmUgd29yayBvZiB0aGUgTGlicmFyeSwgYW5kCnRoZXJlZm9yZSBmYWxscyBvdXRzaWRlIHRoZSBzY29wZSBvZiB0aGlzIExpY2Vuc2UuCgogIEhvd2V2ZXIsIGxpbmtpbmcgYSAid29yayB0aGF0IHVzZXMgdGhlIExpYnJhcnkiIHdpdGggdGhlIExpYnJhcnkKY3JlYXRlcyBhbiBleGVjdXRhYmxlIHRoYXQgaXMgYSBkZXJpdmF0aXZlIG9mIHRoZSBMaWJyYXJ5IChiZWNhdXNlIGl0CmNvbnRhaW5zIHBvcnRpb25zIG9mIHRoZSBMaWJyYXJ5KSwgcmF0aGVyIHRoYW4gYSAid29yayB0aGF0IHVzZXMgdGhlCmxpYnJhcnkiLiAgVGhlIGV4ZWN1dGFibGUgaXMgdGhlcmVmb3JlIGNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlLgpTZWN0aW9uIDYgc3RhdGVzIHRlcm1zIGZvciBkaXN0cmlidXRpb24gb2Ygc3VjaCBleGVjdXRhYmxlcy4KCiAgV2hlbiBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgTGlicmFyeSIgdXNlcyBtYXRlcmlhbCBmcm9tIGEgaGVhZGVyIGZpbGUKdGhhdCBpcyBwYXJ0IG9mIHRoZSBMaWJyYXJ5LCB0aGUgb2JqZWN0IGNvZGUgZm9yIHRoZSB3b3JrIG1heSBiZSBhCmRlcml2YXRpdmUgd29yayBvZiB0aGUgTGlicmFyeSBldmVuIHRob3VnaCB0aGUgc291cmNlIGNvZGUgaXMgbm90LgpXaGV0aGVyIHRoaXMgaXMgdHJ1ZSBpcyBlc3BlY2lhbGx5IHNpZ25pZmljYW50IGlmIHRoZSB3b3JrIGNhbiBiZQpsaW5rZWQgd2l0aG91dCB0aGUgTGlicmFyeSwgb3IgaWYgdGhlIHdvcmsgaXMgaXRzZWxmIGEgbGlicmFyeS4gIFRoZQp0aHJlc2hvbGQgZm9yIHRoaXMgdG8gYmUgdHJ1ZSBpcyBub3QgcHJlY2lzZWx5IGRlZmluZWQgYnkgbGF3LgoKICBJZiBzdWNoIGFuIG9iamVjdCBmaWxlIHVzZXMgb25seSBudW1lcmljYWwgcGFyYW1ldGVycywgZGF0YQpzdHJ1Y3R1cmUgbGF5b3V0cyBhbmQgYWNjZXNzb3JzLCBhbmQgc21hbGwgbWFjcm9zIGFuZCBzbWFsbCBpbmxpbmUKZnVuY3Rpb25zICh0ZW4gbGluZXMgb3IgbGVzcyBpbiBsZW5ndGgpLCB0aGVuIHRoZSB1c2Ugb2YgdGhlIG9iamVjdApmaWxlIGlzIHVucmVzdHJpY3RlZCwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGlzIGxlZ2FsbHkgYSBkZXJpdmF0aXZlCndvcmsuICAoRXhlY3V0YWJsZXMgY29udGFpbmluZyB0aGlzIG9iamVjdCBjb2RlIHBsdXMgcG9ydGlvbnMgb2YgdGhlCkxpYnJhcnkgd2lsbCBzdGlsbCBmYWxsIHVuZGVyIFNlY3Rpb24gNi4pCgogIE90aGVyd2lzZSwgaWYgdGhlIHdvcmsgaXMgYSBkZXJpdmF0aXZlIG9mIHRoZSBMaWJyYXJ5LCB5b3UgbWF5CmRpc3RyaWJ1dGUgdGhlIG9iamVjdCBjb2RlIGZvciB0aGUgd29yayB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbiA2LgpBbnkgZXhlY3V0YWJsZXMgY29udGFpbmluZyB0aGF0IHdvcmsgYWxzbyBmYWxsIHVuZGVyIFNlY3Rpb24gNiwKd2hldGhlciBvciBub3QgdGhleSBhcmUgbGlua2VkIGRpcmVjdGx5IHdpdGggdGhlIExpYnJhcnkgaXRzZWxmLgoMCiAgNi4gQXMgYW4gZXhjZXB0aW9uIHRvIHRoZSBTZWN0aW9ucyBhYm92ZSwgeW91IG1heSBhbHNvIGNvbWJpbmUgb3IKbGluayBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgTGlicmFyeSIgd2l0aCB0aGUgTGlicmFyeSB0byBwcm9kdWNlIGEKd29yayBjb250YWluaW5nIHBvcnRpb25zIG9mIHRoZSBMaWJyYXJ5LCBhbmQgZGlzdHJpYnV0ZSB0aGF0IHdvcmsKdW5kZXIgdGVybXMgb2YgeW91ciBjaG9pY2UsIHByb3ZpZGVkIHRoYXQgdGhlIHRlcm1zIHBlcm1pdAptb2RpZmljYXRpb24gb2YgdGhlIHdvcmsgZm9yIHRoZSBjdXN0b21lcidzIG93biB1c2UgYW5kIHJldmVyc2UKZW5naW5lZXJpbmcgZm9yIGRlYnVnZ2luZyBzdWNoIG1vZGlmaWNhdGlvbnMuCgogIFlvdSBtdXN0IGdpdmUgcHJvbWluZW50IG5vdGljZSB3aXRoIGVhY2ggY29weSBvZiB0aGUgd29yayB0aGF0IHRoZQpMaWJyYXJ5IGlzIHVzZWQgaW4gaXQgYW5kIHRoYXQgdGhlIExpYnJhcnkgYW5kIGl0cyB1c2UgYXJlIGNvdmVyZWQgYnkKdGhpcyBMaWNlbnNlLiAgWW91IG11c3Qgc3VwcGx5IGEgY29weSBvZiB0aGlzIExpY2Vuc2UuICBJZiB0aGUgd29yawpkdXJpbmcgZXhlY3V0aW9uIGRpc3BsYXlzIGNvcHlyaWdodCBub3RpY2VzLCB5b3UgbXVzdCBpbmNsdWRlIHRoZQpjb3B5cmlnaHQgbm90aWNlIGZvciB0aGUgTGlicmFyeSBhbW9uZyB0aGVtLCBhcyB3ZWxsIGFzIGEgcmVmZXJlbmNlCmRpcmVjdGluZyB0aGUgdXNlciB0byB0aGUgY29weSBvZiB0aGlzIExpY2Vuc2UuICBBbHNvLCB5b3UgbXVzdCBkbyBvbmUKb2YgdGhlc2UgdGhpbmdzOgoKICAgIGEpIEFjY29tcGFueSB0aGUgd29yayB3aXRoIHRoZSBjb21wbGV0ZSBjb3JyZXNwb25kaW5nCiAgICBtYWNoaW5lLXJlYWRhYmxlIHNvdXJjZSBjb2RlIGZvciB0aGUgTGlicmFyeSBpbmNsdWRpbmcgd2hhdGV2ZXIKICAgIGNoYW5nZXMgd2VyZSB1c2VkIGluIHRoZSB3b3JrICh3aGljaCBtdXN0IGJlIGRpc3RyaWJ1dGVkIHVuZGVyCiAgICBTZWN0aW9ucyAxIGFuZCAyIGFib3ZlKTsgYW5kLCBpZiB0aGUgd29yayBpcyBhbiBleGVjdXRhYmxlIGxpbmtlZAogICAgd2l0aCB0aGUgTGlicmFyeSwgd2l0aCB0aGUgY29tcGxldGUgbWFjaGluZS1yZWFkYWJsZSAid29yayB0aGF0CiAgICB1c2VzIHRoZSBMaWJyYXJ5IiwgYXMgb2JqZWN0IGNvZGUgYW5kL29yIHNvdXJjZSBjb2RlLCBzbyB0aGF0IHRoZQogICAgdXNlciBjYW4gbW9kaWZ5IHRoZSBMaWJyYXJ5IGFuZCB0aGVuIHJlbGluayB0byBwcm9kdWNlIGEgbW9kaWZpZWQKICAgIGV4ZWN1dGFibGUgY29udGFpbmluZyB0aGUgbW9kaWZpZWQgTGlicmFyeS4gIChJdCBpcyB1bmRlcnN0b29kCiAgICB0aGF0IHRoZSB1c2VyIHdobyBjaGFuZ2VzIHRoZSBjb250ZW50cyBvZiBkZWZpbml0aW9ucyBmaWxlcyBpbiB0aGUKICAgIExpYnJhcnkgd2lsbCBub3QgbmVjZXNzYXJpbHkgYmUgYWJsZSB0byByZWNvbXBpbGUgdGhlIGFwcGxpY2F0aW9uCiAgICB0byB1c2UgdGhlIG1vZGlmaWVkIGRlZmluaXRpb25zLikKCiAgICBiKSBVc2UgYSBzdWl0YWJsZSBzaGFyZWQgbGlicmFyeSBtZWNoYW5pc20gZm9yIGxpbmtpbmcgd2l0aCB0aGUKICAgIExpYnJhcnkuICBBIHN1aXRhYmxlIG1lY2hhbmlzbSBpcyBvbmUgdGhhdCAoMSkgdXNlcyBhdCBydW4gdGltZSBhCiAgICBjb3B5IG9mIHRoZSBsaWJyYXJ5IGFscmVhZHkgcHJlc2VudCBvbiB0aGUgdXNlcidzIGNvbXB1dGVyIHN5c3RlbSwKICAgIHJhdGhlciB0aGFuIGNvcHlpbmcgbGlicmFyeSBmdW5jdGlvbnMgaW50byB0aGUgZXhlY3V0YWJsZSwgYW5kICgyKQogICAgd2lsbCBvcGVyYXRlIHByb3Blcmx5IHdpdGggYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCBpZgogICAgdGhlIHVzZXIgaW5zdGFsbHMgb25lLCBhcyBsb25nIGFzIHRoZSBtb2RpZmllZCB2ZXJzaW9uIGlzCiAgICBpbnRlcmZhY2UtY29tcGF0aWJsZSB3aXRoIHRoZSB2ZXJzaW9uIHRoYXQgdGhlIHdvcmsgd2FzIG1hZGUgd2l0aC4KCiAgICBjKSBBY2NvbXBhbnkgdGhlIHdvcmsgd2l0aCBhIHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZvciBhdAogICAgbGVhc3QgdGhyZWUgeWVhcnMsIHRvIGdpdmUgdGhlIHNhbWUgdXNlciB0aGUgbWF0ZXJpYWxzCiAgICBzcGVjaWZpZWQgaW4gU3Vic2VjdGlvbiA2YSwgYWJvdmUsIGZvciBhIGNoYXJnZSBubyBtb3JlCiAgICB0aGFuIHRoZSBjb3N0IG9mIHBlcmZvcm1pbmcgdGhpcyBkaXN0cmlidXRpb24uCgogICAgZCkgSWYgZGlzdHJpYnV0aW9uIG9mIHRoZSB3b3JrIGlzIG1hZGUgYnkgb2ZmZXJpbmcgYWNjZXNzIHRvIGNvcHkKICAgIGZyb20gYSBkZXNpZ25hdGVkIHBsYWNlLCBvZmZlciBlcXVpdmFsZW50IGFjY2VzcyB0byBjb3B5IHRoZSBhYm92ZQogICAgc3BlY2lmaWVkIG1hdGVyaWFscyBmcm9tIHRoZSBzYW1lIHBsYWNlLgoKICAgIGUpIFZlcmlmeSB0aGF0IHRoZSB1c2VyIGhhcyBhbHJlYWR5IHJlY2VpdmVkIGEgY29weSBvZiB0aGVzZQogICAgbWF0ZXJpYWxzIG9yIHRoYXQgeW91IGhhdmUgYWxyZWFkeSBzZW50IHRoaXMgdXNlciBhIGNvcHkuCgogIEZvciBhbiBleGVjdXRhYmxlLCB0aGUgcmVxdWlyZWQgZm9ybSBvZiB0aGUgIndvcmsgdGhhdCB1c2VzIHRoZQpMaWJyYXJ5IiBtdXN0IGluY2x1ZGUgYW55IGRhdGEgYW5kIHV0aWxpdHkgcHJvZ3JhbXMgbmVlZGVkIGZvcgpyZXByb2R1Y2luZyB0aGUgZXhlY3V0YWJsZSBmcm9tIGl0LiAgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwKdGhlIG1hdGVyaWFscyB0byBiZSBkaXN0cmlidXRlZCBuZWVkIG5vdCBpbmNsdWRlIGFueXRoaW5nIHRoYXQgaXMKbm9ybWFsbHkgZGlzdHJpYnV0ZWQgKGluIGVpdGhlciBzb3VyY2Ugb3IgYmluYXJ5IGZvcm0pIHdpdGggdGhlIG1ham9yCmNvbXBvbmVudHMgKGNvbXBpbGVyLCBrZXJuZWwsIGFuZCBzbyBvbikgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0gb24Kd2hpY2ggdGhlIGV4ZWN1dGFibGUgcnVucywgdW5sZXNzIHRoYXQgY29tcG9uZW50IGl0c2VsZiBhY2NvbXBhbmllcwp0aGUgZXhlY3V0YWJsZS4KCiAgSXQgbWF5IGhhcHBlbiB0aGF0IHRoaXMgcmVxdWlyZW1lbnQgY29udHJhZGljdHMgdGhlIGxpY2Vuc2UKcmVzdHJpY3Rpb25zIG9mIG90aGVyIHByb3ByaWV0YXJ5IGxpYnJhcmllcyB0aGF0IGRvIG5vdCBub3JtYWxseQphY2NvbXBhbnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0uICBTdWNoIGEgY29udHJhZGljdGlvbiBtZWFucyB5b3UgY2Fubm90CnVzZSBib3RoIHRoZW0gYW5kIHRoZSBMaWJyYXJ5IHRvZ2V0aGVyIGluIGFuIGV4ZWN1dGFibGUgdGhhdCB5b3UKZGlzdHJpYnV0ZS4KDAogIDcuIFlvdSBtYXkgcGxhY2UgbGlicmFyeSBmYWNpbGl0aWVzIHRoYXQgYXJlIGEgd29yayBiYXNlZCBvbiB0aGUKTGlicmFyeSBzaWRlLWJ5LXNpZGUgaW4gYSBzaW5nbGUgbGlicmFyeSB0b2dldGhlciB3aXRoIG90aGVyIGxpYnJhcnkKZmFjaWxpdGllcyBub3QgY292ZXJlZCBieSB0aGlzIExpY2Vuc2UsIGFuZCBkaXN0cmlidXRlIHN1Y2ggYSBjb21iaW5lZApsaWJyYXJ5LCBwcm92aWRlZCB0aGF0IHRoZSBzZXBhcmF0ZSBkaXN0cmlidXRpb24gb2YgdGhlIHdvcmsgYmFzZWQgb24KdGhlIExpYnJhcnkgYW5kIG9mIHRoZSBvdGhlciBsaWJyYXJ5IGZhY2lsaXRpZXMgaXMgb3RoZXJ3aXNlCnBlcm1pdHRlZCwgYW5kIHByb3ZpZGVkIHRoYXQgeW91IGRvIHRoZXNlIHR3byB0aGluZ3M6CgogICAgYSkgQWNjb21wYW55IHRoZSBjb21iaW5lZCBsaWJyYXJ5IHdpdGggYSBjb3B5IG9mIHRoZSBzYW1lIHdvcmsKICAgIGJhc2VkIG9uIHRoZSBMaWJyYXJ5LCB1bmNvbWJpbmVkIHdpdGggYW55IG90aGVyIGxpYnJhcnkKICAgIGZhY2lsaXRpZXMuICBUaGlzIG11c3QgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQogICAgU2VjdGlvbnMgYWJvdmUuCgogICAgYikgR2l2ZSBwcm9taW5lbnQgbm90aWNlIHdpdGggdGhlIGNvbWJpbmVkIGxpYnJhcnkgb2YgdGhlIGZhY3QKICAgIHRoYXQgcGFydCBvZiBpdCBpcyBhIHdvcmsgYmFzZWQgb24gdGhlIExpYnJhcnksIGFuZCBleHBsYWluaW5nCiAgICB3aGVyZSB0byBmaW5kIHRoZSBhY2NvbXBhbnlpbmcgdW5jb21iaW5lZCBmb3JtIG9mIHRoZSBzYW1lIHdvcmsuCgogIDguIFlvdSBtYXkgbm90IGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSwgbGluayB3aXRoLCBvciBkaXN0cmlidXRlCnRoZSBMaWJyYXJ5IGV4Y2VwdCBhcyBleHByZXNzbHkgcHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQW55CmF0dGVtcHQgb3RoZXJ3aXNlIHRvIGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSwgbGluayB3aXRoLCBvcgpkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IGlzIHZvaWQsIGFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgdGVybWluYXRlIHlvdXIKcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZS4gIEhvd2V2ZXIsIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzLApvciByaWdodHMsIGZyb20geW91IHVuZGVyIHRoaXMgTGljZW5zZSB3aWxsIG5vdCBoYXZlIHRoZWlyIGxpY2Vuc2VzCnRlcm1pbmF0ZWQgc28gbG9uZyBhcyBzdWNoIHBhcnRpZXMgcmVtYWluIGluIGZ1bGwgY29tcGxpYW5jZS4KCiAgOS4gWW91IGFyZSBub3QgcmVxdWlyZWQgdG8gYWNjZXB0IHRoaXMgTGljZW5zZSwgc2luY2UgeW91IGhhdmUgbm90CnNpZ25lZCBpdC4gIEhvd2V2ZXIsIG5vdGhpbmcgZWxzZSBncmFudHMgeW91IHBlcm1pc3Npb24gdG8gbW9kaWZ5IG9yCmRpc3RyaWJ1dGUgdGhlIExpYnJhcnkgb3IgaXRzIGRlcml2YXRpdmUgd29ya3MuICBUaGVzZSBhY3Rpb25zIGFyZQpwcm9oaWJpdGVkIGJ5IGxhdyBpZiB5b3UgZG8gbm90IGFjY2VwdCB0aGlzIExpY2Vuc2UuICBUaGVyZWZvcmUsIGJ5Cm1vZGlmeWluZyBvciBkaXN0cmlidXRpbmcgdGhlIExpYnJhcnkgKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQpMaWJyYXJ5KSwgeW91IGluZGljYXRlIHlvdXIgYWNjZXB0YW5jZSBvZiB0aGlzIExpY2Vuc2UgdG8gZG8gc28sIGFuZAphbGwgaXRzIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpbmcgb3IgbW9kaWZ5aW5nCnRoZSBMaWJyYXJ5IG9yIHdvcmtzIGJhc2VkIG9uIGl0LgoKICAxMC4gRWFjaCB0aW1lIHlvdSByZWRpc3RyaWJ1dGUgdGhlIExpYnJhcnkgKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQpMaWJyYXJ5KSwgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5IHJlY2VpdmVzIGEgbGljZW5zZSBmcm9tIHRoZQpvcmlnaW5hbCBsaWNlbnNvciB0byBjb3B5LCBkaXN0cmlidXRlLCBsaW5rIHdpdGggb3IgbW9kaWZ5IHRoZSBMaWJyYXJ5CnN1YmplY3QgdG8gdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMuICBZb3UgbWF5IG5vdCBpbXBvc2UgYW55IGZ1cnRoZXIKcmVzdHJpY3Rpb25zIG9uIHRoZSByZWNpcGllbnRzJyBleGVyY2lzZSBvZiB0aGUgcmlnaHRzIGdyYW50ZWQgaGVyZWluLgpZb3UgYXJlIG5vdCByZXNwb25zaWJsZSBmb3IgZW5mb3JjaW5nIGNvbXBsaWFuY2UgYnkgdGhpcmQgcGFydGllcyB3aXRoCnRoaXMgTGljZW5zZS4KDAogIDExLiBJZiwgYXMgYSBjb25zZXF1ZW5jZSBvZiBhIGNvdXJ0IGp1ZGdtZW50IG9yIGFsbGVnYXRpb24gb2YgcGF0ZW50CmluZnJpbmdlbWVudCBvciBmb3IgYW55IG90aGVyIHJlYXNvbiAobm90IGxpbWl0ZWQgdG8gcGF0ZW50IGlzc3VlcyksCmNvbmRpdGlvbnMgYXJlIGltcG9zZWQgb24geW91ICh3aGV0aGVyIGJ5IGNvdXJ0IG9yZGVyLCBhZ3JlZW1lbnQgb3IKb3RoZXJ3aXNlKSB0aGF0IGNvbnRyYWRpY3QgdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLCB0aGV5IGRvIG5vdApleGN1c2UgeW91IGZyb20gdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLiAgSWYgeW91IGNhbm5vdApkaXN0cmlidXRlIHNvIGFzIHRvIHNhdGlzZnkgc2ltdWx0YW5lb3VzbHkgeW91ciBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzCkxpY2Vuc2UgYW5kIGFueSBvdGhlciBwZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5jZSB5b3UKbWF5IG5vdCBkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiBhIHBhdGVudApsaWNlbnNlIHdvdWxkIG5vdCBwZXJtaXQgcm95YWx0eS1mcmVlIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBMaWJyYXJ5IGJ5CmFsbCB0aG9zZSB3aG8gcmVjZWl2ZSBjb3BpZXMgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHlvdSwgdGhlbgp0aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCBpdCBhbmQgdGhpcyBMaWNlbnNlIHdvdWxkIGJlIHRvCnJlZnJhaW4gZW50aXJlbHkgZnJvbSBkaXN0cmlidXRpb24gb2YgdGhlIExpYnJhcnkuCgpJZiBhbnkgcG9ydGlvbiBvZiB0aGlzIHNlY3Rpb24gaXMgaGVsZCBpbnZhbGlkIG9yIHVuZW5mb3JjZWFibGUgdW5kZXIgYW55CnBhcnRpY3VsYXIgY2lyY3Vtc3RhbmNlLCB0aGUgYmFsYW5jZSBvZiB0aGUgc2VjdGlvbiBpcyBpbnRlbmRlZCB0byBhcHBseSwKYW5kIHRoZSBzZWN0aW9uIGFzIGEgd2hvbGUgaXMgaW50ZW5kZWQgdG8gYXBwbHkgaW4gb3RoZXIgY2lyY3Vtc3RhbmNlcy4KCkl0IGlzIG5vdCB0aGUgcHVycG9zZSBvZiB0aGlzIHNlY3Rpb24gdG8gaW5kdWNlIHlvdSB0byBpbmZyaW5nZSBhbnkKcGF0ZW50cyBvciBvdGhlciBwcm9wZXJ0eSByaWdodCBjbGFpbXMgb3IgdG8gY29udGVzdCB2YWxpZGl0eSBvZiBhbnkKc3VjaCBjbGFpbXM7IHRoaXMgc2VjdGlvbiBoYXMgdGhlIHNvbGUgcHVycG9zZSBvZiBwcm90ZWN0aW5nIHRoZQppbnRlZ3JpdHkgb2YgdGhlIGZyZWUgc29mdHdhcmUgZGlzdHJpYnV0aW9uIHN5c3RlbSB3aGljaCBpcwppbXBsZW1lbnRlZCBieSBwdWJsaWMgbGljZW5zZSBwcmFjdGljZXMuICBNYW55IHBlb3BsZSBoYXZlIG1hZGUKZ2VuZXJvdXMgY29udHJpYnV0aW9ucyB0byB0aGUgd2lkZSByYW5nZSBvZiBzb2Z0d2FyZSBkaXN0cmlidXRlZAp0aHJvdWdoIHRoYXQgc3lzdGVtIGluIHJlbGlhbmNlIG9uIGNvbnNpc3RlbnQgYXBwbGljYXRpb24gb2YgdGhhdApzeXN0ZW07IGl0IGlzIHVwIHRvIHRoZSBhdXRob3IvZG9ub3IgdG8gZGVjaWRlIGlmIGhlIG9yIHNoZSBpcyB3aWxsaW5nCnRvIGRpc3RyaWJ1dGUgc29mdHdhcmUgdGhyb3VnaCBhbnkgb3RoZXIgc3lzdGVtIGFuZCBhIGxpY2Vuc2VlIGNhbm5vdAppbXBvc2UgdGhhdCBjaG9pY2UuCgpUaGlzIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8gbWFrZSB0aG9yb3VnaGx5IGNsZWFyIHdoYXQgaXMgYmVsaWV2ZWQgdG8KYmUgYSBjb25zZXF1ZW5jZSBvZiB0aGUgcmVzdCBvZiB0aGlzIExpY2Vuc2UuCgogIDEyLiBJZiB0aGUgZGlzdHJpYnV0aW9uIGFuZC9vciB1c2Ugb2YgdGhlIExpYnJhcnkgaXMgcmVzdHJpY3RlZCBpbgpjZXJ0YWluIGNvdW50cmllcyBlaXRoZXIgYnkgcGF0ZW50cyBvciBieSBjb3B5cmlnaHRlZCBpbnRlcmZhY2VzLCB0aGUKb3JpZ2luYWwgY29weXJpZ2h0IGhvbGRlciB3aG8gcGxhY2VzIHRoZSBMaWJyYXJ5IHVuZGVyIHRoaXMgTGljZW5zZSBtYXkgYWRkCmFuIGV4cGxpY2l0IGdlb2dyYXBoaWNhbCBkaXN0cmlidXRpb24gbGltaXRhdGlvbiBleGNsdWRpbmcgdGhvc2UgY291bnRyaWVzLApzbyB0aGF0IGRpc3RyaWJ1dGlvbiBpcyBwZXJtaXR0ZWQgb25seSBpbiBvciBhbW9uZyBjb3VudHJpZXMgbm90IHRodXMKZXhjbHVkZWQuICBJbiBzdWNoIGNhc2UsIHRoaXMgTGljZW5zZSBpbmNvcnBvcmF0ZXMgdGhlIGxpbWl0YXRpb24gYXMgaWYKd3JpdHRlbiBpbiB0aGUgYm9keSBvZiB0aGlzIExpY2Vuc2UuCgogIDEzLiBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldwp2ZXJzaW9ucyBvZiB0aGUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuClN1Y2ggbmV3IHZlcnNpb25zIHdpbGwgYmUgc2ltaWxhciBpbiBzcGlyaXQgdG8gdGhlIHByZXNlbnQgdmVyc2lvbiwKYnV0IG1heSBkaWZmZXIgaW4gZGV0YWlsIHRvIGFkZHJlc3MgbmV3IHByb2JsZW1zIG9yIGNvbmNlcm5zLgoKRWFjaCB2ZXJzaW9uIGlzIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuICBJZiB0aGUgTGlicmFyeQpzcGVjaWZpZXMgYSB2ZXJzaW9uIG51bWJlciBvZiB0aGlzIExpY2Vuc2Ugd2hpY2ggYXBwbGllcyB0byBpdCBhbmQKImFueSBsYXRlciB2ZXJzaW9uIiwgeW91IGhhdmUgdGhlIG9wdGlvbiBvZiBmb2xsb3dpbmcgdGhlIHRlcm1zIGFuZApjb25kaXRpb25zIGVpdGhlciBvZiB0aGF0IHZlcnNpb24gb3Igb2YgYW55IGxhdGVyIHZlcnNpb24gcHVibGlzaGVkIGJ5CnRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uICBJZiB0aGUgTGlicmFyeSBkb2VzIG5vdCBzcGVjaWZ5IGEKbGljZW5zZSB2ZXJzaW9uIG51bWJlciwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQgYnkKdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KDAogIDE0LiBJZiB5b3Ugd2lzaCB0byBpbmNvcnBvcmF0ZSBwYXJ0cyBvZiB0aGUgTGlicmFyeSBpbnRvIG90aGVyIGZyZWUKcHJvZ3JhbXMgd2hvc2UgZGlzdHJpYnV0aW9uIGNvbmRpdGlvbnMgYXJlIGluY29tcGF0aWJsZSB3aXRoIHRoZXNlLAp3cml0ZSB0byB0aGUgYXV0aG9yIHRvIGFzayBmb3IgcGVybWlzc2lvbi4gIEZvciBzb2Z0d2FyZSB3aGljaCBpcwpjb3B5cmlnaHRlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3cml0ZSB0byB0aGUgRnJlZQpTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3ZSBzb21ldGltZXMgbWFrZSBleGNlcHRpb25zIGZvciB0aGlzLiAgT3VyCmRlY2lzaW9uIHdpbGwgYmUgZ3VpZGVkIGJ5IHRoZSB0d28gZ29hbHMgb2YgcHJlc2VydmluZyB0aGUgZnJlZSBzdGF0dXMKb2YgYWxsIGRlcml2YXRpdmVzIG9mIG91ciBmcmVlIHNvZnR3YXJlIGFuZCBvZiBwcm9tb3RpbmcgdGhlIHNoYXJpbmcKYW5kIHJldXNlIG9mIHNvZnR3YXJlIGdlbmVyYWxseS4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTyBXQVJSQU5UWQoKICAxNS4gQkVDQVVTRSBUSEUgTElCUkFSWSBJUyBMSUNFTlNFRCBGUkVFIE9GIENIQVJHRSwgVEhFUkUgSVMgTk8KV0FSUkFOVFkgRk9SIFRIRSBMSUJSQVJZLCBUTyBUSEUgRVhURU5UIFBFUk1JVFRFRCBCWSBBUFBMSUNBQkxFIExBVy4KRVhDRVBUIFdIRU4gT1RIRVJXSVNFIFNUQVRFRCBJTiBXUklUSU5HIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQvT1IKT1RIRVIgUEFSVElFUyBQUk9WSURFIFRIRSBMSUJSQVJZICJBUyBJUyIgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKS0lORCwgRUlUSEVSIEVYUFJFU1NFRCBPUiBJTVBMSUVELCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCklNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgpQVVJQT1NFLiAgVEhFIEVOVElSRSBSSVNLIEFTIFRPIFRIRSBRVUFMSVRZIEFORCBQRVJGT1JNQU5DRSBPRiBUSEUKTElCUkFSWSBJUyBXSVRIIFlPVS4gIFNIT1VMRCBUSEUgTElCUkFSWSBQUk9WRSBERUZFQ1RJVkUsIFlPVSBBU1NVTUUKVEhFIENPU1QgT0YgQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsIFJFUEFJUiBPUiBDT1JSRUNUSU9OLgoKICAxNi4gSU4gTk8gRVZFTlQgVU5MRVNTIFJFUVVJUkVEIEJZIEFQUExJQ0FCTEUgTEFXIE9SIEFHUkVFRCBUTyBJTgpXUklUSU5HIFdJTEwgQU5ZIENPUFlSSUdIVCBIT0xERVIsIE9SIEFOWSBPVEhFUiBQQVJUWSBXSE8gTUFZIE1PRElGWQpBTkQvT1IgUkVESVNUUklCVVRFIFRIRSBMSUJSQVJZIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVQpGT1IgREFNQUdFUywgSU5DTFVESU5HIEFOWSBHRU5FUkFMLCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SCkNPTlNFUVVFTlRJQUwgREFNQUdFUyBBUklTSU5HIE9VVCBPRiBUSEUgVVNFIE9SIElOQUJJTElUWSBUTyBVU0UgVEhFCkxJQlJBUlkgKElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gTE9TUyBPRiBEQVRBIE9SIERBVEEgQkVJTkcKUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJTkVEIEJZIFlPVSBPUiBUSElSRCBQQVJUSUVTIE9SIEEKRkFJTFVSRSBPRiBUSEUgTElCUkFSWSBUTyBPUEVSQVRFIFdJVEggQU5ZIE9USEVSIFNPRlRXQVJFKSwgRVZFTiBJRgpTVUNIIEhPTERFUiBPUiBPVEhFUiBQQVJUWSBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICkRBTUFHRVMuCgogICAgICAgICAgICAgICAgICAgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKDAogICAgICAgICAgIEhvdyB0byBBcHBseSBUaGVzZSBUZXJtcyB0byBZb3VyIE5ldyBMaWJyYXJpZXMKCiAgSWYgeW91IGRldmVsb3AgYSBuZXcgbGlicmFyeSwgYW5kIHlvdSB3YW50IGl0IHRvIGJlIG9mIHRoZSBncmVhdGVzdApwb3NzaWJsZSB1c2UgdG8gdGhlIHB1YmxpYywgd2UgcmVjb21tZW5kIG1ha2luZyBpdCBmcmVlIHNvZnR3YXJlIHRoYXQKZXZlcnlvbmUgY2FuIHJlZGlzdHJpYnV0ZSBhbmQgY2hhbmdlLiAgWW91IGNhbiBkbyBzbyBieSBwZXJtaXR0aW5nCnJlZGlzdHJpYnV0aW9uIHVuZGVyIHRoZXNlIHRlcm1zIChvciwgYWx0ZXJuYXRpdmVseSwgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQpvcmRpbmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKS4KCiAgVG8gYXBwbHkgdGhlc2UgdGVybXMsIGF0dGFjaCB0aGUgZm9sbG93aW5nIG5vdGljZXMgdG8gdGhlIGxpYnJhcnkuICBJdCBpcwpzYWZlc3QgdG8gYXR0YWNoIHRoZW0gdG8gdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGZpbGUgdG8gbW9zdCBlZmZlY3RpdmVseQpjb252ZXkgdGhlIGV4Y2x1c2lvbiBvZiB3YXJyYW50eTsgYW5kIGVhY2ggZmlsZSBzaG91bGQgaGF2ZSBhdCBsZWFzdCB0aGUKImNvcHlyaWdodCIgbGluZSBhbmQgYSBwb2ludGVyIHRvIHdoZXJlIHRoZSBmdWxsIG5vdGljZSBpcyBmb3VuZC4KCiAgICA8b25lIGxpbmUgdG8gZ2l2ZSB0aGUgbGlicmFyeSdzIG5hbWUgYW5kIGEgYnJpZWYgaWRlYSBvZiB3aGF0IGl0IGRvZXMuPgogICAgQ29weXJpZ2h0IChDKSA8eWVhcj4gIDxuYW1lIG9mIGF1dGhvcj4KCiAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgoKICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgoKICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQoKQWxzbyBhZGQgaW5mb3JtYXRpb24gb24gaG93IHRvIGNvbnRhY3QgeW91IGJ5IGVsZWN0cm9uaWMgYW5kIHBhcGVyIG1haWwuCgpZb3Ugc2hvdWxkIGFsc28gZ2V0IHlvdXIgZW1wbG95ZXIgKGlmIHlvdSB3b3JrIGFzIGEgcHJvZ3JhbW1lcikgb3IgeW91cgpzY2hvb2wsIGlmIGFueSwgdG8gc2lnbiBhICJjb3B5cmlnaHQgZGlzY2xhaW1lciIgZm9yIHRoZSBsaWJyYXJ5LCBpZgpuZWNlc3NhcnkuICBIZXJlIGlzIGEgc2FtcGxlOyBhbHRlciB0aGUgbmFtZXM6CgogIFlveW9keW5lLCBJbmMuLCBoZXJlYnkgZGlzY2xhaW1zIGFsbCBjb3B5cmlnaHQgaW50ZXJlc3QgaW4gdGhlCiAgbGlicmFyeSBgRnJvYicgKGEgbGlicmFyeSBmb3IgdHdlYWtpbmcga25vYnMpIHdyaXR0ZW4gYnkgSmFtZXMgUmFuZG9tIEhhY2tlci4KCiAgPHNpZ25hdHVyZSBvZiBUeSBDb29uPiwgMSBBcHJpbCAxOTkwCiAgVHkgQ29vbiwgUHJlc2lkZW50IG9mIFZpY2UKClRoYXQncyBhbGwgdGhlcmUgaXMgdG8gaXQhCg== + + + declared license of 'chardet' + LGPL + + + pkg:pypi/chardet@5.2.0 + + + https://chardet.readthedocs.io/ + from packaging metadata Project-URL: Documentation + + + https://github.com/chardet/chardet/issues + from packaging metadata Project-URL: Issue Tracker + + + https://github.com/chardet/chardet + from packaging metadata Project-URL: GitHub Project + + + https://github.com/chardet/chardet + from packaging metadata: Home-page + + + cryptography 43.0.1 @@ -480,250 +226,6 @@ SPDX-License-Identifier: BSD-2-Clause License :: OSI Approved :: BSD License - - declared license file: LICENSE - This software is made available under the terms of *either* of the licenses -found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made -under the terms of *both* these licenses. - - - - declared license file: LICENSE.APACHE - - Apache License - Version 2.0, January 2004 - https://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - https://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - - declared license file: LICENSE.BSD - Copyright (c) Individual contributors. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. Neither the name of PyCA Cryptography nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - @@ -737,40 +239,11 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. declared license file: AUTHORS - Stefan Kögl <stefan@skoegl.net> -Alexander Shorin <kxepal@gmail.com> -Christopher J. White <chris@grierwhite.com> - + U3RlZmFuIEvDtmdsIDxzdGVmYW5Ac2tvZWdsLm5ldD4KQWxleGFuZGVyIFNob3JpbiA8a3hlcGFsQGdtYWlsLmNvbT4KQ2hyaXN0b3BoZXIgSi4gV2hpdGUgPGNocmlzQGdyaWVyd2hpdGUuY29tPgo= declared license file: LICENSE.txt - Copyright (c) 2011 Stefan Kögl <stefan@skoegl.net> -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - + Q29weXJpZ2h0IChjKSAyMDExIFN0ZWZhbiBLw7ZnbCA8c3RlZmFuQHNrb2VnbC5uZXQ+CkFsbCByaWdodHMgcmVzZXJ2ZWQuCgpSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCmFyZSBtZXQ6CgoxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCjIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KMy4gVGhlIG5hbWUgb2YgdGhlIGF1dGhvciBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzCiAgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgoKVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IKSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUwpPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELgpJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsCklOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVApOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCkRBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQpUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCihJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgpUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgoK declared license of 'jsonpointer' @@ -795,458 +268,23 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. declared license file: AUTHORS.rst - The following organizations or individuals have contributed to this code: - -- Ayan Sinha Mahapatra @AyanSinhaMahapatra -- Carmen Bianca Bakker @carmenbianca -- Chin-Yeung Li @chinyeungli -- Dennis Clark @DennisClark -- John Horan @johnmhoran -- Jono Yang @JonoYang -- Max Mehl @mxmehl -- nexB Inc. @nexB -- Peter Kolbus @pkolbus -- Philippe Ombredanne @pombredanne -- Sebastian Schuberth @sschuberth -- Steven Esser @majurg -- Thomas Druez @tdruez - + VGhlIGZvbGxvd2luZyBvcmdhbml6YXRpb25zIG9yIGluZGl2aWR1YWxzIGhhdmUgY29udHJpYnV0ZWQgdG8gdGhpcyBjb2RlOgoKLSBBeWFuIFNpbmhhIE1haGFwYXRyYSBAQXlhblNpbmhhTWFoYXBhdHJhCi0gQ2FybWVuIEJpYW5jYSBCYWtrZXIgQGNhcm1lbmJpYW5jYQotIENoaW4tWWV1bmcgTGkgQGNoaW55ZXVuZ2xpCi0gRGVubmlzIENsYXJrIEBEZW5uaXNDbGFyawotIEpvaG4gSG9yYW4gQGpvaG5taG9yYW4KLSBKb25vIFlhbmcgQEpvbm9ZYW5nCi0gTWF4IE1laGwgQG14bWVobAotIG5leEIgSW5jLiBAbmV4QgotIFBldGVyIEtvbGJ1cyBAcGtvbGJ1cwotIFBoaWxpcHBlIE9tYnJlZGFubmUgQHBvbWJyZWRhbm5lCi0gU2ViYXN0aWFuIFNjaHViZXJ0aCBAc3NjaHViZXJ0aAotIFN0ZXZlbiBFc3NlciBAbWFqdXJnCi0gVGhvbWFzIERydWV6IEB0ZHJ1ZXoK declared license file: CHANGELOG.rst - Changelog -========= - -v30.3.0 - 2024-03-18 --------------------- - -This is a minor release without API changes: - -- Use latest skeleton -- Update license list to latest ScanCode and SPDX 3.23 -- Drop support for Python 3.7 - -v30.2.0 - 2023-11-29 --------------------- - -This is a minor release without API changes: - -- Use latest skeleton -- Update license list to latest ScanCode and SPDX 3.22 -- Add Python 3.12 support in CI - - -v30.1.1 - 2023-01-16 ----------------------- - -This is a minor dot release without API changes - -- Use latest skeleton -- Update license list to latest ScanCode and SPDX 3.20 - - -v30.1.0 - 2023-01-16 ----------------------- - -This is a minor release without API changes - -- Use latest skeleton (and updated configure script) -- Update license list to latest ScanCode and SPDX 3.19 -- Use correct syntax for python_require -- Drop using Travis and Appveyor -- Drop support for Python 3.7 and add Python 3.11 in CI - - -v30.0.0 - 2022-05-10 ----------------------- - -This is a minor release with API changes - -- Use latest skeleton (and updated configure script) -- Drop using calver -- Improve error checking when combining licenses - - - -v21.6.14 - 2021-06-14 ----------------------- - -Added -~~~~~ - -- Switch to calver for package versioning to better convey the currency of the - bundled data. - -- Include https://scancode-licensedb.aboutcode.org/ licenses list with - ScanCode (v21.6.7) and SPDX licenses (v3.13) keys. Add new functions to - create Licensing using these licenses as LicenseSymbol. - -- Add new License.dedup() method to deduplicate and simplify license expressions - without over simplifying. - -- Add new License.validate() method to return a new ExpressionInfo object with - details on a license expression validation. - - -Changed -~~~~~~~ -- Drop support for Python 2. -- Adopt the project skeleton from https://github.com/nexB/skeleton - and its new configure script - - -v1.2 - 2019-11-14 ------------------- -Added -~~~~~ -- Add ability to render WITH expression wrapped in parenthesis - -Fixes -~~~~~ -- Fix anomalous backslashes in strings - -Changed -~~~~~~~ -- Update the thirdparty directory structure. - - -v1.0 - 2019-10-16 ------------------- -Added -~~~~~ -- New version of boolean.py library -- Add ability to leave license expressions unsorted when simplifying - -Changed -~~~~~~~ -- updated travis CI settings - - -v0.999 - 2019-04-29 --------------------- -- Initial release -- license-expression is small utility library to parse, compare and - simplify and normalize license expressions. - - + Q2hhbmdlbG9nCj09PT09PT09PQoKdjMwLjMuMCAtIDIwMjQtMDMtMTgKLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRoaXMgaXMgYSBtaW5vciByZWxlYXNlIHdpdGhvdXQgQVBJIGNoYW5nZXM6CgotIFVzZSBsYXRlc3Qgc2tlbGV0b24KLSBVcGRhdGUgbGljZW5zZSBsaXN0IHRvIGxhdGVzdCBTY2FuQ29kZSBhbmQgU1BEWCAzLjIzCi0gRHJvcCBzdXBwb3J0IGZvciBQeXRob24gMy43Cgp2MzAuMi4wIC0gMjAyMy0xMS0yOQotLS0tLS0tLS0tLS0tLS0tLS0tLQoKVGhpcyBpcyBhIG1pbm9yIHJlbGVhc2Ugd2l0aG91dCBBUEkgY2hhbmdlczoKCi0gVXNlIGxhdGVzdCBza2VsZXRvbgotIFVwZGF0ZSBsaWNlbnNlIGxpc3QgdG8gbGF0ZXN0IFNjYW5Db2RlIGFuZCBTUERYIDMuMjIKLSBBZGQgUHl0aG9uIDMuMTIgc3VwcG9ydCBpbiBDSQoKCnYzMC4xLjEgLSAyMDIzLTAxLTE2Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRoaXMgaXMgYSBtaW5vciBkb3QgcmVsZWFzZSB3aXRob3V0IEFQSSBjaGFuZ2VzCgotIFVzZSBsYXRlc3Qgc2tlbGV0b24KLSBVcGRhdGUgbGljZW5zZSBsaXN0IHRvIGxhdGVzdCBTY2FuQ29kZSBhbmQgU1BEWCAzLjIwCgoKdjMwLjEuMCAtIDIwMjMtMDEtMTYKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKVGhpcyBpcyBhIG1pbm9yIHJlbGVhc2Ugd2l0aG91dCBBUEkgY2hhbmdlcwoKLSBVc2UgbGF0ZXN0IHNrZWxldG9uIChhbmQgdXBkYXRlZCBjb25maWd1cmUgc2NyaXB0KQotIFVwZGF0ZSBsaWNlbnNlIGxpc3QgdG8gbGF0ZXN0IFNjYW5Db2RlIGFuZCBTUERYIDMuMTkKLSBVc2UgY29ycmVjdCBzeW50YXggZm9yIHB5dGhvbl9yZXF1aXJlCi0gRHJvcCB1c2luZyBUcmF2aXMgYW5kIEFwcHZleW9yCi0gRHJvcCBzdXBwb3J0IGZvciBQeXRob24gMy43IGFuZCBhZGQgUHl0aG9uIDMuMTEgaW4gQ0kKCgp2MzAuMC4wIC0gMjAyMi0wNS0xMAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpUaGlzIGlzIGEgbWlub3IgcmVsZWFzZSB3aXRoIEFQSSBjaGFuZ2VzCgotIFVzZSBsYXRlc3Qgc2tlbGV0b24gKGFuZCB1cGRhdGVkIGNvbmZpZ3VyZSBzY3JpcHQpCi0gRHJvcCB1c2luZyBjYWx2ZXIKLSBJbXByb3ZlIGVycm9yIGNoZWNraW5nIHdoZW4gY29tYmluaW5nIGxpY2Vuc2VzCgoKCnYyMS42LjE0IC0gMjAyMS0wNi0xNAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpBZGRlZAp+fn5+fgoKLSBTd2l0Y2ggdG8gY2FsdmVyIGZvciBwYWNrYWdlIHZlcnNpb25pbmcgdG8gYmV0dGVyIGNvbnZleSB0aGUgY3VycmVuY3kgb2YgdGhlCiAgYnVuZGxlZCBkYXRhLgoKLSBJbmNsdWRlIGh0dHBzOi8vc2NhbmNvZGUtbGljZW5zZWRiLmFib3V0Y29kZS5vcmcvIGxpY2Vuc2VzIGxpc3Qgd2l0aAogIFNjYW5Db2RlICh2MjEuNi43KSBhbmQgU1BEWCBsaWNlbnNlcyAodjMuMTMpIGtleXMuIEFkZCBuZXcgZnVuY3Rpb25zIHRvCiAgY3JlYXRlIExpY2Vuc2luZyB1c2luZyB0aGVzZSBsaWNlbnNlcyBhcyBMaWNlbnNlU3ltYm9sLgoKLSBBZGQgbmV3IExpY2Vuc2UuZGVkdXAoKSBtZXRob2QgdG8gZGVkdXBsaWNhdGUgYW5kIHNpbXBsaWZ5IGxpY2Vuc2UgZXhwcmVzc2lvbnMKICB3aXRob3V0IG92ZXIgc2ltcGxpZnlpbmcuCgotIEFkZCBuZXcgTGljZW5zZS52YWxpZGF0ZSgpIG1ldGhvZCB0byByZXR1cm4gYSBuZXcgRXhwcmVzc2lvbkluZm8gb2JqZWN0IHdpdGgKICBkZXRhaWxzIG9uIGEgbGljZW5zZSBleHByZXNzaW9uIHZhbGlkYXRpb24uCgoKQ2hhbmdlZAp+fn5+fn5+Ci0gRHJvcCBzdXBwb3J0IGZvciBQeXRob24gMi4KLSBBZG9wdCB0aGUgcHJvamVjdCBza2VsZXRvbiBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9uZXhCL3NrZWxldG9uCiAgYW5kIGl0cyBuZXcgY29uZmlndXJlIHNjcmlwdAoKCnYxLjIgLSAyMDE5LTExLTE0Ci0tLS0tLS0tLS0tLS0tLS0tLQpBZGRlZAp+fn5+fgotIEFkZCBhYmlsaXR5IHRvIHJlbmRlciBXSVRIIGV4cHJlc3Npb24gd3JhcHBlZCBpbiBwYXJlbnRoZXNpcwoKRml4ZXMKfn5+fn4KLSBGaXggYW5vbWFsb3VzIGJhY2tzbGFzaGVzIGluIHN0cmluZ3MKCkNoYW5nZWQKfn5+fn5+fgotIFVwZGF0ZSB0aGUgdGhpcmRwYXJ0eSBkaXJlY3Rvcnkgc3RydWN0dXJlLgoKCnYxLjAgLSAyMDE5LTEwLTE2Ci0tLS0tLS0tLS0tLS0tLS0tLQpBZGRlZAp+fn5+fgotIE5ldyB2ZXJzaW9uIG9mIGJvb2xlYW4ucHkgbGlicmFyeQotIEFkZCBhYmlsaXR5IHRvIGxlYXZlIGxpY2Vuc2UgZXhwcmVzc2lvbnMgdW5zb3J0ZWQgd2hlbiBzaW1wbGlmeWluZwoKQ2hhbmdlZAp+fn5+fn5+Ci0gdXBkYXRlZCB0cmF2aXMgQ0kgc2V0dGluZ3MKCgp2MC45OTkgLSAyMDE5LTA0LTI5Ci0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gSW5pdGlhbCByZWxlYXNlCi0gbGljZW5zZS1leHByZXNzaW9uIGlzIHNtYWxsIHV0aWxpdHkgbGlicmFyeSB0byBwYXJzZSwgY29tcGFyZSBhbmQKICBzaW1wbGlmeSBhbmQgbm9ybWFsaXplIGxpY2Vuc2UgZXhwcmVzc2lvbnMuCgo= declared license file: CODE_OF_CONDUCT.rst - Contributor Covenant Code of Conduct -==================================== - -Our Pledge ----------- - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our -project and our community a harassment-free experience for everyone, -regardless of age, body size, disability, ethnicity, gender identity and -expression, level of experience, education, socio-economic status, -nationality, personal appearance, race, religion, or sexual identity and -orientation. - -Our Standards -------------- - -Examples of behavior that contributes to creating a positive environment -include: - -- Using welcoming and inclusive language -- Being respectful of differing viewpoints and experiences -- Gracefully accepting constructive criticism -- Focusing on what is best for the community -- Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -- The use of sexualized language or imagery and unwelcome sexual - attention or advances -- Trolling, insulting/derogatory comments, and personal or political - attacks -- Public or private harassment -- Publishing others’ private information, such as a physical or - electronic address, without explicit permission -- Other conduct which could reasonably be considered inappropriate in a - professional setting - -Our Responsibilities --------------------- - -Project maintainers are responsible for clarifying the standards of -acceptable behavior and are expected to take appropriate and fair -corrective action in response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, -or reject comments, commits, code, wiki edits, issues, and other -contributions that are not aligned to this Code of Conduct, or to ban -temporarily or permanently any contributor for other behaviors that they -deem inappropriate, threatening, offensive, or harmful. - -Scope ------ - -This Code of Conduct applies both within project spaces and in public -spaces when an individual is representing the project or its community. -Examples of representing a project or community include using an -official project e-mail address, posting via an official social media -account, or acting as an appointed representative at an online or -offline event. Representation of a project may be further defined and -clarified by project maintainers. - -Enforcement ------------ - -Instances of abusive, harassing, or otherwise unacceptable behavior may -be reported by contacting the project team at pombredanne@gmail.com -or on the Gitter chat channel at https://gitter.im/aboutcode-org/discuss . -All complaints will be reviewed and investigated and will result in a -response that is deemed necessary and appropriate to the circumstances. -The project team is obligated to maintain confidentiality with regard to -the reporter of an incident. Further details of specific enforcement -policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in -good faith may face temporary or permanent repercussions as determined -by other members of the project’s leadership. - -Attribution ------------ - -This Code of Conduct is adapted from the `Contributor Covenant`_ , -version 1.4, available at -https://www.contributor-covenant.org/version/1/4/code-of-conduct.html - -.. _Contributor Covenant: https://www.contributor-covenant.org - + Q29udHJpYnV0b3IgQ292ZW5hbnQgQ29kZSBvZiBDb25kdWN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKT3VyIFBsZWRnZQotLS0tLS0tLS0tCgpJbiB0aGUgaW50ZXJlc3Qgb2YgZm9zdGVyaW5nIGFuIG9wZW4gYW5kIHdlbGNvbWluZyBlbnZpcm9ubWVudCwgd2UgYXMKY29udHJpYnV0b3JzIGFuZCBtYWludGFpbmVycyBwbGVkZ2UgdG8gbWFraW5nIHBhcnRpY2lwYXRpb24gaW4gb3VyCnByb2plY3QgYW5kIG91ciBjb21tdW5pdHkgYSBoYXJhc3NtZW50LWZyZWUgZXhwZXJpZW5jZSBmb3IgZXZlcnlvbmUsCnJlZ2FyZGxlc3Mgb2YgYWdlLCBib2R5IHNpemUsIGRpc2FiaWxpdHksIGV0aG5pY2l0eSwgZ2VuZGVyIGlkZW50aXR5IGFuZApleHByZXNzaW9uLCBsZXZlbCBvZiBleHBlcmllbmNlLCBlZHVjYXRpb24sIHNvY2lvLWVjb25vbWljIHN0YXR1cywKbmF0aW9uYWxpdHksIHBlcnNvbmFsIGFwcGVhcmFuY2UsIHJhY2UsIHJlbGlnaW9uLCBvciBzZXh1YWwgaWRlbnRpdHkgYW5kCm9yaWVudGF0aW9uLgoKT3VyIFN0YW5kYXJkcwotLS0tLS0tLS0tLS0tCgpFeGFtcGxlcyBvZiBiZWhhdmlvciB0aGF0IGNvbnRyaWJ1dGVzIHRvIGNyZWF0aW5nIGEgcG9zaXRpdmUgZW52aXJvbm1lbnQKaW5jbHVkZToKCi0gIFVzaW5nIHdlbGNvbWluZyBhbmQgaW5jbHVzaXZlIGxhbmd1YWdlCi0gIEJlaW5nIHJlc3BlY3RmdWwgb2YgZGlmZmVyaW5nIHZpZXdwb2ludHMgYW5kIGV4cGVyaWVuY2VzCi0gIEdyYWNlZnVsbHkgYWNjZXB0aW5nIGNvbnN0cnVjdGl2ZSBjcml0aWNpc20KLSAgRm9jdXNpbmcgb24gd2hhdCBpcyBiZXN0IGZvciB0aGUgY29tbXVuaXR5Ci0gIFNob3dpbmcgZW1wYXRoeSB0b3dhcmRzIG90aGVyIGNvbW11bml0eSBtZW1iZXJzCgpFeGFtcGxlcyBvZiB1bmFjY2VwdGFibGUgYmVoYXZpb3IgYnkgcGFydGljaXBhbnRzIGluY2x1ZGU6CgotICBUaGUgdXNlIG9mIHNleHVhbGl6ZWQgbGFuZ3VhZ2Ugb3IgaW1hZ2VyeSBhbmQgdW53ZWxjb21lIHNleHVhbAogICBhdHRlbnRpb24gb3IgYWR2YW5jZXMKLSAgVHJvbGxpbmcsIGluc3VsdGluZy9kZXJvZ2F0b3J5IGNvbW1lbnRzLCBhbmQgcGVyc29uYWwgb3IgcG9saXRpY2FsCiAgIGF0dGFja3MKLSAgUHVibGljIG9yIHByaXZhdGUgaGFyYXNzbWVudAotICBQdWJsaXNoaW5nIG90aGVyc+KAmSBwcml2YXRlIGluZm9ybWF0aW9uLCBzdWNoIGFzIGEgcGh5c2ljYWwgb3IKICAgZWxlY3Ryb25pYyBhZGRyZXNzLCB3aXRob3V0IGV4cGxpY2l0IHBlcm1pc3Npb24KLSAgT3RoZXIgY29uZHVjdCB3aGljaCBjb3VsZCByZWFzb25hYmx5IGJlIGNvbnNpZGVyZWQgaW5hcHByb3ByaWF0ZSBpbiBhCiAgIHByb2Zlc3Npb25hbCBzZXR0aW5nCgpPdXIgUmVzcG9uc2liaWxpdGllcwotLS0tLS0tLS0tLS0tLS0tLS0tLQoKUHJvamVjdCBtYWludGFpbmVycyBhcmUgcmVzcG9uc2libGUgZm9yIGNsYXJpZnlpbmcgdGhlIHN0YW5kYXJkcyBvZgphY2NlcHRhYmxlIGJlaGF2aW9yIGFuZCBhcmUgZXhwZWN0ZWQgdG8gdGFrZSBhcHByb3ByaWF0ZSBhbmQgZmFpcgpjb3JyZWN0aXZlIGFjdGlvbiBpbiByZXNwb25zZSB0byBhbnkgaW5zdGFuY2VzIG9mIHVuYWNjZXB0YWJsZSBiZWhhdmlvci4KClByb2plY3QgbWFpbnRhaW5lcnMgaGF2ZSB0aGUgcmlnaHQgYW5kIHJlc3BvbnNpYmlsaXR5IHRvIHJlbW92ZSwgZWRpdCwKb3IgcmVqZWN0IGNvbW1lbnRzLCBjb21taXRzLCBjb2RlLCB3aWtpIGVkaXRzLCBpc3N1ZXMsIGFuZCBvdGhlcgpjb250cmlidXRpb25zIHRoYXQgYXJlIG5vdCBhbGlnbmVkIHRvIHRoaXMgQ29kZSBvZiBDb25kdWN0LCBvciB0byBiYW4KdGVtcG9yYXJpbHkgb3IgcGVybWFuZW50bHkgYW55IGNvbnRyaWJ1dG9yIGZvciBvdGhlciBiZWhhdmlvcnMgdGhhdCB0aGV5CmRlZW0gaW5hcHByb3ByaWF0ZSwgdGhyZWF0ZW5pbmcsIG9mZmVuc2l2ZSwgb3IgaGFybWZ1bC4KClNjb3BlCi0tLS0tCgpUaGlzIENvZGUgb2YgQ29uZHVjdCBhcHBsaWVzIGJvdGggd2l0aGluIHByb2plY3Qgc3BhY2VzIGFuZCBpbiBwdWJsaWMKc3BhY2VzIHdoZW4gYW4gaW5kaXZpZHVhbCBpcyByZXByZXNlbnRpbmcgdGhlIHByb2plY3Qgb3IgaXRzIGNvbW11bml0eS4KRXhhbXBsZXMgb2YgcmVwcmVzZW50aW5nIGEgcHJvamVjdCBvciBjb21tdW5pdHkgaW5jbHVkZSB1c2luZyBhbgpvZmZpY2lhbCBwcm9qZWN0IGUtbWFpbCBhZGRyZXNzLCBwb3N0aW5nIHZpYSBhbiBvZmZpY2lhbCBzb2NpYWwgbWVkaWEKYWNjb3VudCwgb3IgYWN0aW5nIGFzIGFuIGFwcG9pbnRlZCByZXByZXNlbnRhdGl2ZSBhdCBhbiBvbmxpbmUgb3IKb2ZmbGluZSBldmVudC4gUmVwcmVzZW50YXRpb24gb2YgYSBwcm9qZWN0IG1heSBiZSBmdXJ0aGVyIGRlZmluZWQgYW5kCmNsYXJpZmllZCBieSBwcm9qZWN0IG1haW50YWluZXJzLgoKRW5mb3JjZW1lbnQKLS0tLS0tLS0tLS0KCkluc3RhbmNlcyBvZiBhYnVzaXZlLCBoYXJhc3NpbmcsIG9yIG90aGVyd2lzZSB1bmFjY2VwdGFibGUgYmVoYXZpb3IgbWF5CmJlIHJlcG9ydGVkIGJ5IGNvbnRhY3RpbmcgdGhlIHByb2plY3QgdGVhbSBhdCBwb21icmVkYW5uZUBnbWFpbC5jb20Kb3Igb24gdGhlIEdpdHRlciBjaGF0IGNoYW5uZWwgYXQgaHR0cHM6Ly9naXR0ZXIuaW0vYWJvdXRjb2RlLW9yZy9kaXNjdXNzIC4KQWxsIGNvbXBsYWludHMgd2lsbCBiZSByZXZpZXdlZCBhbmQgaW52ZXN0aWdhdGVkIGFuZCB3aWxsIHJlc3VsdCBpbiBhCnJlc3BvbnNlIHRoYXQgaXMgZGVlbWVkIG5lY2Vzc2FyeSBhbmQgYXBwcm9wcmlhdGUgdG8gdGhlIGNpcmN1bXN0YW5jZXMuClRoZSBwcm9qZWN0IHRlYW0gaXMgb2JsaWdhdGVkIHRvIG1haW50YWluIGNvbmZpZGVudGlhbGl0eSB3aXRoIHJlZ2FyZCB0bwp0aGUgcmVwb3J0ZXIgb2YgYW4gaW5jaWRlbnQuIEZ1cnRoZXIgZGV0YWlscyBvZiBzcGVjaWZpYyBlbmZvcmNlbWVudApwb2xpY2llcyBtYXkgYmUgcG9zdGVkIHNlcGFyYXRlbHkuCgpQcm9qZWN0IG1haW50YWluZXJzIHdobyBkbyBub3QgZm9sbG93IG9yIGVuZm9yY2UgdGhlIENvZGUgb2YgQ29uZHVjdCBpbgpnb29kIGZhaXRoIG1heSBmYWNlIHRlbXBvcmFyeSBvciBwZXJtYW5lbnQgcmVwZXJjdXNzaW9ucyBhcyBkZXRlcm1pbmVkCmJ5IG90aGVyIG1lbWJlcnMgb2YgdGhlIHByb2plY3TigJlzIGxlYWRlcnNoaXAuCgpBdHRyaWJ1dGlvbgotLS0tLS0tLS0tLQoKVGhpcyBDb2RlIG9mIENvbmR1Y3QgaXMgYWRhcHRlZCBmcm9tIHRoZSBgQ29udHJpYnV0b3IgQ292ZW5hbnRgXyAsCnZlcnNpb24gMS40LCBhdmFpbGFibGUgYXQKaHR0cHM6Ly93d3cuY29udHJpYnV0b3ItY292ZW5hbnQub3JnL3ZlcnNpb24vMS80L2NvZGUtb2YtY29uZHVjdC5odG1sCgouLiBfQ29udHJpYnV0b3IgQ292ZW5hbnQ6IGh0dHBzOi8vd3d3LmNvbnRyaWJ1dG9yLWNvdmVuYW50Lm9yZwo= declared license file: NOTICE - # -# Copyright (c) nexB Inc. and others. -# SPDX-License-Identifier: Apache-2.0 -# -# Visit https://aboutcode.org and https://github.com/nexB/license-expression -# for support and download. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - + IwojIENvcHlyaWdodCAoYykgbmV4QiBJbmMuIGFuZCBvdGhlcnMuCiMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKIwojIFZpc2l0IGh0dHBzOi8vYWJvdXRjb2RlLm9yZyBhbmQgaHR0cHM6Ly9naXRodWIuY29tL25leEIvbGljZW5zZS1leHByZXNzaW9uCiMgZm9yIHN1cHBvcnQgYW5kIGRvd25sb2FkLgojCiMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgojIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAojCiMgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgojCg== declared license file: apache-2.0.LICENSE - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBhY2hlIExpY2Vuc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAyLjAsIEphbnVhcnkgMjAwNAogICAgICAgICAgICAgICAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvCgogICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgVVNFLCBSRVBST0RVQ1RJT04sIEFORCBESVNUUklCVVRJT04KCiAgIDEuIERlZmluaXRpb25zLgoKICAgICAgIkxpY2Vuc2UiIHNoYWxsIG1lYW4gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciB1c2UsIHJlcHJvZHVjdGlvbiwKICAgICAgYW5kIGRpc3RyaWJ1dGlvbiBhcyBkZWZpbmVkIGJ5IFNlY3Rpb25zIDEgdGhyb3VnaCA5IG9mIHRoaXMgZG9jdW1lbnQuCgogICAgICAiTGljZW5zb3IiIHNoYWxsIG1lYW4gdGhlIGNvcHlyaWdodCBvd25lciBvciBlbnRpdHkgYXV0aG9yaXplZCBieQogICAgICB0aGUgY29weXJpZ2h0IG93bmVyIHRoYXQgaXMgZ3JhbnRpbmcgdGhlIExpY2Vuc2UuCgogICAgICAiTGVnYWwgRW50aXR5IiBzaGFsbCBtZWFuIHRoZSB1bmlvbiBvZiB0aGUgYWN0aW5nIGVudGl0eSBhbmQgYWxsCiAgICAgIG90aGVyIGVudGl0aWVzIHRoYXQgY29udHJvbCwgYXJlIGNvbnRyb2xsZWQgYnksIG9yIGFyZSB1bmRlciBjb21tb24KICAgICAgY29udHJvbCB3aXRoIHRoYXQgZW50aXR5LiBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwKICAgICAgImNvbnRyb2wiIG1lYW5zIChpKSB0aGUgcG93ZXIsIGRpcmVjdCBvciBpbmRpcmVjdCwgdG8gY2F1c2UgdGhlCiAgICAgIGRpcmVjdGlvbiBvciBtYW5hZ2VtZW50IG9mIHN1Y2ggZW50aXR5LCB3aGV0aGVyIGJ5IGNvbnRyYWN0IG9yCiAgICAgIG90aGVyd2lzZSwgb3IgKGlpKSBvd25lcnNoaXAgb2YgZmlmdHkgcGVyY2VudCAoNTAlKSBvciBtb3JlIG9mIHRoZQogICAgICBvdXRzdGFuZGluZyBzaGFyZXMsIG9yIChpaWkpIGJlbmVmaWNpYWwgb3duZXJzaGlwIG9mIHN1Y2ggZW50aXR5LgoKICAgICAgIllvdSIgKG9yICJZb3VyIikgc2hhbGwgbWVhbiBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eQogICAgICBleGVyY2lzaW5nIHBlcm1pc3Npb25zIGdyYW50ZWQgYnkgdGhpcyBMaWNlbnNlLgoKICAgICAgIlNvdXJjZSIgZm9ybSBzaGFsbCBtZWFuIHRoZSBwcmVmZXJyZWQgZm9ybSBmb3IgbWFraW5nIG1vZGlmaWNhdGlvbnMsCiAgICAgIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gc29mdHdhcmUgc291cmNlIGNvZGUsIGRvY3VtZW50YXRpb24KICAgICAgc291cmNlLCBhbmQgY29uZmlndXJhdGlvbiBmaWxlcy4KCiAgICAgICJPYmplY3QiIGZvcm0gc2hhbGwgbWVhbiBhbnkgZm9ybSByZXN1bHRpbmcgZnJvbSBtZWNoYW5pY2FsCiAgICAgIHRyYW5zZm9ybWF0aW9uIG9yIHRyYW5zbGF0aW9uIG9mIGEgU291cmNlIGZvcm0sIGluY2x1ZGluZyBidXQKICAgICAgbm90IGxpbWl0ZWQgdG8gY29tcGlsZWQgb2JqZWN0IGNvZGUsIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uLAogICAgICBhbmQgY29udmVyc2lvbnMgdG8gb3RoZXIgbWVkaWEgdHlwZXMuCgogICAgICAiV29yayIgc2hhbGwgbWVhbiB0aGUgd29yayBvZiBhdXRob3JzaGlwLCB3aGV0aGVyIGluIFNvdXJjZSBvcgogICAgICBPYmplY3QgZm9ybSwgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIExpY2Vuc2UsIGFzIGluZGljYXRlZCBieSBhCiAgICAgIGNvcHlyaWdodCBub3RpY2UgdGhhdCBpcyBpbmNsdWRlZCBpbiBvciBhdHRhY2hlZCB0byB0aGUgd29yawogICAgICAoYW4gZXhhbXBsZSBpcyBwcm92aWRlZCBpbiB0aGUgQXBwZW5kaXggYmVsb3cpLgoKICAgICAgIkRlcml2YXRpdmUgV29ya3MiIHNoYWxsIG1lYW4gYW55IHdvcmssIHdoZXRoZXIgaW4gU291cmNlIG9yIE9iamVjdAogICAgICBmb3JtLCB0aGF0IGlzIGJhc2VkIG9uIChvciBkZXJpdmVkIGZyb20pIHRoZSBXb3JrIGFuZCBmb3Igd2hpY2ggdGhlCiAgICAgIGVkaXRvcmlhbCByZXZpc2lvbnMsIGFubm90YXRpb25zLCBlbGFib3JhdGlvbnMsIG9yIG90aGVyIG1vZGlmaWNhdGlvbnMKICAgICAgcmVwcmVzZW50LCBhcyBhIHdob2xlLCBhbiBvcmlnaW5hbCB3b3JrIG9mIGF1dGhvcnNoaXAuIEZvciB0aGUgcHVycG9zZXMKICAgICAgb2YgdGhpcyBMaWNlbnNlLCBEZXJpdmF0aXZlIFdvcmtzIHNoYWxsIG5vdCBpbmNsdWRlIHdvcmtzIHRoYXQgcmVtYWluCiAgICAgIHNlcGFyYWJsZSBmcm9tLCBvciBtZXJlbHkgbGluayAob3IgYmluZCBieSBuYW1lKSB0byB0aGUgaW50ZXJmYWNlcyBvZiwKICAgICAgdGhlIFdvcmsgYW5kIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZi4KCiAgICAgICJDb250cmlidXRpb24iIHNoYWxsIG1lYW4gYW55IHdvcmsgb2YgYXV0aG9yc2hpcCwgaW5jbHVkaW5nCiAgICAgIHRoZSBvcmlnaW5hbCB2ZXJzaW9uIG9mIHRoZSBXb3JrIGFuZCBhbnkgbW9kaWZpY2F0aW9ucyBvciBhZGRpdGlvbnMKICAgICAgdG8gdGhhdCBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgdGhhdCBpcyBpbnRlbnRpb25hbGx5CiAgICAgIHN1Ym1pdHRlZCB0byBMaWNlbnNvciBmb3IgaW5jbHVzaW9uIGluIHRoZSBXb3JrIGJ5IHRoZSBjb3B5cmlnaHQgb3duZXIKICAgICAgb3IgYnkgYW4gaW5kaXZpZHVhbCBvciBMZWdhbCBFbnRpdHkgYXV0aG9yaXplZCB0byBzdWJtaXQgb24gYmVoYWxmIG9mCiAgICAgIHRoZSBjb3B5cmlnaHQgb3duZXIuIEZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAic3VibWl0dGVkIgogICAgICBtZWFucyBhbnkgZm9ybSBvZiBlbGVjdHJvbmljLCB2ZXJiYWwsIG9yIHdyaXR0ZW4gY29tbXVuaWNhdGlvbiBzZW50CiAgICAgIHRvIHRoZSBMaWNlbnNvciBvciBpdHMgcmVwcmVzZW50YXRpdmVzLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvCiAgICAgIGNvbW11bmljYXRpb24gb24gZWxlY3Ryb25pYyBtYWlsaW5nIGxpc3RzLCBzb3VyY2UgY29kZSBjb250cm9sIHN5c3RlbXMsCiAgICAgIGFuZCBpc3N1ZSB0cmFja2luZyBzeXN0ZW1zIHRoYXQgYXJlIG1hbmFnZWQgYnksIG9yIG9uIGJlaGFsZiBvZiwgdGhlCiAgICAgIExpY2Vuc29yIGZvciB0aGUgcHVycG9zZSBvZiBkaXNjdXNzaW5nIGFuZCBpbXByb3ZpbmcgdGhlIFdvcmssIGJ1dAogICAgICBleGNsdWRpbmcgY29tbXVuaWNhdGlvbiB0aGF0IGlzIGNvbnNwaWN1b3VzbHkgbWFya2VkIG9yIG90aGVyd2lzZQogICAgICBkZXNpZ25hdGVkIGluIHdyaXRpbmcgYnkgdGhlIGNvcHlyaWdodCBvd25lciBhcyAiTm90IGEgQ29udHJpYnV0aW9uLiIKCiAgICAgICJDb250cmlidXRvciIgc2hhbGwgbWVhbiBMaWNlbnNvciBhbmQgYW55IGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5CiAgICAgIG9uIGJlaGFsZiBvZiB3aG9tIGEgQ29udHJpYnV0aW9uIGhhcyBiZWVuIHJlY2VpdmVkIGJ5IExpY2Vuc29yIGFuZAogICAgICBzdWJzZXF1ZW50bHkgaW5jb3Jwb3JhdGVkIHdpdGhpbiB0aGUgV29yay4KCiAgIDIuIEdyYW50IG9mIENvcHlyaWdodCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCiAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCiAgICAgIGNvcHlyaWdodCBsaWNlbnNlIHRvIHJlcHJvZHVjZSwgcHJlcGFyZSBEZXJpdmF0aXZlIFdvcmtzIG9mLAogICAgICBwdWJsaWNseSBkaXNwbGF5LCBwdWJsaWNseSBwZXJmb3JtLCBzdWJsaWNlbnNlLCBhbmQgZGlzdHJpYnV0ZSB0aGUKICAgICAgV29yayBhbmQgc3VjaCBEZXJpdmF0aXZlIFdvcmtzIGluIFNvdXJjZSBvciBPYmplY3QgZm9ybS4KCiAgIDMuIEdyYW50IG9mIFBhdGVudCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCiAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCiAgICAgIChleGNlcHQgYXMgc3RhdGVkIGluIHRoaXMgc2VjdGlvbikgcGF0ZW50IGxpY2Vuc2UgdG8gbWFrZSwgaGF2ZSBtYWRlLAogICAgICB1c2UsIG9mZmVyIHRvIHNlbGwsIHNlbGwsIGltcG9ydCwgYW5kIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgV29yaywKICAgICAgd2hlcmUgc3VjaCBsaWNlbnNlIGFwcGxpZXMgb25seSB0byB0aG9zZSBwYXRlbnQgY2xhaW1zIGxpY2Vuc2FibGUKICAgICAgYnkgc3VjaCBDb250cmlidXRvciB0aGF0IGFyZSBuZWNlc3NhcmlseSBpbmZyaW5nZWQgYnkgdGhlaXIKICAgICAgQ29udHJpYnV0aW9uKHMpIGFsb25lIG9yIGJ5IGNvbWJpbmF0aW9uIG9mIHRoZWlyIENvbnRyaWJ1dGlvbihzKQogICAgICB3aXRoIHRoZSBXb3JrIHRvIHdoaWNoIHN1Y2ggQ29udHJpYnV0aW9uKHMpIHdhcyBzdWJtaXR0ZWQuIElmIFlvdQogICAgICBpbnN0aXR1dGUgcGF0ZW50IGxpdGlnYXRpb24gYWdhaW5zdCBhbnkgZW50aXR5IChpbmNsdWRpbmcgYQogICAgICBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0IHRoZSBXb3JrCiAgICAgIG9yIGEgQ29udHJpYnV0aW9uIGluY29ycG9yYXRlZCB3aXRoaW4gdGhlIFdvcmsgY29uc3RpdHV0ZXMgZGlyZWN0CiAgICAgIG9yIGNvbnRyaWJ1dG9yeSBwYXRlbnQgaW5mcmluZ2VtZW50LCB0aGVuIGFueSBwYXRlbnQgbGljZW5zZXMKICAgICAgZ3JhbnRlZCB0byBZb3UgdW5kZXIgdGhpcyBMaWNlbnNlIGZvciB0aGF0IFdvcmsgc2hhbGwgdGVybWluYXRlCiAgICAgIGFzIG9mIHRoZSBkYXRlIHN1Y2ggbGl0aWdhdGlvbiBpcyBmaWxlZC4KCiAgIDQuIFJlZGlzdHJpYnV0aW9uLiBZb3UgbWF5IHJlcHJvZHVjZSBhbmQgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlCiAgICAgIFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mIGluIGFueSBtZWRpdW0sIHdpdGggb3Igd2l0aG91dAogICAgICBtb2RpZmljYXRpb25zLCBhbmQgaW4gU291cmNlIG9yIE9iamVjdCBmb3JtLCBwcm92aWRlZCB0aGF0IFlvdQogICAgICBtZWV0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKCiAgICAgIChhKSBZb3UgbXVzdCBnaXZlIGFueSBvdGhlciByZWNpcGllbnRzIG9mIHRoZSBXb3JrIG9yCiAgICAgICAgICBEZXJpdmF0aXZlIFdvcmtzIGEgY29weSBvZiB0aGlzIExpY2Vuc2U7IGFuZAoKICAgICAgKGIpIFlvdSBtdXN0IGNhdXNlIGFueSBtb2RpZmllZCBmaWxlcyB0byBjYXJyeSBwcm9taW5lbnQgbm90aWNlcwogICAgICAgICAgc3RhdGluZyB0aGF0IFlvdSBjaGFuZ2VkIHRoZSBmaWxlczsgYW5kCgogICAgICAoYykgWW91IG11c3QgcmV0YWluLCBpbiB0aGUgU291cmNlIGZvcm0gb2YgYW55IERlcml2YXRpdmUgV29ya3MKICAgICAgICAgIHRoYXQgWW91IGRpc3RyaWJ1dGUsIGFsbCBjb3B5cmlnaHQsIHBhdGVudCwgdHJhZGVtYXJrLCBhbmQKICAgICAgICAgIGF0dHJpYnV0aW9uIG5vdGljZXMgZnJvbSB0aGUgU291cmNlIGZvcm0gb2YgdGhlIFdvcmssCiAgICAgICAgICBleGNsdWRpbmcgdGhvc2Ugbm90aWNlcyB0aGF0IGRvIG5vdCBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mCiAgICAgICAgICB0aGUgRGVyaXZhdGl2ZSBXb3JrczsgYW5kCgogICAgICAoZCkgSWYgdGhlIFdvcmsgaW5jbHVkZXMgYSAiTk9USUNFIiB0ZXh0IGZpbGUgYXMgcGFydCBvZiBpdHMKICAgICAgICAgIGRpc3RyaWJ1dGlvbiwgdGhlbiBhbnkgRGVyaXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlIG11c3QKICAgICAgICAgIGluY2x1ZGUgYSByZWFkYWJsZSBjb3B5IG9mIHRoZSBhdHRyaWJ1dGlvbiBub3RpY2VzIGNvbnRhaW5lZAogICAgICAgICAgd2l0aGluIHN1Y2ggTk9USUNFIGZpbGUsIGV4Y2x1ZGluZyB0aG9zZSBub3RpY2VzIHRoYXQgZG8gbm90CiAgICAgICAgICBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpbiBhdCBsZWFzdCBvbmUKICAgICAgICAgIG9mIHRoZSBmb2xsb3dpbmcgcGxhY2VzOiB3aXRoaW4gYSBOT1RJQ0UgdGV4dCBmaWxlIGRpc3RyaWJ1dGVkCiAgICAgICAgICBhcyBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyB3aXRoaW4gdGhlIFNvdXJjZSBmb3JtIG9yCiAgICAgICAgICBkb2N1bWVudGF0aW9uLCBpZiBwcm92aWRlZCBhbG9uZyB3aXRoIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyBvciwKICAgICAgICAgIHdpdGhpbiBhIGRpc3BsYXkgZ2VuZXJhdGVkIGJ5IHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpZiBhbmQKICAgICAgICAgIHdoZXJldmVyIHN1Y2ggdGhpcmQtcGFydHkgbm90aWNlcyBub3JtYWxseSBhcHBlYXIuIFRoZSBjb250ZW50cwogICAgICAgICAgb2YgdGhlIE5PVElDRSBmaWxlIGFyZSBmb3IgaW5mb3JtYXRpb25hbCBwdXJwb3NlcyBvbmx5IGFuZAogICAgICAgICAgZG8gbm90IG1vZGlmeSB0aGUgTGljZW5zZS4gWW91IG1heSBhZGQgWW91ciBvd24gYXR0cmlidXRpb24KICAgICAgICAgIG5vdGljZXMgd2l0aGluIERlcml2YXRpdmUgV29ya3MgdGhhdCBZb3UgZGlzdHJpYnV0ZSwgYWxvbmdzaWRlCiAgICAgICAgICBvciBhcyBhbiBhZGRlbmR1bSB0byB0aGUgTk9USUNFIHRleHQgZnJvbSB0aGUgV29yaywgcHJvdmlkZWQKICAgICAgICAgIHRoYXQgc3VjaCBhZGRpdGlvbmFsIGF0dHJpYnV0aW9uIG5vdGljZXMgY2Fubm90IGJlIGNvbnN0cnVlZAogICAgICAgICAgYXMgbW9kaWZ5aW5nIHRoZSBMaWNlbnNlLgoKICAgICAgWW91IG1heSBhZGQgWW91ciBvd24gY29weXJpZ2h0IHN0YXRlbWVudCB0byBZb3VyIG1vZGlmaWNhdGlvbnMgYW5kCiAgICAgIG1heSBwcm92aWRlIGFkZGl0aW9uYWwgb3IgZGlmZmVyZW50IGxpY2Vuc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMKICAgICAgZm9yIHVzZSwgcmVwcm9kdWN0aW9uLCBvciBkaXN0cmlidXRpb24gb2YgWW91ciBtb2RpZmljYXRpb25zLCBvcgogICAgICBmb3IgYW55IHN1Y2ggRGVyaXZhdGl2ZSBXb3JrcyBhcyBhIHdob2xlLCBwcm92aWRlZCBZb3VyIHVzZSwKICAgICAgcmVwcm9kdWN0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoZSBXb3JrIG90aGVyd2lzZSBjb21wbGllcyB3aXRoCiAgICAgIHRoZSBjb25kaXRpb25zIHN0YXRlZCBpbiB0aGlzIExpY2Vuc2UuCgogICA1LiBTdWJtaXNzaW9uIG9mIENvbnRyaWJ1dGlvbnMuIFVubGVzcyBZb3UgZXhwbGljaXRseSBzdGF0ZSBvdGhlcndpc2UsCiAgICAgIGFueSBDb250cmlidXRpb24gaW50ZW50aW9uYWxseSBzdWJtaXR0ZWQgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yawogICAgICBieSBZb3UgdG8gdGhlIExpY2Vuc29yIHNoYWxsIGJlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICB0aGlzIExpY2Vuc2UsIHdpdGhvdXQgYW55IGFkZGl0aW9uYWwgdGVybXMgb3IgY29uZGl0aW9ucy4KICAgICAgTm90d2l0aHN0YW5kaW5nIHRoZSBhYm92ZSwgbm90aGluZyBoZXJlaW4gc2hhbGwgc3VwZXJzZWRlIG9yIG1vZGlmeQogICAgICB0aGUgdGVybXMgb2YgYW55IHNlcGFyYXRlIGxpY2Vuc2UgYWdyZWVtZW50IHlvdSBtYXkgaGF2ZSBleGVjdXRlZAogICAgICB3aXRoIExpY2Vuc29yIHJlZ2FyZGluZyBzdWNoIENvbnRyaWJ1dGlvbnMuCgogICA2LiBUcmFkZW1hcmtzLiBUaGlzIExpY2Vuc2UgZG9lcyBub3QgZ3JhbnQgcGVybWlzc2lvbiB0byB1c2UgdGhlIHRyYWRlCiAgICAgIG5hbWVzLCB0cmFkZW1hcmtzLCBzZXJ2aWNlIG1hcmtzLCBvciBwcm9kdWN0IG5hbWVzIG9mIHRoZSBMaWNlbnNvciwKICAgICAgZXhjZXB0IGFzIHJlcXVpcmVkIGZvciByZWFzb25hYmxlIGFuZCBjdXN0b21hcnkgdXNlIGluIGRlc2NyaWJpbmcgdGhlCiAgICAgIG9yaWdpbiBvZiB0aGUgV29yayBhbmQgcmVwcm9kdWNpbmcgdGhlIGNvbnRlbnQgb2YgdGhlIE5PVElDRSBmaWxlLgoKICAgNy4gRGlzY2xhaW1lciBvZiBXYXJyYW50eS4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yCiAgICAgIGFncmVlZCB0byBpbiB3cml0aW5nLCBMaWNlbnNvciBwcm92aWRlcyB0aGUgV29yayAoYW5kIGVhY2gKICAgICAgQ29udHJpYnV0b3IgcHJvdmlkZXMgaXRzIENvbnRyaWJ1dGlvbnMpIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgogICAgICBpbXBsaWVkLCBpbmNsdWRpbmcsIHdpdGhvdXQgbGltaXRhdGlvbiwgYW55IHdhcnJhbnRpZXMgb3IgY29uZGl0aW9ucwogICAgICBvZiBUSVRMRSwgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZLCBvciBGSVRORVNTIEZPUiBBCiAgICAgIFBBUlRJQ1VMQVIgUFVSUE9TRS4gWW91IGFyZSBzb2xlbHkgcmVzcG9uc2libGUgZm9yIGRldGVybWluaW5nIHRoZQogICAgICBhcHByb3ByaWF0ZW5lc3Mgb2YgdXNpbmcgb3IgcmVkaXN0cmlidXRpbmcgdGhlIFdvcmsgYW5kIGFzc3VtZSBhbnkKICAgICAgcmlza3MgYXNzb2NpYXRlZCB3aXRoIFlvdXIgZXhlcmNpc2Ugb2YgcGVybWlzc2lvbnMgdW5kZXIgdGhpcyBMaWNlbnNlLgoKICAgOC4gTGltaXRhdGlvbiBvZiBMaWFiaWxpdHkuIEluIG5vIGV2ZW50IGFuZCB1bmRlciBubyBsZWdhbCB0aGVvcnksCiAgICAgIHdoZXRoZXIgaW4gdG9ydCAoaW5jbHVkaW5nIG5lZ2xpZ2VuY2UpLCBjb250cmFjdCwgb3Igb3RoZXJ3aXNlLAogICAgICB1bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgKHN1Y2ggYXMgZGVsaWJlcmF0ZSBhbmQgZ3Jvc3NseQogICAgICBuZWdsaWdlbnQgYWN0cykgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNoYWxsIGFueSBDb250cmlidXRvciBiZQogICAgICBsaWFibGUgdG8gWW91IGZvciBkYW1hZ2VzLCBpbmNsdWRpbmcgYW55IGRpcmVjdCwgaW5kaXJlY3QsIHNwZWNpYWwsCiAgICAgIGluY2lkZW50YWwsIG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvZiBhbnkgY2hhcmFjdGVyIGFyaXNpbmcgYXMgYQogICAgICByZXN1bHQgb2YgdGhpcyBMaWNlbnNlIG9yIG91dCBvZiB0aGUgdXNlIG9yIGluYWJpbGl0eSB0byB1c2UgdGhlCiAgICAgIFdvcmsgKGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gZGFtYWdlcyBmb3IgbG9zcyBvZiBnb29kd2lsbCwKICAgICAgd29yayBzdG9wcGFnZSwgY29tcHV0ZXIgZmFpbHVyZSBvciBtYWxmdW5jdGlvbiwgb3IgYW55IGFuZCBhbGwKICAgICAgb3RoZXIgY29tbWVyY2lhbCBkYW1hZ2VzIG9yIGxvc3NlcyksIGV2ZW4gaWYgc3VjaCBDb250cmlidXRvcgogICAgICBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiBzdWNoIGRhbWFnZXMuCgogICA5LiBBY2NlcHRpbmcgV2FycmFudHkgb3IgQWRkaXRpb25hbCBMaWFiaWxpdHkuIFdoaWxlIHJlZGlzdHJpYnV0aW5nCiAgICAgIHRoZSBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgWW91IG1heSBjaG9vc2UgdG8gb2ZmZXIsCiAgICAgIGFuZCBjaGFyZ2UgYSBmZWUgZm9yLCBhY2NlcHRhbmNlIG9mIHN1cHBvcnQsIHdhcnJhbnR5LCBpbmRlbW5pdHksCiAgICAgIG9yIG90aGVyIGxpYWJpbGl0eSBvYmxpZ2F0aW9ucyBhbmQvb3IgcmlnaHRzIGNvbnNpc3RlbnQgd2l0aCB0aGlzCiAgICAgIExpY2Vuc2UuIEhvd2V2ZXIsIGluIGFjY2VwdGluZyBzdWNoIG9ibGlnYXRpb25zLCBZb3UgbWF5IGFjdCBvbmx5CiAgICAgIG9uIFlvdXIgb3duIGJlaGFsZiBhbmQgb24gWW91ciBzb2xlIHJlc3BvbnNpYmlsaXR5LCBub3Qgb24gYmVoYWxmCiAgICAgIG9mIGFueSBvdGhlciBDb250cmlidXRvciwgYW5kIG9ubHkgaWYgWW91IGFncmVlIHRvIGluZGVtbmlmeSwKICAgICAgZGVmZW5kLCBhbmQgaG9sZCBlYWNoIENvbnRyaWJ1dG9yIGhhcm1sZXNzIGZvciBhbnkgbGlhYmlsaXR5CiAgICAgIGluY3VycmVkIGJ5LCBvciBjbGFpbXMgYXNzZXJ0ZWQgYWdhaW5zdCwgc3VjaCBDb250cmlidXRvciBieSByZWFzb24KICAgICAgb2YgeW91ciBhY2NlcHRpbmcgYW55IHN1Y2ggd2FycmFudHkgb3IgYWRkaXRpb25hbCBsaWFiaWxpdHkuCgogICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKCiAgIEFQUEVORElYOiBIb3cgdG8gYXBwbHkgdGhlIEFwYWNoZSBMaWNlbnNlIHRvIHlvdXIgd29yay4KCiAgICAgIFRvIGFwcGx5IHRoZSBBcGFjaGUgTGljZW5zZSB0byB5b3VyIHdvcmssIGF0dGFjaCB0aGUgZm9sbG93aW5nCiAgICAgIGJvaWxlcnBsYXRlIG5vdGljZSwgd2l0aCB0aGUgZmllbGRzIGVuY2xvc2VkIGJ5IGJyYWNrZXRzICJbXSIKICAgICAgcmVwbGFjZWQgd2l0aCB5b3VyIG93biBpZGVudGlmeWluZyBpbmZvcm1hdGlvbi4gKERvbid0IGluY2x1ZGUKICAgICAgdGhlIGJyYWNrZXRzISkgIFRoZSB0ZXh0IHNob3VsZCBiZSBlbmNsb3NlZCBpbiB0aGUgYXBwcm9wcmlhdGUKICAgICAgY29tbWVudCBzeW50YXggZm9yIHRoZSBmaWxlIGZvcm1hdC4gV2UgYWxzbyByZWNvbW1lbmQgdGhhdCBhCiAgICAgIGZpbGUgb3IgY2xhc3MgbmFtZSBhbmQgZGVzY3JpcHRpb24gb2YgcHVycG9zZSBiZSBpbmNsdWRlZCBvbiB0aGUKICAgICAgc2FtZSAicHJpbnRlZCBwYWdlIiBhcyB0aGUgY29weXJpZ2h0IG5vdGljZSBmb3IgZWFzaWVyCiAgICAgIGlkZW50aWZpY2F0aW9uIHdpdGhpbiB0aGlyZC1wYXJ0eSBhcmNoaXZlcy4KCiAgIENvcHlyaWdodCBbeXl5eV0gW25hbWUgb2YgY29weXJpZ2h0IG93bmVyXQoKICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgo= pkg:pypi/license-expression@30.3.0 @@ -1270,69 +308,11 @@ https://www.contributor-covenant.org/version/1/4/code-of-conduct.html declared license file: LICENSE.txt - Copyright (c) 2004 Infrae. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - 3. Neither the name of Infrae nor the names of its contributors may - be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INFRAE OR -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - + Q29weXJpZ2h0IChjKSAyMDA0IEluZnJhZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAgIAogIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCiAgICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQogICAgIGRpc3RyaWJ1dGlvbi4KCiAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBJbmZyYWUgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heQogICAgIGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCiAgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCgpUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCiJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgpBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgSU5GUkFFIE9SCkNPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLApFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sClBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgpQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GCkxJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCk5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwpTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K declared license file: LICENSES.txt - lxml is copyright Infrae and distributed under the BSD license (see -doc/licenses/BSD.txt), with the following exceptions: - -Some code, such a selftest.py, selftest2.py and -src/lxml/_elementpath.py are derived from ElementTree and -cElementTree. See doc/licenses/elementtree.txt for the license text. - -lxml.cssselect and lxml.html are copyright Ian Bicking and distributed -under the BSD license (see doc/licenses/BSD.txt). - -test.py, the test-runner script, is GPL and copyright Shuttleworth -Foundation. See doc/licenses/GPL.txt. It is believed the unchanged -inclusion of test.py to run the unit test suite falls under the -"aggregation" clause of the GPL and thus does not affect the license -of the rest of the package. - -The isoschematron implementation uses several XSL and RelaxNG resources: - * The (XML syntax) RelaxNG schema for schematron, copyright International - Organization for Standardization (see - src/lxml/isoschematron/resources/rng/iso-schematron.rng for the license - text) - * The skeleton iso-schematron-xlt1 pure-xslt schematron implementation - xsl stylesheets, copyright Rick Jelliffe and Academia Sinica Computing - Center, Taiwan (see the xsl files here for the license text: - src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/) - * The xsd/rng schema schematron extraction xsl transformations are unlicensed - and copyright the respective authors as noted (see - src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl and - src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl) - + bHhtbCBpcyBjb3B5cmlnaHQgSW5mcmFlIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgQlNEIGxpY2Vuc2UgKHNlZQpkb2MvbGljZW5zZXMvQlNELnR4dCksIHdpdGggdGhlIGZvbGxvd2luZyBleGNlcHRpb25zOgoKU29tZSBjb2RlLCBzdWNoIGEgc2VsZnRlc3QucHksIHNlbGZ0ZXN0Mi5weSBhbmQKc3JjL2x4bWwvX2VsZW1lbnRwYXRoLnB5IGFyZSBkZXJpdmVkIGZyb20gRWxlbWVudFRyZWUgYW5kCmNFbGVtZW50VHJlZS4gU2VlIGRvYy9saWNlbnNlcy9lbGVtZW50dHJlZS50eHQgZm9yIHRoZSBsaWNlbnNlIHRleHQuCgpseG1sLmNzc3NlbGVjdCBhbmQgbHhtbC5odG1sIGFyZSBjb3B5cmlnaHQgSWFuIEJpY2tpbmcgYW5kIGRpc3RyaWJ1dGVkCnVuZGVyIHRoZSBCU0QgbGljZW5zZSAoc2VlIGRvYy9saWNlbnNlcy9CU0QudHh0KS4KCnRlc3QucHksIHRoZSB0ZXN0LXJ1bm5lciBzY3JpcHQsIGlzIEdQTCBhbmQgY29weXJpZ2h0IFNodXR0bGV3b3J0aApGb3VuZGF0aW9uLiBTZWUgZG9jL2xpY2Vuc2VzL0dQTC50eHQuIEl0IGlzIGJlbGlldmVkIHRoZSB1bmNoYW5nZWQKaW5jbHVzaW9uIG9mIHRlc3QucHkgdG8gcnVuIHRoZSB1bml0IHRlc3Qgc3VpdGUgZmFsbHMgdW5kZXIgdGhlCiJhZ2dyZWdhdGlvbiIgY2xhdXNlIG9mIHRoZSBHUEwgYW5kIHRodXMgZG9lcyBub3QgYWZmZWN0IHRoZSBsaWNlbnNlCm9mIHRoZSByZXN0IG9mIHRoZSBwYWNrYWdlLgoKVGhlIGlzb3NjaGVtYXRyb24gaW1wbGVtZW50YXRpb24gdXNlcyBzZXZlcmFsIFhTTCBhbmQgUmVsYXhORyByZXNvdXJjZXM6CiAqIFRoZSAoWE1MIHN5bnRheCkgUmVsYXhORyBzY2hlbWEgZm9yIHNjaGVtYXRyb24sIGNvcHlyaWdodCBJbnRlcm5hdGlvbmFsCiAgIE9yZ2FuaXphdGlvbiBmb3IgU3RhbmRhcmRpemF0aW9uIChzZWUgCiAgIHNyYy9seG1sL2lzb3NjaGVtYXRyb24vcmVzb3VyY2VzL3JuZy9pc28tc2NoZW1hdHJvbi5ybmcgZm9yIHRoZSBsaWNlbnNlCiAgIHRleHQpCiAqIFRoZSBza2VsZXRvbiBpc28tc2NoZW1hdHJvbi14bHQxIHB1cmUteHNsdCBzY2hlbWF0cm9uIGltcGxlbWVudGF0aW9uCiAgIHhzbCBzdHlsZXNoZWV0cywgY29weXJpZ2h0IFJpY2sgSmVsbGlmZmUgYW5kIEFjYWRlbWlhIFNpbmljYSBDb21wdXRpbmcKICAgQ2VudGVyLCBUYWl3YW4gKHNlZSB0aGUgeHNsIGZpbGVzIGhlcmUgZm9yIHRoZSBsaWNlbnNlIHRleHQ6IAogICBzcmMvbHhtbC9pc29zY2hlbWF0cm9uL3Jlc291cmNlcy94c2wvaXNvLXNjaGVtYXRyb24teHNsdDEvKQogKiBUaGUgeHNkL3JuZyBzY2hlbWEgc2NoZW1hdHJvbiBleHRyYWN0aW9uIHhzbCB0cmFuc2Zvcm1hdGlvbnMgYXJlIHVubGljZW5zZWQKICAgYW5kIGNvcHlyaWdodCB0aGUgcmVzcGVjdGl2ZSBhdXRob3JzIGFzIG5vdGVkIChzZWUgCiAgIHNyYy9seG1sL2lzb3NjaGVtYXRyb24vcmVzb3VyY2VzL3hzbC9STkcyU2NodHJuLnhzbCBhbmQKICAgc3JjL2x4bWwvaXNvc2NoZW1hdHJvbi9yZXNvdXJjZXMveHNsL1hTRDJTY2h0cm4ueHNsKQo= pkg:pypi/lxml@5.3.0 @@ -1350,44 +330,6 @@ The isoschematron implementation uses several XSL and RelaxNG resources: regression-issue868 0.1 - - - declared license file: my_licenses/richtext.rtf - e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA= - - - declared license file: my_licenses/utf-16be_withBOM.txt - this file is -utf-16be encoded -with BOM -😃 - - - - declared license file: my_licenses/utf-16le_withBOM.txt - this file is -utf-16le encoded -with BOM -😃 - - - - declared license file: my_licenses/utf-8_noBOM.txt - this file is -utf-8 encoded -without BOM -😃 - - - - declared license file: my_licenses/utf-8_withBOM.txt - this file is -utf-8 encoded -with BOM -😃 - - - file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 @@ -1399,6 +341,7 @@ with BOM + diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.json.bin index e5aba976c..7d1edfbe5 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.json.bin @@ -35,15 +35,6 @@ "license": { "id": "MIT" } - }, - { - "license": { - "name": "declared license file: LICENSE", - "text": { - "content": "The MIT License (MIT)\n\nCopyright (c) 2015 Hynek Schlawack and the attrs contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n", - "contentType": "text/plain" - } - } } ], "name": "attrs", @@ -71,8 +62,9 @@ "license": { "name": "declared license file: CHANGELOG.rst", "text": { - "content": "\nChangelog\n=========\n\n\nnext\n----\n\n\n4.0 (2022-05-05)\n----------------\n\n* API changes\n\n * Drop support for Python 2.\n * Test on Python 3.10\n * Make Expression.sort_order an instance attributes and not a class attribute\n\n* Misc.\n\n * Correct licensing documentation\n * Improve docstringf and apply minor refactorings\n * Adopt black code style and isort for imports\n * Drop Travis and use GitHub actions for CI\n\n\n3.8 (2020-06-10)\n----------------\n\n* API changes\n\n * Add support for evaluation of boolean expression.\n Thank you to Lars van Gemerden @gemerden\n\n* Bug fixes\n\n * Fix parsing of tokens that have a number as the first character. \n Thank you to Jeff Cohen @ jcohen28\n * Restore proper Python 2 compatibility. \n Thank you to Benjy Weinberger @benjyw\n\n* Improve documentation\n\n * Add pointers to Linux distro packages.\n Thank you to Max Mehl @mxmehl and Carmen Bianca Bakker @carmenbianca\n * Fix typo.\n Thank you to Gabriel Niebler @der-gabe\n\n\n3.7 (2019-10-04)\n----------------\n\n* API changes\n\n * Add new sort argument to simplify() to optionally not sort when simplifying\n expressions (e.g. not applying \"commutativity\"). Thank you to Steven Esser\n @majurg for this\n * Add new argument to tokenizer to optionally accept extra characters in symbol\n tokens. Thank you to @carpie for this\n\n\n3.6 (2018-08-06)\n----------------\n\n* No API changes\n\n* Bug fixes\n\n * Fix De Morgan's laws effect on double negation propositions. Thank you to Douglas Cardoso for this\n * Improve error checking when parsing\n\n\n3.5 (Nov 1, 2017)\n-----------------\n\n* No API changes\n\n* Bug fixes\n\n * Documentation updates and add testing for Python 3.6. Thank you to Alexander Lisianoi @alisianoi\n * Improve testng and expression equivalence checks\n * Improve subs() method to an expression \n\n \n\n3.4 (May 12, 2017)\n------------------\n\n* No API changes\n\n* Bug fixes and improvements\n\n * Fix various documentation typos and improve tests . Thank you to Alexander Lisianoi @alisianoi\n * Fix handling for literals vs. symbols in negations Thank you to @YaronK\n\n\n3.3 (2017-02-09)\n----------------\n\n* API changes\n\n * #40 and #50 Expression.subs() now takes 'default' thanks to @kronuz\n * #45 simplify=False is now the default for parse and related functions or methods.\n * #40 Use \"&\" and \"|\" as default operators\n\n* Bug fixes\n\n * #60 Fix bug for \"a or b c\" which is not a valid expression\n * #58 Fix math formula display in docs\n * Improve handling of parse errors\n\n\n2.0.0 (2016-05-11)\n------------------\n\n* API changes\n\n * New algebra definition. Refactored class hierarchy. Improved parsing.\n\n* New features\n\n * possibility to subclass algebra definition\n * new normal forms shortcuts for DNF and CNF.\n\n\n1.1 (2016-04-06)\n------------------\n\n* Initial release on Pypi.\n", - "contentType": "text/prs.fallenstein.rst" + "content": "CkNoYW5nZWxvZwo9PT09PT09PT0KCgpuZXh0Ci0tLS0KCgo0LjAgKDIwMjItMDUtMDUpCi0tLS0tLS0tLS0tLS0tLS0KCiogQVBJIGNoYW5nZXMKCiAqIERyb3Agc3VwcG9ydCBmb3IgUHl0aG9uIDIuCiAqIFRlc3Qgb24gUHl0aG9uIDMuMTAKICogTWFrZSBFeHByZXNzaW9uLnNvcnRfb3JkZXIgYW4gaW5zdGFuY2UgYXR0cmlidXRlcyBhbmQgbm90IGEgY2xhc3MgYXR0cmlidXRlCgoqIE1pc2MuCgogKiBDb3JyZWN0IGxpY2Vuc2luZyBkb2N1bWVudGF0aW9uCiAqIEltcHJvdmUgZG9jc3RyaW5nZiBhbmQgYXBwbHkgbWlub3IgcmVmYWN0b3JpbmdzCiAqIEFkb3B0IGJsYWNrIGNvZGUgc3R5bGUgYW5kIGlzb3J0IGZvciBpbXBvcnRzCiAqIERyb3AgVHJhdmlzIGFuZCB1c2UgR2l0SHViIGFjdGlvbnMgZm9yIENJCgoKMy44ICgyMDIwLTA2LTEwKQotLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiBBZGQgc3VwcG9ydCBmb3IgZXZhbHVhdGlvbiBvZiBib29sZWFuIGV4cHJlc3Npb24uCiAgIFRoYW5rIHlvdSB0byBMYXJzIHZhbiBHZW1lcmRlbiBAZ2VtZXJkZW4KCiogQnVnIGZpeGVzCgogKiBGaXggcGFyc2luZyBvZiB0b2tlbnMgdGhhdCBoYXZlIGEgbnVtYmVyIGFzIHRoZSBmaXJzdCBjaGFyYWN0ZXIuIAogICBUaGFuayB5b3UgdG8gSmVmZiBDb2hlbiBAIGpjb2hlbjI4CiAqIFJlc3RvcmUgcHJvcGVyIFB5dGhvbiAyIGNvbXBhdGliaWxpdHkuIAogICBUaGFuayB5b3UgdG8gQmVuankgV2VpbmJlcmdlciBAYmVuanl3CgoqIEltcHJvdmUgZG9jdW1lbnRhdGlvbgoKICogQWRkIHBvaW50ZXJzIHRvIExpbnV4IGRpc3RybyBwYWNrYWdlcy4KICAgVGhhbmsgeW91IHRvIE1heCBNZWhsIEBteG1laGwgYW5kIENhcm1lbiBCaWFuY2EgQmFra2VyIEBjYXJtZW5iaWFuY2EKICogRml4IHR5cG8uCiAgIFRoYW5rIHlvdSB0byBHYWJyaWVsIE5pZWJsZXIgQGRlci1nYWJlCgoKMy43ICgyMDE5LTEwLTA0KQotLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiBBZGQgbmV3IHNvcnQgYXJndW1lbnQgdG8gc2ltcGxpZnkoKSB0byBvcHRpb25hbGx5IG5vdCBzb3J0IHdoZW4gc2ltcGxpZnlpbmcKICAgZXhwcmVzc2lvbnMgKGUuZy4gbm90IGFwcGx5aW5nICJjb21tdXRhdGl2aXR5IikuIFRoYW5rIHlvdSB0byBTdGV2ZW4gRXNzZXIKICAgQG1hanVyZyBmb3IgdGhpcwogKiBBZGQgbmV3IGFyZ3VtZW50IHRvIHRva2VuaXplciB0byBvcHRpb25hbGx5IGFjY2VwdCBleHRyYSBjaGFyYWN0ZXJzIGluIHN5bWJvbAogICB0b2tlbnMuIFRoYW5rIHlvdSB0byBAY2FycGllIGZvciB0aGlzCgoKMy42ICgyMDE4LTA4LTA2KQotLS0tLS0tLS0tLS0tLS0tCgoqIE5vIEFQSSBjaGFuZ2VzCgoqIEJ1ZyBmaXhlcwoKICogRml4IERlIE1vcmdhbidzIGxhd3MgZWZmZWN0IG9uIGRvdWJsZSBuZWdhdGlvbiBwcm9wb3NpdGlvbnMuIFRoYW5rIHlvdSB0byBEb3VnbGFzIENhcmRvc28gZm9yIHRoaXMKICogSW1wcm92ZSBlcnJvciBjaGVja2luZyB3aGVuIHBhcnNpbmcKCgozLjUgKE5vdiAxLCAyMDE3KQotLS0tLS0tLS0tLS0tLS0tLQoKKiBObyBBUEkgY2hhbmdlcwoKKiBCdWcgZml4ZXMKCiAqIERvY3VtZW50YXRpb24gdXBkYXRlcyBhbmQgYWRkIHRlc3RpbmcgZm9yIFB5dGhvbiAzLjYuIFRoYW5rIHlvdSB0byBBbGV4YW5kZXIgTGlzaWFub2kgQGFsaXNpYW5vaQogKiBJbXByb3ZlIHRlc3RuZyBhbmQgZXhwcmVzc2lvbiBlcXVpdmFsZW5jZSBjaGVja3MKICogSW1wcm92ZSBzdWJzKCkgbWV0aG9kIHRvIGFuIGV4cHJlc3Npb24gCgogCgozLjQgKE1heSAxMiwgMjAxNykKLS0tLS0tLS0tLS0tLS0tLS0tCgoqIE5vIEFQSSBjaGFuZ2VzCgoqIEJ1ZyBmaXhlcyBhbmQgaW1wcm92ZW1lbnRzCgogKiBGaXggdmFyaW91cyBkb2N1bWVudGF0aW9uIHR5cG9zIGFuZCBpbXByb3ZlIHRlc3RzIC4gVGhhbmsgeW91IHRvIEFsZXhhbmRlciBMaXNpYW5vaSBAYWxpc2lhbm9pCiAqIEZpeCBoYW5kbGluZyBmb3IgbGl0ZXJhbHMgdnMuIHN5bWJvbHMgaW4gbmVnYXRpb25zIFRoYW5rIHlvdSB0byBAWWFyb25LCgoKMy4zICgyMDE3LTAyLTA5KQotLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiAjNDAgYW5kICM1MCBFeHByZXNzaW9uLnN1YnMoKSBub3cgdGFrZXMgJ2RlZmF1bHQnIHRoYW5rcyB0byBAa3JvbnV6CiAqICM0NSBzaW1wbGlmeT1GYWxzZSBpcyBub3cgdGhlIGRlZmF1bHQgZm9yIHBhcnNlIGFuZCByZWxhdGVkIGZ1bmN0aW9ucyBvciBtZXRob2RzLgogKiAjNDAgVXNlICImIiBhbmQgInwiIGFzIGRlZmF1bHQgb3BlcmF0b3JzCgoqIEJ1ZyBmaXhlcwoKICogIzYwIEZpeCBidWcgZm9yICJhIG9yIGIgYyIgd2hpY2ggaXMgbm90IGEgdmFsaWQgZXhwcmVzc2lvbgogKiAjNTggRml4IG1hdGggZm9ybXVsYSBkaXNwbGF5IGluIGRvY3MKICogSW1wcm92ZSBoYW5kbGluZyBvZiBwYXJzZSBlcnJvcnMKCgoyLjAuMCAoMjAxNi0wNS0xMSkKLS0tLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiBOZXcgYWxnZWJyYSBkZWZpbml0aW9uLiBSZWZhY3RvcmVkIGNsYXNzIGhpZXJhcmNoeS4gSW1wcm92ZWQgcGFyc2luZy4KCiogTmV3IGZlYXR1cmVzCgogKiBwb3NzaWJpbGl0eSB0byBzdWJjbGFzcyBhbGdlYnJhIGRlZmluaXRpb24KICogbmV3IG5vcm1hbCBmb3JtcyBzaG9ydGN1dHMgZm9yIERORiBhbmQgQ05GLgoKCjEuMSAoMjAxNi0wNC0wNikKLS0tLS0tLS0tLS0tLS0tLS0tCgoqIEluaXRpYWwgcmVsZWFzZSBvbiBQeXBpLgo=", + "contentType": "text/prs.fallenstein.rst", + "encoding": "base64" } } }, @@ -80,8 +72,9 @@ "license": { "name": "declared license file: LICENSE.txt", "text": { - "content": "Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice, this\nlist of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice,\nthis list of conditions and the following disclaimer in the documentation and/or\nother materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" + "content": "Q29weXJpZ2h0IChjKSBTZWJhc3RpYW4gS3JhZW1lciwgYmFzdGkua3JAZ21haWwuY29tIGFuZCBvdGhlcnMKQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCmFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKCjEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcwpsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KCjIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3IKb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQpESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgpBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwpMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCg==", + "contentType": "text/plain", + "encoding": "base64" } } }, @@ -89,8 +82,9 @@ "license": { "name": "declared license file: README.rst", "text": { - "content": "boolean.py\n==========\n\n\"boolean.py\" is a small library implementing a boolean algebra. It\ndefines two base elements, TRUE and FALSE, and a Symbol class that can\ntake on one of these two values. Calculations are done in terms of AND,\nOR and NOT - other compositions like XOR and NAND are not implemented\nbut can be emulated with AND or and NOT. Expressions are constructed\nfrom parsed strings or in Python.\n\nIt runs on Python 3.6+\nYou can use older version 3.x for Python 2.7+ support.\n\nhttps://github.com/bastikr/boolean.py\n\nBuild status: |Build Status|\n\n\nExample\n-------\n\n::\n\n >>> import boolean\n >>> algebra = boolean.BooleanAlgebra()\n >>> expression1 = algebra.parse(u'apple and (oranges or banana) and not banana', simplify=False)\n >>> expression1\n AND(Symbol('apple'), OR(Symbol('oranges'), Symbol('banana')), NOT(Symbol('banana')))\n\n >>> expression2 = algebra.parse('(oranges | banana) and not banana & apple', simplify=True)\n >>> expression2\n AND(Symbol('apple'), NOT(Symbol('banana')), Symbol('oranges'))\n\n >>> expression1 == expression2\n False\n >>> expression1.simplify() == expression2\n True\n\n\nDocumentation\n-------------\n\nhttp://readthedocs.org/docs/booleanpy/en/latest/\n\n\nInstallation\n------------\n\nInstallation via pip\n~~~~~~~~~~~~~~~~~~~~\n\nTo install boolean.py, you need to have the following pieces of software\non your computer:\n\n- Python 3.6+\n- pip\n\nYou then only need to run the following command:\n\n``pip install boolean.py``\n\n\nInstallation via package managers\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThere are packages available for easy install on some operating systems.\nYou are welcome to help us package this tool for more distributions!\n\n- boolean.py has been packaged as Arch Linux, Fedora, openSus,\n nixpkgs, Guix, DragonFly and FreeBSD \n `packages `__ .\n\nIn particular:\n\n- Arch Linux (AUR):\n `python-boolean.py `__\n- Fedora:\n `python-boolean.py `__\n- openSUSE:\n `python-boolean.py `__\n\n\nTesting\n-------\n\nTest ``boolean.py`` with your current Python environment:\n\n``python setup.py test``\n\nTest with all of the supported Python environments using ``tox``:\n\n::\n\n pip install -r requirements-dev.txt\n tox\n\nIf ``tox`` throws ``InterpreterNotFound``, limit it to python\ninterpreters that are actually installed on your machine:\n\n::\n\n tox -e py36\n\nAlternatively use pytest.\n\n\nLicense\n-------\n\nCopyright (c) Sebastian Kraemer, basti.kr@gmail.com and others\nSPDX-License-Identifier: BSD-2-Clause\n\n.. |Build Status| image:: https://travis-ci.org/bastikr/boolean.py.svg?branch=master\n :target: https://travis-ci.org/bastikr/boolean.py\n", - "contentType": "text/prs.fallenstein.rst" + "content": "Ym9vbGVhbi5weQo9PT09PT09PT09CgoiYm9vbGVhbi5weSIgaXMgYSBzbWFsbCBsaWJyYXJ5IGltcGxlbWVudGluZyBhIGJvb2xlYW4gYWxnZWJyYS4gSXQKZGVmaW5lcyB0d28gYmFzZSBlbGVtZW50cywgVFJVRSBhbmQgRkFMU0UsIGFuZCBhIFN5bWJvbCBjbGFzcyB0aGF0IGNhbgp0YWtlIG9uIG9uZSBvZiB0aGVzZSB0d28gdmFsdWVzLiBDYWxjdWxhdGlvbnMgYXJlIGRvbmUgaW4gdGVybXMgb2YgQU5ELApPUiBhbmQgTk9UIC0gb3RoZXIgY29tcG9zaXRpb25zIGxpa2UgWE9SIGFuZCBOQU5EIGFyZSBub3QgaW1wbGVtZW50ZWQKYnV0IGNhbiBiZSBlbXVsYXRlZCB3aXRoIEFORCBvciBhbmQgTk9ULiBFeHByZXNzaW9ucyBhcmUgY29uc3RydWN0ZWQKZnJvbSBwYXJzZWQgc3RyaW5ncyBvciBpbiBQeXRob24uCgpJdCBydW5zIG9uIFB5dGhvbiAzLjYrCllvdSBjYW4gdXNlIG9sZGVyIHZlcnNpb24gMy54IGZvciBQeXRob24gMi43KyBzdXBwb3J0LgoKaHR0cHM6Ly9naXRodWIuY29tL2Jhc3Rpa3IvYm9vbGVhbi5weQoKQnVpbGQgc3RhdHVzOiB8QnVpbGQgU3RhdHVzfAoKCkV4YW1wbGUKLS0tLS0tLQoKOjoKCiAgICA+Pj4gaW1wb3J0IGJvb2xlYW4KICAgID4+PiBhbGdlYnJhID0gYm9vbGVhbi5Cb29sZWFuQWxnZWJyYSgpCiAgICA+Pj4gZXhwcmVzc2lvbjEgPSBhbGdlYnJhLnBhcnNlKHUnYXBwbGUgYW5kIChvcmFuZ2VzIG9yIGJhbmFuYSkgYW5kIG5vdCBiYW5hbmEnLCBzaW1wbGlmeT1GYWxzZSkKICAgID4+PiBleHByZXNzaW9uMQogICAgQU5EKFN5bWJvbCgnYXBwbGUnKSwgT1IoU3ltYm9sKCdvcmFuZ2VzJyksIFN5bWJvbCgnYmFuYW5hJykpLCBOT1QoU3ltYm9sKCdiYW5hbmEnKSkpCgogICAgPj4+IGV4cHJlc3Npb24yID0gYWxnZWJyYS5wYXJzZSgnKG9yYW5nZXMgfCBiYW5hbmEpIGFuZCBub3QgYmFuYW5hICYgYXBwbGUnLCBzaW1wbGlmeT1UcnVlKQogICAgPj4+IGV4cHJlc3Npb24yCiAgICBBTkQoU3ltYm9sKCdhcHBsZScpLCBOT1QoU3ltYm9sKCdiYW5hbmEnKSksIFN5bWJvbCgnb3JhbmdlcycpKQoKICAgID4+PiBleHByZXNzaW9uMSA9PSBleHByZXNzaW9uMgogICAgRmFsc2UKICAgID4+PiBleHByZXNzaW9uMS5zaW1wbGlmeSgpID09IGV4cHJlc3Npb24yCiAgICBUcnVlCgoKRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tCgpodHRwOi8vcmVhZHRoZWRvY3Mub3JnL2RvY3MvYm9vbGVhbnB5L2VuL2xhdGVzdC8KCgpJbnN0YWxsYXRpb24KLS0tLS0tLS0tLS0tCgpJbnN0YWxsYXRpb24gdmlhIHBpcAp+fn5+fn5+fn5+fn5+fn5+fn5+fgoKVG8gaW5zdGFsbCBib29sZWFuLnB5LCB5b3UgbmVlZCB0byBoYXZlIHRoZSBmb2xsb3dpbmcgcGllY2VzIG9mIHNvZnR3YXJlCm9uIHlvdXIgY29tcHV0ZXI6CgotICBQeXRob24gMy42KwotICBwaXAKCllvdSB0aGVuIG9ubHkgbmVlZCB0byBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kOgoKYGBwaXAgaW5zdGFsbCBib29sZWFuLnB5YGAKCgpJbnN0YWxsYXRpb24gdmlhIHBhY2thZ2UgbWFuYWdlcnMKfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgpUaGVyZSBhcmUgcGFja2FnZXMgYXZhaWxhYmxlIGZvciBlYXN5IGluc3RhbGwgb24gc29tZSBvcGVyYXRpbmcgc3lzdGVtcy4KWW91IGFyZSB3ZWxjb21lIHRvIGhlbHAgdXMgcGFja2FnZSB0aGlzIHRvb2wgZm9yIG1vcmUgZGlzdHJpYnV0aW9ucyEKCi0gIGJvb2xlYW4ucHkgaGFzIGJlZW4gcGFja2FnZWQgYXMgQXJjaCBMaW51eCwgRmVkb3JhLCBvcGVuU3VzLAogICBuaXhwa2dzLCBHdWl4LCBEcmFnb25GbHkgYW5kIEZyZWVCU0QgCiAgIGBwYWNrYWdlcyA8aHR0cHM6Ly9yZXBvbG9neS5vcmcvcHJvamVjdC9weXRob246Ym9vbGVhbi5weS92ZXJzaW9ucz5gX18gLgoKSW4gcGFydGljdWxhcjoKCi0gIEFyY2ggTGludXggKEFVUik6CiAgIGBweXRob24tYm9vbGVhbi5weSA8aHR0cHM6Ly9hdXIuYXJjaGxpbnV4Lm9yZy9wYWNrYWdlcy9weXRob24tYm9vbGVhbi5weS8+YF9fCi0gIEZlZG9yYToKICAgYHB5dGhvbi1ib29sZWFuLnB5IDxodHRwczovL2FwcHMuZmVkb3JhcHJvamVjdC5vcmcvcGFja2FnZXMvcHl0aG9uLWJvb2xlYW4ucHk+YF9fCi0gIG9wZW5TVVNFOgogICBgcHl0aG9uLWJvb2xlYW4ucHkgPGh0dHBzOi8vc29mdHdhcmUub3BlbnN1c2Uub3JnL3BhY2thZ2UvcHl0aG9uLWJvb2xlYW4ucHk+YF9fCgoKVGVzdGluZwotLS0tLS0tCgpUZXN0IGBgYm9vbGVhbi5weWBgIHdpdGggeW91ciBjdXJyZW50IFB5dGhvbiBlbnZpcm9ubWVudDoKCmBgcHl0aG9uIHNldHVwLnB5IHRlc3RgYAoKVGVzdCB3aXRoIGFsbCBvZiB0aGUgc3VwcG9ydGVkIFB5dGhvbiBlbnZpcm9ubWVudHMgdXNpbmcgYGB0b3hgYDoKCjo6CgogICAgcGlwIGluc3RhbGwgLXIgcmVxdWlyZW1lbnRzLWRldi50eHQKICAgIHRveAoKSWYgYGB0b3hgYCB0aHJvd3MgYGBJbnRlcnByZXRlck5vdEZvdW5kYGAsIGxpbWl0IGl0IHRvIHB5dGhvbgppbnRlcnByZXRlcnMgdGhhdCBhcmUgYWN0dWFsbHkgaW5zdGFsbGVkIG9uIHlvdXIgbWFjaGluZToKCjo6CgogICAgdG94IC1lIHB5MzYKCkFsdGVybmF0aXZlbHkgdXNlIHB5dGVzdC4KCgpMaWNlbnNlCi0tLS0tLS0KCkNvcHlyaWdodCAoYykgU2ViYXN0aWFuIEtyYWVtZXIsIGJhc3RpLmtyQGdtYWlsLmNvbSBhbmQgb3RoZXJzClNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UKCi4uIHxCdWlsZCBTdGF0dXN8IGltYWdlOjogaHR0cHM6Ly90cmF2aXMtY2kub3JnL2Jhc3Rpa3IvYm9vbGVhbi5weS5zdmc/YnJhbmNoPW1hc3RlcgogICA6dGFyZ2V0OiBodHRwczovL3RyYXZpcy1jaS5vcmcvYmFzdGlrci9ib29sZWFuLnB5Cg==", + "contentType": "text/prs.fallenstein.rst", + "encoding": "base64" } } } @@ -135,8 +129,9 @@ "license": { "name": "declared license file: LICENSE", "text": { - "content": " GNU LESSER GENERAL PUBLIC LICENSE\n Version 2.1, February 1999\n\n Copyright (C) 1991, 1999 Free Software Foundation, Inc.\n 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n[This is the first released version of the Lesser GPL. It also counts\n as the successor of the GNU Library Public License, version 2, hence\n the version number 2.1.]\n\n Preamble\n\n The licenses for most software are designed to take away your\nfreedom to share and change it. By contrast, the GNU General Public\nLicenses are intended to guarantee your freedom to share and change\nfree software--to make sure the software is free for all its users.\n\n This license, the Lesser General Public License, applies to some\nspecially designated software packages--typically libraries--of the\nFree Software Foundation and other authors who decide to use it. You\ncan use it too, but we suggest you first think carefully about whether\nthis license or the ordinary General Public License is the better\nstrategy to use in any particular case, based on the explanations below.\n\n When we speak of free software, we are referring to freedom of use,\nnot price. Our General Public Licenses are designed to make sure that\nyou have the freedom to distribute copies of free software (and charge\nfor this service if you wish); that you receive source code or can get\nit if you want it; that you can change the software and use pieces of\nit in new free programs; and that you are informed that you can do\nthese things.\n\n To protect your rights, we need to make restrictions that forbid\ndistributors to deny you these rights or to ask you to surrender these\nrights. These restrictions translate to certain responsibilities for\nyou if you distribute copies of the library or if you modify it.\n\n For example, if you distribute copies of the library, whether gratis\nor for a fee, you must give the recipients all the rights that we gave\nyou. You must make sure that they, too, receive or can get the source\ncode. If you link other code with the library, you must provide\ncomplete object files to the recipients, so that they can relink them\nwith the library after making changes to the library and recompiling\nit. And you must show them these terms so they know their rights.\n\n We protect your rights with a two-step method: (1) we copyright the\nlibrary, and (2) we offer you this license, which gives you legal\npermission to copy, distribute and/or modify the library.\n\n To protect each distributor, we want to make it very clear that\nthere is no warranty for the free library. Also, if the library is\nmodified by someone else and passed on, the recipients should know\nthat what they have is not the original version, so that the original\nauthor's reputation will not be affected by problems that might be\nintroduced by others.\n\f\n Finally, software patents pose a constant threat to the existence of\nany free program. We wish to make sure that a company cannot\neffectively restrict the users of a free program by obtaining a\nrestrictive license from a patent holder. Therefore, we insist that\nany patent license obtained for a version of the library must be\nconsistent with the full freedom of use specified in this license.\n\n Most GNU software, including some libraries, is covered by the\nordinary GNU General Public License. This license, the GNU Lesser\nGeneral Public License, applies to certain designated libraries, and\nis quite different from the ordinary General Public License. We use\nthis license for certain libraries in order to permit linking those\nlibraries into non-free programs.\n\n When a program is linked with a library, whether statically or using\na shared library, the combination of the two is legally speaking a\ncombined work, a derivative of the original library. The ordinary\nGeneral Public License therefore permits such linking only if the\nentire combination fits its criteria of freedom. The Lesser General\nPublic License permits more lax criteria for linking other code with\nthe library.\n\n We call this license the \"Lesser\" General Public License because it\ndoes Less to protect the user's freedom than the ordinary General\nPublic License. It also provides other free software developers Less\nof an advantage over competing non-free programs. These disadvantages\nare the reason we use the ordinary General Public License for many\nlibraries. However, the Lesser license provides advantages in certain\nspecial circumstances.\n\n For example, on rare occasions, there may be a special need to\nencourage the widest possible use of a certain library, so that it becomes\na de-facto standard. To achieve this, non-free programs must be\nallowed to use the library. A more frequent case is that a free\nlibrary does the same job as widely used non-free libraries. In this\ncase, there is little to gain by limiting the free library to free\nsoftware only, so we use the Lesser General Public License.\n\n In other cases, permission to use a particular library in non-free\nprograms enables a greater number of people to use a large body of\nfree software. For example, permission to use the GNU C Library in\nnon-free programs enables many more people to use the whole GNU\noperating system, as well as its variant, the GNU/Linux operating\nsystem.\n\n Although the Lesser General Public License is Less protective of the\nusers' freedom, it does ensure that the user of a program that is\nlinked with the Library has the freedom and the wherewithal to run\nthat program using a modified version of the Library.\n\n The precise terms and conditions for copying, distribution and\nmodification follow. Pay close attention to the difference between a\n\"work based on the library\" and a \"work that uses the library\". The\nformer contains code derived from the library, whereas the latter must\nbe combined with the library in order to run.\n\f\n GNU LESSER GENERAL PUBLIC LICENSE\n TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n 0. This License Agreement applies to any software library or other\nprogram which contains a notice placed by the copyright holder or\nother authorized party saying it may be distributed under the terms of\nthis Lesser General Public License (also called \"this License\").\nEach licensee is addressed as \"you\".\n\n A \"library\" means a collection of software functions and/or data\nprepared so as to be conveniently linked with application programs\n(which use some of those functions and data) to form executables.\n\n The \"Library\", below, refers to any such software library or work\nwhich has been distributed under these terms. A \"work based on the\nLibrary\" means either the Library or any derivative work under\ncopyright law: that is to say, a work containing the Library or a\nportion of it, either verbatim or with modifications and/or translated\nstraightforwardly into another language. (Hereinafter, translation is\nincluded without limitation in the term \"modification\".)\n\n \"Source code\" for a work means the preferred form of the work for\nmaking modifications to it. For a library, complete source code means\nall the source code for all modules it contains, plus any associated\ninterface definition files, plus the scripts used to control compilation\nand installation of the library.\n\n Activities other than copying, distribution and modification are not\ncovered by this License; they are outside its scope. The act of\nrunning a program using the Library is not restricted, and output from\nsuch a program is covered only if its contents constitute a work based\non the Library (independent of the use of the Library in a tool for\nwriting it). Whether that is true depends on what the Library does\nand what the program that uses the Library does.\n\n 1. You may copy and distribute verbatim copies of the Library's\ncomplete source code as you receive it, in any medium, provided that\nyou conspicuously and appropriately publish on each copy an\nappropriate copyright notice and disclaimer of warranty; keep intact\nall the notices that refer to this License and to the absence of any\nwarranty; and distribute a copy of this License along with the\nLibrary.\n\n You may charge a fee for the physical act of transferring a copy,\nand you may at your option offer warranty protection in exchange for a\nfee.\n\f\n 2. You may modify your copy or copies of the Library or any portion\nof it, thus forming a work based on the Library, and copy and\ndistribute such modifications or work under the terms of Section 1\nabove, provided that you also meet all of these conditions:\n\n a) The modified work must itself be a software library.\n\n b) You must cause the files modified to carry prominent notices\n stating that you changed the files and the date of any change.\n\n c) You must cause the whole of the work to be licensed at no\n charge to all third parties under the terms of this License.\n\n d) If a facility in the modified Library refers to a function or a\n table of data to be supplied by an application program that uses\n the facility, other than as an argument passed when the facility\n is invoked, then you must make a good faith effort to ensure that,\n in the event an application does not supply such function or\n table, the facility still operates, and performs whatever part of\n its purpose remains meaningful.\n\n (For example, a function in a library to compute square roots has\n a purpose that is entirely well-defined independent of the\n application. Therefore, Subsection 2d requires that any\n application-supplied function or table used by this function must\n be optional: if the application does not supply it, the square\n root function must still compute square roots.)\n\nThese requirements apply to the modified work as a whole. If\nidentifiable sections of that work are not derived from the Library,\nand can be reasonably considered independent and separate works in\nthemselves, then this License, and its terms, do not apply to those\nsections when you distribute them as separate works. But when you\ndistribute the same sections as part of a whole which is a work based\non the Library, the distribution of the whole must be on the terms of\nthis License, whose permissions for other licensees extend to the\nentire whole, and thus to each and every part regardless of who wrote\nit.\n\nThus, it is not the intent of this section to claim rights or contest\nyour rights to work written entirely by you; rather, the intent is to\nexercise the right to control the distribution of derivative or\ncollective works based on the Library.\n\nIn addition, mere aggregation of another work not based on the Library\nwith the Library (or with a work based on the Library) on a volume of\na storage or distribution medium does not bring the other work under\nthe scope of this License.\n\n 3. You may opt to apply the terms of the ordinary GNU General Public\nLicense instead of this License to a given copy of the Library. To do\nthis, you must alter all the notices that refer to this License, so\nthat they refer to the ordinary GNU General Public License, version 2,\ninstead of to this License. (If a newer version than version 2 of the\nordinary GNU General Public License has appeared, then you can specify\nthat version instead if you wish.) Do not make any other change in\nthese notices.\n\f\n Once this change is made in a given copy, it is irreversible for\nthat copy, so the ordinary GNU General Public License applies to all\nsubsequent copies and derivative works made from that copy.\n\n This option is useful when you wish to copy part of the code of\nthe Library into a program that is not a library.\n\n 4. You may copy and distribute the Library (or a portion or\nderivative of it, under Section 2) in object code or executable form\nunder the terms of Sections 1 and 2 above provided that you accompany\nit with the complete corresponding machine-readable source code, which\nmust be distributed under the terms of Sections 1 and 2 above on a\nmedium customarily used for software interchange.\n\n If distribution of object code is made by offering access to copy\nfrom a designated place, then offering equivalent access to copy the\nsource code from the same place satisfies the requirement to\ndistribute the source code, even though third parties are not\ncompelled to copy the source along with the object code.\n\n 5. A program that contains no derivative of any portion of the\nLibrary, but is designed to work with the Library by being compiled or\nlinked with it, is called a \"work that uses the Library\". Such a\nwork, in isolation, is not a derivative work of the Library, and\ntherefore falls outside the scope of this License.\n\n However, linking a \"work that uses the Library\" with the Library\ncreates an executable that is a derivative of the Library (because it\ncontains portions of the Library), rather than a \"work that uses the\nlibrary\". The executable is therefore covered by this License.\nSection 6 states terms for distribution of such executables.\n\n When a \"work that uses the Library\" uses material from a header file\nthat is part of the Library, the object code for the work may be a\nderivative work of the Library even though the source code is not.\nWhether this is true is especially significant if the work can be\nlinked without the Library, or if the work is itself a library. The\nthreshold for this to be true is not precisely defined by law.\n\n If such an object file uses only numerical parameters, data\nstructure layouts and accessors, and small macros and small inline\nfunctions (ten lines or less in length), then the use of the object\nfile is unrestricted, regardless of whether it is legally a derivative\nwork. (Executables containing this object code plus portions of the\nLibrary will still fall under Section 6.)\n\n Otherwise, if the work is a derivative of the Library, you may\ndistribute the object code for the work under the terms of Section 6.\nAny executables containing that work also fall under Section 6,\nwhether or not they are linked directly with the Library itself.\n\f\n 6. As an exception to the Sections above, you may also combine or\nlink a \"work that uses the Library\" with the Library to produce a\nwork containing portions of the Library, and distribute that work\nunder terms of your choice, provided that the terms permit\nmodification of the work for the customer's own use and reverse\nengineering for debugging such modifications.\n\n You must give prominent notice with each copy of the work that the\nLibrary is used in it and that the Library and its use are covered by\nthis License. You must supply a copy of this License. If the work\nduring execution displays copyright notices, you must include the\ncopyright notice for the Library among them, as well as a reference\ndirecting the user to the copy of this License. Also, you must do one\nof these things:\n\n a) Accompany the work with the complete corresponding\n machine-readable source code for the Library including whatever\n changes were used in the work (which must be distributed under\n Sections 1 and 2 above); and, if the work is an executable linked\n with the Library, with the complete machine-readable \"work that\n uses the Library\", as object code and/or source code, so that the\n user can modify the Library and then relink to produce a modified\n executable containing the modified Library. (It is understood\n that the user who changes the contents of definitions files in the\n Library will not necessarily be able to recompile the application\n to use the modified definitions.)\n\n b) Use a suitable shared library mechanism for linking with the\n Library. A suitable mechanism is one that (1) uses at run time a\n copy of the library already present on the user's computer system,\n rather than copying library functions into the executable, and (2)\n will operate properly with a modified version of the library, if\n the user installs one, as long as the modified version is\n interface-compatible with the version that the work was made with.\n\n c) Accompany the work with a written offer, valid for at\n least three years, to give the same user the materials\n specified in Subsection 6a, above, for a charge no more\n than the cost of performing this distribution.\n\n d) If distribution of the work is made by offering access to copy\n from a designated place, offer equivalent access to copy the above\n specified materials from the same place.\n\n e) Verify that the user has already received a copy of these\n materials or that you have already sent this user a copy.\n\n For an executable, the required form of the \"work that uses the\nLibrary\" must include any data and utility programs needed for\nreproducing the executable from it. However, as a special exception,\nthe materials to be distributed need not include anything that is\nnormally distributed (in either source or binary form) with the major\ncomponents (compiler, kernel, and so on) of the operating system on\nwhich the executable runs, unless that component itself accompanies\nthe executable.\n\n It may happen that this requirement contradicts the license\nrestrictions of other proprietary libraries that do not normally\naccompany the operating system. Such a contradiction means you cannot\nuse both them and the Library together in an executable that you\ndistribute.\n\f\n 7. You may place library facilities that are a work based on the\nLibrary side-by-side in a single library together with other library\nfacilities not covered by this License, and distribute such a combined\nlibrary, provided that the separate distribution of the work based on\nthe Library and of the other library facilities is otherwise\npermitted, and provided that you do these two things:\n\n a) Accompany the combined library with a copy of the same work\n based on the Library, uncombined with any other library\n facilities. This must be distributed under the terms of the\n Sections above.\n\n b) Give prominent notice with the combined library of the fact\n that part of it is a work based on the Library, and explaining\n where to find the accompanying uncombined form of the same work.\n\n 8. You may not copy, modify, sublicense, link with, or distribute\nthe Library except as expressly provided under this License. Any\nattempt otherwise to copy, modify, sublicense, link with, or\ndistribute the Library is void, and will automatically terminate your\nrights under this License. However, parties who have received copies,\nor rights, from you under this License will not have their licenses\nterminated so long as such parties remain in full compliance.\n\n 9. You are not required to accept this License, since you have not\nsigned it. However, nothing else grants you permission to modify or\ndistribute the Library or its derivative works. These actions are\nprohibited by law if you do not accept this License. Therefore, by\nmodifying or distributing the Library (or any work based on the\nLibrary), you indicate your acceptance of this License to do so, and\nall its terms and conditions for copying, distributing or modifying\nthe Library or works based on it.\n\n 10. Each time you redistribute the Library (or any work based on the\nLibrary), the recipient automatically receives a license from the\noriginal licensor to copy, distribute, link with or modify the Library\nsubject to these terms and conditions. You may not impose any further\nrestrictions on the recipients' exercise of the rights granted herein.\nYou are not responsible for enforcing compliance by third parties with\nthis License.\n\f\n 11. If, as a consequence of a court judgment or allegation of patent\ninfringement or for any other reason (not limited to patent issues),\nconditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License. If you cannot\ndistribute so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you\nmay not distribute the Library at all. For example, if a patent\nlicense would not permit royalty-free redistribution of the Library by\nall those who receive copies directly or indirectly through you, then\nthe only way you could satisfy both it and this License would be to\nrefrain entirely from distribution of the Library.\n\nIf any portion of this section is held invalid or unenforceable under any\nparticular circumstance, the balance of the section is intended to apply,\nand the section as a whole is intended to apply in other circumstances.\n\nIt is not the purpose of this section to induce you to infringe any\npatents or other property right claims or to contest validity of any\nsuch claims; this section has the sole purpose of protecting the\nintegrity of the free software distribution system which is\nimplemented by public license practices. Many people have made\ngenerous contributions to the wide range of software distributed\nthrough that system in reliance on consistent application of that\nsystem; it is up to the author/donor to decide if he or she is willing\nto distribute software through any other system and a licensee cannot\nimpose that choice.\n\nThis section is intended to make thoroughly clear what is believed to\nbe a consequence of the rest of this License.\n\n 12. If the distribution and/or use of the Library is restricted in\ncertain countries either by patents or by copyrighted interfaces, the\noriginal copyright holder who places the Library under this License may add\nan explicit geographical distribution limitation excluding those countries,\nso that distribution is permitted only in or among countries not thus\nexcluded. In such case, this License incorporates the limitation as if\nwritten in the body of this License.\n\n 13. The Free Software Foundation may publish revised and/or new\nversions of the Lesser General Public License from time to time.\nSuch new versions will be similar in spirit to the present version,\nbut may differ in detail to address new problems or concerns.\n\nEach version is given a distinguishing version number. If the Library\nspecifies a version number of this License which applies to it and\n\"any later version\", you have the option of following the terms and\nconditions either of that version or of any later version published by\nthe Free Software Foundation. If the Library does not specify a\nlicense version number, you may choose any version ever published by\nthe Free Software Foundation.\n\f\n 14. If you wish to incorporate parts of the Library into other free\nprograms whose distribution conditions are incompatible with these,\nwrite to the author to ask for permission. For software which is\ncopyrighted by the Free Software Foundation, write to the Free\nSoftware Foundation; we sometimes make exceptions for this. Our\ndecision will be guided by the two goals of preserving the free status\nof all derivatives of our free software and of promoting the sharing\nand reuse of software generally.\n\n NO WARRANTY\n\n 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO\nWARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.\nEXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR\nOTHER PARTIES PROVIDE THE LIBRARY \"AS IS\" WITHOUT WARRANTY OF ANY\nKIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE\nLIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME\nTHE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN\nWRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY\nAND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU\nFOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR\nCONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE\nLIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING\nRENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A\nFAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF\nSUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\nDAMAGES.\n\n END OF TERMS AND CONDITIONS\n\f\n How to Apply These Terms to Your New Libraries\n\n If you develop a new library, and you want it to be of the greatest\npossible use to the public, we recommend making it free software that\neveryone can redistribute and change. You can do so by permitting\nredistribution under these terms (or, alternatively, under the terms of the\nordinary General Public License).\n\n To apply these terms, attach the following notices to the library. It is\nsafest to attach them to the start of each source file to most effectively\nconvey the exclusion of warranty; and each file should have at least the\n\"copyright\" line and a pointer to where the full notice is found.\n\n \n Copyright (C) \n\n This library is free software; you can redistribute it and/or\n modify it under the terms of the GNU Lesser General Public\n License as published by the Free Software Foundation; either\n version 2.1 of the License, or (at your option) any later version.\n\n This library is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public\n License along with this library; if not, write to the Free Software\n Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n\nAlso add information on how to contact you by electronic and paper mail.\n\nYou should also get your employer (if you work as a programmer) or your\nschool, if any, to sign a \"copyright disclaimer\" for the library, if\nnecessary. Here is a sample; alter the names:\n\n Yoyodyne, Inc., hereby disclaims all copyright interest in the\n library `Frob' (a library for tweaking knobs) written by James Random Hacker.\n\n , 1 April 1990\n Ty Coon, President of Vice\n\nThat's all there is to it!\n", - "contentType": "text/plain" + "content": "ICAgICAgICAgICAgICAgICAgR05VIExFU1NFUiBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFCiAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAyLjEsIEZlYnJ1YXJ5IDE5OTkKCiBDb3B5cmlnaHQgKEMpIDE5OTEsIDE5OTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKIEV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcwogb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCgpbVGhpcyBpcyB0aGUgZmlyc3QgcmVsZWFzZWQgdmVyc2lvbiBvZiB0aGUgTGVzc2VyIEdQTC4gIEl0IGFsc28gY291bnRzCiBhcyB0aGUgc3VjY2Vzc29yIG9mIHRoZSBHTlUgTGlicmFyeSBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLCBoZW5jZQogdGhlIHZlcnNpb24gbnVtYmVyIDIuMS5dCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlYW1ibGUKCiAgVGhlIGxpY2Vuc2VzIGZvciBtb3N0IHNvZnR3YXJlIGFyZSBkZXNpZ25lZCB0byB0YWtlIGF3YXkgeW91cgpmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgaXQuICBCeSBjb250cmFzdCwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwpMaWNlbnNlcyBhcmUgaW50ZW5kZWQgdG8gZ3VhcmFudGVlIHlvdXIgZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlCmZyZWUgc29mdHdhcmUtLXRvIG1ha2Ugc3VyZSB0aGUgc29mdHdhcmUgaXMgZnJlZSBmb3IgYWxsIGl0cyB1c2Vycy4KCiAgVGhpcyBsaWNlbnNlLCB0aGUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFwcGxpZXMgdG8gc29tZQpzcGVjaWFsbHkgZGVzaWduYXRlZCBzb2Z0d2FyZSBwYWNrYWdlcy0tdHlwaWNhbGx5IGxpYnJhcmllcy0tb2YgdGhlCkZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBhbmQgb3RoZXIgYXV0aG9ycyB3aG8gZGVjaWRlIHRvIHVzZSBpdC4gIFlvdQpjYW4gdXNlIGl0IHRvbywgYnV0IHdlIHN1Z2dlc3QgeW91IGZpcnN0IHRoaW5rIGNhcmVmdWxseSBhYm91dCB3aGV0aGVyCnRoaXMgbGljZW5zZSBvciB0aGUgb3JkaW5hcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyB0aGUgYmV0dGVyCnN0cmF0ZWd5IHRvIHVzZSBpbiBhbnkgcGFydGljdWxhciBjYXNlLCBiYXNlZCBvbiB0aGUgZXhwbGFuYXRpb25zIGJlbG93LgoKICBXaGVuIHdlIHNwZWFrIG9mIGZyZWUgc29mdHdhcmUsIHdlIGFyZSByZWZlcnJpbmcgdG8gZnJlZWRvbSBvZiB1c2UsCm5vdCBwcmljZS4gIE91ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlcyBhcmUgZGVzaWduZWQgdG8gbWFrZSBzdXJlIHRoYXQKeW91IGhhdmUgdGhlIGZyZWVkb20gdG8gZGlzdHJpYnV0ZSBjb3BpZXMgb2YgZnJlZSBzb2Z0d2FyZSAoYW5kIGNoYXJnZQpmb3IgdGhpcyBzZXJ2aWNlIGlmIHlvdSB3aXNoKTsgdGhhdCB5b3UgcmVjZWl2ZSBzb3VyY2UgY29kZSBvciBjYW4gZ2V0Cml0IGlmIHlvdSB3YW50IGl0OyB0aGF0IHlvdSBjYW4gY2hhbmdlIHRoZSBzb2Z0d2FyZSBhbmQgdXNlIHBpZWNlcyBvZgppdCBpbiBuZXcgZnJlZSBwcm9ncmFtczsgYW5kIHRoYXQgeW91IGFyZSBpbmZvcm1lZCB0aGF0IHlvdSBjYW4gZG8KdGhlc2UgdGhpbmdzLgoKICBUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIG1ha2UgcmVzdHJpY3Rpb25zIHRoYXQgZm9yYmlkCmRpc3RyaWJ1dG9ycyB0byBkZW55IHlvdSB0aGVzZSByaWdodHMgb3IgdG8gYXNrIHlvdSB0byBzdXJyZW5kZXIgdGhlc2UKcmlnaHRzLiAgVGhlc2UgcmVzdHJpY3Rpb25zIHRyYW5zbGF0ZSB0byBjZXJ0YWluIHJlc3BvbnNpYmlsaXRpZXMgZm9yCnlvdSBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIGxpYnJhcnkgb3IgaWYgeW91IG1vZGlmeSBpdC4KCiAgRm9yIGV4YW1wbGUsIGlmIHlvdSBkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUgbGlicmFyeSwgd2hldGhlciBncmF0aXMKb3IgZm9yIGEgZmVlLCB5b3UgbXVzdCBnaXZlIHRoZSByZWNpcGllbnRzIGFsbCB0aGUgcmlnaHRzIHRoYXQgd2UgZ2F2ZQp5b3UuICBZb3UgbXVzdCBtYWtlIHN1cmUgdGhhdCB0aGV5LCB0b28sIHJlY2VpdmUgb3IgY2FuIGdldCB0aGUgc291cmNlCmNvZGUuICBJZiB5b3UgbGluayBvdGhlciBjb2RlIHdpdGggdGhlIGxpYnJhcnksIHlvdSBtdXN0IHByb3ZpZGUKY29tcGxldGUgb2JqZWN0IGZpbGVzIHRvIHRoZSByZWNpcGllbnRzLCBzbyB0aGF0IHRoZXkgY2FuIHJlbGluayB0aGVtCndpdGggdGhlIGxpYnJhcnkgYWZ0ZXIgbWFraW5nIGNoYW5nZXMgdG8gdGhlIGxpYnJhcnkgYW5kIHJlY29tcGlsaW5nCml0LiAgQW5kIHlvdSBtdXN0IHNob3cgdGhlbSB0aGVzZSB0ZXJtcyBzbyB0aGV5IGtub3cgdGhlaXIgcmlnaHRzLgoKICBXZSBwcm90ZWN0IHlvdXIgcmlnaHRzIHdpdGggYSB0d28tc3RlcCBtZXRob2Q6ICgxKSB3ZSBjb3B5cmlnaHQgdGhlCmxpYnJhcnksIGFuZCAoMikgd2Ugb2ZmZXIgeW91IHRoaXMgbGljZW5zZSwgd2hpY2ggZ2l2ZXMgeW91IGxlZ2FsCnBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IHRoZSBsaWJyYXJ5LgoKICBUbyBwcm90ZWN0IGVhY2ggZGlzdHJpYnV0b3IsIHdlIHdhbnQgdG8gbWFrZSBpdCB2ZXJ5IGNsZWFyIHRoYXQKdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoZSBmcmVlIGxpYnJhcnkuICBBbHNvLCBpZiB0aGUgbGlicmFyeSBpcwptb2RpZmllZCBieSBzb21lb25lIGVsc2UgYW5kIHBhc3NlZCBvbiwgdGhlIHJlY2lwaWVudHMgc2hvdWxkIGtub3cKdGhhdCB3aGF0IHRoZXkgaGF2ZSBpcyBub3QgdGhlIG9yaWdpbmFsIHZlcnNpb24sIHNvIHRoYXQgdGhlIG9yaWdpbmFsCmF1dGhvcidzIHJlcHV0YXRpb24gd2lsbCBub3QgYmUgYWZmZWN0ZWQgYnkgcHJvYmxlbXMgdGhhdCBtaWdodCBiZQppbnRyb2R1Y2VkIGJ5IG90aGVycy4KDAogIEZpbmFsbHksIHNvZnR3YXJlIHBhdGVudHMgcG9zZSBhIGNvbnN0YW50IHRocmVhdCB0byB0aGUgZXhpc3RlbmNlIG9mCmFueSBmcmVlIHByb2dyYW0uICBXZSB3aXNoIHRvIG1ha2Ugc3VyZSB0aGF0IGEgY29tcGFueSBjYW5ub3QKZWZmZWN0aXZlbHkgcmVzdHJpY3QgdGhlIHVzZXJzIG9mIGEgZnJlZSBwcm9ncmFtIGJ5IG9idGFpbmluZyBhCnJlc3RyaWN0aXZlIGxpY2Vuc2UgZnJvbSBhIHBhdGVudCBob2xkZXIuICBUaGVyZWZvcmUsIHdlIGluc2lzdCB0aGF0CmFueSBwYXRlbnQgbGljZW5zZSBvYnRhaW5lZCBmb3IgYSB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5IG11c3QgYmUKY29uc2lzdGVudCB3aXRoIHRoZSBmdWxsIGZyZWVkb20gb2YgdXNlIHNwZWNpZmllZCBpbiB0aGlzIGxpY2Vuc2UuCgogIE1vc3QgR05VIHNvZnR3YXJlLCBpbmNsdWRpbmcgc29tZSBsaWJyYXJpZXMsIGlzIGNvdmVyZWQgYnkgdGhlCm9yZGluYXJ5IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBsaWNlbnNlLCB0aGUgR05VIExlc3NlcgpHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBhcHBsaWVzIHRvIGNlcnRhaW4gZGVzaWduYXRlZCBsaWJyYXJpZXMsIGFuZAppcyBxdWl0ZSBkaWZmZXJlbnQgZnJvbSB0aGUgb3JkaW5hcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFdlIHVzZQp0aGlzIGxpY2Vuc2UgZm9yIGNlcnRhaW4gbGlicmFyaWVzIGluIG9yZGVyIHRvIHBlcm1pdCBsaW5raW5nIHRob3NlCmxpYnJhcmllcyBpbnRvIG5vbi1mcmVlIHByb2dyYW1zLgoKICBXaGVuIGEgcHJvZ3JhbSBpcyBsaW5rZWQgd2l0aCBhIGxpYnJhcnksIHdoZXRoZXIgc3RhdGljYWxseSBvciB1c2luZwphIHNoYXJlZCBsaWJyYXJ5LCB0aGUgY29tYmluYXRpb24gb2YgdGhlIHR3byBpcyBsZWdhbGx5IHNwZWFraW5nIGEKY29tYmluZWQgd29yaywgYSBkZXJpdmF0aXZlIG9mIHRoZSBvcmlnaW5hbCBsaWJyYXJ5LiAgVGhlIG9yZGluYXJ5CkdlbmVyYWwgUHVibGljIExpY2Vuc2UgdGhlcmVmb3JlIHBlcm1pdHMgc3VjaCBsaW5raW5nIG9ubHkgaWYgdGhlCmVudGlyZSBjb21iaW5hdGlvbiBmaXRzIGl0cyBjcml0ZXJpYSBvZiBmcmVlZG9tLiAgVGhlIExlc3NlciBHZW5lcmFsClB1YmxpYyBMaWNlbnNlIHBlcm1pdHMgbW9yZSBsYXggY3JpdGVyaWEgZm9yIGxpbmtpbmcgb3RoZXIgY29kZSB3aXRoCnRoZSBsaWJyYXJ5LgoKICBXZSBjYWxsIHRoaXMgbGljZW5zZSB0aGUgIkxlc3NlciIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBiZWNhdXNlIGl0CmRvZXMgTGVzcyB0byBwcm90ZWN0IHRoZSB1c2VyJ3MgZnJlZWRvbSB0aGFuIHRoZSBvcmRpbmFyeSBHZW5lcmFsClB1YmxpYyBMaWNlbnNlLiAgSXQgYWxzbyBwcm92aWRlcyBvdGhlciBmcmVlIHNvZnR3YXJlIGRldmVsb3BlcnMgTGVzcwpvZiBhbiBhZHZhbnRhZ2Ugb3ZlciBjb21wZXRpbmcgbm9uLWZyZWUgcHJvZ3JhbXMuICBUaGVzZSBkaXNhZHZhbnRhZ2VzCmFyZSB0aGUgcmVhc29uIHdlIHVzZSB0aGUgb3JkaW5hcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbWFueQpsaWJyYXJpZXMuICBIb3dldmVyLCB0aGUgTGVzc2VyIGxpY2Vuc2UgcHJvdmlkZXMgYWR2YW50YWdlcyBpbiBjZXJ0YWluCnNwZWNpYWwgY2lyY3Vtc3RhbmNlcy4KCiAgRm9yIGV4YW1wbGUsIG9uIHJhcmUgb2NjYXNpb25zLCB0aGVyZSBtYXkgYmUgYSBzcGVjaWFsIG5lZWQgdG8KZW5jb3VyYWdlIHRoZSB3aWRlc3QgcG9zc2libGUgdXNlIG9mIGEgY2VydGFpbiBsaWJyYXJ5LCBzbyB0aGF0IGl0IGJlY29tZXMKYSBkZS1mYWN0byBzdGFuZGFyZC4gIFRvIGFjaGlldmUgdGhpcywgbm9uLWZyZWUgcHJvZ3JhbXMgbXVzdCBiZQphbGxvd2VkIHRvIHVzZSB0aGUgbGlicmFyeS4gIEEgbW9yZSBmcmVxdWVudCBjYXNlIGlzIHRoYXQgYSBmcmVlCmxpYnJhcnkgZG9lcyB0aGUgc2FtZSBqb2IgYXMgd2lkZWx5IHVzZWQgbm9uLWZyZWUgbGlicmFyaWVzLiAgSW4gdGhpcwpjYXNlLCB0aGVyZSBpcyBsaXR0bGUgdG8gZ2FpbiBieSBsaW1pdGluZyB0aGUgZnJlZSBsaWJyYXJ5IHRvIGZyZWUKc29mdHdhcmUgb25seSwgc28gd2UgdXNlIHRoZSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KCiAgSW4gb3RoZXIgY2FzZXMsIHBlcm1pc3Npb24gdG8gdXNlIGEgcGFydGljdWxhciBsaWJyYXJ5IGluIG5vbi1mcmVlCnByb2dyYW1zIGVuYWJsZXMgYSBncmVhdGVyIG51bWJlciBvZiBwZW9wbGUgdG8gdXNlIGEgbGFyZ2UgYm9keSBvZgpmcmVlIHNvZnR3YXJlLiAgRm9yIGV4YW1wbGUsIHBlcm1pc3Npb24gdG8gdXNlIHRoZSBHTlUgQyBMaWJyYXJ5IGluCm5vbi1mcmVlIHByb2dyYW1zIGVuYWJsZXMgbWFueSBtb3JlIHBlb3BsZSB0byB1c2UgdGhlIHdob2xlIEdOVQpvcGVyYXRpbmcgc3lzdGVtLCBhcyB3ZWxsIGFzIGl0cyB2YXJpYW50LCB0aGUgR05VL0xpbnV4IG9wZXJhdGluZwpzeXN0ZW0uCgogIEFsdGhvdWdoIHRoZSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBMZXNzIHByb3RlY3RpdmUgb2YgdGhlCnVzZXJzJyBmcmVlZG9tLCBpdCBkb2VzIGVuc3VyZSB0aGF0IHRoZSB1c2VyIG9mIGEgcHJvZ3JhbSB0aGF0IGlzCmxpbmtlZCB3aXRoIHRoZSBMaWJyYXJ5IGhhcyB0aGUgZnJlZWRvbSBhbmQgdGhlIHdoZXJld2l0aGFsIHRvIHJ1bgp0aGF0IHByb2dyYW0gdXNpbmcgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBMaWJyYXJ5LgoKICBUaGUgcHJlY2lzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW9uIGFuZAptb2RpZmljYXRpb24gZm9sbG93LiAgUGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGEKIndvcmsgYmFzZWQgb24gdGhlIGxpYnJhcnkiIGFuZCBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgbGlicmFyeSIuICBUaGUKZm9ybWVyIGNvbnRhaW5zIGNvZGUgZGVyaXZlZCBmcm9tIHRoZSBsaWJyYXJ5LCB3aGVyZWFzIHRoZSBsYXR0ZXIgbXVzdApiZSBjb21iaW5lZCB3aXRoIHRoZSBsaWJyYXJ5IGluIG9yZGVyIHRvIHJ1bi4KDAogICAgICAgICAgICAgICAgICBHTlUgTEVTU0VSIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKICAgVEVSTVMgQU5EIENPTkRJVElPTlMgRk9SIENPUFlJTkcsIERJU1RSSUJVVElPTiBBTkQgTU9ESUZJQ0FUSU9OCgogIDAuIFRoaXMgTGljZW5zZSBBZ3JlZW1lbnQgYXBwbGllcyB0byBhbnkgc29mdHdhcmUgbGlicmFyeSBvciBvdGhlcgpwcm9ncmFtIHdoaWNoIGNvbnRhaW5zIGEgbm90aWNlIHBsYWNlZCBieSB0aGUgY29weXJpZ2h0IGhvbGRlciBvcgpvdGhlciBhdXRob3JpemVkIHBhcnR5IHNheWluZyBpdCBtYXkgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mCnRoaXMgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKGFsc28gY2FsbGVkICJ0aGlzIExpY2Vuc2UiKS4KRWFjaCBsaWNlbnNlZSBpcyBhZGRyZXNzZWQgYXMgInlvdSIuCgogIEEgImxpYnJhcnkiIG1lYW5zIGEgY29sbGVjdGlvbiBvZiBzb2Z0d2FyZSBmdW5jdGlvbnMgYW5kL29yIGRhdGEKcHJlcGFyZWQgc28gYXMgdG8gYmUgY29udmVuaWVudGx5IGxpbmtlZCB3aXRoIGFwcGxpY2F0aW9uIHByb2dyYW1zCih3aGljaCB1c2Ugc29tZSBvZiB0aG9zZSBmdW5jdGlvbnMgYW5kIGRhdGEpIHRvIGZvcm0gZXhlY3V0YWJsZXMuCgogIFRoZSAiTGlicmFyeSIsIGJlbG93LCByZWZlcnMgdG8gYW55IHN1Y2ggc29mdHdhcmUgbGlicmFyeSBvciB3b3JrCndoaWNoIGhhcyBiZWVuIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZXNlIHRlcm1zLiAgQSAid29yayBiYXNlZCBvbiB0aGUKTGlicmFyeSIgbWVhbnMgZWl0aGVyIHRoZSBMaWJyYXJ5IG9yIGFueSBkZXJpdmF0aXZlIHdvcmsgdW5kZXIKY29weXJpZ2h0IGxhdzogdGhhdCBpcyB0byBzYXksIGEgd29yayBjb250YWluaW5nIHRoZSBMaWJyYXJ5IG9yIGEKcG9ydGlvbiBvZiBpdCwgZWl0aGVyIHZlcmJhdGltIG9yIHdpdGggbW9kaWZpY2F0aW9ucyBhbmQvb3IgdHJhbnNsYXRlZApzdHJhaWdodGZvcndhcmRseSBpbnRvIGFub3RoZXIgbGFuZ3VhZ2UuICAoSGVyZWluYWZ0ZXIsIHRyYW5zbGF0aW9uIGlzCmluY2x1ZGVkIHdpdGhvdXQgbGltaXRhdGlvbiBpbiB0aGUgdGVybSAibW9kaWZpY2F0aW9uIi4pCgogICJTb3VyY2UgY29kZSIgZm9yIGEgd29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsgZm9yCm1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgRm9yIGEgbGlicmFyeSwgY29tcGxldGUgc291cmNlIGNvZGUgbWVhbnMKYWxsIHRoZSBzb3VyY2UgY29kZSBmb3IgYWxsIG1vZHVsZXMgaXQgY29udGFpbnMsIHBsdXMgYW55IGFzc29jaWF0ZWQKaW50ZXJmYWNlIGRlZmluaXRpb24gZmlsZXMsIHBsdXMgdGhlIHNjcmlwdHMgdXNlZCB0byBjb250cm9sIGNvbXBpbGF0aW9uCmFuZCBpbnN0YWxsYXRpb24gb2YgdGhlIGxpYnJhcnkuCgogIEFjdGl2aXRpZXMgb3RoZXIgdGhhbiBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kIG1vZGlmaWNhdGlvbiBhcmUgbm90CmNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlOyB0aGV5IGFyZSBvdXRzaWRlIGl0cyBzY29wZS4gIFRoZSBhY3Qgb2YKcnVubmluZyBhIHByb2dyYW0gdXNpbmcgdGhlIExpYnJhcnkgaXMgbm90IHJlc3RyaWN0ZWQsIGFuZCBvdXRwdXQgZnJvbQpzdWNoIGEgcHJvZ3JhbSBpcyBjb3ZlcmVkIG9ubHkgaWYgaXRzIGNvbnRlbnRzIGNvbnN0aXR1dGUgYSB3b3JrIGJhc2VkCm9uIHRoZSBMaWJyYXJ5IChpbmRlcGVuZGVudCBvZiB0aGUgdXNlIG9mIHRoZSBMaWJyYXJ5IGluIGEgdG9vbCBmb3IKd3JpdGluZyBpdCkuICBXaGV0aGVyIHRoYXQgaXMgdHJ1ZSBkZXBlbmRzIG9uIHdoYXQgdGhlIExpYnJhcnkgZG9lcwphbmQgd2hhdCB0aGUgcHJvZ3JhbSB0aGF0IHVzZXMgdGhlIExpYnJhcnkgZG9lcy4KCiAgMS4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcyBvZiB0aGUgTGlicmFyeSdzCmNvbXBsZXRlIHNvdXJjZSBjb2RlIGFzIHlvdSByZWNlaXZlIGl0LCBpbiBhbnkgbWVkaXVtLCBwcm92aWRlZCB0aGF0CnlvdSBjb25zcGljdW91c2x5IGFuZCBhcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuCmFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2UgYW5kIGRpc2NsYWltZXIgb2Ygd2FycmFudHk7IGtlZXAgaW50YWN0CmFsbCB0aGUgbm90aWNlcyB0aGF0IHJlZmVyIHRvIHRoaXMgTGljZW5zZSBhbmQgdG8gdGhlIGFic2VuY2Ugb2YgYW55CndhcnJhbnR5OyBhbmQgZGlzdHJpYnV0ZSBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlIGFsb25nIHdpdGggdGhlCkxpYnJhcnkuCgogIFlvdSBtYXkgY2hhcmdlIGEgZmVlIGZvciB0aGUgcGh5c2ljYWwgYWN0IG9mIHRyYW5zZmVycmluZyBhIGNvcHksCmFuZCB5b3UgbWF5IGF0IHlvdXIgb3B0aW9uIG9mZmVyIHdhcnJhbnR5IHByb3RlY3Rpb24gaW4gZXhjaGFuZ2UgZm9yIGEKZmVlLgoMCiAgMi4gWW91IG1heSBtb2RpZnkgeW91ciBjb3B5IG9yIGNvcGllcyBvZiB0aGUgTGlicmFyeSBvciBhbnkgcG9ydGlvbgpvZiBpdCwgdGh1cyBmb3JtaW5nIGEgd29yayBiYXNlZCBvbiB0aGUgTGlicmFyeSwgYW5kIGNvcHkgYW5kCmRpc3RyaWJ1dGUgc3VjaCBtb2RpZmljYXRpb25zIG9yIHdvcmsgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb24gMQphYm92ZSwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBtZWV0IGFsbCBvZiB0aGVzZSBjb25kaXRpb25zOgoKICAgIGEpIFRoZSBtb2RpZmllZCB3b3JrIG11c3QgaXRzZWxmIGJlIGEgc29mdHdhcmUgbGlicmFyeS4KCiAgICBiKSBZb3UgbXVzdCBjYXVzZSB0aGUgZmlsZXMgbW9kaWZpZWQgdG8gY2FycnkgcHJvbWluZW50IG5vdGljZXMKICAgIHN0YXRpbmcgdGhhdCB5b3UgY2hhbmdlZCB0aGUgZmlsZXMgYW5kIHRoZSBkYXRlIG9mIGFueSBjaGFuZ2UuCgogICAgYykgWW91IG11c3QgY2F1c2UgdGhlIHdob2xlIG9mIHRoZSB3b3JrIHRvIGJlIGxpY2Vuc2VkIGF0IG5vCiAgICBjaGFyZ2UgdG8gYWxsIHRoaXJkIHBhcnRpZXMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZS4KCiAgICBkKSBJZiBhIGZhY2lsaXR5IGluIHRoZSBtb2RpZmllZCBMaWJyYXJ5IHJlZmVycyB0byBhIGZ1bmN0aW9uIG9yIGEKICAgIHRhYmxlIG9mIGRhdGEgdG8gYmUgc3VwcGxpZWQgYnkgYW4gYXBwbGljYXRpb24gcHJvZ3JhbSB0aGF0IHVzZXMKICAgIHRoZSBmYWNpbGl0eSwgb3RoZXIgdGhhbiBhcyBhbiBhcmd1bWVudCBwYXNzZWQgd2hlbiB0aGUgZmFjaWxpdHkKICAgIGlzIGludm9rZWQsIHRoZW4geW91IG11c3QgbWFrZSBhIGdvb2QgZmFpdGggZWZmb3J0IHRvIGVuc3VyZSB0aGF0LAogICAgaW4gdGhlIGV2ZW50IGFuIGFwcGxpY2F0aW9uIGRvZXMgbm90IHN1cHBseSBzdWNoIGZ1bmN0aW9uIG9yCiAgICB0YWJsZSwgdGhlIGZhY2lsaXR5IHN0aWxsIG9wZXJhdGVzLCBhbmQgcGVyZm9ybXMgd2hhdGV2ZXIgcGFydCBvZgogICAgaXRzIHB1cnBvc2UgcmVtYWlucyBtZWFuaW5nZnVsLgoKICAgIChGb3IgZXhhbXBsZSwgYSBmdW5jdGlvbiBpbiBhIGxpYnJhcnkgdG8gY29tcHV0ZSBzcXVhcmUgcm9vdHMgaGFzCiAgICBhIHB1cnBvc2UgdGhhdCBpcyBlbnRpcmVseSB3ZWxsLWRlZmluZWQgaW5kZXBlbmRlbnQgb2YgdGhlCiAgICBhcHBsaWNhdGlvbi4gIFRoZXJlZm9yZSwgU3Vic2VjdGlvbiAyZCByZXF1aXJlcyB0aGF0IGFueQogICAgYXBwbGljYXRpb24tc3VwcGxpZWQgZnVuY3Rpb24gb3IgdGFibGUgdXNlZCBieSB0aGlzIGZ1bmN0aW9uIG11c3QKICAgIGJlIG9wdGlvbmFsOiBpZiB0aGUgYXBwbGljYXRpb24gZG9lcyBub3Qgc3VwcGx5IGl0LCB0aGUgc3F1YXJlCiAgICByb290IGZ1bmN0aW9uIG11c3Qgc3RpbGwgY29tcHV0ZSBzcXVhcmUgcm9vdHMuKQoKVGhlc2UgcmVxdWlyZW1lbnRzIGFwcGx5IHRvIHRoZSBtb2RpZmllZCB3b3JrIGFzIGEgd2hvbGUuICBJZgppZGVudGlmaWFibGUgc2VjdGlvbnMgb2YgdGhhdCB3b3JrIGFyZSBub3QgZGVyaXZlZCBmcm9tIHRoZSBMaWJyYXJ5LAphbmQgY2FuIGJlIHJlYXNvbmFibHkgY29uc2lkZXJlZCBpbmRlcGVuZGVudCBhbmQgc2VwYXJhdGUgd29ya3MgaW4KdGhlbXNlbHZlcywgdGhlbiB0aGlzIExpY2Vuc2UsIGFuZCBpdHMgdGVybXMsIGRvIG5vdCBhcHBseSB0byB0aG9zZQpzZWN0aW9ucyB3aGVuIHlvdSBkaXN0cmlidXRlIHRoZW0gYXMgc2VwYXJhdGUgd29ya3MuICBCdXQgd2hlbiB5b3UKZGlzdHJpYnV0ZSB0aGUgc2FtZSBzZWN0aW9ucyBhcyBwYXJ0IG9mIGEgd2hvbGUgd2hpY2ggaXMgYSB3b3JrIGJhc2VkCm9uIHRoZSBMaWJyYXJ5LCB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSB3aG9sZSBtdXN0IGJlIG9uIHRoZSB0ZXJtcyBvZgp0aGlzIExpY2Vuc2UsIHdob3NlIHBlcm1pc3Npb25zIGZvciBvdGhlciBsaWNlbnNlZXMgZXh0ZW5kIHRvIHRoZQplbnRpcmUgd2hvbGUsIGFuZCB0aHVzIHRvIGVhY2ggYW5kIGV2ZXJ5IHBhcnQgcmVnYXJkbGVzcyBvZiB3aG8gd3JvdGUKaXQuCgpUaHVzLCBpdCBpcyBub3QgdGhlIGludGVudCBvZiB0aGlzIHNlY3Rpb24gdG8gY2xhaW0gcmlnaHRzIG9yIGNvbnRlc3QKeW91ciByaWdodHMgdG8gd29yayB3cml0dGVuIGVudGlyZWx5IGJ5IHlvdTsgcmF0aGVyLCB0aGUgaW50ZW50IGlzIHRvCmV4ZXJjaXNlIHRoZSByaWdodCB0byBjb250cm9sIHRoZSBkaXN0cmlidXRpb24gb2YgZGVyaXZhdGl2ZSBvcgpjb2xsZWN0aXZlIHdvcmtzIGJhc2VkIG9uIHRoZSBMaWJyYXJ5LgoKSW4gYWRkaXRpb24sIG1lcmUgYWdncmVnYXRpb24gb2YgYW5vdGhlciB3b3JrIG5vdCBiYXNlZCBvbiB0aGUgTGlicmFyeQp3aXRoIHRoZSBMaWJyYXJ5IChvciB3aXRoIGEgd29yayBiYXNlZCBvbiB0aGUgTGlicmFyeSkgb24gYSB2b2x1bWUgb2YKYSBzdG9yYWdlIG9yIGRpc3RyaWJ1dGlvbiBtZWRpdW0gZG9lcyBub3QgYnJpbmcgdGhlIG90aGVyIHdvcmsgdW5kZXIKdGhlIHNjb3BlIG9mIHRoaXMgTGljZW5zZS4KCiAgMy4gWW91IG1heSBvcHQgdG8gYXBwbHkgdGhlIHRlcm1zIG9mIHRoZSBvcmRpbmFyeSBHTlUgR2VuZXJhbCBQdWJsaWMKTGljZW5zZSBpbnN0ZWFkIG9mIHRoaXMgTGljZW5zZSB0byBhIGdpdmVuIGNvcHkgb2YgdGhlIExpYnJhcnkuICBUbyBkbwp0aGlzLCB5b3UgbXVzdCBhbHRlciBhbGwgdGhlIG5vdGljZXMgdGhhdCByZWZlciB0byB0aGlzIExpY2Vuc2UsIHNvCnRoYXQgdGhleSByZWZlciB0byB0aGUgb3JkaW5hcnkgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMiwKaW5zdGVhZCBvZiB0byB0aGlzIExpY2Vuc2UuICAoSWYgYSBuZXdlciB2ZXJzaW9uIHRoYW4gdmVyc2lvbiAyIG9mIHRoZQpvcmRpbmFyeSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBoYXMgYXBwZWFyZWQsIHRoZW4geW91IGNhbiBzcGVjaWZ5CnRoYXQgdmVyc2lvbiBpbnN0ZWFkIGlmIHlvdSB3aXNoLikgIERvIG5vdCBtYWtlIGFueSBvdGhlciBjaGFuZ2UgaW4KdGhlc2Ugbm90aWNlcy4KDAogIE9uY2UgdGhpcyBjaGFuZ2UgaXMgbWFkZSBpbiBhIGdpdmVuIGNvcHksIGl0IGlzIGlycmV2ZXJzaWJsZSBmb3IKdGhhdCBjb3B5LCBzbyB0aGUgb3JkaW5hcnkgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXBwbGllcyB0byBhbGwKc3Vic2VxdWVudCBjb3BpZXMgYW5kIGRlcml2YXRpdmUgd29ya3MgbWFkZSBmcm9tIHRoYXQgY29weS4KCiAgVGhpcyBvcHRpb24gaXMgdXNlZnVsIHdoZW4geW91IHdpc2ggdG8gY29weSBwYXJ0IG9mIHRoZSBjb2RlIG9mCnRoZSBMaWJyYXJ5IGludG8gYSBwcm9ncmFtIHRoYXQgaXMgbm90IGEgbGlicmFyeS4KCiAgNC4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IChvciBhIHBvcnRpb24gb3IKZGVyaXZhdGl2ZSBvZiBpdCwgdW5kZXIgU2VjdGlvbiAyKSBpbiBvYmplY3QgY29kZSBvciBleGVjdXRhYmxlIGZvcm0KdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zIDEgYW5kIDIgYWJvdmUgcHJvdmlkZWQgdGhhdCB5b3UgYWNjb21wYW55Cml0IHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcgbWFjaGluZS1yZWFkYWJsZSBzb3VyY2UgY29kZSwgd2hpY2gKbXVzdCBiZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBvbiBhCm1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZS4KCiAgSWYgZGlzdHJpYnV0aW9uIG9mIG9iamVjdCBjb2RlIGlzIG1hZGUgYnkgb2ZmZXJpbmcgYWNjZXNzIHRvIGNvcHkKZnJvbSBhIGRlc2lnbmF0ZWQgcGxhY2UsIHRoZW4gb2ZmZXJpbmcgZXF1aXZhbGVudCBhY2Nlc3MgdG8gY29weSB0aGUKc291cmNlIGNvZGUgZnJvbSB0aGUgc2FtZSBwbGFjZSBzYXRpc2ZpZXMgdGhlIHJlcXVpcmVtZW50IHRvCmRpc3RyaWJ1dGUgdGhlIHNvdXJjZSBjb2RlLCBldmVuIHRob3VnaCB0aGlyZCBwYXJ0aWVzIGFyZSBub3QKY29tcGVsbGVkIHRvIGNvcHkgdGhlIHNvdXJjZSBhbG9uZyB3aXRoIHRoZSBvYmplY3QgY29kZS4KCiAgNS4gQSBwcm9ncmFtIHRoYXQgY29udGFpbnMgbm8gZGVyaXZhdGl2ZSBvZiBhbnkgcG9ydGlvbiBvZiB0aGUKTGlicmFyeSwgYnV0IGlzIGRlc2lnbmVkIHRvIHdvcmsgd2l0aCB0aGUgTGlicmFyeSBieSBiZWluZyBjb21waWxlZCBvcgpsaW5rZWQgd2l0aCBpdCwgaXMgY2FsbGVkIGEgIndvcmsgdGhhdCB1c2VzIHRoZSBMaWJyYXJ5Ii4gIFN1Y2ggYQp3b3JrLCBpbiBpc29sYXRpb24sIGlzIG5vdCBhIGRlcml2YXRpdmUgd29yayBvZiB0aGUgTGlicmFyeSwgYW5kCnRoZXJlZm9yZSBmYWxscyBvdXRzaWRlIHRoZSBzY29wZSBvZiB0aGlzIExpY2Vuc2UuCgogIEhvd2V2ZXIsIGxpbmtpbmcgYSAid29yayB0aGF0IHVzZXMgdGhlIExpYnJhcnkiIHdpdGggdGhlIExpYnJhcnkKY3JlYXRlcyBhbiBleGVjdXRhYmxlIHRoYXQgaXMgYSBkZXJpdmF0aXZlIG9mIHRoZSBMaWJyYXJ5IChiZWNhdXNlIGl0CmNvbnRhaW5zIHBvcnRpb25zIG9mIHRoZSBMaWJyYXJ5KSwgcmF0aGVyIHRoYW4gYSAid29yayB0aGF0IHVzZXMgdGhlCmxpYnJhcnkiLiAgVGhlIGV4ZWN1dGFibGUgaXMgdGhlcmVmb3JlIGNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlLgpTZWN0aW9uIDYgc3RhdGVzIHRlcm1zIGZvciBkaXN0cmlidXRpb24gb2Ygc3VjaCBleGVjdXRhYmxlcy4KCiAgV2hlbiBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgTGlicmFyeSIgdXNlcyBtYXRlcmlhbCBmcm9tIGEgaGVhZGVyIGZpbGUKdGhhdCBpcyBwYXJ0IG9mIHRoZSBMaWJyYXJ5LCB0aGUgb2JqZWN0IGNvZGUgZm9yIHRoZSB3b3JrIG1heSBiZSBhCmRlcml2YXRpdmUgd29yayBvZiB0aGUgTGlicmFyeSBldmVuIHRob3VnaCB0aGUgc291cmNlIGNvZGUgaXMgbm90LgpXaGV0aGVyIHRoaXMgaXMgdHJ1ZSBpcyBlc3BlY2lhbGx5IHNpZ25pZmljYW50IGlmIHRoZSB3b3JrIGNhbiBiZQpsaW5rZWQgd2l0aG91dCB0aGUgTGlicmFyeSwgb3IgaWYgdGhlIHdvcmsgaXMgaXRzZWxmIGEgbGlicmFyeS4gIFRoZQp0aHJlc2hvbGQgZm9yIHRoaXMgdG8gYmUgdHJ1ZSBpcyBub3QgcHJlY2lzZWx5IGRlZmluZWQgYnkgbGF3LgoKICBJZiBzdWNoIGFuIG9iamVjdCBmaWxlIHVzZXMgb25seSBudW1lcmljYWwgcGFyYW1ldGVycywgZGF0YQpzdHJ1Y3R1cmUgbGF5b3V0cyBhbmQgYWNjZXNzb3JzLCBhbmQgc21hbGwgbWFjcm9zIGFuZCBzbWFsbCBpbmxpbmUKZnVuY3Rpb25zICh0ZW4gbGluZXMgb3IgbGVzcyBpbiBsZW5ndGgpLCB0aGVuIHRoZSB1c2Ugb2YgdGhlIG9iamVjdApmaWxlIGlzIHVucmVzdHJpY3RlZCwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGlzIGxlZ2FsbHkgYSBkZXJpdmF0aXZlCndvcmsuICAoRXhlY3V0YWJsZXMgY29udGFpbmluZyB0aGlzIG9iamVjdCBjb2RlIHBsdXMgcG9ydGlvbnMgb2YgdGhlCkxpYnJhcnkgd2lsbCBzdGlsbCBmYWxsIHVuZGVyIFNlY3Rpb24gNi4pCgogIE90aGVyd2lzZSwgaWYgdGhlIHdvcmsgaXMgYSBkZXJpdmF0aXZlIG9mIHRoZSBMaWJyYXJ5LCB5b3UgbWF5CmRpc3RyaWJ1dGUgdGhlIG9iamVjdCBjb2RlIGZvciB0aGUgd29yayB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbiA2LgpBbnkgZXhlY3V0YWJsZXMgY29udGFpbmluZyB0aGF0IHdvcmsgYWxzbyBmYWxsIHVuZGVyIFNlY3Rpb24gNiwKd2hldGhlciBvciBub3QgdGhleSBhcmUgbGlua2VkIGRpcmVjdGx5IHdpdGggdGhlIExpYnJhcnkgaXRzZWxmLgoMCiAgNi4gQXMgYW4gZXhjZXB0aW9uIHRvIHRoZSBTZWN0aW9ucyBhYm92ZSwgeW91IG1heSBhbHNvIGNvbWJpbmUgb3IKbGluayBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgTGlicmFyeSIgd2l0aCB0aGUgTGlicmFyeSB0byBwcm9kdWNlIGEKd29yayBjb250YWluaW5nIHBvcnRpb25zIG9mIHRoZSBMaWJyYXJ5LCBhbmQgZGlzdHJpYnV0ZSB0aGF0IHdvcmsKdW5kZXIgdGVybXMgb2YgeW91ciBjaG9pY2UsIHByb3ZpZGVkIHRoYXQgdGhlIHRlcm1zIHBlcm1pdAptb2RpZmljYXRpb24gb2YgdGhlIHdvcmsgZm9yIHRoZSBjdXN0b21lcidzIG93biB1c2UgYW5kIHJldmVyc2UKZW5naW5lZXJpbmcgZm9yIGRlYnVnZ2luZyBzdWNoIG1vZGlmaWNhdGlvbnMuCgogIFlvdSBtdXN0IGdpdmUgcHJvbWluZW50IG5vdGljZSB3aXRoIGVhY2ggY29weSBvZiB0aGUgd29yayB0aGF0IHRoZQpMaWJyYXJ5IGlzIHVzZWQgaW4gaXQgYW5kIHRoYXQgdGhlIExpYnJhcnkgYW5kIGl0cyB1c2UgYXJlIGNvdmVyZWQgYnkKdGhpcyBMaWNlbnNlLiAgWW91IG11c3Qgc3VwcGx5IGEgY29weSBvZiB0aGlzIExpY2Vuc2UuICBJZiB0aGUgd29yawpkdXJpbmcgZXhlY3V0aW9uIGRpc3BsYXlzIGNvcHlyaWdodCBub3RpY2VzLCB5b3UgbXVzdCBpbmNsdWRlIHRoZQpjb3B5cmlnaHQgbm90aWNlIGZvciB0aGUgTGlicmFyeSBhbW9uZyB0aGVtLCBhcyB3ZWxsIGFzIGEgcmVmZXJlbmNlCmRpcmVjdGluZyB0aGUgdXNlciB0byB0aGUgY29weSBvZiB0aGlzIExpY2Vuc2UuICBBbHNvLCB5b3UgbXVzdCBkbyBvbmUKb2YgdGhlc2UgdGhpbmdzOgoKICAgIGEpIEFjY29tcGFueSB0aGUgd29yayB3aXRoIHRoZSBjb21wbGV0ZSBjb3JyZXNwb25kaW5nCiAgICBtYWNoaW5lLXJlYWRhYmxlIHNvdXJjZSBjb2RlIGZvciB0aGUgTGlicmFyeSBpbmNsdWRpbmcgd2hhdGV2ZXIKICAgIGNoYW5nZXMgd2VyZSB1c2VkIGluIHRoZSB3b3JrICh3aGljaCBtdXN0IGJlIGRpc3RyaWJ1dGVkIHVuZGVyCiAgICBTZWN0aW9ucyAxIGFuZCAyIGFib3ZlKTsgYW5kLCBpZiB0aGUgd29yayBpcyBhbiBleGVjdXRhYmxlIGxpbmtlZAogICAgd2l0aCB0aGUgTGlicmFyeSwgd2l0aCB0aGUgY29tcGxldGUgbWFjaGluZS1yZWFkYWJsZSAid29yayB0aGF0CiAgICB1c2VzIHRoZSBMaWJyYXJ5IiwgYXMgb2JqZWN0IGNvZGUgYW5kL29yIHNvdXJjZSBjb2RlLCBzbyB0aGF0IHRoZQogICAgdXNlciBjYW4gbW9kaWZ5IHRoZSBMaWJyYXJ5IGFuZCB0aGVuIHJlbGluayB0byBwcm9kdWNlIGEgbW9kaWZpZWQKICAgIGV4ZWN1dGFibGUgY29udGFpbmluZyB0aGUgbW9kaWZpZWQgTGlicmFyeS4gIChJdCBpcyB1bmRlcnN0b29kCiAgICB0aGF0IHRoZSB1c2VyIHdobyBjaGFuZ2VzIHRoZSBjb250ZW50cyBvZiBkZWZpbml0aW9ucyBmaWxlcyBpbiB0aGUKICAgIExpYnJhcnkgd2lsbCBub3QgbmVjZXNzYXJpbHkgYmUgYWJsZSB0byByZWNvbXBpbGUgdGhlIGFwcGxpY2F0aW9uCiAgICB0byB1c2UgdGhlIG1vZGlmaWVkIGRlZmluaXRpb25zLikKCiAgICBiKSBVc2UgYSBzdWl0YWJsZSBzaGFyZWQgbGlicmFyeSBtZWNoYW5pc20gZm9yIGxpbmtpbmcgd2l0aCB0aGUKICAgIExpYnJhcnkuICBBIHN1aXRhYmxlIG1lY2hhbmlzbSBpcyBvbmUgdGhhdCAoMSkgdXNlcyBhdCBydW4gdGltZSBhCiAgICBjb3B5IG9mIHRoZSBsaWJyYXJ5IGFscmVhZHkgcHJlc2VudCBvbiB0aGUgdXNlcidzIGNvbXB1dGVyIHN5c3RlbSwKICAgIHJhdGhlciB0aGFuIGNvcHlpbmcgbGlicmFyeSBmdW5jdGlvbnMgaW50byB0aGUgZXhlY3V0YWJsZSwgYW5kICgyKQogICAgd2lsbCBvcGVyYXRlIHByb3Blcmx5IHdpdGggYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCBpZgogICAgdGhlIHVzZXIgaW5zdGFsbHMgb25lLCBhcyBsb25nIGFzIHRoZSBtb2RpZmllZCB2ZXJzaW9uIGlzCiAgICBpbnRlcmZhY2UtY29tcGF0aWJsZSB3aXRoIHRoZSB2ZXJzaW9uIHRoYXQgdGhlIHdvcmsgd2FzIG1hZGUgd2l0aC4KCiAgICBjKSBBY2NvbXBhbnkgdGhlIHdvcmsgd2l0aCBhIHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZvciBhdAogICAgbGVhc3QgdGhyZWUgeWVhcnMsIHRvIGdpdmUgdGhlIHNhbWUgdXNlciB0aGUgbWF0ZXJpYWxzCiAgICBzcGVjaWZpZWQgaW4gU3Vic2VjdGlvbiA2YSwgYWJvdmUsIGZvciBhIGNoYXJnZSBubyBtb3JlCiAgICB0aGFuIHRoZSBjb3N0IG9mIHBlcmZvcm1pbmcgdGhpcyBkaXN0cmlidXRpb24uCgogICAgZCkgSWYgZGlzdHJpYnV0aW9uIG9mIHRoZSB3b3JrIGlzIG1hZGUgYnkgb2ZmZXJpbmcgYWNjZXNzIHRvIGNvcHkKICAgIGZyb20gYSBkZXNpZ25hdGVkIHBsYWNlLCBvZmZlciBlcXVpdmFsZW50IGFjY2VzcyB0byBjb3B5IHRoZSBhYm92ZQogICAgc3BlY2lmaWVkIG1hdGVyaWFscyBmcm9tIHRoZSBzYW1lIHBsYWNlLgoKICAgIGUpIFZlcmlmeSB0aGF0IHRoZSB1c2VyIGhhcyBhbHJlYWR5IHJlY2VpdmVkIGEgY29weSBvZiB0aGVzZQogICAgbWF0ZXJpYWxzIG9yIHRoYXQgeW91IGhhdmUgYWxyZWFkeSBzZW50IHRoaXMgdXNlciBhIGNvcHkuCgogIEZvciBhbiBleGVjdXRhYmxlLCB0aGUgcmVxdWlyZWQgZm9ybSBvZiB0aGUgIndvcmsgdGhhdCB1c2VzIHRoZQpMaWJyYXJ5IiBtdXN0IGluY2x1ZGUgYW55IGRhdGEgYW5kIHV0aWxpdHkgcHJvZ3JhbXMgbmVlZGVkIGZvcgpyZXByb2R1Y2luZyB0aGUgZXhlY3V0YWJsZSBmcm9tIGl0LiAgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwKdGhlIG1hdGVyaWFscyB0byBiZSBkaXN0cmlidXRlZCBuZWVkIG5vdCBpbmNsdWRlIGFueXRoaW5nIHRoYXQgaXMKbm9ybWFsbHkgZGlzdHJpYnV0ZWQgKGluIGVpdGhlciBzb3VyY2Ugb3IgYmluYXJ5IGZvcm0pIHdpdGggdGhlIG1ham9yCmNvbXBvbmVudHMgKGNvbXBpbGVyLCBrZXJuZWwsIGFuZCBzbyBvbikgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0gb24Kd2hpY2ggdGhlIGV4ZWN1dGFibGUgcnVucywgdW5sZXNzIHRoYXQgY29tcG9uZW50IGl0c2VsZiBhY2NvbXBhbmllcwp0aGUgZXhlY3V0YWJsZS4KCiAgSXQgbWF5IGhhcHBlbiB0aGF0IHRoaXMgcmVxdWlyZW1lbnQgY29udHJhZGljdHMgdGhlIGxpY2Vuc2UKcmVzdHJpY3Rpb25zIG9mIG90aGVyIHByb3ByaWV0YXJ5IGxpYnJhcmllcyB0aGF0IGRvIG5vdCBub3JtYWxseQphY2NvbXBhbnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0uICBTdWNoIGEgY29udHJhZGljdGlvbiBtZWFucyB5b3UgY2Fubm90CnVzZSBib3RoIHRoZW0gYW5kIHRoZSBMaWJyYXJ5IHRvZ2V0aGVyIGluIGFuIGV4ZWN1dGFibGUgdGhhdCB5b3UKZGlzdHJpYnV0ZS4KDAogIDcuIFlvdSBtYXkgcGxhY2UgbGlicmFyeSBmYWNpbGl0aWVzIHRoYXQgYXJlIGEgd29yayBiYXNlZCBvbiB0aGUKTGlicmFyeSBzaWRlLWJ5LXNpZGUgaW4gYSBzaW5nbGUgbGlicmFyeSB0b2dldGhlciB3aXRoIG90aGVyIGxpYnJhcnkKZmFjaWxpdGllcyBub3QgY292ZXJlZCBieSB0aGlzIExpY2Vuc2UsIGFuZCBkaXN0cmlidXRlIHN1Y2ggYSBjb21iaW5lZApsaWJyYXJ5LCBwcm92aWRlZCB0aGF0IHRoZSBzZXBhcmF0ZSBkaXN0cmlidXRpb24gb2YgdGhlIHdvcmsgYmFzZWQgb24KdGhlIExpYnJhcnkgYW5kIG9mIHRoZSBvdGhlciBsaWJyYXJ5IGZhY2lsaXRpZXMgaXMgb3RoZXJ3aXNlCnBlcm1pdHRlZCwgYW5kIHByb3ZpZGVkIHRoYXQgeW91IGRvIHRoZXNlIHR3byB0aGluZ3M6CgogICAgYSkgQWNjb21wYW55IHRoZSBjb21iaW5lZCBsaWJyYXJ5IHdpdGggYSBjb3B5IG9mIHRoZSBzYW1lIHdvcmsKICAgIGJhc2VkIG9uIHRoZSBMaWJyYXJ5LCB1bmNvbWJpbmVkIHdpdGggYW55IG90aGVyIGxpYnJhcnkKICAgIGZhY2lsaXRpZXMuICBUaGlzIG11c3QgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQogICAgU2VjdGlvbnMgYWJvdmUuCgogICAgYikgR2l2ZSBwcm9taW5lbnQgbm90aWNlIHdpdGggdGhlIGNvbWJpbmVkIGxpYnJhcnkgb2YgdGhlIGZhY3QKICAgIHRoYXQgcGFydCBvZiBpdCBpcyBhIHdvcmsgYmFzZWQgb24gdGhlIExpYnJhcnksIGFuZCBleHBsYWluaW5nCiAgICB3aGVyZSB0byBmaW5kIHRoZSBhY2NvbXBhbnlpbmcgdW5jb21iaW5lZCBmb3JtIG9mIHRoZSBzYW1lIHdvcmsuCgogIDguIFlvdSBtYXkgbm90IGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSwgbGluayB3aXRoLCBvciBkaXN0cmlidXRlCnRoZSBMaWJyYXJ5IGV4Y2VwdCBhcyBleHByZXNzbHkgcHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQW55CmF0dGVtcHQgb3RoZXJ3aXNlIHRvIGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSwgbGluayB3aXRoLCBvcgpkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IGlzIHZvaWQsIGFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgdGVybWluYXRlIHlvdXIKcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZS4gIEhvd2V2ZXIsIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzLApvciByaWdodHMsIGZyb20geW91IHVuZGVyIHRoaXMgTGljZW5zZSB3aWxsIG5vdCBoYXZlIHRoZWlyIGxpY2Vuc2VzCnRlcm1pbmF0ZWQgc28gbG9uZyBhcyBzdWNoIHBhcnRpZXMgcmVtYWluIGluIGZ1bGwgY29tcGxpYW5jZS4KCiAgOS4gWW91IGFyZSBub3QgcmVxdWlyZWQgdG8gYWNjZXB0IHRoaXMgTGljZW5zZSwgc2luY2UgeW91IGhhdmUgbm90CnNpZ25lZCBpdC4gIEhvd2V2ZXIsIG5vdGhpbmcgZWxzZSBncmFudHMgeW91IHBlcm1pc3Npb24gdG8gbW9kaWZ5IG9yCmRpc3RyaWJ1dGUgdGhlIExpYnJhcnkgb3IgaXRzIGRlcml2YXRpdmUgd29ya3MuICBUaGVzZSBhY3Rpb25zIGFyZQpwcm9oaWJpdGVkIGJ5IGxhdyBpZiB5b3UgZG8gbm90IGFjY2VwdCB0aGlzIExpY2Vuc2UuICBUaGVyZWZvcmUsIGJ5Cm1vZGlmeWluZyBvciBkaXN0cmlidXRpbmcgdGhlIExpYnJhcnkgKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQpMaWJyYXJ5KSwgeW91IGluZGljYXRlIHlvdXIgYWNjZXB0YW5jZSBvZiB0aGlzIExpY2Vuc2UgdG8gZG8gc28sIGFuZAphbGwgaXRzIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpbmcgb3IgbW9kaWZ5aW5nCnRoZSBMaWJyYXJ5IG9yIHdvcmtzIGJhc2VkIG9uIGl0LgoKICAxMC4gRWFjaCB0aW1lIHlvdSByZWRpc3RyaWJ1dGUgdGhlIExpYnJhcnkgKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQpMaWJyYXJ5KSwgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5IHJlY2VpdmVzIGEgbGljZW5zZSBmcm9tIHRoZQpvcmlnaW5hbCBsaWNlbnNvciB0byBjb3B5LCBkaXN0cmlidXRlLCBsaW5rIHdpdGggb3IgbW9kaWZ5IHRoZSBMaWJyYXJ5CnN1YmplY3QgdG8gdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMuICBZb3UgbWF5IG5vdCBpbXBvc2UgYW55IGZ1cnRoZXIKcmVzdHJpY3Rpb25zIG9uIHRoZSByZWNpcGllbnRzJyBleGVyY2lzZSBvZiB0aGUgcmlnaHRzIGdyYW50ZWQgaGVyZWluLgpZb3UgYXJlIG5vdCByZXNwb25zaWJsZSBmb3IgZW5mb3JjaW5nIGNvbXBsaWFuY2UgYnkgdGhpcmQgcGFydGllcyB3aXRoCnRoaXMgTGljZW5zZS4KDAogIDExLiBJZiwgYXMgYSBjb25zZXF1ZW5jZSBvZiBhIGNvdXJ0IGp1ZGdtZW50IG9yIGFsbGVnYXRpb24gb2YgcGF0ZW50CmluZnJpbmdlbWVudCBvciBmb3IgYW55IG90aGVyIHJlYXNvbiAobm90IGxpbWl0ZWQgdG8gcGF0ZW50IGlzc3VlcyksCmNvbmRpdGlvbnMgYXJlIGltcG9zZWQgb24geW91ICh3aGV0aGVyIGJ5IGNvdXJ0IG9yZGVyLCBhZ3JlZW1lbnQgb3IKb3RoZXJ3aXNlKSB0aGF0IGNvbnRyYWRpY3QgdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLCB0aGV5IGRvIG5vdApleGN1c2UgeW91IGZyb20gdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLiAgSWYgeW91IGNhbm5vdApkaXN0cmlidXRlIHNvIGFzIHRvIHNhdGlzZnkgc2ltdWx0YW5lb3VzbHkgeW91ciBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzCkxpY2Vuc2UgYW5kIGFueSBvdGhlciBwZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5jZSB5b3UKbWF5IG5vdCBkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiBhIHBhdGVudApsaWNlbnNlIHdvdWxkIG5vdCBwZXJtaXQgcm95YWx0eS1mcmVlIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBMaWJyYXJ5IGJ5CmFsbCB0aG9zZSB3aG8gcmVjZWl2ZSBjb3BpZXMgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHlvdSwgdGhlbgp0aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCBpdCBhbmQgdGhpcyBMaWNlbnNlIHdvdWxkIGJlIHRvCnJlZnJhaW4gZW50aXJlbHkgZnJvbSBkaXN0cmlidXRpb24gb2YgdGhlIExpYnJhcnkuCgpJZiBhbnkgcG9ydGlvbiBvZiB0aGlzIHNlY3Rpb24gaXMgaGVsZCBpbnZhbGlkIG9yIHVuZW5mb3JjZWFibGUgdW5kZXIgYW55CnBhcnRpY3VsYXIgY2lyY3Vtc3RhbmNlLCB0aGUgYmFsYW5jZSBvZiB0aGUgc2VjdGlvbiBpcyBpbnRlbmRlZCB0byBhcHBseSwKYW5kIHRoZSBzZWN0aW9uIGFzIGEgd2hvbGUgaXMgaW50ZW5kZWQgdG8gYXBwbHkgaW4gb3RoZXIgY2lyY3Vtc3RhbmNlcy4KCkl0IGlzIG5vdCB0aGUgcHVycG9zZSBvZiB0aGlzIHNlY3Rpb24gdG8gaW5kdWNlIHlvdSB0byBpbmZyaW5nZSBhbnkKcGF0ZW50cyBvciBvdGhlciBwcm9wZXJ0eSByaWdodCBjbGFpbXMgb3IgdG8gY29udGVzdCB2YWxpZGl0eSBvZiBhbnkKc3VjaCBjbGFpbXM7IHRoaXMgc2VjdGlvbiBoYXMgdGhlIHNvbGUgcHVycG9zZSBvZiBwcm90ZWN0aW5nIHRoZQppbnRlZ3JpdHkgb2YgdGhlIGZyZWUgc29mdHdhcmUgZGlzdHJpYnV0aW9uIHN5c3RlbSB3aGljaCBpcwppbXBsZW1lbnRlZCBieSBwdWJsaWMgbGljZW5zZSBwcmFjdGljZXMuICBNYW55IHBlb3BsZSBoYXZlIG1hZGUKZ2VuZXJvdXMgY29udHJpYnV0aW9ucyB0byB0aGUgd2lkZSByYW5nZSBvZiBzb2Z0d2FyZSBkaXN0cmlidXRlZAp0aHJvdWdoIHRoYXQgc3lzdGVtIGluIHJlbGlhbmNlIG9uIGNvbnNpc3RlbnQgYXBwbGljYXRpb24gb2YgdGhhdApzeXN0ZW07IGl0IGlzIHVwIHRvIHRoZSBhdXRob3IvZG9ub3IgdG8gZGVjaWRlIGlmIGhlIG9yIHNoZSBpcyB3aWxsaW5nCnRvIGRpc3RyaWJ1dGUgc29mdHdhcmUgdGhyb3VnaCBhbnkgb3RoZXIgc3lzdGVtIGFuZCBhIGxpY2Vuc2VlIGNhbm5vdAppbXBvc2UgdGhhdCBjaG9pY2UuCgpUaGlzIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8gbWFrZSB0aG9yb3VnaGx5IGNsZWFyIHdoYXQgaXMgYmVsaWV2ZWQgdG8KYmUgYSBjb25zZXF1ZW5jZSBvZiB0aGUgcmVzdCBvZiB0aGlzIExpY2Vuc2UuCgogIDEyLiBJZiB0aGUgZGlzdHJpYnV0aW9uIGFuZC9vciB1c2Ugb2YgdGhlIExpYnJhcnkgaXMgcmVzdHJpY3RlZCBpbgpjZXJ0YWluIGNvdW50cmllcyBlaXRoZXIgYnkgcGF0ZW50cyBvciBieSBjb3B5cmlnaHRlZCBpbnRlcmZhY2VzLCB0aGUKb3JpZ2luYWwgY29weXJpZ2h0IGhvbGRlciB3aG8gcGxhY2VzIHRoZSBMaWJyYXJ5IHVuZGVyIHRoaXMgTGljZW5zZSBtYXkgYWRkCmFuIGV4cGxpY2l0IGdlb2dyYXBoaWNhbCBkaXN0cmlidXRpb24gbGltaXRhdGlvbiBleGNsdWRpbmcgdGhvc2UgY291bnRyaWVzLApzbyB0aGF0IGRpc3RyaWJ1dGlvbiBpcyBwZXJtaXR0ZWQgb25seSBpbiBvciBhbW9uZyBjb3VudHJpZXMgbm90IHRodXMKZXhjbHVkZWQuICBJbiBzdWNoIGNhc2UsIHRoaXMgTGljZW5zZSBpbmNvcnBvcmF0ZXMgdGhlIGxpbWl0YXRpb24gYXMgaWYKd3JpdHRlbiBpbiB0aGUgYm9keSBvZiB0aGlzIExpY2Vuc2UuCgogIDEzLiBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldwp2ZXJzaW9ucyBvZiB0aGUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuClN1Y2ggbmV3IHZlcnNpb25zIHdpbGwgYmUgc2ltaWxhciBpbiBzcGlyaXQgdG8gdGhlIHByZXNlbnQgdmVyc2lvbiwKYnV0IG1heSBkaWZmZXIgaW4gZGV0YWlsIHRvIGFkZHJlc3MgbmV3IHByb2JsZW1zIG9yIGNvbmNlcm5zLgoKRWFjaCB2ZXJzaW9uIGlzIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuICBJZiB0aGUgTGlicmFyeQpzcGVjaWZpZXMgYSB2ZXJzaW9uIG51bWJlciBvZiB0aGlzIExpY2Vuc2Ugd2hpY2ggYXBwbGllcyB0byBpdCBhbmQKImFueSBsYXRlciB2ZXJzaW9uIiwgeW91IGhhdmUgdGhlIG9wdGlvbiBvZiBmb2xsb3dpbmcgdGhlIHRlcm1zIGFuZApjb25kaXRpb25zIGVpdGhlciBvZiB0aGF0IHZlcnNpb24gb3Igb2YgYW55IGxhdGVyIHZlcnNpb24gcHVibGlzaGVkIGJ5CnRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uICBJZiB0aGUgTGlicmFyeSBkb2VzIG5vdCBzcGVjaWZ5IGEKbGljZW5zZSB2ZXJzaW9uIG51bWJlciwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQgYnkKdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KDAogIDE0LiBJZiB5b3Ugd2lzaCB0byBpbmNvcnBvcmF0ZSBwYXJ0cyBvZiB0aGUgTGlicmFyeSBpbnRvIG90aGVyIGZyZWUKcHJvZ3JhbXMgd2hvc2UgZGlzdHJpYnV0aW9uIGNvbmRpdGlvbnMgYXJlIGluY29tcGF0aWJsZSB3aXRoIHRoZXNlLAp3cml0ZSB0byB0aGUgYXV0aG9yIHRvIGFzayBmb3IgcGVybWlzc2lvbi4gIEZvciBzb2Z0d2FyZSB3aGljaCBpcwpjb3B5cmlnaHRlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3cml0ZSB0byB0aGUgRnJlZQpTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3ZSBzb21ldGltZXMgbWFrZSBleGNlcHRpb25zIGZvciB0aGlzLiAgT3VyCmRlY2lzaW9uIHdpbGwgYmUgZ3VpZGVkIGJ5IHRoZSB0d28gZ29hbHMgb2YgcHJlc2VydmluZyB0aGUgZnJlZSBzdGF0dXMKb2YgYWxsIGRlcml2YXRpdmVzIG9mIG91ciBmcmVlIHNvZnR3YXJlIGFuZCBvZiBwcm9tb3RpbmcgdGhlIHNoYXJpbmcKYW5kIHJldXNlIG9mIHNvZnR3YXJlIGdlbmVyYWxseS4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTyBXQVJSQU5UWQoKICAxNS4gQkVDQVVTRSBUSEUgTElCUkFSWSBJUyBMSUNFTlNFRCBGUkVFIE9GIENIQVJHRSwgVEhFUkUgSVMgTk8KV0FSUkFOVFkgRk9SIFRIRSBMSUJSQVJZLCBUTyBUSEUgRVhURU5UIFBFUk1JVFRFRCBCWSBBUFBMSUNBQkxFIExBVy4KRVhDRVBUIFdIRU4gT1RIRVJXSVNFIFNUQVRFRCBJTiBXUklUSU5HIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQvT1IKT1RIRVIgUEFSVElFUyBQUk9WSURFIFRIRSBMSUJSQVJZICJBUyBJUyIgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKS0lORCwgRUlUSEVSIEVYUFJFU1NFRCBPUiBJTVBMSUVELCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCklNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgpQVVJQT1NFLiAgVEhFIEVOVElSRSBSSVNLIEFTIFRPIFRIRSBRVUFMSVRZIEFORCBQRVJGT1JNQU5DRSBPRiBUSEUKTElCUkFSWSBJUyBXSVRIIFlPVS4gIFNIT1VMRCBUSEUgTElCUkFSWSBQUk9WRSBERUZFQ1RJVkUsIFlPVSBBU1NVTUUKVEhFIENPU1QgT0YgQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsIFJFUEFJUiBPUiBDT1JSRUNUSU9OLgoKICAxNi4gSU4gTk8gRVZFTlQgVU5MRVNTIFJFUVVJUkVEIEJZIEFQUExJQ0FCTEUgTEFXIE9SIEFHUkVFRCBUTyBJTgpXUklUSU5HIFdJTEwgQU5ZIENPUFlSSUdIVCBIT0xERVIsIE9SIEFOWSBPVEhFUiBQQVJUWSBXSE8gTUFZIE1PRElGWQpBTkQvT1IgUkVESVNUUklCVVRFIFRIRSBMSUJSQVJZIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVQpGT1IgREFNQUdFUywgSU5DTFVESU5HIEFOWSBHRU5FUkFMLCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SCkNPTlNFUVVFTlRJQUwgREFNQUdFUyBBUklTSU5HIE9VVCBPRiBUSEUgVVNFIE9SIElOQUJJTElUWSBUTyBVU0UgVEhFCkxJQlJBUlkgKElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gTE9TUyBPRiBEQVRBIE9SIERBVEEgQkVJTkcKUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJTkVEIEJZIFlPVSBPUiBUSElSRCBQQVJUSUVTIE9SIEEKRkFJTFVSRSBPRiBUSEUgTElCUkFSWSBUTyBPUEVSQVRFIFdJVEggQU5ZIE9USEVSIFNPRlRXQVJFKSwgRVZFTiBJRgpTVUNIIEhPTERFUiBPUiBPVEhFUiBQQVJUWSBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICkRBTUFHRVMuCgogICAgICAgICAgICAgICAgICAgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKDAogICAgICAgICAgIEhvdyB0byBBcHBseSBUaGVzZSBUZXJtcyB0byBZb3VyIE5ldyBMaWJyYXJpZXMKCiAgSWYgeW91IGRldmVsb3AgYSBuZXcgbGlicmFyeSwgYW5kIHlvdSB3YW50IGl0IHRvIGJlIG9mIHRoZSBncmVhdGVzdApwb3NzaWJsZSB1c2UgdG8gdGhlIHB1YmxpYywgd2UgcmVjb21tZW5kIG1ha2luZyBpdCBmcmVlIHNvZnR3YXJlIHRoYXQKZXZlcnlvbmUgY2FuIHJlZGlzdHJpYnV0ZSBhbmQgY2hhbmdlLiAgWW91IGNhbiBkbyBzbyBieSBwZXJtaXR0aW5nCnJlZGlzdHJpYnV0aW9uIHVuZGVyIHRoZXNlIHRlcm1zIChvciwgYWx0ZXJuYXRpdmVseSwgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQpvcmRpbmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKS4KCiAgVG8gYXBwbHkgdGhlc2UgdGVybXMsIGF0dGFjaCB0aGUgZm9sbG93aW5nIG5vdGljZXMgdG8gdGhlIGxpYnJhcnkuICBJdCBpcwpzYWZlc3QgdG8gYXR0YWNoIHRoZW0gdG8gdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGZpbGUgdG8gbW9zdCBlZmZlY3RpdmVseQpjb252ZXkgdGhlIGV4Y2x1c2lvbiBvZiB3YXJyYW50eTsgYW5kIGVhY2ggZmlsZSBzaG91bGQgaGF2ZSBhdCBsZWFzdCB0aGUKImNvcHlyaWdodCIgbGluZSBhbmQgYSBwb2ludGVyIHRvIHdoZXJlIHRoZSBmdWxsIG5vdGljZSBpcyBmb3VuZC4KCiAgICA8b25lIGxpbmUgdG8gZ2l2ZSB0aGUgbGlicmFyeSdzIG5hbWUgYW5kIGEgYnJpZWYgaWRlYSBvZiB3aGF0IGl0IGRvZXMuPgogICAgQ29weXJpZ2h0IChDKSA8eWVhcj4gIDxuYW1lIG9mIGF1dGhvcj4KCiAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgoKICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgoKICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQoKQWxzbyBhZGQgaW5mb3JtYXRpb24gb24gaG93IHRvIGNvbnRhY3QgeW91IGJ5IGVsZWN0cm9uaWMgYW5kIHBhcGVyIG1haWwuCgpZb3Ugc2hvdWxkIGFsc28gZ2V0IHlvdXIgZW1wbG95ZXIgKGlmIHlvdSB3b3JrIGFzIGEgcHJvZ3JhbW1lcikgb3IgeW91cgpzY2hvb2wsIGlmIGFueSwgdG8gc2lnbiBhICJjb3B5cmlnaHQgZGlzY2xhaW1lciIgZm9yIHRoZSBsaWJyYXJ5LCBpZgpuZWNlc3NhcnkuICBIZXJlIGlzIGEgc2FtcGxlOyBhbHRlciB0aGUgbmFtZXM6CgogIFlveW9keW5lLCBJbmMuLCBoZXJlYnkgZGlzY2xhaW1zIGFsbCBjb3B5cmlnaHQgaW50ZXJlc3QgaW4gdGhlCiAgbGlicmFyeSBgRnJvYicgKGEgbGlicmFyeSBmb3IgdHdlYWtpbmcga25vYnMpIHdyaXR0ZW4gYnkgSmFtZXMgUmFuZG9tIEhhY2tlci4KCiAgPHNpZ25hdHVyZSBvZiBUeSBDb29uPiwgMSBBcHJpbCAxOTkwCiAgVHkgQ29vbiwgUHJlc2lkZW50IG9mIFZpY2UKClRoYXQncyBhbGwgdGhlcmUgaXMgdG8gaXQhCg==", + "contentType": "text/plain", + "encoding": "base64" } } }, @@ -169,33 +164,6 @@ "license": { "name": "License :: OSI Approved :: BSD License" } - }, - { - "license": { - "name": "declared license file: LICENSE", - "text": { - "content": "This software is made available under the terms of *either* of the licenses\nfound in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made\nunder the terms of *both* these licenses.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.APACHE", - "text": { - "content": "\n Apache License\n Version 2.0, January 2004\n https://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: LICENSE.BSD", - "text": { - "content": "Copyright (c) Individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of PyCA Cryptography nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" - } - } } ] }, @@ -256,8 +224,9 @@ "license": { "name": "declared license file: AUTHORS", "text": { - "content": "Stefan K\u00f6gl \nAlexander Shorin \nChristopher J. White \n", - "contentType": "text/plain" + "content": "U3RlZmFuIEvDtmdsIDxzdGVmYW5Ac2tvZWdsLm5ldD4KQWxleGFuZGVyIFNob3JpbiA8a3hlcGFsQGdtYWlsLmNvbT4KQ2hyaXN0b3BoZXIgSi4gV2hpdGUgPGNocmlzQGdyaWVyd2hpdGUuY29tPgo=", + "contentType": "text/plain", + "encoding": "base64" } } }, @@ -265,8 +234,9 @@ "license": { "name": "declared license file: LICENSE.txt", "text": { - "content": "Copyright (c) 2011 Stefan K\u00f6gl \nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions\nare met:\n\n1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n3. The name of the author may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR\nIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\nOF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\nIN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\nNOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\nTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n", - "contentType": "text/plain" + "content": "Q29weXJpZ2h0IChjKSAyMDExIFN0ZWZhbiBLw7ZnbCA8c3RlZmFuQHNrb2VnbC5uZXQ+CkFsbCByaWdodHMgcmVzZXJ2ZWQuCgpSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCmFyZSBtZXQ6CgoxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCjIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KMy4gVGhlIG5hbWUgb2YgdGhlIGF1dGhvciBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzCiAgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgoKVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IKSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUwpPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELgpJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsCklOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVApOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCkRBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQpUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCihJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgpUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgoK", + "contentType": "text/plain", + "encoding": "base64" } } }, @@ -305,8 +275,9 @@ "license": { "name": "declared license file: AUTHORS.rst", "text": { - "content": "The following organizations or individuals have contributed to this code:\n\n- Ayan Sinha Mahapatra @AyanSinhaMahapatra\n- Carmen Bianca Bakker @carmenbianca\n- Chin-Yeung Li @chinyeungli\n- Dennis Clark @DennisClark\n- John Horan @johnmhoran\n- Jono Yang @JonoYang\n- Max Mehl @mxmehl\n- nexB Inc. @nexB\n- Peter Kolbus @pkolbus\n- Philippe Ombredanne @pombredanne\n- Sebastian Schuberth @sschuberth\n- Steven Esser @majurg\n- Thomas Druez @tdruez\n", - "contentType": "text/prs.fallenstein.rst" + "content": "VGhlIGZvbGxvd2luZyBvcmdhbml6YXRpb25zIG9yIGluZGl2aWR1YWxzIGhhdmUgY29udHJpYnV0ZWQgdG8gdGhpcyBjb2RlOgoKLSBBeWFuIFNpbmhhIE1haGFwYXRyYSBAQXlhblNpbmhhTWFoYXBhdHJhCi0gQ2FybWVuIEJpYW5jYSBCYWtrZXIgQGNhcm1lbmJpYW5jYQotIENoaW4tWWV1bmcgTGkgQGNoaW55ZXVuZ2xpCi0gRGVubmlzIENsYXJrIEBEZW5uaXNDbGFyawotIEpvaG4gSG9yYW4gQGpvaG5taG9yYW4KLSBKb25vIFlhbmcgQEpvbm9ZYW5nCi0gTWF4IE1laGwgQG14bWVobAotIG5leEIgSW5jLiBAbmV4QgotIFBldGVyIEtvbGJ1cyBAcGtvbGJ1cwotIFBoaWxpcHBlIE9tYnJlZGFubmUgQHBvbWJyZWRhbm5lCi0gU2ViYXN0aWFuIFNjaHViZXJ0aCBAc3NjaHViZXJ0aAotIFN0ZXZlbiBFc3NlciBAbWFqdXJnCi0gVGhvbWFzIERydWV6IEB0ZHJ1ZXoK", + "contentType": "text/prs.fallenstein.rst", + "encoding": "base64" } } }, @@ -314,8 +285,9 @@ "license": { "name": "declared license file: CHANGELOG.rst", "text": { - "content": "Changelog\n=========\n\nv30.3.0 - 2024-03-18\n--------------------\n\nThis is a minor release without API changes:\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.23\n- Drop support for Python 3.7\n\nv30.2.0 - 2023-11-29\n--------------------\n\nThis is a minor release without API changes:\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.22\n- Add Python 3.12 support in CI\n\n\nv30.1.1 - 2023-01-16\n----------------------\n\nThis is a minor dot release without API changes\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.20\n\n\nv30.1.0 - 2023-01-16\n----------------------\n\nThis is a minor release without API changes\n\n- Use latest skeleton (and updated configure script)\n- Update license list to latest ScanCode and SPDX 3.19\n- Use correct syntax for python_require\n- Drop using Travis and Appveyor\n- Drop support for Python 3.7 and add Python 3.11 in CI\n\n\nv30.0.0 - 2022-05-10\n----------------------\n\nThis is a minor release with API changes\n\n- Use latest skeleton (and updated configure script)\n- Drop using calver\n- Improve error checking when combining licenses\n\n\n\nv21.6.14 - 2021-06-14\n----------------------\n\nAdded\n~~~~~\n\n- Switch to calver for package versioning to better convey the currency of the\n bundled data.\n\n- Include https://scancode-licensedb.aboutcode.org/ licenses list with\n ScanCode (v21.6.7) and SPDX licenses (v3.13) keys. Add new functions to\n create Licensing using these licenses as LicenseSymbol.\n\n- Add new License.dedup() method to deduplicate and simplify license expressions\n without over simplifying.\n\n- Add new License.validate() method to return a new ExpressionInfo object with\n details on a license expression validation.\n\n\nChanged\n~~~~~~~\n- Drop support for Python 2.\n- Adopt the project skeleton from https://github.com/nexB/skeleton\n and its new configure script\n\n\nv1.2 - 2019-11-14\n------------------\nAdded\n~~~~~\n- Add ability to render WITH expression wrapped in parenthesis\n\nFixes\n~~~~~\n- Fix anomalous backslashes in strings\n\nChanged\n~~~~~~~\n- Update the thirdparty directory structure.\n\n\nv1.0 - 2019-10-16\n------------------\nAdded\n~~~~~\n- New version of boolean.py library\n- Add ability to leave license expressions unsorted when simplifying\n\nChanged\n~~~~~~~\n- updated travis CI settings\n\n\nv0.999 - 2019-04-29\n--------------------\n- Initial release\n- license-expression is small utility library to parse, compare and\n simplify and normalize license expressions.\n\n", - "contentType": "text/prs.fallenstein.rst" + "content": "Q2hhbmdlbG9nCj09PT09PT09PQoKdjMwLjMuMCAtIDIwMjQtMDMtMTgKLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRoaXMgaXMgYSBtaW5vciByZWxlYXNlIHdpdGhvdXQgQVBJIGNoYW5nZXM6CgotIFVzZSBsYXRlc3Qgc2tlbGV0b24KLSBVcGRhdGUgbGljZW5zZSBsaXN0IHRvIGxhdGVzdCBTY2FuQ29kZSBhbmQgU1BEWCAzLjIzCi0gRHJvcCBzdXBwb3J0IGZvciBQeXRob24gMy43Cgp2MzAuMi4wIC0gMjAyMy0xMS0yOQotLS0tLS0tLS0tLS0tLS0tLS0tLQoKVGhpcyBpcyBhIG1pbm9yIHJlbGVhc2Ugd2l0aG91dCBBUEkgY2hhbmdlczoKCi0gVXNlIGxhdGVzdCBza2VsZXRvbgotIFVwZGF0ZSBsaWNlbnNlIGxpc3QgdG8gbGF0ZXN0IFNjYW5Db2RlIGFuZCBTUERYIDMuMjIKLSBBZGQgUHl0aG9uIDMuMTIgc3VwcG9ydCBpbiBDSQoKCnYzMC4xLjEgLSAyMDIzLTAxLTE2Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRoaXMgaXMgYSBtaW5vciBkb3QgcmVsZWFzZSB3aXRob3V0IEFQSSBjaGFuZ2VzCgotIFVzZSBsYXRlc3Qgc2tlbGV0b24KLSBVcGRhdGUgbGljZW5zZSBsaXN0IHRvIGxhdGVzdCBTY2FuQ29kZSBhbmQgU1BEWCAzLjIwCgoKdjMwLjEuMCAtIDIwMjMtMDEtMTYKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKVGhpcyBpcyBhIG1pbm9yIHJlbGVhc2Ugd2l0aG91dCBBUEkgY2hhbmdlcwoKLSBVc2UgbGF0ZXN0IHNrZWxldG9uIChhbmQgdXBkYXRlZCBjb25maWd1cmUgc2NyaXB0KQotIFVwZGF0ZSBsaWNlbnNlIGxpc3QgdG8gbGF0ZXN0IFNjYW5Db2RlIGFuZCBTUERYIDMuMTkKLSBVc2UgY29ycmVjdCBzeW50YXggZm9yIHB5dGhvbl9yZXF1aXJlCi0gRHJvcCB1c2luZyBUcmF2aXMgYW5kIEFwcHZleW9yCi0gRHJvcCBzdXBwb3J0IGZvciBQeXRob24gMy43IGFuZCBhZGQgUHl0aG9uIDMuMTEgaW4gQ0kKCgp2MzAuMC4wIC0gMjAyMi0wNS0xMAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpUaGlzIGlzIGEgbWlub3IgcmVsZWFzZSB3aXRoIEFQSSBjaGFuZ2VzCgotIFVzZSBsYXRlc3Qgc2tlbGV0b24gKGFuZCB1cGRhdGVkIGNvbmZpZ3VyZSBzY3JpcHQpCi0gRHJvcCB1c2luZyBjYWx2ZXIKLSBJbXByb3ZlIGVycm9yIGNoZWNraW5nIHdoZW4gY29tYmluaW5nIGxpY2Vuc2VzCgoKCnYyMS42LjE0IC0gMjAyMS0wNi0xNAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpBZGRlZAp+fn5+fgoKLSBTd2l0Y2ggdG8gY2FsdmVyIGZvciBwYWNrYWdlIHZlcnNpb25pbmcgdG8gYmV0dGVyIGNvbnZleSB0aGUgY3VycmVuY3kgb2YgdGhlCiAgYnVuZGxlZCBkYXRhLgoKLSBJbmNsdWRlIGh0dHBzOi8vc2NhbmNvZGUtbGljZW5zZWRiLmFib3V0Y29kZS5vcmcvIGxpY2Vuc2VzIGxpc3Qgd2l0aAogIFNjYW5Db2RlICh2MjEuNi43KSBhbmQgU1BEWCBsaWNlbnNlcyAodjMuMTMpIGtleXMuIEFkZCBuZXcgZnVuY3Rpb25zIHRvCiAgY3JlYXRlIExpY2Vuc2luZyB1c2luZyB0aGVzZSBsaWNlbnNlcyBhcyBMaWNlbnNlU3ltYm9sLgoKLSBBZGQgbmV3IExpY2Vuc2UuZGVkdXAoKSBtZXRob2QgdG8gZGVkdXBsaWNhdGUgYW5kIHNpbXBsaWZ5IGxpY2Vuc2UgZXhwcmVzc2lvbnMKICB3aXRob3V0IG92ZXIgc2ltcGxpZnlpbmcuCgotIEFkZCBuZXcgTGljZW5zZS52YWxpZGF0ZSgpIG1ldGhvZCB0byByZXR1cm4gYSBuZXcgRXhwcmVzc2lvbkluZm8gb2JqZWN0IHdpdGgKICBkZXRhaWxzIG9uIGEgbGljZW5zZSBleHByZXNzaW9uIHZhbGlkYXRpb24uCgoKQ2hhbmdlZAp+fn5+fn5+Ci0gRHJvcCBzdXBwb3J0IGZvciBQeXRob24gMi4KLSBBZG9wdCB0aGUgcHJvamVjdCBza2VsZXRvbiBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9uZXhCL3NrZWxldG9uCiAgYW5kIGl0cyBuZXcgY29uZmlndXJlIHNjcmlwdAoKCnYxLjIgLSAyMDE5LTExLTE0Ci0tLS0tLS0tLS0tLS0tLS0tLQpBZGRlZAp+fn5+fgotIEFkZCBhYmlsaXR5IHRvIHJlbmRlciBXSVRIIGV4cHJlc3Npb24gd3JhcHBlZCBpbiBwYXJlbnRoZXNpcwoKRml4ZXMKfn5+fn4KLSBGaXggYW5vbWFsb3VzIGJhY2tzbGFzaGVzIGluIHN0cmluZ3MKCkNoYW5nZWQKfn5+fn5+fgotIFVwZGF0ZSB0aGUgdGhpcmRwYXJ0eSBkaXJlY3Rvcnkgc3RydWN0dXJlLgoKCnYxLjAgLSAyMDE5LTEwLTE2Ci0tLS0tLS0tLS0tLS0tLS0tLQpBZGRlZAp+fn5+fgotIE5ldyB2ZXJzaW9uIG9mIGJvb2xlYW4ucHkgbGlicmFyeQotIEFkZCBhYmlsaXR5IHRvIGxlYXZlIGxpY2Vuc2UgZXhwcmVzc2lvbnMgdW5zb3J0ZWQgd2hlbiBzaW1wbGlmeWluZwoKQ2hhbmdlZAp+fn5+fn5+Ci0gdXBkYXRlZCB0cmF2aXMgQ0kgc2V0dGluZ3MKCgp2MC45OTkgLSAyMDE5LTA0LTI5Ci0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gSW5pdGlhbCByZWxlYXNlCi0gbGljZW5zZS1leHByZXNzaW9uIGlzIHNtYWxsIHV0aWxpdHkgbGlicmFyeSB0byBwYXJzZSwgY29tcGFyZSBhbmQKICBzaW1wbGlmeSBhbmQgbm9ybWFsaXplIGxpY2Vuc2UgZXhwcmVzc2lvbnMuCgo=", + "contentType": "text/prs.fallenstein.rst", + "encoding": "base64" } } }, @@ -323,8 +295,9 @@ "license": { "name": "declared license file: CODE_OF_CONDUCT.rst", "text": { - "content": "Contributor Covenant Code of Conduct\n====================================\n\nOur Pledge\n----------\n\nIn the interest of fostering an open and welcoming environment, we as\ncontributors and maintainers pledge to making participation in our\nproject and our community a harassment-free experience for everyone,\nregardless of age, body size, disability, ethnicity, gender identity and\nexpression, level of experience, education, socio-economic status,\nnationality, personal appearance, race, religion, or sexual identity and\norientation.\n\nOur Standards\n-------------\n\nExamples of behavior that contributes to creating a positive environment\ninclude:\n\n- Using welcoming and inclusive language\n- Being respectful of differing viewpoints and experiences\n- Gracefully accepting constructive criticism\n- Focusing on what is best for the community\n- Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n- The use of sexualized language or imagery and unwelcome sexual\n attention or advances\n- Trolling, insulting/derogatory comments, and personal or political\n attacks\n- Public or private harassment\n- Publishing others\u2019 private information, such as a physical or\n electronic address, without explicit permission\n- Other conduct which could reasonably be considered inappropriate in a\n professional setting\n\nOur Responsibilities\n--------------------\n\nProject maintainers are responsible for clarifying the standards of\nacceptable behavior and are expected to take appropriate and fair\ncorrective action in response to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit,\nor reject comments, commits, code, wiki edits, issues, and other\ncontributions that are not aligned to this Code of Conduct, or to ban\ntemporarily or permanently any contributor for other behaviors that they\ndeem inappropriate, threatening, offensive, or harmful.\n\nScope\n-----\n\nThis Code of Conduct applies both within project spaces and in public\nspaces when an individual is representing the project or its community.\nExamples of representing a project or community include using an\nofficial project e-mail address, posting via an official social media\naccount, or acting as an appointed representative at an online or\noffline event. Representation of a project may be further defined and\nclarified by project maintainers.\n\nEnforcement\n-----------\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may\nbe reported by contacting the project team at pombredanne@gmail.com\nor on the Gitter chat channel at https://gitter.im/aboutcode-org/discuss .\nAll complaints will be reviewed and investigated and will result in a\nresponse that is deemed necessary and appropriate to the circumstances.\nThe project team is obligated to maintain confidentiality with regard to\nthe reporter of an incident. Further details of specific enforcement\npolicies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in\ngood faith may face temporary or permanent repercussions as determined\nby other members of the project\u2019s leadership.\n\nAttribution\n-----------\n\nThis Code of Conduct is adapted from the `Contributor Covenant`_ ,\nversion 1.4, available at\nhttps://www.contributor-covenant.org/version/1/4/code-of-conduct.html\n\n.. _Contributor Covenant: https://www.contributor-covenant.org\n", - "contentType": "text/prs.fallenstein.rst" + "content": "Q29udHJpYnV0b3IgQ292ZW5hbnQgQ29kZSBvZiBDb25kdWN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKT3VyIFBsZWRnZQotLS0tLS0tLS0tCgpJbiB0aGUgaW50ZXJlc3Qgb2YgZm9zdGVyaW5nIGFuIG9wZW4gYW5kIHdlbGNvbWluZyBlbnZpcm9ubWVudCwgd2UgYXMKY29udHJpYnV0b3JzIGFuZCBtYWludGFpbmVycyBwbGVkZ2UgdG8gbWFraW5nIHBhcnRpY2lwYXRpb24gaW4gb3VyCnByb2plY3QgYW5kIG91ciBjb21tdW5pdHkgYSBoYXJhc3NtZW50LWZyZWUgZXhwZXJpZW5jZSBmb3IgZXZlcnlvbmUsCnJlZ2FyZGxlc3Mgb2YgYWdlLCBib2R5IHNpemUsIGRpc2FiaWxpdHksIGV0aG5pY2l0eSwgZ2VuZGVyIGlkZW50aXR5IGFuZApleHByZXNzaW9uLCBsZXZlbCBvZiBleHBlcmllbmNlLCBlZHVjYXRpb24sIHNvY2lvLWVjb25vbWljIHN0YXR1cywKbmF0aW9uYWxpdHksIHBlcnNvbmFsIGFwcGVhcmFuY2UsIHJhY2UsIHJlbGlnaW9uLCBvciBzZXh1YWwgaWRlbnRpdHkgYW5kCm9yaWVudGF0aW9uLgoKT3VyIFN0YW5kYXJkcwotLS0tLS0tLS0tLS0tCgpFeGFtcGxlcyBvZiBiZWhhdmlvciB0aGF0IGNvbnRyaWJ1dGVzIHRvIGNyZWF0aW5nIGEgcG9zaXRpdmUgZW52aXJvbm1lbnQKaW5jbHVkZToKCi0gIFVzaW5nIHdlbGNvbWluZyBhbmQgaW5jbHVzaXZlIGxhbmd1YWdlCi0gIEJlaW5nIHJlc3BlY3RmdWwgb2YgZGlmZmVyaW5nIHZpZXdwb2ludHMgYW5kIGV4cGVyaWVuY2VzCi0gIEdyYWNlZnVsbHkgYWNjZXB0aW5nIGNvbnN0cnVjdGl2ZSBjcml0aWNpc20KLSAgRm9jdXNpbmcgb24gd2hhdCBpcyBiZXN0IGZvciB0aGUgY29tbXVuaXR5Ci0gIFNob3dpbmcgZW1wYXRoeSB0b3dhcmRzIG90aGVyIGNvbW11bml0eSBtZW1iZXJzCgpFeGFtcGxlcyBvZiB1bmFjY2VwdGFibGUgYmVoYXZpb3IgYnkgcGFydGljaXBhbnRzIGluY2x1ZGU6CgotICBUaGUgdXNlIG9mIHNleHVhbGl6ZWQgbGFuZ3VhZ2Ugb3IgaW1hZ2VyeSBhbmQgdW53ZWxjb21lIHNleHVhbAogICBhdHRlbnRpb24gb3IgYWR2YW5jZXMKLSAgVHJvbGxpbmcsIGluc3VsdGluZy9kZXJvZ2F0b3J5IGNvbW1lbnRzLCBhbmQgcGVyc29uYWwgb3IgcG9saXRpY2FsCiAgIGF0dGFja3MKLSAgUHVibGljIG9yIHByaXZhdGUgaGFyYXNzbWVudAotICBQdWJsaXNoaW5nIG90aGVyc+KAmSBwcml2YXRlIGluZm9ybWF0aW9uLCBzdWNoIGFzIGEgcGh5c2ljYWwgb3IKICAgZWxlY3Ryb25pYyBhZGRyZXNzLCB3aXRob3V0IGV4cGxpY2l0IHBlcm1pc3Npb24KLSAgT3RoZXIgY29uZHVjdCB3aGljaCBjb3VsZCByZWFzb25hYmx5IGJlIGNvbnNpZGVyZWQgaW5hcHByb3ByaWF0ZSBpbiBhCiAgIHByb2Zlc3Npb25hbCBzZXR0aW5nCgpPdXIgUmVzcG9uc2liaWxpdGllcwotLS0tLS0tLS0tLS0tLS0tLS0tLQoKUHJvamVjdCBtYWludGFpbmVycyBhcmUgcmVzcG9uc2libGUgZm9yIGNsYXJpZnlpbmcgdGhlIHN0YW5kYXJkcyBvZgphY2NlcHRhYmxlIGJlaGF2aW9yIGFuZCBhcmUgZXhwZWN0ZWQgdG8gdGFrZSBhcHByb3ByaWF0ZSBhbmQgZmFpcgpjb3JyZWN0aXZlIGFjdGlvbiBpbiByZXNwb25zZSB0byBhbnkgaW5zdGFuY2VzIG9mIHVuYWNjZXB0YWJsZSBiZWhhdmlvci4KClByb2plY3QgbWFpbnRhaW5lcnMgaGF2ZSB0aGUgcmlnaHQgYW5kIHJlc3BvbnNpYmlsaXR5IHRvIHJlbW92ZSwgZWRpdCwKb3IgcmVqZWN0IGNvbW1lbnRzLCBjb21taXRzLCBjb2RlLCB3aWtpIGVkaXRzLCBpc3N1ZXMsIGFuZCBvdGhlcgpjb250cmlidXRpb25zIHRoYXQgYXJlIG5vdCBhbGlnbmVkIHRvIHRoaXMgQ29kZSBvZiBDb25kdWN0LCBvciB0byBiYW4KdGVtcG9yYXJpbHkgb3IgcGVybWFuZW50bHkgYW55IGNvbnRyaWJ1dG9yIGZvciBvdGhlciBiZWhhdmlvcnMgdGhhdCB0aGV5CmRlZW0gaW5hcHByb3ByaWF0ZSwgdGhyZWF0ZW5pbmcsIG9mZmVuc2l2ZSwgb3IgaGFybWZ1bC4KClNjb3BlCi0tLS0tCgpUaGlzIENvZGUgb2YgQ29uZHVjdCBhcHBsaWVzIGJvdGggd2l0aGluIHByb2plY3Qgc3BhY2VzIGFuZCBpbiBwdWJsaWMKc3BhY2VzIHdoZW4gYW4gaW5kaXZpZHVhbCBpcyByZXByZXNlbnRpbmcgdGhlIHByb2plY3Qgb3IgaXRzIGNvbW11bml0eS4KRXhhbXBsZXMgb2YgcmVwcmVzZW50aW5nIGEgcHJvamVjdCBvciBjb21tdW5pdHkgaW5jbHVkZSB1c2luZyBhbgpvZmZpY2lhbCBwcm9qZWN0IGUtbWFpbCBhZGRyZXNzLCBwb3N0aW5nIHZpYSBhbiBvZmZpY2lhbCBzb2NpYWwgbWVkaWEKYWNjb3VudCwgb3IgYWN0aW5nIGFzIGFuIGFwcG9pbnRlZCByZXByZXNlbnRhdGl2ZSBhdCBhbiBvbmxpbmUgb3IKb2ZmbGluZSBldmVudC4gUmVwcmVzZW50YXRpb24gb2YgYSBwcm9qZWN0IG1heSBiZSBmdXJ0aGVyIGRlZmluZWQgYW5kCmNsYXJpZmllZCBieSBwcm9qZWN0IG1haW50YWluZXJzLgoKRW5mb3JjZW1lbnQKLS0tLS0tLS0tLS0KCkluc3RhbmNlcyBvZiBhYnVzaXZlLCBoYXJhc3NpbmcsIG9yIG90aGVyd2lzZSB1bmFjY2VwdGFibGUgYmVoYXZpb3IgbWF5CmJlIHJlcG9ydGVkIGJ5IGNvbnRhY3RpbmcgdGhlIHByb2plY3QgdGVhbSBhdCBwb21icmVkYW5uZUBnbWFpbC5jb20Kb3Igb24gdGhlIEdpdHRlciBjaGF0IGNoYW5uZWwgYXQgaHR0cHM6Ly9naXR0ZXIuaW0vYWJvdXRjb2RlLW9yZy9kaXNjdXNzIC4KQWxsIGNvbXBsYWludHMgd2lsbCBiZSByZXZpZXdlZCBhbmQgaW52ZXN0aWdhdGVkIGFuZCB3aWxsIHJlc3VsdCBpbiBhCnJlc3BvbnNlIHRoYXQgaXMgZGVlbWVkIG5lY2Vzc2FyeSBhbmQgYXBwcm9wcmlhdGUgdG8gdGhlIGNpcmN1bXN0YW5jZXMuClRoZSBwcm9qZWN0IHRlYW0gaXMgb2JsaWdhdGVkIHRvIG1haW50YWluIGNvbmZpZGVudGlhbGl0eSB3aXRoIHJlZ2FyZCB0bwp0aGUgcmVwb3J0ZXIgb2YgYW4gaW5jaWRlbnQuIEZ1cnRoZXIgZGV0YWlscyBvZiBzcGVjaWZpYyBlbmZvcmNlbWVudApwb2xpY2llcyBtYXkgYmUgcG9zdGVkIHNlcGFyYXRlbHkuCgpQcm9qZWN0IG1haW50YWluZXJzIHdobyBkbyBub3QgZm9sbG93IG9yIGVuZm9yY2UgdGhlIENvZGUgb2YgQ29uZHVjdCBpbgpnb29kIGZhaXRoIG1heSBmYWNlIHRlbXBvcmFyeSBvciBwZXJtYW5lbnQgcmVwZXJjdXNzaW9ucyBhcyBkZXRlcm1pbmVkCmJ5IG90aGVyIG1lbWJlcnMgb2YgdGhlIHByb2plY3TigJlzIGxlYWRlcnNoaXAuCgpBdHRyaWJ1dGlvbgotLS0tLS0tLS0tLQoKVGhpcyBDb2RlIG9mIENvbmR1Y3QgaXMgYWRhcHRlZCBmcm9tIHRoZSBgQ29udHJpYnV0b3IgQ292ZW5hbnRgXyAsCnZlcnNpb24gMS40LCBhdmFpbGFibGUgYXQKaHR0cHM6Ly93d3cuY29udHJpYnV0b3ItY292ZW5hbnQub3JnL3ZlcnNpb24vMS80L2NvZGUtb2YtY29uZHVjdC5odG1sCgouLiBfQ29udHJpYnV0b3IgQ292ZW5hbnQ6IGh0dHBzOi8vd3d3LmNvbnRyaWJ1dG9yLWNvdmVuYW50Lm9yZwo=", + "contentType": "text/prs.fallenstein.rst", + "encoding": "base64" } } }, @@ -332,8 +305,9 @@ "license": { "name": "declared license file: NOTICE", "text": { - "content": "#\n# Copyright (c) nexB Inc. and others.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Visit https://aboutcode.org and https://github.com/nexB/license-expression\n# for support and download.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\n", - "contentType": "text/plain" + "content": "IwojIENvcHlyaWdodCAoYykgbmV4QiBJbmMuIGFuZCBvdGhlcnMuCiMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKIwojIFZpc2l0IGh0dHBzOi8vYWJvdXRjb2RlLm9yZyBhbmQgaHR0cHM6Ly9naXRodWIuY29tL25leEIvbGljZW5zZS1leHByZXNzaW9uCiMgZm9yIHN1cHBvcnQgYW5kIGRvd25sb2FkLgojCiMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgojIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAojCiMgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgojCg==", + "contentType": "text/plain", + "encoding": "base64" } } }, @@ -341,8 +315,9 @@ "license": { "name": "declared license file: apache-2.0.LICENSE", "text": { - "content": " Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", - "contentType": "text/plain" + "content": "ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBhY2hlIExpY2Vuc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAyLjAsIEphbnVhcnkgMjAwNAogICAgICAgICAgICAgICAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvCgogICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgVVNFLCBSRVBST0RVQ1RJT04sIEFORCBESVNUUklCVVRJT04KCiAgIDEuIERlZmluaXRpb25zLgoKICAgICAgIkxpY2Vuc2UiIHNoYWxsIG1lYW4gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciB1c2UsIHJlcHJvZHVjdGlvbiwKICAgICAgYW5kIGRpc3RyaWJ1dGlvbiBhcyBkZWZpbmVkIGJ5IFNlY3Rpb25zIDEgdGhyb3VnaCA5IG9mIHRoaXMgZG9jdW1lbnQuCgogICAgICAiTGljZW5zb3IiIHNoYWxsIG1lYW4gdGhlIGNvcHlyaWdodCBvd25lciBvciBlbnRpdHkgYXV0aG9yaXplZCBieQogICAgICB0aGUgY29weXJpZ2h0IG93bmVyIHRoYXQgaXMgZ3JhbnRpbmcgdGhlIExpY2Vuc2UuCgogICAgICAiTGVnYWwgRW50aXR5IiBzaGFsbCBtZWFuIHRoZSB1bmlvbiBvZiB0aGUgYWN0aW5nIGVudGl0eSBhbmQgYWxsCiAgICAgIG90aGVyIGVudGl0aWVzIHRoYXQgY29udHJvbCwgYXJlIGNvbnRyb2xsZWQgYnksIG9yIGFyZSB1bmRlciBjb21tb24KICAgICAgY29udHJvbCB3aXRoIHRoYXQgZW50aXR5LiBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwKICAgICAgImNvbnRyb2wiIG1lYW5zIChpKSB0aGUgcG93ZXIsIGRpcmVjdCBvciBpbmRpcmVjdCwgdG8gY2F1c2UgdGhlCiAgICAgIGRpcmVjdGlvbiBvciBtYW5hZ2VtZW50IG9mIHN1Y2ggZW50aXR5LCB3aGV0aGVyIGJ5IGNvbnRyYWN0IG9yCiAgICAgIG90aGVyd2lzZSwgb3IgKGlpKSBvd25lcnNoaXAgb2YgZmlmdHkgcGVyY2VudCAoNTAlKSBvciBtb3JlIG9mIHRoZQogICAgICBvdXRzdGFuZGluZyBzaGFyZXMsIG9yIChpaWkpIGJlbmVmaWNpYWwgb3duZXJzaGlwIG9mIHN1Y2ggZW50aXR5LgoKICAgICAgIllvdSIgKG9yICJZb3VyIikgc2hhbGwgbWVhbiBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eQogICAgICBleGVyY2lzaW5nIHBlcm1pc3Npb25zIGdyYW50ZWQgYnkgdGhpcyBMaWNlbnNlLgoKICAgICAgIlNvdXJjZSIgZm9ybSBzaGFsbCBtZWFuIHRoZSBwcmVmZXJyZWQgZm9ybSBmb3IgbWFraW5nIG1vZGlmaWNhdGlvbnMsCiAgICAgIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gc29mdHdhcmUgc291cmNlIGNvZGUsIGRvY3VtZW50YXRpb24KICAgICAgc291cmNlLCBhbmQgY29uZmlndXJhdGlvbiBmaWxlcy4KCiAgICAgICJPYmplY3QiIGZvcm0gc2hhbGwgbWVhbiBhbnkgZm9ybSByZXN1bHRpbmcgZnJvbSBtZWNoYW5pY2FsCiAgICAgIHRyYW5zZm9ybWF0aW9uIG9yIHRyYW5zbGF0aW9uIG9mIGEgU291cmNlIGZvcm0sIGluY2x1ZGluZyBidXQKICAgICAgbm90IGxpbWl0ZWQgdG8gY29tcGlsZWQgb2JqZWN0IGNvZGUsIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uLAogICAgICBhbmQgY29udmVyc2lvbnMgdG8gb3RoZXIgbWVkaWEgdHlwZXMuCgogICAgICAiV29yayIgc2hhbGwgbWVhbiB0aGUgd29yayBvZiBhdXRob3JzaGlwLCB3aGV0aGVyIGluIFNvdXJjZSBvcgogICAgICBPYmplY3QgZm9ybSwgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIExpY2Vuc2UsIGFzIGluZGljYXRlZCBieSBhCiAgICAgIGNvcHlyaWdodCBub3RpY2UgdGhhdCBpcyBpbmNsdWRlZCBpbiBvciBhdHRhY2hlZCB0byB0aGUgd29yawogICAgICAoYW4gZXhhbXBsZSBpcyBwcm92aWRlZCBpbiB0aGUgQXBwZW5kaXggYmVsb3cpLgoKICAgICAgIkRlcml2YXRpdmUgV29ya3MiIHNoYWxsIG1lYW4gYW55IHdvcmssIHdoZXRoZXIgaW4gU291cmNlIG9yIE9iamVjdAogICAgICBmb3JtLCB0aGF0IGlzIGJhc2VkIG9uIChvciBkZXJpdmVkIGZyb20pIHRoZSBXb3JrIGFuZCBmb3Igd2hpY2ggdGhlCiAgICAgIGVkaXRvcmlhbCByZXZpc2lvbnMsIGFubm90YXRpb25zLCBlbGFib3JhdGlvbnMsIG9yIG90aGVyIG1vZGlmaWNhdGlvbnMKICAgICAgcmVwcmVzZW50LCBhcyBhIHdob2xlLCBhbiBvcmlnaW5hbCB3b3JrIG9mIGF1dGhvcnNoaXAuIEZvciB0aGUgcHVycG9zZXMKICAgICAgb2YgdGhpcyBMaWNlbnNlLCBEZXJpdmF0aXZlIFdvcmtzIHNoYWxsIG5vdCBpbmNsdWRlIHdvcmtzIHRoYXQgcmVtYWluCiAgICAgIHNlcGFyYWJsZSBmcm9tLCBvciBtZXJlbHkgbGluayAob3IgYmluZCBieSBuYW1lKSB0byB0aGUgaW50ZXJmYWNlcyBvZiwKICAgICAgdGhlIFdvcmsgYW5kIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZi4KCiAgICAgICJDb250cmlidXRpb24iIHNoYWxsIG1lYW4gYW55IHdvcmsgb2YgYXV0aG9yc2hpcCwgaW5jbHVkaW5nCiAgICAgIHRoZSBvcmlnaW5hbCB2ZXJzaW9uIG9mIHRoZSBXb3JrIGFuZCBhbnkgbW9kaWZpY2F0aW9ucyBvciBhZGRpdGlvbnMKICAgICAgdG8gdGhhdCBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgdGhhdCBpcyBpbnRlbnRpb25hbGx5CiAgICAgIHN1Ym1pdHRlZCB0byBMaWNlbnNvciBmb3IgaW5jbHVzaW9uIGluIHRoZSBXb3JrIGJ5IHRoZSBjb3B5cmlnaHQgb3duZXIKICAgICAgb3IgYnkgYW4gaW5kaXZpZHVhbCBvciBMZWdhbCBFbnRpdHkgYXV0aG9yaXplZCB0byBzdWJtaXQgb24gYmVoYWxmIG9mCiAgICAgIHRoZSBjb3B5cmlnaHQgb3duZXIuIEZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAic3VibWl0dGVkIgogICAgICBtZWFucyBhbnkgZm9ybSBvZiBlbGVjdHJvbmljLCB2ZXJiYWwsIG9yIHdyaXR0ZW4gY29tbXVuaWNhdGlvbiBzZW50CiAgICAgIHRvIHRoZSBMaWNlbnNvciBvciBpdHMgcmVwcmVzZW50YXRpdmVzLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvCiAgICAgIGNvbW11bmljYXRpb24gb24gZWxlY3Ryb25pYyBtYWlsaW5nIGxpc3RzLCBzb3VyY2UgY29kZSBjb250cm9sIHN5c3RlbXMsCiAgICAgIGFuZCBpc3N1ZSB0cmFja2luZyBzeXN0ZW1zIHRoYXQgYXJlIG1hbmFnZWQgYnksIG9yIG9uIGJlaGFsZiBvZiwgdGhlCiAgICAgIExpY2Vuc29yIGZvciB0aGUgcHVycG9zZSBvZiBkaXNjdXNzaW5nIGFuZCBpbXByb3ZpbmcgdGhlIFdvcmssIGJ1dAogICAgICBleGNsdWRpbmcgY29tbXVuaWNhdGlvbiB0aGF0IGlzIGNvbnNwaWN1b3VzbHkgbWFya2VkIG9yIG90aGVyd2lzZQogICAgICBkZXNpZ25hdGVkIGluIHdyaXRpbmcgYnkgdGhlIGNvcHlyaWdodCBvd25lciBhcyAiTm90IGEgQ29udHJpYnV0aW9uLiIKCiAgICAgICJDb250cmlidXRvciIgc2hhbGwgbWVhbiBMaWNlbnNvciBhbmQgYW55IGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5CiAgICAgIG9uIGJlaGFsZiBvZiB3aG9tIGEgQ29udHJpYnV0aW9uIGhhcyBiZWVuIHJlY2VpdmVkIGJ5IExpY2Vuc29yIGFuZAogICAgICBzdWJzZXF1ZW50bHkgaW5jb3Jwb3JhdGVkIHdpdGhpbiB0aGUgV29yay4KCiAgIDIuIEdyYW50IG9mIENvcHlyaWdodCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCiAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCiAgICAgIGNvcHlyaWdodCBsaWNlbnNlIHRvIHJlcHJvZHVjZSwgcHJlcGFyZSBEZXJpdmF0aXZlIFdvcmtzIG9mLAogICAgICBwdWJsaWNseSBkaXNwbGF5LCBwdWJsaWNseSBwZXJmb3JtLCBzdWJsaWNlbnNlLCBhbmQgZGlzdHJpYnV0ZSB0aGUKICAgICAgV29yayBhbmQgc3VjaCBEZXJpdmF0aXZlIFdvcmtzIGluIFNvdXJjZSBvciBPYmplY3QgZm9ybS4KCiAgIDMuIEdyYW50IG9mIFBhdGVudCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCiAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCiAgICAgIChleGNlcHQgYXMgc3RhdGVkIGluIHRoaXMgc2VjdGlvbikgcGF0ZW50IGxpY2Vuc2UgdG8gbWFrZSwgaGF2ZSBtYWRlLAogICAgICB1c2UsIG9mZmVyIHRvIHNlbGwsIHNlbGwsIGltcG9ydCwgYW5kIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgV29yaywKICAgICAgd2hlcmUgc3VjaCBsaWNlbnNlIGFwcGxpZXMgb25seSB0byB0aG9zZSBwYXRlbnQgY2xhaW1zIGxpY2Vuc2FibGUKICAgICAgYnkgc3VjaCBDb250cmlidXRvciB0aGF0IGFyZSBuZWNlc3NhcmlseSBpbmZyaW5nZWQgYnkgdGhlaXIKICAgICAgQ29udHJpYnV0aW9uKHMpIGFsb25lIG9yIGJ5IGNvbWJpbmF0aW9uIG9mIHRoZWlyIENvbnRyaWJ1dGlvbihzKQogICAgICB3aXRoIHRoZSBXb3JrIHRvIHdoaWNoIHN1Y2ggQ29udHJpYnV0aW9uKHMpIHdhcyBzdWJtaXR0ZWQuIElmIFlvdQogICAgICBpbnN0aXR1dGUgcGF0ZW50IGxpdGlnYXRpb24gYWdhaW5zdCBhbnkgZW50aXR5IChpbmNsdWRpbmcgYQogICAgICBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0IHRoZSBXb3JrCiAgICAgIG9yIGEgQ29udHJpYnV0aW9uIGluY29ycG9yYXRlZCB3aXRoaW4gdGhlIFdvcmsgY29uc3RpdHV0ZXMgZGlyZWN0CiAgICAgIG9yIGNvbnRyaWJ1dG9yeSBwYXRlbnQgaW5mcmluZ2VtZW50LCB0aGVuIGFueSBwYXRlbnQgbGljZW5zZXMKICAgICAgZ3JhbnRlZCB0byBZb3UgdW5kZXIgdGhpcyBMaWNlbnNlIGZvciB0aGF0IFdvcmsgc2hhbGwgdGVybWluYXRlCiAgICAgIGFzIG9mIHRoZSBkYXRlIHN1Y2ggbGl0aWdhdGlvbiBpcyBmaWxlZC4KCiAgIDQuIFJlZGlzdHJpYnV0aW9uLiBZb3UgbWF5IHJlcHJvZHVjZSBhbmQgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlCiAgICAgIFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mIGluIGFueSBtZWRpdW0sIHdpdGggb3Igd2l0aG91dAogICAgICBtb2RpZmljYXRpb25zLCBhbmQgaW4gU291cmNlIG9yIE9iamVjdCBmb3JtLCBwcm92aWRlZCB0aGF0IFlvdQogICAgICBtZWV0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKCiAgICAgIChhKSBZb3UgbXVzdCBnaXZlIGFueSBvdGhlciByZWNpcGllbnRzIG9mIHRoZSBXb3JrIG9yCiAgICAgICAgICBEZXJpdmF0aXZlIFdvcmtzIGEgY29weSBvZiB0aGlzIExpY2Vuc2U7IGFuZAoKICAgICAgKGIpIFlvdSBtdXN0IGNhdXNlIGFueSBtb2RpZmllZCBmaWxlcyB0byBjYXJyeSBwcm9taW5lbnQgbm90aWNlcwogICAgICAgICAgc3RhdGluZyB0aGF0IFlvdSBjaGFuZ2VkIHRoZSBmaWxlczsgYW5kCgogICAgICAoYykgWW91IG11c3QgcmV0YWluLCBpbiB0aGUgU291cmNlIGZvcm0gb2YgYW55IERlcml2YXRpdmUgV29ya3MKICAgICAgICAgIHRoYXQgWW91IGRpc3RyaWJ1dGUsIGFsbCBjb3B5cmlnaHQsIHBhdGVudCwgdHJhZGVtYXJrLCBhbmQKICAgICAgICAgIGF0dHJpYnV0aW9uIG5vdGljZXMgZnJvbSB0aGUgU291cmNlIGZvcm0gb2YgdGhlIFdvcmssCiAgICAgICAgICBleGNsdWRpbmcgdGhvc2Ugbm90aWNlcyB0aGF0IGRvIG5vdCBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mCiAgICAgICAgICB0aGUgRGVyaXZhdGl2ZSBXb3JrczsgYW5kCgogICAgICAoZCkgSWYgdGhlIFdvcmsgaW5jbHVkZXMgYSAiTk9USUNFIiB0ZXh0IGZpbGUgYXMgcGFydCBvZiBpdHMKICAgICAgICAgIGRpc3RyaWJ1dGlvbiwgdGhlbiBhbnkgRGVyaXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlIG11c3QKICAgICAgICAgIGluY2x1ZGUgYSByZWFkYWJsZSBjb3B5IG9mIHRoZSBhdHRyaWJ1dGlvbiBub3RpY2VzIGNvbnRhaW5lZAogICAgICAgICAgd2l0aGluIHN1Y2ggTk9USUNFIGZpbGUsIGV4Y2x1ZGluZyB0aG9zZSBub3RpY2VzIHRoYXQgZG8gbm90CiAgICAgICAgICBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpbiBhdCBsZWFzdCBvbmUKICAgICAgICAgIG9mIHRoZSBmb2xsb3dpbmcgcGxhY2VzOiB3aXRoaW4gYSBOT1RJQ0UgdGV4dCBmaWxlIGRpc3RyaWJ1dGVkCiAgICAgICAgICBhcyBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyB3aXRoaW4gdGhlIFNvdXJjZSBmb3JtIG9yCiAgICAgICAgICBkb2N1bWVudGF0aW9uLCBpZiBwcm92aWRlZCBhbG9uZyB3aXRoIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyBvciwKICAgICAgICAgIHdpdGhpbiBhIGRpc3BsYXkgZ2VuZXJhdGVkIGJ5IHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpZiBhbmQKICAgICAgICAgIHdoZXJldmVyIHN1Y2ggdGhpcmQtcGFydHkgbm90aWNlcyBub3JtYWxseSBhcHBlYXIuIFRoZSBjb250ZW50cwogICAgICAgICAgb2YgdGhlIE5PVElDRSBmaWxlIGFyZSBmb3IgaW5mb3JtYXRpb25hbCBwdXJwb3NlcyBvbmx5IGFuZAogICAgICAgICAgZG8gbm90IG1vZGlmeSB0aGUgTGljZW5zZS4gWW91IG1heSBhZGQgWW91ciBvd24gYXR0cmlidXRpb24KICAgICAgICAgIG5vdGljZXMgd2l0aGluIERlcml2YXRpdmUgV29ya3MgdGhhdCBZb3UgZGlzdHJpYnV0ZSwgYWxvbmdzaWRlCiAgICAgICAgICBvciBhcyBhbiBhZGRlbmR1bSB0byB0aGUgTk9USUNFIHRleHQgZnJvbSB0aGUgV29yaywgcHJvdmlkZWQKICAgICAgICAgIHRoYXQgc3VjaCBhZGRpdGlvbmFsIGF0dHJpYnV0aW9uIG5vdGljZXMgY2Fubm90IGJlIGNvbnN0cnVlZAogICAgICAgICAgYXMgbW9kaWZ5aW5nIHRoZSBMaWNlbnNlLgoKICAgICAgWW91IG1heSBhZGQgWW91ciBvd24gY29weXJpZ2h0IHN0YXRlbWVudCB0byBZb3VyIG1vZGlmaWNhdGlvbnMgYW5kCiAgICAgIG1heSBwcm92aWRlIGFkZGl0aW9uYWwgb3IgZGlmZmVyZW50IGxpY2Vuc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMKICAgICAgZm9yIHVzZSwgcmVwcm9kdWN0aW9uLCBvciBkaXN0cmlidXRpb24gb2YgWW91ciBtb2RpZmljYXRpb25zLCBvcgogICAgICBmb3IgYW55IHN1Y2ggRGVyaXZhdGl2ZSBXb3JrcyBhcyBhIHdob2xlLCBwcm92aWRlZCBZb3VyIHVzZSwKICAgICAgcmVwcm9kdWN0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoZSBXb3JrIG90aGVyd2lzZSBjb21wbGllcyB3aXRoCiAgICAgIHRoZSBjb25kaXRpb25zIHN0YXRlZCBpbiB0aGlzIExpY2Vuc2UuCgogICA1LiBTdWJtaXNzaW9uIG9mIENvbnRyaWJ1dGlvbnMuIFVubGVzcyBZb3UgZXhwbGljaXRseSBzdGF0ZSBvdGhlcndpc2UsCiAgICAgIGFueSBDb250cmlidXRpb24gaW50ZW50aW9uYWxseSBzdWJtaXR0ZWQgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yawogICAgICBieSBZb3UgdG8gdGhlIExpY2Vuc29yIHNoYWxsIGJlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICB0aGlzIExpY2Vuc2UsIHdpdGhvdXQgYW55IGFkZGl0aW9uYWwgdGVybXMgb3IgY29uZGl0aW9ucy4KICAgICAgTm90d2l0aHN0YW5kaW5nIHRoZSBhYm92ZSwgbm90aGluZyBoZXJlaW4gc2hhbGwgc3VwZXJzZWRlIG9yIG1vZGlmeQogICAgICB0aGUgdGVybXMgb2YgYW55IHNlcGFyYXRlIGxpY2Vuc2UgYWdyZWVtZW50IHlvdSBtYXkgaGF2ZSBleGVjdXRlZAogICAgICB3aXRoIExpY2Vuc29yIHJlZ2FyZGluZyBzdWNoIENvbnRyaWJ1dGlvbnMuCgogICA2LiBUcmFkZW1hcmtzLiBUaGlzIExpY2Vuc2UgZG9lcyBub3QgZ3JhbnQgcGVybWlzc2lvbiB0byB1c2UgdGhlIHRyYWRlCiAgICAgIG5hbWVzLCB0cmFkZW1hcmtzLCBzZXJ2aWNlIG1hcmtzLCBvciBwcm9kdWN0IG5hbWVzIG9mIHRoZSBMaWNlbnNvciwKICAgICAgZXhjZXB0IGFzIHJlcXVpcmVkIGZvciByZWFzb25hYmxlIGFuZCBjdXN0b21hcnkgdXNlIGluIGRlc2NyaWJpbmcgdGhlCiAgICAgIG9yaWdpbiBvZiB0aGUgV29yayBhbmQgcmVwcm9kdWNpbmcgdGhlIGNvbnRlbnQgb2YgdGhlIE5PVElDRSBmaWxlLgoKICAgNy4gRGlzY2xhaW1lciBvZiBXYXJyYW50eS4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yCiAgICAgIGFncmVlZCB0byBpbiB3cml0aW5nLCBMaWNlbnNvciBwcm92aWRlcyB0aGUgV29yayAoYW5kIGVhY2gKICAgICAgQ29udHJpYnV0b3IgcHJvdmlkZXMgaXRzIENvbnRyaWJ1dGlvbnMpIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgogICAgICBpbXBsaWVkLCBpbmNsdWRpbmcsIHdpdGhvdXQgbGltaXRhdGlvbiwgYW55IHdhcnJhbnRpZXMgb3IgY29uZGl0aW9ucwogICAgICBvZiBUSVRMRSwgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZLCBvciBGSVRORVNTIEZPUiBBCiAgICAgIFBBUlRJQ1VMQVIgUFVSUE9TRS4gWW91IGFyZSBzb2xlbHkgcmVzcG9uc2libGUgZm9yIGRldGVybWluaW5nIHRoZQogICAgICBhcHByb3ByaWF0ZW5lc3Mgb2YgdXNpbmcgb3IgcmVkaXN0cmlidXRpbmcgdGhlIFdvcmsgYW5kIGFzc3VtZSBhbnkKICAgICAgcmlza3MgYXNzb2NpYXRlZCB3aXRoIFlvdXIgZXhlcmNpc2Ugb2YgcGVybWlzc2lvbnMgdW5kZXIgdGhpcyBMaWNlbnNlLgoKICAgOC4gTGltaXRhdGlvbiBvZiBMaWFiaWxpdHkuIEluIG5vIGV2ZW50IGFuZCB1bmRlciBubyBsZWdhbCB0aGVvcnksCiAgICAgIHdoZXRoZXIgaW4gdG9ydCAoaW5jbHVkaW5nIG5lZ2xpZ2VuY2UpLCBjb250cmFjdCwgb3Igb3RoZXJ3aXNlLAogICAgICB1bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgKHN1Y2ggYXMgZGVsaWJlcmF0ZSBhbmQgZ3Jvc3NseQogICAgICBuZWdsaWdlbnQgYWN0cykgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNoYWxsIGFueSBDb250cmlidXRvciBiZQogICAgICBsaWFibGUgdG8gWW91IGZvciBkYW1hZ2VzLCBpbmNsdWRpbmcgYW55IGRpcmVjdCwgaW5kaXJlY3QsIHNwZWNpYWwsCiAgICAgIGluY2lkZW50YWwsIG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvZiBhbnkgY2hhcmFjdGVyIGFyaXNpbmcgYXMgYQogICAgICByZXN1bHQgb2YgdGhpcyBMaWNlbnNlIG9yIG91dCBvZiB0aGUgdXNlIG9yIGluYWJpbGl0eSB0byB1c2UgdGhlCiAgICAgIFdvcmsgKGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gZGFtYWdlcyBmb3IgbG9zcyBvZiBnb29kd2lsbCwKICAgICAgd29yayBzdG9wcGFnZSwgY29tcHV0ZXIgZmFpbHVyZSBvciBtYWxmdW5jdGlvbiwgb3IgYW55IGFuZCBhbGwKICAgICAgb3RoZXIgY29tbWVyY2lhbCBkYW1hZ2VzIG9yIGxvc3NlcyksIGV2ZW4gaWYgc3VjaCBDb250cmlidXRvcgogICAgICBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiBzdWNoIGRhbWFnZXMuCgogICA5LiBBY2NlcHRpbmcgV2FycmFudHkgb3IgQWRkaXRpb25hbCBMaWFiaWxpdHkuIFdoaWxlIHJlZGlzdHJpYnV0aW5nCiAgICAgIHRoZSBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgWW91IG1heSBjaG9vc2UgdG8gb2ZmZXIsCiAgICAgIGFuZCBjaGFyZ2UgYSBmZWUgZm9yLCBhY2NlcHRhbmNlIG9mIHN1cHBvcnQsIHdhcnJhbnR5LCBpbmRlbW5pdHksCiAgICAgIG9yIG90aGVyIGxpYWJpbGl0eSBvYmxpZ2F0aW9ucyBhbmQvb3IgcmlnaHRzIGNvbnNpc3RlbnQgd2l0aCB0aGlzCiAgICAgIExpY2Vuc2UuIEhvd2V2ZXIsIGluIGFjY2VwdGluZyBzdWNoIG9ibGlnYXRpb25zLCBZb3UgbWF5IGFjdCBvbmx5CiAgICAgIG9uIFlvdXIgb3duIGJlaGFsZiBhbmQgb24gWW91ciBzb2xlIHJlc3BvbnNpYmlsaXR5LCBub3Qgb24gYmVoYWxmCiAgICAgIG9mIGFueSBvdGhlciBDb250cmlidXRvciwgYW5kIG9ubHkgaWYgWW91IGFncmVlIHRvIGluZGVtbmlmeSwKICAgICAgZGVmZW5kLCBhbmQgaG9sZCBlYWNoIENvbnRyaWJ1dG9yIGhhcm1sZXNzIGZvciBhbnkgbGlhYmlsaXR5CiAgICAgIGluY3VycmVkIGJ5LCBvciBjbGFpbXMgYXNzZXJ0ZWQgYWdhaW5zdCwgc3VjaCBDb250cmlidXRvciBieSByZWFzb24KICAgICAgb2YgeW91ciBhY2NlcHRpbmcgYW55IHN1Y2ggd2FycmFudHkgb3IgYWRkaXRpb25hbCBsaWFiaWxpdHkuCgogICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKCiAgIEFQUEVORElYOiBIb3cgdG8gYXBwbHkgdGhlIEFwYWNoZSBMaWNlbnNlIHRvIHlvdXIgd29yay4KCiAgICAgIFRvIGFwcGx5IHRoZSBBcGFjaGUgTGljZW5zZSB0byB5b3VyIHdvcmssIGF0dGFjaCB0aGUgZm9sbG93aW5nCiAgICAgIGJvaWxlcnBsYXRlIG5vdGljZSwgd2l0aCB0aGUgZmllbGRzIGVuY2xvc2VkIGJ5IGJyYWNrZXRzICJbXSIKICAgICAgcmVwbGFjZWQgd2l0aCB5b3VyIG93biBpZGVudGlmeWluZyBpbmZvcm1hdGlvbi4gKERvbid0IGluY2x1ZGUKICAgICAgdGhlIGJyYWNrZXRzISkgIFRoZSB0ZXh0IHNob3VsZCBiZSBlbmNsb3NlZCBpbiB0aGUgYXBwcm9wcmlhdGUKICAgICAgY29tbWVudCBzeW50YXggZm9yIHRoZSBmaWxlIGZvcm1hdC4gV2UgYWxzbyByZWNvbW1lbmQgdGhhdCBhCiAgICAgIGZpbGUgb3IgY2xhc3MgbmFtZSBhbmQgZGVzY3JpcHRpb24gb2YgcHVycG9zZSBiZSBpbmNsdWRlZCBvbiB0aGUKICAgICAgc2FtZSAicHJpbnRlZCBwYWdlIiBhcyB0aGUgY29weXJpZ2h0IG5vdGljZSBmb3IgZWFzaWVyCiAgICAgIGlkZW50aWZpY2F0aW9uIHdpdGhpbiB0aGlyZC1wYXJ0eSBhcmNoaXZlcy4KCiAgIENvcHlyaWdodCBbeXl5eV0gW25hbWUgb2YgY29weXJpZ2h0IG93bmVyXQoKICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgo=", + "contentType": "text/plain", + "encoding": "base64" } } } @@ -382,8 +357,9 @@ "license": { "name": "declared license file: LICENSE.txt", "text": { - "content": "Copyright (c) 2004 Infrae. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n 1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n \n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in\n the documentation and/or other materials provided with the\n distribution.\n\n 3. Neither the name of Infrae nor the names of its contributors may\n be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INFRAE OR\nCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\nEXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\nPROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" + "content": "Q29weXJpZ2h0IChjKSAyMDA0IEluZnJhZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAgIAogIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCiAgICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQogICAgIGRpc3RyaWJ1dGlvbi4KCiAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBJbmZyYWUgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heQogICAgIGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCiAgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCgpUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCiJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgpBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgSU5GUkFFIE9SCkNPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLApFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sClBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgpQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GCkxJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCk5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwpTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K", + "contentType": "text/plain", + "encoding": "base64" } } }, @@ -391,8 +367,9 @@ "license": { "name": "declared license file: LICENSES.txt", "text": { - "content": "lxml is copyright Infrae and distributed under the BSD license (see\ndoc/licenses/BSD.txt), with the following exceptions:\n\nSome code, such a selftest.py, selftest2.py and\nsrc/lxml/_elementpath.py are derived from ElementTree and\ncElementTree. See doc/licenses/elementtree.txt for the license text.\n\nlxml.cssselect and lxml.html are copyright Ian Bicking and distributed\nunder the BSD license (see doc/licenses/BSD.txt).\n\ntest.py, the test-runner script, is GPL and copyright Shuttleworth\nFoundation. See doc/licenses/GPL.txt. It is believed the unchanged\ninclusion of test.py to run the unit test suite falls under the\n\"aggregation\" clause of the GPL and thus does not affect the license\nof the rest of the package.\n\nThe isoschematron implementation uses several XSL and RelaxNG resources:\n * The (XML syntax) RelaxNG schema for schematron, copyright International\n Organization for Standardization (see \n src/lxml/isoschematron/resources/rng/iso-schematron.rng for the license\n text)\n * The skeleton iso-schematron-xlt1 pure-xslt schematron implementation\n xsl stylesheets, copyright Rick Jelliffe and Academia Sinica Computing\n Center, Taiwan (see the xsl files here for the license text: \n src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/)\n * The xsd/rng schema schematron extraction xsl transformations are unlicensed\n and copyright the respective authors as noted (see \n src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl and\n src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl)\n", - "contentType": "text/plain" + "content": "bHhtbCBpcyBjb3B5cmlnaHQgSW5mcmFlIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgQlNEIGxpY2Vuc2UgKHNlZQpkb2MvbGljZW5zZXMvQlNELnR4dCksIHdpdGggdGhlIGZvbGxvd2luZyBleGNlcHRpb25zOgoKU29tZSBjb2RlLCBzdWNoIGEgc2VsZnRlc3QucHksIHNlbGZ0ZXN0Mi5weSBhbmQKc3JjL2x4bWwvX2VsZW1lbnRwYXRoLnB5IGFyZSBkZXJpdmVkIGZyb20gRWxlbWVudFRyZWUgYW5kCmNFbGVtZW50VHJlZS4gU2VlIGRvYy9saWNlbnNlcy9lbGVtZW50dHJlZS50eHQgZm9yIHRoZSBsaWNlbnNlIHRleHQuCgpseG1sLmNzc3NlbGVjdCBhbmQgbHhtbC5odG1sIGFyZSBjb3B5cmlnaHQgSWFuIEJpY2tpbmcgYW5kIGRpc3RyaWJ1dGVkCnVuZGVyIHRoZSBCU0QgbGljZW5zZSAoc2VlIGRvYy9saWNlbnNlcy9CU0QudHh0KS4KCnRlc3QucHksIHRoZSB0ZXN0LXJ1bm5lciBzY3JpcHQsIGlzIEdQTCBhbmQgY29weXJpZ2h0IFNodXR0bGV3b3J0aApGb3VuZGF0aW9uLiBTZWUgZG9jL2xpY2Vuc2VzL0dQTC50eHQuIEl0IGlzIGJlbGlldmVkIHRoZSB1bmNoYW5nZWQKaW5jbHVzaW9uIG9mIHRlc3QucHkgdG8gcnVuIHRoZSB1bml0IHRlc3Qgc3VpdGUgZmFsbHMgdW5kZXIgdGhlCiJhZ2dyZWdhdGlvbiIgY2xhdXNlIG9mIHRoZSBHUEwgYW5kIHRodXMgZG9lcyBub3QgYWZmZWN0IHRoZSBsaWNlbnNlCm9mIHRoZSByZXN0IG9mIHRoZSBwYWNrYWdlLgoKVGhlIGlzb3NjaGVtYXRyb24gaW1wbGVtZW50YXRpb24gdXNlcyBzZXZlcmFsIFhTTCBhbmQgUmVsYXhORyByZXNvdXJjZXM6CiAqIFRoZSAoWE1MIHN5bnRheCkgUmVsYXhORyBzY2hlbWEgZm9yIHNjaGVtYXRyb24sIGNvcHlyaWdodCBJbnRlcm5hdGlvbmFsCiAgIE9yZ2FuaXphdGlvbiBmb3IgU3RhbmRhcmRpemF0aW9uIChzZWUgCiAgIHNyYy9seG1sL2lzb3NjaGVtYXRyb24vcmVzb3VyY2VzL3JuZy9pc28tc2NoZW1hdHJvbi5ybmcgZm9yIHRoZSBsaWNlbnNlCiAgIHRleHQpCiAqIFRoZSBza2VsZXRvbiBpc28tc2NoZW1hdHJvbi14bHQxIHB1cmUteHNsdCBzY2hlbWF0cm9uIGltcGxlbWVudGF0aW9uCiAgIHhzbCBzdHlsZXNoZWV0cywgY29weXJpZ2h0IFJpY2sgSmVsbGlmZmUgYW5kIEFjYWRlbWlhIFNpbmljYSBDb21wdXRpbmcKICAgQ2VudGVyLCBUYWl3YW4gKHNlZSB0aGUgeHNsIGZpbGVzIGhlcmUgZm9yIHRoZSBsaWNlbnNlIHRleHQ6IAogICBzcmMvbHhtbC9pc29zY2hlbWF0cm9uL3Jlc291cmNlcy94c2wvaXNvLXNjaGVtYXRyb24teHNsdDEvKQogKiBUaGUgeHNkL3JuZyBzY2hlbWEgc2NoZW1hdHJvbiBleHRyYWN0aW9uIHhzbCB0cmFuc2Zvcm1hdGlvbnMgYXJlIHVubGljZW5zZWQKICAgYW5kIGNvcHlyaWdodCB0aGUgcmVzcGVjdGl2ZSBhdXRob3JzIGFzIG5vdGVkIChzZWUgCiAgIHNyYy9seG1sL2lzb3NjaGVtYXRyb24vcmVzb3VyY2VzL3hzbC9STkcyU2NodHJuLnhzbCBhbmQKICAgc3JjL2x4bWwvaXNvc2NoZW1hdHJvbi9yZXNvdXJjZXMveHNsL1hTRDJTY2h0cm4ueHNsKQo=", + "contentType": "text/plain", + "encoding": "base64" } } } @@ -411,54 +388,6 @@ "url": "file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868" } ], - "licenses": [ - { - "license": { - "name": "declared license file: my_licenses/richtext.rtf", - "text": { - "content": "e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA=", - "contentType": "application/rtf", - "encoding": "base64" - } - } - }, - { - "license": { - "name": "declared license file: my_licenses/utf-16be_withBOM.txt", - "text": { - "content": "this file is\r\nutf-16be encoded\r\nwith BOM\r\n\ud83d\ude03\r\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: my_licenses/utf-16le_withBOM.txt", - "text": { - "content": "this file is\nutf-16le encoded\nwith BOM\n\ud83d\ude03\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: my_licenses/utf-8_noBOM.txt", - "text": { - "content": "this file is\nutf-8 encoded\nwithout BOM\n\ud83d\ude03\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "name": "declared license file: my_licenses/utf-8_withBOM.txt", - "text": { - "content": "\ufeffthis file is\nutf-8 encoded\nwith BOM\n\ud83d\ude03\n", - "contentType": "text/plain" - } - } - } - ], "name": "regression-issue868", "type": "library", "version": "0.1" diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.xml.bin index da4deaeb2..ceb9e6c2c 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.xml.bin @@ -107,31 +107,6 @@ MIT - - declared license file: LICENSE - The MIT License (MIT) - -Copyright (c) 2015 Hynek Schlawack and the attrs contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - pkg:pypi/attrs@23.2.0 @@ -167,281 +142,15 @@ SOFTWARE. declared license file: CHANGELOG.rst - -Changelog -========= - - -next ----- - - -4.0 (2022-05-05) ----------------- - -* API changes - - * Drop support for Python 2. - * Test on Python 3.10 - * Make Expression.sort_order an instance attributes and not a class attribute - -* Misc. - - * Correct licensing documentation - * Improve docstringf and apply minor refactorings - * Adopt black code style and isort for imports - * Drop Travis and use GitHub actions for CI - - -3.8 (2020-06-10) ----------------- - -* API changes - - * Add support for evaluation of boolean expression. - Thank you to Lars van Gemerden @gemerden - -* Bug fixes - - * Fix parsing of tokens that have a number as the first character. - Thank you to Jeff Cohen @ jcohen28 - * Restore proper Python 2 compatibility. - Thank you to Benjy Weinberger @benjyw - -* Improve documentation - - * Add pointers to Linux distro packages. - Thank you to Max Mehl @mxmehl and Carmen Bianca Bakker @carmenbianca - * Fix typo. - Thank you to Gabriel Niebler @der-gabe - - -3.7 (2019-10-04) ----------------- - -* API changes - - * Add new sort argument to simplify() to optionally not sort when simplifying - expressions (e.g. not applying "commutativity"). Thank you to Steven Esser - @majurg for this - * Add new argument to tokenizer to optionally accept extra characters in symbol - tokens. Thank you to @carpie for this - - -3.6 (2018-08-06) ----------------- - -* No API changes - -* Bug fixes - - * Fix De Morgan's laws effect on double negation propositions. Thank you to Douglas Cardoso for this - * Improve error checking when parsing - - -3.5 (Nov 1, 2017) ------------------ - -* No API changes - -* Bug fixes - - * Documentation updates and add testing for Python 3.6. Thank you to Alexander Lisianoi @alisianoi - * Improve testng and expression equivalence checks - * Improve subs() method to an expression - - - -3.4 (May 12, 2017) ------------------- - -* No API changes - -* Bug fixes and improvements - - * Fix various documentation typos and improve tests . Thank you to Alexander Lisianoi @alisianoi - * Fix handling for literals vs. symbols in negations Thank you to @YaronK - - -3.3 (2017-02-09) ----------------- - -* API changes - - * #40 and #50 Expression.subs() now takes 'default' thanks to @kronuz - * #45 simplify=False is now the default for parse and related functions or methods. - * #40 Use "&" and "|" as default operators - -* Bug fixes - - * #60 Fix bug for "a or b c" which is not a valid expression - * #58 Fix math formula display in docs - * Improve handling of parse errors - - -2.0.0 (2016-05-11) ------------------- - -* API changes - - * New algebra definition. Refactored class hierarchy. Improved parsing. - -* New features - - * possibility to subclass algebra definition - * new normal forms shortcuts for DNF and CNF. - - -1.1 (2016-04-06) ------------------- - -* Initial release on Pypi. - + CkNoYW5nZWxvZwo9PT09PT09PT0KCgpuZXh0Ci0tLS0KCgo0LjAgKDIwMjItMDUtMDUpCi0tLS0tLS0tLS0tLS0tLS0KCiogQVBJIGNoYW5nZXMKCiAqIERyb3Agc3VwcG9ydCBmb3IgUHl0aG9uIDIuCiAqIFRlc3Qgb24gUHl0aG9uIDMuMTAKICogTWFrZSBFeHByZXNzaW9uLnNvcnRfb3JkZXIgYW4gaW5zdGFuY2UgYXR0cmlidXRlcyBhbmQgbm90IGEgY2xhc3MgYXR0cmlidXRlCgoqIE1pc2MuCgogKiBDb3JyZWN0IGxpY2Vuc2luZyBkb2N1bWVudGF0aW9uCiAqIEltcHJvdmUgZG9jc3RyaW5nZiBhbmQgYXBwbHkgbWlub3IgcmVmYWN0b3JpbmdzCiAqIEFkb3B0IGJsYWNrIGNvZGUgc3R5bGUgYW5kIGlzb3J0IGZvciBpbXBvcnRzCiAqIERyb3AgVHJhdmlzIGFuZCB1c2UgR2l0SHViIGFjdGlvbnMgZm9yIENJCgoKMy44ICgyMDIwLTA2LTEwKQotLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiBBZGQgc3VwcG9ydCBmb3IgZXZhbHVhdGlvbiBvZiBib29sZWFuIGV4cHJlc3Npb24uCiAgIFRoYW5rIHlvdSB0byBMYXJzIHZhbiBHZW1lcmRlbiBAZ2VtZXJkZW4KCiogQnVnIGZpeGVzCgogKiBGaXggcGFyc2luZyBvZiB0b2tlbnMgdGhhdCBoYXZlIGEgbnVtYmVyIGFzIHRoZSBmaXJzdCBjaGFyYWN0ZXIuIAogICBUaGFuayB5b3UgdG8gSmVmZiBDb2hlbiBAIGpjb2hlbjI4CiAqIFJlc3RvcmUgcHJvcGVyIFB5dGhvbiAyIGNvbXBhdGliaWxpdHkuIAogICBUaGFuayB5b3UgdG8gQmVuankgV2VpbmJlcmdlciBAYmVuanl3CgoqIEltcHJvdmUgZG9jdW1lbnRhdGlvbgoKICogQWRkIHBvaW50ZXJzIHRvIExpbnV4IGRpc3RybyBwYWNrYWdlcy4KICAgVGhhbmsgeW91IHRvIE1heCBNZWhsIEBteG1laGwgYW5kIENhcm1lbiBCaWFuY2EgQmFra2VyIEBjYXJtZW5iaWFuY2EKICogRml4IHR5cG8uCiAgIFRoYW5rIHlvdSB0byBHYWJyaWVsIE5pZWJsZXIgQGRlci1nYWJlCgoKMy43ICgyMDE5LTEwLTA0KQotLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiBBZGQgbmV3IHNvcnQgYXJndW1lbnQgdG8gc2ltcGxpZnkoKSB0byBvcHRpb25hbGx5IG5vdCBzb3J0IHdoZW4gc2ltcGxpZnlpbmcKICAgZXhwcmVzc2lvbnMgKGUuZy4gbm90IGFwcGx5aW5nICJjb21tdXRhdGl2aXR5IikuIFRoYW5rIHlvdSB0byBTdGV2ZW4gRXNzZXIKICAgQG1hanVyZyBmb3IgdGhpcwogKiBBZGQgbmV3IGFyZ3VtZW50IHRvIHRva2VuaXplciB0byBvcHRpb25hbGx5IGFjY2VwdCBleHRyYSBjaGFyYWN0ZXJzIGluIHN5bWJvbAogICB0b2tlbnMuIFRoYW5rIHlvdSB0byBAY2FycGllIGZvciB0aGlzCgoKMy42ICgyMDE4LTA4LTA2KQotLS0tLS0tLS0tLS0tLS0tCgoqIE5vIEFQSSBjaGFuZ2VzCgoqIEJ1ZyBmaXhlcwoKICogRml4IERlIE1vcmdhbidzIGxhd3MgZWZmZWN0IG9uIGRvdWJsZSBuZWdhdGlvbiBwcm9wb3NpdGlvbnMuIFRoYW5rIHlvdSB0byBEb3VnbGFzIENhcmRvc28gZm9yIHRoaXMKICogSW1wcm92ZSBlcnJvciBjaGVja2luZyB3aGVuIHBhcnNpbmcKCgozLjUgKE5vdiAxLCAyMDE3KQotLS0tLS0tLS0tLS0tLS0tLQoKKiBObyBBUEkgY2hhbmdlcwoKKiBCdWcgZml4ZXMKCiAqIERvY3VtZW50YXRpb24gdXBkYXRlcyBhbmQgYWRkIHRlc3RpbmcgZm9yIFB5dGhvbiAzLjYuIFRoYW5rIHlvdSB0byBBbGV4YW5kZXIgTGlzaWFub2kgQGFsaXNpYW5vaQogKiBJbXByb3ZlIHRlc3RuZyBhbmQgZXhwcmVzc2lvbiBlcXVpdmFsZW5jZSBjaGVja3MKICogSW1wcm92ZSBzdWJzKCkgbWV0aG9kIHRvIGFuIGV4cHJlc3Npb24gCgogCgozLjQgKE1heSAxMiwgMjAxNykKLS0tLS0tLS0tLS0tLS0tLS0tCgoqIE5vIEFQSSBjaGFuZ2VzCgoqIEJ1ZyBmaXhlcyBhbmQgaW1wcm92ZW1lbnRzCgogKiBGaXggdmFyaW91cyBkb2N1bWVudGF0aW9uIHR5cG9zIGFuZCBpbXByb3ZlIHRlc3RzIC4gVGhhbmsgeW91IHRvIEFsZXhhbmRlciBMaXNpYW5vaSBAYWxpc2lhbm9pCiAqIEZpeCBoYW5kbGluZyBmb3IgbGl0ZXJhbHMgdnMuIHN5bWJvbHMgaW4gbmVnYXRpb25zIFRoYW5rIHlvdSB0byBAWWFyb25LCgoKMy4zICgyMDE3LTAyLTA5KQotLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiAjNDAgYW5kICM1MCBFeHByZXNzaW9uLnN1YnMoKSBub3cgdGFrZXMgJ2RlZmF1bHQnIHRoYW5rcyB0byBAa3JvbnV6CiAqICM0NSBzaW1wbGlmeT1GYWxzZSBpcyBub3cgdGhlIGRlZmF1bHQgZm9yIHBhcnNlIGFuZCByZWxhdGVkIGZ1bmN0aW9ucyBvciBtZXRob2RzLgogKiAjNDAgVXNlICImIiBhbmQgInwiIGFzIGRlZmF1bHQgb3BlcmF0b3JzCgoqIEJ1ZyBmaXhlcwoKICogIzYwIEZpeCBidWcgZm9yICJhIG9yIGIgYyIgd2hpY2ggaXMgbm90IGEgdmFsaWQgZXhwcmVzc2lvbgogKiAjNTggRml4IG1hdGggZm9ybXVsYSBkaXNwbGF5IGluIGRvY3MKICogSW1wcm92ZSBoYW5kbGluZyBvZiBwYXJzZSBlcnJvcnMKCgoyLjAuMCAoMjAxNi0wNS0xMSkKLS0tLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiBOZXcgYWxnZWJyYSBkZWZpbml0aW9uLiBSZWZhY3RvcmVkIGNsYXNzIGhpZXJhcmNoeS4gSW1wcm92ZWQgcGFyc2luZy4KCiogTmV3IGZlYXR1cmVzCgogKiBwb3NzaWJpbGl0eSB0byBzdWJjbGFzcyBhbGdlYnJhIGRlZmluaXRpb24KICogbmV3IG5vcm1hbCBmb3JtcyBzaG9ydGN1dHMgZm9yIERORiBhbmQgQ05GLgoKCjEuMSAoMjAxNi0wNC0wNikKLS0tLS0tLS0tLS0tLS0tLS0tCgoqIEluaXRpYWwgcmVsZWFzZSBvbiBQeXBpLgo= declared license file: LICENSE.txt - Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation and/or -other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - + Q29weXJpZ2h0IChjKSBTZWJhc3RpYW4gS3JhZW1lciwgYmFzdGkua3JAZ21haWwuY29tIGFuZCBvdGhlcnMKQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCmFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKCjEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcwpsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KCjIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3IKb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQpESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgpBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwpMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCg== declared license file: README.rst - boolean.py -========== - -"boolean.py" is a small library implementing a boolean algebra. It -defines two base elements, TRUE and FALSE, and a Symbol class that can -take on one of these two values. Calculations are done in terms of AND, -OR and NOT - other compositions like XOR and NAND are not implemented -but can be emulated with AND or and NOT. Expressions are constructed -from parsed strings or in Python. - -It runs on Python 3.6+ -You can use older version 3.x for Python 2.7+ support. - -https://github.com/bastikr/boolean.py - -Build status: |Build Status| - - -Example -------- - -:: - - >>> import boolean - >>> algebra = boolean.BooleanAlgebra() - >>> expression1 = algebra.parse(u'apple and (oranges or banana) and not banana', simplify=False) - >>> expression1 - AND(Symbol('apple'), OR(Symbol('oranges'), Symbol('banana')), NOT(Symbol('banana'))) - - >>> expression2 = algebra.parse('(oranges | banana) and not banana & apple', simplify=True) - >>> expression2 - AND(Symbol('apple'), NOT(Symbol('banana')), Symbol('oranges')) - - >>> expression1 == expression2 - False - >>> expression1.simplify() == expression2 - True - - -Documentation -------------- - -http://readthedocs.org/docs/booleanpy/en/latest/ - - -Installation ------------- - -Installation via pip -~~~~~~~~~~~~~~~~~~~~ - -To install boolean.py, you need to have the following pieces of software -on your computer: - -- Python 3.6+ -- pip - -You then only need to run the following command: - -``pip install boolean.py`` - - -Installation via package managers -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -There are packages available for easy install on some operating systems. -You are welcome to help us package this tool for more distributions! - -- boolean.py has been packaged as Arch Linux, Fedora, openSus, - nixpkgs, Guix, DragonFly and FreeBSD - `packages <https://repology.org/project/python:boolean.py/versions>`__ . - -In particular: - -- Arch Linux (AUR): - `python-boolean.py <https://aur.archlinux.org/packages/python-boolean.py/>`__ -- Fedora: - `python-boolean.py <https://apps.fedoraproject.org/packages/python-boolean.py>`__ -- openSUSE: - `python-boolean.py <https://software.opensuse.org/package/python-boolean.py>`__ - - -Testing -------- - -Test ``boolean.py`` with your current Python environment: - -``python setup.py test`` - -Test with all of the supported Python environments using ``tox``: - -:: - - pip install -r requirements-dev.txt - tox - -If ``tox`` throws ``InterpreterNotFound``, limit it to python -interpreters that are actually installed on your machine: - -:: - - tox -e py36 - -Alternatively use pytest. - - -License -------- - -Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others -SPDX-License-Identifier: BSD-2-Clause - -.. |Build Status| image:: https://travis-ci.org/bastikr/boolean.py.svg?branch=master - :target: https://travis-ci.org/bastikr/boolean.py - + Ym9vbGVhbi5weQo9PT09PT09PT09CgoiYm9vbGVhbi5weSIgaXMgYSBzbWFsbCBsaWJyYXJ5IGltcGxlbWVudGluZyBhIGJvb2xlYW4gYWxnZWJyYS4gSXQKZGVmaW5lcyB0d28gYmFzZSBlbGVtZW50cywgVFJVRSBhbmQgRkFMU0UsIGFuZCBhIFN5bWJvbCBjbGFzcyB0aGF0IGNhbgp0YWtlIG9uIG9uZSBvZiB0aGVzZSB0d28gdmFsdWVzLiBDYWxjdWxhdGlvbnMgYXJlIGRvbmUgaW4gdGVybXMgb2YgQU5ELApPUiBhbmQgTk9UIC0gb3RoZXIgY29tcG9zaXRpb25zIGxpa2UgWE9SIGFuZCBOQU5EIGFyZSBub3QgaW1wbGVtZW50ZWQKYnV0IGNhbiBiZSBlbXVsYXRlZCB3aXRoIEFORCBvciBhbmQgTk9ULiBFeHByZXNzaW9ucyBhcmUgY29uc3RydWN0ZWQKZnJvbSBwYXJzZWQgc3RyaW5ncyBvciBpbiBQeXRob24uCgpJdCBydW5zIG9uIFB5dGhvbiAzLjYrCllvdSBjYW4gdXNlIG9sZGVyIHZlcnNpb24gMy54IGZvciBQeXRob24gMi43KyBzdXBwb3J0LgoKaHR0cHM6Ly9naXRodWIuY29tL2Jhc3Rpa3IvYm9vbGVhbi5weQoKQnVpbGQgc3RhdHVzOiB8QnVpbGQgU3RhdHVzfAoKCkV4YW1wbGUKLS0tLS0tLQoKOjoKCiAgICA+Pj4gaW1wb3J0IGJvb2xlYW4KICAgID4+PiBhbGdlYnJhID0gYm9vbGVhbi5Cb29sZWFuQWxnZWJyYSgpCiAgICA+Pj4gZXhwcmVzc2lvbjEgPSBhbGdlYnJhLnBhcnNlKHUnYXBwbGUgYW5kIChvcmFuZ2VzIG9yIGJhbmFuYSkgYW5kIG5vdCBiYW5hbmEnLCBzaW1wbGlmeT1GYWxzZSkKICAgID4+PiBleHByZXNzaW9uMQogICAgQU5EKFN5bWJvbCgnYXBwbGUnKSwgT1IoU3ltYm9sKCdvcmFuZ2VzJyksIFN5bWJvbCgnYmFuYW5hJykpLCBOT1QoU3ltYm9sKCdiYW5hbmEnKSkpCgogICAgPj4+IGV4cHJlc3Npb24yID0gYWxnZWJyYS5wYXJzZSgnKG9yYW5nZXMgfCBiYW5hbmEpIGFuZCBub3QgYmFuYW5hICYgYXBwbGUnLCBzaW1wbGlmeT1UcnVlKQogICAgPj4+IGV4cHJlc3Npb24yCiAgICBBTkQoU3ltYm9sKCdhcHBsZScpLCBOT1QoU3ltYm9sKCdiYW5hbmEnKSksIFN5bWJvbCgnb3JhbmdlcycpKQoKICAgID4+PiBleHByZXNzaW9uMSA9PSBleHByZXNzaW9uMgogICAgRmFsc2UKICAgID4+PiBleHByZXNzaW9uMS5zaW1wbGlmeSgpID09IGV4cHJlc3Npb24yCiAgICBUcnVlCgoKRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tCgpodHRwOi8vcmVhZHRoZWRvY3Mub3JnL2RvY3MvYm9vbGVhbnB5L2VuL2xhdGVzdC8KCgpJbnN0YWxsYXRpb24KLS0tLS0tLS0tLS0tCgpJbnN0YWxsYXRpb24gdmlhIHBpcAp+fn5+fn5+fn5+fn5+fn5+fn5+fgoKVG8gaW5zdGFsbCBib29sZWFuLnB5LCB5b3UgbmVlZCB0byBoYXZlIHRoZSBmb2xsb3dpbmcgcGllY2VzIG9mIHNvZnR3YXJlCm9uIHlvdXIgY29tcHV0ZXI6CgotICBQeXRob24gMy42KwotICBwaXAKCllvdSB0aGVuIG9ubHkgbmVlZCB0byBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kOgoKYGBwaXAgaW5zdGFsbCBib29sZWFuLnB5YGAKCgpJbnN0YWxsYXRpb24gdmlhIHBhY2thZ2UgbWFuYWdlcnMKfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgpUaGVyZSBhcmUgcGFja2FnZXMgYXZhaWxhYmxlIGZvciBlYXN5IGluc3RhbGwgb24gc29tZSBvcGVyYXRpbmcgc3lzdGVtcy4KWW91IGFyZSB3ZWxjb21lIHRvIGhlbHAgdXMgcGFja2FnZSB0aGlzIHRvb2wgZm9yIG1vcmUgZGlzdHJpYnV0aW9ucyEKCi0gIGJvb2xlYW4ucHkgaGFzIGJlZW4gcGFja2FnZWQgYXMgQXJjaCBMaW51eCwgRmVkb3JhLCBvcGVuU3VzLAogICBuaXhwa2dzLCBHdWl4LCBEcmFnb25GbHkgYW5kIEZyZWVCU0QgCiAgIGBwYWNrYWdlcyA8aHR0cHM6Ly9yZXBvbG9neS5vcmcvcHJvamVjdC9weXRob246Ym9vbGVhbi5weS92ZXJzaW9ucz5gX18gLgoKSW4gcGFydGljdWxhcjoKCi0gIEFyY2ggTGludXggKEFVUik6CiAgIGBweXRob24tYm9vbGVhbi5weSA8aHR0cHM6Ly9hdXIuYXJjaGxpbnV4Lm9yZy9wYWNrYWdlcy9weXRob24tYm9vbGVhbi5weS8+YF9fCi0gIEZlZG9yYToKICAgYHB5dGhvbi1ib29sZWFuLnB5IDxodHRwczovL2FwcHMuZmVkb3JhcHJvamVjdC5vcmcvcGFja2FnZXMvcHl0aG9uLWJvb2xlYW4ucHk+YF9fCi0gIG9wZW5TVVNFOgogICBgcHl0aG9uLWJvb2xlYW4ucHkgPGh0dHBzOi8vc29mdHdhcmUub3BlbnN1c2Uub3JnL3BhY2thZ2UvcHl0aG9uLWJvb2xlYW4ucHk+YF9fCgoKVGVzdGluZwotLS0tLS0tCgpUZXN0IGBgYm9vbGVhbi5weWBgIHdpdGggeW91ciBjdXJyZW50IFB5dGhvbiBlbnZpcm9ubWVudDoKCmBgcHl0aG9uIHNldHVwLnB5IHRlc3RgYAoKVGVzdCB3aXRoIGFsbCBvZiB0aGUgc3VwcG9ydGVkIFB5dGhvbiBlbnZpcm9ubWVudHMgdXNpbmcgYGB0b3hgYDoKCjo6CgogICAgcGlwIGluc3RhbGwgLXIgcmVxdWlyZW1lbnRzLWRldi50eHQKICAgIHRveAoKSWYgYGB0b3hgYCB0aHJvd3MgYGBJbnRlcnByZXRlck5vdEZvdW5kYGAsIGxpbWl0IGl0IHRvIHB5dGhvbgppbnRlcnByZXRlcnMgdGhhdCBhcmUgYWN0dWFsbHkgaW5zdGFsbGVkIG9uIHlvdXIgbWFjaGluZToKCjo6CgogICAgdG94IC1lIHB5MzYKCkFsdGVybmF0aXZlbHkgdXNlIHB5dGVzdC4KCgpMaWNlbnNlCi0tLS0tLS0KCkNvcHlyaWdodCAoYykgU2ViYXN0aWFuIEtyYWVtZXIsIGJhc3RpLmtyQGdtYWlsLmNvbSBhbmQgb3RoZXJzClNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UKCi4uIHxCdWlsZCBTdGF0dXN8IGltYWdlOjogaHR0cHM6Ly90cmF2aXMtY2kub3JnL2Jhc3Rpa3IvYm9vbGVhbi5weS5zdmc/YnJhbmNoPW1hc3RlcgogICA6dGFyZ2V0OiBodHRwczovL3RyYXZpcy1jaS5vcmcvYmFzdGlrci9ib29sZWFuLnB5Cg== pkg:pypi/boolean.py@4.0 @@ -452,6 +161,43 @@ SPDX-License-Identifier: BSD-2-Clause + + chardet + 5.2.0 + Universal encoding detector for Python 3 + + + License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+) + + + declared license file: LICENSE + ICAgICAgICAgICAgICAgICAgR05VIExFU1NFUiBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFCiAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAyLjEsIEZlYnJ1YXJ5IDE5OTkKCiBDb3B5cmlnaHQgKEMpIDE5OTEsIDE5OTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKIEV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcwogb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCgpbVGhpcyBpcyB0aGUgZmlyc3QgcmVsZWFzZWQgdmVyc2lvbiBvZiB0aGUgTGVzc2VyIEdQTC4gIEl0IGFsc28gY291bnRzCiBhcyB0aGUgc3VjY2Vzc29yIG9mIHRoZSBHTlUgTGlicmFyeSBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLCBoZW5jZQogdGhlIHZlcnNpb24gbnVtYmVyIDIuMS5dCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlYW1ibGUKCiAgVGhlIGxpY2Vuc2VzIGZvciBtb3N0IHNvZnR3YXJlIGFyZSBkZXNpZ25lZCB0byB0YWtlIGF3YXkgeW91cgpmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgaXQuICBCeSBjb250cmFzdCwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwpMaWNlbnNlcyBhcmUgaW50ZW5kZWQgdG8gZ3VhcmFudGVlIHlvdXIgZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlCmZyZWUgc29mdHdhcmUtLXRvIG1ha2Ugc3VyZSB0aGUgc29mdHdhcmUgaXMgZnJlZSBmb3IgYWxsIGl0cyB1c2Vycy4KCiAgVGhpcyBsaWNlbnNlLCB0aGUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFwcGxpZXMgdG8gc29tZQpzcGVjaWFsbHkgZGVzaWduYXRlZCBzb2Z0d2FyZSBwYWNrYWdlcy0tdHlwaWNhbGx5IGxpYnJhcmllcy0tb2YgdGhlCkZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBhbmQgb3RoZXIgYXV0aG9ycyB3aG8gZGVjaWRlIHRvIHVzZSBpdC4gIFlvdQpjYW4gdXNlIGl0IHRvbywgYnV0IHdlIHN1Z2dlc3QgeW91IGZpcnN0IHRoaW5rIGNhcmVmdWxseSBhYm91dCB3aGV0aGVyCnRoaXMgbGljZW5zZSBvciB0aGUgb3JkaW5hcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyB0aGUgYmV0dGVyCnN0cmF0ZWd5IHRvIHVzZSBpbiBhbnkgcGFydGljdWxhciBjYXNlLCBiYXNlZCBvbiB0aGUgZXhwbGFuYXRpb25zIGJlbG93LgoKICBXaGVuIHdlIHNwZWFrIG9mIGZyZWUgc29mdHdhcmUsIHdlIGFyZSByZWZlcnJpbmcgdG8gZnJlZWRvbSBvZiB1c2UsCm5vdCBwcmljZS4gIE91ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlcyBhcmUgZGVzaWduZWQgdG8gbWFrZSBzdXJlIHRoYXQKeW91IGhhdmUgdGhlIGZyZWVkb20gdG8gZGlzdHJpYnV0ZSBjb3BpZXMgb2YgZnJlZSBzb2Z0d2FyZSAoYW5kIGNoYXJnZQpmb3IgdGhpcyBzZXJ2aWNlIGlmIHlvdSB3aXNoKTsgdGhhdCB5b3UgcmVjZWl2ZSBzb3VyY2UgY29kZSBvciBjYW4gZ2V0Cml0IGlmIHlvdSB3YW50IGl0OyB0aGF0IHlvdSBjYW4gY2hhbmdlIHRoZSBzb2Z0d2FyZSBhbmQgdXNlIHBpZWNlcyBvZgppdCBpbiBuZXcgZnJlZSBwcm9ncmFtczsgYW5kIHRoYXQgeW91IGFyZSBpbmZvcm1lZCB0aGF0IHlvdSBjYW4gZG8KdGhlc2UgdGhpbmdzLgoKICBUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIG1ha2UgcmVzdHJpY3Rpb25zIHRoYXQgZm9yYmlkCmRpc3RyaWJ1dG9ycyB0byBkZW55IHlvdSB0aGVzZSByaWdodHMgb3IgdG8gYXNrIHlvdSB0byBzdXJyZW5kZXIgdGhlc2UKcmlnaHRzLiAgVGhlc2UgcmVzdHJpY3Rpb25zIHRyYW5zbGF0ZSB0byBjZXJ0YWluIHJlc3BvbnNpYmlsaXRpZXMgZm9yCnlvdSBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIGxpYnJhcnkgb3IgaWYgeW91IG1vZGlmeSBpdC4KCiAgRm9yIGV4YW1wbGUsIGlmIHlvdSBkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUgbGlicmFyeSwgd2hldGhlciBncmF0aXMKb3IgZm9yIGEgZmVlLCB5b3UgbXVzdCBnaXZlIHRoZSByZWNpcGllbnRzIGFsbCB0aGUgcmlnaHRzIHRoYXQgd2UgZ2F2ZQp5b3UuICBZb3UgbXVzdCBtYWtlIHN1cmUgdGhhdCB0aGV5LCB0b28sIHJlY2VpdmUgb3IgY2FuIGdldCB0aGUgc291cmNlCmNvZGUuICBJZiB5b3UgbGluayBvdGhlciBjb2RlIHdpdGggdGhlIGxpYnJhcnksIHlvdSBtdXN0IHByb3ZpZGUKY29tcGxldGUgb2JqZWN0IGZpbGVzIHRvIHRoZSByZWNpcGllbnRzLCBzbyB0aGF0IHRoZXkgY2FuIHJlbGluayB0aGVtCndpdGggdGhlIGxpYnJhcnkgYWZ0ZXIgbWFraW5nIGNoYW5nZXMgdG8gdGhlIGxpYnJhcnkgYW5kIHJlY29tcGlsaW5nCml0LiAgQW5kIHlvdSBtdXN0IHNob3cgdGhlbSB0aGVzZSB0ZXJtcyBzbyB0aGV5IGtub3cgdGhlaXIgcmlnaHRzLgoKICBXZSBwcm90ZWN0IHlvdXIgcmlnaHRzIHdpdGggYSB0d28tc3RlcCBtZXRob2Q6ICgxKSB3ZSBjb3B5cmlnaHQgdGhlCmxpYnJhcnksIGFuZCAoMikgd2Ugb2ZmZXIgeW91IHRoaXMgbGljZW5zZSwgd2hpY2ggZ2l2ZXMgeW91IGxlZ2FsCnBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IHRoZSBsaWJyYXJ5LgoKICBUbyBwcm90ZWN0IGVhY2ggZGlzdHJpYnV0b3IsIHdlIHdhbnQgdG8gbWFrZSBpdCB2ZXJ5IGNsZWFyIHRoYXQKdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoZSBmcmVlIGxpYnJhcnkuICBBbHNvLCBpZiB0aGUgbGlicmFyeSBpcwptb2RpZmllZCBieSBzb21lb25lIGVsc2UgYW5kIHBhc3NlZCBvbiwgdGhlIHJlY2lwaWVudHMgc2hvdWxkIGtub3cKdGhhdCB3aGF0IHRoZXkgaGF2ZSBpcyBub3QgdGhlIG9yaWdpbmFsIHZlcnNpb24sIHNvIHRoYXQgdGhlIG9yaWdpbmFsCmF1dGhvcidzIHJlcHV0YXRpb24gd2lsbCBub3QgYmUgYWZmZWN0ZWQgYnkgcHJvYmxlbXMgdGhhdCBtaWdodCBiZQppbnRyb2R1Y2VkIGJ5IG90aGVycy4KDAogIEZpbmFsbHksIHNvZnR3YXJlIHBhdGVudHMgcG9zZSBhIGNvbnN0YW50IHRocmVhdCB0byB0aGUgZXhpc3RlbmNlIG9mCmFueSBmcmVlIHByb2dyYW0uICBXZSB3aXNoIHRvIG1ha2Ugc3VyZSB0aGF0IGEgY29tcGFueSBjYW5ub3QKZWZmZWN0aXZlbHkgcmVzdHJpY3QgdGhlIHVzZXJzIG9mIGEgZnJlZSBwcm9ncmFtIGJ5IG9idGFpbmluZyBhCnJlc3RyaWN0aXZlIGxpY2Vuc2UgZnJvbSBhIHBhdGVudCBob2xkZXIuICBUaGVyZWZvcmUsIHdlIGluc2lzdCB0aGF0CmFueSBwYXRlbnQgbGljZW5zZSBvYnRhaW5lZCBmb3IgYSB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5IG11c3QgYmUKY29uc2lzdGVudCB3aXRoIHRoZSBmdWxsIGZyZWVkb20gb2YgdXNlIHNwZWNpZmllZCBpbiB0aGlzIGxpY2Vuc2UuCgogIE1vc3QgR05VIHNvZnR3YXJlLCBpbmNsdWRpbmcgc29tZSBsaWJyYXJpZXMsIGlzIGNvdmVyZWQgYnkgdGhlCm9yZGluYXJ5IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBsaWNlbnNlLCB0aGUgR05VIExlc3NlcgpHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBhcHBsaWVzIHRvIGNlcnRhaW4gZGVzaWduYXRlZCBsaWJyYXJpZXMsIGFuZAppcyBxdWl0ZSBkaWZmZXJlbnQgZnJvbSB0aGUgb3JkaW5hcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFdlIHVzZQp0aGlzIGxpY2Vuc2UgZm9yIGNlcnRhaW4gbGlicmFyaWVzIGluIG9yZGVyIHRvIHBlcm1pdCBsaW5raW5nIHRob3NlCmxpYnJhcmllcyBpbnRvIG5vbi1mcmVlIHByb2dyYW1zLgoKICBXaGVuIGEgcHJvZ3JhbSBpcyBsaW5rZWQgd2l0aCBhIGxpYnJhcnksIHdoZXRoZXIgc3RhdGljYWxseSBvciB1c2luZwphIHNoYXJlZCBsaWJyYXJ5LCB0aGUgY29tYmluYXRpb24gb2YgdGhlIHR3byBpcyBsZWdhbGx5IHNwZWFraW5nIGEKY29tYmluZWQgd29yaywgYSBkZXJpdmF0aXZlIG9mIHRoZSBvcmlnaW5hbCBsaWJyYXJ5LiAgVGhlIG9yZGluYXJ5CkdlbmVyYWwgUHVibGljIExpY2Vuc2UgdGhlcmVmb3JlIHBlcm1pdHMgc3VjaCBsaW5raW5nIG9ubHkgaWYgdGhlCmVudGlyZSBjb21iaW5hdGlvbiBmaXRzIGl0cyBjcml0ZXJpYSBvZiBmcmVlZG9tLiAgVGhlIExlc3NlciBHZW5lcmFsClB1YmxpYyBMaWNlbnNlIHBlcm1pdHMgbW9yZSBsYXggY3JpdGVyaWEgZm9yIGxpbmtpbmcgb3RoZXIgY29kZSB3aXRoCnRoZSBsaWJyYXJ5LgoKICBXZSBjYWxsIHRoaXMgbGljZW5zZSB0aGUgIkxlc3NlciIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBiZWNhdXNlIGl0CmRvZXMgTGVzcyB0byBwcm90ZWN0IHRoZSB1c2VyJ3MgZnJlZWRvbSB0aGFuIHRoZSBvcmRpbmFyeSBHZW5lcmFsClB1YmxpYyBMaWNlbnNlLiAgSXQgYWxzbyBwcm92aWRlcyBvdGhlciBmcmVlIHNvZnR3YXJlIGRldmVsb3BlcnMgTGVzcwpvZiBhbiBhZHZhbnRhZ2Ugb3ZlciBjb21wZXRpbmcgbm9uLWZyZWUgcHJvZ3JhbXMuICBUaGVzZSBkaXNhZHZhbnRhZ2VzCmFyZSB0aGUgcmVhc29uIHdlIHVzZSB0aGUgb3JkaW5hcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbWFueQpsaWJyYXJpZXMuICBIb3dldmVyLCB0aGUgTGVzc2VyIGxpY2Vuc2UgcHJvdmlkZXMgYWR2YW50YWdlcyBpbiBjZXJ0YWluCnNwZWNpYWwgY2lyY3Vtc3RhbmNlcy4KCiAgRm9yIGV4YW1wbGUsIG9uIHJhcmUgb2NjYXNpb25zLCB0aGVyZSBtYXkgYmUgYSBzcGVjaWFsIG5lZWQgdG8KZW5jb3VyYWdlIHRoZSB3aWRlc3QgcG9zc2libGUgdXNlIG9mIGEgY2VydGFpbiBsaWJyYXJ5LCBzbyB0aGF0IGl0IGJlY29tZXMKYSBkZS1mYWN0byBzdGFuZGFyZC4gIFRvIGFjaGlldmUgdGhpcywgbm9uLWZyZWUgcHJvZ3JhbXMgbXVzdCBiZQphbGxvd2VkIHRvIHVzZSB0aGUgbGlicmFyeS4gIEEgbW9yZSBmcmVxdWVudCBjYXNlIGlzIHRoYXQgYSBmcmVlCmxpYnJhcnkgZG9lcyB0aGUgc2FtZSBqb2IgYXMgd2lkZWx5IHVzZWQgbm9uLWZyZWUgbGlicmFyaWVzLiAgSW4gdGhpcwpjYXNlLCB0aGVyZSBpcyBsaXR0bGUgdG8gZ2FpbiBieSBsaW1pdGluZyB0aGUgZnJlZSBsaWJyYXJ5IHRvIGZyZWUKc29mdHdhcmUgb25seSwgc28gd2UgdXNlIHRoZSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KCiAgSW4gb3RoZXIgY2FzZXMsIHBlcm1pc3Npb24gdG8gdXNlIGEgcGFydGljdWxhciBsaWJyYXJ5IGluIG5vbi1mcmVlCnByb2dyYW1zIGVuYWJsZXMgYSBncmVhdGVyIG51bWJlciBvZiBwZW9wbGUgdG8gdXNlIGEgbGFyZ2UgYm9keSBvZgpmcmVlIHNvZnR3YXJlLiAgRm9yIGV4YW1wbGUsIHBlcm1pc3Npb24gdG8gdXNlIHRoZSBHTlUgQyBMaWJyYXJ5IGluCm5vbi1mcmVlIHByb2dyYW1zIGVuYWJsZXMgbWFueSBtb3JlIHBlb3BsZSB0byB1c2UgdGhlIHdob2xlIEdOVQpvcGVyYXRpbmcgc3lzdGVtLCBhcyB3ZWxsIGFzIGl0cyB2YXJpYW50LCB0aGUgR05VL0xpbnV4IG9wZXJhdGluZwpzeXN0ZW0uCgogIEFsdGhvdWdoIHRoZSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBMZXNzIHByb3RlY3RpdmUgb2YgdGhlCnVzZXJzJyBmcmVlZG9tLCBpdCBkb2VzIGVuc3VyZSB0aGF0IHRoZSB1c2VyIG9mIGEgcHJvZ3JhbSB0aGF0IGlzCmxpbmtlZCB3aXRoIHRoZSBMaWJyYXJ5IGhhcyB0aGUgZnJlZWRvbSBhbmQgdGhlIHdoZXJld2l0aGFsIHRvIHJ1bgp0aGF0IHByb2dyYW0gdXNpbmcgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBMaWJyYXJ5LgoKICBUaGUgcHJlY2lzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW9uIGFuZAptb2RpZmljYXRpb24gZm9sbG93LiAgUGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGEKIndvcmsgYmFzZWQgb24gdGhlIGxpYnJhcnkiIGFuZCBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgbGlicmFyeSIuICBUaGUKZm9ybWVyIGNvbnRhaW5zIGNvZGUgZGVyaXZlZCBmcm9tIHRoZSBsaWJyYXJ5LCB3aGVyZWFzIHRoZSBsYXR0ZXIgbXVzdApiZSBjb21iaW5lZCB3aXRoIHRoZSBsaWJyYXJ5IGluIG9yZGVyIHRvIHJ1bi4KDAogICAgICAgICAgICAgICAgICBHTlUgTEVTU0VSIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKICAgVEVSTVMgQU5EIENPTkRJVElPTlMgRk9SIENPUFlJTkcsIERJU1RSSUJVVElPTiBBTkQgTU9ESUZJQ0FUSU9OCgogIDAuIFRoaXMgTGljZW5zZSBBZ3JlZW1lbnQgYXBwbGllcyB0byBhbnkgc29mdHdhcmUgbGlicmFyeSBvciBvdGhlcgpwcm9ncmFtIHdoaWNoIGNvbnRhaW5zIGEgbm90aWNlIHBsYWNlZCBieSB0aGUgY29weXJpZ2h0IGhvbGRlciBvcgpvdGhlciBhdXRob3JpemVkIHBhcnR5IHNheWluZyBpdCBtYXkgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mCnRoaXMgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKGFsc28gY2FsbGVkICJ0aGlzIExpY2Vuc2UiKS4KRWFjaCBsaWNlbnNlZSBpcyBhZGRyZXNzZWQgYXMgInlvdSIuCgogIEEgImxpYnJhcnkiIG1lYW5zIGEgY29sbGVjdGlvbiBvZiBzb2Z0d2FyZSBmdW5jdGlvbnMgYW5kL29yIGRhdGEKcHJlcGFyZWQgc28gYXMgdG8gYmUgY29udmVuaWVudGx5IGxpbmtlZCB3aXRoIGFwcGxpY2F0aW9uIHByb2dyYW1zCih3aGljaCB1c2Ugc29tZSBvZiB0aG9zZSBmdW5jdGlvbnMgYW5kIGRhdGEpIHRvIGZvcm0gZXhlY3V0YWJsZXMuCgogIFRoZSAiTGlicmFyeSIsIGJlbG93LCByZWZlcnMgdG8gYW55IHN1Y2ggc29mdHdhcmUgbGlicmFyeSBvciB3b3JrCndoaWNoIGhhcyBiZWVuIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZXNlIHRlcm1zLiAgQSAid29yayBiYXNlZCBvbiB0aGUKTGlicmFyeSIgbWVhbnMgZWl0aGVyIHRoZSBMaWJyYXJ5IG9yIGFueSBkZXJpdmF0aXZlIHdvcmsgdW5kZXIKY29weXJpZ2h0IGxhdzogdGhhdCBpcyB0byBzYXksIGEgd29yayBjb250YWluaW5nIHRoZSBMaWJyYXJ5IG9yIGEKcG9ydGlvbiBvZiBpdCwgZWl0aGVyIHZlcmJhdGltIG9yIHdpdGggbW9kaWZpY2F0aW9ucyBhbmQvb3IgdHJhbnNsYXRlZApzdHJhaWdodGZvcndhcmRseSBpbnRvIGFub3RoZXIgbGFuZ3VhZ2UuICAoSGVyZWluYWZ0ZXIsIHRyYW5zbGF0aW9uIGlzCmluY2x1ZGVkIHdpdGhvdXQgbGltaXRhdGlvbiBpbiB0aGUgdGVybSAibW9kaWZpY2F0aW9uIi4pCgogICJTb3VyY2UgY29kZSIgZm9yIGEgd29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsgZm9yCm1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgRm9yIGEgbGlicmFyeSwgY29tcGxldGUgc291cmNlIGNvZGUgbWVhbnMKYWxsIHRoZSBzb3VyY2UgY29kZSBmb3IgYWxsIG1vZHVsZXMgaXQgY29udGFpbnMsIHBsdXMgYW55IGFzc29jaWF0ZWQKaW50ZXJmYWNlIGRlZmluaXRpb24gZmlsZXMsIHBsdXMgdGhlIHNjcmlwdHMgdXNlZCB0byBjb250cm9sIGNvbXBpbGF0aW9uCmFuZCBpbnN0YWxsYXRpb24gb2YgdGhlIGxpYnJhcnkuCgogIEFjdGl2aXRpZXMgb3RoZXIgdGhhbiBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kIG1vZGlmaWNhdGlvbiBhcmUgbm90CmNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlOyB0aGV5IGFyZSBvdXRzaWRlIGl0cyBzY29wZS4gIFRoZSBhY3Qgb2YKcnVubmluZyBhIHByb2dyYW0gdXNpbmcgdGhlIExpYnJhcnkgaXMgbm90IHJlc3RyaWN0ZWQsIGFuZCBvdXRwdXQgZnJvbQpzdWNoIGEgcHJvZ3JhbSBpcyBjb3ZlcmVkIG9ubHkgaWYgaXRzIGNvbnRlbnRzIGNvbnN0aXR1dGUgYSB3b3JrIGJhc2VkCm9uIHRoZSBMaWJyYXJ5IChpbmRlcGVuZGVudCBvZiB0aGUgdXNlIG9mIHRoZSBMaWJyYXJ5IGluIGEgdG9vbCBmb3IKd3JpdGluZyBpdCkuICBXaGV0aGVyIHRoYXQgaXMgdHJ1ZSBkZXBlbmRzIG9uIHdoYXQgdGhlIExpYnJhcnkgZG9lcwphbmQgd2hhdCB0aGUgcHJvZ3JhbSB0aGF0IHVzZXMgdGhlIExpYnJhcnkgZG9lcy4KCiAgMS4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcyBvZiB0aGUgTGlicmFyeSdzCmNvbXBsZXRlIHNvdXJjZSBjb2RlIGFzIHlvdSByZWNlaXZlIGl0LCBpbiBhbnkgbWVkaXVtLCBwcm92aWRlZCB0aGF0CnlvdSBjb25zcGljdW91c2x5IGFuZCBhcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuCmFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2UgYW5kIGRpc2NsYWltZXIgb2Ygd2FycmFudHk7IGtlZXAgaW50YWN0CmFsbCB0aGUgbm90aWNlcyB0aGF0IHJlZmVyIHRvIHRoaXMgTGljZW5zZSBhbmQgdG8gdGhlIGFic2VuY2Ugb2YgYW55CndhcnJhbnR5OyBhbmQgZGlzdHJpYnV0ZSBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlIGFsb25nIHdpdGggdGhlCkxpYnJhcnkuCgogIFlvdSBtYXkgY2hhcmdlIGEgZmVlIGZvciB0aGUgcGh5c2ljYWwgYWN0IG9mIHRyYW5zZmVycmluZyBhIGNvcHksCmFuZCB5b3UgbWF5IGF0IHlvdXIgb3B0aW9uIG9mZmVyIHdhcnJhbnR5IHByb3RlY3Rpb24gaW4gZXhjaGFuZ2UgZm9yIGEKZmVlLgoMCiAgMi4gWW91IG1heSBtb2RpZnkgeW91ciBjb3B5IG9yIGNvcGllcyBvZiB0aGUgTGlicmFyeSBvciBhbnkgcG9ydGlvbgpvZiBpdCwgdGh1cyBmb3JtaW5nIGEgd29yayBiYXNlZCBvbiB0aGUgTGlicmFyeSwgYW5kIGNvcHkgYW5kCmRpc3RyaWJ1dGUgc3VjaCBtb2RpZmljYXRpb25zIG9yIHdvcmsgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb24gMQphYm92ZSwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBtZWV0IGFsbCBvZiB0aGVzZSBjb25kaXRpb25zOgoKICAgIGEpIFRoZSBtb2RpZmllZCB3b3JrIG11c3QgaXRzZWxmIGJlIGEgc29mdHdhcmUgbGlicmFyeS4KCiAgICBiKSBZb3UgbXVzdCBjYXVzZSB0aGUgZmlsZXMgbW9kaWZpZWQgdG8gY2FycnkgcHJvbWluZW50IG5vdGljZXMKICAgIHN0YXRpbmcgdGhhdCB5b3UgY2hhbmdlZCB0aGUgZmlsZXMgYW5kIHRoZSBkYXRlIG9mIGFueSBjaGFuZ2UuCgogICAgYykgWW91IG11c3QgY2F1c2UgdGhlIHdob2xlIG9mIHRoZSB3b3JrIHRvIGJlIGxpY2Vuc2VkIGF0IG5vCiAgICBjaGFyZ2UgdG8gYWxsIHRoaXJkIHBhcnRpZXMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZS4KCiAgICBkKSBJZiBhIGZhY2lsaXR5IGluIHRoZSBtb2RpZmllZCBMaWJyYXJ5IHJlZmVycyB0byBhIGZ1bmN0aW9uIG9yIGEKICAgIHRhYmxlIG9mIGRhdGEgdG8gYmUgc3VwcGxpZWQgYnkgYW4gYXBwbGljYXRpb24gcHJvZ3JhbSB0aGF0IHVzZXMKICAgIHRoZSBmYWNpbGl0eSwgb3RoZXIgdGhhbiBhcyBhbiBhcmd1bWVudCBwYXNzZWQgd2hlbiB0aGUgZmFjaWxpdHkKICAgIGlzIGludm9rZWQsIHRoZW4geW91IG11c3QgbWFrZSBhIGdvb2QgZmFpdGggZWZmb3J0IHRvIGVuc3VyZSB0aGF0LAogICAgaW4gdGhlIGV2ZW50IGFuIGFwcGxpY2F0aW9uIGRvZXMgbm90IHN1cHBseSBzdWNoIGZ1bmN0aW9uIG9yCiAgICB0YWJsZSwgdGhlIGZhY2lsaXR5IHN0aWxsIG9wZXJhdGVzLCBhbmQgcGVyZm9ybXMgd2hhdGV2ZXIgcGFydCBvZgogICAgaXRzIHB1cnBvc2UgcmVtYWlucyBtZWFuaW5nZnVsLgoKICAgIChGb3IgZXhhbXBsZSwgYSBmdW5jdGlvbiBpbiBhIGxpYnJhcnkgdG8gY29tcHV0ZSBzcXVhcmUgcm9vdHMgaGFzCiAgICBhIHB1cnBvc2UgdGhhdCBpcyBlbnRpcmVseSB3ZWxsLWRlZmluZWQgaW5kZXBlbmRlbnQgb2YgdGhlCiAgICBhcHBsaWNhdGlvbi4gIFRoZXJlZm9yZSwgU3Vic2VjdGlvbiAyZCByZXF1aXJlcyB0aGF0IGFueQogICAgYXBwbGljYXRpb24tc3VwcGxpZWQgZnVuY3Rpb24gb3IgdGFibGUgdXNlZCBieSB0aGlzIGZ1bmN0aW9uIG11c3QKICAgIGJlIG9wdGlvbmFsOiBpZiB0aGUgYXBwbGljYXRpb24gZG9lcyBub3Qgc3VwcGx5IGl0LCB0aGUgc3F1YXJlCiAgICByb290IGZ1bmN0aW9uIG11c3Qgc3RpbGwgY29tcHV0ZSBzcXVhcmUgcm9vdHMuKQoKVGhlc2UgcmVxdWlyZW1lbnRzIGFwcGx5IHRvIHRoZSBtb2RpZmllZCB3b3JrIGFzIGEgd2hvbGUuICBJZgppZGVudGlmaWFibGUgc2VjdGlvbnMgb2YgdGhhdCB3b3JrIGFyZSBub3QgZGVyaXZlZCBmcm9tIHRoZSBMaWJyYXJ5LAphbmQgY2FuIGJlIHJlYXNvbmFibHkgY29uc2lkZXJlZCBpbmRlcGVuZGVudCBhbmQgc2VwYXJhdGUgd29ya3MgaW4KdGhlbXNlbHZlcywgdGhlbiB0aGlzIExpY2Vuc2UsIGFuZCBpdHMgdGVybXMsIGRvIG5vdCBhcHBseSB0byB0aG9zZQpzZWN0aW9ucyB3aGVuIHlvdSBkaXN0cmlidXRlIHRoZW0gYXMgc2VwYXJhdGUgd29ya3MuICBCdXQgd2hlbiB5b3UKZGlzdHJpYnV0ZSB0aGUgc2FtZSBzZWN0aW9ucyBhcyBwYXJ0IG9mIGEgd2hvbGUgd2hpY2ggaXMgYSB3b3JrIGJhc2VkCm9uIHRoZSBMaWJyYXJ5LCB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSB3aG9sZSBtdXN0IGJlIG9uIHRoZSB0ZXJtcyBvZgp0aGlzIExpY2Vuc2UsIHdob3NlIHBlcm1pc3Npb25zIGZvciBvdGhlciBsaWNlbnNlZXMgZXh0ZW5kIHRvIHRoZQplbnRpcmUgd2hvbGUsIGFuZCB0aHVzIHRvIGVhY2ggYW5kIGV2ZXJ5IHBhcnQgcmVnYXJkbGVzcyBvZiB3aG8gd3JvdGUKaXQuCgpUaHVzLCBpdCBpcyBub3QgdGhlIGludGVudCBvZiB0aGlzIHNlY3Rpb24gdG8gY2xhaW0gcmlnaHRzIG9yIGNvbnRlc3QKeW91ciByaWdodHMgdG8gd29yayB3cml0dGVuIGVudGlyZWx5IGJ5IHlvdTsgcmF0aGVyLCB0aGUgaW50ZW50IGlzIHRvCmV4ZXJjaXNlIHRoZSByaWdodCB0byBjb250cm9sIHRoZSBkaXN0cmlidXRpb24gb2YgZGVyaXZhdGl2ZSBvcgpjb2xsZWN0aXZlIHdvcmtzIGJhc2VkIG9uIHRoZSBMaWJyYXJ5LgoKSW4gYWRkaXRpb24sIG1lcmUgYWdncmVnYXRpb24gb2YgYW5vdGhlciB3b3JrIG5vdCBiYXNlZCBvbiB0aGUgTGlicmFyeQp3aXRoIHRoZSBMaWJyYXJ5IChvciB3aXRoIGEgd29yayBiYXNlZCBvbiB0aGUgTGlicmFyeSkgb24gYSB2b2x1bWUgb2YKYSBzdG9yYWdlIG9yIGRpc3RyaWJ1dGlvbiBtZWRpdW0gZG9lcyBub3QgYnJpbmcgdGhlIG90aGVyIHdvcmsgdW5kZXIKdGhlIHNjb3BlIG9mIHRoaXMgTGljZW5zZS4KCiAgMy4gWW91IG1heSBvcHQgdG8gYXBwbHkgdGhlIHRlcm1zIG9mIHRoZSBvcmRpbmFyeSBHTlUgR2VuZXJhbCBQdWJsaWMKTGljZW5zZSBpbnN0ZWFkIG9mIHRoaXMgTGljZW5zZSB0byBhIGdpdmVuIGNvcHkgb2YgdGhlIExpYnJhcnkuICBUbyBkbwp0aGlzLCB5b3UgbXVzdCBhbHRlciBhbGwgdGhlIG5vdGljZXMgdGhhdCByZWZlciB0byB0aGlzIExpY2Vuc2UsIHNvCnRoYXQgdGhleSByZWZlciB0byB0aGUgb3JkaW5hcnkgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMiwKaW5zdGVhZCBvZiB0byB0aGlzIExpY2Vuc2UuICAoSWYgYSBuZXdlciB2ZXJzaW9uIHRoYW4gdmVyc2lvbiAyIG9mIHRoZQpvcmRpbmFyeSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBoYXMgYXBwZWFyZWQsIHRoZW4geW91IGNhbiBzcGVjaWZ5CnRoYXQgdmVyc2lvbiBpbnN0ZWFkIGlmIHlvdSB3aXNoLikgIERvIG5vdCBtYWtlIGFueSBvdGhlciBjaGFuZ2UgaW4KdGhlc2Ugbm90aWNlcy4KDAogIE9uY2UgdGhpcyBjaGFuZ2UgaXMgbWFkZSBpbiBhIGdpdmVuIGNvcHksIGl0IGlzIGlycmV2ZXJzaWJsZSBmb3IKdGhhdCBjb3B5LCBzbyB0aGUgb3JkaW5hcnkgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXBwbGllcyB0byBhbGwKc3Vic2VxdWVudCBjb3BpZXMgYW5kIGRlcml2YXRpdmUgd29ya3MgbWFkZSBmcm9tIHRoYXQgY29weS4KCiAgVGhpcyBvcHRpb24gaXMgdXNlZnVsIHdoZW4geW91IHdpc2ggdG8gY29weSBwYXJ0IG9mIHRoZSBjb2RlIG9mCnRoZSBMaWJyYXJ5IGludG8gYSBwcm9ncmFtIHRoYXQgaXMgbm90IGEgbGlicmFyeS4KCiAgNC4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IChvciBhIHBvcnRpb24gb3IKZGVyaXZhdGl2ZSBvZiBpdCwgdW5kZXIgU2VjdGlvbiAyKSBpbiBvYmplY3QgY29kZSBvciBleGVjdXRhYmxlIGZvcm0KdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zIDEgYW5kIDIgYWJvdmUgcHJvdmlkZWQgdGhhdCB5b3UgYWNjb21wYW55Cml0IHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcgbWFjaGluZS1yZWFkYWJsZSBzb3VyY2UgY29kZSwgd2hpY2gKbXVzdCBiZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBvbiBhCm1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZS4KCiAgSWYgZGlzdHJpYnV0aW9uIG9mIG9iamVjdCBjb2RlIGlzIG1hZGUgYnkgb2ZmZXJpbmcgYWNjZXNzIHRvIGNvcHkKZnJvbSBhIGRlc2lnbmF0ZWQgcGxhY2UsIHRoZW4gb2ZmZXJpbmcgZXF1aXZhbGVudCBhY2Nlc3MgdG8gY29weSB0aGUKc291cmNlIGNvZGUgZnJvbSB0aGUgc2FtZSBwbGFjZSBzYXRpc2ZpZXMgdGhlIHJlcXVpcmVtZW50IHRvCmRpc3RyaWJ1dGUgdGhlIHNvdXJjZSBjb2RlLCBldmVuIHRob3VnaCB0aGlyZCBwYXJ0aWVzIGFyZSBub3QKY29tcGVsbGVkIHRvIGNvcHkgdGhlIHNvdXJjZSBhbG9uZyB3aXRoIHRoZSBvYmplY3QgY29kZS4KCiAgNS4gQSBwcm9ncmFtIHRoYXQgY29udGFpbnMgbm8gZGVyaXZhdGl2ZSBvZiBhbnkgcG9ydGlvbiBvZiB0aGUKTGlicmFyeSwgYnV0IGlzIGRlc2lnbmVkIHRvIHdvcmsgd2l0aCB0aGUgTGlicmFyeSBieSBiZWluZyBjb21waWxlZCBvcgpsaW5rZWQgd2l0aCBpdCwgaXMgY2FsbGVkIGEgIndvcmsgdGhhdCB1c2VzIHRoZSBMaWJyYXJ5Ii4gIFN1Y2ggYQp3b3JrLCBpbiBpc29sYXRpb24sIGlzIG5vdCBhIGRlcml2YXRpdmUgd29yayBvZiB0aGUgTGlicmFyeSwgYW5kCnRoZXJlZm9yZSBmYWxscyBvdXRzaWRlIHRoZSBzY29wZSBvZiB0aGlzIExpY2Vuc2UuCgogIEhvd2V2ZXIsIGxpbmtpbmcgYSAid29yayB0aGF0IHVzZXMgdGhlIExpYnJhcnkiIHdpdGggdGhlIExpYnJhcnkKY3JlYXRlcyBhbiBleGVjdXRhYmxlIHRoYXQgaXMgYSBkZXJpdmF0aXZlIG9mIHRoZSBMaWJyYXJ5IChiZWNhdXNlIGl0CmNvbnRhaW5zIHBvcnRpb25zIG9mIHRoZSBMaWJyYXJ5KSwgcmF0aGVyIHRoYW4gYSAid29yayB0aGF0IHVzZXMgdGhlCmxpYnJhcnkiLiAgVGhlIGV4ZWN1dGFibGUgaXMgdGhlcmVmb3JlIGNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlLgpTZWN0aW9uIDYgc3RhdGVzIHRlcm1zIGZvciBkaXN0cmlidXRpb24gb2Ygc3VjaCBleGVjdXRhYmxlcy4KCiAgV2hlbiBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgTGlicmFyeSIgdXNlcyBtYXRlcmlhbCBmcm9tIGEgaGVhZGVyIGZpbGUKdGhhdCBpcyBwYXJ0IG9mIHRoZSBMaWJyYXJ5LCB0aGUgb2JqZWN0IGNvZGUgZm9yIHRoZSB3b3JrIG1heSBiZSBhCmRlcml2YXRpdmUgd29yayBvZiB0aGUgTGlicmFyeSBldmVuIHRob3VnaCB0aGUgc291cmNlIGNvZGUgaXMgbm90LgpXaGV0aGVyIHRoaXMgaXMgdHJ1ZSBpcyBlc3BlY2lhbGx5IHNpZ25pZmljYW50IGlmIHRoZSB3b3JrIGNhbiBiZQpsaW5rZWQgd2l0aG91dCB0aGUgTGlicmFyeSwgb3IgaWYgdGhlIHdvcmsgaXMgaXRzZWxmIGEgbGlicmFyeS4gIFRoZQp0aHJlc2hvbGQgZm9yIHRoaXMgdG8gYmUgdHJ1ZSBpcyBub3QgcHJlY2lzZWx5IGRlZmluZWQgYnkgbGF3LgoKICBJZiBzdWNoIGFuIG9iamVjdCBmaWxlIHVzZXMgb25seSBudW1lcmljYWwgcGFyYW1ldGVycywgZGF0YQpzdHJ1Y3R1cmUgbGF5b3V0cyBhbmQgYWNjZXNzb3JzLCBhbmQgc21hbGwgbWFjcm9zIGFuZCBzbWFsbCBpbmxpbmUKZnVuY3Rpb25zICh0ZW4gbGluZXMgb3IgbGVzcyBpbiBsZW5ndGgpLCB0aGVuIHRoZSB1c2Ugb2YgdGhlIG9iamVjdApmaWxlIGlzIHVucmVzdHJpY3RlZCwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGlzIGxlZ2FsbHkgYSBkZXJpdmF0aXZlCndvcmsuICAoRXhlY3V0YWJsZXMgY29udGFpbmluZyB0aGlzIG9iamVjdCBjb2RlIHBsdXMgcG9ydGlvbnMgb2YgdGhlCkxpYnJhcnkgd2lsbCBzdGlsbCBmYWxsIHVuZGVyIFNlY3Rpb24gNi4pCgogIE90aGVyd2lzZSwgaWYgdGhlIHdvcmsgaXMgYSBkZXJpdmF0aXZlIG9mIHRoZSBMaWJyYXJ5LCB5b3UgbWF5CmRpc3RyaWJ1dGUgdGhlIG9iamVjdCBjb2RlIGZvciB0aGUgd29yayB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbiA2LgpBbnkgZXhlY3V0YWJsZXMgY29udGFpbmluZyB0aGF0IHdvcmsgYWxzbyBmYWxsIHVuZGVyIFNlY3Rpb24gNiwKd2hldGhlciBvciBub3QgdGhleSBhcmUgbGlua2VkIGRpcmVjdGx5IHdpdGggdGhlIExpYnJhcnkgaXRzZWxmLgoMCiAgNi4gQXMgYW4gZXhjZXB0aW9uIHRvIHRoZSBTZWN0aW9ucyBhYm92ZSwgeW91IG1heSBhbHNvIGNvbWJpbmUgb3IKbGluayBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgTGlicmFyeSIgd2l0aCB0aGUgTGlicmFyeSB0byBwcm9kdWNlIGEKd29yayBjb250YWluaW5nIHBvcnRpb25zIG9mIHRoZSBMaWJyYXJ5LCBhbmQgZGlzdHJpYnV0ZSB0aGF0IHdvcmsKdW5kZXIgdGVybXMgb2YgeW91ciBjaG9pY2UsIHByb3ZpZGVkIHRoYXQgdGhlIHRlcm1zIHBlcm1pdAptb2RpZmljYXRpb24gb2YgdGhlIHdvcmsgZm9yIHRoZSBjdXN0b21lcidzIG93biB1c2UgYW5kIHJldmVyc2UKZW5naW5lZXJpbmcgZm9yIGRlYnVnZ2luZyBzdWNoIG1vZGlmaWNhdGlvbnMuCgogIFlvdSBtdXN0IGdpdmUgcHJvbWluZW50IG5vdGljZSB3aXRoIGVhY2ggY29weSBvZiB0aGUgd29yayB0aGF0IHRoZQpMaWJyYXJ5IGlzIHVzZWQgaW4gaXQgYW5kIHRoYXQgdGhlIExpYnJhcnkgYW5kIGl0cyB1c2UgYXJlIGNvdmVyZWQgYnkKdGhpcyBMaWNlbnNlLiAgWW91IG11c3Qgc3VwcGx5IGEgY29weSBvZiB0aGlzIExpY2Vuc2UuICBJZiB0aGUgd29yawpkdXJpbmcgZXhlY3V0aW9uIGRpc3BsYXlzIGNvcHlyaWdodCBub3RpY2VzLCB5b3UgbXVzdCBpbmNsdWRlIHRoZQpjb3B5cmlnaHQgbm90aWNlIGZvciB0aGUgTGlicmFyeSBhbW9uZyB0aGVtLCBhcyB3ZWxsIGFzIGEgcmVmZXJlbmNlCmRpcmVjdGluZyB0aGUgdXNlciB0byB0aGUgY29weSBvZiB0aGlzIExpY2Vuc2UuICBBbHNvLCB5b3UgbXVzdCBkbyBvbmUKb2YgdGhlc2UgdGhpbmdzOgoKICAgIGEpIEFjY29tcGFueSB0aGUgd29yayB3aXRoIHRoZSBjb21wbGV0ZSBjb3JyZXNwb25kaW5nCiAgICBtYWNoaW5lLXJlYWRhYmxlIHNvdXJjZSBjb2RlIGZvciB0aGUgTGlicmFyeSBpbmNsdWRpbmcgd2hhdGV2ZXIKICAgIGNoYW5nZXMgd2VyZSB1c2VkIGluIHRoZSB3b3JrICh3aGljaCBtdXN0IGJlIGRpc3RyaWJ1dGVkIHVuZGVyCiAgICBTZWN0aW9ucyAxIGFuZCAyIGFib3ZlKTsgYW5kLCBpZiB0aGUgd29yayBpcyBhbiBleGVjdXRhYmxlIGxpbmtlZAogICAgd2l0aCB0aGUgTGlicmFyeSwgd2l0aCB0aGUgY29tcGxldGUgbWFjaGluZS1yZWFkYWJsZSAid29yayB0aGF0CiAgICB1c2VzIHRoZSBMaWJyYXJ5IiwgYXMgb2JqZWN0IGNvZGUgYW5kL29yIHNvdXJjZSBjb2RlLCBzbyB0aGF0IHRoZQogICAgdXNlciBjYW4gbW9kaWZ5IHRoZSBMaWJyYXJ5IGFuZCB0aGVuIHJlbGluayB0byBwcm9kdWNlIGEgbW9kaWZpZWQKICAgIGV4ZWN1dGFibGUgY29udGFpbmluZyB0aGUgbW9kaWZpZWQgTGlicmFyeS4gIChJdCBpcyB1bmRlcnN0b29kCiAgICB0aGF0IHRoZSB1c2VyIHdobyBjaGFuZ2VzIHRoZSBjb250ZW50cyBvZiBkZWZpbml0aW9ucyBmaWxlcyBpbiB0aGUKICAgIExpYnJhcnkgd2lsbCBub3QgbmVjZXNzYXJpbHkgYmUgYWJsZSB0byByZWNvbXBpbGUgdGhlIGFwcGxpY2F0aW9uCiAgICB0byB1c2UgdGhlIG1vZGlmaWVkIGRlZmluaXRpb25zLikKCiAgICBiKSBVc2UgYSBzdWl0YWJsZSBzaGFyZWQgbGlicmFyeSBtZWNoYW5pc20gZm9yIGxpbmtpbmcgd2l0aCB0aGUKICAgIExpYnJhcnkuICBBIHN1aXRhYmxlIG1lY2hhbmlzbSBpcyBvbmUgdGhhdCAoMSkgdXNlcyBhdCBydW4gdGltZSBhCiAgICBjb3B5IG9mIHRoZSBsaWJyYXJ5IGFscmVhZHkgcHJlc2VudCBvbiB0aGUgdXNlcidzIGNvbXB1dGVyIHN5c3RlbSwKICAgIHJhdGhlciB0aGFuIGNvcHlpbmcgbGlicmFyeSBmdW5jdGlvbnMgaW50byB0aGUgZXhlY3V0YWJsZSwgYW5kICgyKQogICAgd2lsbCBvcGVyYXRlIHByb3Blcmx5IHdpdGggYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCBpZgogICAgdGhlIHVzZXIgaW5zdGFsbHMgb25lLCBhcyBsb25nIGFzIHRoZSBtb2RpZmllZCB2ZXJzaW9uIGlzCiAgICBpbnRlcmZhY2UtY29tcGF0aWJsZSB3aXRoIHRoZSB2ZXJzaW9uIHRoYXQgdGhlIHdvcmsgd2FzIG1hZGUgd2l0aC4KCiAgICBjKSBBY2NvbXBhbnkgdGhlIHdvcmsgd2l0aCBhIHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZvciBhdAogICAgbGVhc3QgdGhyZWUgeWVhcnMsIHRvIGdpdmUgdGhlIHNhbWUgdXNlciB0aGUgbWF0ZXJpYWxzCiAgICBzcGVjaWZpZWQgaW4gU3Vic2VjdGlvbiA2YSwgYWJvdmUsIGZvciBhIGNoYXJnZSBubyBtb3JlCiAgICB0aGFuIHRoZSBjb3N0IG9mIHBlcmZvcm1pbmcgdGhpcyBkaXN0cmlidXRpb24uCgogICAgZCkgSWYgZGlzdHJpYnV0aW9uIG9mIHRoZSB3b3JrIGlzIG1hZGUgYnkgb2ZmZXJpbmcgYWNjZXNzIHRvIGNvcHkKICAgIGZyb20gYSBkZXNpZ25hdGVkIHBsYWNlLCBvZmZlciBlcXVpdmFsZW50IGFjY2VzcyB0byBjb3B5IHRoZSBhYm92ZQogICAgc3BlY2lmaWVkIG1hdGVyaWFscyBmcm9tIHRoZSBzYW1lIHBsYWNlLgoKICAgIGUpIFZlcmlmeSB0aGF0IHRoZSB1c2VyIGhhcyBhbHJlYWR5IHJlY2VpdmVkIGEgY29weSBvZiB0aGVzZQogICAgbWF0ZXJpYWxzIG9yIHRoYXQgeW91IGhhdmUgYWxyZWFkeSBzZW50IHRoaXMgdXNlciBhIGNvcHkuCgogIEZvciBhbiBleGVjdXRhYmxlLCB0aGUgcmVxdWlyZWQgZm9ybSBvZiB0aGUgIndvcmsgdGhhdCB1c2VzIHRoZQpMaWJyYXJ5IiBtdXN0IGluY2x1ZGUgYW55IGRhdGEgYW5kIHV0aWxpdHkgcHJvZ3JhbXMgbmVlZGVkIGZvcgpyZXByb2R1Y2luZyB0aGUgZXhlY3V0YWJsZSBmcm9tIGl0LiAgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwKdGhlIG1hdGVyaWFscyB0byBiZSBkaXN0cmlidXRlZCBuZWVkIG5vdCBpbmNsdWRlIGFueXRoaW5nIHRoYXQgaXMKbm9ybWFsbHkgZGlzdHJpYnV0ZWQgKGluIGVpdGhlciBzb3VyY2Ugb3IgYmluYXJ5IGZvcm0pIHdpdGggdGhlIG1ham9yCmNvbXBvbmVudHMgKGNvbXBpbGVyLCBrZXJuZWwsIGFuZCBzbyBvbikgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0gb24Kd2hpY2ggdGhlIGV4ZWN1dGFibGUgcnVucywgdW5sZXNzIHRoYXQgY29tcG9uZW50IGl0c2VsZiBhY2NvbXBhbmllcwp0aGUgZXhlY3V0YWJsZS4KCiAgSXQgbWF5IGhhcHBlbiB0aGF0IHRoaXMgcmVxdWlyZW1lbnQgY29udHJhZGljdHMgdGhlIGxpY2Vuc2UKcmVzdHJpY3Rpb25zIG9mIG90aGVyIHByb3ByaWV0YXJ5IGxpYnJhcmllcyB0aGF0IGRvIG5vdCBub3JtYWxseQphY2NvbXBhbnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0uICBTdWNoIGEgY29udHJhZGljdGlvbiBtZWFucyB5b3UgY2Fubm90CnVzZSBib3RoIHRoZW0gYW5kIHRoZSBMaWJyYXJ5IHRvZ2V0aGVyIGluIGFuIGV4ZWN1dGFibGUgdGhhdCB5b3UKZGlzdHJpYnV0ZS4KDAogIDcuIFlvdSBtYXkgcGxhY2UgbGlicmFyeSBmYWNpbGl0aWVzIHRoYXQgYXJlIGEgd29yayBiYXNlZCBvbiB0aGUKTGlicmFyeSBzaWRlLWJ5LXNpZGUgaW4gYSBzaW5nbGUgbGlicmFyeSB0b2dldGhlciB3aXRoIG90aGVyIGxpYnJhcnkKZmFjaWxpdGllcyBub3QgY292ZXJlZCBieSB0aGlzIExpY2Vuc2UsIGFuZCBkaXN0cmlidXRlIHN1Y2ggYSBjb21iaW5lZApsaWJyYXJ5LCBwcm92aWRlZCB0aGF0IHRoZSBzZXBhcmF0ZSBkaXN0cmlidXRpb24gb2YgdGhlIHdvcmsgYmFzZWQgb24KdGhlIExpYnJhcnkgYW5kIG9mIHRoZSBvdGhlciBsaWJyYXJ5IGZhY2lsaXRpZXMgaXMgb3RoZXJ3aXNlCnBlcm1pdHRlZCwgYW5kIHByb3ZpZGVkIHRoYXQgeW91IGRvIHRoZXNlIHR3byB0aGluZ3M6CgogICAgYSkgQWNjb21wYW55IHRoZSBjb21iaW5lZCBsaWJyYXJ5IHdpdGggYSBjb3B5IG9mIHRoZSBzYW1lIHdvcmsKICAgIGJhc2VkIG9uIHRoZSBMaWJyYXJ5LCB1bmNvbWJpbmVkIHdpdGggYW55IG90aGVyIGxpYnJhcnkKICAgIGZhY2lsaXRpZXMuICBUaGlzIG11c3QgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQogICAgU2VjdGlvbnMgYWJvdmUuCgogICAgYikgR2l2ZSBwcm9taW5lbnQgbm90aWNlIHdpdGggdGhlIGNvbWJpbmVkIGxpYnJhcnkgb2YgdGhlIGZhY3QKICAgIHRoYXQgcGFydCBvZiBpdCBpcyBhIHdvcmsgYmFzZWQgb24gdGhlIExpYnJhcnksIGFuZCBleHBsYWluaW5nCiAgICB3aGVyZSB0byBmaW5kIHRoZSBhY2NvbXBhbnlpbmcgdW5jb21iaW5lZCBmb3JtIG9mIHRoZSBzYW1lIHdvcmsuCgogIDguIFlvdSBtYXkgbm90IGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSwgbGluayB3aXRoLCBvciBkaXN0cmlidXRlCnRoZSBMaWJyYXJ5IGV4Y2VwdCBhcyBleHByZXNzbHkgcHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQW55CmF0dGVtcHQgb3RoZXJ3aXNlIHRvIGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSwgbGluayB3aXRoLCBvcgpkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IGlzIHZvaWQsIGFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgdGVybWluYXRlIHlvdXIKcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZS4gIEhvd2V2ZXIsIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzLApvciByaWdodHMsIGZyb20geW91IHVuZGVyIHRoaXMgTGljZW5zZSB3aWxsIG5vdCBoYXZlIHRoZWlyIGxpY2Vuc2VzCnRlcm1pbmF0ZWQgc28gbG9uZyBhcyBzdWNoIHBhcnRpZXMgcmVtYWluIGluIGZ1bGwgY29tcGxpYW5jZS4KCiAgOS4gWW91IGFyZSBub3QgcmVxdWlyZWQgdG8gYWNjZXB0IHRoaXMgTGljZW5zZSwgc2luY2UgeW91IGhhdmUgbm90CnNpZ25lZCBpdC4gIEhvd2V2ZXIsIG5vdGhpbmcgZWxzZSBncmFudHMgeW91IHBlcm1pc3Npb24gdG8gbW9kaWZ5IG9yCmRpc3RyaWJ1dGUgdGhlIExpYnJhcnkgb3IgaXRzIGRlcml2YXRpdmUgd29ya3MuICBUaGVzZSBhY3Rpb25zIGFyZQpwcm9oaWJpdGVkIGJ5IGxhdyBpZiB5b3UgZG8gbm90IGFjY2VwdCB0aGlzIExpY2Vuc2UuICBUaGVyZWZvcmUsIGJ5Cm1vZGlmeWluZyBvciBkaXN0cmlidXRpbmcgdGhlIExpYnJhcnkgKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQpMaWJyYXJ5KSwgeW91IGluZGljYXRlIHlvdXIgYWNjZXB0YW5jZSBvZiB0aGlzIExpY2Vuc2UgdG8gZG8gc28sIGFuZAphbGwgaXRzIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpbmcgb3IgbW9kaWZ5aW5nCnRoZSBMaWJyYXJ5IG9yIHdvcmtzIGJhc2VkIG9uIGl0LgoKICAxMC4gRWFjaCB0aW1lIHlvdSByZWRpc3RyaWJ1dGUgdGhlIExpYnJhcnkgKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQpMaWJyYXJ5KSwgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5IHJlY2VpdmVzIGEgbGljZW5zZSBmcm9tIHRoZQpvcmlnaW5hbCBsaWNlbnNvciB0byBjb3B5LCBkaXN0cmlidXRlLCBsaW5rIHdpdGggb3IgbW9kaWZ5IHRoZSBMaWJyYXJ5CnN1YmplY3QgdG8gdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMuICBZb3UgbWF5IG5vdCBpbXBvc2UgYW55IGZ1cnRoZXIKcmVzdHJpY3Rpb25zIG9uIHRoZSByZWNpcGllbnRzJyBleGVyY2lzZSBvZiB0aGUgcmlnaHRzIGdyYW50ZWQgaGVyZWluLgpZb3UgYXJlIG5vdCByZXNwb25zaWJsZSBmb3IgZW5mb3JjaW5nIGNvbXBsaWFuY2UgYnkgdGhpcmQgcGFydGllcyB3aXRoCnRoaXMgTGljZW5zZS4KDAogIDExLiBJZiwgYXMgYSBjb25zZXF1ZW5jZSBvZiBhIGNvdXJ0IGp1ZGdtZW50IG9yIGFsbGVnYXRpb24gb2YgcGF0ZW50CmluZnJpbmdlbWVudCBvciBmb3IgYW55IG90aGVyIHJlYXNvbiAobm90IGxpbWl0ZWQgdG8gcGF0ZW50IGlzc3VlcyksCmNvbmRpdGlvbnMgYXJlIGltcG9zZWQgb24geW91ICh3aGV0aGVyIGJ5IGNvdXJ0IG9yZGVyLCBhZ3JlZW1lbnQgb3IKb3RoZXJ3aXNlKSB0aGF0IGNvbnRyYWRpY3QgdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLCB0aGV5IGRvIG5vdApleGN1c2UgeW91IGZyb20gdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLiAgSWYgeW91IGNhbm5vdApkaXN0cmlidXRlIHNvIGFzIHRvIHNhdGlzZnkgc2ltdWx0YW5lb3VzbHkgeW91ciBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzCkxpY2Vuc2UgYW5kIGFueSBvdGhlciBwZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5jZSB5b3UKbWF5IG5vdCBkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiBhIHBhdGVudApsaWNlbnNlIHdvdWxkIG5vdCBwZXJtaXQgcm95YWx0eS1mcmVlIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBMaWJyYXJ5IGJ5CmFsbCB0aG9zZSB3aG8gcmVjZWl2ZSBjb3BpZXMgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHlvdSwgdGhlbgp0aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCBpdCBhbmQgdGhpcyBMaWNlbnNlIHdvdWxkIGJlIHRvCnJlZnJhaW4gZW50aXJlbHkgZnJvbSBkaXN0cmlidXRpb24gb2YgdGhlIExpYnJhcnkuCgpJZiBhbnkgcG9ydGlvbiBvZiB0aGlzIHNlY3Rpb24gaXMgaGVsZCBpbnZhbGlkIG9yIHVuZW5mb3JjZWFibGUgdW5kZXIgYW55CnBhcnRpY3VsYXIgY2lyY3Vtc3RhbmNlLCB0aGUgYmFsYW5jZSBvZiB0aGUgc2VjdGlvbiBpcyBpbnRlbmRlZCB0byBhcHBseSwKYW5kIHRoZSBzZWN0aW9uIGFzIGEgd2hvbGUgaXMgaW50ZW5kZWQgdG8gYXBwbHkgaW4gb3RoZXIgY2lyY3Vtc3RhbmNlcy4KCkl0IGlzIG5vdCB0aGUgcHVycG9zZSBvZiB0aGlzIHNlY3Rpb24gdG8gaW5kdWNlIHlvdSB0byBpbmZyaW5nZSBhbnkKcGF0ZW50cyBvciBvdGhlciBwcm9wZXJ0eSByaWdodCBjbGFpbXMgb3IgdG8gY29udGVzdCB2YWxpZGl0eSBvZiBhbnkKc3VjaCBjbGFpbXM7IHRoaXMgc2VjdGlvbiBoYXMgdGhlIHNvbGUgcHVycG9zZSBvZiBwcm90ZWN0aW5nIHRoZQppbnRlZ3JpdHkgb2YgdGhlIGZyZWUgc29mdHdhcmUgZGlzdHJpYnV0aW9uIHN5c3RlbSB3aGljaCBpcwppbXBsZW1lbnRlZCBieSBwdWJsaWMgbGljZW5zZSBwcmFjdGljZXMuICBNYW55IHBlb3BsZSBoYXZlIG1hZGUKZ2VuZXJvdXMgY29udHJpYnV0aW9ucyB0byB0aGUgd2lkZSByYW5nZSBvZiBzb2Z0d2FyZSBkaXN0cmlidXRlZAp0aHJvdWdoIHRoYXQgc3lzdGVtIGluIHJlbGlhbmNlIG9uIGNvbnNpc3RlbnQgYXBwbGljYXRpb24gb2YgdGhhdApzeXN0ZW07IGl0IGlzIHVwIHRvIHRoZSBhdXRob3IvZG9ub3IgdG8gZGVjaWRlIGlmIGhlIG9yIHNoZSBpcyB3aWxsaW5nCnRvIGRpc3RyaWJ1dGUgc29mdHdhcmUgdGhyb3VnaCBhbnkgb3RoZXIgc3lzdGVtIGFuZCBhIGxpY2Vuc2VlIGNhbm5vdAppbXBvc2UgdGhhdCBjaG9pY2UuCgpUaGlzIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8gbWFrZSB0aG9yb3VnaGx5IGNsZWFyIHdoYXQgaXMgYmVsaWV2ZWQgdG8KYmUgYSBjb25zZXF1ZW5jZSBvZiB0aGUgcmVzdCBvZiB0aGlzIExpY2Vuc2UuCgogIDEyLiBJZiB0aGUgZGlzdHJpYnV0aW9uIGFuZC9vciB1c2Ugb2YgdGhlIExpYnJhcnkgaXMgcmVzdHJpY3RlZCBpbgpjZXJ0YWluIGNvdW50cmllcyBlaXRoZXIgYnkgcGF0ZW50cyBvciBieSBjb3B5cmlnaHRlZCBpbnRlcmZhY2VzLCB0aGUKb3JpZ2luYWwgY29weXJpZ2h0IGhvbGRlciB3aG8gcGxhY2VzIHRoZSBMaWJyYXJ5IHVuZGVyIHRoaXMgTGljZW5zZSBtYXkgYWRkCmFuIGV4cGxpY2l0IGdlb2dyYXBoaWNhbCBkaXN0cmlidXRpb24gbGltaXRhdGlvbiBleGNsdWRpbmcgdGhvc2UgY291bnRyaWVzLApzbyB0aGF0IGRpc3RyaWJ1dGlvbiBpcyBwZXJtaXR0ZWQgb25seSBpbiBvciBhbW9uZyBjb3VudHJpZXMgbm90IHRodXMKZXhjbHVkZWQuICBJbiBzdWNoIGNhc2UsIHRoaXMgTGljZW5zZSBpbmNvcnBvcmF0ZXMgdGhlIGxpbWl0YXRpb24gYXMgaWYKd3JpdHRlbiBpbiB0aGUgYm9keSBvZiB0aGlzIExpY2Vuc2UuCgogIDEzLiBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldwp2ZXJzaW9ucyBvZiB0aGUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuClN1Y2ggbmV3IHZlcnNpb25zIHdpbGwgYmUgc2ltaWxhciBpbiBzcGlyaXQgdG8gdGhlIHByZXNlbnQgdmVyc2lvbiwKYnV0IG1heSBkaWZmZXIgaW4gZGV0YWlsIHRvIGFkZHJlc3MgbmV3IHByb2JsZW1zIG9yIGNvbmNlcm5zLgoKRWFjaCB2ZXJzaW9uIGlzIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuICBJZiB0aGUgTGlicmFyeQpzcGVjaWZpZXMgYSB2ZXJzaW9uIG51bWJlciBvZiB0aGlzIExpY2Vuc2Ugd2hpY2ggYXBwbGllcyB0byBpdCBhbmQKImFueSBsYXRlciB2ZXJzaW9uIiwgeW91IGhhdmUgdGhlIG9wdGlvbiBvZiBmb2xsb3dpbmcgdGhlIHRlcm1zIGFuZApjb25kaXRpb25zIGVpdGhlciBvZiB0aGF0IHZlcnNpb24gb3Igb2YgYW55IGxhdGVyIHZlcnNpb24gcHVibGlzaGVkIGJ5CnRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uICBJZiB0aGUgTGlicmFyeSBkb2VzIG5vdCBzcGVjaWZ5IGEKbGljZW5zZSB2ZXJzaW9uIG51bWJlciwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQgYnkKdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KDAogIDE0LiBJZiB5b3Ugd2lzaCB0byBpbmNvcnBvcmF0ZSBwYXJ0cyBvZiB0aGUgTGlicmFyeSBpbnRvIG90aGVyIGZyZWUKcHJvZ3JhbXMgd2hvc2UgZGlzdHJpYnV0aW9uIGNvbmRpdGlvbnMgYXJlIGluY29tcGF0aWJsZSB3aXRoIHRoZXNlLAp3cml0ZSB0byB0aGUgYXV0aG9yIHRvIGFzayBmb3IgcGVybWlzc2lvbi4gIEZvciBzb2Z0d2FyZSB3aGljaCBpcwpjb3B5cmlnaHRlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3cml0ZSB0byB0aGUgRnJlZQpTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3ZSBzb21ldGltZXMgbWFrZSBleGNlcHRpb25zIGZvciB0aGlzLiAgT3VyCmRlY2lzaW9uIHdpbGwgYmUgZ3VpZGVkIGJ5IHRoZSB0d28gZ29hbHMgb2YgcHJlc2VydmluZyB0aGUgZnJlZSBzdGF0dXMKb2YgYWxsIGRlcml2YXRpdmVzIG9mIG91ciBmcmVlIHNvZnR3YXJlIGFuZCBvZiBwcm9tb3RpbmcgdGhlIHNoYXJpbmcKYW5kIHJldXNlIG9mIHNvZnR3YXJlIGdlbmVyYWxseS4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTyBXQVJSQU5UWQoKICAxNS4gQkVDQVVTRSBUSEUgTElCUkFSWSBJUyBMSUNFTlNFRCBGUkVFIE9GIENIQVJHRSwgVEhFUkUgSVMgTk8KV0FSUkFOVFkgRk9SIFRIRSBMSUJSQVJZLCBUTyBUSEUgRVhURU5UIFBFUk1JVFRFRCBCWSBBUFBMSUNBQkxFIExBVy4KRVhDRVBUIFdIRU4gT1RIRVJXSVNFIFNUQVRFRCBJTiBXUklUSU5HIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQvT1IKT1RIRVIgUEFSVElFUyBQUk9WSURFIFRIRSBMSUJSQVJZICJBUyBJUyIgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKS0lORCwgRUlUSEVSIEVYUFJFU1NFRCBPUiBJTVBMSUVELCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCklNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgpQVVJQT1NFLiAgVEhFIEVOVElSRSBSSVNLIEFTIFRPIFRIRSBRVUFMSVRZIEFORCBQRVJGT1JNQU5DRSBPRiBUSEUKTElCUkFSWSBJUyBXSVRIIFlPVS4gIFNIT1VMRCBUSEUgTElCUkFSWSBQUk9WRSBERUZFQ1RJVkUsIFlPVSBBU1NVTUUKVEhFIENPU1QgT0YgQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsIFJFUEFJUiBPUiBDT1JSRUNUSU9OLgoKICAxNi4gSU4gTk8gRVZFTlQgVU5MRVNTIFJFUVVJUkVEIEJZIEFQUExJQ0FCTEUgTEFXIE9SIEFHUkVFRCBUTyBJTgpXUklUSU5HIFdJTEwgQU5ZIENPUFlSSUdIVCBIT0xERVIsIE9SIEFOWSBPVEhFUiBQQVJUWSBXSE8gTUFZIE1PRElGWQpBTkQvT1IgUkVESVNUUklCVVRFIFRIRSBMSUJSQVJZIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVQpGT1IgREFNQUdFUywgSU5DTFVESU5HIEFOWSBHRU5FUkFMLCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SCkNPTlNFUVVFTlRJQUwgREFNQUdFUyBBUklTSU5HIE9VVCBPRiBUSEUgVVNFIE9SIElOQUJJTElUWSBUTyBVU0UgVEhFCkxJQlJBUlkgKElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gTE9TUyBPRiBEQVRBIE9SIERBVEEgQkVJTkcKUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJTkVEIEJZIFlPVSBPUiBUSElSRCBQQVJUSUVTIE9SIEEKRkFJTFVSRSBPRiBUSEUgTElCUkFSWSBUTyBPUEVSQVRFIFdJVEggQU5ZIE9USEVSIFNPRlRXQVJFKSwgRVZFTiBJRgpTVUNIIEhPTERFUiBPUiBPVEhFUiBQQVJUWSBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICkRBTUFHRVMuCgogICAgICAgICAgICAgICAgICAgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKDAogICAgICAgICAgIEhvdyB0byBBcHBseSBUaGVzZSBUZXJtcyB0byBZb3VyIE5ldyBMaWJyYXJpZXMKCiAgSWYgeW91IGRldmVsb3AgYSBuZXcgbGlicmFyeSwgYW5kIHlvdSB3YW50IGl0IHRvIGJlIG9mIHRoZSBncmVhdGVzdApwb3NzaWJsZSB1c2UgdG8gdGhlIHB1YmxpYywgd2UgcmVjb21tZW5kIG1ha2luZyBpdCBmcmVlIHNvZnR3YXJlIHRoYXQKZXZlcnlvbmUgY2FuIHJlZGlzdHJpYnV0ZSBhbmQgY2hhbmdlLiAgWW91IGNhbiBkbyBzbyBieSBwZXJtaXR0aW5nCnJlZGlzdHJpYnV0aW9uIHVuZGVyIHRoZXNlIHRlcm1zIChvciwgYWx0ZXJuYXRpdmVseSwgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQpvcmRpbmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKS4KCiAgVG8gYXBwbHkgdGhlc2UgdGVybXMsIGF0dGFjaCB0aGUgZm9sbG93aW5nIG5vdGljZXMgdG8gdGhlIGxpYnJhcnkuICBJdCBpcwpzYWZlc3QgdG8gYXR0YWNoIHRoZW0gdG8gdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGZpbGUgdG8gbW9zdCBlZmZlY3RpdmVseQpjb252ZXkgdGhlIGV4Y2x1c2lvbiBvZiB3YXJyYW50eTsgYW5kIGVhY2ggZmlsZSBzaG91bGQgaGF2ZSBhdCBsZWFzdCB0aGUKImNvcHlyaWdodCIgbGluZSBhbmQgYSBwb2ludGVyIHRvIHdoZXJlIHRoZSBmdWxsIG5vdGljZSBpcyBmb3VuZC4KCiAgICA8b25lIGxpbmUgdG8gZ2l2ZSB0aGUgbGlicmFyeSdzIG5hbWUgYW5kIGEgYnJpZWYgaWRlYSBvZiB3aGF0IGl0IGRvZXMuPgogICAgQ29weXJpZ2h0IChDKSA8eWVhcj4gIDxuYW1lIG9mIGF1dGhvcj4KCiAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgoKICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgoKICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQoKQWxzbyBhZGQgaW5mb3JtYXRpb24gb24gaG93IHRvIGNvbnRhY3QgeW91IGJ5IGVsZWN0cm9uaWMgYW5kIHBhcGVyIG1haWwuCgpZb3Ugc2hvdWxkIGFsc28gZ2V0IHlvdXIgZW1wbG95ZXIgKGlmIHlvdSB3b3JrIGFzIGEgcHJvZ3JhbW1lcikgb3IgeW91cgpzY2hvb2wsIGlmIGFueSwgdG8gc2lnbiBhICJjb3B5cmlnaHQgZGlzY2xhaW1lciIgZm9yIHRoZSBsaWJyYXJ5LCBpZgpuZWNlc3NhcnkuICBIZXJlIGlzIGEgc2FtcGxlOyBhbHRlciB0aGUgbmFtZXM6CgogIFlveW9keW5lLCBJbmMuLCBoZXJlYnkgZGlzY2xhaW1zIGFsbCBjb3B5cmlnaHQgaW50ZXJlc3QgaW4gdGhlCiAgbGlicmFyeSBgRnJvYicgKGEgbGlicmFyeSBmb3IgdHdlYWtpbmcga25vYnMpIHdyaXR0ZW4gYnkgSmFtZXMgUmFuZG9tIEhhY2tlci4KCiAgPHNpZ25hdHVyZSBvZiBUeSBDb29uPiwgMSBBcHJpbCAxOTkwCiAgVHkgQ29vbiwgUHJlc2lkZW50IG9mIFZpY2UKClRoYXQncyBhbGwgdGhlcmUgaXMgdG8gaXQhCg== + + + declared license of 'chardet' + LGPL + + + pkg:pypi/chardet@5.2.0 + + + https://chardet.readthedocs.io/ + from packaging metadata Project-URL: Documentation + + + https://github.com/chardet/chardet/issues + from packaging metadata Project-URL: Issue Tracker + + + https://github.com/chardet/chardet + from packaging metadata Project-URL: GitHub Project + + + https://github.com/chardet/chardet + from packaging metadata: Home-page + + + cryptography 43.0.1 @@ -490,250 +236,6 @@ SPDX-License-Identifier: BSD-2-Clause License :: OSI Approved :: BSD License - - declared license file: LICENSE - This software is made available under the terms of *either* of the licenses -found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made -under the terms of *both* these licenses. - - - - declared license file: LICENSE.APACHE - - Apache License - Version 2.0, January 2004 - https://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - https://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - - declared license file: LICENSE.BSD - Copyright (c) Individual contributors. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. Neither the name of PyCA Cryptography nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - @@ -747,40 +249,11 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. declared license file: AUTHORS - Stefan Kögl <stefan@skoegl.net> -Alexander Shorin <kxepal@gmail.com> -Christopher J. White <chris@grierwhite.com> - + U3RlZmFuIEvDtmdsIDxzdGVmYW5Ac2tvZWdsLm5ldD4KQWxleGFuZGVyIFNob3JpbiA8a3hlcGFsQGdtYWlsLmNvbT4KQ2hyaXN0b3BoZXIgSi4gV2hpdGUgPGNocmlzQGdyaWVyd2hpdGUuY29tPgo= declared license file: LICENSE.txt - Copyright (c) 2011 Stefan Kögl <stefan@skoegl.net> -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - + Q29weXJpZ2h0IChjKSAyMDExIFN0ZWZhbiBLw7ZnbCA8c3RlZmFuQHNrb2VnbC5uZXQ+CkFsbCByaWdodHMgcmVzZXJ2ZWQuCgpSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCmFyZSBtZXQ6CgoxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCjIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KMy4gVGhlIG5hbWUgb2YgdGhlIGF1dGhvciBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzCiAgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgoKVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IKSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUwpPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELgpJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsCklOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVApOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCkRBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQpUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCihJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgpUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgoK declared license of 'jsonpointer' @@ -805,458 +278,23 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. declared license file: AUTHORS.rst - The following organizations or individuals have contributed to this code: - -- Ayan Sinha Mahapatra @AyanSinhaMahapatra -- Carmen Bianca Bakker @carmenbianca -- Chin-Yeung Li @chinyeungli -- Dennis Clark @DennisClark -- John Horan @johnmhoran -- Jono Yang @JonoYang -- Max Mehl @mxmehl -- nexB Inc. @nexB -- Peter Kolbus @pkolbus -- Philippe Ombredanne @pombredanne -- Sebastian Schuberth @sschuberth -- Steven Esser @majurg -- Thomas Druez @tdruez - + VGhlIGZvbGxvd2luZyBvcmdhbml6YXRpb25zIG9yIGluZGl2aWR1YWxzIGhhdmUgY29udHJpYnV0ZWQgdG8gdGhpcyBjb2RlOgoKLSBBeWFuIFNpbmhhIE1haGFwYXRyYSBAQXlhblNpbmhhTWFoYXBhdHJhCi0gQ2FybWVuIEJpYW5jYSBCYWtrZXIgQGNhcm1lbmJpYW5jYQotIENoaW4tWWV1bmcgTGkgQGNoaW55ZXVuZ2xpCi0gRGVubmlzIENsYXJrIEBEZW5uaXNDbGFyawotIEpvaG4gSG9yYW4gQGpvaG5taG9yYW4KLSBKb25vIFlhbmcgQEpvbm9ZYW5nCi0gTWF4IE1laGwgQG14bWVobAotIG5leEIgSW5jLiBAbmV4QgotIFBldGVyIEtvbGJ1cyBAcGtvbGJ1cwotIFBoaWxpcHBlIE9tYnJlZGFubmUgQHBvbWJyZWRhbm5lCi0gU2ViYXN0aWFuIFNjaHViZXJ0aCBAc3NjaHViZXJ0aAotIFN0ZXZlbiBFc3NlciBAbWFqdXJnCi0gVGhvbWFzIERydWV6IEB0ZHJ1ZXoK declared license file: CHANGELOG.rst - Changelog -========= - -v30.3.0 - 2024-03-18 --------------------- - -This is a minor release without API changes: - -- Use latest skeleton -- Update license list to latest ScanCode and SPDX 3.23 -- Drop support for Python 3.7 - -v30.2.0 - 2023-11-29 --------------------- - -This is a minor release without API changes: - -- Use latest skeleton -- Update license list to latest ScanCode and SPDX 3.22 -- Add Python 3.12 support in CI - - -v30.1.1 - 2023-01-16 ----------------------- - -This is a minor dot release without API changes - -- Use latest skeleton -- Update license list to latest ScanCode and SPDX 3.20 - - -v30.1.0 - 2023-01-16 ----------------------- - -This is a minor release without API changes - -- Use latest skeleton (and updated configure script) -- Update license list to latest ScanCode and SPDX 3.19 -- Use correct syntax for python_require -- Drop using Travis and Appveyor -- Drop support for Python 3.7 and add Python 3.11 in CI - - -v30.0.0 - 2022-05-10 ----------------------- - -This is a minor release with API changes - -- Use latest skeleton (and updated configure script) -- Drop using calver -- Improve error checking when combining licenses - - - -v21.6.14 - 2021-06-14 ----------------------- - -Added -~~~~~ - -- Switch to calver for package versioning to better convey the currency of the - bundled data. - -- Include https://scancode-licensedb.aboutcode.org/ licenses list with - ScanCode (v21.6.7) and SPDX licenses (v3.13) keys. Add new functions to - create Licensing using these licenses as LicenseSymbol. - -- Add new License.dedup() method to deduplicate and simplify license expressions - without over simplifying. - -- Add new License.validate() method to return a new ExpressionInfo object with - details on a license expression validation. - - -Changed -~~~~~~~ -- Drop support for Python 2. -- Adopt the project skeleton from https://github.com/nexB/skeleton - and its new configure script - - -v1.2 - 2019-11-14 ------------------- -Added -~~~~~ -- Add ability to render WITH expression wrapped in parenthesis - -Fixes -~~~~~ -- Fix anomalous backslashes in strings - -Changed -~~~~~~~ -- Update the thirdparty directory structure. - - -v1.0 - 2019-10-16 ------------------- -Added -~~~~~ -- New version of boolean.py library -- Add ability to leave license expressions unsorted when simplifying - -Changed -~~~~~~~ -- updated travis CI settings - - -v0.999 - 2019-04-29 --------------------- -- Initial release -- license-expression is small utility library to parse, compare and - simplify and normalize license expressions. - - + Q2hhbmdlbG9nCj09PT09PT09PQoKdjMwLjMuMCAtIDIwMjQtMDMtMTgKLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRoaXMgaXMgYSBtaW5vciByZWxlYXNlIHdpdGhvdXQgQVBJIGNoYW5nZXM6CgotIFVzZSBsYXRlc3Qgc2tlbGV0b24KLSBVcGRhdGUgbGljZW5zZSBsaXN0IHRvIGxhdGVzdCBTY2FuQ29kZSBhbmQgU1BEWCAzLjIzCi0gRHJvcCBzdXBwb3J0IGZvciBQeXRob24gMy43Cgp2MzAuMi4wIC0gMjAyMy0xMS0yOQotLS0tLS0tLS0tLS0tLS0tLS0tLQoKVGhpcyBpcyBhIG1pbm9yIHJlbGVhc2Ugd2l0aG91dCBBUEkgY2hhbmdlczoKCi0gVXNlIGxhdGVzdCBza2VsZXRvbgotIFVwZGF0ZSBsaWNlbnNlIGxpc3QgdG8gbGF0ZXN0IFNjYW5Db2RlIGFuZCBTUERYIDMuMjIKLSBBZGQgUHl0aG9uIDMuMTIgc3VwcG9ydCBpbiBDSQoKCnYzMC4xLjEgLSAyMDIzLTAxLTE2Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRoaXMgaXMgYSBtaW5vciBkb3QgcmVsZWFzZSB3aXRob3V0IEFQSSBjaGFuZ2VzCgotIFVzZSBsYXRlc3Qgc2tlbGV0b24KLSBVcGRhdGUgbGljZW5zZSBsaXN0IHRvIGxhdGVzdCBTY2FuQ29kZSBhbmQgU1BEWCAzLjIwCgoKdjMwLjEuMCAtIDIwMjMtMDEtMTYKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKVGhpcyBpcyBhIG1pbm9yIHJlbGVhc2Ugd2l0aG91dCBBUEkgY2hhbmdlcwoKLSBVc2UgbGF0ZXN0IHNrZWxldG9uIChhbmQgdXBkYXRlZCBjb25maWd1cmUgc2NyaXB0KQotIFVwZGF0ZSBsaWNlbnNlIGxpc3QgdG8gbGF0ZXN0IFNjYW5Db2RlIGFuZCBTUERYIDMuMTkKLSBVc2UgY29ycmVjdCBzeW50YXggZm9yIHB5dGhvbl9yZXF1aXJlCi0gRHJvcCB1c2luZyBUcmF2aXMgYW5kIEFwcHZleW9yCi0gRHJvcCBzdXBwb3J0IGZvciBQeXRob24gMy43IGFuZCBhZGQgUHl0aG9uIDMuMTEgaW4gQ0kKCgp2MzAuMC4wIC0gMjAyMi0wNS0xMAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpUaGlzIGlzIGEgbWlub3IgcmVsZWFzZSB3aXRoIEFQSSBjaGFuZ2VzCgotIFVzZSBsYXRlc3Qgc2tlbGV0b24gKGFuZCB1cGRhdGVkIGNvbmZpZ3VyZSBzY3JpcHQpCi0gRHJvcCB1c2luZyBjYWx2ZXIKLSBJbXByb3ZlIGVycm9yIGNoZWNraW5nIHdoZW4gY29tYmluaW5nIGxpY2Vuc2VzCgoKCnYyMS42LjE0IC0gMjAyMS0wNi0xNAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpBZGRlZAp+fn5+fgoKLSBTd2l0Y2ggdG8gY2FsdmVyIGZvciBwYWNrYWdlIHZlcnNpb25pbmcgdG8gYmV0dGVyIGNvbnZleSB0aGUgY3VycmVuY3kgb2YgdGhlCiAgYnVuZGxlZCBkYXRhLgoKLSBJbmNsdWRlIGh0dHBzOi8vc2NhbmNvZGUtbGljZW5zZWRiLmFib3V0Y29kZS5vcmcvIGxpY2Vuc2VzIGxpc3Qgd2l0aAogIFNjYW5Db2RlICh2MjEuNi43KSBhbmQgU1BEWCBsaWNlbnNlcyAodjMuMTMpIGtleXMuIEFkZCBuZXcgZnVuY3Rpb25zIHRvCiAgY3JlYXRlIExpY2Vuc2luZyB1c2luZyB0aGVzZSBsaWNlbnNlcyBhcyBMaWNlbnNlU3ltYm9sLgoKLSBBZGQgbmV3IExpY2Vuc2UuZGVkdXAoKSBtZXRob2QgdG8gZGVkdXBsaWNhdGUgYW5kIHNpbXBsaWZ5IGxpY2Vuc2UgZXhwcmVzc2lvbnMKICB3aXRob3V0IG92ZXIgc2ltcGxpZnlpbmcuCgotIEFkZCBuZXcgTGljZW5zZS52YWxpZGF0ZSgpIG1ldGhvZCB0byByZXR1cm4gYSBuZXcgRXhwcmVzc2lvbkluZm8gb2JqZWN0IHdpdGgKICBkZXRhaWxzIG9uIGEgbGljZW5zZSBleHByZXNzaW9uIHZhbGlkYXRpb24uCgoKQ2hhbmdlZAp+fn5+fn5+Ci0gRHJvcCBzdXBwb3J0IGZvciBQeXRob24gMi4KLSBBZG9wdCB0aGUgcHJvamVjdCBza2VsZXRvbiBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9uZXhCL3NrZWxldG9uCiAgYW5kIGl0cyBuZXcgY29uZmlndXJlIHNjcmlwdAoKCnYxLjIgLSAyMDE5LTExLTE0Ci0tLS0tLS0tLS0tLS0tLS0tLQpBZGRlZAp+fn5+fgotIEFkZCBhYmlsaXR5IHRvIHJlbmRlciBXSVRIIGV4cHJlc3Npb24gd3JhcHBlZCBpbiBwYXJlbnRoZXNpcwoKRml4ZXMKfn5+fn4KLSBGaXggYW5vbWFsb3VzIGJhY2tzbGFzaGVzIGluIHN0cmluZ3MKCkNoYW5nZWQKfn5+fn5+fgotIFVwZGF0ZSB0aGUgdGhpcmRwYXJ0eSBkaXJlY3Rvcnkgc3RydWN0dXJlLgoKCnYxLjAgLSAyMDE5LTEwLTE2Ci0tLS0tLS0tLS0tLS0tLS0tLQpBZGRlZAp+fn5+fgotIE5ldyB2ZXJzaW9uIG9mIGJvb2xlYW4ucHkgbGlicmFyeQotIEFkZCBhYmlsaXR5IHRvIGxlYXZlIGxpY2Vuc2UgZXhwcmVzc2lvbnMgdW5zb3J0ZWQgd2hlbiBzaW1wbGlmeWluZwoKQ2hhbmdlZAp+fn5+fn5+Ci0gdXBkYXRlZCB0cmF2aXMgQ0kgc2V0dGluZ3MKCgp2MC45OTkgLSAyMDE5LTA0LTI5Ci0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gSW5pdGlhbCByZWxlYXNlCi0gbGljZW5zZS1leHByZXNzaW9uIGlzIHNtYWxsIHV0aWxpdHkgbGlicmFyeSB0byBwYXJzZSwgY29tcGFyZSBhbmQKICBzaW1wbGlmeSBhbmQgbm9ybWFsaXplIGxpY2Vuc2UgZXhwcmVzc2lvbnMuCgo= declared license file: CODE_OF_CONDUCT.rst - Contributor Covenant Code of Conduct -==================================== - -Our Pledge ----------- - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our -project and our community a harassment-free experience for everyone, -regardless of age, body size, disability, ethnicity, gender identity and -expression, level of experience, education, socio-economic status, -nationality, personal appearance, race, religion, or sexual identity and -orientation. - -Our Standards -------------- - -Examples of behavior that contributes to creating a positive environment -include: - -- Using welcoming and inclusive language -- Being respectful of differing viewpoints and experiences -- Gracefully accepting constructive criticism -- Focusing on what is best for the community -- Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -- The use of sexualized language or imagery and unwelcome sexual - attention or advances -- Trolling, insulting/derogatory comments, and personal or political - attacks -- Public or private harassment -- Publishing others’ private information, such as a physical or - electronic address, without explicit permission -- Other conduct which could reasonably be considered inappropriate in a - professional setting - -Our Responsibilities --------------------- - -Project maintainers are responsible for clarifying the standards of -acceptable behavior and are expected to take appropriate and fair -corrective action in response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, -or reject comments, commits, code, wiki edits, issues, and other -contributions that are not aligned to this Code of Conduct, or to ban -temporarily or permanently any contributor for other behaviors that they -deem inappropriate, threatening, offensive, or harmful. - -Scope ------ - -This Code of Conduct applies both within project spaces and in public -spaces when an individual is representing the project or its community. -Examples of representing a project or community include using an -official project e-mail address, posting via an official social media -account, or acting as an appointed representative at an online or -offline event. Representation of a project may be further defined and -clarified by project maintainers. - -Enforcement ------------ - -Instances of abusive, harassing, or otherwise unacceptable behavior may -be reported by contacting the project team at pombredanne@gmail.com -or on the Gitter chat channel at https://gitter.im/aboutcode-org/discuss . -All complaints will be reviewed and investigated and will result in a -response that is deemed necessary and appropriate to the circumstances. -The project team is obligated to maintain confidentiality with regard to -the reporter of an incident. Further details of specific enforcement -policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in -good faith may face temporary or permanent repercussions as determined -by other members of the project’s leadership. - -Attribution ------------ - -This Code of Conduct is adapted from the `Contributor Covenant`_ , -version 1.4, available at -https://www.contributor-covenant.org/version/1/4/code-of-conduct.html - -.. _Contributor Covenant: https://www.contributor-covenant.org - + Q29udHJpYnV0b3IgQ292ZW5hbnQgQ29kZSBvZiBDb25kdWN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKT3VyIFBsZWRnZQotLS0tLS0tLS0tCgpJbiB0aGUgaW50ZXJlc3Qgb2YgZm9zdGVyaW5nIGFuIG9wZW4gYW5kIHdlbGNvbWluZyBlbnZpcm9ubWVudCwgd2UgYXMKY29udHJpYnV0b3JzIGFuZCBtYWludGFpbmVycyBwbGVkZ2UgdG8gbWFraW5nIHBhcnRpY2lwYXRpb24gaW4gb3VyCnByb2plY3QgYW5kIG91ciBjb21tdW5pdHkgYSBoYXJhc3NtZW50LWZyZWUgZXhwZXJpZW5jZSBmb3IgZXZlcnlvbmUsCnJlZ2FyZGxlc3Mgb2YgYWdlLCBib2R5IHNpemUsIGRpc2FiaWxpdHksIGV0aG5pY2l0eSwgZ2VuZGVyIGlkZW50aXR5IGFuZApleHByZXNzaW9uLCBsZXZlbCBvZiBleHBlcmllbmNlLCBlZHVjYXRpb24sIHNvY2lvLWVjb25vbWljIHN0YXR1cywKbmF0aW9uYWxpdHksIHBlcnNvbmFsIGFwcGVhcmFuY2UsIHJhY2UsIHJlbGlnaW9uLCBvciBzZXh1YWwgaWRlbnRpdHkgYW5kCm9yaWVudGF0aW9uLgoKT3VyIFN0YW5kYXJkcwotLS0tLS0tLS0tLS0tCgpFeGFtcGxlcyBvZiBiZWhhdmlvciB0aGF0IGNvbnRyaWJ1dGVzIHRvIGNyZWF0aW5nIGEgcG9zaXRpdmUgZW52aXJvbm1lbnQKaW5jbHVkZToKCi0gIFVzaW5nIHdlbGNvbWluZyBhbmQgaW5jbHVzaXZlIGxhbmd1YWdlCi0gIEJlaW5nIHJlc3BlY3RmdWwgb2YgZGlmZmVyaW5nIHZpZXdwb2ludHMgYW5kIGV4cGVyaWVuY2VzCi0gIEdyYWNlZnVsbHkgYWNjZXB0aW5nIGNvbnN0cnVjdGl2ZSBjcml0aWNpc20KLSAgRm9jdXNpbmcgb24gd2hhdCBpcyBiZXN0IGZvciB0aGUgY29tbXVuaXR5Ci0gIFNob3dpbmcgZW1wYXRoeSB0b3dhcmRzIG90aGVyIGNvbW11bml0eSBtZW1iZXJzCgpFeGFtcGxlcyBvZiB1bmFjY2VwdGFibGUgYmVoYXZpb3IgYnkgcGFydGljaXBhbnRzIGluY2x1ZGU6CgotICBUaGUgdXNlIG9mIHNleHVhbGl6ZWQgbGFuZ3VhZ2Ugb3IgaW1hZ2VyeSBhbmQgdW53ZWxjb21lIHNleHVhbAogICBhdHRlbnRpb24gb3IgYWR2YW5jZXMKLSAgVHJvbGxpbmcsIGluc3VsdGluZy9kZXJvZ2F0b3J5IGNvbW1lbnRzLCBhbmQgcGVyc29uYWwgb3IgcG9saXRpY2FsCiAgIGF0dGFja3MKLSAgUHVibGljIG9yIHByaXZhdGUgaGFyYXNzbWVudAotICBQdWJsaXNoaW5nIG90aGVyc+KAmSBwcml2YXRlIGluZm9ybWF0aW9uLCBzdWNoIGFzIGEgcGh5c2ljYWwgb3IKICAgZWxlY3Ryb25pYyBhZGRyZXNzLCB3aXRob3V0IGV4cGxpY2l0IHBlcm1pc3Npb24KLSAgT3RoZXIgY29uZHVjdCB3aGljaCBjb3VsZCByZWFzb25hYmx5IGJlIGNvbnNpZGVyZWQgaW5hcHByb3ByaWF0ZSBpbiBhCiAgIHByb2Zlc3Npb25hbCBzZXR0aW5nCgpPdXIgUmVzcG9uc2liaWxpdGllcwotLS0tLS0tLS0tLS0tLS0tLS0tLQoKUHJvamVjdCBtYWludGFpbmVycyBhcmUgcmVzcG9uc2libGUgZm9yIGNsYXJpZnlpbmcgdGhlIHN0YW5kYXJkcyBvZgphY2NlcHRhYmxlIGJlaGF2aW9yIGFuZCBhcmUgZXhwZWN0ZWQgdG8gdGFrZSBhcHByb3ByaWF0ZSBhbmQgZmFpcgpjb3JyZWN0aXZlIGFjdGlvbiBpbiByZXNwb25zZSB0byBhbnkgaW5zdGFuY2VzIG9mIHVuYWNjZXB0YWJsZSBiZWhhdmlvci4KClByb2plY3QgbWFpbnRhaW5lcnMgaGF2ZSB0aGUgcmlnaHQgYW5kIHJlc3BvbnNpYmlsaXR5IHRvIHJlbW92ZSwgZWRpdCwKb3IgcmVqZWN0IGNvbW1lbnRzLCBjb21taXRzLCBjb2RlLCB3aWtpIGVkaXRzLCBpc3N1ZXMsIGFuZCBvdGhlcgpjb250cmlidXRpb25zIHRoYXQgYXJlIG5vdCBhbGlnbmVkIHRvIHRoaXMgQ29kZSBvZiBDb25kdWN0LCBvciB0byBiYW4KdGVtcG9yYXJpbHkgb3IgcGVybWFuZW50bHkgYW55IGNvbnRyaWJ1dG9yIGZvciBvdGhlciBiZWhhdmlvcnMgdGhhdCB0aGV5CmRlZW0gaW5hcHByb3ByaWF0ZSwgdGhyZWF0ZW5pbmcsIG9mZmVuc2l2ZSwgb3IgaGFybWZ1bC4KClNjb3BlCi0tLS0tCgpUaGlzIENvZGUgb2YgQ29uZHVjdCBhcHBsaWVzIGJvdGggd2l0aGluIHByb2plY3Qgc3BhY2VzIGFuZCBpbiBwdWJsaWMKc3BhY2VzIHdoZW4gYW4gaW5kaXZpZHVhbCBpcyByZXByZXNlbnRpbmcgdGhlIHByb2plY3Qgb3IgaXRzIGNvbW11bml0eS4KRXhhbXBsZXMgb2YgcmVwcmVzZW50aW5nIGEgcHJvamVjdCBvciBjb21tdW5pdHkgaW5jbHVkZSB1c2luZyBhbgpvZmZpY2lhbCBwcm9qZWN0IGUtbWFpbCBhZGRyZXNzLCBwb3N0aW5nIHZpYSBhbiBvZmZpY2lhbCBzb2NpYWwgbWVkaWEKYWNjb3VudCwgb3IgYWN0aW5nIGFzIGFuIGFwcG9pbnRlZCByZXByZXNlbnRhdGl2ZSBhdCBhbiBvbmxpbmUgb3IKb2ZmbGluZSBldmVudC4gUmVwcmVzZW50YXRpb24gb2YgYSBwcm9qZWN0IG1heSBiZSBmdXJ0aGVyIGRlZmluZWQgYW5kCmNsYXJpZmllZCBieSBwcm9qZWN0IG1haW50YWluZXJzLgoKRW5mb3JjZW1lbnQKLS0tLS0tLS0tLS0KCkluc3RhbmNlcyBvZiBhYnVzaXZlLCBoYXJhc3NpbmcsIG9yIG90aGVyd2lzZSB1bmFjY2VwdGFibGUgYmVoYXZpb3IgbWF5CmJlIHJlcG9ydGVkIGJ5IGNvbnRhY3RpbmcgdGhlIHByb2plY3QgdGVhbSBhdCBwb21icmVkYW5uZUBnbWFpbC5jb20Kb3Igb24gdGhlIEdpdHRlciBjaGF0IGNoYW5uZWwgYXQgaHR0cHM6Ly9naXR0ZXIuaW0vYWJvdXRjb2RlLW9yZy9kaXNjdXNzIC4KQWxsIGNvbXBsYWludHMgd2lsbCBiZSByZXZpZXdlZCBhbmQgaW52ZXN0aWdhdGVkIGFuZCB3aWxsIHJlc3VsdCBpbiBhCnJlc3BvbnNlIHRoYXQgaXMgZGVlbWVkIG5lY2Vzc2FyeSBhbmQgYXBwcm9wcmlhdGUgdG8gdGhlIGNpcmN1bXN0YW5jZXMuClRoZSBwcm9qZWN0IHRlYW0gaXMgb2JsaWdhdGVkIHRvIG1haW50YWluIGNvbmZpZGVudGlhbGl0eSB3aXRoIHJlZ2FyZCB0bwp0aGUgcmVwb3J0ZXIgb2YgYW4gaW5jaWRlbnQuIEZ1cnRoZXIgZGV0YWlscyBvZiBzcGVjaWZpYyBlbmZvcmNlbWVudApwb2xpY2llcyBtYXkgYmUgcG9zdGVkIHNlcGFyYXRlbHkuCgpQcm9qZWN0IG1haW50YWluZXJzIHdobyBkbyBub3QgZm9sbG93IG9yIGVuZm9yY2UgdGhlIENvZGUgb2YgQ29uZHVjdCBpbgpnb29kIGZhaXRoIG1heSBmYWNlIHRlbXBvcmFyeSBvciBwZXJtYW5lbnQgcmVwZXJjdXNzaW9ucyBhcyBkZXRlcm1pbmVkCmJ5IG90aGVyIG1lbWJlcnMgb2YgdGhlIHByb2plY3TigJlzIGxlYWRlcnNoaXAuCgpBdHRyaWJ1dGlvbgotLS0tLS0tLS0tLQoKVGhpcyBDb2RlIG9mIENvbmR1Y3QgaXMgYWRhcHRlZCBmcm9tIHRoZSBgQ29udHJpYnV0b3IgQ292ZW5hbnRgXyAsCnZlcnNpb24gMS40LCBhdmFpbGFibGUgYXQKaHR0cHM6Ly93d3cuY29udHJpYnV0b3ItY292ZW5hbnQub3JnL3ZlcnNpb24vMS80L2NvZGUtb2YtY29uZHVjdC5odG1sCgouLiBfQ29udHJpYnV0b3IgQ292ZW5hbnQ6IGh0dHBzOi8vd3d3LmNvbnRyaWJ1dG9yLWNvdmVuYW50Lm9yZwo= declared license file: NOTICE - # -# Copyright (c) nexB Inc. and others. -# SPDX-License-Identifier: Apache-2.0 -# -# Visit https://aboutcode.org and https://github.com/nexB/license-expression -# for support and download. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - + IwojIENvcHlyaWdodCAoYykgbmV4QiBJbmMuIGFuZCBvdGhlcnMuCiMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKIwojIFZpc2l0IGh0dHBzOi8vYWJvdXRjb2RlLm9yZyBhbmQgaHR0cHM6Ly9naXRodWIuY29tL25leEIvbGljZW5zZS1leHByZXNzaW9uCiMgZm9yIHN1cHBvcnQgYW5kIGRvd25sb2FkLgojCiMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgojIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAojCiMgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgojCg== declared license file: apache-2.0.LICENSE - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBhY2hlIExpY2Vuc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAyLjAsIEphbnVhcnkgMjAwNAogICAgICAgICAgICAgICAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvCgogICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgVVNFLCBSRVBST0RVQ1RJT04sIEFORCBESVNUUklCVVRJT04KCiAgIDEuIERlZmluaXRpb25zLgoKICAgICAgIkxpY2Vuc2UiIHNoYWxsIG1lYW4gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciB1c2UsIHJlcHJvZHVjdGlvbiwKICAgICAgYW5kIGRpc3RyaWJ1dGlvbiBhcyBkZWZpbmVkIGJ5IFNlY3Rpb25zIDEgdGhyb3VnaCA5IG9mIHRoaXMgZG9jdW1lbnQuCgogICAgICAiTGljZW5zb3IiIHNoYWxsIG1lYW4gdGhlIGNvcHlyaWdodCBvd25lciBvciBlbnRpdHkgYXV0aG9yaXplZCBieQogICAgICB0aGUgY29weXJpZ2h0IG93bmVyIHRoYXQgaXMgZ3JhbnRpbmcgdGhlIExpY2Vuc2UuCgogICAgICAiTGVnYWwgRW50aXR5IiBzaGFsbCBtZWFuIHRoZSB1bmlvbiBvZiB0aGUgYWN0aW5nIGVudGl0eSBhbmQgYWxsCiAgICAgIG90aGVyIGVudGl0aWVzIHRoYXQgY29udHJvbCwgYXJlIGNvbnRyb2xsZWQgYnksIG9yIGFyZSB1bmRlciBjb21tb24KICAgICAgY29udHJvbCB3aXRoIHRoYXQgZW50aXR5LiBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwKICAgICAgImNvbnRyb2wiIG1lYW5zIChpKSB0aGUgcG93ZXIsIGRpcmVjdCBvciBpbmRpcmVjdCwgdG8gY2F1c2UgdGhlCiAgICAgIGRpcmVjdGlvbiBvciBtYW5hZ2VtZW50IG9mIHN1Y2ggZW50aXR5LCB3aGV0aGVyIGJ5IGNvbnRyYWN0IG9yCiAgICAgIG90aGVyd2lzZSwgb3IgKGlpKSBvd25lcnNoaXAgb2YgZmlmdHkgcGVyY2VudCAoNTAlKSBvciBtb3JlIG9mIHRoZQogICAgICBvdXRzdGFuZGluZyBzaGFyZXMsIG9yIChpaWkpIGJlbmVmaWNpYWwgb3duZXJzaGlwIG9mIHN1Y2ggZW50aXR5LgoKICAgICAgIllvdSIgKG9yICJZb3VyIikgc2hhbGwgbWVhbiBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eQogICAgICBleGVyY2lzaW5nIHBlcm1pc3Npb25zIGdyYW50ZWQgYnkgdGhpcyBMaWNlbnNlLgoKICAgICAgIlNvdXJjZSIgZm9ybSBzaGFsbCBtZWFuIHRoZSBwcmVmZXJyZWQgZm9ybSBmb3IgbWFraW5nIG1vZGlmaWNhdGlvbnMsCiAgICAgIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gc29mdHdhcmUgc291cmNlIGNvZGUsIGRvY3VtZW50YXRpb24KICAgICAgc291cmNlLCBhbmQgY29uZmlndXJhdGlvbiBmaWxlcy4KCiAgICAgICJPYmplY3QiIGZvcm0gc2hhbGwgbWVhbiBhbnkgZm9ybSByZXN1bHRpbmcgZnJvbSBtZWNoYW5pY2FsCiAgICAgIHRyYW5zZm9ybWF0aW9uIG9yIHRyYW5zbGF0aW9uIG9mIGEgU291cmNlIGZvcm0sIGluY2x1ZGluZyBidXQKICAgICAgbm90IGxpbWl0ZWQgdG8gY29tcGlsZWQgb2JqZWN0IGNvZGUsIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uLAogICAgICBhbmQgY29udmVyc2lvbnMgdG8gb3RoZXIgbWVkaWEgdHlwZXMuCgogICAgICAiV29yayIgc2hhbGwgbWVhbiB0aGUgd29yayBvZiBhdXRob3JzaGlwLCB3aGV0aGVyIGluIFNvdXJjZSBvcgogICAgICBPYmplY3QgZm9ybSwgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIExpY2Vuc2UsIGFzIGluZGljYXRlZCBieSBhCiAgICAgIGNvcHlyaWdodCBub3RpY2UgdGhhdCBpcyBpbmNsdWRlZCBpbiBvciBhdHRhY2hlZCB0byB0aGUgd29yawogICAgICAoYW4gZXhhbXBsZSBpcyBwcm92aWRlZCBpbiB0aGUgQXBwZW5kaXggYmVsb3cpLgoKICAgICAgIkRlcml2YXRpdmUgV29ya3MiIHNoYWxsIG1lYW4gYW55IHdvcmssIHdoZXRoZXIgaW4gU291cmNlIG9yIE9iamVjdAogICAgICBmb3JtLCB0aGF0IGlzIGJhc2VkIG9uIChvciBkZXJpdmVkIGZyb20pIHRoZSBXb3JrIGFuZCBmb3Igd2hpY2ggdGhlCiAgICAgIGVkaXRvcmlhbCByZXZpc2lvbnMsIGFubm90YXRpb25zLCBlbGFib3JhdGlvbnMsIG9yIG90aGVyIG1vZGlmaWNhdGlvbnMKICAgICAgcmVwcmVzZW50LCBhcyBhIHdob2xlLCBhbiBvcmlnaW5hbCB3b3JrIG9mIGF1dGhvcnNoaXAuIEZvciB0aGUgcHVycG9zZXMKICAgICAgb2YgdGhpcyBMaWNlbnNlLCBEZXJpdmF0aXZlIFdvcmtzIHNoYWxsIG5vdCBpbmNsdWRlIHdvcmtzIHRoYXQgcmVtYWluCiAgICAgIHNlcGFyYWJsZSBmcm9tLCBvciBtZXJlbHkgbGluayAob3IgYmluZCBieSBuYW1lKSB0byB0aGUgaW50ZXJmYWNlcyBvZiwKICAgICAgdGhlIFdvcmsgYW5kIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZi4KCiAgICAgICJDb250cmlidXRpb24iIHNoYWxsIG1lYW4gYW55IHdvcmsgb2YgYXV0aG9yc2hpcCwgaW5jbHVkaW5nCiAgICAgIHRoZSBvcmlnaW5hbCB2ZXJzaW9uIG9mIHRoZSBXb3JrIGFuZCBhbnkgbW9kaWZpY2F0aW9ucyBvciBhZGRpdGlvbnMKICAgICAgdG8gdGhhdCBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgdGhhdCBpcyBpbnRlbnRpb25hbGx5CiAgICAgIHN1Ym1pdHRlZCB0byBMaWNlbnNvciBmb3IgaW5jbHVzaW9uIGluIHRoZSBXb3JrIGJ5IHRoZSBjb3B5cmlnaHQgb3duZXIKICAgICAgb3IgYnkgYW4gaW5kaXZpZHVhbCBvciBMZWdhbCBFbnRpdHkgYXV0aG9yaXplZCB0byBzdWJtaXQgb24gYmVoYWxmIG9mCiAgICAgIHRoZSBjb3B5cmlnaHQgb3duZXIuIEZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAic3VibWl0dGVkIgogICAgICBtZWFucyBhbnkgZm9ybSBvZiBlbGVjdHJvbmljLCB2ZXJiYWwsIG9yIHdyaXR0ZW4gY29tbXVuaWNhdGlvbiBzZW50CiAgICAgIHRvIHRoZSBMaWNlbnNvciBvciBpdHMgcmVwcmVzZW50YXRpdmVzLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvCiAgICAgIGNvbW11bmljYXRpb24gb24gZWxlY3Ryb25pYyBtYWlsaW5nIGxpc3RzLCBzb3VyY2UgY29kZSBjb250cm9sIHN5c3RlbXMsCiAgICAgIGFuZCBpc3N1ZSB0cmFja2luZyBzeXN0ZW1zIHRoYXQgYXJlIG1hbmFnZWQgYnksIG9yIG9uIGJlaGFsZiBvZiwgdGhlCiAgICAgIExpY2Vuc29yIGZvciB0aGUgcHVycG9zZSBvZiBkaXNjdXNzaW5nIGFuZCBpbXByb3ZpbmcgdGhlIFdvcmssIGJ1dAogICAgICBleGNsdWRpbmcgY29tbXVuaWNhdGlvbiB0aGF0IGlzIGNvbnNwaWN1b3VzbHkgbWFya2VkIG9yIG90aGVyd2lzZQogICAgICBkZXNpZ25hdGVkIGluIHdyaXRpbmcgYnkgdGhlIGNvcHlyaWdodCBvd25lciBhcyAiTm90IGEgQ29udHJpYnV0aW9uLiIKCiAgICAgICJDb250cmlidXRvciIgc2hhbGwgbWVhbiBMaWNlbnNvciBhbmQgYW55IGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5CiAgICAgIG9uIGJlaGFsZiBvZiB3aG9tIGEgQ29udHJpYnV0aW9uIGhhcyBiZWVuIHJlY2VpdmVkIGJ5IExpY2Vuc29yIGFuZAogICAgICBzdWJzZXF1ZW50bHkgaW5jb3Jwb3JhdGVkIHdpdGhpbiB0aGUgV29yay4KCiAgIDIuIEdyYW50IG9mIENvcHlyaWdodCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCiAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCiAgICAgIGNvcHlyaWdodCBsaWNlbnNlIHRvIHJlcHJvZHVjZSwgcHJlcGFyZSBEZXJpdmF0aXZlIFdvcmtzIG9mLAogICAgICBwdWJsaWNseSBkaXNwbGF5LCBwdWJsaWNseSBwZXJmb3JtLCBzdWJsaWNlbnNlLCBhbmQgZGlzdHJpYnV0ZSB0aGUKICAgICAgV29yayBhbmQgc3VjaCBEZXJpdmF0aXZlIFdvcmtzIGluIFNvdXJjZSBvciBPYmplY3QgZm9ybS4KCiAgIDMuIEdyYW50IG9mIFBhdGVudCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCiAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCiAgICAgIChleGNlcHQgYXMgc3RhdGVkIGluIHRoaXMgc2VjdGlvbikgcGF0ZW50IGxpY2Vuc2UgdG8gbWFrZSwgaGF2ZSBtYWRlLAogICAgICB1c2UsIG9mZmVyIHRvIHNlbGwsIHNlbGwsIGltcG9ydCwgYW5kIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgV29yaywKICAgICAgd2hlcmUgc3VjaCBsaWNlbnNlIGFwcGxpZXMgb25seSB0byB0aG9zZSBwYXRlbnQgY2xhaW1zIGxpY2Vuc2FibGUKICAgICAgYnkgc3VjaCBDb250cmlidXRvciB0aGF0IGFyZSBuZWNlc3NhcmlseSBpbmZyaW5nZWQgYnkgdGhlaXIKICAgICAgQ29udHJpYnV0aW9uKHMpIGFsb25lIG9yIGJ5IGNvbWJpbmF0aW9uIG9mIHRoZWlyIENvbnRyaWJ1dGlvbihzKQogICAgICB3aXRoIHRoZSBXb3JrIHRvIHdoaWNoIHN1Y2ggQ29udHJpYnV0aW9uKHMpIHdhcyBzdWJtaXR0ZWQuIElmIFlvdQogICAgICBpbnN0aXR1dGUgcGF0ZW50IGxpdGlnYXRpb24gYWdhaW5zdCBhbnkgZW50aXR5IChpbmNsdWRpbmcgYQogICAgICBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0IHRoZSBXb3JrCiAgICAgIG9yIGEgQ29udHJpYnV0aW9uIGluY29ycG9yYXRlZCB3aXRoaW4gdGhlIFdvcmsgY29uc3RpdHV0ZXMgZGlyZWN0CiAgICAgIG9yIGNvbnRyaWJ1dG9yeSBwYXRlbnQgaW5mcmluZ2VtZW50LCB0aGVuIGFueSBwYXRlbnQgbGljZW5zZXMKICAgICAgZ3JhbnRlZCB0byBZb3UgdW5kZXIgdGhpcyBMaWNlbnNlIGZvciB0aGF0IFdvcmsgc2hhbGwgdGVybWluYXRlCiAgICAgIGFzIG9mIHRoZSBkYXRlIHN1Y2ggbGl0aWdhdGlvbiBpcyBmaWxlZC4KCiAgIDQuIFJlZGlzdHJpYnV0aW9uLiBZb3UgbWF5IHJlcHJvZHVjZSBhbmQgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlCiAgICAgIFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mIGluIGFueSBtZWRpdW0sIHdpdGggb3Igd2l0aG91dAogICAgICBtb2RpZmljYXRpb25zLCBhbmQgaW4gU291cmNlIG9yIE9iamVjdCBmb3JtLCBwcm92aWRlZCB0aGF0IFlvdQogICAgICBtZWV0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKCiAgICAgIChhKSBZb3UgbXVzdCBnaXZlIGFueSBvdGhlciByZWNpcGllbnRzIG9mIHRoZSBXb3JrIG9yCiAgICAgICAgICBEZXJpdmF0aXZlIFdvcmtzIGEgY29weSBvZiB0aGlzIExpY2Vuc2U7IGFuZAoKICAgICAgKGIpIFlvdSBtdXN0IGNhdXNlIGFueSBtb2RpZmllZCBmaWxlcyB0byBjYXJyeSBwcm9taW5lbnQgbm90aWNlcwogICAgICAgICAgc3RhdGluZyB0aGF0IFlvdSBjaGFuZ2VkIHRoZSBmaWxlczsgYW5kCgogICAgICAoYykgWW91IG11c3QgcmV0YWluLCBpbiB0aGUgU291cmNlIGZvcm0gb2YgYW55IERlcml2YXRpdmUgV29ya3MKICAgICAgICAgIHRoYXQgWW91IGRpc3RyaWJ1dGUsIGFsbCBjb3B5cmlnaHQsIHBhdGVudCwgdHJhZGVtYXJrLCBhbmQKICAgICAgICAgIGF0dHJpYnV0aW9uIG5vdGljZXMgZnJvbSB0aGUgU291cmNlIGZvcm0gb2YgdGhlIFdvcmssCiAgICAgICAgICBleGNsdWRpbmcgdGhvc2Ugbm90aWNlcyB0aGF0IGRvIG5vdCBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mCiAgICAgICAgICB0aGUgRGVyaXZhdGl2ZSBXb3JrczsgYW5kCgogICAgICAoZCkgSWYgdGhlIFdvcmsgaW5jbHVkZXMgYSAiTk9USUNFIiB0ZXh0IGZpbGUgYXMgcGFydCBvZiBpdHMKICAgICAgICAgIGRpc3RyaWJ1dGlvbiwgdGhlbiBhbnkgRGVyaXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlIG11c3QKICAgICAgICAgIGluY2x1ZGUgYSByZWFkYWJsZSBjb3B5IG9mIHRoZSBhdHRyaWJ1dGlvbiBub3RpY2VzIGNvbnRhaW5lZAogICAgICAgICAgd2l0aGluIHN1Y2ggTk9USUNFIGZpbGUsIGV4Y2x1ZGluZyB0aG9zZSBub3RpY2VzIHRoYXQgZG8gbm90CiAgICAgICAgICBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpbiBhdCBsZWFzdCBvbmUKICAgICAgICAgIG9mIHRoZSBmb2xsb3dpbmcgcGxhY2VzOiB3aXRoaW4gYSBOT1RJQ0UgdGV4dCBmaWxlIGRpc3RyaWJ1dGVkCiAgICAgICAgICBhcyBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyB3aXRoaW4gdGhlIFNvdXJjZSBmb3JtIG9yCiAgICAgICAgICBkb2N1bWVudGF0aW9uLCBpZiBwcm92aWRlZCBhbG9uZyB3aXRoIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyBvciwKICAgICAgICAgIHdpdGhpbiBhIGRpc3BsYXkgZ2VuZXJhdGVkIGJ5IHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpZiBhbmQKICAgICAgICAgIHdoZXJldmVyIHN1Y2ggdGhpcmQtcGFydHkgbm90aWNlcyBub3JtYWxseSBhcHBlYXIuIFRoZSBjb250ZW50cwogICAgICAgICAgb2YgdGhlIE5PVElDRSBmaWxlIGFyZSBmb3IgaW5mb3JtYXRpb25hbCBwdXJwb3NlcyBvbmx5IGFuZAogICAgICAgICAgZG8gbm90IG1vZGlmeSB0aGUgTGljZW5zZS4gWW91IG1heSBhZGQgWW91ciBvd24gYXR0cmlidXRpb24KICAgICAgICAgIG5vdGljZXMgd2l0aGluIERlcml2YXRpdmUgV29ya3MgdGhhdCBZb3UgZGlzdHJpYnV0ZSwgYWxvbmdzaWRlCiAgICAgICAgICBvciBhcyBhbiBhZGRlbmR1bSB0byB0aGUgTk9USUNFIHRleHQgZnJvbSB0aGUgV29yaywgcHJvdmlkZWQKICAgICAgICAgIHRoYXQgc3VjaCBhZGRpdGlvbmFsIGF0dHJpYnV0aW9uIG5vdGljZXMgY2Fubm90IGJlIGNvbnN0cnVlZAogICAgICAgICAgYXMgbW9kaWZ5aW5nIHRoZSBMaWNlbnNlLgoKICAgICAgWW91IG1heSBhZGQgWW91ciBvd24gY29weXJpZ2h0IHN0YXRlbWVudCB0byBZb3VyIG1vZGlmaWNhdGlvbnMgYW5kCiAgICAgIG1heSBwcm92aWRlIGFkZGl0aW9uYWwgb3IgZGlmZmVyZW50IGxpY2Vuc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMKICAgICAgZm9yIHVzZSwgcmVwcm9kdWN0aW9uLCBvciBkaXN0cmlidXRpb24gb2YgWW91ciBtb2RpZmljYXRpb25zLCBvcgogICAgICBmb3IgYW55IHN1Y2ggRGVyaXZhdGl2ZSBXb3JrcyBhcyBhIHdob2xlLCBwcm92aWRlZCBZb3VyIHVzZSwKICAgICAgcmVwcm9kdWN0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoZSBXb3JrIG90aGVyd2lzZSBjb21wbGllcyB3aXRoCiAgICAgIHRoZSBjb25kaXRpb25zIHN0YXRlZCBpbiB0aGlzIExpY2Vuc2UuCgogICA1LiBTdWJtaXNzaW9uIG9mIENvbnRyaWJ1dGlvbnMuIFVubGVzcyBZb3UgZXhwbGljaXRseSBzdGF0ZSBvdGhlcndpc2UsCiAgICAgIGFueSBDb250cmlidXRpb24gaW50ZW50aW9uYWxseSBzdWJtaXR0ZWQgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yawogICAgICBieSBZb3UgdG8gdGhlIExpY2Vuc29yIHNoYWxsIGJlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICB0aGlzIExpY2Vuc2UsIHdpdGhvdXQgYW55IGFkZGl0aW9uYWwgdGVybXMgb3IgY29uZGl0aW9ucy4KICAgICAgTm90d2l0aHN0YW5kaW5nIHRoZSBhYm92ZSwgbm90aGluZyBoZXJlaW4gc2hhbGwgc3VwZXJzZWRlIG9yIG1vZGlmeQogICAgICB0aGUgdGVybXMgb2YgYW55IHNlcGFyYXRlIGxpY2Vuc2UgYWdyZWVtZW50IHlvdSBtYXkgaGF2ZSBleGVjdXRlZAogICAgICB3aXRoIExpY2Vuc29yIHJlZ2FyZGluZyBzdWNoIENvbnRyaWJ1dGlvbnMuCgogICA2LiBUcmFkZW1hcmtzLiBUaGlzIExpY2Vuc2UgZG9lcyBub3QgZ3JhbnQgcGVybWlzc2lvbiB0byB1c2UgdGhlIHRyYWRlCiAgICAgIG5hbWVzLCB0cmFkZW1hcmtzLCBzZXJ2aWNlIG1hcmtzLCBvciBwcm9kdWN0IG5hbWVzIG9mIHRoZSBMaWNlbnNvciwKICAgICAgZXhjZXB0IGFzIHJlcXVpcmVkIGZvciByZWFzb25hYmxlIGFuZCBjdXN0b21hcnkgdXNlIGluIGRlc2NyaWJpbmcgdGhlCiAgICAgIG9yaWdpbiBvZiB0aGUgV29yayBhbmQgcmVwcm9kdWNpbmcgdGhlIGNvbnRlbnQgb2YgdGhlIE5PVElDRSBmaWxlLgoKICAgNy4gRGlzY2xhaW1lciBvZiBXYXJyYW50eS4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yCiAgICAgIGFncmVlZCB0byBpbiB3cml0aW5nLCBMaWNlbnNvciBwcm92aWRlcyB0aGUgV29yayAoYW5kIGVhY2gKICAgICAgQ29udHJpYnV0b3IgcHJvdmlkZXMgaXRzIENvbnRyaWJ1dGlvbnMpIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgogICAgICBpbXBsaWVkLCBpbmNsdWRpbmcsIHdpdGhvdXQgbGltaXRhdGlvbiwgYW55IHdhcnJhbnRpZXMgb3IgY29uZGl0aW9ucwogICAgICBvZiBUSVRMRSwgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZLCBvciBGSVRORVNTIEZPUiBBCiAgICAgIFBBUlRJQ1VMQVIgUFVSUE9TRS4gWW91IGFyZSBzb2xlbHkgcmVzcG9uc2libGUgZm9yIGRldGVybWluaW5nIHRoZQogICAgICBhcHByb3ByaWF0ZW5lc3Mgb2YgdXNpbmcgb3IgcmVkaXN0cmlidXRpbmcgdGhlIFdvcmsgYW5kIGFzc3VtZSBhbnkKICAgICAgcmlza3MgYXNzb2NpYXRlZCB3aXRoIFlvdXIgZXhlcmNpc2Ugb2YgcGVybWlzc2lvbnMgdW5kZXIgdGhpcyBMaWNlbnNlLgoKICAgOC4gTGltaXRhdGlvbiBvZiBMaWFiaWxpdHkuIEluIG5vIGV2ZW50IGFuZCB1bmRlciBubyBsZWdhbCB0aGVvcnksCiAgICAgIHdoZXRoZXIgaW4gdG9ydCAoaW5jbHVkaW5nIG5lZ2xpZ2VuY2UpLCBjb250cmFjdCwgb3Igb3RoZXJ3aXNlLAogICAgICB1bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgKHN1Y2ggYXMgZGVsaWJlcmF0ZSBhbmQgZ3Jvc3NseQogICAgICBuZWdsaWdlbnQgYWN0cykgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNoYWxsIGFueSBDb250cmlidXRvciBiZQogICAgICBsaWFibGUgdG8gWW91IGZvciBkYW1hZ2VzLCBpbmNsdWRpbmcgYW55IGRpcmVjdCwgaW5kaXJlY3QsIHNwZWNpYWwsCiAgICAgIGluY2lkZW50YWwsIG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvZiBhbnkgY2hhcmFjdGVyIGFyaXNpbmcgYXMgYQogICAgICByZXN1bHQgb2YgdGhpcyBMaWNlbnNlIG9yIG91dCBvZiB0aGUgdXNlIG9yIGluYWJpbGl0eSB0byB1c2UgdGhlCiAgICAgIFdvcmsgKGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gZGFtYWdlcyBmb3IgbG9zcyBvZiBnb29kd2lsbCwKICAgICAgd29yayBzdG9wcGFnZSwgY29tcHV0ZXIgZmFpbHVyZSBvciBtYWxmdW5jdGlvbiwgb3IgYW55IGFuZCBhbGwKICAgICAgb3RoZXIgY29tbWVyY2lhbCBkYW1hZ2VzIG9yIGxvc3NlcyksIGV2ZW4gaWYgc3VjaCBDb250cmlidXRvcgogICAgICBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiBzdWNoIGRhbWFnZXMuCgogICA5LiBBY2NlcHRpbmcgV2FycmFudHkgb3IgQWRkaXRpb25hbCBMaWFiaWxpdHkuIFdoaWxlIHJlZGlzdHJpYnV0aW5nCiAgICAgIHRoZSBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgWW91IG1heSBjaG9vc2UgdG8gb2ZmZXIsCiAgICAgIGFuZCBjaGFyZ2UgYSBmZWUgZm9yLCBhY2NlcHRhbmNlIG9mIHN1cHBvcnQsIHdhcnJhbnR5LCBpbmRlbW5pdHksCiAgICAgIG9yIG90aGVyIGxpYWJpbGl0eSBvYmxpZ2F0aW9ucyBhbmQvb3IgcmlnaHRzIGNvbnNpc3RlbnQgd2l0aCB0aGlzCiAgICAgIExpY2Vuc2UuIEhvd2V2ZXIsIGluIGFjY2VwdGluZyBzdWNoIG9ibGlnYXRpb25zLCBZb3UgbWF5IGFjdCBvbmx5CiAgICAgIG9uIFlvdXIgb3duIGJlaGFsZiBhbmQgb24gWW91ciBzb2xlIHJlc3BvbnNpYmlsaXR5LCBub3Qgb24gYmVoYWxmCiAgICAgIG9mIGFueSBvdGhlciBDb250cmlidXRvciwgYW5kIG9ubHkgaWYgWW91IGFncmVlIHRvIGluZGVtbmlmeSwKICAgICAgZGVmZW5kLCBhbmQgaG9sZCBlYWNoIENvbnRyaWJ1dG9yIGhhcm1sZXNzIGZvciBhbnkgbGlhYmlsaXR5CiAgICAgIGluY3VycmVkIGJ5LCBvciBjbGFpbXMgYXNzZXJ0ZWQgYWdhaW5zdCwgc3VjaCBDb250cmlidXRvciBieSByZWFzb24KICAgICAgb2YgeW91ciBhY2NlcHRpbmcgYW55IHN1Y2ggd2FycmFudHkgb3IgYWRkaXRpb25hbCBsaWFiaWxpdHkuCgogICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKCiAgIEFQUEVORElYOiBIb3cgdG8gYXBwbHkgdGhlIEFwYWNoZSBMaWNlbnNlIHRvIHlvdXIgd29yay4KCiAgICAgIFRvIGFwcGx5IHRoZSBBcGFjaGUgTGljZW5zZSB0byB5b3VyIHdvcmssIGF0dGFjaCB0aGUgZm9sbG93aW5nCiAgICAgIGJvaWxlcnBsYXRlIG5vdGljZSwgd2l0aCB0aGUgZmllbGRzIGVuY2xvc2VkIGJ5IGJyYWNrZXRzICJbXSIKICAgICAgcmVwbGFjZWQgd2l0aCB5b3VyIG93biBpZGVudGlmeWluZyBpbmZvcm1hdGlvbi4gKERvbid0IGluY2x1ZGUKICAgICAgdGhlIGJyYWNrZXRzISkgIFRoZSB0ZXh0IHNob3VsZCBiZSBlbmNsb3NlZCBpbiB0aGUgYXBwcm9wcmlhdGUKICAgICAgY29tbWVudCBzeW50YXggZm9yIHRoZSBmaWxlIGZvcm1hdC4gV2UgYWxzbyByZWNvbW1lbmQgdGhhdCBhCiAgICAgIGZpbGUgb3IgY2xhc3MgbmFtZSBhbmQgZGVzY3JpcHRpb24gb2YgcHVycG9zZSBiZSBpbmNsdWRlZCBvbiB0aGUKICAgICAgc2FtZSAicHJpbnRlZCBwYWdlIiBhcyB0aGUgY29weXJpZ2h0IG5vdGljZSBmb3IgZWFzaWVyCiAgICAgIGlkZW50aWZpY2F0aW9uIHdpdGhpbiB0aGlyZC1wYXJ0eSBhcmNoaXZlcy4KCiAgIENvcHlyaWdodCBbeXl5eV0gW25hbWUgb2YgY29weXJpZ2h0IG93bmVyXQoKICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgo= pkg:pypi/license-expression@30.3.0 @@ -1280,69 +318,11 @@ https://www.contributor-covenant.org/version/1/4/code-of-conduct.html declared license file: LICENSE.txt - Copyright (c) 2004 Infrae. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - 3. Neither the name of Infrae nor the names of its contributors may - be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INFRAE OR -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - + Q29weXJpZ2h0IChjKSAyMDA0IEluZnJhZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAgIAogIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCiAgICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQogICAgIGRpc3RyaWJ1dGlvbi4KCiAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBJbmZyYWUgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heQogICAgIGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCiAgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCgpUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCiJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgpBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgSU5GUkFFIE9SCkNPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLApFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sClBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgpQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GCkxJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCk5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwpTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K declared license file: LICENSES.txt - lxml is copyright Infrae and distributed under the BSD license (see -doc/licenses/BSD.txt), with the following exceptions: - -Some code, such a selftest.py, selftest2.py and -src/lxml/_elementpath.py are derived from ElementTree and -cElementTree. See doc/licenses/elementtree.txt for the license text. - -lxml.cssselect and lxml.html are copyright Ian Bicking and distributed -under the BSD license (see doc/licenses/BSD.txt). - -test.py, the test-runner script, is GPL and copyright Shuttleworth -Foundation. See doc/licenses/GPL.txt. It is believed the unchanged -inclusion of test.py to run the unit test suite falls under the -"aggregation" clause of the GPL and thus does not affect the license -of the rest of the package. - -The isoschematron implementation uses several XSL and RelaxNG resources: - * The (XML syntax) RelaxNG schema for schematron, copyright International - Organization for Standardization (see - src/lxml/isoschematron/resources/rng/iso-schematron.rng for the license - text) - * The skeleton iso-schematron-xlt1 pure-xslt schematron implementation - xsl stylesheets, copyright Rick Jelliffe and Academia Sinica Computing - Center, Taiwan (see the xsl files here for the license text: - src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/) - * The xsd/rng schema schematron extraction xsl transformations are unlicensed - and copyright the respective authors as noted (see - src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl and - src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl) - + bHhtbCBpcyBjb3B5cmlnaHQgSW5mcmFlIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgQlNEIGxpY2Vuc2UgKHNlZQpkb2MvbGljZW5zZXMvQlNELnR4dCksIHdpdGggdGhlIGZvbGxvd2luZyBleGNlcHRpb25zOgoKU29tZSBjb2RlLCBzdWNoIGEgc2VsZnRlc3QucHksIHNlbGZ0ZXN0Mi5weSBhbmQKc3JjL2x4bWwvX2VsZW1lbnRwYXRoLnB5IGFyZSBkZXJpdmVkIGZyb20gRWxlbWVudFRyZWUgYW5kCmNFbGVtZW50VHJlZS4gU2VlIGRvYy9saWNlbnNlcy9lbGVtZW50dHJlZS50eHQgZm9yIHRoZSBsaWNlbnNlIHRleHQuCgpseG1sLmNzc3NlbGVjdCBhbmQgbHhtbC5odG1sIGFyZSBjb3B5cmlnaHQgSWFuIEJpY2tpbmcgYW5kIGRpc3RyaWJ1dGVkCnVuZGVyIHRoZSBCU0QgbGljZW5zZSAoc2VlIGRvYy9saWNlbnNlcy9CU0QudHh0KS4KCnRlc3QucHksIHRoZSB0ZXN0LXJ1bm5lciBzY3JpcHQsIGlzIEdQTCBhbmQgY29weXJpZ2h0IFNodXR0bGV3b3J0aApGb3VuZGF0aW9uLiBTZWUgZG9jL2xpY2Vuc2VzL0dQTC50eHQuIEl0IGlzIGJlbGlldmVkIHRoZSB1bmNoYW5nZWQKaW5jbHVzaW9uIG9mIHRlc3QucHkgdG8gcnVuIHRoZSB1bml0IHRlc3Qgc3VpdGUgZmFsbHMgdW5kZXIgdGhlCiJhZ2dyZWdhdGlvbiIgY2xhdXNlIG9mIHRoZSBHUEwgYW5kIHRodXMgZG9lcyBub3QgYWZmZWN0IHRoZSBsaWNlbnNlCm9mIHRoZSByZXN0IG9mIHRoZSBwYWNrYWdlLgoKVGhlIGlzb3NjaGVtYXRyb24gaW1wbGVtZW50YXRpb24gdXNlcyBzZXZlcmFsIFhTTCBhbmQgUmVsYXhORyByZXNvdXJjZXM6CiAqIFRoZSAoWE1MIHN5bnRheCkgUmVsYXhORyBzY2hlbWEgZm9yIHNjaGVtYXRyb24sIGNvcHlyaWdodCBJbnRlcm5hdGlvbmFsCiAgIE9yZ2FuaXphdGlvbiBmb3IgU3RhbmRhcmRpemF0aW9uIChzZWUgCiAgIHNyYy9seG1sL2lzb3NjaGVtYXRyb24vcmVzb3VyY2VzL3JuZy9pc28tc2NoZW1hdHJvbi5ybmcgZm9yIHRoZSBsaWNlbnNlCiAgIHRleHQpCiAqIFRoZSBza2VsZXRvbiBpc28tc2NoZW1hdHJvbi14bHQxIHB1cmUteHNsdCBzY2hlbWF0cm9uIGltcGxlbWVudGF0aW9uCiAgIHhzbCBzdHlsZXNoZWV0cywgY29weXJpZ2h0IFJpY2sgSmVsbGlmZmUgYW5kIEFjYWRlbWlhIFNpbmljYSBDb21wdXRpbmcKICAgQ2VudGVyLCBUYWl3YW4gKHNlZSB0aGUgeHNsIGZpbGVzIGhlcmUgZm9yIHRoZSBsaWNlbnNlIHRleHQ6IAogICBzcmMvbHhtbC9pc29zY2hlbWF0cm9uL3Jlc291cmNlcy94c2wvaXNvLXNjaGVtYXRyb24teHNsdDEvKQogKiBUaGUgeHNkL3JuZyBzY2hlbWEgc2NoZW1hdHJvbiBleHRyYWN0aW9uIHhzbCB0cmFuc2Zvcm1hdGlvbnMgYXJlIHVubGljZW5zZWQKICAgYW5kIGNvcHlyaWdodCB0aGUgcmVzcGVjdGl2ZSBhdXRob3JzIGFzIG5vdGVkIChzZWUgCiAgIHNyYy9seG1sL2lzb3NjaGVtYXRyb24vcmVzb3VyY2VzL3hzbC9STkcyU2NodHJuLnhzbCBhbmQKICAgc3JjL2x4bWwvaXNvc2NoZW1hdHJvbi9yZXNvdXJjZXMveHNsL1hTRDJTY2h0cm4ueHNsKQo= pkg:pypi/lxml@5.3.0 @@ -1360,44 +340,6 @@ The isoschematron implementation uses several XSL and RelaxNG resources: regression-issue868 0.1 - - - declared license file: my_licenses/richtext.rtf - e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA= - - - declared license file: my_licenses/utf-16be_withBOM.txt - this file is -utf-16be encoded -with BOM -😃 - - - - declared license file: my_licenses/utf-16le_withBOM.txt - this file is -utf-16le encoded -with BOM -😃 - - - - declared license file: my_licenses/utf-8_noBOM.txt - this file is -utf-8 encoded -without BOM -😃 - - - - declared license file: my_licenses/utf-8_withBOM.txt - this file is -utf-8 encoded -with BOM -😃 - - - file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 @@ -1409,6 +351,7 @@ with BOM + diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.json.bin index 15314e638..34bb4681f 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.json.bin @@ -36,16 +36,6 @@ "acknowledgement": "declared", "id": "MIT" } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: LICENSE", - "text": { - "content": "The MIT License (MIT)\n\nCopyright (c) 2015 Hynek Schlawack and the attrs contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n", - "contentType": "text/plain" - } - } } ], "name": "attrs", @@ -75,8 +65,9 @@ "acknowledgement": "declared", "name": "declared license file: CHANGELOG.rst", "text": { - "content": "\nChangelog\n=========\n\n\nnext\n----\n\n\n4.0 (2022-05-05)\n----------------\n\n* API changes\n\n * Drop support for Python 2.\n * Test on Python 3.10\n * Make Expression.sort_order an instance attributes and not a class attribute\n\n* Misc.\n\n * Correct licensing documentation\n * Improve docstringf and apply minor refactorings\n * Adopt black code style and isort for imports\n * Drop Travis and use GitHub actions for CI\n\n\n3.8 (2020-06-10)\n----------------\n\n* API changes\n\n * Add support for evaluation of boolean expression.\n Thank you to Lars van Gemerden @gemerden\n\n* Bug fixes\n\n * Fix parsing of tokens that have a number as the first character. \n Thank you to Jeff Cohen @ jcohen28\n * Restore proper Python 2 compatibility. \n Thank you to Benjy Weinberger @benjyw\n\n* Improve documentation\n\n * Add pointers to Linux distro packages.\n Thank you to Max Mehl @mxmehl and Carmen Bianca Bakker @carmenbianca\n * Fix typo.\n Thank you to Gabriel Niebler @der-gabe\n\n\n3.7 (2019-10-04)\n----------------\n\n* API changes\n\n * Add new sort argument to simplify() to optionally not sort when simplifying\n expressions (e.g. not applying \"commutativity\"). Thank you to Steven Esser\n @majurg for this\n * Add new argument to tokenizer to optionally accept extra characters in symbol\n tokens. Thank you to @carpie for this\n\n\n3.6 (2018-08-06)\n----------------\n\n* No API changes\n\n* Bug fixes\n\n * Fix De Morgan's laws effect on double negation propositions. Thank you to Douglas Cardoso for this\n * Improve error checking when parsing\n\n\n3.5 (Nov 1, 2017)\n-----------------\n\n* No API changes\n\n* Bug fixes\n\n * Documentation updates and add testing for Python 3.6. Thank you to Alexander Lisianoi @alisianoi\n * Improve testng and expression equivalence checks\n * Improve subs() method to an expression \n\n \n\n3.4 (May 12, 2017)\n------------------\n\n* No API changes\n\n* Bug fixes and improvements\n\n * Fix various documentation typos and improve tests . Thank you to Alexander Lisianoi @alisianoi\n * Fix handling for literals vs. symbols in negations Thank you to @YaronK\n\n\n3.3 (2017-02-09)\n----------------\n\n* API changes\n\n * #40 and #50 Expression.subs() now takes 'default' thanks to @kronuz\n * #45 simplify=False is now the default for parse and related functions or methods.\n * #40 Use \"&\" and \"|\" as default operators\n\n* Bug fixes\n\n * #60 Fix bug for \"a or b c\" which is not a valid expression\n * #58 Fix math formula display in docs\n * Improve handling of parse errors\n\n\n2.0.0 (2016-05-11)\n------------------\n\n* API changes\n\n * New algebra definition. Refactored class hierarchy. Improved parsing.\n\n* New features\n\n * possibility to subclass algebra definition\n * new normal forms shortcuts for DNF and CNF.\n\n\n1.1 (2016-04-06)\n------------------\n\n* Initial release on Pypi.\n", - "contentType": "text/prs.fallenstein.rst" + "content": "CkNoYW5nZWxvZwo9PT09PT09PT0KCgpuZXh0Ci0tLS0KCgo0LjAgKDIwMjItMDUtMDUpCi0tLS0tLS0tLS0tLS0tLS0KCiogQVBJIGNoYW5nZXMKCiAqIERyb3Agc3VwcG9ydCBmb3IgUHl0aG9uIDIuCiAqIFRlc3Qgb24gUHl0aG9uIDMuMTAKICogTWFrZSBFeHByZXNzaW9uLnNvcnRfb3JkZXIgYW4gaW5zdGFuY2UgYXR0cmlidXRlcyBhbmQgbm90IGEgY2xhc3MgYXR0cmlidXRlCgoqIE1pc2MuCgogKiBDb3JyZWN0IGxpY2Vuc2luZyBkb2N1bWVudGF0aW9uCiAqIEltcHJvdmUgZG9jc3RyaW5nZiBhbmQgYXBwbHkgbWlub3IgcmVmYWN0b3JpbmdzCiAqIEFkb3B0IGJsYWNrIGNvZGUgc3R5bGUgYW5kIGlzb3J0IGZvciBpbXBvcnRzCiAqIERyb3AgVHJhdmlzIGFuZCB1c2UgR2l0SHViIGFjdGlvbnMgZm9yIENJCgoKMy44ICgyMDIwLTA2LTEwKQotLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiBBZGQgc3VwcG9ydCBmb3IgZXZhbHVhdGlvbiBvZiBib29sZWFuIGV4cHJlc3Npb24uCiAgIFRoYW5rIHlvdSB0byBMYXJzIHZhbiBHZW1lcmRlbiBAZ2VtZXJkZW4KCiogQnVnIGZpeGVzCgogKiBGaXggcGFyc2luZyBvZiB0b2tlbnMgdGhhdCBoYXZlIGEgbnVtYmVyIGFzIHRoZSBmaXJzdCBjaGFyYWN0ZXIuIAogICBUaGFuayB5b3UgdG8gSmVmZiBDb2hlbiBAIGpjb2hlbjI4CiAqIFJlc3RvcmUgcHJvcGVyIFB5dGhvbiAyIGNvbXBhdGliaWxpdHkuIAogICBUaGFuayB5b3UgdG8gQmVuankgV2VpbmJlcmdlciBAYmVuanl3CgoqIEltcHJvdmUgZG9jdW1lbnRhdGlvbgoKICogQWRkIHBvaW50ZXJzIHRvIExpbnV4IGRpc3RybyBwYWNrYWdlcy4KICAgVGhhbmsgeW91IHRvIE1heCBNZWhsIEBteG1laGwgYW5kIENhcm1lbiBCaWFuY2EgQmFra2VyIEBjYXJtZW5iaWFuY2EKICogRml4IHR5cG8uCiAgIFRoYW5rIHlvdSB0byBHYWJyaWVsIE5pZWJsZXIgQGRlci1nYWJlCgoKMy43ICgyMDE5LTEwLTA0KQotLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiBBZGQgbmV3IHNvcnQgYXJndW1lbnQgdG8gc2ltcGxpZnkoKSB0byBvcHRpb25hbGx5IG5vdCBzb3J0IHdoZW4gc2ltcGxpZnlpbmcKICAgZXhwcmVzc2lvbnMgKGUuZy4gbm90IGFwcGx5aW5nICJjb21tdXRhdGl2aXR5IikuIFRoYW5rIHlvdSB0byBTdGV2ZW4gRXNzZXIKICAgQG1hanVyZyBmb3IgdGhpcwogKiBBZGQgbmV3IGFyZ3VtZW50IHRvIHRva2VuaXplciB0byBvcHRpb25hbGx5IGFjY2VwdCBleHRyYSBjaGFyYWN0ZXJzIGluIHN5bWJvbAogICB0b2tlbnMuIFRoYW5rIHlvdSB0byBAY2FycGllIGZvciB0aGlzCgoKMy42ICgyMDE4LTA4LTA2KQotLS0tLS0tLS0tLS0tLS0tCgoqIE5vIEFQSSBjaGFuZ2VzCgoqIEJ1ZyBmaXhlcwoKICogRml4IERlIE1vcmdhbidzIGxhd3MgZWZmZWN0IG9uIGRvdWJsZSBuZWdhdGlvbiBwcm9wb3NpdGlvbnMuIFRoYW5rIHlvdSB0byBEb3VnbGFzIENhcmRvc28gZm9yIHRoaXMKICogSW1wcm92ZSBlcnJvciBjaGVja2luZyB3aGVuIHBhcnNpbmcKCgozLjUgKE5vdiAxLCAyMDE3KQotLS0tLS0tLS0tLS0tLS0tLQoKKiBObyBBUEkgY2hhbmdlcwoKKiBCdWcgZml4ZXMKCiAqIERvY3VtZW50YXRpb24gdXBkYXRlcyBhbmQgYWRkIHRlc3RpbmcgZm9yIFB5dGhvbiAzLjYuIFRoYW5rIHlvdSB0byBBbGV4YW5kZXIgTGlzaWFub2kgQGFsaXNpYW5vaQogKiBJbXByb3ZlIHRlc3RuZyBhbmQgZXhwcmVzc2lvbiBlcXVpdmFsZW5jZSBjaGVja3MKICogSW1wcm92ZSBzdWJzKCkgbWV0aG9kIHRvIGFuIGV4cHJlc3Npb24gCgogCgozLjQgKE1heSAxMiwgMjAxNykKLS0tLS0tLS0tLS0tLS0tLS0tCgoqIE5vIEFQSSBjaGFuZ2VzCgoqIEJ1ZyBmaXhlcyBhbmQgaW1wcm92ZW1lbnRzCgogKiBGaXggdmFyaW91cyBkb2N1bWVudGF0aW9uIHR5cG9zIGFuZCBpbXByb3ZlIHRlc3RzIC4gVGhhbmsgeW91IHRvIEFsZXhhbmRlciBMaXNpYW5vaSBAYWxpc2lhbm9pCiAqIEZpeCBoYW5kbGluZyBmb3IgbGl0ZXJhbHMgdnMuIHN5bWJvbHMgaW4gbmVnYXRpb25zIFRoYW5rIHlvdSB0byBAWWFyb25LCgoKMy4zICgyMDE3LTAyLTA5KQotLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiAjNDAgYW5kICM1MCBFeHByZXNzaW9uLnN1YnMoKSBub3cgdGFrZXMgJ2RlZmF1bHQnIHRoYW5rcyB0byBAa3JvbnV6CiAqICM0NSBzaW1wbGlmeT1GYWxzZSBpcyBub3cgdGhlIGRlZmF1bHQgZm9yIHBhcnNlIGFuZCByZWxhdGVkIGZ1bmN0aW9ucyBvciBtZXRob2RzLgogKiAjNDAgVXNlICImIiBhbmQgInwiIGFzIGRlZmF1bHQgb3BlcmF0b3JzCgoqIEJ1ZyBmaXhlcwoKICogIzYwIEZpeCBidWcgZm9yICJhIG9yIGIgYyIgd2hpY2ggaXMgbm90IGEgdmFsaWQgZXhwcmVzc2lvbgogKiAjNTggRml4IG1hdGggZm9ybXVsYSBkaXNwbGF5IGluIGRvY3MKICogSW1wcm92ZSBoYW5kbGluZyBvZiBwYXJzZSBlcnJvcnMKCgoyLjAuMCAoMjAxNi0wNS0xMSkKLS0tLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiBOZXcgYWxnZWJyYSBkZWZpbml0aW9uLiBSZWZhY3RvcmVkIGNsYXNzIGhpZXJhcmNoeS4gSW1wcm92ZWQgcGFyc2luZy4KCiogTmV3IGZlYXR1cmVzCgogKiBwb3NzaWJpbGl0eSB0byBzdWJjbGFzcyBhbGdlYnJhIGRlZmluaXRpb24KICogbmV3IG5vcm1hbCBmb3JtcyBzaG9ydGN1dHMgZm9yIERORiBhbmQgQ05GLgoKCjEuMSAoMjAxNi0wNC0wNikKLS0tLS0tLS0tLS0tLS0tLS0tCgoqIEluaXRpYWwgcmVsZWFzZSBvbiBQeXBpLgo=", + "contentType": "text/prs.fallenstein.rst", + "encoding": "base64" } } }, @@ -85,8 +76,9 @@ "acknowledgement": "declared", "name": "declared license file: LICENSE.txt", "text": { - "content": "Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice, this\nlist of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice,\nthis list of conditions and the following disclaimer in the documentation and/or\nother materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" + "content": "Q29weXJpZ2h0IChjKSBTZWJhc3RpYW4gS3JhZW1lciwgYmFzdGkua3JAZ21haWwuY29tIGFuZCBvdGhlcnMKQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCmFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKCjEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcwpsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KCjIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3IKb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQpESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgpBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwpMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCg==", + "contentType": "text/plain", + "encoding": "base64" } } }, @@ -95,8 +87,9 @@ "acknowledgement": "declared", "name": "declared license file: README.rst", "text": { - "content": "boolean.py\n==========\n\n\"boolean.py\" is a small library implementing a boolean algebra. It\ndefines two base elements, TRUE and FALSE, and a Symbol class that can\ntake on one of these two values. Calculations are done in terms of AND,\nOR and NOT - other compositions like XOR and NAND are not implemented\nbut can be emulated with AND or and NOT. Expressions are constructed\nfrom parsed strings or in Python.\n\nIt runs on Python 3.6+\nYou can use older version 3.x for Python 2.7+ support.\n\nhttps://github.com/bastikr/boolean.py\n\nBuild status: |Build Status|\n\n\nExample\n-------\n\n::\n\n >>> import boolean\n >>> algebra = boolean.BooleanAlgebra()\n >>> expression1 = algebra.parse(u'apple and (oranges or banana) and not banana', simplify=False)\n >>> expression1\n AND(Symbol('apple'), OR(Symbol('oranges'), Symbol('banana')), NOT(Symbol('banana')))\n\n >>> expression2 = algebra.parse('(oranges | banana) and not banana & apple', simplify=True)\n >>> expression2\n AND(Symbol('apple'), NOT(Symbol('banana')), Symbol('oranges'))\n\n >>> expression1 == expression2\n False\n >>> expression1.simplify() == expression2\n True\n\n\nDocumentation\n-------------\n\nhttp://readthedocs.org/docs/booleanpy/en/latest/\n\n\nInstallation\n------------\n\nInstallation via pip\n~~~~~~~~~~~~~~~~~~~~\n\nTo install boolean.py, you need to have the following pieces of software\non your computer:\n\n- Python 3.6+\n- pip\n\nYou then only need to run the following command:\n\n``pip install boolean.py``\n\n\nInstallation via package managers\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThere are packages available for easy install on some operating systems.\nYou are welcome to help us package this tool for more distributions!\n\n- boolean.py has been packaged as Arch Linux, Fedora, openSus,\n nixpkgs, Guix, DragonFly and FreeBSD \n `packages `__ .\n\nIn particular:\n\n- Arch Linux (AUR):\n `python-boolean.py `__\n- Fedora:\n `python-boolean.py `__\n- openSUSE:\n `python-boolean.py `__\n\n\nTesting\n-------\n\nTest ``boolean.py`` with your current Python environment:\n\n``python setup.py test``\n\nTest with all of the supported Python environments using ``tox``:\n\n::\n\n pip install -r requirements-dev.txt\n tox\n\nIf ``tox`` throws ``InterpreterNotFound``, limit it to python\ninterpreters that are actually installed on your machine:\n\n::\n\n tox -e py36\n\nAlternatively use pytest.\n\n\nLicense\n-------\n\nCopyright (c) Sebastian Kraemer, basti.kr@gmail.com and others\nSPDX-License-Identifier: BSD-2-Clause\n\n.. |Build Status| image:: https://travis-ci.org/bastikr/boolean.py.svg?branch=master\n :target: https://travis-ci.org/bastikr/boolean.py\n", - "contentType": "text/prs.fallenstein.rst" + "content": "Ym9vbGVhbi5weQo9PT09PT09PT09CgoiYm9vbGVhbi5weSIgaXMgYSBzbWFsbCBsaWJyYXJ5IGltcGxlbWVudGluZyBhIGJvb2xlYW4gYWxnZWJyYS4gSXQKZGVmaW5lcyB0d28gYmFzZSBlbGVtZW50cywgVFJVRSBhbmQgRkFMU0UsIGFuZCBhIFN5bWJvbCBjbGFzcyB0aGF0IGNhbgp0YWtlIG9uIG9uZSBvZiB0aGVzZSB0d28gdmFsdWVzLiBDYWxjdWxhdGlvbnMgYXJlIGRvbmUgaW4gdGVybXMgb2YgQU5ELApPUiBhbmQgTk9UIC0gb3RoZXIgY29tcG9zaXRpb25zIGxpa2UgWE9SIGFuZCBOQU5EIGFyZSBub3QgaW1wbGVtZW50ZWQKYnV0IGNhbiBiZSBlbXVsYXRlZCB3aXRoIEFORCBvciBhbmQgTk9ULiBFeHByZXNzaW9ucyBhcmUgY29uc3RydWN0ZWQKZnJvbSBwYXJzZWQgc3RyaW5ncyBvciBpbiBQeXRob24uCgpJdCBydW5zIG9uIFB5dGhvbiAzLjYrCllvdSBjYW4gdXNlIG9sZGVyIHZlcnNpb24gMy54IGZvciBQeXRob24gMi43KyBzdXBwb3J0LgoKaHR0cHM6Ly9naXRodWIuY29tL2Jhc3Rpa3IvYm9vbGVhbi5weQoKQnVpbGQgc3RhdHVzOiB8QnVpbGQgU3RhdHVzfAoKCkV4YW1wbGUKLS0tLS0tLQoKOjoKCiAgICA+Pj4gaW1wb3J0IGJvb2xlYW4KICAgID4+PiBhbGdlYnJhID0gYm9vbGVhbi5Cb29sZWFuQWxnZWJyYSgpCiAgICA+Pj4gZXhwcmVzc2lvbjEgPSBhbGdlYnJhLnBhcnNlKHUnYXBwbGUgYW5kIChvcmFuZ2VzIG9yIGJhbmFuYSkgYW5kIG5vdCBiYW5hbmEnLCBzaW1wbGlmeT1GYWxzZSkKICAgID4+PiBleHByZXNzaW9uMQogICAgQU5EKFN5bWJvbCgnYXBwbGUnKSwgT1IoU3ltYm9sKCdvcmFuZ2VzJyksIFN5bWJvbCgnYmFuYW5hJykpLCBOT1QoU3ltYm9sKCdiYW5hbmEnKSkpCgogICAgPj4+IGV4cHJlc3Npb24yID0gYWxnZWJyYS5wYXJzZSgnKG9yYW5nZXMgfCBiYW5hbmEpIGFuZCBub3QgYmFuYW5hICYgYXBwbGUnLCBzaW1wbGlmeT1UcnVlKQogICAgPj4+IGV4cHJlc3Npb24yCiAgICBBTkQoU3ltYm9sKCdhcHBsZScpLCBOT1QoU3ltYm9sKCdiYW5hbmEnKSksIFN5bWJvbCgnb3JhbmdlcycpKQoKICAgID4+PiBleHByZXNzaW9uMSA9PSBleHByZXNzaW9uMgogICAgRmFsc2UKICAgID4+PiBleHByZXNzaW9uMS5zaW1wbGlmeSgpID09IGV4cHJlc3Npb24yCiAgICBUcnVlCgoKRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tCgpodHRwOi8vcmVhZHRoZWRvY3Mub3JnL2RvY3MvYm9vbGVhbnB5L2VuL2xhdGVzdC8KCgpJbnN0YWxsYXRpb24KLS0tLS0tLS0tLS0tCgpJbnN0YWxsYXRpb24gdmlhIHBpcAp+fn5+fn5+fn5+fn5+fn5+fn5+fgoKVG8gaW5zdGFsbCBib29sZWFuLnB5LCB5b3UgbmVlZCB0byBoYXZlIHRoZSBmb2xsb3dpbmcgcGllY2VzIG9mIHNvZnR3YXJlCm9uIHlvdXIgY29tcHV0ZXI6CgotICBQeXRob24gMy42KwotICBwaXAKCllvdSB0aGVuIG9ubHkgbmVlZCB0byBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kOgoKYGBwaXAgaW5zdGFsbCBib29sZWFuLnB5YGAKCgpJbnN0YWxsYXRpb24gdmlhIHBhY2thZ2UgbWFuYWdlcnMKfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgpUaGVyZSBhcmUgcGFja2FnZXMgYXZhaWxhYmxlIGZvciBlYXN5IGluc3RhbGwgb24gc29tZSBvcGVyYXRpbmcgc3lzdGVtcy4KWW91IGFyZSB3ZWxjb21lIHRvIGhlbHAgdXMgcGFja2FnZSB0aGlzIHRvb2wgZm9yIG1vcmUgZGlzdHJpYnV0aW9ucyEKCi0gIGJvb2xlYW4ucHkgaGFzIGJlZW4gcGFja2FnZWQgYXMgQXJjaCBMaW51eCwgRmVkb3JhLCBvcGVuU3VzLAogICBuaXhwa2dzLCBHdWl4LCBEcmFnb25GbHkgYW5kIEZyZWVCU0QgCiAgIGBwYWNrYWdlcyA8aHR0cHM6Ly9yZXBvbG9neS5vcmcvcHJvamVjdC9weXRob246Ym9vbGVhbi5weS92ZXJzaW9ucz5gX18gLgoKSW4gcGFydGljdWxhcjoKCi0gIEFyY2ggTGludXggKEFVUik6CiAgIGBweXRob24tYm9vbGVhbi5weSA8aHR0cHM6Ly9hdXIuYXJjaGxpbnV4Lm9yZy9wYWNrYWdlcy9weXRob24tYm9vbGVhbi5weS8+YF9fCi0gIEZlZG9yYToKICAgYHB5dGhvbi1ib29sZWFuLnB5IDxodHRwczovL2FwcHMuZmVkb3JhcHJvamVjdC5vcmcvcGFja2FnZXMvcHl0aG9uLWJvb2xlYW4ucHk+YF9fCi0gIG9wZW5TVVNFOgogICBgcHl0aG9uLWJvb2xlYW4ucHkgPGh0dHBzOi8vc29mdHdhcmUub3BlbnN1c2Uub3JnL3BhY2thZ2UvcHl0aG9uLWJvb2xlYW4ucHk+YF9fCgoKVGVzdGluZwotLS0tLS0tCgpUZXN0IGBgYm9vbGVhbi5weWBgIHdpdGggeW91ciBjdXJyZW50IFB5dGhvbiBlbnZpcm9ubWVudDoKCmBgcHl0aG9uIHNldHVwLnB5IHRlc3RgYAoKVGVzdCB3aXRoIGFsbCBvZiB0aGUgc3VwcG9ydGVkIFB5dGhvbiBlbnZpcm9ubWVudHMgdXNpbmcgYGB0b3hgYDoKCjo6CgogICAgcGlwIGluc3RhbGwgLXIgcmVxdWlyZW1lbnRzLWRldi50eHQKICAgIHRveAoKSWYgYGB0b3hgYCB0aHJvd3MgYGBJbnRlcnByZXRlck5vdEZvdW5kYGAsIGxpbWl0IGl0IHRvIHB5dGhvbgppbnRlcnByZXRlcnMgdGhhdCBhcmUgYWN0dWFsbHkgaW5zdGFsbGVkIG9uIHlvdXIgbWFjaGluZToKCjo6CgogICAgdG94IC1lIHB5MzYKCkFsdGVybmF0aXZlbHkgdXNlIHB5dGVzdC4KCgpMaWNlbnNlCi0tLS0tLS0KCkNvcHlyaWdodCAoYykgU2ViYXN0aWFuIEtyYWVtZXIsIGJhc3RpLmtyQGdtYWlsLmNvbSBhbmQgb3RoZXJzClNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UKCi4uIHxCdWlsZCBTdGF0dXN8IGltYWdlOjogaHR0cHM6Ly90cmF2aXMtY2kub3JnL2Jhc3Rpa3IvYm9vbGVhbi5weS5zdmc/YnJhbmNoPW1hc3RlcgogICA6dGFyZ2V0OiBodHRwczovL3RyYXZpcy1jaS5vcmcvYmFzdGlrci9ib29sZWFuLnB5Cg==", + "contentType": "text/prs.fallenstein.rst", + "encoding": "base64" } } } @@ -143,8 +136,9 @@ "acknowledgement": "declared", "name": "declared license file: LICENSE", "text": { - "content": " GNU LESSER GENERAL PUBLIC LICENSE\n Version 2.1, February 1999\n\n Copyright (C) 1991, 1999 Free Software Foundation, Inc.\n 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n[This is the first released version of the Lesser GPL. It also counts\n as the successor of the GNU Library Public License, version 2, hence\n the version number 2.1.]\n\n Preamble\n\n The licenses for most software are designed to take away your\nfreedom to share and change it. By contrast, the GNU General Public\nLicenses are intended to guarantee your freedom to share and change\nfree software--to make sure the software is free for all its users.\n\n This license, the Lesser General Public License, applies to some\nspecially designated software packages--typically libraries--of the\nFree Software Foundation and other authors who decide to use it. You\ncan use it too, but we suggest you first think carefully about whether\nthis license or the ordinary General Public License is the better\nstrategy to use in any particular case, based on the explanations below.\n\n When we speak of free software, we are referring to freedom of use,\nnot price. Our General Public Licenses are designed to make sure that\nyou have the freedom to distribute copies of free software (and charge\nfor this service if you wish); that you receive source code or can get\nit if you want it; that you can change the software and use pieces of\nit in new free programs; and that you are informed that you can do\nthese things.\n\n To protect your rights, we need to make restrictions that forbid\ndistributors to deny you these rights or to ask you to surrender these\nrights. These restrictions translate to certain responsibilities for\nyou if you distribute copies of the library or if you modify it.\n\n For example, if you distribute copies of the library, whether gratis\nor for a fee, you must give the recipients all the rights that we gave\nyou. You must make sure that they, too, receive or can get the source\ncode. If you link other code with the library, you must provide\ncomplete object files to the recipients, so that they can relink them\nwith the library after making changes to the library and recompiling\nit. And you must show them these terms so they know their rights.\n\n We protect your rights with a two-step method: (1) we copyright the\nlibrary, and (2) we offer you this license, which gives you legal\npermission to copy, distribute and/or modify the library.\n\n To protect each distributor, we want to make it very clear that\nthere is no warranty for the free library. Also, if the library is\nmodified by someone else and passed on, the recipients should know\nthat what they have is not the original version, so that the original\nauthor's reputation will not be affected by problems that might be\nintroduced by others.\n\f\n Finally, software patents pose a constant threat to the existence of\nany free program. We wish to make sure that a company cannot\neffectively restrict the users of a free program by obtaining a\nrestrictive license from a patent holder. Therefore, we insist that\nany patent license obtained for a version of the library must be\nconsistent with the full freedom of use specified in this license.\n\n Most GNU software, including some libraries, is covered by the\nordinary GNU General Public License. This license, the GNU Lesser\nGeneral Public License, applies to certain designated libraries, and\nis quite different from the ordinary General Public License. We use\nthis license for certain libraries in order to permit linking those\nlibraries into non-free programs.\n\n When a program is linked with a library, whether statically or using\na shared library, the combination of the two is legally speaking a\ncombined work, a derivative of the original library. The ordinary\nGeneral Public License therefore permits such linking only if the\nentire combination fits its criteria of freedom. The Lesser General\nPublic License permits more lax criteria for linking other code with\nthe library.\n\n We call this license the \"Lesser\" General Public License because it\ndoes Less to protect the user's freedom than the ordinary General\nPublic License. It also provides other free software developers Less\nof an advantage over competing non-free programs. These disadvantages\nare the reason we use the ordinary General Public License for many\nlibraries. However, the Lesser license provides advantages in certain\nspecial circumstances.\n\n For example, on rare occasions, there may be a special need to\nencourage the widest possible use of a certain library, so that it becomes\na de-facto standard. To achieve this, non-free programs must be\nallowed to use the library. A more frequent case is that a free\nlibrary does the same job as widely used non-free libraries. In this\ncase, there is little to gain by limiting the free library to free\nsoftware only, so we use the Lesser General Public License.\n\n In other cases, permission to use a particular library in non-free\nprograms enables a greater number of people to use a large body of\nfree software. For example, permission to use the GNU C Library in\nnon-free programs enables many more people to use the whole GNU\noperating system, as well as its variant, the GNU/Linux operating\nsystem.\n\n Although the Lesser General Public License is Less protective of the\nusers' freedom, it does ensure that the user of a program that is\nlinked with the Library has the freedom and the wherewithal to run\nthat program using a modified version of the Library.\n\n The precise terms and conditions for copying, distribution and\nmodification follow. Pay close attention to the difference between a\n\"work based on the library\" and a \"work that uses the library\". The\nformer contains code derived from the library, whereas the latter must\nbe combined with the library in order to run.\n\f\n GNU LESSER GENERAL PUBLIC LICENSE\n TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n 0. This License Agreement applies to any software library or other\nprogram which contains a notice placed by the copyright holder or\nother authorized party saying it may be distributed under the terms of\nthis Lesser General Public License (also called \"this License\").\nEach licensee is addressed as \"you\".\n\n A \"library\" means a collection of software functions and/or data\nprepared so as to be conveniently linked with application programs\n(which use some of those functions and data) to form executables.\n\n The \"Library\", below, refers to any such software library or work\nwhich has been distributed under these terms. A \"work based on the\nLibrary\" means either the Library or any derivative work under\ncopyright law: that is to say, a work containing the Library or a\nportion of it, either verbatim or with modifications and/or translated\nstraightforwardly into another language. (Hereinafter, translation is\nincluded without limitation in the term \"modification\".)\n\n \"Source code\" for a work means the preferred form of the work for\nmaking modifications to it. For a library, complete source code means\nall the source code for all modules it contains, plus any associated\ninterface definition files, plus the scripts used to control compilation\nand installation of the library.\n\n Activities other than copying, distribution and modification are not\ncovered by this License; they are outside its scope. The act of\nrunning a program using the Library is not restricted, and output from\nsuch a program is covered only if its contents constitute a work based\non the Library (independent of the use of the Library in a tool for\nwriting it). Whether that is true depends on what the Library does\nand what the program that uses the Library does.\n\n 1. You may copy and distribute verbatim copies of the Library's\ncomplete source code as you receive it, in any medium, provided that\nyou conspicuously and appropriately publish on each copy an\nappropriate copyright notice and disclaimer of warranty; keep intact\nall the notices that refer to this License and to the absence of any\nwarranty; and distribute a copy of this License along with the\nLibrary.\n\n You may charge a fee for the physical act of transferring a copy,\nand you may at your option offer warranty protection in exchange for a\nfee.\n\f\n 2. You may modify your copy or copies of the Library or any portion\nof it, thus forming a work based on the Library, and copy and\ndistribute such modifications or work under the terms of Section 1\nabove, provided that you also meet all of these conditions:\n\n a) The modified work must itself be a software library.\n\n b) You must cause the files modified to carry prominent notices\n stating that you changed the files and the date of any change.\n\n c) You must cause the whole of the work to be licensed at no\n charge to all third parties under the terms of this License.\n\n d) If a facility in the modified Library refers to a function or a\n table of data to be supplied by an application program that uses\n the facility, other than as an argument passed when the facility\n is invoked, then you must make a good faith effort to ensure that,\n in the event an application does not supply such function or\n table, the facility still operates, and performs whatever part of\n its purpose remains meaningful.\n\n (For example, a function in a library to compute square roots has\n a purpose that is entirely well-defined independent of the\n application. Therefore, Subsection 2d requires that any\n application-supplied function or table used by this function must\n be optional: if the application does not supply it, the square\n root function must still compute square roots.)\n\nThese requirements apply to the modified work as a whole. If\nidentifiable sections of that work are not derived from the Library,\nand can be reasonably considered independent and separate works in\nthemselves, then this License, and its terms, do not apply to those\nsections when you distribute them as separate works. But when you\ndistribute the same sections as part of a whole which is a work based\non the Library, the distribution of the whole must be on the terms of\nthis License, whose permissions for other licensees extend to the\nentire whole, and thus to each and every part regardless of who wrote\nit.\n\nThus, it is not the intent of this section to claim rights or contest\nyour rights to work written entirely by you; rather, the intent is to\nexercise the right to control the distribution of derivative or\ncollective works based on the Library.\n\nIn addition, mere aggregation of another work not based on the Library\nwith the Library (or with a work based on the Library) on a volume of\na storage or distribution medium does not bring the other work under\nthe scope of this License.\n\n 3. You may opt to apply the terms of the ordinary GNU General Public\nLicense instead of this License to a given copy of the Library. To do\nthis, you must alter all the notices that refer to this License, so\nthat they refer to the ordinary GNU General Public License, version 2,\ninstead of to this License. (If a newer version than version 2 of the\nordinary GNU General Public License has appeared, then you can specify\nthat version instead if you wish.) Do not make any other change in\nthese notices.\n\f\n Once this change is made in a given copy, it is irreversible for\nthat copy, so the ordinary GNU General Public License applies to all\nsubsequent copies and derivative works made from that copy.\n\n This option is useful when you wish to copy part of the code of\nthe Library into a program that is not a library.\n\n 4. You may copy and distribute the Library (or a portion or\nderivative of it, under Section 2) in object code or executable form\nunder the terms of Sections 1 and 2 above provided that you accompany\nit with the complete corresponding machine-readable source code, which\nmust be distributed under the terms of Sections 1 and 2 above on a\nmedium customarily used for software interchange.\n\n If distribution of object code is made by offering access to copy\nfrom a designated place, then offering equivalent access to copy the\nsource code from the same place satisfies the requirement to\ndistribute the source code, even though third parties are not\ncompelled to copy the source along with the object code.\n\n 5. A program that contains no derivative of any portion of the\nLibrary, but is designed to work with the Library by being compiled or\nlinked with it, is called a \"work that uses the Library\". Such a\nwork, in isolation, is not a derivative work of the Library, and\ntherefore falls outside the scope of this License.\n\n However, linking a \"work that uses the Library\" with the Library\ncreates an executable that is a derivative of the Library (because it\ncontains portions of the Library), rather than a \"work that uses the\nlibrary\". The executable is therefore covered by this License.\nSection 6 states terms for distribution of such executables.\n\n When a \"work that uses the Library\" uses material from a header file\nthat is part of the Library, the object code for the work may be a\nderivative work of the Library even though the source code is not.\nWhether this is true is especially significant if the work can be\nlinked without the Library, or if the work is itself a library. The\nthreshold for this to be true is not precisely defined by law.\n\n If such an object file uses only numerical parameters, data\nstructure layouts and accessors, and small macros and small inline\nfunctions (ten lines or less in length), then the use of the object\nfile is unrestricted, regardless of whether it is legally a derivative\nwork. (Executables containing this object code plus portions of the\nLibrary will still fall under Section 6.)\n\n Otherwise, if the work is a derivative of the Library, you may\ndistribute the object code for the work under the terms of Section 6.\nAny executables containing that work also fall under Section 6,\nwhether or not they are linked directly with the Library itself.\n\f\n 6. As an exception to the Sections above, you may also combine or\nlink a \"work that uses the Library\" with the Library to produce a\nwork containing portions of the Library, and distribute that work\nunder terms of your choice, provided that the terms permit\nmodification of the work for the customer's own use and reverse\nengineering for debugging such modifications.\n\n You must give prominent notice with each copy of the work that the\nLibrary is used in it and that the Library and its use are covered by\nthis License. You must supply a copy of this License. If the work\nduring execution displays copyright notices, you must include the\ncopyright notice for the Library among them, as well as a reference\ndirecting the user to the copy of this License. Also, you must do one\nof these things:\n\n a) Accompany the work with the complete corresponding\n machine-readable source code for the Library including whatever\n changes were used in the work (which must be distributed under\n Sections 1 and 2 above); and, if the work is an executable linked\n with the Library, with the complete machine-readable \"work that\n uses the Library\", as object code and/or source code, so that the\n user can modify the Library and then relink to produce a modified\n executable containing the modified Library. (It is understood\n that the user who changes the contents of definitions files in the\n Library will not necessarily be able to recompile the application\n to use the modified definitions.)\n\n b) Use a suitable shared library mechanism for linking with the\n Library. A suitable mechanism is one that (1) uses at run time a\n copy of the library already present on the user's computer system,\n rather than copying library functions into the executable, and (2)\n will operate properly with a modified version of the library, if\n the user installs one, as long as the modified version is\n interface-compatible with the version that the work was made with.\n\n c) Accompany the work with a written offer, valid for at\n least three years, to give the same user the materials\n specified in Subsection 6a, above, for a charge no more\n than the cost of performing this distribution.\n\n d) If distribution of the work is made by offering access to copy\n from a designated place, offer equivalent access to copy the above\n specified materials from the same place.\n\n e) Verify that the user has already received a copy of these\n materials or that you have already sent this user a copy.\n\n For an executable, the required form of the \"work that uses the\nLibrary\" must include any data and utility programs needed for\nreproducing the executable from it. However, as a special exception,\nthe materials to be distributed need not include anything that is\nnormally distributed (in either source or binary form) with the major\ncomponents (compiler, kernel, and so on) of the operating system on\nwhich the executable runs, unless that component itself accompanies\nthe executable.\n\n It may happen that this requirement contradicts the license\nrestrictions of other proprietary libraries that do not normally\naccompany the operating system. Such a contradiction means you cannot\nuse both them and the Library together in an executable that you\ndistribute.\n\f\n 7. You may place library facilities that are a work based on the\nLibrary side-by-side in a single library together with other library\nfacilities not covered by this License, and distribute such a combined\nlibrary, provided that the separate distribution of the work based on\nthe Library and of the other library facilities is otherwise\npermitted, and provided that you do these two things:\n\n a) Accompany the combined library with a copy of the same work\n based on the Library, uncombined with any other library\n facilities. This must be distributed under the terms of the\n Sections above.\n\n b) Give prominent notice with the combined library of the fact\n that part of it is a work based on the Library, and explaining\n where to find the accompanying uncombined form of the same work.\n\n 8. You may not copy, modify, sublicense, link with, or distribute\nthe Library except as expressly provided under this License. Any\nattempt otherwise to copy, modify, sublicense, link with, or\ndistribute the Library is void, and will automatically terminate your\nrights under this License. However, parties who have received copies,\nor rights, from you under this License will not have their licenses\nterminated so long as such parties remain in full compliance.\n\n 9. You are not required to accept this License, since you have not\nsigned it. However, nothing else grants you permission to modify or\ndistribute the Library or its derivative works. These actions are\nprohibited by law if you do not accept this License. Therefore, by\nmodifying or distributing the Library (or any work based on the\nLibrary), you indicate your acceptance of this License to do so, and\nall its terms and conditions for copying, distributing or modifying\nthe Library or works based on it.\n\n 10. Each time you redistribute the Library (or any work based on the\nLibrary), the recipient automatically receives a license from the\noriginal licensor to copy, distribute, link with or modify the Library\nsubject to these terms and conditions. You may not impose any further\nrestrictions on the recipients' exercise of the rights granted herein.\nYou are not responsible for enforcing compliance by third parties with\nthis License.\n\f\n 11. If, as a consequence of a court judgment or allegation of patent\ninfringement or for any other reason (not limited to patent issues),\nconditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License. If you cannot\ndistribute so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you\nmay not distribute the Library at all. For example, if a patent\nlicense would not permit royalty-free redistribution of the Library by\nall those who receive copies directly or indirectly through you, then\nthe only way you could satisfy both it and this License would be to\nrefrain entirely from distribution of the Library.\n\nIf any portion of this section is held invalid or unenforceable under any\nparticular circumstance, the balance of the section is intended to apply,\nand the section as a whole is intended to apply in other circumstances.\n\nIt is not the purpose of this section to induce you to infringe any\npatents or other property right claims or to contest validity of any\nsuch claims; this section has the sole purpose of protecting the\nintegrity of the free software distribution system which is\nimplemented by public license practices. Many people have made\ngenerous contributions to the wide range of software distributed\nthrough that system in reliance on consistent application of that\nsystem; it is up to the author/donor to decide if he or she is willing\nto distribute software through any other system and a licensee cannot\nimpose that choice.\n\nThis section is intended to make thoroughly clear what is believed to\nbe a consequence of the rest of this License.\n\n 12. If the distribution and/or use of the Library is restricted in\ncertain countries either by patents or by copyrighted interfaces, the\noriginal copyright holder who places the Library under this License may add\nan explicit geographical distribution limitation excluding those countries,\nso that distribution is permitted only in or among countries not thus\nexcluded. In such case, this License incorporates the limitation as if\nwritten in the body of this License.\n\n 13. The Free Software Foundation may publish revised and/or new\nversions of the Lesser General Public License from time to time.\nSuch new versions will be similar in spirit to the present version,\nbut may differ in detail to address new problems or concerns.\n\nEach version is given a distinguishing version number. If the Library\nspecifies a version number of this License which applies to it and\n\"any later version\", you have the option of following the terms and\nconditions either of that version or of any later version published by\nthe Free Software Foundation. If the Library does not specify a\nlicense version number, you may choose any version ever published by\nthe Free Software Foundation.\n\f\n 14. If you wish to incorporate parts of the Library into other free\nprograms whose distribution conditions are incompatible with these,\nwrite to the author to ask for permission. For software which is\ncopyrighted by the Free Software Foundation, write to the Free\nSoftware Foundation; we sometimes make exceptions for this. Our\ndecision will be guided by the two goals of preserving the free status\nof all derivatives of our free software and of promoting the sharing\nand reuse of software generally.\n\n NO WARRANTY\n\n 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO\nWARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.\nEXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR\nOTHER PARTIES PROVIDE THE LIBRARY \"AS IS\" WITHOUT WARRANTY OF ANY\nKIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE\nLIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME\nTHE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN\nWRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY\nAND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU\nFOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR\nCONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE\nLIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING\nRENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A\nFAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF\nSUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\nDAMAGES.\n\n END OF TERMS AND CONDITIONS\n\f\n How to Apply These Terms to Your New Libraries\n\n If you develop a new library, and you want it to be of the greatest\npossible use to the public, we recommend making it free software that\neveryone can redistribute and change. You can do so by permitting\nredistribution under these terms (or, alternatively, under the terms of the\nordinary General Public License).\n\n To apply these terms, attach the following notices to the library. It is\nsafest to attach them to the start of each source file to most effectively\nconvey the exclusion of warranty; and each file should have at least the\n\"copyright\" line and a pointer to where the full notice is found.\n\n \n Copyright (C) \n\n This library is free software; you can redistribute it and/or\n modify it under the terms of the GNU Lesser General Public\n License as published by the Free Software Foundation; either\n version 2.1 of the License, or (at your option) any later version.\n\n This library is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public\n License along with this library; if not, write to the Free Software\n Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n\nAlso add information on how to contact you by electronic and paper mail.\n\nYou should also get your employer (if you work as a programmer) or your\nschool, if any, to sign a \"copyright disclaimer\" for the library, if\nnecessary. Here is a sample; alter the names:\n\n Yoyodyne, Inc., hereby disclaims all copyright interest in the\n library `Frob' (a library for tweaking knobs) written by James Random Hacker.\n\n , 1 April 1990\n Ty Coon, President of Vice\n\nThat's all there is to it!\n", - "contentType": "text/plain" + "content": "ICAgICAgICAgICAgICAgICAgR05VIExFU1NFUiBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFCiAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAyLjEsIEZlYnJ1YXJ5IDE5OTkKCiBDb3B5cmlnaHQgKEMpIDE5OTEsIDE5OTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKIEV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcwogb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCgpbVGhpcyBpcyB0aGUgZmlyc3QgcmVsZWFzZWQgdmVyc2lvbiBvZiB0aGUgTGVzc2VyIEdQTC4gIEl0IGFsc28gY291bnRzCiBhcyB0aGUgc3VjY2Vzc29yIG9mIHRoZSBHTlUgTGlicmFyeSBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLCBoZW5jZQogdGhlIHZlcnNpb24gbnVtYmVyIDIuMS5dCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlYW1ibGUKCiAgVGhlIGxpY2Vuc2VzIGZvciBtb3N0IHNvZnR3YXJlIGFyZSBkZXNpZ25lZCB0byB0YWtlIGF3YXkgeW91cgpmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgaXQuICBCeSBjb250cmFzdCwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwpMaWNlbnNlcyBhcmUgaW50ZW5kZWQgdG8gZ3VhcmFudGVlIHlvdXIgZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlCmZyZWUgc29mdHdhcmUtLXRvIG1ha2Ugc3VyZSB0aGUgc29mdHdhcmUgaXMgZnJlZSBmb3IgYWxsIGl0cyB1c2Vycy4KCiAgVGhpcyBsaWNlbnNlLCB0aGUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFwcGxpZXMgdG8gc29tZQpzcGVjaWFsbHkgZGVzaWduYXRlZCBzb2Z0d2FyZSBwYWNrYWdlcy0tdHlwaWNhbGx5IGxpYnJhcmllcy0tb2YgdGhlCkZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBhbmQgb3RoZXIgYXV0aG9ycyB3aG8gZGVjaWRlIHRvIHVzZSBpdC4gIFlvdQpjYW4gdXNlIGl0IHRvbywgYnV0IHdlIHN1Z2dlc3QgeW91IGZpcnN0IHRoaW5rIGNhcmVmdWxseSBhYm91dCB3aGV0aGVyCnRoaXMgbGljZW5zZSBvciB0aGUgb3JkaW5hcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyB0aGUgYmV0dGVyCnN0cmF0ZWd5IHRvIHVzZSBpbiBhbnkgcGFydGljdWxhciBjYXNlLCBiYXNlZCBvbiB0aGUgZXhwbGFuYXRpb25zIGJlbG93LgoKICBXaGVuIHdlIHNwZWFrIG9mIGZyZWUgc29mdHdhcmUsIHdlIGFyZSByZWZlcnJpbmcgdG8gZnJlZWRvbSBvZiB1c2UsCm5vdCBwcmljZS4gIE91ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlcyBhcmUgZGVzaWduZWQgdG8gbWFrZSBzdXJlIHRoYXQKeW91IGhhdmUgdGhlIGZyZWVkb20gdG8gZGlzdHJpYnV0ZSBjb3BpZXMgb2YgZnJlZSBzb2Z0d2FyZSAoYW5kIGNoYXJnZQpmb3IgdGhpcyBzZXJ2aWNlIGlmIHlvdSB3aXNoKTsgdGhhdCB5b3UgcmVjZWl2ZSBzb3VyY2UgY29kZSBvciBjYW4gZ2V0Cml0IGlmIHlvdSB3YW50IGl0OyB0aGF0IHlvdSBjYW4gY2hhbmdlIHRoZSBzb2Z0d2FyZSBhbmQgdXNlIHBpZWNlcyBvZgppdCBpbiBuZXcgZnJlZSBwcm9ncmFtczsgYW5kIHRoYXQgeW91IGFyZSBpbmZvcm1lZCB0aGF0IHlvdSBjYW4gZG8KdGhlc2UgdGhpbmdzLgoKICBUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIG1ha2UgcmVzdHJpY3Rpb25zIHRoYXQgZm9yYmlkCmRpc3RyaWJ1dG9ycyB0byBkZW55IHlvdSB0aGVzZSByaWdodHMgb3IgdG8gYXNrIHlvdSB0byBzdXJyZW5kZXIgdGhlc2UKcmlnaHRzLiAgVGhlc2UgcmVzdHJpY3Rpb25zIHRyYW5zbGF0ZSB0byBjZXJ0YWluIHJlc3BvbnNpYmlsaXRpZXMgZm9yCnlvdSBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIGxpYnJhcnkgb3IgaWYgeW91IG1vZGlmeSBpdC4KCiAgRm9yIGV4YW1wbGUsIGlmIHlvdSBkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUgbGlicmFyeSwgd2hldGhlciBncmF0aXMKb3IgZm9yIGEgZmVlLCB5b3UgbXVzdCBnaXZlIHRoZSByZWNpcGllbnRzIGFsbCB0aGUgcmlnaHRzIHRoYXQgd2UgZ2F2ZQp5b3UuICBZb3UgbXVzdCBtYWtlIHN1cmUgdGhhdCB0aGV5LCB0b28sIHJlY2VpdmUgb3IgY2FuIGdldCB0aGUgc291cmNlCmNvZGUuICBJZiB5b3UgbGluayBvdGhlciBjb2RlIHdpdGggdGhlIGxpYnJhcnksIHlvdSBtdXN0IHByb3ZpZGUKY29tcGxldGUgb2JqZWN0IGZpbGVzIHRvIHRoZSByZWNpcGllbnRzLCBzbyB0aGF0IHRoZXkgY2FuIHJlbGluayB0aGVtCndpdGggdGhlIGxpYnJhcnkgYWZ0ZXIgbWFraW5nIGNoYW5nZXMgdG8gdGhlIGxpYnJhcnkgYW5kIHJlY29tcGlsaW5nCml0LiAgQW5kIHlvdSBtdXN0IHNob3cgdGhlbSB0aGVzZSB0ZXJtcyBzbyB0aGV5IGtub3cgdGhlaXIgcmlnaHRzLgoKICBXZSBwcm90ZWN0IHlvdXIgcmlnaHRzIHdpdGggYSB0d28tc3RlcCBtZXRob2Q6ICgxKSB3ZSBjb3B5cmlnaHQgdGhlCmxpYnJhcnksIGFuZCAoMikgd2Ugb2ZmZXIgeW91IHRoaXMgbGljZW5zZSwgd2hpY2ggZ2l2ZXMgeW91IGxlZ2FsCnBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IHRoZSBsaWJyYXJ5LgoKICBUbyBwcm90ZWN0IGVhY2ggZGlzdHJpYnV0b3IsIHdlIHdhbnQgdG8gbWFrZSBpdCB2ZXJ5IGNsZWFyIHRoYXQKdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoZSBmcmVlIGxpYnJhcnkuICBBbHNvLCBpZiB0aGUgbGlicmFyeSBpcwptb2RpZmllZCBieSBzb21lb25lIGVsc2UgYW5kIHBhc3NlZCBvbiwgdGhlIHJlY2lwaWVudHMgc2hvdWxkIGtub3cKdGhhdCB3aGF0IHRoZXkgaGF2ZSBpcyBub3QgdGhlIG9yaWdpbmFsIHZlcnNpb24sIHNvIHRoYXQgdGhlIG9yaWdpbmFsCmF1dGhvcidzIHJlcHV0YXRpb24gd2lsbCBub3QgYmUgYWZmZWN0ZWQgYnkgcHJvYmxlbXMgdGhhdCBtaWdodCBiZQppbnRyb2R1Y2VkIGJ5IG90aGVycy4KDAogIEZpbmFsbHksIHNvZnR3YXJlIHBhdGVudHMgcG9zZSBhIGNvbnN0YW50IHRocmVhdCB0byB0aGUgZXhpc3RlbmNlIG9mCmFueSBmcmVlIHByb2dyYW0uICBXZSB3aXNoIHRvIG1ha2Ugc3VyZSB0aGF0IGEgY29tcGFueSBjYW5ub3QKZWZmZWN0aXZlbHkgcmVzdHJpY3QgdGhlIHVzZXJzIG9mIGEgZnJlZSBwcm9ncmFtIGJ5IG9idGFpbmluZyBhCnJlc3RyaWN0aXZlIGxpY2Vuc2UgZnJvbSBhIHBhdGVudCBob2xkZXIuICBUaGVyZWZvcmUsIHdlIGluc2lzdCB0aGF0CmFueSBwYXRlbnQgbGljZW5zZSBvYnRhaW5lZCBmb3IgYSB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5IG11c3QgYmUKY29uc2lzdGVudCB3aXRoIHRoZSBmdWxsIGZyZWVkb20gb2YgdXNlIHNwZWNpZmllZCBpbiB0aGlzIGxpY2Vuc2UuCgogIE1vc3QgR05VIHNvZnR3YXJlLCBpbmNsdWRpbmcgc29tZSBsaWJyYXJpZXMsIGlzIGNvdmVyZWQgYnkgdGhlCm9yZGluYXJ5IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBsaWNlbnNlLCB0aGUgR05VIExlc3NlcgpHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBhcHBsaWVzIHRvIGNlcnRhaW4gZGVzaWduYXRlZCBsaWJyYXJpZXMsIGFuZAppcyBxdWl0ZSBkaWZmZXJlbnQgZnJvbSB0aGUgb3JkaW5hcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFdlIHVzZQp0aGlzIGxpY2Vuc2UgZm9yIGNlcnRhaW4gbGlicmFyaWVzIGluIG9yZGVyIHRvIHBlcm1pdCBsaW5raW5nIHRob3NlCmxpYnJhcmllcyBpbnRvIG5vbi1mcmVlIHByb2dyYW1zLgoKICBXaGVuIGEgcHJvZ3JhbSBpcyBsaW5rZWQgd2l0aCBhIGxpYnJhcnksIHdoZXRoZXIgc3RhdGljYWxseSBvciB1c2luZwphIHNoYXJlZCBsaWJyYXJ5LCB0aGUgY29tYmluYXRpb24gb2YgdGhlIHR3byBpcyBsZWdhbGx5IHNwZWFraW5nIGEKY29tYmluZWQgd29yaywgYSBkZXJpdmF0aXZlIG9mIHRoZSBvcmlnaW5hbCBsaWJyYXJ5LiAgVGhlIG9yZGluYXJ5CkdlbmVyYWwgUHVibGljIExpY2Vuc2UgdGhlcmVmb3JlIHBlcm1pdHMgc3VjaCBsaW5raW5nIG9ubHkgaWYgdGhlCmVudGlyZSBjb21iaW5hdGlvbiBmaXRzIGl0cyBjcml0ZXJpYSBvZiBmcmVlZG9tLiAgVGhlIExlc3NlciBHZW5lcmFsClB1YmxpYyBMaWNlbnNlIHBlcm1pdHMgbW9yZSBsYXggY3JpdGVyaWEgZm9yIGxpbmtpbmcgb3RoZXIgY29kZSB3aXRoCnRoZSBsaWJyYXJ5LgoKICBXZSBjYWxsIHRoaXMgbGljZW5zZSB0aGUgIkxlc3NlciIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBiZWNhdXNlIGl0CmRvZXMgTGVzcyB0byBwcm90ZWN0IHRoZSB1c2VyJ3MgZnJlZWRvbSB0aGFuIHRoZSBvcmRpbmFyeSBHZW5lcmFsClB1YmxpYyBMaWNlbnNlLiAgSXQgYWxzbyBwcm92aWRlcyBvdGhlciBmcmVlIHNvZnR3YXJlIGRldmVsb3BlcnMgTGVzcwpvZiBhbiBhZHZhbnRhZ2Ugb3ZlciBjb21wZXRpbmcgbm9uLWZyZWUgcHJvZ3JhbXMuICBUaGVzZSBkaXNhZHZhbnRhZ2VzCmFyZSB0aGUgcmVhc29uIHdlIHVzZSB0aGUgb3JkaW5hcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbWFueQpsaWJyYXJpZXMuICBIb3dldmVyLCB0aGUgTGVzc2VyIGxpY2Vuc2UgcHJvdmlkZXMgYWR2YW50YWdlcyBpbiBjZXJ0YWluCnNwZWNpYWwgY2lyY3Vtc3RhbmNlcy4KCiAgRm9yIGV4YW1wbGUsIG9uIHJhcmUgb2NjYXNpb25zLCB0aGVyZSBtYXkgYmUgYSBzcGVjaWFsIG5lZWQgdG8KZW5jb3VyYWdlIHRoZSB3aWRlc3QgcG9zc2libGUgdXNlIG9mIGEgY2VydGFpbiBsaWJyYXJ5LCBzbyB0aGF0IGl0IGJlY29tZXMKYSBkZS1mYWN0byBzdGFuZGFyZC4gIFRvIGFjaGlldmUgdGhpcywgbm9uLWZyZWUgcHJvZ3JhbXMgbXVzdCBiZQphbGxvd2VkIHRvIHVzZSB0aGUgbGlicmFyeS4gIEEgbW9yZSBmcmVxdWVudCBjYXNlIGlzIHRoYXQgYSBmcmVlCmxpYnJhcnkgZG9lcyB0aGUgc2FtZSBqb2IgYXMgd2lkZWx5IHVzZWQgbm9uLWZyZWUgbGlicmFyaWVzLiAgSW4gdGhpcwpjYXNlLCB0aGVyZSBpcyBsaXR0bGUgdG8gZ2FpbiBieSBsaW1pdGluZyB0aGUgZnJlZSBsaWJyYXJ5IHRvIGZyZWUKc29mdHdhcmUgb25seSwgc28gd2UgdXNlIHRoZSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KCiAgSW4gb3RoZXIgY2FzZXMsIHBlcm1pc3Npb24gdG8gdXNlIGEgcGFydGljdWxhciBsaWJyYXJ5IGluIG5vbi1mcmVlCnByb2dyYW1zIGVuYWJsZXMgYSBncmVhdGVyIG51bWJlciBvZiBwZW9wbGUgdG8gdXNlIGEgbGFyZ2UgYm9keSBvZgpmcmVlIHNvZnR3YXJlLiAgRm9yIGV4YW1wbGUsIHBlcm1pc3Npb24gdG8gdXNlIHRoZSBHTlUgQyBMaWJyYXJ5IGluCm5vbi1mcmVlIHByb2dyYW1zIGVuYWJsZXMgbWFueSBtb3JlIHBlb3BsZSB0byB1c2UgdGhlIHdob2xlIEdOVQpvcGVyYXRpbmcgc3lzdGVtLCBhcyB3ZWxsIGFzIGl0cyB2YXJpYW50LCB0aGUgR05VL0xpbnV4IG9wZXJhdGluZwpzeXN0ZW0uCgogIEFsdGhvdWdoIHRoZSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBMZXNzIHByb3RlY3RpdmUgb2YgdGhlCnVzZXJzJyBmcmVlZG9tLCBpdCBkb2VzIGVuc3VyZSB0aGF0IHRoZSB1c2VyIG9mIGEgcHJvZ3JhbSB0aGF0IGlzCmxpbmtlZCB3aXRoIHRoZSBMaWJyYXJ5IGhhcyB0aGUgZnJlZWRvbSBhbmQgdGhlIHdoZXJld2l0aGFsIHRvIHJ1bgp0aGF0IHByb2dyYW0gdXNpbmcgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBMaWJyYXJ5LgoKICBUaGUgcHJlY2lzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW9uIGFuZAptb2RpZmljYXRpb24gZm9sbG93LiAgUGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGEKIndvcmsgYmFzZWQgb24gdGhlIGxpYnJhcnkiIGFuZCBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgbGlicmFyeSIuICBUaGUKZm9ybWVyIGNvbnRhaW5zIGNvZGUgZGVyaXZlZCBmcm9tIHRoZSBsaWJyYXJ5LCB3aGVyZWFzIHRoZSBsYXR0ZXIgbXVzdApiZSBjb21iaW5lZCB3aXRoIHRoZSBsaWJyYXJ5IGluIG9yZGVyIHRvIHJ1bi4KDAogICAgICAgICAgICAgICAgICBHTlUgTEVTU0VSIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKICAgVEVSTVMgQU5EIENPTkRJVElPTlMgRk9SIENPUFlJTkcsIERJU1RSSUJVVElPTiBBTkQgTU9ESUZJQ0FUSU9OCgogIDAuIFRoaXMgTGljZW5zZSBBZ3JlZW1lbnQgYXBwbGllcyB0byBhbnkgc29mdHdhcmUgbGlicmFyeSBvciBvdGhlcgpwcm9ncmFtIHdoaWNoIGNvbnRhaW5zIGEgbm90aWNlIHBsYWNlZCBieSB0aGUgY29weXJpZ2h0IGhvbGRlciBvcgpvdGhlciBhdXRob3JpemVkIHBhcnR5IHNheWluZyBpdCBtYXkgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mCnRoaXMgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKGFsc28gY2FsbGVkICJ0aGlzIExpY2Vuc2UiKS4KRWFjaCBsaWNlbnNlZSBpcyBhZGRyZXNzZWQgYXMgInlvdSIuCgogIEEgImxpYnJhcnkiIG1lYW5zIGEgY29sbGVjdGlvbiBvZiBzb2Z0d2FyZSBmdW5jdGlvbnMgYW5kL29yIGRhdGEKcHJlcGFyZWQgc28gYXMgdG8gYmUgY29udmVuaWVudGx5IGxpbmtlZCB3aXRoIGFwcGxpY2F0aW9uIHByb2dyYW1zCih3aGljaCB1c2Ugc29tZSBvZiB0aG9zZSBmdW5jdGlvbnMgYW5kIGRhdGEpIHRvIGZvcm0gZXhlY3V0YWJsZXMuCgogIFRoZSAiTGlicmFyeSIsIGJlbG93LCByZWZlcnMgdG8gYW55IHN1Y2ggc29mdHdhcmUgbGlicmFyeSBvciB3b3JrCndoaWNoIGhhcyBiZWVuIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZXNlIHRlcm1zLiAgQSAid29yayBiYXNlZCBvbiB0aGUKTGlicmFyeSIgbWVhbnMgZWl0aGVyIHRoZSBMaWJyYXJ5IG9yIGFueSBkZXJpdmF0aXZlIHdvcmsgdW5kZXIKY29weXJpZ2h0IGxhdzogdGhhdCBpcyB0byBzYXksIGEgd29yayBjb250YWluaW5nIHRoZSBMaWJyYXJ5IG9yIGEKcG9ydGlvbiBvZiBpdCwgZWl0aGVyIHZlcmJhdGltIG9yIHdpdGggbW9kaWZpY2F0aW9ucyBhbmQvb3IgdHJhbnNsYXRlZApzdHJhaWdodGZvcndhcmRseSBpbnRvIGFub3RoZXIgbGFuZ3VhZ2UuICAoSGVyZWluYWZ0ZXIsIHRyYW5zbGF0aW9uIGlzCmluY2x1ZGVkIHdpdGhvdXQgbGltaXRhdGlvbiBpbiB0aGUgdGVybSAibW9kaWZpY2F0aW9uIi4pCgogICJTb3VyY2UgY29kZSIgZm9yIGEgd29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsgZm9yCm1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgRm9yIGEgbGlicmFyeSwgY29tcGxldGUgc291cmNlIGNvZGUgbWVhbnMKYWxsIHRoZSBzb3VyY2UgY29kZSBmb3IgYWxsIG1vZHVsZXMgaXQgY29udGFpbnMsIHBsdXMgYW55IGFzc29jaWF0ZWQKaW50ZXJmYWNlIGRlZmluaXRpb24gZmlsZXMsIHBsdXMgdGhlIHNjcmlwdHMgdXNlZCB0byBjb250cm9sIGNvbXBpbGF0aW9uCmFuZCBpbnN0YWxsYXRpb24gb2YgdGhlIGxpYnJhcnkuCgogIEFjdGl2aXRpZXMgb3RoZXIgdGhhbiBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kIG1vZGlmaWNhdGlvbiBhcmUgbm90CmNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlOyB0aGV5IGFyZSBvdXRzaWRlIGl0cyBzY29wZS4gIFRoZSBhY3Qgb2YKcnVubmluZyBhIHByb2dyYW0gdXNpbmcgdGhlIExpYnJhcnkgaXMgbm90IHJlc3RyaWN0ZWQsIGFuZCBvdXRwdXQgZnJvbQpzdWNoIGEgcHJvZ3JhbSBpcyBjb3ZlcmVkIG9ubHkgaWYgaXRzIGNvbnRlbnRzIGNvbnN0aXR1dGUgYSB3b3JrIGJhc2VkCm9uIHRoZSBMaWJyYXJ5IChpbmRlcGVuZGVudCBvZiB0aGUgdXNlIG9mIHRoZSBMaWJyYXJ5IGluIGEgdG9vbCBmb3IKd3JpdGluZyBpdCkuICBXaGV0aGVyIHRoYXQgaXMgdHJ1ZSBkZXBlbmRzIG9uIHdoYXQgdGhlIExpYnJhcnkgZG9lcwphbmQgd2hhdCB0aGUgcHJvZ3JhbSB0aGF0IHVzZXMgdGhlIExpYnJhcnkgZG9lcy4KCiAgMS4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcyBvZiB0aGUgTGlicmFyeSdzCmNvbXBsZXRlIHNvdXJjZSBjb2RlIGFzIHlvdSByZWNlaXZlIGl0LCBpbiBhbnkgbWVkaXVtLCBwcm92aWRlZCB0aGF0CnlvdSBjb25zcGljdW91c2x5IGFuZCBhcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuCmFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2UgYW5kIGRpc2NsYWltZXIgb2Ygd2FycmFudHk7IGtlZXAgaW50YWN0CmFsbCB0aGUgbm90aWNlcyB0aGF0IHJlZmVyIHRvIHRoaXMgTGljZW5zZSBhbmQgdG8gdGhlIGFic2VuY2Ugb2YgYW55CndhcnJhbnR5OyBhbmQgZGlzdHJpYnV0ZSBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlIGFsb25nIHdpdGggdGhlCkxpYnJhcnkuCgogIFlvdSBtYXkgY2hhcmdlIGEgZmVlIGZvciB0aGUgcGh5c2ljYWwgYWN0IG9mIHRyYW5zZmVycmluZyBhIGNvcHksCmFuZCB5b3UgbWF5IGF0IHlvdXIgb3B0aW9uIG9mZmVyIHdhcnJhbnR5IHByb3RlY3Rpb24gaW4gZXhjaGFuZ2UgZm9yIGEKZmVlLgoMCiAgMi4gWW91IG1heSBtb2RpZnkgeW91ciBjb3B5IG9yIGNvcGllcyBvZiB0aGUgTGlicmFyeSBvciBhbnkgcG9ydGlvbgpvZiBpdCwgdGh1cyBmb3JtaW5nIGEgd29yayBiYXNlZCBvbiB0aGUgTGlicmFyeSwgYW5kIGNvcHkgYW5kCmRpc3RyaWJ1dGUgc3VjaCBtb2RpZmljYXRpb25zIG9yIHdvcmsgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb24gMQphYm92ZSwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBtZWV0IGFsbCBvZiB0aGVzZSBjb25kaXRpb25zOgoKICAgIGEpIFRoZSBtb2RpZmllZCB3b3JrIG11c3QgaXRzZWxmIGJlIGEgc29mdHdhcmUgbGlicmFyeS4KCiAgICBiKSBZb3UgbXVzdCBjYXVzZSB0aGUgZmlsZXMgbW9kaWZpZWQgdG8gY2FycnkgcHJvbWluZW50IG5vdGljZXMKICAgIHN0YXRpbmcgdGhhdCB5b3UgY2hhbmdlZCB0aGUgZmlsZXMgYW5kIHRoZSBkYXRlIG9mIGFueSBjaGFuZ2UuCgogICAgYykgWW91IG11c3QgY2F1c2UgdGhlIHdob2xlIG9mIHRoZSB3b3JrIHRvIGJlIGxpY2Vuc2VkIGF0IG5vCiAgICBjaGFyZ2UgdG8gYWxsIHRoaXJkIHBhcnRpZXMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZS4KCiAgICBkKSBJZiBhIGZhY2lsaXR5IGluIHRoZSBtb2RpZmllZCBMaWJyYXJ5IHJlZmVycyB0byBhIGZ1bmN0aW9uIG9yIGEKICAgIHRhYmxlIG9mIGRhdGEgdG8gYmUgc3VwcGxpZWQgYnkgYW4gYXBwbGljYXRpb24gcHJvZ3JhbSB0aGF0IHVzZXMKICAgIHRoZSBmYWNpbGl0eSwgb3RoZXIgdGhhbiBhcyBhbiBhcmd1bWVudCBwYXNzZWQgd2hlbiB0aGUgZmFjaWxpdHkKICAgIGlzIGludm9rZWQsIHRoZW4geW91IG11c3QgbWFrZSBhIGdvb2QgZmFpdGggZWZmb3J0IHRvIGVuc3VyZSB0aGF0LAogICAgaW4gdGhlIGV2ZW50IGFuIGFwcGxpY2F0aW9uIGRvZXMgbm90IHN1cHBseSBzdWNoIGZ1bmN0aW9uIG9yCiAgICB0YWJsZSwgdGhlIGZhY2lsaXR5IHN0aWxsIG9wZXJhdGVzLCBhbmQgcGVyZm9ybXMgd2hhdGV2ZXIgcGFydCBvZgogICAgaXRzIHB1cnBvc2UgcmVtYWlucyBtZWFuaW5nZnVsLgoKICAgIChGb3IgZXhhbXBsZSwgYSBmdW5jdGlvbiBpbiBhIGxpYnJhcnkgdG8gY29tcHV0ZSBzcXVhcmUgcm9vdHMgaGFzCiAgICBhIHB1cnBvc2UgdGhhdCBpcyBlbnRpcmVseSB3ZWxsLWRlZmluZWQgaW5kZXBlbmRlbnQgb2YgdGhlCiAgICBhcHBsaWNhdGlvbi4gIFRoZXJlZm9yZSwgU3Vic2VjdGlvbiAyZCByZXF1aXJlcyB0aGF0IGFueQogICAgYXBwbGljYXRpb24tc3VwcGxpZWQgZnVuY3Rpb24gb3IgdGFibGUgdXNlZCBieSB0aGlzIGZ1bmN0aW9uIG11c3QKICAgIGJlIG9wdGlvbmFsOiBpZiB0aGUgYXBwbGljYXRpb24gZG9lcyBub3Qgc3VwcGx5IGl0LCB0aGUgc3F1YXJlCiAgICByb290IGZ1bmN0aW9uIG11c3Qgc3RpbGwgY29tcHV0ZSBzcXVhcmUgcm9vdHMuKQoKVGhlc2UgcmVxdWlyZW1lbnRzIGFwcGx5IHRvIHRoZSBtb2RpZmllZCB3b3JrIGFzIGEgd2hvbGUuICBJZgppZGVudGlmaWFibGUgc2VjdGlvbnMgb2YgdGhhdCB3b3JrIGFyZSBub3QgZGVyaXZlZCBmcm9tIHRoZSBMaWJyYXJ5LAphbmQgY2FuIGJlIHJlYXNvbmFibHkgY29uc2lkZXJlZCBpbmRlcGVuZGVudCBhbmQgc2VwYXJhdGUgd29ya3MgaW4KdGhlbXNlbHZlcywgdGhlbiB0aGlzIExpY2Vuc2UsIGFuZCBpdHMgdGVybXMsIGRvIG5vdCBhcHBseSB0byB0aG9zZQpzZWN0aW9ucyB3aGVuIHlvdSBkaXN0cmlidXRlIHRoZW0gYXMgc2VwYXJhdGUgd29ya3MuICBCdXQgd2hlbiB5b3UKZGlzdHJpYnV0ZSB0aGUgc2FtZSBzZWN0aW9ucyBhcyBwYXJ0IG9mIGEgd2hvbGUgd2hpY2ggaXMgYSB3b3JrIGJhc2VkCm9uIHRoZSBMaWJyYXJ5LCB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSB3aG9sZSBtdXN0IGJlIG9uIHRoZSB0ZXJtcyBvZgp0aGlzIExpY2Vuc2UsIHdob3NlIHBlcm1pc3Npb25zIGZvciBvdGhlciBsaWNlbnNlZXMgZXh0ZW5kIHRvIHRoZQplbnRpcmUgd2hvbGUsIGFuZCB0aHVzIHRvIGVhY2ggYW5kIGV2ZXJ5IHBhcnQgcmVnYXJkbGVzcyBvZiB3aG8gd3JvdGUKaXQuCgpUaHVzLCBpdCBpcyBub3QgdGhlIGludGVudCBvZiB0aGlzIHNlY3Rpb24gdG8gY2xhaW0gcmlnaHRzIG9yIGNvbnRlc3QKeW91ciByaWdodHMgdG8gd29yayB3cml0dGVuIGVudGlyZWx5IGJ5IHlvdTsgcmF0aGVyLCB0aGUgaW50ZW50IGlzIHRvCmV4ZXJjaXNlIHRoZSByaWdodCB0byBjb250cm9sIHRoZSBkaXN0cmlidXRpb24gb2YgZGVyaXZhdGl2ZSBvcgpjb2xsZWN0aXZlIHdvcmtzIGJhc2VkIG9uIHRoZSBMaWJyYXJ5LgoKSW4gYWRkaXRpb24sIG1lcmUgYWdncmVnYXRpb24gb2YgYW5vdGhlciB3b3JrIG5vdCBiYXNlZCBvbiB0aGUgTGlicmFyeQp3aXRoIHRoZSBMaWJyYXJ5IChvciB3aXRoIGEgd29yayBiYXNlZCBvbiB0aGUgTGlicmFyeSkgb24gYSB2b2x1bWUgb2YKYSBzdG9yYWdlIG9yIGRpc3RyaWJ1dGlvbiBtZWRpdW0gZG9lcyBub3QgYnJpbmcgdGhlIG90aGVyIHdvcmsgdW5kZXIKdGhlIHNjb3BlIG9mIHRoaXMgTGljZW5zZS4KCiAgMy4gWW91IG1heSBvcHQgdG8gYXBwbHkgdGhlIHRlcm1zIG9mIHRoZSBvcmRpbmFyeSBHTlUgR2VuZXJhbCBQdWJsaWMKTGljZW5zZSBpbnN0ZWFkIG9mIHRoaXMgTGljZW5zZSB0byBhIGdpdmVuIGNvcHkgb2YgdGhlIExpYnJhcnkuICBUbyBkbwp0aGlzLCB5b3UgbXVzdCBhbHRlciBhbGwgdGhlIG5vdGljZXMgdGhhdCByZWZlciB0byB0aGlzIExpY2Vuc2UsIHNvCnRoYXQgdGhleSByZWZlciB0byB0aGUgb3JkaW5hcnkgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMiwKaW5zdGVhZCBvZiB0byB0aGlzIExpY2Vuc2UuICAoSWYgYSBuZXdlciB2ZXJzaW9uIHRoYW4gdmVyc2lvbiAyIG9mIHRoZQpvcmRpbmFyeSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBoYXMgYXBwZWFyZWQsIHRoZW4geW91IGNhbiBzcGVjaWZ5CnRoYXQgdmVyc2lvbiBpbnN0ZWFkIGlmIHlvdSB3aXNoLikgIERvIG5vdCBtYWtlIGFueSBvdGhlciBjaGFuZ2UgaW4KdGhlc2Ugbm90aWNlcy4KDAogIE9uY2UgdGhpcyBjaGFuZ2UgaXMgbWFkZSBpbiBhIGdpdmVuIGNvcHksIGl0IGlzIGlycmV2ZXJzaWJsZSBmb3IKdGhhdCBjb3B5LCBzbyB0aGUgb3JkaW5hcnkgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXBwbGllcyB0byBhbGwKc3Vic2VxdWVudCBjb3BpZXMgYW5kIGRlcml2YXRpdmUgd29ya3MgbWFkZSBmcm9tIHRoYXQgY29weS4KCiAgVGhpcyBvcHRpb24gaXMgdXNlZnVsIHdoZW4geW91IHdpc2ggdG8gY29weSBwYXJ0IG9mIHRoZSBjb2RlIG9mCnRoZSBMaWJyYXJ5IGludG8gYSBwcm9ncmFtIHRoYXQgaXMgbm90IGEgbGlicmFyeS4KCiAgNC4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IChvciBhIHBvcnRpb24gb3IKZGVyaXZhdGl2ZSBvZiBpdCwgdW5kZXIgU2VjdGlvbiAyKSBpbiBvYmplY3QgY29kZSBvciBleGVjdXRhYmxlIGZvcm0KdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zIDEgYW5kIDIgYWJvdmUgcHJvdmlkZWQgdGhhdCB5b3UgYWNjb21wYW55Cml0IHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcgbWFjaGluZS1yZWFkYWJsZSBzb3VyY2UgY29kZSwgd2hpY2gKbXVzdCBiZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBvbiBhCm1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZS4KCiAgSWYgZGlzdHJpYnV0aW9uIG9mIG9iamVjdCBjb2RlIGlzIG1hZGUgYnkgb2ZmZXJpbmcgYWNjZXNzIHRvIGNvcHkKZnJvbSBhIGRlc2lnbmF0ZWQgcGxhY2UsIHRoZW4gb2ZmZXJpbmcgZXF1aXZhbGVudCBhY2Nlc3MgdG8gY29weSB0aGUKc291cmNlIGNvZGUgZnJvbSB0aGUgc2FtZSBwbGFjZSBzYXRpc2ZpZXMgdGhlIHJlcXVpcmVtZW50IHRvCmRpc3RyaWJ1dGUgdGhlIHNvdXJjZSBjb2RlLCBldmVuIHRob3VnaCB0aGlyZCBwYXJ0aWVzIGFyZSBub3QKY29tcGVsbGVkIHRvIGNvcHkgdGhlIHNvdXJjZSBhbG9uZyB3aXRoIHRoZSBvYmplY3QgY29kZS4KCiAgNS4gQSBwcm9ncmFtIHRoYXQgY29udGFpbnMgbm8gZGVyaXZhdGl2ZSBvZiBhbnkgcG9ydGlvbiBvZiB0aGUKTGlicmFyeSwgYnV0IGlzIGRlc2lnbmVkIHRvIHdvcmsgd2l0aCB0aGUgTGlicmFyeSBieSBiZWluZyBjb21waWxlZCBvcgpsaW5rZWQgd2l0aCBpdCwgaXMgY2FsbGVkIGEgIndvcmsgdGhhdCB1c2VzIHRoZSBMaWJyYXJ5Ii4gIFN1Y2ggYQp3b3JrLCBpbiBpc29sYXRpb24sIGlzIG5vdCBhIGRlcml2YXRpdmUgd29yayBvZiB0aGUgTGlicmFyeSwgYW5kCnRoZXJlZm9yZSBmYWxscyBvdXRzaWRlIHRoZSBzY29wZSBvZiB0aGlzIExpY2Vuc2UuCgogIEhvd2V2ZXIsIGxpbmtpbmcgYSAid29yayB0aGF0IHVzZXMgdGhlIExpYnJhcnkiIHdpdGggdGhlIExpYnJhcnkKY3JlYXRlcyBhbiBleGVjdXRhYmxlIHRoYXQgaXMgYSBkZXJpdmF0aXZlIG9mIHRoZSBMaWJyYXJ5IChiZWNhdXNlIGl0CmNvbnRhaW5zIHBvcnRpb25zIG9mIHRoZSBMaWJyYXJ5KSwgcmF0aGVyIHRoYW4gYSAid29yayB0aGF0IHVzZXMgdGhlCmxpYnJhcnkiLiAgVGhlIGV4ZWN1dGFibGUgaXMgdGhlcmVmb3JlIGNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlLgpTZWN0aW9uIDYgc3RhdGVzIHRlcm1zIGZvciBkaXN0cmlidXRpb24gb2Ygc3VjaCBleGVjdXRhYmxlcy4KCiAgV2hlbiBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgTGlicmFyeSIgdXNlcyBtYXRlcmlhbCBmcm9tIGEgaGVhZGVyIGZpbGUKdGhhdCBpcyBwYXJ0IG9mIHRoZSBMaWJyYXJ5LCB0aGUgb2JqZWN0IGNvZGUgZm9yIHRoZSB3b3JrIG1heSBiZSBhCmRlcml2YXRpdmUgd29yayBvZiB0aGUgTGlicmFyeSBldmVuIHRob3VnaCB0aGUgc291cmNlIGNvZGUgaXMgbm90LgpXaGV0aGVyIHRoaXMgaXMgdHJ1ZSBpcyBlc3BlY2lhbGx5IHNpZ25pZmljYW50IGlmIHRoZSB3b3JrIGNhbiBiZQpsaW5rZWQgd2l0aG91dCB0aGUgTGlicmFyeSwgb3IgaWYgdGhlIHdvcmsgaXMgaXRzZWxmIGEgbGlicmFyeS4gIFRoZQp0aHJlc2hvbGQgZm9yIHRoaXMgdG8gYmUgdHJ1ZSBpcyBub3QgcHJlY2lzZWx5IGRlZmluZWQgYnkgbGF3LgoKICBJZiBzdWNoIGFuIG9iamVjdCBmaWxlIHVzZXMgb25seSBudW1lcmljYWwgcGFyYW1ldGVycywgZGF0YQpzdHJ1Y3R1cmUgbGF5b3V0cyBhbmQgYWNjZXNzb3JzLCBhbmQgc21hbGwgbWFjcm9zIGFuZCBzbWFsbCBpbmxpbmUKZnVuY3Rpb25zICh0ZW4gbGluZXMgb3IgbGVzcyBpbiBsZW5ndGgpLCB0aGVuIHRoZSB1c2Ugb2YgdGhlIG9iamVjdApmaWxlIGlzIHVucmVzdHJpY3RlZCwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGlzIGxlZ2FsbHkgYSBkZXJpdmF0aXZlCndvcmsuICAoRXhlY3V0YWJsZXMgY29udGFpbmluZyB0aGlzIG9iamVjdCBjb2RlIHBsdXMgcG9ydGlvbnMgb2YgdGhlCkxpYnJhcnkgd2lsbCBzdGlsbCBmYWxsIHVuZGVyIFNlY3Rpb24gNi4pCgogIE90aGVyd2lzZSwgaWYgdGhlIHdvcmsgaXMgYSBkZXJpdmF0aXZlIG9mIHRoZSBMaWJyYXJ5LCB5b3UgbWF5CmRpc3RyaWJ1dGUgdGhlIG9iamVjdCBjb2RlIGZvciB0aGUgd29yayB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbiA2LgpBbnkgZXhlY3V0YWJsZXMgY29udGFpbmluZyB0aGF0IHdvcmsgYWxzbyBmYWxsIHVuZGVyIFNlY3Rpb24gNiwKd2hldGhlciBvciBub3QgdGhleSBhcmUgbGlua2VkIGRpcmVjdGx5IHdpdGggdGhlIExpYnJhcnkgaXRzZWxmLgoMCiAgNi4gQXMgYW4gZXhjZXB0aW9uIHRvIHRoZSBTZWN0aW9ucyBhYm92ZSwgeW91IG1heSBhbHNvIGNvbWJpbmUgb3IKbGluayBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgTGlicmFyeSIgd2l0aCB0aGUgTGlicmFyeSB0byBwcm9kdWNlIGEKd29yayBjb250YWluaW5nIHBvcnRpb25zIG9mIHRoZSBMaWJyYXJ5LCBhbmQgZGlzdHJpYnV0ZSB0aGF0IHdvcmsKdW5kZXIgdGVybXMgb2YgeW91ciBjaG9pY2UsIHByb3ZpZGVkIHRoYXQgdGhlIHRlcm1zIHBlcm1pdAptb2RpZmljYXRpb24gb2YgdGhlIHdvcmsgZm9yIHRoZSBjdXN0b21lcidzIG93biB1c2UgYW5kIHJldmVyc2UKZW5naW5lZXJpbmcgZm9yIGRlYnVnZ2luZyBzdWNoIG1vZGlmaWNhdGlvbnMuCgogIFlvdSBtdXN0IGdpdmUgcHJvbWluZW50IG5vdGljZSB3aXRoIGVhY2ggY29weSBvZiB0aGUgd29yayB0aGF0IHRoZQpMaWJyYXJ5IGlzIHVzZWQgaW4gaXQgYW5kIHRoYXQgdGhlIExpYnJhcnkgYW5kIGl0cyB1c2UgYXJlIGNvdmVyZWQgYnkKdGhpcyBMaWNlbnNlLiAgWW91IG11c3Qgc3VwcGx5IGEgY29weSBvZiB0aGlzIExpY2Vuc2UuICBJZiB0aGUgd29yawpkdXJpbmcgZXhlY3V0aW9uIGRpc3BsYXlzIGNvcHlyaWdodCBub3RpY2VzLCB5b3UgbXVzdCBpbmNsdWRlIHRoZQpjb3B5cmlnaHQgbm90aWNlIGZvciB0aGUgTGlicmFyeSBhbW9uZyB0aGVtLCBhcyB3ZWxsIGFzIGEgcmVmZXJlbmNlCmRpcmVjdGluZyB0aGUgdXNlciB0byB0aGUgY29weSBvZiB0aGlzIExpY2Vuc2UuICBBbHNvLCB5b3UgbXVzdCBkbyBvbmUKb2YgdGhlc2UgdGhpbmdzOgoKICAgIGEpIEFjY29tcGFueSB0aGUgd29yayB3aXRoIHRoZSBjb21wbGV0ZSBjb3JyZXNwb25kaW5nCiAgICBtYWNoaW5lLXJlYWRhYmxlIHNvdXJjZSBjb2RlIGZvciB0aGUgTGlicmFyeSBpbmNsdWRpbmcgd2hhdGV2ZXIKICAgIGNoYW5nZXMgd2VyZSB1c2VkIGluIHRoZSB3b3JrICh3aGljaCBtdXN0IGJlIGRpc3RyaWJ1dGVkIHVuZGVyCiAgICBTZWN0aW9ucyAxIGFuZCAyIGFib3ZlKTsgYW5kLCBpZiB0aGUgd29yayBpcyBhbiBleGVjdXRhYmxlIGxpbmtlZAogICAgd2l0aCB0aGUgTGlicmFyeSwgd2l0aCB0aGUgY29tcGxldGUgbWFjaGluZS1yZWFkYWJsZSAid29yayB0aGF0CiAgICB1c2VzIHRoZSBMaWJyYXJ5IiwgYXMgb2JqZWN0IGNvZGUgYW5kL29yIHNvdXJjZSBjb2RlLCBzbyB0aGF0IHRoZQogICAgdXNlciBjYW4gbW9kaWZ5IHRoZSBMaWJyYXJ5IGFuZCB0aGVuIHJlbGluayB0byBwcm9kdWNlIGEgbW9kaWZpZWQKICAgIGV4ZWN1dGFibGUgY29udGFpbmluZyB0aGUgbW9kaWZpZWQgTGlicmFyeS4gIChJdCBpcyB1bmRlcnN0b29kCiAgICB0aGF0IHRoZSB1c2VyIHdobyBjaGFuZ2VzIHRoZSBjb250ZW50cyBvZiBkZWZpbml0aW9ucyBmaWxlcyBpbiB0aGUKICAgIExpYnJhcnkgd2lsbCBub3QgbmVjZXNzYXJpbHkgYmUgYWJsZSB0byByZWNvbXBpbGUgdGhlIGFwcGxpY2F0aW9uCiAgICB0byB1c2UgdGhlIG1vZGlmaWVkIGRlZmluaXRpb25zLikKCiAgICBiKSBVc2UgYSBzdWl0YWJsZSBzaGFyZWQgbGlicmFyeSBtZWNoYW5pc20gZm9yIGxpbmtpbmcgd2l0aCB0aGUKICAgIExpYnJhcnkuICBBIHN1aXRhYmxlIG1lY2hhbmlzbSBpcyBvbmUgdGhhdCAoMSkgdXNlcyBhdCBydW4gdGltZSBhCiAgICBjb3B5IG9mIHRoZSBsaWJyYXJ5IGFscmVhZHkgcHJlc2VudCBvbiB0aGUgdXNlcidzIGNvbXB1dGVyIHN5c3RlbSwKICAgIHJhdGhlciB0aGFuIGNvcHlpbmcgbGlicmFyeSBmdW5jdGlvbnMgaW50byB0aGUgZXhlY3V0YWJsZSwgYW5kICgyKQogICAgd2lsbCBvcGVyYXRlIHByb3Blcmx5IHdpdGggYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCBpZgogICAgdGhlIHVzZXIgaW5zdGFsbHMgb25lLCBhcyBsb25nIGFzIHRoZSBtb2RpZmllZCB2ZXJzaW9uIGlzCiAgICBpbnRlcmZhY2UtY29tcGF0aWJsZSB3aXRoIHRoZSB2ZXJzaW9uIHRoYXQgdGhlIHdvcmsgd2FzIG1hZGUgd2l0aC4KCiAgICBjKSBBY2NvbXBhbnkgdGhlIHdvcmsgd2l0aCBhIHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZvciBhdAogICAgbGVhc3QgdGhyZWUgeWVhcnMsIHRvIGdpdmUgdGhlIHNhbWUgdXNlciB0aGUgbWF0ZXJpYWxzCiAgICBzcGVjaWZpZWQgaW4gU3Vic2VjdGlvbiA2YSwgYWJvdmUsIGZvciBhIGNoYXJnZSBubyBtb3JlCiAgICB0aGFuIHRoZSBjb3N0IG9mIHBlcmZvcm1pbmcgdGhpcyBkaXN0cmlidXRpb24uCgogICAgZCkgSWYgZGlzdHJpYnV0aW9uIG9mIHRoZSB3b3JrIGlzIG1hZGUgYnkgb2ZmZXJpbmcgYWNjZXNzIHRvIGNvcHkKICAgIGZyb20gYSBkZXNpZ25hdGVkIHBsYWNlLCBvZmZlciBlcXVpdmFsZW50IGFjY2VzcyB0byBjb3B5IHRoZSBhYm92ZQogICAgc3BlY2lmaWVkIG1hdGVyaWFscyBmcm9tIHRoZSBzYW1lIHBsYWNlLgoKICAgIGUpIFZlcmlmeSB0aGF0IHRoZSB1c2VyIGhhcyBhbHJlYWR5IHJlY2VpdmVkIGEgY29weSBvZiB0aGVzZQogICAgbWF0ZXJpYWxzIG9yIHRoYXQgeW91IGhhdmUgYWxyZWFkeSBzZW50IHRoaXMgdXNlciBhIGNvcHkuCgogIEZvciBhbiBleGVjdXRhYmxlLCB0aGUgcmVxdWlyZWQgZm9ybSBvZiB0aGUgIndvcmsgdGhhdCB1c2VzIHRoZQpMaWJyYXJ5IiBtdXN0IGluY2x1ZGUgYW55IGRhdGEgYW5kIHV0aWxpdHkgcHJvZ3JhbXMgbmVlZGVkIGZvcgpyZXByb2R1Y2luZyB0aGUgZXhlY3V0YWJsZSBmcm9tIGl0LiAgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwKdGhlIG1hdGVyaWFscyB0byBiZSBkaXN0cmlidXRlZCBuZWVkIG5vdCBpbmNsdWRlIGFueXRoaW5nIHRoYXQgaXMKbm9ybWFsbHkgZGlzdHJpYnV0ZWQgKGluIGVpdGhlciBzb3VyY2Ugb3IgYmluYXJ5IGZvcm0pIHdpdGggdGhlIG1ham9yCmNvbXBvbmVudHMgKGNvbXBpbGVyLCBrZXJuZWwsIGFuZCBzbyBvbikgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0gb24Kd2hpY2ggdGhlIGV4ZWN1dGFibGUgcnVucywgdW5sZXNzIHRoYXQgY29tcG9uZW50IGl0c2VsZiBhY2NvbXBhbmllcwp0aGUgZXhlY3V0YWJsZS4KCiAgSXQgbWF5IGhhcHBlbiB0aGF0IHRoaXMgcmVxdWlyZW1lbnQgY29udHJhZGljdHMgdGhlIGxpY2Vuc2UKcmVzdHJpY3Rpb25zIG9mIG90aGVyIHByb3ByaWV0YXJ5IGxpYnJhcmllcyB0aGF0IGRvIG5vdCBub3JtYWxseQphY2NvbXBhbnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0uICBTdWNoIGEgY29udHJhZGljdGlvbiBtZWFucyB5b3UgY2Fubm90CnVzZSBib3RoIHRoZW0gYW5kIHRoZSBMaWJyYXJ5IHRvZ2V0aGVyIGluIGFuIGV4ZWN1dGFibGUgdGhhdCB5b3UKZGlzdHJpYnV0ZS4KDAogIDcuIFlvdSBtYXkgcGxhY2UgbGlicmFyeSBmYWNpbGl0aWVzIHRoYXQgYXJlIGEgd29yayBiYXNlZCBvbiB0aGUKTGlicmFyeSBzaWRlLWJ5LXNpZGUgaW4gYSBzaW5nbGUgbGlicmFyeSB0b2dldGhlciB3aXRoIG90aGVyIGxpYnJhcnkKZmFjaWxpdGllcyBub3QgY292ZXJlZCBieSB0aGlzIExpY2Vuc2UsIGFuZCBkaXN0cmlidXRlIHN1Y2ggYSBjb21iaW5lZApsaWJyYXJ5LCBwcm92aWRlZCB0aGF0IHRoZSBzZXBhcmF0ZSBkaXN0cmlidXRpb24gb2YgdGhlIHdvcmsgYmFzZWQgb24KdGhlIExpYnJhcnkgYW5kIG9mIHRoZSBvdGhlciBsaWJyYXJ5IGZhY2lsaXRpZXMgaXMgb3RoZXJ3aXNlCnBlcm1pdHRlZCwgYW5kIHByb3ZpZGVkIHRoYXQgeW91IGRvIHRoZXNlIHR3byB0aGluZ3M6CgogICAgYSkgQWNjb21wYW55IHRoZSBjb21iaW5lZCBsaWJyYXJ5IHdpdGggYSBjb3B5IG9mIHRoZSBzYW1lIHdvcmsKICAgIGJhc2VkIG9uIHRoZSBMaWJyYXJ5LCB1bmNvbWJpbmVkIHdpdGggYW55IG90aGVyIGxpYnJhcnkKICAgIGZhY2lsaXRpZXMuICBUaGlzIG11c3QgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQogICAgU2VjdGlvbnMgYWJvdmUuCgogICAgYikgR2l2ZSBwcm9taW5lbnQgbm90aWNlIHdpdGggdGhlIGNvbWJpbmVkIGxpYnJhcnkgb2YgdGhlIGZhY3QKICAgIHRoYXQgcGFydCBvZiBpdCBpcyBhIHdvcmsgYmFzZWQgb24gdGhlIExpYnJhcnksIGFuZCBleHBsYWluaW5nCiAgICB3aGVyZSB0byBmaW5kIHRoZSBhY2NvbXBhbnlpbmcgdW5jb21iaW5lZCBmb3JtIG9mIHRoZSBzYW1lIHdvcmsuCgogIDguIFlvdSBtYXkgbm90IGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSwgbGluayB3aXRoLCBvciBkaXN0cmlidXRlCnRoZSBMaWJyYXJ5IGV4Y2VwdCBhcyBleHByZXNzbHkgcHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQW55CmF0dGVtcHQgb3RoZXJ3aXNlIHRvIGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSwgbGluayB3aXRoLCBvcgpkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IGlzIHZvaWQsIGFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgdGVybWluYXRlIHlvdXIKcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZS4gIEhvd2V2ZXIsIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzLApvciByaWdodHMsIGZyb20geW91IHVuZGVyIHRoaXMgTGljZW5zZSB3aWxsIG5vdCBoYXZlIHRoZWlyIGxpY2Vuc2VzCnRlcm1pbmF0ZWQgc28gbG9uZyBhcyBzdWNoIHBhcnRpZXMgcmVtYWluIGluIGZ1bGwgY29tcGxpYW5jZS4KCiAgOS4gWW91IGFyZSBub3QgcmVxdWlyZWQgdG8gYWNjZXB0IHRoaXMgTGljZW5zZSwgc2luY2UgeW91IGhhdmUgbm90CnNpZ25lZCBpdC4gIEhvd2V2ZXIsIG5vdGhpbmcgZWxzZSBncmFudHMgeW91IHBlcm1pc3Npb24gdG8gbW9kaWZ5IG9yCmRpc3RyaWJ1dGUgdGhlIExpYnJhcnkgb3IgaXRzIGRlcml2YXRpdmUgd29ya3MuICBUaGVzZSBhY3Rpb25zIGFyZQpwcm9oaWJpdGVkIGJ5IGxhdyBpZiB5b3UgZG8gbm90IGFjY2VwdCB0aGlzIExpY2Vuc2UuICBUaGVyZWZvcmUsIGJ5Cm1vZGlmeWluZyBvciBkaXN0cmlidXRpbmcgdGhlIExpYnJhcnkgKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQpMaWJyYXJ5KSwgeW91IGluZGljYXRlIHlvdXIgYWNjZXB0YW5jZSBvZiB0aGlzIExpY2Vuc2UgdG8gZG8gc28sIGFuZAphbGwgaXRzIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpbmcgb3IgbW9kaWZ5aW5nCnRoZSBMaWJyYXJ5IG9yIHdvcmtzIGJhc2VkIG9uIGl0LgoKICAxMC4gRWFjaCB0aW1lIHlvdSByZWRpc3RyaWJ1dGUgdGhlIExpYnJhcnkgKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQpMaWJyYXJ5KSwgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5IHJlY2VpdmVzIGEgbGljZW5zZSBmcm9tIHRoZQpvcmlnaW5hbCBsaWNlbnNvciB0byBjb3B5LCBkaXN0cmlidXRlLCBsaW5rIHdpdGggb3IgbW9kaWZ5IHRoZSBMaWJyYXJ5CnN1YmplY3QgdG8gdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMuICBZb3UgbWF5IG5vdCBpbXBvc2UgYW55IGZ1cnRoZXIKcmVzdHJpY3Rpb25zIG9uIHRoZSByZWNpcGllbnRzJyBleGVyY2lzZSBvZiB0aGUgcmlnaHRzIGdyYW50ZWQgaGVyZWluLgpZb3UgYXJlIG5vdCByZXNwb25zaWJsZSBmb3IgZW5mb3JjaW5nIGNvbXBsaWFuY2UgYnkgdGhpcmQgcGFydGllcyB3aXRoCnRoaXMgTGljZW5zZS4KDAogIDExLiBJZiwgYXMgYSBjb25zZXF1ZW5jZSBvZiBhIGNvdXJ0IGp1ZGdtZW50IG9yIGFsbGVnYXRpb24gb2YgcGF0ZW50CmluZnJpbmdlbWVudCBvciBmb3IgYW55IG90aGVyIHJlYXNvbiAobm90IGxpbWl0ZWQgdG8gcGF0ZW50IGlzc3VlcyksCmNvbmRpdGlvbnMgYXJlIGltcG9zZWQgb24geW91ICh3aGV0aGVyIGJ5IGNvdXJ0IG9yZGVyLCBhZ3JlZW1lbnQgb3IKb3RoZXJ3aXNlKSB0aGF0IGNvbnRyYWRpY3QgdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLCB0aGV5IGRvIG5vdApleGN1c2UgeW91IGZyb20gdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLiAgSWYgeW91IGNhbm5vdApkaXN0cmlidXRlIHNvIGFzIHRvIHNhdGlzZnkgc2ltdWx0YW5lb3VzbHkgeW91ciBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzCkxpY2Vuc2UgYW5kIGFueSBvdGhlciBwZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5jZSB5b3UKbWF5IG5vdCBkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiBhIHBhdGVudApsaWNlbnNlIHdvdWxkIG5vdCBwZXJtaXQgcm95YWx0eS1mcmVlIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBMaWJyYXJ5IGJ5CmFsbCB0aG9zZSB3aG8gcmVjZWl2ZSBjb3BpZXMgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHlvdSwgdGhlbgp0aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCBpdCBhbmQgdGhpcyBMaWNlbnNlIHdvdWxkIGJlIHRvCnJlZnJhaW4gZW50aXJlbHkgZnJvbSBkaXN0cmlidXRpb24gb2YgdGhlIExpYnJhcnkuCgpJZiBhbnkgcG9ydGlvbiBvZiB0aGlzIHNlY3Rpb24gaXMgaGVsZCBpbnZhbGlkIG9yIHVuZW5mb3JjZWFibGUgdW5kZXIgYW55CnBhcnRpY3VsYXIgY2lyY3Vtc3RhbmNlLCB0aGUgYmFsYW5jZSBvZiB0aGUgc2VjdGlvbiBpcyBpbnRlbmRlZCB0byBhcHBseSwKYW5kIHRoZSBzZWN0aW9uIGFzIGEgd2hvbGUgaXMgaW50ZW5kZWQgdG8gYXBwbHkgaW4gb3RoZXIgY2lyY3Vtc3RhbmNlcy4KCkl0IGlzIG5vdCB0aGUgcHVycG9zZSBvZiB0aGlzIHNlY3Rpb24gdG8gaW5kdWNlIHlvdSB0byBpbmZyaW5nZSBhbnkKcGF0ZW50cyBvciBvdGhlciBwcm9wZXJ0eSByaWdodCBjbGFpbXMgb3IgdG8gY29udGVzdCB2YWxpZGl0eSBvZiBhbnkKc3VjaCBjbGFpbXM7IHRoaXMgc2VjdGlvbiBoYXMgdGhlIHNvbGUgcHVycG9zZSBvZiBwcm90ZWN0aW5nIHRoZQppbnRlZ3JpdHkgb2YgdGhlIGZyZWUgc29mdHdhcmUgZGlzdHJpYnV0aW9uIHN5c3RlbSB3aGljaCBpcwppbXBsZW1lbnRlZCBieSBwdWJsaWMgbGljZW5zZSBwcmFjdGljZXMuICBNYW55IHBlb3BsZSBoYXZlIG1hZGUKZ2VuZXJvdXMgY29udHJpYnV0aW9ucyB0byB0aGUgd2lkZSByYW5nZSBvZiBzb2Z0d2FyZSBkaXN0cmlidXRlZAp0aHJvdWdoIHRoYXQgc3lzdGVtIGluIHJlbGlhbmNlIG9uIGNvbnNpc3RlbnQgYXBwbGljYXRpb24gb2YgdGhhdApzeXN0ZW07IGl0IGlzIHVwIHRvIHRoZSBhdXRob3IvZG9ub3IgdG8gZGVjaWRlIGlmIGhlIG9yIHNoZSBpcyB3aWxsaW5nCnRvIGRpc3RyaWJ1dGUgc29mdHdhcmUgdGhyb3VnaCBhbnkgb3RoZXIgc3lzdGVtIGFuZCBhIGxpY2Vuc2VlIGNhbm5vdAppbXBvc2UgdGhhdCBjaG9pY2UuCgpUaGlzIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8gbWFrZSB0aG9yb3VnaGx5IGNsZWFyIHdoYXQgaXMgYmVsaWV2ZWQgdG8KYmUgYSBjb25zZXF1ZW5jZSBvZiB0aGUgcmVzdCBvZiB0aGlzIExpY2Vuc2UuCgogIDEyLiBJZiB0aGUgZGlzdHJpYnV0aW9uIGFuZC9vciB1c2Ugb2YgdGhlIExpYnJhcnkgaXMgcmVzdHJpY3RlZCBpbgpjZXJ0YWluIGNvdW50cmllcyBlaXRoZXIgYnkgcGF0ZW50cyBvciBieSBjb3B5cmlnaHRlZCBpbnRlcmZhY2VzLCB0aGUKb3JpZ2luYWwgY29weXJpZ2h0IGhvbGRlciB3aG8gcGxhY2VzIHRoZSBMaWJyYXJ5IHVuZGVyIHRoaXMgTGljZW5zZSBtYXkgYWRkCmFuIGV4cGxpY2l0IGdlb2dyYXBoaWNhbCBkaXN0cmlidXRpb24gbGltaXRhdGlvbiBleGNsdWRpbmcgdGhvc2UgY291bnRyaWVzLApzbyB0aGF0IGRpc3RyaWJ1dGlvbiBpcyBwZXJtaXR0ZWQgb25seSBpbiBvciBhbW9uZyBjb3VudHJpZXMgbm90IHRodXMKZXhjbHVkZWQuICBJbiBzdWNoIGNhc2UsIHRoaXMgTGljZW5zZSBpbmNvcnBvcmF0ZXMgdGhlIGxpbWl0YXRpb24gYXMgaWYKd3JpdHRlbiBpbiB0aGUgYm9keSBvZiB0aGlzIExpY2Vuc2UuCgogIDEzLiBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldwp2ZXJzaW9ucyBvZiB0aGUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuClN1Y2ggbmV3IHZlcnNpb25zIHdpbGwgYmUgc2ltaWxhciBpbiBzcGlyaXQgdG8gdGhlIHByZXNlbnQgdmVyc2lvbiwKYnV0IG1heSBkaWZmZXIgaW4gZGV0YWlsIHRvIGFkZHJlc3MgbmV3IHByb2JsZW1zIG9yIGNvbmNlcm5zLgoKRWFjaCB2ZXJzaW9uIGlzIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuICBJZiB0aGUgTGlicmFyeQpzcGVjaWZpZXMgYSB2ZXJzaW9uIG51bWJlciBvZiB0aGlzIExpY2Vuc2Ugd2hpY2ggYXBwbGllcyB0byBpdCBhbmQKImFueSBsYXRlciB2ZXJzaW9uIiwgeW91IGhhdmUgdGhlIG9wdGlvbiBvZiBmb2xsb3dpbmcgdGhlIHRlcm1zIGFuZApjb25kaXRpb25zIGVpdGhlciBvZiB0aGF0IHZlcnNpb24gb3Igb2YgYW55IGxhdGVyIHZlcnNpb24gcHVibGlzaGVkIGJ5CnRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uICBJZiB0aGUgTGlicmFyeSBkb2VzIG5vdCBzcGVjaWZ5IGEKbGljZW5zZSB2ZXJzaW9uIG51bWJlciwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQgYnkKdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KDAogIDE0LiBJZiB5b3Ugd2lzaCB0byBpbmNvcnBvcmF0ZSBwYXJ0cyBvZiB0aGUgTGlicmFyeSBpbnRvIG90aGVyIGZyZWUKcHJvZ3JhbXMgd2hvc2UgZGlzdHJpYnV0aW9uIGNvbmRpdGlvbnMgYXJlIGluY29tcGF0aWJsZSB3aXRoIHRoZXNlLAp3cml0ZSB0byB0aGUgYXV0aG9yIHRvIGFzayBmb3IgcGVybWlzc2lvbi4gIEZvciBzb2Z0d2FyZSB3aGljaCBpcwpjb3B5cmlnaHRlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3cml0ZSB0byB0aGUgRnJlZQpTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3ZSBzb21ldGltZXMgbWFrZSBleGNlcHRpb25zIGZvciB0aGlzLiAgT3VyCmRlY2lzaW9uIHdpbGwgYmUgZ3VpZGVkIGJ5IHRoZSB0d28gZ29hbHMgb2YgcHJlc2VydmluZyB0aGUgZnJlZSBzdGF0dXMKb2YgYWxsIGRlcml2YXRpdmVzIG9mIG91ciBmcmVlIHNvZnR3YXJlIGFuZCBvZiBwcm9tb3RpbmcgdGhlIHNoYXJpbmcKYW5kIHJldXNlIG9mIHNvZnR3YXJlIGdlbmVyYWxseS4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTyBXQVJSQU5UWQoKICAxNS4gQkVDQVVTRSBUSEUgTElCUkFSWSBJUyBMSUNFTlNFRCBGUkVFIE9GIENIQVJHRSwgVEhFUkUgSVMgTk8KV0FSUkFOVFkgRk9SIFRIRSBMSUJSQVJZLCBUTyBUSEUgRVhURU5UIFBFUk1JVFRFRCBCWSBBUFBMSUNBQkxFIExBVy4KRVhDRVBUIFdIRU4gT1RIRVJXSVNFIFNUQVRFRCBJTiBXUklUSU5HIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQvT1IKT1RIRVIgUEFSVElFUyBQUk9WSURFIFRIRSBMSUJSQVJZICJBUyBJUyIgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKS0lORCwgRUlUSEVSIEVYUFJFU1NFRCBPUiBJTVBMSUVELCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCklNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgpQVVJQT1NFLiAgVEhFIEVOVElSRSBSSVNLIEFTIFRPIFRIRSBRVUFMSVRZIEFORCBQRVJGT1JNQU5DRSBPRiBUSEUKTElCUkFSWSBJUyBXSVRIIFlPVS4gIFNIT1VMRCBUSEUgTElCUkFSWSBQUk9WRSBERUZFQ1RJVkUsIFlPVSBBU1NVTUUKVEhFIENPU1QgT0YgQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsIFJFUEFJUiBPUiBDT1JSRUNUSU9OLgoKICAxNi4gSU4gTk8gRVZFTlQgVU5MRVNTIFJFUVVJUkVEIEJZIEFQUExJQ0FCTEUgTEFXIE9SIEFHUkVFRCBUTyBJTgpXUklUSU5HIFdJTEwgQU5ZIENPUFlSSUdIVCBIT0xERVIsIE9SIEFOWSBPVEhFUiBQQVJUWSBXSE8gTUFZIE1PRElGWQpBTkQvT1IgUkVESVNUUklCVVRFIFRIRSBMSUJSQVJZIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVQpGT1IgREFNQUdFUywgSU5DTFVESU5HIEFOWSBHRU5FUkFMLCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SCkNPTlNFUVVFTlRJQUwgREFNQUdFUyBBUklTSU5HIE9VVCBPRiBUSEUgVVNFIE9SIElOQUJJTElUWSBUTyBVU0UgVEhFCkxJQlJBUlkgKElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gTE9TUyBPRiBEQVRBIE9SIERBVEEgQkVJTkcKUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJTkVEIEJZIFlPVSBPUiBUSElSRCBQQVJUSUVTIE9SIEEKRkFJTFVSRSBPRiBUSEUgTElCUkFSWSBUTyBPUEVSQVRFIFdJVEggQU5ZIE9USEVSIFNPRlRXQVJFKSwgRVZFTiBJRgpTVUNIIEhPTERFUiBPUiBPVEhFUiBQQVJUWSBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICkRBTUFHRVMuCgogICAgICAgICAgICAgICAgICAgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKDAogICAgICAgICAgIEhvdyB0byBBcHBseSBUaGVzZSBUZXJtcyB0byBZb3VyIE5ldyBMaWJyYXJpZXMKCiAgSWYgeW91IGRldmVsb3AgYSBuZXcgbGlicmFyeSwgYW5kIHlvdSB3YW50IGl0IHRvIGJlIG9mIHRoZSBncmVhdGVzdApwb3NzaWJsZSB1c2UgdG8gdGhlIHB1YmxpYywgd2UgcmVjb21tZW5kIG1ha2luZyBpdCBmcmVlIHNvZnR3YXJlIHRoYXQKZXZlcnlvbmUgY2FuIHJlZGlzdHJpYnV0ZSBhbmQgY2hhbmdlLiAgWW91IGNhbiBkbyBzbyBieSBwZXJtaXR0aW5nCnJlZGlzdHJpYnV0aW9uIHVuZGVyIHRoZXNlIHRlcm1zIChvciwgYWx0ZXJuYXRpdmVseSwgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQpvcmRpbmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKS4KCiAgVG8gYXBwbHkgdGhlc2UgdGVybXMsIGF0dGFjaCB0aGUgZm9sbG93aW5nIG5vdGljZXMgdG8gdGhlIGxpYnJhcnkuICBJdCBpcwpzYWZlc3QgdG8gYXR0YWNoIHRoZW0gdG8gdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGZpbGUgdG8gbW9zdCBlZmZlY3RpdmVseQpjb252ZXkgdGhlIGV4Y2x1c2lvbiBvZiB3YXJyYW50eTsgYW5kIGVhY2ggZmlsZSBzaG91bGQgaGF2ZSBhdCBsZWFzdCB0aGUKImNvcHlyaWdodCIgbGluZSBhbmQgYSBwb2ludGVyIHRvIHdoZXJlIHRoZSBmdWxsIG5vdGljZSBpcyBmb3VuZC4KCiAgICA8b25lIGxpbmUgdG8gZ2l2ZSB0aGUgbGlicmFyeSdzIG5hbWUgYW5kIGEgYnJpZWYgaWRlYSBvZiB3aGF0IGl0IGRvZXMuPgogICAgQ29weXJpZ2h0IChDKSA8eWVhcj4gIDxuYW1lIG9mIGF1dGhvcj4KCiAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgoKICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgoKICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQoKQWxzbyBhZGQgaW5mb3JtYXRpb24gb24gaG93IHRvIGNvbnRhY3QgeW91IGJ5IGVsZWN0cm9uaWMgYW5kIHBhcGVyIG1haWwuCgpZb3Ugc2hvdWxkIGFsc28gZ2V0IHlvdXIgZW1wbG95ZXIgKGlmIHlvdSB3b3JrIGFzIGEgcHJvZ3JhbW1lcikgb3IgeW91cgpzY2hvb2wsIGlmIGFueSwgdG8gc2lnbiBhICJjb3B5cmlnaHQgZGlzY2xhaW1lciIgZm9yIHRoZSBsaWJyYXJ5LCBpZgpuZWNlc3NhcnkuICBIZXJlIGlzIGEgc2FtcGxlOyBhbHRlciB0aGUgbmFtZXM6CgogIFlveW9keW5lLCBJbmMuLCBoZXJlYnkgZGlzY2xhaW1zIGFsbCBjb3B5cmlnaHQgaW50ZXJlc3QgaW4gdGhlCiAgbGlicmFyeSBgRnJvYicgKGEgbGlicmFyeSBmb3IgdHdlYWtpbmcga25vYnMpIHdyaXR0ZW4gYnkgSmFtZXMgUmFuZG9tIEhhY2tlci4KCiAgPHNpZ25hdHVyZSBvZiBUeSBDb29uPiwgMSBBcHJpbCAxOTkwCiAgVHkgQ29vbiwgUHJlc2lkZW50IG9mIFZpY2UKClRoYXQncyBhbGwgdGhlcmUgaXMgdG8gaXQhCg==", + "contentType": "text/plain", + "encoding": "base64" } } }, @@ -180,36 +174,6 @@ "acknowledgement": "declared", "name": "License :: OSI Approved :: BSD License" } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: LICENSE", - "text": { - "content": "This software is made available under the terms of *either* of the licenses\nfound in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made\nunder the terms of *both* these licenses.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: LICENSE.APACHE", - "text": { - "content": "\n Apache License\n Version 2.0, January 2004\n https://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: LICENSE.BSD", - "text": { - "content": "Copyright (c) Individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of PyCA Cryptography nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" - } - } } ] }, @@ -273,8 +237,9 @@ "acknowledgement": "declared", "name": "declared license file: AUTHORS", "text": { - "content": "Stefan K\u00f6gl \nAlexander Shorin \nChristopher J. White \n", - "contentType": "text/plain" + "content": "U3RlZmFuIEvDtmdsIDxzdGVmYW5Ac2tvZWdsLm5ldD4KQWxleGFuZGVyIFNob3JpbiA8a3hlcGFsQGdtYWlsLmNvbT4KQ2hyaXN0b3BoZXIgSi4gV2hpdGUgPGNocmlzQGdyaWVyd2hpdGUuY29tPgo=", + "contentType": "text/plain", + "encoding": "base64" } } }, @@ -283,8 +248,9 @@ "acknowledgement": "declared", "name": "declared license file: LICENSE.txt", "text": { - "content": "Copyright (c) 2011 Stefan K\u00f6gl \nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions\nare met:\n\n1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n3. The name of the author may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR\nIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\nOF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\nIN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\nNOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\nTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n", - "contentType": "text/plain" + "content": "Q29weXJpZ2h0IChjKSAyMDExIFN0ZWZhbiBLw7ZnbCA8c3RlZmFuQHNrb2VnbC5uZXQ+CkFsbCByaWdodHMgcmVzZXJ2ZWQuCgpSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCmFyZSBtZXQ6CgoxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCjIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KMy4gVGhlIG5hbWUgb2YgdGhlIGF1dGhvciBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzCiAgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgoKVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IKSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUwpPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELgpJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsCklOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVApOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCkRBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQpUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCihJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgpUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgoK", + "contentType": "text/plain", + "encoding": "base64" } } }, @@ -326,8 +292,9 @@ "acknowledgement": "declared", "name": "declared license file: AUTHORS.rst", "text": { - "content": "The following organizations or individuals have contributed to this code:\n\n- Ayan Sinha Mahapatra @AyanSinhaMahapatra\n- Carmen Bianca Bakker @carmenbianca\n- Chin-Yeung Li @chinyeungli\n- Dennis Clark @DennisClark\n- John Horan @johnmhoran\n- Jono Yang @JonoYang\n- Max Mehl @mxmehl\n- nexB Inc. @nexB\n- Peter Kolbus @pkolbus\n- Philippe Ombredanne @pombredanne\n- Sebastian Schuberth @sschuberth\n- Steven Esser @majurg\n- Thomas Druez @tdruez\n", - "contentType": "text/prs.fallenstein.rst" + "content": "VGhlIGZvbGxvd2luZyBvcmdhbml6YXRpb25zIG9yIGluZGl2aWR1YWxzIGhhdmUgY29udHJpYnV0ZWQgdG8gdGhpcyBjb2RlOgoKLSBBeWFuIFNpbmhhIE1haGFwYXRyYSBAQXlhblNpbmhhTWFoYXBhdHJhCi0gQ2FybWVuIEJpYW5jYSBCYWtrZXIgQGNhcm1lbmJpYW5jYQotIENoaW4tWWV1bmcgTGkgQGNoaW55ZXVuZ2xpCi0gRGVubmlzIENsYXJrIEBEZW5uaXNDbGFyawotIEpvaG4gSG9yYW4gQGpvaG5taG9yYW4KLSBKb25vIFlhbmcgQEpvbm9ZYW5nCi0gTWF4IE1laGwgQG14bWVobAotIG5leEIgSW5jLiBAbmV4QgotIFBldGVyIEtvbGJ1cyBAcGtvbGJ1cwotIFBoaWxpcHBlIE9tYnJlZGFubmUgQHBvbWJyZWRhbm5lCi0gU2ViYXN0aWFuIFNjaHViZXJ0aCBAc3NjaHViZXJ0aAotIFN0ZXZlbiBFc3NlciBAbWFqdXJnCi0gVGhvbWFzIERydWV6IEB0ZHJ1ZXoK", + "contentType": "text/prs.fallenstein.rst", + "encoding": "base64" } } }, @@ -336,8 +303,9 @@ "acknowledgement": "declared", "name": "declared license file: CHANGELOG.rst", "text": { - "content": "Changelog\n=========\n\nv30.3.0 - 2024-03-18\n--------------------\n\nThis is a minor release without API changes:\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.23\n- Drop support for Python 3.7\n\nv30.2.0 - 2023-11-29\n--------------------\n\nThis is a minor release without API changes:\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.22\n- Add Python 3.12 support in CI\n\n\nv30.1.1 - 2023-01-16\n----------------------\n\nThis is a minor dot release without API changes\n\n- Use latest skeleton\n- Update license list to latest ScanCode and SPDX 3.20\n\n\nv30.1.0 - 2023-01-16\n----------------------\n\nThis is a minor release without API changes\n\n- Use latest skeleton (and updated configure script)\n- Update license list to latest ScanCode and SPDX 3.19\n- Use correct syntax for python_require\n- Drop using Travis and Appveyor\n- Drop support for Python 3.7 and add Python 3.11 in CI\n\n\nv30.0.0 - 2022-05-10\n----------------------\n\nThis is a minor release with API changes\n\n- Use latest skeleton (and updated configure script)\n- Drop using calver\n- Improve error checking when combining licenses\n\n\n\nv21.6.14 - 2021-06-14\n----------------------\n\nAdded\n~~~~~\n\n- Switch to calver for package versioning to better convey the currency of the\n bundled data.\n\n- Include https://scancode-licensedb.aboutcode.org/ licenses list with\n ScanCode (v21.6.7) and SPDX licenses (v3.13) keys. Add new functions to\n create Licensing using these licenses as LicenseSymbol.\n\n- Add new License.dedup() method to deduplicate and simplify license expressions\n without over simplifying.\n\n- Add new License.validate() method to return a new ExpressionInfo object with\n details on a license expression validation.\n\n\nChanged\n~~~~~~~\n- Drop support for Python 2.\n- Adopt the project skeleton from https://github.com/nexB/skeleton\n and its new configure script\n\n\nv1.2 - 2019-11-14\n------------------\nAdded\n~~~~~\n- Add ability to render WITH expression wrapped in parenthesis\n\nFixes\n~~~~~\n- Fix anomalous backslashes in strings\n\nChanged\n~~~~~~~\n- Update the thirdparty directory structure.\n\n\nv1.0 - 2019-10-16\n------------------\nAdded\n~~~~~\n- New version of boolean.py library\n- Add ability to leave license expressions unsorted when simplifying\n\nChanged\n~~~~~~~\n- updated travis CI settings\n\n\nv0.999 - 2019-04-29\n--------------------\n- Initial release\n- license-expression is small utility library to parse, compare and\n simplify and normalize license expressions.\n\n", - "contentType": "text/prs.fallenstein.rst" + "content": "Q2hhbmdlbG9nCj09PT09PT09PQoKdjMwLjMuMCAtIDIwMjQtMDMtMTgKLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRoaXMgaXMgYSBtaW5vciByZWxlYXNlIHdpdGhvdXQgQVBJIGNoYW5nZXM6CgotIFVzZSBsYXRlc3Qgc2tlbGV0b24KLSBVcGRhdGUgbGljZW5zZSBsaXN0IHRvIGxhdGVzdCBTY2FuQ29kZSBhbmQgU1BEWCAzLjIzCi0gRHJvcCBzdXBwb3J0IGZvciBQeXRob24gMy43Cgp2MzAuMi4wIC0gMjAyMy0xMS0yOQotLS0tLS0tLS0tLS0tLS0tLS0tLQoKVGhpcyBpcyBhIG1pbm9yIHJlbGVhc2Ugd2l0aG91dCBBUEkgY2hhbmdlczoKCi0gVXNlIGxhdGVzdCBza2VsZXRvbgotIFVwZGF0ZSBsaWNlbnNlIGxpc3QgdG8gbGF0ZXN0IFNjYW5Db2RlIGFuZCBTUERYIDMuMjIKLSBBZGQgUHl0aG9uIDMuMTIgc3VwcG9ydCBpbiBDSQoKCnYzMC4xLjEgLSAyMDIzLTAxLTE2Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRoaXMgaXMgYSBtaW5vciBkb3QgcmVsZWFzZSB3aXRob3V0IEFQSSBjaGFuZ2VzCgotIFVzZSBsYXRlc3Qgc2tlbGV0b24KLSBVcGRhdGUgbGljZW5zZSBsaXN0IHRvIGxhdGVzdCBTY2FuQ29kZSBhbmQgU1BEWCAzLjIwCgoKdjMwLjEuMCAtIDIwMjMtMDEtMTYKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKVGhpcyBpcyBhIG1pbm9yIHJlbGVhc2Ugd2l0aG91dCBBUEkgY2hhbmdlcwoKLSBVc2UgbGF0ZXN0IHNrZWxldG9uIChhbmQgdXBkYXRlZCBjb25maWd1cmUgc2NyaXB0KQotIFVwZGF0ZSBsaWNlbnNlIGxpc3QgdG8gbGF0ZXN0IFNjYW5Db2RlIGFuZCBTUERYIDMuMTkKLSBVc2UgY29ycmVjdCBzeW50YXggZm9yIHB5dGhvbl9yZXF1aXJlCi0gRHJvcCB1c2luZyBUcmF2aXMgYW5kIEFwcHZleW9yCi0gRHJvcCBzdXBwb3J0IGZvciBQeXRob24gMy43IGFuZCBhZGQgUHl0aG9uIDMuMTEgaW4gQ0kKCgp2MzAuMC4wIC0gMjAyMi0wNS0xMAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpUaGlzIGlzIGEgbWlub3IgcmVsZWFzZSB3aXRoIEFQSSBjaGFuZ2VzCgotIFVzZSBsYXRlc3Qgc2tlbGV0b24gKGFuZCB1cGRhdGVkIGNvbmZpZ3VyZSBzY3JpcHQpCi0gRHJvcCB1c2luZyBjYWx2ZXIKLSBJbXByb3ZlIGVycm9yIGNoZWNraW5nIHdoZW4gY29tYmluaW5nIGxpY2Vuc2VzCgoKCnYyMS42LjE0IC0gMjAyMS0wNi0xNAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpBZGRlZAp+fn5+fgoKLSBTd2l0Y2ggdG8gY2FsdmVyIGZvciBwYWNrYWdlIHZlcnNpb25pbmcgdG8gYmV0dGVyIGNvbnZleSB0aGUgY3VycmVuY3kgb2YgdGhlCiAgYnVuZGxlZCBkYXRhLgoKLSBJbmNsdWRlIGh0dHBzOi8vc2NhbmNvZGUtbGljZW5zZWRiLmFib3V0Y29kZS5vcmcvIGxpY2Vuc2VzIGxpc3Qgd2l0aAogIFNjYW5Db2RlICh2MjEuNi43KSBhbmQgU1BEWCBsaWNlbnNlcyAodjMuMTMpIGtleXMuIEFkZCBuZXcgZnVuY3Rpb25zIHRvCiAgY3JlYXRlIExpY2Vuc2luZyB1c2luZyB0aGVzZSBsaWNlbnNlcyBhcyBMaWNlbnNlU3ltYm9sLgoKLSBBZGQgbmV3IExpY2Vuc2UuZGVkdXAoKSBtZXRob2QgdG8gZGVkdXBsaWNhdGUgYW5kIHNpbXBsaWZ5IGxpY2Vuc2UgZXhwcmVzc2lvbnMKICB3aXRob3V0IG92ZXIgc2ltcGxpZnlpbmcuCgotIEFkZCBuZXcgTGljZW5zZS52YWxpZGF0ZSgpIG1ldGhvZCB0byByZXR1cm4gYSBuZXcgRXhwcmVzc2lvbkluZm8gb2JqZWN0IHdpdGgKICBkZXRhaWxzIG9uIGEgbGljZW5zZSBleHByZXNzaW9uIHZhbGlkYXRpb24uCgoKQ2hhbmdlZAp+fn5+fn5+Ci0gRHJvcCBzdXBwb3J0IGZvciBQeXRob24gMi4KLSBBZG9wdCB0aGUgcHJvamVjdCBza2VsZXRvbiBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9uZXhCL3NrZWxldG9uCiAgYW5kIGl0cyBuZXcgY29uZmlndXJlIHNjcmlwdAoKCnYxLjIgLSAyMDE5LTExLTE0Ci0tLS0tLS0tLS0tLS0tLS0tLQpBZGRlZAp+fn5+fgotIEFkZCBhYmlsaXR5IHRvIHJlbmRlciBXSVRIIGV4cHJlc3Npb24gd3JhcHBlZCBpbiBwYXJlbnRoZXNpcwoKRml4ZXMKfn5+fn4KLSBGaXggYW5vbWFsb3VzIGJhY2tzbGFzaGVzIGluIHN0cmluZ3MKCkNoYW5nZWQKfn5+fn5+fgotIFVwZGF0ZSB0aGUgdGhpcmRwYXJ0eSBkaXJlY3Rvcnkgc3RydWN0dXJlLgoKCnYxLjAgLSAyMDE5LTEwLTE2Ci0tLS0tLS0tLS0tLS0tLS0tLQpBZGRlZAp+fn5+fgotIE5ldyB2ZXJzaW9uIG9mIGJvb2xlYW4ucHkgbGlicmFyeQotIEFkZCBhYmlsaXR5IHRvIGxlYXZlIGxpY2Vuc2UgZXhwcmVzc2lvbnMgdW5zb3J0ZWQgd2hlbiBzaW1wbGlmeWluZwoKQ2hhbmdlZAp+fn5+fn5+Ci0gdXBkYXRlZCB0cmF2aXMgQ0kgc2V0dGluZ3MKCgp2MC45OTkgLSAyMDE5LTA0LTI5Ci0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gSW5pdGlhbCByZWxlYXNlCi0gbGljZW5zZS1leHByZXNzaW9uIGlzIHNtYWxsIHV0aWxpdHkgbGlicmFyeSB0byBwYXJzZSwgY29tcGFyZSBhbmQKICBzaW1wbGlmeSBhbmQgbm9ybWFsaXplIGxpY2Vuc2UgZXhwcmVzc2lvbnMuCgo=", + "contentType": "text/prs.fallenstein.rst", + "encoding": "base64" } } }, @@ -346,8 +314,9 @@ "acknowledgement": "declared", "name": "declared license file: CODE_OF_CONDUCT.rst", "text": { - "content": "Contributor Covenant Code of Conduct\n====================================\n\nOur Pledge\n----------\n\nIn the interest of fostering an open and welcoming environment, we as\ncontributors and maintainers pledge to making participation in our\nproject and our community a harassment-free experience for everyone,\nregardless of age, body size, disability, ethnicity, gender identity and\nexpression, level of experience, education, socio-economic status,\nnationality, personal appearance, race, religion, or sexual identity and\norientation.\n\nOur Standards\n-------------\n\nExamples of behavior that contributes to creating a positive environment\ninclude:\n\n- Using welcoming and inclusive language\n- Being respectful of differing viewpoints and experiences\n- Gracefully accepting constructive criticism\n- Focusing on what is best for the community\n- Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n- The use of sexualized language or imagery and unwelcome sexual\n attention or advances\n- Trolling, insulting/derogatory comments, and personal or political\n attacks\n- Public or private harassment\n- Publishing others\u2019 private information, such as a physical or\n electronic address, without explicit permission\n- Other conduct which could reasonably be considered inappropriate in a\n professional setting\n\nOur Responsibilities\n--------------------\n\nProject maintainers are responsible for clarifying the standards of\nacceptable behavior and are expected to take appropriate and fair\ncorrective action in response to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit,\nor reject comments, commits, code, wiki edits, issues, and other\ncontributions that are not aligned to this Code of Conduct, or to ban\ntemporarily or permanently any contributor for other behaviors that they\ndeem inappropriate, threatening, offensive, or harmful.\n\nScope\n-----\n\nThis Code of Conduct applies both within project spaces and in public\nspaces when an individual is representing the project or its community.\nExamples of representing a project or community include using an\nofficial project e-mail address, posting via an official social media\naccount, or acting as an appointed representative at an online or\noffline event. Representation of a project may be further defined and\nclarified by project maintainers.\n\nEnforcement\n-----------\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may\nbe reported by contacting the project team at pombredanne@gmail.com\nor on the Gitter chat channel at https://gitter.im/aboutcode-org/discuss .\nAll complaints will be reviewed and investigated and will result in a\nresponse that is deemed necessary and appropriate to the circumstances.\nThe project team is obligated to maintain confidentiality with regard to\nthe reporter of an incident. Further details of specific enforcement\npolicies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in\ngood faith may face temporary or permanent repercussions as determined\nby other members of the project\u2019s leadership.\n\nAttribution\n-----------\n\nThis Code of Conduct is adapted from the `Contributor Covenant`_ ,\nversion 1.4, available at\nhttps://www.contributor-covenant.org/version/1/4/code-of-conduct.html\n\n.. _Contributor Covenant: https://www.contributor-covenant.org\n", - "contentType": "text/prs.fallenstein.rst" + "content": "Q29udHJpYnV0b3IgQ292ZW5hbnQgQ29kZSBvZiBDb25kdWN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKT3VyIFBsZWRnZQotLS0tLS0tLS0tCgpJbiB0aGUgaW50ZXJlc3Qgb2YgZm9zdGVyaW5nIGFuIG9wZW4gYW5kIHdlbGNvbWluZyBlbnZpcm9ubWVudCwgd2UgYXMKY29udHJpYnV0b3JzIGFuZCBtYWludGFpbmVycyBwbGVkZ2UgdG8gbWFraW5nIHBhcnRpY2lwYXRpb24gaW4gb3VyCnByb2plY3QgYW5kIG91ciBjb21tdW5pdHkgYSBoYXJhc3NtZW50LWZyZWUgZXhwZXJpZW5jZSBmb3IgZXZlcnlvbmUsCnJlZ2FyZGxlc3Mgb2YgYWdlLCBib2R5IHNpemUsIGRpc2FiaWxpdHksIGV0aG5pY2l0eSwgZ2VuZGVyIGlkZW50aXR5IGFuZApleHByZXNzaW9uLCBsZXZlbCBvZiBleHBlcmllbmNlLCBlZHVjYXRpb24sIHNvY2lvLWVjb25vbWljIHN0YXR1cywKbmF0aW9uYWxpdHksIHBlcnNvbmFsIGFwcGVhcmFuY2UsIHJhY2UsIHJlbGlnaW9uLCBvciBzZXh1YWwgaWRlbnRpdHkgYW5kCm9yaWVudGF0aW9uLgoKT3VyIFN0YW5kYXJkcwotLS0tLS0tLS0tLS0tCgpFeGFtcGxlcyBvZiBiZWhhdmlvciB0aGF0IGNvbnRyaWJ1dGVzIHRvIGNyZWF0aW5nIGEgcG9zaXRpdmUgZW52aXJvbm1lbnQKaW5jbHVkZToKCi0gIFVzaW5nIHdlbGNvbWluZyBhbmQgaW5jbHVzaXZlIGxhbmd1YWdlCi0gIEJlaW5nIHJlc3BlY3RmdWwgb2YgZGlmZmVyaW5nIHZpZXdwb2ludHMgYW5kIGV4cGVyaWVuY2VzCi0gIEdyYWNlZnVsbHkgYWNjZXB0aW5nIGNvbnN0cnVjdGl2ZSBjcml0aWNpc20KLSAgRm9jdXNpbmcgb24gd2hhdCBpcyBiZXN0IGZvciB0aGUgY29tbXVuaXR5Ci0gIFNob3dpbmcgZW1wYXRoeSB0b3dhcmRzIG90aGVyIGNvbW11bml0eSBtZW1iZXJzCgpFeGFtcGxlcyBvZiB1bmFjY2VwdGFibGUgYmVoYXZpb3IgYnkgcGFydGljaXBhbnRzIGluY2x1ZGU6CgotICBUaGUgdXNlIG9mIHNleHVhbGl6ZWQgbGFuZ3VhZ2Ugb3IgaW1hZ2VyeSBhbmQgdW53ZWxjb21lIHNleHVhbAogICBhdHRlbnRpb24gb3IgYWR2YW5jZXMKLSAgVHJvbGxpbmcsIGluc3VsdGluZy9kZXJvZ2F0b3J5IGNvbW1lbnRzLCBhbmQgcGVyc29uYWwgb3IgcG9saXRpY2FsCiAgIGF0dGFja3MKLSAgUHVibGljIG9yIHByaXZhdGUgaGFyYXNzbWVudAotICBQdWJsaXNoaW5nIG90aGVyc+KAmSBwcml2YXRlIGluZm9ybWF0aW9uLCBzdWNoIGFzIGEgcGh5c2ljYWwgb3IKICAgZWxlY3Ryb25pYyBhZGRyZXNzLCB3aXRob3V0IGV4cGxpY2l0IHBlcm1pc3Npb24KLSAgT3RoZXIgY29uZHVjdCB3aGljaCBjb3VsZCByZWFzb25hYmx5IGJlIGNvbnNpZGVyZWQgaW5hcHByb3ByaWF0ZSBpbiBhCiAgIHByb2Zlc3Npb25hbCBzZXR0aW5nCgpPdXIgUmVzcG9uc2liaWxpdGllcwotLS0tLS0tLS0tLS0tLS0tLS0tLQoKUHJvamVjdCBtYWludGFpbmVycyBhcmUgcmVzcG9uc2libGUgZm9yIGNsYXJpZnlpbmcgdGhlIHN0YW5kYXJkcyBvZgphY2NlcHRhYmxlIGJlaGF2aW9yIGFuZCBhcmUgZXhwZWN0ZWQgdG8gdGFrZSBhcHByb3ByaWF0ZSBhbmQgZmFpcgpjb3JyZWN0aXZlIGFjdGlvbiBpbiByZXNwb25zZSB0byBhbnkgaW5zdGFuY2VzIG9mIHVuYWNjZXB0YWJsZSBiZWhhdmlvci4KClByb2plY3QgbWFpbnRhaW5lcnMgaGF2ZSB0aGUgcmlnaHQgYW5kIHJlc3BvbnNpYmlsaXR5IHRvIHJlbW92ZSwgZWRpdCwKb3IgcmVqZWN0IGNvbW1lbnRzLCBjb21taXRzLCBjb2RlLCB3aWtpIGVkaXRzLCBpc3N1ZXMsIGFuZCBvdGhlcgpjb250cmlidXRpb25zIHRoYXQgYXJlIG5vdCBhbGlnbmVkIHRvIHRoaXMgQ29kZSBvZiBDb25kdWN0LCBvciB0byBiYW4KdGVtcG9yYXJpbHkgb3IgcGVybWFuZW50bHkgYW55IGNvbnRyaWJ1dG9yIGZvciBvdGhlciBiZWhhdmlvcnMgdGhhdCB0aGV5CmRlZW0gaW5hcHByb3ByaWF0ZSwgdGhyZWF0ZW5pbmcsIG9mZmVuc2l2ZSwgb3IgaGFybWZ1bC4KClNjb3BlCi0tLS0tCgpUaGlzIENvZGUgb2YgQ29uZHVjdCBhcHBsaWVzIGJvdGggd2l0aGluIHByb2plY3Qgc3BhY2VzIGFuZCBpbiBwdWJsaWMKc3BhY2VzIHdoZW4gYW4gaW5kaXZpZHVhbCBpcyByZXByZXNlbnRpbmcgdGhlIHByb2plY3Qgb3IgaXRzIGNvbW11bml0eS4KRXhhbXBsZXMgb2YgcmVwcmVzZW50aW5nIGEgcHJvamVjdCBvciBjb21tdW5pdHkgaW5jbHVkZSB1c2luZyBhbgpvZmZpY2lhbCBwcm9qZWN0IGUtbWFpbCBhZGRyZXNzLCBwb3N0aW5nIHZpYSBhbiBvZmZpY2lhbCBzb2NpYWwgbWVkaWEKYWNjb3VudCwgb3IgYWN0aW5nIGFzIGFuIGFwcG9pbnRlZCByZXByZXNlbnRhdGl2ZSBhdCBhbiBvbmxpbmUgb3IKb2ZmbGluZSBldmVudC4gUmVwcmVzZW50YXRpb24gb2YgYSBwcm9qZWN0IG1heSBiZSBmdXJ0aGVyIGRlZmluZWQgYW5kCmNsYXJpZmllZCBieSBwcm9qZWN0IG1haW50YWluZXJzLgoKRW5mb3JjZW1lbnQKLS0tLS0tLS0tLS0KCkluc3RhbmNlcyBvZiBhYnVzaXZlLCBoYXJhc3NpbmcsIG9yIG90aGVyd2lzZSB1bmFjY2VwdGFibGUgYmVoYXZpb3IgbWF5CmJlIHJlcG9ydGVkIGJ5IGNvbnRhY3RpbmcgdGhlIHByb2plY3QgdGVhbSBhdCBwb21icmVkYW5uZUBnbWFpbC5jb20Kb3Igb24gdGhlIEdpdHRlciBjaGF0IGNoYW5uZWwgYXQgaHR0cHM6Ly9naXR0ZXIuaW0vYWJvdXRjb2RlLW9yZy9kaXNjdXNzIC4KQWxsIGNvbXBsYWludHMgd2lsbCBiZSByZXZpZXdlZCBhbmQgaW52ZXN0aWdhdGVkIGFuZCB3aWxsIHJlc3VsdCBpbiBhCnJlc3BvbnNlIHRoYXQgaXMgZGVlbWVkIG5lY2Vzc2FyeSBhbmQgYXBwcm9wcmlhdGUgdG8gdGhlIGNpcmN1bXN0YW5jZXMuClRoZSBwcm9qZWN0IHRlYW0gaXMgb2JsaWdhdGVkIHRvIG1haW50YWluIGNvbmZpZGVudGlhbGl0eSB3aXRoIHJlZ2FyZCB0bwp0aGUgcmVwb3J0ZXIgb2YgYW4gaW5jaWRlbnQuIEZ1cnRoZXIgZGV0YWlscyBvZiBzcGVjaWZpYyBlbmZvcmNlbWVudApwb2xpY2llcyBtYXkgYmUgcG9zdGVkIHNlcGFyYXRlbHkuCgpQcm9qZWN0IG1haW50YWluZXJzIHdobyBkbyBub3QgZm9sbG93IG9yIGVuZm9yY2UgdGhlIENvZGUgb2YgQ29uZHVjdCBpbgpnb29kIGZhaXRoIG1heSBmYWNlIHRlbXBvcmFyeSBvciBwZXJtYW5lbnQgcmVwZXJjdXNzaW9ucyBhcyBkZXRlcm1pbmVkCmJ5IG90aGVyIG1lbWJlcnMgb2YgdGhlIHByb2plY3TigJlzIGxlYWRlcnNoaXAuCgpBdHRyaWJ1dGlvbgotLS0tLS0tLS0tLQoKVGhpcyBDb2RlIG9mIENvbmR1Y3QgaXMgYWRhcHRlZCBmcm9tIHRoZSBgQ29udHJpYnV0b3IgQ292ZW5hbnRgXyAsCnZlcnNpb24gMS40LCBhdmFpbGFibGUgYXQKaHR0cHM6Ly93d3cuY29udHJpYnV0b3ItY292ZW5hbnQub3JnL3ZlcnNpb24vMS80L2NvZGUtb2YtY29uZHVjdC5odG1sCgouLiBfQ29udHJpYnV0b3IgQ292ZW5hbnQ6IGh0dHBzOi8vd3d3LmNvbnRyaWJ1dG9yLWNvdmVuYW50Lm9yZwo=", + "contentType": "text/prs.fallenstein.rst", + "encoding": "base64" } } }, @@ -356,8 +325,9 @@ "acknowledgement": "declared", "name": "declared license file: NOTICE", "text": { - "content": "#\n# Copyright (c) nexB Inc. and others.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Visit https://aboutcode.org and https://github.com/nexB/license-expression\n# for support and download.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\n", - "contentType": "text/plain" + "content": "IwojIENvcHlyaWdodCAoYykgbmV4QiBJbmMuIGFuZCBvdGhlcnMuCiMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKIwojIFZpc2l0IGh0dHBzOi8vYWJvdXRjb2RlLm9yZyBhbmQgaHR0cHM6Ly9naXRodWIuY29tL25leEIvbGljZW5zZS1leHByZXNzaW9uCiMgZm9yIHN1cHBvcnQgYW5kIGRvd25sb2FkLgojCiMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgojIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAojCiMgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgojCg==", + "contentType": "text/plain", + "encoding": "base64" } } }, @@ -366,8 +336,9 @@ "acknowledgement": "declared", "name": "declared license file: apache-2.0.LICENSE", "text": { - "content": " Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", - "contentType": "text/plain" + "content": "ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBhY2hlIExpY2Vuc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAyLjAsIEphbnVhcnkgMjAwNAogICAgICAgICAgICAgICAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvCgogICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgVVNFLCBSRVBST0RVQ1RJT04sIEFORCBESVNUUklCVVRJT04KCiAgIDEuIERlZmluaXRpb25zLgoKICAgICAgIkxpY2Vuc2UiIHNoYWxsIG1lYW4gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciB1c2UsIHJlcHJvZHVjdGlvbiwKICAgICAgYW5kIGRpc3RyaWJ1dGlvbiBhcyBkZWZpbmVkIGJ5IFNlY3Rpb25zIDEgdGhyb3VnaCA5IG9mIHRoaXMgZG9jdW1lbnQuCgogICAgICAiTGljZW5zb3IiIHNoYWxsIG1lYW4gdGhlIGNvcHlyaWdodCBvd25lciBvciBlbnRpdHkgYXV0aG9yaXplZCBieQogICAgICB0aGUgY29weXJpZ2h0IG93bmVyIHRoYXQgaXMgZ3JhbnRpbmcgdGhlIExpY2Vuc2UuCgogICAgICAiTGVnYWwgRW50aXR5IiBzaGFsbCBtZWFuIHRoZSB1bmlvbiBvZiB0aGUgYWN0aW5nIGVudGl0eSBhbmQgYWxsCiAgICAgIG90aGVyIGVudGl0aWVzIHRoYXQgY29udHJvbCwgYXJlIGNvbnRyb2xsZWQgYnksIG9yIGFyZSB1bmRlciBjb21tb24KICAgICAgY29udHJvbCB3aXRoIHRoYXQgZW50aXR5LiBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwKICAgICAgImNvbnRyb2wiIG1lYW5zIChpKSB0aGUgcG93ZXIsIGRpcmVjdCBvciBpbmRpcmVjdCwgdG8gY2F1c2UgdGhlCiAgICAgIGRpcmVjdGlvbiBvciBtYW5hZ2VtZW50IG9mIHN1Y2ggZW50aXR5LCB3aGV0aGVyIGJ5IGNvbnRyYWN0IG9yCiAgICAgIG90aGVyd2lzZSwgb3IgKGlpKSBvd25lcnNoaXAgb2YgZmlmdHkgcGVyY2VudCAoNTAlKSBvciBtb3JlIG9mIHRoZQogICAgICBvdXRzdGFuZGluZyBzaGFyZXMsIG9yIChpaWkpIGJlbmVmaWNpYWwgb3duZXJzaGlwIG9mIHN1Y2ggZW50aXR5LgoKICAgICAgIllvdSIgKG9yICJZb3VyIikgc2hhbGwgbWVhbiBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eQogICAgICBleGVyY2lzaW5nIHBlcm1pc3Npb25zIGdyYW50ZWQgYnkgdGhpcyBMaWNlbnNlLgoKICAgICAgIlNvdXJjZSIgZm9ybSBzaGFsbCBtZWFuIHRoZSBwcmVmZXJyZWQgZm9ybSBmb3IgbWFraW5nIG1vZGlmaWNhdGlvbnMsCiAgICAgIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gc29mdHdhcmUgc291cmNlIGNvZGUsIGRvY3VtZW50YXRpb24KICAgICAgc291cmNlLCBhbmQgY29uZmlndXJhdGlvbiBmaWxlcy4KCiAgICAgICJPYmplY3QiIGZvcm0gc2hhbGwgbWVhbiBhbnkgZm9ybSByZXN1bHRpbmcgZnJvbSBtZWNoYW5pY2FsCiAgICAgIHRyYW5zZm9ybWF0aW9uIG9yIHRyYW5zbGF0aW9uIG9mIGEgU291cmNlIGZvcm0sIGluY2x1ZGluZyBidXQKICAgICAgbm90IGxpbWl0ZWQgdG8gY29tcGlsZWQgb2JqZWN0IGNvZGUsIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uLAogICAgICBhbmQgY29udmVyc2lvbnMgdG8gb3RoZXIgbWVkaWEgdHlwZXMuCgogICAgICAiV29yayIgc2hhbGwgbWVhbiB0aGUgd29yayBvZiBhdXRob3JzaGlwLCB3aGV0aGVyIGluIFNvdXJjZSBvcgogICAgICBPYmplY3QgZm9ybSwgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIExpY2Vuc2UsIGFzIGluZGljYXRlZCBieSBhCiAgICAgIGNvcHlyaWdodCBub3RpY2UgdGhhdCBpcyBpbmNsdWRlZCBpbiBvciBhdHRhY2hlZCB0byB0aGUgd29yawogICAgICAoYW4gZXhhbXBsZSBpcyBwcm92aWRlZCBpbiB0aGUgQXBwZW5kaXggYmVsb3cpLgoKICAgICAgIkRlcml2YXRpdmUgV29ya3MiIHNoYWxsIG1lYW4gYW55IHdvcmssIHdoZXRoZXIgaW4gU291cmNlIG9yIE9iamVjdAogICAgICBmb3JtLCB0aGF0IGlzIGJhc2VkIG9uIChvciBkZXJpdmVkIGZyb20pIHRoZSBXb3JrIGFuZCBmb3Igd2hpY2ggdGhlCiAgICAgIGVkaXRvcmlhbCByZXZpc2lvbnMsIGFubm90YXRpb25zLCBlbGFib3JhdGlvbnMsIG9yIG90aGVyIG1vZGlmaWNhdGlvbnMKICAgICAgcmVwcmVzZW50LCBhcyBhIHdob2xlLCBhbiBvcmlnaW5hbCB3b3JrIG9mIGF1dGhvcnNoaXAuIEZvciB0aGUgcHVycG9zZXMKICAgICAgb2YgdGhpcyBMaWNlbnNlLCBEZXJpdmF0aXZlIFdvcmtzIHNoYWxsIG5vdCBpbmNsdWRlIHdvcmtzIHRoYXQgcmVtYWluCiAgICAgIHNlcGFyYWJsZSBmcm9tLCBvciBtZXJlbHkgbGluayAob3IgYmluZCBieSBuYW1lKSB0byB0aGUgaW50ZXJmYWNlcyBvZiwKICAgICAgdGhlIFdvcmsgYW5kIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZi4KCiAgICAgICJDb250cmlidXRpb24iIHNoYWxsIG1lYW4gYW55IHdvcmsgb2YgYXV0aG9yc2hpcCwgaW5jbHVkaW5nCiAgICAgIHRoZSBvcmlnaW5hbCB2ZXJzaW9uIG9mIHRoZSBXb3JrIGFuZCBhbnkgbW9kaWZpY2F0aW9ucyBvciBhZGRpdGlvbnMKICAgICAgdG8gdGhhdCBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgdGhhdCBpcyBpbnRlbnRpb25hbGx5CiAgICAgIHN1Ym1pdHRlZCB0byBMaWNlbnNvciBmb3IgaW5jbHVzaW9uIGluIHRoZSBXb3JrIGJ5IHRoZSBjb3B5cmlnaHQgb3duZXIKICAgICAgb3IgYnkgYW4gaW5kaXZpZHVhbCBvciBMZWdhbCBFbnRpdHkgYXV0aG9yaXplZCB0byBzdWJtaXQgb24gYmVoYWxmIG9mCiAgICAgIHRoZSBjb3B5cmlnaHQgb3duZXIuIEZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAic3VibWl0dGVkIgogICAgICBtZWFucyBhbnkgZm9ybSBvZiBlbGVjdHJvbmljLCB2ZXJiYWwsIG9yIHdyaXR0ZW4gY29tbXVuaWNhdGlvbiBzZW50CiAgICAgIHRvIHRoZSBMaWNlbnNvciBvciBpdHMgcmVwcmVzZW50YXRpdmVzLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvCiAgICAgIGNvbW11bmljYXRpb24gb24gZWxlY3Ryb25pYyBtYWlsaW5nIGxpc3RzLCBzb3VyY2UgY29kZSBjb250cm9sIHN5c3RlbXMsCiAgICAgIGFuZCBpc3N1ZSB0cmFja2luZyBzeXN0ZW1zIHRoYXQgYXJlIG1hbmFnZWQgYnksIG9yIG9uIGJlaGFsZiBvZiwgdGhlCiAgICAgIExpY2Vuc29yIGZvciB0aGUgcHVycG9zZSBvZiBkaXNjdXNzaW5nIGFuZCBpbXByb3ZpbmcgdGhlIFdvcmssIGJ1dAogICAgICBleGNsdWRpbmcgY29tbXVuaWNhdGlvbiB0aGF0IGlzIGNvbnNwaWN1b3VzbHkgbWFya2VkIG9yIG90aGVyd2lzZQogICAgICBkZXNpZ25hdGVkIGluIHdyaXRpbmcgYnkgdGhlIGNvcHlyaWdodCBvd25lciBhcyAiTm90IGEgQ29udHJpYnV0aW9uLiIKCiAgICAgICJDb250cmlidXRvciIgc2hhbGwgbWVhbiBMaWNlbnNvciBhbmQgYW55IGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5CiAgICAgIG9uIGJlaGFsZiBvZiB3aG9tIGEgQ29udHJpYnV0aW9uIGhhcyBiZWVuIHJlY2VpdmVkIGJ5IExpY2Vuc29yIGFuZAogICAgICBzdWJzZXF1ZW50bHkgaW5jb3Jwb3JhdGVkIHdpdGhpbiB0aGUgV29yay4KCiAgIDIuIEdyYW50IG9mIENvcHlyaWdodCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCiAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCiAgICAgIGNvcHlyaWdodCBsaWNlbnNlIHRvIHJlcHJvZHVjZSwgcHJlcGFyZSBEZXJpdmF0aXZlIFdvcmtzIG9mLAogICAgICBwdWJsaWNseSBkaXNwbGF5LCBwdWJsaWNseSBwZXJmb3JtLCBzdWJsaWNlbnNlLCBhbmQgZGlzdHJpYnV0ZSB0aGUKICAgICAgV29yayBhbmQgc3VjaCBEZXJpdmF0aXZlIFdvcmtzIGluIFNvdXJjZSBvciBPYmplY3QgZm9ybS4KCiAgIDMuIEdyYW50IG9mIFBhdGVudCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCiAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCiAgICAgIChleGNlcHQgYXMgc3RhdGVkIGluIHRoaXMgc2VjdGlvbikgcGF0ZW50IGxpY2Vuc2UgdG8gbWFrZSwgaGF2ZSBtYWRlLAogICAgICB1c2UsIG9mZmVyIHRvIHNlbGwsIHNlbGwsIGltcG9ydCwgYW5kIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgV29yaywKICAgICAgd2hlcmUgc3VjaCBsaWNlbnNlIGFwcGxpZXMgb25seSB0byB0aG9zZSBwYXRlbnQgY2xhaW1zIGxpY2Vuc2FibGUKICAgICAgYnkgc3VjaCBDb250cmlidXRvciB0aGF0IGFyZSBuZWNlc3NhcmlseSBpbmZyaW5nZWQgYnkgdGhlaXIKICAgICAgQ29udHJpYnV0aW9uKHMpIGFsb25lIG9yIGJ5IGNvbWJpbmF0aW9uIG9mIHRoZWlyIENvbnRyaWJ1dGlvbihzKQogICAgICB3aXRoIHRoZSBXb3JrIHRvIHdoaWNoIHN1Y2ggQ29udHJpYnV0aW9uKHMpIHdhcyBzdWJtaXR0ZWQuIElmIFlvdQogICAgICBpbnN0aXR1dGUgcGF0ZW50IGxpdGlnYXRpb24gYWdhaW5zdCBhbnkgZW50aXR5IChpbmNsdWRpbmcgYQogICAgICBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0IHRoZSBXb3JrCiAgICAgIG9yIGEgQ29udHJpYnV0aW9uIGluY29ycG9yYXRlZCB3aXRoaW4gdGhlIFdvcmsgY29uc3RpdHV0ZXMgZGlyZWN0CiAgICAgIG9yIGNvbnRyaWJ1dG9yeSBwYXRlbnQgaW5mcmluZ2VtZW50LCB0aGVuIGFueSBwYXRlbnQgbGljZW5zZXMKICAgICAgZ3JhbnRlZCB0byBZb3UgdW5kZXIgdGhpcyBMaWNlbnNlIGZvciB0aGF0IFdvcmsgc2hhbGwgdGVybWluYXRlCiAgICAgIGFzIG9mIHRoZSBkYXRlIHN1Y2ggbGl0aWdhdGlvbiBpcyBmaWxlZC4KCiAgIDQuIFJlZGlzdHJpYnV0aW9uLiBZb3UgbWF5IHJlcHJvZHVjZSBhbmQgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlCiAgICAgIFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mIGluIGFueSBtZWRpdW0sIHdpdGggb3Igd2l0aG91dAogICAgICBtb2RpZmljYXRpb25zLCBhbmQgaW4gU291cmNlIG9yIE9iamVjdCBmb3JtLCBwcm92aWRlZCB0aGF0IFlvdQogICAgICBtZWV0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKCiAgICAgIChhKSBZb3UgbXVzdCBnaXZlIGFueSBvdGhlciByZWNpcGllbnRzIG9mIHRoZSBXb3JrIG9yCiAgICAgICAgICBEZXJpdmF0aXZlIFdvcmtzIGEgY29weSBvZiB0aGlzIExpY2Vuc2U7IGFuZAoKICAgICAgKGIpIFlvdSBtdXN0IGNhdXNlIGFueSBtb2RpZmllZCBmaWxlcyB0byBjYXJyeSBwcm9taW5lbnQgbm90aWNlcwogICAgICAgICAgc3RhdGluZyB0aGF0IFlvdSBjaGFuZ2VkIHRoZSBmaWxlczsgYW5kCgogICAgICAoYykgWW91IG11c3QgcmV0YWluLCBpbiB0aGUgU291cmNlIGZvcm0gb2YgYW55IERlcml2YXRpdmUgV29ya3MKICAgICAgICAgIHRoYXQgWW91IGRpc3RyaWJ1dGUsIGFsbCBjb3B5cmlnaHQsIHBhdGVudCwgdHJhZGVtYXJrLCBhbmQKICAgICAgICAgIGF0dHJpYnV0aW9uIG5vdGljZXMgZnJvbSB0aGUgU291cmNlIGZvcm0gb2YgdGhlIFdvcmssCiAgICAgICAgICBleGNsdWRpbmcgdGhvc2Ugbm90aWNlcyB0aGF0IGRvIG5vdCBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mCiAgICAgICAgICB0aGUgRGVyaXZhdGl2ZSBXb3JrczsgYW5kCgogICAgICAoZCkgSWYgdGhlIFdvcmsgaW5jbHVkZXMgYSAiTk9USUNFIiB0ZXh0IGZpbGUgYXMgcGFydCBvZiBpdHMKICAgICAgICAgIGRpc3RyaWJ1dGlvbiwgdGhlbiBhbnkgRGVyaXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlIG11c3QKICAgICAgICAgIGluY2x1ZGUgYSByZWFkYWJsZSBjb3B5IG9mIHRoZSBhdHRyaWJ1dGlvbiBub3RpY2VzIGNvbnRhaW5lZAogICAgICAgICAgd2l0aGluIHN1Y2ggTk9USUNFIGZpbGUsIGV4Y2x1ZGluZyB0aG9zZSBub3RpY2VzIHRoYXQgZG8gbm90CiAgICAgICAgICBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpbiBhdCBsZWFzdCBvbmUKICAgICAgICAgIG9mIHRoZSBmb2xsb3dpbmcgcGxhY2VzOiB3aXRoaW4gYSBOT1RJQ0UgdGV4dCBmaWxlIGRpc3RyaWJ1dGVkCiAgICAgICAgICBhcyBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyB3aXRoaW4gdGhlIFNvdXJjZSBmb3JtIG9yCiAgICAgICAgICBkb2N1bWVudGF0aW9uLCBpZiBwcm92aWRlZCBhbG9uZyB3aXRoIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyBvciwKICAgICAgICAgIHdpdGhpbiBhIGRpc3BsYXkgZ2VuZXJhdGVkIGJ5IHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpZiBhbmQKICAgICAgICAgIHdoZXJldmVyIHN1Y2ggdGhpcmQtcGFydHkgbm90aWNlcyBub3JtYWxseSBhcHBlYXIuIFRoZSBjb250ZW50cwogICAgICAgICAgb2YgdGhlIE5PVElDRSBmaWxlIGFyZSBmb3IgaW5mb3JtYXRpb25hbCBwdXJwb3NlcyBvbmx5IGFuZAogICAgICAgICAgZG8gbm90IG1vZGlmeSB0aGUgTGljZW5zZS4gWW91IG1heSBhZGQgWW91ciBvd24gYXR0cmlidXRpb24KICAgICAgICAgIG5vdGljZXMgd2l0aGluIERlcml2YXRpdmUgV29ya3MgdGhhdCBZb3UgZGlzdHJpYnV0ZSwgYWxvbmdzaWRlCiAgICAgICAgICBvciBhcyBhbiBhZGRlbmR1bSB0byB0aGUgTk9USUNFIHRleHQgZnJvbSB0aGUgV29yaywgcHJvdmlkZWQKICAgICAgICAgIHRoYXQgc3VjaCBhZGRpdGlvbmFsIGF0dHJpYnV0aW9uIG5vdGljZXMgY2Fubm90IGJlIGNvbnN0cnVlZAogICAgICAgICAgYXMgbW9kaWZ5aW5nIHRoZSBMaWNlbnNlLgoKICAgICAgWW91IG1heSBhZGQgWW91ciBvd24gY29weXJpZ2h0IHN0YXRlbWVudCB0byBZb3VyIG1vZGlmaWNhdGlvbnMgYW5kCiAgICAgIG1heSBwcm92aWRlIGFkZGl0aW9uYWwgb3IgZGlmZmVyZW50IGxpY2Vuc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMKICAgICAgZm9yIHVzZSwgcmVwcm9kdWN0aW9uLCBvciBkaXN0cmlidXRpb24gb2YgWW91ciBtb2RpZmljYXRpb25zLCBvcgogICAgICBmb3IgYW55IHN1Y2ggRGVyaXZhdGl2ZSBXb3JrcyBhcyBhIHdob2xlLCBwcm92aWRlZCBZb3VyIHVzZSwKICAgICAgcmVwcm9kdWN0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoZSBXb3JrIG90aGVyd2lzZSBjb21wbGllcyB3aXRoCiAgICAgIHRoZSBjb25kaXRpb25zIHN0YXRlZCBpbiB0aGlzIExpY2Vuc2UuCgogICA1LiBTdWJtaXNzaW9uIG9mIENvbnRyaWJ1dGlvbnMuIFVubGVzcyBZb3UgZXhwbGljaXRseSBzdGF0ZSBvdGhlcndpc2UsCiAgICAgIGFueSBDb250cmlidXRpb24gaW50ZW50aW9uYWxseSBzdWJtaXR0ZWQgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yawogICAgICBieSBZb3UgdG8gdGhlIExpY2Vuc29yIHNoYWxsIGJlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICB0aGlzIExpY2Vuc2UsIHdpdGhvdXQgYW55IGFkZGl0aW9uYWwgdGVybXMgb3IgY29uZGl0aW9ucy4KICAgICAgTm90d2l0aHN0YW5kaW5nIHRoZSBhYm92ZSwgbm90aGluZyBoZXJlaW4gc2hhbGwgc3VwZXJzZWRlIG9yIG1vZGlmeQogICAgICB0aGUgdGVybXMgb2YgYW55IHNlcGFyYXRlIGxpY2Vuc2UgYWdyZWVtZW50IHlvdSBtYXkgaGF2ZSBleGVjdXRlZAogICAgICB3aXRoIExpY2Vuc29yIHJlZ2FyZGluZyBzdWNoIENvbnRyaWJ1dGlvbnMuCgogICA2LiBUcmFkZW1hcmtzLiBUaGlzIExpY2Vuc2UgZG9lcyBub3QgZ3JhbnQgcGVybWlzc2lvbiB0byB1c2UgdGhlIHRyYWRlCiAgICAgIG5hbWVzLCB0cmFkZW1hcmtzLCBzZXJ2aWNlIG1hcmtzLCBvciBwcm9kdWN0IG5hbWVzIG9mIHRoZSBMaWNlbnNvciwKICAgICAgZXhjZXB0IGFzIHJlcXVpcmVkIGZvciByZWFzb25hYmxlIGFuZCBjdXN0b21hcnkgdXNlIGluIGRlc2NyaWJpbmcgdGhlCiAgICAgIG9yaWdpbiBvZiB0aGUgV29yayBhbmQgcmVwcm9kdWNpbmcgdGhlIGNvbnRlbnQgb2YgdGhlIE5PVElDRSBmaWxlLgoKICAgNy4gRGlzY2xhaW1lciBvZiBXYXJyYW50eS4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yCiAgICAgIGFncmVlZCB0byBpbiB3cml0aW5nLCBMaWNlbnNvciBwcm92aWRlcyB0aGUgV29yayAoYW5kIGVhY2gKICAgICAgQ29udHJpYnV0b3IgcHJvdmlkZXMgaXRzIENvbnRyaWJ1dGlvbnMpIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgogICAgICBpbXBsaWVkLCBpbmNsdWRpbmcsIHdpdGhvdXQgbGltaXRhdGlvbiwgYW55IHdhcnJhbnRpZXMgb3IgY29uZGl0aW9ucwogICAgICBvZiBUSVRMRSwgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZLCBvciBGSVRORVNTIEZPUiBBCiAgICAgIFBBUlRJQ1VMQVIgUFVSUE9TRS4gWW91IGFyZSBzb2xlbHkgcmVzcG9uc2libGUgZm9yIGRldGVybWluaW5nIHRoZQogICAgICBhcHByb3ByaWF0ZW5lc3Mgb2YgdXNpbmcgb3IgcmVkaXN0cmlidXRpbmcgdGhlIFdvcmsgYW5kIGFzc3VtZSBhbnkKICAgICAgcmlza3MgYXNzb2NpYXRlZCB3aXRoIFlvdXIgZXhlcmNpc2Ugb2YgcGVybWlzc2lvbnMgdW5kZXIgdGhpcyBMaWNlbnNlLgoKICAgOC4gTGltaXRhdGlvbiBvZiBMaWFiaWxpdHkuIEluIG5vIGV2ZW50IGFuZCB1bmRlciBubyBsZWdhbCB0aGVvcnksCiAgICAgIHdoZXRoZXIgaW4gdG9ydCAoaW5jbHVkaW5nIG5lZ2xpZ2VuY2UpLCBjb250cmFjdCwgb3Igb3RoZXJ3aXNlLAogICAgICB1bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgKHN1Y2ggYXMgZGVsaWJlcmF0ZSBhbmQgZ3Jvc3NseQogICAgICBuZWdsaWdlbnQgYWN0cykgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNoYWxsIGFueSBDb250cmlidXRvciBiZQogICAgICBsaWFibGUgdG8gWW91IGZvciBkYW1hZ2VzLCBpbmNsdWRpbmcgYW55IGRpcmVjdCwgaW5kaXJlY3QsIHNwZWNpYWwsCiAgICAgIGluY2lkZW50YWwsIG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvZiBhbnkgY2hhcmFjdGVyIGFyaXNpbmcgYXMgYQogICAgICByZXN1bHQgb2YgdGhpcyBMaWNlbnNlIG9yIG91dCBvZiB0aGUgdXNlIG9yIGluYWJpbGl0eSB0byB1c2UgdGhlCiAgICAgIFdvcmsgKGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gZGFtYWdlcyBmb3IgbG9zcyBvZiBnb29kd2lsbCwKICAgICAgd29yayBzdG9wcGFnZSwgY29tcHV0ZXIgZmFpbHVyZSBvciBtYWxmdW5jdGlvbiwgb3IgYW55IGFuZCBhbGwKICAgICAgb3RoZXIgY29tbWVyY2lhbCBkYW1hZ2VzIG9yIGxvc3NlcyksIGV2ZW4gaWYgc3VjaCBDb250cmlidXRvcgogICAgICBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiBzdWNoIGRhbWFnZXMuCgogICA5LiBBY2NlcHRpbmcgV2FycmFudHkgb3IgQWRkaXRpb25hbCBMaWFiaWxpdHkuIFdoaWxlIHJlZGlzdHJpYnV0aW5nCiAgICAgIHRoZSBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgWW91IG1heSBjaG9vc2UgdG8gb2ZmZXIsCiAgICAgIGFuZCBjaGFyZ2UgYSBmZWUgZm9yLCBhY2NlcHRhbmNlIG9mIHN1cHBvcnQsIHdhcnJhbnR5LCBpbmRlbW5pdHksCiAgICAgIG9yIG90aGVyIGxpYWJpbGl0eSBvYmxpZ2F0aW9ucyBhbmQvb3IgcmlnaHRzIGNvbnNpc3RlbnQgd2l0aCB0aGlzCiAgICAgIExpY2Vuc2UuIEhvd2V2ZXIsIGluIGFjY2VwdGluZyBzdWNoIG9ibGlnYXRpb25zLCBZb3UgbWF5IGFjdCBvbmx5CiAgICAgIG9uIFlvdXIgb3duIGJlaGFsZiBhbmQgb24gWW91ciBzb2xlIHJlc3BvbnNpYmlsaXR5LCBub3Qgb24gYmVoYWxmCiAgICAgIG9mIGFueSBvdGhlciBDb250cmlidXRvciwgYW5kIG9ubHkgaWYgWW91IGFncmVlIHRvIGluZGVtbmlmeSwKICAgICAgZGVmZW5kLCBhbmQgaG9sZCBlYWNoIENvbnRyaWJ1dG9yIGhhcm1sZXNzIGZvciBhbnkgbGlhYmlsaXR5CiAgICAgIGluY3VycmVkIGJ5LCBvciBjbGFpbXMgYXNzZXJ0ZWQgYWdhaW5zdCwgc3VjaCBDb250cmlidXRvciBieSByZWFzb24KICAgICAgb2YgeW91ciBhY2NlcHRpbmcgYW55IHN1Y2ggd2FycmFudHkgb3IgYWRkaXRpb25hbCBsaWFiaWxpdHkuCgogICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKCiAgIEFQUEVORElYOiBIb3cgdG8gYXBwbHkgdGhlIEFwYWNoZSBMaWNlbnNlIHRvIHlvdXIgd29yay4KCiAgICAgIFRvIGFwcGx5IHRoZSBBcGFjaGUgTGljZW5zZSB0byB5b3VyIHdvcmssIGF0dGFjaCB0aGUgZm9sbG93aW5nCiAgICAgIGJvaWxlcnBsYXRlIG5vdGljZSwgd2l0aCB0aGUgZmllbGRzIGVuY2xvc2VkIGJ5IGJyYWNrZXRzICJbXSIKICAgICAgcmVwbGFjZWQgd2l0aCB5b3VyIG93biBpZGVudGlmeWluZyBpbmZvcm1hdGlvbi4gKERvbid0IGluY2x1ZGUKICAgICAgdGhlIGJyYWNrZXRzISkgIFRoZSB0ZXh0IHNob3VsZCBiZSBlbmNsb3NlZCBpbiB0aGUgYXBwcm9wcmlhdGUKICAgICAgY29tbWVudCBzeW50YXggZm9yIHRoZSBmaWxlIGZvcm1hdC4gV2UgYWxzbyByZWNvbW1lbmQgdGhhdCBhCiAgICAgIGZpbGUgb3IgY2xhc3MgbmFtZSBhbmQgZGVzY3JpcHRpb24gb2YgcHVycG9zZSBiZSBpbmNsdWRlZCBvbiB0aGUKICAgICAgc2FtZSAicHJpbnRlZCBwYWdlIiBhcyB0aGUgY29weXJpZ2h0IG5vdGljZSBmb3IgZWFzaWVyCiAgICAgIGlkZW50aWZpY2F0aW9uIHdpdGhpbiB0aGlyZC1wYXJ0eSBhcmNoaXZlcy4KCiAgIENvcHlyaWdodCBbeXl5eV0gW25hbWUgb2YgY29weXJpZ2h0IG93bmVyXQoKICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgo=", + "contentType": "text/plain", + "encoding": "base64" } } } @@ -410,8 +381,9 @@ "acknowledgement": "declared", "name": "declared license file: LICENSE.txt", "text": { - "content": "Copyright (c) 2004 Infrae. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n 1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n \n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in\n the documentation and/or other materials provided with the\n distribution.\n\n 3. Neither the name of Infrae nor the names of its contributors may\n be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INFRAE OR\nCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\nEXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\nPROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "contentType": "text/plain" + "content": "Q29weXJpZ2h0IChjKSAyMDA0IEluZnJhZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAgIAogIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCiAgICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQogICAgIGRpc3RyaWJ1dGlvbi4KCiAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBJbmZyYWUgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heQogICAgIGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCiAgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCgpUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCiJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgpBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgSU5GUkFFIE9SCkNPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLApFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sClBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgpQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GCkxJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCk5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwpTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K", + "contentType": "text/plain", + "encoding": "base64" } } }, @@ -420,8 +392,9 @@ "acknowledgement": "declared", "name": "declared license file: LICENSES.txt", "text": { - "content": "lxml is copyright Infrae and distributed under the BSD license (see\ndoc/licenses/BSD.txt), with the following exceptions:\n\nSome code, such a selftest.py, selftest2.py and\nsrc/lxml/_elementpath.py are derived from ElementTree and\ncElementTree. See doc/licenses/elementtree.txt for the license text.\n\nlxml.cssselect and lxml.html are copyright Ian Bicking and distributed\nunder the BSD license (see doc/licenses/BSD.txt).\n\ntest.py, the test-runner script, is GPL and copyright Shuttleworth\nFoundation. See doc/licenses/GPL.txt. It is believed the unchanged\ninclusion of test.py to run the unit test suite falls under the\n\"aggregation\" clause of the GPL and thus does not affect the license\nof the rest of the package.\n\nThe isoschematron implementation uses several XSL and RelaxNG resources:\n * The (XML syntax) RelaxNG schema for schematron, copyright International\n Organization for Standardization (see \n src/lxml/isoschematron/resources/rng/iso-schematron.rng for the license\n text)\n * The skeleton iso-schematron-xlt1 pure-xslt schematron implementation\n xsl stylesheets, copyright Rick Jelliffe and Academia Sinica Computing\n Center, Taiwan (see the xsl files here for the license text: \n src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/)\n * The xsd/rng schema schematron extraction xsl transformations are unlicensed\n and copyright the respective authors as noted (see \n src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl and\n src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl)\n", - "contentType": "text/plain" + "content": "bHhtbCBpcyBjb3B5cmlnaHQgSW5mcmFlIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgQlNEIGxpY2Vuc2UgKHNlZQpkb2MvbGljZW5zZXMvQlNELnR4dCksIHdpdGggdGhlIGZvbGxvd2luZyBleGNlcHRpb25zOgoKU29tZSBjb2RlLCBzdWNoIGEgc2VsZnRlc3QucHksIHNlbGZ0ZXN0Mi5weSBhbmQKc3JjL2x4bWwvX2VsZW1lbnRwYXRoLnB5IGFyZSBkZXJpdmVkIGZyb20gRWxlbWVudFRyZWUgYW5kCmNFbGVtZW50VHJlZS4gU2VlIGRvYy9saWNlbnNlcy9lbGVtZW50dHJlZS50eHQgZm9yIHRoZSBsaWNlbnNlIHRleHQuCgpseG1sLmNzc3NlbGVjdCBhbmQgbHhtbC5odG1sIGFyZSBjb3B5cmlnaHQgSWFuIEJpY2tpbmcgYW5kIGRpc3RyaWJ1dGVkCnVuZGVyIHRoZSBCU0QgbGljZW5zZSAoc2VlIGRvYy9saWNlbnNlcy9CU0QudHh0KS4KCnRlc3QucHksIHRoZSB0ZXN0LXJ1bm5lciBzY3JpcHQsIGlzIEdQTCBhbmQgY29weXJpZ2h0IFNodXR0bGV3b3J0aApGb3VuZGF0aW9uLiBTZWUgZG9jL2xpY2Vuc2VzL0dQTC50eHQuIEl0IGlzIGJlbGlldmVkIHRoZSB1bmNoYW5nZWQKaW5jbHVzaW9uIG9mIHRlc3QucHkgdG8gcnVuIHRoZSB1bml0IHRlc3Qgc3VpdGUgZmFsbHMgdW5kZXIgdGhlCiJhZ2dyZWdhdGlvbiIgY2xhdXNlIG9mIHRoZSBHUEwgYW5kIHRodXMgZG9lcyBub3QgYWZmZWN0IHRoZSBsaWNlbnNlCm9mIHRoZSByZXN0IG9mIHRoZSBwYWNrYWdlLgoKVGhlIGlzb3NjaGVtYXRyb24gaW1wbGVtZW50YXRpb24gdXNlcyBzZXZlcmFsIFhTTCBhbmQgUmVsYXhORyByZXNvdXJjZXM6CiAqIFRoZSAoWE1MIHN5bnRheCkgUmVsYXhORyBzY2hlbWEgZm9yIHNjaGVtYXRyb24sIGNvcHlyaWdodCBJbnRlcm5hdGlvbmFsCiAgIE9yZ2FuaXphdGlvbiBmb3IgU3RhbmRhcmRpemF0aW9uIChzZWUgCiAgIHNyYy9seG1sL2lzb3NjaGVtYXRyb24vcmVzb3VyY2VzL3JuZy9pc28tc2NoZW1hdHJvbi5ybmcgZm9yIHRoZSBsaWNlbnNlCiAgIHRleHQpCiAqIFRoZSBza2VsZXRvbiBpc28tc2NoZW1hdHJvbi14bHQxIHB1cmUteHNsdCBzY2hlbWF0cm9uIGltcGxlbWVudGF0aW9uCiAgIHhzbCBzdHlsZXNoZWV0cywgY29weXJpZ2h0IFJpY2sgSmVsbGlmZmUgYW5kIEFjYWRlbWlhIFNpbmljYSBDb21wdXRpbmcKICAgQ2VudGVyLCBUYWl3YW4gKHNlZSB0aGUgeHNsIGZpbGVzIGhlcmUgZm9yIHRoZSBsaWNlbnNlIHRleHQ6IAogICBzcmMvbHhtbC9pc29zY2hlbWF0cm9uL3Jlc291cmNlcy94c2wvaXNvLXNjaGVtYXRyb24teHNsdDEvKQogKiBUaGUgeHNkL3JuZyBzY2hlbWEgc2NoZW1hdHJvbiBleHRyYWN0aW9uIHhzbCB0cmFuc2Zvcm1hdGlvbnMgYXJlIHVubGljZW5zZWQKICAgYW5kIGNvcHlyaWdodCB0aGUgcmVzcGVjdGl2ZSBhdXRob3JzIGFzIG5vdGVkIChzZWUgCiAgIHNyYy9seG1sL2lzb3NjaGVtYXRyb24vcmVzb3VyY2VzL3hzbC9STkcyU2NodHJuLnhzbCBhbmQKICAgc3JjL2x4bWwvaXNvc2NoZW1hdHJvbi9yZXNvdXJjZXMveHNsL1hTRDJTY2h0cm4ueHNsKQo=", + "contentType": "text/plain", + "encoding": "base64" } } } @@ -440,59 +413,6 @@ "url": "file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868" } ], - "licenses": [ - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: my_licenses/richtext.rtf", - "text": { - "content": "e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA=", - "contentType": "application/rtf", - "encoding": "base64" - } - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: my_licenses/utf-16be_withBOM.txt", - "text": { - "content": "this file is\r\nutf-16be encoded\r\nwith BOM\r\n\ud83d\ude03\r\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: my_licenses/utf-16le_withBOM.txt", - "text": { - "content": "this file is\nutf-16le encoded\nwith BOM\n\ud83d\ude03\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: my_licenses/utf-8_noBOM.txt", - "text": { - "content": "this file is\nutf-8 encoded\nwithout BOM\n\ud83d\ude03\n", - "contentType": "text/plain" - } - } - }, - { - "license": { - "acknowledgement": "declared", - "name": "declared license file: my_licenses/utf-8_withBOM.txt", - "text": { - "content": "\ufeffthis file is\nutf-8 encoded\nwith BOM\n\ud83d\ude03\n", - "contentType": "text/plain" - } - } - } - ], "name": "regression-issue868", "type": "library", "version": "0.1" diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.xml.bin index 9534c75ee..d35e70610 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.xml.bin @@ -107,31 +107,6 @@ MIT - - declared license file: LICENSE - The MIT License (MIT) - -Copyright (c) 2015 Hynek Schlawack and the attrs contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - pkg:pypi/attrs@23.2.0 @@ -167,281 +142,15 @@ SOFTWARE. declared license file: CHANGELOG.rst - -Changelog -========= - - -next ----- - - -4.0 (2022-05-05) ----------------- - -* API changes - - * Drop support for Python 2. - * Test on Python 3.10 - * Make Expression.sort_order an instance attributes and not a class attribute - -* Misc. - - * Correct licensing documentation - * Improve docstringf and apply minor refactorings - * Adopt black code style and isort for imports - * Drop Travis and use GitHub actions for CI - - -3.8 (2020-06-10) ----------------- - -* API changes - - * Add support for evaluation of boolean expression. - Thank you to Lars van Gemerden @gemerden - -* Bug fixes - - * Fix parsing of tokens that have a number as the first character. - Thank you to Jeff Cohen @ jcohen28 - * Restore proper Python 2 compatibility. - Thank you to Benjy Weinberger @benjyw - -* Improve documentation - - * Add pointers to Linux distro packages. - Thank you to Max Mehl @mxmehl and Carmen Bianca Bakker @carmenbianca - * Fix typo. - Thank you to Gabriel Niebler @der-gabe - - -3.7 (2019-10-04) ----------------- - -* API changes - - * Add new sort argument to simplify() to optionally not sort when simplifying - expressions (e.g. not applying "commutativity"). Thank you to Steven Esser - @majurg for this - * Add new argument to tokenizer to optionally accept extra characters in symbol - tokens. Thank you to @carpie for this - - -3.6 (2018-08-06) ----------------- - -* No API changes - -* Bug fixes - - * Fix De Morgan's laws effect on double negation propositions. Thank you to Douglas Cardoso for this - * Improve error checking when parsing - - -3.5 (Nov 1, 2017) ------------------ - -* No API changes - -* Bug fixes - - * Documentation updates and add testing for Python 3.6. Thank you to Alexander Lisianoi @alisianoi - * Improve testng and expression equivalence checks - * Improve subs() method to an expression - - - -3.4 (May 12, 2017) ------------------- - -* No API changes - -* Bug fixes and improvements - - * Fix various documentation typos and improve tests . Thank you to Alexander Lisianoi @alisianoi - * Fix handling for literals vs. symbols in negations Thank you to @YaronK - - -3.3 (2017-02-09) ----------------- - -* API changes - - * #40 and #50 Expression.subs() now takes 'default' thanks to @kronuz - * #45 simplify=False is now the default for parse and related functions or methods. - * #40 Use "&" and "|" as default operators - -* Bug fixes - - * #60 Fix bug for "a or b c" which is not a valid expression - * #58 Fix math formula display in docs - * Improve handling of parse errors - - -2.0.0 (2016-05-11) ------------------- - -* API changes - - * New algebra definition. Refactored class hierarchy. Improved parsing. - -* New features - - * possibility to subclass algebra definition - * new normal forms shortcuts for DNF and CNF. - - -1.1 (2016-04-06) ------------------- - -* Initial release on Pypi. - + CkNoYW5nZWxvZwo9PT09PT09PT0KCgpuZXh0Ci0tLS0KCgo0LjAgKDIwMjItMDUtMDUpCi0tLS0tLS0tLS0tLS0tLS0KCiogQVBJIGNoYW5nZXMKCiAqIERyb3Agc3VwcG9ydCBmb3IgUHl0aG9uIDIuCiAqIFRlc3Qgb24gUHl0aG9uIDMuMTAKICogTWFrZSBFeHByZXNzaW9uLnNvcnRfb3JkZXIgYW4gaW5zdGFuY2UgYXR0cmlidXRlcyBhbmQgbm90IGEgY2xhc3MgYXR0cmlidXRlCgoqIE1pc2MuCgogKiBDb3JyZWN0IGxpY2Vuc2luZyBkb2N1bWVudGF0aW9uCiAqIEltcHJvdmUgZG9jc3RyaW5nZiBhbmQgYXBwbHkgbWlub3IgcmVmYWN0b3JpbmdzCiAqIEFkb3B0IGJsYWNrIGNvZGUgc3R5bGUgYW5kIGlzb3J0IGZvciBpbXBvcnRzCiAqIERyb3AgVHJhdmlzIGFuZCB1c2UgR2l0SHViIGFjdGlvbnMgZm9yIENJCgoKMy44ICgyMDIwLTA2LTEwKQotLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiBBZGQgc3VwcG9ydCBmb3IgZXZhbHVhdGlvbiBvZiBib29sZWFuIGV4cHJlc3Npb24uCiAgIFRoYW5rIHlvdSB0byBMYXJzIHZhbiBHZW1lcmRlbiBAZ2VtZXJkZW4KCiogQnVnIGZpeGVzCgogKiBGaXggcGFyc2luZyBvZiB0b2tlbnMgdGhhdCBoYXZlIGEgbnVtYmVyIGFzIHRoZSBmaXJzdCBjaGFyYWN0ZXIuIAogICBUaGFuayB5b3UgdG8gSmVmZiBDb2hlbiBAIGpjb2hlbjI4CiAqIFJlc3RvcmUgcHJvcGVyIFB5dGhvbiAyIGNvbXBhdGliaWxpdHkuIAogICBUaGFuayB5b3UgdG8gQmVuankgV2VpbmJlcmdlciBAYmVuanl3CgoqIEltcHJvdmUgZG9jdW1lbnRhdGlvbgoKICogQWRkIHBvaW50ZXJzIHRvIExpbnV4IGRpc3RybyBwYWNrYWdlcy4KICAgVGhhbmsgeW91IHRvIE1heCBNZWhsIEBteG1laGwgYW5kIENhcm1lbiBCaWFuY2EgQmFra2VyIEBjYXJtZW5iaWFuY2EKICogRml4IHR5cG8uCiAgIFRoYW5rIHlvdSB0byBHYWJyaWVsIE5pZWJsZXIgQGRlci1nYWJlCgoKMy43ICgyMDE5LTEwLTA0KQotLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiBBZGQgbmV3IHNvcnQgYXJndW1lbnQgdG8gc2ltcGxpZnkoKSB0byBvcHRpb25hbGx5IG5vdCBzb3J0IHdoZW4gc2ltcGxpZnlpbmcKICAgZXhwcmVzc2lvbnMgKGUuZy4gbm90IGFwcGx5aW5nICJjb21tdXRhdGl2aXR5IikuIFRoYW5rIHlvdSB0byBTdGV2ZW4gRXNzZXIKICAgQG1hanVyZyBmb3IgdGhpcwogKiBBZGQgbmV3IGFyZ3VtZW50IHRvIHRva2VuaXplciB0byBvcHRpb25hbGx5IGFjY2VwdCBleHRyYSBjaGFyYWN0ZXJzIGluIHN5bWJvbAogICB0b2tlbnMuIFRoYW5rIHlvdSB0byBAY2FycGllIGZvciB0aGlzCgoKMy42ICgyMDE4LTA4LTA2KQotLS0tLS0tLS0tLS0tLS0tCgoqIE5vIEFQSSBjaGFuZ2VzCgoqIEJ1ZyBmaXhlcwoKICogRml4IERlIE1vcmdhbidzIGxhd3MgZWZmZWN0IG9uIGRvdWJsZSBuZWdhdGlvbiBwcm9wb3NpdGlvbnMuIFRoYW5rIHlvdSB0byBEb3VnbGFzIENhcmRvc28gZm9yIHRoaXMKICogSW1wcm92ZSBlcnJvciBjaGVja2luZyB3aGVuIHBhcnNpbmcKCgozLjUgKE5vdiAxLCAyMDE3KQotLS0tLS0tLS0tLS0tLS0tLQoKKiBObyBBUEkgY2hhbmdlcwoKKiBCdWcgZml4ZXMKCiAqIERvY3VtZW50YXRpb24gdXBkYXRlcyBhbmQgYWRkIHRlc3RpbmcgZm9yIFB5dGhvbiAzLjYuIFRoYW5rIHlvdSB0byBBbGV4YW5kZXIgTGlzaWFub2kgQGFsaXNpYW5vaQogKiBJbXByb3ZlIHRlc3RuZyBhbmQgZXhwcmVzc2lvbiBlcXVpdmFsZW5jZSBjaGVja3MKICogSW1wcm92ZSBzdWJzKCkgbWV0aG9kIHRvIGFuIGV4cHJlc3Npb24gCgogCgozLjQgKE1heSAxMiwgMjAxNykKLS0tLS0tLS0tLS0tLS0tLS0tCgoqIE5vIEFQSSBjaGFuZ2VzCgoqIEJ1ZyBmaXhlcyBhbmQgaW1wcm92ZW1lbnRzCgogKiBGaXggdmFyaW91cyBkb2N1bWVudGF0aW9uIHR5cG9zIGFuZCBpbXByb3ZlIHRlc3RzIC4gVGhhbmsgeW91IHRvIEFsZXhhbmRlciBMaXNpYW5vaSBAYWxpc2lhbm9pCiAqIEZpeCBoYW5kbGluZyBmb3IgbGl0ZXJhbHMgdnMuIHN5bWJvbHMgaW4gbmVnYXRpb25zIFRoYW5rIHlvdSB0byBAWWFyb25LCgoKMy4zICgyMDE3LTAyLTA5KQotLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiAjNDAgYW5kICM1MCBFeHByZXNzaW9uLnN1YnMoKSBub3cgdGFrZXMgJ2RlZmF1bHQnIHRoYW5rcyB0byBAa3JvbnV6CiAqICM0NSBzaW1wbGlmeT1GYWxzZSBpcyBub3cgdGhlIGRlZmF1bHQgZm9yIHBhcnNlIGFuZCByZWxhdGVkIGZ1bmN0aW9ucyBvciBtZXRob2RzLgogKiAjNDAgVXNlICImIiBhbmQgInwiIGFzIGRlZmF1bHQgb3BlcmF0b3JzCgoqIEJ1ZyBmaXhlcwoKICogIzYwIEZpeCBidWcgZm9yICJhIG9yIGIgYyIgd2hpY2ggaXMgbm90IGEgdmFsaWQgZXhwcmVzc2lvbgogKiAjNTggRml4IG1hdGggZm9ybXVsYSBkaXNwbGF5IGluIGRvY3MKICogSW1wcm92ZSBoYW5kbGluZyBvZiBwYXJzZSBlcnJvcnMKCgoyLjAuMCAoMjAxNi0wNS0xMSkKLS0tLS0tLS0tLS0tLS0tLS0tCgoqIEFQSSBjaGFuZ2VzCgogKiBOZXcgYWxnZWJyYSBkZWZpbml0aW9uLiBSZWZhY3RvcmVkIGNsYXNzIGhpZXJhcmNoeS4gSW1wcm92ZWQgcGFyc2luZy4KCiogTmV3IGZlYXR1cmVzCgogKiBwb3NzaWJpbGl0eSB0byBzdWJjbGFzcyBhbGdlYnJhIGRlZmluaXRpb24KICogbmV3IG5vcm1hbCBmb3JtcyBzaG9ydGN1dHMgZm9yIERORiBhbmQgQ05GLgoKCjEuMSAoMjAxNi0wNC0wNikKLS0tLS0tLS0tLS0tLS0tLS0tCgoqIEluaXRpYWwgcmVsZWFzZSBvbiBQeXBpLgo= declared license file: LICENSE.txt - Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation and/or -other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - + Q29weXJpZ2h0IChjKSBTZWJhc3RpYW4gS3JhZW1lciwgYmFzdGkua3JAZ21haWwuY29tIGFuZCBvdGhlcnMKQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCmFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKCjEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcwpsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KCjIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3IKb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQpESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgpBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwpMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCg== declared license file: README.rst - boolean.py -========== - -"boolean.py" is a small library implementing a boolean algebra. It -defines two base elements, TRUE and FALSE, and a Symbol class that can -take on one of these two values. Calculations are done in terms of AND, -OR and NOT - other compositions like XOR and NAND are not implemented -but can be emulated with AND or and NOT. Expressions are constructed -from parsed strings or in Python. - -It runs on Python 3.6+ -You can use older version 3.x for Python 2.7+ support. - -https://github.com/bastikr/boolean.py - -Build status: |Build Status| - - -Example -------- - -:: - - >>> import boolean - >>> algebra = boolean.BooleanAlgebra() - >>> expression1 = algebra.parse(u'apple and (oranges or banana) and not banana', simplify=False) - >>> expression1 - AND(Symbol('apple'), OR(Symbol('oranges'), Symbol('banana')), NOT(Symbol('banana'))) - - >>> expression2 = algebra.parse('(oranges | banana) and not banana & apple', simplify=True) - >>> expression2 - AND(Symbol('apple'), NOT(Symbol('banana')), Symbol('oranges')) - - >>> expression1 == expression2 - False - >>> expression1.simplify() == expression2 - True - - -Documentation -------------- - -http://readthedocs.org/docs/booleanpy/en/latest/ - - -Installation ------------- - -Installation via pip -~~~~~~~~~~~~~~~~~~~~ - -To install boolean.py, you need to have the following pieces of software -on your computer: - -- Python 3.6+ -- pip - -You then only need to run the following command: - -``pip install boolean.py`` - - -Installation via package managers -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -There are packages available for easy install on some operating systems. -You are welcome to help us package this tool for more distributions! - -- boolean.py has been packaged as Arch Linux, Fedora, openSus, - nixpkgs, Guix, DragonFly and FreeBSD - `packages <https://repology.org/project/python:boolean.py/versions>`__ . - -In particular: - -- Arch Linux (AUR): - `python-boolean.py <https://aur.archlinux.org/packages/python-boolean.py/>`__ -- Fedora: - `python-boolean.py <https://apps.fedoraproject.org/packages/python-boolean.py>`__ -- openSUSE: - `python-boolean.py <https://software.opensuse.org/package/python-boolean.py>`__ - - -Testing -------- - -Test ``boolean.py`` with your current Python environment: - -``python setup.py test`` - -Test with all of the supported Python environments using ``tox``: - -:: - - pip install -r requirements-dev.txt - tox - -If ``tox`` throws ``InterpreterNotFound``, limit it to python -interpreters that are actually installed on your machine: - -:: - - tox -e py36 - -Alternatively use pytest. - - -License -------- - -Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others -SPDX-License-Identifier: BSD-2-Clause - -.. |Build Status| image:: https://travis-ci.org/bastikr/boolean.py.svg?branch=master - :target: https://travis-ci.org/bastikr/boolean.py - + Ym9vbGVhbi5weQo9PT09PT09PT09CgoiYm9vbGVhbi5weSIgaXMgYSBzbWFsbCBsaWJyYXJ5IGltcGxlbWVudGluZyBhIGJvb2xlYW4gYWxnZWJyYS4gSXQKZGVmaW5lcyB0d28gYmFzZSBlbGVtZW50cywgVFJVRSBhbmQgRkFMU0UsIGFuZCBhIFN5bWJvbCBjbGFzcyB0aGF0IGNhbgp0YWtlIG9uIG9uZSBvZiB0aGVzZSB0d28gdmFsdWVzLiBDYWxjdWxhdGlvbnMgYXJlIGRvbmUgaW4gdGVybXMgb2YgQU5ELApPUiBhbmQgTk9UIC0gb3RoZXIgY29tcG9zaXRpb25zIGxpa2UgWE9SIGFuZCBOQU5EIGFyZSBub3QgaW1wbGVtZW50ZWQKYnV0IGNhbiBiZSBlbXVsYXRlZCB3aXRoIEFORCBvciBhbmQgTk9ULiBFeHByZXNzaW9ucyBhcmUgY29uc3RydWN0ZWQKZnJvbSBwYXJzZWQgc3RyaW5ncyBvciBpbiBQeXRob24uCgpJdCBydW5zIG9uIFB5dGhvbiAzLjYrCllvdSBjYW4gdXNlIG9sZGVyIHZlcnNpb24gMy54IGZvciBQeXRob24gMi43KyBzdXBwb3J0LgoKaHR0cHM6Ly9naXRodWIuY29tL2Jhc3Rpa3IvYm9vbGVhbi5weQoKQnVpbGQgc3RhdHVzOiB8QnVpbGQgU3RhdHVzfAoKCkV4YW1wbGUKLS0tLS0tLQoKOjoKCiAgICA+Pj4gaW1wb3J0IGJvb2xlYW4KICAgID4+PiBhbGdlYnJhID0gYm9vbGVhbi5Cb29sZWFuQWxnZWJyYSgpCiAgICA+Pj4gZXhwcmVzc2lvbjEgPSBhbGdlYnJhLnBhcnNlKHUnYXBwbGUgYW5kIChvcmFuZ2VzIG9yIGJhbmFuYSkgYW5kIG5vdCBiYW5hbmEnLCBzaW1wbGlmeT1GYWxzZSkKICAgID4+PiBleHByZXNzaW9uMQogICAgQU5EKFN5bWJvbCgnYXBwbGUnKSwgT1IoU3ltYm9sKCdvcmFuZ2VzJyksIFN5bWJvbCgnYmFuYW5hJykpLCBOT1QoU3ltYm9sKCdiYW5hbmEnKSkpCgogICAgPj4+IGV4cHJlc3Npb24yID0gYWxnZWJyYS5wYXJzZSgnKG9yYW5nZXMgfCBiYW5hbmEpIGFuZCBub3QgYmFuYW5hICYgYXBwbGUnLCBzaW1wbGlmeT1UcnVlKQogICAgPj4+IGV4cHJlc3Npb24yCiAgICBBTkQoU3ltYm9sKCdhcHBsZScpLCBOT1QoU3ltYm9sKCdiYW5hbmEnKSksIFN5bWJvbCgnb3JhbmdlcycpKQoKICAgID4+PiBleHByZXNzaW9uMSA9PSBleHByZXNzaW9uMgogICAgRmFsc2UKICAgID4+PiBleHByZXNzaW9uMS5zaW1wbGlmeSgpID09IGV4cHJlc3Npb24yCiAgICBUcnVlCgoKRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tCgpodHRwOi8vcmVhZHRoZWRvY3Mub3JnL2RvY3MvYm9vbGVhbnB5L2VuL2xhdGVzdC8KCgpJbnN0YWxsYXRpb24KLS0tLS0tLS0tLS0tCgpJbnN0YWxsYXRpb24gdmlhIHBpcAp+fn5+fn5+fn5+fn5+fn5+fn5+fgoKVG8gaW5zdGFsbCBib29sZWFuLnB5LCB5b3UgbmVlZCB0byBoYXZlIHRoZSBmb2xsb3dpbmcgcGllY2VzIG9mIHNvZnR3YXJlCm9uIHlvdXIgY29tcHV0ZXI6CgotICBQeXRob24gMy42KwotICBwaXAKCllvdSB0aGVuIG9ubHkgbmVlZCB0byBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kOgoKYGBwaXAgaW5zdGFsbCBib29sZWFuLnB5YGAKCgpJbnN0YWxsYXRpb24gdmlhIHBhY2thZ2UgbWFuYWdlcnMKfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgpUaGVyZSBhcmUgcGFja2FnZXMgYXZhaWxhYmxlIGZvciBlYXN5IGluc3RhbGwgb24gc29tZSBvcGVyYXRpbmcgc3lzdGVtcy4KWW91IGFyZSB3ZWxjb21lIHRvIGhlbHAgdXMgcGFja2FnZSB0aGlzIHRvb2wgZm9yIG1vcmUgZGlzdHJpYnV0aW9ucyEKCi0gIGJvb2xlYW4ucHkgaGFzIGJlZW4gcGFja2FnZWQgYXMgQXJjaCBMaW51eCwgRmVkb3JhLCBvcGVuU3VzLAogICBuaXhwa2dzLCBHdWl4LCBEcmFnb25GbHkgYW5kIEZyZWVCU0QgCiAgIGBwYWNrYWdlcyA8aHR0cHM6Ly9yZXBvbG9neS5vcmcvcHJvamVjdC9weXRob246Ym9vbGVhbi5weS92ZXJzaW9ucz5gX18gLgoKSW4gcGFydGljdWxhcjoKCi0gIEFyY2ggTGludXggKEFVUik6CiAgIGBweXRob24tYm9vbGVhbi5weSA8aHR0cHM6Ly9hdXIuYXJjaGxpbnV4Lm9yZy9wYWNrYWdlcy9weXRob24tYm9vbGVhbi5weS8+YF9fCi0gIEZlZG9yYToKICAgYHB5dGhvbi1ib29sZWFuLnB5IDxodHRwczovL2FwcHMuZmVkb3JhcHJvamVjdC5vcmcvcGFja2FnZXMvcHl0aG9uLWJvb2xlYW4ucHk+YF9fCi0gIG9wZW5TVVNFOgogICBgcHl0aG9uLWJvb2xlYW4ucHkgPGh0dHBzOi8vc29mdHdhcmUub3BlbnN1c2Uub3JnL3BhY2thZ2UvcHl0aG9uLWJvb2xlYW4ucHk+YF9fCgoKVGVzdGluZwotLS0tLS0tCgpUZXN0IGBgYm9vbGVhbi5weWBgIHdpdGggeW91ciBjdXJyZW50IFB5dGhvbiBlbnZpcm9ubWVudDoKCmBgcHl0aG9uIHNldHVwLnB5IHRlc3RgYAoKVGVzdCB3aXRoIGFsbCBvZiB0aGUgc3VwcG9ydGVkIFB5dGhvbiBlbnZpcm9ubWVudHMgdXNpbmcgYGB0b3hgYDoKCjo6CgogICAgcGlwIGluc3RhbGwgLXIgcmVxdWlyZW1lbnRzLWRldi50eHQKICAgIHRveAoKSWYgYGB0b3hgYCB0aHJvd3MgYGBJbnRlcnByZXRlck5vdEZvdW5kYGAsIGxpbWl0IGl0IHRvIHB5dGhvbgppbnRlcnByZXRlcnMgdGhhdCBhcmUgYWN0dWFsbHkgaW5zdGFsbGVkIG9uIHlvdXIgbWFjaGluZToKCjo6CgogICAgdG94IC1lIHB5MzYKCkFsdGVybmF0aXZlbHkgdXNlIHB5dGVzdC4KCgpMaWNlbnNlCi0tLS0tLS0KCkNvcHlyaWdodCAoYykgU2ViYXN0aWFuIEtyYWVtZXIsIGJhc3RpLmtyQGdtYWlsLmNvbSBhbmQgb3RoZXJzClNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UKCi4uIHxCdWlsZCBTdGF0dXN8IGltYWdlOjogaHR0cHM6Ly90cmF2aXMtY2kub3JnL2Jhc3Rpa3IvYm9vbGVhbi5weS5zdmc/YnJhbmNoPW1hc3RlcgogICA6dGFyZ2V0OiBodHRwczovL3RyYXZpcy1jaS5vcmcvYmFzdGlrci9ib29sZWFuLnB5Cg== pkg:pypi/boolean.py@4.0 @@ -452,6 +161,43 @@ SPDX-License-Identifier: BSD-2-Clause + + chardet + 5.2.0 + Universal encoding detector for Python 3 + + + License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+) + + + declared license file: LICENSE + ICAgICAgICAgICAgICAgICAgR05VIExFU1NFUiBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFCiAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAyLjEsIEZlYnJ1YXJ5IDE5OTkKCiBDb3B5cmlnaHQgKEMpIDE5OTEsIDE5OTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKIEV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcwogb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCgpbVGhpcyBpcyB0aGUgZmlyc3QgcmVsZWFzZWQgdmVyc2lvbiBvZiB0aGUgTGVzc2VyIEdQTC4gIEl0IGFsc28gY291bnRzCiBhcyB0aGUgc3VjY2Vzc29yIG9mIHRoZSBHTlUgTGlicmFyeSBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLCBoZW5jZQogdGhlIHZlcnNpb24gbnVtYmVyIDIuMS5dCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlYW1ibGUKCiAgVGhlIGxpY2Vuc2VzIGZvciBtb3N0IHNvZnR3YXJlIGFyZSBkZXNpZ25lZCB0byB0YWtlIGF3YXkgeW91cgpmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgaXQuICBCeSBjb250cmFzdCwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwpMaWNlbnNlcyBhcmUgaW50ZW5kZWQgdG8gZ3VhcmFudGVlIHlvdXIgZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlCmZyZWUgc29mdHdhcmUtLXRvIG1ha2Ugc3VyZSB0aGUgc29mdHdhcmUgaXMgZnJlZSBmb3IgYWxsIGl0cyB1c2Vycy4KCiAgVGhpcyBsaWNlbnNlLCB0aGUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFwcGxpZXMgdG8gc29tZQpzcGVjaWFsbHkgZGVzaWduYXRlZCBzb2Z0d2FyZSBwYWNrYWdlcy0tdHlwaWNhbGx5IGxpYnJhcmllcy0tb2YgdGhlCkZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBhbmQgb3RoZXIgYXV0aG9ycyB3aG8gZGVjaWRlIHRvIHVzZSBpdC4gIFlvdQpjYW4gdXNlIGl0IHRvbywgYnV0IHdlIHN1Z2dlc3QgeW91IGZpcnN0IHRoaW5rIGNhcmVmdWxseSBhYm91dCB3aGV0aGVyCnRoaXMgbGljZW5zZSBvciB0aGUgb3JkaW5hcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyB0aGUgYmV0dGVyCnN0cmF0ZWd5IHRvIHVzZSBpbiBhbnkgcGFydGljdWxhciBjYXNlLCBiYXNlZCBvbiB0aGUgZXhwbGFuYXRpb25zIGJlbG93LgoKICBXaGVuIHdlIHNwZWFrIG9mIGZyZWUgc29mdHdhcmUsIHdlIGFyZSByZWZlcnJpbmcgdG8gZnJlZWRvbSBvZiB1c2UsCm5vdCBwcmljZS4gIE91ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlcyBhcmUgZGVzaWduZWQgdG8gbWFrZSBzdXJlIHRoYXQKeW91IGhhdmUgdGhlIGZyZWVkb20gdG8gZGlzdHJpYnV0ZSBjb3BpZXMgb2YgZnJlZSBzb2Z0d2FyZSAoYW5kIGNoYXJnZQpmb3IgdGhpcyBzZXJ2aWNlIGlmIHlvdSB3aXNoKTsgdGhhdCB5b3UgcmVjZWl2ZSBzb3VyY2UgY29kZSBvciBjYW4gZ2V0Cml0IGlmIHlvdSB3YW50IGl0OyB0aGF0IHlvdSBjYW4gY2hhbmdlIHRoZSBzb2Z0d2FyZSBhbmQgdXNlIHBpZWNlcyBvZgppdCBpbiBuZXcgZnJlZSBwcm9ncmFtczsgYW5kIHRoYXQgeW91IGFyZSBpbmZvcm1lZCB0aGF0IHlvdSBjYW4gZG8KdGhlc2UgdGhpbmdzLgoKICBUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIG1ha2UgcmVzdHJpY3Rpb25zIHRoYXQgZm9yYmlkCmRpc3RyaWJ1dG9ycyB0byBkZW55IHlvdSB0aGVzZSByaWdodHMgb3IgdG8gYXNrIHlvdSB0byBzdXJyZW5kZXIgdGhlc2UKcmlnaHRzLiAgVGhlc2UgcmVzdHJpY3Rpb25zIHRyYW5zbGF0ZSB0byBjZXJ0YWluIHJlc3BvbnNpYmlsaXRpZXMgZm9yCnlvdSBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIGxpYnJhcnkgb3IgaWYgeW91IG1vZGlmeSBpdC4KCiAgRm9yIGV4YW1wbGUsIGlmIHlvdSBkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUgbGlicmFyeSwgd2hldGhlciBncmF0aXMKb3IgZm9yIGEgZmVlLCB5b3UgbXVzdCBnaXZlIHRoZSByZWNpcGllbnRzIGFsbCB0aGUgcmlnaHRzIHRoYXQgd2UgZ2F2ZQp5b3UuICBZb3UgbXVzdCBtYWtlIHN1cmUgdGhhdCB0aGV5LCB0b28sIHJlY2VpdmUgb3IgY2FuIGdldCB0aGUgc291cmNlCmNvZGUuICBJZiB5b3UgbGluayBvdGhlciBjb2RlIHdpdGggdGhlIGxpYnJhcnksIHlvdSBtdXN0IHByb3ZpZGUKY29tcGxldGUgb2JqZWN0IGZpbGVzIHRvIHRoZSByZWNpcGllbnRzLCBzbyB0aGF0IHRoZXkgY2FuIHJlbGluayB0aGVtCndpdGggdGhlIGxpYnJhcnkgYWZ0ZXIgbWFraW5nIGNoYW5nZXMgdG8gdGhlIGxpYnJhcnkgYW5kIHJlY29tcGlsaW5nCml0LiAgQW5kIHlvdSBtdXN0IHNob3cgdGhlbSB0aGVzZSB0ZXJtcyBzbyB0aGV5IGtub3cgdGhlaXIgcmlnaHRzLgoKICBXZSBwcm90ZWN0IHlvdXIgcmlnaHRzIHdpdGggYSB0d28tc3RlcCBtZXRob2Q6ICgxKSB3ZSBjb3B5cmlnaHQgdGhlCmxpYnJhcnksIGFuZCAoMikgd2Ugb2ZmZXIgeW91IHRoaXMgbGljZW5zZSwgd2hpY2ggZ2l2ZXMgeW91IGxlZ2FsCnBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IHRoZSBsaWJyYXJ5LgoKICBUbyBwcm90ZWN0IGVhY2ggZGlzdHJpYnV0b3IsIHdlIHdhbnQgdG8gbWFrZSBpdCB2ZXJ5IGNsZWFyIHRoYXQKdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoZSBmcmVlIGxpYnJhcnkuICBBbHNvLCBpZiB0aGUgbGlicmFyeSBpcwptb2RpZmllZCBieSBzb21lb25lIGVsc2UgYW5kIHBhc3NlZCBvbiwgdGhlIHJlY2lwaWVudHMgc2hvdWxkIGtub3cKdGhhdCB3aGF0IHRoZXkgaGF2ZSBpcyBub3QgdGhlIG9yaWdpbmFsIHZlcnNpb24sIHNvIHRoYXQgdGhlIG9yaWdpbmFsCmF1dGhvcidzIHJlcHV0YXRpb24gd2lsbCBub3QgYmUgYWZmZWN0ZWQgYnkgcHJvYmxlbXMgdGhhdCBtaWdodCBiZQppbnRyb2R1Y2VkIGJ5IG90aGVycy4KDAogIEZpbmFsbHksIHNvZnR3YXJlIHBhdGVudHMgcG9zZSBhIGNvbnN0YW50IHRocmVhdCB0byB0aGUgZXhpc3RlbmNlIG9mCmFueSBmcmVlIHByb2dyYW0uICBXZSB3aXNoIHRvIG1ha2Ugc3VyZSB0aGF0IGEgY29tcGFueSBjYW5ub3QKZWZmZWN0aXZlbHkgcmVzdHJpY3QgdGhlIHVzZXJzIG9mIGEgZnJlZSBwcm9ncmFtIGJ5IG9idGFpbmluZyBhCnJlc3RyaWN0aXZlIGxpY2Vuc2UgZnJvbSBhIHBhdGVudCBob2xkZXIuICBUaGVyZWZvcmUsIHdlIGluc2lzdCB0aGF0CmFueSBwYXRlbnQgbGljZW5zZSBvYnRhaW5lZCBmb3IgYSB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5IG11c3QgYmUKY29uc2lzdGVudCB3aXRoIHRoZSBmdWxsIGZyZWVkb20gb2YgdXNlIHNwZWNpZmllZCBpbiB0aGlzIGxpY2Vuc2UuCgogIE1vc3QgR05VIHNvZnR3YXJlLCBpbmNsdWRpbmcgc29tZSBsaWJyYXJpZXMsIGlzIGNvdmVyZWQgYnkgdGhlCm9yZGluYXJ5IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBsaWNlbnNlLCB0aGUgR05VIExlc3NlcgpHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBhcHBsaWVzIHRvIGNlcnRhaW4gZGVzaWduYXRlZCBsaWJyYXJpZXMsIGFuZAppcyBxdWl0ZSBkaWZmZXJlbnQgZnJvbSB0aGUgb3JkaW5hcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFdlIHVzZQp0aGlzIGxpY2Vuc2UgZm9yIGNlcnRhaW4gbGlicmFyaWVzIGluIG9yZGVyIHRvIHBlcm1pdCBsaW5raW5nIHRob3NlCmxpYnJhcmllcyBpbnRvIG5vbi1mcmVlIHByb2dyYW1zLgoKICBXaGVuIGEgcHJvZ3JhbSBpcyBsaW5rZWQgd2l0aCBhIGxpYnJhcnksIHdoZXRoZXIgc3RhdGljYWxseSBvciB1c2luZwphIHNoYXJlZCBsaWJyYXJ5LCB0aGUgY29tYmluYXRpb24gb2YgdGhlIHR3byBpcyBsZWdhbGx5IHNwZWFraW5nIGEKY29tYmluZWQgd29yaywgYSBkZXJpdmF0aXZlIG9mIHRoZSBvcmlnaW5hbCBsaWJyYXJ5LiAgVGhlIG9yZGluYXJ5CkdlbmVyYWwgUHVibGljIExpY2Vuc2UgdGhlcmVmb3JlIHBlcm1pdHMgc3VjaCBsaW5raW5nIG9ubHkgaWYgdGhlCmVudGlyZSBjb21iaW5hdGlvbiBmaXRzIGl0cyBjcml0ZXJpYSBvZiBmcmVlZG9tLiAgVGhlIExlc3NlciBHZW5lcmFsClB1YmxpYyBMaWNlbnNlIHBlcm1pdHMgbW9yZSBsYXggY3JpdGVyaWEgZm9yIGxpbmtpbmcgb3RoZXIgY29kZSB3aXRoCnRoZSBsaWJyYXJ5LgoKICBXZSBjYWxsIHRoaXMgbGljZW5zZSB0aGUgIkxlc3NlciIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBiZWNhdXNlIGl0CmRvZXMgTGVzcyB0byBwcm90ZWN0IHRoZSB1c2VyJ3MgZnJlZWRvbSB0aGFuIHRoZSBvcmRpbmFyeSBHZW5lcmFsClB1YmxpYyBMaWNlbnNlLiAgSXQgYWxzbyBwcm92aWRlcyBvdGhlciBmcmVlIHNvZnR3YXJlIGRldmVsb3BlcnMgTGVzcwpvZiBhbiBhZHZhbnRhZ2Ugb3ZlciBjb21wZXRpbmcgbm9uLWZyZWUgcHJvZ3JhbXMuICBUaGVzZSBkaXNhZHZhbnRhZ2VzCmFyZSB0aGUgcmVhc29uIHdlIHVzZSB0aGUgb3JkaW5hcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbWFueQpsaWJyYXJpZXMuICBIb3dldmVyLCB0aGUgTGVzc2VyIGxpY2Vuc2UgcHJvdmlkZXMgYWR2YW50YWdlcyBpbiBjZXJ0YWluCnNwZWNpYWwgY2lyY3Vtc3RhbmNlcy4KCiAgRm9yIGV4YW1wbGUsIG9uIHJhcmUgb2NjYXNpb25zLCB0aGVyZSBtYXkgYmUgYSBzcGVjaWFsIG5lZWQgdG8KZW5jb3VyYWdlIHRoZSB3aWRlc3QgcG9zc2libGUgdXNlIG9mIGEgY2VydGFpbiBsaWJyYXJ5LCBzbyB0aGF0IGl0IGJlY29tZXMKYSBkZS1mYWN0byBzdGFuZGFyZC4gIFRvIGFjaGlldmUgdGhpcywgbm9uLWZyZWUgcHJvZ3JhbXMgbXVzdCBiZQphbGxvd2VkIHRvIHVzZSB0aGUgbGlicmFyeS4gIEEgbW9yZSBmcmVxdWVudCBjYXNlIGlzIHRoYXQgYSBmcmVlCmxpYnJhcnkgZG9lcyB0aGUgc2FtZSBqb2IgYXMgd2lkZWx5IHVzZWQgbm9uLWZyZWUgbGlicmFyaWVzLiAgSW4gdGhpcwpjYXNlLCB0aGVyZSBpcyBsaXR0bGUgdG8gZ2FpbiBieSBsaW1pdGluZyB0aGUgZnJlZSBsaWJyYXJ5IHRvIGZyZWUKc29mdHdhcmUgb25seSwgc28gd2UgdXNlIHRoZSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KCiAgSW4gb3RoZXIgY2FzZXMsIHBlcm1pc3Npb24gdG8gdXNlIGEgcGFydGljdWxhciBsaWJyYXJ5IGluIG5vbi1mcmVlCnByb2dyYW1zIGVuYWJsZXMgYSBncmVhdGVyIG51bWJlciBvZiBwZW9wbGUgdG8gdXNlIGEgbGFyZ2UgYm9keSBvZgpmcmVlIHNvZnR3YXJlLiAgRm9yIGV4YW1wbGUsIHBlcm1pc3Npb24gdG8gdXNlIHRoZSBHTlUgQyBMaWJyYXJ5IGluCm5vbi1mcmVlIHByb2dyYW1zIGVuYWJsZXMgbWFueSBtb3JlIHBlb3BsZSB0byB1c2UgdGhlIHdob2xlIEdOVQpvcGVyYXRpbmcgc3lzdGVtLCBhcyB3ZWxsIGFzIGl0cyB2YXJpYW50LCB0aGUgR05VL0xpbnV4IG9wZXJhdGluZwpzeXN0ZW0uCgogIEFsdGhvdWdoIHRoZSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBMZXNzIHByb3RlY3RpdmUgb2YgdGhlCnVzZXJzJyBmcmVlZG9tLCBpdCBkb2VzIGVuc3VyZSB0aGF0IHRoZSB1c2VyIG9mIGEgcHJvZ3JhbSB0aGF0IGlzCmxpbmtlZCB3aXRoIHRoZSBMaWJyYXJ5IGhhcyB0aGUgZnJlZWRvbSBhbmQgdGhlIHdoZXJld2l0aGFsIHRvIHJ1bgp0aGF0IHByb2dyYW0gdXNpbmcgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBMaWJyYXJ5LgoKICBUaGUgcHJlY2lzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW9uIGFuZAptb2RpZmljYXRpb24gZm9sbG93LiAgUGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGEKIndvcmsgYmFzZWQgb24gdGhlIGxpYnJhcnkiIGFuZCBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgbGlicmFyeSIuICBUaGUKZm9ybWVyIGNvbnRhaW5zIGNvZGUgZGVyaXZlZCBmcm9tIHRoZSBsaWJyYXJ5LCB3aGVyZWFzIHRoZSBsYXR0ZXIgbXVzdApiZSBjb21iaW5lZCB3aXRoIHRoZSBsaWJyYXJ5IGluIG9yZGVyIHRvIHJ1bi4KDAogICAgICAgICAgICAgICAgICBHTlUgTEVTU0VSIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKICAgVEVSTVMgQU5EIENPTkRJVElPTlMgRk9SIENPUFlJTkcsIERJU1RSSUJVVElPTiBBTkQgTU9ESUZJQ0FUSU9OCgogIDAuIFRoaXMgTGljZW5zZSBBZ3JlZW1lbnQgYXBwbGllcyB0byBhbnkgc29mdHdhcmUgbGlicmFyeSBvciBvdGhlcgpwcm9ncmFtIHdoaWNoIGNvbnRhaW5zIGEgbm90aWNlIHBsYWNlZCBieSB0aGUgY29weXJpZ2h0IGhvbGRlciBvcgpvdGhlciBhdXRob3JpemVkIHBhcnR5IHNheWluZyBpdCBtYXkgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mCnRoaXMgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKGFsc28gY2FsbGVkICJ0aGlzIExpY2Vuc2UiKS4KRWFjaCBsaWNlbnNlZSBpcyBhZGRyZXNzZWQgYXMgInlvdSIuCgogIEEgImxpYnJhcnkiIG1lYW5zIGEgY29sbGVjdGlvbiBvZiBzb2Z0d2FyZSBmdW5jdGlvbnMgYW5kL29yIGRhdGEKcHJlcGFyZWQgc28gYXMgdG8gYmUgY29udmVuaWVudGx5IGxpbmtlZCB3aXRoIGFwcGxpY2F0aW9uIHByb2dyYW1zCih3aGljaCB1c2Ugc29tZSBvZiB0aG9zZSBmdW5jdGlvbnMgYW5kIGRhdGEpIHRvIGZvcm0gZXhlY3V0YWJsZXMuCgogIFRoZSAiTGlicmFyeSIsIGJlbG93LCByZWZlcnMgdG8gYW55IHN1Y2ggc29mdHdhcmUgbGlicmFyeSBvciB3b3JrCndoaWNoIGhhcyBiZWVuIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZXNlIHRlcm1zLiAgQSAid29yayBiYXNlZCBvbiB0aGUKTGlicmFyeSIgbWVhbnMgZWl0aGVyIHRoZSBMaWJyYXJ5IG9yIGFueSBkZXJpdmF0aXZlIHdvcmsgdW5kZXIKY29weXJpZ2h0IGxhdzogdGhhdCBpcyB0byBzYXksIGEgd29yayBjb250YWluaW5nIHRoZSBMaWJyYXJ5IG9yIGEKcG9ydGlvbiBvZiBpdCwgZWl0aGVyIHZlcmJhdGltIG9yIHdpdGggbW9kaWZpY2F0aW9ucyBhbmQvb3IgdHJhbnNsYXRlZApzdHJhaWdodGZvcndhcmRseSBpbnRvIGFub3RoZXIgbGFuZ3VhZ2UuICAoSGVyZWluYWZ0ZXIsIHRyYW5zbGF0aW9uIGlzCmluY2x1ZGVkIHdpdGhvdXQgbGltaXRhdGlvbiBpbiB0aGUgdGVybSAibW9kaWZpY2F0aW9uIi4pCgogICJTb3VyY2UgY29kZSIgZm9yIGEgd29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsgZm9yCm1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgRm9yIGEgbGlicmFyeSwgY29tcGxldGUgc291cmNlIGNvZGUgbWVhbnMKYWxsIHRoZSBzb3VyY2UgY29kZSBmb3IgYWxsIG1vZHVsZXMgaXQgY29udGFpbnMsIHBsdXMgYW55IGFzc29jaWF0ZWQKaW50ZXJmYWNlIGRlZmluaXRpb24gZmlsZXMsIHBsdXMgdGhlIHNjcmlwdHMgdXNlZCB0byBjb250cm9sIGNvbXBpbGF0aW9uCmFuZCBpbnN0YWxsYXRpb24gb2YgdGhlIGxpYnJhcnkuCgogIEFjdGl2aXRpZXMgb3RoZXIgdGhhbiBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kIG1vZGlmaWNhdGlvbiBhcmUgbm90CmNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlOyB0aGV5IGFyZSBvdXRzaWRlIGl0cyBzY29wZS4gIFRoZSBhY3Qgb2YKcnVubmluZyBhIHByb2dyYW0gdXNpbmcgdGhlIExpYnJhcnkgaXMgbm90IHJlc3RyaWN0ZWQsIGFuZCBvdXRwdXQgZnJvbQpzdWNoIGEgcHJvZ3JhbSBpcyBjb3ZlcmVkIG9ubHkgaWYgaXRzIGNvbnRlbnRzIGNvbnN0aXR1dGUgYSB3b3JrIGJhc2VkCm9uIHRoZSBMaWJyYXJ5IChpbmRlcGVuZGVudCBvZiB0aGUgdXNlIG9mIHRoZSBMaWJyYXJ5IGluIGEgdG9vbCBmb3IKd3JpdGluZyBpdCkuICBXaGV0aGVyIHRoYXQgaXMgdHJ1ZSBkZXBlbmRzIG9uIHdoYXQgdGhlIExpYnJhcnkgZG9lcwphbmQgd2hhdCB0aGUgcHJvZ3JhbSB0aGF0IHVzZXMgdGhlIExpYnJhcnkgZG9lcy4KCiAgMS4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcyBvZiB0aGUgTGlicmFyeSdzCmNvbXBsZXRlIHNvdXJjZSBjb2RlIGFzIHlvdSByZWNlaXZlIGl0LCBpbiBhbnkgbWVkaXVtLCBwcm92aWRlZCB0aGF0CnlvdSBjb25zcGljdW91c2x5IGFuZCBhcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuCmFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2UgYW5kIGRpc2NsYWltZXIgb2Ygd2FycmFudHk7IGtlZXAgaW50YWN0CmFsbCB0aGUgbm90aWNlcyB0aGF0IHJlZmVyIHRvIHRoaXMgTGljZW5zZSBhbmQgdG8gdGhlIGFic2VuY2Ugb2YgYW55CndhcnJhbnR5OyBhbmQgZGlzdHJpYnV0ZSBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlIGFsb25nIHdpdGggdGhlCkxpYnJhcnkuCgogIFlvdSBtYXkgY2hhcmdlIGEgZmVlIGZvciB0aGUgcGh5c2ljYWwgYWN0IG9mIHRyYW5zZmVycmluZyBhIGNvcHksCmFuZCB5b3UgbWF5IGF0IHlvdXIgb3B0aW9uIG9mZmVyIHdhcnJhbnR5IHByb3RlY3Rpb24gaW4gZXhjaGFuZ2UgZm9yIGEKZmVlLgoMCiAgMi4gWW91IG1heSBtb2RpZnkgeW91ciBjb3B5IG9yIGNvcGllcyBvZiB0aGUgTGlicmFyeSBvciBhbnkgcG9ydGlvbgpvZiBpdCwgdGh1cyBmb3JtaW5nIGEgd29yayBiYXNlZCBvbiB0aGUgTGlicmFyeSwgYW5kIGNvcHkgYW5kCmRpc3RyaWJ1dGUgc3VjaCBtb2RpZmljYXRpb25zIG9yIHdvcmsgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb24gMQphYm92ZSwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBtZWV0IGFsbCBvZiB0aGVzZSBjb25kaXRpb25zOgoKICAgIGEpIFRoZSBtb2RpZmllZCB3b3JrIG11c3QgaXRzZWxmIGJlIGEgc29mdHdhcmUgbGlicmFyeS4KCiAgICBiKSBZb3UgbXVzdCBjYXVzZSB0aGUgZmlsZXMgbW9kaWZpZWQgdG8gY2FycnkgcHJvbWluZW50IG5vdGljZXMKICAgIHN0YXRpbmcgdGhhdCB5b3UgY2hhbmdlZCB0aGUgZmlsZXMgYW5kIHRoZSBkYXRlIG9mIGFueSBjaGFuZ2UuCgogICAgYykgWW91IG11c3QgY2F1c2UgdGhlIHdob2xlIG9mIHRoZSB3b3JrIHRvIGJlIGxpY2Vuc2VkIGF0IG5vCiAgICBjaGFyZ2UgdG8gYWxsIHRoaXJkIHBhcnRpZXMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZS4KCiAgICBkKSBJZiBhIGZhY2lsaXR5IGluIHRoZSBtb2RpZmllZCBMaWJyYXJ5IHJlZmVycyB0byBhIGZ1bmN0aW9uIG9yIGEKICAgIHRhYmxlIG9mIGRhdGEgdG8gYmUgc3VwcGxpZWQgYnkgYW4gYXBwbGljYXRpb24gcHJvZ3JhbSB0aGF0IHVzZXMKICAgIHRoZSBmYWNpbGl0eSwgb3RoZXIgdGhhbiBhcyBhbiBhcmd1bWVudCBwYXNzZWQgd2hlbiB0aGUgZmFjaWxpdHkKICAgIGlzIGludm9rZWQsIHRoZW4geW91IG11c3QgbWFrZSBhIGdvb2QgZmFpdGggZWZmb3J0IHRvIGVuc3VyZSB0aGF0LAogICAgaW4gdGhlIGV2ZW50IGFuIGFwcGxpY2F0aW9uIGRvZXMgbm90IHN1cHBseSBzdWNoIGZ1bmN0aW9uIG9yCiAgICB0YWJsZSwgdGhlIGZhY2lsaXR5IHN0aWxsIG9wZXJhdGVzLCBhbmQgcGVyZm9ybXMgd2hhdGV2ZXIgcGFydCBvZgogICAgaXRzIHB1cnBvc2UgcmVtYWlucyBtZWFuaW5nZnVsLgoKICAgIChGb3IgZXhhbXBsZSwgYSBmdW5jdGlvbiBpbiBhIGxpYnJhcnkgdG8gY29tcHV0ZSBzcXVhcmUgcm9vdHMgaGFzCiAgICBhIHB1cnBvc2UgdGhhdCBpcyBlbnRpcmVseSB3ZWxsLWRlZmluZWQgaW5kZXBlbmRlbnQgb2YgdGhlCiAgICBhcHBsaWNhdGlvbi4gIFRoZXJlZm9yZSwgU3Vic2VjdGlvbiAyZCByZXF1aXJlcyB0aGF0IGFueQogICAgYXBwbGljYXRpb24tc3VwcGxpZWQgZnVuY3Rpb24gb3IgdGFibGUgdXNlZCBieSB0aGlzIGZ1bmN0aW9uIG11c3QKICAgIGJlIG9wdGlvbmFsOiBpZiB0aGUgYXBwbGljYXRpb24gZG9lcyBub3Qgc3VwcGx5IGl0LCB0aGUgc3F1YXJlCiAgICByb290IGZ1bmN0aW9uIG11c3Qgc3RpbGwgY29tcHV0ZSBzcXVhcmUgcm9vdHMuKQoKVGhlc2UgcmVxdWlyZW1lbnRzIGFwcGx5IHRvIHRoZSBtb2RpZmllZCB3b3JrIGFzIGEgd2hvbGUuICBJZgppZGVudGlmaWFibGUgc2VjdGlvbnMgb2YgdGhhdCB3b3JrIGFyZSBub3QgZGVyaXZlZCBmcm9tIHRoZSBMaWJyYXJ5LAphbmQgY2FuIGJlIHJlYXNvbmFibHkgY29uc2lkZXJlZCBpbmRlcGVuZGVudCBhbmQgc2VwYXJhdGUgd29ya3MgaW4KdGhlbXNlbHZlcywgdGhlbiB0aGlzIExpY2Vuc2UsIGFuZCBpdHMgdGVybXMsIGRvIG5vdCBhcHBseSB0byB0aG9zZQpzZWN0aW9ucyB3aGVuIHlvdSBkaXN0cmlidXRlIHRoZW0gYXMgc2VwYXJhdGUgd29ya3MuICBCdXQgd2hlbiB5b3UKZGlzdHJpYnV0ZSB0aGUgc2FtZSBzZWN0aW9ucyBhcyBwYXJ0IG9mIGEgd2hvbGUgd2hpY2ggaXMgYSB3b3JrIGJhc2VkCm9uIHRoZSBMaWJyYXJ5LCB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSB3aG9sZSBtdXN0IGJlIG9uIHRoZSB0ZXJtcyBvZgp0aGlzIExpY2Vuc2UsIHdob3NlIHBlcm1pc3Npb25zIGZvciBvdGhlciBsaWNlbnNlZXMgZXh0ZW5kIHRvIHRoZQplbnRpcmUgd2hvbGUsIGFuZCB0aHVzIHRvIGVhY2ggYW5kIGV2ZXJ5IHBhcnQgcmVnYXJkbGVzcyBvZiB3aG8gd3JvdGUKaXQuCgpUaHVzLCBpdCBpcyBub3QgdGhlIGludGVudCBvZiB0aGlzIHNlY3Rpb24gdG8gY2xhaW0gcmlnaHRzIG9yIGNvbnRlc3QKeW91ciByaWdodHMgdG8gd29yayB3cml0dGVuIGVudGlyZWx5IGJ5IHlvdTsgcmF0aGVyLCB0aGUgaW50ZW50IGlzIHRvCmV4ZXJjaXNlIHRoZSByaWdodCB0byBjb250cm9sIHRoZSBkaXN0cmlidXRpb24gb2YgZGVyaXZhdGl2ZSBvcgpjb2xsZWN0aXZlIHdvcmtzIGJhc2VkIG9uIHRoZSBMaWJyYXJ5LgoKSW4gYWRkaXRpb24sIG1lcmUgYWdncmVnYXRpb24gb2YgYW5vdGhlciB3b3JrIG5vdCBiYXNlZCBvbiB0aGUgTGlicmFyeQp3aXRoIHRoZSBMaWJyYXJ5IChvciB3aXRoIGEgd29yayBiYXNlZCBvbiB0aGUgTGlicmFyeSkgb24gYSB2b2x1bWUgb2YKYSBzdG9yYWdlIG9yIGRpc3RyaWJ1dGlvbiBtZWRpdW0gZG9lcyBub3QgYnJpbmcgdGhlIG90aGVyIHdvcmsgdW5kZXIKdGhlIHNjb3BlIG9mIHRoaXMgTGljZW5zZS4KCiAgMy4gWW91IG1heSBvcHQgdG8gYXBwbHkgdGhlIHRlcm1zIG9mIHRoZSBvcmRpbmFyeSBHTlUgR2VuZXJhbCBQdWJsaWMKTGljZW5zZSBpbnN0ZWFkIG9mIHRoaXMgTGljZW5zZSB0byBhIGdpdmVuIGNvcHkgb2YgdGhlIExpYnJhcnkuICBUbyBkbwp0aGlzLCB5b3UgbXVzdCBhbHRlciBhbGwgdGhlIG5vdGljZXMgdGhhdCByZWZlciB0byB0aGlzIExpY2Vuc2UsIHNvCnRoYXQgdGhleSByZWZlciB0byB0aGUgb3JkaW5hcnkgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMiwKaW5zdGVhZCBvZiB0byB0aGlzIExpY2Vuc2UuICAoSWYgYSBuZXdlciB2ZXJzaW9uIHRoYW4gdmVyc2lvbiAyIG9mIHRoZQpvcmRpbmFyeSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBoYXMgYXBwZWFyZWQsIHRoZW4geW91IGNhbiBzcGVjaWZ5CnRoYXQgdmVyc2lvbiBpbnN0ZWFkIGlmIHlvdSB3aXNoLikgIERvIG5vdCBtYWtlIGFueSBvdGhlciBjaGFuZ2UgaW4KdGhlc2Ugbm90aWNlcy4KDAogIE9uY2UgdGhpcyBjaGFuZ2UgaXMgbWFkZSBpbiBhIGdpdmVuIGNvcHksIGl0IGlzIGlycmV2ZXJzaWJsZSBmb3IKdGhhdCBjb3B5LCBzbyB0aGUgb3JkaW5hcnkgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXBwbGllcyB0byBhbGwKc3Vic2VxdWVudCBjb3BpZXMgYW5kIGRlcml2YXRpdmUgd29ya3MgbWFkZSBmcm9tIHRoYXQgY29weS4KCiAgVGhpcyBvcHRpb24gaXMgdXNlZnVsIHdoZW4geW91IHdpc2ggdG8gY29weSBwYXJ0IG9mIHRoZSBjb2RlIG9mCnRoZSBMaWJyYXJ5IGludG8gYSBwcm9ncmFtIHRoYXQgaXMgbm90IGEgbGlicmFyeS4KCiAgNC4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IChvciBhIHBvcnRpb24gb3IKZGVyaXZhdGl2ZSBvZiBpdCwgdW5kZXIgU2VjdGlvbiAyKSBpbiBvYmplY3QgY29kZSBvciBleGVjdXRhYmxlIGZvcm0KdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zIDEgYW5kIDIgYWJvdmUgcHJvdmlkZWQgdGhhdCB5b3UgYWNjb21wYW55Cml0IHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcgbWFjaGluZS1yZWFkYWJsZSBzb3VyY2UgY29kZSwgd2hpY2gKbXVzdCBiZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBvbiBhCm1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZS4KCiAgSWYgZGlzdHJpYnV0aW9uIG9mIG9iamVjdCBjb2RlIGlzIG1hZGUgYnkgb2ZmZXJpbmcgYWNjZXNzIHRvIGNvcHkKZnJvbSBhIGRlc2lnbmF0ZWQgcGxhY2UsIHRoZW4gb2ZmZXJpbmcgZXF1aXZhbGVudCBhY2Nlc3MgdG8gY29weSB0aGUKc291cmNlIGNvZGUgZnJvbSB0aGUgc2FtZSBwbGFjZSBzYXRpc2ZpZXMgdGhlIHJlcXVpcmVtZW50IHRvCmRpc3RyaWJ1dGUgdGhlIHNvdXJjZSBjb2RlLCBldmVuIHRob3VnaCB0aGlyZCBwYXJ0aWVzIGFyZSBub3QKY29tcGVsbGVkIHRvIGNvcHkgdGhlIHNvdXJjZSBhbG9uZyB3aXRoIHRoZSBvYmplY3QgY29kZS4KCiAgNS4gQSBwcm9ncmFtIHRoYXQgY29udGFpbnMgbm8gZGVyaXZhdGl2ZSBvZiBhbnkgcG9ydGlvbiBvZiB0aGUKTGlicmFyeSwgYnV0IGlzIGRlc2lnbmVkIHRvIHdvcmsgd2l0aCB0aGUgTGlicmFyeSBieSBiZWluZyBjb21waWxlZCBvcgpsaW5rZWQgd2l0aCBpdCwgaXMgY2FsbGVkIGEgIndvcmsgdGhhdCB1c2VzIHRoZSBMaWJyYXJ5Ii4gIFN1Y2ggYQp3b3JrLCBpbiBpc29sYXRpb24sIGlzIG5vdCBhIGRlcml2YXRpdmUgd29yayBvZiB0aGUgTGlicmFyeSwgYW5kCnRoZXJlZm9yZSBmYWxscyBvdXRzaWRlIHRoZSBzY29wZSBvZiB0aGlzIExpY2Vuc2UuCgogIEhvd2V2ZXIsIGxpbmtpbmcgYSAid29yayB0aGF0IHVzZXMgdGhlIExpYnJhcnkiIHdpdGggdGhlIExpYnJhcnkKY3JlYXRlcyBhbiBleGVjdXRhYmxlIHRoYXQgaXMgYSBkZXJpdmF0aXZlIG9mIHRoZSBMaWJyYXJ5IChiZWNhdXNlIGl0CmNvbnRhaW5zIHBvcnRpb25zIG9mIHRoZSBMaWJyYXJ5KSwgcmF0aGVyIHRoYW4gYSAid29yayB0aGF0IHVzZXMgdGhlCmxpYnJhcnkiLiAgVGhlIGV4ZWN1dGFibGUgaXMgdGhlcmVmb3JlIGNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlLgpTZWN0aW9uIDYgc3RhdGVzIHRlcm1zIGZvciBkaXN0cmlidXRpb24gb2Ygc3VjaCBleGVjdXRhYmxlcy4KCiAgV2hlbiBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgTGlicmFyeSIgdXNlcyBtYXRlcmlhbCBmcm9tIGEgaGVhZGVyIGZpbGUKdGhhdCBpcyBwYXJ0IG9mIHRoZSBMaWJyYXJ5LCB0aGUgb2JqZWN0IGNvZGUgZm9yIHRoZSB3b3JrIG1heSBiZSBhCmRlcml2YXRpdmUgd29yayBvZiB0aGUgTGlicmFyeSBldmVuIHRob3VnaCB0aGUgc291cmNlIGNvZGUgaXMgbm90LgpXaGV0aGVyIHRoaXMgaXMgdHJ1ZSBpcyBlc3BlY2lhbGx5IHNpZ25pZmljYW50IGlmIHRoZSB3b3JrIGNhbiBiZQpsaW5rZWQgd2l0aG91dCB0aGUgTGlicmFyeSwgb3IgaWYgdGhlIHdvcmsgaXMgaXRzZWxmIGEgbGlicmFyeS4gIFRoZQp0aHJlc2hvbGQgZm9yIHRoaXMgdG8gYmUgdHJ1ZSBpcyBub3QgcHJlY2lzZWx5IGRlZmluZWQgYnkgbGF3LgoKICBJZiBzdWNoIGFuIG9iamVjdCBmaWxlIHVzZXMgb25seSBudW1lcmljYWwgcGFyYW1ldGVycywgZGF0YQpzdHJ1Y3R1cmUgbGF5b3V0cyBhbmQgYWNjZXNzb3JzLCBhbmQgc21hbGwgbWFjcm9zIGFuZCBzbWFsbCBpbmxpbmUKZnVuY3Rpb25zICh0ZW4gbGluZXMgb3IgbGVzcyBpbiBsZW5ndGgpLCB0aGVuIHRoZSB1c2Ugb2YgdGhlIG9iamVjdApmaWxlIGlzIHVucmVzdHJpY3RlZCwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGlzIGxlZ2FsbHkgYSBkZXJpdmF0aXZlCndvcmsuICAoRXhlY3V0YWJsZXMgY29udGFpbmluZyB0aGlzIG9iamVjdCBjb2RlIHBsdXMgcG9ydGlvbnMgb2YgdGhlCkxpYnJhcnkgd2lsbCBzdGlsbCBmYWxsIHVuZGVyIFNlY3Rpb24gNi4pCgogIE90aGVyd2lzZSwgaWYgdGhlIHdvcmsgaXMgYSBkZXJpdmF0aXZlIG9mIHRoZSBMaWJyYXJ5LCB5b3UgbWF5CmRpc3RyaWJ1dGUgdGhlIG9iamVjdCBjb2RlIGZvciB0aGUgd29yayB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbiA2LgpBbnkgZXhlY3V0YWJsZXMgY29udGFpbmluZyB0aGF0IHdvcmsgYWxzbyBmYWxsIHVuZGVyIFNlY3Rpb24gNiwKd2hldGhlciBvciBub3QgdGhleSBhcmUgbGlua2VkIGRpcmVjdGx5IHdpdGggdGhlIExpYnJhcnkgaXRzZWxmLgoMCiAgNi4gQXMgYW4gZXhjZXB0aW9uIHRvIHRoZSBTZWN0aW9ucyBhYm92ZSwgeW91IG1heSBhbHNvIGNvbWJpbmUgb3IKbGluayBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgTGlicmFyeSIgd2l0aCB0aGUgTGlicmFyeSB0byBwcm9kdWNlIGEKd29yayBjb250YWluaW5nIHBvcnRpb25zIG9mIHRoZSBMaWJyYXJ5LCBhbmQgZGlzdHJpYnV0ZSB0aGF0IHdvcmsKdW5kZXIgdGVybXMgb2YgeW91ciBjaG9pY2UsIHByb3ZpZGVkIHRoYXQgdGhlIHRlcm1zIHBlcm1pdAptb2RpZmljYXRpb24gb2YgdGhlIHdvcmsgZm9yIHRoZSBjdXN0b21lcidzIG93biB1c2UgYW5kIHJldmVyc2UKZW5naW5lZXJpbmcgZm9yIGRlYnVnZ2luZyBzdWNoIG1vZGlmaWNhdGlvbnMuCgogIFlvdSBtdXN0IGdpdmUgcHJvbWluZW50IG5vdGljZSB3aXRoIGVhY2ggY29weSBvZiB0aGUgd29yayB0aGF0IHRoZQpMaWJyYXJ5IGlzIHVzZWQgaW4gaXQgYW5kIHRoYXQgdGhlIExpYnJhcnkgYW5kIGl0cyB1c2UgYXJlIGNvdmVyZWQgYnkKdGhpcyBMaWNlbnNlLiAgWW91IG11c3Qgc3VwcGx5IGEgY29weSBvZiB0aGlzIExpY2Vuc2UuICBJZiB0aGUgd29yawpkdXJpbmcgZXhlY3V0aW9uIGRpc3BsYXlzIGNvcHlyaWdodCBub3RpY2VzLCB5b3UgbXVzdCBpbmNsdWRlIHRoZQpjb3B5cmlnaHQgbm90aWNlIGZvciB0aGUgTGlicmFyeSBhbW9uZyB0aGVtLCBhcyB3ZWxsIGFzIGEgcmVmZXJlbmNlCmRpcmVjdGluZyB0aGUgdXNlciB0byB0aGUgY29weSBvZiB0aGlzIExpY2Vuc2UuICBBbHNvLCB5b3UgbXVzdCBkbyBvbmUKb2YgdGhlc2UgdGhpbmdzOgoKICAgIGEpIEFjY29tcGFueSB0aGUgd29yayB3aXRoIHRoZSBjb21wbGV0ZSBjb3JyZXNwb25kaW5nCiAgICBtYWNoaW5lLXJlYWRhYmxlIHNvdXJjZSBjb2RlIGZvciB0aGUgTGlicmFyeSBpbmNsdWRpbmcgd2hhdGV2ZXIKICAgIGNoYW5nZXMgd2VyZSB1c2VkIGluIHRoZSB3b3JrICh3aGljaCBtdXN0IGJlIGRpc3RyaWJ1dGVkIHVuZGVyCiAgICBTZWN0aW9ucyAxIGFuZCAyIGFib3ZlKTsgYW5kLCBpZiB0aGUgd29yayBpcyBhbiBleGVjdXRhYmxlIGxpbmtlZAogICAgd2l0aCB0aGUgTGlicmFyeSwgd2l0aCB0aGUgY29tcGxldGUgbWFjaGluZS1yZWFkYWJsZSAid29yayB0aGF0CiAgICB1c2VzIHRoZSBMaWJyYXJ5IiwgYXMgb2JqZWN0IGNvZGUgYW5kL29yIHNvdXJjZSBjb2RlLCBzbyB0aGF0IHRoZQogICAgdXNlciBjYW4gbW9kaWZ5IHRoZSBMaWJyYXJ5IGFuZCB0aGVuIHJlbGluayB0byBwcm9kdWNlIGEgbW9kaWZpZWQKICAgIGV4ZWN1dGFibGUgY29udGFpbmluZyB0aGUgbW9kaWZpZWQgTGlicmFyeS4gIChJdCBpcyB1bmRlcnN0b29kCiAgICB0aGF0IHRoZSB1c2VyIHdobyBjaGFuZ2VzIHRoZSBjb250ZW50cyBvZiBkZWZpbml0aW9ucyBmaWxlcyBpbiB0aGUKICAgIExpYnJhcnkgd2lsbCBub3QgbmVjZXNzYXJpbHkgYmUgYWJsZSB0byByZWNvbXBpbGUgdGhlIGFwcGxpY2F0aW9uCiAgICB0byB1c2UgdGhlIG1vZGlmaWVkIGRlZmluaXRpb25zLikKCiAgICBiKSBVc2UgYSBzdWl0YWJsZSBzaGFyZWQgbGlicmFyeSBtZWNoYW5pc20gZm9yIGxpbmtpbmcgd2l0aCB0aGUKICAgIExpYnJhcnkuICBBIHN1aXRhYmxlIG1lY2hhbmlzbSBpcyBvbmUgdGhhdCAoMSkgdXNlcyBhdCBydW4gdGltZSBhCiAgICBjb3B5IG9mIHRoZSBsaWJyYXJ5IGFscmVhZHkgcHJlc2VudCBvbiB0aGUgdXNlcidzIGNvbXB1dGVyIHN5c3RlbSwKICAgIHJhdGhlciB0aGFuIGNvcHlpbmcgbGlicmFyeSBmdW5jdGlvbnMgaW50byB0aGUgZXhlY3V0YWJsZSwgYW5kICgyKQogICAgd2lsbCBvcGVyYXRlIHByb3Blcmx5IHdpdGggYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCBpZgogICAgdGhlIHVzZXIgaW5zdGFsbHMgb25lLCBhcyBsb25nIGFzIHRoZSBtb2RpZmllZCB2ZXJzaW9uIGlzCiAgICBpbnRlcmZhY2UtY29tcGF0aWJsZSB3aXRoIHRoZSB2ZXJzaW9uIHRoYXQgdGhlIHdvcmsgd2FzIG1hZGUgd2l0aC4KCiAgICBjKSBBY2NvbXBhbnkgdGhlIHdvcmsgd2l0aCBhIHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZvciBhdAogICAgbGVhc3QgdGhyZWUgeWVhcnMsIHRvIGdpdmUgdGhlIHNhbWUgdXNlciB0aGUgbWF0ZXJpYWxzCiAgICBzcGVjaWZpZWQgaW4gU3Vic2VjdGlvbiA2YSwgYWJvdmUsIGZvciBhIGNoYXJnZSBubyBtb3JlCiAgICB0aGFuIHRoZSBjb3N0IG9mIHBlcmZvcm1pbmcgdGhpcyBkaXN0cmlidXRpb24uCgogICAgZCkgSWYgZGlzdHJpYnV0aW9uIG9mIHRoZSB3b3JrIGlzIG1hZGUgYnkgb2ZmZXJpbmcgYWNjZXNzIHRvIGNvcHkKICAgIGZyb20gYSBkZXNpZ25hdGVkIHBsYWNlLCBvZmZlciBlcXVpdmFsZW50IGFjY2VzcyB0byBjb3B5IHRoZSBhYm92ZQogICAgc3BlY2lmaWVkIG1hdGVyaWFscyBmcm9tIHRoZSBzYW1lIHBsYWNlLgoKICAgIGUpIFZlcmlmeSB0aGF0IHRoZSB1c2VyIGhhcyBhbHJlYWR5IHJlY2VpdmVkIGEgY29weSBvZiB0aGVzZQogICAgbWF0ZXJpYWxzIG9yIHRoYXQgeW91IGhhdmUgYWxyZWFkeSBzZW50IHRoaXMgdXNlciBhIGNvcHkuCgogIEZvciBhbiBleGVjdXRhYmxlLCB0aGUgcmVxdWlyZWQgZm9ybSBvZiB0aGUgIndvcmsgdGhhdCB1c2VzIHRoZQpMaWJyYXJ5IiBtdXN0IGluY2x1ZGUgYW55IGRhdGEgYW5kIHV0aWxpdHkgcHJvZ3JhbXMgbmVlZGVkIGZvcgpyZXByb2R1Y2luZyB0aGUgZXhlY3V0YWJsZSBmcm9tIGl0LiAgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwKdGhlIG1hdGVyaWFscyB0byBiZSBkaXN0cmlidXRlZCBuZWVkIG5vdCBpbmNsdWRlIGFueXRoaW5nIHRoYXQgaXMKbm9ybWFsbHkgZGlzdHJpYnV0ZWQgKGluIGVpdGhlciBzb3VyY2Ugb3IgYmluYXJ5IGZvcm0pIHdpdGggdGhlIG1ham9yCmNvbXBvbmVudHMgKGNvbXBpbGVyLCBrZXJuZWwsIGFuZCBzbyBvbikgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0gb24Kd2hpY2ggdGhlIGV4ZWN1dGFibGUgcnVucywgdW5sZXNzIHRoYXQgY29tcG9uZW50IGl0c2VsZiBhY2NvbXBhbmllcwp0aGUgZXhlY3V0YWJsZS4KCiAgSXQgbWF5IGhhcHBlbiB0aGF0IHRoaXMgcmVxdWlyZW1lbnQgY29udHJhZGljdHMgdGhlIGxpY2Vuc2UKcmVzdHJpY3Rpb25zIG9mIG90aGVyIHByb3ByaWV0YXJ5IGxpYnJhcmllcyB0aGF0IGRvIG5vdCBub3JtYWxseQphY2NvbXBhbnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0uICBTdWNoIGEgY29udHJhZGljdGlvbiBtZWFucyB5b3UgY2Fubm90CnVzZSBib3RoIHRoZW0gYW5kIHRoZSBMaWJyYXJ5IHRvZ2V0aGVyIGluIGFuIGV4ZWN1dGFibGUgdGhhdCB5b3UKZGlzdHJpYnV0ZS4KDAogIDcuIFlvdSBtYXkgcGxhY2UgbGlicmFyeSBmYWNpbGl0aWVzIHRoYXQgYXJlIGEgd29yayBiYXNlZCBvbiB0aGUKTGlicmFyeSBzaWRlLWJ5LXNpZGUgaW4gYSBzaW5nbGUgbGlicmFyeSB0b2dldGhlciB3aXRoIG90aGVyIGxpYnJhcnkKZmFjaWxpdGllcyBub3QgY292ZXJlZCBieSB0aGlzIExpY2Vuc2UsIGFuZCBkaXN0cmlidXRlIHN1Y2ggYSBjb21iaW5lZApsaWJyYXJ5LCBwcm92aWRlZCB0aGF0IHRoZSBzZXBhcmF0ZSBkaXN0cmlidXRpb24gb2YgdGhlIHdvcmsgYmFzZWQgb24KdGhlIExpYnJhcnkgYW5kIG9mIHRoZSBvdGhlciBsaWJyYXJ5IGZhY2lsaXRpZXMgaXMgb3RoZXJ3aXNlCnBlcm1pdHRlZCwgYW5kIHByb3ZpZGVkIHRoYXQgeW91IGRvIHRoZXNlIHR3byB0aGluZ3M6CgogICAgYSkgQWNjb21wYW55IHRoZSBjb21iaW5lZCBsaWJyYXJ5IHdpdGggYSBjb3B5IG9mIHRoZSBzYW1lIHdvcmsKICAgIGJhc2VkIG9uIHRoZSBMaWJyYXJ5LCB1bmNvbWJpbmVkIHdpdGggYW55IG90aGVyIGxpYnJhcnkKICAgIGZhY2lsaXRpZXMuICBUaGlzIG11c3QgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQogICAgU2VjdGlvbnMgYWJvdmUuCgogICAgYikgR2l2ZSBwcm9taW5lbnQgbm90aWNlIHdpdGggdGhlIGNvbWJpbmVkIGxpYnJhcnkgb2YgdGhlIGZhY3QKICAgIHRoYXQgcGFydCBvZiBpdCBpcyBhIHdvcmsgYmFzZWQgb24gdGhlIExpYnJhcnksIGFuZCBleHBsYWluaW5nCiAgICB3aGVyZSB0byBmaW5kIHRoZSBhY2NvbXBhbnlpbmcgdW5jb21iaW5lZCBmb3JtIG9mIHRoZSBzYW1lIHdvcmsuCgogIDguIFlvdSBtYXkgbm90IGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSwgbGluayB3aXRoLCBvciBkaXN0cmlidXRlCnRoZSBMaWJyYXJ5IGV4Y2VwdCBhcyBleHByZXNzbHkgcHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQW55CmF0dGVtcHQgb3RoZXJ3aXNlIHRvIGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSwgbGluayB3aXRoLCBvcgpkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IGlzIHZvaWQsIGFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgdGVybWluYXRlIHlvdXIKcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZS4gIEhvd2V2ZXIsIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzLApvciByaWdodHMsIGZyb20geW91IHVuZGVyIHRoaXMgTGljZW5zZSB3aWxsIG5vdCBoYXZlIHRoZWlyIGxpY2Vuc2VzCnRlcm1pbmF0ZWQgc28gbG9uZyBhcyBzdWNoIHBhcnRpZXMgcmVtYWluIGluIGZ1bGwgY29tcGxpYW5jZS4KCiAgOS4gWW91IGFyZSBub3QgcmVxdWlyZWQgdG8gYWNjZXB0IHRoaXMgTGljZW5zZSwgc2luY2UgeW91IGhhdmUgbm90CnNpZ25lZCBpdC4gIEhvd2V2ZXIsIG5vdGhpbmcgZWxzZSBncmFudHMgeW91IHBlcm1pc3Npb24gdG8gbW9kaWZ5IG9yCmRpc3RyaWJ1dGUgdGhlIExpYnJhcnkgb3IgaXRzIGRlcml2YXRpdmUgd29ya3MuICBUaGVzZSBhY3Rpb25zIGFyZQpwcm9oaWJpdGVkIGJ5IGxhdyBpZiB5b3UgZG8gbm90IGFjY2VwdCB0aGlzIExpY2Vuc2UuICBUaGVyZWZvcmUsIGJ5Cm1vZGlmeWluZyBvciBkaXN0cmlidXRpbmcgdGhlIExpYnJhcnkgKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQpMaWJyYXJ5KSwgeW91IGluZGljYXRlIHlvdXIgYWNjZXB0YW5jZSBvZiB0aGlzIExpY2Vuc2UgdG8gZG8gc28sIGFuZAphbGwgaXRzIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpbmcgb3IgbW9kaWZ5aW5nCnRoZSBMaWJyYXJ5IG9yIHdvcmtzIGJhc2VkIG9uIGl0LgoKICAxMC4gRWFjaCB0aW1lIHlvdSByZWRpc3RyaWJ1dGUgdGhlIExpYnJhcnkgKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQpMaWJyYXJ5KSwgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5IHJlY2VpdmVzIGEgbGljZW5zZSBmcm9tIHRoZQpvcmlnaW5hbCBsaWNlbnNvciB0byBjb3B5LCBkaXN0cmlidXRlLCBsaW5rIHdpdGggb3IgbW9kaWZ5IHRoZSBMaWJyYXJ5CnN1YmplY3QgdG8gdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMuICBZb3UgbWF5IG5vdCBpbXBvc2UgYW55IGZ1cnRoZXIKcmVzdHJpY3Rpb25zIG9uIHRoZSByZWNpcGllbnRzJyBleGVyY2lzZSBvZiB0aGUgcmlnaHRzIGdyYW50ZWQgaGVyZWluLgpZb3UgYXJlIG5vdCByZXNwb25zaWJsZSBmb3IgZW5mb3JjaW5nIGNvbXBsaWFuY2UgYnkgdGhpcmQgcGFydGllcyB3aXRoCnRoaXMgTGljZW5zZS4KDAogIDExLiBJZiwgYXMgYSBjb25zZXF1ZW5jZSBvZiBhIGNvdXJ0IGp1ZGdtZW50IG9yIGFsbGVnYXRpb24gb2YgcGF0ZW50CmluZnJpbmdlbWVudCBvciBmb3IgYW55IG90aGVyIHJlYXNvbiAobm90IGxpbWl0ZWQgdG8gcGF0ZW50IGlzc3VlcyksCmNvbmRpdGlvbnMgYXJlIGltcG9zZWQgb24geW91ICh3aGV0aGVyIGJ5IGNvdXJ0IG9yZGVyLCBhZ3JlZW1lbnQgb3IKb3RoZXJ3aXNlKSB0aGF0IGNvbnRyYWRpY3QgdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLCB0aGV5IGRvIG5vdApleGN1c2UgeW91IGZyb20gdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLiAgSWYgeW91IGNhbm5vdApkaXN0cmlidXRlIHNvIGFzIHRvIHNhdGlzZnkgc2ltdWx0YW5lb3VzbHkgeW91ciBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzCkxpY2Vuc2UgYW5kIGFueSBvdGhlciBwZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5jZSB5b3UKbWF5IG5vdCBkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiBhIHBhdGVudApsaWNlbnNlIHdvdWxkIG5vdCBwZXJtaXQgcm95YWx0eS1mcmVlIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBMaWJyYXJ5IGJ5CmFsbCB0aG9zZSB3aG8gcmVjZWl2ZSBjb3BpZXMgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHlvdSwgdGhlbgp0aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCBpdCBhbmQgdGhpcyBMaWNlbnNlIHdvdWxkIGJlIHRvCnJlZnJhaW4gZW50aXJlbHkgZnJvbSBkaXN0cmlidXRpb24gb2YgdGhlIExpYnJhcnkuCgpJZiBhbnkgcG9ydGlvbiBvZiB0aGlzIHNlY3Rpb24gaXMgaGVsZCBpbnZhbGlkIG9yIHVuZW5mb3JjZWFibGUgdW5kZXIgYW55CnBhcnRpY3VsYXIgY2lyY3Vtc3RhbmNlLCB0aGUgYmFsYW5jZSBvZiB0aGUgc2VjdGlvbiBpcyBpbnRlbmRlZCB0byBhcHBseSwKYW5kIHRoZSBzZWN0aW9uIGFzIGEgd2hvbGUgaXMgaW50ZW5kZWQgdG8gYXBwbHkgaW4gb3RoZXIgY2lyY3Vtc3RhbmNlcy4KCkl0IGlzIG5vdCB0aGUgcHVycG9zZSBvZiB0aGlzIHNlY3Rpb24gdG8gaW5kdWNlIHlvdSB0byBpbmZyaW5nZSBhbnkKcGF0ZW50cyBvciBvdGhlciBwcm9wZXJ0eSByaWdodCBjbGFpbXMgb3IgdG8gY29udGVzdCB2YWxpZGl0eSBvZiBhbnkKc3VjaCBjbGFpbXM7IHRoaXMgc2VjdGlvbiBoYXMgdGhlIHNvbGUgcHVycG9zZSBvZiBwcm90ZWN0aW5nIHRoZQppbnRlZ3JpdHkgb2YgdGhlIGZyZWUgc29mdHdhcmUgZGlzdHJpYnV0aW9uIHN5c3RlbSB3aGljaCBpcwppbXBsZW1lbnRlZCBieSBwdWJsaWMgbGljZW5zZSBwcmFjdGljZXMuICBNYW55IHBlb3BsZSBoYXZlIG1hZGUKZ2VuZXJvdXMgY29udHJpYnV0aW9ucyB0byB0aGUgd2lkZSByYW5nZSBvZiBzb2Z0d2FyZSBkaXN0cmlidXRlZAp0aHJvdWdoIHRoYXQgc3lzdGVtIGluIHJlbGlhbmNlIG9uIGNvbnNpc3RlbnQgYXBwbGljYXRpb24gb2YgdGhhdApzeXN0ZW07IGl0IGlzIHVwIHRvIHRoZSBhdXRob3IvZG9ub3IgdG8gZGVjaWRlIGlmIGhlIG9yIHNoZSBpcyB3aWxsaW5nCnRvIGRpc3RyaWJ1dGUgc29mdHdhcmUgdGhyb3VnaCBhbnkgb3RoZXIgc3lzdGVtIGFuZCBhIGxpY2Vuc2VlIGNhbm5vdAppbXBvc2UgdGhhdCBjaG9pY2UuCgpUaGlzIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8gbWFrZSB0aG9yb3VnaGx5IGNsZWFyIHdoYXQgaXMgYmVsaWV2ZWQgdG8KYmUgYSBjb25zZXF1ZW5jZSBvZiB0aGUgcmVzdCBvZiB0aGlzIExpY2Vuc2UuCgogIDEyLiBJZiB0aGUgZGlzdHJpYnV0aW9uIGFuZC9vciB1c2Ugb2YgdGhlIExpYnJhcnkgaXMgcmVzdHJpY3RlZCBpbgpjZXJ0YWluIGNvdW50cmllcyBlaXRoZXIgYnkgcGF0ZW50cyBvciBieSBjb3B5cmlnaHRlZCBpbnRlcmZhY2VzLCB0aGUKb3JpZ2luYWwgY29weXJpZ2h0IGhvbGRlciB3aG8gcGxhY2VzIHRoZSBMaWJyYXJ5IHVuZGVyIHRoaXMgTGljZW5zZSBtYXkgYWRkCmFuIGV4cGxpY2l0IGdlb2dyYXBoaWNhbCBkaXN0cmlidXRpb24gbGltaXRhdGlvbiBleGNsdWRpbmcgdGhvc2UgY291bnRyaWVzLApzbyB0aGF0IGRpc3RyaWJ1dGlvbiBpcyBwZXJtaXR0ZWQgb25seSBpbiBvciBhbW9uZyBjb3VudHJpZXMgbm90IHRodXMKZXhjbHVkZWQuICBJbiBzdWNoIGNhc2UsIHRoaXMgTGljZW5zZSBpbmNvcnBvcmF0ZXMgdGhlIGxpbWl0YXRpb24gYXMgaWYKd3JpdHRlbiBpbiB0aGUgYm9keSBvZiB0aGlzIExpY2Vuc2UuCgogIDEzLiBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldwp2ZXJzaW9ucyBvZiB0aGUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuClN1Y2ggbmV3IHZlcnNpb25zIHdpbGwgYmUgc2ltaWxhciBpbiBzcGlyaXQgdG8gdGhlIHByZXNlbnQgdmVyc2lvbiwKYnV0IG1heSBkaWZmZXIgaW4gZGV0YWlsIHRvIGFkZHJlc3MgbmV3IHByb2JsZW1zIG9yIGNvbmNlcm5zLgoKRWFjaCB2ZXJzaW9uIGlzIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuICBJZiB0aGUgTGlicmFyeQpzcGVjaWZpZXMgYSB2ZXJzaW9uIG51bWJlciBvZiB0aGlzIExpY2Vuc2Ugd2hpY2ggYXBwbGllcyB0byBpdCBhbmQKImFueSBsYXRlciB2ZXJzaW9uIiwgeW91IGhhdmUgdGhlIG9wdGlvbiBvZiBmb2xsb3dpbmcgdGhlIHRlcm1zIGFuZApjb25kaXRpb25zIGVpdGhlciBvZiB0aGF0IHZlcnNpb24gb3Igb2YgYW55IGxhdGVyIHZlcnNpb24gcHVibGlzaGVkIGJ5CnRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uICBJZiB0aGUgTGlicmFyeSBkb2VzIG5vdCBzcGVjaWZ5IGEKbGljZW5zZSB2ZXJzaW9uIG51bWJlciwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQgYnkKdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KDAogIDE0LiBJZiB5b3Ugd2lzaCB0byBpbmNvcnBvcmF0ZSBwYXJ0cyBvZiB0aGUgTGlicmFyeSBpbnRvIG90aGVyIGZyZWUKcHJvZ3JhbXMgd2hvc2UgZGlzdHJpYnV0aW9uIGNvbmRpdGlvbnMgYXJlIGluY29tcGF0aWJsZSB3aXRoIHRoZXNlLAp3cml0ZSB0byB0aGUgYXV0aG9yIHRvIGFzayBmb3IgcGVybWlzc2lvbi4gIEZvciBzb2Z0d2FyZSB3aGljaCBpcwpjb3B5cmlnaHRlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3cml0ZSB0byB0aGUgRnJlZQpTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3ZSBzb21ldGltZXMgbWFrZSBleGNlcHRpb25zIGZvciB0aGlzLiAgT3VyCmRlY2lzaW9uIHdpbGwgYmUgZ3VpZGVkIGJ5IHRoZSB0d28gZ29hbHMgb2YgcHJlc2VydmluZyB0aGUgZnJlZSBzdGF0dXMKb2YgYWxsIGRlcml2YXRpdmVzIG9mIG91ciBmcmVlIHNvZnR3YXJlIGFuZCBvZiBwcm9tb3RpbmcgdGhlIHNoYXJpbmcKYW5kIHJldXNlIG9mIHNvZnR3YXJlIGdlbmVyYWxseS4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTyBXQVJSQU5UWQoKICAxNS4gQkVDQVVTRSBUSEUgTElCUkFSWSBJUyBMSUNFTlNFRCBGUkVFIE9GIENIQVJHRSwgVEhFUkUgSVMgTk8KV0FSUkFOVFkgRk9SIFRIRSBMSUJSQVJZLCBUTyBUSEUgRVhURU5UIFBFUk1JVFRFRCBCWSBBUFBMSUNBQkxFIExBVy4KRVhDRVBUIFdIRU4gT1RIRVJXSVNFIFNUQVRFRCBJTiBXUklUSU5HIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQvT1IKT1RIRVIgUEFSVElFUyBQUk9WSURFIFRIRSBMSUJSQVJZICJBUyBJUyIgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKS0lORCwgRUlUSEVSIEVYUFJFU1NFRCBPUiBJTVBMSUVELCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCklNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgpQVVJQT1NFLiAgVEhFIEVOVElSRSBSSVNLIEFTIFRPIFRIRSBRVUFMSVRZIEFORCBQRVJGT1JNQU5DRSBPRiBUSEUKTElCUkFSWSBJUyBXSVRIIFlPVS4gIFNIT1VMRCBUSEUgTElCUkFSWSBQUk9WRSBERUZFQ1RJVkUsIFlPVSBBU1NVTUUKVEhFIENPU1QgT0YgQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsIFJFUEFJUiBPUiBDT1JSRUNUSU9OLgoKICAxNi4gSU4gTk8gRVZFTlQgVU5MRVNTIFJFUVVJUkVEIEJZIEFQUExJQ0FCTEUgTEFXIE9SIEFHUkVFRCBUTyBJTgpXUklUSU5HIFdJTEwgQU5ZIENPUFlSSUdIVCBIT0xERVIsIE9SIEFOWSBPVEhFUiBQQVJUWSBXSE8gTUFZIE1PRElGWQpBTkQvT1IgUkVESVNUUklCVVRFIFRIRSBMSUJSQVJZIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVQpGT1IgREFNQUdFUywgSU5DTFVESU5HIEFOWSBHRU5FUkFMLCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SCkNPTlNFUVVFTlRJQUwgREFNQUdFUyBBUklTSU5HIE9VVCBPRiBUSEUgVVNFIE9SIElOQUJJTElUWSBUTyBVU0UgVEhFCkxJQlJBUlkgKElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gTE9TUyBPRiBEQVRBIE9SIERBVEEgQkVJTkcKUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJTkVEIEJZIFlPVSBPUiBUSElSRCBQQVJUSUVTIE9SIEEKRkFJTFVSRSBPRiBUSEUgTElCUkFSWSBUTyBPUEVSQVRFIFdJVEggQU5ZIE9USEVSIFNPRlRXQVJFKSwgRVZFTiBJRgpTVUNIIEhPTERFUiBPUiBPVEhFUiBQQVJUWSBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICkRBTUFHRVMuCgogICAgICAgICAgICAgICAgICAgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKDAogICAgICAgICAgIEhvdyB0byBBcHBseSBUaGVzZSBUZXJtcyB0byBZb3VyIE5ldyBMaWJyYXJpZXMKCiAgSWYgeW91IGRldmVsb3AgYSBuZXcgbGlicmFyeSwgYW5kIHlvdSB3YW50IGl0IHRvIGJlIG9mIHRoZSBncmVhdGVzdApwb3NzaWJsZSB1c2UgdG8gdGhlIHB1YmxpYywgd2UgcmVjb21tZW5kIG1ha2luZyBpdCBmcmVlIHNvZnR3YXJlIHRoYXQKZXZlcnlvbmUgY2FuIHJlZGlzdHJpYnV0ZSBhbmQgY2hhbmdlLiAgWW91IGNhbiBkbyBzbyBieSBwZXJtaXR0aW5nCnJlZGlzdHJpYnV0aW9uIHVuZGVyIHRoZXNlIHRlcm1zIChvciwgYWx0ZXJuYXRpdmVseSwgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQpvcmRpbmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKS4KCiAgVG8gYXBwbHkgdGhlc2UgdGVybXMsIGF0dGFjaCB0aGUgZm9sbG93aW5nIG5vdGljZXMgdG8gdGhlIGxpYnJhcnkuICBJdCBpcwpzYWZlc3QgdG8gYXR0YWNoIHRoZW0gdG8gdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGZpbGUgdG8gbW9zdCBlZmZlY3RpdmVseQpjb252ZXkgdGhlIGV4Y2x1c2lvbiBvZiB3YXJyYW50eTsgYW5kIGVhY2ggZmlsZSBzaG91bGQgaGF2ZSBhdCBsZWFzdCB0aGUKImNvcHlyaWdodCIgbGluZSBhbmQgYSBwb2ludGVyIHRvIHdoZXJlIHRoZSBmdWxsIG5vdGljZSBpcyBmb3VuZC4KCiAgICA8b25lIGxpbmUgdG8gZ2l2ZSB0aGUgbGlicmFyeSdzIG5hbWUgYW5kIGEgYnJpZWYgaWRlYSBvZiB3aGF0IGl0IGRvZXMuPgogICAgQ29weXJpZ2h0IChDKSA8eWVhcj4gIDxuYW1lIG9mIGF1dGhvcj4KCiAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgoKICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgoKICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQoKQWxzbyBhZGQgaW5mb3JtYXRpb24gb24gaG93IHRvIGNvbnRhY3QgeW91IGJ5IGVsZWN0cm9uaWMgYW5kIHBhcGVyIG1haWwuCgpZb3Ugc2hvdWxkIGFsc28gZ2V0IHlvdXIgZW1wbG95ZXIgKGlmIHlvdSB3b3JrIGFzIGEgcHJvZ3JhbW1lcikgb3IgeW91cgpzY2hvb2wsIGlmIGFueSwgdG8gc2lnbiBhICJjb3B5cmlnaHQgZGlzY2xhaW1lciIgZm9yIHRoZSBsaWJyYXJ5LCBpZgpuZWNlc3NhcnkuICBIZXJlIGlzIGEgc2FtcGxlOyBhbHRlciB0aGUgbmFtZXM6CgogIFlveW9keW5lLCBJbmMuLCBoZXJlYnkgZGlzY2xhaW1zIGFsbCBjb3B5cmlnaHQgaW50ZXJlc3QgaW4gdGhlCiAgbGlicmFyeSBgRnJvYicgKGEgbGlicmFyeSBmb3IgdHdlYWtpbmcga25vYnMpIHdyaXR0ZW4gYnkgSmFtZXMgUmFuZG9tIEhhY2tlci4KCiAgPHNpZ25hdHVyZSBvZiBUeSBDb29uPiwgMSBBcHJpbCAxOTkwCiAgVHkgQ29vbiwgUHJlc2lkZW50IG9mIFZpY2UKClRoYXQncyBhbGwgdGhlcmUgaXMgdG8gaXQhCg== + + + declared license of 'chardet' + LGPL + + + pkg:pypi/chardet@5.2.0 + + + https://chardet.readthedocs.io/ + from packaging metadata Project-URL: Documentation + + + https://github.com/chardet/chardet/issues + from packaging metadata Project-URL: Issue Tracker + + + https://github.com/chardet/chardet + from packaging metadata Project-URL: GitHub Project + + + https://github.com/chardet/chardet + from packaging metadata: Home-page + + + cryptography 43.0.1 @@ -490,250 +236,6 @@ SPDX-License-Identifier: BSD-2-Clause License :: OSI Approved :: BSD License - - declared license file: LICENSE - This software is made available under the terms of *either* of the licenses -found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made -under the terms of *both* these licenses. - - - - declared license file: LICENSE.APACHE - - Apache License - Version 2.0, January 2004 - https://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - https://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - - declared license file: LICENSE.BSD - Copyright (c) Individual contributors. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. Neither the name of PyCA Cryptography nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - @@ -747,40 +249,11 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. declared license file: AUTHORS - Stefan Kögl <stefan@skoegl.net> -Alexander Shorin <kxepal@gmail.com> -Christopher J. White <chris@grierwhite.com> - + U3RlZmFuIEvDtmdsIDxzdGVmYW5Ac2tvZWdsLm5ldD4KQWxleGFuZGVyIFNob3JpbiA8a3hlcGFsQGdtYWlsLmNvbT4KQ2hyaXN0b3BoZXIgSi4gV2hpdGUgPGNocmlzQGdyaWVyd2hpdGUuY29tPgo= declared license file: LICENSE.txt - Copyright (c) 2011 Stefan Kögl <stefan@skoegl.net> -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - + Q29weXJpZ2h0IChjKSAyMDExIFN0ZWZhbiBLw7ZnbCA8c3RlZmFuQHNrb2VnbC5uZXQ+CkFsbCByaWdodHMgcmVzZXJ2ZWQuCgpSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCmFyZSBtZXQ6CgoxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCjIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KMy4gVGhlIG5hbWUgb2YgdGhlIGF1dGhvciBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzCiAgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgoKVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IKSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUwpPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELgpJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsCklOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVApOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCkRBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQpUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCihJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgpUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgoK declared license of 'jsonpointer' @@ -805,458 +278,23 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. declared license file: AUTHORS.rst - The following organizations or individuals have contributed to this code: - -- Ayan Sinha Mahapatra @AyanSinhaMahapatra -- Carmen Bianca Bakker @carmenbianca -- Chin-Yeung Li @chinyeungli -- Dennis Clark @DennisClark -- John Horan @johnmhoran -- Jono Yang @JonoYang -- Max Mehl @mxmehl -- nexB Inc. @nexB -- Peter Kolbus @pkolbus -- Philippe Ombredanne @pombredanne -- Sebastian Schuberth @sschuberth -- Steven Esser @majurg -- Thomas Druez @tdruez - + VGhlIGZvbGxvd2luZyBvcmdhbml6YXRpb25zIG9yIGluZGl2aWR1YWxzIGhhdmUgY29udHJpYnV0ZWQgdG8gdGhpcyBjb2RlOgoKLSBBeWFuIFNpbmhhIE1haGFwYXRyYSBAQXlhblNpbmhhTWFoYXBhdHJhCi0gQ2FybWVuIEJpYW5jYSBCYWtrZXIgQGNhcm1lbmJpYW5jYQotIENoaW4tWWV1bmcgTGkgQGNoaW55ZXVuZ2xpCi0gRGVubmlzIENsYXJrIEBEZW5uaXNDbGFyawotIEpvaG4gSG9yYW4gQGpvaG5taG9yYW4KLSBKb25vIFlhbmcgQEpvbm9ZYW5nCi0gTWF4IE1laGwgQG14bWVobAotIG5leEIgSW5jLiBAbmV4QgotIFBldGVyIEtvbGJ1cyBAcGtvbGJ1cwotIFBoaWxpcHBlIE9tYnJlZGFubmUgQHBvbWJyZWRhbm5lCi0gU2ViYXN0aWFuIFNjaHViZXJ0aCBAc3NjaHViZXJ0aAotIFN0ZXZlbiBFc3NlciBAbWFqdXJnCi0gVGhvbWFzIERydWV6IEB0ZHJ1ZXoK declared license file: CHANGELOG.rst - Changelog -========= - -v30.3.0 - 2024-03-18 --------------------- - -This is a minor release without API changes: - -- Use latest skeleton -- Update license list to latest ScanCode and SPDX 3.23 -- Drop support for Python 3.7 - -v30.2.0 - 2023-11-29 --------------------- - -This is a minor release without API changes: - -- Use latest skeleton -- Update license list to latest ScanCode and SPDX 3.22 -- Add Python 3.12 support in CI - - -v30.1.1 - 2023-01-16 ----------------------- - -This is a minor dot release without API changes - -- Use latest skeleton -- Update license list to latest ScanCode and SPDX 3.20 - - -v30.1.0 - 2023-01-16 ----------------------- - -This is a minor release without API changes - -- Use latest skeleton (and updated configure script) -- Update license list to latest ScanCode and SPDX 3.19 -- Use correct syntax for python_require -- Drop using Travis and Appveyor -- Drop support for Python 3.7 and add Python 3.11 in CI - - -v30.0.0 - 2022-05-10 ----------------------- - -This is a minor release with API changes - -- Use latest skeleton (and updated configure script) -- Drop using calver -- Improve error checking when combining licenses - - - -v21.6.14 - 2021-06-14 ----------------------- - -Added -~~~~~ - -- Switch to calver for package versioning to better convey the currency of the - bundled data. - -- Include https://scancode-licensedb.aboutcode.org/ licenses list with - ScanCode (v21.6.7) and SPDX licenses (v3.13) keys. Add new functions to - create Licensing using these licenses as LicenseSymbol. - -- Add new License.dedup() method to deduplicate and simplify license expressions - without over simplifying. - -- Add new License.validate() method to return a new ExpressionInfo object with - details on a license expression validation. - - -Changed -~~~~~~~ -- Drop support for Python 2. -- Adopt the project skeleton from https://github.com/nexB/skeleton - and its new configure script - - -v1.2 - 2019-11-14 ------------------- -Added -~~~~~ -- Add ability to render WITH expression wrapped in parenthesis - -Fixes -~~~~~ -- Fix anomalous backslashes in strings - -Changed -~~~~~~~ -- Update the thirdparty directory structure. - - -v1.0 - 2019-10-16 ------------------- -Added -~~~~~ -- New version of boolean.py library -- Add ability to leave license expressions unsorted when simplifying - -Changed -~~~~~~~ -- updated travis CI settings - - -v0.999 - 2019-04-29 --------------------- -- Initial release -- license-expression is small utility library to parse, compare and - simplify and normalize license expressions. - - + Q2hhbmdlbG9nCj09PT09PT09PQoKdjMwLjMuMCAtIDIwMjQtMDMtMTgKLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRoaXMgaXMgYSBtaW5vciByZWxlYXNlIHdpdGhvdXQgQVBJIGNoYW5nZXM6CgotIFVzZSBsYXRlc3Qgc2tlbGV0b24KLSBVcGRhdGUgbGljZW5zZSBsaXN0IHRvIGxhdGVzdCBTY2FuQ29kZSBhbmQgU1BEWCAzLjIzCi0gRHJvcCBzdXBwb3J0IGZvciBQeXRob24gMy43Cgp2MzAuMi4wIC0gMjAyMy0xMS0yOQotLS0tLS0tLS0tLS0tLS0tLS0tLQoKVGhpcyBpcyBhIG1pbm9yIHJlbGVhc2Ugd2l0aG91dCBBUEkgY2hhbmdlczoKCi0gVXNlIGxhdGVzdCBza2VsZXRvbgotIFVwZGF0ZSBsaWNlbnNlIGxpc3QgdG8gbGF0ZXN0IFNjYW5Db2RlIGFuZCBTUERYIDMuMjIKLSBBZGQgUHl0aG9uIDMuMTIgc3VwcG9ydCBpbiBDSQoKCnYzMC4xLjEgLSAyMDIzLTAxLTE2Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRoaXMgaXMgYSBtaW5vciBkb3QgcmVsZWFzZSB3aXRob3V0IEFQSSBjaGFuZ2VzCgotIFVzZSBsYXRlc3Qgc2tlbGV0b24KLSBVcGRhdGUgbGljZW5zZSBsaXN0IHRvIGxhdGVzdCBTY2FuQ29kZSBhbmQgU1BEWCAzLjIwCgoKdjMwLjEuMCAtIDIwMjMtMDEtMTYKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKVGhpcyBpcyBhIG1pbm9yIHJlbGVhc2Ugd2l0aG91dCBBUEkgY2hhbmdlcwoKLSBVc2UgbGF0ZXN0IHNrZWxldG9uIChhbmQgdXBkYXRlZCBjb25maWd1cmUgc2NyaXB0KQotIFVwZGF0ZSBsaWNlbnNlIGxpc3QgdG8gbGF0ZXN0IFNjYW5Db2RlIGFuZCBTUERYIDMuMTkKLSBVc2UgY29ycmVjdCBzeW50YXggZm9yIHB5dGhvbl9yZXF1aXJlCi0gRHJvcCB1c2luZyBUcmF2aXMgYW5kIEFwcHZleW9yCi0gRHJvcCBzdXBwb3J0IGZvciBQeXRob24gMy43IGFuZCBhZGQgUHl0aG9uIDMuMTEgaW4gQ0kKCgp2MzAuMC4wIC0gMjAyMi0wNS0xMAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpUaGlzIGlzIGEgbWlub3IgcmVsZWFzZSB3aXRoIEFQSSBjaGFuZ2VzCgotIFVzZSBsYXRlc3Qgc2tlbGV0b24gKGFuZCB1cGRhdGVkIGNvbmZpZ3VyZSBzY3JpcHQpCi0gRHJvcCB1c2luZyBjYWx2ZXIKLSBJbXByb3ZlIGVycm9yIGNoZWNraW5nIHdoZW4gY29tYmluaW5nIGxpY2Vuc2VzCgoKCnYyMS42LjE0IC0gMjAyMS0wNi0xNAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpBZGRlZAp+fn5+fgoKLSBTd2l0Y2ggdG8gY2FsdmVyIGZvciBwYWNrYWdlIHZlcnNpb25pbmcgdG8gYmV0dGVyIGNvbnZleSB0aGUgY3VycmVuY3kgb2YgdGhlCiAgYnVuZGxlZCBkYXRhLgoKLSBJbmNsdWRlIGh0dHBzOi8vc2NhbmNvZGUtbGljZW5zZWRiLmFib3V0Y29kZS5vcmcvIGxpY2Vuc2VzIGxpc3Qgd2l0aAogIFNjYW5Db2RlICh2MjEuNi43KSBhbmQgU1BEWCBsaWNlbnNlcyAodjMuMTMpIGtleXMuIEFkZCBuZXcgZnVuY3Rpb25zIHRvCiAgY3JlYXRlIExpY2Vuc2luZyB1c2luZyB0aGVzZSBsaWNlbnNlcyBhcyBMaWNlbnNlU3ltYm9sLgoKLSBBZGQgbmV3IExpY2Vuc2UuZGVkdXAoKSBtZXRob2QgdG8gZGVkdXBsaWNhdGUgYW5kIHNpbXBsaWZ5IGxpY2Vuc2UgZXhwcmVzc2lvbnMKICB3aXRob3V0IG92ZXIgc2ltcGxpZnlpbmcuCgotIEFkZCBuZXcgTGljZW5zZS52YWxpZGF0ZSgpIG1ldGhvZCB0byByZXR1cm4gYSBuZXcgRXhwcmVzc2lvbkluZm8gb2JqZWN0IHdpdGgKICBkZXRhaWxzIG9uIGEgbGljZW5zZSBleHByZXNzaW9uIHZhbGlkYXRpb24uCgoKQ2hhbmdlZAp+fn5+fn5+Ci0gRHJvcCBzdXBwb3J0IGZvciBQeXRob24gMi4KLSBBZG9wdCB0aGUgcHJvamVjdCBza2VsZXRvbiBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9uZXhCL3NrZWxldG9uCiAgYW5kIGl0cyBuZXcgY29uZmlndXJlIHNjcmlwdAoKCnYxLjIgLSAyMDE5LTExLTE0Ci0tLS0tLS0tLS0tLS0tLS0tLQpBZGRlZAp+fn5+fgotIEFkZCBhYmlsaXR5IHRvIHJlbmRlciBXSVRIIGV4cHJlc3Npb24gd3JhcHBlZCBpbiBwYXJlbnRoZXNpcwoKRml4ZXMKfn5+fn4KLSBGaXggYW5vbWFsb3VzIGJhY2tzbGFzaGVzIGluIHN0cmluZ3MKCkNoYW5nZWQKfn5+fn5+fgotIFVwZGF0ZSB0aGUgdGhpcmRwYXJ0eSBkaXJlY3Rvcnkgc3RydWN0dXJlLgoKCnYxLjAgLSAyMDE5LTEwLTE2Ci0tLS0tLS0tLS0tLS0tLS0tLQpBZGRlZAp+fn5+fgotIE5ldyB2ZXJzaW9uIG9mIGJvb2xlYW4ucHkgbGlicmFyeQotIEFkZCBhYmlsaXR5IHRvIGxlYXZlIGxpY2Vuc2UgZXhwcmVzc2lvbnMgdW5zb3J0ZWQgd2hlbiBzaW1wbGlmeWluZwoKQ2hhbmdlZAp+fn5+fn5+Ci0gdXBkYXRlZCB0cmF2aXMgQ0kgc2V0dGluZ3MKCgp2MC45OTkgLSAyMDE5LTA0LTI5Ci0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gSW5pdGlhbCByZWxlYXNlCi0gbGljZW5zZS1leHByZXNzaW9uIGlzIHNtYWxsIHV0aWxpdHkgbGlicmFyeSB0byBwYXJzZSwgY29tcGFyZSBhbmQKICBzaW1wbGlmeSBhbmQgbm9ybWFsaXplIGxpY2Vuc2UgZXhwcmVzc2lvbnMuCgo= declared license file: CODE_OF_CONDUCT.rst - Contributor Covenant Code of Conduct -==================================== - -Our Pledge ----------- - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our -project and our community a harassment-free experience for everyone, -regardless of age, body size, disability, ethnicity, gender identity and -expression, level of experience, education, socio-economic status, -nationality, personal appearance, race, religion, or sexual identity and -orientation. - -Our Standards -------------- - -Examples of behavior that contributes to creating a positive environment -include: - -- Using welcoming and inclusive language -- Being respectful of differing viewpoints and experiences -- Gracefully accepting constructive criticism -- Focusing on what is best for the community -- Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -- The use of sexualized language or imagery and unwelcome sexual - attention or advances -- Trolling, insulting/derogatory comments, and personal or political - attacks -- Public or private harassment -- Publishing others’ private information, such as a physical or - electronic address, without explicit permission -- Other conduct which could reasonably be considered inappropriate in a - professional setting - -Our Responsibilities --------------------- - -Project maintainers are responsible for clarifying the standards of -acceptable behavior and are expected to take appropriate and fair -corrective action in response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, -or reject comments, commits, code, wiki edits, issues, and other -contributions that are not aligned to this Code of Conduct, or to ban -temporarily or permanently any contributor for other behaviors that they -deem inappropriate, threatening, offensive, or harmful. - -Scope ------ - -This Code of Conduct applies both within project spaces and in public -spaces when an individual is representing the project or its community. -Examples of representing a project or community include using an -official project e-mail address, posting via an official social media -account, or acting as an appointed representative at an online or -offline event. Representation of a project may be further defined and -clarified by project maintainers. - -Enforcement ------------ - -Instances of abusive, harassing, or otherwise unacceptable behavior may -be reported by contacting the project team at pombredanne@gmail.com -or on the Gitter chat channel at https://gitter.im/aboutcode-org/discuss . -All complaints will be reviewed and investigated and will result in a -response that is deemed necessary and appropriate to the circumstances. -The project team is obligated to maintain confidentiality with regard to -the reporter of an incident. Further details of specific enforcement -policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in -good faith may face temporary or permanent repercussions as determined -by other members of the project’s leadership. - -Attribution ------------ - -This Code of Conduct is adapted from the `Contributor Covenant`_ , -version 1.4, available at -https://www.contributor-covenant.org/version/1/4/code-of-conduct.html - -.. _Contributor Covenant: https://www.contributor-covenant.org - + Q29udHJpYnV0b3IgQ292ZW5hbnQgQ29kZSBvZiBDb25kdWN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKT3VyIFBsZWRnZQotLS0tLS0tLS0tCgpJbiB0aGUgaW50ZXJlc3Qgb2YgZm9zdGVyaW5nIGFuIG9wZW4gYW5kIHdlbGNvbWluZyBlbnZpcm9ubWVudCwgd2UgYXMKY29udHJpYnV0b3JzIGFuZCBtYWludGFpbmVycyBwbGVkZ2UgdG8gbWFraW5nIHBhcnRpY2lwYXRpb24gaW4gb3VyCnByb2plY3QgYW5kIG91ciBjb21tdW5pdHkgYSBoYXJhc3NtZW50LWZyZWUgZXhwZXJpZW5jZSBmb3IgZXZlcnlvbmUsCnJlZ2FyZGxlc3Mgb2YgYWdlLCBib2R5IHNpemUsIGRpc2FiaWxpdHksIGV0aG5pY2l0eSwgZ2VuZGVyIGlkZW50aXR5IGFuZApleHByZXNzaW9uLCBsZXZlbCBvZiBleHBlcmllbmNlLCBlZHVjYXRpb24sIHNvY2lvLWVjb25vbWljIHN0YXR1cywKbmF0aW9uYWxpdHksIHBlcnNvbmFsIGFwcGVhcmFuY2UsIHJhY2UsIHJlbGlnaW9uLCBvciBzZXh1YWwgaWRlbnRpdHkgYW5kCm9yaWVudGF0aW9uLgoKT3VyIFN0YW5kYXJkcwotLS0tLS0tLS0tLS0tCgpFeGFtcGxlcyBvZiBiZWhhdmlvciB0aGF0IGNvbnRyaWJ1dGVzIHRvIGNyZWF0aW5nIGEgcG9zaXRpdmUgZW52aXJvbm1lbnQKaW5jbHVkZToKCi0gIFVzaW5nIHdlbGNvbWluZyBhbmQgaW5jbHVzaXZlIGxhbmd1YWdlCi0gIEJlaW5nIHJlc3BlY3RmdWwgb2YgZGlmZmVyaW5nIHZpZXdwb2ludHMgYW5kIGV4cGVyaWVuY2VzCi0gIEdyYWNlZnVsbHkgYWNjZXB0aW5nIGNvbnN0cnVjdGl2ZSBjcml0aWNpc20KLSAgRm9jdXNpbmcgb24gd2hhdCBpcyBiZXN0IGZvciB0aGUgY29tbXVuaXR5Ci0gIFNob3dpbmcgZW1wYXRoeSB0b3dhcmRzIG90aGVyIGNvbW11bml0eSBtZW1iZXJzCgpFeGFtcGxlcyBvZiB1bmFjY2VwdGFibGUgYmVoYXZpb3IgYnkgcGFydGljaXBhbnRzIGluY2x1ZGU6CgotICBUaGUgdXNlIG9mIHNleHVhbGl6ZWQgbGFuZ3VhZ2Ugb3IgaW1hZ2VyeSBhbmQgdW53ZWxjb21lIHNleHVhbAogICBhdHRlbnRpb24gb3IgYWR2YW5jZXMKLSAgVHJvbGxpbmcsIGluc3VsdGluZy9kZXJvZ2F0b3J5IGNvbW1lbnRzLCBhbmQgcGVyc29uYWwgb3IgcG9saXRpY2FsCiAgIGF0dGFja3MKLSAgUHVibGljIG9yIHByaXZhdGUgaGFyYXNzbWVudAotICBQdWJsaXNoaW5nIG90aGVyc+KAmSBwcml2YXRlIGluZm9ybWF0aW9uLCBzdWNoIGFzIGEgcGh5c2ljYWwgb3IKICAgZWxlY3Ryb25pYyBhZGRyZXNzLCB3aXRob3V0IGV4cGxpY2l0IHBlcm1pc3Npb24KLSAgT3RoZXIgY29uZHVjdCB3aGljaCBjb3VsZCByZWFzb25hYmx5IGJlIGNvbnNpZGVyZWQgaW5hcHByb3ByaWF0ZSBpbiBhCiAgIHByb2Zlc3Npb25hbCBzZXR0aW5nCgpPdXIgUmVzcG9uc2liaWxpdGllcwotLS0tLS0tLS0tLS0tLS0tLS0tLQoKUHJvamVjdCBtYWludGFpbmVycyBhcmUgcmVzcG9uc2libGUgZm9yIGNsYXJpZnlpbmcgdGhlIHN0YW5kYXJkcyBvZgphY2NlcHRhYmxlIGJlaGF2aW9yIGFuZCBhcmUgZXhwZWN0ZWQgdG8gdGFrZSBhcHByb3ByaWF0ZSBhbmQgZmFpcgpjb3JyZWN0aXZlIGFjdGlvbiBpbiByZXNwb25zZSB0byBhbnkgaW5zdGFuY2VzIG9mIHVuYWNjZXB0YWJsZSBiZWhhdmlvci4KClByb2plY3QgbWFpbnRhaW5lcnMgaGF2ZSB0aGUgcmlnaHQgYW5kIHJlc3BvbnNpYmlsaXR5IHRvIHJlbW92ZSwgZWRpdCwKb3IgcmVqZWN0IGNvbW1lbnRzLCBjb21taXRzLCBjb2RlLCB3aWtpIGVkaXRzLCBpc3N1ZXMsIGFuZCBvdGhlcgpjb250cmlidXRpb25zIHRoYXQgYXJlIG5vdCBhbGlnbmVkIHRvIHRoaXMgQ29kZSBvZiBDb25kdWN0LCBvciB0byBiYW4KdGVtcG9yYXJpbHkgb3IgcGVybWFuZW50bHkgYW55IGNvbnRyaWJ1dG9yIGZvciBvdGhlciBiZWhhdmlvcnMgdGhhdCB0aGV5CmRlZW0gaW5hcHByb3ByaWF0ZSwgdGhyZWF0ZW5pbmcsIG9mZmVuc2l2ZSwgb3IgaGFybWZ1bC4KClNjb3BlCi0tLS0tCgpUaGlzIENvZGUgb2YgQ29uZHVjdCBhcHBsaWVzIGJvdGggd2l0aGluIHByb2plY3Qgc3BhY2VzIGFuZCBpbiBwdWJsaWMKc3BhY2VzIHdoZW4gYW4gaW5kaXZpZHVhbCBpcyByZXByZXNlbnRpbmcgdGhlIHByb2plY3Qgb3IgaXRzIGNvbW11bml0eS4KRXhhbXBsZXMgb2YgcmVwcmVzZW50aW5nIGEgcHJvamVjdCBvciBjb21tdW5pdHkgaW5jbHVkZSB1c2luZyBhbgpvZmZpY2lhbCBwcm9qZWN0IGUtbWFpbCBhZGRyZXNzLCBwb3N0aW5nIHZpYSBhbiBvZmZpY2lhbCBzb2NpYWwgbWVkaWEKYWNjb3VudCwgb3IgYWN0aW5nIGFzIGFuIGFwcG9pbnRlZCByZXByZXNlbnRhdGl2ZSBhdCBhbiBvbmxpbmUgb3IKb2ZmbGluZSBldmVudC4gUmVwcmVzZW50YXRpb24gb2YgYSBwcm9qZWN0IG1heSBiZSBmdXJ0aGVyIGRlZmluZWQgYW5kCmNsYXJpZmllZCBieSBwcm9qZWN0IG1haW50YWluZXJzLgoKRW5mb3JjZW1lbnQKLS0tLS0tLS0tLS0KCkluc3RhbmNlcyBvZiBhYnVzaXZlLCBoYXJhc3NpbmcsIG9yIG90aGVyd2lzZSB1bmFjY2VwdGFibGUgYmVoYXZpb3IgbWF5CmJlIHJlcG9ydGVkIGJ5IGNvbnRhY3RpbmcgdGhlIHByb2plY3QgdGVhbSBhdCBwb21icmVkYW5uZUBnbWFpbC5jb20Kb3Igb24gdGhlIEdpdHRlciBjaGF0IGNoYW5uZWwgYXQgaHR0cHM6Ly9naXR0ZXIuaW0vYWJvdXRjb2RlLW9yZy9kaXNjdXNzIC4KQWxsIGNvbXBsYWludHMgd2lsbCBiZSByZXZpZXdlZCBhbmQgaW52ZXN0aWdhdGVkIGFuZCB3aWxsIHJlc3VsdCBpbiBhCnJlc3BvbnNlIHRoYXQgaXMgZGVlbWVkIG5lY2Vzc2FyeSBhbmQgYXBwcm9wcmlhdGUgdG8gdGhlIGNpcmN1bXN0YW5jZXMuClRoZSBwcm9qZWN0IHRlYW0gaXMgb2JsaWdhdGVkIHRvIG1haW50YWluIGNvbmZpZGVudGlhbGl0eSB3aXRoIHJlZ2FyZCB0bwp0aGUgcmVwb3J0ZXIgb2YgYW4gaW5jaWRlbnQuIEZ1cnRoZXIgZGV0YWlscyBvZiBzcGVjaWZpYyBlbmZvcmNlbWVudApwb2xpY2llcyBtYXkgYmUgcG9zdGVkIHNlcGFyYXRlbHkuCgpQcm9qZWN0IG1haW50YWluZXJzIHdobyBkbyBub3QgZm9sbG93IG9yIGVuZm9yY2UgdGhlIENvZGUgb2YgQ29uZHVjdCBpbgpnb29kIGZhaXRoIG1heSBmYWNlIHRlbXBvcmFyeSBvciBwZXJtYW5lbnQgcmVwZXJjdXNzaW9ucyBhcyBkZXRlcm1pbmVkCmJ5IG90aGVyIG1lbWJlcnMgb2YgdGhlIHByb2plY3TigJlzIGxlYWRlcnNoaXAuCgpBdHRyaWJ1dGlvbgotLS0tLS0tLS0tLQoKVGhpcyBDb2RlIG9mIENvbmR1Y3QgaXMgYWRhcHRlZCBmcm9tIHRoZSBgQ29udHJpYnV0b3IgQ292ZW5hbnRgXyAsCnZlcnNpb24gMS40LCBhdmFpbGFibGUgYXQKaHR0cHM6Ly93d3cuY29udHJpYnV0b3ItY292ZW5hbnQub3JnL3ZlcnNpb24vMS80L2NvZGUtb2YtY29uZHVjdC5odG1sCgouLiBfQ29udHJpYnV0b3IgQ292ZW5hbnQ6IGh0dHBzOi8vd3d3LmNvbnRyaWJ1dG9yLWNvdmVuYW50Lm9yZwo= declared license file: NOTICE - # -# Copyright (c) nexB Inc. and others. -# SPDX-License-Identifier: Apache-2.0 -# -# Visit https://aboutcode.org and https://github.com/nexB/license-expression -# for support and download. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - + IwojIENvcHlyaWdodCAoYykgbmV4QiBJbmMuIGFuZCBvdGhlcnMuCiMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKIwojIFZpc2l0IGh0dHBzOi8vYWJvdXRjb2RlLm9yZyBhbmQgaHR0cHM6Ly9naXRodWIuY29tL25leEIvbGljZW5zZS1leHByZXNzaW9uCiMgZm9yIHN1cHBvcnQgYW5kIGRvd25sb2FkLgojCiMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgojIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAojCiMgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgojCg== declared license file: apache-2.0.LICENSE - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBhY2hlIExpY2Vuc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAyLjAsIEphbnVhcnkgMjAwNAogICAgICAgICAgICAgICAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvCgogICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgVVNFLCBSRVBST0RVQ1RJT04sIEFORCBESVNUUklCVVRJT04KCiAgIDEuIERlZmluaXRpb25zLgoKICAgICAgIkxpY2Vuc2UiIHNoYWxsIG1lYW4gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciB1c2UsIHJlcHJvZHVjdGlvbiwKICAgICAgYW5kIGRpc3RyaWJ1dGlvbiBhcyBkZWZpbmVkIGJ5IFNlY3Rpb25zIDEgdGhyb3VnaCA5IG9mIHRoaXMgZG9jdW1lbnQuCgogICAgICAiTGljZW5zb3IiIHNoYWxsIG1lYW4gdGhlIGNvcHlyaWdodCBvd25lciBvciBlbnRpdHkgYXV0aG9yaXplZCBieQogICAgICB0aGUgY29weXJpZ2h0IG93bmVyIHRoYXQgaXMgZ3JhbnRpbmcgdGhlIExpY2Vuc2UuCgogICAgICAiTGVnYWwgRW50aXR5IiBzaGFsbCBtZWFuIHRoZSB1bmlvbiBvZiB0aGUgYWN0aW5nIGVudGl0eSBhbmQgYWxsCiAgICAgIG90aGVyIGVudGl0aWVzIHRoYXQgY29udHJvbCwgYXJlIGNvbnRyb2xsZWQgYnksIG9yIGFyZSB1bmRlciBjb21tb24KICAgICAgY29udHJvbCB3aXRoIHRoYXQgZW50aXR5LiBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwKICAgICAgImNvbnRyb2wiIG1lYW5zIChpKSB0aGUgcG93ZXIsIGRpcmVjdCBvciBpbmRpcmVjdCwgdG8gY2F1c2UgdGhlCiAgICAgIGRpcmVjdGlvbiBvciBtYW5hZ2VtZW50IG9mIHN1Y2ggZW50aXR5LCB3aGV0aGVyIGJ5IGNvbnRyYWN0IG9yCiAgICAgIG90aGVyd2lzZSwgb3IgKGlpKSBvd25lcnNoaXAgb2YgZmlmdHkgcGVyY2VudCAoNTAlKSBvciBtb3JlIG9mIHRoZQogICAgICBvdXRzdGFuZGluZyBzaGFyZXMsIG9yIChpaWkpIGJlbmVmaWNpYWwgb3duZXJzaGlwIG9mIHN1Y2ggZW50aXR5LgoKICAgICAgIllvdSIgKG9yICJZb3VyIikgc2hhbGwgbWVhbiBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eQogICAgICBleGVyY2lzaW5nIHBlcm1pc3Npb25zIGdyYW50ZWQgYnkgdGhpcyBMaWNlbnNlLgoKICAgICAgIlNvdXJjZSIgZm9ybSBzaGFsbCBtZWFuIHRoZSBwcmVmZXJyZWQgZm9ybSBmb3IgbWFraW5nIG1vZGlmaWNhdGlvbnMsCiAgICAgIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gc29mdHdhcmUgc291cmNlIGNvZGUsIGRvY3VtZW50YXRpb24KICAgICAgc291cmNlLCBhbmQgY29uZmlndXJhdGlvbiBmaWxlcy4KCiAgICAgICJPYmplY3QiIGZvcm0gc2hhbGwgbWVhbiBhbnkgZm9ybSByZXN1bHRpbmcgZnJvbSBtZWNoYW5pY2FsCiAgICAgIHRyYW5zZm9ybWF0aW9uIG9yIHRyYW5zbGF0aW9uIG9mIGEgU291cmNlIGZvcm0sIGluY2x1ZGluZyBidXQKICAgICAgbm90IGxpbWl0ZWQgdG8gY29tcGlsZWQgb2JqZWN0IGNvZGUsIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uLAogICAgICBhbmQgY29udmVyc2lvbnMgdG8gb3RoZXIgbWVkaWEgdHlwZXMuCgogICAgICAiV29yayIgc2hhbGwgbWVhbiB0aGUgd29yayBvZiBhdXRob3JzaGlwLCB3aGV0aGVyIGluIFNvdXJjZSBvcgogICAgICBPYmplY3QgZm9ybSwgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIExpY2Vuc2UsIGFzIGluZGljYXRlZCBieSBhCiAgICAgIGNvcHlyaWdodCBub3RpY2UgdGhhdCBpcyBpbmNsdWRlZCBpbiBvciBhdHRhY2hlZCB0byB0aGUgd29yawogICAgICAoYW4gZXhhbXBsZSBpcyBwcm92aWRlZCBpbiB0aGUgQXBwZW5kaXggYmVsb3cpLgoKICAgICAgIkRlcml2YXRpdmUgV29ya3MiIHNoYWxsIG1lYW4gYW55IHdvcmssIHdoZXRoZXIgaW4gU291cmNlIG9yIE9iamVjdAogICAgICBmb3JtLCB0aGF0IGlzIGJhc2VkIG9uIChvciBkZXJpdmVkIGZyb20pIHRoZSBXb3JrIGFuZCBmb3Igd2hpY2ggdGhlCiAgICAgIGVkaXRvcmlhbCByZXZpc2lvbnMsIGFubm90YXRpb25zLCBlbGFib3JhdGlvbnMsIG9yIG90aGVyIG1vZGlmaWNhdGlvbnMKICAgICAgcmVwcmVzZW50LCBhcyBhIHdob2xlLCBhbiBvcmlnaW5hbCB3b3JrIG9mIGF1dGhvcnNoaXAuIEZvciB0aGUgcHVycG9zZXMKICAgICAgb2YgdGhpcyBMaWNlbnNlLCBEZXJpdmF0aXZlIFdvcmtzIHNoYWxsIG5vdCBpbmNsdWRlIHdvcmtzIHRoYXQgcmVtYWluCiAgICAgIHNlcGFyYWJsZSBmcm9tLCBvciBtZXJlbHkgbGluayAob3IgYmluZCBieSBuYW1lKSB0byB0aGUgaW50ZXJmYWNlcyBvZiwKICAgICAgdGhlIFdvcmsgYW5kIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZi4KCiAgICAgICJDb250cmlidXRpb24iIHNoYWxsIG1lYW4gYW55IHdvcmsgb2YgYXV0aG9yc2hpcCwgaW5jbHVkaW5nCiAgICAgIHRoZSBvcmlnaW5hbCB2ZXJzaW9uIG9mIHRoZSBXb3JrIGFuZCBhbnkgbW9kaWZpY2F0aW9ucyBvciBhZGRpdGlvbnMKICAgICAgdG8gdGhhdCBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgdGhhdCBpcyBpbnRlbnRpb25hbGx5CiAgICAgIHN1Ym1pdHRlZCB0byBMaWNlbnNvciBmb3IgaW5jbHVzaW9uIGluIHRoZSBXb3JrIGJ5IHRoZSBjb3B5cmlnaHQgb3duZXIKICAgICAgb3IgYnkgYW4gaW5kaXZpZHVhbCBvciBMZWdhbCBFbnRpdHkgYXV0aG9yaXplZCB0byBzdWJtaXQgb24gYmVoYWxmIG9mCiAgICAgIHRoZSBjb3B5cmlnaHQgb3duZXIuIEZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAic3VibWl0dGVkIgogICAgICBtZWFucyBhbnkgZm9ybSBvZiBlbGVjdHJvbmljLCB2ZXJiYWwsIG9yIHdyaXR0ZW4gY29tbXVuaWNhdGlvbiBzZW50CiAgICAgIHRvIHRoZSBMaWNlbnNvciBvciBpdHMgcmVwcmVzZW50YXRpdmVzLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvCiAgICAgIGNvbW11bmljYXRpb24gb24gZWxlY3Ryb25pYyBtYWlsaW5nIGxpc3RzLCBzb3VyY2UgY29kZSBjb250cm9sIHN5c3RlbXMsCiAgICAgIGFuZCBpc3N1ZSB0cmFja2luZyBzeXN0ZW1zIHRoYXQgYXJlIG1hbmFnZWQgYnksIG9yIG9uIGJlaGFsZiBvZiwgdGhlCiAgICAgIExpY2Vuc29yIGZvciB0aGUgcHVycG9zZSBvZiBkaXNjdXNzaW5nIGFuZCBpbXByb3ZpbmcgdGhlIFdvcmssIGJ1dAogICAgICBleGNsdWRpbmcgY29tbXVuaWNhdGlvbiB0aGF0IGlzIGNvbnNwaWN1b3VzbHkgbWFya2VkIG9yIG90aGVyd2lzZQogICAgICBkZXNpZ25hdGVkIGluIHdyaXRpbmcgYnkgdGhlIGNvcHlyaWdodCBvd25lciBhcyAiTm90IGEgQ29udHJpYnV0aW9uLiIKCiAgICAgICJDb250cmlidXRvciIgc2hhbGwgbWVhbiBMaWNlbnNvciBhbmQgYW55IGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5CiAgICAgIG9uIGJlaGFsZiBvZiB3aG9tIGEgQ29udHJpYnV0aW9uIGhhcyBiZWVuIHJlY2VpdmVkIGJ5IExpY2Vuc29yIGFuZAogICAgICBzdWJzZXF1ZW50bHkgaW5jb3Jwb3JhdGVkIHdpdGhpbiB0aGUgV29yay4KCiAgIDIuIEdyYW50IG9mIENvcHlyaWdodCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCiAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCiAgICAgIGNvcHlyaWdodCBsaWNlbnNlIHRvIHJlcHJvZHVjZSwgcHJlcGFyZSBEZXJpdmF0aXZlIFdvcmtzIG9mLAogICAgICBwdWJsaWNseSBkaXNwbGF5LCBwdWJsaWNseSBwZXJmb3JtLCBzdWJsaWNlbnNlLCBhbmQgZGlzdHJpYnV0ZSB0aGUKICAgICAgV29yayBhbmQgc3VjaCBEZXJpdmF0aXZlIFdvcmtzIGluIFNvdXJjZSBvciBPYmplY3QgZm9ybS4KCiAgIDMuIEdyYW50IG9mIFBhdGVudCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCiAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCiAgICAgIChleGNlcHQgYXMgc3RhdGVkIGluIHRoaXMgc2VjdGlvbikgcGF0ZW50IGxpY2Vuc2UgdG8gbWFrZSwgaGF2ZSBtYWRlLAogICAgICB1c2UsIG9mZmVyIHRvIHNlbGwsIHNlbGwsIGltcG9ydCwgYW5kIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgV29yaywKICAgICAgd2hlcmUgc3VjaCBsaWNlbnNlIGFwcGxpZXMgb25seSB0byB0aG9zZSBwYXRlbnQgY2xhaW1zIGxpY2Vuc2FibGUKICAgICAgYnkgc3VjaCBDb250cmlidXRvciB0aGF0IGFyZSBuZWNlc3NhcmlseSBpbmZyaW5nZWQgYnkgdGhlaXIKICAgICAgQ29udHJpYnV0aW9uKHMpIGFsb25lIG9yIGJ5IGNvbWJpbmF0aW9uIG9mIHRoZWlyIENvbnRyaWJ1dGlvbihzKQogICAgICB3aXRoIHRoZSBXb3JrIHRvIHdoaWNoIHN1Y2ggQ29udHJpYnV0aW9uKHMpIHdhcyBzdWJtaXR0ZWQuIElmIFlvdQogICAgICBpbnN0aXR1dGUgcGF0ZW50IGxpdGlnYXRpb24gYWdhaW5zdCBhbnkgZW50aXR5IChpbmNsdWRpbmcgYQogICAgICBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0IHRoZSBXb3JrCiAgICAgIG9yIGEgQ29udHJpYnV0aW9uIGluY29ycG9yYXRlZCB3aXRoaW4gdGhlIFdvcmsgY29uc3RpdHV0ZXMgZGlyZWN0CiAgICAgIG9yIGNvbnRyaWJ1dG9yeSBwYXRlbnQgaW5mcmluZ2VtZW50LCB0aGVuIGFueSBwYXRlbnQgbGljZW5zZXMKICAgICAgZ3JhbnRlZCB0byBZb3UgdW5kZXIgdGhpcyBMaWNlbnNlIGZvciB0aGF0IFdvcmsgc2hhbGwgdGVybWluYXRlCiAgICAgIGFzIG9mIHRoZSBkYXRlIHN1Y2ggbGl0aWdhdGlvbiBpcyBmaWxlZC4KCiAgIDQuIFJlZGlzdHJpYnV0aW9uLiBZb3UgbWF5IHJlcHJvZHVjZSBhbmQgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlCiAgICAgIFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mIGluIGFueSBtZWRpdW0sIHdpdGggb3Igd2l0aG91dAogICAgICBtb2RpZmljYXRpb25zLCBhbmQgaW4gU291cmNlIG9yIE9iamVjdCBmb3JtLCBwcm92aWRlZCB0aGF0IFlvdQogICAgICBtZWV0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKCiAgICAgIChhKSBZb3UgbXVzdCBnaXZlIGFueSBvdGhlciByZWNpcGllbnRzIG9mIHRoZSBXb3JrIG9yCiAgICAgICAgICBEZXJpdmF0aXZlIFdvcmtzIGEgY29weSBvZiB0aGlzIExpY2Vuc2U7IGFuZAoKICAgICAgKGIpIFlvdSBtdXN0IGNhdXNlIGFueSBtb2RpZmllZCBmaWxlcyB0byBjYXJyeSBwcm9taW5lbnQgbm90aWNlcwogICAgICAgICAgc3RhdGluZyB0aGF0IFlvdSBjaGFuZ2VkIHRoZSBmaWxlczsgYW5kCgogICAgICAoYykgWW91IG11c3QgcmV0YWluLCBpbiB0aGUgU291cmNlIGZvcm0gb2YgYW55IERlcml2YXRpdmUgV29ya3MKICAgICAgICAgIHRoYXQgWW91IGRpc3RyaWJ1dGUsIGFsbCBjb3B5cmlnaHQsIHBhdGVudCwgdHJhZGVtYXJrLCBhbmQKICAgICAgICAgIGF0dHJpYnV0aW9uIG5vdGljZXMgZnJvbSB0aGUgU291cmNlIGZvcm0gb2YgdGhlIFdvcmssCiAgICAgICAgICBleGNsdWRpbmcgdGhvc2Ugbm90aWNlcyB0aGF0IGRvIG5vdCBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mCiAgICAgICAgICB0aGUgRGVyaXZhdGl2ZSBXb3JrczsgYW5kCgogICAgICAoZCkgSWYgdGhlIFdvcmsgaW5jbHVkZXMgYSAiTk9USUNFIiB0ZXh0IGZpbGUgYXMgcGFydCBvZiBpdHMKICAgICAgICAgIGRpc3RyaWJ1dGlvbiwgdGhlbiBhbnkgRGVyaXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlIG11c3QKICAgICAgICAgIGluY2x1ZGUgYSByZWFkYWJsZSBjb3B5IG9mIHRoZSBhdHRyaWJ1dGlvbiBub3RpY2VzIGNvbnRhaW5lZAogICAgICAgICAgd2l0aGluIHN1Y2ggTk9USUNFIGZpbGUsIGV4Y2x1ZGluZyB0aG9zZSBub3RpY2VzIHRoYXQgZG8gbm90CiAgICAgICAgICBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpbiBhdCBsZWFzdCBvbmUKICAgICAgICAgIG9mIHRoZSBmb2xsb3dpbmcgcGxhY2VzOiB3aXRoaW4gYSBOT1RJQ0UgdGV4dCBmaWxlIGRpc3RyaWJ1dGVkCiAgICAgICAgICBhcyBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyB3aXRoaW4gdGhlIFNvdXJjZSBmb3JtIG9yCiAgICAgICAgICBkb2N1bWVudGF0aW9uLCBpZiBwcm92aWRlZCBhbG9uZyB3aXRoIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyBvciwKICAgICAgICAgIHdpdGhpbiBhIGRpc3BsYXkgZ2VuZXJhdGVkIGJ5IHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpZiBhbmQKICAgICAgICAgIHdoZXJldmVyIHN1Y2ggdGhpcmQtcGFydHkgbm90aWNlcyBub3JtYWxseSBhcHBlYXIuIFRoZSBjb250ZW50cwogICAgICAgICAgb2YgdGhlIE5PVElDRSBmaWxlIGFyZSBmb3IgaW5mb3JtYXRpb25hbCBwdXJwb3NlcyBvbmx5IGFuZAogICAgICAgICAgZG8gbm90IG1vZGlmeSB0aGUgTGljZW5zZS4gWW91IG1heSBhZGQgWW91ciBvd24gYXR0cmlidXRpb24KICAgICAgICAgIG5vdGljZXMgd2l0aGluIERlcml2YXRpdmUgV29ya3MgdGhhdCBZb3UgZGlzdHJpYnV0ZSwgYWxvbmdzaWRlCiAgICAgICAgICBvciBhcyBhbiBhZGRlbmR1bSB0byB0aGUgTk9USUNFIHRleHQgZnJvbSB0aGUgV29yaywgcHJvdmlkZWQKICAgICAgICAgIHRoYXQgc3VjaCBhZGRpdGlvbmFsIGF0dHJpYnV0aW9uIG5vdGljZXMgY2Fubm90IGJlIGNvbnN0cnVlZAogICAgICAgICAgYXMgbW9kaWZ5aW5nIHRoZSBMaWNlbnNlLgoKICAgICAgWW91IG1heSBhZGQgWW91ciBvd24gY29weXJpZ2h0IHN0YXRlbWVudCB0byBZb3VyIG1vZGlmaWNhdGlvbnMgYW5kCiAgICAgIG1heSBwcm92aWRlIGFkZGl0aW9uYWwgb3IgZGlmZmVyZW50IGxpY2Vuc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMKICAgICAgZm9yIHVzZSwgcmVwcm9kdWN0aW9uLCBvciBkaXN0cmlidXRpb24gb2YgWW91ciBtb2RpZmljYXRpb25zLCBvcgogICAgICBmb3IgYW55IHN1Y2ggRGVyaXZhdGl2ZSBXb3JrcyBhcyBhIHdob2xlLCBwcm92aWRlZCBZb3VyIHVzZSwKICAgICAgcmVwcm9kdWN0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoZSBXb3JrIG90aGVyd2lzZSBjb21wbGllcyB3aXRoCiAgICAgIHRoZSBjb25kaXRpb25zIHN0YXRlZCBpbiB0aGlzIExpY2Vuc2UuCgogICA1LiBTdWJtaXNzaW9uIG9mIENvbnRyaWJ1dGlvbnMuIFVubGVzcyBZb3UgZXhwbGljaXRseSBzdGF0ZSBvdGhlcndpc2UsCiAgICAgIGFueSBDb250cmlidXRpb24gaW50ZW50aW9uYWxseSBzdWJtaXR0ZWQgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yawogICAgICBieSBZb3UgdG8gdGhlIExpY2Vuc29yIHNoYWxsIGJlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICB0aGlzIExpY2Vuc2UsIHdpdGhvdXQgYW55IGFkZGl0aW9uYWwgdGVybXMgb3IgY29uZGl0aW9ucy4KICAgICAgTm90d2l0aHN0YW5kaW5nIHRoZSBhYm92ZSwgbm90aGluZyBoZXJlaW4gc2hhbGwgc3VwZXJzZWRlIG9yIG1vZGlmeQogICAgICB0aGUgdGVybXMgb2YgYW55IHNlcGFyYXRlIGxpY2Vuc2UgYWdyZWVtZW50IHlvdSBtYXkgaGF2ZSBleGVjdXRlZAogICAgICB3aXRoIExpY2Vuc29yIHJlZ2FyZGluZyBzdWNoIENvbnRyaWJ1dGlvbnMuCgogICA2LiBUcmFkZW1hcmtzLiBUaGlzIExpY2Vuc2UgZG9lcyBub3QgZ3JhbnQgcGVybWlzc2lvbiB0byB1c2UgdGhlIHRyYWRlCiAgICAgIG5hbWVzLCB0cmFkZW1hcmtzLCBzZXJ2aWNlIG1hcmtzLCBvciBwcm9kdWN0IG5hbWVzIG9mIHRoZSBMaWNlbnNvciwKICAgICAgZXhjZXB0IGFzIHJlcXVpcmVkIGZvciByZWFzb25hYmxlIGFuZCBjdXN0b21hcnkgdXNlIGluIGRlc2NyaWJpbmcgdGhlCiAgICAgIG9yaWdpbiBvZiB0aGUgV29yayBhbmQgcmVwcm9kdWNpbmcgdGhlIGNvbnRlbnQgb2YgdGhlIE5PVElDRSBmaWxlLgoKICAgNy4gRGlzY2xhaW1lciBvZiBXYXJyYW50eS4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yCiAgICAgIGFncmVlZCB0byBpbiB3cml0aW5nLCBMaWNlbnNvciBwcm92aWRlcyB0aGUgV29yayAoYW5kIGVhY2gKICAgICAgQ29udHJpYnV0b3IgcHJvdmlkZXMgaXRzIENvbnRyaWJ1dGlvbnMpIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgogICAgICBpbXBsaWVkLCBpbmNsdWRpbmcsIHdpdGhvdXQgbGltaXRhdGlvbiwgYW55IHdhcnJhbnRpZXMgb3IgY29uZGl0aW9ucwogICAgICBvZiBUSVRMRSwgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZLCBvciBGSVRORVNTIEZPUiBBCiAgICAgIFBBUlRJQ1VMQVIgUFVSUE9TRS4gWW91IGFyZSBzb2xlbHkgcmVzcG9uc2libGUgZm9yIGRldGVybWluaW5nIHRoZQogICAgICBhcHByb3ByaWF0ZW5lc3Mgb2YgdXNpbmcgb3IgcmVkaXN0cmlidXRpbmcgdGhlIFdvcmsgYW5kIGFzc3VtZSBhbnkKICAgICAgcmlza3MgYXNzb2NpYXRlZCB3aXRoIFlvdXIgZXhlcmNpc2Ugb2YgcGVybWlzc2lvbnMgdW5kZXIgdGhpcyBMaWNlbnNlLgoKICAgOC4gTGltaXRhdGlvbiBvZiBMaWFiaWxpdHkuIEluIG5vIGV2ZW50IGFuZCB1bmRlciBubyBsZWdhbCB0aGVvcnksCiAgICAgIHdoZXRoZXIgaW4gdG9ydCAoaW5jbHVkaW5nIG5lZ2xpZ2VuY2UpLCBjb250cmFjdCwgb3Igb3RoZXJ3aXNlLAogICAgICB1bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgKHN1Y2ggYXMgZGVsaWJlcmF0ZSBhbmQgZ3Jvc3NseQogICAgICBuZWdsaWdlbnQgYWN0cykgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNoYWxsIGFueSBDb250cmlidXRvciBiZQogICAgICBsaWFibGUgdG8gWW91IGZvciBkYW1hZ2VzLCBpbmNsdWRpbmcgYW55IGRpcmVjdCwgaW5kaXJlY3QsIHNwZWNpYWwsCiAgICAgIGluY2lkZW50YWwsIG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvZiBhbnkgY2hhcmFjdGVyIGFyaXNpbmcgYXMgYQogICAgICByZXN1bHQgb2YgdGhpcyBMaWNlbnNlIG9yIG91dCBvZiB0aGUgdXNlIG9yIGluYWJpbGl0eSB0byB1c2UgdGhlCiAgICAgIFdvcmsgKGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gZGFtYWdlcyBmb3IgbG9zcyBvZiBnb29kd2lsbCwKICAgICAgd29yayBzdG9wcGFnZSwgY29tcHV0ZXIgZmFpbHVyZSBvciBtYWxmdW5jdGlvbiwgb3IgYW55IGFuZCBhbGwKICAgICAgb3RoZXIgY29tbWVyY2lhbCBkYW1hZ2VzIG9yIGxvc3NlcyksIGV2ZW4gaWYgc3VjaCBDb250cmlidXRvcgogICAgICBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiBzdWNoIGRhbWFnZXMuCgogICA5LiBBY2NlcHRpbmcgV2FycmFudHkgb3IgQWRkaXRpb25hbCBMaWFiaWxpdHkuIFdoaWxlIHJlZGlzdHJpYnV0aW5nCiAgICAgIHRoZSBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgWW91IG1heSBjaG9vc2UgdG8gb2ZmZXIsCiAgICAgIGFuZCBjaGFyZ2UgYSBmZWUgZm9yLCBhY2NlcHRhbmNlIG9mIHN1cHBvcnQsIHdhcnJhbnR5LCBpbmRlbW5pdHksCiAgICAgIG9yIG90aGVyIGxpYWJpbGl0eSBvYmxpZ2F0aW9ucyBhbmQvb3IgcmlnaHRzIGNvbnNpc3RlbnQgd2l0aCB0aGlzCiAgICAgIExpY2Vuc2UuIEhvd2V2ZXIsIGluIGFjY2VwdGluZyBzdWNoIG9ibGlnYXRpb25zLCBZb3UgbWF5IGFjdCBvbmx5CiAgICAgIG9uIFlvdXIgb3duIGJlaGFsZiBhbmQgb24gWW91ciBzb2xlIHJlc3BvbnNpYmlsaXR5LCBub3Qgb24gYmVoYWxmCiAgICAgIG9mIGFueSBvdGhlciBDb250cmlidXRvciwgYW5kIG9ubHkgaWYgWW91IGFncmVlIHRvIGluZGVtbmlmeSwKICAgICAgZGVmZW5kLCBhbmQgaG9sZCBlYWNoIENvbnRyaWJ1dG9yIGhhcm1sZXNzIGZvciBhbnkgbGlhYmlsaXR5CiAgICAgIGluY3VycmVkIGJ5LCBvciBjbGFpbXMgYXNzZXJ0ZWQgYWdhaW5zdCwgc3VjaCBDb250cmlidXRvciBieSByZWFzb24KICAgICAgb2YgeW91ciBhY2NlcHRpbmcgYW55IHN1Y2ggd2FycmFudHkgb3IgYWRkaXRpb25hbCBsaWFiaWxpdHkuCgogICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKCiAgIEFQUEVORElYOiBIb3cgdG8gYXBwbHkgdGhlIEFwYWNoZSBMaWNlbnNlIHRvIHlvdXIgd29yay4KCiAgICAgIFRvIGFwcGx5IHRoZSBBcGFjaGUgTGljZW5zZSB0byB5b3VyIHdvcmssIGF0dGFjaCB0aGUgZm9sbG93aW5nCiAgICAgIGJvaWxlcnBsYXRlIG5vdGljZSwgd2l0aCB0aGUgZmllbGRzIGVuY2xvc2VkIGJ5IGJyYWNrZXRzICJbXSIKICAgICAgcmVwbGFjZWQgd2l0aCB5b3VyIG93biBpZGVudGlmeWluZyBpbmZvcm1hdGlvbi4gKERvbid0IGluY2x1ZGUKICAgICAgdGhlIGJyYWNrZXRzISkgIFRoZSB0ZXh0IHNob3VsZCBiZSBlbmNsb3NlZCBpbiB0aGUgYXBwcm9wcmlhdGUKICAgICAgY29tbWVudCBzeW50YXggZm9yIHRoZSBmaWxlIGZvcm1hdC4gV2UgYWxzbyByZWNvbW1lbmQgdGhhdCBhCiAgICAgIGZpbGUgb3IgY2xhc3MgbmFtZSBhbmQgZGVzY3JpcHRpb24gb2YgcHVycG9zZSBiZSBpbmNsdWRlZCBvbiB0aGUKICAgICAgc2FtZSAicHJpbnRlZCBwYWdlIiBhcyB0aGUgY29weXJpZ2h0IG5vdGljZSBmb3IgZWFzaWVyCiAgICAgIGlkZW50aWZpY2F0aW9uIHdpdGhpbiB0aGlyZC1wYXJ0eSBhcmNoaXZlcy4KCiAgIENvcHlyaWdodCBbeXl5eV0gW25hbWUgb2YgY29weXJpZ2h0IG93bmVyXQoKICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgo= pkg:pypi/license-expression@30.3.0 @@ -1280,69 +318,11 @@ https://www.contributor-covenant.org/version/1/4/code-of-conduct.html declared license file: LICENSE.txt - Copyright (c) 2004 Infrae. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - 3. Neither the name of Infrae nor the names of its contributors may - be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INFRAE OR -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - + Q29weXJpZ2h0IChjKSAyMDA0IEluZnJhZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAgIAogIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCiAgICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQogICAgIGRpc3RyaWJ1dGlvbi4KCiAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBJbmZyYWUgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heQogICAgIGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCiAgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCgpUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCiJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgpBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgSU5GUkFFIE9SCkNPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLApFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sClBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgpQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GCkxJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCk5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwpTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K declared license file: LICENSES.txt - lxml is copyright Infrae and distributed under the BSD license (see -doc/licenses/BSD.txt), with the following exceptions: - -Some code, such a selftest.py, selftest2.py and -src/lxml/_elementpath.py are derived from ElementTree and -cElementTree. See doc/licenses/elementtree.txt for the license text. - -lxml.cssselect and lxml.html are copyright Ian Bicking and distributed -under the BSD license (see doc/licenses/BSD.txt). - -test.py, the test-runner script, is GPL and copyright Shuttleworth -Foundation. See doc/licenses/GPL.txt. It is believed the unchanged -inclusion of test.py to run the unit test suite falls under the -"aggregation" clause of the GPL and thus does not affect the license -of the rest of the package. - -The isoschematron implementation uses several XSL and RelaxNG resources: - * The (XML syntax) RelaxNG schema for schematron, copyright International - Organization for Standardization (see - src/lxml/isoschematron/resources/rng/iso-schematron.rng for the license - text) - * The skeleton iso-schematron-xlt1 pure-xslt schematron implementation - xsl stylesheets, copyright Rick Jelliffe and Academia Sinica Computing - Center, Taiwan (see the xsl files here for the license text: - src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/) - * The xsd/rng schema schematron extraction xsl transformations are unlicensed - and copyright the respective authors as noted (see - src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl and - src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl) - + bHhtbCBpcyBjb3B5cmlnaHQgSW5mcmFlIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgQlNEIGxpY2Vuc2UgKHNlZQpkb2MvbGljZW5zZXMvQlNELnR4dCksIHdpdGggdGhlIGZvbGxvd2luZyBleGNlcHRpb25zOgoKU29tZSBjb2RlLCBzdWNoIGEgc2VsZnRlc3QucHksIHNlbGZ0ZXN0Mi5weSBhbmQKc3JjL2x4bWwvX2VsZW1lbnRwYXRoLnB5IGFyZSBkZXJpdmVkIGZyb20gRWxlbWVudFRyZWUgYW5kCmNFbGVtZW50VHJlZS4gU2VlIGRvYy9saWNlbnNlcy9lbGVtZW50dHJlZS50eHQgZm9yIHRoZSBsaWNlbnNlIHRleHQuCgpseG1sLmNzc3NlbGVjdCBhbmQgbHhtbC5odG1sIGFyZSBjb3B5cmlnaHQgSWFuIEJpY2tpbmcgYW5kIGRpc3RyaWJ1dGVkCnVuZGVyIHRoZSBCU0QgbGljZW5zZSAoc2VlIGRvYy9saWNlbnNlcy9CU0QudHh0KS4KCnRlc3QucHksIHRoZSB0ZXN0LXJ1bm5lciBzY3JpcHQsIGlzIEdQTCBhbmQgY29weXJpZ2h0IFNodXR0bGV3b3J0aApGb3VuZGF0aW9uLiBTZWUgZG9jL2xpY2Vuc2VzL0dQTC50eHQuIEl0IGlzIGJlbGlldmVkIHRoZSB1bmNoYW5nZWQKaW5jbHVzaW9uIG9mIHRlc3QucHkgdG8gcnVuIHRoZSB1bml0IHRlc3Qgc3VpdGUgZmFsbHMgdW5kZXIgdGhlCiJhZ2dyZWdhdGlvbiIgY2xhdXNlIG9mIHRoZSBHUEwgYW5kIHRodXMgZG9lcyBub3QgYWZmZWN0IHRoZSBsaWNlbnNlCm9mIHRoZSByZXN0IG9mIHRoZSBwYWNrYWdlLgoKVGhlIGlzb3NjaGVtYXRyb24gaW1wbGVtZW50YXRpb24gdXNlcyBzZXZlcmFsIFhTTCBhbmQgUmVsYXhORyByZXNvdXJjZXM6CiAqIFRoZSAoWE1MIHN5bnRheCkgUmVsYXhORyBzY2hlbWEgZm9yIHNjaGVtYXRyb24sIGNvcHlyaWdodCBJbnRlcm5hdGlvbmFsCiAgIE9yZ2FuaXphdGlvbiBmb3IgU3RhbmRhcmRpemF0aW9uIChzZWUgCiAgIHNyYy9seG1sL2lzb3NjaGVtYXRyb24vcmVzb3VyY2VzL3JuZy9pc28tc2NoZW1hdHJvbi5ybmcgZm9yIHRoZSBsaWNlbnNlCiAgIHRleHQpCiAqIFRoZSBza2VsZXRvbiBpc28tc2NoZW1hdHJvbi14bHQxIHB1cmUteHNsdCBzY2hlbWF0cm9uIGltcGxlbWVudGF0aW9uCiAgIHhzbCBzdHlsZXNoZWV0cywgY29weXJpZ2h0IFJpY2sgSmVsbGlmZmUgYW5kIEFjYWRlbWlhIFNpbmljYSBDb21wdXRpbmcKICAgQ2VudGVyLCBUYWl3YW4gKHNlZSB0aGUgeHNsIGZpbGVzIGhlcmUgZm9yIHRoZSBsaWNlbnNlIHRleHQ6IAogICBzcmMvbHhtbC9pc29zY2hlbWF0cm9uL3Jlc291cmNlcy94c2wvaXNvLXNjaGVtYXRyb24teHNsdDEvKQogKiBUaGUgeHNkL3JuZyBzY2hlbWEgc2NoZW1hdHJvbiBleHRyYWN0aW9uIHhzbCB0cmFuc2Zvcm1hdGlvbnMgYXJlIHVubGljZW5zZWQKICAgYW5kIGNvcHlyaWdodCB0aGUgcmVzcGVjdGl2ZSBhdXRob3JzIGFzIG5vdGVkIChzZWUgCiAgIHNyYy9seG1sL2lzb3NjaGVtYXRyb24vcmVzb3VyY2VzL3hzbC9STkcyU2NodHJuLnhzbCBhbmQKICAgc3JjL2x4bWwvaXNvc2NoZW1hdHJvbi9yZXNvdXJjZXMveHNsL1hTRDJTY2h0cm4ueHNsKQo= pkg:pypi/lxml@5.3.0 @@ -1360,44 +340,6 @@ The isoschematron implementation uses several XSL and RelaxNG resources: regression-issue868 0.1 - - - declared license file: my_licenses/richtext.rtf - e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA= - - - declared license file: my_licenses/utf-16be_withBOM.txt - this file is -utf-16be encoded -with BOM -😃 - - - - declared license file: my_licenses/utf-16le_withBOM.txt - this file is -utf-16le encoded -with BOM -😃 - - - - declared license file: my_licenses/utf-8_noBOM.txt - this file is -utf-8 encoded -without BOM -😃 - - - - declared license file: my_licenses/utf-8_withBOM.txt - this file is -utf-8 encoded -with BOM -😃 - - - file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 @@ -1409,6 +351,7 @@ with BOM + From 94d56d191a741c2e8fdc853465eab23d2290c9b9 Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Wed, 9 Jul 2025 16:41:18 +0200 Subject: [PATCH 35/49] wip Signed-off-by: Jan Kowalleck --- cyclonedx_py/_internal/environment.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/cyclonedx_py/_internal/environment.py b/cyclonedx_py/_internal/environment.py index 179bcce27..c6dd5f9a3 100644 --- a/cyclonedx_py/_internal/environment.py +++ b/cyclonedx_py/_internal/environment.py @@ -186,13 +186,11 @@ def __add_components(self, bom: 'Bom', ) # region licenses - lfac = LicenseFactory() - component.licenses.update(metadata2licenses(dist_meta, lfac, + component.licenses.update(metadata2licenses(dist_meta, LicenseFactory(), gather_texts=self._gather_license_texts)) if self._gather_license_texts: component.licenses.update(pep639_dist2licenses_from_files(dist, logger=self._logger)) licenses_fixup(component) - del lfac # endregion licenses del dist_meta, dist_name, dist_version From c3a12b46affc6306bd75723c4fa09365cdde6b46 Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Wed, 9 Jul 2025 16:52:34 +0200 Subject: [PATCH 36/49] wip Signed-off-by: Jan Kowalleck --- cyclonedx_py/_internal/utils/pep639.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cyclonedx_py/_internal/utils/pep639.py b/cyclonedx_py/_internal/utils/pep639.py index 71227ff5e..7db15d1af 100644 --- a/cyclonedx_py/_internal/utils/pep639.py +++ b/cyclonedx_py/_internal/utils/pep639.py @@ -97,7 +97,7 @@ def dist2licenses_from_files( content = err.object break # for-loop except Exception: - continue # for-loop + pass # nosec B110 if content is None: # pragma: no cover logger.debug('Error: failed to read license file %r for dist %r', mlfile, metadata['Name']) From d8eb4dd301974c810ed3a94feb16f732c3558dc2 Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Wed, 9 Jul 2025 17:07:14 +0200 Subject: [PATCH 37/49] wip Signed-off-by: Jan Kowalleck --- cyclonedx_py/_internal/utils/packaging.py | 3 +-- cyclonedx_py/_internal/utils/pep621.py | 27 +++++++++++++++-------- cyclonedx_py/_internal/utils/pep639.py | 26 +++++++++++----------- 3 files changed, 32 insertions(+), 24 deletions(-) diff --git a/cyclonedx_py/_internal/utils/packaging.py b/cyclonedx_py/_internal/utils/packaging.py index c764e1992..2501886ed 100644 --- a/cyclonedx_py/_internal/utils/packaging.py +++ b/cyclonedx_py/_internal/utils/packaging.py @@ -50,8 +50,7 @@ def metadata2licenses(metadata: 'PackageMetadata', lfac: 'LicenseFactory', # see spec: https://packaging.python.org/en/latest/specifications/core-metadata/#license if len(mlicense) <= 0: continue - license = lfac.make_from_string(mlicense, - license_acknowledgement=lack) + license = lfac.make_from_string(mlicense, license_acknowledgement=lack) if isinstance(license, DisjunctiveLicense) and license.id is None: if gather_texts: # per spec, `License` is either a SPDX ID/Expression, or a license text(not name!) diff --git a/cyclonedx_py/_internal/utils/pep621.py b/cyclonedx_py/_internal/utils/pep621.py index dc19e6896..143d81b85 100644 --- a/cyclonedx_py/_internal/utils/pep621.py +++ b/cyclonedx_py/_internal/utils/pep621.py @@ -37,6 +37,7 @@ from .cdx import url_label_to_ert from .license_trove_classifier import is_license_trove, license_trove2spdx +from .mimetypes import guess_type if TYPE_CHECKING: from cyclonedx.factory.license import LicenseFactory @@ -73,22 +74,30 @@ def project2licenses(project: dict[str, Any], lfac: 'LicenseFactory', if gather_text and 'file' in plicense: # Per PEP 621 spec: # > [...] a string value that is a relative file path [...]. - # > Tools MUST assume the file’s encoding is UTF-8. - # But in reality, we found non-printable bytes in some files! with open(join(dirname(fpath), *PurePosixPath(plicense['file']).parts), 'rb') as plicense_fileh: - yield DisjunctiveLicense(name=f"declared license of '{project['name']}'", - acknowledgement=lack, - text=AttachedText(encoding=Encoding.BASE_64, - content=b64encode(plicense_fileh.read()).decode())) + content_type = guess_type(plicense_fileh.name) or AttachedText.DEFAULT_CONTENT_TYPE + yield DisjunctiveLicense( + name=f"declared license of '{project['name']}'", + acknowledgement=lack, + text=AttachedText( + content_type=content_type, + encoding=Encoding.BASE_64, + # Per PEP 621 spec: + # > Tools MUST assume the file’s encoding is UTF-8. + # But in reality, we found non-printable bytes in some files! + content=b64encode( + plicense_fileh.read() + ).decode('ascii'))) elif len(plicense_text := plicense.get('text', '')) > 0: license = lfac.make_from_string(plicense_text, license_acknowledgement=lack) if isinstance(license, DisjunctiveLicense) and license.id is None: if gather_text: # per spec, `License` is either a SPDX ID/Expression, or a license text(not name!) - yield DisjunctiveLicense(name=f"declared license of '{project['name']}'", - acknowledgement=lack, - text=AttachedText(content=plicense_text)) + yield DisjunctiveLicense( + name=f"declared license of '{project['name']}'", + acknowledgement=lack, + text=AttachedText(content=plicense_text)) else: yield license # Silently skip any other types (including string/PEP 639) diff --git a/cyclonedx_py/_internal/utils/pep639.py b/cyclonedx_py/_internal/utils/pep639.py index 7db15d1af..364163563 100644 --- a/cyclonedx_py/_internal/utils/pep639.py +++ b/cyclonedx_py/_internal/utils/pep639.py @@ -108,16 +108,16 @@ def dist2licenses_from_files( def _make_license_from_content(file_name: str, content: Union[str, bytes], lack: 'LicenseAcknowledgement') -> DisjunctiveLicense: content_type = guess_type(file_name) or AttachedText.DEFAULT_CONTENT_TYPE - # Per PEP 639 spec, license files are human-readable texts. - # But in reality, we found non-printable bytes in some files! - encoding = Encoding.BASE_64 - content_s = b64encode( - content - if isinstance(content, bytes) - else content.encode('utf-8') - ).decode('ascii') - return DisjunctiveLicense(name=f'{lack.value} license file: {"/".join(Path(file_name).parts)}', - acknowledgement=lack, - text=AttachedText(content=content_s, - encoding=encoding, - content_type=content_type)) + return DisjunctiveLicense( + name=f'{lack.value} license file: {"/".join(Path(file_name).parts)}', + acknowledgement=lack, + text=AttachedText( + content_type=content_type, + encoding=Encoding.BASE_64, + # Per PEP 639 spec, license files are human-readable texts. + # But in reality, we found non-printable bytes in some files! + content=b64encode( + content + if isinstance(content, bytes) + else content.encode('utf-8') + ).decode('ascii'))) From e29f84217f5ade75c68bc2263ddd81a7269eb526 Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Wed, 9 Jul 2025 17:23:04 +0200 Subject: [PATCH 38/49] wip Signed-off-by: Jan Kowalleck --- cyclonedx_py/_internal/utils/pep621.py | 37 +++++++++---------- cyclonedx_py/_internal/utils/pep639.py | 3 ++ .../texts_with-license-file_1.2.json.bin | 2 +- .../texts_with-license-file_1.2.xml.bin | 2 +- .../texts_with-license-file_1.3.json.bin | 2 +- .../texts_with-license-file_1.3.xml.bin | 2 +- .../texts_with-license-file_1.4.json.bin | 2 +- .../texts_with-license-file_1.4.xml.bin | 2 +- .../texts_with-license-file_1.5.json.bin | 2 +- .../texts_with-license-file_1.5.xml.bin | 2 +- .../texts_with-license-file_1.6.json.bin | 2 +- .../texts_with-license-file_1.6.xml.bin | 2 +- 12 files changed, 31 insertions(+), 29 deletions(-) diff --git a/cyclonedx_py/_internal/utils/pep621.py b/cyclonedx_py/_internal/utils/pep621.py index 143d81b85..337a58ea5 100644 --- a/cyclonedx_py/_internal/utils/pep621.py +++ b/cyclonedx_py/_internal/utils/pep621.py @@ -71,26 +71,25 @@ def project2licenses(project: dict[str, Any], lfac: 'LicenseFactory', # per spec: # > These keys are mutually exclusive, so a tool MUST raise an error if the metadata specifies both keys. raise ValueError('`license.file` and `license.text` are mutually exclusive,') - if gather_text and 'file' in plicense: - # Per PEP 621 spec: - # > [...] a string value that is a relative file path [...]. - with open(join(dirname(fpath), *PurePosixPath(plicense['file']).parts), 'rb') as plicense_fileh: - content_type = guess_type(plicense_fileh.name) or AttachedText.DEFAULT_CONTENT_TYPE - yield DisjunctiveLicense( - name=f"declared license of '{project['name']}'", - acknowledgement=lack, - text=AttachedText( - content_type=content_type, - encoding=Encoding.BASE_64, - # Per PEP 621 spec: - # > Tools MUST assume the file’s encoding is UTF-8. - # But in reality, we found non-printable bytes in some files! - content=b64encode( - plicense_fileh.read() - ).decode('ascii'))) + if len(plicense_file := plicense.get('file', '')) > 0: + if gather_text: + # Per PEP 621 spec: + # > [...] a string value that is a relative file path [...]. + # > Tools MUST assume the file’s encoding is UTF-8. + # But in reality, we found non-printable bytes in some files! + with open(join(dirname(fpath), *PurePosixPath(plicense_file).parts), 'rb') as plicense_fileh: + content_type = guess_type(plicense_file) or AttachedText.DEFAULT_CONTENT_TYPE + yield DisjunctiveLicense( + name=f"declared license of '{project['name']}'", + acknowledgement=lack, + text=AttachedText( + content_type=content_type, + encoding=Encoding.BASE_64, + content=b64encode( + plicense_fileh.read() + ).decode('ascii'))) elif len(plicense_text := plicense.get('text', '')) > 0: - license = lfac.make_from_string(plicense_text, - license_acknowledgement=lack) + license = lfac.make_from_string(plicense_text, license_acknowledgement=lack) if isinstance(license, DisjunctiveLicense) and license.id is None: if gather_text: # per spec, `License` is either a SPDX ID/Expression, or a license text(not name!) diff --git a/cyclonedx_py/_internal/utils/pep639.py b/cyclonedx_py/_internal/utils/pep639.py index 364163563..48b111444 100644 --- a/cyclonedx_py/_internal/utils/pep639.py +++ b/cyclonedx_py/_internal/utils/pep639.py @@ -107,6 +107,9 @@ def dist2licenses_from_files( def _make_license_from_content(file_name: str, content: Union[str, bytes], lack: 'LicenseAcknowledgement') -> DisjunctiveLicense: + # In the past, we did best-effort decoding to string, + # see https://github.com/CycloneDX/cyclonedx-python/blob/b7a8f64ae212c5a5fd6b7cf8c83851ba692df256/cyclonedx_py/_internal/utils/pep639.py#L67-L71 # noqa:E501 + # But this was dropped, in favour of base64 encoding; CycloneDXis for machines, not humans! content_type = guess_type(file_name) or AttachedText.DEFAULT_CONTENT_TYPE return DisjunctiveLicense( name=f'{lack.value} license file: {"/".join(Path(file_name).parts)}', diff --git a/tests/_data/snapshots/environment/texts_with-license-file_1.2.json.bin b/tests/_data/snapshots/environment/texts_with-license-file_1.2.json.bin index 7c99638f5..a8818a8ce 100644 --- a/tests/_data/snapshots/environment/texts_with-license-file_1.2.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-file_1.2.json.bin @@ -14,7 +14,7 @@ "name": "declared license of 'with-license-file'", "text": { "content": "VGhpcyBpcyB0aGUgbGljZW5zZSB0ZXh0IG9mIHRoaXMgY29tcG9uZW50LgpJdCBpcyBleHBlY3RlZCB0byBiZSBhdmFpbGFibGUgaW4gYSBTQk9NLgo=", - "contentType": "text/plain", + "contentType": "application/octet-stream", "encoding": "base64" } } diff --git a/tests/_data/snapshots/environment/texts_with-license-file_1.2.xml.bin b/tests/_data/snapshots/environment/texts_with-license-file_1.2.xml.bin index 710c26d9f..32a69a6f5 100644 --- a/tests/_data/snapshots/environment/texts_with-license-file_1.2.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-file_1.2.xml.bin @@ -20,7 +20,7 @@ declared license of 'with-license-file' - VGhpcyBpcyB0aGUgbGljZW5zZSB0ZXh0IG9mIHRoaXMgY29tcG9uZW50LgpJdCBpcyBleHBlY3RlZCB0byBiZSBhdmFpbGFibGUgaW4gYSBTQk9NLgo= + VGhpcyBpcyB0aGUgbGljZW5zZSB0ZXh0IG9mIHRoaXMgY29tcG9uZW50LgpJdCBpcyBleHBlY3RlZCB0byBiZSBhdmFpbGFibGUgaW4gYSBTQk9NLgo= diff --git a/tests/_data/snapshots/environment/texts_with-license-file_1.3.json.bin b/tests/_data/snapshots/environment/texts_with-license-file_1.3.json.bin index 2e92b0936..b7ca37245 100644 --- a/tests/_data/snapshots/environment/texts_with-license-file_1.3.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-file_1.3.json.bin @@ -14,7 +14,7 @@ "name": "declared license of 'with-license-file'", "text": { "content": "VGhpcyBpcyB0aGUgbGljZW5zZSB0ZXh0IG9mIHRoaXMgY29tcG9uZW50LgpJdCBpcyBleHBlY3RlZCB0byBiZSBhdmFpbGFibGUgaW4gYSBTQk9NLgo=", - "contentType": "text/plain", + "contentType": "application/octet-stream", "encoding": "base64" } } diff --git a/tests/_data/snapshots/environment/texts_with-license-file_1.3.xml.bin b/tests/_data/snapshots/environment/texts_with-license-file_1.3.xml.bin index 29a9c22a6..2cd65090d 100644 --- a/tests/_data/snapshots/environment/texts_with-license-file_1.3.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-file_1.3.xml.bin @@ -20,7 +20,7 @@ declared license of 'with-license-file' - VGhpcyBpcyB0aGUgbGljZW5zZSB0ZXh0IG9mIHRoaXMgY29tcG9uZW50LgpJdCBpcyBleHBlY3RlZCB0byBiZSBhdmFpbGFibGUgaW4gYSBTQk9NLgo= + VGhpcyBpcyB0aGUgbGljZW5zZSB0ZXh0IG9mIHRoaXMgY29tcG9uZW50LgpJdCBpcyBleHBlY3RlZCB0byBiZSBhdmFpbGFibGUgaW4gYSBTQk9NLgo= diff --git a/tests/_data/snapshots/environment/texts_with-license-file_1.4.json.bin b/tests/_data/snapshots/environment/texts_with-license-file_1.4.json.bin index 8d424333d..2cdc8bb05 100644 --- a/tests/_data/snapshots/environment/texts_with-license-file_1.4.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-file_1.4.json.bin @@ -14,7 +14,7 @@ "name": "declared license of 'with-license-file'", "text": { "content": "VGhpcyBpcyB0aGUgbGljZW5zZSB0ZXh0IG9mIHRoaXMgY29tcG9uZW50LgpJdCBpcyBleHBlY3RlZCB0byBiZSBhdmFpbGFibGUgaW4gYSBTQk9NLgo=", - "contentType": "text/plain", + "contentType": "application/octet-stream", "encoding": "base64" } } diff --git a/tests/_data/snapshots/environment/texts_with-license-file_1.4.xml.bin b/tests/_data/snapshots/environment/texts_with-license-file_1.4.xml.bin index 08fd7e21f..f67be62bd 100644 --- a/tests/_data/snapshots/environment/texts_with-license-file_1.4.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-file_1.4.xml.bin @@ -47,7 +47,7 @@ declared license of 'with-license-file' - VGhpcyBpcyB0aGUgbGljZW5zZSB0ZXh0IG9mIHRoaXMgY29tcG9uZW50LgpJdCBpcyBleHBlY3RlZCB0byBiZSBhdmFpbGFibGUgaW4gYSBTQk9NLgo= + VGhpcyBpcyB0aGUgbGljZW5zZSB0ZXh0IG9mIHRoaXMgY29tcG9uZW50LgpJdCBpcyBleHBlY3RlZCB0byBiZSBhdmFpbGFibGUgaW4gYSBTQk9NLgo= diff --git a/tests/_data/snapshots/environment/texts_with-license-file_1.5.json.bin b/tests/_data/snapshots/environment/texts_with-license-file_1.5.json.bin index ab180b3f9..f9a86def2 100644 --- a/tests/_data/snapshots/environment/texts_with-license-file_1.5.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-file_1.5.json.bin @@ -14,7 +14,7 @@ "name": "declared license of 'with-license-file'", "text": { "content": "VGhpcyBpcyB0aGUgbGljZW5zZSB0ZXh0IG9mIHRoaXMgY29tcG9uZW50LgpJdCBpcyBleHBlY3RlZCB0byBiZSBhdmFpbGFibGUgaW4gYSBTQk9NLgo=", - "contentType": "text/plain", + "contentType": "application/octet-stream", "encoding": "base64" } } diff --git a/tests/_data/snapshots/environment/texts_with-license-file_1.5.xml.bin b/tests/_data/snapshots/environment/texts_with-license-file_1.5.xml.bin index 5c5345a5e..87ed053ae 100644 --- a/tests/_data/snapshots/environment/texts_with-license-file_1.5.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-file_1.5.xml.bin @@ -57,7 +57,7 @@ declared license of 'with-license-file' - VGhpcyBpcyB0aGUgbGljZW5zZSB0ZXh0IG9mIHRoaXMgY29tcG9uZW50LgpJdCBpcyBleHBlY3RlZCB0byBiZSBhdmFpbGFibGUgaW4gYSBTQk9NLgo= + VGhpcyBpcyB0aGUgbGljZW5zZSB0ZXh0IG9mIHRoaXMgY29tcG9uZW50LgpJdCBpcyBleHBlY3RlZCB0byBiZSBhdmFpbGFibGUgaW4gYSBTQk9NLgo= diff --git a/tests/_data/snapshots/environment/texts_with-license-file_1.6.json.bin b/tests/_data/snapshots/environment/texts_with-license-file_1.6.json.bin index 8da5bfc29..213260442 100644 --- a/tests/_data/snapshots/environment/texts_with-license-file_1.6.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-file_1.6.json.bin @@ -15,7 +15,7 @@ "name": "declared license of 'with-license-file'", "text": { "content": "VGhpcyBpcyB0aGUgbGljZW5zZSB0ZXh0IG9mIHRoaXMgY29tcG9uZW50LgpJdCBpcyBleHBlY3RlZCB0byBiZSBhdmFpbGFibGUgaW4gYSBTQk9NLgo=", - "contentType": "text/plain", + "contentType": "application/octet-stream", "encoding": "base64" } } diff --git a/tests/_data/snapshots/environment/texts_with-license-file_1.6.xml.bin b/tests/_data/snapshots/environment/texts_with-license-file_1.6.xml.bin index 0af5025b0..d189c0430 100644 --- a/tests/_data/snapshots/environment/texts_with-license-file_1.6.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-file_1.6.xml.bin @@ -57,7 +57,7 @@ declared license of 'with-license-file' - VGhpcyBpcyB0aGUgbGljZW5zZSB0ZXh0IG9mIHRoaXMgY29tcG9uZW50LgpJdCBpcyBleHBlY3RlZCB0byBiZSBhdmFpbGFibGUgaW4gYSBTQk9NLgo= + VGhpcyBpcyB0aGUgbGljZW5zZSB0ZXh0IG9mIHRoaXMgY29tcG9uZW50LgpJdCBpcyBleHBlY3RlZCB0byBiZSBhdmFpbGFibGUgaW4gYSBTQk9NLgo= From 9c8ef97cdc8602bec0e637b51e098e5f30717764 Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Wed, 9 Jul 2025 17:25:53 +0200 Subject: [PATCH 39/49] docs Signed-off-by: Jan Kowalleck --- cyclonedx_py/_internal/utils/pep639.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cyclonedx_py/_internal/utils/pep639.py b/cyclonedx_py/_internal/utils/pep639.py index 48b111444..f7d92006f 100644 --- a/cyclonedx_py/_internal/utils/pep639.py +++ b/cyclonedx_py/_internal/utils/pep639.py @@ -109,7 +109,7 @@ def _make_license_from_content(file_name: str, content: Union[str, bytes], lack: 'LicenseAcknowledgement') -> DisjunctiveLicense: # In the past, we did best-effort decoding to string, # see https://github.com/CycloneDX/cyclonedx-python/blob/b7a8f64ae212c5a5fd6b7cf8c83851ba692df256/cyclonedx_py/_internal/utils/pep639.py#L67-L71 # noqa:E501 - # But this was dropped, in favour of base64 encoding; CycloneDXis for machines, not humans! + # But this was dropped, in favour of base64 encoding; CycloneDX is for machines, not humans! content_type = guess_type(file_name) or AttachedText.DEFAULT_CONTENT_TYPE return DisjunctiveLicense( name=f'{lack.value} license file: {"/".join(Path(file_name).parts)}', From 161648aed54d331eb90050f7da9e8ad71ed826eb Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Wed, 9 Jul 2025 18:14:18 +0200 Subject: [PATCH 40/49] chore: enable prerelease Signed-off-by: Jan Kowalleck --- .github/workflows/release.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index df79c60c3..010747336 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -6,14 +6,15 @@ on: release_force: # see https://python-semantic-release.readthedocs.io/en/latest/github-action.html#command-line-options description: | - Force release be one of: [major | minor | patch] + Force release be one of: [major | minor | patch | prerelease] Leave empty for auto-detect based on commit messages. type: choice options: - - "" # auto - no force - - major # force major - - minor # force minor - - patch # force patch + - "" # auto - no force + - major # force major + - minor # force minor + - patch # force patch + - prerelease # force prerelease default: "" required: false prerelease_token: From 2dd48dd94e23bb38528e2d14809cad783f3eeff1 Mon Sep 17 00:00:00 2001 From: semantic-release Date: Wed, 9 Jul 2025 16:19:34 +0000 Subject: [PATCH 41/49] chore(release): 7.0.1-alpha.2 Automatically generated by python-semantic-release Signed-off-by: semantic-release --- CHANGELOG.md | 2 ++ cyclonedx_py/__init__.py | 2 +- docs/conf.py | 2 +- pyproject.toml | 2 +- 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3237f23bc..1238379f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ +## v7.0.1-alpha.2 (2025-07-09) + ## v6.1.3 (2025-07-08) diff --git a/cyclonedx_py/__init__.py b/cyclonedx_py/__init__.py index 18c588147..b2441170a 100644 --- a/cyclonedx_py/__init__.py +++ b/cyclonedx_py/__init__.py @@ -17,7 +17,7 @@ # !! version is managed by `semantic_release` # do not use typing here, or else `semantic_release` might have issues finding the variable -__version__ = "7.0.0-alpha.1" # noqa:Q000 +__version__ = "7.0.1-alpha.2" # noqa:Q000 # There is no stable/public API. # However, you might call the stable CLI instead, like so: diff --git a/docs/conf.py b/docs/conf.py index 0c865ce01..b56c90020 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -24,7 +24,7 @@ # The full version, including alpha/beta/rc tags # !! version is managed by semantic_release -release = "7.0.0-alpha.1" +release = "7.0.1-alpha.2" # -- General configuration --------------------------------------------------- diff --git a/pyproject.toml b/pyproject.toml index e66090279..259bf6d3a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ build-backend = "poetry.core.masonry.api" [tool.poetry] name = "cyclonedx-bom" -version = "7.0.0-alpha.1" +version = "7.0.1-alpha.2" description = "CycloneDX Software Bill of Materials (SBOM) generator for Python projects and environments" authors = [ "Jan Kowalleck ", From 99e860808917dbdf35f5159b02e31ade628ff2c1 Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Wed, 9 Jul 2025 18:26:44 +0200 Subject: [PATCH 42/49] revert history Signed-off-by: Jan Kowalleck --- CHANGELOG.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1238379f7..4a6eb5fb2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,9 +2,6 @@ -## v7.0.1-alpha.2 (2025-07-09) - - ## v6.1.3 (2025-07-08) ### Bug Fixes From 9ccfc73abdb24695e0525871100187f1493bedba Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Thu, 10 Jul 2025 11:03:49 +0200 Subject: [PATCH 43/49] docs Signed-off-by: Jan Kowalleck --- cyclonedx_py/_internal/utils/pep639.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cyclonedx_py/_internal/utils/pep639.py b/cyclonedx_py/_internal/utils/pep639.py index f7d92006f..f5fd3e482 100644 --- a/cyclonedx_py/_internal/utils/pep639.py +++ b/cyclonedx_py/_internal/utils/pep639.py @@ -107,6 +107,8 @@ def dist2licenses_from_files( def _make_license_from_content(file_name: str, content: Union[str, bytes], lack: 'LicenseAcknowledgement') -> DisjunctiveLicense: + # Per PEP 639 spec, license files are human-readable texts. + # But in reality, we found non-printable bytes in some files! # In the past, we did best-effort decoding to string, # see https://github.com/CycloneDX/cyclonedx-python/blob/b7a8f64ae212c5a5fd6b7cf8c83851ba692df256/cyclonedx_py/_internal/utils/pep639.py#L67-L71 # noqa:E501 # But this was dropped, in favour of base64 encoding; CycloneDX is for machines, not humans! @@ -117,8 +119,6 @@ def _make_license_from_content(file_name: str, content: Union[str, bytes], text=AttachedText( content_type=content_type, encoding=Encoding.BASE_64, - # Per PEP 639 spec, license files are human-readable texts. - # But in reality, we found non-printable bytes in some files! content=b64encode( content if isinstance(content, bytes) From b0cf21721fdd67490c18362d68bba4307bcaca3b Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Thu, 10 Jul 2025 11:08:02 +0200 Subject: [PATCH 44/49] cov Signed-off-by: Jan Kowalleck --- cyclonedx_py/_internal/py_interop/packagemetadata.py | 2 +- cyclonedx_py/_internal/utils/pep621.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cyclonedx_py/_internal/py_interop/packagemetadata.py b/cyclonedx_py/_internal/py_interop/packagemetadata.py index 792781f4f..25b07c0fa 100644 --- a/cyclonedx_py/_internal/py_interop/packagemetadata.py +++ b/cyclonedx_py/_internal/py_interop/packagemetadata.py @@ -19,7 +19,7 @@ from typing import TYPE_CHECKING -if TYPE_CHECKING: +if TYPE_CHECKING: # pragma: nocover import sys if sys.version_info >= (3, 10): diff --git a/cyclonedx_py/_internal/utils/pep621.py b/cyclonedx_py/_internal/utils/pep621.py index 337a58ea5..add8ab8c8 100644 --- a/cyclonedx_py/_internal/utils/pep621.py +++ b/cyclonedx_py/_internal/utils/pep621.py @@ -39,7 +39,7 @@ from .license_trove_classifier import is_license_trove, license_trove2spdx from .mimetypes import guess_type -if TYPE_CHECKING: +if TYPE_CHECKING: # pragma: nocover from cyclonedx.factory.license import LicenseFactory from cyclonedx.model.component import ComponentType from cyclonedx.model.license import License From 571d0dd75255c197bb3419408ae3eb5812135a25 Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Thu, 10 Jul 2025 11:30:12 +0200 Subject: [PATCH 45/49] docs Signed-off-by: Jan Kowalleck --- cyclonedx_py/_internal/utils/packaging.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cyclonedx_py/_internal/utils/packaging.py b/cyclonedx_py/_internal/utils/packaging.py index 2501886ed..27341c4af 100644 --- a/cyclonedx_py/_internal/utils/packaging.py +++ b/cyclonedx_py/_internal/utils/packaging.py @@ -38,10 +38,12 @@ def metadata2licenses(metadata: 'PackageMetadata', lfac: 'LicenseFactory', ) -> Generator['License', None, None]: lack = LicenseAcknowledgement.DECLARED if (lexp := metadata.get('License-Expression')) is not None: + # see https://packaging.python.org/en/latest/specifications/license-expression/ # see spec: https://peps.python.org/pep-0639/#add-license-expression-field yield lfac.make_from_string(lexp, license_acknowledgement=lack) - else: # per PEP630, if License-Expression exists, the deprecated declarations MUST be ignored + # Per PEP 639: if License-Expression exists, the deprecated declarations MUST be ignored + else: if 'Classifier' in metadata: # see spec: https://packaging.python.org/en/latest/specifications/core-metadata/#classifier-multiple-use classifiers: list[str] = metadata.get_all('Classifier') # type:ignore[assignment] From 95ea661cc220aca426bb6bdae13ba956959fc8a7 Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Thu, 10 Jul 2025 11:32:42 +0200 Subject: [PATCH 46/49] docs Signed-off-by: Jan Kowalleck --- cyclonedx_py/_internal/utils/packaging.py | 1 + 1 file changed, 1 insertion(+) diff --git a/cyclonedx_py/_internal/utils/packaging.py b/cyclonedx_py/_internal/utils/packaging.py index 27341c4af..258547cf8 100644 --- a/cyclonedx_py/_internal/utils/packaging.py +++ b/cyclonedx_py/_internal/utils/packaging.py @@ -40,6 +40,7 @@ def metadata2licenses(metadata: 'PackageMetadata', lfac: 'LicenseFactory', if (lexp := metadata.get('License-Expression')) is not None: # see https://packaging.python.org/en/latest/specifications/license-expression/ # see spec: https://peps.python.org/pep-0639/#add-license-expression-field + # use `make_from_string` to have simple SPDX expressions that are just one disjunctive license be simplified in the process yield lfac.make_from_string(lexp, license_acknowledgement=lack) # Per PEP 639: if License-Expression exists, the deprecated declarations MUST be ignored From e82e7377c92b6f1cfe065b3e61e802d0888f0ae5 Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Thu, 10 Jul 2025 11:39:23 +0200 Subject: [PATCH 47/49] cov Signed-off-by: Jan Kowalleck --- cyclonedx_py/_internal/utils/pep639.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cyclonedx_py/_internal/utils/pep639.py b/cyclonedx_py/_internal/utils/pep639.py index f5fd3e482..9569241eb 100644 --- a/cyclonedx_py/_internal/utils/pep639.py +++ b/cyclonedx_py/_internal/utils/pep639.py @@ -96,7 +96,7 @@ def dist2licenses_from_files( except UnicodeDecodeError as err: content = err.object break # for-loop - except Exception: + except Exception: # pragma: nocover pass # nosec B110 if content is None: # pragma: no cover logger.debug('Error: failed to read license file %r for dist %r', From 611a5f605bca73b12bf29cc2569752f884b7d91c Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Thu, 10 Jul 2025 11:41:54 +0200 Subject: [PATCH 48/49] docs Signed-off-by: Jan Kowalleck --- cyclonedx_py/_internal/utils/packaging.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cyclonedx_py/_internal/utils/packaging.py b/cyclonedx_py/_internal/utils/packaging.py index 258547cf8..7e0ce08df 100644 --- a/cyclonedx_py/_internal/utils/packaging.py +++ b/cyclonedx_py/_internal/utils/packaging.py @@ -40,7 +40,8 @@ def metadata2licenses(metadata: 'PackageMetadata', lfac: 'LicenseFactory', if (lexp := metadata.get('License-Expression')) is not None: # see https://packaging.python.org/en/latest/specifications/license-expression/ # see spec: https://peps.python.org/pep-0639/#add-license-expression-field - # use `make_from_string` to have simple SPDX expressions that are just one disjunctive license be simplified in the process + # Use `make_from_string` to have simple SPDX expressions that are just one disjunctive license + # to be simplified to a CycloneDX license it. yield lfac.make_from_string(lexp, license_acknowledgement=lack) # Per PEP 639: if License-Expression exists, the deprecated declarations MUST be ignored From c4422c5576f421a085eb8eeb29c0341f358890df Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Thu, 10 Jul 2025 12:05:58 +0200 Subject: [PATCH 49/49] docs Signed-off-by: Jan Kowalleck --- cyclonedx_py/_internal/utils/packaging.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cyclonedx_py/_internal/utils/packaging.py b/cyclonedx_py/_internal/utils/packaging.py index 7e0ce08df..0b51003ef 100644 --- a/cyclonedx_py/_internal/utils/packaging.py +++ b/cyclonedx_py/_internal/utils/packaging.py @@ -41,7 +41,8 @@ def metadata2licenses(metadata: 'PackageMetadata', lfac: 'LicenseFactory', # see https://packaging.python.org/en/latest/specifications/license-expression/ # see spec: https://peps.python.org/pep-0639/#add-license-expression-field # Use `make_from_string` to have simple SPDX expressions that are just one disjunctive license - # to be simplified to a CycloneDX license it. + # to be simplified to a CycloneDX license ID. And we get error resilence for free, as invalid + # expressions are converted to CycloneDX named licenses. yield lfac.make_from_string(lexp, license_acknowledgement=lack) # Per PEP 639: if License-Expression exists, the deprecated declarations MUST be ignored