{
  "@context": "https://spdx.org/rdf/3.0.1/spdx-context.jsonld",
  "@graph": [
    {
      "@id": "_:creationInfo_1",
      "type": "CreationInfo",
      "specVersion": "3.0.1",
      "createdBy": [
        "https://anchore.com/syft/dir/repo/openeuler/openEuler-24.03-LTS-SP4/EPOL/main/aarch64-a81892d8-2d31-4c01-871d-ea68d5d8a00c-specv3/SPDXRef-gnrtd2"
      ],
      "createdUsing": [
        "https://anchore.com/syft/dir/repo/openeuler/openEuler-24.03-LTS-SP4/EPOL/main/aarch64-a81892d8-2d31-4c01-871d-ea68d5d8a00c-specv3/additionalToolSPDXRef-gnrtd3"
      ],
      "created": "2026-07-04T06:27:27Z"
    },
    {
      "@id": "_:creationInfo_0",
      "type": "CreationInfo",
      "specVersion": "3.0.1",
      "createdBy": [
        "https://anchore.com/syft/dir/repo/openeuler/openEuler-24.03-LTS-SP4/EPOL/main/aarch64-a81892d8-2d31-4c01-871d-ea68d5d8a00c-specv3/SPDXRef-gnrtd0"
      ],
      "createdUsing": [
        "https://anchore.com/syft/dir/repo/openeuler/openEuler-24.03-LTS-SP4/EPOL/main/aarch64-a81892d8-2d31-4c01-871d-ea68d5d8a00c-specv3/additionalToolSPDXRef-gnrtd1"
      ],
      "created": "2026-07-04T06:27:27Z"
    },
    {
      "spdxId": "https://anchore.com/syft/dir/repo/openeuler/openEuler-24.03-LTS-SP4/EPOL/main/aarch64-a81892d8-2d31-4c01-871d-ea68d5d8a00c-specv3/SPDXRef-gnrtd23435",
      "type": "Relationship",
      "relationshipType": "hasDeclaredLicense",
      "to": [
        "https://anchore.com/syft/dir/repo/openeuler/openEuler-24.03-LTS-SP4/EPOL/main/aarch64-a81892d8-2d31-4c01-871d-ea68d5d8a00c-specv3/SPDXRef-gnrtd23436"
      ],
      "from": "https://anchore.com/syft/dir/repo/openeuler/openEuler-24.03-LTS-SP4/EPOL/main/aarch64-a81892d8-2d31-4c01-871d-ea68d5d8a00c-specv3/SPDXRef-gnrtd23431",
      "creationInfo": "_:creationInfo_0"
    },
    {
      "spdxId": "https://anchore.com/syft/dir/repo/openeuler/openEuler-24.03-LTS-SP4/EPOL/main/aarch64-a81892d8-2d31-4c01-871d-ea68d5d8a00c-specv3/SPDXRef-gnrtd23432",
      "type": "Relationship",
      "relationshipType": "hasConcludedLicense",
      "to": [
        "https://anchore.com/syft/dir/repo/openeuler/openEuler-24.03-LTS-SP4/EPOL/main/aarch64-a81892d8-2d31-4c01-871d-ea68d5d8a00c-specv3/SPDXRef-gnrtd23433"
      ],
      "from": "https://anchore.com/syft/dir/repo/openeuler/openEuler-24.03-LTS-SP4/EPOL/main/aarch64-a81892d8-2d31-4c01-871d-ea68d5d8a00c-specv3/SPDXRef-gnrtd23431",
      "creationInfo": "_:creationInfo_0"
    },
    {
      "spdxId": "https://anchore.com/syft/dir/repo/openeuler/openEuler-24.03-LTS-SP4/EPOL/main/aarch64-a81892d8-2d31-4c01-871d-ea68d5d8a00c-specv3/SPDXRef-gnrtd23436",
      "type": "simplelicensing_LicenseExpression",
      "simplelicensing_licenseExpression": "BSD",
      "creationInfo": "_:creationInfo_0"
    },
    {
      "spdxId": "https://anchore.com/syft/dir/repo/openeuler/openEuler-24.03-LTS-SP4/EPOL/main/aarch64-a81892d8-2d31-4c01-871d-ea68d5d8a00c-specv3/SPDXRef-gnrtd23433",
      "type": "simplelicensing_LicenseExpression",
      "simplelicensing_licenseExpression": "BSD",
      "creationInfo": "_:creationInfo_0"
    },
    {
      "spdxId": "https://anchore.com/syft/dir/repo/openeuler/openEuler-24.03-LTS-SP4/EPOL/main/aarch64-a81892d8-2d31-4c01-871d-ea68d5d8a00c-specv3/SPDXRef-gnrtd23434",
      "type": "Organization",
      "name": "http://openeuler.org",
      "creationInfo": "_:creationInfo_0"
    },
    {
      "spdxId": "https://anchore.com/syft/dir/repo/openeuler/openEuler-24.03-LTS-SP4/EPOL/main/aarch64-a81892d8-2d31-4c01-871d-ea68d5d8a00c-specv3/SPDXRef-gnrtd23431",
      "type": "software_Package",
      "software_copyrightText": "",
      "suppliedBy": "https://anchore.com/syft/dir/repo/openeuler/openEuler-24.03-LTS-SP4/EPOL/main/aarch64-a81892d8-2d31-4c01-871d-ea68d5d8a00c-specv3/SPDXRef-gnrtd23434",
      "software_downloadLocation": "NOASSERTION",
      "summary": "Python mocking framework",
      "software_packageVersion": "0:1.3.0-1.oe2403sp4",
      "software_homePage": "http://github.com/vmalloc/pyforge",
      "description": "What is it? Forge is a mocking library for Python. It draws most of its\ninspiration from Mox ( It is aimed to be simple, but still feature-rich, and\nprovide maximum flexibility for unit testing using the mock approach.Running\nForge's Acceptance Suite All of Forge's acceptance tests are in the tests/\ndirectory under the root. They require either unittest2 or the built-in unittest\nmodule (2.7/3.2 and above).Running the tests is recommended with the\n*nosetestsscript, but in case you don't have it, the *run_testsscript can be\nused instead.",
      "name": "python-pyforge-help",
      "software_sourceInfo": "acquired package info from repodata DB: repodata/f0b2606f1dc0294014b17bb8ea9231f0129611b4c9610b9db40f82da2b1f63da-primary.sqlite.bz2",
      "software_packageUrl": "pkg:rpm/python-pyforge-help@1.3.0-1.oe2403sp4?arch=noarch&epoch=0&upstream=python-pyforge-1.3.0-1.oe2403sp4.src.rpm",
      "creationInfo": "_:creationInfo_0"
    },
    {
      "spdxId": "https://anchore.com/syft/dir/repo/openeuler/openEuler-24.03-LTS-SP4/EPOL/main/aarch64-a81892d8-2d31-4c01-871d-ea68d5d8a00c-specv3/additionalToolSPDXRef-gnrtd1",
      "type": "Tool",
      "name": "syft-[not provided]",
      "creationInfo": "_:creationInfo_0"
    },
    {
      "spdxId": "https://anchore.com/syft/dir/repo/openeuler/openEuler-24.03-LTS-SP4/EPOL/main/aarch64-a81892d8-2d31-4c01-871d-ea68d5d8a00c-specv3/additionalToolSPDXRef-gnrtd3",
      "type": "Tool",
      "name": "syft-[not provided]",
      "creationInfo": "_:creationInfo_1"
    }
  ]
}