DFSG NEW Queue

DFSG, Licensing & New Packages Team

Review: python-adjusttext 1.4.0+ds-1

Package Information

Descriptionautomatic label placement for Matplotlib plots

adjustText improves the placement of text labels in Matplotlib plots by iteratively moving them to reduce overlaps with other labels and data points. It can also draw arrows connecting labels to the points they describe.

The adjustment algorithm supports scatter plots, multiple subplots and configurable constraints on label movement.

MaintainerDebian Python Team <team+python@tracker.debian.org>
Changed BySteffen Moeller <moeller@debian.org>
Sponsormoeller@debian.org
Distributionunstable
Architectureall
VCSgit: https://salsa.debian.org/python-team/packages/python-adjusttext.git (browse)
Closes#1150547
Trackerhttps://tracker.debian.org/pkg/python-adjusttext
Uploaded28 days ago

New Package Report

.changes◂
DateSat, 10 Oct 2026 19:31:39 +0200
Sourcepython-adjusttext
Version1.4.0+ds-1
Changed-BySteffen Moeller <moeller@debian.org>
Architecturesource all
Distributionunstable
Changelog◂
python-adjusttext (1.4.0+ds-1) unstable; urgency=medium
 .
   * Initial release. (Closes: #1150547)
.dsc◂
Sectionpython
Priorityoptional
Componentmain
Package-Listpython3-adjusttext deb python optional arch=all
debian/copyright◂
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Source: https://github.com/Phlya/adjustText
Upstream-Name: adjustText
Upstream-Contact: Ilya Flyamer <flyamer@gmail.com>
Files-Excluded:
 docs/build
 figures/volcano_data.csv
 figures/page-impressions.csv
Comment:
 Upstream declares Expat (MIT). Additional third-party terms and unverified
 permissions are recorded below. See debian/README.source for details.

Files:
 *
Copyright:
 2017 Ilya Flyamer <flyamer@gmail.com>
License: Expat

Files: adjustText/__init__.py
Copyright: 2017 Ilya Flyamer <flyamer@gmail.com>
           2019 ImportanceOfBeingErnest
           2019 Kyle McDonald
License: Expat and CC-BY-SA-4.0
Comment:
 get_bboxes_pathcollection adapts ImportanceOfBeingErnest's answer of
 5 March 2019, published under CC BY-SA 4.0:
 https://stackoverflow.com/a/55007838
 https://stackoverflow.com/users/4124317/importanceofbeingernest
 The adaptation changes the function name and return transformation,
 and leaves drawing the figure to the caller.
 .
 intersect is modified from Kyle McDonald's gist of 2 July 2019:
 https://gist.github.com/kylemcdonald/6132fc1c29fd3767691442ba4bc84018
 The gist has no license notice; the author's permission remains unverified.

Files: adjustText/arrops.py
Copyright: 2016 Open2C Developers
           2015 andrew
License: Expat and CC-BY-SA-3.0
Comment:
 Copied from bioframe.core.arrops, whose project license is Expat:
 https://github.com/open2c/bioframe/blob/master/LICENSE
 arange_multi adapts andrew's vrange function, published on 2 March 2015
 under CC BY-SA 3.0:
 https://codereview.stackexchange.com/questions/83018/vectorized-numpy-version-of-arange-with-multiple-start-stop
 https://codereview.stackexchange.com/users/67277/andrew
 The adaptation adds stops/lengths handling and changes the docstring.

Files: docs/source/*
Copyright: 2018 Ilya Flyamer <flyamer@gmail.com>
License: Expat
Comment:
 docs/source/conf.py identifies the documentation copyright holder.
 README.md also credits Christophe Van Neste for the documentation.

Files: docs/source/Examples.ipynb
       figures/Examples.ipynb
Copyright: 2017-2018 Ilya Flyamer <flyamer@gmail.com>
           2013 homebrand
           Kim Gerdes
License: Expat and CC-BY-SA-3.0
Comment:
 The together/eucs/covers example adapts homebrand's question of
 29 September 2013, originally published under CC BY-SA 3.0:
 https://stackoverflow.com/questions/19073683/
 https://stackoverflow.com/users/1543941/homebrand
 The notebooks replace the annotation loop with calls to adjust_text.
 Later revisions of the online question may have different terms.
 .
 Other examples credit external blog posts, Stack Overflow discussions,
 and Kim Gerdes's statistics from Universal Dependencies v2.2.

Files: figures/mtcars.csv
Copyright:
 1981 Harold V. Henderson und Paul F. Vellemandie
License: considered public domain, used in R distributed with Debian
 Appeared in „Building Multiple Regression Models Interactively“ von
 im Juni 1981 the journal Biometrics (Volume 37, Issue 2, pp. 391–411)
Comment:
 The files
  figures/volcano_data.csv with Topographic Information on Auckland's
  Maunga Whau Volcano: the data set gives the height of the volcano in
  a 10 x 10 meter grid.
 and
  figures/page-impressions.csv
 are not redistributed since no license information could be found.


Files: debian/*
Copyright:
 2026 Steffen Moeller <moeller@debian.org>
License: Expat

License: Expat
 Permission is hereby granted, free of charge, to any person obtaining a
 copy of this software and associated documentation files (the "Software"),
 to deal in the Software without restriction, including without limitation
 the rights to use, copy, modify, merge, publish, distribute, sublicense,
 and/or sell copies of the Software, and to permit persons to whom the
 Software is furnished to do so, subject to the following conditions:
 .
 The above copyright notice and this permission notice shall be included
 in all copies or substantial portions of the Software.
 .
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
 CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

License: BSD-2-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.
 .
 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.

License: BSD-3-clause
 Redistribution and use in source and binary forms of the theme, 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.
 * The names of the contributors may not be used to endorse or promote
   products derived from this software without specific prior written
   permission.
 .
 THIS THEME 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 OWNER 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 THEME, EVEN IF ADVISED OF THE
 POSSIBILITY OF SUCH DAMAGE.

License: CC-BY-SA-3.0
 The adapted Code Review and Stack Overflow contributions are licensed
 under the Creative Commons Attribution-ShareAlike 3.0 Unported license.
 On Debian systems, the full license text can be found in
 /usr/share/common-licenses/CC-BY-SA-3.0.

License: CC-BY-SA-4.0
 The adapted Stack Overflow contribution is licensed under the Creative
 Commons Attribution-ShareAlike 4.0 International license.
 On Debian systems, the full license text can be found in
 /usr/share/common-licenses/CC-BY-SA-4.0.

Review Information

accepted — allocated to awm 25 days ago, started 25 days ago, completed 25 days ago.

Final Comment

Hi,

Some issues found during the review which you may wish to resolve. The use of a valid short name for the licesing of figures/mtcars.csv is probably the only strictly necessary one, to bring the debian/copyright into syntactic correctness.

  1. [minor] [licensing] intersect in adjustText/init.py is adapted from a gist with no licence; permission unverified
  • Files: adjustText/init.py (lines 21-32, comment # Modified from https://gist.github.com/kylemcdonald/... ); debian/copyright Files: adjustText/__init__.py stanza
  • Evidence: The source comment reads # Modified from https://gist.github.com/kylemcdonald/6132fc1c29fd3767691442ba4bc84018; debian/copyright itself states The gist has no license notice; the author's permission remains unverified. yet the stanza labels the file only License: Expat and CC-BY-SA-4.0, which does not cover this function.
  • Problem: A third-party-derived function whose underlying permission has not been confirmed is being redistributed. This is the one place where debian/copyright is accurate but cannot assign a licence; a truthful DD would want the provenance closed before acceptance.
  • Fix: Ask upstream to rewrite the ~12-line segment-intersection helper (trivial, standard algorithm) or obtain/gist-verify a licence, then it stays covered by the file's own Expat grant. Update the stanza Comment when resolved.
  1. [important] [licensing] figures/mtcars.csv uses a prose License synopsis, not a copyright-format short name, with garbled text
  • Files: debian/copyright Files: figures/mtcars.csv stanza
  • Evidence: License: considered public domain, used in R distributed with Debian and Copyright: 1981 Harold V. Henderson und Paul F. Vellemandie with a trailing German sentence fragment (Appeared in ... von im Juni 1981 the journal Biometrics).
  • Problem: copyright-format 1.0 requires the License synopsis to be a short name (no spaces); prose here is invalid and no matching License paragraph supplies text. The holder line also mixes German (und) and a misspelling (Vellemandie). The underlying claim (factual Motor Trend data, effectively public domain, shipped with R) is fine for DFSG.
  • Fix: Use License: public-domain (a defined short name) and move the explanation plus a corrected bibligraphic note („Building Multiple Regression Models Interactively“, Biometrics 37(2), 391-411, June 1981, Henderson & Velleman) into the stanza body/Comment.
  1. [minor] [packaging] Standards-Version one point behind current
  • Files: debian/control (line with Standards-Version)
  • Evidence: Standards-Version: 4.7.4; the reviewing system's Debian Policy is 4.7.4.1 (released 2026-03-31).
  • Problem: Initial upload dated October 2026 could trivially claim the current version; stale on day one.
  • Fix: Bump to 4.7.4.1 (no policy changes expected to apply).
  1. [minor] [packaging] debian/README.source contradicts the actual source provenance
  • Files: debian/README.source (opening paragraph)
  • Evidence: It includes generated documentation and bundled JavaScript, covered by debian/copyright and This revision does not repack the archive or modify upstream code.
  • Problem: The archive is in fact repacked (1.4.0+ds): docs/build and two CSVs are excluded, and the tree and tarball contain no JavaScript and no copyright stanza for any; the text misleads a future maintainer about what was removed and how.
  • Fix: Reword: the 1.4.0 source is the upstream GitHub archive minus the Files-Excluded items (sphinx docs/build output and the two unlicensed CSVs), and the package is repacked with the +ds suffix.
  1. [minor] [packaging] The repack suffix is not removed before versions are compared
  • Files: debian/watch
  • Evidence: uscan compares 1.4.0+ds with upstream's 1.4.0 (status: only older package available)
  • Problem: The packaged version carries a repack suffix that debian/watch does not remove before comparing, so uscan compares it as it is with upstream's version and never finds them equal.
  • Fix: Remove the suffix for the comparison, with Dversion-Mangle: auto

Thanks!

Back to Dashboard | View all reviews for this package