From ebbb96cbe9dfdde6ccd4f5b6fdf95b8bed91f9ab Mon Sep 17 00:00:00 2001 From: Stephen Morton Date: Tue, 3 Dec 2024 20:11:10 -0800 Subject: [PATCH 1/3] add a first pass of xml.sax.expatreader --- stdlib/@tests/stubtest_allowlists/common.txt | 1 - stdlib/xml/sax/expatreader.pyi | 48 ++++++++++++++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 stdlib/xml/sax/expatreader.pyi diff --git a/stdlib/@tests/stubtest_allowlists/common.txt b/stdlib/@tests/stubtest_allowlists/common.txt index 6856250ec747..6e17a4a01572 100644 --- a/stdlib/@tests/stubtest_allowlists/common.txt +++ b/stdlib/@tests/stubtest_allowlists/common.txt @@ -56,7 +56,6 @@ weakref.WeakValueDictionary.update turtledemo turtledemo\..+ -xml.sax.expatreader # ====================================================================== diff --git a/stdlib/xml/sax/expatreader.pyi b/stdlib/xml/sax/expatreader.pyi new file mode 100644 index 000000000000..09dbf2e420ef --- /dev/null +++ b/stdlib/xml/sax/expatreader.pyi @@ -0,0 +1,48 @@ +from _typeshed import Unused +from xml.sax import xmlreader + +version: str +AttributesImpl = xmlreader.AttributesImpl +AttributesNSImpl = xmlreader.AttributesNSImpl + +class _ClosedParser: ... + +class ExpatLocator(xmlreader.Locator): + def __init__(self, parser: ExpatParser) -> None: ... + def getColumnNumber(self) -> int: ... + def getLineNumber(self) -> int: ... + def getPublicId(self): ... + def getSystemId(self): ... + +class ExpatParser(xmlreader.IncrementalParser, xmlreader.Locator): + def __init__(self, namespaceHandling: int = 0, bufsize: int = 65516) -> None: ... + def parse(self, source) -> None: ... + def prepareParser(self, source) -> None: ... + def setContentHandler(self, handler) -> None: ... + def getFeature(self, name: str): ... + def setFeature(self, name: str, state) -> None: ... + def getProperty(self, name: str): ... + def setProperty(self, name: str, value) -> None: ... + def feed(self, data, isFinal: bool = False) -> None: ... + def flush(self) -> None: ... + def close(self) -> None: ... + def reset(self) -> None: ... + def getColumnNumber(self) -> int | None: ... + def getLineNumber(self) -> int: ... + def getPublicId(self): ... + def getSystemId(self): ... + def start_element(self, name: str, attrs: xmlreader.AttributesImpl) -> None: ... + def end_element(self, name: str) -> None: ... + def start_element_ns(self, name: str, attrs) -> None: ... + def end_element_ns(self, name: str) -> None: ... + def processing_instruction(self, target: str, data: str) -> None: ... + def character_data(self, data: str) -> None: ... + def start_namespace_decl(self, prefix: str | None, uri: str) -> None: ... + def end_namespace_decl(self, prefix: str | None) -> None: ... + def start_doctype_decl(self, name: str, sysid: str | None, pubid: str | None, has_internal_subset: Unused) -> None: ... + def unparsed_entity_decl(self, name, base, sysid, pubid, notation_name) -> None: ... + def notation_decl(self, name, base, sysid, pubid) -> None: ... + def external_entity_ref(self, context, base, sysid, pubid): ... + def skipped_entity_handler(self, name: str, is_pe: bool) -> None: ... + +def create_parser(namespaceHandling: int = 0, bufsize: int = 65516) -> ExpatParser: ... From 4cd104214b203e98bef5e4046ff8a8f6c728a2fa Mon Sep 17 00:00:00 2001 From: Stephen Morton Date: Tue, 3 Dec 2024 20:20:24 -0800 Subject: [PATCH 2/3] fixes --- stdlib/@tests/stubtest_allowlists/darwin-py310.txt | 1 + stdlib/@tests/stubtest_allowlists/darwin-py38.txt | 1 + stdlib/@tests/stubtest_allowlists/darwin-py39.txt | 1 + stdlib/@tests/stubtest_allowlists/linux-py38.txt | 1 + stdlib/@tests/stubtest_allowlists/win32-py310.txt | 1 + stdlib/@tests/stubtest_allowlists/win32-py38.txt | 1 + stdlib/@tests/stubtest_allowlists/win32-py39.txt | 1 + stdlib/xml/sax/expatreader.pyi | 7 ++++++- 8 files changed, 13 insertions(+), 1 deletion(-) diff --git a/stdlib/@tests/stubtest_allowlists/darwin-py310.txt b/stdlib/@tests/stubtest_allowlists/darwin-py310.txt index 618ef8c79f1a..4b6bd6e0eea7 100644 --- a/stdlib/@tests/stubtest_allowlists/darwin-py310.txt +++ b/stdlib/@tests/stubtest_allowlists/darwin-py310.txt @@ -40,6 +40,7 @@ xml.etree.cElementTree.XMLParser.flush xml.etree.cElementTree.XMLPullParser.flush xml.parsers.expat.XMLParserType.GetReparseDeferralEnabled xml.parsers.expat.XMLParserType.SetReparseDeferralEnabled +xml.sax.expatreader.ExpatParser.flush # ============================================================= diff --git a/stdlib/@tests/stubtest_allowlists/darwin-py38.txt b/stdlib/@tests/stubtest_allowlists/darwin-py38.txt index ba32b7002417..9fbc7e569bbe 100644 --- a/stdlib/@tests/stubtest_allowlists/darwin-py38.txt +++ b/stdlib/@tests/stubtest_allowlists/darwin-py38.txt @@ -37,6 +37,7 @@ xml.etree.cElementTree.XMLParser.flush xml.etree.cElementTree.XMLPullParser.flush xml.parsers.expat.XMLParserType.GetReparseDeferralEnabled xml.parsers.expat.XMLParserType.SetReparseDeferralEnabled +xml.sax.expatreader.ExpatParser.flush # ============================================================= diff --git a/stdlib/@tests/stubtest_allowlists/darwin-py39.txt b/stdlib/@tests/stubtest_allowlists/darwin-py39.txt index 9d9c22665b62..ad9ecc3014cf 100644 --- a/stdlib/@tests/stubtest_allowlists/darwin-py39.txt +++ b/stdlib/@tests/stubtest_allowlists/darwin-py39.txt @@ -49,6 +49,7 @@ xml.etree.cElementTree.XMLParser.flush xml.etree.cElementTree.XMLPullParser.flush xml.parsers.expat.XMLParserType.GetReparseDeferralEnabled xml.parsers.expat.XMLParserType.SetReparseDeferralEnabled +xml.sax.expatreader.ExpatParser.flush # ============================================================= diff --git a/stdlib/@tests/stubtest_allowlists/linux-py38.txt b/stdlib/@tests/stubtest_allowlists/linux-py38.txt index b98bf630a540..ac0e34580ca1 100644 --- a/stdlib/@tests/stubtest_allowlists/linux-py38.txt +++ b/stdlib/@tests/stubtest_allowlists/linux-py38.txt @@ -12,6 +12,7 @@ xml.etree.cElementTree.XMLParser.flush xml.etree.cElementTree.XMLPullParser.flush xml.parsers.expat.XMLParserType.GetReparseDeferralEnabled xml.parsers.expat.XMLParserType.SetReparseDeferralEnabled +xml.sax.expatreader.ExpatParser.flush # ====== diff --git a/stdlib/@tests/stubtest_allowlists/win32-py310.txt b/stdlib/@tests/stubtest_allowlists/win32-py310.txt index 176acee37fb4..555f97cd49d9 100644 --- a/stdlib/@tests/stubtest_allowlists/win32-py310.txt +++ b/stdlib/@tests/stubtest_allowlists/win32-py310.txt @@ -41,6 +41,7 @@ xml.etree.cElementTree.XMLParser.flush xml.etree.cElementTree.XMLPullParser.flush xml.parsers.expat.XMLParserType.GetReparseDeferralEnabled xml.parsers.expat.XMLParserType.SetReparseDeferralEnabled +xml.sax.expatreader.ExpatParser.flush # ============================================================= diff --git a/stdlib/@tests/stubtest_allowlists/win32-py38.txt b/stdlib/@tests/stubtest_allowlists/win32-py38.txt index a75a5756c2bc..4127bebabf30 100644 --- a/stdlib/@tests/stubtest_allowlists/win32-py38.txt +++ b/stdlib/@tests/stubtest_allowlists/win32-py38.txt @@ -37,6 +37,7 @@ xml.etree.cElementTree.XMLParser.flush xml.etree.cElementTree.XMLPullParser.flush xml.parsers.expat.XMLParserType.GetReparseDeferralEnabled xml.parsers.expat.XMLParserType.SetReparseDeferralEnabled +xml.sax.expatreader.ExpatParser.flush # ============================================================ diff --git a/stdlib/@tests/stubtest_allowlists/win32-py39.txt b/stdlib/@tests/stubtest_allowlists/win32-py39.txt index 5fae9266c9f6..d2b82ecdc98d 100644 --- a/stdlib/@tests/stubtest_allowlists/win32-py39.txt +++ b/stdlib/@tests/stubtest_allowlists/win32-py39.txt @@ -50,6 +50,7 @@ xml.etree.cElementTree.XMLParser.flush xml.etree.cElementTree.XMLPullParser.flush xml.parsers.expat.XMLParserType.GetReparseDeferralEnabled xml.parsers.expat.XMLParserType.SetReparseDeferralEnabled +xml.sax.expatreader.ExpatParser.flush # ============================================================= diff --git a/stdlib/xml/sax/expatreader.pyi b/stdlib/xml/sax/expatreader.pyi index 09dbf2e420ef..67742549803d 100644 --- a/stdlib/xml/sax/expatreader.pyi +++ b/stdlib/xml/sax/expatreader.pyi @@ -1,3 +1,4 @@ +import sys from _typeshed import Unused from xml.sax import xmlreader @@ -23,7 +24,11 @@ class ExpatParser(xmlreader.IncrementalParser, xmlreader.Locator): def setFeature(self, name: str, state) -> None: ... def getProperty(self, name: str): ... def setProperty(self, name: str, value) -> None: ... - def feed(self, data, isFinal: bool = False) -> None: ... + if sys.version_info >= (3, 9): + def feed(self, data, isFinal: bool = False) -> None: ... + else: + def feed(self, data, isFinal: bool = 0) -> None: ... + def flush(self) -> None: ... def close(self) -> None: ... def reset(self) -> None: ... From 2afa571d9319b76aa3d24428e2bf116a68fc9726 Mon Sep 17 00:00:00 2001 From: Stephen Morton Date: Tue, 3 Dec 2024 20:22:10 -0800 Subject: [PATCH 3/3] int v bool --- stdlib/xml/sax/expatreader.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stdlib/xml/sax/expatreader.pyi b/stdlib/xml/sax/expatreader.pyi index 67742549803d..0f7bda5872c0 100644 --- a/stdlib/xml/sax/expatreader.pyi +++ b/stdlib/xml/sax/expatreader.pyi @@ -27,7 +27,7 @@ class ExpatParser(xmlreader.IncrementalParser, xmlreader.Locator): if sys.version_info >= (3, 9): def feed(self, data, isFinal: bool = False) -> None: ... else: - def feed(self, data, isFinal: bool = 0) -> None: ... + def feed(self, data, isFinal: int = 0) -> None: ... def flush(self) -> None: ... def close(self) -> None: ...