This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: pyexpat: Argument for UseForeignDTD should be optional
Type: behavior Stage: resolved
Components: Extension Modules Versions: Python 3.2, Python 3.3, Python 3.4, Python 2.7
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: georg.brandl Nosy List: benjamin.peterson, christian.heimes, eseifert, ezio.melotti, georg.brandl, larry, pitrou, python-dev
Priority: release blocker Keywords: 3.2regression, 3.3regression, patch

Created on 2012-09-24 10:10 by eseifert, last changed 2022-04-11 14:57 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
issue16012.patch christian.heimes, 2012-09-24 10:46 review
issue16012_py32.patch christian.heimes, 2012-09-24 10:54
Messages (10)
msg171108 - (view) Author: Erich Seifert (eseifert) Date: 2012-09-24 10:10
It seems the recent changes to Modules/pyexpat.c made the boolean 'flag' for UseForeignDTD mandatory although it was optional in previous Python releases.

According to the docs the usage is UseForeignDTD([flag]), but calling UseForeignDTD without arguments leads to an error::

  >>> from xml.parsers import expat
  >>> parser = expat.ParserCreate('utf8')
  >>> parser.UseForeignDTD()
  Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
  TypeError: UseForeignDTD() takes exactly 1 argument (0 given)

This was tested with version bfdf366a779a from hg repository.
msg171110 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2012-09-24 10:36
Confirmed!

In Ubuntu's Python 2.7.3 and 3.2.3 UseForeignDTD() can be called without an argument. The hg versions of 2.7, 3.2 and 3.3 require one argument. The change smells like a regression for all affected Python versions.

Antoine, it looks like you committed the modification.
msg171111 - (view) Author: Ezio Melotti (ezio.melotti) * (Python committer) Date: 2012-09-24 10:42
This seems to be the changeset that introduced the regression b878df1d23b1.
msg171112 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2012-09-24 10:46
I've created a patch with a simple test case.
msg171113 - (view) Author: Antoine Pitrou (pitrou) * (Python committer) Date: 2012-09-24 10:49
Ah, that's true. Too bad it wasn't tested for :(
msg171115 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2012-09-24 10:54
Don't feel bad. The final hasn't been released yet. :)

Here is a slightly different patch for 3.2 and 2.7.
msg171118 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2012-09-24 11:28
New changeset 22ddf77e0497 by Christian Heimes in branch '3.2':
Issue #16012: Fix a regression in pyexpat. The parser's UseForeignDTD()
http://hg.python.org/cpython/rev/22ddf77e0497

New changeset 3e0d632ce910 by Christian Heimes in branch '2.7':
Issue #16012: Fix a regression in pyexpat. The parser's UseForeignDTD()
http://hg.python.org/cpython/rev/3e0d632ce910

New changeset 0f55ad9b07c8 by Christian Heimes in branch 'default':
Issue #16012: Fix a regression in pyexpat. The parser's UseForeignDTD()
http://hg.python.org/cpython/rev/0f55ad9b07c8
msg171119 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2012-09-24 11:32
Erich, thank you very much for your bug report. Your report made it right in time for the upcoming 3.3.0 final release.

Here you are, Georg.
msg171120 - (view) Author: Georg Brandl (georg.brandl) * (Python committer) Date: 2012-09-24 11:42
Fixed in release clone as b907f99272c5.
msg171555 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2012-09-29 07:27
New changeset b907f99272c5 by Georg Brandl in branch 'default':
Port #16012 fix: parameter parsing regression in pyexpat parser UseForeignDTD() method.
http://hg.python.org/cpython/rev/b907f99272c5
History
Date User Action Args
2022-04-11 14:57:36adminsetnosy: + larry
github: 60216
2012-09-29 07:27:39python-devsetmessages: + msg171555
2012-09-24 11:42:17georg.brandlsetstatus: pending -> closed

messages: + msg171120
2012-09-24 11:32:41christian.heimessetstatus: open -> pending
messages: + msg171119

assignee: georg.brandl
resolution: fixed
stage: patch review -> resolved
2012-09-24 11:28:20python-devsetnosy: + python-dev
messages: + msg171118
2012-09-24 10:54:46christian.heimessetfiles: + issue16012_py32.patch

messages: + msg171115
2012-09-24 10:49:44pitrousetmessages: + msg171113
2012-09-24 10:46:03christian.heimessetfiles: + issue16012.patch
keywords: + patch
messages: + msg171112

stage: patch review
2012-09-24 10:42:16ezio.melottisetnosy: + ezio.melotti
messages: + msg171111
2012-09-24 10:36:39christian.heimessetpriority: normal -> release blocker

nosy: + christian.heimes, georg.brandl, benjamin.peterson, pitrou
messages: + msg171110

keywords: + 3.2regression, 3.3regression
2012-09-24 10:10:04eseifertcreate