diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 11ca0c7eea2a5ac4ac83ed38f753aa5177f13e2d..6da592a30a5bce5383f63157c1509e2086b36933 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -147,6 +147,22 @@ check python dependencies: - when: manual allow_failure: true +check helm chart: + stage: test + image: ${CI_REGISTRY_IMAGE}/dev_python:${DOCKER_TAG} + script: + - scripts/check_helm_chart.sh + after_script: + - > + if [ $CI_JOB_STATUS == 'failed' ]; then + echo 'Make sure that the helm chart values.yaml has been updated and committed by running' + echo './scripts/update_hem_chart.sh' + fi + rules: + - if: $CI_COMMIT_TAG + when: never + - when: on_success + check gui artifacts: stage: test image: ${CI_REGISTRY_IMAGE}/dev_python:${DOCKER_TAG} diff --git a/docs/howto/oasis/migrate.md b/docs/howto/oasis/migrate.md index 6ef3acfaf055cc6b28011688d047133918d1eb1b..e893eab11faec69e4ab9682815e650bae56b05ca 100644 --- a/docs/howto/oasis/migrate.md +++ b/docs/howto/oasis/migrate.md @@ -66,6 +66,30 @@ For changing the minor or major version, please check the [migration steps](#mig ## Migration steps +### to 1.2.2 + +We upgraded the Jupyterhub version used for NORTH from 1.0.2 to 4.0.2. By default the +Jupyterhub database is persisted in the `nomad_oasis_north` container. If you want to +keep the database (e.g. to not loose any open tools), you will have to upgrade the database. +Update the NOMAD docker image version and restart the Oasis like this: + +``` +docker compose down +docker compose pull +docker copmose run north python -m jupyterhub upgrade +docker compose up -d +``` + +Alternatively, you can delete the `nomad_oasis_north` container and start with a fresh +database. Make sure that all north tools are stopped and removed. + +``` +docker compose down +docker rm nomad_oasis_north +docker compose pull +docker compose up -d +``` + ### to 1.2.0 - We introduced the plugin mechanism. There are now more options to control which schemas diff --git a/gui/public/pyiron_logo.png b/gui/public/pyiron_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f3fb087817bdf45cd7fdcfc3f3d7687c47f5e279 Binary files /dev/null and b/gui/public/pyiron_logo.png differ diff --git a/gui/tests/artifacts.js b/gui/tests/artifacts.js index bafe358be1f5862297ad81a63efa529828dd4529..e985fbd18e8d099ef451ed0aba8066e289b88372 100644 --- a/gui/tests/artifacts.js +++ b/gui/tests/artifacts.js @@ -103273,58 +103273,56 @@ window.nomadArtifacts = { }, "northTools": { "jupyter": { - "image": "gitlab-registry.mpcdf.mpg.de/nomad-lab/nomad-remote-tools-hub/jupyterlab:prod", - "description": "### **Jupyter Notebook**: The Classic Notebook Interface\n\nThe Jupyter Notebook is the original web application for creating and sharing computational documents. It offers a simple, streamlined, document-centric experience.", "short_description": "Basic jupyter run with an empty notebook or on given notebook file.", + "description": "### **Jupyter Notebook**: The Classic Notebook Interface\n\nThe Jupyter Notebook is the original web application for creating and sharing computational documents. It offers a simple, streamlined, document-centric experience.", + "image": "gitlab-registry.mpcdf.mpg.de/nomad-lab/north/jupyter:latest", "cmd": null, - "with_path": true, + "image_pull_policy": "Always", + "privileged": false, "path_prefix": "lab/tree", - "mount_path": "/home/jovyan", - "icon": "jupyter_logo.svg", + "with_path": true, "file_extensions": [ "ipynb" ], + "mount_path": "/home/jovyan", + "icon": "jupyter_logo.svg", "maintainer": [ { "name": "Markus Scheidgen", "email": "markus.scheidgen@physik.hu-berlin.de" - }, - { - "name": "Some-one Else", - "email": "markus.scheidgen@physik.hu-berlin.de" } ], - "privileged": false, "external_mounts": [] }, "nionswift": { - "image": "gitlab-registry.mpcdf.mpg.de/nomad-lab/nomad-remote-tools-hub/nionswift-webtop", - "description": "Run Nion Swift to analyze data.", "short_description": "Run NionSwift to analyze data as well as prepare focus series reconstructions", + "description": "Run Nion Swift to analyze data.", + "image": "gitlab-registry.mpcdf.mpg.de/nomad-lab/nomad-remote-tools-hub/nionswift-webtop", "cmd": null, - "with_path": false, + "image_pull_policy": "Always", + "privileged": true, "path_prefix": null, + "with_path": false, + "file_extensions": [], "mount_path": "/config", "icon": null, - "file_extensions": [], "maintainer": [ { "name": "Sherjeel Shabih", "email": "sherjeel.shabih@hu-berlin.de" } ], - "privileged": true, "external_mounts": [] }, "nexustools": { - "image": "gitlab-registry.mpcdf.mpg.de/nomad-lab/nomad-remote-tools-hub/nexus-webtop", - "description": "Includes multiple NeXus tools for visualization and analysis.", "short_description": null, + "description": "Includes multiple NeXus tools for visualization and analysis.", + "image": "gitlab-registry.mpcdf.mpg.de/nomad-lab/nomad-remote-tools-hub/nexus-webtop", "cmd": null, - "with_path": false, + "image_pull_policy": "Always", + "privileged": true, "path_prefix": null, - "mount_path": "/config", - "icon": null, + "with_path": false, "file_extensions": [ "nxs", "nx", @@ -103335,28 +103333,31 @@ window.nomadArtifacts = { "hdf", "ipynb" ], + "mount_path": "/config", + "icon": null, "maintainer": [ { "name": "Sandor Brockhauser", "email": "sandor.brockhauser@physik.hu-berlin.de" } ], - "privileged": true, "external_mounts": [] }, "ellips": { - "image": "gitlab-registry.mpcdf.mpg.de/nomad-lab/nomad-remote-tools-hub/ellips-jupyter", - "description": "This example presents the capabilities of the NOMAD platform to store and standardize ellipsometry data. It shows the generation of a NeXus file according to the [NXellipsometry](https://manual.nexusformat.org/classes/contributed_definitions/NXellipsometry.html#nxellipsometry) application definition and a successive analysis of a SiO2 on Si Psi/Delta measurement.", "short_description": "An example for analyzing ellipsometric data.", + "description": "This example presents the capabilities of the NOMAD platform to store and standardize ellipsometry data. It shows the generation of a NeXus file according to the [NXellipsometry](https://manual.nexusformat.org/classes/contributed_definitions/NXellipsometry.html#nxellipsometry) application definition and a successive analysis of a SiO2 on Si Psi/Delta measurement.", + "image": "gitlab-registry.mpcdf.mpg.de/nomad-lab/nomad-remote-tools-hub/ellips-jupyter", "cmd": null, - "with_path": false, + "image_pull_policy": "Always", + "privileged": false, "path_prefix": "lab/tree", - "mount_path": "/home/jovyan", - "icon": "jupyter_logo.svg", + "with_path": false, "file_extensions": [ "ipynb", "nxs" ], + "mount_path": "/home/jovyan", + "icon": "jupyter_logo.svg", "maintainer": [ { "name": "Florian Dobener", @@ -103367,48 +103368,50 @@ window.nomadArtifacts = { "email": "emminger.carola@physik.hu-berlin.de" } ], - "privileged": false, "external_mounts": [] }, "mpes": { - "image": "gitlab-registry.mpcdf.mpg.de/nomad-lab/north/mpes/webtop", - "description": "This example presents the capabilities of the NOMAD platform to store and standardize multi photoemission spectroscopy (MPES) experimental data. It contains three major examples:\n\n- Taking a pre-binned file, here stored in a h5 file, and converting it into the standardized MPES NeXus format. There exists a [NeXus application definition for MPES](https://manual.nexusformat.org/classes/contributed_definitions/NXmpes.html#nxmpes) which details the internal structure of such a file.\n- Binning of raw data (see [here](https://www.nature.com/articles/s41597-020-00769-8) for additional resources) into a h5 file and consecutively generating a NeXus file from it.\n- An analysis example using data in the NeXus format and employing the [pyARPES](https://github.com/chstan/arpes) analysis tool to reproduce the main findings of [this paper](https://arxiv.org/pdf/2107.07158.pdf).", "short_description": "An example for analyzing mpes data.", + "description": "This example presents the capabilities of the NOMAD platform to store and standardize multi photoemission spectroscopy (MPES) experimental data. It contains three major examples:\n\n- Taking a pre-binned file, here stored in a h5 file, and converting it into the standardized MPES NeXus format. There exists a [NeXus application definition for MPES](https://manual.nexusformat.org/classes/contributed_definitions/NXmpes.html#nxmpes) which details the internal structure of such a file.\n- Binning of raw data (see [here](https://www.nature.com/articles/s41597-020-00769-8) for additional resources) into a h5 file and consecutively generating a NeXus file from it.\n- An analysis example using data in the NeXus format and employing the [pyARPES](https://github.com/chstan/arpes) analysis tool to reproduce the main findings of [this paper](https://arxiv.org/pdf/2107.07158.pdf).", + "image": "gitlab-registry.mpcdf.mpg.de/nomad-lab/north/mpes/webtop", "cmd": null, - "with_path": false, + "image_pull_policy": "Always", + "privileged": true, "path_prefix": null, - "mount_path": "/config", - "icon": null, + "with_path": false, "file_extensions": [ "ipynb", "nxs", "h5", "hdf5" ], + "mount_path": "/config", + "icon": null, "maintainer": [ { "name": "Florian Dobener", "email": "florian.dobener@physik.hu-berlin.de" } ], - "privileged": true, "external_mounts": [] }, "xps": { - "image": "gitlab-registry.mpcdf.mpg.de/nomad-lab/north/xps/jupyter", - "description": "Includes tools for analyzing X-ray Photoelectron Spectroscopy (XPS) spectra and converting SPECS SLE files into NeXus.", "short_description": "An example for analyzing XPS data.", + "description": "Includes tools for analyzing X-ray Photoelectron Spectroscopy (XPS) spectra and converting SPECS SLE files into NeXus.", + "image": "gitlab-registry.mpcdf.mpg.de/nomad-lab/north/xps/jupyter:master", "cmd": null, - "with_path": false, + "image_pull_policy": "Always", + "privileged": false, "path_prefix": "lab/tree", - "mount_path": "/home/jovyan", - "icon": "jupyter_logo.svg", + "with_path": false, "file_extensions": [ "ipynb", "nxs", "h5", "hdf5" ], + "mount_path": "/home/jovyan", + "icon": "jupyter_logo.svg", "maintainer": [ { "name": "Florian Dobener", @@ -103423,126 +103426,131 @@ window.nomadArtifacts = { "email": "rubel.mozumder@physik.hu-berlin.de" } ], - "privileged": false, "external_mounts": [] }, "sts": { - "image": "gitlab-registry.mpcdf.mpg.de/nomad-lab/nomad-remote-tools-hub/sts-jupyter", - "description": "This example is for two types of experiments: Scanning Tunneling Microscopy (STM) and Scanning Tunneling Spectroscopy (STS) from Scanning Probe Microscopy. It can transform the data from files generated by a the nanonis software into the NeXus application definition NXsts. The example contains data files from the two specific nanonis software versions generic 5e and generic 4.5.", "short_description": "An example for analyzing SPM (STM / STS) experiment.", + "description": "This example is for two types of experiments: Scanning Tunneling Microscopy (STM) and Scanning Tunneling Spectroscopy (STS) from Scanning Probe Microscopy. It can transform the data from files generated by a the nanonis software into the NeXus application definition NXsts. The example contains data files from the two specific nanonis software versions generic 5e and generic 4.5.", + "image": "gitlab-registry.mpcdf.mpg.de/nomad-lab/nomad-remote-tools-hub/sts-jupyter", "cmd": null, - "with_path": false, + "image_pull_policy": "Always", + "privileged": false, "path_prefix": "lab/tree", - "mount_path": "/home/jovyan", - "icon": "jupyter_logo.svg", + "with_path": false, "file_extensions": [ "ipynb", "nxs", "h5", "hdf5" ], + "mount_path": "/home/jovyan", + "icon": "jupyter_logo.svg", "maintainer": [ { "name": "Rubel Mozumder", "email": "rubel.mozumder@physik.hu-berlin.de" } ], - "privileged": false, "external_mounts": [] }, "webtop": { - "image": "gitlab-registry.mpcdf.mpg.de/nomad-lab/nomad-remote-tools-hub/webtop", - "description": "Baseline webtop image for test", "short_description": null, + "description": "Baseline webtop image for test", + "image": "gitlab-registry.mpcdf.mpg.de/nomad-lab/nomad-remote-tools-hub/webtop", "cmd": null, - "with_path": false, + "image_pull_policy": "Always", + "privileged": true, "path_prefix": null, + "with_path": false, + "file_extensions": [], "mount_path": "/config", "icon": null, - "file_extensions": [], "maintainer": [ { "name": "Sherjeel Shabih", "email": "sherjeel.shabih@hu-berlin.de" } ], - "privileged": true, "external_mounts": [] }, "apmtools": { - "image": "gitlab-registry.mpcdf.mpg.de/nomad-lab/nomad-remote-tools-hub/apmtools-webtop", - "description": "Miscellaneous tools from the atom probe community:\nCurrently APTyzer, paraprobe-toolbox, and APAV", "short_description": "An example for analyzing atom probe data.", + "description": "Miscellaneous tools from the atom probe community:\nCurrently APTyzer, paraprobe-toolbox, and APAV", + "image": "gitlab-registry.mpcdf.mpg.de/nomad-lab/nomad-remote-tools-hub/apmtools-webtop", "cmd": null, - "with_path": false, + "image_pull_policy": "Always", + "privileged": true, "path_prefix": null, + "with_path": false, + "file_extensions": [], "mount_path": "/config", "icon": "jupyter_logo.svg", - "file_extensions": [], "maintainer": [ { "name": "Markus K\u00fchbach", "email": "markus.kuehbach@physik.hu-berlin.de" } ], - "privileged": true, "external_mounts": [] }, "fiji": { - "image": "gitlab-registry.mpcdf.mpg.de/nomad-lab/nomad-remote-tools-hub/fiji-webtop", - "description": "ImageJ and Fiji with amongst others several electron-microscopy specific plug-ins", "short_description": "ImageJ and Fiji for image processing", + "description": "ImageJ and Fiji with amongst others several electron-microscopy specific plug-ins", + "image": "gitlab-registry.mpcdf.mpg.de/nomad-lab/nomad-remote-tools-hub/fiji-webtop", "cmd": null, - "with_path": false, + "image_pull_policy": "Always", + "privileged": true, "path_prefix": null, + "with_path": false, + "file_extensions": [], "mount_path": "/config", "icon": "jupyter_logo.svg", - "file_extensions": [], "maintainer": [ { "name": "Markus K\u00fchbach", "email": "markus.kuehbach@physik.hu-berlin.de" } ], - "privileged": true, "external_mounts": [] }, "frwr": { - "image": "gitlab-registry.mpcdf.mpg.de/nomad-lab/nomad-remote-tools-hub/frwr-webtop", - "description": "FRWR3 in-line holography/focus series reconstruction code", "short_description": "Inline electron holography by C. Koch", + "description": "FRWR3 in-line holography/focus series reconstruction code", + "image": "gitlab-registry.mpcdf.mpg.de/nomad-lab/nomad-remote-tools-hub/frwr-webtop", "cmd": null, - "with_path": false, + "image_pull_policy": "Always", + "privileged": true, "path_prefix": null, + "with_path": false, + "file_extensions": [], "mount_path": "/config", "icon": "jupyter_logo.svg", - "file_extensions": [], "maintainer": [ { "name": "Markus K\u00fchbach", "email": "markus.kuehbach@physik.hu-berlin.de" } ], - "privileged": true, "external_mounts": [] }, "abtem": { - "image": "gitlab-registry.mpcdf.mpg.de/nomad-lab/nomad-remote-tools-hub/abtem-webtop", - "description": "VESTA, GPAW, and abTEM configured in one container for simulating images and diffraction patterns in transmission electron microscopy", "short_description": "Electronic structure supported image simulation for transmission electron microscopy.", + "description": "VESTA, GPAW, and abTEM configured in one container for simulating images and diffraction patterns in transmission electron microscopy", + "image": "gitlab-registry.mpcdf.mpg.de/nomad-lab/nomad-remote-tools-hub/abtem-webtop", "cmd": null, - "with_path": false, + "image_pull_policy": "Always", + "privileged": true, "path_prefix": null, + "with_path": false, + "file_extensions": [], "mount_path": "/config", "icon": "jupyter_logo.svg", - "file_extensions": [], "maintainer": [ { "name": "Markus K\u00fchbach", "email": "markus.kuehbach@physik.hu-berlin.de" } ], - "privileged": true, "external_mounts": [] } }, diff --git a/nomad/app/v1/routers/north.py b/nomad/app/v1/routers/north.py index be57d7eab21fca13596818e7d5118e6b70543ce8..7df361a9958e0223fc335e95b48790166b2754c6 100644 --- a/nomad/app/v1/routers/north.py +++ b/nomad/app/v1/routers/north.py @@ -29,6 +29,7 @@ from nomad import config from nomad.config.north import NORTHTool from nomad.utils import strip, get_logger, slugify from nomad.processing import Upload +from nomad.app.v1.routers.auth import generate_simple_token from .auth import create_user_dependency, oauth2_scheme from ..models import User, HTTPExceptionModel from ..utils import create_responses @@ -159,7 +160,6 @@ async def get_tool( ) async def start_tool( tool: ToolModel = Depends(tool), - access_token: str = Depends(oauth2_scheme), user: User = Depends(create_user_dependency(required=True)), upload_id: Optional[str] = None, ): @@ -238,6 +238,9 @@ async def start_tool( ) url = f'{config.hub_url()}/api/users/{user.username}/servers/{tool.name}' + access_token = generate_simple_token( + user_id=user.user_id, expires_in=config.north.nomad_access_token_expiry_time + ) body = { 'tool': {'image': tool.image, 'cmd': tool.cmd, 'privileged': tool.privileged}, 'environment': { diff --git a/nomad/config/north.py b/nomad/config/north.py index 43ab0144425761dbf83b6eabe2901d9bc44fde64..3aa5aa7201d38702dedac21c49ba114b535344af 100644 --- a/nomad/config/north.py +++ b/nomad/config/north.py @@ -46,18 +46,60 @@ class NORTHExternalMount(BaseModel): class NORTHTool(BaseModel): - image: str - description: str = None - short_description: str = None - cmd: str = None - with_path: bool = False - path_prefix: str = None - mount_path: str = None - icon: str = None - file_extensions: List[str] = [] - maintainer: List[NORTHToolMaintainer] = [] - privileged: bool = False - external_mounts: List[NORTHExternalMount] = [] + short_description: str = Field( + None, + description='A short description of the tool, e.g. shown in the NOMAD GUI.', + ) + description: str = Field( + None, description='A description of the tool, e.g. shown in the NOMAD GUI.' + ) + image: str = Field( + None, description='The docker image (incl. tags) to use for the tool.' + ) + cmd: str = Field( + None, description='The container cmd that is passed to the spawner.' + ) + image_pull_policy: str = Field( + 'Always', description='The image pull policy used in k8s deployments.' + ) + privileged: bool = Field( + False, description='Whether the tool needs to run in privileged mode.' + ) + path_prefix: str = Field( + None, + description=( + 'An optional path prefix that is added to the container URL to ' + 'reach the tool, e.g. "lab/tree" for jupyterlab.' + ), + ) + with_path: bool = Field( + False, + description=( + 'Whether the tool supports a path to a file or directory. ' + 'This also enables tools to be launched from files in the NOMAD UI.' + ), + ) + file_extensions: List[str] = Field( + [], + description='The file extensions of files that this tool should be launchable for.', + ) + mount_path: str = Field( + None, + description=( + 'The path in the container where uploads and work directories will be mounted, ' + 'e.g. /home/jovyan for Jupyter containers.' + ), + ) + icon: str = Field( + None, + description='A URL to an icon that is used to represent the tool in the NOMAD UI.', + ) + maintainer: List[NORTHToolMaintainer] = Field( + [], description='The maintainers of the tool.' + ) + external_mounts: List[NORTHExternalMount] = Field( + [], description='Additional mounts to be added to tool containers.' + ) class NORTHTools(Options): @@ -107,14 +149,25 @@ class NORTH(NomadSettings): None, description='The NOMAD app host name that spawned containers use.' ) windows = Field(True, description='Enable windows OS hacks.') + nomad_access_token_expiry_time: int = Field( + 24 * 3600, + description=( + 'All tools are run with an access token for the NOMAD api in the NOMAD_CLIENT_ACCESS_TOKEN ' + 'environment variable. This token will be automatically used by the nomad-lab Python package, ' + 'e.g. if you use the ArchiveQuery to access data. ' + 'This option sets the amount of seconds that this token is valid for.' + ), + ) tools: NORTHTools = Field( NORTHTools( + include=None, + exclude=['pyiron'], options={ 'jupyter': NORTHTool( short_description='Basic jupyter run with an empty notebook or on given notebook file.', description='### **Jupyter Notebook**: The Classic Notebook Interface\n\nThe Jupyter Notebook is the original web application for creating and sharing computational documents. It offers a simple, streamlined, document-centric experience.', - image='gitlab-registry.mpcdf.mpg.de/nomad-lab/nomad-remote-tools-hub/jupyterlab:prod', + image='gitlab-registry.mpcdf.mpg.de/nomad-lab/north/jupyter:latest', path_prefix='lab/tree', with_path=True, mount_path='/home/jovyan', @@ -124,11 +177,23 @@ class NORTH(NomadSettings): NORTHToolMaintainer( name='Markus Scheidgen', email='markus.scheidgen@physik.hu-berlin.de', - ), + ) + ], + ), + 'pyiron': NORTHTool( + short_description='Jupyterlab with pyiron installed.', + description='## Pyiron: Complex workflows made easy\n\nFrom rapid prototyping to high performance computing in material science. [Homepage](https://pyiron.org/).', + image='pyiron/pyiron:latest', + path_prefix='lab/tree', + with_path=True, + mount_path='/home/jovyan', + icon='pyiron_logo.png', + file_extensions=['ipynb'], + maintainer=[ NORTHToolMaintainer( - name='Some-one Else', + name='Markus Scheidgen', email='markus.scheidgen@physik.hu-berlin.de', - ), + ) ], ), 'nionswift': NORTHTool( @@ -201,7 +266,7 @@ class NORTH(NomadSettings): 'xps': NORTHTool( short_description='An example for analyzing XPS data.', description='Includes tools for analyzing X-ray Photoelectron Spectroscopy (XPS) spectra and converting SPECS SLE files into NeXus.', - image='gitlab-registry.mpcdf.mpg.de/nomad-lab/north/xps/jupyter', + image='gitlab-registry.mpcdf.mpg.de/nomad-lab/north/xps/jupyter:master', path_prefix='lab/tree', icon='jupyter_logo.svg', mount_path='/home/jovyan', @@ -303,7 +368,7 @@ class NORTH(NomadSettings): ) ], ), - } + }, ), description='The available north tools. Either the tools definitions as dict or a path to a .json file.', ) diff --git a/nomad/jupyterhub_config.py b/nomad/jupyterhub_config.py index c023eb62e21030a086c2b79d31225bbbf2834f0e..418b75afc3774c7aaaaba5160c5c400d6c39617c 100644 --- a/nomad/jupyterhub_config.py +++ b/nomad/jupyterhub_config.py @@ -77,13 +77,13 @@ def pre_spawn(spawner): c.Spawner.pre_spawn_hook = pre_spawn # configure nomad service -c.JupyterHub.services = [ +c.JupyterHub.services.append( { 'name': 'nomad-service', 'admin': True, 'api_token': config.north.hub_service_api_token, } -] +) # Allow named single-user servers per user (Default: False) c.JupyterHub.allow_named_servers = True @@ -117,6 +117,7 @@ c.GenericOAuthenticator.username_key = 'preferred_username' c.GenericOAuthenticator.scope = ['openid', 'profile'] c.Authenticator.auto_login = True c.Authenticator.enable_auth_state = True +c.Ahtenticator.allow_all = True # configure docker spawner diff --git a/ops/kubernetes/nomad-prod-develop.yaml b/ops/kubernetes/nomad-prod-develop.yaml index 52e600b2d05638b355a537091919e74b28a64034..565cf041f9e6228bf513641643d774ebfc1d6c78 100644 --- a/ops/kubernetes/nomad-prod-develop.yaml +++ b/ops/kubernetes/nomad-prod-develop.yaml @@ -41,7 +41,7 @@ nomad: memory: "8Gi" jupyterhub: - fullnameOverride: "nomad-prod-staging-north" + fullnameOverride: "nomad-prod-develop-north" hub: baseUrl: "/prod/v1/develop/north" config: diff --git a/ops/kubernetes/nomad/Chart.lock b/ops/kubernetes/nomad/Chart.lock index c79e2d604f329394c58607d48f1406950fa31e0c..ca21ee2e9c5a86a58143822d20db2476a7ba537a 100644 --- a/ops/kubernetes/nomad/Chart.lock +++ b/ops/kubernetes/nomad/Chart.lock @@ -10,6 +10,6 @@ dependencies: version: 14.0.4 - name: jupyterhub repository: https://jupyterhub.github.io/helm-chart/ - version: 1.2.0 -digest: sha256:75cf4c73a86fb9a6ca46cbfd7676d20600c64932659c30b36d4b494170a7b6d0 -generated: "2024-02-08T20:14:29.044024+01:00" + version: 3.2.1 +digest: sha256:f77e87c16f5417c9ba3d30143451035d6b570c5eb9d736589069e31e26ab5adf +generated: "2024-02-26T13:51:48.48639+01:00" diff --git a/ops/kubernetes/nomad/Chart.yaml b/ops/kubernetes/nomad/Chart.yaml index 22860c0caeaddb7d2f7e167c33d8d664b0976b05..e7adb99ecfc6c950a41f6f39b7fc4b253f478863 100644 --- a/ops/kubernetes/nomad/Chart.yaml +++ b/ops/kubernetes/nomad/Chart.yaml @@ -37,7 +37,7 @@ dependencies: version: 14.0.4 repository: oci://registry-1.docker.io/bitnamicharts - name: jupyterhub - version: "1.2.0" + version: "3.2.1" repository: "https://jupyterhub.github.io/helm-chart/" condition: nomad.config.north.enabled diff --git a/ops/kubernetes/nomad/updatevalues.py b/ops/kubernetes/nomad/updatevalues.py new file mode 100644 index 0000000000000000000000000000000000000000..3a4ba1e04cbb611021e9cc435059a3ec5b0cd637 --- /dev/null +++ b/ops/kubernetes/nomad/updatevalues.py @@ -0,0 +1,74 @@ +# Updates the values.yaml file based on the nomad configuration. Currently this +# includes the following: +# - populating jupyterhub.singleUser.profileList with NORTH tools + +from typing import Any, Dict +import os +from sys import stdout, argv +from ruamel.yaml import YAML +from nomad import config + +dir_path = os.path.dirname(os.path.realpath(__file__)) +file_path = os.path.join(dir_path, 'values.yaml') + +yaml = YAML() +yaml.allow_duplicate_keys = True +with open(file_path, 'r') as file: + data = yaml.load(file) + +# Profiles currently break how NOMAD interacts with JupyterHub, so we're only using +# the extraImages to feed the prePuller +generate_profiles = False + +if generate_profiles: + profile_list = ( + data.setdefault('jupyterhub', {}) + .setdefault('singleuser', {}) + .setdefault('profileList', []) + ) + for name, tool in config.north.tools.filtered_items(): + profile = next( + (profile for profile in profile_list if profile['display_name'] == name), + None, + ) + if profile is None: + profile = dict() + profile_list.append(profile) + + profile.update( + dict( + display_name=name, + description=tool.description, + kubespawner_override=dict( + image=tool.image, + image_pull_policy=tool.image_pull_policy, + ), + ) + ) + + if tool.path_prefix: + profile['kubespawner_override']['default_url'] = tool.path_prefix + if tool.cmd: + profile['kubespawner_override']['cmd'] = tool.cmd + if tool.privileged: + profile['kubespawner_override']['privileged'] = tool.privileged + +else: + pre_puller = data.setdefault('jupyterhub', {}).setdefault('prePuller', {}) + extra_images: Dict[str, Any] = {} + pre_puller['extraImages'] = extra_images + + for name, tool in config.north.tools.filtered_items(): + try: + image_name, image_tag = tool.image.rsplit(':', 1) + except ValueError: + image_name, image_tag = tool.image, 'latest' + + extra_images[name] = dict(name=image_name, tag=image_tag) + + +if len(argv) == 2: + with open(argv[1], 'w') as file: + yaml.dump(data, file) +else: + yaml.dump(data, stdout) diff --git a/ops/kubernetes/nomad/values.yaml b/ops/kubernetes/nomad/values.yaml index ac2cba4fee1aa8045b283998904535d7a5fad996..6835cc20f3358a58f5cdb53db476dba9bcf58efd 100644 --- a/ops/kubernetes/nomad/values.yaml +++ b/ops/kubernetes/nomad/values.yaml @@ -2,8 +2,8 @@ # This is a YAML-formatted file. # Declare variables to be passed into your templates. roll: false -nameOverride: "" -fullnameOverride: "" +nameOverride: '' +fullnameOverride: '' serviceAccount: # Specifies whether a service account should be created @@ -14,42 +14,33 @@ serviceAccount: annotations: {} # The name of the service account to use. # If not set and create is true, a name is generated using the fullname template - name: "" + name: '' nomad: enabled: true image: repository: gitlab-registry.mpcdf.mpg.de/nomad-lab/nomad-fair - tag: "latest" + tag: latest pullPolicy: Always imagePullSecrets: [] - - # Default values for nomad. - # This is a YAML-formatted file. - # Declare variables to be passed into your templates. - - # GLOBAL parameters - enabled: false - - ## Default values for nomad@FAIRDI config: version: - label: "latest" + label: latest isTest: false isBeta: false usesBetaData: false - officialUrl: "https://nomad-lab.eu/prod/v1/gui" + officialUrl: https://nomad-lab.eu/prod/v1/gui meta: - service: "app" - homepage: "https://nomad-lab.eu" - source_url: "https://gitlab.mpcdf.mpg.de/nomad-lab/nomad-FAIR" - maintainer_email: "markus.scheidgen@physik.hu-berlin.de" + service: app + homepage: https://nomad-lab.eu + source_url: https://gitlab.mpcdf.mpg.de/nomad-lab/nomad-FAIR + maintainer_email: markus.scheidgen@physik.hu-berlin.de api: ## Secret used as cryptographic seed - secret: "defaultApiSecret" + secret: defaultApiSecret ## Limit of unpublished uploads per user, except admin user uploadLimit: 10 @@ -63,15 +54,15 @@ nomad: ## There are two routing modes "queue" and "worker". The "queue" routing will use a general # task queue and spread calc processing task over worker instances. The "worker" routing # will send all tasks related to an upload to the same worker - routing: "queue" + routing: queue timeout: 7200 acks_late: false mail: enabled: false - host: "localhost" + host: localhost port: 25 - from: "support@nomad-lab.eu" + from: support@nomad-lab.eu client: username: admin @@ -93,17 +84,17 @@ nomad: datacite: enabled: false - prefix: "10.17172" + prefix: '10.17172' ## A common name/prefix for all dbs and indices. dbname: fairdi_nomad_latest mongo: - host: "" + host: '' port: 27017 elastic: - host: "" + host: '' port: 9200 timeout: 60 bulkTimeout: 600 @@ -113,16 +104,16 @@ nomad: logstash: enabled: true port: 5000 - host: "" + host: '' keycloak: - serverExternalUrl: "https://nomad-lab.eu/fairdi/keycloak/auth/" - serverUrl: "https://nomad-lab.eu/keycloak/auth/" - realmName: "fairdi_nomad_test" - username: "admin" - clientId: "nomad_public" - guiClientId: "nomad_public" - admin_user_id: "00000000-0000-0000-0000-000000000000" + serverExternalUrl: https://nomad-lab.eu/fairdi/keycloak/auth/ + serverUrl: https://nomad-lab.eu/keycloak/auth/ + realmName: fairdi_nomad_test + username: admin + clientId: nomad_public + guiClientId: nomad_public + admin_user_id: 00000000-0000-0000-0000-000000000000 ## Everything concerning the data that is used by the service volumes: @@ -140,7 +131,7 @@ nomad: north: enabled: false - hubServiceApiToken: "secret-token" + hubServiceApiToken: secret-token gui: ## This variable is used in the GUI to show or hide additional information @@ -148,16 +139,27 @@ nomad: ## automatically gz based on header gzip: true + proxy: + # Set a nodePort to create a NodePort service instead of ClusterIP. Also set a nodeIP for the externalIP. + timeout: 120 + editTimeout: 1800 + external: + host: nomad-lab.eu + port: 80 + path: /fairdi/nomad/latest + https: true + + ingress: enabled: false limitConnections: 32 limitConnectionsApi: 8 hosts: - - nomad-lab.eu - className: "" + - nomad-lab.eu + className: '' annotations: - nginx.ingress.kubernetes.io/ssl-redirect: "false" - nginx.ingress.kubernetes.io/proxy-body-size: "32g" + nginx.ingress.kubernetes.io/ssl-redirect: 'false' + nginx.ingress.kubernetes.io/proxy-body-size: 32g tls: [] # Additional volumes on the output Deployment definition. @@ -182,7 +184,7 @@ nomad: ## Everything concerning the nginx that serves the gui, proxies the api # It is run via NodePort service proxy: - path: "/fairdi/nomad/latest" + path: /fairdi/nomad/latest timeout: 60 editTimeout: 60 connectionTimeout: 10 @@ -196,8 +198,8 @@ nomad: tag: 1.13.9-alpine pullPolicy: IfNotPresent - command: ["nginx"] - args: ["-g", "daemon off;"] + command: [nginx] + args: [-g, daemon off;] imagePullSecrets: [] @@ -379,7 +381,7 @@ jupyterhub: type: ClusterIP singleuser: image: - pullPolicy: "Always" + pullPolicy: Always storage: type: none hub: @@ -416,13 +418,13 @@ jupyterhub: hub_service_api_token = os.getenv('NOMAD_NORTH_HUB_SERVICE_API_TOKEN') # configure nomad service - c.JupyterHub.services = [ + c.JupyterHub.services.append( { "name": "nomad-service", "admin": True, "api_token": hub_service_api_token, } - ] + ) async def pre_spawn_hook(spawner): await spawner.load_user_options() @@ -433,10 +435,6 @@ jupyterhub: if spawner.handler.current_user.name != 'nomad-service': # Do nothing, will only launch the default image with no volumes. - # Only the nomad-service can launch specialized tools with mounted volumes - if spawner.name: - spawner.log.error(f'The {spawner.name} server is not allowed to start this way, raise an error') - raise NotImplementedError('Only the nomad-service can launch specialized tools.') return user_home = spawner.user_options.get('user_home') @@ -479,10 +477,11 @@ jupyterhub: spawner.uid = 0 c.Spawner.pre_spawn_hook = pre_spawn_hook + c.OAuthenticator.allow_all = True cull: enabled: true - timeout: 3600 + timeout: 86400 # 24 hours every: 600 removeNamedServers: true @@ -490,10 +489,46 @@ jupyterhub: hook: enabled: true image: - pullPolicy: "Always" + pullPolicy: Always continuous: enabled: false - + extraImages: + jupyter: + name: gitlab-registry.mpcdf.mpg.de/nomad-lab/north/jupyter + tag: latest + nionswift: + name: gitlab-registry.mpcdf.mpg.de/nomad-lab/nomad-remote-tools-hub/nionswift-webtop + tag: latest + nexustools: + name: gitlab-registry.mpcdf.mpg.de/nomad-lab/nomad-remote-tools-hub/nexus-webtop + tag: latest + ellips: + name: gitlab-registry.mpcdf.mpg.de/nomad-lab/nomad-remote-tools-hub/ellips-jupyter + tag: latest + mpes: + name: gitlab-registry.mpcdf.mpg.de/nomad-lab/north/mpes/webtop + tag: latest + xps: + name: gitlab-registry.mpcdf.mpg.de/nomad-lab/north/xps/jupyter + tag: master + sts: + name: gitlab-registry.mpcdf.mpg.de/nomad-lab/nomad-remote-tools-hub/sts-jupyter + tag: latest + webtop: + name: gitlab-registry.mpcdf.mpg.de/nomad-lab/nomad-remote-tools-hub/webtop + tag: latest + apmtools: + name: gitlab-registry.mpcdf.mpg.de/nomad-lab/nomad-remote-tools-hub/apmtools-webtop + tag: latest + fiji: + name: gitlab-registry.mpcdf.mpg.de/nomad-lab/nomad-remote-tools-hub/fiji-webtop + tag: latest + frwr: + name: gitlab-registry.mpcdf.mpg.de/nomad-lab/nomad-remote-tools-hub/frwr-webtop + tag: latest + abtem: + name: gitlab-registry.mpcdf.mpg.de/nomad-lab/nomad-remote-tools-hub/abtem-webtop + tag: latest scheduling: userScheduler: enabled: false diff --git a/ops/kubernetes/values.yaml b/ops/kubernetes/values.yaml index 8a5de798558488c1e8a1d854c91e525148a14fe6..4bd569c4d8e9ca2e8f015ea6a3305303048855e3 100644 --- a/ops/kubernetes/values.yaml +++ b/ops/kubernetes/values.yaml @@ -85,7 +85,7 @@ nomad: ingress: enabled: true limitConnections: 32 - limitConnectionsApi: 8 + limitConnectionsApi: 16 className: "nginx" annotations: cert-manager.io/cluster-issuer: "letsencrypt-production" diff --git a/pyproject.toml b/pyproject.toml index d3dcfb2c8131bf9f77bb7bfe8a1317588c34bcf1..5ec11c8d4a78f26b87474c0b867405b8fab02f82 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -102,7 +102,7 @@ infrastructure = [ 'fastapi==0.92.0', 'uvicorn[standard]', 'python-multipart==0.0.5', - 'jupyterhub==1.4.2', + 'jupyterhub==4.0.2', 'dockerspawner==12.1.0', 'oauthenticator==15.1.0', 'validators==0.18.2', @@ -140,7 +140,8 @@ dev = [ 'mkdocs-click==0.8.0', 'mkdocs-redirects==1.2.0', 'mkdocs-git-revision-date-localized-plugin==1.2.1', - 'ruff==0.1.8' + 'ruff==0.1.8', + 'ruamel.yaml==0.17.21' ] diff --git a/requirements-dev.txt b/requirements-dev.txt index 5be4fda0fcb64af24d4e7d85f8d85aa0f8fd1cf6..292843e01e8ae44348dc4a8bd8f36132fc824784 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -2,18 +2,19 @@ # This file is autogenerated by pip-compile with Python 3.9 # by the following command: # -# pip-compile --annotation-style=line --extra=dev --extra=infrastructure --extra=parsing --output-file=requirements-dev.txt --resolver=backtracking pyproject.toml requirements.txt +# pip-compile --annotation-style=line --extra=dev --extra=infrastructure --extra=parsing --output-file=requirements-dev.txt --pip-args='--prefer-binary' pyproject.toml requirements.txt # aiosmtpd==1.4.4.post2 # via nomad-lab (pyproject.toml) alabaster==0.7.12 # via -r requirements.txt, sphinx alembic==1.9.1 # via -r requirements.txt, jupyterhub amqp==5.1.1 # via -r requirements.txt, kombu -aniso8601==7.0.0 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) +aniso8601==7.0.0 # via -r requirements.txt, nomad-lab (pyproject.toml) anyio==3.6.2 # via -r requirements.txt, httpcore, starlette, watchfiles +appnope==0.1.4 # via -r requirements.txt, ipykernel, ipython arrow==1.2.3 # via -r requirements.txt, isoduration asciitree==0.3.3 # via -r requirements.txt, zarr -ase==3.19.0 # via -r requirements.txt, asr, ifes-apt-tc-data-modeling, matid, nomad-lab, nomad-lab (pyproject.toml), quippy-ase -asgiref==3.6.0 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) +ase==3.19.0 # via -r requirements.txt, asr, ifes-apt-tc-data-modeling, matid, nomad-lab (pyproject.toml), quippy-ase +asgiref==3.6.0 # via -r requirements.txt, nomad-lab (pyproject.toml) asr==0.4.1 # via -r requirements.txt, nomad-lab (pyproject.toml) asteval==0.9.31 # via -r requirements.txt, lmfit astroid==2.11.7 # via nomad-lab (pyproject.toml), pylint @@ -24,25 +25,25 @@ atpublic==3.1.1 # via aiosmtpd attrs==22.2.0 # via -r requirements.txt, aiosmtpd, cattrs, jsonschema, pytest, requests-cache babel==2.11.0 # via -r requirements.txt, mkdocs-git-revision-date-localized-plugin, sphinx backcall==0.2.0 # via -r requirements.txt, ipython -bagit==1.8.1 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) -basicauth==0.4.1 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) -bcrypt==3.2.0 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) +bagit==1.8.1 # via -r requirements.txt, nomad-lab (pyproject.toml) +basicauth==0.4.1 # via -r requirements.txt, nomad-lab (pyproject.toml) +bcrypt==3.2.0 # via -r requirements.txt, nomad-lab (pyproject.toml) beautifulsoup4==4.11.1 # via -r requirements.txt, bs4 billiard==3.6.4.0 # via -r requirements.txt, celery biopython==1.80 # via -r requirements.txt, mdanalysis -bitarray==2.3.5 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) +bitarray==2.3.5 # via -r requirements.txt, nomad-lab (pyproject.toml) bleach==5.0.1 # via readme-renderer -bs4==0.0.1 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) +bs4==0.0.1 # via -r requirements.txt, nomad-lab (pyproject.toml) build==0.9.0 # via nomad-lab (pyproject.toml), pip-tools -cachetools==4.2.4 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) +cachetools==4.2.4 # via -r requirements.txt, nomad-lab (pyproject.toml) cattrs==22.2.0 # via -r requirements.txt, requests-cache -celery[redis]==5.2.7 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) +celery[redis]==5.2.7 # via -r requirements.txt, nomad-lab (pyproject.toml) certifi==2022.12.7 # via -r requirements.txt, elasticsearch, httpcore, httpx, requests certipy==0.1.3 # via -r requirements.txt, jupyterhub cffi==1.15.1 # via -r requirements.txt, bcrypt, cryptography cftime==1.6.2 # via -r requirements.txt, netcdf4 charset-normalizer==2.0.12 # via -r requirements.txt, requests -click==8.1.3 # via -r requirements.txt, asr, celery, click-didyoumean, click-plugins, click-repl, flask, mkdocs, mkdocs-click, nomad-lab, nomad-lab (pyproject.toml), pip-tools, uvicorn +click==8.1.3 # via -r requirements.txt, asr, celery, click-didyoumean, click-plugins, click-repl, flask, mkdocs, mkdocs-click, nomad-lab (pyproject.toml), pip-tools, uvicorn click-didyoumean==0.3.0 # via -r requirements.txt, celery click-plugins==1.1.1 # via -r requirements.txt, celery click-repl==0.2.0 # via -r requirements.txt, celery @@ -51,7 +52,7 @@ colorama==0.4.6 # via twine comm==0.1.4 # via -r requirements.txt, ipywidgets commonmark==0.9.1 # via -r requirements.txt, recommonmark coverage==6.5.0 # via pytest-cov -cryptography==39.0.0 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml), pyjwt, pyopenssl, rfc3161ng, secretstorage +cryptography==39.0.0 # via -r requirements.txt, nomad-lab (pyproject.toml), pyjwt, pyopenssl, rfc3161ng cycler==0.11.0 # via -r requirements.txt, matplotlib dask[array]==2022.2.0 # via -r requirements.txt, hyperspy, kikuchipy, orix, pyxem debugpy==1.6.5 # via -r requirements.txt, ipykernel @@ -62,14 +63,14 @@ diffsims==0.5.2 # via -r requirements.txt, kikuchipy, pyxem dill==0.3.6 # via -r requirements.txt, hyperspy, pylint dnspython==2.2.1 # via -r requirements.txt, email-validator, pymongo docker==6.0.1 # via -r requirements.txt, dockerspawner -dockerspawner==12.1.0 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) -docstring-parser==0.12 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) +dockerspawner==12.1.0 # via -r requirements.txt, nomad-lab (pyproject.toml) +docstring-parser==0.12 # via -r requirements.txt, nomad-lab (pyproject.toml) docutils==0.19 # via -r requirements.txt, m2r, readme-renderer, recommonmark, sphinx ecdsa==0.18.0 # via -r requirements.txt, python-jose -elasticsearch==7.17.1 # via -r requirements.txt, elasticsearch-dsl, nomad-lab, nomad-lab (pyproject.toml) -elasticsearch-dsl==7.4.0 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) +elasticsearch==7.17.1 # via -r requirements.txt, elasticsearch-dsl, nomad-lab (pyproject.toml) +elasticsearch-dsl==7.4.0 # via -r requirements.txt, nomad-lab (pyproject.toml) email-validator==1.3.0 # via -r requirements.txt, optimade -entrypoints==0.4 # via -r requirements.txt, ipyparallel, jupyter-client, jupyterhub, numcodecs +entrypoints==0.4 # via -r requirements.txt, ipyparallel, jupyter-client, numcodecs escapism==1.0.1 # via -r requirements.txt, dockerspawner essential-generators==1.0 # via nomad-lab (pyproject.toml) et-xmlfile==1.1.0 # via -r requirements.txt, openpyxl @@ -78,9 +79,9 @@ execnet==1.9.0 # via pytest-xdist executing==0.10.0 # via devtools f90wrap==0.2.13 # via -r requirements.txt, quippy-ase fabio==2023.6.0 # via -r requirements.txt, pyfai, silx -fastapi==0.92.0 # via -r requirements.txt, h5grove, nomad-lab, nomad-lab (pyproject.toml) +fastapi==0.92.0 # via -r requirements.txt, h5grove, nomad-lab (pyproject.toml) fasteners==0.18 # via -r requirements.txt, mdanalysis, zarr -filelock==3.3.1 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) +filelock==3.3.1 # via -r requirements.txt, nomad-lab (pyproject.toml) flask==2.2.2 # via -r requirements.txt, asr flatdict==4.0.1 # via -r requirements.txt fonttools==4.38.0 # via -r requirements.txt, matplotlib @@ -89,26 +90,26 @@ fsspec==2022.11.0 # via -r requirements.txt, dask, hyperspy future==0.18.2 # via -r requirements.txt, uncertainties ghp-import==2.1.0 # via mkdocs gitdb==4.0.10 # via -r requirements.txt, gitpython -gitpython==3.1.24 # via -r requirements.txt, mkdocs-git-revision-date-localized-plugin, nomad-lab, nomad-lab (pyproject.toml) +gitpython==3.1.24 # via -r requirements.txt, mkdocs-git-revision-date-localized-plugin, nomad-lab (pyproject.toml) greenlet==2.0.1 # via -r requirements.txt, sqlalchemy griddataformats==0.7.0 # via -r requirements.txt, mdanalysis gsd==2.7.0 # via -r requirements.txt, mdanalysis -gunicorn==21.2.0 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) +gunicorn==21.2.0 # via -r requirements.txt, nomad-lab (pyproject.toml) h11==0.14.0 # via -r requirements.txt, httpcore, uvicorn -h5grove[fastapi]==1.3.0 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) -h5py==3.6.0 # via -r requirements.txt, h5grove, hyperspy, ifes-apt-tc-data-modeling, kikuchipy, nionswift, nomad-lab, nomad-lab (pyproject.toml), orix, phonopy, pyfai, silx -hjson==3.0.2 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) -html5lib==1.1 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) +h5grove[fastapi]==1.3.0 # via -r requirements.txt, nomad-lab (pyproject.toml) +h5py==3.6.0 # via -r requirements.txt, h5grove, hyperspy, ifes-apt-tc-data-modeling, kikuchipy, nionswift, nomad-lab (pyproject.toml), orix, phonopy, pyfai, silx +hjson==3.0.2 # via -r requirements.txt, nomad-lab (pyproject.toml) +html5lib==1.1 # via -r requirements.txt, nomad-lab (pyproject.toml) httpcore==0.16.3 # via -r requirements.txt, httpx httptools==0.5.0 # via -r requirements.txt, uvicorn -httpx==0.23.3 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) +httpx==0.23.3 # via -r requirements.txt, nomad-lab (pyproject.toml) hyperspy==1.7.5 # via -r requirements.txt, kikuchipy, pyxem idna==3.4 # via -r requirements.txt, anyio, email-validator, jsonschema, requests, rfc3986 ifes-apt-tc-data-modeling==0.0.9 # via -r requirements.txt imageio==2.24.0 # via -r requirements.txt, hyperspy, kikuchipy, nionswift, nionswift-io, nionui, scikit-image imagesize==1.4.1 # via -r requirements.txt, sphinx -importlib-metadata==4.13.0 # via -r requirements.txt, flask, hyperspy, keyring, markdown, mkdocs, nomad-lab, nomad-lab (pyproject.toml), sphinx, twine -inflection==0.5.1 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) +importlib-metadata==4.13.0 # via -r requirements.txt, flask, hyperspy, jupyterhub, keyring, markdown, mkdocs, nomad-lab (pyproject.toml), sphinx, twine +inflection==0.5.1 # via -r requirements.txt, nomad-lab (pyproject.toml) ipykernel==6.16.2 # via -r requirements.txt, ipyparallel ipyparallel==8.4.1 # via -r requirements.txt, hyperspy ipython==7.34.0 # via -r requirements.txt, hyperspy, ipykernel, ipyparallel, ipywidgets @@ -116,19 +117,18 @@ ipywidgets==8.1.1 # via -r requirements.txt, pyxem isodate==0.6.1 # via -r requirements.txt, rdflib isoduration==20.11.0 # via -r requirements.txt, jsonschema isort==4.3.21 # via pylint -itsdangerous==2.1.2 # via -r requirements.txt, flask, nomad-lab, nomad-lab (pyproject.toml) +itsdangerous==2.1.2 # via -r requirements.txt, flask, nomad-lab (pyproject.toml) jaraco-classes==3.2.3 # via keyring jedi==0.18.2 # via -r requirements.txt, ipython -jeepney==0.8.0 # via keyring, secretstorage jinja2==3.0.3 # via -r requirements.txt, flask, hyperspy, jupyterhub, mkdocs, mkdocs-macros-plugin, mkdocs-material, sphinx -jmespath==0.10.0 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) -joblib==1.1.0 # via -r requirements.txt, mdanalysis, nomad-lab, pymatgen, scikit-learn +jmespath==0.10.0 # via -r requirements.txt, nomad-lab (pyproject.toml) +joblib==1.1.0 # via -r requirements.txt, mdanalysis, pymatgen, scikit-learn jsonpointer==2.3 # via -r requirements.txt, jsonschema -jsonschema[format]==4.17.3 # via -r requirements.txt, jupyter-telemetry, nomad-lab, nomad-lab (pyproject.toml), oauthenticator +jsonschema[format]==4.17.3 # via -r requirements.txt, jupyter-telemetry, nomad-lab (pyproject.toml), oauthenticator jupyter-client==7.4.8 # via -r requirements.txt, ipykernel, ipyparallel jupyter-core==4.12.0 # via -r requirements.txt, jupyter-client jupyter-telemetry==0.1.0 # via -r requirements.txt, jupyterhub -jupyterhub==1.4.2 # via -r requirements.txt, dockerspawner, nomad-lab, nomad-lab (pyproject.toml), oauthenticator +jupyterhub==4.0.2 # via -r requirements.txt, dockerspawner, nomad-lab (pyproject.toml), oauthenticator jupyterlab-widgets==3.0.9 # via -r requirements.txt, ipywidgets keyring==23.11.0 # via twine kikuchipy==0.8.7 # via -r requirements.txt @@ -140,18 +140,18 @@ lazy-object-proxy==1.9.0 # via astroid llvmlite==0.39.1 # via -r requirements.txt, numba lmfit==1.2.2 # via -r requirements.txt, pyxem locket==1.0.0 # via -r requirements.txt, partd -lxml==4.7.1 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) -m2r==0.2.1 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) +lxml==4.7.1 # via -r requirements.txt, nomad-lab (pyproject.toml) +m2r==0.2.1 # via -r requirements.txt, nomad-lab (pyproject.toml) mako==1.2.4 # via -r requirements.txt, alembic markdown==3.4.1 # via mkdocs, mkdocs-click, mkdocs-material, pymdown-extensions markupsafe==2.1.1 # via -r requirements.txt, jinja2, mako, nomad-lab (pyproject.toml), werkzeug -matid==2.0.0.dev2 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) +matid==2.0.0.dev2 # via -r requirements.txt, nomad-lab (pyproject.toml) matplotlib==3.5.3 # via -r requirements.txt, ase, asr, diffsims, hyperspy, kikuchipy, matplotlib-scalebar, mdanalysis, orix, phonopy, pyfai, pymatgen, pyxem, radioactivedecay matplotlib-inline==0.1.6 # via -r requirements.txt, ipykernel, ipython matplotlib-scalebar==0.8.1 # via -r requirements.txt, orix mccabe==0.6.1 # via pylint -mdanalysis==2.5.0 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) -memoization==0.4.0 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) +mdanalysis==2.5.0 # via -r requirements.txt, nomad-lab (pyproject.toml) +memoization==0.4.0 # via -r requirements.txt, nomad-lab (pyproject.toml) mergedeep==1.3.4 # via -r requirements.txt, mkdocs mistune==2.0.4 # via -r requirements.txt, m2r mkdocs==1.3.0 # via mkdocs-git-revision-date-localized-plugin, mkdocs-macros-plugin, mkdocs-material, mkdocs-redirects, nomad-lab (pyproject.toml) @@ -163,55 +163,52 @@ mkdocs-material==8.2.8 # via nomad-lab (pyproject.toml) mkdocs-material-extensions==1.3.1 # via mkdocs-material, nomad-lab (pyproject.toml) mkdocs-redirects==1.2.0 # via nomad-lab (pyproject.toml) mmtf-python==1.1.3 # via -r requirements.txt, mdanalysis -mongoengine==0.25.0 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) +mongoengine==0.25.0 # via -r requirements.txt, nomad-lab (pyproject.toml) mongomock==4.1.2 # via -r requirements.txt, optimade monty==2022.9.9 # via -r requirements.txt, pymatgen more-itertools==9.0.0 # via jaraco-classes, pytest mpmath==1.2.1 # via -r requirements.txt, sympy mrcfile==1.4.3 # via -r requirements.txt, griddataformats -msgpack==1.0.4 # via -r requirements.txt, mmtf-python, nomad-lab, nomad-lab (pyproject.toml) +msgpack==1.0.4 # via -r requirements.txt, mmtf-python, nomad-lab (pyproject.toml) mypy==1.0.1 # via nomad-lab (pyproject.toml) mypy-extensions==0.4.3 # via mypy names==0.3.0 # via nomad-lab (pyproject.toml) natsort==8.2.0 # via -r requirements.txt, hyperspy nest-asyncio==1.5.6 # via -r requirements.txt, ipykernel, jupyter-client netcdf4==1.5.4 # via -r requirements.txt, nomad-lab (pyproject.toml) -networkx==2.6.3 # via -r requirements.txt, matid, mdanalysis, nomad-lab, nomad-lab (pyproject.toml), pymatgen, radioactivedecay, scikit-image +networkx==2.6.3 # via -r requirements.txt, matid, mdanalysis, nomad-lab (pyproject.toml), pymatgen, radioactivedecay, scikit-image niondata==0.15.5 # via -r requirements.txt, nionswift, nionswift-io nionswift==0.16.8 # via -r requirements.txt nionswift-io==0.15.1 # via -r requirements.txt, nionswift nionui==0.6.11 # via -r requirements.txt, nionswift nionutils==0.4.8 # via -r requirements.txt, niondata, nionswift, nionswift-io, nionui -nomad-lab @ git+https://github.com/nomad-coe/nomad.git@develop # via -r requirements.txt, nomad-schema-plugin-run, nomad-schema-plugin-simulation-workflow, simulationparsers -nomad-schema-plugin-run @ git+https://github.com/nomad-coe/nomad-schema-plugin-run.git@develop # via -r requirements.txt, nomad-schema-plugin-simulation-workflow, simulationparsers -nomad-schema-plugin-simulation-workflow @ git+https://github.com/nomad-coe/nomad-schema-plugin-simulation-workflow.git@develop # via -r requirements.txt -nptyping==1.4.4 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) +nptyping==1.4.4 # via -r requirements.txt, nomad-lab (pyproject.toml) numba==0.56.4 # via -r requirements.txt, diffsims, hyperspy, kikuchipy, orix, pyxem, sparse numcodecs==0.10.2 # via -r requirements.txt, zarr numexpr==2.8.4 # via -r requirements.txt, hyperspy, pyfai -numpy==1.22.4 # via -r requirements.txt, ase, biopython, cftime, dask, diffsims, f90wrap, fabio, griddataformats, gsd, h5grove, h5py, hyperspy, ifes-apt-tc-data-modeling, imageio, kikuchipy, lmfit, matid, matplotlib, mdanalysis, mrcfile, netcdf4, niondata, nionswift, nionswift-io, nionui, nomad-lab, nomad-lab (pyproject.toml), nptyping, numba, numcodecs, numexpr, numpy-quaternion, orix, pandas, phonopy, pyfai, pymatgen, pywavelets, pyxem, quippy-ase, radioactivedecay, scikit-image, scikit-learn, scipy, silx, sparse, spglib, tifffile, xarray, zarr +numpy==1.22.4 # via -r requirements.txt, ase, biopython, cftime, dask, diffsims, f90wrap, fabio, griddataformats, gsd, h5grove, h5py, hyperspy, ifes-apt-tc-data-modeling, imageio, kikuchipy, lmfit, matid, matplotlib, mdanalysis, mrcfile, netcdf4, niondata, nionswift, nionswift-io, nionui, nomad-lab (pyproject.toml), nptyping, numba, numcodecs, numexpr, numpy-quaternion, orix, pandas, phonopy, pyfai, pymatgen, pywavelets, pyxem, quippy-ase, radioactivedecay, scikit-image, scikit-learn, scipy, silx, sparse, spglib, tifffile, xarray, zarr numpy-quaternion==2022.4.3 # via -r requirements.txt, orix -oauthenticator==15.1.0 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) +oauthenticator==15.1.0 # via -r requirements.txt, nomad-lab (pyproject.toml) oauthlib==3.2.2 # via -r requirements.txt, jupyterhub -openpyxl==3.1.2 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) -optimade[mongo]==0.22.1 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) +openpyxl==3.1.2 # via -r requirements.txt, nomad-lab (pyproject.toml) +optimade[mongo]==0.22.1 # via -r requirements.txt, nomad-lab (pyproject.toml) orix==0.11.1 # via -r requirements.txt, diffsims, kikuchipy, pyxem -orjson==3.9.4 # via -r requirements.txt, h5grove, nomad-lab, nomad-lab (pyproject.toml) -packaging==24.0 # via -r requirements.txt, build, dask, docker, gunicorn, hyperspy, ipykernel, matplotlib, mdanalysis, mkdocs, mongomock, pint, pooch, pytest, scikit-image, sphinx +orjson==3.9.4 # via -r requirements.txt, h5grove, nomad-lab (pyproject.toml) +packaging==23.0 # via -r requirements.txt, build, dask, docker, gunicorn, hyperspy, ipykernel, jupyterhub, matplotlib, mdanalysis, mkdocs, mongomock, pint, pooch, pytest, scikit-image, sphinx palettable==3.3.0 # via -r requirements.txt, pymatgen pamela==1.0.0 # via -r requirements.txt, jupyterhub -pandas==1.3.5 # via -r requirements.txt, ifes-apt-tc-data-modeling, nomad-lab, nomad-lab (pyproject.toml), panedr, pybis, pymatgen, xarray -panedr==0.2 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) -parmed==3.0.0 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) +pandas==1.3.5 # via -r requirements.txt, ifes-apt-tc-data-modeling, nomad-lab (pyproject.toml), panedr, pybis, pymatgen, xarray +panedr==0.2 # via -r requirements.txt, nomad-lab (pyproject.toml) +parmed==3.0.0 # via -r requirements.txt, nomad-lab (pyproject.toml) parso==0.8.3 # via -r requirements.txt, jedi partd==1.3.0 # via -r requirements.txt, dask -passlib==1.7.4 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) +passlib==1.7.4 # via -r requirements.txt, nomad-lab (pyproject.toml) pep517==0.13.0 # via build pexpect==4.8.0 # via -r requirements.txt, ipython phonopy==2.11.0 # via -r requirements.txt, asr pickleshare==0.7.5 # via -r requirements.txt, ipython pillow==9.4.0 # via -r requirements.txt, imageio, matplotlib, nionswift, scikit-image -pint==0.17 # via -r requirements.txt, hyperspy, nomad-lab, nomad-lab (pyproject.toml) +pint==0.17 # via -r requirements.txt, hyperspy, nomad-lab (pyproject.toml) pip-tools==6.13.0 # via nomad-lab (pyproject.toml) pkginfo==1.8.3 # via twine platformdirs==3.1.1 # via -r requirements.txt, pooch, pylint, requests-cache @@ -231,16 +228,16 @@ pybtex==0.24.0 # via -r requirements.txt, pymatgen pycifrw==4.4.5 # via -r requirements.txt, diffpy-structure pycodestyle==2.8.0 # via nomad-lab (pyproject.toml) pycparser==2.21 # via -r requirements.txt, cffi -pydantic==1.10.9 # via -r requirements.txt, fastapi, nomad-lab, nomad-lab (pyproject.toml), optimade +pydantic==1.10.9 # via -r requirements.txt, fastapi, nomad-lab (pyproject.toml), optimade pyfai==2023.9.0 # via -r requirements.txt, pyxem pygments==2.14.0 # via -r requirements.txt, ipython, mkdocs-material, readme-renderer, sphinx -pyjwt[crypto]==2.6.0 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) +pyjwt[crypto]==2.6.0 # via -r requirements.txt, nomad-lab (pyproject.toml) pylint==2.13.9 # via nomad-lab (pyproject.toml), pylint-mongoengine, pylint-plugin-utils pylint-mongoengine==0.4.0 # via nomad-lab (pyproject.toml) pylint-plugin-utils==0.7 # via nomad-lab (pyproject.toml), pylint-mongoengine -pymatgen==2023.9.25 # via -r requirements.txt, asr, nomad-lab, nomad-lab (pyproject.toml) +pymatgen==2023.9.25 # via -r requirements.txt, asr, nomad-lab (pyproject.toml) pymdown-extensions==9.7 # via mkdocs-material -pymongo==4.3.3 # via -r requirements.txt, mongoengine, nomad-lab, nomad-lab (pyproject.toml), optimade +pymongo==4.3.3 # via -r requirements.txt, mongoengine, nomad-lab (pyproject.toml), optimade pyopenssl==23.0.0 # via -r requirements.txt, certipy pyparsing==3.0.9 # via -r requirements.txt, matplotlib, rdflib pyrsistent==0.19.3 # via -r requirements.txt, jsonschema @@ -253,45 +250,43 @@ python-dateutil==2.8.2 # via -r requirements.txt, arrow, elasticsearch-dsl, g python-dotenv==0.21.0 # via -r requirements.txt, uvicorn python-gitlab==2.10.1 # via nomad-lab (pyproject.toml) python-jose==3.3.0 # via -r requirements.txt, python-keycloak -python-json-logger==2.0.2 # via -r requirements.txt, jupyter-telemetry, nomad-lab, nomad-lab (pyproject.toml) -python-keycloak==0.26.1 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) -python-logstash==0.4.6 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) -python-magic==0.4.24 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) -python-multipart==0.0.5 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) -pytz==2022.7.1 # via -r requirements.txt, babel, celery, mkdocs-git-revision-date-localized-plugin, nionswift, nomad-lab, nomad-lab (pyproject.toml), pandas +python-json-logger==2.0.2 # via -r requirements.txt, jupyter-telemetry, nomad-lab (pyproject.toml) +python-keycloak==0.26.1 # via -r requirements.txt, nomad-lab (pyproject.toml) +python-logstash==0.4.6 # via -r requirements.txt, nomad-lab (pyproject.toml) +python-magic==0.4.24 # via -r requirements.txt, nomad-lab (pyproject.toml) +python-multipart==0.0.5 # via -r requirements.txt, nomad-lab (pyproject.toml) +pytz==2022.7.1 # via -r requirements.txt, babel, celery, mkdocs-git-revision-date-localized-plugin, nionswift, nomad-lab (pyproject.toml), pandas pytz-deprecation-shim==0.1.0.post0 # via -r requirements.txt, tzlocal pywavelets==1.3.0 # via -r requirements.txt, scikit-image pyxem==0.15.1 # via -r requirements.txt -pyyaml==6.0 # via -r requirements.txt, dask, hyperspy, kikuchipy, mkdocs, mkdocs-macros-plugin, nomad-lab, nomad-lab (pyproject.toml), phonopy, pybtex, pyyaml-env-tag, uvicorn +pyyaml==6.0 # via -r requirements.txt, dask, hyperspy, kikuchipy, mkdocs, mkdocs-macros-plugin, nomad-lab (pyproject.toml), phonopy, pybtex, pyyaml-env-tag, uvicorn pyyaml-env-tag==0.1 # via mkdocs pyzeo==0.1.4 # via -r requirements.txt, nomad-lab (pyproject.toml) pyzmq==25.0.0 # via -r requirements.txt, ipykernel, ipyparallel, jupyter-client quippy-ase==0.9.14 # via -r requirements.txt, nomad-lab (pyproject.toml) radioactivedecay==0.4.17 # via -r requirements.txt, ifes-apt-tc-data-modeling -rdflib==5.0.0 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) +rdflib==5.0.0 # via -r requirements.txt, nomad-lab (pyproject.toml) readme-renderer==37.3 # via twine -recommonmark==0.7.1 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) +recommonmark==0.7.1 # via -r requirements.txt, nomad-lab (pyproject.toml) redis==4.4.2 # via -r requirements.txt, celery -requests==2.28.2 # via -r requirements.txt, docker, hyperspy, jupyterhub, nomad-lab, nomad-lab (pyproject.toml), oauthenticator, optimade, pooch, pybis, pymatgen, python-gitlab, python-keycloak, requests-cache, requests-toolbelt, rfc3161ng, sphinx, twine +requests==2.28.2 # via -r requirements.txt, docker, hyperspy, jupyterhub, nomad-lab (pyproject.toml), oauthenticator, optimade, pooch, pybis, pymatgen, python-gitlab, python-keycloak, requests-cache, requests-toolbelt, rfc3161ng, sphinx, twine requests-cache==1.0.1 # via -r requirements.txt requests-toolbelt==0.10.1 # via python-gitlab, twine -rfc3161ng==2.1.3 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) +rfc3161ng==2.1.3 # via -r requirements.txt, nomad-lab (pyproject.toml) rfc3339-validator==0.1.4 # via -r requirements.txt, jsonschema rfc3986[idna2008]==1.5.0 # via -r requirements.txt, httpx, twine rfc3987==1.3.8 # via -r requirements.txt, jsonschema rope==0.21.0 # via nomad-lab (pyproject.toml) rsa==4.9 # via -r requirements.txt, python-jose -ruamel-yaml==0.17.21 # via -r requirements.txt, jupyter-telemetry, oauthenticator, pymatgen +ruamel-yaml==0.17.21 # via -r requirements.txt, jupyter-telemetry, nomad-lab (pyproject.toml), oauthenticator, pymatgen ruamel-yaml-clib==0.2.7 # via -r requirements.txt, ruamel-yaml ruff==0.1.8 # via nomad-lab (pyproject.toml) -runstats==2.0.0 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) +runstats==2.0.0 # via -r requirements.txt, nomad-lab (pyproject.toml) scikit-image==0.19.3 # via -r requirements.txt, hyperspy, kikuchipy, pyxem -scikit-learn==1.0.2 # via -r requirements.txt, kikuchipy, matid, nomad-lab, nomad-lab (pyproject.toml), pyxem -scipy==1.7.1 # via -r requirements.txt, ase, diffsims, griddataformats, hyperspy, kikuchipy, lmfit, matid, mdanalysis, niondata, nionswift, nomad-lab, nomad-lab (pyproject.toml), orix, pyfai, pymatgen, pyxem, radioactivedecay, scikit-image, scikit-learn, sparse -secretstorage==3.3.3 # via keyring +scikit-learn==1.0.2 # via -r requirements.txt, kikuchipy, matid, nomad-lab (pyproject.toml), pyxem +scipy==1.7.1 # via -r requirements.txt, ase, diffsims, griddataformats, hyperspy, kikuchipy, lmfit, matid, mdanalysis, niondata, nionswift, nomad-lab (pyproject.toml), orix, pyfai, pymatgen, pyxem, radioactivedecay, scikit-image, scikit-learn, sparse sentinels==1.0.0 # via -r requirements.txt, mongomock silx==1.1.2 # via -r requirements.txt, pyfai -simulationparsers @ git+https://github.com/nomad-coe/simulation-parsers.git@develop # via -r requirements.txt six==1.16.0 # via -r requirements.txt, asttokens, basicauth, bcrypt, bleach, click-repl, diffpy-structure, ecdsa, elasticsearch-dsl, griddataformats, html5lib, isodate, latexcodec, pybtex, pytest-xdist, python-dateutil, python-multipart, rdflib, rfc3339-validator, url-normalize, validators smmap==5.0.0 # via -r requirements.txt, gitdb sniffio==1.3.0 # via -r requirements.txt, anyio, httpcore, httpx @@ -308,9 +303,9 @@ sphinxcontrib-qthelp==1.0.3 # via -r requirements.txt, sphinx sphinxcontrib-serializinghtml==1.1.5 # via -r requirements.txt, sphinx sqlalchemy==1.4.46 # via -r requirements.txt, alembic, jupyterhub starlette==0.25.0 # via -r requirements.txt, fastapi -structlog==22.3.0 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) +structlog==22.3.0 # via -r requirements.txt, nomad-lab (pyproject.toml) sympy==1.10.1 # via -r requirements.txt, hyperspy, pymatgen, radioactivedecay -tabulate==0.8.9 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml), pybis, pymatgen +tabulate==0.8.9 # via -r requirements.txt, nomad-lab (pyproject.toml), pybis, pymatgen tenacity==8.1.0 # via -r requirements.txt, plotly termcolor==2.1.0 # via mkdocs-macros-plugin texttable==1.7.0 # via -r requirements.txt, pybis @@ -318,7 +313,7 @@ threadpoolctl==3.1.0 # via -r requirements.txt, mdanalysis, scikit-learn tifffile==2021.11.2 # via -r requirements.txt, h5grove, hyperspy, scikit-image tomli==2.0.1 # via build, mypy, pep517, pylint toolz==0.12.0 # via -r requirements.txt, dask, hyperspy, partd -toposort==1.9 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) +toposort==1.9 # via -r requirements.txt, nomad-lab (pyproject.toml) tornado==6.2 # via -r requirements.txt, ipykernel, ipyparallel, jupyter-client, jupyterhub tqdm==4.64.1 # via -r requirements.txt, diffsims, hyperspy, ipyparallel, kikuchipy, mdanalysis, orix, pymatgen, twine traitlets==5.8.1 # via -r requirements.txt, comm, ipykernel, ipyparallel, ipython, ipywidgets, jupyter-client, jupyter-core, jupyter-telemetry, jupyterhub, matplotlib-inline @@ -331,13 +326,13 @@ typish==1.9.3 # via -r requirements.txt, nptyping tzdata==2023.3 # via -r requirements.txt, pytz-deprecation-shim tzlocal==4.3 # via -r requirements.txt, nionswift uncertainties==3.1.7 # via -r requirements.txt, lmfit, pymatgen -unidecode==1.3.2 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) +unidecode==1.3.2 # via -r requirements.txt, nomad-lab (pyproject.toml) uri-template==1.2.0 # via -r requirements.txt, jsonschema url-normalize==1.4.3 # via -r requirements.txt, requests-cache urllib3==1.26.14 # via -r requirements.txt, docker, elasticsearch, pybis, requests, requests-cache -uvicorn[standard]==0.20.0 # via -r requirements.txt, h5grove, nomad-lab, nomad-lab (pyproject.toml) +uvicorn[standard]==0.20.0 # via -r requirements.txt, h5grove, nomad-lab (pyproject.toml) uvloop==0.17.0 # via -r requirements.txt, uvicorn -validators==0.18.2 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) +validators==0.18.2 # via -r requirements.txt, nomad-lab (pyproject.toml) vine==5.0.0 # via -r requirements.txt, amqp, celery, kombu watchdog==2.1.9 # via mkdocs watchfiles==0.18.1 # via -r requirements.txt, uvicorn @@ -349,12 +344,12 @@ websockets==10.4 # via -r requirements.txt, uvicorn werkzeug==2.2.2 # via -r requirements.txt, flask wheel==0.38.4 # via pip-tools widgetsnbextension==4.0.9 # via -r requirements.txt, ipywidgets -wrapt==1.12.1 # via -r requirements.txt, astroid, nomad-lab, nomad-lab (pyproject.toml) -xarray==0.20.2 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) +wrapt==1.12.1 # via -r requirements.txt, astroid, nomad-lab (pyproject.toml) +xarray==0.20.2 # via -r requirements.txt, nomad-lab (pyproject.toml) zarr==2.12.0 # via -r requirements.txt, hyperspy zipfile37==0.1.3 # via -r requirements.txt zipp==3.11.0 # via -r requirements.txt, importlib-metadata -zipstream-new==1.1.5 # via -r requirements.txt, nomad-lab, nomad-lab (pyproject.toml) +zipstream-new==1.1.5 # via -r requirements.txt, nomad-lab (pyproject.toml) # The following packages are considered to be unsafe in a requirements file: # pip diff --git a/requirements.txt b/requirements.txt index 6761ecddc37b3039890e3d087c4c86394929537c..8c69d3eff21f189aa76e64894df3083e55b79021 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,48 +2,49 @@ # This file is autogenerated by pip-compile with Python 3.9 # by the following command: # -# pip-compile --annotation-style=line --extra=infrastructure --extra=parsing --output-file=requirements.txt --resolver=backtracking dependencies/nomad-dos-fingerprints/pyproject.toml dependencies/parsers/atomistic/pyproject.toml dependencies/parsers/database/pyproject.toml dependencies/parsers/eelsdb/pyproject.toml dependencies/parsers/electronic/pyproject.toml dependencies/parsers/nexus/pyproject.toml dependencies/parsers/workflow/pyproject.toml pyproject.toml +# pip-compile --annotation-style=line --extra=infrastructure --extra=parsing --output-file=requirements.txt --pip-args='--prefer-binary' dependencies/nomad-dos-fingerprints/pyproject.toml dependencies/parsers/eelsdb/pyproject.toml dependencies/parsers/nexus/pyproject.toml pyproject.toml # alabaster==0.7.12 # via sphinx alembic==1.9.1 # via jupyterhub amqp==5.1.1 # via kombu -aniso8601==7.0.0 # via nomad-lab, nomad-lab (pyproject.toml) +aniso8601==7.0.0 # via nomad-lab (pyproject.toml) anyio==3.6.2 # via httpcore, starlette, watchfiles +appnope==0.1.4 # via ipykernel, ipython arrow==1.2.3 # via isoduration asciitree==0.3.3 # via zarr -ase==3.19.0 # via asr, ifes-apt-tc-data-modeling, matid, nomad-lab, nomad-lab (pyproject.toml), pynxtools (dependencies/parsers/nexus/pyproject.toml), quippy-ase -asgiref==3.6.0 # via nomad-lab, nomad-lab (pyproject.toml) -asr==0.4.1 # via nomad-lab (pyproject.toml), workflowparsers (dependencies/parsers/workflow/pyproject.toml) +ase==3.19.0 # via asr, ifes-apt-tc-data-modeling, matid, nomad-lab (pyproject.toml), pynxtools (dependencies/parsers/nexus/pyproject.toml), quippy-ase +asgiref==3.6.0 # via nomad-lab (pyproject.toml) +asr==0.4.1 # via nomad-lab (pyproject.toml) asteval==0.9.31 # via lmfit async-generator==1.10 # via jupyterhub async-timeout==4.0.2 # via redis attrs==22.2.0 # via cattrs, jsonschema, requests-cache babel==2.11.0 # via sphinx backcall==0.2.0 # via ipython -bagit==1.8.1 # via nomad-lab, nomad-lab (pyproject.toml) -basicauth==0.4.1 # via nomad-lab, nomad-lab (pyproject.toml) -bcrypt==3.2.0 # via nomad-lab, nomad-lab (pyproject.toml) +bagit==1.8.1 # via nomad-lab (pyproject.toml) +basicauth==0.4.1 # via nomad-lab (pyproject.toml) +bcrypt==3.2.0 # via nomad-lab (pyproject.toml) beautifulsoup4==4.11.1 # via bs4 billiard==3.6.4.0 # via celery biopython==1.80 # via mdanalysis -bitarray==2.3.5 # via nomad-lab, nomad-lab (pyproject.toml), nomad_dos_fingerprints (dependencies/nomad-dos-fingerprints/pyproject.toml) -bs4==0.0.1 # via nomad-lab, nomad-lab (pyproject.toml) -cachetools==4.2.4 # via nomad-lab, nomad-lab (pyproject.toml) +bitarray==2.3.5 # via nomad-lab (pyproject.toml), nomad_dos_fingerprints (dependencies/nomad-dos-fingerprints/pyproject.toml) +bs4==0.0.1 # via nomad-lab (pyproject.toml) +cachetools==4.2.4 # via nomad-lab (pyproject.toml) cattrs==22.2.0 # via requests-cache -celery[redis]==5.2.7 # via nomad-lab, nomad-lab (pyproject.toml) +celery[redis]==5.2.7 # via nomad-lab (pyproject.toml) certifi==2022.12.7 # via elasticsearch, httpcore, httpx, requests certipy==0.1.3 # via jupyterhub cffi==1.15.1 # via bcrypt, cryptography cftime==1.6.2 # via netcdf4 charset-normalizer==2.0.12 # via requests -click==8.1.3 # via asr, celery, click-didyoumean, click-plugins, click-repl, flask, nomad-lab, nomad-lab (pyproject.toml), pynxtools (dependencies/parsers/nexus/pyproject.toml), uvicorn +click==8.1.3 # via asr, celery, click-didyoumean, click-plugins, click-repl, flask, nomad-lab (pyproject.toml), pynxtools (dependencies/parsers/nexus/pyproject.toml), uvicorn click-didyoumean==0.3.0 # via celery click-plugins==1.1.1 # via celery click-repl==0.2.0 # via celery cloudpickle==2.2.0 # via dask comm==0.1.4 # via ipywidgets commonmark==0.9.1 # via recommonmark -cryptography==39.0.0 # via nomad-lab, nomad-lab (pyproject.toml), pyjwt, pyopenssl, rfc3161ng +cryptography==39.0.0 # via nomad-lab (pyproject.toml), pyjwt, pyopenssl, rfc3161ng cycler==0.11.0 # via matplotlib dask[array]==2022.2.0 # via hyperspy, kikuchipy, orix, pyxem debugpy==1.6.5 # via ipykernel @@ -53,22 +54,22 @@ diffsims==0.5.2 # via kikuchipy, pyxem dill==0.3.6 # via hyperspy dnspython==2.2.1 # via email-validator, pymongo docker==6.0.1 # via dockerspawner -dockerspawner==12.1.0 # via nomad-lab, nomad-lab (pyproject.toml) -docstring-parser==0.12 # via nomad-lab, nomad-lab (pyproject.toml) +dockerspawner==12.1.0 # via nomad-lab (pyproject.toml) +docstring-parser==0.12 # via nomad-lab (pyproject.toml) docutils==0.19 # via m2r, recommonmark, sphinx ecdsa==0.18.0 # via python-jose -elasticsearch==7.17.1 # via elasticsearch-dsl, nomad-lab, nomad-lab (pyproject.toml) -elasticsearch-dsl==7.4.0 # via nomad-lab, nomad-lab (pyproject.toml) +elasticsearch==7.17.1 # via elasticsearch-dsl, nomad-lab (pyproject.toml) +elasticsearch-dsl==7.4.0 # via nomad-lab (pyproject.toml) email-validator==1.3.0 # via optimade -entrypoints==0.4 # via ipyparallel, jupyter-client, jupyterhub, numcodecs +entrypoints==0.4 # via ipyparallel, jupyter-client, numcodecs escapism==1.0.1 # via dockerspawner et-xmlfile==1.1.0 # via openpyxl exceptiongroup==1.2.0 # via cattrs f90wrap==0.2.13 # via quippy-ase fabio==2023.6.0 # via pyfai, silx -fastapi==0.92.0 # via h5grove, nomad-lab, nomad-lab (pyproject.toml) +fastapi==0.92.0 # via h5grove, nomad-lab (pyproject.toml) fasteners==0.18 # via mdanalysis, zarr -filelock==3.3.1 # via nomad-lab, nomad-lab (pyproject.toml) +filelock==3.3.1 # via nomad-lab (pyproject.toml) flask==2.2.2 # via asr flatdict==4.0.1 # via pynxtools (dependencies/parsers/nexus/pyproject.toml) fonttools==4.38.0 # via matplotlib @@ -76,43 +77,43 @@ fqdn==1.5.1 # via jsonschema fsspec==2022.11.0 # via dask, hyperspy future==0.18.2 # via uncertainties gitdb==4.0.10 # via gitpython -gitpython==3.1.24 # via nomad-lab, nomad-lab (pyproject.toml), pynxtools (dependencies/parsers/nexus/pyproject.toml) +gitpython==3.1.24 # via nomad-lab (pyproject.toml), pynxtools (dependencies/parsers/nexus/pyproject.toml) greenlet==2.0.1 # via sqlalchemy griddataformats==0.7.0 # via mdanalysis gsd==2.7.0 # via mdanalysis -gunicorn==21.2.0 # via nomad-lab, nomad-lab (pyproject.toml) +gunicorn==21.2.0 # via nomad-lab (pyproject.toml) h11==0.14.0 # via httpcore, uvicorn -h5grove[fastapi]==1.3.0 # via nomad-lab, nomad-lab (pyproject.toml) -h5py==3.6.0 # via electronicparsers (dependencies/parsers/electronic/pyproject.toml), h5grove, hyperspy, ifes-apt-tc-data-modeling, kikuchipy, nionswift, nomad-lab, nomad-lab (pyproject.toml), orix, phonopy, pyfai, silx -hjson==3.0.2 # via nomad-lab, nomad-lab (pyproject.toml) -html5lib==1.1 # via nomad-lab, nomad-lab (pyproject.toml) +h5grove[fastapi]==1.3.0 # via nomad-lab (pyproject.toml) +h5py==3.6.0 # via h5grove, hyperspy, ifes-apt-tc-data-modeling, kikuchipy, nionswift, nomad-lab (pyproject.toml), orix, phonopy, pyfai, pynxtools (dependencies/parsers/nexus/pyproject.toml), silx +hjson==3.0.2 # via nomad-lab (pyproject.toml) +html5lib==1.1 # via nomad-lab (pyproject.toml) httpcore==0.16.3 # via httpx httptools==0.5.0 # via uvicorn -httpx==0.23.3 # via nomad-lab, nomad-lab (pyproject.toml) +httpx==0.23.3 # via nomad-lab (pyproject.toml) hyperspy==1.7.5 # via kikuchipy, pynxtools (dependencies/parsers/nexus/pyproject.toml), pyxem idna==3.4 # via anyio, email-validator, jsonschema, requests, rfc3986 ifes-apt-tc-data-modeling==0.0.9 # via pynxtools (dependencies/parsers/nexus/pyproject.toml) imageio==2.24.0 # via hyperspy, kikuchipy, nionswift, nionswift-io, nionui, scikit-image imagesize==1.4.1 # via sphinx -importlib-metadata==4.13.0 # via flask, hyperspy, nomad-lab, nomad-lab (pyproject.toml), pynxtools (dependencies/parsers/nexus/pyproject.toml), sphinx -inflection==0.5.1 # via nomad-lab, nomad-lab (pyproject.toml) +importlib-metadata==4.13.0 # via flask, hyperspy, jupyterhub, nomad-lab (pyproject.toml), pynxtools (dependencies/parsers/nexus/pyproject.toml), sphinx +inflection==0.5.1 # via nomad-lab (pyproject.toml) ipykernel==6.16.2 # via ipyparallel ipyparallel==8.4.1 # via hyperspy ipython==7.34.0 # via hyperspy, ipykernel, ipyparallel, ipywidgets ipywidgets==8.1.1 # via pyxem isodate==0.6.1 # via rdflib isoduration==20.11.0 # via jsonschema -itsdangerous==2.1.2 # via flask, nomad-lab, nomad-lab (pyproject.toml) +itsdangerous==2.1.2 # via flask, nomad-lab (pyproject.toml) jedi==0.18.2 # via ipython jinja2==3.0.3 # via flask, hyperspy, jupyterhub, sphinx -jmespath==0.10.0 # via nomad-lab, nomad-lab (pyproject.toml) -joblib==1.1.0 # via mdanalysis, nomad-lab, pymatgen, scikit-learn +jmespath==0.10.0 # via nomad-lab (pyproject.toml) +joblib==1.1.0 # via mdanalysis, pymatgen, scikit-learn jsonpointer==2.3 # via jsonschema -jsonschema[format]==4.17.3 # via jupyter-telemetry, nomad-lab, nomad-lab (pyproject.toml), oauthenticator +jsonschema[format]==4.17.3 # via jupyter-telemetry, nomad-lab (pyproject.toml), oauthenticator jupyter-client==7.4.8 # via ipykernel, ipyparallel jupyter-core==4.12.0 # via jupyter-client jupyter-telemetry==0.1.0 # via jupyterhub -jupyterhub==1.4.2 # via dockerspawner, nomad-lab, nomad-lab (pyproject.toml), oauthenticator +jupyterhub==4.0.2 # via dockerspawner, nomad-lab (pyproject.toml), oauthenticator jupyterlab-widgets==3.0.9 # via ipywidgets kikuchipy==0.8.7 # via pynxtools (dependencies/parsers/nexus/pyproject.toml) kiwisolver==1.4.4 # via matplotlib @@ -122,63 +123,60 @@ latexcodec==2.0.1 # via pybtex llvmlite==0.39.1 # via numba lmfit==1.2.2 # via pyxem locket==1.0.0 # via partd -lxml==4.7.1 # via atomisticparsers (dependencies/parsers/atomistic/pyproject.toml), nomad-lab, nomad-lab (pyproject.toml) -m2r==0.2.1 # via nomad-lab, nomad-lab (pyproject.toml) +lxml==4.7.1 # via nomad-lab (pyproject.toml) +m2r==0.2.1 # via nomad-lab (pyproject.toml) mako==1.2.4 # via alembic markupsafe==2.1.1 # via jinja2, mako, werkzeug -matid==2.0.0.dev2 # via nomad-lab, nomad-lab (pyproject.toml) +matid==2.0.0.dev2 # via nomad-lab (pyproject.toml) matplotlib==3.5.3 # via ase, asr, diffsims, hyperspy, kikuchipy, matplotlib-scalebar, mdanalysis, orix, phonopy, pyfai, pymatgen, pyxem, radioactivedecay matplotlib-inline==0.1.6 # via ipykernel, ipython matplotlib-scalebar==0.8.1 # via orix -mdanalysis==2.5.0 # via atomisticparsers (dependencies/parsers/atomistic/pyproject.toml), nomad-lab, nomad-lab (pyproject.toml) -memoization==0.4.0 # via nomad-lab, nomad-lab (pyproject.toml) +mdanalysis==2.5.0 # via nomad-lab (pyproject.toml) +memoization==0.4.0 # via nomad-lab (pyproject.toml) mergedeep==1.3.4 # via pynxtools (dependencies/parsers/nexus/pyproject.toml) mistune==2.0.4 # via m2r mmtf-python==1.1.3 # via mdanalysis -mongoengine==0.25.0 # via nomad-lab, nomad-lab (pyproject.toml) +mongoengine==0.25.0 # via nomad-lab (pyproject.toml) mongomock==4.1.2 # via optimade monty==2022.9.9 # via pymatgen mpmath==1.2.1 # via sympy mrcfile==1.4.3 # via griddataformats -msgpack==1.0.4 # via mmtf-python, nomad-lab, nomad-lab (pyproject.toml) +msgpack==1.0.4 # via mmtf-python, nomad-lab (pyproject.toml) natsort==8.2.0 # via hyperspy nest-asyncio==1.5.6 # via ipykernel, jupyter-client -netcdf4==1.5.4 # via electronicparsers (dependencies/parsers/electronic/pyproject.toml), nomad-lab (pyproject.toml) -networkx==2.6.3 # via matid, mdanalysis, nomad-lab, nomad-lab (pyproject.toml), pymatgen, radioactivedecay, scikit-image +netcdf4==1.5.4 # via nomad-lab (pyproject.toml) +networkx==2.6.3 # via matid, mdanalysis, nomad-lab (pyproject.toml), pymatgen, radioactivedecay, scikit-image niondata==0.15.5 # via nionswift, nionswift-io nionswift==0.16.8 # via pynxtools (dependencies/parsers/nexus/pyproject.toml) nionswift-io==0.15.1 # via nionswift nionui==0.6.11 # via nionswift nionutils==0.4.8 # via niondata, nionswift, nionswift-io, nionui -nomad-lab @ git+https://github.com/nomad-coe/nomad.git@develop # via atomisticparsers (dependencies/parsers/atomistic/pyproject.toml), nomad-schema-plugin-run, nomad-schema-plugin-simulation-workflow, simulationparsers, workflowparsers (dependencies/parsers/workflow/pyproject.toml) -nomad-schema-plugin-run @ git+https://github.com/nomad-coe/nomad-schema-plugin-run.git@develop # via atomisticparsers (dependencies/parsers/atomistic/pyproject.toml), nomad-schema-plugin-simulation-workflow, simulationparsers, workflowparsers (dependencies/parsers/workflow/pyproject.toml) -nomad-schema-plugin-simulation-workflow @ git+https://github.com/nomad-coe/nomad-schema-plugin-simulation-workflow.git@develop # via atomisticparsers (dependencies/parsers/atomistic/pyproject.toml), workflowparsers (dependencies/parsers/workflow/pyproject.toml) -nptyping==1.4.4 # via nomad-lab, nomad-lab (pyproject.toml) +nptyping==1.4.4 # via nomad-lab (pyproject.toml) numba==0.56.4 # via diffsims, hyperspy, kikuchipy, orix, pyxem, sparse numcodecs==0.10.2 # via zarr numexpr==2.8.4 # via hyperspy, pyfai -numpy==1.22.4 # via ase, biopython, cftime, dask, diffsims, f90wrap, fabio, griddataformats, gsd, h5grove, h5py, hyperspy, ifes-apt-tc-data-modeling, imageio, kikuchipy, lmfit, matid, matplotlib, mdanalysis, mrcfile, netcdf4, niondata, nionswift, nionswift-io, nionui, nomad-lab, nomad-lab (pyproject.toml), nomad_dos_fingerprints (dependencies/nomad-dos-fingerprints/pyproject.toml), nptyping, numba, numcodecs, numexpr, numpy-quaternion, orix, pandas, phonopy, pyfai, pymatgen, pywavelets, pyxem, quippy-ase, radioactivedecay, scikit-image, scikit-learn, scipy, silx, sparse, spglib, tifffile, xarray, zarr +numpy==1.22.4 # via ase, biopython, cftime, dask, diffsims, f90wrap, fabio, griddataformats, gsd, h5grove, h5py, hyperspy, ifes-apt-tc-data-modeling, imageio, kikuchipy, lmfit, matid, matplotlib, mdanalysis, mrcfile, netcdf4, niondata, nionswift, nionswift-io, nionui, nomad-lab (pyproject.toml), nomad_dos_fingerprints (dependencies/nomad-dos-fingerprints/pyproject.toml), nptyping, numba, numcodecs, numexpr, numpy-quaternion, orix, pandas, phonopy, pyfai, pymatgen, pynxtools (dependencies/parsers/nexus/pyproject.toml), pywavelets, pyxem, quippy-ase, radioactivedecay, scikit-image, scikit-learn, scipy, silx, sparse, spglib, tifffile, xarray, zarr numpy-quaternion==2022.4.3 # via orix -oauthenticator==15.1.0 # via nomad-lab, nomad-lab (pyproject.toml) +oauthenticator==15.1.0 # via nomad-lab (pyproject.toml) oauthlib==3.2.2 # via jupyterhub -openpyxl==3.1.2 # via nomad-lab, nomad-lab (pyproject.toml) -optimade[mongo]==0.22.1 # via nomad-lab, nomad-lab (pyproject.toml) +openpyxl==3.1.2 # via nomad-lab (pyproject.toml) +optimade[mongo]==0.22.1 # via nomad-lab (pyproject.toml) orix==0.11.1 # via diffsims, kikuchipy, pyxem -orjson==3.9.4 # via h5grove, nomad-lab, nomad-lab (pyproject.toml) -packaging==24.0 # via dask, docker, gunicorn, hyperspy, ipykernel, matplotlib, mdanalysis, mongomock, pint, pooch, scikit-image, sphinx +orjson==3.9.4 # via h5grove, nomad-lab (pyproject.toml) +packaging==23.0 # via dask, docker, gunicorn, hyperspy, ipykernel, jupyterhub, matplotlib, mdanalysis, mongomock, pint, pooch, scikit-image, sphinx palettable==3.3.0 # via pymatgen pamela==1.0.0 # via jupyterhub -pandas==1.3.5 # via eelsdbconverter (dependencies/parsers/eelsdb/pyproject.toml), ifes-apt-tc-data-modeling, nomad-lab, nomad-lab (pyproject.toml), panedr, pybis, pymatgen, xarray -panedr==0.2 # via atomisticparsers (dependencies/parsers/atomistic/pyproject.toml), nomad-lab, nomad-lab (pyproject.toml) -parmed==3.0.0 # via nomad-lab, nomad-lab (pyproject.toml) +pandas==1.3.5 # via eelsdbconverter (dependencies/parsers/eelsdb/pyproject.toml), ifes-apt-tc-data-modeling, nomad-lab (pyproject.toml), panedr, pybis, pymatgen, pynxtools (dependencies/parsers/nexus/pyproject.toml), xarray +panedr==0.2 # via nomad-lab (pyproject.toml) +parmed==3.0.0 # via nomad-lab (pyproject.toml) parso==0.8.3 # via jedi partd==1.3.0 # via dask -passlib==1.7.4 # via nomad-lab, nomad-lab (pyproject.toml) +passlib==1.7.4 # via nomad-lab (pyproject.toml) pexpect==4.8.0 # via ipython -phonopy==2.11.0 # via asr, workflowparsers (dependencies/parsers/workflow/pyproject.toml) +phonopy==2.11.0 # via asr pickleshare==0.7.5 # via ipython pillow==9.4.0 # via imageio, matplotlib, nionswift, scikit-image -pint==0.17 # via hyperspy, nomad-lab, nomad-lab (pyproject.toml) +pint==0.17 # via hyperspy, nomad-lab (pyproject.toml) platformdirs==3.1.1 # via pooch, requests-cache plotly==5.11.0 # via asr, pymatgen pooch==1.7.0 # via kikuchipy, orix @@ -193,51 +191,50 @@ pybis @ git+https://github.com/FAIRmat-NFDI/fairmat-pybis.git # via nomad-lab ( pybtex==0.24.0 # via pymatgen pycifrw==4.4.5 # via diffpy-structure pycparser==2.21 # via cffi -pydantic==1.10.9 # via fastapi, nomad-lab, nomad-lab (pyproject.toml), optimade +pydantic==1.10.9 # via fastapi, nomad-lab (pyproject.toml), optimade pyfai==2023.9.0 # via pyxem pygments==2.14.0 # via ipython, sphinx -pyjwt[crypto]==2.6.0 # via nomad-lab, nomad-lab (pyproject.toml) -pymatgen==2023.9.25 # via asr, nomad-lab, nomad-lab (pyproject.toml) -pymongo==4.3.3 # via mongoengine, nomad-lab, nomad-lab (pyproject.toml), optimade +pyjwt[crypto]==2.6.0 # via nomad-lab (pyproject.toml) +pymatgen==2023.9.25 # via asr, nomad-lab (pyproject.toml) +pymongo==4.3.3 # via mongoengine, nomad-lab (pyproject.toml), optimade pyopenssl==23.0.0 # via certipy pyparsing==3.0.9 # via matplotlib, rdflib pyrsistent==0.19.3 # via jsonschema python-dateutil==2.8.2 # via arrow, elasticsearch-dsl, hyperspy, ipyparallel, jupyter-client, jupyterhub, matplotlib, pandas, pybis, rfc3161ng python-dotenv==0.21.0 # via uvicorn python-jose==3.3.0 # via python-keycloak -python-json-logger==2.0.2 # via jupyter-telemetry, nomad-lab, nomad-lab (pyproject.toml) -python-keycloak==0.26.1 # via nomad-lab, nomad-lab (pyproject.toml) -python-logstash==0.4.6 # via nomad-lab, nomad-lab (pyproject.toml) -python-magic==0.4.24 # via nomad-lab, nomad-lab (pyproject.toml) -python-multipart==0.0.5 # via nomad-lab, nomad-lab (pyproject.toml) -pytz==2022.7.1 # via babel, celery, nionswift, nomad-lab, nomad-lab (pyproject.toml), pandas, pynxtools (dependencies/parsers/nexus/pyproject.toml) +python-json-logger==2.0.2 # via jupyter-telemetry, nomad-lab (pyproject.toml) +python-keycloak==0.26.1 # via nomad-lab (pyproject.toml) +python-logstash==0.4.6 # via nomad-lab (pyproject.toml) +python-magic==0.4.24 # via nomad-lab (pyproject.toml) +python-multipart==0.0.5 # via nomad-lab (pyproject.toml) +pytz==2022.7.1 # via babel, celery, nionswift, nomad-lab (pyproject.toml), pandas, pynxtools (dependencies/parsers/nexus/pyproject.toml) pytz-deprecation-shim==0.1.0.post0 # via tzlocal pywavelets==1.3.0 # via scikit-image pyxem==0.15.1 # via pynxtools (dependencies/parsers/nexus/pyproject.toml) -pyyaml==6.0 # via dask, electronicparsers (dependencies/parsers/electronic/pyproject.toml), hyperspy, kikuchipy, nomad-lab, nomad-lab (pyproject.toml), phonopy, pybtex, uvicorn +pyyaml==6.0 # via dask, hyperspy, kikuchipy, nomad-lab (pyproject.toml), phonopy, pybtex, pynxtools (dependencies/parsers/nexus/pyproject.toml), uvicorn pyzeo==0.1.4 # via nomad-lab (pyproject.toml) pyzmq==25.0.0 # via ipykernel, ipyparallel, jupyter-client quippy-ase==0.9.14 # via nomad-lab (pyproject.toml) radioactivedecay==0.4.17 # via ifes-apt-tc-data-modeling -rdflib==5.0.0 # via nomad-lab, nomad-lab (pyproject.toml) -recommonmark==0.7.1 # via nomad-lab, nomad-lab (pyproject.toml) +rdflib==5.0.0 # via nomad-lab (pyproject.toml) +recommonmark==0.7.1 # via nomad-lab (pyproject.toml) redis==4.4.2 # via celery -requests==2.28.2 # via docker, eelsdbconverter (dependencies/parsers/eelsdb/pyproject.toml), hyperspy, jupyterhub, nomad-lab, nomad-lab (pyproject.toml), oauthenticator, optimade, pooch, pybis, pymatgen, python-keycloak, requests-cache, rfc3161ng, sphinx +requests==2.28.2 # via docker, eelsdbconverter (dependencies/parsers/eelsdb/pyproject.toml), hyperspy, jupyterhub, nomad-lab (pyproject.toml), oauthenticator, optimade, pooch, pybis, pymatgen, pynxtools (dependencies/parsers/nexus/pyproject.toml), python-keycloak, requests-cache, rfc3161ng, sphinx requests-cache==1.0.1 # via pynxtools (dependencies/parsers/nexus/pyproject.toml) -rfc3161ng==2.1.3 # via nomad-lab, nomad-lab (pyproject.toml) +rfc3161ng==2.1.3 # via nomad-lab (pyproject.toml) rfc3339-validator==0.1.4 # via jsonschema rfc3986[idna2008]==1.5.0 # via httpx rfc3987==1.3.8 # via jsonschema rsa==4.9 # via python-jose ruamel-yaml==0.17.21 # via jupyter-telemetry, oauthenticator, pymatgen ruamel-yaml-clib==0.2.7 # via ruamel-yaml -runstats==2.0.0 # via nomad-lab, nomad-lab (pyproject.toml) +runstats==2.0.0 # via nomad-lab (pyproject.toml) scikit-image==0.19.3 # via hyperspy, kikuchipy, pyxem -scikit-learn==1.0.2 # via kikuchipy, matid, nomad-lab, nomad-lab (pyproject.toml), pyxem -scipy==1.7.1 # via ase, atomisticparsers (dependencies/parsers/atomistic/pyproject.toml), diffsims, griddataformats, hyperspy, kikuchipy, lmfit, matid, mdanalysis, niondata, nionswift, nomad-lab, nomad-lab (pyproject.toml), orix, pyfai, pymatgen, pyxem, radioactivedecay, scikit-image, scikit-learn, sparse +scikit-learn==1.0.2 # via kikuchipy, matid, nomad-lab (pyproject.toml), pyxem +scipy==1.7.1 # via ase, diffsims, griddataformats, hyperspy, kikuchipy, lmfit, matid, mdanalysis, niondata, nionswift, nomad-lab (pyproject.toml), orix, pyfai, pymatgen, pynxtools (dependencies/parsers/nexus/pyproject.toml), pyxem, radioactivedecay, scikit-image, scikit-learn, sparse sentinels==1.0.0 # via mongomock silx==1.1.2 # via pyfai -simulationparsers @ git+https://github.com/nomad-coe/simulation-parsers.git@develop # via atomisticparsers (dependencies/parsers/atomistic/pyproject.toml), electronicparsers (dependencies/parsers/electronic/pyproject.toml) six==1.16.0 # via basicauth, bcrypt, click-repl, diffpy-structure, ecdsa, elasticsearch-dsl, griddataformats, html5lib, isodate, latexcodec, pybtex, python-dateutil, python-multipart, rdflib, rfc3339-validator, url-normalize, validators smmap==5.0.0 # via gitdb sniffio==1.3.0 # via anyio, httpcore, httpx @@ -254,15 +251,15 @@ sphinxcontrib-qthelp==1.0.3 # via sphinx sphinxcontrib-serializinghtml==1.1.5 # via sphinx sqlalchemy==1.4.46 # via alembic, jupyterhub starlette==0.25.0 # via fastapi -structlog==22.3.0 # via nomad-lab, nomad-lab (pyproject.toml) +structlog==22.3.0 # via nomad-lab (pyproject.toml) sympy==1.10.1 # via hyperspy, pymatgen, radioactivedecay -tabulate==0.8.9 # via nomad-lab, nomad-lab (pyproject.toml), pybis, pymatgen +tabulate==0.8.9 # via nomad-lab (pyproject.toml), pybis, pymatgen tenacity==8.1.0 # via plotly texttable==1.7.0 # via pybis threadpoolctl==3.1.0 # via mdanalysis, scikit-learn tifffile==2021.11.2 # via h5grove, hyperspy, scikit-image toolz==0.12.0 # via dask, hyperspy, partd -toposort==1.9 # via nomad-lab, nomad-lab (pyproject.toml) +toposort==1.9 # via nomad-lab (pyproject.toml) tornado==6.2 # via ipykernel, ipyparallel, jupyter-client, jupyterhub tqdm==4.64.1 # via diffsims, hyperspy, ipyparallel, kikuchipy, mdanalysis, orix, pymatgen traitlets==5.8.1 # via comm, ipykernel, ipyparallel, ipython, ipywidgets, jupyter-client, jupyter-core, jupyter-telemetry, jupyterhub, matplotlib-inline @@ -273,13 +270,13 @@ typish==1.9.3 # via nptyping tzdata==2023.3 # via pytz-deprecation-shim tzlocal==4.3 # via nionswift, pynxtools (dependencies/parsers/nexus/pyproject.toml) uncertainties==3.1.7 # via lmfit, pymatgen -unidecode==1.3.2 # via nomad-lab, nomad-lab (pyproject.toml) +unidecode==1.3.2 # via nomad-lab (pyproject.toml) uri-template==1.2.0 # via jsonschema url-normalize==1.4.3 # via requests-cache urllib3==1.26.14 # via docker, elasticsearch, pybis, requests, requests-cache -uvicorn[standard]==0.20.0 # via h5grove, nomad-lab, nomad-lab (pyproject.toml) +uvicorn[standard]==0.20.0 # via h5grove, nomad-lab (pyproject.toml) uvloop==0.17.0 # via uvicorn -validators==0.18.2 # via nomad-lab, nomad-lab (pyproject.toml) +validators==0.18.2 # via nomad-lab (pyproject.toml) vine==5.0.0 # via amqp, celery, kombu watchfiles==0.18.1 # via uvicorn wcwidth==0.2.5 # via prettytable, prompt-toolkit @@ -289,12 +286,12 @@ websocket-client==1.4.2 # via docker websockets==10.4 # via uvicorn werkzeug==2.2.2 # via flask widgetsnbextension==4.0.9 # via ipywidgets -wrapt==1.12.1 # via nomad-lab, nomad-lab (pyproject.toml) -xarray==0.20.2 # via nomad-lab, nomad-lab (pyproject.toml), pynxtools (dependencies/parsers/nexus/pyproject.toml) +wrapt==1.12.1 # via nomad-lab (pyproject.toml) +xarray==0.20.2 # via nomad-lab (pyproject.toml), pynxtools (dependencies/parsers/nexus/pyproject.toml) zarr==2.12.0 # via hyperspy zipfile37==0.1.3 # via pynxtools (dependencies/parsers/nexus/pyproject.toml) zipp==3.11.0 # via importlib-metadata -zipstream-new==1.1.5 # via nomad-lab, nomad-lab (pyproject.toml) +zipstream-new==1.1.5 # via nomad-lab (pyproject.toml) # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/scripts/check_helm_chart.sh b/scripts/check_helm_chart.sh new file mode 100755 index 0000000000000000000000000000000000000000..f840fd21217b23593dbc7412fb37745a05b47557 --- /dev/null +++ b/scripts/check_helm_chart.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +set -e +set -x # echo on + +working_dir=$(pwd) +project_dir=$(dirname $(dirname $(realpath $0))) + +cd $project_dir + +mkdir tmp + +python ops/kubernetes/nomad/updatevalues.py > tmp/helm-values.yaml +diff ops/kubernetes/nomad/values.yaml tmp/helm-values.yaml + +# cleanup +rm -rf tmp diff --git a/scripts/check_python_dependencies.sh b/scripts/check_python_dependencies.sh index b6680a822c1b76a66881b6375e4a0fc5068d1a87..fb033199c1f90b6eae2f6b73afe37f8cef5f23cb 100755 --- a/scripts/check_python_dependencies.sh +++ b/scripts/check_python_dependencies.sh @@ -1,5 +1,12 @@ #!/bin/sh +# For now we exclude the following dependencies, because they import an older version +# of nomad-lab causing inevitable conflicts. +# dependencies/parsers/atomistic/pyproject.toml \ +# dependencies/parsers/database/pyproject.toml \ +# dependencies/parsers/electronic/pyproject.toml \ +# dependencies/parsers/workflow/pyproject.toml \ + set -e working_dir=$(pwd) @@ -7,28 +14,30 @@ project_dir=$(dirname $(dirname $(realpath $0))) cd $project_dir -set -x # echo on +# backup +cp requirements.txt requirements.txt.tmp +cp requirements-dev.txt requirements-dev.txt.tmp -pip-compile --resolver=backtracking --quiet --annotation-style=line \ +pip-compile --resolver=backtracking --annotation-style=line \ --extra=infrastructure --extra=parsing \ - --output-file=requirements.txt.tmp \ + --output-file=requirements.txt \ + --pip-args="--prefer-binary" \ dependencies/nomad-dos-fingerprints/pyproject.toml \ - dependencies/parsers/atomistic/pyproject.toml \ - dependencies/parsers/database/pyproject.toml \ dependencies/parsers/eelsdb/pyproject.toml \ - dependencies/parsers/electronic/pyproject.toml \ dependencies/parsers/nexus/pyproject.toml \ - dependencies/parsers/workflow/pyproject.toml pyproject.toml + pyproject.toml -diff requirements.txt requirements.txt.tmp +diff requirements.txt.tmp requirements.txt -pip-compile --resolver=backtracking --quiet --annotation-style=line \ +pip-compile --resolver=backtracking --annotation-style=line \ --extra=dev --extra=infrastructure --extra=parsing \ - --output-file=requirements-dev.txt.tmp \ + --output-file=requirements-dev.txt \ + --pip-args="--prefer-binary" \ requirements.txt \ pyproject.toml -diff requirements-dev.txt requirements-dev.txt.tmp +diff requirements-dev.txt.tmp requirements-dev.txt # cleanup -rm requirements.txt.tmp requirements-dev.txt.tmp +mv requirements.txt.tmp requirements.txt +mv requirements-dev.txt.tmp requirements-dev.txt diff --git a/scripts/generate_python_dependencies.sh b/scripts/generate_python_dependencies.sh index df678273e99d0139a2a75c528fbf846cd0335ae7..91de80c94df001abd8b50e73dd7386723c12a2fa 100755 --- a/scripts/generate_python_dependencies.sh +++ b/scripts/generate_python_dependencies.sh @@ -1,5 +1,12 @@ #!/bin/sh +# For now we exclude the following dependencies, because they import an older version +# of nomad-lab causing inevitable conflicts. +# dependencies/parsers/atomistic/pyproject.toml \ +# dependencies/parsers/database/pyproject.toml \ +# dependencies/parsers/electronic/pyproject.toml \ +# dependencies/parsers/workflow/pyproject.toml \ + set -e working_dir=$(pwd) @@ -10,18 +17,16 @@ cd $project_dir pip-compile --resolver=backtracking --annotation-style=line \ --extra=infrastructure --extra=parsing \ --output-file=requirements.txt \ + --pip-args="--prefer-binary" \ dependencies/nomad-dos-fingerprints/pyproject.toml \ - dependencies/parsers/atomistic/pyproject.toml \ - dependencies/parsers/database/pyproject.toml \ dependencies/parsers/eelsdb/pyproject.toml \ - dependencies/parsers/electronic/pyproject.toml \ dependencies/parsers/nexus/pyproject.toml \ - dependencies/parsers/workflow/pyproject.toml pyproject.toml - + pyproject.toml pip-compile --resolver=backtracking --annotation-style=line \ --extra=dev --extra=infrastructure --extra=parsing \ --output-file=requirements-dev.txt \ + --pip-args="--prefer-binary" \ requirements.txt \ pyproject.toml diff --git a/scripts/update_helm_chart.sh b/scripts/update_helm_chart.sh new file mode 100755 index 0000000000000000000000000000000000000000..a58bff4d03443aff3f9f5d82ed26951f75b39551 --- /dev/null +++ b/scripts/update_helm_chart.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +set -e + +working_dir=$(pwd) +project_dir=$(dirname $(dirname $(realpath $0))) + +cd $project_dir + +python ops/kubernetes/nomad/updatevalues.py ops/kubernetes/nomad/values.yaml