1{ lib 2, stdenv 3, buildPythonPackage 4, fetchFromGitHub 5, gitpython 6, isort 7, jupyter-client 8, jupyter-packaging 9, jupyterlab 10, markdown-it-py 11, mdit-py-plugins 12, nbformat 13, notebook 14, pytestCheckHook 15, pythonOlder 16, pyyaml 17, setuptools 18, toml 19, wheel 20}: 21 22buildPythonPackage rec { 23 pname = "jupytext"; 24 version = "1.15.2"; 25 format = "pyproject"; 26 27 disabled = pythonOlder "3.6"; 28 29 src = fetchFromGitHub { 30 owner = "mwouts"; 31 repo = pname; 32 rev = "refs/tags/v${version}"; 33 hash = "sha256-GvMoz2BsYWk0atrT3xmSnbV7AuO5RJoM/bOJlZ5YIn4="; 34 }; 35 36 # Follow https://github.com/mwouts/jupytext/pull/1119 to see if the patch 37 # relaxing jupyter_packaging version can be cleaned up. 38 # 39 # Follow https://github.com/mwouts/jupytext/pull/1077 to see when the patch 40 # relaxing jupyterlab version can be cleaned up. 41 # 42 postPatch = '' 43 substituteInPlace pyproject.toml \ 44 --replace 'jupyter_packaging~=' 'jupyter_packaging>=' \ 45 --replace 'jupyterlab>=3,<=4' 'jupyterlab>=3' 46 ''; 47 48 nativeBuildInputs = [ 49 jupyter-packaging 50 jupyterlab 51 setuptools 52 wheel 53 ]; 54 55 propagatedBuildInputs = [ 56 markdown-it-py 57 mdit-py-plugins 58 nbformat 59 pyyaml 60 toml 61 ]; 62 63 nativeCheckInputs = [ 64 gitpython 65 isort 66 jupyter-client 67 notebook 68 pytestCheckHook 69 ]; 70 71 preCheck = '' 72 # Tests that use a Jupyter notebook require $HOME to be writable 73 export HOME=$(mktemp -d); 74 ''; 75 76 pytestFlagsArray = [ 77 # Pre-commit tests expect the source directory to be a Git repository 78 "--ignore-glob='tests/test_pre_commit_*.py'" 79 ]; 80 81 disabledTests = [ 82 "test_apply_black_through_jupytext" # we can't do anything about ill-formatted notebooks 83 ] ++ lib.optionals stdenv.isDarwin [ 84 # requires access to trash 85 "test_load_save_rename" 86 ]; 87 88 pythonImportsCheck = [ 89 "jupytext" 90 "jupytext.cli" 91 ]; 92 93 meta = with lib; { 94 description = "Jupyter notebooks as Markdown documents, Julia, Python or R scripts"; 95 homepage = "https://github.com/mwouts/jupytext"; 96 changelog = "https://github.com/mwouts/jupytext/releases/tag/${src.rev}"; 97 license = licenses.mit; 98 maintainers = teams.jupyter.members; 99 }; 100}