snakemake/snakemake.spec
Benjamin A. Beasley bd2da15e72 Move the description lower in the spec file
[skip changelog]
2025-06-12 11:30:27 -04:00

576 lines
24 KiB
RPMSpec
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

%global _with_bootstrap 1
# Work around a series of circular test dependencies:
#
# python-snakemake-interface-report-plugins
# ↓↑ ⬐───╮
# snakemake → python-snakemake-interface-executor-plugins⬎
# ↑↑↑ │ ⬑────────────────────python-snakemake-executor-plugin-cluster-generic
# │││ ↳python-snakemake-interface-storage-plugins─────────────────╮
# │││ ↓────────────────╮│
# ││╰────────────────────────python-snakemake-storage-plugin-http││
# │╰─────────────────────────python-snakemake-storage-plugin-s3🠔─╯│
# ╰──────────────────────────python-snakemake-storage-plugin-fs🠔──╯
#
# A good build order is:
#
# 1. BOOTSTRAP: python-snakemake-interface-executor-plugins,
# python-snakemake-interface-storage-plugins,
# python-snakemake-interface-report-plugins
# 2. BOOTSTRAP: snakemake
# 3. python-snakemake-executor-plugin-cluster-generic,
# python-snakemake-storage-plugin-http,
# python-snakemake-storage-plugin-s3,
# python-snakemake-storage-plugin-fs
# 4. snakemake, python-snakemake-interface-executor-plugins,
# python-snakemake-interface-storage-plugins,
# python-snakemake-interface-report-plugins
%bcond bootstrap 0
%bcond tests %{without bootstrap}
# Run tests that require network access? This only makes sense for local mock
# builds in combination with --enable-network.
%bcond network_tests 0
# Almost all of the conda tests require network access, but there are also
# other failures that are not straightforward to understand.
%bcond conda_tests 0
# F43FailsToInstall: python3-google-cloud-storage
# https://bugzilla.redhat.com/show_bug.cgi?id=2371928
%bcond gcs_tests 0
Name: snakemake
Version: 9.5.1
Release: %autorelease
Summary: Workflow management system to create reproducible and scalable data analyses
# The primary license for Snakemake is MIT; web assets contribute a variety of
# other licenses.
#
# Apache-2.0 AND BSD-2-Clause AND BSD-3-CLause AND ISC AND MIT AND MIT-0:
# - src/snakemake/assets/data/vega/vega.js
#
# BSD-3-Clause AND MIT:
# - src/snakemake/assets/data/vega-lite/vega-lite.js
#
# BSD-3-Clause AND ISC AND MIT:
# - src/snakemake/assets/data/vega-embed/vega-embed.js
#
# MIT:
# - All Snakemake code unless otherwise noted
# - heroicons: It is unclear if anything derived from heroicons is actually
# present in the package, but upstream carries a copy of its license file, so
# we mention the possibility.
# - src/snakemake/assets/data/prop-types/prop-types.min.js
# - src/snakemake/assets/data/tailwindcss/tailwind.css
#
# == License breakdown: src/snakemake/assets/data/vega/vega.js ==
#
# The primary license for npm(vega) is BSD-3-Clause. The bundle contains:
#
# Apache-2.0:
# - apache-commons-math, from which an implementation of erfinv is derived
# BSD-2-Clause:
# - npm(esprima), bundled as a copied, derived, or adapted snippet
# BSD-3-Clause:
# - npm(vega) and various npm(vega-*) libraries
# - npm(d3-contour), bundled as a copied, derived, or adapted snippet
# - npm(d3-regression), bundled as a copied, derived, or adapted snippet
# - npm(science), bundled as a copied, derived, or adapted snippet
# - npm(shapefile), bundled as a copied, derived, or adapted snippet
# ISC:
# - various npm(d3-*) libraries
# - npm(delaunator)
# - npm(quickselect)
# - npm(topojson-client)
# ISC AND MIT:
# - npm(d3-geo) (MIT is due to some code being derived from GeographicLib)
# - npm(d3-geo-projection) (MIT is due to some code being derived from
# https://github.com/scijs/integrate-adaptive-simpson)
# MIT:
# - npm(@types/estree)
# - npm(hashlru), bundled as a copied, derived, or adapted snippet
# - npm(regression), bundled as a copied, derived, or adapted snippet
# MIT-0:
# - npm(fabric), bundled as a copied, derived, or adapted snippet
#
# == License breakdown: src/snakemake/assets/data/vega-lite/vega-lite.js ==
#
# The primary license for npm(vega-lite) is BSD-3-Clause. The bundle contains:
#
# BSD-3-Clause:
# - npm(vega-lite) and various npm(vega-*) libraries
# MIT:
# - npm(@types/clone)
# - npm(@types/estree)
# - npm(clone)
# - npm(fast-deep-equal)
# - npm(fast-json-stable-stringify)
# - npm(hashlru), bundled as a copied, derived, or adapted snippet
# - npm(json-stringify-pretty-compact)
#
# == License breakdown: src/snakemake/assets/data/vega-embed/vega-embed.js ==
#
# The primary license for npm(vega-embed) is BSD-3-Clause. The bundle contains:
#
# BSD-3-Clause:
# - npm(vega-embed) and various npm(vega-*) libraries
# ISC:
# - npm(semver)
# MIT:
# - npm(fast-json-patch)
# - npm(json-stringify-pretty-compact)
License: %{shrink:
Apache-2.0 AND
BSD-2-Clause AND
BSD-3-Clause AND
ISC AND
MIT AND
MIT-0
}
URL: https://snakemake.readthedocs.io/en/stable/index.html
%global forgeurl https://github.com/snakemake/snakemake
# We could use the PyPI sdist, which already contains the HTML report assets,
# but we would lose at least the vim extensions and changelog, and we would
# have to nontrivially modify the sdist to remove a CC0-1.0-licensed polyfill
# before uploading it to the lookaside cache, so doing so would not be
# meaningfully easier than using the GitHub archive with an additional source
# for the assets.
Source0: %{forgeurl}/archive/v%{version}/snakemake-%{version}.tar.gz
# The assets for HTML reports are normally downloaded in setup.py when creating
# the sdist. We use a script, Source2, executed with no arguments (implicitly
# relying on the spec file in the same directory) to download the assets,
# modify them as necessary, and pack them into an additional source archive.
Source1: snakemake-%{version}-assets.tar.zst
Source2: get_assets
# Downstream-only: adjust the asset metadata in the sources, including
# checksums, for any adjustments that happened in the get_assets script.
#
# When the get_assets script unpacks and patches Source0 in order to use it to
# download assets, it skips this patch, because we need to first fetch the
# original assets in order to then modify them. The signal for this behavior is
# the substring "modified-assets" in the patch name.
Patch: snakemake-9.1.1-modified-assets.patch
# chore: Allow PuLP 3.2
# https://github.com/snakemake/snakemake/pull/3609
Patch: %{forgeurl}/pull/3609.patch
BuildSystem: pyproject
# Generate BRs for all supported extras to ensure they do not FTI
BuildOption(generate_buildrequires): -x reports,messaging
BuildOption(install): -l snakemake
BuildOption(check): %{shrink:
-e '*.tests*'
%{?!with_gcs_tests:-e 'snakemake.executors.google_lifesciences_helper'}
}
BuildArch: noarch
BuildRequires: help2man
# Snakemake uses (unversioned) "python" as the default remote execution
# command. Because remote hosts could be Windows machines, and those are likely
# to lack "python3.exe" (see https://github.com/python/cpython/issues/99185),
# we didnt try to convince upstream to change this. Instead, we (reluctantly)
# just make sure that our own Snakemake installations are compatible by
# depending on python-unversioned-command.
BuildRequires: python-unversioned-command
Requires: python-unversioned-command
BuildRequires: vim-filesystem
Requires: vim-filesystem
# Required for snakemake.script.RScript, snakemake.notebook.RJupyterNotebook
# (Some of the tests in tests/tests_using_conda.py require this.)
BuildRequires: R-core
Recommends: R-core
Provides: vim-snakemake = %{version}-%{release}
# Regarding pre-compiled/pre-minified JavaScript, see:
# - https://pagure.io/fesco/issue/3177
# - https://pagure.io/packaging-committee/pull-request/1370
# Regarding CSS, see:
# - https://pagure.io/fesco/issue/3269
# - https://pagure.io/packaging-committee/pull-request/1402
# Styles from Pygments are bundled in generated HTML reports (thus the presence
# of a Pygments license file), but the styles come from the system
# python3-pygments package and are not actually bundled in this package.
# tailwind.css 3.4.16 is src/snakemake/assets/data/tailwindcss/tailwind.css,
# but we do not normally treat CSS frameworks as bundled dependencies, and it
# is not clear how we should name a virtusl Provides if we added one.
# src/snakemake/assets/data/react/react.production.min.js
Provides: bundled(npm(react)) = 18.2.0
# src/snakemake/assets/data/react/react-dom.production.min.js
Provides: bundled(npm(react-dom)) = 18.2.0
# src/snakemake/assets/data/vega/vega.js
Provides: bundled(npm(vega)) = 5.21.0
# Bundled in src/snakemake/assets/data/vega/vega.js as dependencies:
# For versions of vega-* packages, see:
# https://github.com/vega/vega/blob/v5.21.0/packages
Provides: bundled(npm(vega-crossfilter)) = 4.0.5
Provides: bundled(npm(vega-dataflow)) = 5.7.4
Provides: bundled(npm(vega-encode)) = 4.8.3
Provides: bundled(npm(vega-event-selector)) = 3.0.0
Provides: bundled(npm(vega-expression)) = 5.0.0
Provides: bundled(npm(vega-force)) = 4.0.7
Provides: bundled(npm(vega-format)) = 1.0.4
Provides: bundled(npm(vega-functions)) = 5.12.1
Provides: bundled(npm(vega-geo)) = 4.3.8
Provides: bundled(npm(vega-hierarchy)) = 4.0.9
Provides: bundled(npm(vega-label)) = 1.1.0
Provides: bundled(npm(vega-loader)) = 4.4.1
Provides: bundled(npm(vega-parser)) = 6.1.4
Provides: bundled(npm(vega-projection)) = 1.4.5
Provides: bundled(npm(vega-regression)) = 1.0.9
Provides: bundled(npm(vega-runtime)) = 6.1.3
Provides: bundled(npm(vega-scale)) = 7.1.1
Provides: bundled(npm(vega-scenegraph)) = 4.9.4
Provides: bundled(npm(vega-statistics)) = 5.3.1
Provides: bundled(npm(vega-time)) = 2.0.4
Provides: bundled(npm(vega-transforms)) = 4.9.5
Provides: bundled(npm(vega-typings)) = 0.22.0
Provides: bundled(npm(vega-util)) = 1.17.0
Provides: bundled(npm(vega-view)) = 5.10.1
Provides: bundled(npm(vega-view-transforms)) = 4.5.8
Provides: bundled(npm(vega-voronoi)) = 4.1.5
Provides: bundled(npm(vega-wordcloud)) = 4.1.3
# For these, see notes in src/snakemake/assets/__init__.py.
Provides: bundled(npm(@types/estree)) = 0.0.50
Provides: bundled(npm(d3-array)) = 2.12.1
Provides: bundled(npm(d3-color)) = 2.0.0
Provides: bundled(npm(d3-delaunay)) = 5.2.0
Provides: bundled(npm(d3-dispatch)) = 2.0.0
Provides: bundled(npm(d3-dsv)) = 2.0.0
Provides: bundled(npm(d3-force)) = 2.1.1
Provides: bundled(npm(d3-format)) = 2.0.0
Provides: bundled(npm(d3-geo)) = 2.0.2
Provides: bundled(npm(d3-geo-projection)) = 3.0.0
Provides: bundled(npm(d3-hierarchy)) = 2.0.0
Provides: bundled(npm(d3-interpolate)) = 2.0.1
Provides: bundled(npm(d3-path)) = 2.0.0
Provides: bundled(npm(d3-quadtree)) = 2.0.0
Provides: bundled(npm(d3-scale)) = 3.3.0
Provides: bundled(npm(d3-shape)) = 2.1.0
Provides: bundled(npm(d3-time)) = 2.1.1
Provides: bundled(npm(d3-time-format)) = 3.0.0
Provides: bundled(npm(d3-timer)) = 2.0.0
Provides: bundled(npm(delaunator)) = 4.0.1
Provides: bundled(npm(topojson-client)) = 3.1.0
# Present in src/snakemake/assets/data/vega/vega.js in the form of copied,
# derived, or adapted snippets. See notes in src/snakemake/assets/__init__.py.
# Implementation of erfinv is based on:
Provides: bundled(apache-commons-math) = 3.6.1
# Expression parser is based on:
Provides: bundled(esprima) = 2.2.0
Provides: bundled(fabric) = 2.4.5
Provides: bundled(npm(d3-contour)) = 1.3.2
Provides: bundled(npm(d3-regression)) = 1.2.1
Provides: bundled(npm(hashlru)) = 1.0.4
Provides: bundled(npm(quickselect)) = 2.0.0
Provides: bundled(npm(regression)) = 2.0.1
Provides: bundled(npm(science)) = 1.9.3
Provides: bundled(npm(shapefile)) = 0.6.2
# src/snakemake/assets/data/vega-lite/vega-lite.js
Provides: bundled(npm(vega-lite)) = 5.2.0
# NOTE: Some of the following virtual Provides are commented out. These are
# correct, and need to be considered when determining the license of
# vega-lite.js, but they do not need to be repeated in the spec file because
# they duplicate virtual Provides from vega.js.
#
# Bundled in src/snakemake/assets/data/vega-lite/vega-lite.js as dependencies:
# See notes in src/snakemake/assets/__init__.py.
Provides: bundled(npm(@types/clone)) = 2.1.1
Provides: bundled(npm(clone)) = 2.1.2
Provides: bundled(npm(fast-deep-equal)) = 3.1.3
Provides: bundled(npm(fast-json-stable-stringify)) = 2.1.0
Provides: bundled(npm(json-stringify-pretty-compact)) = 3.0.0
# See notes in src/snakemake/assets/__init__.py, as well as dependencies in
# https://github.com/vega/vega-lite/blob/v5.2.0/package.json, and for versions,
# see https://github.com/vega/vega-lite/blob/v5.2.0/yarn.lock; these correspond
# to those associated with vega 5.2.1.
#Provides: bundled(npm(@types/estree)) = 0.0.50
#Provides: bundled(npm(vega-event-selector)) = 3.0.0
#Provides: bundled(npm(vega-expression)) = 5.0.0
#Provides: bundled(npm(vega-util)) = 1.17.0
# Present in src/snakemake/assets/data/vega-lite/vega-lite.js in the form of
# copied, derived, or adapted snippets. See notes in
# src/snakemake/assets/__init__.py.
#Provides: bundled(npm(hashlru)) = 1.0.4
# src/snakemake/assets/data/vega-embed/vega-embed.js
Provides: bundled(npm(vega-embed)) = 6.20.8
# NOTE: Some of the following virtual Provides are commented out. These are
# correct, and need to be considered when determining the license of
# vega-embed.js, but they do not need to be repeated in the spec file because
# they duplicate virtual Provides from vega.js and/or vega-lite.js.
#
# Bundled in src/snakemake/assets/data/vega-embed/vega-embed.js as
# dependencies:
# See notes in src/snakemake/assets/__init__.py.
Provides: bundled(npm(fast-json-patch)) = 3.1.0
#Provides: bundled(npm(json-stringify-pretty-compact)) = 3.0.0
Provides: bundled(npm(semver)) = 7.3.5
# See notes in src/snakemake/assets/__init__.py, as well as dependencies in
# https://github.com/vega/vega-embed/blob/v6.20.8/package.json, and for
# versions, see https://github.com/vega/vega-embed/blob/v6.20.8/yarn.lock;
# these correspond to those associated with vega 5.2.1.
Provides: bundled(npm(vega-interpreter)) = 1.0.4
Provides: bundled(npm(vega-schema-url-parser)) = 2.2.0
Provides: bundled(npm(vega-themes)) = 2.10.0
Provides: bundled(npm(vega-tooltip)) = 0.28.0
#Provides: bundled(npm(vega-util)) = 1.17.0
# Present in src/snakemake/assets/data/vega-embed/vega-embed.js in the form of
# copied, derived, or adapted snippets. See notes in
# src/snakemake/assets/__init__.py.
#Provides: bundled(npm(hashlru)) = 1.0.4
# _areEquals() is based on:
#Provides: bundled(npm(fast-deep-equal)) = 3.1.3
# It is unclear if anything derived from heroicons is actually present in the
# package, but upstream carries a copy of its license file, so we dutifully add
# the virtual Provides, just in case we have missed something.
Provides: bundled(npm(heroicons)) = 1.0.3
# src/snakemake/assets/data/prop-types/prop-types.min.js
Provides: bundled(npm(prop-types)) = 15.7.2
# These extras were removed upstream in Snakemake 8.0.0. Retain the Obsoletes
# until F40 reaches EOL so we have a clean upgrade path.
Obsoletes: snakemake+azure < 8.1.0-1
Obsoletes: snakemake+google-cloud < 8.1.0-1
# We no longer build Sphinx-generated PDF documentation. Beginning with 8.2.3,
# this would require patching out sphinxawesome-theme from docs/conf.py. Its
# possible but tedious.
Obsoletes: snakemake-doc < 8.2.1-2
%if %{with tests}
# For several tests (either apptainer or singularity-ce should work):
BuildRequires: (apptainer or singularity-ce)
%if %{with conda_tests}
# For tests/tests_using_conda.py
BuildRequires: conda
# For test_conda_pin_file, test_conda_named, test_conda_function
BuildRequires: ripgrep
# For test_script_xsh
BuildRequires: xonsh
%endif
# For test_env_modules:
BuildRequires: environment-modules
# For test_filegraph and test_env_modules, which use dot:
BuildRequires: graphviz
# For test_github_issue1158:
BuildRequires: strace
# For test_benchmark and test_benchmark_jsonl:
BuildRequires: stress-ng
# See test-environment.yml for a listing of test dependencies, along with a lot
# of other cruft.
BuildRequires: %{py3_dist boto3}
BuildRequires: %{py3_dist pandas}
BuildRequires: %{py3_dist pytest}
BuildRequires: %{py3_dist pytest-mock}
BuildRequires: %{py3_dist snakemake-executor-plugin-cluster-generic}
BuildRequires: %{py3_dist snakemake-storage-plugin-http}
BuildRequires: %{py3_dist snakemake-storage-plugin-fs}
BuildRequires: %{py3_dist snakemake-storage-plugin-s3}
%endif
# For import-testing snakemake.gui
BuildRequires: %{py3_dist flask}
%if %{with google_cloud_storage_tests}
# For import-testing snakemake.executors.google_lifesciences_helper:
BuildRequires: %{py3_dist google-cloud-storage}
%endif
%global _description %{expand:
The Snakemake workflow management system is a tool to create reproducible and
scalable data analyses. Workflows are described via a human readable, Python
based language. They can be seamlessly scaled to server, cluster, grid and
cloud environments, without the need to modify the workflow definition.
Finally, Snakemake workflows can entail a description of required software,
which will be automatically deployed to any execution environment.}
%description %_description
# No metapackage for “pep” extra because the following are not packaged:
# - python3-eido
# - python3-peppy
%pyproject_extras_subpkg -n snakemake reports messaging
%prep
%autosetup -n snakemake-%{version} -p1
%setup -q -T -D -a 1 -c -n snakemake-%{version}
# Copy and rename nano and vim extensions readmes for use in the main
# documentation directory.
for editor in nano vim
do
cp -vp "misc/${editor}/README.md" "README-${editor}.md"
done
# The CDN URL for tailwind.css does not deliver a file with a stable checksum,
# so upstream has not recorded a checksum in src/snakemake/assets/__init__.py.
# A consequence of this is that setup.py will *always* re-download
# tailwind.css, even if it is already present, when building an sdist or
# bdist/wheel. Of course, this is not acceptable in an offline build, so we
# record the actual checksum of the tailwind.css file we are packaging.
cat >> src/snakemake/assets/__init__.py <<EOF
# Fedora patch: Upstream does not record a checksum for tailwind.css because
# they report that the CDN URL may serve trivially different copies. Since we
# package a copy of the file, we record the checksum of the actual packaged
# file.
Assets.spec["tailwindcss/tailwind.css"].sha256 = "$(
sha256sum -b src/snakemake/assets/data/tailwindcss/tailwind.css |
awk '{print $1}'
)"
EOF
%generate_buildrequires -p
export SETUPTOOLS_SCM_PRETEND_VERSION='%{version}'
%build -p
export SETUPTOOLS_SCM_PRETEND_VERSION='%{version}'
%install -a
# Fix shebangs (no /usr/env shebangs)
%py3_shebang_fix %{buildroot}%{python3_sitelib} %{buildroot}%{_bindir}
# Remove shebangs from non-executable scripts. The Python script is executable
# in the source tree but will be installed without executable permissions.
sed -r -i '1{/^#!/d}' \
%{buildroot}%{python3_sitelib}/snakemake/executors/jobscript.sh \
%{buildroot}%{python3_sitelib}/snakemake/executors/google_lifesciences_helper.py
# Mark license files in the asset bundle.
sed -r -i 's@^.*/(LICEN[CS]E|NOTICE)[^/]*$@%%license &@' %{pyproject_files}
# We wait until %%install to generate the man page so that we can use the
# proper script entry point. The generated man page is not perfect, but it is
# good enough to be useful.
install -d %{buildroot}%{_mandir}/man1
PATH="${PATH-}:%{buildroot}%{_bindir}" \
PYTHONPATH='%{buildroot}%{python3_sitelib}' \
help2man --no-info --name='%{summary}' snakemake \
> %{buildroot}%{_mandir}/man1/snakemake.1
# Install nano syntax highlighting
install -t '%{buildroot}%{_datadir}/nano' -D -m 0644 -p \
misc/nano/syntax/snakemake.nanorc
# Install vim syntax highlighting
install -d '%{buildroot}%{_datadir}/vim/vimfiles'
cp -vrp misc/vim/* '%{buildroot}%{_datadir}/vim/vimfiles'
find '%{buildroot}%{_datadir}/vim/vimfiles' \
-type f -name 'README.*' -print -delete
%check -a
%if %{with tests}
%if %{without network_tests}
# The following require network access (at least DNS) and pass if it is
# available.
k="${k-}${k+ and }not test_ancient"
k="${k-}${k+ and }not test_dynamic_container"
k="${k-}${k+ and }not test_github_issue78"
k="${k-}${k+ and }not test_issue1083"
k="${k-}${k+ and }not test_issue3361_pass"
k="${k-}${k+ and }not test_keep_local"
k="${k-}${k+ and }not test_modules_prefix"
k="${k-}${k+ and }not test_report_after_run"
k="${k-}${k+ and }not test_retrieve"
k="${k-}${k+ and }not test_shell_exec"
%endif
# These use the s3_storage test fixture, which sets up a server on the local
# loopback interface. For some reason, this does not seem to work in mock, with
# or without network access enabled. It is very likely that this is a quirk of
# the build environment rather than a real issue.
k="${k-}${k+ and }not test_default_storage"
k="${k-}${k+ and }not test_default_storage_local_job"
k="${k-}${k+ and }not test_output_file_cache_storage"
k="${k-}${k+ and }not test_storage"
# The following requires cwltool,
# https://github.com/common-workflow-language/cwltool, which is not packaged.
k="${k-}${k+ and }not test_cwl_singularity"
# The following requires polars, which is not packaged.
k="${k-}${k+ and }not test_params_pickling"
k="${k-}${k+ and }not test_validate"
# The following require the “pep” extra. They might also require network
# access.
k="${k-}${k+ and }not test_modules_peppy"
k="${k-}${k+ and }not test_pep_pathlib"
k="${k-}${k+ and }not test_peppy"
# Flaky; so far, we have not attempted to understand or report this.
#
# FAILED ../tests/tests.py::test_update_flag - AssertionError: wrong result
# produced for file 'test.txt':
# ------found------
# foo
# -----expected-----
# foo
# bar
# -----------------
k="${k-}${k+ and }not test_update_flag"
# Hangs on s390x; we have not attempted to understand or report this, although
# it would be nice to do so. For simplicity, we just skip it on all
# architectures.
k="${k-}${k+ and }not test_github_issue1158"
# Workaround for Python path issues
cd src/
# See discussion in https://github.com/snakemake/snakemake/issues/2961
# regarding running individual tests explicitly rather than letting pytest
# discover them freely, and see the “Running the full test suite” section in
# docs/project_info/contributing.rst for the list of tests that should be run.
# - tests/test_api.py requires network access and S3 credentials
%pytest -v -k "${k-}" ${ignore-} \
../tests/tests.py \
%if %{with conda_tests}
../tests/tests_using_conda.py \
%endif
../tests/test_expand.py \
../tests/test_io.py \
../tests/test_schema.py \
../tests/test_linting.py \
../tests/test_executor_test_suite.py \
../tests/test_internals.py
%endif
%files -f %{pyproject_files}
%doc CHANGELOG.md
%doc README.md
%doc README-nano.md
%doc README-vim.md
%{_bindir}/snakemake
%{_mandir}/man1/snakemake.1*
# This is not owned by the filesystem package, and there is no nano-filesystem
# subpackage, so we co-own the directory to avoid depending on nano.
%dir %{_datadir}/nano/
%{_datadir}/nano/snakemake.nanorc
%{_datadir}/vim/vimfiles/ftdetect/snakemake.vim
%{_datadir}/vim/vimfiles/ftplugin/snakemake/
%{_datadir}/vim/vimfiles/syntax/snakemake.vim
%changelog
%autochangelog