Skip to content

Commit 44cbde2

Browse files
committed
Update owner_document parameters of Node.__init__ (#16)
A `Document` object; `owner_document` must be given when creating a `Node`. But if this node is a `Document`, `owner_document` is `None`.
1 parent 59f56ba commit 44cbde2

File tree

1 file changed

+7
-4
lines changed
  • w3/python/core/fundamental_interface

1 file changed

+7
-4
lines changed

w3/python/core/fundamental_interface/Node.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,10 @@ class Node:
6464
def __init__(self,
6565
node_type: NodeType,
6666
node_name: DOMString,
67+
owner_document: Optional[_Document],
6768
node_value: Optional[DOMString] = None,
6869
child_nodes: Optional[Iterable[_AnyNode]] = None,
6970
attributes: Optional[Iterable[_AnyNode]] = None,
70-
owner_document: Optional[_Document] = None,
7171
read_only: bool = False) -> None:
7272
if node_value is None:
7373
node_value = ''
@@ -87,7 +87,7 @@ def __init__(self,
8787
self._parent_node: Optional[_AnyNode]
8888
self._child_nodes: NodeList
8989
self._attributes: _NamedNodeMap
90-
self._owner_document: _Document
90+
self._owner_document: Optional[_Document]
9191
self._read_only: bool
9292

9393
def _check_modifiable(self) -> None:
@@ -256,13 +256,16 @@ def owner_document(self) -> Optional[_Document]:
256256
This is also the `Document` object used to create new nodes.
257257
When this node is a `Document` this is `None`.
258258
"""
259-
if self.node_type == NodeType.DOCUMENT_NODE:
260-
return None
261259
return self._owner_document
262260

263261
def _set_owner_document(self,
264262
owner_document: Optional[_Document] = None) -> None:
265263
"""Indirect accessor to set the 'owner_document' property."""
264+
if owner_document is None:
265+
if self.node_type != NodeType.DOCUMENT_NODE:
266+
raise ValueError('`Node` should have a `Document` object ',
267+
'which associated with this node, ',
268+
'Unless this node is a `Document`.')
266269
self._owner_document = owner_document
267270

268271
def insert_before(self,

0 commit comments

Comments
 (0)