diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 1583d20f7b17..c657501c73cd 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -11058,6 +11058,13 @@ githubId = 26806; name = "Scott Olson"; }; + SomeoneSerge = { + email = "sergei.kozlukov@aalto.fi"; + matrix = "@ss:someonex.net"; + github = "SomeoneSerge"; + githubId = 9720532; + name = "Sergei K"; + }; sondr3 = { email = "nilsen.sondre@gmail.com"; github = "sondr3"; diff --git a/pkgs/development/python-modules/cachey/default.nix b/pkgs/development/python-modules/cachey/default.nix new file mode 100644 index 000000000000..aff819adcad8 --- /dev/null +++ b/pkgs/development/python-modules/cachey/default.nix @@ -0,0 +1,30 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, typing-extensions +, heapdict +, pytestCheckHook +, pythonOlder +}: buildPythonPackage rec { + pname = "cachey"; + version = "0.2.1"; + format = "setuptools"; + disabled = pythonOlder "3.6"; + src = fetchFromGitHub { + owner = "dask"; + repo = pname; + rev = version; + sha256 = "sha256-5USmuufrrWtmgibpfkjo9NtgN30hdl8plJfythmxM4s="; + }; + propagatedBuildInputs = [ typing-extensions heapdict ]; + checkInputs = [ pytestCheckHook ]; + pythonImportsCheck = [ + "cachey" + ]; + meta = with lib; { + description = "Caching based on computation time and storage space"; + homepage = "https://github.com/dask/cachey/"; + license = licenses.bsd3; + maintainers = with maintainers; [ SomeoneSerge ]; + }; +} diff --git a/pkgs/development/python-modules/docstring-parser/default.nix b/pkgs/development/python-modules/docstring-parser/default.nix new file mode 100644 index 000000000000..5408b11c7d8a --- /dev/null +++ b/pkgs/development/python-modules/docstring-parser/default.nix @@ -0,0 +1,27 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, setuptools +, setuptools-scm +, wheel +, pytest +}: buildPythonPackage rec { + pname = "docstring-parser"; + version = "0.12"; + src = fetchFromGitHub { + owner = "rr-"; + repo = "docstring_parser"; + rev = "${version}"; + sha256 = "sha256-hQuPJQrGvDs4dJrMLSR4sSnqy45xrF2ufinBG+azuCg="; + }; + nativeBuildInputs = [ setuptools-scm ]; + propagatedBuildInputs = [ pytest setuptools wheel ]; + SETUPTOOLS_SCM_PRETEND_VERSION = version; + + meta = with lib; { + description = "Parse Python docstrings in various flavors. "; + homepage = "https://github.com/rr-/docstring_parser"; + license = licenses.mit; + maintainers = with maintainers; [ SomeoneSerge ]; + }; +} diff --git a/pkgs/development/python-modules/magicgui/default.nix b/pkgs/development/python-modules/magicgui/default.nix new file mode 100644 index 000000000000..03ca9d791597 --- /dev/null +++ b/pkgs/development/python-modules/magicgui/default.nix @@ -0,0 +1,33 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, setuptools-scm +, pytestCheckHook +, pytest-mypy-plugins +, typing-extensions +, qtpy +, pyside2 +, psygnal +, docstring-parser +}: buildPythonPackage rec { + pname = "magicgui"; + version = "0.3.0"; + src = fetchFromGitHub { + owner = "napari"; + repo = "magicgui"; + rev = "v${version}"; + sha256 = "sha256-DvL1szk2RoCrpisjp0BVNL6qFZtYc2oYDenX59Cxbug="; + }; + nativeBuildInputs = [ setuptools-scm ]; + propagatedBuildInputs = [ typing-extensions qtpy pyside2 psygnal docstring-parser ]; + checkInputs = [ pytestCheckHook pytest-mypy-plugins ]; + doCheck = false; # Reports "Fatal Python error" + SETUPTOOLS_SCM_PRETEND_VERSION = version; + + meta = with lib; { + description = "Build GUIs from python functions, using magic. (napari/magicgui)"; + homepage = "https://github.com/napari/magicgui"; + license = licenses.mit; + maintainers = with maintainers; [ SomeoneSerge ]; + }; +} diff --git a/pkgs/development/python-modules/napari-console/default.nix b/pkgs/development/python-modules/napari-console/default.nix new file mode 100644 index 000000000000..f809587f75f2 --- /dev/null +++ b/pkgs/development/python-modules/napari-console/default.nix @@ -0,0 +1,33 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, setuptools-scm +, pytestCheckHook +, pytest +, ipython +, ipykernel +, qtconsole +, napari-plugin-engine +, imageio +}: buildPythonPackage rec { + pname = "napari-console"; + version = "0.0.4"; + src = fetchFromGitHub { + owner = "napari"; + repo = pname; + rev = "v${version}"; + sha256 = "sha256-aVdYOzkZ+dqB680oDjNCg6quXU+QgUZI09E/MSTagyA="; + }; + nativeBuildInputs = [ setuptools-scm ]; + # setup.py somehow requires pytest + propagatedBuildInputs = [ pytest ipython ipykernel napari-plugin-engine imageio qtconsole ]; + chechInputs = [ pytestCheckHook ]; + SETUPTOOLS_SCM_PRETEND_VERSION = version; + + meta = with lib; { + description = "A plugin that adds a console to napari"; + homepage = "https://github.com/napari/napari-console"; + license = licenses.bsd3; + maintainers = with maintainers; [ SomeoneSerge ]; + }; +} diff --git a/pkgs/development/python-modules/napari-plugin-engine/default.nix b/pkgs/development/python-modules/napari-plugin-engine/default.nix new file mode 100644 index 000000000000..802b25e8df14 --- /dev/null +++ b/pkgs/development/python-modules/napari-plugin-engine/default.nix @@ -0,0 +1,26 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, setuptools-scm +, pytestCheckHook +}: buildPythonPackage rec { + pname = "napari-plugin-engine"; + version = "0.2.0"; + src = fetchFromGitHub { + owner = "napari"; + repo = pname; + rev = "v${version}"; + sha256 = "sha256-cKpCAEYYRq3UPje7REjzhEe1J9mmrtXs8TBnxWukcNE="; + }; + nativeBuildInputs = [ setuptools-scm ]; + checkInputs = [ pytestCheckHook ]; + doCheck = false; + SETUPTOOLS_SCM_PRETEND_VERSION = version; + + meta = with lib; { + description = "A fork of pluggy for napari - plugin management package"; + homepage = "https://github.com/napari/napari-plugin-engine"; + license = licenses.mit; + maintainers = with maintainers; [ SomeoneSerge ]; + }; +} diff --git a/pkgs/development/python-modules/napari-svg/default.nix b/pkgs/development/python-modules/napari-svg/default.nix new file mode 100644 index 000000000000..89101e824445 --- /dev/null +++ b/pkgs/development/python-modules/napari-svg/default.nix @@ -0,0 +1,30 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, setuptools-scm +, pytestCheckHook +, vispy +, napari-plugin-engine +, imageio +}: buildPythonPackage rec { + pname = "napari-svg"; + version = "0.1.5"; + src = fetchFromGitHub { + owner = "napari"; + repo = pname; + rev = "v${version}"; + sha256 = "sha256-20NLi6JTugP+hxqF2AnhSkuvhkGGbeG+tT3M2SZbtRc="; + }; + nativeBuildInputs = [ setuptools-scm ]; + propagatedBuildInputs = [ vispy napari-plugin-engine imageio ]; + checkInputs = [ pytestCheckHook ]; + doCheck = false; # Circular dependency: napari + SETUPTOOLS_SCM_PRETEND_VERSION = version; + + meta = with lib; { + description = "A plugin for writing svg files from napari"; + homepage = "https://github.com/napari/napari-svg"; + license = licenses.bsd3; + maintainers = with maintainers; [ SomeoneSerge ]; + }; +} diff --git a/pkgs/development/python-modules/napari/default.nix b/pkgs/development/python-modules/napari/default.nix new file mode 100644 index 000000000000..74936da4f725 --- /dev/null +++ b/pkgs/development/python-modules/napari/default.nix @@ -0,0 +1,75 @@ +{ lib +, mkDerivationWith +, buildPythonPackage +, fetchFromGitHub +, setuptools-scm +, superqt +, typing-extensions +, tifffile +, napari-plugin-engine +, pint +, pyyaml +, numpydoc +, dask +, magicgui +, docstring-parser +, appdirs +, imageio +, pyopengl +, cachey +, napari-svg +, psutil +, napari-console +, wrapt +, pydantic +, tqdm +, jsonschema +, scipy +, wrapQtAppsHook +}: mkDerivationWith buildPythonPackage rec { + pname = "napari"; + version = "0.4.12"; + src = fetchFromGitHub { + owner = "napari"; + repo = pname; + rev = "v${version}"; + sha256 = "sha256-0QSI0mgDjF70/X58fE7uWwlBUCGY5gsvbCm4oJkp2Yk="; + }; + nativeBuildInputs = [ setuptools-scm wrapQtAppsHook ]; + propagatedBuildInputs = [ + napari-plugin-engine + cachey + napari-svg + napari-console + superqt + magicgui + typing-extensions + tifffile + pint + pyyaml + numpydoc + dask + docstring-parser + appdirs + imageio + pyopengl + psutil + wrapt + pydantic + tqdm + jsonschema + scipy + ]; + SETUPTOOLS_SCM_PRETEND_VERSION = version; + dontUseSetuptoolsCheck = true; + postFixup = '' + wrapQtApp $out/bin/napari + ''; + + meta = with lib; { + description = "A fast, interactive, multi-dimensional image viewer for python"; + homepage = "https://github.com/napari/napari"; + license = licenses.bsd3; + maintainers = with maintainers; [ SomeoneSerge ]; + }; +} diff --git a/pkgs/development/python-modules/psygnal/default.nix b/pkgs/development/python-modules/psygnal/default.nix new file mode 100644 index 000000000000..6ac20798e0c0 --- /dev/null +++ b/pkgs/development/python-modules/psygnal/default.nix @@ -0,0 +1,35 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, wheel +, setuptools +, setuptools-scm +, pytestCheckHook +, pytest-mypy-plugins +, pytest-cov +, pytest +, mypy +, typing-extensions +}: buildPythonPackage rec +{ + pname = "psygnal"; + version = "0.2.0"; + src = fetchFromGitHub { + owner = "tlambert03"; + repo = pname; + rev = "v${version}"; + sha256 = "sha256-SiG2ywNEw3aNrRXyEMFTnvHKtKowO8yqoCaNI8PT4/Y="; + }; + buildInputs = [ setuptools-scm ]; + propagatedBuildInputs = [ typing-extensions ]; + checkInputs = [ pytestCheckHook pytest-cov pytest-mypy-plugins ]; + doCheck = false; # mypy checks are failing + SETUPTOOLS_SCM_PRETEND_VERSION = version; + + meta = with lib; { + description = "Pure python implementation of Qt Signals"; + homepage = "https://github.com/tlambert03/psygnal"; + license = licenses.bsd3; + maintainers = with maintainers; [ SomeoneSerge ]; + }; +} diff --git a/pkgs/development/python-modules/pytest-mypy-plugins/default.nix b/pkgs/development/python-modules/pytest-mypy-plugins/default.nix new file mode 100644 index 000000000000..38b2168e13fd --- /dev/null +++ b/pkgs/development/python-modules/pytest-mypy-plugins/default.nix @@ -0,0 +1,29 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, chevron +, pyyaml +, mypy +, pytest +, decorator +, regex +}: + +buildPythonPackage rec { + pname = "pytest-mypy-plugins"; + version = "1.9.2"; + src = fetchFromGitHub { + owner = "typeddjango"; + repo = pname; + rev = version; + sha256 = "sha256-Me5P4Q2M+gGEWlUVgQ0L048rVUOlUzVMgZZcqZPeE4Q="; + }; + propagatedBuildInputs = [ chevron pyyaml mypy pytest decorator regex ]; + + meta = with lib; { + description = "pytest plugin for testing mypy types, stubs, and plugins"; + homepage = "https://github.com/TypedDjango/pytest-mypy-plugins"; + license = licenses.mit; + maintainers = with maintainers; [ SomeoneSerge ]; + }; +} diff --git a/pkgs/development/python-modules/superqt/default.nix b/pkgs/development/python-modules/superqt/default.nix new file mode 100644 index 000000000000..9890a7000a9a --- /dev/null +++ b/pkgs/development/python-modules/superqt/default.nix @@ -0,0 +1,31 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, setuptools-scm +, pyqt5 +, typing-extensions +, pytest +, pytestCheckHook +}: buildPythonPackage rec { + pname = "superqt"; + version = "0.2.5-1"; + src = fetchFromGitHub { + owner = "napari"; + repo = pname; + rev = "v${version}"; + sha256 = "sha256-rkTiCJ8mIogS9SDmLPiaAyhhuBx3kk6rXjCc19zbwiM="; + }; + format = "pyproject"; + nativeBuildInputs = [ setuptools-scm ]; + propagatedBuildInputs = [ pyqt5 typing-extensions ]; + checkInputs = [ pytestCheckHook pytest ]; + doCheck = false; # Segfaults... + SETUPTOOLS_SCM_PRETEND_VERSION = version; + + meta = with lib; { + description = "Missing widgets and components for Qt-python (napari/superqt)"; + homepage = "https://github.com/napari/superqt"; + license = licenses.bsd3; + maintainers = with maintainers; [ SomeoneSerge ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f8d0fbb4d8a0..4ec320af5a2f 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -30121,6 +30121,8 @@ with pkgs; masari = callPackage ../applications/blockchains/masari { boost = boost165; }; + napari = with python3Packages; toPythonApplication napari; + nano-wallet = libsForQt5.callPackage ../applications/blockchains/nano-wallet { boost = boost172; }; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index daafc6cde526..fae8daecada7 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -1396,6 +1396,8 @@ in { cachetools = callPackage ../development/python-modules/cachetools { }; + cachey = callPackage ../development/python-modules/cachey { }; + cachy = callPackage ../development/python-modules/cachy { }; cadquery = callPackage ../development/python-modules/cadquery { @@ -2351,6 +2353,8 @@ in { docstring-to-markdown = callPackage ../development/python-modules/docstring-to-markdown { }; + docstring-parser = callPackage ../development/python-modules/docstring-parser { }; + docopt = callPackage ../development/python-modules/docopt { }; docopt-ng = callPackage ../development/python-modules/docopt-ng { }; @@ -4731,6 +4735,8 @@ in { magic = callPackage ../development/python-modules/magic { }; + magicgui = callPackage ../development/python-modules/magicgui { }; + magic-wormhole = callPackage ../development/python-modules/magic-wormhole { }; magic-wormhole-mailbox-server = callPackage ../development/python-modules/magic-wormhole-mailbox-server { }; @@ -5204,6 +5210,16 @@ in { nanotime = callPackage ../development/python-modules/nanotime { }; + napari = callPackage ../development/python-modules/napari { + inherit (pkgs.libsForQt5) mkDerivationWith wrapQtAppsHook; + }; + + napari-console = callPackage ../development/python-modules/napari-console { }; + + napari-plugin-engine = callPackage ../development/python-modules/napari-plugin-engine { }; + + napari-svg = callPackage ../development/python-modules/napari-svg { }; + nassl = callPackage ../development/python-modules/nassl { }; nats-python = callPackage ../development/python-modules/nats-python { }; @@ -6289,6 +6305,8 @@ in { psycopg2cffi = callPackage ../development/python-modules/psycopg2cffi { }; + psygnal = callPackage ../development/python-modules/psygnal { }; + ptable = callPackage ../development/python-modules/ptable { }; ptest = callPackage ../development/python-modules/ptest { }; @@ -7639,6 +7657,8 @@ in { pytest-mypy = callPackage ../development/python-modules/pytest-mypy { }; + pytest-mypy-plugins = callPackage ../development/python-modules/pytest-mypy-plugins { }; + pytest-openfiles = callPackage ../development/python-modules/pytest-openfiles { }; pytest-order = callPackage ../development/python-modules/pytest-order { }; @@ -9369,6 +9389,8 @@ in { supervisor = callPackage ../development/python-modules/supervisor { }; + superqt = callPackage ../development/python-modules/superqt { }; + sure = callPackage ../development/python-modules/sure { }; surepy = callPackage ../development/python-modules/surepy { };