Review: python-newspaper 0.2.8-1
Package Information
| Description | Python3 library for article web scraping and curation Scrape articles on the web and extract news url, text, top image, keywords, summary, author, google trending terms. It supports multiple languages, and proxies. |
|---|---|
| Maintainer | Debian Python Team <team+python@tracker.debian.org> |
| Changed By | Jérémy Lal <kapouer@melix.org> |
| Sponsor | kapouer@melix.org |
| Distribution | unstable |
| Architecture | all |
| VCS | git: https://salsa.debian.org/python-team/packages/python3-newspaper.git (browse) |
| Closes | #1151034 |
| Tracker | https://tracker.debian.org/pkg/python-newspaper |
| Uploaded | 2 days ago |
New Package Report
.changes
| Date | Fri, 16 Oct 2026 15:44:57 +0200 |
|---|---|
| Source | python-newspaper |
| Version | 0.2.8-1 |
| Changed-By | Jérémy Lal <kapouer@melix.org> |
| Architecture | source all |
| Distribution | unstable |
Changelog
python-newspaper (0.2.8-1) unstable; urgency=low . * Initial release (Closes: #1151034)
.dsc
| Component | main |
|---|---|
| Package-List | python3-newspaper deb python optional arch=all |
| Section | python |
| Priority | optional |
debian/copyright
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: newspaper3k Source: https://github.com/codelucas/newspaper/ Files: * Copyright: 2013 Lucas Ou-Yang License: Expat Files: newspaper/parsers.py newspaper/extractors.py Copyright: Xavier Grangier License: Apache-2.0 Comment: Original work at https://github.com/grangier/python-goose is unreachable. Files: newspaper/resources/text/* Copyright: 2001-2025 The Apache Software Foundation License: Apache-2.0 Comment: Most stopwords are probably taken from Lucene's StopAnalyzer, see https://github.com/apache/lucene/tree/main/lucene/analysis/common/src/resources/org/apache/lucene/analysis Files: debian/* Copyright: 2026 Jérémy Lal <kapouer@melix.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: Apache-2.0 Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at . http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. . On Debian systems, the complete text of the Apache License 2.0 can be found in "/usr/share/common-licenses/Apache-2.0"
DFSG Assistant LLM REVIEW 0 blocker, 1 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 day ago.
Report
DFSG NEW review for python-newspaper version 0.2.8-1
Summary
- Licensing is DFSG-compliant and
debian/copyrightis accurate: No - Packaging is of good quality: No
- Issues: 0 blocker, 1 important, 3 minor
- debian/watch: version 5
- debian/copyright: machine-readable
- Scan before the review: nothing found
Licensing
All files carry free licences: MIT/Expat for the newspaper code, Apache-2.0 for the two python-goose-derived modules and for the stopword lists. Two points make debian/copyright not fully accurate: the specific stanza for newspaper/extractors.py/parsers.py overrides the catch-all and drops Lucas Ou-Yang, whose copyright notice is in extractors.py itself; and the Apache copyright over all stopword lists rests on a guess, since only stopwords-fr.txt carries an ASF header. No DFSG violation was found.
Packaging
The packaging is close: DEP-5 copyright, compat 14, dh with pybuild, py3dist-overrides for jieba, salsa-ci and gbp configuration. Two things need fixing: the upstream requirements that feed install_requires still name tinysegmenter, which the Debian patch removes and which has no Debian package, plus unused feedfinder2/PyYAML; and the Vcs-Browser URL is a typo pointing at a non-existent repository.
Issues
1. [important] [packaging] install_requires still lists tinysegmenter (removed by a patch) and other unused packages
- Files:
requirements.txt:13,requirements.txt:3,requirements.txt:10,newspaper3k.egg-info/requires.txt:13,debian/patches/replace-tinysegmenter-by-icu.patch - Basis: checked, in the package or with a reference tool
- Evidence:
requirements.txt:tinysegmenter==0.3,PyYAML>=3.11,feedfinder2>=0.0.4;setup.pydoesinstall_requires=requiredfrom that file; the patch removes the onlyimport tinysegmenter. - Problem:
debian/patches/replace-tinysegmenter-by-icu.patchreplaces the tinysegmenter use with PyICU, yet the package metadata still requires it. dh_python3(1) translates requires.txt/Requires-Dist into ${python3:Depends};apt-cache show python3-tinysegmenterfinds no such binary, so the generated dependency is at best an unmapped requirement with a build warning and a phantom dependency, at worst unsatisfiable. PyYAML and feedfinder2 are not imported anywhere innewspaper/either, so the binary declares dependencies on code it never uses. - Fix: Add a patch dropping
tinysegmenter,feedfinder2andPyYAMLfromrequirements.txt(or replace the install_requires with an explicit list), so that the installed metadata and the generated Depends match the code.
2. [minor] [licensing] Copyright stanza for extractors.py/parsers.py drops Lucas Ou-Yang's notice
- Files:
debian/copyright:9-12,newspaper/extractors.py:8-12 - Basis: checked, in the package or with a reference tool
- Evidence:
debian/copyright:Files: newspaper/parsers.py newspaper/extractors.py/Copyright: Xavier Grangier;newspaper/extractors.py:__author__ = 'Lucas Ou-Yang',__copyright__ = 'Copyright 2014, Lucas Ou-Yang'. - Problem: Later stanzas override
Files: *, so for these two files the only declared holder is Xavier Grangier. The files themselves carry Lucas Ou-Yang's copyright notice; a machine-readable copyright that omits a holder present in the file is inaccurate (copyright-format 1.0 §5.2, Copyright field). - Fix: Add the file's own holder, e.g.
Copyright: 2013 Xavier Grangier, 2014 Lucas Ou-Yang.
3. [minor] [licensing] ASF copyright asserted for every stopword list on an admitted guess
- Files:
debian/copyright:14-18,newspaper/resources/text/stopwords-fr.txt:1-14 - Basis: checked, in the package or with a reference tool
- Evidence:
Copyright: 2001-2025 The Apache Software FoundationwithComment: Most stopwords are probably taken from Lucene's StopAnalyzer; onlystopwords-fr.txtcarries the ASF header among the 36stopwords-*.txtfiles. - Problem: The Copyright field must state the actual holders. The comment concedes that the provenance of most lists was not established, and 35 of the files bear no licence or copyright notice at all, so the ASF attribution is unverified and may be wrong for lists taken from elsewhere.
- Fix: Establish where each stopword list came from (e.g. Lucene, NLTK, or another project) and either adjust the stanza or record the provenance per group.
4. [minor] [packaging] Vcs-Browser URL is a typo
- Files:
debian/control:12 - Basis: checked, in the package or with a reference tool
- Evidence:
Vcs-Browser: https://salsa.debian.org/python-team/packages/python3-newpaperwhileVcs-Git: .../python3-newspaper.git - Problem:
newpaperis missing ans; the URL points at a non-existent repository. - Fix: Use
https://salsa.debian.org/python-team/packages/python3-newspaper.
Verified
- Read
debian/copyrightin full: DEP-5 1.0, correctFormat:URL, stanzas for*, the two goose modules,resources/text/*anddebian/*; the Expat text is complete and Apache-2.0 points to/usr/share/common-licenses/Apache-2.0. - The pre-scan's author check found no missing holder among the 74 scanned files; the only holders in the tree are Lucas Ou-Yang and Xavier Grangier, both named (see the stanza issue above).
- Every module in
newspaper/carries__license__ = 'MIT'and__copyright__ = 'Copyright 2014, Lucas Ou-Yang';newspaper/videos/*andnewspaper/cleaners.pycarry no separate notice and are covered byFiles: *. newspaper/resources/text/stopwords-fr.txtis the only stopword list with an Apache header; the other lists and theresources/misc/files (google_sources.txt,popular_sources.txt,useragents.txt,stopwords-nlp-en.txt) are plain data under the catch-all stanza.- No binaries, minified JS/CSS, PDFs, archives or bytecode in the tree;
newspaper3k.egg-info/andPKG-INFOare upstream-generated sdist metadata whose source of record (setup.py,setup.cfg) is present. - Packaging files read:
control,rules,changelog,source/format(3.0 quilt), both patches with DEP-3 headers,patches/series,gbp.conf,upstream/metadata,salsa-ci.yml,py3dist-overrides; no maintainer scripts or autopkgtest suite exist. Standards-Version: 4.7.4is current enough against Policy 4.7.4.1 (policy tool); compat 14 is debhelper's recommended level, anddh-sequence-single-binaryis a valid explicit activation at compat 14 (debhelper tool).- Build-Depends names packages that exist:
python3-jieba,python3-lxml-html-cleanandpython3-icuchecked with apt-cache;${python3:Depends}is not needed incontrolsince compat 14 makes dh_gencontrol add relationship substvars itself. - Runtime imports match the declared build/runtime dependencies: requests, feedparser, PIL, bs4, cssselect, dateutil, tldextract, lxml, nltk, jieba and icu are all imported by
newspaper/;python3-sixis build-depended but not imported, which is harmless. - uscan found the packaged version as the newest upstream release (upstream
0.2.8, packaged0.2.8). - Every pointer of
debian/copyrightto /usr/share/common-licenses names a file that is there (Apache-2.0).
Not confirmed
newspaper/cleaners.py(DocumentCleaner) andnewspaper/videos/extractors.py(VideoExtractor, provider listyoutube, vimeo, dailymotion, kewego) look like python-goose code as well; if so, the Apache-2.0 stanza should cover them too. The README only says newspaper uses "a lot of python-goose's parsing code" and the referencedGOOSE-LICENSE.txtis absent from the tarball, so the full extent of the goose-derived files cannot be checked from the package.debian/rulessetsPYBUILD_SYSTEM=pyprojectand Build-Depends onpybuild-plugin-pyproject, but the source has nopyproject.toml(onlysetup.py/setup.cfg). A build would show whether pybuild's pyproject plugin falls back to the setuptools legacy path; pybuild is not installed on the reviewing system, so this could not be checked.- What dh_python3 does with a requirement it cannot map to a Debian package (tinysegmenter) could not be checked because dh-python is not installed on the reviewing system; the source-side defect (stale requirement) is reported regardless.
Proposed changes
None.
Uploader's response to the LLM review
The uploader rejected this upload in response to the review.
Review Information
rejected — allocated to dfsg-uploader 8 hours ago, started 8 hours ago, completed 8 hours ago.
Final Comment
The uploader rejected this upload in response to the automated (LLM) review of it, so that they can fix the problems it found and upload again.