sunrise6g-opensdk


Namesunrise6g-opensdk JSON
Version 1.0.5 PyPI version JSON
download
home_pageNone
SummaryOpen source SDK to abstract CAMARA/GSMA Transformation Functions (TFs) for Edge Cloud platforms, 5G network cores and Open RAN solutions.
upload_time2025-08-01 09:27:17
maintainerNone
docs_urlNone
authorNone
requires_python>=3.7
licenseApache-2.0
keywords federation transformation functions tfs camara gsma opg open source opensdk sdk sunrise-6g 6g etsi edge cloud platform 5g core open ran o-ran
VCS
bugtrack_url
requirements annotated-types asttokens attrs auto-mix-prep backcall backports.tarfile beautifulsoup4 black bleach build certifi cffi cfgv charset-normalizer click colorlog coverage cryptography decorator defusedxml distlib docopt docutils exceptiongroup executing fastjsonschema filelock flake8 id identify idna importlib_metadata iniconfig ipython isort jaraco.classes jaraco.context jaraco.functools jedi jeepney Jinja2 jsonschema jsonschema-specifications jupyter_client jupyter_core jupyterlab_pygments keyring kubernetes markdown-it-py MarkupSafe matplotlib-inline mccabe mdurl mistune more-itertools mypy_extensions nbclient nbconvert nbformat nh3 nodeenv packaging pandocfilters parso pathspec pexpect pickleshare pip-tools pipreqs platformdirs pluggy pre_commit prompt_toolkit ptyprocess pure_eval pycodestyle pycparser pydantic pydantic-extra-types pydantic_core pydub pyflakes Pygments pymongo pyproject_hooks pytest pytest-cov python-dateutil PyYAML pyzmq readme_renderer referencing requests requests-toolbelt rfc3986 rich rpds-py SecretStorage shortuuid six soupsieve stack-data tinycss2 tomli tornado traitlets twine typing-inspection typing_extensions urllib3 virtualenv wcwidth webencodings yarg zipp
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <a href="https://github.com/SunriseOpenOperatorPlatform/open-sdk/actions/workflows/ci.yaml" title="CI Status">
  <img src="https://github.com/SunriseOpenOperatorPlatform/open-sdk/actions/workflows/ci.yaml/badge.svg">
</a>
<a href="https://github.com/SunriseOpenOperatorPlatform/open-sdk/commits/" title="Last Commit">
  <img src="https://img.shields.io/github/last-commit/SunriseOpenOperatorPlatform/open-sdk?style=plastic">
</a>
<a href="https://github.com/SunriseOpenOperatorPlatform/open-sdk/issues" title="Open Issues">
  <img src="https://img.shields.io/github/issues/SunriseOpenOperatorPlatform/open-sdk?style=plastic">
</a>
<a href="https://github.com/SunriseOpenOperatorPlatform/open-sdk/pulls" title="Open Pull Requests">
  <img src="https://img.shields.io/github/issues-pr/SunriseOpenOperatorPlatform/open-sdk?style=plastic">
</a>
<a href="https://github.com/SunriseOpenOperatorPlatform/open-sdk/graphs/contributors" title="Contributors">
  <img src="https://img.shields.io/github/contributors/SunriseOpenOperatorPlatform/open-sdk?style=plastic">
</a>
<a href="https://github.com/SunriseOpenOperatorPlatform/open-sdk/blob/main/LICENSE" title="License">
  <img src="https://img.shields.io/badge/License-Apache%202.0-green.svg?style=plastic">
</a>
<a href="https://github.com/SunriseOpenOperatorPlatform/open-sdk/releases/latest" title="Latest Release">
  <img src="https://img.shields.io/github/release/SunriseOpenOperatorPlatform/open-sdk?style=plastic">
</a>


# OpenSDK

Open source SDK to abstract CAMARA/GSMA Transformation Functions (TFs) for Edge Cloud platforms, 5G network cores and O-RAN solutions.

## Features

- Abstract CAMARA Transformation Functions (TFs)
- Unified Python SDK for interacting with Edge Cloud platforms, 5G Core solutions, and O-RAN solutions.
- Modular and extensible adapter structure


---

## API & Platform Support Matrix

### CAMARA APIs

| API Name                  | Version |
|---------------------------|---------|
| Edge Application Management | [v0.9.3-wip](https://raw.githubusercontent.com/camaraproject/EdgeCloud/main/code/API_definitions/Edge-Application-Management.yaml) |
| Quality-on-Demand         | [v1.0.0](https://raw.githubusercontent.com/camaraproject/QualityOnDemand/refs/tags/r2.2/code/API_definitions/quality-on-demand.yaml) |
| Location Retrieval        | [v0.4.0](https://raw.githubusercontent.com/camaraproject/DeviceLocation/refs/tags/r2.2/code/API_definitions/location-retrieval.yaml) |
| Traffic Influence         | [v0.8.1](https://raw.githubusercontent.com/camaraproject/EdgeCloud/v0.8.1/code/API_definitions/Traffic_Influence.yaml) |

### EdgeCloud Platforms

| Platform   | Status     |
|------------|------------|
| Kubernetes | ✅  |
| i2Edge     | ✅  |
| aerOS      | ✅  |

### Network Adapters

| Platform     | NEF Version | QoD | Location Retrieval | Traffic Influence |
|--------------|-------------|-----|---------------------|--------------------|
| Open5GS      | [v1.2.3](https://www.3gpp.org/ftp/Specs/archive/29_series/29.122/29122-hc0.zip) TS 29.122 (v17.12.0) | ✅  | ✅                  | ❌                 |
| Open5GCore   | [v1.2.3](https://www.3gpp.org/ftp/Specs/archive/29_series/29.122/29122-hc0.zip) TS 29.122 (v17.12.0) | ✅  | ❌                  | ❌                 |
| OAI          | [v1.2.3](https://www.3gpp.org/ftp/Specs/archive/29_series/29.122/29122-hc0.zip) TS 29.122 (v17.12.0) | ✅  | ❌                  | ✅                 |

---

## How to Use

### Option 1: Install via PyPI

For end users:

```bash
pip install sunrise6g-opensdk
```

### Option 2: Development Mode

If you plan to modify the SDK:

```bash
git clone https://github.com/SunriseOpenOperatorPlatform/open-sdk.git
cd open-sdk
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
pip install -e .
```

### Basic Usage

You can use the SDK by simply specifying the adapters to be used. E.g. Edge Cloud Platform: i2Edge, 5G core: Open5Gs

Example available in [`/examples/example.py`](examples/example.py)

```python
python3 -m examples.example
```

---

## How to Contribute

We welcome contributions to OpenSDK!

To get started:

1. Fork the repository and create a branch from `main`.
2. Add your changes in the appropriate adapter directory.
3. Write or update tests for your changes.
4. Ensure all tests and pre-commit checks pass.
5. Submit a pull request with a clear description.

Please follow our full [Contributing Guidelines](docs/CONTRIBUTING.md) for further details.

---

## Example Workflow #1: App deployment over Kubernetes

```mermaid
sequenceDiagram
title Application Deployment using the Open SDK

actor AP as Application Vertical Provider
box Module implementing CAMARA APIs
    participant API as CAMARA Edge Application Management API
    participant SDK as Open SDK
end
participant K8s as Kubernetes

note over SDK: [Config] Edge Cloud platform: Kubernetes, IP, Port
API ->> SDK: from sunrise6g_opensdk import Sdk as sdkclient
API ->> SDK: sdkclient.create_adapters_from(configuration)
API ->> SDK: edgecloud_client = adapters.get("edgecloud")
SDK ->> SDK: SDK initialized and ready to be used
note over AP,API: Platform ready to receive CAMARA calls
AP ->> API: POST /app (APP_ONBOARD_MANIFEST)
API ->> SDK: edgecloud_client.onboard_app(APP_ONBOARD_MANIFEST)
SDK ->> K8s: Equivalent dedicated endpoint
AP ->> API: POST /appinstances (APP_ID, APP_ZONES)
API ->> SDK: edgecloud_client.deploy_app(APP_ID, APP_ZONES)
SDK ->> K8s: Equivalent dedicated endpoint
```

## Example Workflow #2: QoS Session Creation over Open5Gs

```mermaid
sequenceDiagram
title QoS Session Creation over Open5GS

actor AP as Application Vertical Provider
box Module implementing CAMARA APIs
    participant API as CAMARA QoS Management API
    participant SDK as Open SDK
end
participant NEF as NEF
participant 5GS as Open5GS

note over SDK: [Config] Network core: Open5Gs, IP, Port
API ->> SDK: from sunrise6g_opensdk import Sdk as sdkclient
API ->> SDK: sdkclient.create_adapters_from(configuration)
API ->> SDK: network_client = adapters.get("network")
SDK ->> SDK: SDK initialized and ready to be used
note over AP,API: Platform ready to receive CAMARA calls
AP ->> API: POST /sessions (QOS_SESSION_REQUEST)
API ->> SDK: network_client.create_qos_session(QOS_SESSION_REQUEST)
SDK ->> NEF: Equivalent endpoint
NEF ->> 5GS: QoS session creation
```
---

## Roadmap for Open SDK 2nd release

- [ ] Add support to GSMA OPG.02 TFs
- [ ] Include JUNIPER O-RAN adapter

---

## License

Apache 2.0 License – see [`LICENSE`](LICENSE) file for details.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "sunrise6g-opensdk",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": "Federation, Transformation Functions, TFs, CAMARA, GSMA OPG, Open source, OpenSDK, SDK, SUNRISE-6G, 6G, ETSI, Edge Cloud Platform, 5G Core, Open RAN, O-RAN",
    "author": null,
    "author_email": "Adrian Pino <adrian.pino@i2cat.net>",
    "download_url": "https://files.pythonhosted.org/packages/5f/62/ac36fa82768425dce6b4d4b242827b36839ffdce7b0f6ababbf58ab1e399/sunrise6g_opensdk-1.0.5.tar.gz",
    "platform": null,
    "description": "<a href=\"https://github.com/SunriseOpenOperatorPlatform/open-sdk/actions/workflows/ci.yaml\" title=\"CI Status\">\n  <img src=\"https://github.com/SunriseOpenOperatorPlatform/open-sdk/actions/workflows/ci.yaml/badge.svg\">\n</a>\n<a href=\"https://github.com/SunriseOpenOperatorPlatform/open-sdk/commits/\" title=\"Last Commit\">\n  <img src=\"https://img.shields.io/github/last-commit/SunriseOpenOperatorPlatform/open-sdk?style=plastic\">\n</a>\n<a href=\"https://github.com/SunriseOpenOperatorPlatform/open-sdk/issues\" title=\"Open Issues\">\n  <img src=\"https://img.shields.io/github/issues/SunriseOpenOperatorPlatform/open-sdk?style=plastic\">\n</a>\n<a href=\"https://github.com/SunriseOpenOperatorPlatform/open-sdk/pulls\" title=\"Open Pull Requests\">\n  <img src=\"https://img.shields.io/github/issues-pr/SunriseOpenOperatorPlatform/open-sdk?style=plastic\">\n</a>\n<a href=\"https://github.com/SunriseOpenOperatorPlatform/open-sdk/graphs/contributors\" title=\"Contributors\">\n  <img src=\"https://img.shields.io/github/contributors/SunriseOpenOperatorPlatform/open-sdk?style=plastic\">\n</a>\n<a href=\"https://github.com/SunriseOpenOperatorPlatform/open-sdk/blob/main/LICENSE\" title=\"License\">\n  <img src=\"https://img.shields.io/badge/License-Apache%202.0-green.svg?style=plastic\">\n</a>\n<a href=\"https://github.com/SunriseOpenOperatorPlatform/open-sdk/releases/latest\" title=\"Latest Release\">\n  <img src=\"https://img.shields.io/github/release/SunriseOpenOperatorPlatform/open-sdk?style=plastic\">\n</a>\n\n\n# OpenSDK\n\nOpen source SDK to abstract CAMARA/GSMA Transformation Functions (TFs) for Edge Cloud platforms, 5G network cores and O-RAN solutions.\n\n## Features\n\n- Abstract CAMARA Transformation Functions (TFs)\n- Unified Python SDK for interacting with Edge Cloud platforms, 5G Core solutions, and O-RAN solutions.\n- Modular and extensible adapter structure\n\n\n---\n\n## API & Platform Support Matrix\n\n### CAMARA APIs\n\n| API Name                  | Version |\n|---------------------------|---------|\n| Edge Application Management | [v0.9.3-wip](https://raw.githubusercontent.com/camaraproject/EdgeCloud/main/code/API_definitions/Edge-Application-Management.yaml) |\n| Quality-on-Demand         | [v1.0.0](https://raw.githubusercontent.com/camaraproject/QualityOnDemand/refs/tags/r2.2/code/API_definitions/quality-on-demand.yaml) |\n| Location Retrieval        | [v0.4.0](https://raw.githubusercontent.com/camaraproject/DeviceLocation/refs/tags/r2.2/code/API_definitions/location-retrieval.yaml) |\n| Traffic Influence         | [v0.8.1](https://raw.githubusercontent.com/camaraproject/EdgeCloud/v0.8.1/code/API_definitions/Traffic_Influence.yaml) |\n\n### EdgeCloud Platforms\n\n| Platform   | Status     |\n|------------|------------|\n| Kubernetes | \u2705  |\n| i2Edge     | \u2705  |\n| aerOS      | \u2705  |\n\n### Network Adapters\n\n| Platform     | NEF Version | QoD | Location Retrieval | Traffic Influence |\n|--------------|-------------|-----|---------------------|--------------------|\n| Open5GS      | [v1.2.3](https://www.3gpp.org/ftp/Specs/archive/29_series/29.122/29122-hc0.zip) TS 29.122 (v17.12.0) | \u2705  | \u2705                  | \u274c                 |\n| Open5GCore   | [v1.2.3](https://www.3gpp.org/ftp/Specs/archive/29_series/29.122/29122-hc0.zip) TS 29.122 (v17.12.0) | \u2705  | \u274c                  | \u274c                 |\n| OAI          | [v1.2.3](https://www.3gpp.org/ftp/Specs/archive/29_series/29.122/29122-hc0.zip) TS 29.122 (v17.12.0) | \u2705  | \u274c                  | \u2705                 |\n\n---\n\n## How to Use\n\n### Option 1: Install via PyPI\n\nFor end users:\n\n```bash\npip install sunrise6g-opensdk\n```\n\n### Option 2: Development Mode\n\nIf you plan to modify the SDK:\n\n```bash\ngit clone https://github.com/SunriseOpenOperatorPlatform/open-sdk.git\ncd open-sdk\npython3 -m venv .venv\nsource .venv/bin/activate\npip install -r requirements.txt\npip install -e .\n```\n\n### Basic Usage\n\nYou can use the SDK by simply specifying the adapters to be used. E.g. Edge Cloud Platform: i2Edge, 5G core: Open5Gs\n\nExample available in [`/examples/example.py`](examples/example.py)\n\n```python\npython3 -m examples.example\n```\n\n---\n\n## How to Contribute\n\nWe welcome contributions to OpenSDK!\n\nTo get started:\n\n1. Fork the repository and create a branch from `main`.\n2. Add your changes in the appropriate adapter directory.\n3. Write or update tests for your changes.\n4. Ensure all tests and pre-commit checks pass.\n5. Submit a pull request with a clear description.\n\nPlease follow our full [Contributing Guidelines](docs/CONTRIBUTING.md) for further details.\n\n---\n\n## Example Workflow #1: App deployment over Kubernetes\n\n```mermaid\nsequenceDiagram\ntitle Application Deployment using the Open SDK\n\nactor AP as Application Vertical Provider\nbox Module implementing CAMARA APIs\n    participant API as CAMARA Edge Application Management API\n    participant SDK as Open SDK\nend\nparticipant K8s as Kubernetes\n\nnote over SDK: [Config] Edge Cloud platform: Kubernetes, IP, Port\nAPI ->> SDK: from sunrise6g_opensdk import Sdk as sdkclient\nAPI ->> SDK: sdkclient.create_adapters_from(configuration)\nAPI ->> SDK: edgecloud_client = adapters.get(\"edgecloud\")\nSDK ->> SDK: SDK initialized and ready to be used\nnote over AP,API: Platform ready to receive CAMARA calls\nAP ->> API: POST /app (APP_ONBOARD_MANIFEST)\nAPI ->> SDK: edgecloud_client.onboard_app(APP_ONBOARD_MANIFEST)\nSDK ->> K8s: Equivalent dedicated endpoint\nAP ->> API: POST /appinstances (APP_ID, APP_ZONES)\nAPI ->> SDK: edgecloud_client.deploy_app(APP_ID, APP_ZONES)\nSDK ->> K8s: Equivalent dedicated endpoint\n```\n\n## Example Workflow #2: QoS Session Creation over Open5Gs\n\n```mermaid\nsequenceDiagram\ntitle QoS Session Creation over Open5GS\n\nactor AP as Application Vertical Provider\nbox Module implementing CAMARA APIs\n    participant API as CAMARA QoS Management API\n    participant SDK as Open SDK\nend\nparticipant NEF as NEF\nparticipant 5GS as Open5GS\n\nnote over SDK: [Config] Network core: Open5Gs, IP, Port\nAPI ->> SDK: from sunrise6g_opensdk import Sdk as sdkclient\nAPI ->> SDK: sdkclient.create_adapters_from(configuration)\nAPI ->> SDK: network_client = adapters.get(\"network\")\nSDK ->> SDK: SDK initialized and ready to be used\nnote over AP,API: Platform ready to receive CAMARA calls\nAP ->> API: POST /sessions (QOS_SESSION_REQUEST)\nAPI ->> SDK: network_client.create_qos_session(QOS_SESSION_REQUEST)\nSDK ->> NEF: Equivalent endpoint\nNEF ->> 5GS: QoS session creation\n```\n---\n\n## Roadmap for Open SDK 2nd release\n\n- [ ] Add support to GSMA OPG.02 TFs\n- [ ] Include JUNIPER O-RAN adapter\n\n---\n\n## License\n\nApache 2.0 License \u2013 see [`LICENSE`](LICENSE) file for details.\n",
    "bugtrack_url": null,
    "license": "Apache-2.0",
    "summary": "Open source SDK to abstract CAMARA/GSMA Transformation Functions (TFs) for Edge Cloud platforms, 5G network cores and Open RAN solutions.",
    "version": "1.0.5",
    "project_urls": {
        "Homepage": "https://sunrise6g.eu/",
        "Repository": "https://github.com/OpenOperatorPlatform/OpenSDK"
    },
    "split_keywords": [
        "federation",
        " transformation functions",
        " tfs",
        " camara",
        " gsma opg",
        " open source",
        " opensdk",
        " sdk",
        " sunrise-6g",
        " 6g",
        " etsi",
        " edge cloud platform",
        " 5g core",
        " open ran",
        " o-ran"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "93706416beec177d0de80cb714979aa915f87133e5b1e5ca1236fada2daf9c6a",
                "md5": "566b4ea048d2d16884adb3b144826cc8",
                "sha256": "b346ab1f65fde76470eeb0a7e3ef251e7cf35a6ffbc850ecf5aa8857f2c04461"
            },
            "downloads": -1,
            "filename": "sunrise6g_opensdk-1.0.5-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "566b4ea048d2d16884adb3b144826cc8",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 122426,
            "upload_time": "2025-08-01T09:27:16",
            "upload_time_iso_8601": "2025-08-01T09:27:16.059783Z",
            "url": "https://files.pythonhosted.org/packages/93/70/6416beec177d0de80cb714979aa915f87133e5b1e5ca1236fada2daf9c6a/sunrise6g_opensdk-1.0.5-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "5f62ac36fa82768425dce6b4d4b242827b36839ffdce7b0f6ababbf58ab1e399",
                "md5": "f16060081710318dfc2db4b4c5b38194",
                "sha256": "32e97c548ace77fdc8456e58c96a2631fccf144499a04105c2d82bd6d7c76c1a"
            },
            "downloads": -1,
            "filename": "sunrise6g_opensdk-1.0.5.tar.gz",
            "has_sig": false,
            "md5_digest": "f16060081710318dfc2db4b4c5b38194",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 84843,
            "upload_time": "2025-08-01T09:27:17",
            "upload_time_iso_8601": "2025-08-01T09:27:17.773978Z",
            "url": "https://files.pythonhosted.org/packages/5f/62/ac36fa82768425dce6b4d4b242827b36839ffdce7b0f6ababbf58ab1e399/sunrise6g_opensdk-1.0.5.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-01 09:27:17",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "OpenOperatorPlatform",
    "github_project": "OpenSDK",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "annotated-types",
            "specs": [
                [
                    "==",
                    "0.7.0"
                ]
            ]
        },
        {
            "name": "asttokens",
            "specs": [
                [
                    "==",
                    "3.0.0"
                ]
            ]
        },
        {
            "name": "attrs",
            "specs": [
                [
                    "==",
                    "25.3.0"
                ]
            ]
        },
        {
            "name": "auto-mix-prep",
            "specs": [
                [
                    "==",
                    "0.2.0"
                ]
            ]
        },
        {
            "name": "backcall",
            "specs": [
                [
                    "==",
                    "0.2.0"
                ]
            ]
        },
        {
            "name": "backports.tarfile",
            "specs": [
                [
                    "==",
                    "1.2.0"
                ]
            ]
        },
        {
            "name": "beautifulsoup4",
            "specs": [
                [
                    "==",
                    "4.13.3"
                ]
            ]
        },
        {
            "name": "black",
            "specs": [
                [
                    "==",
                    "24.8.0"
                ]
            ]
        },
        {
            "name": "bleach",
            "specs": [
                [
                    "==",
                    "6.2.0"
                ]
            ]
        },
        {
            "name": "build",
            "specs": [
                [
                    "==",
                    "1.2.2.post1"
                ]
            ]
        },
        {
            "name": "certifi",
            "specs": [
                [
                    "==",
                    "2025.1.31"
                ]
            ]
        },
        {
            "name": "cffi",
            "specs": [
                [
                    "==",
                    "1.17.1"
                ]
            ]
        },
        {
            "name": "cfgv",
            "specs": [
                [
                    "==",
                    "3.4.0"
                ]
            ]
        },
        {
            "name": "charset-normalizer",
            "specs": [
                [
                    "==",
                    "3.4.1"
                ]
            ]
        },
        {
            "name": "click",
            "specs": [
                [
                    "==",
                    "8.1.8"
                ]
            ]
        },
        {
            "name": "colorlog",
            "specs": [
                [
                    "==",
                    "6.8.2"
                ]
            ]
        },
        {
            "name": "coverage",
            "specs": [
                [
                    "==",
                    "7.7.1"
                ]
            ]
        },
        {
            "name": "cryptography",
            "specs": [
                [
                    "==",
                    "45.0.4"
                ]
            ]
        },
        {
            "name": "decorator",
            "specs": [
                [
                    "==",
                    "5.2.1"
                ]
            ]
        },
        {
            "name": "defusedxml",
            "specs": [
                [
                    "==",
                    "0.7.1"
                ]
            ]
        },
        {
            "name": "distlib",
            "specs": [
                [
                    "==",
                    "0.3.9"
                ]
            ]
        },
        {
            "name": "docopt",
            "specs": [
                [
                    "==",
                    "0.6.2"
                ]
            ]
        },
        {
            "name": "docutils",
            "specs": [
                [
                    "==",
                    "0.21.2"
                ]
            ]
        },
        {
            "name": "exceptiongroup",
            "specs": [
                [
                    "==",
                    "1.2.2"
                ]
            ]
        },
        {
            "name": "executing",
            "specs": [
                [
                    "==",
                    "2.2.0"
                ]
            ]
        },
        {
            "name": "fastjsonschema",
            "specs": [
                [
                    "==",
                    "2.21.1"
                ]
            ]
        },
        {
            "name": "filelock",
            "specs": [
                [
                    "==",
                    "3.18.0"
                ]
            ]
        },
        {
            "name": "flake8",
            "specs": [
                [
                    "==",
                    "7.1.1"
                ]
            ]
        },
        {
            "name": "id",
            "specs": [
                [
                    "==",
                    "1.5.0"
                ]
            ]
        },
        {
            "name": "identify",
            "specs": [
                [
                    "==",
                    "2.6.10"
                ]
            ]
        },
        {
            "name": "idna",
            "specs": [
                [
                    "==",
                    "3.10"
                ]
            ]
        },
        {
            "name": "importlib_metadata",
            "specs": [
                [
                    "==",
                    "8.7.0"
                ]
            ]
        },
        {
            "name": "iniconfig",
            "specs": [
                [
                    "==",
                    "2.0.0"
                ]
            ]
        },
        {
            "name": "ipython",
            "specs": [
                [
                    "==",
                    "8.12.3"
                ]
            ]
        },
        {
            "name": "isort",
            "specs": [
                [
                    "==",
                    "5.13.2"
                ]
            ]
        },
        {
            "name": "jaraco.classes",
            "specs": [
                [
                    "==",
                    "3.4.0"
                ]
            ]
        },
        {
            "name": "jaraco.context",
            "specs": [
                [
                    "==",
                    "6.0.1"
                ]
            ]
        },
        {
            "name": "jaraco.functools",
            "specs": [
                [
                    "==",
                    "4.1.0"
                ]
            ]
        },
        {
            "name": "jedi",
            "specs": [
                [
                    "==",
                    "0.19.2"
                ]
            ]
        },
        {
            "name": "jeepney",
            "specs": [
                [
                    "==",
                    "0.9.0"
                ]
            ]
        },
        {
            "name": "Jinja2",
            "specs": [
                [
                    "==",
                    "3.1.6"
                ]
            ]
        },
        {
            "name": "jsonschema",
            "specs": [
                [
                    "==",
                    "4.23.0"
                ]
            ]
        },
        {
            "name": "jsonschema-specifications",
            "specs": [
                [
                    "==",
                    "2024.10.1"
                ]
            ]
        },
        {
            "name": "jupyter_client",
            "specs": [
                [
                    "==",
                    "8.6.3"
                ]
            ]
        },
        {
            "name": "jupyter_core",
            "specs": [
                [
                    "==",
                    "5.8.1"
                ]
            ]
        },
        {
            "name": "jupyterlab_pygments",
            "specs": [
                [
                    "==",
                    "0.3.0"
                ]
            ]
        },
        {
            "name": "keyring",
            "specs": [
                [
                    "==",
                    "25.6.0"
                ]
            ]
        },
        {
            "name": "kubernetes",
            "specs": [
                [
                    "==",
                    "33.1.0"
                ]
            ]
        },
        {
            "name": "markdown-it-py",
            "specs": [
                [
                    "==",
                    "3.0.0"
                ]
            ]
        },
        {
            "name": "MarkupSafe",
            "specs": [
                [
                    "==",
                    "3.0.2"
                ]
            ]
        },
        {
            "name": "matplotlib-inline",
            "specs": [
                [
                    "==",
                    "0.1.7"
                ]
            ]
        },
        {
            "name": "mccabe",
            "specs": [
                [
                    "==",
                    "0.7.0"
                ]
            ]
        },
        {
            "name": "mdurl",
            "specs": [
                [
                    "==",
                    "0.1.2"
                ]
            ]
        },
        {
            "name": "mistune",
            "specs": [
                [
                    "==",
                    "3.1.3"
                ]
            ]
        },
        {
            "name": "more-itertools",
            "specs": [
                [
                    "==",
                    "10.7.0"
                ]
            ]
        },
        {
            "name": "mypy_extensions",
            "specs": [
                [
                    "==",
                    "1.1.0"
                ]
            ]
        },
        {
            "name": "nbclient",
            "specs": [
                [
                    "==",
                    "0.10.2"
                ]
            ]
        },
        {
            "name": "nbconvert",
            "specs": [
                [
                    "==",
                    "7.16.6"
                ]
            ]
        },
        {
            "name": "nbformat",
            "specs": [
                [
                    "==",
                    "5.10.4"
                ]
            ]
        },
        {
            "name": "nh3",
            "specs": [
                [
                    "==",
                    "0.2.21"
                ]
            ]
        },
        {
            "name": "nodeenv",
            "specs": [
                [
                    "==",
                    "1.9.1"
                ]
            ]
        },
        {
            "name": "packaging",
            "specs": [
                [
                    "==",
                    "24.2"
                ]
            ]
        },
        {
            "name": "pandocfilters",
            "specs": [
                [
                    "==",
                    "1.5.1"
                ]
            ]
        },
        {
            "name": "parso",
            "specs": [
                [
                    "==",
                    "0.8.4"
                ]
            ]
        },
        {
            "name": "pathspec",
            "specs": [
                [
                    "==",
                    "0.12.1"
                ]
            ]
        },
        {
            "name": "pexpect",
            "specs": [
                [
                    "==",
                    "4.9.0"
                ]
            ]
        },
        {
            "name": "pickleshare",
            "specs": [
                [
                    "==",
                    "0.7.5"
                ]
            ]
        },
        {
            "name": "pip-tools",
            "specs": [
                [
                    "==",
                    "7.4.1"
                ]
            ]
        },
        {
            "name": "pipreqs",
            "specs": [
                [
                    "==",
                    "0.5.0"
                ]
            ]
        },
        {
            "name": "platformdirs",
            "specs": [
                [
                    "==",
                    "4.3.7"
                ]
            ]
        },
        {
            "name": "pluggy",
            "specs": [
                [
                    "==",
                    "1.5.0"
                ]
            ]
        },
        {
            "name": "pre_commit",
            "specs": [
                [
                    "==",
                    "4.2.0"
                ]
            ]
        },
        {
            "name": "prompt_toolkit",
            "specs": [
                [
                    "==",
                    "3.0.50"
                ]
            ]
        },
        {
            "name": "ptyprocess",
            "specs": [
                [
                    "==",
                    "0.7.0"
                ]
            ]
        },
        {
            "name": "pure_eval",
            "specs": [
                [
                    "==",
                    "0.2.3"
                ]
            ]
        },
        {
            "name": "pycodestyle",
            "specs": [
                [
                    "==",
                    "2.12.1"
                ]
            ]
        },
        {
            "name": "pycparser",
            "specs": [
                [
                    "==",
                    "2.22"
                ]
            ]
        },
        {
            "name": "pydantic",
            "specs": [
                [
                    "==",
                    "2.11.3"
                ]
            ]
        },
        {
            "name": "pydantic-extra-types",
            "specs": [
                [
                    "==",
                    "2.10.3"
                ]
            ]
        },
        {
            "name": "pydantic_core",
            "specs": [
                [
                    "==",
                    "2.33.1"
                ]
            ]
        },
        {
            "name": "pydub",
            "specs": [
                [
                    "==",
                    "0.25.1"
                ]
            ]
        },
        {
            "name": "pyflakes",
            "specs": [
                [
                    "==",
                    "3.2.0"
                ]
            ]
        },
        {
            "name": "Pygments",
            "specs": [
                [
                    "==",
                    "2.19.1"
                ]
            ]
        },
        {
            "name": "pymongo",
            "specs": [
                [
                    "==",
                    "4.13.2"
                ]
            ]
        },
        {
            "name": "pyproject_hooks",
            "specs": [
                [
                    "==",
                    "1.2.0"
                ]
            ]
        },
        {
            "name": "pytest",
            "specs": [
                [
                    "==",
                    "8.3.2"
                ]
            ]
        },
        {
            "name": "pytest-cov",
            "specs": [
                [
                    "==",
                    "6.0.0"
                ]
            ]
        },
        {
            "name": "python-dateutil",
            "specs": [
                [
                    "==",
                    "2.9.0.post0"
                ]
            ]
        },
        {
            "name": "PyYAML",
            "specs": [
                [
                    "==",
                    "6.0.2"
                ]
            ]
        },
        {
            "name": "pyzmq",
            "specs": [
                [
                    "==",
                    "26.4.0"
                ]
            ]
        },
        {
            "name": "readme_renderer",
            "specs": [
                [
                    "==",
                    "44.0"
                ]
            ]
        },
        {
            "name": "referencing",
            "specs": [
                [
                    "==",
                    "0.36.2"
                ]
            ]
        },
        {
            "name": "requests",
            "specs": [
                [
                    "==",
                    "2.32.4"
                ]
            ]
        },
        {
            "name": "requests-toolbelt",
            "specs": [
                [
                    "==",
                    "1.0.0"
                ]
            ]
        },
        {
            "name": "rfc3986",
            "specs": [
                [
                    "==",
                    "2.0.0"
                ]
            ]
        },
        {
            "name": "rich",
            "specs": [
                [
                    "==",
                    "14.0.0"
                ]
            ]
        },
        {
            "name": "rpds-py",
            "specs": [
                [
                    "==",
                    "0.24.0"
                ]
            ]
        },
        {
            "name": "SecretStorage",
            "specs": [
                [
                    "==",
                    "3.3.3"
                ]
            ]
        },
        {
            "name": "shortuuid",
            "specs": [
                [
                    "==",
                    "1.0.13"
                ]
            ]
        },
        {
            "name": "six",
            "specs": [
                [
                    "==",
                    "1.17.0"
                ]
            ]
        },
        {
            "name": "soupsieve",
            "specs": [
                [
                    "==",
                    "2.6"
                ]
            ]
        },
        {
            "name": "stack-data",
            "specs": [
                [
                    "==",
                    "0.6.3"
                ]
            ]
        },
        {
            "name": "tinycss2",
            "specs": [
                [
                    "==",
                    "1.4.0"
                ]
            ]
        },
        {
            "name": "tomli",
            "specs": [
                [
                    "==",
                    "2.2.1"
                ]
            ]
        },
        {
            "name": "tornado",
            "specs": [
                [
                    "==",
                    "6.5"
                ]
            ]
        },
        {
            "name": "traitlets",
            "specs": [
                [
                    "==",
                    "5.14.3"
                ]
            ]
        },
        {
            "name": "twine",
            "specs": [
                [
                    "==",
                    "6.1.0"
                ]
            ]
        },
        {
            "name": "typing-inspection",
            "specs": [
                [
                    "==",
                    "0.4.1"
                ]
            ]
        },
        {
            "name": "typing_extensions",
            "specs": [
                [
                    "==",
                    "4.12.2"
                ]
            ]
        },
        {
            "name": "urllib3",
            "specs": [
                [
                    "==",
                    "2.5.0"
                ]
            ]
        },
        {
            "name": "virtualenv",
            "specs": [
                [
                    "==",
                    "20.30.0"
                ]
            ]
        },
        {
            "name": "wcwidth",
            "specs": [
                [
                    "==",
                    "0.2.13"
                ]
            ]
        },
        {
            "name": "webencodings",
            "specs": [
                [
                    "==",
                    "0.5.1"
                ]
            ]
        },
        {
            "name": "yarg",
            "specs": [
                [
                    "==",
                    "0.1.9"
                ]
            ]
        },
        {
            "name": "zipp",
            "specs": [
                [
                    "==",
                    "3.23.0"
                ]
            ]
        }
    ],
    "lcname": "sunrise6g-opensdk"
}
        
Elapsed time: 1.33435s