cxroots 3.2.0-1
Package Information
| Description | find all roots of a function in the complex plane (Python 3) cxroots is a Python package for finding all the roots of a function, f(z), of a single complex variable within a given contour, C, in the complex plane. It requires only that both: f(z) has no roots or poles on C f(z) is analytic in the interior of C The implementation is primarily based on [KB] and evaluates contour integrals involving f(z) and its derivative f'(z) to determine the roots. If f'(z) is not provided then it is approximated using a finite difference method. The roots are further refined using Newton-Raphson if f'(z) is given or Muller's method if not. This package installs the library for Python 3. |
|---|---|
| Maintainer | Drew Parsons <dparsons@debian.org> |
| Changed By | Drew Parsons <dparsons@debian.org> |
| Sponsor | dparsons@debian.org |
| Distribution | unstable |
| Architecture | all |
| VCS | git: https://salsa.debian.org/python-team/packages/cxroots.git (browse) |
| Closes | #1153847 |
| Tracker | https://tracker.debian.org/pkg/cxroots |
| Uploaded | 2 hours ago |
New Package Report
.changes
| Date | Fri, 13 Nov 2026 18:09:08 +0100 |
|---|---|
| Source | cxroots |
| Version | 3.2.0-1 |
| Changed-By | Drew Parsons <dparsons@debian.org> |
| Architecture | source all |
| Distribution | unstable |
Changelog
cxroots (3.2.0-1) unstable; urgency=medium
.
* Initial release. (Closes: #1153847)
* add debian patches
- build_docs.patch enables debian doc build without
sphinx_github_changelog (which is not yet packaged for debian),
and linking intersphinx to local doc packages.
- build_package.patch blocks "installation" of LICENSE and
README.md files (use debian scripts to install on doc dir),
and uses upstream _version.py instead of regenerating.
- manage_tests.patch skips test_rootfinding_f[cluster_10^-4-circle]
in test_cluster.py, see upstream Issue#564
* debian/rules: after dh_clean remove image files generated by doc build.dsc
| Priority | optional |
|---|---|
| Component | main |
| Package-List | python-cxroots-doc deb doc optional arch=all python3-cxroots deb python optional arch=all |
| Section | doc |
debian/copyright
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Source: https://github.com/rparini/cxroots Upstream-Name: cxroots Upstream-Contact: Robert Parini <robert.parini@gmail.com> Files: * Copyright: 2017-2026, Robert Parini License: BSD-3-clause Files: debian/* Copyright: 2026 Drew Parsons <dparsons@debian.org> License: BSD-3-clause Comment: debian packaging follows the upstream licence License: BSD-3-clause Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: . * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. . * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. . * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
DFSG Assistant LLM REVIEW 1 blocker, 0 important, 3 minor
This is an LLM based review using a Debian Inference based workflow. It was not written by a member of the DFSG team and has not been checked by one. It is not a decision on the package: it may be wrong, and it may have missed things.
Reviewed 1 hour ago.
Report
DFSG NEW review for cxroots version 3.2.0-1
Summary
- Licensing is DFSG-compliant and
debian/copyrightis accurate: No - Packaging is of good quality: Yes
- Issues: 1 blocker, 0 important, 3 minor
- debian/watch: version 5
- debian/copyright: machine-readable
- Scan before the review: 49 found
Licensing
Everything in the tree is under a free licence (BSD-3-Clause for upstream's code, MIT / OFL-1.1 / Matplotlib for the assets under docs/_static), so there is no DFSG problem with the terms themselves. debian/copyright is nevertheless incomplete and partly wrong: its single Files: * stanza declares the whole tree to be BSD-3-clause by Robert Parini, while the committed prebuilt HTML under docs/ bundles jQuery, sphinx_rtd_theme's CSS/JS, Font Awesome, the Lato webfonts, Sphinx's own static files and Matplotlib's plot_directive.css, whose holders and licences it never names, and the MIT and OFL-1.1 texts those licences require are absent from the package. The Python sources, docs_src/ and README_resources/ are correctly covered by the BSD-3-Clause stanza.
Packaging
The packaging is sound: pybuild with the PEP 517 plugin, debhelper compat 14, a correct two-package split (library plus a -doc package built with dh-sequence-sphinxdoc), an autopkgtest, current Standards-Version 4.7.4, Vcs-* and upstream metadata, and the three patches documented in the changelog. Only minor defects: the patches carry no DEP-3 headers, build_docs.patch points numpy's intersphinx inventory at a path no package installs, and that patch leaves an empty Changelog page in the installed manual.
Issues
blocker licensing 1. Files: * declares the third-party theme, jQuery, font and Matplotlib files under docs/_static to be BSD-3-clause by Robert Parini, and their licence texts are missing ◂
- Files:
debian/copyright:6-10,docs/_static/jquery.js:1,docs/_static/css/theme.css:2-3,docs/_static/_sphinx_javascript_frameworks_compat.js:3,docs/_static/plot_directive.css:8-9,docs/_static/css/fonts/fontawesome-webfont.svg:7,docs/_static/css/fonts/fontawesome-webfont.eot,docs/_static/js/theme.js,docs/_static/css/badge_only.css,docs/_static/fonts/Lato/lato-bold.eot,docs/_static/fonts/Lato/lato-bolditalic.eot,docs/_static/fonts/Lato/lato-italic.eot,docs/_static/fonts/Lato/lato-regular.eot,docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot,docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot,docs/_static/fonts/Lato/lato-regular.woff,docs/_static/css/fonts/lato-normal.woff - Basis: checked, in the package or with a reference tool
- Evidence:
docs/_static/jquery.js:1:/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */;docs/_static/css/theme.css:2-3:Font Awesome 4.7.0 by @davegandy ... License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License);_sphinx_javascript_frameworks_compat.js:3:* Copyright Sphinx contributors;plot_directive.css:8-9::copyright: Copyright 2020-* by the Matplotlib development team./:license: Matplotlib;fontawesome-webfont.svg:7:Copyright Dave Gandy 2016. All rights reserved.— all covered bydebian/copyright:6-10:Files:/*/Copyright:/2017-2026, Robert Parini/License: BSD-3-clause. - Problem: docs/ is upstream's committed, prebuilt Sphinx HTML tree (present in cxroots_3.2.0.orig.tar.gz, 19 months old) and its _static/ directory holds third-party material that is not Robert Parini's and not BSD-3-clause: jQuery 3.6.0 (MIT, OpenJS Foundation), sphinx_rtd_theme's theme.css/theme.js/badge_only.* (MIT), Font Awesome 4.7.0 (OFL-1.1 font, MIT CSS, Dave Gandy), Sphinx's doctools.js/basic.css/_sphinx_javascript_frameworks_compat.js (copyright Sphinx contributors), Matplotlib's plot_directive.css (Matplotlib licence, Matplotlib development team) and the Lato webfonts (OFL-1.1). debian/copyright therefore describes those files with the wrong holder and the wrong licence, which is a fault wherever the files are, since the source package distributes them. In addition neither the MIT nor the OFL-1.1 text is anywhere in the package (LICENSE is BSD-3-Clause; neither licence is in /usr/share/common-licenses), while MIT requires its notice to be reproduced and the OFL requires the licence to accompany the font. Policy 2.3 extends this to the binary: Sphinx copies the same theme CSS/JS and webfonts into python-cxroots-doc's /usr/share/doc/python-cxroots-doc/html, so that package's copyright needs those notices too.
- Fix: Add a
Files: docs/_static/*stanza (or several, one per licence) naming each holder — OpenJS Foundation (jQuery), Read the Docs / Dave Gandy (sphinx_rtd_theme, Font Awesome), Sphinx contributors, Matplotlib development team, Lato's author — with the right short names (MIT, OFL-1.1, Matplotlib), and add the MIT, OFL-1.1 and Matplotlib licence texts as stand-alone License paragraphs. Extend the same description to the theme assets installed in python-cxroots-doc. Excluding the prebuilt docs/ tree (Files-Excluded with a repacked tarball) would remove the source-side part but not the obligation for the assets Sphinx installs.
minor packaging 2. The three quilt patches have no DEP-3 headers ◂
- Files:
debian/patches/build_docs.patch:1,debian/patches/build_package.patch:1,debian/patches/manage_tests.patch:1 - Basis: checked, in the package or with a reference tool
- Evidence: Each file starts
Index: cxroots/docs_src/conf.py,Index: cxroots/pyproject.toml,Index: cxroots/cxroots/tests/test_cluster.pyfollowed directly by---/+++; there is noDescription:,Origin:,Forwarded:orBug:field. - Problem: Established Debian practice (DEP-3) is that a patch says what it does, where it comes from and whether it was sent upstream, so a later maintainer can judge it without reverse-engineering the diff. Here the purpose is only in debian/changelog, and manage_tests.patch's reference to upstream Issue#564 is a bare code comment inside the change, so neither its origin nor its forwarding state is recorded.
- Fix: Give each patch a DEP-3 header:
Description:(in build_docs.patch, say the doc build is made offline and sphinx_github_changelog-free),Origin:/Author:, andForwarded:/Bug:— build_package.patch and manage_tests.patch are candidates for upstream; mark build_docs.patchForwarded: not-needed.
minor packaging 3. build_docs.patch points numpy's intersphinx inventory at /usr/share/doc/python-numpy, which no binary package installs ◂
- Files:
debian/patches/build_docs.patch (@@ -168,7 +168,7 @@) - Basis: checked, in the package or with a reference tool
- Evidence:
"numpy": ("http://docs.scipy.org/doc/numpy/", ("/usr/share/doc/python-numpy/html/objects.inv", None)),whileapt-cache show python-numpyreportsE: No packages foundand the numpy documentation binary ispython-numpy-doc(which debian/control already Build-Depends on for this very purpose); the two sibling lines correctly use/usr/share/doc/python-matplotlib-doc/...and/usr/share/doc/python-scipy-doc/.... - Problem: The path does not exist, so Sphinx cannot load the local inventory, falls back to fetching http://docs.scipy.org/doc/numpy/ (blocked by the proxy that debian/rules sets), warns, and leaves every numpy cross-reference in the installed manual unresolved. The build still succeeds because debian/rules passes
-Nbut not-W. - Fix: Use
/usr/share/doc/python-numpy-doc/html/objects.inv.
minor packaging 4. The installed manual has an empty Changelog page because the patch disables sphinx_github_changelog but leaves its directive in changelog.rst ◂
- Files:
debian/patches/build_docs.patch (@@ -47,7 +47,7 @@),docs_src/changelog.rst:3-8 - Basis: checked, in the package or with a reference tool
- Evidence: The patch only comments the extension out:
-# "sphinx_github_changelog",/+# "sphinx_github_changelog",, whiledocs_src/changelog.rstconsists of.. changelog::with:changelog-url:,:github:and:pypi:options — the directive that extension provides. - Problem: With the extension removed the
changelogdirective is unknown to Sphinx: it emits an unknown-directive warning and renders nothing, and changelog.rst is in index.rst's Getting Started toctree, so python-cxroots-doc ships a Changelog section that is blank. - Fix: Render upstream's changelog.md in the Debian doc build (for example as a static page or via a literalinclude of a converted changelog.rst), or take changelog.rst out of the toctree when the extension is not available.
Verified ◂
- debian/copyright is machine-readable (DEP-5, Format 1.0) with two Files stanzas (
*,debian/*) and one stand-alone BSD-3-clause text; the short name and the quoted text match the upstream LICENSE exactly, and there is no Files-Excluded. - The whole of cxroots/ (including cxroots/tests/ and cxroots/contours/), docs_src/'s .py/.rst/.yml files and README_resources/ is upstream's own code and carries no notice but the BSD-3-Clause LICENSE; the only third-party material in the tree is under docs/_static (issue 1).
- docs/ is the prebuilt Sphinx output of an older run of docs_src/create_docs (its .buildinfo and doctrees are dated with the rest of the tarball). Debian's packaging does not install it: python-cxroots-doc.docs installs
.pybuild/html, which debian/rules builds from docs_src/ inexecute_after_dh_auto_build-indep. - Prescan minified files: docs/_static/jquery.js, docs/_static/css/theme.css, docs/_static/js/theme.js and docs/_static/css/badge_only.css are the third-party jQuery/sphinx_rtd_theme assets of issue 1; docs/searchindex.js is generated by Sphinx from the docs_src/*.rst present in the tree.
- Prescan PDFs (docs/plot_directive/.pdf, docs/_downloads//.pdf): plot_directive renderings whose generator scripts are in the tree (docs_src/docex_contour.py, docex_tutorial.py, and the _downloads//*.py copies).
- Prescan binary data: docs/.doctrees/.doctree, docs_src/.doctrees/.doctree, docs_src/.doctrees/environment.pickle and docs/objects.inv are Sphinx pickles and inventory for the docs_src/*.rst in the tree.
- The seven .eot webfonts the scan lists (docs/_static/css/fonts/fontawesome-webfont.eot, docs/_static/fonts/Lato/lato-bold.eot, lato-bolditalic.eot, lato-italic.eot, lato-regular.eot, docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot, roboto-slab-v7-regular.eot) are the EOT cuts of the same Font Awesome, Lato and Roboto Slab webfonts as the woff/ttf/svg copies beside them: binary font files, not read, and part of issue 1 (third-party fonts whose holders and licences debian/copyright does not state).
- The prescan's missing holder for docs/_static/plot_directive.css (Matplotlib development team) is part of issue 1 rather than a separate finding: Policy 2.3 alone would make a holder missing for a file no binary installs minor, but here the licence stated is wrong as well and its text is absent.
- Standards-Version 4.7.4 against Policy 4.7.4.1: current; debhelper-compat 14 is the level debhelper 14.5 on this system recommends, and at compat 14 dh_gencontrol adds the relationship substvars itself, so naming ${python3:Depends}/${misc:Depends} is fine.
- Build-Depends names checked with apt-cache: python-numpy-doc, python-matplotlib-doc, python-scipy-doc, python3-sphinxcontrib.bibtex, python3-sphinxcontrib.programoutput and pybuild-plugin-pyproject all exist; python-numpy does not (issue 3). python3-matplotlib Depends on python3-pil, which test_plotting.py needs for its gif output.
- debian/tests/control: per the autopkgtest specification the Test-Command runs with cwd at the unpacked source root, so
python3 -m pytestfinds pytest.ini and cxroots/tests; py3versions -s works because python3-all is a test dependency and Debian's python modules live in the shared /usr/lib/python3/dist-packages. - Install and doc files are consistent: python3-cxroots.docs installs LICENSE and README.rst, python-cxroots-doc.docs installs the Sphinx HTML, and python-cxroots-doc.doc-base is well-formed (HTML index and files).
- debian/control: correct package split, Architecture: all for both, Section python/doc, Recommends: python3-matplotlib for upstream's
plotextra, Suggests the -doc package; Vcs-Git/Vcs-Browser, Homepage and debian/upstream/metadata are present; changelog is an initial 3.2.0-1 to unstable closing #1153847. - I read every file under debian/ except debian/watch (which is not reviewed here); the
.. changelog::warning and intersphinx consequences are reasoned from Sphinx's handling of unknown directives and missing inventories, not observed in a build. - uscan found the packaged version as the newest upstream release (upstream
3.2.0, packaged3.2.0).
Not confirmed ◂
- Whether the built python3-cxroots Depends actually contains python3-numpy, python3-scipy, python3-numpydoc, python3-mpmath and python3-rich. dh_python3's --guess-deps (on by default) derives them from the installed dist-info METADATA, and Debian's packages ship the pydist data it needs, but I could not run the build to see the generated control fields.
- Whether python3-sphinx-rtd-theme's Debian package ships the Lato/Roboto Slab webfonts, i.e. whether python-cxroots-doc's HTML also contains the OFL font files as well as the theme's CSS and JS; that package is not installed on this reviewing system, so the binary side of issue 1 is stated for the CSS/JS on the strength of html_theme = sphinx_rtd_theme alone.
- I did not open the font and image binaries (the .eot and .woff/.ttf/.woff2 files under docs/_static/fonts and docs/_static/css/fonts, docs/_images/, docs/_downloads/.png, README_resources/readme_example.png) or the .doctree pickles; they are judged by name, location and the files around them.
Proposed changes ◂
None.
Uploader's response to the LLM review
Waiting for the uploader's response until , because the review found serious issues.