diff --git a/.gitignore b/.gitignore index 6554fb6..8624a3d 100644 --- a/.gitignore +++ b/.gitignore @@ -65,3 +65,77 @@ /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 diff --git a/.packit.yaml b/.packit.yaml deleted file mode 100644 index 2959457..0000000 --- a/.packit.yaml +++ /dev/null @@ -1,13 +0,0 @@ -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 diff --git a/0001-Revert-chore-work-around-setuptools-76-hash-mismatch.patch b/0001-Revert-chore-work-around-setuptools-76-hash-mismatch.patch deleted file mode 100644 index 509268a..0000000 --- a/0001-Revert-chore-work-around-setuptools-76-hash-mismatch.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 9d99c1c7fc2bb7ebfcba570fe64f07b0646f294a Mon Sep 17 00:00:00 2001 -From: "Benjamin A. Beasley" -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 - diff --git a/0001-chore-Add-license-texts-for-things-bundled-in-the-as.patch b/0001-chore-Add-license-texts-for-things-bundled-in-the-as.patch deleted file mode 100644 index 759db2d..0000000 --- a/0001-chore-Add-license-texts-for-things-bundled-in-the-as.patch +++ /dev/null @@ -1,677 +0,0 @@ -From 5d4175e75a0981d9d925ecde4297d3b568c403c2 Mon Sep 17 00:00:00 2001 -From: Ben Beasley -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 - - -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 didn’t 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 isn’t 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 - - -* [ ] 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.** - - - -## 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. - - ---------- - -Co-authored-by: Filipe G. Vieira <1151762+fgvieira@users.noreply.github.com> -Co-authored-by: Johannes Köster ---- - 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 - diff --git a/README.packit b/README.packit deleted file mode 100644 index 94a5d96..0000000 --- a/README.packit +++ /dev/null @@ -1,3 +0,0 @@ -This repository is maintained by packit. -https://packit.dev/ -The file was generated using packit 0.100.2.post1.dev4+g31a74ebd. diff --git a/get_assets b/get_assets index 85a81ca..c69a1cd 100755 --- a/get_assets +++ b/get_assets @@ -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}/snakemake/assets/")" +MTIME="$(stat --format='%Y' "${XDIR}/src/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}/snakemake" python3 <<'EOF' +PYTHONPATH="${PWD}/${XDIR}/src/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='snakemake/assets/data/vega-lite/vega-lite.js' +target='src/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}/snakemake/assets" + "${XDIR}/src/snakemake/assets" then echo 'MANUAL AUDIT REQUIRED' 1>&2 exit 1 fi # Remove license file and the directory containing it -rm -rv "${XDIR}/snakemake/assets/data/array-flat-polyfill" +rm -rv "${XDIR}/src/snakemake/assets/data/array-flat-polyfill" echo "--> Search for missed CC0-1.0 licenses" 1>&2 -if grep -ErinI '\bCC0\b' "${XDIR}/snakemake/assets" +if grep -ErinI '\bCC0\b' "${XDIR}/src/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}/snakemake/assets/" +ls -ld "${XDIR}/src/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}" \ - snakemake/assets/data | + src/snakemake/assets/data | zstdmt --ultra -22 > "${RESULT}" mv -v "${RESULT}" "${DIST_GIT}" diff --git a/snakemake-8.30.0-modified-assets.patch b/snakemake-9.1.1-modified-assets.patch similarity index 69% rename from snakemake-8.30.0-modified-assets.patch rename to snakemake-9.1.1-modified-assets.patch index 8946d82..6aa4419 100644 --- a/snakemake-8.30.0-modified-assets.patch +++ b/snakemake-9.1.1-modified-assets.patch @@ -1,7 +1,7 @@ -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 @@ +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 @@ version="0.6.2", ), # End copied/derived/adapted code in vega, included in vega/vega.js @@ -15,7 +15,7 @@ diff -Naur snakemake-8.30.0-original/snakemake/assets/__init__.py snakemake-8.30 version="5.2.0", ), "vega-lite/LICENSE": Asset( -@@ -366,13 +369,6 @@ +@@ -428,13 +431,6 @@ sha256="c2cfccb812fe482101a8f04597dfc5a9991a6b2748266c47ac91b6a5aae15383", version="2.1.1", ), @@ -29,12 +29,12 @@ diff -Naur snakemake-8.30.0-original/snakemake/assets/__init__.py snakemake-8.30 "clone/LICENSE": Asset( url="https://raw.githubusercontent.com/pvorb/clone/refs/tags/v{version}/LICENSE", sha256="3fb0857ef0133928cf72c88dfc464e931486e88778961eedec25585e2321507f", -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 +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 @@ -143,9 +143,6 @@ "@types-clone": Package( - license_path="@types-estree/LICENSE", + license_path="@types-clone/LICENSE", ), - "array-flat-polyfill": Package( - license_path="array-flat-polyfill/LICENSE", diff --git a/snakemake.rpmlintrc b/snakemake.rpmlintrc index 4a4b850..b0e2093 100644 --- a/snakemake.rpmlintrc +++ b/snakemake.rpmlintrc @@ -1,17 +1,12 @@ # It is normal that extras metapackages should not have documentation, or any # files at all. addFilter(r"\+\w+.noarch: W: no-documentation") -# These extras were removed with Snakemake 8.0 and have no equivalent -# replacements. -addFilter(r" obsolete-not-provided snakemake\+(azure|google-cloud)$") +# Removed in Snakemake 9.6 with no equivalent replacement. +addFilter(r" obsolete-not-provided snakemake\+(messaging)$") # 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") diff --git a/snakemake.spec b/snakemake.spec index a2dd730..6bb8fdb 100644 --- a/snakemake.spec +++ b/snakemake.spec @@ -1,7 +1,10 @@ # Work around a series of circular test dependencies: # -# python-snakemake-interface-report-plugins -# ↓↑ ⬐───╮ +# ⬐─python-snakemake-logger-plugin-rich🠔────╮ +# python-snakemake-interface-logger-plugins─╯ +# │↑python-snakemake-interface-scheduler-plugins +# │││↑ python-snakemake-interface-report-plugins +# ↓│↓│ ↓↑ ⬐───╮ # snakemake → python-snakemake-interface-executor-plugins⬎ # ↑↑↑ │ ⬑────────────────────python-snakemake-executor-plugin-cluster-generic # │││ ↳python-snakemake-interface-storage-plugins─────────────────╮ @@ -12,17 +15,26 @@ # # A good build order is: # -# 1. BOOTSTRAP: python-snakemake-interface-executor-plugins, -# python-snakemake-interface-storage-plugins, +# 1. BOOTSTRAP: +# python-snakemake-interface-common +# 2. BOOTSTRAP: +# python-snakemake-interface-executor-plugins +# python-snakemake-interface-logger-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-interface-scheduler-plugins +# python-snakemake-interface-storage-plugins +# 3. BOOTSTRAP: snakemake +# 4. python-snakemake-executor-plugin-cluster-generic +# python-snakemake-logger-plugin-rich # python-snakemake-storage-plugin-fs -# 4. snakemake, python-snakemake-interface-executor-plugins, -# python-snakemake-interface-storage-plugins, +# python-snakemake-storage-plugin-http +# python-snakemake-storage-plugin-s3 +# 5. snakemake +# python-snakemake-interface-executor-plugins +# python-snakemake-interface-logger-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 @@ -31,47 +43,35 @@ # 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 - -%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.} +%bcond gcs_tests 1 Name: snakemake -Version: 8.30.0 +Version: 9.14.6 +%global srcversion %(echo '%{version}' | cut -d '^' -f 1) Release: %autorelease Summary: Workflow management system to create reproducible and scalable data analyses -# The primary license for Snakemake is MIT; versioneer contributes Unlicense, -# and web assets contribute a variety of other licenses. +# 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: -# - snakemake/assets/data/vega/vega.js +# - src/snakemake/assets/data/vega/vega.js # # BSD-3-Clause AND MIT: -# - snakemake/assets/data/vega-lite/vega-lite.js +# - src/snakemake/assets/data/vega-lite/vega-lite.js # # BSD-3-Clause AND ISC AND MIT: -# - snakemake/assets/data/vega-embed/vega-embed.js +# - 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. -# - snakemake/assets/data/prop-types/prop-types.min.js -# - snakemake/assets/data/tailwindcss/tailwind.css +# - src/snakemake/assets/data/prop-types/prop-types.min.js +# - src/snakemake/assets/data/tailwindcss/tailwind.css # -# 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 == +# == License breakdown: src/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 for snakemake/assets/data/vega-lite/vega-lite.js == +# == 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: # @@ -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 for snakemake/assets/data/vega-embed/vega-embed.js == +# == 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: # @@ -133,8 +133,7 @@ License: %{shrink: BSD-3-Clause AND ISC AND MIT AND - MIT-0 AND - Unlicense + MIT-0 } URL: https://snakemake.readthedocs.io/en/stable/index.html %global forgeurl https://github.com/snakemake/snakemake @@ -152,17 +151,6 @@ 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. # @@ -170,12 +158,19 @@ Patch: 0001-chore-Add-license-texts-for-things-bundled-in-the-as.patch # 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-8.30.0-modified-assets.patch +Patch: snakemake-9.1.1-modified-assets.patch + +BuildSystem: pyproject +# Generate BR’s 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'} + } BuildArch: noarch -BuildRequires: python3-devel - BuildRequires: help2man # Snakemake uses (unversioned) "python" as the default remote execution @@ -208,18 +203,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 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 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. -# snakemake/assets/data/react/react.production.min.js +# src/snakemake/assets/data/react/react.production.min.js Provides: bundled(npm(react)) = 18.2.0 -# snakemake/assets/data/react/react-dom.production.min.js +# src/snakemake/assets/data/react/react-dom.production.min.js Provides: bundled(npm(react-dom)) = 18.2.0 -# snakemake/assets/data/vega/vega.js +# src/snakemake/assets/data/vega/vega.js Provides: bundled(npm(vega)) = 5.21.0 -# Bundled in snakemake/assets/data/vega/vega.js as dependencies: +# 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 @@ -249,7 +244,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 snakemake/assets/__init__.py. +# 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 @@ -271,8 +266,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 snakemake/assets/data/vega/vega.js in the form of copied, derived, -# or adapted snippets. See notes in snakemake/assets/__init__.py. +# 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: @@ -286,21 +281,21 @@ Provides: bundled(npm(regression)) = 2.0.1 Provides: bundled(npm(science)) = 1.9.3 Provides: bundled(npm(shapefile)) = 0.6.2 -# snakemake/assets/data/vega-lite/vega-lite.js +# 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 snakemake/assets/data/vega-lite/vega-lite.js as dependencies: -# See notes in snakemake/assets/__init__.py. +# 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 snakemake/assets/__init__.py, as well as dependencies in +# 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. @@ -308,24 +303,25 @@ 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 snakemake/assets/data/vega-lite/vega-lite.js in the form of +# Present in src/snakemake/assets/data/vega-lite/vega-lite.js in the form of # copied, derived, or adapted snippets. See notes in -# snakemake/assets/__init__.py. +# src/snakemake/assets/__init__.py. #Provides: bundled(npm(hashlru)) = 1.0.4 -# snakemake/assets/data/vega-embed/vega-embed.js +# 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 snakemake/assets/data/vega-embed/vega-embed.js as dependencies: -# See notes in snakemake/assets/__init__.py. +# 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 snakemake/assets/__init__.py, as well as dependencies in +# 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. @@ -334,9 +330,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 snakemake/assets/data/vega-embed/vega-embed.js in the form of +# Present in src/snakemake/assets/data/vega-embed/vega-embed.js in the form of # copied, derived, or adapted snippets. See notes in -# snakemake/assets/__init__.py. +# 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 @@ -346,23 +342,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 -# snakemake/assets/data/prop-types/prop-types.min.js +# 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. It’s # 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} -# For tests/tests_using_conda.py +# 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. BuildRequires: conda # For test_conda_pin_file, test_conda_named, test_conda_function BuildRequires: ripgrep @@ -391,8 +387,18 @@ 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 @@ -400,20 +406,14 @@ BuildRequires: %{py3_dist google-cloud-storage} # No metapackage for “pep” extra because the following are not packaged: # - python3-eido # - python3-peppy -%pyproject_extras_subpkg -n snakemake reports messaging +# Therefore, also no metapakge for “all” extra +%pyproject_extras_subpkg -n snakemake reports %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,36 +422,41 @@ 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 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 <> src/snakemake/assets/__init__.py <