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/@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 new file mode 100644 index 000000000000..0f7bda5872c0 --- /dev/null +++ b/stdlib/xml/sax/expatreader.pyi @@ -0,0 +1,53 @@ +import sys +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: ... + if sys.version_info >= (3, 9): + def feed(self, data, isFinal: bool = False) -> None: ... + else: + def feed(self, data, isFinal: int = 0) -> 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: ...