| """Python version compatibility support for minidom. |
| |
| This module contains internal implementation details and |
| should not be imported; use xml.dom.minidom instead. |
| """ |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| __all__ = ["NodeList", "EmptyNodeList", "StringTypes", "defproperty"] |
|
|
| import xml.dom |
|
|
| StringTypes = (str,) |
|
|
|
|
| class NodeList(list): |
| __slots__ = () |
|
|
| def item(self, index): |
| if 0 <= index < len(self): |
| return self[index] |
|
|
| def _get_length(self): |
| return len(self) |
|
|
| def _set_length(self, value): |
| raise xml.dom.NoModificationAllowedErr( |
| "attempt to modify read-only attribute 'length'") |
|
|
| length = property(_get_length, _set_length, |
| doc="The number of nodes in the NodeList.") |
|
|
| |
| def __setstate__(self, state): |
| if state is None: |
| state = [] |
| self[:] = state |
|
|
|
|
| class EmptyNodeList(tuple): |
| __slots__ = () |
|
|
| def __add__(self, other): |
| NL = NodeList() |
| NL.extend(other) |
| return NL |
|
|
| def __radd__(self, other): |
| NL = NodeList() |
| NL.extend(other) |
| return NL |
|
|
| def item(self, index): |
| return None |
|
|
| def _get_length(self): |
| return 0 |
|
|
| def _set_length(self, value): |
| raise xml.dom.NoModificationAllowedErr( |
| "attempt to modify read-only attribute 'length'") |
|
|
| length = property(_get_length, _set_length, |
| doc="The number of nodes in the NodeList.") |
|
|
|
|
| def defproperty(klass, name, doc): |
| get = getattr(klass, ("_get_" + name)) |
| def set(self, value, name=name): |
| raise xml.dom.NoModificationAllowedErr( |
| "attempt to modify read-only attribute " + repr(name)) |
| assert not hasattr(klass, "_set_" + name), \ |
| "expected not to find _set_" + name |
| prop = property(get, set, doc=doc) |
| setattr(klass, name, prop) |
|
|