1{
2 lib,
3 buildPythonPackage,
4 fetchPypi,
5
6 # build-system
7 hatchling,
8
9 # dependencies
10 click,
11 docutils,
12 itsdangerous,
13 jedi,
14 markdown,
15 narwhals,
16 packaging,
17 psutil,
18 pygments,
19 pymdown-extensions,
20 ruff,
21 starlette,
22 tomlkit,
23 uvicorn,
24 websockets,
25 pyyaml,
26
27 # tests
28 versionCheckHook,
29}:
30
31buildPythonPackage rec {
32 pname = "marimo";
33 version = "0.9.27";
34 pyproject = true;
35
36 # The github archive does not include the static assets
37 src = fetchPypi {
38 inherit pname version;
39 hash = "sha256-vs1miLjM/xRrnFYpHte65CfDt4ZRoCKjFMClWukIWZY=";
40 };
41
42 build-system = [ hatchling ];
43
44 pythonRelaxDeps = [ "websockets" ];
45
46 dependencies = [
47 click
48 docutils
49 itsdangerous
50 jedi
51 markdown
52 narwhals
53 packaging
54 psutil
55 pygments
56 pymdown-extensions
57 ruff
58 starlette
59 tomlkit
60 uvicorn
61 websockets
62 pyyaml
63 ];
64
65 pythonImportsCheck = [ "marimo" ];
66
67 # The pypi archive does not contain tests so we do not use `pytestCheckHook`
68 nativeCheckInputs = [
69 versionCheckHook
70 ];
71 versionCheckProgramArg = [ "--version" ];
72
73 meta = {
74 description = "Reactive Python notebook that's reproducible, git-friendly, and deployable as scripts or apps";
75 homepage = "https://github.com/marimo-team/marimo";
76 changelog = "https://github.com/marimo-team/marimo/releases/tag/${version}";
77 license = lib.licenses.asl20;
78 mainProgram = "marimo";
79 maintainers = with lib.maintainers; [
80 akshayka
81 dmadisetti
82 ];
83 };
84}