<p align="center">
<a href="https://github.com/openworkload/swm-jupyter-term/blob/master/LICENSE" alt="License">
<img src="https://img.shields.io/github/license/openworkload/swm-jupyter-term" />
</a>
<a href="https://github.com/openworkload/swm-jupyter-term/actions/workflows/ci.yml" alt="Latest CI tests result">
<img src="https://github.com/openworkload/swm-jupyter-term/actions/workflows/ci.yml/badge.svg?event=push" />
</a>
</p>
Sky Port Juputer terminal
=============================
# Sky Port project
Sky Port is an universal bus between user software and compute resources. It can also be considered as a transportation layer between workload producers and compute resource providers. Sky Port makes it easy to connect user software to different cloud resources.
# Sky Port integration
The current project represents a custom spawner that allows to configure spawning options and submit jupyterlab job over Sky Port.
The spawner python package is distributed vis PyPI as `swm-jupyter-spawner`.
## Development environment for the spawner
Ensure `conda` and `pip` are installed and accessable via $PATH (installed in the dev container image by default).
### 1. Create conda environment
```bash
# Run the dev container from swm-core first, then switch to swm-jupyter-term directory
conda create -n swm-jupyter --override-channels --strict-channel-priority -c conda-forge -c anaconda nodejs configurable-http-proxy
conda init bash
```
Activate conda:
```bash
conda activate swm-jupyter
```
Deactivate conda:
```bash
conda deactivate
```
For local testing:
```bash
docker pull jupyter/datascience-notebook:hub-3.1.1
```
## 2. Configure virtualenv
```bash
make prepare-venv
```
# JupyterHub spawner
All you need to start using it is to have swm-core container running and then you start and login to jupyterhub.
In order to start jupyterhub manually in a terminal:
```bash
conda activate swm-jupyter
. .venv/bin/activate
jupyterhub
```
# Contributing
We appreciate all contributions. If you are planning to contribute back bug-fixes, please do so without any further discussion. If you plan to contribute new features, utility functions or extensions, please first open an issue and discuss the feature with us.
# License
We use a shared copyright model that enables all contributors to maintain the copyright on their contributions.
This software is licensed under the [BSD-3-Clause license](LICENSE).
Raw data
{
"_id": null,
"home_page": null,
"name": "swmjupyter",
"maintainer": null,
"docs_url": null,
"requires_python": "~=3.10",
"maintainer_email": null,
"keywords": "hpc, high performance computing, cloud, cloud computing, open workload, sky port, jupyter, jupyterhub, jupyterlab",
"author": null,
"author_email": "Taras Shapovalov <taras@iclouds.net>",
"download_url": "https://files.pythonhosted.org/packages/c6/d7/3615be75645a0921eda5bb0999c4e9e99bc16fb48752dfe3d5755264df6b/swmjupyter-0.1.3.tar.gz",
"platform": null,
"description": "<p align=\"center\">\n <a href=\"https://github.com/openworkload/swm-jupyter-term/blob/master/LICENSE\" alt=\"License\">\n <img src=\"https://img.shields.io/github/license/openworkload/swm-jupyter-term\" />\n </a>\n <a href=\"https://github.com/openworkload/swm-jupyter-term/actions/workflows/ci.yml\" alt=\"Latest CI tests result\">\n <img src=\"https://github.com/openworkload/swm-jupyter-term/actions/workflows/ci.yml/badge.svg?event=push\" />\n </a>\n</p>\n\n\nSky Port Juputer terminal\n=============================\n\n# Sky Port project\n\nSky Port is an universal bus between user software and compute resources. It can also be considered as a transportation layer between workload producers and compute resource providers. Sky Port makes it easy to connect user software to different cloud resources.\n\n# Sky Port integration\n\nThe current project represents a custom spawner that allows to configure spawning options and submit jupyterlab job over Sky Port.\nThe spawner python package is distributed vis PyPI as `swm-jupyter-spawner`.\n\n## Development environment for the spawner\n\nEnsure `conda` and `pip` are installed and accessable via $PATH (installed in the dev container image by default).\n\n### 1. Create conda environment\n```bash\n# Run the dev container from swm-core first, then switch to swm-jupyter-term directory\nconda create -n swm-jupyter --override-channels --strict-channel-priority -c conda-forge -c anaconda nodejs configurable-http-proxy\nconda init bash\n```\nActivate conda:\n```bash\nconda activate swm-jupyter\n```\n\nDeactivate conda:\n```bash\nconda deactivate\n```\n\nFor local testing:\n```bash\ndocker pull jupyter/datascience-notebook:hub-3.1.1\n```\n\n## 2. Configure virtualenv\n```bash\nmake prepare-venv\n```\n\n# JupyterHub spawner\n\nAll you need to start using it is to have swm-core container running and then you start and login to jupyterhub.\nIn order to start jupyterhub manually in a terminal:\n```bash\nconda activate swm-jupyter\n. .venv/bin/activate\njupyterhub\n```\n\n# Contributing\n\nWe appreciate all contributions. If you are planning to contribute back bug-fixes, please do so without any further discussion. If you plan to contribute new features, utility functions or extensions, please first open an issue and discuss the feature with us. \n\n# License\n\nWe use a shared copyright model that enables all contributors to maintain the copyright on their contributions.\n\nThis software is licensed under the [BSD-3-Clause license](LICENSE).\n",
"bugtrack_url": null,
"license": "BSD 3-Clause License",
"summary": "A spawner for JupyterHub to spawn notebooks over Sky Port",
"version": "0.1.3",
"project_urls": {
"Distribution": "https://pypi.org/project/swmjupyter",
"Documentation": "https://openworkload.org",
"Homepage": "https://openworkload.org",
"Issues": "https://github.com/openworkload/swm-jupyter-term/issues",
"Repository": "https://github.com/openworkload/swm-jupyter-term",
"Tests": "https://github.com/openworkload/swm-jupyter-term/tree/master/test"
},
"split_keywords": [
"hpc",
" high performance computing",
" cloud",
" cloud computing",
" open workload",
" sky port",
" jupyter",
" jupyterhub",
" jupyterlab"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "4f9e087845586e47a12008d29df27eb382ed62b7c3eba6455b959852761c3f3d",
"md5": "834cb3164dd51ed1d5ca1e1af809d3ba",
"sha256": "c73b93b94f7d875f784d3ba7cdb1dad9367b41c223ab4b607ac50041b77637df"
},
"downloads": -1,
"filename": "swmjupyter-0.1.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "834cb3164dd51ed1d5ca1e1af809d3ba",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "~=3.10",
"size": 10715,
"upload_time": "2024-09-08T07:26:35",
"upload_time_iso_8601": "2024-09-08T07:26:35.497883Z",
"url": "https://files.pythonhosted.org/packages/4f/9e/087845586e47a12008d29df27eb382ed62b7c3eba6455b959852761c3f3d/swmjupyter-0.1.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c6d73615be75645a0921eda5bb0999c4e9e99bc16fb48752dfe3d5755264df6b",
"md5": "9cdf63eac97a517edde1674dbfa50180",
"sha256": "d5f30bd1ef1ed24feb4378bc6c6d735d2cce6a4fb9a3c3094493383fe027a47f"
},
"downloads": -1,
"filename": "swmjupyter-0.1.3.tar.gz",
"has_sig": false,
"md5_digest": "9cdf63eac97a517edde1674dbfa50180",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "~=3.10",
"size": 12093,
"upload_time": "2024-09-08T07:26:37",
"upload_time_iso_8601": "2024-09-08T07:26:37.311092Z",
"url": "https://files.pythonhosted.org/packages/c6/d7/3615be75645a0921eda5bb0999c4e9e99bc16fb48752dfe3d5755264df6b/swmjupyter-0.1.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-09-08 07:26:37",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "openworkload",
"github_project": "swm-jupyter-term",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "alembic",
"specs": [
[
"==",
"1.7.5"
]
]
},
{
"name": "anyio",
"specs": [
[
"==",
"3.4.0"
]
]
},
{
"name": "async-generator",
"specs": [
[
"==",
"1.10"
]
]
},
{
"name": "attrs",
"specs": [
[
"==",
"21.4.0"
]
]
},
{
"name": "autoflake",
"specs": [
[
"==",
"1.4"
]
]
},
{
"name": "bandit",
"specs": [
[
"==",
"1.7.9"
]
]
},
{
"name": "black",
"specs": [
[
"==",
"21.12b0"
]
]
},
{
"name": "bleach",
"specs": [
[
"==",
"4.1.0"
]
]
},
{
"name": "certifi",
"specs": [
[
"==",
"2021.10.8"
]
]
},
{
"name": "certipy",
"specs": [
[
"==",
"0.1.3"
]
]
},
{
"name": "cffi",
"specs": [
[
"==",
"1.15.0"
]
]
},
{
"name": "charset-normalizer",
"specs": [
[
"==",
"2.0.9"
]
]
},
{
"name": "click",
"specs": [
[
"==",
"8.0.3"
]
]
},
{
"name": "colorama",
"specs": [
[
"==",
"0.4.4"
]
]
},
{
"name": "cryptography",
"specs": [
[
"==",
"36.0.1"
]
]
},
{
"name": "docutils",
"specs": [
[
"==",
"0.18.1"
]
]
},
{
"name": "greenlet",
"specs": [
[
"==",
"1.1.2"
]
]
},
{
"name": "h11",
"specs": [
[
"==",
"0.12.0"
]
]
},
{
"name": "httpcore",
"specs": [
[
"==",
"0.14.3"
]
]
},
{
"name": "httpx",
"specs": [
[
"==",
"0.21.1"
]
]
},
{
"name": "idna",
"specs": [
[
"==",
"3.3"
]
]
},
{
"name": "importlib-metadata",
"specs": [
[
"==",
"4.10.0"
]
]
},
{
"name": "isort",
"specs": [
[
"==",
"5.10.1"
]
]
},
{
"name": "jeepney",
"specs": [
[
"==",
"0.7.1"
]
]
},
{
"name": "jinja2",
"specs": [
[
"==",
"3.0.3"
]
]
},
{
"name": "jsonschema",
"specs": [
[
"==",
"4.3.3"
]
]
},
{
"name": "jupyter-telemetry",
"specs": [
[
"==",
"0.1.0"
]
]
},
{
"name": "jupyterhub",
"specs": [
[
"==",
"3.1.1"
]
]
},
{
"name": "keyring",
"specs": [
[
"==",
"23.5.0"
]
]
},
{
"name": "mako",
"specs": [
[
"==",
"1.1.6"
]
]
},
{
"name": "markdown-it-py",
"specs": [
[
"==",
"2.2.0"
]
]
},
{
"name": "markupsafe",
"specs": [
[
"==",
"2.0.1"
]
]
},
{
"name": "mdurl",
"specs": [
[
"==",
"0.1.2"
]
]
},
{
"name": "mypy",
"specs": [
[
"==",
"1.0.1"
]
]
},
{
"name": "mypy-extensions",
"specs": [
[
"==",
"0.4.3"
]
]
},
{
"name": "oauthlib",
"specs": [
[
"==",
"3.1.1"
]
]
},
{
"name": "packaging",
"specs": [
[
"==",
"21.3"
]
]
},
{
"name": "pamela",
"specs": [
[
"==",
"1.0.0"
]
]
},
{
"name": "pathspec",
"specs": [
[
"==",
"0.9.0"
]
]
},
{
"name": "pbr",
"specs": [
[
"==",
"6.0.0"
]
]
},
{
"name": "pkginfo",
"specs": [
[
"==",
"1.8.2"
]
]
},
{
"name": "platformdirs",
"specs": [
[
"==",
"2.4.1"
]
]
},
{
"name": "prometheus-client",
"specs": [
[
"==",
"0.12.0"
]
]
},
{
"name": "pycparser",
"specs": [
[
"==",
"2.21"
]
]
},
{
"name": "pyflakes",
"specs": [
[
"==",
"2.4.0"
]
]
},
{
"name": "pygments",
"specs": [
[
"==",
"2.11.1"
]
]
},
{
"name": "pyopenssl",
"specs": [
[
"==",
"21.0.0"
]
]
},
{
"name": "pyparsing",
"specs": [
[
"==",
"3.0.6"
]
]
},
{
"name": "pyrsistent",
"specs": [
[
"==",
"0.18.0"
]
]
},
{
"name": "python-dateutil",
"specs": [
[
"==",
"2.8.2"
]
]
},
{
"name": "python-json-logger",
"specs": [
[
"==",
"2.0.2"
]
]
},
{
"name": "pyyaml",
"specs": [
[
"==",
"6.0.2"
]
]
},
{
"name": "readme-renderer",
"specs": [
[
"==",
"32.0"
]
]
},
{
"name": "requests",
"specs": [
[
"==",
"2.26.0"
]
]
},
{
"name": "requests-toolbelt",
"specs": [
[
"==",
"0.9.1"
]
]
},
{
"name": "rfc3986",
"specs": [
[
"==",
"1.5.0"
]
]
},
{
"name": "rich",
"specs": [
[
"==",
"13.2.0"
]
]
},
{
"name": "ruamel-yaml",
"specs": [
[
"==",
"0.17.20"
]
]
},
{
"name": "ruamel-yaml-clib",
"specs": [
[
"==",
"0.2.6"
]
]
},
{
"name": "ruff",
"specs": [
[
"==",
"0.6.2"
]
]
},
{
"name": "secretstorage",
"specs": [
[
"==",
"3.3.1"
]
]
},
{
"name": "six",
"specs": [
[
"==",
"1.16.0"
]
]
},
{
"name": "sniffio",
"specs": [
[
"==",
"1.2.0"
]
]
},
{
"name": "sqlalchemy",
"specs": [
[
"==",
"1.4.29"
]
]
},
{
"name": "stevedore",
"specs": [
[
"==",
"5.3.0"
]
]
},
{
"name": "swmclient",
"specs": [
[
"==",
"0.1.6"
]
]
},
{
"name": "tomli",
"specs": [
[
"==",
"1.2.3"
]
]
},
{
"name": "tornado",
"specs": [
[
"==",
"6.1"
]
]
},
{
"name": "tqdm",
"specs": [
[
"==",
"4.62.3"
]
]
},
{
"name": "traitlets",
"specs": [
[
"==",
"5.1.1"
]
]
},
{
"name": "twine",
"specs": [
[
"==",
"3.7.1"
]
]
},
{
"name": "typing-extensions",
"specs": [
[
"==",
"4.0.1"
]
]
},
{
"name": "urllib3",
"specs": [
[
"==",
"1.26.7"
]
]
},
{
"name": "webencodings",
"specs": [
[
"==",
"0.5.1"
]
]
},
{
"name": "wheel",
"specs": [
[
"==",
"0.37.1"
]
]
},
{
"name": "zipp",
"specs": [
[
"==",
"3.7.0"
]
]
}
],
"lcname": "swmjupyter"
}