b374k
m1n1 1.01
Apache/2.2.15 (CentOS)
Linux obd60-6c49958d75-2q7cw 5.4.0-174-generic #193-Ubuntu SMP Thu Mar 7 14:29:28 UTC 2024 x86_64
uid=48(apache) gid=48(apache) groups=48(apache)
server ip : 172.67.192.52 | your ip : 10.244.126.0
safemode OFF
 >  / usr / lib64 / python2.6 / xml / dom /
Filename/usr/lib64/python2.6/xml/dom/minicompat.py
Size3.25 kb
Permissionrw-r--r--
Ownerapache
Create time23-Dec-2025 17:41
Last modified23-Nov-2010 02:33
Last accessed22-Apr-2026 13:08
Actionsedit | rename | delete | download (gzip)
Viewtext | code | image
"""Python version compatibility support for minidom."""

# This module should only be imported using "import *".
#
# The following names are defined:
#
# NodeList -- lightest possible NodeList implementation
#
# EmptyNodeList -- lightest possible NodeList that is guarateed to
# remain empty (immutable)
#
# StringTypes -- tuple of defined string types
#
# defproperty -- function used in conjunction with GetattrMagic;
# using these together is needed to make them work
# as efficiently as possible in both Python 2.2+
# and older versions. For example:
#
# class MyClass(GetattrMagic):
# def _get_myattr(self):
# return something
#
# defproperty(MyClass, "myattr",
# "return some value")
#
# For Python 2.2 and newer, this will construct a
# property object on the class, which avoids
# needing to override __getattr__(). It will only
# work for read-only attributes.
#
# For older versions of Python, inheriting from
# GetattrMagic will use the traditional
# __getattr__() hackery to achieve the same effect,
# but less efficiently.
#
# defproperty() should be used for each version of
# the relevant _get_<property>() function.

__all__ = ["NodeList", "EmptyNodeList", "StringTypes", "defproperty"]

import xml.dom

try:
unicode
except NameError:
StringTypes = type(''),
else:
StringTypes = type(''), type(unicode(''))


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 __getstate__(self):
return list(self)

def __setstate__(self, 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)).im_func
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)