[html5lib] Improve stubs (#14278)

This commit is contained in:
Semyon Moroz
2025-07-07 13:26:16 +00:00
committed by GitHub
parent d951114dea
commit 806608eef2
28 changed files with 305 additions and 244 deletions
-2
View File
@@ -1,7 +1,5 @@
version = "1.1.*"
upstream_repository = "https://github.com/html5lib/html5lib-python"
partial_stub = true
[tool.stubtest]
ignore_missing_stub = true
extras = ["all"]
+5 -1
View File
@@ -1,6 +1,10 @@
from typing import Final
from .html5parser import HTMLParser as HTMLParser, parse as parse, parseFragment as parseFragment
from .serializer import serialize as serialize
from .treebuilders import getTreeBuilder as getTreeBuilder
from .treewalkers import getTreeWalker as getTreeWalker
__version__: str
__all__ = ["HTMLParser", "parse", "parseFragment", "getTreeBuilder", "getTreeWalker", "serialize"]
__version__: Final[str]
+25 -23
View File
@@ -1,39 +1,41 @@
from typing import Any
import re
from _typeshed import Incomplete
from collections.abc import Iterable
baseChar: str
ideographic: str
combiningCharacter: str
digit: str
extender: str
letter: Any
name: Any
nameFirst: Any
reChar: Any
reCharRange: Any
letter: str
name: str
nameFirst: str
reChar: re.Pattern[str]
reCharRange: re.Pattern[str]
def charStringToList(chars): ...
def normaliseCharList(charList): ...
def charStringToList(chars: str) -> list[str]: ...
def normaliseCharList(charList: Iterable[str]) -> list[str]: ...
max_unicode: Any
max_unicode: int
def missingRanges(charList): ...
def missingRanges(charList: Iterable[str]) -> list[str]: ...
def listToRegexpStr(charList): ...
def hexToInt(hex_str): ...
def escapeRegexp(string): ...
def hexToInt(hex_str: str | bytes | bytearray) -> int: ...
def escapeRegexp(string: str) -> str: ...
nonXmlNameBMPRegexp: Any
nonXmlNameFirstBMPRegexp: Any
nonPubidCharRegexp: Any
nonXmlNameBMPRegexp: re.Pattern[str]
nonXmlNameFirstBMPRegexp: re.Pattern[str]
nonPubidCharRegexp: re.Pattern[str]
class InfosetFilter:
replacementRegexp: Any
dropXmlnsLocalName: Any
dropXmlnsAttrNs: Any
preventDoubleDashComments: Any
preventDashAtCommentEnd: Any
replaceFormFeedCharacters: Any
preventSingleQuotePubid: Any
replaceCache: Any
replacementRegexp: re.Pattern[str]
dropXmlnsLocalName: Incomplete
dropXmlnsAttrNs: Incomplete
preventDoubleDashComments: Incomplete
preventDashAtCommentEnd: Incomplete
replaceFormFeedCharacters: Incomplete
preventSingleQuotePubid: Incomplete
replaceCache: Incomplete
def __init__(
self,
dropXmlnsLocalName: bool = False,
+27 -27
View File
@@ -1,6 +1,6 @@
from _typeshed import SupportsRead
from _typeshed import Incomplete, SupportsRead
from codecs import CodecInfo
from typing import Any, Protocol, overload
from typing import Protocol, overload
from typing_extensions import TypeAlias
# Is actually webencodings.Encoding
@@ -13,20 +13,20 @@ _UnicodeInputStream: TypeAlias = str | SupportsRead[str]
_BinaryInputStream: TypeAlias = bytes | SupportsRead[bytes]
_InputStream: TypeAlias = _UnicodeInputStream | _BinaryInputStream # noqa: Y047 # used in other files
spaceCharactersBytes: Any
asciiLettersBytes: Any
asciiUppercaseBytes: Any
spacesAngleBrackets: Any
spaceCharactersBytes: Incomplete
asciiLettersBytes: Incomplete
asciiUppercaseBytes: Incomplete
spacesAngleBrackets: Incomplete
invalid_unicode_no_surrogate: str
invalid_unicode_re: Any
non_bmp_invalid_codepoints: Any
ascii_punctuation_re: Any
charsUntilRegEx: Any
invalid_unicode_re: Incomplete
non_bmp_invalid_codepoints: Incomplete
ascii_punctuation_re: Incomplete
charsUntilRegEx: Incomplete
class BufferedStream:
stream: Any
buffer: Any
position: Any
stream: Incomplete
buffer: Incomplete
position: Incomplete
def __init__(self, stream) -> None: ...
def tell(self): ...
def seek(self, pos) -> None: ...
@@ -47,10 +47,10 @@ def HTMLInputStream(
) -> HTMLBinaryInputStream: ...
class HTMLUnicodeInputStream:
reportCharacterErrors: Any
newLines: Any
reportCharacterErrors: Incomplete
newLines: Incomplete
charEncoding: tuple[_Encoding, str]
dataStream: Any
dataStream: Incomplete
def __init__(self, source: _UnicodeInputStream) -> None: ...
chunk: str
chunkSize: int
@@ -69,14 +69,14 @@ class HTMLUnicodeInputStream:
def unget(self, char) -> None: ...
class HTMLBinaryInputStream(HTMLUnicodeInputStream):
rawStream: Any
rawStream: Incomplete
numBytesMeta: int
numBytesChardet: int
override_encoding: Any
transport_encoding: Any
same_origin_parent_encoding: Any
likely_encoding: Any
default_encoding: Any
override_encoding: Incomplete
transport_encoding: Incomplete
same_origin_parent_encoding: Incomplete
likely_encoding: Incomplete
default_encoding: Incomplete
charEncoding: tuple[_Encoding, str]
def __init__(
self,
@@ -88,7 +88,7 @@ class HTMLBinaryInputStream(HTMLUnicodeInputStream):
default_encoding: str = "windows-1252",
useChardet: bool = True,
) -> None: ...
dataStream: Any
dataStream: Incomplete
def reset(self) -> None: ...
def openStream(self, source): ...
def determineEncoding(self, chardet: bool = True): ...
@@ -105,7 +105,7 @@ class EncodingBytes(bytes):
def previous(self): ...
def setPosition(self, position) -> None: ...
def getPosition(self): ...
position: Any
position: Incomplete
def getCurrentByte(self): ...
@property
def currentByte(self): ...
@@ -115,8 +115,8 @@ class EncodingBytes(bytes):
def jumpTo(self, bytes): ...
class EncodingParser:
data: Any
encoding: Any
data: Incomplete
encoding: Incomplete
def __init__(self, data) -> None: ...
def getEncoding(self): ...
def handleComment(self): ...
@@ -128,7 +128,7 @@ class EncodingParser:
def getAttribute(self): ...
class ContentAttrParser:
data: Any
data: Incomplete
def __init__(self, data) -> None: ...
def parse(self): ...
+8 -8
View File
@@ -1,20 +1,20 @@
from typing import Any
from _typeshed import Incomplete
from ._inputstream import _InputStream
entitiesTrie: Any
entitiesTrie: Incomplete
attributeMap = dict
class HTMLTokenizer:
stream: Any
parser: Any
stream: Incomplete
parser: Incomplete
escapeFlag: bool
lastFourChars: Any
state: Any
lastFourChars: Incomplete
state: Incomplete
escape: bool
currentToken: Any
currentToken: Incomplete
def __init__(self, stream: _InputStream, parser=None, **kwargs) -> None: ...
tokenQueue: Any
tokenQueue: Incomplete
def __iter__(self): ...
def consumeNumberEntity(self, isHex): ...
def consumeEntity(self, allowedChar=None, fromAttribute: bool = False) -> None: ...
@@ -1 +1,3 @@
from .py import Trie as Trie
__all__ = ["Trie"]
+2 -2
View File
@@ -1,8 +1,8 @@
from _typeshed import Incomplete
from abc import ABCMeta
from collections.abc import Mapping
from typing import Any
class Trie(Mapping[Any, Any], metaclass=ABCMeta):
class Trie(Mapping[Incomplete, Incomplete], metaclass=ABCMeta):
def keys(self, prefix=None): ...
def has_keys_with_prefix(self, prefix): ...
def longest_prefix(self, prefix): ...
+16 -6
View File
@@ -1,17 +1,27 @@
import xml.etree.ElementTree as default_etree
from _typeshed import Incomplete
from collections.abc import Mapping
from typing import Any
__all__ = [
"default_etree",
"MethodDispatcher",
"isSurrogatePair",
"surrogatePairToCodepoint",
"moduleFactoryFactory",
"supports_lone_surrogates",
]
supports_lone_surrogates: bool
class MethodDispatcher(dict[Any, Any]):
default: Any
class MethodDispatcher(dict[Incomplete, Incomplete]):
default: Incomplete
def __init__(self, items=()) -> None: ...
def __getitem__(self, key): ...
def __get__(self, instance, owner=None): ...
class BoundMethodDispatcher(Mapping[Any, Any]):
instance: Any
dispatcher: Any
class BoundMethodDispatcher(Mapping[Incomplete, Incomplete]):
instance: Incomplete
dispatcher: Incomplete
def __init__(self, instance, dispatcher) -> None: ...
def __getitem__(self, key): ...
def get(self, key, default): ... # type: ignore[override]
+33 -33
View File
@@ -1,37 +1,37 @@
from typing import Any
from _typeshed import Incomplete
EOF: Any
E: Any
namespaces: Any
scopingElements: Any
formattingElements: Any
specialElements: Any
htmlIntegrationPointElements: Any
mathmlTextIntegrationPointElements: Any
adjustSVGAttributes: Any
adjustMathMLAttributes: Any
adjustForeignAttributes: Any
unadjustForeignAttributes: Any
spaceCharacters: Any
tableInsertModeElements: Any
asciiLowercase: Any
asciiUppercase: Any
asciiLetters: Any
digits: Any
hexDigits: Any
asciiUpper2Lower: Any
headingElements: Any
voidElements: Any
cdataElements: Any
rcdataElements: Any
booleanAttributes: Any
entitiesWindows1252: Any
xmlEntities: Any
entities: Any
replacementCharacters: Any
tokenTypes: Any
tagTokenTypes: Any
prefixes: Any
EOF: Incomplete
E: dict[str, str]
namespaces: dict[str, str]
scopingElements: frozenset[tuple[str, str]]
formattingElements: frozenset[tuple[str, str]]
specialElements: frozenset[tuple[str, str]]
htmlIntegrationPointElements: frozenset[tuple[str, str]]
mathmlTextIntegrationPointElements: frozenset[tuple[str, str]]
adjustSVGAttributes: dict[str, str]
adjustMathMLAttributes: dict[str, str]
adjustForeignAttributes: dict[str, tuple[str, str, str] | tuple[None, str, str]]
unadjustForeignAttributes: dict[tuple[str, str], str]
spaceCharacters: frozenset[str]
tableInsertModeElements: frozenset[str]
asciiLowercase: frozenset[str]
asciiUppercase: frozenset[str]
asciiLetters: frozenset[str]
digits: frozenset[str]
hexDigits: frozenset[str]
asciiUpper2Lower: dict[int, int]
headingElements: tuple[str, ...]
voidElements: frozenset[str]
cdataElements: frozenset[str]
rcdataElements: frozenset[str]
booleanAttributes: dict[str, frozenset[str]]
entitiesWindows1252: tuple[int, ...]
xmlEntities: frozenset[str]
entities: dict[str, str]
replacementCharacters: dict[int, str]
tokenTypes: dict[str, int]
tagTokenTypes: frozenset[int]
prefixes: dict[str, str]
class DataLossWarning(UserWarning): ...
class _ReparseException(Exception): ...
+2 -2
View File
@@ -1,7 +1,7 @@
from typing import Any
from _typeshed import Incomplete
class Filter:
source: Any
source: Incomplete
def __init__(self, source) -> None: ...
def __iter__(self): ...
def __getattr__(self, name: str): ...
@@ -1,8 +1,6 @@
from typing import Any
from . import base
class Filter(base.Filter):
encoding: Any
def __init__(self, source, encoding) -> None: ...
encoding: str | None
def __init__(self, source, encoding: str | None) -> None: ...
def __iter__(self): ...
+3 -3
View File
@@ -1,8 +1,8 @@
from typing import Any
from . import base
spaceCharacters: str
class Filter(base.Filter):
require_matching_tags: Any
require_matching_tags: bool
def __init__(self, source, require_matching_tags: bool = True) -> None: ...
def __iter__(self): ...
@@ -1,7 +1,10 @@
from _typeshed import Incomplete
from collections.abc import Generator
from . import base
class Filter(base.Filter):
def slider(self) -> None: ...
def slider(self) -> Generator[tuple[Incomplete, Incomplete, Incomplete]]: ...
def __iter__(self): ...
def is_optional_start(self, tagname, previous, next): ...
def is_optional_end(self, tagname, next): ...
def is_optional_start(self, tagname: str, previous, next) -> bool: ...
def is_optional_end(self, tagname: str, next) -> bool: ...
+39 -22
View File
@@ -1,34 +1,51 @@
from typing import Any
import re
from collections.abc import Iterable
from typing_extensions import deprecated
from . import base
__all__ = ["Filter"]
allowed_elements: frozenset[tuple[str, str]]
allowed_attributes: frozenset[tuple[None, str] | tuple[str, str]]
attr_val_is_uri: frozenset[tuple[None, str] | tuple[str, str]]
svg_attr_val_allows_ref: frozenset[tuple[None, str]]
svg_allow_local_href: frozenset[tuple[None, str]]
allowed_css_properties: frozenset[str]
allowed_css_keywords: frozenset[str]
allowed_svg_properties: frozenset[str]
allowed_protocols: frozenset[str]
allowed_content_types: frozenset[str]
data_content_type: re.Pattern[str]
@deprecated("html5lib's sanitizer is deprecated; see https://github.com/html5lib/html5lib-python/issues/443")
class Filter(base.Filter):
allowed_elements: Any
allowed_attributes: Any
allowed_css_properties: Any
allowed_css_keywords: Any
allowed_svg_properties: Any
allowed_protocols: Any
allowed_content_types: Any
attr_val_is_uri: Any
svg_attr_val_allows_ref: Any
svg_allow_local_href: Any
allowed_elements: Iterable[tuple[str | None, str]]
allowed_attributes: Iterable[tuple[str | None, str]]
allowed_css_properties: Iterable[str]
allowed_css_keywords: Iterable[str]
allowed_svg_properties: Iterable[str]
allowed_protocols: Iterable[str]
allowed_content_types: Iterable[str]
attr_val_is_uri: Iterable[tuple[str | None, str]]
svg_attr_val_allows_ref: Iterable[tuple[str | None, str]]
svg_allow_local_href: Iterable[tuple[str | None, str]]
def __init__(
self,
source,
allowed_elements=...,
allowed_attributes=...,
allowed_css_properties=...,
allowed_css_keywords=...,
allowed_svg_properties=...,
allowed_protocols=...,
allowed_content_types=...,
attr_val_is_uri=...,
svg_attr_val_allows_ref=...,
svg_allow_local_href=...,
allowed_elements: Iterable[tuple[str | None, str]] = ...,
allowed_attributes: Iterable[tuple[str | None, str]] = ...,
allowed_css_properties: Iterable[str] = ...,
allowed_css_keywords: Iterable[str] = ...,
allowed_svg_properties: Iterable[str] = ...,
allowed_protocols: Iterable[str] = ...,
allowed_content_types: Iterable[str] = ...,
attr_val_is_uri: Iterable[tuple[str | None, str]] = ...,
svg_attr_val_allows_ref: Iterable[tuple[str | None, str]] = ...,
svg_allow_local_href: Iterable[tuple[str | None, str]] = ...,
) -> None: ...
def __iter__(self): ...
def sanitize_token(self, token): ...
def allowed_token(self, token): ...
def disallowed_token(self, token): ...
def sanitize_css(self, style): ...
def sanitize_css(self, style: str) -> str: ...
@@ -1,11 +1,12 @@
from typing import Any
import re
from . import base
SPACES_REGEX: Any
spaceCharacters: str
SPACES_REGEX: re.Pattern[str]
class Filter(base.Filter):
spacePreserveElements: Any
spacePreserveElements: frozenset[str]
def __iter__(self): ...
def collapse_spaces(text): ...
def collapse_spaces(text: str) -> str: ...
+9 -9
View File
@@ -1,5 +1,5 @@
from _typeshed import Incomplete
from typing import Any, Literal, overload
from typing import Literal, overload
from xml.etree.ElementTree import Element
from ._inputstream import _InputStream
@@ -18,18 +18,18 @@ def method_decorator_metaclass(function): ...
class HTMLParser:
strict: bool
tree: Any
tree: Incomplete
errors: list[Incomplete]
phases: Any
phases: Incomplete
def __init__(self, tree=None, strict: bool = False, namespaceHTMLElements: bool = True, debug: bool = False) -> None: ...
firstStartTag: bool
log: Any
log: Incomplete
compatMode: str
container: str
innerHTML: Any
phase: Any
lastPhase: Any
beforeRCDataPhase: Any
innerHTML: Incomplete
phase: Incomplete
lastPhase: Incomplete
beforeRCDataPhase: Incomplete
framesetOK: bool
tokenizer: HTMLTokenizer
def reset(self) -> None: ...
@@ -46,7 +46,7 @@ class HTMLParser:
def adjustForeignAttributes(self, token) -> None: ...
def reparseTokenNormal(self, token) -> None: ...
def resetInsertionMode(self) -> None: ...
originalPhase: Any
originalPhase: Incomplete
def parseRCDataRawtext(self, token, contentType) -> None: ...
def getPhases(debug): ...
+8 -5
View File
@@ -1,6 +1,9 @@
from _typeshed import Incomplete
from collections.abc import Generator
from typing import Any, overload
from typing import overload
k: str
v: str | int
def htmlentityreplace_errors(exc: Exception) -> tuple[str | bytes, int]: ...
@overload
@@ -25,14 +28,14 @@ class HTMLSerializer:
inject_meta_charset: bool
strip_whitespace: bool
sanitize: bool
options: Any
errors: Any
options: Incomplete
errors: Incomplete
strict: bool
def __init__(self, **kwargs) -> None: ...
def encode(self, string): ...
def encodeStrict(self, string): ...
encoding: Any
def serialize(self, treewalker, encoding=None) -> Generator[Incomplete, None, None]: ...
encoding: Incomplete
def serialize(self, treewalker, encoding=None) -> Generator[Incomplete]: ...
def render(self, treewalker, encoding=None): ...
def serializeError(self, data: str = "XXX ERROR MESSAGE NEEDED") -> None: ...
@@ -1 +1,3 @@
from . import genshi as genshi, sax as sax
__all__ = ["sax", "genshi"]
+4 -3
View File
@@ -1,5 +1,6 @@
from typing import Any
prefix_mapping: Any
prefix: str | None
localName: str
namespace: str
prefix_mapping: dict[str, str]
def to_sax(walker, handler) -> None: ...
@@ -1,5 +1,5 @@
from typing import Any
from typing import Literal
treeBuilderCache: Any
treeBuilderCache: dict[str, type]
def getTreeBuilder(treeType, implementation=None, **kwargs): ...
def getTreeBuilder(treeType: Literal["dom", "etree", "lxml"], implementation=None, **kwargs): ...
+24 -24
View File
@@ -1,15 +1,15 @@
from typing import Any
from _typeshed import Incomplete
Marker: Any
listElementsMap: Any
Marker: Incomplete
listElementsMap: dict[str | None, tuple[frozenset[tuple[str, str]], bool]]
class Node:
name: Any
parent: Any
value: Any
attributes: Any
childNodes: Any
def __init__(self, name) -> None: ...
name: str
parent: Incomplete
value: Incomplete
attributes: Incomplete
childNodes: Incomplete
def __init__(self, name: str) -> None: ...
def appendChild(self, node) -> None: ...
def insertText(self, data, insertBefore=None) -> None: ...
def insertBefore(self, node, refNode) -> None: ...
@@ -18,24 +18,24 @@ class Node:
def cloneNode(self) -> None: ...
def hasContent(self) -> None: ...
class ActiveFormattingElements(list[Any]):
class ActiveFormattingElements(list[Incomplete]):
def append(self, node) -> None: ...
def nodesEqual(self, node1, node2): ...
def nodesEqual(self, node1, node2) -> bool: ...
class TreeBuilder:
documentClass: Any
elementClass: Any
commentClass: Any
doctypeClass: Any
fragmentClass: Any
defaultNamespace: str
def __init__(self, namespaceHTMLElements) -> None: ...
openElements: Any
activeFormattingElements: Any
headPointer: Any
formPointer: Any
documentClass: Incomplete
elementClass: Incomplete
commentClass: Incomplete
doctypeClass: Incomplete
fragmentClass: Incomplete
defaultNamespace: str | None
def __init__(self, namespaceHTMLElements: bool | None) -> None: ...
openElements: Incomplete
activeFormattingElements: Incomplete
headPointer: Incomplete
formPointer: Incomplete
insertFromTable: bool
document: Any
document: Incomplete
def reset(self) -> None: ...
def elementInScope(self, target, variant=None): ...
def reconstructActiveFormattingElements(self) -> None: ...
@@ -52,4 +52,4 @@ class TreeBuilder:
def generateImpliedEndTags(self, exclude=None) -> None: ...
def getDocument(self): ...
def getFragment(self): ...
def testSerializer(self, node) -> None: ...
def testSerializer(self, node): ...
+5 -3
View File
@@ -1,5 +1,7 @@
from typing import Any
from _typeshed import Incomplete
from collections.abc import Callable
from types import ModuleType
def getDomBuilder(DomImplementation): ...
def getDomBuilder(DomImplementation) -> dict[str, Incomplete]: ...
getDomModule: Any
getDomModule: Callable[..., ModuleType]
@@ -1,7 +1,10 @@
from typing import Any
import re
from _typeshed import Incomplete
from collections.abc import Callable
from types import ModuleType
tag_regexp: Any
tag_regexp: re.Pattern[str]
def getETreeBuilder(ElementTreeImplementation, fullTree: bool = False): ...
def getETreeBuilder(ElementTreeImplementation, fullTree: bool = False) -> dict[str, Incomplete]: ...
getETreeModule: Any
getETreeModule: Callable[..., ModuleType]
@@ -1,15 +1,16 @@
from typing import Any
import re
from _typeshed import Incomplete
from . import base
fullTree: bool
tag_regexp: Any
comment_type: Any
tag_regexp: re.Pattern[str]
comment_type: Incomplete
class DocumentType:
name: Any
publicId: Any
systemId: Any
name: Incomplete
publicId: Incomplete
systemId: Incomplete
def __init__(self, name, publicId, systemId) -> None: ...
class Document:
@@ -18,21 +19,21 @@ class Document:
@property
def childNodes(self): ...
def testSerializer(element): ...
def tostring(element): ...
def testSerializer(element) -> str: ...
def tostring(element) -> str: ...
class TreeBuilder(base.TreeBuilder):
documentClass: Any
doctypeClass: Any
elementClass: Any
commentClass: Any
fragmentClass: Any
implementation: Any
namespaceHTMLElements: Any
documentClass: Incomplete
doctypeClass: Incomplete
elementClass: Incomplete
commentClass: Incomplete
fragmentClass: Incomplete
implementation: Incomplete
namespaceHTMLElements: Incomplete
def __init__(self, namespaceHTMLElements, fullTree: bool = False): ...
insertComment: Any
initial_comments: Any
doctype: Any
insertComment: Incomplete
initial_comments: Incomplete
doctype: Incomplete
def reset(self) -> None: ...
def testSerializer(self, element): ...
def getDocument(self): ...
@@ -40,5 +41,5 @@ class TreeBuilder(base.TreeBuilder):
def insertDoctype(self, token) -> None: ...
def insertCommentInitial(self, data, parent=None) -> None: ...
def insertCommentMain(self, data, parent=None) -> None: ...
document: Any
document: Incomplete
def insertRoot(self, token) -> None: ...
@@ -1,2 +1,7 @@
def getTreeWalker(treeType, implementation=None, **kwargs): ...
def pprint(walker): ...
from types import ModuleType
__all__ = ["getTreeWalker", "pprint"]
def getTreeWalker(treeType: str, implementation: ModuleType | None = None, **kwargs): ...
def concatenateCharacterTokens(tokens): ...
def pprint(walker) -> str: ...
+11 -8
View File
@@ -1,15 +1,18 @@
from typing import Any
from _typeshed import Incomplete
DOCUMENT: Any
DOCTYPE: Any
TEXT: Any
ELEMENT: Any
COMMENT: Any
ENTITY: Any
__all__ = ["DOCUMENT", "DOCTYPE", "TEXT", "ELEMENT", "COMMENT", "ENTITY", "UNKNOWN", "TreeWalker", "NonRecursiveTreeWalker"]
DOCUMENT: int
DOCTYPE: int
TEXT: int
ELEMENT: int
COMMENT: int
ENTITY: int
UNKNOWN: str
spaceCharacters: str
class TreeWalker:
tree: Any
tree: Incomplete
def __init__(self, tree) -> None: ...
def __iter__(self): ...
def error(self, msg): ...
@@ -1,7 +1,9 @@
from typing import Any
import re
from collections.abc import Callable
from types import ModuleType
tag_regexp: Any
tag_regexp: re.Pattern[str]
def getETreeBuilder(ElementTreeImplementation): ...
getETreeModule: Any
getETreeModule: Callable[..., ModuleType]
@@ -1,40 +1,44 @@
from typing import Any
from _typeshed import Incomplete
from typing import SupportsIndex, overload
from .base import NonRecursiveTreeWalker
def ensure_str(s): ...
@overload
def ensure_str(s: None) -> None: ...
@overload
def ensure_str(s: str | bytes | bytearray) -> str: ...
class Root:
elementtree: Any
children: Any
text: Any
tail: Any
elementtree: Incomplete
children: list[Incomplete]
text: str | None
tail: str | None
def __init__(self, et) -> None: ...
def __getitem__(self, key): ...
def __getitem__(self, key: SupportsIndex): ...
def getnext(self) -> None: ...
def __len__(self) -> int: ...
class Doctype:
root_node: Any
name: Any
public_id: Any
system_id: Any
text: Any
tail: Any
root_node: Incomplete
name: Incomplete
public_id: Incomplete
system_id: Incomplete
text: Incomplete
tail: Incomplete
def __init__(self, root_node, name, public_id, system_id) -> None: ...
def getnext(self): ...
class FragmentRoot(Root):
children: Any
text: Any
children: Incomplete
text: Incomplete
def __init__(self, children) -> None: ...
def getnext(self) -> None: ...
class FragmentWrapper:
root_node: Any
obj: Any
text: Any
tail: Any
root_node: Incomplete
obj: Incomplete
text: Incomplete
tail: Incomplete
def __init__(self, fragment_root, obj) -> None: ...
def __getattr__(self, name: str): ...
def getnext(self): ...
@@ -45,8 +49,8 @@ class FragmentWrapper:
def __len__(self) -> int: ...
class TreeWalker(NonRecursiveTreeWalker):
fragmentChildren: Any
filter: Any
fragmentChildren: Incomplete
filter: Incomplete
def __init__(self, tree) -> None: ...
def getNodeDetails(self, node): ...
def getFirstChild(self, node): ...