"""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 guaranteed 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.") # For backward compatibility 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)).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)
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
NodeFilter.py | File | 937 B | 0644 |
|
NodeFilter.pyc | File | 1.1 KB | 0644 |
|
NodeFilter.pyo | File | 1.1 KB | 0644 |
|
__init__.py | File | 3.9 KB | 0644 |
|
__init__.pyc | File | 6.33 KB | 0644 |
|
__init__.pyo | File | 6.33 KB | 0644 |
|
domreg.py | File | 3.44 KB | 0644 |
|
domreg.pyc | File | 3.3 KB | 0644 |
|
domreg.pyo | File | 3.3 KB | 0644 |
|
expatbuilder.py | File | 35.53 KB | 0644 |
|
expatbuilder.pyc | File | 32.22 KB | 0644 |
|
expatbuilder.pyo | File | 31.61 KB | 0644 |
|
minicompat.py | File | 3.28 KB | 0644 |
|
minicompat.pyc | File | 3.35 KB | 0644 |
|
minicompat.pyo | File | 3.24 KB | 0644 |
|
minidom.py | File | 64.72 KB | 0644 |
|
minidom.pyc | File | 64.07 KB | 0644 |
|
minidom.pyo | File | 63.94 KB | 0644 |
|
pulldom.py | File | 11.69 KB | 0644 |
|
pulldom.pyc | File | 12.77 KB | 0644 |
|
pulldom.pyo | File | 12.77 KB | 0644 |
|
xmlbuilder.py | File | 12.05 KB | 0644 |
|
xmlbuilder.pyc | File | 14.98 KB | 0644 |
|
xmlbuilder.pyo | File | 14.94 KB | 0644 |
|