Skip to content

Commit 80d588a

Browse files
author
Lauri Himanen
committed
Merge branch 'v1.3.16' into 'main'
v1.3.16 See merge request nomad-lab/nomad-FAIR!2439
2 parents a992bcd + 9485fcf commit 80d588a

File tree

13 files changed

+279
-250
lines changed

13 files changed

+279
-250
lines changed

.gitlab-ci.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,13 +52,13 @@ stages:
5252
- release
5353

5454
# JOBS
55-
5655
update changelog:
5756
stage: build
57+
when: manual
5858
script:
59-
- curl -X POST "https://gitlab.mpcdf.mpg.de/api/v4/projects/$CI_PROJECT_ID/repository/changelog?version=${CI_COMMIT_TAG:1}&access_token=$CI_ACCESS_TOKEN&message=Add%20changelog%20for%20version%20$CI_COMMIT_TAG%20%5Bskip-ci%5D"
59+
- curl -X POST "https://gitlab.mpcdf.mpg.de/api/v4/projects/$CI_PROJECT_ID/repository/changelog?branch=${CI_COMMIT_REF_NAME}&version=${CI_COMMIT_REF_NAME:1}&access_token=$CI_ACCESS_TOKEN&message=Add%20changelog%20for%20version%20$CI_COMMIT_REF_NAME%20%5Bskip-ci%5D"
6060
rules:
61-
- if: $CI_COMMIT_TAG =~ /^v\d+\.\d+\.\d+$/
61+
- if: $CI_COMMIT_REF_NAME =~ /^v\d+\.\d+\.\d+$/
6262

6363
.build_image:
6464
image:
@@ -335,11 +335,11 @@ python package install tests:
335335
- |
336336
for PYTHON_VERSION in 3.10 3.11 3.12; do
337337
echo "Running for Python $PYTHON_VERSION"
338-
338+
339339
uv venv -p $PYTHON_VERSION
340-
340+
341341
uv pip install dist/nomad_*.whl
342-
342+
343343
./.venv/bin/python -c 'import nomad.cli'
344344
./.venv/bin/python -c 'from nomad.client import ArchiveQuery'
345345
./.venv/bin/python -m nomad.cli parse --skip-normalizers archive.json

CHANGELOG.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,28 @@
1+
## 1.3.16 (2025-05-15)
2+
3+
### Changed (4 changes)
4+
5+
- [Added more context to the ConfigBaseModel validation logger warning](https://gitlab.mpcdf.mpg.de/nomad-lab/nomad-FAIR/-/commit/96b76947d6fc01c1d42defcd868bfe2b333334f9) ([merge request](https://gitlab.mpcdf.mpg.de/nomad-lab/nomad-FAIR/-/merge_requests/2429))
6+
- [Removed direct infrastructure dependency from mkdocs macros](https://gitlab.mpcdf.mpg.de/nomad-lab/nomad-FAIR/-/commit/075653f2b839539e90a07e729d2304268b8f2527) ([merge request](https://gitlab.mpcdf.mpg.de/nomad-lab/nomad-FAIR/-/merge_requests/2366))
7+
- [Use newer version of setuptools](https://gitlab.mpcdf.mpg.de/nomad-lab/nomad-FAIR/-/commit/112dc2b9a08103da228c12333ae3fd93c870dfc5) ([merge request](https://gitlab.mpcdf.mpg.de/nomad-lab/nomad-FAIR/-/merge_requests/2426))
8+
9+
### Fixed (5 changes)
10+
11+
- [Fixed issue with undefined spectra data](https://gitlab.mpcdf.mpg.de/nomad-lab/nomad-FAIR/-/commit/c2e6601ba5ca611e308ed35adeac9d4f130aca25) ([merge request](https://gitlab.mpcdf.mpg.de/nomad-lab/nomad-FAIR/-/merge_requests/2436))
12+
- [Fixed performance issues with API response for entries with large amounts of search quantities](https://gitlab.mpcdf.mpg.de/nomad-lab/nomad-FAIR/-/commit/cc3f32a034f57f07aab14ddfd94184106ad09758) ([merge request](https://gitlab.mpcdf.mpg.de/nomad-lab/nomad-FAIR/-/merge_requests/2409))
13+
- [Fixed issue with unit conversion from/to delta units](https://gitlab.mpcdf.mpg.de/nomad-lab/nomad-FAIR/-/commit/fa071c5df9255c1489ef61a44667cf1105c07289) ([merge request](https://gitlab.mpcdf.mpg.de/nomad-lab/nomad-FAIR/-/merge_requests/2380))
14+
- [Fixed issue with histograms that contain negative numbers](https://gitlab.mpcdf.mpg.de/nomad-lab/nomad-FAIR/-/commit/5d8438f86461da28e20c62eb72187f85a7ec5442) ([merge request](https://gitlab.mpcdf.mpg.de/nomad-lab/nomad-FAIR/-/merge_requests/2367))
15+
- [Fixed ForwardRef related pydantic error in annotation models](https://gitlab.mpcdf.mpg.de/nomad-lab/nomad-FAIR/-/commit/d324719cf5f0d006dfa51ae452e9685484c802b3) ([merge request](https://gitlab.mpcdf.mpg.de/nomad-lab/nomad-FAIR/-/merge_requests/2403))
16+
17+
### Added (6 changes)
18+
19+
- [Added option for setting the query mode for terms widget and terms menu item](https://gitlab.mpcdf.mpg.de/nomad-lab/nomad-FAIR/-/commit/f744bea733616076ab72bdfba0aa450a4194edb9) ([merge request](https://gitlab.mpcdf.mpg.de/nomad-lab/nomad-FAIR/-/merge_requests/2428))
20+
- [Added experimental API endpoint for bulk entries metadata export](https://gitlab.mpcdf.mpg.de/nomad-lab/nomad-FAIR/-/commit/072952d29940df4d16e010f870af1d5fdb1eb584) ([merge request](https://gitlab.mpcdf.mpg.de/nomad-lab/nomad-FAIR/-/merge_requests/2315))
21+
- [Added new action for launching remote tools from the results table](https://gitlab.mpcdf.mpg.de/nomad-lab/nomad-FAIR/-/commit/e7343bd0de909b3f9a8ae57b48044455a2adfa2d) ([merge request](https://gitlab.mpcdf.mpg.de/nomad-lab/nomad-FAIR/-/merge_requests/2279))
22+
- [Added support for negative parser levels](https://gitlab.mpcdf.mpg.de/nomad-lab/nomad-FAIR/-/commit/203b6e11308bca7f18d7cb7580116c87b0e92bdd) ([merge request](https://gitlab.mpcdf.mpg.de/nomad-lab/nomad-FAIR/-/merge_requests/2362))
23+
- [Added mkdocs function to add schema section and package reference](https://gitlab.mpcdf.mpg.de/nomad-lab/nomad-FAIR/-/commit/bd2d5c84824cc1a4bbd2c40e1d9c1871c1a41aa6) ([merge request](https://gitlab.mpcdf.mpg.de/nomad-lab/nomad-FAIR/-/merge_requests/2116))
24+
- [Added wheel to the Python package](https://gitlab.mpcdf.mpg.de/nomad-lab/nomad-FAIR/-/commit/aa13798e378ca1d78d576820eee0f1be0f360aba) ([merge request](https://gitlab.mpcdf.mpg.de/nomad-lab/nomad-FAIR/-/merge_requests/2433))
25+
126
## 1.3.15 (2025-03-05)
227

328
### Fixed (1 change)

README.md

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,16 @@ Scheidgen et al., (2023). NOMAD: A distributed web-based platform for managing m
4646

4747
For citation in academic works, you can use this [BibTeX file](docs/assets/joss_paper.bib).
4848

49-
## Changelog
49+
## Changelog highlights
5050

51-
Omitted versions are plain bugfix releases with only minor changes and fixes. The
52-
file [`CHANGELOG.md`](https://gitlab.mpcdf.mpg.de/nomad-lab/nomad-FAIR/-/blob/develop/CHANGELOG.md)
53-
contains much more detailed information about changes and fixes in the released versions.
51+
The following list contains highlights from different versions, the file [`CHANGELOG.md`](https://gitlab.mpcdf.mpg.de/nomad-lab/nomad-FAIR/-/blob/develop/CHANGELOG.md) contains much more detailed information about changes and fixes in the released versions. Omitted versions are plain bugfix releases with only minor changes and fixes.
52+
53+
### v1.3.16
54+
55+
- Added option for setting the query mode for terms widget and terms menu item
56+
- Added new action for launching remote tools from the results table
57+
- Fixed performance issues with API response for entries with large amounts of search quantities
58+
- Fixed issue with unit conversion from/to delta units
5459

5560
### v1.3.15
5661

examples/data/rdm_tutorial/tutorial.ipynb

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6814,7 +6814,7 @@
68146814
},
68156815
{
68166816
"cell_type": "code",
6817-
"execution_count": 2,
6817+
"execution_count": null,
68186818
"metadata": {
68196819
"tags": []
68206820
},
@@ -6908,7 +6908,7 @@
69086908
},
69096909
{
69106910
"cell_type": "code",
6911-
"execution_count": 4,
6911+
"execution_count": 3,
69126912
"metadata": {
69136913
"tags": []
69146914
},
@@ -6961,7 +6961,7 @@
69616961
},
69626962
{
69636963
"cell_type": "code",
6964-
"execution_count": 5,
6964+
"execution_count": 4,
69656965
"metadata": {
69666966
"tags": []
69676967
},
@@ -6989,7 +6989,7 @@
69896989
},
69906990
{
69916991
"cell_type": "code",
6992-
"execution_count": 6,
6992+
"execution_count": 5,
69936993
"metadata": {
69946994
"tags": []
69956995
},
@@ -7093,7 +7093,7 @@
70937093
" # Add hydrogens, store molecule formula and mass\n",
70947094
" rdkit_mol = Chem.AddHs(rdkit_mol)\n",
70957095
" self.molecular_formula = Chem.rdMolDescriptors.CalcMolFormula(rdkit_mol)\n",
7096-
" self.molecular_mass = Chem.rdMolDescriptors.CalcExactMolWt(rdkit_mol)\n"
7096+
" self.molecular_mass = Chem.rdMolDescriptors.CalcExactMolWt(rdkit_mol)"
70977097
]
70987098
},
70997099
{
@@ -7411,9 +7411,9 @@
74117411
"class TADFMoleculesParser(MatchingParser):\n",
74127412
" def __init__(self):\n",
74137413
" super().__init__(\n",
7414-
" mainfile_name_re='\\.*molecule{\\d*}.json',\n",
7415-
" mainfile_mime_re='\\.*',\n",
7416-
" mainfile_contents_re='\\.*',\n",
7414+
" mainfile_name_re=r'\\.*molecule{\\d*}.json',\n",
7415+
" mainfile_mime_re=r'\\.*',\n",
7416+
" mainfile_contents_re=r'\\.*',\n",
74177417
" )\n",
74187418
"\n",
74197419
" def parse(\n",
@@ -7423,7 +7423,7 @@
74237423
" logger,\n",
74247424
" ) -> None:\n",
74257425
" pass\n",
7426-
" # TODO: You parsing logic here\n"
7426+
" # TODO: You parsing logic here"
74277427
]
74287428
},
74297429
{
@@ -7448,16 +7448,15 @@
74487448
"outputs": [],
74497449
"source": [
74507450
"import json\n",
7451-
"import re\n",
74527451
"from nomad.units import ureg\n",
74537452
"\n",
74547453
"\n",
74557454
"class TADFMoleculesParser(MatchingParser):\n",
74567455
" def __init__(self):\n",
74577456
" super().__init__(\n",
7458-
" mainfile_name_re='\\.*molecule{\\d*}.json',\n",
7459-
" mainfile_mime_re='\\.*',\n",
7460-
" mainfile_contents_re='\\.*',\n",
7457+
" mainfile_name_re=r'\\.*molecule{\\d*}.json',\n",
7458+
" mainfile_mime_re=r'\\.*',\n",
7459+
" mainfile_contents_re=r'\\.*',\n",
74617460
" )\n",
74627461
"\n",
74637462
" def parse(\n",
@@ -7605,7 +7604,7 @@
76057604
},
76067605
{
76077606
"cell_type": "code",
7608-
"execution_count": 20,
7607+
"execution_count": 19,
76097608
"metadata": {
76107609
"tags": []
76117610
},
@@ -7615,7 +7614,6 @@
76157614
" App,\n",
76167615
" Axis,\n",
76177616
" Column,\n",
7618-
" Columns,\n",
76197617
" Dashboard,\n",
76207618
" Format,\n",
76217619
" Layout,\n",
@@ -7744,8 +7742,7 @@
77447742
" ),\n",
77457743
" ]\n",
77467744
" ),\n",
7747-
")\n",
7748-
"\n"
7745+
")"
77497746
]
77507747
},
77517748
{
@@ -7800,7 +7797,7 @@
78007797
"name": "python",
78017798
"nbconvert_exporter": "python",
78027799
"pygments_lexer": "ipython3",
7803-
"version": "3.11.0"
7800+
"version": "3.11.0rc1"
78047801
}
78057802
},
78067803
"nbformat": 4,

gui/src/components/search/SearchResults.js

Lines changed: 31 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -56,20 +56,26 @@ export const extractPathContent = ({action, data, key}) => {
5656
*/
5757
export const ActionURL = React.memo(({action, data}) => {
5858
const {raiseError} = useErrors()
59-
const href = extractPathContent({action, data, key: 'path'})
59+
let href = extractPathContent({action, data, key: 'path'})
6060

6161
if (isArray(href)) {
62-
raiseError(`
63-
Encountered and array in ${action.path}. Expected a string.
64-
Update the path in you app to target only one item in the array.`
65-
)
66-
return
62+
if (href.length > 1) {
63+
raiseError(`
64+
The data for a row action as returned by the path "${action.path}"
65+
contains an array with more than one item. Update the path in your app
66+
to target only one item in the array.`
67+
)
68+
return null
69+
} else {
70+
href = href[0]
71+
}
6772
}
6873
const disabled = !href
6974
const size = 'medium'
7075
const svgIcon = {
7176
'github': <GitHubIcon fontSize={size}/>
7277
}[action.icon]
78+
7379
return <Tooltip title={disabled ? 'Not available' : (action.description || '')}>
7480
<div>
7581
<IconButton size={size} href={href} target="_blank" disabled={disabled}>
@@ -120,19 +126,18 @@ export const NorthURL = React.memo(({ action, data }) => {
120126

121127
const handleLaunch = async () => {
122128
if (!tool) return
123-
const {state: currentState, uploadid_is_mounted} = await getToolStatus()
129+
const { state: currentState, uploadid_is_mounted } = await getToolStatus()
124130
if (currentState === "stopped") {
125-
const { toolUrl } = await launch()
126-
setToolUrl(toolUrl)
127-
if (toolUrl) window.open(toolUrl, tool.name)
131+
const { toolUrl: newUrl } = await launch()
132+
setToolUrl(newUrl)
133+
if (newUrl) window.open(newUrl, tool.name)
128134
} else if (uploadid_is_mounted === false) {
129135
setDialogMessage(
130136
`The upload ${data?.upload_id} is not mounted. You need to stop the tool before relaunching it.
131137
Stopping the tool may cause loss of unsaved data.`)
132138
setShowStopOnly(true)
133139
setOpenDialog(true)
134140
} else {
135-
setToolUrl(toolUrl)
136141
setDialogMessage("The tool is already running. Stopping it will delete any unsaved data.")
137142
setShowStopOnly(false)
138143
setOpenDialog(true)
@@ -150,14 +155,23 @@ export const NorthURL = React.memo(({ action, data }) => {
150155
setOpenDialog(false)
151156
}
152157

153-
const handleOpenTool = () => {
154-
setOpenDialog(false)
155-
window.open(
156-
toolUrl || `${northBase}/user/${keycloak.tokenParsed?.preferred_username}/${tool.name}`,
157-
"_blank"
158-
)
158+
const handleOpenTool = async () => {
159+
setOpenDialog(false)
160+
let url = toolUrl
161+
162+
if (!url) {
163+
const { state, uploadid_is_mounted } = await getToolStatus()
164+
if (state === "running" && uploadid_is_mounted) {
165+
const { toolUrl: fetchedUrl } = await launch()
166+
url = fetchedUrl || `${northBase}/user/${keycloak.tokenParsed?.preferred_username}/${tool.name}`
167+
} else {
168+
url = `${northBase}/user/${keycloak.tokenParsed?.preferred_username}/${tool.name}`
169+
}
159170
}
160171

172+
window.open(url, "_blank")
173+
}
174+
161175
const disabled = !filepath || !isAuthenticated
162176
const tooltipMessage = !isAuthenticated
163177
? "You must be logged in to use this tool."

nomad/cli/admin/run.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,9 @@ def run_app(
7171
):
7272
config.meta.service = 'app'
7373
host = host or config.services.api_host or '0.0.0.0'
74-
port = int(port or config.services.api_port or 8000)
74+
# TODO: respect `config.services.api_port` instead of defaulting to 8000
75+
# port = int(port or config.services.api_port or 8000)
76+
port = int(port or 8000)
7577

7678
if with_gui:
7779
import glob

nomad/config/models/config.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ class Services(ConfigBaseModel):
202202
""",
203203
)
204204
upload_members_group_search_enabled: bool = Field(
205-
False,
205+
True,
206206
description='If true, the GUI will show a search for groups as upload members.',
207207
)
208208
log_api_queries: bool = Field(

nomad/jupyterhub_config.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ def pre_spawn(spawner):
121121
c.GenericOAuthenticator.scope = ['openid', 'profile']
122122
c.Authenticator.auto_login = True
123123
c.Authenticator.enable_auth_state = True
124-
c.Ahtenticator.allow_all = True
124+
c.Authenticator.allow_all = True
125125

126126

127127
# configure docker spawner

pyproject.toml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ readme = "README.md"
99
authors = [
1010
{ name = "NOMAD Laboratory", email = '[email protected]' },
1111
]
12-
dynamic = ["version"]
12+
version = "1.3.16"
1313
license = { text = "Apache-2.0" }
1414
requires-python = ">=3.10"
1515

@@ -64,9 +64,9 @@ infrastructure = [
6464
'fastapi',
6565
'gunicorn',
6666
'h5grove[fastapi]',
67-
'jupyterhub',
67+
'jupyterhub<5.0.0', # Connection issues with newer versions
6868
'mongoengine',
69-
'oauthenticator',
69+
'oauthenticator<16.0.0', # Connection issues with newer versions
7070
'optimade[mongo]',
7171
'pyjwt[crypto]',
7272
'python-logstash',
@@ -191,4 +191,4 @@ testpaths = ["tests"]
191191
filterwarnings = [
192192
"ignore::DeprecationWarning",
193193
"ignore::SyntaxWarning",
194-
]
194+
]

0 commit comments

Comments
 (0)