Compare commits

..

No commits in common. "rawhide" and "f42" have entirely different histories.

10 changed files with 892 additions and 256 deletions

74
.gitignore vendored
View file

@ -65,77 +65,3 @@
/snakemake-8.18.2.tar.gz
/snakemake-8.30.0.tar.gz
/snakemake-8.30.0-assets.tar.zst
/snakemake-9.3.3.tar.gz
/snakemake-9.3.3-assets.tar.zst
/snakemake-9.3.4.tar.gz
/snakemake-9.3.4-assets.tar.zst
/snakemake-9.4.0.tar.gz
/snakemake-9.4.0-assets.tar.zst
/snakemake-9.5.1.tar.gz
/snakemake-9.5.1-assets.tar.zst
/snakemake-6dee2b55fbfff3bdad33cecdbeb8bd55ff4586bc.tar.gz
/snakemake-6dee2b55fbfff3bdad33cecdbeb8bd55ff4586bc-assets.tar.zst
/snakemake-9.6.1.tar.gz
/snakemake-9.6.1-assets.tar.zst
/snakemake-9.6.2.tar.gz
/snakemake-9.6.2-assets.tar.zst
/snakemake-9.7.1.tar.gz
/snakemake-9.7.1-assets.tar.zst
/snakemake-9.8.0.tar.gz
/snakemake-9.8.0-assets.tar.zst
/snakemake-9.8.1.tar.gz
/snakemake-9.8.1-assets.tar.zst
/snakemake-9.8.2.tar.gz
/snakemake-9.8.2-assets.tar.zst
/snakemake-9.9.0.tar.gz
/snakemake-9.9.0-assets.tar.zst
/snakemake-9.10.0.tar.gz
/snakemake-9.10.0-assets.tar.zst
/snakemake-9.10.1.tar.gz
/snakemake-9.10.1-assets.tar.zst
/snakemake-9.11.0.tar.gz
/snakemake-9.11.0-assets.tar.zst
/snakemake-9.11.2.tar.gz
/snakemake-9.11.2-assets.tar.zst
/snakemake-9.11.3.tar.gz
/snakemake-9.11.3-assets.tar.zst
/snakemake-9.11.4.tar.gz
/snakemake-9.11.4-assets.tar.zst
/snakemake-9.11.5.tar.gz
/snakemake-9.11.5-assets.tar.zst
/snakemake-9.11.6.tar.gz
/snakemake-9.11.6-assets.tar.zst
/snakemake-9.11.7.tar.gz
/snakemake-9.11.7-assets.tar.zst
/snakemake-9.11.8.tar.gz
/snakemake-9.11.8-assets.tar.zst
/snakemake-9.11.9.tar.gz
/snakemake-9.11.9-assets.tar.zst
/snakemake-9.12.0.tar.gz
/snakemake-9.12.0-assets.tar.zst
/snakemake-9.13.0.tar.gz
/snakemake-9.13.0-assets.tar.zst
/snakemake-9.13.1.tar.gz
/snakemake-9.13.1-assets.tar.zst
/snakemake-9.13.2.tar.gz
/snakemake-9.13.2-assets.tar.zst
/snakemake-9.13.3.tar.gz
/snakemake-9.13.3-assets.tar.zst
/snakemake-9.13.4.tar.gz
/snakemake-9.13.4-assets.tar.zst
/snakemake-9.13.5.tar.gz
/snakemake-9.13.5-assets.tar.zst
/snakemake-9.13.6.tar.gz
/snakemake-9.13.6-assets.tar.zst
/snakemake-9.13.7.tar.gz
/snakemake-9.13.7-assets.tar.zst
/snakemake-9.14.2.tar.gz
/snakemake-9.14.2-assets.tar.zst
/snakemake-9.14.3.tar.gz
/snakemake-9.14.3-assets.tar.zst
/snakemake-9.14.4.tar.gz
/snakemake-9.14.4-assets.tar.zst
/snakemake-9.14.5.tar.gz
/snakemake-9.14.5-assets.tar.zst
/snakemake-9.14.6.tar.gz
/snakemake-9.14.6-assets.tar.zst

13
.packit.yaml Normal file
View file

@ -0,0 +1,13 @@
upstream_project_url: https://github.com/snakemake/snakemake
copy_upstream_release_description: false
upstream_tag_template: v{version}
jobs:
- job: pull_from_upstream
trigger: release
dist_git_branches:
- fedora-rawhide
- job: koji_build
trigger: commit
dist_git_branches:
- fedora-all

View file

@ -0,0 +1,54 @@
From 9d99c1c7fc2bb7ebfcba570fe64f07b0646f294a Mon Sep 17 00:00:00 2001
From: "Benjamin A. Beasley" <code@musicinmybrain.net>
Date: Tue, 18 Mar 2025 22:18:47 -0400
Subject: [PATCH] Revert "chore: work around setuptools 76 hash mismatch from
March 9, 2025 (#3370)"
This reverts commit 477e5f80d781334afcd549c612823caba1ef6299.
---
pyproject.toml | 3 +--
test-environment.yml | 5 ++---
2 files changed, 3 insertions(+), 5 deletions(-)
diff --git a/pyproject.toml b/pyproject.toml
index 52229b4d..275a4655 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,8 +1,7 @@
[build-system]
build-backend = "setuptools.build_meta"
requires = [
- # TODO relax upper bound, as of March 9 2025 there is a hash mismatch in setuptools on pypi
- "setuptools>=42,<76",
+ "setuptools>=42",
'tomli; python_version < "3.11"',
]
diff --git a/test-environment.yml b/test-environment.yml
index 6b778458..df8a30de 100644
--- a/test-environment.yml
+++ b/test-environment.yml
@@ -4,7 +4,6 @@ channels:
- nodefaults
dependencies:
- python >=3.11
- - setuptools
- yte
- packaging
- boto3
@@ -58,10 +57,10 @@ dependencies:
- nodejs # for cwltool
- immutables
- conda
- - cwltool
- - cwl-utils
- pip
- pip:
+ - cwltool
+ - cwl-utils
- snakemake-interface-executor-plugins >=9.3.1
- snakemake-executor-plugin-cluster-generic >=1.0.9
- snakemake-storage-plugin-http
--
2.48.1

View file

@ -0,0 +1,677 @@
From 5d4175e75a0981d9d925ecde4297d3b568c403c2 Mon Sep 17 00:00:00 2001
From: Ben Beasley <code@musicinmybrain.net>
Date: Tue, 11 Mar 2025 11:46:53 -0400
Subject: [PATCH] chore: Add license texts for things bundled in the assets
(#3099)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
<!--Add a description of your PR here-->
This PR is intended to apply on top of
https://github.com/snakemake/snakemake/pull/3098; see that PR for the
first two commits.
From there, I attempted to account for all of the NPM packages that are
bundled in `vega/vega.js` via dependencies. I made an effort to verify
that every license file added in this commit actually corresponds to
some code present in `vega.js`.
Next, I inspected `vega.js` for comments indicating that particular
routines were copied, derived, or adapted from other projects, and added
the license files for those projects. I didnt attempt to judge whether
or not any of snippets might be distant enough from their inspirations
that they could perhaps claim not to be derived works under a particular
set of copyright laws I just took the attributions at their word.
Almost all of these licenses are ones (like `MIT`, `Apache-2.0`, `ISC`
or `BSD-3-Clause`) that require including the copyright and permission
statements (the license text) in copies and derived works, so while this
work is fussy, tedious, and unrewarding, it would seem to be necessary.
So far, I only dug through `vega.js`. I still need to check if there is
anything in `vega-lite.js` or `vega-embed.js` that isnt already
accounted for in `vega.js`, and I need to look at the other libraries
too. Still, I thought I should post my work in progress in case it
collected any feedback.
### QC
<!-- Make sure that you can tick the boxes below. -->
* [ ] The PR contains a test case for the changes or the changes are
already covered by an existing test case. **N/A this change is not
really testable except that building the package confirms the
checksums match.**
* [x] The documentation (`docs/`) is updated to reflect the changes or
this is not necessary (e.g. if the change does neither modify the
language nor the behavior or functionalities of Snakemake). **N/A no
documentation update is believed to be necessary.**
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **New Features**
- Added numerous new assets and dependencies related to the Vega
library, enhancing functionality.
- Expanded package declarations for various D3 modules and other
libraries in the reporting system.
- Introduced a new class for executing Xonsh scripts, allowing for more
scripting options.
- Added a new rule for running Python scripts in a Conda environment,
improving workflow flexibility.
- Enhanced documentation with a new "Maintainers" section and expanded
resources.
- Introduced a new test suite for validating Conda functionalities.
- Enhanced data validation capabilities using both Pandas and Polars for
handling sample data.
- **Bug Fixes**
- Ensured that licenses and versions are accurately maintained for
various libraries.
- Improved error handling for Windows-specific issues in the testing
framework.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: Filipe G. Vieira <1151762+fgvieira@users.noreply.github.com>
Co-authored-by: Johannes Köster <johannes.koester@tu-dortmund.de>
---
snakemake/assets/__init__.py | 400 ++++++++++++++++++
.../report/html_reporter/data/packages.py | 137 ++++++
2 files changed, 537 insertions(+)
diff --git a/snakemake/assets/__init__.py b/snakemake/assets/__init__.py
index 123bf130..ac343e25 100644
--- a/snakemake/assets/__init__.py
+++ b/snakemake/assets/__init__.py
@@ -93,6 +93,262 @@ class Assets:
sha256="b75f7ed0af20dedadf92c52bc236161bcf0d294ff2e6e34ca76403203349f71d",
version="5.21.0",
),
+ # Begin dependencies for vega, included in vega/vega.js
+ # Versions from https://github.com/vega/vega/blob/v5.21.0/yarn.lock.
+ # Via vega-crossfilter, vega-encode, vega-format,
+ # vega-functions, vega-geo, vega-regression, vega-scale, vega-statistics,
+ # vega-time, vega-transforms, vega-view; and via d3-geo (via vega-functions,
+ # vega-geo, vega-projection); and via d3-geo-projection (via vega-projection)
+ #
+ # This has its own dependency, internmap (1.0.1); however, while we can
+ # find code from vega-crossfilter and d3-array in vega.js, there does
+ # not appear to be any code from internmap after tree-shaking.
+ "d3-array/LICENSE": Asset(
+ url="https://raw.githubusercontent.com/d3/d3-array/refs/tags/v{version}/LICENSE",
+ sha256="0747bebeb06b10954913149be9b9a8bdf6fad3e6fdcbd9f9524e7a94c13d2cea",
+ version="2.12.1",
+ ),
+ # Via vega-format
+ "d3-format/LICENSE": Asset(
+ url="https://raw.githubusercontent.com/d3/d3-format/refs/tags/v{version}/LICENSE",
+ sha256="7eea8533ea92bd8c32a901e89ecb0305890905bb12711449565ddff96891146d",
+ version="2.0.0",
+ ),
+ # Via vega-format
+ "d3-time-format/LICENSE": Asset(
+ url="https://raw.githubusercontent.com/d3/d3-time-format/refs/tags/v{version}/LICENSE",
+ sha256="7a3cb0e5055874e67db9aa2d5fe26de23204fa994ffbad198901ffe9c812a717",
+ version="3.0.0",
+ ),
+ # Via vega-time, vega-view; and via d3-time-format (via vega-format)
+ "d3-time/LICENSE": Asset(
+ url="https://raw.githubusercontent.com/d3/d3-time/refs/tags/v{version}/LICENSE",
+ sha256="e1211892da0b0e0585b7aebe8f98c1274fba15bafe47fa1f4ee8a7a502c06304",
+ version="2.1.1",
+ ),
+ # Via vega-encode, vega-scale
+ "d3-interpolate/LICENSE": Asset(
+ url="https://raw.githubusercontent.com/d3/d3-interpolate/refs/tags/v{version}/LICENSE",
+ sha256="e1211892da0b0e0585b7aebe8f98c1274fba15bafe47fa1f4ee8a7a502c06304",
+ version="2.0.1",
+ ),
+ # Via vega-functions, vega-geo; and via d3-interpolate (via vega-encode)
+ "d3-color/LICENSE": Asset(
+ url="https://raw.githubusercontent.com/d3/d3-color/refs/tags/v{version}/LICENSE",
+ sha256="e1211892da0b0e0585b7aebe8f98c1274fba15bafe47fa1f4ee8a7a502c06304",
+ version="2.0.0",
+ ),
+ # Via vega-scale
+ "d3-scale/LICENSE": Asset(
+ url="https://raw.githubusercontent.com/d3/d3-scale/refs/tags/v{version}/LICENSE",
+ sha256="7eea8533ea92bd8c32a901e89ecb0305890905bb12711449565ddff96891146d",
+ version="3.3.0",
+ ),
+ # Via vega-expression (vega-lite also depends on vega-expression)
+ # The license file included in the NPM package does not exist directly
+ # in https://github.com/DefinitelyTyped/DefinitelyTyped, so we use an
+ # unpkg URL to reference the contents of the NPM package instead.
+ "@types-estree/LICENSE": Asset(
+ url="https://unpkg.com/@types/estree@{version}/LICENSE",
+ sha256="c2cfccb812fe482101a8f04597dfc5a9991a6b2748266c47ac91b6a5aae15383",
+ version="0.0.50",
+ ),
+ # Via vega-force
+ "d3-force/LICENSE": Asset(
+ url="https://raw.githubusercontent.com/d3/d3-force/refs/tags/v{version}/LICENSE",
+ sha256="e1211892da0b0e0585b7aebe8f98c1274fba15bafe47fa1f4ee8a7a502c06304",
+ version="2.1.1",
+ ),
+ # Via d3-force (via vega-force)
+ "d3-dispatch/LICENSE": Asset(
+ url="https://raw.githubusercontent.com/d3/d3-dispatch/refs/tags/v{version}/LICENSE",
+ sha256="e1211892da0b0e0585b7aebe8f98c1274fba15bafe47fa1f4ee8a7a502c06304",
+ version="2.0.0",
+ ),
+ # Via d3-force (via vega-force)
+ "d3-quadtree/LICENSE": Asset(
+ url="https://raw.githubusercontent.com/d3/d3-quadtree/refs/tags/v{version}/LICENSE",
+ sha256="e1211892da0b0e0585b7aebe8f98c1274fba15bafe47fa1f4ee8a7a502c06304",
+ version="2.0.0",
+ ),
+ # Via vega-view; and via d3-force (via vega-force)
+ "d3-timer/LICENSE": Asset(
+ url="https://raw.githubusercontent.com/d3/d3-timer/refs/tags/v{version}/LICENSE",
+ sha256="e1211892da0b0e0585b7aebe8f98c1274fba15bafe47fa1f4ee8a7a502c06304",
+ version="2.0.0",
+ ),
+ # Via vega-functions, vega-geo, vega-projection (directly and via
+ # d3-geo-projection)
+ "d3-geo/LICENSE": Asset(
+ url="https://raw.githubusercontent.com/d3/d3-geo/refs/tags/v{version}/LICENSE",
+ sha256="c3c9d41a75b64963748657932167ec4c56404b8fd557d4f89c9eeda6e2fdf39a",
+ version="2.0.2",
+ ),
+ # Via vega-hierarchy
+ "d3-hierarchy/LICENSE": Asset(
+ url="https://raw.githubusercontent.com/d3/d3-hierarchy/refs/tags/v{version}/LICENSE",
+ sha256="e1211892da0b0e0585b7aebe8f98c1274fba15bafe47fa1f4ee8a7a502c06304",
+ version="2.0.0",
+ ),
+ # Via vega-loader
+ # This has its own dependencies (commander 2.20.3, iconv-lite 0.4.24,
+ # rw 1.3.3), but they are all used only in the command-line tools
+ # rather than in the library that is bundled in vega.js.
+ "d3-dsv/LICENSE": Asset(
+ url="https://raw.githubusercontent.com/d3/d3-dsv/refs/tags/v{version}/LICENSE",
+ sha256="8b5304265ccedbd17567aa14a0dc6b9bf4013fee44964c46aa54fdf8527d6a68",
+ version="2.0.0",
+ ),
+ # Via vega-loader; also from vega-geo/src/util/contours.js, "Based on
+ # https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js"
+ # This has its own dependency (commander 2.20.3), but it is used only
+ # in the command-line tools rather than in the library that is bundled
+ # in vega.js. Dependency node-fetch 2.6.4, via vega-loader, is not
+ # used for browser builds.
+ "topojson-client/LICENSE": Asset(
+ url="https://raw.githubusercontent.com/topojson/topojson-client/refs/tags/v{version}/LICENSE",
+ sha256="4c4d15b635e04e691825a76db7d33f7f2033b55669a7430011694f31e6c65999",
+ version="3.1.0",
+ ),
+ # Via vega-projection
+ # This has its own dependencies (commander 2.20.3, resolve 1.20.0), but
+ # they are all used only in the command-line tools rather than in the
+ # library that is bundled in vega.js.
+ "d3-geo-projection/LICENSE": Asset(
+ url="https://raw.githubusercontent.com/d3/d3-geo-projection/refs/tags/v{version}/LICENSE",
+ sha256="4108a126a74cc35d4d5ae39ca5d0cc926fa7c8ec40e459a0c6d3481c69decbd8",
+ version="3.0.0",
+ ),
+ # Via vega-scenegraph (directly and via d3-shape)
+ "d3-path/LICENSE": Asset(
+ url="https://raw.githubusercontent.com/d3/d3-path/refs/tags/v{version}/LICENSE",
+ sha256="b8265327ab678f554800e71188b1cc6b1ff57522e292d2b1c0be66f27cf328b6",
+ version="2.0.0",
+ ),
+ # Via vega-scenegraph
+ "d3-shape/LICENSE": Asset(
+ url="https://raw.githubusercontent.com/d3/d3-shape/refs/tags/v{version}/LICENSE",
+ sha256="7eea8533ea92bd8c32a901e89ecb0305890905bb12711449565ddff96891146d",
+ version="2.1.0",
+ ),
+ # Via vega-voronoi
+ "d3-delaunay/LICENSE": Asset(
+ url="https://raw.githubusercontent.com/d3/d3-delaunay/refs/tags/v{version}/LICENSE",
+ sha256="d19bf35c4080eea32e098a9c8d62540ffd425611ac8dfc856a233f0357d8b02e",
+ version="5.2.0",
+ ),
+ # Via d3-delaunay (via vega-voronoi)
+ "delaunator/LICENSE": Asset(
+ url="https://raw.githubusercontent.com/mapbox/delaunator/refs/tags/v{version}/LICENSE",
+ sha256="27043d1a6a0e1985fde12660decbbd3b23c67de900b00609c90d4f0aa492f425",
+ version="4.0.1",
+ ),
+ # End dependencies for vega, included in vega/vega.js
+ # Begin copied/derived/adapted code in vega, included in vega/vega.js
+ # From vega-util/src/lruCache.js, "adapted from
+ # https://github.com/dominictarr/hashlru/ (MIT License)". Version 1.0.4
+ # was the current version when the function was added to vega, in
+ # commit f153863f3575bff1b42294c9cb065d80afb757ff on 2020-02-28.
+ "hashlru/LICENSE": Asset(
+ url="https://raw.githubusercontent.com/dominictarr/hashlru/refs/tags/v{version}/LICENSE",
+ sha256="08e4bd7a280eaaf1fbcaad9dad1fb94412477fcdd1cf81660988303297e5e1d1",
+ version="1.0.4",
+ ),
+ # From
+ # vega-statistics/src/regression/{poly,r-squared,pow,log,linear}.js,
+ # "Adapted from d3-regression by Harry Stevens". Version 1.2.1 was the
+ # current version when the functions were added to vega, in commit
+ # 71610e4456a3a4145435d83f8458748ba137a2a3 2019-05-10. That release was
+ # not tagged in git, so we use the corresponding commit hash.
+ "d3-regression/LICENSE": Asset(
+ url="https://raw.githubusercontent.com/HarryStevens/d3-regression/e23d40a663dffba14b92cb42d9989de3a32894b5/LICENSE",
+ sha256="d210203f922101502894baf700b9a392e323a26e4b603ab166c57e09a6e773b5",
+ version="1.2.1",
+ ),
+ # From vega-statistics/src/regression/poly.js, "Adapted from
+ # d3-regression by Harry Stevens [...] which was adapted from
+ # regression-js by Tom Alexander" Version 2.0.1 was the current version
+ # when the functions were added to vega, in commit
+ # 71610e4456a3a4145435d83f8458748ba137a2a3 2019-05-10.
+ "regression/LICENSE": Asset(
+ url="https://raw.githubusercontent.com/Tom-Alexander/regression-js/refs/tags/{version}/LICENSE",
+ sha256="2f932f5cfb9b042cc6c0089ee8004b33e3746ffeab879341dbd453c150524307",
+ version="2.0.1",
+ ),
+ # From vega-statistics/src/regression/loess.js, "Adapted from
+ # science.js by Jason Davies". Version 1.9.3 was the current version
+ # when the functions were added to vega, in commit
+ # 71610e4456a3a4145435d83f8458748ba137a2a3 on 2019-05-10.
+ "science/LICENSE": Asset(
+ url="https://raw.githubusercontent.com/jasondavies/science.js/refs/tags/v{version}/LICENSE",
+ sha256="3bd1fdf686ffcad175daddcb36ee28599ac8f090b6cec2c7654118c8a6f3d4c9",
+ version="1.9.3",
+ ),
+ # From src/quickselect.js in d3-array, "Based on
+ # https://github.com/mourner/quickselect". Version 2.0.0 was the
+ # current version when the file was added to d3-array, in commit
+ # d447c2a31cd6aacf54a40b22c29620f7e17bbd7e on 2018-11-10.
+ "quickselect/LICENSE": Asset(
+ url="https://raw.githubusercontent.com/mourner/quickselect/refs/tags/v{version}/LICENSE",
+ sha256="597034cb7c11c916ad407344ea99a0b08e3c443a6b4421460f1d23c411c69707",
+ version="2.0.0",
+ ),
+ # From vega-statistics/src/normal.js, "Ported from Apache Commons
+ # Math". Version 3.6.1 was the current version when this implementation
+ # of erfinv was added to vega, in commit
+ # c26050f21b0c95620f8f1a3094056716ec6c5aaa on 2019-09-26.
+ "commons-math/LICENSE.txt": Asset(
+ url="https://raw.githubusercontent.com/apache/commons-math/refs/tags/MATH_3_6_1/LICENSE.txt",
+ sha256="64f23963615950bad9ddd31569a7f09afbbe11b81d94873ffd9b1cac6081a11d",
+ version="3.6.1",
+ ),
+ "commons-math/NOTICE.txt": Asset(
+ url="https://raw.githubusercontent.com/apache/commons-math/refs/tags/MATH_3_6_1/NOTICE.txt",
+ sha256="5495442a32bfc2b93b4a8f2c34c5c218d16cca434aa5684fb953d9419120e3fa",
+ version="3.6.1",
+ ),
+ # From vega-expression/src/parser.js, "The following expression parser
+ # is based on Esprima (http://esprima.org/)." Unusually, the original
+ # license text is reproduced in the source file, so we could get by
+ # without a separate license file (and in fact the license file lacks
+ # the necessary copyright statement present in the code) but we add it
+ # for consistency. Version 2.2.0 was the last version of Esprima that
+ # had a copyright statement in esprima.js attributing specific
+ # individual contributors, as reproduced in the vega source.
+ "esprima/LICENSE.BSD": Asset(
+ url="https://raw.githubusercontent.com/jquery/esprima/refs/tags/{version}/LICENSE.BSD",
+ sha256="0e74697a68cebdcd61502c30fe80ab7f9e341d995dcd452023654d57133534b1",
+ version="2.2.0",
+ ),
+ # From vega-scenegraph/src/path/arc.js, "Copied from Inkscape svgtopdf,
+ # thanks!" We cannot find the original implementation in Inkscape or
+ # anywhere else, so we do not add a license file for this snippet.
+ # From vega-scenegraph/src/path/parse.js, "Path parsing and rendering
+ # code adapted from fabric.js -- Thanks!" This was added in commit
+ # 82932143de7cef4187a34026689df12abaa25959 on 2018-12-20, and the
+ # current release of fabric.js at that time was 2.4.5.
+ "fabric/LICENSE": Asset(
+ url="https://raw.githubusercontent.com/fabricjs/fabric.js/refs/tags/v{version}/LICENSE",
+ sha256="9f6c2cc99aa9c618df93fed7d1cf7279d4e329d92dd2ce5e96173c73ce305055",
+ version="2.4.5",
+ ),
+ # From vega-geo/src/util/{contours,density2D}.js, "Implementation
+ # adapted from d3/d3-contour. Thanks!" When these routines were added
+ # in 0ab6b730a7e576d33d00e12063855bb132194191 on 2019-11-11, the latest
+ # version was 1.3.2.
+ "d3-contour/LICENSE": Asset(
+ url="https://raw.githubusercontent.com/d3/d3-contour/refs/tags/v{version}/LICENSE",
+ sha256="5f5dcce265668080a60fbdc513f6f8ef21466780bcaa331e64ee39df19e63b30",
+ version="1.3.2",
+ ),
+ # From vega-geo/src/util/contours.js, "Based on
+ # https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js"
+ "shapefile/LICENSE": Asset(
+ url="https://raw.githubusercontent.com/mbostock/shapefile/refs/tags/v{version}/LICENSE.txt",
+ sha256="c16529a9d5b8802982abd714a6823344e24b0cb5131596bc343927ead605d708",
+ version="0.6.2",
+ ),
+ # End copied/derived/adapted code in vega, included in vega/vega.js
"vega-lite/vega-lite.js": Asset(
url="https://cdnjs.cloudflare.com/ajax/libs/vega-lite/{version}/vega-lite.js",
sha256="6eb7f93121cd9f44cf8640244f87c5e143f87c7a0b6cd113da4a9e41e3adf0aa",
@@ -103,6 +359,57 @@ class Assets:
sha256="f618900fd0d64046963b29f40590cdd1e341a2f41449f99110d82fd81fea808c",
version="5.2.0",
),
+ # Begin dependencies for vega-lite, included in vega-lite/vega-lite.js
+ # Versions from https://github.com/vega/vega-lite/blob/v5.2.0/yarn.lock.
+ "@types-clone/LICENSE": Asset(
+ url="https://unpkg.com/@types/clone@{version}/LICENSE",
+ sha256="c2cfccb812fe482101a8f04597dfc5a9991a6b2748266c47ac91b6a5aae15383",
+ version="2.1.1",
+ ),
+ "array-flat-polyfill/LICENSE": Asset(
+ # Releases are not tagged in git; we use the commit hash
+ # corresponding to the 1.0.1 release
+ url="https://raw.githubusercontent.com/jonathantneal/array-flat-polyfill/362d855cb6ea2ef12f0676b116c5f9e4233b6f31/LICENSE.md",
+ sha256="597756adcb51f243ef4fb386920377f61d012ace0904364e1a8ee9aaec6afc84",
+ version="1.0.1",
+ ),
+ "clone/LICENSE": Asset(
+ url="https://raw.githubusercontent.com/pvorb/clone/refs/tags/v{version}/LICENSE",
+ sha256="3fb0857ef0133928cf72c88dfc464e931486e88778961eedec25585e2321507f",
+ version="2.1.2",
+ ),
+ "fast-deep-equal/LICENSE": Asset(
+ url="https://raw.githubusercontent.com/epoberezkin/fast-deep-equal/refs/tags/v{version}/LICENSE",
+ sha256="7bf9b2de73a6b356761c948d0e9eeb4be6c1270bd04c79cd489c1e400ffdfc1a",
+ version="3.1.3",
+ ),
+ "fast-json-stable-stringify/LICENSE": Asset(
+ url="https://raw.githubusercontent.com/epoberezkin/fast-json-stable-stringify/refs/tags/v{version}/LICENSE",
+ sha256="a833d366242c298cf1b10263516572fb8dcbe68eb5072cdcac2b4546e2b4eb36",
+ version="2.1.0",
+ ),
+ "json-stringify-pretty-compact/LICENSE": Asset(
+ url="https://raw.githubusercontent.com/lydell/json-stringify-pretty-compact/refs/tags/v{version}/LICENSE",
+ sha256="d0800a7c9b5f723f7fe029f75d3a9ae44173178b9729d1521e18371ab24ae97a",
+ version="3.0.0",
+ ),
+ # The tslib package is among vega-lite's direct dependencies, and the
+ # yarn.lock file shows three versions could be included: 2.2.0, 2.1.0
+ # (both MIT-licensed), and 1.1.0 (Apache-2.0-licensed). However, we
+ # found no trace of any of these in the actual vega-lite.js bundle.
+ # ----
+ # The following packages are part of vega, and are already covered by
+ # vega/LICENSE.
+ # - vega-event-selector: no dependencies
+ # - vega-expression: depends on vega-util, @types/estree (already
+ # covered as one of vega's dependencies)
+ # - vega-util (no dependencies; includes code from hashlru, already
+ # covered as one of vega's dependencies)
+ # ----
+ # End dependencies for vega-lite, included in vega-lite/vega-lite.js
+ # Begin copied/derived/adapted code in vega-lite, included in vega-lite/vega-lite.js
+ # - hashlru is included in vega-util; already covered as one of vega's dependencies
+ # End copied/derived/adapted code in vega-lite, included in vega-lite/vega-lite.js
"vega-embed/vega-embed.js": Asset(
url="https://cdnjs.cloudflare.com/ajax/libs/vega-embed/{version}/vega-embed.js",
sha256="4e546c1f86eb200333606440e92f76e2940b905757018d9672cd1708e4e6ff0a",
@@ -113,6 +420,78 @@ class Assets:
sha256="32df67148f0fc3db0eb9e263a7b75d07f1eb14c61955005a4a39c6918d10d137",
version="6.20.8",
),
+ # Begin dependencies for vega-embed, included in vega-embed/vega-embed.js
+ # Versions from https://github.com/vega/vega-embed/blob/v6.20.8/yarn.lock.
+ "fast-json-patch/LICENSE": Asset(
+ url="https://raw.githubusercontent.com/Starcounter-Jack/JSON-Patch/refs/tags/v{version}/LICENSE.txt",
+ sha256="26593d78926902a82eb9bc7e40d1811fc381055f23516b92fe48ca8399bf02df",
+ version="3.1.0",
+ ),
+ # json-stringify-pretty-compact 3.0.0 is already covered as one of
+ # vega's dependencies
+ # ----
+ # There are four versions of the semver package in yarn.lock (5.7.1,
+ # 6.3.0, 7.0.0, 7.3.5), but it appears that only one copy remains in
+ # the vega-embed.js bundle. The bundle has a compareBuild function,
+ # added in 6.1.0. It does not export a "tokens" list, added in 6.3.0
+ # and present in 7.0.0, but that is not conclusive because the package
+ # was split into separate source files to improve tree-shaking. By
+ # 7.3.5, the first line of the SemVer class constructor changes to
+ # "options = parseOptions(options)", and this does match what we see in
+ # the bundle, so we conclude that we have semver 7.3.5. In any case,
+ # the ISC license was unchanged across all four versions.
+ "semver/LICENSE": Asset(
+ url="https://raw.githubusercontent.com/npm/node-semver/refs/tags/v{version}/LICENSE",
+ sha256="4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b",
+ version="7.3.5",
+ ),
+ # The tslib package is among vega-embed's direct dependencies, and the
+ # yarn.lock file shows four versions could be included: 2.3.1, 2.1.0,
+ # 1.14.1 (all MIT-licensed), and 1.1.0 (Apache-2.0-licensed). However,
+ # we found no trace of any of these in the actual vega-embed.js bundle.
+ # ----
+ # The following packages are part of vega, and are already covered by
+ # vega/LICENSE.
+ # - vega-interpreter: no dependencies
+ # ----
+ # This is not part of https://github.com/vega/vega, as far as we can
+ # tell, so we handle it separately. The repository
+ # https://github.com/vega/schema linked from NPM appears to contain
+ # only JSON schemas, not JavaScript source code, so we use an unpkg URL
+ # to reference the contents of the NPM package instead.
+ "vega-schema-url-parser/LICENSE": Asset(
+ url="https://unpkg.com/vega-schema-url-parser@{version}/LICENSE",
+ sha256="eeb1606fda238f623c36d1eb5e27c33b986a446445340b220c141097424af045",
+ version="2.2.0",
+ ),
+ "vega-themes/LICENSE": Asset(
+ url="https://raw.githubusercontent.com/vega/vega-themes/refs/tags/v{version}/LICENSE",
+ sha256="ceb75fa4fbebbc381c0465442a502ffc13b73f36ccb385a66bcd5f55869e3979",
+ version="2.10.0",
+ ),
+ # Depends on vega-util, which is already covered in vega
+ "vega-tooltip/LICENSE": Asset(
+ url="https://raw.githubusercontent.com/vega/vega-tooltip/refs/tags/v{version}/LICENSE",
+ sha256="93cd20d9cee8c77c080d1a585e3b07644ad2c8e9ccdfc86e350136884d62d935",
+ version="0.28.0",
+ ),
+ # End dependencies for vega-embed, included in vega-embed/vega-embed.js
+ # Begin copied/derived/adapted code in vega-embed, included in vega-embed/vega-embed.js
+ # - hashlru is included in vega-util (via vega-tooltip); already
+ # covered as one of vega's dependencies
+ # - _areEquals() is based on fast-deep-equal; already covered as one of
+ # vega-lite's dependencies
+ # - googlecharts theme in vega-themes carries its own copyright statement,
+ # Copyright 2020 Google LLC.
+ #
+ # Use of this source code is governed by a BSD-style
+ # license that can be found in the LICENSE file or at
+ # https://developers.google.com/open-source/licenses/bsd
+ # No plain-text version of that URL is available, and the license has
+ # the same BSD-3-Clause permission statement as vega-themes itself,
+ # so we consider the combination of vega-themes/LICENSE and the
+ # copyright statement in the source code sufficient.
+ # End copied/derived/adapted code in vega-embed, included in vega-embed/vega-embed.js
"heroicons/LICENSE": Asset(
url="https://raw.githubusercontent.com/tailwindlabs/heroicons/refs/tags/v{version}/LICENSE",
sha256="75523ddd65d9620bea09f84e89d0c373b4205a3708b8a1e9f9598a5438a3e641",
@@ -128,6 +507,27 @@ class Assets:
sha256="f657f99d3fb9647db92628e96007aabb46e5f04f33e49999075aab8e250ca7ce",
version="15.7.2",
),
+ # Begin dependencies for prop-types, included in prop-types/prop-types.min.js
+ # Versions from https://github.com/facebook/prop-types/blob/v15.7.2/yarn.lock
+ # ----
+ # The loose-envify package is among prop-types's direct dependencies,
+ # and the yarn.lock file shows two versions could be included: 1.4.0
+ # and 1.3.1 (both MIT-licensed). However, we found no trace of
+ # loose-envify code in the actual prop-types.min.js bundle, so it
+ # appears this dependency was removed in tree-shaking, along with its
+ # dependency js-tokens (3.0.0 and/or 4.0.0).
+ # ----
+ # The object-assign package (version 4.1.1) is among prop-types's
+ # direct dependencies, but we found no trace of it in the actual
+ # prop-types.min.js bundle, so it appears this dependency (a polyfill)
+ # was removed in tree-shaking.
+ # ----
+ # The react-is package (version 16.8.1) is among prop-types's
+ # direct dependencies, but we found no trace of it in the actual
+ # prop-types.min.js bundle, so it appears this dependency was removed
+ # in tree-shaking.
+ # ----
+ # End dependencies for prop-types, included in prop-types/prop-types.min.js
}
@classmethod
diff --git a/snakemake/report/html_reporter/data/packages.py b/snakemake/report/html_reporter/data/packages.py
index 963a4c10..2b8e364f 100644
--- a/snakemake/report/html_reporter/data/packages.py
+++ b/snakemake/report/html_reporter/data/packages.py
@@ -38,14 +38,151 @@ def get_packages():
source_path="vega/vega.js",
license_path="vega/LICENSE",
),
+ # Begin dependencies for vega, included in vega/vega.js
+ "d3-array": Package(
+ license_path="d3-array/LICENSE",
+ ),
+ "d3-format": Package(
+ license_path="d3-format/LICENSE",
+ ),
+ "d3-time-format": Package(
+ license_path="d3-time-format/LICENSE",
+ ),
+ "d3-time": Package(
+ license_path="d3-time/LICENSE",
+ ),
+ "d3-interpolate": Package(
+ license_path="d3-interpolate/LICENSE",
+ ),
+ "d3-color": Package(
+ license_path="d3-color/LICENSE",
+ ),
+ "d3-scale": Package(
+ license_path="d3-scale/LICENSE",
+ ),
+ "@types-estree": Package(
+ license_path="@types-estree/LICENSE",
+ ),
+ "d3-force": Package(
+ license_path="d3-force/LICENSE",
+ ),
+ "d3-dispatch": Package(
+ license_path="d3-dispatch/LICENSE",
+ ),
+ "d3-quadtree": Package(
+ license_path="d3-quadtree/LICENSE",
+ ),
+ "d3-timer": Package(
+ license_path="d3-timer/LICENSE",
+ ),
+ "d3-geo": Package(
+ license_path="d3-geo/LICENSE",
+ ),
+ "d3-hierarchy": Package(
+ license_path="d3-hierarchy/LICENSE",
+ ),
+ "d3-dsv": Package(
+ license_path="d3-dsv/LICENSE",
+ ),
+ "topojson-client": Package(
+ license_path="topojson-client/LICENSE",
+ ),
+ "d3-geo-projection": Package(
+ license_path="d3-geo-projection/LICENSE",
+ ),
+ "d3-path": Package(
+ license_path="d3-path/LICENSE",
+ ),
+ "d3-shape": Package(
+ license_path="d3-shape/LICENSE",
+ ),
+ "d3-delaunay": Package(
+ license_path="d3-delaunay/LICENSE",
+ ),
+ "delaunator": Package(
+ license_path="delaunator/LICENSE",
+ ),
+ # End dependencies for vega, included in vega/vega.js
+ # Begin copied/derived/adapted code in vega, included in vega/vega.js
+ "hashlru": Package(
+ license_path="hashlru/LICENSE",
+ ),
+ "d3-regression": Package(
+ license_path="d3-regression/LICENSE",
+ ),
+ "regression": Package(
+ license_path="regression/LICENSE",
+ ),
+ "science": Package(
+ license_path="science/LICENSE",
+ ),
+ "quickselect": Package(
+ license_path="quickselect/LICENSE",
+ ),
+ "commons-math": Package(
+ license_path="commons-math/LICENSE.txt",
+ # This must be included with LICENSE.txt.
+ notice="commons-math/NOTICE.txt",
+ ),
+ "esprima": Package(
+ license_path="esprima/LICENSE.BSD",
+ ),
+ "fabric": Package(
+ license_path="fabric/LICENSE",
+ ),
+ "d3-contour": Package(
+ license_path="d3-contour/LICENSE",
+ ),
+ # End copied/derived/adapted code in vega, included in vega/vega.js
"vega-lite": Package(
source_path="vega-lite/vega-lite.js",
license_path="vega-lite/LICENSE",
),
+ # Begin dependencies for vega-lite, included in vega-lite/vega-lite.js
+ # (excluding those shared with vega and therefore already documented)
+ "@types-clone": Package(
+ license_path="@types-estree/LICENSE",
+ ),
+ "array-flat-polyfill": Package(
+ license_path="array-flat-polyfill/LICENSE",
+ ),
+ "clone": Package(
+ license_path="clone/LICENSE",
+ ),
+ "fast-deep-equal": Package(
+ license_path="fast-deep-equal/LICENSE",
+ ),
+ "fast-json-stable-stringify": Package(
+ license_path="fast-json-stable-stringify/LICENSE",
+ ),
+ "json-stringify-pretty-compact": Package(
+ license_path="json-stringify-pretty-compact/LICENSE",
+ ),
+ # End dependencies for vega-lite, included in vega-lite/vega-lite.js
+ # Any copied/derived/adapted code in vega-lite is shared with vega.
"vega-embed": Package(
source_path="vega-embed/vega-embed.js",
license_path="vega-embed/LICENSE",
),
+ # Begin dependencies for vega-embed, included in vega-embed/vega-embed.js
+ # (excluding those shared with vega/vega-lite and therefore already documented)
+ "fast-json-patch": Package(
+ license_path="fast-json-patch/LICENSE",
+ ),
+ "semver": Package(
+ license_path="semver/LICENSE",
+ ),
+ "vega-schema-url-parser": Package(
+ license_path="vega-schema-url-parser/LICENSE",
+ ),
+ "vega-themes": Package(
+ license_path="vega-themes/LICENSE",
+ ),
+ "vega-tooltip": Package(
+ license_path="vega-tooltip/LICENSE",
+ ),
+ # End dependencies for vega-embed, included in vega-embed/vega-embed.js
+ # Any copied/derived/adapted code in vega-embed is shared with vega and/or vega-lite.
"heroicons": Package(
license_path="heroicons/LICENSE",
),
--
2.48.1

3
README.packit Normal file
View file

@ -0,0 +1,3 @@
This repository is maintained by packit.
https://packit.dev/
The file was generated using packit 0.100.2.post1.dev4+g31a74ebd.

View file

@ -25,7 +25,7 @@ tar -xzf "${TARNAME}"
# Capture modification time from the original source archive, before we touch
# anything; everything in our asset archive will have this mtime for better
# reproducibility.
MTIME="$(stat --format='%Y' "${XDIR}/src/snakemake/assets/")"
MTIME="$(stat --format='%Y' "${XDIR}/snakemake/assets/")"
echo "==== Apply patches ====" 1>&2
spectool --list-files "${SPEC}" |
@ -40,14 +40,14 @@ spectool --list-files "${SPEC}" |
done
echo "==== Download assets ====" 1>&2
PYTHONPATH="${PWD}/${XDIR}/src/snakemake" python3 <<'EOF'
PYTHONPATH="${PWD}/${XDIR}/snakemake" python3 <<'EOF'
from assets import Assets
Assets.deploy()
EOF
echo "==== Modify assets ====" 1>&2
echo "--> Remove array-flat-polyfill (CC0-1.0 code, unused)" 1>&2
target='src/snakemake/assets/data/vega-lite/vega-lite.js'
target='snakemake/assets/data/vega-lite/vega-lite.js'
echo "To be removed from ${target}:" 1>&2
grep -E '^[[:blank:]]*Array\.prototype\.flat[[:blank:]]*\|\|' \
"${XDIR}/${target}" 1>&2
@ -55,15 +55,15 @@ sed -r -i '/^[[:blank:]]*Array\.prototype\.flat[[:blank:]]*\|\|/d' \
"${XDIR}/${target}"
echo '--> Search for vestiges of array-flat-polyfill' 1>&2
if grep -ErinI 'defineProperty\(Array\.prototype,[[:blank:]]*.flat' \
"${XDIR}/src/snakemake/assets"
"${XDIR}/snakemake/assets"
then
echo 'MANUAL AUDIT REQUIRED' 1>&2
exit 1
fi
# Remove license file and the directory containing it
rm -rv "${XDIR}/src/snakemake/assets/data/array-flat-polyfill"
rm -rv "${XDIR}/snakemake/assets/data/array-flat-polyfill"
echo "--> Search for missed CC0-1.0 licenses" 1>&2
if grep -ErinI '\bCC0\b' "${XDIR}/src/snakemake/assets"
if grep -ErinI '\bCC0\b' "${XDIR}/snakemake/assets"
then
echo 'MANUAL AUDIT REQUIRED' 1>&2
exit 1
@ -71,7 +71,7 @@ fi
echo "==== Archive assets ====" 1>&2
RESULT="${XDIR}-assets.tar.zst"
ls -ld "${XDIR}/src/snakemake/assets/"
ls -ld "${XDIR}/snakemake/assets/"
# https://www.gnu.org/software/tar/manual/html_section/Reproducibility.html
TZ=UTC LC_ALL=C tar \
--create \
@ -82,7 +82,7 @@ TZ=UTC LC_ALL=C tar \
--pax-option='delete=atime,delete=ctime' \
--clamp-mtime --mtime="@${MTIME}" \
--directory="${XDIR}" \
src/snakemake/assets/data |
snakemake/assets/data |
zstdmt --ultra -22 > "${RESULT}"
mv -v "${RESULT}" "${DIST_GIT}"

View file

@ -1,7 +1,7 @@
diff -Naur snakemake-9.1.1-original/src/snakemake/assets/__init__.py snakemake-9.1.1/src/snakemake/assets/__init__.py
--- snakemake-9.1.1-original/src/snakemake/assets/__init__.py 2025-03-21 14:49:12.112309938 -0400
+++ snakemake-9.1.1/src/snakemake/assets/__init__.py 2025-03-21 14:49:56.495171724 -0400
@@ -379,9 +379,12 @@
diff -Naur snakemake-8.30.0-original/snakemake/assets/__init__.py snakemake-8.30.0/snakemake/assets/__init__.py
--- snakemake-8.30.0-original/snakemake/assets/__init__.py 2025-03-19 10:16:19.899201489 -0400
+++ snakemake-8.30.0/snakemake/assets/__init__.py 2025-03-19 10:20:34.376310829 -0400
@@ -349,9 +349,12 @@
version="0.6.2",
),
# End copied/derived/adapted code in vega, included in vega/vega.js
@ -15,7 +15,7 @@ diff -Naur snakemake-9.1.1-original/src/snakemake/assets/__init__.py snakemake-9
version="5.2.0",
),
"vega-lite/LICENSE": Asset(
@@ -428,13 +431,6 @@
@@ -366,13 +369,6 @@
sha256="c2cfccb812fe482101a8f04597dfc5a9991a6b2748266c47ac91b6a5aae15383",
version="2.1.1",
),
@ -29,12 +29,12 @@ diff -Naur snakemake-9.1.1-original/src/snakemake/assets/__init__.py snakemake-9
"clone/LICENSE": Asset(
url="https://raw.githubusercontent.com/pvorb/clone/refs/tags/v{version}/LICENSE",
sha256="3fb0857ef0133928cf72c88dfc464e931486e88778961eedec25585e2321507f",
diff -Naur snakemake-9.1.1-original/src/snakemake/report/html_reporter/data/packages.py snakemake-9.1.1/src/snakemake/report/html_reporter/data/packages.py
--- snakemake-9.1.1-original/src/snakemake/report/html_reporter/data/packages.py 2025-03-21 14:49:08.721489278 -0400
+++ snakemake-9.1.1/src/snakemake/report/html_reporter/data/packages.py 2025-03-21 14:49:56.496478714 -0400
diff -Naur snakemake-8.30.0-original/snakemake/report/html_reporter/data/packages.py snakemake-8.30.0/snakemake/report/html_reporter/data/packages.py
--- snakemake-8.30.0-original/snakemake/report/html_reporter/data/packages.py 2025-03-19 10:16:19.900335558 -0400
+++ snakemake-8.30.0/snakemake/report/html_reporter/data/packages.py 2025-03-19 10:16:47.850551627 -0400
@@ -143,9 +143,6 @@
"@types-clone": Package(
license_path="@types-clone/LICENSE",
license_path="@types-estree/LICENSE",
),
- "array-flat-polyfill": Package(
- license_path="array-flat-polyfill/LICENSE",

View file

@ -1,12 +1,17 @@
# It is normal that extras metapackages should not have documentation, or any
# files at all.
addFilter(r"\+\w+.noarch: W: no-documentation")
# Removed in Snakemake 9.6 with no equivalent replacement.
addFilter(r" obsolete-not-provided snakemake\+(messaging)$")
# These extras were removed with Snakemake 8.0 and have no equivalent
# replacements.
addFilter(r" obsolete-not-provided snakemake\+(azure|google-cloud)$")
# The -doc subpackage was removed and has no equivalent replacement.
addFilter(r" obsolete-not-provided snakemake-doc$")
# Not a spelling error
addFilter(r"spelling-error \('([Mm]etapackage)s?',")
# Some small files may incidentally have duplicate contents. Because they are
# small in size and few in number, it is not worth the spec-file complexity to
# hardlink them (which would itself trigger an rpmlint warning about
# cross-directory hardlinking).
addFilter(r"files-duplicate .*/snakemake/.*/remote/[^/]+\.py")
# This is, unfortunately, intentional. See the comments in the spec file.
addFilter(r" python-leftover-require python-unversioned-command$")
# The assets bundle needs to be generated with a script, so it has no URL (and
# .tar.zst is perfectly legitimate).
addFilter(r" (invalid-url|inconsistent-file-extension).* snakemake-.*-assets\.tar\.zst")

View file

@ -1,10 +1,7 @@
# Work around a series of circular test dependencies:
#
# ⬐─python-snakemake-logger-plugin-rich🠔────╮
# python-snakemake-interface-logger-plugins─╯
# │↑python-snakemake-interface-scheduler-plugins
# │││↑ python-snakemake-interface-report-plugins
# ↓│↓│ ↓↑ ⬐───╮
# python-snakemake-interface-report-plugins
# ↓↑ ⬐───╮
# snakemake → python-snakemake-interface-executor-plugins⬎
# ↑↑↑ │ ⬑────────────────────python-snakemake-executor-plugin-cluster-generic
# │││ ↳python-snakemake-interface-storage-plugins─────────────────╮
@ -15,26 +12,17 @@
#
# A good build order is:
#
# 1. BOOTSTRAP:
# python-snakemake-interface-common
# 2. BOOTSTRAP:
# python-snakemake-interface-executor-plugins
# python-snakemake-interface-logger-plugins
# 1. BOOTSTRAP: python-snakemake-interface-executor-plugins,
# python-snakemake-interface-storage-plugins,
# python-snakemake-interface-report-plugins
# python-snakemake-interface-scheduler-plugins
# python-snakemake-interface-storage-plugins
# 3. BOOTSTRAP: snakemake
# 4. python-snakemake-executor-plugin-cluster-generic
# python-snakemake-logger-plugin-rich
# 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
# python-snakemake-storage-plugin-http
# python-snakemake-storage-plugin-s3
# 5. snakemake
# python-snakemake-interface-executor-plugins
# python-snakemake-interface-logger-plugins
# 4. snakemake, python-snakemake-interface-executor-plugins,
# python-snakemake-interface-storage-plugins,
# python-snakemake-interface-report-plugins
# python-snakemake-interface-scheduler-plugins
# python-snakemake-interface-storage-plugins
%bcond bootstrap 0
%bcond tests %{without bootstrap}
# Run tests that require network access? This only makes sense for local mock
@ -43,35 +31,47 @@
# 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
%bcond gcs_tests 1
%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.}
Name: snakemake
Version: 9.14.6
%global srcversion %(echo '%{version}' | cut -d '^' -f 1)
Version: 8.30.0
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.
# The primary license for Snakemake is MIT; versioneer contributes Unlicense,
# and 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
# - snakemake/assets/data/vega/vega.js
#
# BSD-3-Clause AND MIT:
# - src/snakemake/assets/data/vega-lite/vega-lite.js
# - snakemake/assets/data/vega-lite/vega-lite.js
#
# BSD-3-Clause AND ISC AND MIT:
# - src/snakemake/assets/data/vega-embed/vega-embed.js
# - 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
# - snakemake/assets/data/prop-types/prop-types.min.js
# - snakemake/assets/data/tailwindcss/tailwind.css
#
# == License breakdown: src/snakemake/assets/data/vega/vega.js ==
# Unlicense:
# - versioneer.py
# - snakemake/_version.py (which says “This file is released into the public
# domain,” but the comments in versioneer.py make it clear that Unlicense is
# intended for the generated files as well)
#
# == License breakdown for snakemake/assets/data/vega/vega.js ==
#
# The primary license for npm(vega) is BSD-3-Clause. The bundle contains:
#
@ -101,7 +101,7 @@ Summary: Workflow management system to create reproducible and scalable d
# MIT-0:
# - npm(fabric), bundled as a copied, derived, or adapted snippet
#
# == License breakdown: src/snakemake/assets/data/vega-lite/vega-lite.js ==
# == License breakdown for snakemake/assets/data/vega-lite/vega-lite.js ==
#
# The primary license for npm(vega-lite) is BSD-3-Clause. The bundle contains:
#
@ -116,7 +116,7 @@ Summary: Workflow management system to create reproducible and scalable d
# - 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 ==
# == License breakdown for snakemake/assets/data/vega-embed/vega-embed.js ==
#
# The primary license for npm(vega-embed) is BSD-3-Clause. The bundle contains:
#
@ -133,7 +133,8 @@ License: %{shrink:
BSD-3-Clause AND
ISC AND
MIT AND
MIT-0
MIT-0 AND
Unlicense
}
URL: https://snakemake.readthedocs.io/en/stable/index.html
%global forgeurl https://github.com/snakemake/snakemake
@ -151,6 +152,17 @@ Source0: %{forgeurl}/archive/v%{version}/snakemake-%{version}.tar.gz
Source1: snakemake-%{version}-assets.tar.zst
Source2: get_assets
# Upstream upper-bounded the version of setuptools to work around a hash
# mismatch in setuptools 76 on PyPI observed on March 9, 2025. The system
# setuptools is fine. The upper-bound was removed in a later release. Here we
# revert it as a downstream-only patch.
Patch: 0001-Revert-chore-work-around-setuptools-76-hash-mismatch.patch
# chore: Add license texts for things bundled in the assets
# https://github.com/snakemake/snakemake/pull/3099
# Rebased on v8.30.0
Patch: 0001-chore-Add-license-texts-for-things-bundled-in-the-as.patch
# Downstream-only: adjust the asset metadata in the sources, including
# checksums, for any adjustments that happened in the get_assets script.
#
@ -158,19 +170,12 @@ Source2: get_assets
# 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
BuildSystem: pyproject
# Generate BRs for all supported extras to ensure they do not FTI
BuildOption(generate_buildrequires): -x reports
BuildOption(install): -l snakemake
BuildOption(check): %{shrink:
-e '*.tests*'
%{?!with_gcs_tests:-e 'snakemake.executors.google_lifesciences_helper'}
}
Patch: snakemake-8.30.0-modified-assets.patch
BuildArch: noarch
BuildRequires: python3-devel
BuildRequires: help2man
# Snakemake uses (unversioned) "python" as the default remote execution
@ -203,18 +208,18 @@ Provides: vim-snakemake = %{version}-%{release}
# 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.
# tailwind.css 3.4.16 is 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
# 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
# snakemake/assets/data/react/react-dom.production.min.js
Provides: bundled(npm(react-dom)) = 18.2.0
# src/snakemake/assets/data/vega/vega.js
# snakemake/assets/data/vega/vega.js
Provides: bundled(npm(vega)) = 5.21.0
# Bundled in src/snakemake/assets/data/vega/vega.js as dependencies:
# Bundled in 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
@ -244,7 +249,7 @@ 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.
# For these, see notes in 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
@ -266,8 +271,8 @@ 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.
# Present in snakemake/assets/data/vega/vega.js in the form of copied, derived,
# or adapted snippets. See notes in snakemake/assets/__init__.py.
# Implementation of erfinv is based on:
Provides: bundled(apache-commons-math) = 3.6.1
# Expression parser is based on:
@ -281,21 +286,21 @@ 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
# 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.
# Bundled in snakemake/assets/data/vega-lite/vega-lite.js as dependencies:
# See notes in 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
# See notes in 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.
@ -303,25 +308,24 @@ Provides: bundled(npm(json-stringify-pretty-compact)) = 3.0.0
#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
# Present in 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.
# snakemake/assets/__init__.py.
#Provides: bundled(npm(hashlru)) = 1.0.4
# src/snakemake/assets/data/vega-embed/vega-embed.js
# 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.
# Bundled in snakemake/assets/data/vega-embed/vega-embed.js as dependencies:
# See notes in 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
# See notes in 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.
@ -330,9 +334,9 @@ 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
# Present in 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.
# snakemake/assets/__init__.py.
#Provides: bundled(npm(hashlru)) = 1.0.4
# _areEquals() is based on:
#Provides: bundled(npm(fast-deep-equal)) = 3.1.3
@ -342,23 +346,23 @@ Provides: bundled(npm(vega-tooltip)) = 0.28.0
# 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
# 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
# Removed in 9.6.0; keep the Obsoletes through Fedora 45.
Obsoletes: snakemake+messaging < 9.6.1-1
%if %{with tests}
# For several tests (either apptainer or singularity-ce should work):
BuildRequires: (apptainer or singularity-ce)
%if %{with conda_tests}
# We need this for test_jupyter_notebook*, even if we are not running tests
# that have conda in their names. When the conda_tests bcond is enabled, this
# is also needed for tests/tests_using_conda.py.
# For tests/tests_using_conda.py
BuildRequires: conda
# For test_conda_pin_file, test_conda_named, test_conda_function
BuildRequires: ripgrep
@ -387,18 +391,8 @@ BuildRequires: %{py3_dist snakemake-storage-plugin-s3}
%endif
# For import-testing snakemake.gui
BuildRequires: %{py3_dist flask}
%if %{with gcs_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
@ -406,14 +400,20 @@ which will be automatically deployed to any execution environment.}
# No metapackage for “pep” extra because the following are not packaged:
# - python3-eido
# - python3-peppy
# Therefore, also no metapakge for “all” extra
%pyproject_extras_subpkg -n snakemake reports
%pyproject_extras_subpkg -n snakemake reports messaging
%prep
%autosetup -n snakemake-%{version} -p1
%setup -q -T -D -a 1 -c -n snakemake-%{version}
%py3_shebang_fix .
# 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}' \
snakemake/executors/jobscript.sh \
snakemake/executors/google_lifesciences_helper.py
# Copy and rename nano and vim extensions readmes for use in the main
# documentation directory.
for editor in nano vim
@ -422,41 +422,36 @@ do
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
# so upstream has not recorded a checksum in 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 >> 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 |
sha256sum -b snakemake/assets/data/tailwindcss/tailwind.css |
awk '{print $1}'
)"
EOF
%generate_buildrequires -p
export SETUPTOOLS_SCM_PRETEND_VERSION='%{srcversion}'
%generate_buildrequires
# Generate BRs for all supported extras to ensure they do not FTI
%pyproject_buildrequires -x reports,messaging
%build -p
export SETUPTOOLS_SCM_PRETEND_VERSION='%{srcversion}'
%build
%pyproject_wheel
%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
%install
%pyproject_install
%pyproject_save_files -l snakemake
# Mark license files in the asset bundle.
sed -r -i 's@^.*/(LICEN[CS]E|NOTICE)[^/]*$@%%license &@' %{pyproject_files}
@ -481,20 +476,20 @@ find '%{buildroot}%{_datadir}/vim/vimfiles' \
-type f -name 'README.*' -print -delete
%check -a
%check
# Even if we are running the tests, this is useful; it could turn up import
# errors that would only be revealed by tests we had to disable (e.g. due to
# network access).
%pyproject_check_import -e '*.tests*'
%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
@ -513,7 +508,6 @@ 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.
@ -521,58 +515,22 @@ k="${k-}${k+ and }not test_modules_peppy"
k="${k-}${k+ and }not test_pep_pathlib"
k="${k-}${k+ and }not test_peppy"
%if %{without conda_tests}
# All of these try to call conda info --json. We might experiment with making
# conda an unconditional BuildRequires, or with enabling the conda_tests bcond
# and filtering out the tests we cannot run, but we should wait for:
#
# F43FailsToInstall: python3-conda
# https://bugzilla.redhat.com/show_bug.cgi?id=2371696
k="${k-}${k+ and }not test_jupyter_notebook"
k="${k-}${k+ and }not test_jupyter_notebook_nbconvert"
k="${k-}${k+ and }not test_jupyter_notebook_draft"
%endif
# Flaky; so far, we have not attempted to understand or report these.
#
# 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"
# FAILED ../tests/tests.py::test_queue_input_dryrun -
# snakemake_interface_common.exceptions.WorkflowError: At least one job did not
# complete successfully.
# (produces no other useful output)
# 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 \
tests/tests.py \
%if %{with conda_tests}
../tests/tests_using_conda.py \
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
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

View file

@ -1,2 +1,2 @@
SHA512 (snakemake-9.14.6.tar.gz) = 3858d5610271fbf3617e3b88b10b55546ddb2eafffa929a882bf5584c91f85280fa7c5b25bae8951e4feb5aa9568ba51c0979c35b37472d03e1efc239392f1ae
SHA512 (snakemake-9.14.6-assets.tar.zst) = c58043d640c14cdb4057b515ee65d8c8eb76a4abf34d7ebae70cc929023df780ef234dd5a8fa9d76a96bb1aceda8dab1c8f5337d72ff6bb9ae7d6b82c10a16a7
SHA512 (snakemake-8.30.0.tar.gz) = f8e5f09377b55cd2394dbc6ce82e221a52a7f7a4a6fb70d57f72297ee5d3cb045f4fbbb24c589b6785d9edeaa0ce6ba13cb54f26470918166ed49af4497f0ebe
SHA512 (snakemake-8.30.0-assets.tar.zst) = beadfe2c8a2b41e927b20420cdec88670acc6111283f413260213d70e6e5f9e6007249b83f889a043810ab72b89e3963d5732be79873ace6637c3b7675c21e19