%global giturl https://github.com/mwouts/jupytext #global vsuffix d Name: python-jupytext Version: 1.18.1 Release: %autorelease Summary: Save Jupyter notebooks as text documents or scripts License: MIT URL: https://jupytext.readthedocs.io/ VCS: git:%{giturl}.git Source0: %{giturl}/archive/v%{version}/jupytext-%{version}%{?vsuffix}.tar.gz # Source1 and Source2 created with ./prepare_vendor.sh Source1: jupytext-%{version}-vendor.tar.xz Source2: jupytext-%{version}-vendor-licenses.txt Source3: prepare_vendor.sh # s390x builds fail due to a bug in jupyterlab # https://bugzilla.redhat.com/show_bug.cgi?id=2278011 # ppc64le builds fail due to lack of a binary builder ExclusiveArch: %{x86_64} %{arm64} noarch BuildArch: noarch BuildSystem: pyproject BuildOption(generate_buildrequires): -x docs,test,test-functional,test-integration BuildOption(install): -l jupytext jupytext_config BuildRequires: gcc-c++ BuildRequires: help2man BuildRequires: make BuildRequires: nodejs-devel BuildRequires: nodejs-npm BuildRequires: pandoc # Temporary workaround for https://bugzilla.redhat.com/show_bug.cgi?id=2275382 BuildRequires: nodejs-full-i18n %global _desc %{expand:Have you always wished Jupyter notebooks were plain text documents? Wished you could edit them in your favorite IDE? And get clear and meaningful diffs when doing version control? Then... Jupytext may well be the tool you're looking for! Jupytext is a plugin for Jupyter that can save Jupyter notebooks as - Markdown files (or MyST Markdown files, or R Markdown or Quarto text notebooks) - Scripts in many languages. Common use cases for Jupytext are: - Doing version control on Jupyter Notebooks - Editing, merging or refactoring notebooks in your favorite text editor - Applying Q&A checks on notebooks.} %description %_desc %package -n python3-jupytext Summary: %{summary} # Filesystem package for the standard Jupyter paths Requires: python-jupyter-filesystem %description -n python3-jupytext %_desc %package -n python3-jupyterlab-jupytext # The jupytext project is released under the MIT license. Bundled JavaScript: # base64-js: MIT # buffer: MIT # ieee754: BSD-3-Clause # jupyterlab-rise: BSD-3-Clause License: MIT AND BSD-3-Clause Summary: Jupyterlab extension to invoke jupytext Requires: python3-jupytext = %{version}-%{release} Requires: jupyterlab >= 4.0 Provides: bundled(npm(base64-js)) = 1.5.1 Provides: bundled(npm(buffer)) = 6.0.3 Provides: bundled(npm(ieee754)) = 1.2.1 Provides: bundled(npm(jupyterlab-rise)) = 0.43.1 %description -n python3-jupyterlab-jupytext %_desc %package doc # The content is MIT. Other licenses are due to Sphinx files. # _static/alabaster.css: BSD-3-Clause # _static/basic.css: BSD-2-Clause # _static/check-solid.svg: MIT # _static/clipboard.min.js: MIT # _static/copy-button.svg: MIT # _static/copybutton.css: MIT # _static/copybutton.js: MIT # _static/copybutton_funcs.js: MIT # _static/custom.css: BSD-3-Clause # _static/doctools.js: BSD-2-Clause # _static/documentation_options.js: BSD-2-Clause # _static/file.png: BSD-2-Clause # _static/language_data.js: BSD-2-Clause # _static/logo.svg: MIT # _static/minus.png: BSD-2-Clause # _static/plus.png: BSD-2-Clause # _static/pygments.css: MIT # _static/searchtools.js: BSD-2-Clause # _static/sphinx_highlight.js: BSD-2-Clause # genindex.html: BSD-2-Clause # search.html: BSD-2-Clause # searchindex.js: BSD-2-Clause License: MIT AND BSD-3-Clause AND BSD-2-Clause Summary: Documentation for %{name} %description doc Documentation for %{name}. %prep %autosetup -n jupytext-%{version} -p1 tar -C jupyterlab -xf %{SOURCE1} cp -p %{SOURCE2} . # Remove spurious executable bits chmod a-x README.md # Take this package out of the doc requirements sed -i '/jupytext/d' docs/doc-requirements.txt # Take this package out of the test requirements sed -ri '/jupytext\[test(-functional)?\]/d' pyproject.toml %generate_buildrequires -p export HATCH_BUILD_HOOKS_ENABLE=true %build -p export HATCH_BUILD_HOOKS_ENABLE=true export YARN_CACHE_FOLDER="$PWD/jupyterlab/.package-cache" export npm_config_nodedir=%{_includedir}/node export CFLAGS='%{build_cflags} -I%{_includedir}/node' export CXXFLAGS='%{build_cxxflags} -I%{_includedir}/node' %build -a # Build the documentation PYTHONPATH=$PWD %make_build -C docs html rm docs/_build/html/.buildinfo %install -p export HATCH_BUILD_HOOKS_ENABLE=true %install -a # Cleanup backup files find %{buildroot}%{_prefix} -name \*.orig -delete # Move the configuration files to the standard Jupyter directories mv %{buildroot}%{_prefix}%{_sysconfdir} %{buildroot}%{_sysconfdir} # Link rather than copy the labextension rm -fr %{buildroot}%{python3_sitelib}/jupyterlab_jupytext/labextension ln -s %{_datadir}/jupyter/labextensions/jupyterlab-jupytext \ %{buildroot}%{python3_sitelib}/jupyterlab_jupytext/labextension # Generate man pages mkdir -p %{buildroot}%{_mandir}/man1 export PYTHONPATH=%{buildroot}%{python3_sitelib} help2man -N -n 'Save Jupyter notebooks as text documents or scripts' \ %{buildroot}%{_bindir}/jupytext -o %{buildroot}%{_mandir}/man1/jupytext.1 help2man -N -n 'Manage jupytext configuration' --version-string=%{version} \ %{buildroot}%{_bindir}/jupytext-config \ -o %{buildroot}%{_mandir}/man1/jupytext-config.1 %check # Skip the external tests, which require network access %pytest --ignore=tests/external %files -n python3-jupytext -f %{pyproject_files} %doc README.md %{_bindir}/jupytext %{_bindir}/jupytext-config %{_mandir}/man1/jupytext.1* %{_mandir}/man1/jupytext-config.1* %config(noreplace) %{_sysconfdir}/jupyter/jupyter_notebook_config.d/jupytext.json %config(noreplace) %{_sysconfdir}/jupyter/jupyter_server_config.d/jupytext.json %files -n python3-jupyterlab-jupytext %{python3_sitelib}/jupyterlab_jupytext/ %{_datadir}/jupyter/labextensions/jupyterlab-jupytext/ %files doc %doc docs/_build/html %license LICENSE jupytext-%{version}-vendor-licenses.txt %changelog %autochangelog