Browse Source

Update Beautiful Soup 4.8.1 (r540) → 4.8.2 (r556).

pull/1289/head
JackDandy 5 years ago
parent
commit
b9e3fae8f6
  1. 3
      CHANGES.md
  2. 16
      lib/bs4/__init__.pyi
  3. 62
      lib/bs4/builder/__init__.pyi
  4. 65
      lib/bs4/builder/_html5lib.pyi
  5. 31
      lib/bs4/builder/_htmlparser.pyi
  6. 46
      lib/bs4/builder/_lxml.pyi
  7. 1
      lib/bs4/check_block.pyi
  8. 3
      lib/bs4/diagnose.pyi
  9. 16
      lib/bs4/element.pyi
  10. 2
      lib/bs4/formatter.pyi
  11. 14
      lib/bs4_py2/element.py
  12. 14
      lib/bs4_py3/element.py

3
CHANGES.md

@ -8,7 +8,7 @@
* Change backport rarfile_py2; Fixes for multivolume RAR3 with encrypted headers * Change backport rarfile_py2; Fixes for multivolume RAR3 with encrypted headers
* Update Apprise 0.8.0 (6aa52c3) to 0.8.4 (1ce7cbb) * Update Apprise 0.8.0 (6aa52c3) to 0.8.4 (1ce7cbb)
* Update attr 19.2.0.dev0 (daf2bc8) to 20.1.0.dev0 (4bd6827) * Update attr 19.2.0.dev0 (daf2bc8) to 20.1.0.dev0 (4bd6827)
* Update Beautiful Soup 4.8.1 (r540) to 4.8.2 (r554) * Update Beautiful Soup 4.8.1 (r540) to 4.8.2 (r556)
* Update Certifi 2019.06.16 (84dc766) to 2019.11.28 (21abb9b) * Update Certifi 2019.06.16 (84dc766) to 2019.11.28 (21abb9b)
* Update dateutil 2.8.1 (fc9b162) to 2.8.1 (110a09b) * Update dateutil 2.8.1 (fc9b162) to 2.8.1 (110a09b)
* Update DiskCache library 4.0.0 (2c79bb9) to 4.1.0 (b0451e0) * Update DiskCache library 4.0.0 (2c79bb9) to 4.1.0 (b0451e0)
@ -38,6 +38,7 @@
* Change remove deprecated `buildNameCache` * Change remove deprecated `buildNameCache`
* Update Apprise 0.8.0 (6aa52c3) to 0.8.3 (4aee9de) * Update Apprise 0.8.0 (6aa52c3) to 0.8.3 (4aee9de)
* Update attr 19.2.0.dev0 (daf2bc8) to 20.1.0.dev0 (9b5e988) * Update attr 19.2.0.dev0 (daf2bc8) to 20.1.0.dev0 (9b5e988)
* Update Beautiful Soup 4.8.1 (r540) to 4.8.2 (r554)
* Update Requests library 2.22.0 (3d968ff) to 2.22.0 (d2f65af) * Update Requests library 2.22.0 (3d968ff) to 2.22.0 (d2f65af)
* Update Tornado_py3 Web Server 6.0.3 (ff985fe) to 6.1.dev1 (18b653c) * Update Tornado_py3 Web Server 6.0.3 (ff985fe) to 6.1.dev1 (18b653c)
* Update urllib3 release 1.25.6 (4a6c288) to 1.25.7 (37ba61a) * Update urllib3 release 1.25.6 (4a6c288) to 1.25.7 (37ba61a)

16
lib/bs4/__init__.pyi

@ -57,7 +57,7 @@ class FeatureNotFound(ValueError): ...
# #
# NOTE: This dynamically typed stub was automatically generated by stubgen. # NOTE: This dynamically typed stub was automatically generated by stubgen.
from .formatter import Formatter, HTMLFormatter, XMLFormatter from .formatter import Formatter as Formatter, HTMLFormatter as HTMLFormatter, XMLFormatter as XMLFormatter
from typing import Any, Optional from typing import Any, Optional
__license__: str __license__: str
@ -101,7 +101,7 @@ class PageElement:
replace_with_children: Any = ... replace_with_children: Any = ...
replaceWithChildren: Any = ... replaceWithChildren: Any = ...
def wrap(self, wrap_inside: Any): ... def wrap(self, wrap_inside: Any): ...
def extract(self): ... def extract(self, _self_index: Optional[Any] = ...): ...
def _last_descendant(self, is_initialized: bool = ..., accept_self: bool = ...): ... def _last_descendant(self, is_initialized: bool = ..., accept_self: bool = ...): ...
_lastRecursiveChild: Any = ... _lastRecursiveChild: Any = ...
def insert(self, position: Any, new_child: Any) -> None: ... def insert(self, position: Any, new_child: Any) -> None: ...
@ -149,6 +149,8 @@ class PageElement:
def previous_siblings(self) -> None: ... def previous_siblings(self) -> None: ...
@property @property
def parents(self) -> None: ... def parents(self) -> None: ...
@property
def decomposed(self): ...
def nextGenerator(self): ... def nextGenerator(self): ...
def nextSiblingGenerator(self): ... def nextSiblingGenerator(self): ...
def previousGenerator(self): ... def previousGenerator(self): ...
@ -170,6 +172,8 @@ class NavigableString(str, PageElement):
def name(self, name: Any) -> None: ... def name(self, name: Any) -> None: ...
class PreformattedString(NavigableString): class PreformattedString(NavigableString):
PREFIX: str = ...
SUFFIX: str = ...
def output_ready(self, formatter: Optional[Any] = ...): ... def output_ready(self, formatter: Optional[Any] = ...): ...
class CData(PreformattedString): class CData(PreformattedString):
@ -236,9 +240,9 @@ class Tag(PageElement):
def get(self, key: Any, default: Optional[Any] = ...): ... def get(self, key: Any, default: Optional[Any] = ...): ...
def get_attribute_list(self, key: Any, default: Optional[Any] = ...): ... def get_attribute_list(self, key: Any, default: Optional[Any] = ...): ...
def has_attr(self, key: Any): ... def has_attr(self, key: Any): ...
def __hash__(self): ... def __hash__(self) -> Any: ...
def __getitem__(self, key: Any): ... def __getitem__(self, key: Any): ...
def __iter__(self): ... def __iter__(self) -> Any: ...
def __len__(self): ... def __len__(self): ...
def __contains__(self, x: Any): ... def __contains__(self, x: Any): ...
def __bool__(self): ... def __bool__(self): ...
@ -246,8 +250,8 @@ class Tag(PageElement):
def __delitem__(self, key: Any) -> None: ... def __delitem__(self, key: Any) -> None: ...
def __call__(self, *args: Any, **kwargs: Any): ... def __call__(self, *args: Any, **kwargs: Any): ...
def __getattr__(self, tag: Any): ... def __getattr__(self, tag: Any): ...
def __eq__(self, other: Any): ... def __eq__(self, other: Any) -> Any: ...
def __ne__(self, other: Any): ... def __ne__(self, other: Any) -> Any: ...
def __repr__(self, encoding: str = ...): ... def __repr__(self, encoding: str = ...): ...
def __unicode__(self): ... def __unicode__(self): ...
def __str__(self): ... def __str__(self): ...

62
lib/bs4/builder/__init__.pyi

@ -0,0 +1,62 @@
from typing import Any, Optional
class TreeBuilderRegistry:
builders_for_feature: Any = ...
builders: Any = ...
def __init__(self) -> None: ...
def register(self, treebuilder_class: Any) -> None: ...
def lookup(self, *features: Any): ...
class TreeBuilder:
NAME: str = ...
ALTERNATE_NAMES: Any = ...
features: Any = ...
is_xml: bool = ...
picklable: bool = ...
empty_element_tags: Any = ...
DEFAULT_CDATA_LIST_ATTRIBUTES: Any = ...
DEFAULT_PRESERVE_WHITESPACE_TAGS: Any = ...
USE_DEFAULT: Any = ...
TRACKS_LINE_NUMBERS: bool = ...
soup: Any = ...
cdata_list_attributes: Any = ...
preserve_whitespace_tags: Any = ...
store_line_numbers: Any = ...
def __init__(self, multi_valued_attributes: Any = ..., preserve_whitespace_tags: Any = ..., store_line_numbers: Any = ...) -> None: ...
def initialize_soup(self, soup: Any) -> None: ...
def reset(self) -> None: ...
def can_be_empty_element(self, tag_name: Any): ...
def feed(self, markup: Any) -> None: ...
def prepare_markup(self, markup: Any, user_specified_encoding: Optional[Any] = ..., document_declared_encoding: Optional[Any] = ..., exclude_encodings: Optional[Any] = ...) -> None: ...
def test_fragment_to_document(self, fragment: Any): ...
def set_up_substitutions(self, tag: Any): ...
def _replace_cdata_list_attribute_values(self, tag_name: Any, attrs: Any): ...
class SAXTreeBuilder(TreeBuilder):
def feed(self, markup: Any) -> None: ...
def close(self) -> None: ...
def startElement(self, name: Any, attrs: Any) -> None: ...
def endElement(self, name: Any) -> None: ...
def startElementNS(self, nsTuple: Any, nodeName: Any, attrs: Any) -> None: ...
def endElementNS(self, nsTuple: Any, nodeName: Any) -> None: ...
def startPrefixMapping(self, prefix: Any, nodeValue: Any) -> None: ...
def endPrefixMapping(self, prefix: Any) -> None: ...
def characters(self, content: Any) -> None: ...
def startDocument(self) -> None: ...
def endDocument(self) -> None: ...
class HTMLTreeBuilder(TreeBuilder):
empty_element_tags: Any = ...
block_elements: Any = ...
DEFAULT_CDATA_LIST_ATTRIBUTES: Any = ...
DEFAULT_PRESERVE_WHITESPACE_TAGS: Any = ...
def set_up_substitutions(self, tag: Any): ...
class ParserRejectedMarkup(Exception):
def __init__(self, message_or_exception: Any) -> None: ...
# Names in __all__ with no definition:
# HTML5TreeBuilder
# HTMLParserTreeBuilder
# LXMLTreeBuilder
# LXMLTreeBuilderForXML

65
lib/bs4/builder/_html5lib.pyi

@ -0,0 +1,65 @@
from ..builder import HTMLTreeBuilder
from html5lib.treebuilders import base as treebuilder_base
from typing import Any, Optional
class HTML5TreeBuilder(HTMLTreeBuilder):
NAME: str = ...
features: Any = ...
TRACKS_LINE_NUMBERS: bool = ...
user_specified_encoding: Any = ...
def prepare_markup(self, markup: Any, user_specified_encoding: Any, document_declared_encoding: Optional[Any] = ..., exclude_encodings: Optional[Any] = ...) -> None: ...
def feed(self, markup: Any) -> None: ...
underlying_builder: Any = ...
def create_treebuilder(self, namespaceHTMLElements: Any): ...
def test_fragment_to_document(self, fragment: Any): ...
class TreeBuilderForHtml5lib(treebuilder_base.TreeBuilder):
soup: Any = ...
parser: Any = ...
store_line_numbers: Any = ...
def __init__(self, namespaceHTMLElements: Any, soup: Optional[Any] = ..., store_line_numbers: bool = ..., **kwargs: Any) -> None: ...
def documentClass(self): ...
def insertDoctype(self, token: Any) -> None: ...
def elementClass(self, name: Any, namespace: Any): ...
def commentClass(self, data: Any): ...
def fragmentClass(self): ...
def appendChild(self, node: Any) -> None: ...
def getDocument(self): ...
def getFragment(self): ...
def testSerializer(self, element: Any): ...
class AttrList:
element: Any = ...
attrs: Any = ...
def __init__(self, element: Any) -> None: ...
def __iter__(self) -> Any: ...
def __setitem__(self, name: Any, value: Any) -> None: ...
def items(self): ...
def keys(self): ...
def __len__(self): ...
def __getitem__(self, name: Any): ...
def __contains__(self, name: Any): ...
class Element(treebuilder_base.Node):
element: Any = ...
soup: Any = ...
namespace: Any = ...
def __init__(self, element: Any, soup: Any, namespace: Any) -> None: ...
def appendChild(self, node: Any) -> None: ...
def getAttributes(self): ...
def setAttributes(self, attributes: Any) -> None: ...
attributes: Any = ...
def insertText(self, data: Any, insertBefore: Optional[Any] = ...) -> None: ...
def insertBefore(self, node: Any, refNode: Any) -> None: ...
def removeChild(self, node: Any) -> None: ...
def reparentChildren(self, new_parent: Any) -> None: ...
def cloneNode(self): ...
def hasContent(self): ...
def getNameTuple(self): ...
nameTuple: Any = ...
class TextNode(Element):
element: Any = ...
soup: Any = ...
def __init__(self, element: Any, soup: Any) -> None: ...
def cloneNode(self) -> None: ...

31
lib/bs4/builder/_htmlparser.pyi

@ -0,0 +1,31 @@
from ..builder import HTMLTreeBuilder
from html.parser import HTMLParser
from typing import Any, Optional
class HTMLParseError(Exception): ...
class BeautifulSoupHTMLParser(HTMLParser):
already_closed_empty_element: Any = ...
def __init__(self, *args: Any, **kwargs: Any) -> None: ...
def error(self, msg: Any) -> None: ...
def handle_startendtag(self, name: Any, attrs: Any) -> None: ...
def handle_starttag(self, name: Any, attrs: Any, handle_empty_element: bool = ...) -> None: ...
def handle_endtag(self, name: Any, check_already_closed: bool = ...) -> None: ...
def handle_data(self, data: Any) -> None: ...
def handle_charref(self, name: Any) -> None: ...
def handle_entityref(self, name: Any) -> None: ...
def handle_comment(self, data: Any) -> None: ...
def handle_decl(self, data: Any) -> None: ...
def unknown_decl(self, data: Any) -> None: ...
def handle_pi(self, data: Any) -> None: ...
class HTMLParserTreeBuilder(HTMLTreeBuilder):
is_xml: bool = ...
picklable: bool = ...
NAME: Any = ...
features: Any = ...
TRACKS_LINE_NUMBERS: bool = ...
parser_args: Any = ...
def __init__(self, parser_args: Optional[Any] = ..., parser_kwargs: Optional[Any] = ..., **kwargs: Any) -> None: ...
def prepare_markup(self, markup: Any, user_specified_encoding: Optional[Any] = ..., document_declared_encoding: Optional[Any] = ..., exclude_encodings: Optional[Any] = ...) -> None: ...
def feed(self, markup: Any) -> None: ...

46
lib/bs4/builder/_lxml.pyi

@ -0,0 +1,46 @@
from ..builder import HTMLTreeBuilder, TreeBuilder
from typing import Any, Optional
class LXMLTreeBuilderForXML(TreeBuilder):
DEFAULT_PARSER_CLASS: Any = ...
is_xml: bool = ...
processing_instruction_class: Any = ...
NAME: str = ...
ALTERNATE_NAMES: Any = ...
features: Any = ...
CHUNK_SIZE: int = ...
DEFAULT_NSMAPS: Any = ...
DEFAULT_NSMAPS_INVERTED: Any = ...
def initialize_soup(self, soup: Any) -> None: ...
def _register_namespaces(self, mapping: Any) -> None: ...
def default_parser(self, encoding: Any): ...
def parser_for(self, encoding: Any): ...
_default_parser: Any = ...
empty_element_tags: Any = ...
soup: Any = ...
nsmaps: Any = ...
def __init__(self, parser: Optional[Any] = ..., empty_element_tags: Optional[Any] = ..., **kwargs: Any) -> None: ...
def _getNsTag(self, tag: Any): ...
def prepare_markup(self, markup: Any, user_specified_encoding: Optional[Any] = ..., exclude_encodings: Optional[Any] = ..., document_declared_encoding: Optional[Any] = ...) -> None: ...
parser: Any = ...
def feed(self, markup: Any) -> None: ...
def close(self) -> None: ...
def start(self, name: Any, attrs: Any, nsmap: Any = ...) -> None: ...
def _prefix_for_namespace(self, namespace: Any): ...
def end(self, name: Any) -> None: ...
def pi(self, target: Any, data: Any) -> None: ...
def data(self, content: Any) -> None: ...
def doctype(self, name: Any, pubid: Any, system: Any) -> None: ...
def comment(self, content: Any) -> None: ...
def test_fragment_to_document(self, fragment: Any): ...
class LXMLTreeBuilder(HTMLTreeBuilder, LXMLTreeBuilderForXML):
NAME: Any = ...
ALTERNATE_NAMES: Any = ...
features: Any = ...
is_xml: bool = ...
processing_instruction_class: Any = ...
def default_parser(self, encoding: Any): ...
parser: Any = ...
def feed(self, markup: Any) -> None: ...
def test_fragment_to_document(self, fragment: Any): ...

1
lib/bs4/check_block.pyi

@ -2,6 +2,7 @@
# #
# NOTE: This dynamically typed stub was automatically generated by stubgen. # NOTE: This dynamically typed stub was automatically generated by stubgen.
from . import _s as _s
from typing import Any from typing import Any
data: Any data: Any

3
lib/bs4/diagnose.pyi

@ -2,7 +2,8 @@
# #
# NOTE: This dynamically typed stub was automatically generated by stubgen. # NOTE: This dynamically typed stub was automatically generated by stubgen.
from .builder import builder_registry from . import BeautifulSoup as BeautifulSoup, __version__ as __version__
from .builder import builder_registry as builder_registry
from html.parser import HTMLParser from html.parser import HTMLParser
from typing import Any from typing import Any

16
lib/bs4/element.pyi

@ -2,7 +2,7 @@
# #
# NOTE: This dynamically typed stub was automatically generated by stubgen. # NOTE: This dynamically typed stub was automatically generated by stubgen.
from .formatter import Formatter, HTMLFormatter, XMLFormatter from .formatter import Formatter as Formatter, HTMLFormatter as HTMLFormatter, XMLFormatter as XMLFormatter
from typing import Any, Optional from typing import Any, Optional
__license__: str __license__: str
@ -46,7 +46,7 @@ class PageElement:
replace_with_children: Any = ... replace_with_children: Any = ...
replaceWithChildren: Any = ... replaceWithChildren: Any = ...
def wrap(self, wrap_inside: Any): ... def wrap(self, wrap_inside: Any): ...
def extract(self): ... def extract(self, _self_index: Optional[Any] = ...): ...
def _last_descendant(self, is_initialized: bool = ..., accept_self: bool = ...): ... def _last_descendant(self, is_initialized: bool = ..., accept_self: bool = ...): ...
_lastRecursiveChild: Any = ... _lastRecursiveChild: Any = ...
def insert(self, position: Any, new_child: Any) -> None: ... def insert(self, position: Any, new_child: Any) -> None: ...
@ -94,6 +94,8 @@ class PageElement:
def previous_siblings(self) -> None: ... def previous_siblings(self) -> None: ...
@property @property
def parents(self) -> None: ... def parents(self) -> None: ...
@property
def decomposed(self): ...
def nextGenerator(self): ... def nextGenerator(self): ...
def nextSiblingGenerator(self): ... def nextSiblingGenerator(self): ...
def previousGenerator(self): ... def previousGenerator(self): ...
@ -115,6 +117,8 @@ class NavigableString(str, PageElement):
def name(self, name: Any) -> None: ... def name(self, name: Any) -> None: ...
class PreformattedString(NavigableString): class PreformattedString(NavigableString):
PREFIX: str = ...
SUFFIX: str = ...
def output_ready(self, formatter: Optional[Any] = ...): ... def output_ready(self, formatter: Optional[Any] = ...): ...
class CData(PreformattedString): class CData(PreformattedString):
@ -181,9 +185,9 @@ class Tag(PageElement):
def get(self, key: Any, default: Optional[Any] = ...): ... def get(self, key: Any, default: Optional[Any] = ...): ...
def get_attribute_list(self, key: Any, default: Optional[Any] = ...): ... def get_attribute_list(self, key: Any, default: Optional[Any] = ...): ...
def has_attr(self, key: Any): ... def has_attr(self, key: Any): ...
def __hash__(self): ... def __hash__(self) -> Any: ...
def __getitem__(self, key: Any): ... def __getitem__(self, key: Any): ...
def __iter__(self): ... def __iter__(self) -> Any: ...
def __len__(self): ... def __len__(self): ...
def __contains__(self, x: Any): ... def __contains__(self, x: Any): ...
def __bool__(self): ... def __bool__(self): ...
@ -191,8 +195,8 @@ class Tag(PageElement):
def __delitem__(self, key: Any) -> None: ... def __delitem__(self, key: Any) -> None: ...
def __call__(self, *args: Any, **kwargs: Any): ... def __call__(self, *args: Any, **kwargs: Any): ...
def __getattr__(self, tag: Any): ... def __getattr__(self, tag: Any): ...
def __eq__(self, other: Any): ... def __eq__(self, other: Any) -> Any: ...
def __ne__(self, other: Any): ... def __ne__(self, other: Any) -> Any: ...
def __repr__(self, encoding: str = ...): ... def __repr__(self, encoding: str = ...): ...
def __unicode__(self): ... def __unicode__(self): ...
def __str__(self): ... def __str__(self): ...

2
lib/bs4/formatter.pyi

@ -2,7 +2,7 @@
# #
# NOTE: This dynamically typed stub was automatically generated by stubgen. # NOTE: This dynamically typed stub was automatically generated by stubgen.
from .dammit import EntitySubstitution from .dammit import EntitySubstitution as EntitySubstitution
from typing import Any, Optional from typing import Any, Optional
class Formatter(EntitySubstitution): class Formatter(EntitySubstitution):

14
lib/bs4_py2/element.py

@ -239,7 +239,7 @@ class PageElement(object):
raise ValueError("Cannot replace a Tag with its parent.") raise ValueError("Cannot replace a Tag with its parent.")
old_parent = self.parent old_parent = self.parent
my_index = self.parent.index(self) my_index = self.parent.index(self)
self.extract() self.extract(_self_index=my_index)
old_parent.insert(my_index, replace_with) old_parent.insert(my_index, replace_with)
return self return self
replaceWith = replace_with # BS3 replaceWith = replace_with # BS3
@ -255,7 +255,7 @@ class PageElement(object):
"Cannot replace an element with its contents when that" "Cannot replace an element with its contents when that"
"element is not part of a tree.") "element is not part of a tree.")
my_index = self.parent.index(self) my_index = self.parent.index(self)
self.extract() self.extract(_self_index=my_index)
for child in reversed(self.contents[:]): for child in reversed(self.contents[:]):
my_parent.insert(my_index, child) my_parent.insert(my_index, child)
return self return self
@ -273,13 +273,19 @@ class PageElement(object):
wrap_inside.append(me) wrap_inside.append(me)
return wrap_inside return wrap_inside
def extract(self): def extract(self, _self_index=None):
"""Destructively rips this element out of the tree. """Destructively rips this element out of the tree.
:param _self_index: The location of this element in its parent's
.contents, if known. Passing this in allows for a performance
optimization.
:return: `self`, no longer part of the tree. :return: `self`, no longer part of the tree.
""" """
if self.parent is not None: if self.parent is not None:
del self.parent.contents[self.parent.index(self)] if _self_index is None:
_self_index = self.parent.index(self)
del self.parent.contents[_self_index]
#Find the two elements that would be next to each other if #Find the two elements that would be next to each other if
#this element (and any children) hadn't been parsed. Connect #this element (and any children) hadn't been parsed. Connect

14
lib/bs4_py3/element.py

@ -239,7 +239,7 @@ class PageElement(object):
raise ValueError("Cannot replace a Tag with its parent.") raise ValueError("Cannot replace a Tag with its parent.")
old_parent = self.parent old_parent = self.parent
my_index = self.parent.index(self) my_index = self.parent.index(self)
self.extract() self.extract(_self_index=my_index)
old_parent.insert(my_index, replace_with) old_parent.insert(my_index, replace_with)
return self return self
replaceWith = replace_with # BS3 replaceWith = replace_with # BS3
@ -255,7 +255,7 @@ class PageElement(object):
"Cannot replace an element with its contents when that" "Cannot replace an element with its contents when that"
"element is not part of a tree.") "element is not part of a tree.")
my_index = self.parent.index(self) my_index = self.parent.index(self)
self.extract() self.extract(_self_index=my_index)
for child in reversed(self.contents[:]): for child in reversed(self.contents[:]):
my_parent.insert(my_index, child) my_parent.insert(my_index, child)
return self return self
@ -273,13 +273,19 @@ class PageElement(object):
wrap_inside.append(me) wrap_inside.append(me)
return wrap_inside return wrap_inside
def extract(self): def extract(self, _self_index=None):
"""Destructively rips this element out of the tree. """Destructively rips this element out of the tree.
:param _self_index: The location of this element in its parent's
.contents, if known. Passing this in allows for a performance
optimization.
:return: `self`, no longer part of the tree. :return: `self`, no longer part of the tree.
""" """
if self.parent is not None: if self.parent is not None:
del self.parent.contents[self.parent.index(self)] if _self_index is None:
_self_index = self.parent.index(self)
del self.parent.contents[_self_index]
#Find the two elements that would be next to each other if #Find the two elements that would be next to each other if
#this element (and any children) hadn't been parsed. Connect #this element (and any children) hadn't been parsed. Connect

Loading…
Cancel
Save