summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBerker Peksag <berker.peksag@gmail.com>2020-07-16 06:13:05 (GMT)
committerGitHub <noreply@github.com>2020-07-16 06:13:05 (GMT)
commite34bbfd61f405eef89e8aa50672b0b25022de320 (patch)
tree7a24deba19acb56131638e7ee185378cfabc56d8
parent936a66094591dc0e67d4a60c170148bb700ec016 (diff)
downloadcpython-e34bbfd61f405eef89e8aa50672b0b25022de320.zip
cpython-e34bbfd61f405eef89e8aa50672b0b25022de320.tar.gz
cpython-e34bbfd61f405eef89e8aa50672b0b25022de320.tar.bz2
bpo-31844: Remove _markupbase.ParserBase.error() (GH-8562)
-rw-r--r--Doc/whatsnew/3.9.rst5
-rw-r--r--Lib/_markupbase.py35
-rw-r--r--Misc/NEWS.d/next/Library/2018-07-30-12-48-17.bpo-31844.0_GKsD.rst4
3 files changed, 27 insertions, 17 deletions
diff --git a/Doc/whatsnew/3.9.rst b/Doc/whatsnew/3.9.rst
index c2db9bc..18cc558 100644
--- a/Doc/whatsnew/3.9.rst
+++ b/Doc/whatsnew/3.9.rst
@@ -887,6 +887,11 @@ Removed
:func:`asyncio.current_task` and :func:`asyncio.all_tasks` instead.
(Contributed by RĂ©mi Lapeyre in :issue:`40967`)
+* The ``ParserBase.error()`` method from the private and undocumented ``_markupbase``
+ module has been removed. :class:`html.parser.HTMLParser` is the only subclass of
+ ``ParserBase`` and its ``error()`` implementation has already been removed in
+ Python 3.5.
+ (Contributed by Berker Peksag in :issue:`31844`.)
Porting to Python 3.9
=====================
diff --git a/Lib/_markupbase.py b/Lib/_markupbase.py
index 2af5f1c..3ad7e27 100644
--- a/Lib/_markupbase.py
+++ b/Lib/_markupbase.py
@@ -29,10 +29,6 @@ class ParserBase:
raise RuntimeError(
"_markupbase.ParserBase must be subclassed")
- def error(self, message):
- raise NotImplementedError(
- "subclasses of ParserBase must override error()")
-
def reset(self):
self.lineno = 1
self.offset = 0
@@ -131,12 +127,11 @@ class ParserBase:
# also in data attribute specifications of attlist declaration
# also link type declaration subsets in linktype declarations
# also link attribute specification lists in link declarations
- self.error("unsupported '[' char in %s declaration" % decltype)
+ raise AssertionError("unsupported '[' char in %s declaration" % decltype)
else:
- self.error("unexpected '[' char in declaration")
+ raise AssertionError("unexpected '[' char in declaration")
else:
- self.error(
- "unexpected %r char in declaration" % rawdata[j])
+ raise AssertionError("unexpected %r char in declaration" % rawdata[j])
if j < 0:
return j
return -1 # incomplete
@@ -156,7 +151,9 @@ class ParserBase:
# look for MS Office ]> ending
match= _msmarkedsectionclose.search(rawdata, i+3)
else:
- self.error('unknown status keyword %r in marked section' % rawdata[i+3:j])
+ raise AssertionError(
+ 'unknown status keyword %r in marked section' % rawdata[i+3:j]
+ )
if not match:
return -1
if report:
@@ -168,7 +165,7 @@ class ParserBase:
def parse_comment(self, i, report=1):
rawdata = self.rawdata
if rawdata[i:i+4] != '<!--':
- self.error('unexpected call to parse_comment()')
+ raise AssertionError('unexpected call to parse_comment()')
match = _commentclose.search(rawdata, i+4)
if not match:
return -1
@@ -192,7 +189,9 @@ class ParserBase:
return -1
if s != "<!":
self.updatepos(declstartpos, j + 1)
- self.error("unexpected char in internal subset (in %r)" % s)
+ raise AssertionError(
+ "unexpected char in internal subset (in %r)" % s
+ )
if (j + 2) == n:
# end of buffer; incomplete
return -1
@@ -209,8 +208,9 @@ class ParserBase:
return -1
if name not in {"attlist", "element", "entity", "notation"}:
self.updatepos(declstartpos, j + 2)
- self.error(
- "unknown declaration %r in internal subset" % name)
+ raise AssertionError(
+ "unknown declaration %r in internal subset" % name
+ )
# handle the individual names
meth = getattr(self, "_parse_doctype_" + name)
j = meth(j, declstartpos)
@@ -234,14 +234,14 @@ class ParserBase:
if rawdata[j] == ">":
return j
self.updatepos(declstartpos, j)
- self.error("unexpected char after internal subset")
+ raise AssertionError("unexpected char after internal subset")
else:
return -1
elif c.isspace():
j = j + 1
else:
self.updatepos(declstartpos, j)
- self.error("unexpected char %r in internal subset" % c)
+ raise AssertionError("unexpected char %r in internal subset" % c)
# end of buffer reached
return -1
@@ -387,8 +387,9 @@ class ParserBase:
return name.lower(), m.end()
else:
self.updatepos(declstartpos, i)
- self.error("expected name token at %r"
- % rawdata[declstartpos:declstartpos+20])
+ raise AssertionError(
+ "expected name token at %r" % rawdata[declstartpos:declstartpos+20]
+ )
# To be overridden -- handlers for unknown objects
def unknown_decl(self, data):
diff --git a/Misc/NEWS.d/next/Library/2018-07-30-12-48-17.bpo-31844.0_GKsD.rst b/Misc/NEWS.d/next/Library/2018-07-30-12-48-17.bpo-31844.0_GKsD.rst
new file mode 100644
index 0000000..9034afd
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2018-07-30-12-48-17.bpo-31844.0_GKsD.rst
@@ -0,0 +1,4 @@
+Remove ``ParserBase.error()`` method from the private and undocumented
+``_markupbase`` module. :class:`html.parser.HTMLParser` is the only
+subclass of ``ParserBase`` and its ``error()`` implementation was deprecated
+in Python 3.4 and removed in Python 3.5.