datalab: init at 1.2.1 (#532949)

This commit is contained in:
Ivan Mincik
2026-06-19 16:07:55 +00:00
committed by GitHub
11 changed files with 682 additions and 0 deletions
+3
View File
@@ -0,0 +1,3 @@
{ python3Packages }:
python3Packages.toPythonApplication python3Packages.datalab-platform
@@ -0,0 +1,3 @@
{ python3Packages }:
python3Packages.toPythonApplication python3Packages.intersphinx-registry
+3
View File
@@ -0,0 +1,3 @@
{ python3Packages }:
python3Packages.toPythonApplication python3Packages.jupyterlite-core
@@ -0,0 +1,3 @@
{ python3Packages }:
python3Packages.toPythonApplication python3Packages.sphinx-gallery
@@ -0,0 +1,174 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
# build-time
qt5,
# build-system
setuptools,
# dependencies
fastapi,
guidata,
numpy,
packaging,
pandas,
plotpy,
psutil,
pydantic,
pywavelets,
scikit-image,
scipy,
sigima,
uvicorn,
# optional-dependencies
babel,
build,
coverage,
pre-commit,
pylint,
ruff,
myst-parser,
pydata-sphinx-theme,
sphinx,
sphinx-copybutton,
sphinx-design,
sphinx-intl,
sphinx-sitemap,
sphinxcontrib-svg2pdfconverter,
opencv-python-headless,
pyinstaller,
pyqt5,
httpx,
pytest,
pytest-xvfb,
# tests
pytestCheckHook,
}:
buildPythonPackage (finalAttrs: {
pname = "datalab-platform";
version = "1.2.1";
pyproject = true;
__structuredAttrs = true;
src = fetchFromGitHub {
owner = "DataLab-Platform";
repo = "DataLab";
tag = "v${finalAttrs.version}";
hash = "sha256-rJDA5qYv2LYMyrckxNy63Gqn8HYU62qG0OAioztKGtA=";
};
# NOTE: DataLab is compatible with qt6, but it's apparently not perfect as
# the executable segfaults on startup. For now, let's use qt5 which works and
# migrate in the future.
nativeBuildInputs = [
qt5.wrapQtAppsHook
];
buildInputs = [
qt5.qtbase
];
build-system = [
setuptools
];
dependencies = [
fastapi
guidata
numpy
packaging
pandas
plotpy
psutil
pydantic
pywavelets
scikit-image
scipy
sigima
uvicorn
]
++ finalAttrs.passthru.optional-dependencies.qt
# required for `bin/datalab-{demo,tests}`
++ finalAttrs.passthru.optional-dependencies.test;
optional-dependencies = {
dev = [
babel
build
coverage
pre-commit
pylint
ruff
];
doc = [
myst-parser
pydata-sphinx-theme
sphinx
sphinx-copybutton
sphinx-design
sphinx-intl
sphinx-sitemap
sphinxcontrib-svg2pdfconverter
];
exe = [
opencv-python-headless
pyinstaller
pyqt5
];
opencv = [
opencv-python-headless
];
qt = [
pyqt5
];
test = [
httpx
pytest
pytest-xvfb
];
};
pythonRelaxDeps = [
"guidata"
"plotpy"
"scipy"
];
pythonImportsCheck = [
"datalab"
];
nativeCheckInputs = [
pytestCheckHook
]
++ finalAttrs.passthru.optional-dependencies.test;
pytestFlags = [
"--collect-only"
];
dontWrapQtApps = true;
preFixup = ''
# Python scripts need to be manually wrapped
for exe in "$out/bin"/datalab*; do
wrapQtApp "$exe"
done
'';
meta = {
description = "Open-source Platform for Scientific and Technical Data Processing and Visualization";
homepage = "https://github.com/DataLab-Platform/DataLab";
changelog = "https://github.com/DataLab-Platform/DataLab/releases/tag/${finalAttrs.src.tag}";
mainProgram = "datalab";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ eljamm ];
teams = with lib.teams; [ ngi ];
};
})
@@ -0,0 +1,77 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
# build-system
flit-core,
# optional-dependencies
platformdirs,
requests,
requests-cache,
sphinx,
mypy,
pytest,
pytest-xdist,
types-requests,
# tests
pytestCheckHook,
}:
buildPythonPackage (finalAttrs: {
pname = "intersphinx-registry";
version = "0.2705.27";
pyproject = true;
__structuredAttrs = true;
src = fetchFromGitHub {
owner = "Quansight-labs";
repo = "intersphinx_registry";
tag = finalAttrs.version;
hash = "sha256-yFpk3NZO2iCjuJ43WvssbDYxNJ6G6KfY5pcTCilsGQs=";
};
build-system = [
flit-core
];
dependencies = finalAttrs.passthru.optional-dependencies.lookup;
optional-dependencies = {
lookup = [
platformdirs
requests
requests-cache
sphinx
];
tests = [
mypy
pytest
pytest-xdist
types-requests
];
};
nativeCheckInputs = [
mypy
pytestCheckHook
]
++ finalAttrs.passthru.optional-dependencies.tests;
# TODO: lots of failing tests
doCheck = false;
pythonImportsCheck = [
"intersphinx_registry"
];
meta = {
description = "Utility package that provides a default intersphinx mapping";
homepage = "https://github.com/Quansight-labs/intersphinx_registry";
mainProgram = "intersphinx-registry";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ eljamm ];
};
})
@@ -0,0 +1,55 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
# build-system
hatchling,
# dependencies
doit,
jupyter-core,
pycparser,
}:
buildPythonPackage (finalAttrs: {
pname = "jupyterlite-core";
version = "0.7.6";
pyproject = true;
__structuredAttrs = true;
src = fetchFromGitHub {
owner = "jupyterlite";
repo = "jupyterlite";
tag = "v${finalAttrs.version}";
hash = "sha256-TSy0GUI/7NLsLOayBwZ/raTtOtFgs/t4v1ByytVG960=";
};
sourceRoot = "${finalAttrs.src.name}/py/jupyterlite-core";
build-system = [
hatchling
];
dependencies = [
doit
jupyter-core
pycparser
];
# upstream has no tests
doCheck = false;
pythonImportsCheck = [
"jupyterlite_core"
];
meta = {
description = "Wasm powered Jupyter running in the browser";
homepage = "https://github.com/jupyterlite/jupyterlite";
changelog = "https://github.com/jupyterlite/jupyterlite/blob/${finalAttrs.src.rev}/CHANGELOG.md";
mainProgram = "jupyter-lite";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ eljamm ];
};
})
@@ -0,0 +1,81 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
# build-system
hatchling,
# dependencies
docutils,
jupyter-server,
jupyterlab-server,
jupyterlite-core,
jupytext,
nbformat,
sphinx,
# optional-dependencies
hatch,
myst-parser,
pydata-sphinx-theme,
}:
buildPythonPackage (finalAttrs: {
pname = "jupyterlite-sphinx";
version = "0.22.1";
pyproject = true;
__structuredAttrs = true;
src = fetchFromGitHub {
owner = "jupyterlite";
repo = "jupyterlite-sphinx";
tag = "v${finalAttrs.version}";
hash = "sha256-eww/VyHbAp78Bz2jg43XHmetEDrXEqXK45cnXHElG80=";
};
build-system = [
hatchling
];
dependencies = [
docutils
jupyter-server
jupyterlab-server
jupyterlite-core
finalAttrs.passthru.deps.jupytext
nbformat
sphinx
];
optional-dependencies = {
dev = [
hatch
];
docs = [
#jupyterlite-xeus # missing, but not important
myst-parser
pydata-sphinx-theme
];
};
# upstream has no tests
doCheck = false;
pythonImportsCheck = [
"jupyterlite_sphinx"
];
passthru.deps.jupytext = jupytext.overridePythonAttrs (oldAttrs: {
# FIX: lots of flaky tests
doCheck = false;
});
meta = {
description = "Sphinx extension that integrates JupyterLite within your Sphinx documentation";
homepage = "https://github.com/jupyterlite/jupyterlite-sphinx";
changelog = "https://github.com/jupyterlite/jupyterlite-sphinx/blob/${finalAttrs.src.rev}/CHANGELOG.md";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ eljamm ];
};
})
@@ -0,0 +1,137 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
# build-system
setuptools,
# dependencies
guidata,
makefun,
numpy,
packaging,
pandas,
pywavelets,
scikit-image,
scipy,
typing-extensions,
# optional-dependencies
babel,
build,
coverage,
pre-commit,
pylint,
ruff,
wheel,
matplotlib,
myst-nb,
myst-parser,
opencv-python-headless,
plotpy,
pydata-sphinx-theme,
pyqt5,
qtpy,
sphinx,
sphinx-copybutton,
sphinx-design,
sphinx-gallery,
sphinx-intl,
pytest,
pytest-xvfb,
# tests
pytestCheckHook,
}:
buildPythonPackage (finalAttrs: {
pname = "sigima";
version = "1.1.4";
pyproject = true;
__structuredAttrs = true;
src = fetchFromGitHub {
owner = "DataLab-Platform";
repo = "Sigima";
tag = "v${finalAttrs.version}";
hash = "sha256-AQrUn/WgWZ5W9Lrg4TJjerEZvGDH1wKL2WbeP3sGjrE=";
};
build-system = [
setuptools
];
dependencies = [
guidata
makefun
numpy
packaging
pandas
pywavelets
scikit-image
scipy
typing-extensions
];
optional-dependencies = {
dev = [
babel
build
coverage
pre-commit
pylint
ruff
setuptools
wheel
];
doc = [
matplotlib
myst-nb
myst-parser
opencv-python-headless
plotpy
pydata-sphinx-theme
pyqt5
qtpy
sphinx
sphinx-copybutton
sphinx-design
sphinx-gallery
sphinx-intl
];
opencv = [
opencv-python-headless
];
qt = [
plotpy
pyqt5
qtpy
];
test = [
pytest
pytest-xvfb
];
};
nativeCheckInputs = [
pytestCheckHook
];
pythonRelaxDeps = [
"scipy"
];
pythonImportsCheck = [
"sigima"
];
meta = {
description = "Scientific computing engine for 1D signals and 2D images";
homepage = "https://github.com/DataLab-Platform/Sigima";
changelog = "https://github.com/DataLab-Platform/Sigima/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ eljamm ];
teams = with lib.teams; [ ngi ];
};
})
@@ -0,0 +1,134 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
# build-system
setuptools,
setuptools-scm,
# dependencies
pillow,
sphinx,
# optional-dependencies
absl-py,
graphviz,
intersphinx-registry,
ipython,
joblib,
jupyterlite-sphinx,
lxml,
matplotlib,
mypy,
numpy,
packaging,
plotly,
pydata-sphinx-theme,
pytest,
pytest-cov,
seaborn,
sphinx-design,
statsmodels,
types-docutils,
types-pillow,
memory-profiler,
# tests
pytestCheckHook,
}:
buildPythonPackage (finalAttrs: {
pname = "sphinx-gallery";
version = "0.21.0";
pyproject = true;
__structuredAttrs = true;
src = fetchFromGitHub {
owner = "sphinx-gallery";
repo = "sphinx-gallery";
tag = "v${finalAttrs.version}";
hash = "sha256-eWU2xNnguyXi2AZ/PpBp0Pv3IsgL9wQMyPuQpNbn9cY=";
};
build-system = [
setuptools
setuptools-scm
];
dependencies = [
pillow
sphinx
];
optional-dependencies = {
animations = [
#sphinxcontrib-video
];
dev = [
absl-py
graphviz
intersphinx-registry
ipython
joblib
jupyterlite-sphinx
lxml
matplotlib
mypy
numpy
packaging
plotly
pydata-sphinx-theme
pytest
pytest-cov
seaborn
sphinx-design
#sphinxcontrib-video
statsmodels
types-docutils
types-pillow
#types-pygments
];
jupyterlite = [
jupyterlite-sphinx
];
parallel = [
joblib
];
recommender = [
numpy
];
show-api-usage = [
graphviz
];
show-memory = [
memory-profiler
];
};
nativeCheckInputs = [
pytestCheckHook
]
++ finalAttrs.passthru.optional-dependencies.dev;
# TODO:
disabledTests = [
# requires the sphinxcontrib.video package
"test_dummy_image"
# urllib.error.URLError: <urlopen error [Errno -3] Temporary failure in name resolution>
"test_embed_code_links_get_data"
];
pythonImportsCheck = [
"sphinx_gallery"
];
meta = {
description = "Sphinx extension for automatic generation of an example gallery";
homepage = "https://github.com/sphinx-gallery/sphinx-gallery";
changelog = "https://github.com/sphinx-gallery/sphinx-gallery/blob/${finalAttrs.src.rev}/CHANGES.rst";
mainProgram = "sphinx_gallery_py2jupyter";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ eljamm ];
};
})
+12
View File
@@ -3660,6 +3660,8 @@ self: super: with self; {
protoc = pkgs.protobuf;
};
datalab-platform = callPackage ../development/python-modules/datalab-platform { };
datalad = callPackage ../development/python-modules/datalad { };
datalad-gooey = callPackage ../development/python-modules/datalad-gooey { };
@@ -7747,6 +7749,8 @@ self: super: with self; {
interruptingcow = callPackage ../development/python-modules/interruptingcow { };
intersphinx-registry = callPackage ../development/python-modules/intersphinx-registry { };
intervals = callPackage ../development/python-modules/intervals { };
intervaltree = callPackage ../development/python-modules/intervaltree { };
@@ -8315,6 +8319,10 @@ self: super: with self; {
jupyterlab-widgets = callPackage ../development/python-modules/jupyterlab-widgets { };
jupyterlite-core = callPackage ../development/python-modules/jupyterlite-core { };
jupyterlite-sphinx = callPackage ../development/python-modules/jupyterlite-sphinx { };
jupytext = callPackage ../development/python-modules/jupytext { };
justbackoff = callPackage ../development/python-modules/justbackoff { };
@@ -18053,6 +18061,8 @@ self: super: with self; {
sievelib = callPackage ../development/python-modules/sievelib { };
sigima = callPackage ../development/python-modules/sigima { };
signalrcore = callPackage ../development/python-modules/signalrcore { };
signalslot = callPackage ../development/python-modules/signalslot { };
@@ -18615,6 +18625,8 @@ self: super: with self; {
sphinx-fortran = callPackage ../development/python-modules/sphinx-fortran { };
sphinx-gallery = callPackage ../development/python-modules/sphinx-gallery { };
sphinx-inline-tabs = callPackage ../development/python-modules/sphinx-inline-tabs { };
sphinx-intl = callPackage ../development/python-modules/sphinx-intl { };