Skip to content

Commit 60eb49f

Browse files
Merge pull request #330 from DataLab-Platform/release
Release v1.2.1
2 parents d60c87a + 8bed1e7 commit 60eb49f

50 files changed

Lines changed: 1365 additions & 825 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.env.template

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,6 @@ VENV_DIR=
77
# Python path for development (sibling packages)
88
PYTHONPATH=.
99
# Locale (e.g. fr)
10-
LANG=
10+
LANG=
11+
# Debug mode (0 or 1)
12+
DATALAB_DEBUG=0

.github/workflows/_build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ jobs:
201201
x11-utils xvfb \
202202
texlive-latex-base texlive-latex-extra texlive-fonts-recommended \
203203
texlive-fonts-extra texlive-lang-french texlive-xetex latexmk \
204-
fonts-symbola \
204+
fonts-noto-core fonts-noto-mono fonts-noto-extra \
205205
imagemagick librsvg2-bin
206206
/sbin/start-stop-daemon --start --quiet \
207207
--pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background \

.github/workflows/release-rc.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ jobs:
5959
runs-on: ubuntu-latest
6060
permissions:
6161
contents: write
62+
id-token: write # required by attest-build-provenance (OIDC)
63+
attestations: write # required by attest-build-provenance
6264
steps:
6365
- uses: actions/checkout@v4
6466

@@ -85,6 +87,23 @@ jobs:
8587
name: msi-installer
8688
path: assets/msi
8789

90+
- name: Generate SHA256SUMS
91+
run: |
92+
cd assets
93+
find dists msi pdfs -type f \
94+
\( -name '*.whl' -o -name '*.tar.gz' -o -name '*.msi' -o -name '*.pdf' \) \
95+
-printf '%P\n' | sort | xargs -I{} sha256sum {} \
96+
> SHA256SUMS
97+
cat SHA256SUMS
98+
99+
- name: Attest build provenance
100+
uses: actions/attest-build-provenance@v2
101+
with:
102+
subject-path: |
103+
assets/dists/*.whl
104+
assets/dists/*.tar.gz
105+
assets/msi/*.msi
106+
88107
- name: Extract release notes
89108
run: |
90109
python scripts/ci_release_helpers.py release-notes \
@@ -105,3 +124,4 @@ jobs:
105124
assets/msi/*.msi
106125
assets/pdfs/DataLab_fr.pdf
107126
assets/pdfs/DataLab_en.pdf
127+
assets/SHA256SUMS

.github/workflows/release.yml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@ jobs:
6767
runs-on: ubuntu-latest
6868
permissions:
6969
contents: write
70+
id-token: write # required by attest-build-provenance (OIDC)
71+
attestations: write # required by attest-build-provenance
7072
steps:
7173
- uses: actions/checkout@v4
7274

@@ -93,6 +95,28 @@ jobs:
9395
name: msi-installer
9496
path: assets/msi
9597

98+
- name: Generate SHA256SUMS
99+
# Single checksums file covering every artifact published in the
100+
# release. Users verify with: `sha256sum -c SHA256SUMS`.
101+
run: |
102+
cd assets
103+
find dists msi pdfs -type f \
104+
\( -name '*.whl' -o -name '*.tar.gz' -o -name '*.msi' -o -name '*.pdf' \) \
105+
-printf '%P\n' | sort | xargs -I{} sha256sum {} \
106+
> SHA256SUMS
107+
echo "--- SHA256SUMS ---"
108+
cat SHA256SUMS
109+
110+
- name: Attest build provenance
111+
# Produces a Sigstore-backed attestation linking each artifact to
112+
# this exact workflow run. Verifiable with `gh attestation verify`.
113+
uses: actions/attest-build-provenance@v2
114+
with:
115+
subject-path: |
116+
assets/dists/*.whl
117+
assets/dists/*.tar.gz
118+
assets/msi/*.msi
119+
96120
- name: Extract release notes
97121
run: |
98122
python scripts/ci_release_helpers.py release-notes \
@@ -114,6 +138,7 @@ jobs:
114138
assets/msi/*.msi
115139
assets/pdfs/DataLab_fr.pdf
116140
assets/pdfs/DataLab_en.pdf
141+
assets/SHA256SUMS
117142
118143
# ---------------------------------------------------------------------------
119144
# Build & deploy documentation (delegated to pages.yml). Non-blocking.

.vscode/tasks.json

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -372,29 +372,6 @@
372372
"sphinx-intl build",
373373
],
374374
},
375-
{
376-
"label": "🛠️ Generate doc assets",
377-
"command": "${command:python.interpreterPath} scripts/run_with_env.py ${command:python.interpreterPath} -m guidata.utils.genreqs all; if ($?) { ${command:python.interpreterPath} scripts/run_with_env.py ${command:python.interpreterPath} doc/update_validation_status.py }",
378-
"options": {
379-
"cwd": "${workspaceFolder}",
380-
"statusbar": {
381-
"hide": true,
382-
},
383-
},
384-
"group": {
385-
"kind": "build",
386-
"isDefault": false,
387-
},
388-
"presentation": {
389-
"clear": true,
390-
"echo": true,
391-
"focus": false,
392-
"panel": "dedicated",
393-
"reveal": "always",
394-
"showReuseMessage": true,
395-
},
396-
"type": "shell",
397-
},
398375
{
399376
"label": "🧪 Coverage tests",
400377
"type": "shell",
@@ -571,6 +548,30 @@
571548
"clear": true,
572549
},
573550
},
551+
{
552+
"label": "📋 Refresh doc metadata",
553+
"detail": "Regenerate requirements.txt + doc/requirements.rst (via guidata.utils.genreqs) and update Sigima validation status in the docs.",
554+
"command": "${command:python.interpreterPath} scripts/run_with_env.py ${command:python.interpreterPath} -m guidata.utils.genreqs all; if ($?) { ${command:python.interpreterPath} scripts/run_with_env.py ${command:python.interpreterPath} doc/update_validation_status.py }",
555+
"options": {
556+
"cwd": "${workspaceFolder}",
557+
"statusbar": {
558+
"hide": true,
559+
},
560+
},
561+
"group": {
562+
"kind": "build",
563+
"isDefault": false,
564+
},
565+
"presentation": {
566+
"clear": true,
567+
"echo": true,
568+
"focus": false,
569+
"panel": "dedicated",
570+
"reveal": "always",
571+
"showReuseMessage": true,
572+
},
573+
"type": "shell",
574+
},
574575
{
575576
"label": "🖼️ Refresh doc screenshots",
576577
"detail": "Maintainer task: regenerate PNG screenshots under doc/images/ by launching DataLab for each language (fr + en). Commit the resulting diff in a dedicated 'docs: refresh screenshots' commit.",
@@ -601,7 +602,7 @@
601602
},
602603
},
603604
{
604-
"label": "Create executable",
605+
"label": "🏗️ Create executable",
605606
"type": "shell",
606607
"command": "${command:python.interpreterPath}",
607608
"args": [
@@ -636,7 +637,7 @@
636637
},
637638
},
638639
{
639-
"label": "Create installer",
640+
"label": "📦 Create installer",
640641
"type": "shell",
641642
"command": "${command:python.interpreterPath}",
642643
"args": [
@@ -670,7 +671,7 @@
670671
},
671672
},
672673
{
673-
"label": "Build PDF doc",
674+
"label": "📘 Build PDF doc",
674675
"type": "shell",
675676
"command": "${command:python.interpreterPath}",
676677
"options": {
@@ -706,7 +707,7 @@
706707
},
707708
"dependsOrder": "sequence",
708709
"dependsOn": [
709-
"🛠️ Generate doc assets",
710+
"📋 Refresh doc metadata",
710711
],
711712
},
712713
{
@@ -803,7 +804,7 @@
803804
},
804805
"dependsOrder": "sequence",
805806
"dependsOn": [
806-
"🛠️ Generate doc assets",
807+
"📋 Refresh doc metadata",
807808
],
808809
},
809810
{
@@ -919,8 +920,7 @@
919920
},
920921
"dependsOrder": "sequence",
921922
"dependsOn": [
922-
"🛠️ Generate doc assets",
923-
"Build PDF doc",
923+
"📘 Build PDF doc",
924924
],
925925
},
926926
{
@@ -958,8 +958,8 @@
958958
"Upgrade Sigima/PlotPyStack",
959959
"📚 Compile translations",
960960
"Build Python packages",
961-
"Create executable",
962-
"Create installer",
961+
"🏗️ Create executable",
962+
"📦 Create installer",
963963
],
964964
},
965965
{

datalab/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
# this module is imported more than once, e.g. when running tests)
2525
pass
2626

27-
__version__ = "1.2.0"
27+
__version__ = "1.2.1"
2828
__docurl__ = __homeurl__ = "https://datalab-platform.com/"
2929
__supporturl__ = "https://github.com/DataLab-Platform/DataLab/issues/new/choose"
3030

datalab/config.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ def get_config_app_name() -> str:
6767
APP_DESC = _("""DataLab is a generic signal and image processing platform""")
6868
APP_PATH = osp.dirname(__file__)
6969

70-
DEBUG = os.environ.get("DEBUG", "").lower() in ("1", "true")
70+
DEBUG = os.environ.get("DATALAB_DEBUG", "").lower() in ("1", "true")
7171
if DEBUG:
7272
print("*** DEBUG mode *** [Reset configuration file, do not redirect std I/O]")
7373

datalab/control/baseproxy.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -380,6 +380,14 @@ def get_sel_object_uuids(self, include_groups: bool = False) -> list[str]:
380380
List of selected objects uuids.
381381
"""
382382

383+
@abc.abstractmethod
384+
def get_current_object_uuid(self) -> str | None:
385+
"""Return current object uuid in current panel.
386+
387+
Returns:
388+
UUID of the current object, or None if no object is current.
389+
"""
390+
383391
@abc.abstractmethod
384392
def select_objects(
385393
self,
@@ -815,6 +823,14 @@ def get_sel_object_uuids(self, include_groups: bool = False) -> list[str]:
815823
"""
816824
return self._datalab.get_sel_object_uuids(include_groups)
817825

826+
def get_current_object_uuid(self) -> str | None:
827+
"""Return current object uuid in current panel.
828+
829+
Returns:
830+
UUID of the current object, or None if no object is current.
831+
"""
832+
return self._datalab.get_current_object_uuid()
833+
818834
def add_group(
819835
self, title: str, panel: str | None = None, select: bool = False
820836
) -> None:

datalab/control/remote.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -483,6 +483,15 @@ def get_sel_object_uuids(self, include_groups: bool = False) -> list[str]:
483483
"""
484484
return self.win.get_sel_object_uuids(include_groups)
485485

486+
@remote_call
487+
def get_current_object_uuid(self) -> str | None:
488+
"""Return current object uuid in current panel.
489+
490+
Returns:
491+
UUID of the current object, or None if no object is current.
492+
"""
493+
return self.win.get_current_object_uuid()
494+
486495
@remote_call
487496
def add_group(
488497
self, title: str, panel: str | None = None, select: bool = False
84 Bytes
Loading

0 commit comments

Comments
 (0)