compspec-containment


Namecompspec-containment JSON
Version 0.0.1 PyPI version JSON
download
home_pagehttps://github.com/compspec/compspec-containment
SummarySubsystem graph generation for the Flux containment subsystem
upload_time2025-09-15 18:16:29
maintainerVanessa Sochat
docs_urlNone
authorVanessa Sochat
requires_pythonNone
licenseLICENSE
keywords compatibility compspec containment flux subsystem scheduling hpc
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Compspec Containment

<p align="center">
  <img height="300" src="https://raw.githubusercontent.com/compspec/spec/main/img/compspec-circle.png">
</p>

[![PyPI version](https://badge.fury.io/py/compspec-containment.svg)](https://badge.fury.io/py/compspec-containment)

A compspec (Composition spec) is a specification and model for comparing things. Compspec containment is
a plugin for extraction of the Flux Framework containment subsystem, which means verices (cluster, racks, nodes, sockets, cores, etc) and edges between them that describe relationships (e.g., "contains"). Other cluster types can be added and they will need to have an intermediate translation into a graph. To learn more:

 - [Compspec](https://github.com/compspec/compspec): the Python library that discovers and loads this plugin.

## Usage

Install compspec and the plugin here:

```bash
pip install compspec
pip install compspec-containment
```

In the dev container, try running an extraction for the Flux instance running:

```bash
flux start --test-size=4
compspec extract containment
```

To save to file:

```bash
# This extracts a cluster named "a"
compspec extract --outfile containment-subsystem.json containment a
```

You can see the example [example/containment-subsystem.json](example/containment-subsystem.json).

<details>

<summary>compspec-containment output</summary>

```console
{
    "graph": {
        "directed": false,
        "metadata": {
            "type": "containment",
            "name": "a",
            "install_name": "compat-experiment"
        },
        "nodes": [
            {
                "id": "0",
                "metadata": {
                    "type": "cluster",
                    "paths": {
                        "containment": "/cluster0"
                    }
                }
            },
            {
                "id": "1",
                "metadata": {
                    "type": "node",
                    "name": "039b58a80799",
                    "rank": 0,
                    "paths": {
                        "containment": "/cluster0/039b58a80799"
                    }
                }
            },
            {
                "id": "2",
                "metadata": {
                    "type": "core",
                    "id": 0,
                    "rank": 0,
                    "paths": {
                        "containment": "/cluster0/039b58a80799/core0"
                    }
                }
            },
            {
                "id": "3",
                "metadata": {
                    "type": "core",
                    "id": 1,
                    "rank": 0,
                    "paths": {
                        "containment": "/cluster0/039b58a80799/core1"
                    }
                }
            },
            {
                "id": "4",
                "metadata": {
                    "type": "core",
                    "id": 2,
                    "rank": 0,
                    "paths": {
                        "containment": "/cluster0/039b58a80799/core2"
                    }
                }
            },
            {
                "id": "5",
                "metadata": {
                    "type": "core",
                    "id": 3,
                    "rank": 0,
                    "paths": {
                        "containment": "/cluster0/039b58a80799/core3"
                    }
                }
            },
            {
                "id": "6",
                "metadata": {
                    "type": "core",
                    "id": 4,
                    "rank": 0,
                    "paths": {
                        "containment": "/cluster0/039b58a80799/core4"
                    }
                }
            },
            {
                "id": "7",
                "metadata": {
                    "type": "core",
                    "id": 5,
                    "rank": 0,
                    "paths": {
                        "containment": "/cluster0/039b58a80799/core5"
                    }
                }
            },
            {
                "id": "8",
                "metadata": {
                    "type": "core",
                    "id": 6,
                    "rank": 0,
                    "paths": {
                        "containment": "/cluster0/039b58a80799/core6"
                    }
                }
            },
            {
                "id": "9",
                "metadata": {
                    "type": "core",
                    "id": 7,
                    "rank": 0,
                    "paths": {
                        "containment": "/cluster0/039b58a80799/core7"
                    }
                }
            },
            {
                "id": "10",
                "metadata": {
                    "type": "node",
                    "name": "039b58a80799",
                    "rank": 1,
                    "paths": {
                        "containment": "/cluster0/039b58a80799"
                    }
                }
            },
            {
                "id": "11",
                "metadata": {
                    "type": "core",
                    "id": 0,
                    "rank": 1,
                    "paths": {
                        "containment": "/cluster0/039b58a80799/core0"
                    }
                }
            },
            {
                "id": "12",
                "metadata": {
                    "type": "core",
                    "id": 1,
                    "rank": 1,
                    "paths": {
                        "containment": "/cluster0/039b58a80799/core1"
                    }
                }
            },
            {
                "id": "13",
                "metadata": {
                    "type": "core",
                    "id": 2,
                    "rank": 1,
                    "paths": {
                        "containment": "/cluster0/039b58a80799/core2"
                    }
                }
            },
            {
                "id": "14",
                "metadata": {
                    "type": "core",
                    "id": 3,
                    "rank": 1,
                    "paths": {
                        "containment": "/cluster0/039b58a80799/core3"
                    }
                }
            },
            {
                "id": "15",
                "metadata": {
                    "type": "core",
                    "id": 4,
                    "rank": 1,
                    "paths": {
                        "containment": "/cluster0/039b58a80799/core4"
                    }
                }
            },
            {
                "id": "16",
                "metadata": {
                    "type": "core",
                    "id": 5,
                    "rank": 1,
                    "paths": {
                        "containment": "/cluster0/039b58a80799/core5"
                    }
                }
            },
            {
                "id": "17",
                "metadata": {
                    "type": "core",
                    "id": 6,
                    "rank": 1,
                    "paths": {
                        "containment": "/cluster0/039b58a80799/core6"
                    }
                }
            },
            {
                "id": "18",
                "metadata": {
                    "type": "core",
                    "id": 7,
                    "rank": 1,
                    "paths": {
                        "containment": "/cluster0/039b58a80799/core7"
                    }
                }
            },
            {
                "id": "19",
                "metadata": {
                    "type": "node",
                    "name": "039b58a80799",
                    "rank": 2,
                    "paths": {
                        "containment": "/cluster0/039b58a80799"
                    }
                }
            },
            {
                "id": "20",
                "metadata": {
                    "type": "core",
                    "id": 0,
                    "rank": 2,
                    "paths": {
                        "containment": "/cluster0/039b58a80799/core0"
                    }
                }
            },
            {
                "id": "21",
                "metadata": {
                    "type": "core",
                    "id": 1,
                    "rank": 2,
                    "paths": {
                        "containment": "/cluster0/039b58a80799/core1"
                    }
                }
            },
            {
                "id": "22",
                "metadata": {
                    "type": "core",
                    "id": 2,
                    "rank": 2,
                    "paths": {
                        "containment": "/cluster0/039b58a80799/core2"
                    }
                }
            },
            {
                "id": "23",
                "metadata": {
                    "type": "core",
                    "id": 3,
                    "rank": 2,
                    "paths": {
                        "containment": "/cluster0/039b58a80799/core3"
                    }
                }
            },
            {
                "id": "24",
                "metadata": {
                    "type": "core",
                    "id": 4,
                    "rank": 2,
                    "paths": {
                        "containment": "/cluster0/039b58a80799/core4"
                    }
                }
            },
            {
                "id": "25",
                "metadata": {
                    "type": "core",
                    "id": 5,
                    "rank": 2,
                    "paths": {
                        "containment": "/cluster0/039b58a80799/core5"
                    }
                }
            },
            {
                "id": "26",
                "metadata": {
                    "type": "core",
                    "id": 6,
                    "rank": 2,
                    "paths": {
                        "containment": "/cluster0/039b58a80799/core6"
                    }
                }
            },
            {
                "id": "27",
                "metadata": {
                    "type": "core",
                    "id": 7,
                    "rank": 2,
                    "paths": {
                        "containment": "/cluster0/039b58a80799/core7"
                    }
                }
            },
            {
                "id": "28",
                "metadata": {
                    "type": "node",
                    "name": "039b58a80799",
                    "rank": 3,
                    "paths": {
                        "containment": "/cluster0/039b58a80799"
                    }
                }
            },
            {
                "id": "29",
                "metadata": {
                    "type": "core",
                    "id": 0,
                    "rank": 3,
                    "paths": {
                        "containment": "/cluster0/039b58a80799/core0"
                    }
                }
            },
            {
                "id": "30",
                "metadata": {
                    "type": "core",
                    "id": 1,
                    "rank": 3,
                    "paths": {
                        "containment": "/cluster0/039b58a80799/core1"
                    }
                }
            },
            {
                "id": "31",
                "metadata": {
                    "type": "core",
                    "id": 2,
                    "rank": 3,
                    "paths": {
                        "containment": "/cluster0/039b58a80799/core2"
                    }
                }
            },
            {
                "id": "32",
                "metadata": {
                    "type": "core",
                    "id": 3,
                    "rank": 3,
                    "paths": {
                        "containment": "/cluster0/039b58a80799/core3"
                    }
                }
            },
            {
                "id": "33",
                "metadata": {
                    "type": "core",
                    "id": 4,
                    "rank": 3,
                    "paths": {
                        "containment": "/cluster0/039b58a80799/core4"
                    }
                }
            },
            {
                "id": "34",
                "metadata": {
                    "type": "core",
                    "id": 5,
                    "rank": 3,
                    "paths": {
                        "containment": "/cluster0/039b58a80799/core5"
                    }
                }
            },
            {
                "id": "35",
                "metadata": {
                    "type": "core",
                    "id": 6,
                    "rank": 3,
                    "paths": {
                        "containment": "/cluster0/039b58a80799/core6"
                    }
                }
            },
            {
                "id": "36",
                "metadata": {
                    "type": "core",
                    "id": 7,
                    "rank": 3,
                    "paths": {
                        "containment": "/cluster0/039b58a80799/core7"
                    }
                }
            }
        ],
        "edges": [
            {
                "source": "0",
                "target": "1"
            },
            {
                "source": "1",
                "target": "2"
            },
            {
                "source": "1",
                "target": "3"
            },
            {
                "source": "1",
                "target": "4"
            },
            {
                "source": "1",
                "target": "5"
            },
            {
                "source": "1",
                "target": "6"
            },
            {
                "source": "1",
                "target": "7"
            },
            {
                "source": "1",
                "target": "8"
            },
            {
                "source": "1",
                "target": "9"
            },
            {
                "source": "0",
                "target": "10"
            },
            {
                "source": "10",
                "target": "11"
            },
            {
                "source": "10",
                "target": "12"
            },
            {
                "source": "10",
                "target": "13"
            },
            {
                "source": "10",
                "target": "14"
            },
            {
                "source": "10",
                "target": "15"
            },
            {
                "source": "10",
                "target": "16"
            },
            {
                "source": "10",
                "target": "17"
            },
            {
                "source": "10",
                "target": "18"
            },
            {
                "source": "0",
                "target": "19"
            },
            {
                "source": "19",
                "target": "20"
            },
            {
                "source": "19",
                "target": "21"
            },
            {
                "source": "19",
                "target": "22"
            },
            {
                "source": "19",
                "target": "23"
            },
            {
                "source": "19",
                "target": "24"
            },
            {
                "source": "19",
                "target": "25"
            },
            {
                "source": "19",
                "target": "26"
            },
            {
                "source": "19",
                "target": "27"
            },
            {
                "source": "0",
                "target": "28"
            },
            {
                "source": "28",
                "target": "29"
            },
            {
                "source": "28",
                "target": "30"
            },
            {
                "source": "28",
                "target": "31"
            },
            {
                "source": "28",
                "target": "32"
            },
            {
                "source": "28",
                "target": "33"
            },
            {
                "source": "28",
                "target": "34"
            },
            {
                "source": "28",
                "target": "35"
            },
            {
                "source": "28",
                "target": "36"
            }
        ]
    }
}
```

</details>



## License

HPCIC DevTools is distributed under the terms of the MIT license.
All new contributions must be made under this license.

See [LICENSE](https://github.com/converged-computing/cloud-select/blob/main/LICENSE),
[COPYRIGHT](https://github.com/converged-computing/cloud-select/blob/main/COPYRIGHT), and
[NOTICE](https://github.com/converged-computing/cloud-select/blob/main/NOTICE) for details.

SPDX-License-Identifier: (MIT)

LLNL-CODE- 842614

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/compspec/compspec-containment",
    "name": "compspec-containment",
    "maintainer": "Vanessa Sochat",
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": "compatibility, compspec, containment, flux, subsystem, scheduling, hpc",
    "author": "Vanessa Sochat",
    "author_email": "vsoch@users.noreply.github.com",
    "download_url": "https://files.pythonhosted.org/packages/ac/6a/0d14c1ffc7e86212b68de8ea311deb7b3fafe2fac690a9951cedcbf84be2/compspec_containment-0.0.1.tar.gz",
    "platform": null,
    "description": "# Compspec Containment\n\n<p align=\"center\">\n  <img height=\"300\" src=\"https://raw.githubusercontent.com/compspec/spec/main/img/compspec-circle.png\">\n</p>\n\n[![PyPI version](https://badge.fury.io/py/compspec-containment.svg)](https://badge.fury.io/py/compspec-containment)\n\nA compspec (Composition spec) is a specification and model for comparing things. Compspec containment is\na plugin for extraction of the Flux Framework containment subsystem, which means verices (cluster, racks, nodes, sockets, cores, etc) and edges between them that describe relationships (e.g., \"contains\"). Other cluster types can be added and they will need to have an intermediate translation into a graph. To learn more:\n\n - [Compspec](https://github.com/compspec/compspec): the Python library that discovers and loads this plugin.\n\n## Usage\n\nInstall compspec and the plugin here:\n\n```bash\npip install compspec\npip install compspec-containment\n```\n\nIn the dev container, try running an extraction for the Flux instance running:\n\n```bash\nflux start --test-size=4\ncompspec extract containment\n```\n\nTo save to file:\n\n```bash\n# This extracts a cluster named \"a\"\ncompspec extract --outfile containment-subsystem.json containment a\n```\n\nYou can see the example [example/containment-subsystem.json](example/containment-subsystem.json).\n\n<details>\n\n<summary>compspec-containment output</summary>\n\n```console\n{\n    \"graph\": {\n        \"directed\": false,\n        \"metadata\": {\n            \"type\": \"containment\",\n            \"name\": \"a\",\n            \"install_name\": \"compat-experiment\"\n        },\n        \"nodes\": [\n            {\n                \"id\": \"0\",\n                \"metadata\": {\n                    \"type\": \"cluster\",\n                    \"paths\": {\n                        \"containment\": \"/cluster0\"\n                    }\n                }\n            },\n            {\n                \"id\": \"1\",\n                \"metadata\": {\n                    \"type\": \"node\",\n                    \"name\": \"039b58a80799\",\n                    \"rank\": 0,\n                    \"paths\": {\n                        \"containment\": \"/cluster0/039b58a80799\"\n                    }\n                }\n            },\n            {\n                \"id\": \"2\",\n                \"metadata\": {\n                    \"type\": \"core\",\n                    \"id\": 0,\n                    \"rank\": 0,\n                    \"paths\": {\n                        \"containment\": \"/cluster0/039b58a80799/core0\"\n                    }\n                }\n            },\n            {\n                \"id\": \"3\",\n                \"metadata\": {\n                    \"type\": \"core\",\n                    \"id\": 1,\n                    \"rank\": 0,\n                    \"paths\": {\n                        \"containment\": \"/cluster0/039b58a80799/core1\"\n                    }\n                }\n            },\n            {\n                \"id\": \"4\",\n                \"metadata\": {\n                    \"type\": \"core\",\n                    \"id\": 2,\n                    \"rank\": 0,\n                    \"paths\": {\n                        \"containment\": \"/cluster0/039b58a80799/core2\"\n                    }\n                }\n            },\n            {\n                \"id\": \"5\",\n                \"metadata\": {\n                    \"type\": \"core\",\n                    \"id\": 3,\n                    \"rank\": 0,\n                    \"paths\": {\n                        \"containment\": \"/cluster0/039b58a80799/core3\"\n                    }\n                }\n            },\n            {\n                \"id\": \"6\",\n                \"metadata\": {\n                    \"type\": \"core\",\n                    \"id\": 4,\n                    \"rank\": 0,\n                    \"paths\": {\n                        \"containment\": \"/cluster0/039b58a80799/core4\"\n                    }\n                }\n            },\n            {\n                \"id\": \"7\",\n                \"metadata\": {\n                    \"type\": \"core\",\n                    \"id\": 5,\n                    \"rank\": 0,\n                    \"paths\": {\n                        \"containment\": \"/cluster0/039b58a80799/core5\"\n                    }\n                }\n            },\n            {\n                \"id\": \"8\",\n                \"metadata\": {\n                    \"type\": \"core\",\n                    \"id\": 6,\n                    \"rank\": 0,\n                    \"paths\": {\n                        \"containment\": \"/cluster0/039b58a80799/core6\"\n                    }\n                }\n            },\n            {\n                \"id\": \"9\",\n                \"metadata\": {\n                    \"type\": \"core\",\n                    \"id\": 7,\n                    \"rank\": 0,\n                    \"paths\": {\n                        \"containment\": \"/cluster0/039b58a80799/core7\"\n                    }\n                }\n            },\n            {\n                \"id\": \"10\",\n                \"metadata\": {\n                    \"type\": \"node\",\n                    \"name\": \"039b58a80799\",\n                    \"rank\": 1,\n                    \"paths\": {\n                        \"containment\": \"/cluster0/039b58a80799\"\n                    }\n                }\n            },\n            {\n                \"id\": \"11\",\n                \"metadata\": {\n                    \"type\": \"core\",\n                    \"id\": 0,\n                    \"rank\": 1,\n                    \"paths\": {\n                        \"containment\": \"/cluster0/039b58a80799/core0\"\n                    }\n                }\n            },\n            {\n                \"id\": \"12\",\n                \"metadata\": {\n                    \"type\": \"core\",\n                    \"id\": 1,\n                    \"rank\": 1,\n                    \"paths\": {\n                        \"containment\": \"/cluster0/039b58a80799/core1\"\n                    }\n                }\n            },\n            {\n                \"id\": \"13\",\n                \"metadata\": {\n                    \"type\": \"core\",\n                    \"id\": 2,\n                    \"rank\": 1,\n                    \"paths\": {\n                        \"containment\": \"/cluster0/039b58a80799/core2\"\n                    }\n                }\n            },\n            {\n                \"id\": \"14\",\n                \"metadata\": {\n                    \"type\": \"core\",\n                    \"id\": 3,\n                    \"rank\": 1,\n                    \"paths\": {\n                        \"containment\": \"/cluster0/039b58a80799/core3\"\n                    }\n                }\n            },\n            {\n                \"id\": \"15\",\n                \"metadata\": {\n                    \"type\": \"core\",\n                    \"id\": 4,\n                    \"rank\": 1,\n                    \"paths\": {\n                        \"containment\": \"/cluster0/039b58a80799/core4\"\n                    }\n                }\n            },\n            {\n                \"id\": \"16\",\n                \"metadata\": {\n                    \"type\": \"core\",\n                    \"id\": 5,\n                    \"rank\": 1,\n                    \"paths\": {\n                        \"containment\": \"/cluster0/039b58a80799/core5\"\n                    }\n                }\n            },\n            {\n                \"id\": \"17\",\n                \"metadata\": {\n                    \"type\": \"core\",\n                    \"id\": 6,\n                    \"rank\": 1,\n                    \"paths\": {\n                        \"containment\": \"/cluster0/039b58a80799/core6\"\n                    }\n                }\n            },\n            {\n                \"id\": \"18\",\n                \"metadata\": {\n                    \"type\": \"core\",\n                    \"id\": 7,\n                    \"rank\": 1,\n                    \"paths\": {\n                        \"containment\": \"/cluster0/039b58a80799/core7\"\n                    }\n                }\n            },\n            {\n                \"id\": \"19\",\n                \"metadata\": {\n                    \"type\": \"node\",\n                    \"name\": \"039b58a80799\",\n                    \"rank\": 2,\n                    \"paths\": {\n                        \"containment\": \"/cluster0/039b58a80799\"\n                    }\n                }\n            },\n            {\n                \"id\": \"20\",\n                \"metadata\": {\n                    \"type\": \"core\",\n                    \"id\": 0,\n                    \"rank\": 2,\n                    \"paths\": {\n                        \"containment\": \"/cluster0/039b58a80799/core0\"\n                    }\n                }\n            },\n            {\n                \"id\": \"21\",\n                \"metadata\": {\n                    \"type\": \"core\",\n                    \"id\": 1,\n                    \"rank\": 2,\n                    \"paths\": {\n                        \"containment\": \"/cluster0/039b58a80799/core1\"\n                    }\n                }\n            },\n            {\n                \"id\": \"22\",\n                \"metadata\": {\n                    \"type\": \"core\",\n                    \"id\": 2,\n                    \"rank\": 2,\n                    \"paths\": {\n                        \"containment\": \"/cluster0/039b58a80799/core2\"\n                    }\n                }\n            },\n            {\n                \"id\": \"23\",\n                \"metadata\": {\n                    \"type\": \"core\",\n                    \"id\": 3,\n                    \"rank\": 2,\n                    \"paths\": {\n                        \"containment\": \"/cluster0/039b58a80799/core3\"\n                    }\n                }\n            },\n            {\n                \"id\": \"24\",\n                \"metadata\": {\n                    \"type\": \"core\",\n                    \"id\": 4,\n                    \"rank\": 2,\n                    \"paths\": {\n                        \"containment\": \"/cluster0/039b58a80799/core4\"\n                    }\n                }\n            },\n            {\n                \"id\": \"25\",\n                \"metadata\": {\n                    \"type\": \"core\",\n                    \"id\": 5,\n                    \"rank\": 2,\n                    \"paths\": {\n                        \"containment\": \"/cluster0/039b58a80799/core5\"\n                    }\n                }\n            },\n            {\n                \"id\": \"26\",\n                \"metadata\": {\n                    \"type\": \"core\",\n                    \"id\": 6,\n                    \"rank\": 2,\n                    \"paths\": {\n                        \"containment\": \"/cluster0/039b58a80799/core6\"\n                    }\n                }\n            },\n            {\n                \"id\": \"27\",\n                \"metadata\": {\n                    \"type\": \"core\",\n                    \"id\": 7,\n                    \"rank\": 2,\n                    \"paths\": {\n                        \"containment\": \"/cluster0/039b58a80799/core7\"\n                    }\n                }\n            },\n            {\n                \"id\": \"28\",\n                \"metadata\": {\n                    \"type\": \"node\",\n                    \"name\": \"039b58a80799\",\n                    \"rank\": 3,\n                    \"paths\": {\n                        \"containment\": \"/cluster0/039b58a80799\"\n                    }\n                }\n            },\n            {\n                \"id\": \"29\",\n                \"metadata\": {\n                    \"type\": \"core\",\n                    \"id\": 0,\n                    \"rank\": 3,\n                    \"paths\": {\n                        \"containment\": \"/cluster0/039b58a80799/core0\"\n                    }\n                }\n            },\n            {\n                \"id\": \"30\",\n                \"metadata\": {\n                    \"type\": \"core\",\n                    \"id\": 1,\n                    \"rank\": 3,\n                    \"paths\": {\n                        \"containment\": \"/cluster0/039b58a80799/core1\"\n                    }\n                }\n            },\n            {\n                \"id\": \"31\",\n                \"metadata\": {\n                    \"type\": \"core\",\n                    \"id\": 2,\n                    \"rank\": 3,\n                    \"paths\": {\n                        \"containment\": \"/cluster0/039b58a80799/core2\"\n                    }\n                }\n            },\n            {\n                \"id\": \"32\",\n                \"metadata\": {\n                    \"type\": \"core\",\n                    \"id\": 3,\n                    \"rank\": 3,\n                    \"paths\": {\n                        \"containment\": \"/cluster0/039b58a80799/core3\"\n                    }\n                }\n            },\n            {\n                \"id\": \"33\",\n                \"metadata\": {\n                    \"type\": \"core\",\n                    \"id\": 4,\n                    \"rank\": 3,\n                    \"paths\": {\n                        \"containment\": \"/cluster0/039b58a80799/core4\"\n                    }\n                }\n            },\n            {\n                \"id\": \"34\",\n                \"metadata\": {\n                    \"type\": \"core\",\n                    \"id\": 5,\n                    \"rank\": 3,\n                    \"paths\": {\n                        \"containment\": \"/cluster0/039b58a80799/core5\"\n                    }\n                }\n            },\n            {\n                \"id\": \"35\",\n                \"metadata\": {\n                    \"type\": \"core\",\n                    \"id\": 6,\n                    \"rank\": 3,\n                    \"paths\": {\n                        \"containment\": \"/cluster0/039b58a80799/core6\"\n                    }\n                }\n            },\n            {\n                \"id\": \"36\",\n                \"metadata\": {\n                    \"type\": \"core\",\n                    \"id\": 7,\n                    \"rank\": 3,\n                    \"paths\": {\n                        \"containment\": \"/cluster0/039b58a80799/core7\"\n                    }\n                }\n            }\n        ],\n        \"edges\": [\n            {\n                \"source\": \"0\",\n                \"target\": \"1\"\n            },\n            {\n                \"source\": \"1\",\n                \"target\": \"2\"\n            },\n            {\n                \"source\": \"1\",\n                \"target\": \"3\"\n            },\n            {\n                \"source\": \"1\",\n                \"target\": \"4\"\n            },\n            {\n                \"source\": \"1\",\n                \"target\": \"5\"\n            },\n            {\n                \"source\": \"1\",\n                \"target\": \"6\"\n            },\n            {\n                \"source\": \"1\",\n                \"target\": \"7\"\n            },\n            {\n                \"source\": \"1\",\n                \"target\": \"8\"\n            },\n            {\n                \"source\": \"1\",\n                \"target\": \"9\"\n            },\n            {\n                \"source\": \"0\",\n                \"target\": \"10\"\n            },\n            {\n                \"source\": \"10\",\n                \"target\": \"11\"\n            },\n            {\n                \"source\": \"10\",\n                \"target\": \"12\"\n            },\n            {\n                \"source\": \"10\",\n                \"target\": \"13\"\n            },\n            {\n                \"source\": \"10\",\n                \"target\": \"14\"\n            },\n            {\n                \"source\": \"10\",\n                \"target\": \"15\"\n            },\n            {\n                \"source\": \"10\",\n                \"target\": \"16\"\n            },\n            {\n                \"source\": \"10\",\n                \"target\": \"17\"\n            },\n            {\n                \"source\": \"10\",\n                \"target\": \"18\"\n            },\n            {\n                \"source\": \"0\",\n                \"target\": \"19\"\n            },\n            {\n                \"source\": \"19\",\n                \"target\": \"20\"\n            },\n            {\n                \"source\": \"19\",\n                \"target\": \"21\"\n            },\n            {\n                \"source\": \"19\",\n                \"target\": \"22\"\n            },\n            {\n                \"source\": \"19\",\n                \"target\": \"23\"\n            },\n            {\n                \"source\": \"19\",\n                \"target\": \"24\"\n            },\n            {\n                \"source\": \"19\",\n                \"target\": \"25\"\n            },\n            {\n                \"source\": \"19\",\n                \"target\": \"26\"\n            },\n            {\n                \"source\": \"19\",\n                \"target\": \"27\"\n            },\n            {\n                \"source\": \"0\",\n                \"target\": \"28\"\n            },\n            {\n                \"source\": \"28\",\n                \"target\": \"29\"\n            },\n            {\n                \"source\": \"28\",\n                \"target\": \"30\"\n            },\n            {\n                \"source\": \"28\",\n                \"target\": \"31\"\n            },\n            {\n                \"source\": \"28\",\n                \"target\": \"32\"\n            },\n            {\n                \"source\": \"28\",\n                \"target\": \"33\"\n            },\n            {\n                \"source\": \"28\",\n                \"target\": \"34\"\n            },\n            {\n                \"source\": \"28\",\n                \"target\": \"35\"\n            },\n            {\n                \"source\": \"28\",\n                \"target\": \"36\"\n            }\n        ]\n    }\n}\n```\n\n</details>\n\n\n\n## License\n\nHPCIC DevTools is distributed under the terms of the MIT license.\nAll new contributions must be made under this license.\n\nSee [LICENSE](https://github.com/converged-computing/cloud-select/blob/main/LICENSE),\n[COPYRIGHT](https://github.com/converged-computing/cloud-select/blob/main/COPYRIGHT), and\n[NOTICE](https://github.com/converged-computing/cloud-select/blob/main/NOTICE) for details.\n\nSPDX-License-Identifier: (MIT)\n\nLLNL-CODE- 842614\n",
    "bugtrack_url": null,
    "license": "LICENSE",
    "summary": "Subsystem graph generation for the Flux containment subsystem",
    "version": "0.0.1",
    "project_urls": {
        "Homepage": "https://github.com/compspec/compspec-containment"
    },
    "split_keywords": [
        "compatibility",
        " compspec",
        " containment",
        " flux",
        " subsystem",
        " scheduling",
        " hpc"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "94d573ec3748e3b82eb435c6a79e49768af54255ce21ea6b42154fe6f5caaa13",
                "md5": "72339ee28f28b03286758c03c3d89841",
                "sha256": "5485ccd0d64b0d24ae7aac9d151e9aa8ef1d80ae578da6ba40cd04ff45327eb8"
            },
            "downloads": -1,
            "filename": "compspec_containment-0.0.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "72339ee28f28b03286758c03c3d89841",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 6959,
            "upload_time": "2025-09-15T18:16:28",
            "upload_time_iso_8601": "2025-09-15T18:16:28.020274Z",
            "url": "https://files.pythonhosted.org/packages/94/d5/73ec3748e3b82eb435c6a79e49768af54255ce21ea6b42154fe6f5caaa13/compspec_containment-0.0.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ac6a0d14c1ffc7e86212b68de8ea311deb7b3fafe2fac690a9951cedcbf84be2",
                "md5": "d629f60f3ceba2245985a60ff05ba0e3",
                "sha256": "1e6e24072bb362764ff5cd2a2acba9509309792ce5a0780014a9d10be4007a52"
            },
            "downloads": -1,
            "filename": "compspec_containment-0.0.1.tar.gz",
            "has_sig": false,
            "md5_digest": "d629f60f3ceba2245985a60ff05ba0e3",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 9016,
            "upload_time": "2025-09-15T18:16:29",
            "upload_time_iso_8601": "2025-09-15T18:16:29.317672Z",
            "url": "https://files.pythonhosted.org/packages/ac/6a/0d14c1ffc7e86212b68de8ea311deb7b3fafe2fac690a9951cedcbf84be2/compspec_containment-0.0.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-09-15 18:16:29",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "compspec",
    "github_project": "compspec-containment",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "compspec-containment"
}
        
Elapsed time: 2.05574s